From f958ad37f19797c59b47d44552e8a400bac82613 Mon Sep 17 00:00:00 2001 From: Yuliia Veklycheva Date: Fri, 27 Oct 2017 16:22:57 +0300 Subject: [PATCH 001/159] Add landuse=religious preset --- data/presets.yaml | 4 ++++ data/presets/categories.json | 3 ++- data/presets/categories/landuse.json | 3 ++- data/presets/presets.json | 10 ++++++++++ data/presets/presets/landuse/religious.json | 10 ++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 data/presets/presets/landuse/religious.json diff --git a/data/presets.yaml b/data/presets.yaml index 1a4e1a4d5..0297bd0af 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -3413,6 +3413,10 @@ en: name: Recreation Ground # 'terms: playing fields' terms: '' + landuse/religious: + # landuse=religious + name: Religious Area + terms: '' landuse/residential: # landuse=residential name: Residential Area diff --git a/data/presets/categories.json b/data/presets/categories.json index 310781588..25e7f4072 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -55,7 +55,8 @@ "landuse/meadow", "landuse/aquaculture", "landuse/cemetery", - "landuse/military" + "landuse/military", + "landuse/religious" ] }, "category-natural-area": { diff --git a/data/presets/categories/landuse.json b/data/presets/categories/landuse.json index 80c5594aa..b67f1a803 100644 --- a/data/presets/categories/landuse.json +++ b/data/presets/categories/landuse.json @@ -13,6 +13,7 @@ "landuse/meadow", "landuse/aquaculture", "landuse/cemetery", - "landuse/military" + "landuse/military", + "landuse/religious" ] } diff --git a/data/presets/presets.json b/data/presets/presets.json index c83dc7585..7281896bb 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -8758,6 +8758,16 @@ ], "name": "Recreation Ground" }, + "landuse/religious": { + "geometry": [ + "area" + ], + "tags": { + "landuse": "religious" + }, + "terms": [], + "name": "Religious Area" + }, "landuse/residential": { "icon": "building", "geometry": [ diff --git a/data/presets/presets/landuse/religious.json b/data/presets/presets/landuse/religious.json new file mode 100644 index 000000000..b3494d060 --- /dev/null +++ b/data/presets/presets/landuse/religious.json @@ -0,0 +1,10 @@ +{ + "geometry": [ + "area" + ], + "tags": { + "landuse": "religious" + }, + "terms": [], + "name": "Religious Area" +} diff --git a/data/taginfo.json b/data/taginfo.json index 7c5ca5fd5..78d741f9c 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1654,6 +1654,10 @@ "key": "landuse", "value": "recreation_ground" }, + { + "key": "landuse", + "value": "religious" + }, { "key": "landuse", "value": "residential" diff --git a/dist/locales/en.json b/dist/locales/en.json index 40e4cb04b..4411366e0 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4078,6 +4078,10 @@ "name": "Recreation Ground", "terms": "playing fields" }, + "landuse/religious": { + "name": "Religious Area", + "terms": "" + }, "landuse/residential": { "name": "Residential Area", "terms": "" From b8c7c8aeebb5a630cbc6a060f4ad7fde7c968ac4 Mon Sep 17 00:00:00 2001 From: Yuliia Veklycheva Date: Fri, 27 Oct 2017 17:59:15 +0300 Subject: [PATCH 002/159] Add 'name' field to landuse=religious preset --- data/presets/presets.json | 3 +++ data/presets/presets/landuse/religious.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/data/presets/presets.json b/data/presets/presets.json index 7281896bb..c48635986 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -8762,6 +8762,9 @@ "geometry": [ "area" ], + "fields": [ + "name" + ], "tags": { "landuse": "religious" }, diff --git a/data/presets/presets/landuse/religious.json b/data/presets/presets/landuse/religious.json index b3494d060..97677b50a 100644 --- a/data/presets/presets/landuse/religious.json +++ b/data/presets/presets/landuse/religious.json @@ -2,6 +2,9 @@ "geometry": [ "area" ], + "fields": [ + "name" + ], "tags": { "landuse": "religious" }, From 93d6d22bb2166cdedf1a95472eb2c6109d374490 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 28 Oct 2017 09:57:35 -0400 Subject: [PATCH 003/159] Fix reference links for highway=crossing, footway=crossing (closes #4480) --- data/presets/presets.json | 4 ++-- data/presets/presets/footway/crosswalk.json | 2 +- data/presets/presets/highway/crossing.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index c48635986..6c2a12725 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -5990,7 +5990,7 @@ "crossing": "zebra" }, "reference": { - "key": "highway", + "key": "footway", "value": "crossing" }, "terms": [ @@ -6708,7 +6708,7 @@ "highway": "crossing" }, "reference": { - "key": "footway", + "key": "highway", "value": "crossing" }, "terms": [], diff --git a/data/presets/presets/footway/crosswalk.json b/data/presets/presets/footway/crosswalk.json index b4daf5f29..61cffbad7 100644 --- a/data/presets/presets/footway/crosswalk.json +++ b/data/presets/presets/footway/crosswalk.json @@ -16,7 +16,7 @@ "crossing": "zebra" }, "reference": { - "key": "highway", + "key": "footway", "value": "crossing" }, "terms": [ diff --git a/data/presets/presets/highway/crossing.json b/data/presets/presets/highway/crossing.json index 971062c98..08c81d23e 100644 --- a/data/presets/presets/highway/crossing.json +++ b/data/presets/presets/highway/crossing.json @@ -11,7 +11,7 @@ "highway": "crossing" }, "reference": { - "key": "footway", + "key": "highway", "value": "crossing" }, "terms": [], From afca1bbee9b3afaaf92b48f90116011288eb32bb Mon Sep 17 00:00:00 2001 From: Yuliia Veklycheva Date: Sat, 28 Oct 2017 20:17:40 +0300 Subject: [PATCH 004/159] Add preset for tourism=wilderness_hut --- data/presets.yaml | 5 +++++ data/presets/presets.json | 22 +++++++++++++++++++ .../presets/tourism/wilderness_hut.json | 22 +++++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 5 files changed, 57 insertions(+) create mode 100644 data/presets/presets/tourism/wilderness_hut.json diff --git a/data/presets.yaml b/data/presets.yaml index 0297bd0af..5427f707e 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -5041,6 +5041,11 @@ en: # tourism=viewpoint name: Viewpoint terms: '' + tourism/wilderness_hut: + # tourism=wilderness_hut + name: Wilderness Hut + # 'terms: wilderness hut,backcountry hut,bothy' + terms: '' tourism/zoo: # tourism=zoo name: Zoo diff --git a/data/presets/presets.json b/data/presets/presets.json index 6c2a12725..4cc6ce40f 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -16018,6 +16018,28 @@ }, "name": "Viewpoint" }, + "tourism/wilderness_hut": { + "icon": "lodging", + "fields": [ + "name", + "operator", + "address", + "building_area" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "wilderness hut", + "backcountry hut", + "bothy" + ], + "tags": { + "tourism": "wilderness_hut" + }, + "name": "Wilderness Hut" + }, "tourism/zoo": { "icon": "zoo", "fields": [ diff --git a/data/presets/presets/tourism/wilderness_hut.json b/data/presets/presets/tourism/wilderness_hut.json new file mode 100644 index 000000000..5b06419c7 --- /dev/null +++ b/data/presets/presets/tourism/wilderness_hut.json @@ -0,0 +1,22 @@ +{ + "icon": "lodging", + "fields": [ + "name", + "operator", + "address", + "building_area" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "wilderness hut", + "backcountry hut", + "bothy" + ], + "tags": { + "tourism": "wilderness_hut" + }, + "name": "Wilderness Hut" +} diff --git a/data/taginfo.json b/data/taginfo.json index 78d741f9c..6e7f1651e 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -3082,6 +3082,10 @@ "key": "tourism", "value": "viewpoint" }, + { + "key": "tourism", + "value": "wilderness_hut" + }, { "key": "tourism", "value": "zoo" diff --git a/dist/locales/en.json b/dist/locales/en.json index 4411366e0..96768d2c4 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5526,6 +5526,10 @@ "name": "Viewpoint", "terms": "" }, + "tourism/wilderness_hut": { + "name": "Wilderness Hut", + "terms": "wilderness hut,backcountry hut,bothy" + }, "tourism/zoo": { "name": "Zoo", "terms": "animal" From bbaff9748a53155548e5fc00e4a1b4cda9c2b58b Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Mon, 30 Oct 2017 07:45:51 +0000 Subject: [PATCH 005/159] chore(package): update rollup-plugin-commonjs to version 8.2.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 186d3feaf..c013ba7ed 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", "rollup": "0.45.2", - "rollup-plugin-commonjs": "8.2.5", + "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", "rollup-plugin-node-resolve": "3.0.0", From 412fa22c63edd271afc375e1ad1dc74ffffe764e Mon Sep 17 00:00:00 2001 From: Natalia Margolis Date: Mon, 30 Oct 2017 18:41:05 -0700 Subject: [PATCH 006/159] Add office/association preset --- data/presets.yaml | 5 +++++ data/presets/presets.json | 23 ++++++++++++++++++++ data/presets/presets/office/association.json | 23 ++++++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 5 files changed, 59 insertions(+) create mode 100644 data/presets/presets/office/association.json diff --git a/data/presets.yaml b/data/presets.yaml index 5427f707e..a3b0f7c73 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4010,6 +4010,11 @@ en: # office=architect name: Architect terms: '' + office/association: + # office=association + name: Association + # 'terms: organization,non-profit,society' + terms: '' office/company: # office=company name: Company Office diff --git a/data/presets/presets.json b/data/presets/presets.json index 4cc6ce40f..0cefb5c18 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11498,6 +11498,29 @@ "terms": [], "name": "Architect" }, + "office/association": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "association" + }, + "terms": [ + "organization", + "non-profit", + "society" + ], + "name": "Association" + }, "office/company": { "icon": "commercial", "fields": [ diff --git a/data/presets/presets/office/association.json b/data/presets/presets/office/association.json new file mode 100644 index 000000000..b82b36ba5 --- /dev/null +++ b/data/presets/presets/office/association.json @@ -0,0 +1,23 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "association" + }, + "terms": [ + "organization", + "non-profit", + "society" + ], + "name": "Association" +} diff --git a/data/taginfo.json b/data/taginfo.json index 6e7f1651e..3201077e2 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2173,6 +2173,10 @@ "key": "office", "value": "architect" }, + { + "key": "office", + "value": "association" + }, { "key": "office", "value": "company" diff --git a/dist/locales/en.json b/dist/locales/en.json index 96768d2c4..008b4ed28 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4606,6 +4606,10 @@ "name": "Architect", "terms": "" }, + "office/association": { + "name": "Association", + "terms": "organization,non-profit,society" + }, "office/company": { "name": "Company Office", "terms": "" From 926e949c18ebbeeb93f0cf510673d9241e70ae74 Mon Sep 17 00:00:00 2001 From: Natalia Margolis Date: Mon, 30 Oct 2017 18:47:44 -0700 Subject: [PATCH 007/159] Add office/advertising_agency preset --- data/presets.yaml | 5 ++++ data/presets/presets.json | 25 +++++++++++++++++++ .../presets/office/advertising_agency.json | 25 +++++++++++++++++++ data/taginfo.json | 4 +++ dist/locales/en.json | 4 +++ 5 files changed, 63 insertions(+) create mode 100644 data/presets/presets/office/advertising_agency.json diff --git a/data/presets.yaml b/data/presets.yaml index a3b0f7c73..ef0a2ecf7 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4006,6 +4006,11 @@ en: # office=administrative name: Administrative Office terms: '' + office/advertising_agency: + # office=advertising_agency + name: Association + # 'terms: ad,ad agency,advert agency,advertising,marketing' + terms: '' office/architect: # office=architect name: Architect diff --git a/data/presets/presets.json b/data/presets/presets.json index 0cefb5c18..11baedaf9 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11479,6 +11479,31 @@ "terms": [], "name": "Administrative Office" }, + "office/advertising_agency": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "advertising_agency" + }, + "terms": [ + "ad", + "ad agency", + "advert agency", + "advertising", + "marketing" + ], + "name": "Association" + }, "office/architect": { "icon": "commercial", "fields": [ diff --git a/data/presets/presets/office/advertising_agency.json b/data/presets/presets/office/advertising_agency.json new file mode 100644 index 000000000..0d6e104de --- /dev/null +++ b/data/presets/presets/office/advertising_agency.json @@ -0,0 +1,25 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "advertising_agency" + }, + "terms": [ + "ad", + "ad agency", + "advert agency", + "advertising", + "marketing" + ], + "name": "Association" +} diff --git a/data/taginfo.json b/data/taginfo.json index 3201077e2..7b2c52b2f 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2169,6 +2169,10 @@ "key": "office", "value": "administrative" }, + { + "key": "office", + "value": "advertising_agency" + }, { "key": "office", "value": "architect" diff --git a/dist/locales/en.json b/dist/locales/en.json index 008b4ed28..620d41d3e 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4602,6 +4602,10 @@ "name": "Administrative Office", "terms": "" }, + "office/advertising_agency": { + "name": "Association", + "terms": "ad,ad agency,advert agency,advertising,marketing" + }, "office/architect": { "name": "Architect", "terms": "" From 4b9c428b9165c1d8778828b571cc66517bae55c8 Mon Sep 17 00:00:00 2001 From: Natalia Margolis Date: Mon, 30 Oct 2017 19:05:07 -0700 Subject: [PATCH 008/159] Add office/surveyor Fix name of advertising_agency Alphebatize terms in association --- data/presets.yaml | 10 +++++--- data/presets/presets.json | 23 +++++++++++++++++-- .../presets/office/advertising_agency.json | 2 +- data/presets/presets/office/association.json | 2 +- data/presets/presets/office/surveyor.json | 19 +++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 8 +++++-- 7 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 data/presets/presets/office/surveyor.json diff --git a/data/presets.yaml b/data/presets.yaml index ef0a2ecf7..e911bed9e 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4008,9 +4008,9 @@ en: terms: '' office/advertising_agency: # office=advertising_agency - name: Association + name: Advertising Agency # 'terms: ad,ad agency,advert agency,advertising,marketing' - terms: '' + terms: '' office/architect: # office=architect name: Architect @@ -4018,7 +4018,7 @@ en: office/association: # office=association name: Association - # 'terms: organization,non-profit,society' + # 'terms: non-profit,organization,society' terms: '' office/company: # office=company @@ -4091,6 +4091,10 @@ en: # office=research name: Research Office terms: '' + office/surveyor: + # office=surveyor + name: Surveyor + terms: '' office/telecommunication: # office=telecommunication name: Telecom Office diff --git a/data/presets/presets.json b/data/presets/presets.json index 11baedaf9..a2bc5b5be 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11502,7 +11502,7 @@ "advertising", "marketing" ], - "name": "Association" + "name": "Advertising Agency" }, "office/architect": { "icon": "commercial", @@ -11540,8 +11540,8 @@ "office": "association" }, "terms": [ - "organization", "non-profit", + "organization", "society" ], "name": "Association" @@ -11885,6 +11885,25 @@ "terms": [], "name": "Research Office" }, + "office/surveyor": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "surveyor" + }, + "terms": [], + "name": "Surveyor" + }, "office/telecommunication": { "icon": "commercial", "fields": [ diff --git a/data/presets/presets/office/advertising_agency.json b/data/presets/presets/office/advertising_agency.json index 0d6e104de..041383c84 100644 --- a/data/presets/presets/office/advertising_agency.json +++ b/data/presets/presets/office/advertising_agency.json @@ -21,5 +21,5 @@ "advertising", "marketing" ], - "name": "Association" + "name": "Advertising Agency" } diff --git a/data/presets/presets/office/association.json b/data/presets/presets/office/association.json index b82b36ba5..c356a033a 100644 --- a/data/presets/presets/office/association.json +++ b/data/presets/presets/office/association.json @@ -15,8 +15,8 @@ "office": "association" }, "terms": [ - "organization", "non-profit", + "organization", "society" ], "name": "Association" diff --git a/data/presets/presets/office/surveyor.json b/data/presets/presets/office/surveyor.json new file mode 100644 index 000000000..832b3c273 --- /dev/null +++ b/data/presets/presets/office/surveyor.json @@ -0,0 +1,19 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "surveyor" + }, + "terms": [], + "name": "Surveyor" +} diff --git a/data/taginfo.json b/data/taginfo.json index 7b2c52b2f..7430da5e5 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2245,6 +2245,10 @@ "key": "office", "value": "research" }, + { + "key": "office", + "value": "surveyor" + }, { "key": "office", "value": "telecommunication" diff --git a/dist/locales/en.json b/dist/locales/en.json index 620d41d3e..7e33f64a7 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4603,7 +4603,7 @@ "terms": "" }, "office/advertising_agency": { - "name": "Association", + "name": "Advertising Agency", "terms": "ad,ad agency,advert agency,advertising,marketing" }, "office/architect": { @@ -4612,7 +4612,7 @@ }, "office/association": { "name": "Association", - "terms": "organization,non-profit,society" + "terms": "non-profit,organization,society" }, "office/company": { "name": "Company Office", @@ -4678,6 +4678,10 @@ "name": "Research Office", "terms": "" }, + "office/surveyor": { + "name": "Surveyor", + "terms": "" + }, "office/telecommunication": { "name": "Telecom Office", "terms": "" From 3f03ce5c9ff901db8212947196ce79535685406c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 30 Oct 2017 22:37:01 -0400 Subject: [PATCH 009/159] Remove poi-foot icon from place=square (closes #4486) --- data/presets/presets.json | 1 - data/presets/presets/place/square.json | 1 - 2 files changed, 2 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 4cc6ce40f..4498e6aff 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -12084,7 +12084,6 @@ "name": "Sub-Borough / Quarter" }, "place/square": { - "icon": "poi-foot", "geometry": [ "point", "area" diff --git a/data/presets/presets/place/square.json b/data/presets/presets/place/square.json index 3e453cca9..fae8314d8 100644 --- a/data/presets/presets/place/square.json +++ b/data/presets/presets/place/square.json @@ -1,5 +1,4 @@ { - "icon": "poi-foot", "geometry": [ "point", "area" From 9eeac55595a9508de603e206990aab8f39781de4 Mon Sep 17 00:00:00 2001 From: Christian Paul Date: Tue, 31 Oct 2017 00:21:36 -0700 Subject: [PATCH 010/159] Don't capitalise edit in "Zoom in to Edit" --- data/core.yaml | 2 +- dist/locales/en-GB.json | 2 +- dist/locales/en.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 95814d96f..b5d57c9af 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -238,7 +238,7 @@ en: localized_translation_label: Multilingual name localized_translation_language: Choose language localized_translation_name: Name - zoom_in_edit: Zoom in to Edit + zoom_in_edit: Zoom in to edit login: login logout: logout loading_auth: "Connecting to OpenStreetMap..." diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index 858563f21..3815c2092 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -310,7 +310,7 @@ "localized_translation_language": "Choose language", "localized_translation_name": "Name" }, - "zoom_in_edit": "Zoom in to Edit", + "zoom_in_edit": "Zoom in to edit", "login": "login", "logout": "logout", "loading_auth": "Connecting to OpenStreetMap...", diff --git a/dist/locales/en.json b/dist/locales/en.json index 96768d2c4..40a12df75 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -310,7 +310,7 @@ "localized_translation_language": "Choose language", "localized_translation_name": "Name" }, - "zoom_in_edit": "Zoom in to Edit", + "zoom_in_edit": "Zoom in to edit", "login": "login", "logout": "logout", "loading_auth": "Connecting to OpenStreetMap...", From 5554168497ac37815fb6cbc98b6bdb9d010a0931 Mon Sep 17 00:00:00 2001 From: Christian Paul Date: Tue, 31 Oct 2017 00:22:38 -0700 Subject: [PATCH 011/159] Don't capitalise now in "Edit Now" --- data/core.yaml | 2 +- dist/locales/en-GB.json | 2 +- dist/locales/en.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index b5d57c9af..bfed0b482 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -499,7 +499,7 @@ en: welcome: Welcome to the iD OpenStreetMap editor text: "iD is a friendly but powerful tool for contributing to the world's best free world map. This is version {version}. For more information see {website} and report bugs at {github}." walkthrough: "Start the Walkthrough" - start: "Edit Now" + start: "Edit now" source_switch: live: live lose_changes: "You have unsaved changes. Switching the map server will discard them. Are you sure you want to switch servers?" diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index 3815c2092..b4585fb89 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -613,7 +613,7 @@ "welcome": "Welcome to the iD OpenStreetMap editor", "text": "iD is a friendly but powerful tool for contributing to the World's best free World map. This is version {version}. For more information see {website} and report bugs at {github}.", "walkthrough": "Start the Walkthrough", - "start": "Edit Now" + "start": "Edit now" }, "source_switch": { "live": "live", diff --git a/dist/locales/en.json b/dist/locales/en.json index 40a12df75..8d9076033 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -613,7 +613,7 @@ "welcome": "Welcome to the iD OpenStreetMap editor", "text": "iD is a friendly but powerful tool for contributing to the world's best free world map. This is version {version}. For more information see {website} and report bugs at {github}.", "walkthrough": "Start the Walkthrough", - "start": "Edit Now" + "start": "Edit now" }, "source_switch": { "live": "live", From 7fcd2ec9f4bdd7365ed7d5724cf346cbd6a41b4a Mon Sep 17 00:00:00 2001 From: Christian Paul Date: Tue, 31 Oct 2017 00:24:57 -0700 Subject: [PATCH 012/159] Don't capitalise in/out in "Zoom In"/"Zoom Out" --- data/core.yaml | 4 ++-- dist/locales/en-GB.json | 4 ++-- dist/locales/en.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index bfed0b482..8959caedc 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -527,8 +527,8 @@ en: tag_suggests_area: "The tag {tag} suggests line should be area, but it is not an area" deprecated_tags: "Deprecated tags: {tags}" zoom: - in: Zoom In - out: Zoom Out + in: Zoom in + out: Zoom out cannot_zoom: "Cannot zoom out further in current mode." full_screen: Toggle Full Screen gpx: diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index b4585fb89..e2347c502 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -646,8 +646,8 @@ "deprecated_tags": "Deprecated tags: {tags}" }, "zoom": { - "in": "Zoom In", - "out": "Zoom Out" + "in": "Zoom in", + "out": "Zoom out" }, "cannot_zoom": "Cannot zoom out further in current mode.", "full_screen": "Toggle Full Screen", diff --git a/dist/locales/en.json b/dist/locales/en.json index 8d9076033..70b39117b 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -646,8 +646,8 @@ "deprecated_tags": "Deprecated tags: {tags}" }, "zoom": { - "in": "Zoom In", - "out": "Zoom Out" + "in": "Zoom in", + "out": "Zoom out" }, "cannot_zoom": "Cannot zoom out further in current mode.", "full_screen": "Toggle Full Screen", From 3bcf90d3d6276841faf9e82bde877307c9b20936 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 10:52:36 -0400 Subject: [PATCH 013/159] Let wheel events pass through the "Zoom in to edit" button to the map (closes #4482) --- modules/ui/notice.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/ui/notice.js b/modules/ui/notice.js index 4f21c8090..86353a968 100644 --- a/modules/ui/notice.js +++ b/modules/ui/notice.js @@ -1,5 +1,7 @@ import _debounce from 'lodash-es/debounce'; +import { event as d3_event } from 'd3-selection'; + import { t } from '../util/locale'; import { svgIcon } from '../svg/index'; @@ -16,6 +18,10 @@ export function uiNotice(context) { .attr('class', 'zoom-to notice fillD') .on('click', function() { context.map().zoom(context.minEditableZoom()); + }) + .on('wheel', function() { // let wheel events pass through #4482 + var e2 = new WheelEvent(d3_event.type, d3_event); + context.surface().node().dispatchEvent(e2); }); button From 98011b89692a1ca5c43d79a3c8223dd580f273a9 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 15:06:28 -0400 Subject: [PATCH 014/159] Rename tourism=chalet to "Holiday Cottage" and add search terms (closes #4490) --- data/presets.yaml | 5 +++-- data/presets/presets.json | 9 ++++++++- data/presets/presets/tourism/chalet.json | 9 ++++++++- dist/locales/en.json | 4 ++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index 5427f707e..ef85ea324 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4978,8 +4978,9 @@ en: terms: '' tourism/chalet: # tourism=chalet - name: Chalet - terms: '' + name: Holiday Cottage + # 'terms: holiday,holiday cottage,holiday home,vacation,vacation home' + terms: '' tourism/gallery: # tourism=gallery name: Art Gallery diff --git a/data/presets/presets.json b/data/presets/presets.json index 4498e6aff..58a3ff9c9 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -15710,10 +15710,17 @@ "point", "area" ], + "terms": [ + "holiday", + "holiday cottage", + "holiday home", + "vacation", + "vacation home" + ], "tags": { "tourism": "chalet" }, - "name": "Chalet" + "name": "Holiday Cottage" }, "tourism/gallery": { "icon": "art-gallery", diff --git a/data/presets/presets/tourism/chalet.json b/data/presets/presets/tourism/chalet.json index 41b16490a..22ba2ad2e 100644 --- a/data/presets/presets/tourism/chalet.json +++ b/data/presets/presets/tourism/chalet.json @@ -14,8 +14,15 @@ "point", "area" ], + "terms": [ + "holiday", + "holiday cottage", + "holiday home", + "vacation", + "vacation home" + ], "tags": { "tourism": "chalet" }, - "name": "Chalet" + "name": "Holiday Cottage" } diff --git a/dist/locales/en.json b/dist/locales/en.json index 70b39117b..2d188096b 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5467,8 +5467,8 @@ "terms": "Motor Home,Camper" }, "tourism/chalet": { - "name": "Chalet", - "terms": "" + "name": "Holiday Cottage", + "terms": "holiday,holiday cottage,holiday home,vacation,vacation home" }, "tourism/gallery": { "name": "Art Gallery", From 11dd9ec1b857f2bf19b4679632258d950ca88297 Mon Sep 17 00:00:00 2001 From: Natalia Margolis Date: Tue, 31 Oct 2017 12:26:17 -0700 Subject: [PATCH 015/159] Add more missing office presets - adoption_agency - charity - energy_supplier - forestry - foundation - tax - guide - moving_company - notary - private_investigator - quango - surveyor - tax_advisor - water_utility --- data/presets.yaml | 72 ++++- data/presets/presets.json | 292 +++++++++++++++++- .../presets/office/adoption_agency.json | 19 ++ data/presets/presets/office/association.json | 4 +- data/presets/presets/office/charity.json | 21 ++ .../presets/office/energy_supplier.json | 24 ++ data/presets/presets/office/forestry.json | 21 ++ data/presets/presets/office/foundation.json | 19 ++ .../presets/office/government/tax.json | 28 ++ data/presets/presets/office/guide.json | 23 ++ .../presets/office/moving_company.json | 21 ++ data/presets/presets/office/notary.json | 19 ++ .../presets/office/private_investigator.json | 23 ++ data/presets/presets/office/quango.json | 23 ++ data/presets/presets/office/surveyor.json | 2 +- data/presets/presets/office/tax_advisor.json | 22 ++ .../presets/presets/office/water_utility.json | 23 ++ data/taginfo.json | 52 ++++ dist/locales/en.json | 58 +++- 19 files changed, 754 insertions(+), 12 deletions(-) create mode 100644 data/presets/presets/office/adoption_agency.json create mode 100644 data/presets/presets/office/charity.json create mode 100644 data/presets/presets/office/energy_supplier.json create mode 100644 data/presets/presets/office/forestry.json create mode 100644 data/presets/presets/office/foundation.json create mode 100644 data/presets/presets/office/government/tax.json create mode 100644 data/presets/presets/office/guide.json create mode 100644 data/presets/presets/office/moving_company.json create mode 100644 data/presets/presets/office/notary.json create mode 100644 data/presets/presets/office/private_investigator.json create mode 100644 data/presets/presets/office/quango.json create mode 100644 data/presets/presets/office/tax_advisor.json create mode 100644 data/presets/presets/office/water_utility.json diff --git a/data/presets.yaml b/data/presets.yaml index e911bed9e..2325e0a55 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4006,6 +4006,10 @@ en: # office=administrative name: Administrative Office terms: '' + office/adoption_agency: + # office=adoption_agency + name: Adoption Agency + terms: '' office/advertising_agency: # office=advertising_agency name: Advertising Agency @@ -4017,9 +4021,14 @@ en: terms: '' office/association: # office=association - name: Association - # 'terms: non-profit,organization,society' - terms: '' + name: Nonprofit Organization Office + # 'terms: association,non-profit,nonprofit,organization,society' + terms: '' + office/charity: + # office=charity + name: Charity Office + # 'terms: charitable organization' + terms: '' office/company: # office=company name: Company Office @@ -4038,6 +4047,11 @@ en: name: Employment Agency # 'terms: job' terms: '' + office/energy_supplier: + # office=energy_supplier + name: Energy Supplier Office + # 'terms: electricity,energy company,energy utility,gas utility' + terms: '' office/estate_agent: # office=estate_agent name: Real Estate Office @@ -4046,6 +4060,15 @@ en: # office=financial name: Financial Office terms: '' + office/forestry: + # office=forestry + name: Forestry Office + # 'terms: forest' + terms: '' + office/foundation: + # office=foundation + name: Foundation Office + terms: '' office/government: # office=government name: Government Office @@ -4055,6 +4078,16 @@ en: name: Register Office # 'terms: clerk,marriage,death,birth,certificate' terms: '' + office/government/tax: + # 'office=government, government=tax' + name: Tax and Revenue Office + # 'terms: fiscal authorities,revenue office,tax office' + terms: '' + office/guide: + # office=guide + name: Guide Office + # 'terms: dive guide,mountain guide,tour guide' + terms: '' office/insurance: # office=insurance name: Insurance Office @@ -4072,6 +4105,11 @@ en: name: Notary Office # 'terms: clerk,signature,wills,deeds,estate' terms: '' + office/moving_company: + # office=moving_company + name: Moving Company Office + # 'terms: relocation' + terms: '' office/newspaper: # office=newspaper name: Newspaper @@ -4080,6 +4118,10 @@ en: # office=ngo name: NGO Office terms: '' + office/notary: + # office=notary + name: Notary Office + terms: '' office/physician: # office=physician name: Physician @@ -4087,14 +4129,29 @@ en: # office=political_party name: Political Party terms: '' + office/private_investigator: + # office=private_investigator + name: Private Investigator Office + # 'terms: PI,private eye,private detective' + terms: '' + office/quango: + # office=quango + name: Quango Office + # 'terms: Quasi-Autonomous Non-Government Organisation,Quasi-Autonomous Non-Government Organization,Quasi-Autonomous NGO' + terms: '' office/research: # office=research name: Research Office terms: '' office/surveyor: # office=surveyor - name: Surveyor - terms: '' + name: Surveyor Office + terms: '' + office/tax_advisor: + # office=tax_advisor + name: Tax Advisor Office + # 'terms: tax,tax consultant' + terms: '' office/telecommunication: # office=telecommunication name: Telecom Office @@ -4106,6 +4163,11 @@ en: office/travel_agent: # office=travel_agent name: Travel Agency + office/water_utility: + # office=water_utility + name: Water Utility Office + # 'terms: water board,utility' + terms: '' piste: # 'piste:type=*' name: Piste/Ski Trail diff --git a/data/presets/presets.json b/data/presets/presets.json index a2bc5b5be..3a8806330 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11479,6 +11479,25 @@ "terms": [], "name": "Administrative Office" }, + "office/adoption_agency": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "adoption_agency" + }, + "terms": [], + "name": "Adoption Agency" + }, "office/advertising_agency": { "icon": "commercial", "fields": [ @@ -11540,11 +11559,34 @@ "office": "association" }, "terms": [ + "association", "non-profit", + "nonprofit", "organization", "society" ], - "name": "Association" + "name": "Nonprofit Organization Office" + }, + "office/charity": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "charity" + }, + "terms": [ + "charitable organization" + ], + "name": "Charity Office" }, "office/company": { "icon": "commercial", @@ -11634,6 +11676,30 @@ ], "name": "Employment Agency" }, + "office/energy_supplier": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "energy_supplier" + }, + "terms": [ + "electricity", + "energy company", + "energy utility", + "gas utility" + ], + "name": "Energy Supplier Office" + }, "office/estate_agent": { "icon": "commercial", "fields": [ @@ -11672,6 +11738,46 @@ "terms": [], "name": "Financial Office" }, + "office/forestry": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "forestry" + }, + "terms": [ + "forest" + ], + "name": "Forestry Office" + }, + "office/foundation": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "foundation" + }, + "terms": [], + "name": "Foundation Office" + }, "office/government": { "icon": "commercial", "fields": [ @@ -11721,6 +11827,57 @@ }, "name": "Register Office" }, + "office/government/tax": { + "icon": "town-hall", + "fields": [ + "name", + "address", + "building_area", + "opening_hours", + "operator" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "fiscal authorities", + "revenue office", + "tax office" + ], + "tags": { + "office": "government", + "government": "tax" + }, + "reference": { + "key": "government", + "value": "tax" + }, + "name": "Tax and Revenue Office" + }, + "office/guide": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "guide" + }, + "terms": [ + "dive guide", + "mountain guide", + "tour guide" + ], + "name": "Guide Office" + }, "office/insurance": { "icon": "commercial", "fields": [ @@ -11808,6 +11965,27 @@ ], "name": "Notary Office" }, + "office/moving_company": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "moving_company" + }, + "terms": [ + "relocation" + ], + "name": "Moving Company Office" + }, "office/newspaper": { "icon": "commercial", "fields": [ @@ -11847,6 +12025,25 @@ "terms": [], "name": "NGO Office" }, + "office/notary": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "notary" + }, + "terms": [], + "name": "Notary Office" + }, "office/political_party": { "icon": "commercial", "fields": [ @@ -11866,6 +12063,52 @@ "terms": [], "name": "Political Party" }, + "office/private_investigator": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "private_investigator" + }, + "terms": [ + "PI", + "private eye", + "private detective" + ], + "name": "Private Investigator Office" + }, + "office/quango": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "quango" + }, + "terms": [ + "Quasi-Autonomous Non-Government Organisation", + "Quasi-Autonomous Non-Government Organization", + "Quasi-Autonomous NGO" + ], + "name": "Quango Office" + }, "office/research": { "icon": "commercial", "fields": [ @@ -11902,7 +12145,29 @@ "office": "surveyor" }, "terms": [], - "name": "Surveyor" + "name": "Surveyor Office" + }, + "office/tax_advisor": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "tax_advisor" + }, + "terms": [ + "tax", + "tax consultant" + ], + "name": "Tax Advisor Office" }, "office/telecommunication": { "icon": "commercial", @@ -11942,6 +12207,29 @@ "terms": [], "name": "Therapist" }, + "office/water_utility": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours", + "operator" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "water_utility" + }, + "terms": [ + "water board", + "utility" + ], + "name": "Water Utility Office" + }, "piste": { "icon": "skiing", "fields": [ diff --git a/data/presets/presets/office/adoption_agency.json b/data/presets/presets/office/adoption_agency.json new file mode 100644 index 000000000..b75d3b678 --- /dev/null +++ b/data/presets/presets/office/adoption_agency.json @@ -0,0 +1,19 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "adoption_agency" + }, + "terms": [], + "name": "Adoption Agency" +} diff --git a/data/presets/presets/office/association.json b/data/presets/presets/office/association.json index c356a033a..58ee31ea7 100644 --- a/data/presets/presets/office/association.json +++ b/data/presets/presets/office/association.json @@ -15,9 +15,11 @@ "office": "association" }, "terms": [ + "association", "non-profit", + "nonprofit", "organization", "society" ], - "name": "Association" + "name": "Nonprofit Organization Office" } diff --git a/data/presets/presets/office/charity.json b/data/presets/presets/office/charity.json new file mode 100644 index 000000000..3828e3742 --- /dev/null +++ b/data/presets/presets/office/charity.json @@ -0,0 +1,21 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "charity" + }, + "terms": [ + "charitable organization" + ], + "name": "Charity Office" +} diff --git a/data/presets/presets/office/energy_supplier.json b/data/presets/presets/office/energy_supplier.json new file mode 100644 index 000000000..002b9cf72 --- /dev/null +++ b/data/presets/presets/office/energy_supplier.json @@ -0,0 +1,24 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "energy_supplier" + }, + "terms": [ + "electricity", + "energy company", + "energy utility", + "gas utility" + ], + "name": "Energy Supplier Office" +} diff --git a/data/presets/presets/office/forestry.json b/data/presets/presets/office/forestry.json new file mode 100644 index 000000000..2c8f62f48 --- /dev/null +++ b/data/presets/presets/office/forestry.json @@ -0,0 +1,21 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "forestry" + }, + "terms": [ + "forest" + ], + "name": "Forestry Office" +} diff --git a/data/presets/presets/office/foundation.json b/data/presets/presets/office/foundation.json new file mode 100644 index 000000000..37812ef50 --- /dev/null +++ b/data/presets/presets/office/foundation.json @@ -0,0 +1,19 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "foundation" + }, + "terms": [], + "name": "Foundation Office" +} diff --git a/data/presets/presets/office/government/tax.json b/data/presets/presets/office/government/tax.json new file mode 100644 index 000000000..87e9a8854 --- /dev/null +++ b/data/presets/presets/office/government/tax.json @@ -0,0 +1,28 @@ +{ + "icon": "town-hall", + "fields": [ + "name", + "address", + "building_area", + "opening_hours", + "operator" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "fiscal authorities", + "revenue office", + "tax office" + ], + "tags": { + "office": "government", + "government": "tax" + }, + "reference": { + "key": "government", + "value": "tax" + }, + "name": "Tax and Revenue Office" +} diff --git a/data/presets/presets/office/guide.json b/data/presets/presets/office/guide.json new file mode 100644 index 000000000..32fbf1d20 --- /dev/null +++ b/data/presets/presets/office/guide.json @@ -0,0 +1,23 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "guide" + }, + "terms": [ + "dive guide", + "mountain guide", + "tour guide" + ], + "name": "Guide Office" +} diff --git a/data/presets/presets/office/moving_company.json b/data/presets/presets/office/moving_company.json new file mode 100644 index 000000000..1d0d36bd8 --- /dev/null +++ b/data/presets/presets/office/moving_company.json @@ -0,0 +1,21 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "moving_company" + }, + "terms": [ + "relocation" + ], + "name": "Moving Company Office" +} diff --git a/data/presets/presets/office/notary.json b/data/presets/presets/office/notary.json new file mode 100644 index 000000000..88219d9ad --- /dev/null +++ b/data/presets/presets/office/notary.json @@ -0,0 +1,19 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "notary" + }, + "terms": [], + "name": "Notary Office" +} diff --git a/data/presets/presets/office/private_investigator.json b/data/presets/presets/office/private_investigator.json new file mode 100644 index 000000000..6b9e5e3ad --- /dev/null +++ b/data/presets/presets/office/private_investigator.json @@ -0,0 +1,23 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "private_investigator" + }, + "terms": [ + "PI", + "private eye", + "private detective" + ], + "name": "Private Investigator Office" +} diff --git a/data/presets/presets/office/quango.json b/data/presets/presets/office/quango.json new file mode 100644 index 000000000..ba1eff513 --- /dev/null +++ b/data/presets/presets/office/quango.json @@ -0,0 +1,23 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "quango" + }, + "terms": [ + "Quasi-Autonomous Non-Government Organisation", + "Quasi-Autonomous Non-Government Organization", + "Quasi-Autonomous NGO" + ], + "name": "Quango Office" +} diff --git a/data/presets/presets/office/surveyor.json b/data/presets/presets/office/surveyor.json index 832b3c273..0485eba31 100644 --- a/data/presets/presets/office/surveyor.json +++ b/data/presets/presets/office/surveyor.json @@ -15,5 +15,5 @@ "office": "surveyor" }, "terms": [], - "name": "Surveyor" + "name": "Surveyor Office" } diff --git a/data/presets/presets/office/tax_advisor.json b/data/presets/presets/office/tax_advisor.json new file mode 100644 index 000000000..ac6b413a8 --- /dev/null +++ b/data/presets/presets/office/tax_advisor.json @@ -0,0 +1,22 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "tax_advisor" + }, + "terms": [ + "tax", + "tax consultant" + ], + "name": "Tax Advisor Office" +} diff --git a/data/presets/presets/office/water_utility.json b/data/presets/presets/office/water_utility.json new file mode 100644 index 000000000..b300d14b4 --- /dev/null +++ b/data/presets/presets/office/water_utility.json @@ -0,0 +1,23 @@ +{ + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours", + "operator" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "water_utility" + }, + "terms": [ + "water board", + "utility" + ], + "name": "Water Utility Office" +} diff --git a/data/taginfo.json b/data/taginfo.json index 7430da5e5..c868c53bf 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2169,6 +2169,10 @@ "key": "office", "value": "administrative" }, + { + "key": "office", + "value": "adoption_agency" + }, { "key": "office", "value": "advertising_agency" @@ -2181,6 +2185,10 @@ "key": "office", "value": "association" }, + { + "key": "office", + "value": "charity" + }, { "key": "office", "value": "company" @@ -2197,6 +2205,10 @@ "key": "office", "value": "employment_agency" }, + { + "key": "office", + "value": "energy_supplier" + }, { "key": "office", "value": "estate_agent" @@ -2205,6 +2217,14 @@ "key": "office", "value": "financial" }, + { + "key": "office", + "value": "forestry" + }, + { + "key": "office", + "value": "foundation" + }, { "key": "office", "value": "government" @@ -2213,6 +2233,14 @@ "key": "government", "value": "register_office" }, + { + "key": "government", + "value": "tax" + }, + { + "key": "office", + "value": "guide" + }, { "key": "office", "value": "insurance" @@ -2229,6 +2257,10 @@ "key": "lawyer", "value": "notary" }, + { + "key": "office", + "value": "moving_company" + }, { "key": "office", "value": "newspaper" @@ -2237,10 +2269,22 @@ "key": "office", "value": "ngo" }, + { + "key": "office", + "value": "notary" + }, { "key": "office", "value": "political_party" }, + { + "key": "office", + "value": "private_investigator" + }, + { + "key": "office", + "value": "quango" + }, { "key": "office", "value": "research" @@ -2249,6 +2293,10 @@ "key": "office", "value": "surveyor" }, + { + "key": "office", + "value": "tax_advisor" + }, { "key": "office", "value": "telecommunication" @@ -2257,6 +2305,10 @@ "key": "office", "value": "therapist" }, + { + "key": "office", + "value": "water_utility" + }, { "key": "piste:type" }, diff --git a/dist/locales/en.json b/dist/locales/en.json index 7e33f64a7..8783d8570 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4602,6 +4602,10 @@ "name": "Administrative Office", "terms": "" }, + "office/adoption_agency": { + "name": "Adoption Agency", + "terms": "" + }, "office/advertising_agency": { "name": "Advertising Agency", "terms": "ad,ad agency,advert agency,advertising,marketing" @@ -4611,8 +4615,12 @@ "terms": "" }, "office/association": { - "name": "Association", - "terms": "non-profit,organization,society" + "name": "Nonprofit Organization Office", + "terms": "association,non-profit,nonprofit,organization,society" + }, + "office/charity": { + "name": "Charity Office", + "terms": "charitable organization" }, "office/company": { "name": "Company Office", @@ -4630,6 +4638,10 @@ "name": "Employment Agency", "terms": "job" }, + "office/energy_supplier": { + "name": "Energy Supplier Office", + "terms": "electricity,energy company,energy utility,gas utility" + }, "office/estate_agent": { "name": "Real Estate Office", "terms": "" @@ -4638,6 +4650,14 @@ "name": "Financial Office", "terms": "" }, + "office/forestry": { + "name": "Forestry Office", + "terms": "forest" + }, + "office/foundation": { + "name": "Foundation Office", + "terms": "" + }, "office/government": { "name": "Government Office", "terms": "" @@ -4646,6 +4666,14 @@ "name": "Register Office", "terms": "clerk,marriage,death,birth,certificate" }, + "office/government/tax": { + "name": "Tax and Revenue Office", + "terms": "fiscal authorities,revenue office,tax office" + }, + "office/guide": { + "name": "Guide Office", + "terms": "dive guide,mountain guide,tour guide" + }, "office/insurance": { "name": "Insurance Office", "terms": "" @@ -4662,6 +4690,10 @@ "name": "Notary Office", "terms": "clerk,signature,wills,deeds,estate" }, + "office/moving_company": { + "name": "Moving Company Office", + "terms": "relocation" + }, "office/newspaper": { "name": "Newspaper", "terms": "" @@ -4670,18 +4702,34 @@ "name": "NGO Office", "terms": "" }, + "office/notary": { + "name": "Notary Office", + "terms": "" + }, "office/political_party": { "name": "Political Party", "terms": "" }, + "office/private_investigator": { + "name": "Private Investigator Office", + "terms": "PI,private eye,private detective" + }, + "office/quango": { + "name": "Quango Office", + "terms": "Quasi-Autonomous Non-Government Organisation,Quasi-Autonomous Non-Government Organization,Quasi-Autonomous NGO" + }, "office/research": { "name": "Research Office", "terms": "" }, "office/surveyor": { - "name": "Surveyor", + "name": "Surveyor Office", "terms": "" }, + "office/tax_advisor": { + "name": "Tax Advisor Office", + "terms": "tax,tax consultant" + }, "office/telecommunication": { "name": "Telecom Office", "terms": "" @@ -4690,6 +4738,10 @@ "name": "Therapist", "terms": "" }, + "office/water_utility": { + "name": "Water Utility Office", + "terms": "water board,utility" + }, "piste": { "name": "Piste/Ski Trail", "terms": "ski,sled,sleigh,snowboard,nordic,downhill,snowmobile" From 7080661fd415a55cdfd24aff2d5d281e96838c1d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 16:21:39 -0400 Subject: [PATCH 016/159] Add preset for "Pedestrian Area" (highway=pedestrian + area=yes) (closes #4488) --- data/presets.yaml | 8 +++- data/presets/categories.json | 2 +- data/presets/categories/path.json | 2 +- data/presets/presets.json | 41 +++++++++++++++++-- .../presets/highway/pedestrian_area.json | 27 ++++++++++++ .../{pedestrian.json => pedestrian_line.json} | 12 ++++-- data/taginfo.json | 4 ++ dist/locales/en.json | 8 +++- 8 files changed, 92 insertions(+), 12 deletions(-) create mode 100644 data/presets/presets/highway/pedestrian_area.json rename data/presets/presets/highway/{pedestrian.json => pedestrian_line.json} (67%) diff --git a/data/presets.yaml b/data/presets.yaml index ef85ea324..d873c1eaa 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -3055,9 +3055,15 @@ en: name: Path # 'terms: hike,hiking,trackway,trail,walk' terms: '' - highway/pedestrian: + highway/pedestrian_area: + # 'highway=pedestrian, area=yes' + name: Pedestrian Area + # 'terms: center,centre,plaza,quad,square,walkway' + terms: '' + highway/pedestrian_line: # highway=pedestrian name: Pedestrian Street + # 'terms: center,centre,plaza,quad,square,walkway' terms: '' highway/primary: # highway=primary diff --git a/data/presets/categories.json b/data/presets/categories.json index 25e7f4072..70122732e 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -108,7 +108,7 @@ "highway/footway", "highway/cycleway", "highway/bridleway", - "highway/pedestrian" + "highway/pedestrian_line" ] }, "category-rail": { diff --git a/data/presets/categories/path.json b/data/presets/categories/path.json index 5b15546dd..b675a430e 100644 --- a/data/presets/categories/path.json +++ b/data/presets/categories/path.json @@ -10,6 +10,6 @@ "highway/footway", "highway/cycleway", "highway/bridleway", - "highway/pedestrian" + "highway/pedestrian_line" ] } diff --git a/data/presets/presets.json b/data/presets/presets.json index 58a3ff9c9..758d3c0a6 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -6993,7 +6993,34 @@ }, "name": "Path" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "icon": "poi-foot", + "fields": [ + "name", + "surface", + "lit", + "width", + "structure", + "access" + ], + "geometry": [ + "area" + ], + "tags": { + "highway": "pedestrian", + "area": "yes" + }, + "terms": [ + "center", + "centre", + "plaza", + "quad", + "square", + "walkway" + ], + "name": "Pedestrian Area" + }, + "highway/pedestrian_line": { "icon": "highway-footway", "fields": [ "name", @@ -7005,13 +7032,19 @@ "access" ], "geometry": [ - "line", - "area" + "line" ], "tags": { "highway": "pedestrian" }, - "terms": [], + "terms": [ + "center", + "centre", + "plaza", + "quad", + "square", + "walkway" + ], "name": "Pedestrian Street" }, "highway/primary_link": { diff --git a/data/presets/presets/highway/pedestrian_area.json b/data/presets/presets/highway/pedestrian_area.json new file mode 100644 index 000000000..1f305b3b6 --- /dev/null +++ b/data/presets/presets/highway/pedestrian_area.json @@ -0,0 +1,27 @@ +{ + "icon": "poi-foot", + "fields": [ + "name", + "surface", + "lit", + "width", + "structure", + "access" + ], + "geometry": [ + "area" + ], + "tags": { + "highway": "pedestrian", + "area": "yes" + }, + "terms": [ + "center", + "centre", + "plaza", + "quad", + "square", + "walkway" + ], + "name": "Pedestrian Area" +} diff --git a/data/presets/presets/highway/pedestrian.json b/data/presets/presets/highway/pedestrian_line.json similarity index 67% rename from data/presets/presets/highway/pedestrian.json rename to data/presets/presets/highway/pedestrian_line.json index fece5f82b..1f98db37f 100644 --- a/data/presets/presets/highway/pedestrian.json +++ b/data/presets/presets/highway/pedestrian_line.json @@ -10,12 +10,18 @@ "access" ], "geometry": [ - "line", - "area" + "line" ], "tags": { "highway": "pedestrian" }, - "terms": [], + "terms": [ + "center", + "centre", + "plaza", + "quad", + "square", + "walkway" + ], "name": "Pedestrian Street" } diff --git a/data/taginfo.json b/data/taginfo.json index 6e7f1651e..69fc49d1a 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1336,6 +1336,10 @@ "key": "highway", "value": "path" }, + { + "key": "area", + "value": "yes" + }, { "key": "highway", "value": "pedestrian" diff --git a/dist/locales/en.json b/dist/locales/en.json index 2d188096b..e479887b7 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -3758,9 +3758,13 @@ "name": "Path", "terms": "hike,hiking,trackway,trail,walk" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "name": "Pedestrian Area", + "terms": "center,centre,plaza,quad,square,walkway" + }, + "highway/pedestrian_line": { "name": "Pedestrian Street", - "terms": "" + "terms": "center,centre,plaza,quad,square,walkway" }, "highway/primary_link": { "name": "Primary Link", From a5d04cc2f13863a1a4a68781400ca66acb83e787 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 16:56:55 -0400 Subject: [PATCH 017/159] Fix the highway=pedestrian + area=yes test --- test/spec/presets/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/presets/index.js b/test/spec/presets/index.js index fbe9ceb8d..9178a4519 100644 --- a/test/spec/presets/index.js +++ b/test/spec/presets/index.js @@ -180,7 +180,7 @@ describe('iD.presetIndex', function() { var presets = iD.Context().presets(), way = iD.Way({ tags: { area: 'yes', highway: 'pedestrian' }}), graph = iD.Graph([way]); - expect(presets.match(way, graph).id).to.eql('highway/pedestrian'); + expect(presets.match(way, graph).id).to.eql('highway/pedestrian_area'); }); }); From 227d54c3eed35924071bed9e1dc0d9ef83cd6e92 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 17:19:44 -0400 Subject: [PATCH 018/159] Adjust some of the office names and terms --- data/presets.yaml | 35 +++++++------- data/presets/presets.json | 46 +++++++++++++------ data/presets/presets/office/accountant.json | 2 +- .../presets/office/advertising_agency.json | 10 ++-- data/presets/presets/office/architect.json | 2 +- data/presets/presets/office/association.json | 10 ++-- data/presets/presets/office/charity.json | 2 +- .../presets/office/energy_supplier.json | 8 ++-- data/presets/presets/office/forestry.json | 3 +- data/presets/presets/office/guide.json | 8 ++-- data/presets/presets/office/it.json | 9 +++- .../presets/office/moving_company.json | 2 +- data/presets/presets/office/newspaper.json | 2 +- data/presets/presets/office/ngo.json | 8 +++- .../presets/office/private_investigator.json | 6 +-- data/presets/presets/office/quango.json | 12 +++-- data/presets/presets/office/therapist.json | 6 ++- .../presets/presets/office/water_utility.json | 4 +- dist/locales/en.json | 24 +++++----- 19 files changed, 119 insertions(+), 80 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index 0a51763e5..fbb7bb03f 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4006,8 +4006,8 @@ en: terms: '' office/accountant: # office=accountant - name: Accountant - terms: '' + name: Accountant Office + terms: '' office/administrative: # office=administrative name: Administrative Office @@ -4023,8 +4023,8 @@ en: terms: '' office/architect: # office=architect - name: Architect - terms: '' + name: Architect Office + terms: '' office/association: # office=association name: Nonprofit Organization Office @@ -4069,7 +4069,7 @@ en: office/forestry: # office=forestry name: Forestry Office - # 'terms: forest' + # 'terms: forest,ranger' terms: '' office/foundation: # office=foundation @@ -4091,17 +4091,18 @@ en: terms: '' office/guide: # office=guide - name: Guide Office + name: Tour Guide Office # 'terms: dive guide,mountain guide,tour guide' - terms: '' + terms: '' office/insurance: # office=insurance name: Insurance Office terms: '' office/it: # office=it - name: IT Office - terms: '' + name: Information Technology Office + # 'terms: computer,information,software,technology' + terms: '' office/lawyer: # office=lawyer name: Law Office @@ -4118,11 +4119,12 @@ en: terms: '' office/newspaper: # office=newspaper - name: Newspaper - terms: '' + name: Newspaper Office + terms: '' office/ngo: # office=ngo name: NGO Office + # 'terms: ngo,non government,non-government,organization,organisation' terms: '' office/notary: # office=notary @@ -4142,9 +4144,9 @@ en: terms: '' office/quango: # office=quango - name: Quango Office - # 'terms: Quasi-Autonomous Non-Government Organisation,Quasi-Autonomous Non-Government Organization,Quasi-Autonomous NGO' - terms: '' + name: Quasi-NGO Office + # 'terms: ngo,non government,non-government,organization,organisation,quasi autonomous,quasi-autonomous' + terms: '' office/research: # office=research name: Research Office @@ -4164,8 +4166,9 @@ en: terms: '' office/therapist: # office=therapist - name: Therapist - terms: '' + name: Therapist Office + # 'terms: therapy' + terms: '' office/travel_agent: # office=travel_agent name: Travel Agency diff --git a/data/presets/presets.json b/data/presets/presets.json index ab09049d3..a16d98c5f 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11491,7 +11491,7 @@ "office": "accountant" }, "terms": [], - "name": "Accountant" + "name": "Accountant Office" }, "office/administrative": { "icon": "commercial", @@ -11573,7 +11573,7 @@ "office": "architect" }, "terms": [], - "name": "Architect" + "name": "Architect Office" }, "office/association": { "icon": "commercial", @@ -11788,7 +11788,8 @@ "office": "forestry" }, "terms": [ - "forest" + "forest", + "ranger" ], "name": "Forestry Office" }, @@ -11909,7 +11910,7 @@ "mountain guide", "tour guide" ], - "name": "Guide Office" + "name": "Tour Guide Office" }, "office/insurance": { "icon": "commercial", @@ -11946,8 +11947,13 @@ "tags": { "office": "it" }, - "terms": [], - "name": "IT Office" + "terms": [ + "computer", + "information", + "software", + "technology" + ], + "name": "Information Technology Office" }, "office/lawyer": { "icon": "commercial", @@ -12036,7 +12042,7 @@ "office": "newspaper" }, "terms": [], - "name": "Newspaper" + "name": "Newspaper Office" }, "office/ngo": { "icon": "commercial", @@ -12055,7 +12061,13 @@ "tags": { "office": "ngo" }, - "terms": [], + "terms": [ + "ngo", + "non government", + "non-government", + "organization", + "organisation" + ], "name": "NGO Office" }, "office/notary": { @@ -12136,11 +12148,15 @@ "office": "quango" }, "terms": [ - "Quasi-Autonomous Non-Government Organisation", - "Quasi-Autonomous Non-Government Organization", - "Quasi-Autonomous NGO" + "ngo", + "non government", + "non-government", + "organization", + "organisation", + "quasi autonomous", + "quasi-autonomous" ], - "name": "Quango Office" + "name": "Quasi-NGO Office" }, "office/research": { "icon": "commercial", @@ -12237,8 +12253,10 @@ "tags": { "office": "therapist" }, - "terms": [], - "name": "Therapist" + "terms": [ + "therapy" + ], + "name": "Therapist Office" }, "office/water_utility": { "icon": "commercial", diff --git a/data/presets/presets/office/accountant.json b/data/presets/presets/office/accountant.json index d533bd0f7..e00917347 100644 --- a/data/presets/presets/office/accountant.json +++ b/data/presets/presets/office/accountant.json @@ -15,5 +15,5 @@ "office": "accountant" }, "terms": [], - "name": "Accountant" + "name": "Accountant Office" } diff --git a/data/presets/presets/office/advertising_agency.json b/data/presets/presets/office/advertising_agency.json index 041383c84..956facff9 100644 --- a/data/presets/presets/office/advertising_agency.json +++ b/data/presets/presets/office/advertising_agency.json @@ -15,11 +15,11 @@ "office": "advertising_agency" }, "terms": [ - "ad", - "ad agency", - "advert agency", - "advertising", - "marketing" + "ad", + "ad agency", + "advert agency", + "advertising", + "marketing" ], "name": "Advertising Agency" } diff --git a/data/presets/presets/office/architect.json b/data/presets/presets/office/architect.json index 70e660c0a..a61a7f4b5 100644 --- a/data/presets/presets/office/architect.json +++ b/data/presets/presets/office/architect.json @@ -15,5 +15,5 @@ "office": "architect" }, "terms": [], - "name": "Architect" + "name": "Architect Office" } diff --git a/data/presets/presets/office/association.json b/data/presets/presets/office/association.json index 58ee31ea7..089ba95fe 100644 --- a/data/presets/presets/office/association.json +++ b/data/presets/presets/office/association.json @@ -15,11 +15,11 @@ "office": "association" }, "terms": [ - "association", - "non-profit", - "nonprofit", - "organization", - "society" + "association", + "non-profit", + "nonprofit", + "organization", + "society" ], "name": "Nonprofit Organization Office" } diff --git a/data/presets/presets/office/charity.json b/data/presets/presets/office/charity.json index 3828e3742..9bd7d0547 100644 --- a/data/presets/presets/office/charity.json +++ b/data/presets/presets/office/charity.json @@ -15,7 +15,7 @@ "office": "charity" }, "terms": [ - "charitable organization" + "charitable organization" ], "name": "Charity Office" } diff --git a/data/presets/presets/office/energy_supplier.json b/data/presets/presets/office/energy_supplier.json index 002b9cf72..7462c9e4e 100644 --- a/data/presets/presets/office/energy_supplier.json +++ b/data/presets/presets/office/energy_supplier.json @@ -15,10 +15,10 @@ "office": "energy_supplier" }, "terms": [ - "electricity", - "energy company", - "energy utility", - "gas utility" + "electricity", + "energy company", + "energy utility", + "gas utility" ], "name": "Energy Supplier Office" } diff --git a/data/presets/presets/office/forestry.json b/data/presets/presets/office/forestry.json index 2c8f62f48..42e599297 100644 --- a/data/presets/presets/office/forestry.json +++ b/data/presets/presets/office/forestry.json @@ -15,7 +15,8 @@ "office": "forestry" }, "terms": [ - "forest" + "forest", + "ranger" ], "name": "Forestry Office" } diff --git a/data/presets/presets/office/guide.json b/data/presets/presets/office/guide.json index 32fbf1d20..14ab1178d 100644 --- a/data/presets/presets/office/guide.json +++ b/data/presets/presets/office/guide.json @@ -15,9 +15,9 @@ "office": "guide" }, "terms": [ - "dive guide", - "mountain guide", - "tour guide" + "dive guide", + "mountain guide", + "tour guide" ], - "name": "Guide Office" + "name": "Tour Guide Office" } diff --git a/data/presets/presets/office/it.json b/data/presets/presets/office/it.json index 937b332e8..37e54bcc5 100644 --- a/data/presets/presets/office/it.json +++ b/data/presets/presets/office/it.json @@ -14,6 +14,11 @@ "tags": { "office": "it" }, - "terms": [], - "name": "IT Office" + "terms": [ + "computer", + "information", + "software", + "technology" + ], + "name": "Information Technology Office" } diff --git a/data/presets/presets/office/moving_company.json b/data/presets/presets/office/moving_company.json index 1d0d36bd8..b019a2667 100644 --- a/data/presets/presets/office/moving_company.json +++ b/data/presets/presets/office/moving_company.json @@ -15,7 +15,7 @@ "office": "moving_company" }, "terms": [ - "relocation" + "relocation" ], "name": "Moving Company Office" } diff --git a/data/presets/presets/office/newspaper.json b/data/presets/presets/office/newspaper.json index 91d71e146..73e306731 100644 --- a/data/presets/presets/office/newspaper.json +++ b/data/presets/presets/office/newspaper.json @@ -15,5 +15,5 @@ "office": "newspaper" }, "terms": [], - "name": "Newspaper" + "name": "Newspaper Office" } diff --git a/data/presets/presets/office/ngo.json b/data/presets/presets/office/ngo.json index 9128f0130..76083e287 100644 --- a/data/presets/presets/office/ngo.json +++ b/data/presets/presets/office/ngo.json @@ -15,6 +15,12 @@ "tags": { "office": "ngo" }, - "terms": [], + "terms": [ + "ngo", + "non government", + "non-government", + "organization", + "organisation" + ], "name": "NGO Office" } diff --git a/data/presets/presets/office/private_investigator.json b/data/presets/presets/office/private_investigator.json index 6b9e5e3ad..8480a8e1e 100644 --- a/data/presets/presets/office/private_investigator.json +++ b/data/presets/presets/office/private_investigator.json @@ -15,9 +15,9 @@ "office": "private_investigator" }, "terms": [ - "PI", - "private eye", - "private detective" + "PI", + "private eye", + "private detective" ], "name": "Private Investigator Office" } diff --git a/data/presets/presets/office/quango.json b/data/presets/presets/office/quango.json index ba1eff513..6dcb66f88 100644 --- a/data/presets/presets/office/quango.json +++ b/data/presets/presets/office/quango.json @@ -15,9 +15,13 @@ "office": "quango" }, "terms": [ - "Quasi-Autonomous Non-Government Organisation", - "Quasi-Autonomous Non-Government Organization", - "Quasi-Autonomous NGO" + "ngo", + "non government", + "non-government", + "organization", + "organisation", + "quasi autonomous", + "quasi-autonomous" ], - "name": "Quango Office" + "name": "Quasi-NGO Office" } diff --git a/data/presets/presets/office/therapist.json b/data/presets/presets/office/therapist.json index 337aea2b5..06a770a14 100644 --- a/data/presets/presets/office/therapist.json +++ b/data/presets/presets/office/therapist.json @@ -14,6 +14,8 @@ "tags": { "office": "therapist" }, - "terms": [], - "name": "Therapist" + "terms": [ + "therapy" + ], + "name": "Therapist Office" } diff --git a/data/presets/presets/office/water_utility.json b/data/presets/presets/office/water_utility.json index b300d14b4..ceb61e14b 100644 --- a/data/presets/presets/office/water_utility.json +++ b/data/presets/presets/office/water_utility.json @@ -16,8 +16,8 @@ "office": "water_utility" }, "terms": [ - "water board", - "utility" + "water board", + "utility" ], "name": "Water Utility Office" } diff --git a/dist/locales/en.json b/dist/locales/en.json index 84a6d6e50..3b347271d 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4599,7 +4599,7 @@ "terms": "" }, "office/accountant": { - "name": "Accountant", + "name": "Accountant Office", "terms": "" }, "office/administrative": { @@ -4615,7 +4615,7 @@ "terms": "ad,ad agency,advert agency,advertising,marketing" }, "office/architect": { - "name": "Architect", + "name": "Architect Office", "terms": "" }, "office/association": { @@ -4656,7 +4656,7 @@ }, "office/forestry": { "name": "Forestry Office", - "terms": "forest" + "terms": "forest,ranger" }, "office/foundation": { "name": "Foundation Office", @@ -4675,7 +4675,7 @@ "terms": "fiscal authorities,revenue office,tax office" }, "office/guide": { - "name": "Guide Office", + "name": "Tour Guide Office", "terms": "dive guide,mountain guide,tour guide" }, "office/insurance": { @@ -4683,8 +4683,8 @@ "terms": "" }, "office/it": { - "name": "IT Office", - "terms": "" + "name": "Information Technology Office", + "terms": "computer,information,software,technology" }, "office/lawyer": { "name": "Law Office", @@ -4699,12 +4699,12 @@ "terms": "relocation" }, "office/newspaper": { - "name": "Newspaper", + "name": "Newspaper Office", "terms": "" }, "office/ngo": { "name": "NGO Office", - "terms": "" + "terms": "ngo,non government,non-government,organization,organisation" }, "office/notary": { "name": "Notary Office", @@ -4719,8 +4719,8 @@ "terms": "PI,private eye,private detective" }, "office/quango": { - "name": "Quango Office", - "terms": "Quasi-Autonomous Non-Government Organisation,Quasi-Autonomous Non-Government Organization,Quasi-Autonomous NGO" + "name": "Quasi-NGO Office", + "terms": "ngo,non government,non-government,organization,organisation,quasi autonomous,quasi-autonomous" }, "office/research": { "name": "Research Office", @@ -4739,8 +4739,8 @@ "terms": "" }, "office/therapist": { - "name": "Therapist", - "terms": "" + "name": "Therapist Office", + "terms": "therapy" }, "office/water_utility": { "name": "Water Utility Office", From e53730e6d7cebc0be358a6aecaeef6d7a6e06830 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 17:25:52 -0400 Subject: [PATCH 019/159] Drop `vertex` geom from office presets (i.e. make them like shop presets) --- data/presets/presets.json | 35 ------------------- data/presets/presets/office/_physician.json | 1 - .../presets/presets/office/_travel_agent.json | 1 - data/presets/presets/office/accountant.json | 1 - .../presets/office/administrative.json | 1 - .../presets/office/adoption_agency.json | 1 - .../presets/office/advertising_agency.json | 1 - data/presets/presets/office/architect.json | 1 - data/presets/presets/office/association.json | 1 - data/presets/presets/office/charity.json | 1 - data/presets/presets/office/company.json | 1 - .../office/educational_institution.json | 1 - .../presets/office/energy_supplier.json | 1 - data/presets/presets/office/estate_agent.json | 1 - data/presets/presets/office/financial.json | 1 - data/presets/presets/office/forestry.json | 1 - data/presets/presets/office/foundation.json | 1 - data/presets/presets/office/government.json | 1 - data/presets/presets/office/guide.json | 1 - data/presets/presets/office/insurance.json | 1 - data/presets/presets/office/it.json | 1 - data/presets/presets/office/lawyer.json | 1 - .../presets/presets/office/lawyer/notary.json | 1 - .../presets/office/moving_company.json | 1 - data/presets/presets/office/newspaper.json | 1 - data/presets/presets/office/ngo.json | 1 - data/presets/presets/office/notary.json | 1 - .../presets/office/political_party.json | 1 - .../presets/office/private_investigator.json | 1 - data/presets/presets/office/quango.json | 1 - data/presets/presets/office/research.json | 1 - data/presets/presets/office/surveyor.json | 1 - data/presets/presets/office/tax_advisor.json | 1 - .../presets/office/telecommunication.json | 1 - data/presets/presets/office/therapist.json | 1 - .../presets/presets/office/water_utility.json | 1 - 36 files changed, 70 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index a16d98c5f..c1e924d0b 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11441,7 +11441,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11460,7 +11459,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11484,7 +11482,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11503,7 +11500,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11522,7 +11518,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11541,7 +11536,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11566,7 +11560,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11585,7 +11578,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11610,7 +11602,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11632,7 +11623,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11679,7 +11669,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11719,7 +11708,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11743,7 +11731,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11762,7 +11749,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11781,7 +11767,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11803,7 +11788,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11822,7 +11806,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11899,7 +11882,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11922,7 +11904,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11941,7 +11922,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11965,7 +11945,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -11984,7 +11963,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12014,7 +11992,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12035,7 +12012,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12055,7 +12031,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12080,7 +12055,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12099,7 +12073,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12118,7 +12091,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12141,7 +12113,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12168,7 +12139,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12187,7 +12157,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12206,7 +12175,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12228,7 +12196,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12247,7 +12214,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -12269,7 +12235,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/_physician.json b/data/presets/presets/office/_physician.json index 42113ef36..5bf47fc27 100644 --- a/data/presets/presets/office/_physician.json +++ b/data/presets/presets/office/_physician.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/_travel_agent.json b/data/presets/presets/office/_travel_agent.json index 66642b741..ca0942908 100644 --- a/data/presets/presets/office/_travel_agent.json +++ b/data/presets/presets/office/_travel_agent.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/accountant.json b/data/presets/presets/office/accountant.json index e00917347..874525af9 100644 --- a/data/presets/presets/office/accountant.json +++ b/data/presets/presets/office/accountant.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/administrative.json b/data/presets/presets/office/administrative.json index 42c739aa7..b2a4f2029 100644 --- a/data/presets/presets/office/administrative.json +++ b/data/presets/presets/office/administrative.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/adoption_agency.json b/data/presets/presets/office/adoption_agency.json index b75d3b678..549b3293a 100644 --- a/data/presets/presets/office/adoption_agency.json +++ b/data/presets/presets/office/adoption_agency.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/advertising_agency.json b/data/presets/presets/office/advertising_agency.json index 956facff9..55d7f7d55 100644 --- a/data/presets/presets/office/advertising_agency.json +++ b/data/presets/presets/office/advertising_agency.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/architect.json b/data/presets/presets/office/architect.json index a61a7f4b5..b40eaf8bb 100644 --- a/data/presets/presets/office/architect.json +++ b/data/presets/presets/office/architect.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/association.json b/data/presets/presets/office/association.json index 089ba95fe..1a24364ae 100644 --- a/data/presets/presets/office/association.json +++ b/data/presets/presets/office/association.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/charity.json b/data/presets/presets/office/charity.json index 9bd7d0547..6b4e4d38e 100644 --- a/data/presets/presets/office/charity.json +++ b/data/presets/presets/office/charity.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/company.json b/data/presets/presets/office/company.json index 6bb94fdb2..bb86e90df 100644 --- a/data/presets/presets/office/company.json +++ b/data/presets/presets/office/company.json @@ -9,7 +9,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/educational_institution.json b/data/presets/presets/office/educational_institution.json index dc634c628..4e9e6d8ab 100644 --- a/data/presets/presets/office/educational_institution.json +++ b/data/presets/presets/office/educational_institution.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/energy_supplier.json b/data/presets/presets/office/energy_supplier.json index 7462c9e4e..41a2a6387 100644 --- a/data/presets/presets/office/energy_supplier.json +++ b/data/presets/presets/office/energy_supplier.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/estate_agent.json b/data/presets/presets/office/estate_agent.json index 649eeb378..d9655383c 100644 --- a/data/presets/presets/office/estate_agent.json +++ b/data/presets/presets/office/estate_agent.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/financial.json b/data/presets/presets/office/financial.json index d72cfca03..9072123ed 100644 --- a/data/presets/presets/office/financial.json +++ b/data/presets/presets/office/financial.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/forestry.json b/data/presets/presets/office/forestry.json index 42e599297..160968fd4 100644 --- a/data/presets/presets/office/forestry.json +++ b/data/presets/presets/office/forestry.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/foundation.json b/data/presets/presets/office/foundation.json index 37812ef50..29a1ba326 100644 --- a/data/presets/presets/office/foundation.json +++ b/data/presets/presets/office/foundation.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/government.json b/data/presets/presets/office/government.json index 6a6c32dbd..29c4cc4cc 100644 --- a/data/presets/presets/office/government.json +++ b/data/presets/presets/office/government.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/guide.json b/data/presets/presets/office/guide.json index 14ab1178d..6f76a9957 100644 --- a/data/presets/presets/office/guide.json +++ b/data/presets/presets/office/guide.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/insurance.json b/data/presets/presets/office/insurance.json index 8373b69ef..81ce7ff14 100644 --- a/data/presets/presets/office/insurance.json +++ b/data/presets/presets/office/insurance.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/it.json b/data/presets/presets/office/it.json index 37e54bcc5..157915952 100644 --- a/data/presets/presets/office/it.json +++ b/data/presets/presets/office/it.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/lawyer.json b/data/presets/presets/office/lawyer.json index ea6b4391c..40efd07b1 100644 --- a/data/presets/presets/office/lawyer.json +++ b/data/presets/presets/office/lawyer.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/lawyer/notary.json b/data/presets/presets/office/lawyer/notary.json index cd65abc10..baec068e0 100644 --- a/data/presets/presets/office/lawyer/notary.json +++ b/data/presets/presets/office/lawyer/notary.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/moving_company.json b/data/presets/presets/office/moving_company.json index b019a2667..624d2d3f9 100644 --- a/data/presets/presets/office/moving_company.json +++ b/data/presets/presets/office/moving_company.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/newspaper.json b/data/presets/presets/office/newspaper.json index 73e306731..5993e6a9c 100644 --- a/data/presets/presets/office/newspaper.json +++ b/data/presets/presets/office/newspaper.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/ngo.json b/data/presets/presets/office/ngo.json index 76083e287..ffb802ccc 100644 --- a/data/presets/presets/office/ngo.json +++ b/data/presets/presets/office/ngo.json @@ -9,7 +9,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/notary.json b/data/presets/presets/office/notary.json index 88219d9ad..1ad973630 100644 --- a/data/presets/presets/office/notary.json +++ b/data/presets/presets/office/notary.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/political_party.json b/data/presets/presets/office/political_party.json index 0c94c88fd..d5bdaff9f 100644 --- a/data/presets/presets/office/political_party.json +++ b/data/presets/presets/office/political_party.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/private_investigator.json b/data/presets/presets/office/private_investigator.json index 8480a8e1e..a0d40d575 100644 --- a/data/presets/presets/office/private_investigator.json +++ b/data/presets/presets/office/private_investigator.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/quango.json b/data/presets/presets/office/quango.json index 6dcb66f88..23e3e3a09 100644 --- a/data/presets/presets/office/quango.json +++ b/data/presets/presets/office/quango.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/research.json b/data/presets/presets/office/research.json index 1a21796d9..e7777f9e6 100644 --- a/data/presets/presets/office/research.json +++ b/data/presets/presets/office/research.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/surveyor.json b/data/presets/presets/office/surveyor.json index 0485eba31..3b51c5f68 100644 --- a/data/presets/presets/office/surveyor.json +++ b/data/presets/presets/office/surveyor.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/tax_advisor.json b/data/presets/presets/office/tax_advisor.json index ac6b413a8..26b67738a 100644 --- a/data/presets/presets/office/tax_advisor.json +++ b/data/presets/presets/office/tax_advisor.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/telecommunication.json b/data/presets/presets/office/telecommunication.json index ee3146448..fce97305f 100644 --- a/data/presets/presets/office/telecommunication.json +++ b/data/presets/presets/office/telecommunication.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/therapist.json b/data/presets/presets/office/therapist.json index 06a770a14..0c21e3553 100644 --- a/data/presets/presets/office/therapist.json +++ b/data/presets/presets/office/therapist.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/water_utility.json b/data/presets/presets/office/water_utility.json index ceb61e14b..accfa5651 100644 --- a/data/presets/presets/office/water_utility.json +++ b/data/presets/presets/office/water_utility.json @@ -9,7 +9,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { From c075f801d3aa74c995ae04aef7e14d112abbd5ca Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 17:27:29 -0400 Subject: [PATCH 020/159] Remove vertex geometry from office=employment_agency (missed one) --- data/presets/presets.json | 1 - data/presets/presets/office/employment_agency.json | 1 - 2 files changed, 2 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index c1e924d0b..827891199 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11687,7 +11687,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/office/employment_agency.json b/data/presets/presets/office/employment_agency.json index 293f282ed..8753fb5e4 100644 --- a/data/presets/presets/office/employment_agency.json +++ b/data/presets/presets/office/employment_agency.json @@ -8,7 +8,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { From 4d1c6796c257f3bcba42c146c3cc69f2dc7b7800 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 22:22:40 -0400 Subject: [PATCH 021/159] Don't leave space for an area icon, if preset doesn't have an icon (closes #4479) --- modules/svg/labels.js | 62 ++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/modules/svg/labels.js b/modules/svg/labels.js index a14a02c54..bc17fdd4b 100644 --- a/modules/svg/labels.js +++ b/modules/svg/labels.js @@ -512,47 +512,65 @@ export function svgLabels(projection, context) { function getAreaLabel(entity, width, height) { var centroid = path.centroid(entity.asGeoJSON(graph, true)), extent = entity.extent(graph), - entitywidth = projection(extent[1])[0] - projection(extent[0])[0]; + areaWidth = projection(extent[1])[0] - projection(extent[0])[0]; - if (isNaN(centroid[0]) || entitywidth < 20) return; + if (isNaN(centroid[0]) || areaWidth < 20) return; - var iconSize = 20, - iconX = centroid[0] - (iconSize / 2), - iconY = centroid[1] - (iconSize / 2), + var preset = context.presets().match(entity, context.graph()), + picon = preset && preset.icon, + iconSize = 17, margin = 2, - textOffset = iconSize + margin, - p = { transform: 'translate(' + iconX + ',' + iconY + ')' }; + p = {}; - var bbox = { - minX: iconX, - minY: iconY, - maxX: iconX + iconSize, - maxY: iconY + iconSize - }; + if (picon) { // icon and label.. + if (addIcon()) { + addLabel(iconSize + margin); + return p; + } + } else { // label only.. + if (addLabel(0)) { + return p; + } + } - // try to add icon - if (tryInsert([bbox], entity.id + 'I', true)) { - if (width && entitywidth >= width + 20) { - var labelX = centroid[0], - labelY = centroid[1] + textOffset; - bbox = { + function addIcon() { + var iconX = centroid[0] - (iconSize / 2); + var iconY = centroid[1] - (iconSize / 2); + var bbox = { + minX: iconX, + minY: iconY, + maxX: iconX + iconSize, + maxY: iconY + iconSize + }; + + if (tryInsert([bbox], entity.id + 'I', true)) { + p.transform = 'translate(' + iconX + ',' + iconY + ')'; + return true; + } + return false; + } + + function addLabel(yOffset) { + if (width && areaWidth >= width + 20) { + var labelX = centroid[0]; + var labelY = centroid[1] + yOffset; + var bbox = { minX: labelX - (width / 2) - margin, minY: labelY - (height / 2) - margin, maxX: labelX + (width / 2) + margin, maxY: labelY + (height / 2) + margin }; - // try to add label if (tryInsert([bbox], entity.id, true)) { p.x = labelX; p.y = labelY; p.textAnchor = 'middle'; p.height = height; + return true; } } - - return p; + return false; } } From 672a55522935e14fa8fa31613fe510058925ae63 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 31 Oct 2017 22:45:24 -0400 Subject: [PATCH 022/159] Allow spellcheck in textarea fields (closes #4471) --- modules/util/util.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/util/util.js b/modules/util/util.js index c9a22fa43..5c93b5c9c 100644 --- a/modules/util/util.js +++ b/modules/util/util.js @@ -255,9 +255,11 @@ export function utilFunctor(value) { export function utilNoAuto(selection) { + var isText = (selection.size() && selection.node().tagName.toLowerCase() === 'textarea'); + return selection .attr('autocomplete', 'off') .attr('autocorrect', 'off') .attr('autocapitalize', 'off') - .attr('spellcheck', 'false'); + .attr('spellcheck', isText ? 'true' : 'false'); } From 475db33b3f84fd844a851932ffbb47d0dfb2f2fe Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 1 Nov 2017 10:36:23 -0400 Subject: [PATCH 023/159] Bump default max_zoom from 20 to 22 (affects custom imagery) --- data/update_imagery.js | 2 +- modules/renderer/background_source.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/update_imagery.js b/data/update_imagery.js index af1d02774..a3c291fdb 100644 --- a/data/update_imagery.js +++ b/data/update_imagery.js @@ -72,7 +72,7 @@ sources.concat(whitelist).forEach(function(source) { if (extent.min_zoom || extent.max_zoom) { im.scaleExtent = [ extent.min_zoom || 0, - extent.max_zoom || 20 + extent.max_zoom || 22 ]; } diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 5407f1050..8ad126faf 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -35,7 +35,7 @@ export function rendererBackgroundSource(data) { best = !!source.best, template = source.template; - source.scaleExtent = data.scaleExtent || [0, 20]; + source.scaleExtent = data.scaleExtent || [0, 22]; source.overzoom = data.overzoom !== false; From a0a197a69ef2510172128297005290bc69e64faa Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 1 Nov 2017 13:46:13 -0400 Subject: [PATCH 024/159] Add support for DigitalGlobe imagery vintage overlays (see https://github.com/osmlab/editor-layer-index/issues/371) --- css/80_app.css | 5 + data/core.yaml | 2 + data/imagery.json | 1284 +++---------------------- dist/locales/en.json | 18 +- modules/renderer/background.js | 4 +- modules/renderer/background_source.js | 7 + modules/ui/background.js | 4 +- modules/ui/panels/background.js | 42 +- 8 files changed, 200 insertions(+), 1166 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index 18d63e9fc..293c8898b 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -2951,8 +2951,13 @@ img.tile-removing { border-radius: 2px; padding: 0 4px; margin-top: 10px; + margin-right: 10px; color: white; } +[dir='rtl'] .panel-content .button { + margin-right: auto; + margin-left: 10px; +} .panel-content-history .links a { margin-left: 10px; diff --git a/data/core.yaml b/data/core.yaml index 8959caedc..a55aa2fff 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -286,6 +286,8 @@ en: unknown: Unknown show_tiles: Show Tiles hide_tiles: Hide Tiles + show_vintage: Show Vintage + hide_vintage: Hide Vintage history: key: H title: History diff --git a/data/imagery.json b/data/imagery.json index fc6c8217c..fd9f92662 100644 --- a/data/imagery.json +++ b/data/imagery.json @@ -8430,12 +8430,12 @@ }, { "id": "osm-cambodia_laos_thailand_vietnam-bilingual", - "name": "Cambodia, Laos, Thailand, Vietnam, Myanmar bilingual", + "name": "Cambodia, Laos, Thailand, Vietnam, Malaysia, Myanmar bilingual", "type": "tms", - "template": "http://{switch:a,b,c,d}.tile.osm-tools.org/osm_then/{zoom}/{x}/{y}.png", + "template": "http://{switch:a,b,c,d}.tile.osm-tools.org/osm/{zoom}/{x}/{y}.png", "scaleExtent": [ 0, - 19 + 20 ], "polygon": [ [ @@ -14240,6 +14240,21 @@ "description": "Premium DigitalGlobe satellite imagery.", "icon": "data:image/png;base64,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" }, + { + "id": "DigitalGlobe-Premium-vintage", + "name": "DigitalGlobe Premium Imagery Vintage", + "type": "tms", + "template": "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/digitalglobe.2850d66c/{zoom}/{x}/{y}.png?access_token=pk.eyJ1IjoiZGlnaXRhbGdsb2JlIiwiYSI6ImNqOTBkcmZjNzJ5ZnozNHF6NnVkOGd6ODYifQ.grAnqgpCjOaeq-ozqt4QNw", + "scaleExtent": [ + 0, + 22 + ], + "terms_url": "https://wiki.openstreetmap.org/wiki/DigitalGlobe", + "terms_text": "Terms & Feedback", + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "icon": "data:image/png;base64,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", + "overlay": true + }, { "id": "DigitalGlobe-Standard", "name": "DigitalGlobe Standard Imagery", @@ -14255,6 +14270,21 @@ "description": "Standard DigitalGlobe satellite imagery.", "icon": "data:image/png;base64,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" }, + { + "id": "DigitalGlobe-Standard-vintage", + "name": "DigitalGlobe Standard Imagery Vintage", + "type": "tms", + "template": "https://{switch:a,b,c,d}.tiles.mapbox.com/v4/digitalglobe.1412531a/{zoom}/{x}/{y}.png?access_token=pk.eyJ1IjoiZGlnaXRhbGdsb2JlIiwiYSI6ImNqOTBlYWJ1ZDAza2YyeG14NWVodTA4OWUifQ.wVc8ZOuPuYVw39lhS2j3_g", + "scaleExtent": [ + 0, + 22 + ], + "terms_url": "https://wiki.openstreetmap.org/wiki/DigitalGlobe", + "terms_text": "Terms & Feedback", + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "icon": "data:image/png;base64,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", + "overlay": true + }, { "id": "EsriWorldImagery", "name": "Esri World Imagery", @@ -14277,7 +14307,7 @@ "template": "http://kaart.maakaart.ee/orto/{zoom}/{x}/{y}.jpeg", "scaleExtent": [ 14, - 20 + 18 ], "polygon": [ [ @@ -19259,7 +19289,7 @@ "template": "http://tms.cadastre.openstreetmap.fr/*/tout/{zoom}/{x}/{y}.png", "scaleExtent": [ 12, - 20 + 22 ], "polygon": [ [ @@ -32123,1248 +32153,188 @@ "polygon": [ [ [ - 7.5546583, - 47.5643681 + 7.6713752, + 47.5952248 ], [ - 7.5557966, - 47.5637596 + 7.6799583, + 47.6007811 ], [ - 7.5579279, - 47.5626202 + 7.6845073, + 47.6018228 ], [ - 7.5587206, - 47.5619588 + 7.6943779, + 47.601707 ], [ - 7.5598704, - 47.5605319 + 7.6939487, + 47.5966718 ], [ - 7.5615849, - 47.5591798 + 7.6870823, + 47.5935462 ], [ - 7.5645616, - 47.5572174 + 7.6788425, + 47.5871208 ], [ - 7.5645784, - 47.557036 + 7.685709, + 47.585384 ], [ - 7.5630528, - 47.5549292 + 7.6890564, + 47.5761205 ], [ - 7.5620633, - 47.5531755 + 7.6941204, + 47.573399 ], [ - 7.562027, - 47.5531111 + 7.6924038, + 47.5669132 ], [ - 7.5612437, - 47.5517228 + 7.6847005, + 47.5617009 ], [ - 7.5609044, - 47.5518141 + 7.6642513, + 47.5616429 ], [ - 7.5587527, - 47.5523533 + 7.6487159, + 47.5568934 ], [ - 7.5560208, - 47.5447226 + 7.6303482, + 47.558689 ], [ - 7.5558907, - 47.5443591 + 7.6235675, + 47.5566617 ], [ - 7.5558822, - 47.5443356 + 7.6278591, + 47.5514483 ], [ - 7.5565398, - 47.5443319 + 7.6273763, + 47.5365801 ], [ - 7.557539, - 47.5443996 + 7.6183319, + 47.5366163 ], [ - 7.5600937, - 47.5447993 + 7.6133537, + 47.5326179 ], [ - 7.5617072, - 47.5451327 + 7.5996208, + 47.5191137 ], [ - 7.563015, - 47.5453056 + 7.5850296, + 47.5191717 ], [ - 7.5645168, - 47.5456579 + 7.5840854, + 47.5263589 ], [ - 7.5647854, - 47.5456863 + 7.5771331, + 47.5316327 ], [ - 7.5711158, - 47.5447363 + 7.581253, + 47.5398612 ], [ - 7.5754994, - 47.5439857 + 7.5718975, + 47.5414835 ], [ - 7.5756961, - 47.543952 + 7.553873, + 47.5414835 ], [ - 7.5780942, - 47.5437915 + 7.5537872, + 47.5512166 ], [ - 7.5784687, - 47.5437284 + 7.5565338, + 47.5582836 ], [ - 7.5786289, - 47.5437885 + 7.5537014, + 47.5603108 ], [ - 7.5791491, - 47.5438323 + 7.5537872, + 47.5747308 ], [ - 7.5800676, - 47.5438339 + 7.5643444, + 47.5812157 ], [ - 7.5805324, - 47.5437879 + 7.5793647, + 47.579884 ], [ - 7.5809651, - 47.5436877 + 7.583313, + 47.5901889 ], [ - 7.5814732, - 47.5438236 + 7.5856304, + 47.5923306 ], [ - 7.5872631, - 47.5419007 + 7.5920677, + 47.5923885 ], [ - 7.5868378, - 47.5412398 + 7.598505, + 47.5907098 ], [ - 7.5865165, - 47.5405078 + 7.609148, + 47.5864261 ], [ - 7.5857211, - 47.5391295 + 7.6092338, + 47.5810999 ], [ - 7.5854825, - 47.5385844 + 7.6191043, + 47.580463 ], [ - 7.5854664, - 47.5383935 + 7.6368713, + 47.593141 ], [ - 7.5855306, - 47.5382072 + 7.6378154, + 47.595572 ], [ - 7.5859696, - 47.5377431 + 7.6416778, + 47.5988711 ], [ - 7.5859195, - 47.5374037 + 7.6452827, + 47.6002602 ], [ - 7.5834651, - 47.5334598 + 7.664938, + 47.5961798 ], [ - 7.5829999, - 47.5329428 - ], - [ - 7.5826885, - 47.5324682 - ], - [ - 7.5827807, - 47.531979 - ], - [ - 7.583173, - 47.5314823 - ], - [ - 7.5838511, - 47.5309137 - ], - [ - 7.5846792, - 47.5312277 - ], - [ - 7.5856831, - 47.5313229 - ], - [ - 7.5859049, - 47.5299585 - ], - [ - 7.5858669, - 47.5292755 - ], - [ - 7.588466, - 47.5290556 - ], - [ - 7.588387, - 47.5285066 - ], - [ - 7.588485, - 47.5282758 - ], - [ - 7.5889124, - 47.5280286 - ], - [ - 7.5894826, - 47.5279231 - ], - [ - 7.5898333, - 47.5270746 - ], - [ - 7.5899235, - 47.5266745 - ], - [ - 7.5899641, - 47.5257376 - ], - [ - 7.5896412, - 47.5251572 - ], - [ - 7.5896095, - 47.5244274 - ], - [ - 7.5893954, - 47.5237135 - ], - [ - 7.5893183, - 47.5229554 - ], - [ - 7.5894367, - 47.5222932 - ], - [ - 7.5896678, - 47.5218266 - ], - [ - 7.5899931, - 47.5205282 - ], - [ - 7.5900357, - 47.5204109 - ], - [ - 7.5902485, - 47.5197897 - ], - [ - 7.5907391, - 47.5196504 - ], - [ - 7.5927813, - 47.5194647 - ], - [ - 7.5947814, - 47.519294 - ], - [ - 7.601768, - 47.5253475 - ], - [ - 7.6047028, - 47.5292911 - ], - [ - 7.6046151, - 47.5297979 - ], - [ - 7.6055404, - 47.5297828 - ], - [ - 7.605482, - 47.5303019 - ], - [ - 7.6056805, - 47.5305547 - ], - [ - 7.6056425, - 47.530742 - ], - [ - 7.6060331, - 47.5307783 - ], - [ - 7.6060088, - 47.5309725 - ], - [ - 7.6091826, - 47.5350166 - ], - [ - 7.6102214, - 47.5356318 - ], - [ - 7.6104849, - 47.5352145 - ], - [ - 7.611379, - 47.5354467 - ], - [ - 7.6110278, - 47.5359604 - ], - [ - 7.6118152, - 47.5364265 - ], - [ - 7.6118411, - 47.5365771 - ], - [ - 7.6123623, - 47.5367419 - ], - [ - 7.6127143, - 47.5370225 - ], - [ - 7.6128464, - 47.5373008 - ], - [ - 7.6130129, - 47.5384451 - ], - [ - 7.6131744, - 47.5387477 - ], - [ - 7.6134307, - 47.5390187 - ], - [ - 7.6137808, - 47.539251 - ], - [ - 7.6141998, - 47.5394231 - ], - [ - 7.6165067, - 47.5399666 - ], - [ - 7.6169975, - 47.5401189 - ], - [ - 7.6175901, - 47.5404022 - ], - [ - 7.6181485, - 47.5408004 - ], - [ - 7.6190301, - 47.5404729 - ], - [ - 7.6197653, - 47.5402824 - ], - [ - 7.6223033, - 47.5397743 - ], - [ - 7.6224898, - 47.5424261 - ], - [ - 7.6229623, - 47.5492907 - ], - [ - 7.6228545, - 47.5500403 - ], - [ - 7.6226655, - 47.5505183 - ], - [ - 7.6223987, - 47.550975 - ], - [ - 7.6220535, - 47.551407 - ], - [ - 7.6216349, - 47.5518082 - ], - [ - 7.6207617, - 47.5524006 - ], - [ - 7.6185071, - 47.5535681 - ], - [ - 7.6180597, - 47.5539379 - ], - [ - 7.617741, - 47.5543666 - ], - [ - 7.6176167, - 47.5546487 - ], - [ - 7.6175802, - 47.5549522 - ], - [ - 7.6177985, - 47.5562634 - ], - [ - 7.6178338, - 47.5570769 - ], - [ - 7.6177686, - 47.5578613 - ], - [ - 7.6176173, - 47.5586485 - ], - [ - 7.6192664, - 47.5591127 - ], - [ - 7.6243822, - 47.5607532 - ], - [ - 7.6273612, - 47.5615165 - ], - [ - 7.6287755, - 47.5616815 - ], - [ - 7.6302053, - 47.5617061 - ], - [ - 7.6315166, - 47.5616482 - ], - [ - 7.6325943, - 47.5615064 - ], - [ - 7.6327278, - 47.5614888 - ], - [ - 7.6339558, - 47.5612235 - ], - [ - 7.6348135, - 47.5622913 - ], - [ - 7.6348945, - 47.5623925 - ], - [ - 7.6350685, - 47.5626091 - ], - [ - 7.6361189, - 47.5639171 - ], - [ - 7.6383303, - 47.563226 - ], - [ - 7.6400932, - 47.5619987 - ], - [ - 7.6406107, - 47.5616726 - ], - [ - 7.6412591, - 47.5612641 - ], - [ - 7.6440496, - 47.5612843 - ], - [ - 7.6460646, - 47.5607169 - ], - [ - 7.6465041, - 47.5604966 - ], - [ - 7.6482757, - 47.559931 - ], - [ - 7.6503486, - 47.5608971 - ], - [ - 7.6517514, - 47.561435 - ], - [ - 7.6526422, - 47.5617771 - ], - [ - 7.654536, - 47.5623665 - ], - [ - 7.6561556, - 47.562278 - ], - [ - 7.6567566, - 47.5631288 - ], - [ - 7.6587522, - 47.5644771 - ], - [ - 7.6642272, - 47.5653987 - ], - [ - 7.6655502, - 47.56506 - ], - [ - 7.6674872, - 47.5653049 - ], - [ - 7.6702191, - 47.5658319 - ], - [ - 7.6706995, - 47.5658147 - ], - [ - 7.6723599, - 47.5654399 - ], - [ - 7.6723096, - 47.5650023 - ], - [ - 7.6724486, - 47.5637255 - ], - [ - 7.6744535, - 47.563456 - ], - [ - 7.6756147, - 47.5634809 - ], - [ - 7.6773158, - 47.563745 - ], - [ - 7.6772795, - 47.5649333 - ], - [ - 7.6751444, - 47.5654226 - ], - [ - 7.6767437, - 47.5669837 - ], - [ - 7.6776819, - 47.5678061 - ], - [ - 7.678441, - 47.5689615 - ], - [ - 7.6791014, - 47.5695 - ], - [ - 7.6810223, - 47.5704327 - ], - [ - 7.6834998, - 47.571254 - ], - [ - 7.6837139, - 47.5705354 - ], - [ - 7.6834203, - 47.5684215 - ], - [ - 7.6837542, - 47.5683517 - ], - [ - 7.6859194, - 47.5656103 - ], - [ - 7.6870989, - 47.5683843 - ], - [ - 7.6888902, - 47.5702869 - ], - [ - 7.6896532, - 47.571398 - ], - [ - 7.6889131, - 47.572425 - ], - [ - 7.6855034, - 47.5730872 - ], - [ - 7.6843054, - 47.5737956 - ], - [ - 7.6836701, - 47.5739056 - ], - [ - 7.6838528, - 47.5766573 - ], - [ - 7.6825486, - 47.5772314 - ], - [ - 7.6818996, - 47.5774562 - ], - [ - 7.6819239, - 47.5777083 - ], - [ - 7.6816135, - 47.5794616 - ], - [ - 7.6815318, - 47.5799229 - ], - [ - 7.681473, - 47.5802552 - ], - [ - 7.681326, - 47.5809796 - ], - [ - 7.6808517, - 47.582684 - ], - [ - 7.6789268, - 47.5832644 - ], - [ - 7.6749356, - 47.5842336 - ], - [ - 7.672069, - 47.5852391 - ], - [ - 7.6717419, - 47.58727 - ], - [ - 7.6730805, - 47.5881644 - ], - [ - 7.6773805, - 47.5913618 - ], - [ - 7.6795811, - 47.5922467 - ], - [ - 7.681979, - 47.5942611 - ], - [ - 7.6836452, - 47.5960217 - ], - [ - 7.6847161, - 47.5966362 - ], - [ - 7.6901533, - 47.5975697 - ], - [ - 7.6919739, - 47.5986748 - ], - [ - 7.6930358, - 47.5994863 - ], - [ - 7.6937903, - 47.6007716 - ], - [ - 7.6933251, - 47.6009125 - ], - [ - 7.6916366, - 47.5995856 - ], - [ - 7.6893134, - 47.5988418 - ], - [ - 7.6879834, - 47.5986068 - ], - [ - 7.6870219, - 47.5986977 - ], - [ - 7.6848189, - 47.5987669 - ], - [ - 7.6830086, - 47.5984931 - ], - [ - 7.681551, - 47.5973332 - ], - [ - 7.680658, - 47.5971921 - ], - [ - 7.6797172, - 47.5963587 - ], - [ - 7.6780641, - 47.5953554 - ], - [ - 7.6767831, - 47.594313 - ], - [ - 7.6754987, - 47.5930445 - ], - [ - 7.6751713, - 47.5919819 - ], - [ - 7.6721918, - 47.5918984 - ], - [ - 7.6673301, - 47.5919456 - ], - [ - 7.6646206, - 47.5926653 - ], - [ - 7.6616899, - 47.5937021 - ], - [ - 7.6559609, - 47.5951739 - ], - [ - 7.6556715, - 47.5952499 - ], - [ - 7.655565, - 47.5952749 - ], - [ - 7.6555191, - 47.5952856 - ], - [ - 7.6553766, - 47.5953199 - ], - [ - 7.6552629, - 47.5953482 - ], - [ - 7.6550649, - 47.5953952 - ], - [ - 7.6510568, - 47.5957162 - ], - [ - 7.6493128, - 47.5961511 - ], - [ - 7.6490366, - 47.5962165 - ], - [ - 7.6466315, - 47.5967457 - ], - [ - 7.6456696, - 47.5969552 - ], - [ - 7.644405, - 47.5957399 - ], - [ - 7.6430459, - 47.5950447 - ], - [ - 7.6417835, - 47.5941917 - ], - [ - 7.6418572, - 47.592907 - ], - [ - 7.64324, - 47.5913407 - ], - [ - 7.6406364, - 47.5907759 - ], - [ - 7.6396302, - 47.5903641 - ], - [ - 7.638336, - 47.5895565 - ], - [ - 7.6364368, - 47.5883715 - ], - [ - 7.635398, - 47.587305 - ], - [ - 7.6348633, - 47.5867669 - ], - [ - 7.6341024, - 47.5858576 - ], - [ - 7.6280205, - 47.581365 - ], - [ - 7.6264356, - 47.5804007 - ], - [ - 7.625006, - 47.5796143 - ], - [ - 7.6245449, - 47.5794159 - ], - [ - 7.62395, - 47.5791597 - ], - [ - 7.6223873, - 47.5783561 - ], - [ - 7.6191343, - 47.5768697 - ], - [ - 7.6167075, - 47.5776795 - ], - [ - 7.6149736, - 47.5779929 - ], - [ - 7.613204, - 47.5781561 - ], - [ - 7.6094106, - 47.5781807 - ], - [ - 7.604882, - 47.5778737 - ], - [ - 7.6048883, - 47.5779017 - ], - [ - 7.6052433, - 47.5794848 - ], - [ - 7.6053326, - 47.5798829 - ], - [ - 7.604762, - 47.5804041 - ], - [ - 7.6047115, - 47.5811768 - ], - [ - 7.6046639, - 47.581201 - ], - [ - 7.6046233, - 47.5812217 - ], - [ - 7.6045335, - 47.5812704 - ], - [ - 7.6045173, - 47.5812792 - ], - [ - 7.6044627, - 47.581294 - ], - [ - 7.6044323, - 47.581297 - ], - [ - 7.6043491, - 47.581305 - ], - [ - 7.604305, - 47.5813093 - ], - [ - 7.6041536, - 47.581324 - ], - [ - 7.6040542, - 47.5813337 - ], - [ - 7.6045798, - 47.5828096 - ], - [ - 7.6048159, - 47.5849295 - ], - [ - 7.6025062, - 47.5859143 - ], - [ - 7.6022084, - 47.5860479 - ], - [ - 7.6020621, - 47.5861063 - ], - [ - 7.6020111, - 47.5861254 - ], - [ - 7.5984622, - 47.5876386 - ], - [ - 7.5939634, - 47.5887732 - ], - [ - 7.5932464, - 47.5889545 - ], - [ - 7.5931946, - 47.5889673 - ], - [ - 7.5931649, - 47.5889746 - ], - [ - 7.5931203, - 47.5889846 - ], - [ - 7.5890388, - 47.5898969 - ], - [ - 7.5882481, - 47.5885161 - ], - [ - 7.586964, - 47.5865465 - ], - [ - 7.5857191, - 47.5840853 - ], - [ - 7.5847329, - 47.5808519 - ], - [ - 7.5843906, - 47.5785769 - ], - [ - 7.5846534, - 47.5755163 - ], - [ - 7.578852, - 47.5766638 - ], - [ - 7.577513, - 47.5765468 - ], - [ - 7.5763967, - 47.5764492 - ], - [ - 7.5752663, - 47.5761289 - ], - [ - 7.5731353, - 47.5766938 - ], - [ - 7.5721192, - 47.5769631 - ], - [ - 7.5719434, - 47.5770082 - ], - [ - 7.5716273, - 47.5771012 - ], - [ - 7.5691231, - 47.5774024 - ], - [ - 7.5685402, - 47.5774607 - ], - [ - 7.5665034, - 47.5776581 - ], - [ - 7.5654501, - 47.576209 - ], - [ - 7.556895, - 47.5724666 - ], - [ - 7.5564665, - 47.5713866 - ], - [ - 7.5593479, - 47.5693783 - ], - [ - 7.5582775, - 47.567236 - ], - [ - 7.5573303, - 47.5651011 - ], - [ - 7.5573002, - 47.5650334 - ], - [ - 7.5560222, - 47.5647134 - ], - [ - 7.5546583, - 47.5643681 + 7.6713752, + 47.5952248 ] ] ], diff --git a/dist/locales/en.json b/dist/locales/en.json index 3b347271d..cac44a343 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -361,7 +361,9 @@ "accuracy": "Accuracy", "unknown": "Unknown", "show_tiles": "Show Tiles", - "hide_tiles": "Hide Tiles" + "hide_tiles": "Hide Tiles", + "show_vintage": "Show Vintage", + "hide_vintage": "Hide Vintage" }, "history": { "key": "H", @@ -5828,6 +5830,13 @@ "description": "Premium DigitalGlobe satellite imagery.", "name": "DigitalGlobe Premium Imagery" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Premium Imagery Vintage" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Terms & Feedback" @@ -5835,6 +5844,13 @@ "description": "Standard DigitalGlobe satellite imagery.", "name": "DigitalGlobe Standard Imagery" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Standard Imagery Vintage" + }, "EsriWorldImagery": { "attribution": { "text": "Terms & Feedback" diff --git a/modules/renderer/background.js b/modules/renderer/background.js index bc14298e1..ba6946e3e 100644 --- a/modules/renderer/background.js +++ b/modules/renderer/background.js @@ -47,7 +47,7 @@ export function rendererBackground(context) { var b = background.baseLayerSource(), o = overlayLayers - .filter(function (d) { return !d.source().isLocatorOverlay(); }) + .filter(function (d) { return !d.source().isLocatorOverlay() && !d.source().isHidden(); }) .map(function (d) { return d.source().id; }) .join(','), meters = geoOffsetToMeters(b.offset()), @@ -86,7 +86,7 @@ export function rendererBackground(context) { var imageryUsed = [b.imageryUsed()]; overlayLayers - .filter(function (d) { return !d.source().isLocatorOverlay(); }) + .filter(function (d) { return !d.source().isLocatorOverlay() && !d.source().isHidden(); }) .forEach(function (d) { imageryUsed.push(d.source().imageryUsed()); }); var gpx = context.layers().layer('gpx'); diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index 8ad126faf..ec02a94f7 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -133,6 +133,13 @@ export function rendererBackgroundSource(data) { }; + /* hides a source from the list, but leaves it available for use */ + source.isHidden = function() { + return source.id === 'DigitalGlobe-Premium-vintage' || + source.id === 'DigitalGlobe-Standard-vintage'; + }; + + source.copyrightNotices = function() {}; diff --git a/modules/ui/background.js b/modules/ui/background.js index c7ada03d9..8f1ba2d2f 100644 --- a/modules/ui/background.js +++ b/modules/ui/background.js @@ -206,8 +206,8 @@ export function uiBackground(context) { function update() { - backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.overlay; }); - overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return d.overlay; }); + backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.isHidden() && !d.overlay; }); + overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return !d.isHidden() && d.overlay; }); selectLayer(); updateOffsetVal(); diff --git a/modules/ui/panels/background.js b/modules/ui/panels/background.js index 2b34e1096..dc1cc9ccf 100644 --- a/modules/ui/panels/background.js +++ b/modules/ui/panels/background.js @@ -20,8 +20,11 @@ export function uiPanelBackground(context) { var debouncedRedraw = _debounce(redraw, 250); function redraw(selection) { - if (currSourceName !== background.baseLayerSource().name()) { - currSourceName = background.baseLayerSource().name(); + var source = background.baseLayerSource(), + isDG = (source.id.match(/^DigitalGlobe/i) !== null); + + if (currSourceName !== source.name()) { + currSourceName = source.name(); metadata = {}; } @@ -36,6 +39,9 @@ export function uiPanelBackground(context) { .text(currSourceName); metadataKeys.forEach(function(k) { + // DigitalGlobe vintage is available in raster layers for now. + if (isDG && k === 'vintage') return; + list .append('li') .attr('class', 'background-info-list-' + k) @@ -48,11 +54,11 @@ export function uiPanelBackground(context) { debouncedGetMetadata(selection); - var toggle = context.getDebug('tile') ? 'hide_tiles' : 'show_tiles'; + var toggleTiles = context.getDebug('tile') ? 'hide_tiles' : 'show_tiles'; selection .append('a') - .text(t('info_panels.background.' + toggle)) + .text(t('info_panels.background.' + toggleTiles)) .attr('href', '#') .attr('class', 'button button-toggle-tiles') .on('click', function() { @@ -60,6 +66,34 @@ export function uiPanelBackground(context) { context.setDebug('tile', !context.getDebug('tile')); selection.call(redraw); }); + + if (isDG) { + var key = source.id + '-vintage'; + var sourceVintage = context.background().findSource(key); + var showsVintage = context.background().showsLayer(sourceVintage); + var toggleVintage = showsVintage ? 'hide_vintage' : 'show_vintage'; + selection + .append('a') + .text(t('info_panels.background.' + toggleVintage)) + .attr('href', '#') + .attr('class', 'button button-toggle-vintage') + .on('click', function() { + d3_event.preventDefault(); + context.background().toggleOverlayLayer(sourceVintage); + selection.call(redraw); + }); + } + + // disable if necessary + ['DigitalGlobe-Premium', 'DigitalGlobe-Standard'].forEach(function(layerId) { + if (source.id !== layerId) { + var key = layerId + '-vintage'; + var sourceVintage = context.background().findSource(key); + if (context.background().showsLayer(sourceVintage)) { + context.background().toggleOverlayLayer(sourceVintage); + } + } + }); } From 512ee67374e1598caa17cae674cb92a319b0dfd6 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 2 Nov 2017 14:53:32 -0400 Subject: [PATCH 025/159] Add power=switch preset (closes #4441) --- data/presets.yaml | 32 ++++++++++++++++++++++---- data/presets/fields.json | 32 ++++++++++++++++++++++---- data/presets/fields/cables.json | 6 +++++ data/presets/fields/devices.json | 2 +- data/presets/fields/phases.json | 2 +- data/presets/fields/switch.json | 13 +++++++++++ data/presets/fields/transformer.json | 2 +- data/presets/fields/voltage.json | 5 ++++ data/presets/fields/windings.json | 2 +- data/presets/presets.json | 20 ++++++++++++++++ data/presets/presets/power/switch.json | 20 ++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 28 ++++++++++++++++++---- 13 files changed, 152 insertions(+), 16 deletions(-) create mode 100644 data/presets/fields/cables.json create mode 100644 data/presets/fields/switch.json create mode 100644 data/presets/fields/voltage.json create mode 100644 data/presets/presets/power/switch.json diff --git a/data/presets.yaml b/data/presets.yaml index fbb7bb03f..4e855290e 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -261,6 +261,11 @@ en: bunker_type: # bunker_type=* label: Type + cables: + # cables=* + label: Cables + # cables field placeholder + placeholder: '1, 2, 3...' camera/direction: # 'camera:direction=*' label: Direction (Degrees Clockwise) @@ -452,7 +457,7 @@ en: label: Description devices: # devices=* - label: Number of Devices + label: Devices # devices field placeholder placeholder: '1, 2, 3...' diaper: @@ -990,7 +995,7 @@ en: label: Payment Types phases: # phases=* - label: Number of Phases + label: Phases # phases field placeholder placeholder: '1, 2, 3...' phone: @@ -1372,6 +1377,18 @@ en: surveillance/zone: # 'surveillance:zone=*' label: Surveillance Zone + switch: + # switch=* + label: Type + options: + # switch=circuit_breaker + circuit_breaker: Circuit Breaker + # switch=disconnector + disconnector: Disconnector + # switch=earthing + earthing: Earthing + # switch=mechanical + mechanical: Mechanical tactile_paving: # tactile_paving=* label: Tactile Paving @@ -1464,7 +1481,7 @@ en: placeholder: 'Excellent, Good, Bad...' transformer: # transformer=* - label: Type of Transformer + label: Type options: # transformer=auto auto: Autotransformer @@ -1523,6 +1540,9 @@ en: shield: Shield # 'volcano:type=stratovolcano' stratovolcano: Stratovolcano + voltage: + # voltage=* + label: Voltage voltage/primary: # 'voltage:primary=*' label: Primary Voltage @@ -1563,7 +1583,7 @@ en: label: Wikipedia windings: # windings=* - label: Number of Windings + label: Windings # windings field placeholder placeholder: '1, 2, 3...' windings/configuration: @@ -4351,6 +4371,10 @@ en: # power=substation name: Substation terms: '' + power/switch: + # power=switch + name: Power Switch + terms: '' power/tower: # power=tower name: High-Voltage Tower diff --git a/data/presets/fields.json b/data/presets/fields.json index 53191bea8..0b957ac05 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -349,6 +349,12 @@ "type": "combo", "label": "Type" }, + "cables": { + "key": "cables", + "type": "number", + "label": "Cables", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "key": "camera:direction", "type": "number", @@ -597,7 +603,7 @@ "devices": { "key": "devices", "type": "number", - "label": "Number of Devices", + "label": "Devices", "placeholder": "1, 2, 3..." }, "diaper": { @@ -1335,7 +1341,7 @@ "phases": { "key": "phases", "type": "number", - "label": "Number of Phases", + "label": "Phases", "placeholder": "1, 2, 3..." }, "phone": { @@ -1882,6 +1888,19 @@ "type": "combo", "label": "Surveillance Zone" }, + "switch": { + "key": "switch", + "type": "combo", + "label": "Type", + "strings": { + "options": { + "mechanical": "Mechanical", + "circuit_breaker": "Circuit Breaker", + "disconnector": "Disconnector", + "earthing": "Earthing" + } + } + }, "tactile_paving": { "key": "tactile_paving", "type": "check", @@ -1996,7 +2015,7 @@ "transformer": { "key": "transformer", "type": "combo", - "label": "Type of Transformer", + "label": "Type", "strings": { "options": { "distribution": "Distribution", @@ -2062,6 +2081,11 @@ } } }, + "voltage": { + "key": "voltage", + "type": "combo", + "label": "Voltage" + }, "voltage/primary": { "key": "voltage:primary", "type": "combo", @@ -2141,7 +2165,7 @@ "windings": { "key": "windings", "type": "number", - "label": "Number of Windings", + "label": "Windings", "placeholder": "1, 2, 3..." }, "windings/configuration": { diff --git a/data/presets/fields/cables.json b/data/presets/fields/cables.json new file mode 100644 index 000000000..f6b18eb8a --- /dev/null +++ b/data/presets/fields/cables.json @@ -0,0 +1,6 @@ +{ + "key": "cables", + "type": "number", + "label": "Cables", + "placeholder": "1, 2, 3..." +} diff --git a/data/presets/fields/devices.json b/data/presets/fields/devices.json index d2f35f22e..55d36db74 100644 --- a/data/presets/fields/devices.json +++ b/data/presets/fields/devices.json @@ -1,6 +1,6 @@ { "key": "devices", "type": "number", - "label": "Number of Devices", + "label": "Devices", "placeholder": "1, 2, 3..." } diff --git a/data/presets/fields/phases.json b/data/presets/fields/phases.json index 5b32604d5..5fa9aac95 100644 --- a/data/presets/fields/phases.json +++ b/data/presets/fields/phases.json @@ -1,6 +1,6 @@ { "key": "phases", "type": "number", - "label": "Number of Phases", + "label": "Phases", "placeholder": "1, 2, 3..." } diff --git a/data/presets/fields/switch.json b/data/presets/fields/switch.json new file mode 100644 index 000000000..c17d9b75c --- /dev/null +++ b/data/presets/fields/switch.json @@ -0,0 +1,13 @@ +{ + "key": "switch", + "type": "combo", + "label": "Type", + "strings": { + "options": { + "mechanical": "Mechanical", + "circuit_breaker": "Circuit Breaker", + "disconnector": "Disconnector", + "earthing": "Earthing" + } + } +} diff --git a/data/presets/fields/transformer.json b/data/presets/fields/transformer.json index e811eb2a2..0c3720ed6 100644 --- a/data/presets/fields/transformer.json +++ b/data/presets/fields/transformer.json @@ -1,7 +1,7 @@ { "key": "transformer", "type": "combo", - "label": "Type of Transformer", + "label": "Type", "strings": { "options": { "distribution": "Distribution", diff --git a/data/presets/fields/voltage.json b/data/presets/fields/voltage.json new file mode 100644 index 000000000..d297c9371 --- /dev/null +++ b/data/presets/fields/voltage.json @@ -0,0 +1,5 @@ +{ + "key": "voltage", + "type": "combo", + "label": "Voltage" +} diff --git a/data/presets/fields/windings.json b/data/presets/fields/windings.json index 2c123b0a7..106e67857 100644 --- a/data/presets/fields/windings.json +++ b/data/presets/fields/windings.json @@ -1,6 +1,6 @@ { "key": "windings", "type": "number", - "label": "Number of Windings", + "label": "Windings", "placeholder": "1, 2, 3..." } diff --git a/data/presets/presets.json b/data/presets/presets.json index 827891199..791011c30 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -12886,6 +12886,26 @@ }, "name": "Substation" }, + "power/switch": { + "icon": "poi-power", + "fields": [ + "switch", + "location", + "cables", + "voltage", + "operator", + "ref" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "power": "switch" + }, + "name": "Power Switch" + }, "power/tower": { "geometry": [ "vertex" diff --git a/data/presets/presets/power/switch.json b/data/presets/presets/power/switch.json new file mode 100644 index 000000000..138cfee1e --- /dev/null +++ b/data/presets/presets/power/switch.json @@ -0,0 +1,20 @@ +{ + "icon": "poi-power", + "fields": [ + "switch", + "location", + "cables", + "voltage", + "operator", + "ref" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "power": "switch" + }, + "name": "Power Switch" +} diff --git a/data/taginfo.json b/data/taginfo.json index 8555c538e..1935f3690 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2464,6 +2464,10 @@ "key": "power", "value": "substation" }, + { + "key": "power", + "value": "switch" + }, { "key": "power", "value": "tower" diff --git a/dist/locales/en.json b/dist/locales/en.json index cac44a343..49cda42a7 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1309,6 +1309,10 @@ "bunker_type": { "label": "Type" }, + "cables": { + "label": "Cables", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direction (Degrees Clockwise)", "placeholder": "45, 90, 180, 270" @@ -1475,7 +1479,7 @@ "label": "Description" }, "devices": { - "label": "Number of Devices", + "label": "Devices", "placeholder": "1, 2, 3..." }, "diaper": { @@ -1924,7 +1928,7 @@ "label": "Payment Types" }, "phases": { - "label": "Number of Phases", + "label": "Phases", "placeholder": "1, 2, 3..." }, "phone": { @@ -2246,6 +2250,15 @@ "surveillance/zone": { "label": "Surveillance Zone" }, + "switch": { + "label": "Type", + "options": { + "mechanical": "Mechanical", + "circuit_breaker": "Circuit Breaker", + "disconnector": "Disconnector", + "earthing": "Earthing" + } + }, "tactile_paving": { "label": "Tactile Paving" }, @@ -2319,7 +2332,7 @@ } }, "transformer": { - "label": "Type of Transformer", + "label": "Type", "options": { "distribution": "Distribution", "generator": "Generator", @@ -2365,6 +2378,9 @@ "scoria": "Scoria" } }, + "voltage": { + "label": "Voltage" + }, "voltage/primary": { "label": "Primary Voltage" }, @@ -2403,7 +2419,7 @@ "label": "Wikipedia" }, "windings": { - "label": "Number of Windings", + "label": "Windings", "placeholder": "1, 2, 3..." }, "windings/configuration": { @@ -4904,6 +4920,10 @@ "name": "Substation", "terms": "" }, + "power/switch": { + "name": "Power Switch", + "terms": "" + }, "power/tower": { "name": "High-Voltage Tower", "terms": "" From 3627eaab1615fc27041bb30763f09be619e6fa84 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 2 Nov 2017 15:14:55 -0400 Subject: [PATCH 026/159] Add some more fields to power presets (ref, operator, voltage) --- data/presets/presets.json | 40 +++++++++++++++---- data/presets/presets/power/_sub_station.json | 4 +- data/presets/presets/power/generator.json | 3 +- .../power/generator/source_nuclear.json | 3 +- .../presets/power/generator/source_wind.json | 3 +- data/presets/presets/power/line.json | 6 +++ data/presets/presets/power/minor_line.json | 8 +++- data/presets/presets/power/pole.json | 5 ++- data/presets/presets/power/substation.json | 3 +- data/presets/presets/power/switch.json | 2 +- data/presets/presets/power/tower.json | 5 ++- data/presets/presets/power/transformer.json | 4 +- 12 files changed, 69 insertions(+), 17 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 791011c30..3ec4bcb95 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -12699,10 +12699,12 @@ "matchScore": 0.1 }, "power/sub_station": { + "icon": "poi-power", "fields": [ "substation", "operator", - "building" + "building", + "ref" ], "geometry": [ "point", @@ -12725,7 +12727,8 @@ "generator/source", "generator/method", "generator/type", - "generator/output/electricity" + "generator/output/electricity", + "ref" ], "geometry": [ "point", @@ -12750,7 +12753,8 @@ "generator/source", "generator/method", "generator/type", - "generator/output/electricity" + "generator/output/electricity", + "ref" ], "geometry": [ "point", @@ -12783,7 +12787,8 @@ "generator/method", "generator/type", "generator/output/electricity", - "height" + "height", + "ref" ], "geometry": [ "point", @@ -12809,6 +12814,12 @@ }, "power/line": { "icon": "power-line", + "fields": [ + "name", + "operator", + "voltage", + "ref" + ], "geometry": [ "line" ], @@ -12819,6 +12830,12 @@ }, "power/minor_line": { "icon": "power-line", + "fields": [ + "name", + "operator", + "voltage", + "ref" + ], "geometry": [ "line" ], @@ -12862,6 +12879,9 @@ "name": "Power Station Grounds" }, "power/pole": { + "fields": [ + "ref" + ], "geometry": [ "vertex" ], @@ -12875,7 +12895,8 @@ "fields": [ "substation", "operator", - "building" + "building", + "ref" ], "geometry": [ "point", @@ -12890,10 +12911,10 @@ "icon": "poi-power", "fields": [ "switch", + "operator", "location", "cables", "voltage", - "operator", "ref" ], "geometry": [ @@ -12907,6 +12928,9 @@ "name": "Power Switch" }, "power/tower": { + "fields": [ + "ref" + ], "geometry": [ "vertex" ], @@ -12919,6 +12943,7 @@ "icon": "poi-power", "fields": [ "transformer", + "operator", "location", "rating", "devices", @@ -12928,7 +12953,8 @@ "voltage/secondary", "voltage/tertiary", "windings", - "windings/configuration" + "windings/configuration", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/_sub_station.json b/data/presets/presets/power/_sub_station.json index 05c8f1f2a..6f75de3f5 100644 --- a/data/presets/presets/power/_sub_station.json +++ b/data/presets/presets/power/_sub_station.json @@ -1,8 +1,10 @@ { + "icon": "poi-power", "fields": [ "substation", "operator", - "building" + "building", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/generator.json b/data/presets/presets/power/generator.json index 1ff06547e..f52fef86d 100644 --- a/data/presets/presets/power/generator.json +++ b/data/presets/presets/power/generator.json @@ -5,7 +5,8 @@ "generator/source", "generator/method", "generator/type", - "generator/output/electricity" + "generator/output/electricity", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/generator/source_nuclear.json b/data/presets/presets/power/generator/source_nuclear.json index 753a3eda4..8d83e6f6c 100644 --- a/data/presets/presets/power/generator/source_nuclear.json +++ b/data/presets/presets/power/generator/source_nuclear.json @@ -5,7 +5,8 @@ "generator/source", "generator/method", "generator/type", - "generator/output/electricity" + "generator/output/electricity", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/generator/source_wind.json b/data/presets/presets/power/generator/source_wind.json index 1c62b7e1b..4cf6ca95d 100644 --- a/data/presets/presets/power/generator/source_wind.json +++ b/data/presets/presets/power/generator/source_wind.json @@ -6,7 +6,8 @@ "generator/method", "generator/type", "generator/output/electricity", - "height" + "height", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/line.json b/data/presets/presets/power/line.json index c446480e0..eded63610 100644 --- a/data/presets/presets/power/line.json +++ b/data/presets/presets/power/line.json @@ -1,5 +1,11 @@ { "icon": "power-line", + "fields": [ + "name", + "operator", + "voltage", + "ref" + ], "geometry": [ "line" ], diff --git a/data/presets/presets/power/minor_line.json b/data/presets/presets/power/minor_line.json index 9ca424a31..bcf793508 100644 --- a/data/presets/presets/power/minor_line.json +++ b/data/presets/presets/power/minor_line.json @@ -1,6 +1,12 @@ { "icon": "power-line", - "geometry": [ + "fields": [ + "name", + "operator", + "voltage", + "ref" + ], + "geometry": [ "line" ], "tags": { diff --git a/data/presets/presets/power/pole.json b/data/presets/presets/power/pole.json index 129f6c11d..c5fdc58b2 100644 --- a/data/presets/presets/power/pole.json +++ b/data/presets/presets/power/pole.json @@ -1,4 +1,7 @@ { + "fields": [ + "ref" + ], "geometry": [ "vertex" ], @@ -6,4 +9,4 @@ "power": "pole" }, "name": "Power Pole" -} \ No newline at end of file +} diff --git a/data/presets/presets/power/substation.json b/data/presets/presets/power/substation.json index 451a9b4c6..eb7544814 100644 --- a/data/presets/presets/power/substation.json +++ b/data/presets/presets/power/substation.json @@ -3,7 +3,8 @@ "fields": [ "substation", "operator", - "building" + "building", + "ref" ], "geometry": [ "point", diff --git a/data/presets/presets/power/switch.json b/data/presets/presets/power/switch.json index 138cfee1e..734b18f48 100644 --- a/data/presets/presets/power/switch.json +++ b/data/presets/presets/power/switch.json @@ -2,10 +2,10 @@ "icon": "poi-power", "fields": [ "switch", + "operator", "location", "cables", "voltage", - "operator", "ref" ], "geometry": [ diff --git a/data/presets/presets/power/tower.json b/data/presets/presets/power/tower.json index e745313c6..09ce2afe4 100644 --- a/data/presets/presets/power/tower.json +++ b/data/presets/presets/power/tower.json @@ -1,4 +1,7 @@ { + "fields": [ + "ref" + ], "geometry": [ "vertex" ], @@ -6,4 +9,4 @@ "power": "tower" }, "name": "High-Voltage Tower" -} \ No newline at end of file +} diff --git a/data/presets/presets/power/transformer.json b/data/presets/presets/power/transformer.json index f1af8a2ec..a5a851135 100644 --- a/data/presets/presets/power/transformer.json +++ b/data/presets/presets/power/transformer.json @@ -2,6 +2,7 @@ "icon": "poi-power", "fields": [ "transformer", + "operator", "location", "rating", "devices", @@ -11,7 +12,8 @@ "voltage/secondary", "voltage/tertiary", "windings", - "windings/configuration" + "windings/configuration", + "ref" ], "geometry": [ "point", From 00b30e29f05ca0a39e73177670e798c5058b25d9 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 2 Nov 2017 22:04:47 -0400 Subject: [PATCH 027/159] WIP: Add OpenStreetCam support todo: Need to figure out API issue with bbox, then imageviewer --- css/{60_mapillary.css => 60_photos.css} | 40 +++ data/core.yaml | 5 + dist/locales/en.json | 7 + modules/renderer/background.js | 5 + modules/services/index.js | 4 +- modules/services/openstreetcam.js | 356 ++++++++++++++++++++++++ modules/svg/index.js | 1 + modules/svg/layers.js | 2 + modules/svg/openstreetcam_images.js | 189 +++++++++++++ modules/ui/map_data.js | 126 +++------ test/spec/svg/layers.js | 5 +- 11 files changed, 650 insertions(+), 90 deletions(-) rename css/{60_mapillary.css => 60_photos.css} (73%) create mode 100644 modules/services/openstreetcam.js create mode 100644 modules/svg/openstreetcam_images.js diff --git a/css/60_mapillary.css b/css/60_photos.css similarity index 73% rename from css/60_mapillary.css rename to css/60_photos.css index a3067ea7e..f1c81e420 100644 --- a/css/60_mapillary.css +++ b/css/60_photos.css @@ -67,6 +67,46 @@ } +/* OpenStreetCam Image Layer */ + +.layer-openstreetcam-images { + pointer-events: none; +} + +.layer-openstreetcam-images .viewfield-group { + pointer-events: visible; + cursor: pointer; +} + +.layer-openstreetcam-images .viewfield-group * { + stroke-width: 1; + stroke: #444; + fill: #ffc600; + z-index: 50; +} + +.layer-openstreetcam-images .viewfield-group:hover * { + stroke-width: 1; + stroke: #333; + fill: #ff9900; + z-index: 60; +} + +.layer-openstreetcam-images .viewfield-group.selected * { + stroke-width: 2; + stroke: #222; + fill: #ff5800; + z-index: 60; +} + +.layer-openstreetcam-images .viewfield-group:hover path.viewfield, +.layer-openstreetcam-images .viewfield-group.selected path.viewfield, +.layer-openstreetcam-images .viewfield-group path.viewfield { + stroke-width: 0; + fill-opacity: 0.6; +} + + /* Mapillary viewer */ #mly .domRenderer .TagSymbol { font-size: 10px; diff --git a/data/core.yaml b/data/core.yaml index a55aa2fff..7d41e40ae 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -546,6 +546,11 @@ en: title: "Traffic Sign Overlay (Mapillary)" mapillary: view_on_mapillary: "View this image on Mapillary" + openstreetcam_images: + tooltip: "Street-level photos from OpenStreetCam" + title: "Photo Overlay (OpenStreetCam)" + openstreetcam: + view_on_openstreetcam: "View this image on OpenStreetCam" help: title: "Help" key: H diff --git a/dist/locales/en.json b/dist/locales/en.json index 49cda42a7..4d4b92219 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -670,6 +670,13 @@ "mapillary": { "view_on_mapillary": "View this image on Mapillary" }, + "openstreetcam_images": { + "tooltip": "Street-level photos from OpenStreetCam", + "title": "Photo Overlay (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "View this image on OpenStreetCam" + }, "help": { "title": "Help", "key": "H", diff --git a/modules/renderer/background.js b/modules/renderer/background.js index ba6946e3e..a6d72909b 100644 --- a/modules/renderer/background.js +++ b/modules/renderer/background.js @@ -104,6 +104,11 @@ export function rendererBackground(context) { imageryUsed.push('Mapillary Signs'); } + var openstreetcam_images = context.layers().layer('openstreetcam-images'); + if (openstreetcam_images && openstreetcam_images.enabled()) { + imageryUsed.push('OpenStreetCam Images'); + } + context.history().imageryUsed(imageryUsed); }; diff --git a/modules/services/index.js b/modules/services/index.js index f893714ab..d5ab2d365 100644 --- a/modules/services/index.js +++ b/modules/services/index.js @@ -1,13 +1,15 @@ import serviceMapillary from './mapillary'; import serviceNominatim from './nominatim'; +import serviceOpenstreetcam from './openstreetcam'; import serviceOsm from './osm'; import serviceTaginfo from './taginfo'; import serviceWikidata from './wikidata'; import serviceWikipedia from './wikipedia'; export var services = { - mapillary: serviceMapillary, geocoder: serviceNominatim, + mapillary: serviceMapillary, + openstreetcam: serviceOpenstreetcam, osm: serviceOsm, taginfo: serviceTaginfo, wikidata: serviceWikidata, diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js new file mode 100644 index 000000000..eb32ade74 --- /dev/null +++ b/modules/services/openstreetcam.js @@ -0,0 +1,356 @@ +import _filter from 'lodash-es/filter'; +import _find from 'lodash-es/find'; +import _flatten from 'lodash-es/flatten'; +import _forEach from 'lodash-es/forEach'; +import _map from 'lodash-es/map'; +import _some from 'lodash-es/some'; + +import { range as d3_range } from 'd3-array'; +import { dispatch as d3_dispatch } from 'd3-dispatch'; +import { request as d3_request } from 'd3-request'; + +import { + select as d3_select, + selectAll as d3_selectAll +} from 'd3-selection'; + +import rbush from 'rbush'; + +import { d3geoTile as d3_geoTile } from '../lib/d3.geo.tile'; +import { geoExtent } from '../geo'; +import { utilQsString, utilRebind } from '../util'; + + +var apibase = 'http://openstreetcam.org', + maxResults = 1000, + tileZoom = 14, + dispatch = d3_dispatch('loadedImages'), + openstreetcamCache, + openstreetcamImage; + + +function abortRequest(i) { + i.abort(); +} + + +function nearNullIsland(x, y, z) { + if (z >= 7) { + var center = Math.pow(2, z - 1), + width = Math.pow(2, z - 6), + min = center - (width / 2), + max = center + (width / 2) - 1; + return x >= min && x <= max && y >= min && y <= max; + } + return false; +} + + +function maxPageAtZoom(z) { + if (z < 15) return 2; + if (z === 15) return 5; + if (z === 16) return 10; + if (z === 17) return 20; + if (z === 18) return 40; + if (z > 18) return 80; +} + + +function getTiles(projection) { + var s = projection.scale() * 2 * Math.PI, + z = Math.max(Math.log(s) / Math.log(2) - 8, 0), + ts = 256 * Math.pow(2, z - tileZoom), + origin = [ + s / 2 - projection.translate()[0], + s / 2 - projection.translate()[1]]; + + return d3_geoTile() + .scaleExtent([tileZoom, tileZoom]) + .scale(s) + .size(projection.clipExtent()[1]) + .translate(projection.translate())() + .map(function(tile) { + var x = tile[0] * ts - origin[0], + y = tile[1] * ts - origin[1]; + + return { + id: tile.toString(), + xyz: tile, + extent: geoExtent( + projection.invert([x, y + ts]), + projection.invert([x + ts, y]) + ) + }; + }); +} + + +function loadTiles(which, url, projection) { + var s = projection.scale() * 2 * Math.PI, + currZoom = Math.floor(Math.max(Math.log(s) / Math.log(2) - 8, 0)); + + var tiles = getTiles(projection).filter(function(t) { + return !nearNullIsland(t.xyz[0], t.xyz[1], t.xyz[2]); + }); + + _filter(which.inflight, function(v, k) { + var wanted = _find(tiles, function(tile) { return k === (tile.id + ',0'); }); + if (!wanted) delete which.inflight[k]; + return !wanted; + }).map(abortRequest); + + tiles.forEach(function(tile) { + loadNextTilePage(which, currZoom, url, tile); + }); +} + + +function loadNextTilePage(which, currZoom, url, tile) { + var cache = openstreetcamCache[which]; + var bbox = tile.extent.bbox(); + var maxPages = maxPageAtZoom(currZoom); + var nextPage = cache.nextPage[tile.id] || 1; + var params = utilQsString({ + ipp: maxResults, + page: nextPage, + // client_id: clientId, + bbTopLeft: [bbox.maxY, bbox.minX].join(','), + bbBottomRight: [bbox.minY, bbox.maxX].join(',') + }, true); + + if (nextPage > maxPages) return; + + var id = tile.id + ',' + String(nextPage); + if (cache.loaded[id] || cache.inflight[id]) return; + + cache.inflight[id] = d3_request(url) + .mimeType('application/json') + .post(params, function(err, data) { + cache.loaded[id] = true; + delete cache.inflight[id]; + if (err || !data.currentPageItems || !data.currentPageItems.length) return; + + var features = data.currentPageItems.map(function(item) { + var loc = [+item.lng, +item.lat], + d; + + if (which === 'images') { + d = { + loc: loc, + key: item.id, + ca: +item.heading, + captured_at: item.date_added, + }; + } + return { + minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1], data: d + }; + }); + + cache.rtree.load(features); + + if (which === 'images') { + dispatch.call('loadedImages'); + } + + if (data.currentPageItems.length === maxResults) { // more pages to load + cache.nextPage[tile.id] = nextPage + 1; + loadNextTilePage(which, currZoom, url, tile); + } else { + cache.nextPage[tile.id] = Infinity; // no more pages to load + } + }); +} + + +// partition viewport into `psize` x `psize` regions +function partitionViewport(psize, projection) { + var dimensions = projection.clipExtent()[1]; + psize = psize || 16; + var cols = d3_range(0, dimensions[0], psize), + rows = d3_range(0, dimensions[1], psize), + partitions = []; + + rows.forEach(function(y) { + cols.forEach(function(x) { + var min = [x, y + psize], + max = [x + psize, y]; + partitions.push( + geoExtent(projection.invert(min), projection.invert(max))); + }); + }); + + return partitions; +} + + +// no more than `limit` results per partition. +function searchLimited(psize, limit, projection, rtree) { + limit = limit || 3; + + var partitions = partitionViewport(psize, projection); + var results; + + results = _flatten(_map(partitions, function(extent) { + return rtree.search(extent.bbox()) + .slice(0, limit) + .map(function(d) { return d.data; }); + })); + return results; +} + + + +export default { + + init: function() { + if (!openstreetcamCache) { + this.reset(); + } + + this.event = utilRebind(this, dispatch, 'on'); + }, + + reset: function() { + var cache = openstreetcamCache; + + if (cache) { + if (cache.images && cache.images.inflight) { + _forEach(cache.images.inflight, abortRequest); + } + } + + openstreetcamCache = { + images: { inflight: {}, loaded: {}, nextPage: {}, rtree: rbush() } + }; + + openstreetcamImage = null; + }, + + + images: function(projection) { + var psize = 16, limit = 3; + return searchLimited(psize, limit, projection, openstreetcamCache.images.rtree); + }, + + loadImages: function(projection) { + var url = apibase + '/1.0/list/nearby-photos/'; + loadTiles('images', url, projection); + }, + + + loadViewer: function(context) { + // var that = this; + // var wrap = d3_select('#content').selectAll('.openstreetcam-wrap') + // .data([0]); + + // var enter = wrap.enter() + // .append('div') + // .attr('class', 'openstreetcam-wrap') + // .classed('al', true) // 'al'=left, 'ar'=right + // .classed('hidden', true); + + // enter + // .append('button') + // .attr('class', 'thumb-hide') + // .on('click', function () { that.hideViewer(); }) + // .append('div') + // .call(svgIcon('#icon-close')); + + // enter + // .append('div') + // .attr('id', 'mly') + // .attr('class', 'mly-wrapper') + // .classed('active', false); + }, + + + showViewer: function() { + // d3_select('#content') + // .selectAll('.openstreetcam-wrap') + // .classed('hidden', false) + // .selectAll('.mly-wrapper') + // .classed('active', true); + + return this; + }, + + + hideViewer: function() { + // d3_select('#content') + // .selectAll('.openstreetcam-wrap') + // .classed('hidden', true) + // .selectAll('.mly-wrapper') + // .classed('active', false); + + // d3_selectAll('.layer-openstreetcam-images .viewfield-group') + // .classed('selected', false); + + openstreetcamImage = null; + return this; + }, + + + updateViewer: function(imageKey, context) { + if (!imageKey) return; + + // if (!openstreetcamViewer) { + // this.initViewer(imageKey, context); + // } else { + // openstreetcamViewer.moveToKey(imageKey); + // } + + return this; + }, + + + selectedImage: function(imageKey) { + if (!arguments.length) return openstreetcamImage; + openstreetcamImage = imageKey; + + // d3_selectAll('.layer-openstreetcam-images .viewfield-group') + // .classed('selected', function(d) { + // return d.key === imageKey; + // }); + + // if (!imageKey) return this; + + + // function localeTimestamp(s) { + // if (!s) return null; + // var d = new Date(s); + // if (isNaN(d.getTime())) return null; + // return d.toLocaleString(undefined, { timeZone: 'UTC' }); + // } + + // var selected = d3_selectAll('.layer-openstreetcam-images .viewfield-group.selected'); + // if (selected.empty()) return this; + + // var datum = selected.datum(); + // var timestamp = localeTimestamp(datum.captured_at); + // var attribution = d3_select('.openstreetcam-js-dom .Attribution'); + // var capturedAt = attribution.selectAll('.captured-at'); + // if (capturedAt.empty()) { + // attribution + // .append('span') + // .text('|'); + // capturedAt = attribution + // .append('span') + // .attr('class', 'captured-at'); + // } + // capturedAt + // .text(timestamp); + + // this.updateDetections(); + + return this; + }, + + + cache: function(_) { + if (!arguments.length) return openstreetcamCache; + openstreetcamCache = _; + return this; + } + +}; diff --git a/modules/svg/index.js b/modules/svg/index.js index 9b48ba93d..8f54f5a5e 100644 --- a/modules/svg/index.js +++ b/modules/svg/index.js @@ -10,6 +10,7 @@ export { svgMapillaryImages } from './mapillary_images.js'; export { svgMapillarySigns } from './mapillary_signs.js'; export { svgMidpoints } from './midpoints.js'; export { svgOneWaySegments } from './one_way_segments.js'; +export { svgOpenstreetcamImages } from './openstreetcam_images.js'; export { svgOsm } from './osm.js'; export { svgPath } from './path.js'; export { svgPointTransform } from './point_transform.js'; diff --git a/modules/svg/layers.js b/modules/svg/layers.js index b0f590410..08f92db18 100644 --- a/modules/svg/layers.js +++ b/modules/svg/layers.js @@ -10,6 +10,7 @@ import { svgDebug } from './debug'; import { svgGpx } from './gpx'; import { svgMapillaryImages } from './mapillary_images'; import { svgMapillarySigns } from './mapillary_signs'; +import { svgOpenstreetcamImages } from './openstreetcam_images'; import { svgOsm } from './osm'; import { utilRebind } from '../util/rebind'; import { utilGetDimensions, utilSetDimensions } from '../util/dimensions'; @@ -23,6 +24,7 @@ export function svgLayers(projection, context) { { id: 'gpx', layer: svgGpx(projection, context, dispatch) }, { id: 'mapillary-images', layer: svgMapillaryImages(projection, context, dispatch) }, { id: 'mapillary-signs', layer: svgMapillarySigns(projection, context, dispatch) }, + { id: 'openstreetcam-images', layer: svgOpenstreetcamImages(projection, context, dispatch) }, { id: 'debug', layer: svgDebug(projection, context, dispatch) } ]; diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js new file mode 100644 index 000000000..5087ee96d --- /dev/null +++ b/modules/svg/openstreetcam_images.js @@ -0,0 +1,189 @@ +import _throttle from 'lodash-es/throttle'; +import { select as d3_select } from 'd3-selection'; +import { svgPointTransform } from './point_transform'; +import { services } from '../services'; + + +export function svgOpenstreetcamImages(projection, context, dispatch) { + var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000), + minZoom = 12, + minViewfieldZoom = 17, + layer = d3_select(null), + _openstreetcam; + + + function init() { + if (svgOpenstreetcamImages.initialized) return; // run once + svgOpenstreetcamImages.enabled = false; + svgOpenstreetcamImages.initialized = true; + } + + + function getOpenstreetcam() { + if (services.openstreetcam && !_openstreetcam) { + _openstreetcam = services.openstreetcam; + _openstreetcam.event.on('loadedImages', throttledRedraw); + } else if (!services.openstreetcam && _openstreetcam) { + _openstreetcam = null; + } + + return _openstreetcam; + } + + + function showLayer() { + var openstreetcam = getOpenstreetcam(); + if (!openstreetcam) return; + + openstreetcam.loadViewer(context); + editOn(); + + layer + .style('opacity', 0) + .transition() + .duration(250) + .style('opacity', 1) + .on('end', function () { dispatch.call('change'); }); + } + + + function hideLayer() { + var openstreetcam = getOpenstreetcam(); + if (openstreetcam) { + openstreetcam.hideViewer(); + } + + throttledRedraw.cancel(); + + layer + .transition() + .duration(250) + .style('opacity', 0) + .on('end', editOff); + } + + + function editOn() { + layer.style('display', 'block'); + } + + + function editOff() { + layer.selectAll('.viewfield-group').remove(); + layer.style('display', 'none'); + } + + + function click(d) { + var openstreetcam = getOpenstreetcam(); + if (!openstreetcam) return; + + context.map().centerEase(d.loc); + + openstreetcam + .selectedImage(d.key, true) + .updateViewer(d.key, context) + .showViewer(); + } + + + function transform(d) { + var t = svgPointTransform(projection)(d); + if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; + return t; + } + + + function update() { + var openstreetcam = getOpenstreetcam(), + data = (openstreetcam ? openstreetcam.images(projection) : []), + imageKey = openstreetcam ? openstreetcam.selectedImage() : null; + + var markers = layer.selectAll('.viewfield-group') + .data(data, function(d) { return d.key; }); + + markers.exit() + .remove(); + + var enter = markers.enter() + .append('g') + .attr('class', 'viewfield-group') + .classed('selected', function(d) { return d.key === imageKey; }) + .on('click', click); + + markers = markers + .merge(enter) + .attr('transform', transform); + + + var viewfields = markers.selectAll('.viewfield') + .data(~~context.map().zoom() >= minViewfieldZoom ? [0] : []); + + viewfields.exit() + .remove(); + + viewfields.enter() + .append('path') + .attr('class', 'viewfield') + .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') + .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); + + markers.selectAll('circle') + .data([0]) + .enter() + .append('circle') + .attr('dx', '0') + .attr('dy', '0') + .attr('r', '6'); + } + + + function drawImages(selection) { + var enabled = svgOpenstreetcamImages.enabled, + openstreetcam = getOpenstreetcam(); + + layer = selection.selectAll('.layer-openstreetcam-images') + .data(openstreetcam ? [0] : []); + + layer.exit() + .remove(); + + layer = layer.enter() + .append('g') + .attr('class', 'layer-openstreetcam-images') + .style('display', enabled ? 'block' : 'none') + .merge(layer); + + if (enabled) { + if (openstreetcam && ~~context.map().zoom() >= minZoom) { + editOn(); + update(); + openstreetcam.loadImages(projection); + } else { + editOff(); + } + } + } + + + drawImages.enabled = function(_) { + if (!arguments.length) return svgOpenstreetcamImages.enabled; + svgOpenstreetcamImages.enabled = _; + if (svgOpenstreetcamImages.enabled) { + showLayer(); + } else { + hideLayer(); + } + dispatch.call('change'); + return this; + }; + + + drawImages.supported = function() { + return !!getOpenstreetcam(); + }; + + + init(); + return drawImages; +} diff --git a/modules/ui/map_data.js b/modules/ui/map_data.js index 12e676d0e..49a238ba3 100644 --- a/modules/ui/map_data.js +++ b/modules/ui/map_data.js @@ -80,113 +80,65 @@ export function uiMapData(context) { } - function clickMapillaryImages() { - toggleLayer('mapillary-images'); - if (!showsLayer('mapillary-images')) { - setLayer('mapillary-signs', false); + function drawPhotoItems(selection) { + var photoKeys = ['mapillary-images', 'mapillary-signs', 'openstreetcam-images']; + var photoLayers = layers.all().filter(function(obj) { return photoKeys.indexOf(obj.id) !== -1; }); + var data = photoLayers.filter(function(obj) { return obj.layer.supported(); }); + + function layerSupported(d) { + return d.layer && d.layer.supported(); + } + function layerEnabled(d) { + return layerSupported(d) && d.layer.enabled(); } - } - - function clickMapillarySigns() { - toggleLayer('mapillary-signs'); - } - - - function drawMapillaryItems(selection) { - var mapillaryImages = layers.layer('mapillary-images'), - mapillarySigns = layers.layer('mapillary-signs'), - supportsMapillaryImages = mapillaryImages && mapillaryImages.supported(), - supportsMapillarySigns = mapillarySigns && mapillarySigns.supported(), - showsMapillaryImages = supportsMapillaryImages && mapillaryImages.enabled(), - showsMapillarySigns = supportsMapillarySigns && mapillarySigns.enabled(); - - var mapillaryList = selection - .selectAll('.layer-list-mapillary') + var ul = selection + .selectAll('.layer-list-photos') .data([0]); - mapillaryList = mapillaryList.enter() + ul = ul.enter() .append('ul') - .attr('class', 'layer-list layer-list-mapillary') - .merge(mapillaryList); + .attr('class', 'layer-list layer-list-photos') + .merge(ul); + var li = ul.selectAll('.list-item-photos') + .data(data); - var mapillaryImageLayerItem = mapillaryList - .selectAll('.list-item-mapillary-images') - .data(supportsMapillaryImages ? [0] : []); - - mapillaryImageLayerItem.exit() + li.exit() .remove(); - var enterImages = mapillaryImageLayerItem.enter() + var liEnter = li.enter() .append('li') - .attr('class', 'list-item-mapillary-images'); + .attr('class', function(d) { return 'list-item-photos list-item-' + d.id; }); - var labelImages = enterImages + var labelEnter = liEnter .append('label') - .call(tooltip() - .title(t('mapillary_images.tooltip')) - .placement('top')); + .each(function(d) { + d3_select(this) + .call(tooltip() + .title(t(d.id.replace('-', '_') + '.tooltip')) + .placement('top') + ); + }); - labelImages + labelEnter .append('input') .attr('type', 'checkbox') - .on('change', clickMapillaryImages); + .on('change', function(d) { toggleLayer(d.id); }); - labelImages + labelEnter .append('span') - .text(t('mapillary_images.title')); + .text(function(d) { return t(d.id.replace('-', '_') + '.title'); }); - var mapillarySignLayerItem = mapillaryList - .selectAll('.list-item-mapillary-signs') - .data(supportsMapillarySigns ? [0] : []); + // Update + li = li + .merge(liEnter); - mapillarySignLayerItem.exit() - .remove(); - - var enterSigns = mapillarySignLayerItem.enter() - .append('li') - .attr('class', 'list-item-mapillary-signs'); - - var labelSigns = enterSigns - .append('label') - .call(tooltip() - .title(t('mapillary_signs.tooltip')) - .placement('top')); - - labelSigns - .append('input') - .attr('type', 'checkbox') - .on('change', clickMapillarySigns); - - labelSigns - .append('span') - .text(t('mapillary_signs.title')); - - - // Updates - mapillaryImageLayerItem = mapillaryImageLayerItem - .merge(enterImages); - - mapillaryImageLayerItem - .classed('active', showsMapillaryImages) + li + .classed('active', layerEnabled) .selectAll('input') - .property('checked', showsMapillaryImages); - - - mapillarySignLayerItem = mapillarySignLayerItem - .merge(enterSigns); - - mapillarySignLayerItem - .classed('active', showsMapillarySigns) - .selectAll('input') - .property('disabled', !showsMapillaryImages) - .property('checked', showsMapillarySigns); - - mapillarySignLayerItem - .selectAll('label') - .classed('deemphasize', !showsMapillaryImages); + .property('checked', layerEnabled); } @@ -377,7 +329,7 @@ export function uiMapData(context) { function update() { dataLayerContainer .call(drawOsmItem) - .call(drawMapillaryItems) + .call(drawPhotoItems) .call(drawGpxItem); fillList diff --git a/test/spec/svg/layers.js b/test/spec/svg/layers.js index ec7ca46ed..e3cb29a89 100644 --- a/test/spec/svg/layers.js +++ b/test/spec/svg/layers.js @@ -26,12 +26,13 @@ describe('iD.svgLayers', function () { it('creates default data layers', function () { container.call(iD.svgLayers(projection, context)); var nodes = container.selectAll('svg .data-layer').nodes(); - expect(nodes.length).to.eql(5); + expect(nodes.length).to.eql(6); expect(d3.select(nodes[0]).classed('data-layer-osm')).to.be.true; expect(d3.select(nodes[1]).classed('data-layer-gpx')).to.be.true; expect(d3.select(nodes[2]).classed('data-layer-mapillary-images')).to.be.true; expect(d3.select(nodes[3]).classed('data-layer-mapillary-signs')).to.be.true; - expect(d3.select(nodes[4]).classed('data-layer-debug')).to.be.true; + expect(d3.select(nodes[4]).classed('data-layer-openstreetcam-images')).to.be.true; + expect(d3.select(nodes[5]).classed('data-layer-debug')).to.be.true; }); }); From 6dd71ebf917696f31a593dbdabe80457cc0ef5c1 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 3 Nov 2017 16:48:18 -0400 Subject: [PATCH 028/159] Fix loading of images from OpenStreetCam API, add viewer \o/ --- css/60_photos.css | 66 ++++++++------- modules/services/mapillary.js | 59 +++++++------- modules/services/openstreetcam.js | 120 ++++++++++------------------ modules/svg/openstreetcam_images.js | 4 +- modules/ui/init.js | 25 +++++- 5 files changed, 124 insertions(+), 150 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index f1c81e420..c09f559fe 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -1,5 +1,36 @@ -/* Mapillary Image Layer */ +/* photo viewer div */ +#photoviewer { + position: absolute; + bottom: 30px; + width: 330px; + height: 250px; + padding: 5px; + background-color: #fff; +} +#photoviewer button.thumb-hide { + border-radius: 0; + padding: 5px; + position: absolute; + right: 0; + top: 0; + z-index: 500; +} + +.photo-wrapper, +.photo-wrapper img { + width: 100%; + height: 100%; +} + +/*#photoviewer.hide, +.photo-wrapper.hide { + visibility: hidden; + display: block; +} +*/ + +/* Mapillary Image Layer */ .layer-mapillary-images { pointer-events: none; } @@ -39,7 +70,6 @@ } /* Mapillary Sign Layer */ - .layer-mapillary-signs { pointer-events: none; } @@ -68,7 +98,6 @@ /* OpenStreetCam Image Layer */ - .layer-openstreetcam-images { pointer-events: none; } @@ -122,34 +151,3 @@ text-align: right; } -.mapillary-wrap { - position: absolute; - bottom: 30px; - width: 330px; - height: 250px; - padding: 5px; - background-color: #fff; -} - -.mapillary-wrap.hidden { - visibility: hidden; -} - -.mapillary-wrap button.thumb-hide { - border-radius: 0; - padding: 5px; - position: absolute; - right: 0; - top: 0; - z-index: 500; -} - -.mly-wrapper { - visibility: hidden; - width: 100%; - height: 100%; -} - -.mly-wrapper.active { - visibility: visible; -} diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index bc0c5d425..b9d3a5a61 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -24,7 +24,6 @@ import rbush from 'rbush'; import { d3geoTile as d3_geoTile } from '../lib/d3.geo.tile'; import { geoExtent } from '../geo'; -import { svgIcon } from '../svg'; import { utilDetect } from '../util/detect'; import { utilQsString, utilRebind } from '../util'; @@ -377,28 +376,14 @@ export default { loadViewer: function(context) { - var that = this; - var wrap = d3_select('#content').selectAll('.mapillary-wrap') - .data([0]); - - var enter = wrap.enter() - .append('div') - .attr('class', 'mapillary-wrap') - .classed('al', true) // 'al'=left, 'ar'=right - .classed('hidden', true); - - enter - .append('button') - .attr('class', 'thumb-hide') - .on('click', function () { that.hideViewer(); }) - .append('div') - .call(svgIcon('#icon-close')); - - enter + // add mly-wrapper for viewer-js + d3_select('#photoviewer').selectAll('.mly-wrapper') + .data([0]) + .enter() .append('div') .attr('id', 'mly') - .attr('class', 'mly-wrapper') - .classed('active', false); + .attr('class', 'photo-wrapper mly-wrapper') + .classed('hide', true); // load mapillary-viewercss d3_select('head').selectAll('#mapillary-viewercss') @@ -420,22 +405,32 @@ export default { showViewer: function() { - d3_select('#content') - .selectAll('.mapillary-wrap') - .classed('hidden', false) - .selectAll('.mly-wrapper') - .classed('active', true); + var wrap = d3_select('#photoviewer') + .classed('hide', false); + + var isHidden = wrap.selectAll('.photo-wrapper.mly-wrapper.hide').size(); + + if (isHidden) { + wrap + .selectAll('.photo-wrapper:not(.mly-wrapper)') + .classed('hide', true); + + wrap + .selectAll('.photo-wrapper.mly-wrapper') + .classed('hide', false); + + mapillaryViewer.resize(); + } return this; }, hideViewer: function() { - d3_select('#content') - .selectAll('.mapillary-wrap') - .classed('hidden', true) - .selectAll('.mly-wrapper') - .classed('active', false); + d3_select('#photoviewer') + .classed('hide', true) + .selectAll('.photo-wrapper') + .classed('hide', true); d3_selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') .classed('selected', false); @@ -514,7 +509,7 @@ export default { mapillaryClicks.push(imageKey); } - d3_selectAll('.layer-mapillary-images .viewfield-group') + d3_selectAll('.viewfield-group') .classed('selected', function(d) { return d.key === imageKey; }); diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index eb32ade74..7a16cf875 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -3,7 +3,6 @@ import _find from 'lodash-es/find'; import _flatten from 'lodash-es/flatten'; import _forEach from 'lodash-es/forEach'; import _map from 'lodash-es/map'; -import _some from 'lodash-es/some'; import { range as d3_range } from 'd3-array'; import { dispatch as d3_dispatch } from 'd3-dispatch'; @@ -125,6 +124,8 @@ function loadNextTilePage(which, currZoom, url, tile) { cache.inflight[id] = d3_request(url) .mimeType('application/json') + .header('Content-type', 'application/x-www-form-urlencoded') + .response(function(xhr) { return JSON.parse(xhr.responseText); }) .post(params, function(err, data) { cache.loaded[id] = true; delete cache.inflight[id]; @@ -140,6 +141,7 @@ function loadNextTilePage(which, currZoom, url, tile) { key: item.id, ca: +item.heading, captured_at: item.date_added, + imagePath: item.name }; } return { @@ -239,67 +241,57 @@ export default { }, - loadViewer: function(context) { - // var that = this; - // var wrap = d3_select('#content').selectAll('.openstreetcam-wrap') - // .data([0]); - - // var enter = wrap.enter() - // .append('div') - // .attr('class', 'openstreetcam-wrap') - // .classed('al', true) // 'al'=left, 'ar'=right - // .classed('hidden', true); - - // enter - // .append('button') - // .attr('class', 'thumb-hide') - // .on('click', function () { that.hideViewer(); }) - // .append('div') - // .call(svgIcon('#icon-close')); - - // enter - // .append('div') - // .attr('id', 'mly') - // .attr('class', 'mly-wrapper') - // .classed('active', false); + loadViewer: function() { + // add osc-wrapper + d3_select('#photoviewer').selectAll('.osc-wrapper') + .data([0]) + .enter() + .append('div') + .attr('class', 'photo-wrapper osc-wrapper') + .classed('hide', true) + .append('img'); }, showViewer: function() { - // d3_select('#content') - // .selectAll('.openstreetcam-wrap') - // .classed('hidden', false) - // .selectAll('.mly-wrapper') - // .classed('active', true); + var wrap = d3_select('#photoviewer') + .classed('hide', false); + + var isHidden = wrap.selectAll('.photo-wrapper.osc-wrapper.hide').size(); + + if (isHidden) { + wrap + .selectAll('.photo-wrapper:not(.osc-wrapper)') + .classed('hide', true); + + wrap + .selectAll('.photo-wrapper.osc-wrapper') + .classed('hide', false); + } return this; }, hideViewer: function() { - // d3_select('#content') - // .selectAll('.openstreetcam-wrap') - // .classed('hidden', true) - // .selectAll('.mly-wrapper') - // .classed('active', false); + d3_select('#photoviewer') + .classed('hide', true) + .selectAll('.photo-wrapper') + .classed('hide', true); - // d3_selectAll('.layer-openstreetcam-images .viewfield-group') - // .classed('selected', false); + d3_selectAll('.layer-openstreetcam-images .viewfield-group') + .classed('selected', false); openstreetcamImage = null; return this; }, - updateViewer: function(imageKey, context) { - if (!imageKey) return; - - // if (!openstreetcamViewer) { - // this.initViewer(imageKey, context); - // } else { - // openstreetcamViewer.moveToKey(imageKey); - // } - + updateViewer: function(imagePath) { + if (imagePath) { + d3_select('#photoviewer .osc-wrapper img') + .attr('src', apibase + '/' + imagePath); + } return this; }, @@ -308,40 +300,10 @@ export default { if (!arguments.length) return openstreetcamImage; openstreetcamImage = imageKey; - // d3_selectAll('.layer-openstreetcam-images .viewfield-group') - // .classed('selected', function(d) { - // return d.key === imageKey; - // }); - - // if (!imageKey) return this; - - - // function localeTimestamp(s) { - // if (!s) return null; - // var d = new Date(s); - // if (isNaN(d.getTime())) return null; - // return d.toLocaleString(undefined, { timeZone: 'UTC' }); - // } - - // var selected = d3_selectAll('.layer-openstreetcam-images .viewfield-group.selected'); - // if (selected.empty()) return this; - - // var datum = selected.datum(); - // var timestamp = localeTimestamp(datum.captured_at); - // var attribution = d3_select('.openstreetcam-js-dom .Attribution'); - // var capturedAt = attribution.selectAll('.captured-at'); - // if (capturedAt.empty()) { - // attribution - // .append('span') - // .text('|'); - // capturedAt = attribution - // .append('span') - // .attr('class', 'captured-at'); - // } - // capturedAt - // .text(timestamp); - - // this.updateDetections(); + d3_selectAll('.viewfield-group') + .classed('selected', function(d) { + return d.key === imageKey; + }); return this; }, diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 5087ee96d..53b0f7c61 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -81,8 +81,8 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { context.map().centerEase(d.loc); openstreetcam - .selectedImage(d.key, true) - .updateViewer(d.key, context) + .selectedImage(d.key) + .updateViewer(d.imagePath) .showViewer(); } diff --git a/modules/ui/init.js b/modules/ui/init.js index 8519c6f88..69eda0302 100644 --- a/modules/ui/init.js +++ b/modules/ui/init.js @@ -8,9 +8,9 @@ import { d3keybinding as d3_keybinding } from '../lib/d3.keybinding.js'; import { t, textDirection } from '../util/locale'; import { tooltip } from '../util/tooltip'; -import { svgDefs, svgIcon } from '../svg/index'; -import { modeBrowse } from '../modes/index'; -import { behaviorHash } from '../behavior/index'; +import { svgDefs, svgIcon } from '../svg'; +import { modeBrowse } from '../modes'; +import { behaviorHash } from '../behavior'; import { utilGetDimensions } from '../util/dimensions'; import { uiAccount } from './account'; @@ -238,6 +238,25 @@ export function uiInit(context) { .call(uiContributors(context)); + var photoviewer = content + .append('div') + .attr('id', 'photoviewer') + .classed('al', true) // 'al'=left, 'ar'=right + .classed('hide', true); + + photoviewer + .append('button') + .attr('class', 'thumb-hide') + .on('click', function () { + d3_select('#photoviewer') + .classed('hide', true) + .select('div') + .classed('hide', true); + }) + .append('div') + .call(svgIcon('#icon-close')); + + window.onbeforeunload = function() { return context.save(); }; From dd75737fce046a6d8b346c4808944b875e4dd124 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 3 Nov 2017 20:32:04 -0400 Subject: [PATCH 029/159] Add loading spinner --- css/60_photos.css | 14 ++++++++------ modules/services/openstreetcam.js | 19 ++++++++++++++++--- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index c09f559fe..7ce43b5ad 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -23,12 +23,6 @@ height: 100%; } -/*#photoviewer.hide, -.photo-wrapper.hide { - visibility: hidden; - display: block; -} -*/ /* Mapillary Image Layer */ .layer-mapillary-images { @@ -151,3 +145,11 @@ text-align: right; } + +/* OpenStreetCam viewer */ +.osc-wrapper { + background-color: #000; + background-image: url(img/loader-black.gif); + background-position: center; + background-repeat: no-repeat; +} diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 7a16cf875..22a1db571 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -131,6 +131,13 @@ function loadNextTilePage(which, currZoom, url, tile) { delete cache.inflight[id]; if (err || !data.currentPageItems || !data.currentPageItems.length) return; + function localeDateString(s) { + if (!s) return null; + var d = new Date(s); + if (isNaN(d.getTime())) return null; + return d.toLocaleDateString(); + } + var features = data.currentPageItems.map(function(item) { var loc = [+item.lng, +item.lat], d; @@ -140,8 +147,9 @@ function loadNextTilePage(which, currZoom, url, tile) { loc: loc, key: item.id, ca: +item.heading, - captured_at: item.date_added, - imagePath: item.name + captured_at: localeDateString(item.shot_date || item.date_added), + captured_by: item.username, + imagePath: item.lth_name }; } return { @@ -288,8 +296,13 @@ export default { updateViewer: function(imagePath) { + var wrap = d3_select('#photoviewer .osc-wrapper'); + + wrap.selectAll('img') + .remove(); + if (imagePath) { - d3_select('#photoviewer .osc-wrapper img') + wrap.append('img') .attr('src', apibase + '/' + imagePath); } return this; From 51fa9280a4cd19b029f0fc4b6c2743ea3c94747c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 3 Nov 2017 21:20:14 -0400 Subject: [PATCH 030/159] Add attribution line for openstreetcam --- css/60_photos.css | 17 ++++++++++ modules/services/openstreetcam.js | 52 ++++++++++++++++++++++++----- modules/svg/openstreetcam_images.js | 2 +- 3 files changed, 61 insertions(+), 10 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 7ce43b5ad..ad6116fcf 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -148,8 +148,25 @@ /* OpenStreetCam viewer */ .osc-wrapper { + position: relative; background-color: #000; background-image: url(img/loader-black.gif); background-position: center; background-repeat: no-repeat; } + +.osc-wrapper .osc-attribution { + width: 100%; + font-size: 10px; + text-align: right; + position: absolute; + bottom: 0; + right: 0; + padding: 4px 2px; + z-index: 10; +} + +.osc-attribution a, +.osc-attribution span { + padding: 4px 2px; +} diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 22a1db571..593fc3be4 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -149,7 +149,9 @@ function loadNextTilePage(which, currZoom, url, tile) { ca: +item.heading, captured_at: localeDateString(item.shot_date || item.date_added), captured_by: item.username, - imagePath: item.lth_name + imagePath: item.lth_name, + sequence_id: item.sequence_id, + sequence_index: item.sequence_index }; } return { @@ -257,22 +259,23 @@ export default { .append('div') .attr('class', 'photo-wrapper osc-wrapper') .classed('hide', true) - .append('img'); + .append('div') + .attr('class', 'osc-attribution fillD'); }, showViewer: function() { - var wrap = d3_select('#photoviewer') + var viewer = d3_select('#photoviewer') .classed('hide', false); - var isHidden = wrap.selectAll('.photo-wrapper.osc-wrapper.hide').size(); + var isHidden = viewer.selectAll('.photo-wrapper.osc-wrapper.hide').size(); if (isHidden) { - wrap + viewer .selectAll('.photo-wrapper:not(.osc-wrapper)') .classed('hide', true); - wrap + viewer .selectAll('.photo-wrapper.osc-wrapper') .classed('hide', false); } @@ -295,15 +298,46 @@ export default { }, - updateViewer: function(imagePath) { + updateViewer: function(d) { var wrap = d3_select('#photoviewer .osc-wrapper'); wrap.selectAll('img') .remove(); - if (imagePath) { + if (d) { wrap.append('img') - .attr('src', apibase + '/' + imagePath); + .attr('src', apibase + '/' + d.imagePath); + + var attribution = wrap.selectAll('.osc-attribution').html(''); + + if (d.captured_by) { + attribution + .append('a') + .attr('class', 'captured_by') + .attr('href', apibase + '/user/' + d.captured_by) + .text('@' + d.captured_by); + + attribution + .append('span') + .text('|'); + } + + if (d.captured_at) { + attribution + .append('span') + .attr('class', 'captured_at') + .text(d.captured_at); + + attribution + .append('span') + .text('|'); + } + + attribution + .append('a') + .attr('class', 'image_link') + .attr('href', apibase + '/details/' + d.sequence_id + '/' + d.sequence_index) + .text('openstreetcam.org'); } return this; }, diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 53b0f7c61..59f228ce1 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -82,7 +82,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { openstreetcam .selectedImage(d.key) - .updateViewer(d.imagePath) + .updateViewer(d) .showViewer(); } From 3fb48726e5efc70aa909722f5ab0ea81cdfa8f31 Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Sat, 4 Nov 2017 10:48:19 +0100 Subject: [PATCH 031/159] add preset for music schools see https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dmusic_school --- .../presets/presets/amenity/music_school.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 data/presets/presets/amenity/music_school.json diff --git a/data/presets/presets/amenity/music_school.json b/data/presets/presets/amenity/music_school.json new file mode 100644 index 000000000..34f14484a --- /dev/null +++ b/data/presets/presets/amenity/music_school.json @@ -0,0 +1,19 @@ +{ + "icon": "school", + "fields": [ + "name", + "operator", + "address" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "school of music" + ], + "tags": { + "amenity": "music_school" + }, + "name": "Music School" +} From 2afaca92cbb9b2991d12ec3db4571e20d9b38f3f Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 3 Nov 2017 18:23:30 +0000 Subject: [PATCH 032/159] chore(package): update @std/esm to version 0.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c013ba7ed..630b7bd6d 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@mapbox/maki": "^4.0.0", - "@std/esm": "^0.12.0", + "@std/esm": "^0.13.0", "brfs": "1.4.3", "chai": "^4.1.0", "colors": "^1.1.2", From 2ea12678e03cda5410fcb38daaaf152661820b7b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 4 Nov 2017 10:56:41 -0400 Subject: [PATCH 033/159] npm run build --- data/presets.yaml | 5 +++++ data/presets/presets.json | 19 +++++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 4 files changed, 32 insertions(+) diff --git a/data/presets.yaml b/data/presets.yaml index 4e855290e..d8743fee2 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1971,6 +1971,11 @@ en: # amenity=motorcycle_parking name: Motorcycle Parking terms: '' + amenity/music_school: + # amenity=music_school + name: Music School + # 'terms: school of music' + terms: '' amenity/nightclub: # amenity=nightclub name: Nightclub diff --git a/data/presets/presets.json b/data/presets/presets.json index 3ec4bcb95..cfa075262 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -1885,6 +1885,25 @@ }, "name": "Motorcycle Parking" }, + "amenity/music_school": { + "icon": "school", + "fields": [ + "name", + "operator", + "address" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "school of music" + ], + "tags": { + "amenity": "music_school" + }, + "name": "Music School" + }, "amenity/nightclub": { "icon": "bar", "fields": [ diff --git a/data/taginfo.json b/data/taginfo.json index 1935f3690..f155d3a1b 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -367,6 +367,10 @@ "key": "amenity", "value": "motorcycle_parking" }, + { + "key": "amenity", + "value": "music_school" + }, { "key": "amenity", "value": "nightclub" diff --git a/dist/locales/en.json b/dist/locales/en.json index 49cda42a7..d80219936 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -2800,6 +2800,10 @@ "name": "Motorcycle Parking", "terms": "" }, + "amenity/music_school": { + "name": "Music School", + "terms": "school of music" + }, "amenity/nightclub": { "name": "Nightclub", "terms": "disco*,night club,dancing,dance club" From a915bfd40cce1975375a8f2a7d1c2eb3f033efbd Mon Sep 17 00:00:00 2001 From: Simon Poole Date: Sat, 4 Nov 2017 22:46:34 +0100 Subject: [PATCH 034/159] It is sculptor not sculpter --- data/presets/presets/craft/{sculpter.json => sculptor.json} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename data/presets/presets/craft/{sculpter.json => sculptor.json} (82%) diff --git a/data/presets/presets/craft/sculpter.json b/data/presets/presets/craft/sculptor.json similarity index 82% rename from data/presets/presets/craft/sculpter.json rename to data/presets/presets/craft/sculptor.json index 6e13b2042..81f2d6a49 100644 --- a/data/presets/presets/craft/sculpter.json +++ b/data/presets/presets/craft/sculptor.json @@ -12,7 +12,7 @@ "area" ], "tags": { - "craft": "sculpter" + "craft": "sculptor" }, - "name": "Sculpter" + "name": "Sculptor" } From ed332bbccb3a41fd0a270da60ca5e4206f70419c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 4 Nov 2017 18:41:08 -0400 Subject: [PATCH 035/159] npm run build --- data/presets.yaml | 8 ++++---- data/presets/presets.json | 6 +++--- data/taginfo.json | 2 +- dist/locales/en.json | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index d8743fee2..c97d09abb 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -2757,10 +2757,10 @@ en: # craft=scaffolder name: Scaffolder terms: '' - craft/sculpter: - # craft=sculpter - name: Sculpter - terms: '' + craft/sculptor: + # craft=sculptor + name: Sculptor + terms: '' craft/shoemaker: # craft=shoemaker name: Shoemaker diff --git a/data/presets/presets.json b/data/presets/presets.json index cfa075262..2e27f8161 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -5520,7 +5520,7 @@ }, "name": "Scaffolder" }, - "craft/sculpter": { + "craft/sculptor": { "icon": "art-gallery", "fields": [ "name", @@ -5534,9 +5534,9 @@ "area" ], "tags": { - "craft": "sculpter" + "craft": "sculptor" }, - "name": "Sculpter" + "name": "Sculptor" }, "craft/shoemaker": { "icon": "poi-tool", diff --git a/data/taginfo.json b/data/taginfo.json index f155d3a1b..026d2a96f 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1060,7 +1060,7 @@ }, { "key": "craft", - "value": "sculpter" + "value": "sculptor" }, { "key": "craft", diff --git a/dist/locales/en.json b/dist/locales/en.json index d80219936..1536a1780 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -3496,8 +3496,8 @@ "name": "Scaffolder", "terms": "" }, - "craft/sculpter": { - "name": "Sculpter", + "craft/sculptor": { + "name": "Sculptor", "terms": "" }, "craft/shoemaker": { From 4c69341d830290771eec32a27db8b180e0b21552 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 5 Nov 2017 22:30:19 -0500 Subject: [PATCH 036/159] Distinguish between Mapillary and OpenStreetCam markers --- css/60_photos.css | 95 +++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 60 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index ad6116fcf..2184940b2 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -24,44 +24,48 @@ } +.viewfield-group { + pointer-events: visible; + cursor: pointer; +} + +.viewfield-group * { + stroke-width: 1; + stroke: #444; + z-index: 50; +} + +.viewfield-group.selected * { + stroke-width: 2; + stroke: #222; + fill: #ff5800 !important; + z-index: 60; +} + +.viewfield-group:hover * { + stroke-width: 1; + stroke: #333; + fill: #ff9900 !important; + z-index: 70; +} + +.viewfield-group:hover path.viewfield, +.viewfield-group.selected path.viewfield, +.viewfield-group path.viewfield { + stroke-width: 0; + fill-opacity: 0.6; +} + + /* Mapillary Image Layer */ .layer-mapillary-images { pointer-events: none; } -.layer-mapillary-images .viewfield-group { - pointer-events: visible; - cursor: pointer; /* Opera */ - cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ -} - .layer-mapillary-images .viewfield-group * { - stroke-width: 1; - stroke: #444; - fill: #ffc600; - z-index: 50; + fill: #55ff22; } -.layer-mapillary-images .viewfield-group:hover * { - stroke-width: 1; - stroke: #333; - fill: #ff9900; - z-index: 60; -} - -.layer-mapillary-images .viewfield-group.selected * { - stroke-width: 2; - stroke: #222; - fill: #ff5800; - z-index: 60; -} - -.layer-mapillary-images .viewfield-group:hover path.viewfield, -.layer-mapillary-images .viewfield-group.selected path.viewfield, -.layer-mapillary-images .viewfield-group path.viewfield { - stroke-width: 0; - fill-opacity: 0.6; -} /* Mapillary Sign Layer */ .layer-mapillary-signs { @@ -96,37 +100,8 @@ pointer-events: none; } -.layer-openstreetcam-images .viewfield-group { - pointer-events: visible; - cursor: pointer; -} - .layer-openstreetcam-images .viewfield-group * { - stroke-width: 1; - stroke: #444; - fill: #ffc600; - z-index: 50; -} - -.layer-openstreetcam-images .viewfield-group:hover * { - stroke-width: 1; - stroke: #333; - fill: #ff9900; - z-index: 60; -} - -.layer-openstreetcam-images .viewfield-group.selected * { - stroke-width: 2; - stroke: #222; - fill: #ff5800; - z-index: 60; -} - -.layer-openstreetcam-images .viewfield-group:hover path.viewfield, -.layer-openstreetcam-images .viewfield-group.selected path.viewfield, -.layer-openstreetcam-images .viewfield-group path.viewfield { - stroke-width: 0; - fill-opacity: 0.6; + fill: #77ddff; } From ccc81533706e98ef23dc81243702a439096595a5 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 5 Nov 2017 22:46:53 -0500 Subject: [PATCH 037/159] Standardize on "@user | captured_at | sitelink" for attribution --- css/60_photos.css | 6 ++++++ modules/services/mapillary.js | 8 ++++---- modules/services/openstreetcam.js | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 2184940b2..cb794cc33 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -142,6 +142,12 @@ } .osc-attribution a, +.osc-attribution a:visited, .osc-attribution span { padding: 4px 2px; + color: #fff; +} +.osc-attribution a:active, +.osc-attribution a:hover { + color: #77ddff; } diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index b9d3a5a61..7b266a511 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -539,12 +539,12 @@ export default { var attribution = d3_select('.mapillary-js-dom .Attribution'); var capturedAt = attribution.selectAll('.captured-at'); if (capturedAt.empty()) { - attribution - .append('span') - .text('|'); capturedAt = attribution - .append('span') + .insert('span', ':last-child') .attr('class', 'captured-at'); + attribution + .insert('span', ':last-child') + .text('|'); } capturedAt .text(timestamp); diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 593fc3be4..494bfa3f4 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -314,6 +314,7 @@ export default { attribution .append('a') .attr('class', 'captured_by') + .attr('target', '_blank') .attr('href', apibase + '/user/' + d.captured_by) .text('@' + d.captured_by); @@ -336,6 +337,7 @@ export default { attribution .append('a') .attr('class', 'image_link') + .attr('target', '_blank') .attr('href', apibase + '/details/' + d.sequence_id + '/' + d.sequence_index) .text('openstreetcam.org'); } From eefbb68ddab6ac0479642b45282d3ae7be68daef Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 10:41:17 -0500 Subject: [PATCH 038/159] Add viewer controls.. Rotation works and will cache val per sequence --- css/60_photos.css | 34 +++++++++++++++ modules/services/openstreetcam.js | 68 +++++++++++++++++++++++++---- modules/svg/openstreetcam_images.js | 5 ++- 3 files changed, 96 insertions(+), 11 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index cb794cc33..637e1ae70 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -21,6 +21,7 @@ .photo-wrapper img { width: 100%; height: 100%; + overflow: hidden; } @@ -151,3 +152,36 @@ .osc-attribution a:hover { color: #77ddff; } + +.osc-controls-wrap { + text-align: center; + position: absolute; + top: 10px; + width: 100%; + z-index: 10; +} + +.osc-controls { + display: inline-block; + z-index: 10; +} + +.osc-controls button { + height: 18px; + width: 18px; + background: rgba(0,0,0,0.65); + color: #eee; + border-radius: 0; +} +.osc-controls button:first-of-type { + border-radius: 3px 0 0 3px; +} +.osc-controls button:last-of-type { + border-radius: 0 3px 3px 0; +} +.osc-controls button:hover, +.osc-controls button:active, +.osc-controls button:focus { + background: rgba(0,0,0,0.85); + color: #fff; +} diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 494bfa3f4..0bc1f6d86 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -233,7 +233,8 @@ export default { } openstreetcamCache = { - images: { inflight: {}, loaded: {}, nextPage: {}, rtree: rbush() } + images: { inflight: {}, loaded: {}, nextPage: {}, rtree: rbush() }, + sequences: { rotation: {} } }; openstreetcamImage = null; @@ -245,6 +246,7 @@ export default { return searchLimited(psize, limit, projection, openstreetcamCache.images.rtree); }, + loadImages: function(projection) { var url = apibase + '/1.0/list/nearby-photos/'; loadTiles('images', url, projection); @@ -253,14 +255,58 @@ export default { loadViewer: function() { // add osc-wrapper - d3_select('#photoviewer').selectAll('.osc-wrapper') - .data([0]) - .enter() + var wrap = d3_select('#photoviewer').selectAll('.osc-wrapper') + .data([0]); + + var wrapEnter = wrap.enter() .append('div') .attr('class', 'photo-wrapper osc-wrapper') - .classed('hide', true) + .classed('hide', true); + + wrapEnter .append('div') .attr('class', 'osc-attribution fillD'); + + var controlsEnter = wrapEnter + .append('div') + .attr('class', 'osc-controls-wrap') + .append('div') + .attr('class', 'osc-controls'); + + controlsEnter + .append('button') + .text('◅'); + + controlsEnter + .append('button') + .on('click.rotate-cw', rotate(90)) + .text('↻'); + + controlsEnter + .append('button') + .on('click.rotate-ccw', rotate(-90)) + .text('↺'); + + controlsEnter + .append('button') + .text('▻'); + + + function rotate(deg) { + return function() { + if (!openstreetcamImage) return; + var seq = openstreetcamImage.sequence_id; + var r = openstreetcamCache.sequences.rotation[seq] || 0; + + r += deg; + openstreetcamCache.sequences.rotation[seq] = r; + + d3_select('#photoviewer .osc-wrapper .osc-image') + .transition() + .duration(100) + .style('transform', 'rotate(' + r + 'deg)'); + }; + } }, @@ -301,11 +347,15 @@ export default { updateViewer: function(d) { var wrap = d3_select('#photoviewer .osc-wrapper'); - wrap.selectAll('img') + wrap.selectAll('.osc-image') .remove(); if (d) { + var r = openstreetcamCache.sequences.rotation[d.sequence_id] || 0; + wrap.append('img') + .attr('class', 'osc-image') + .style('transform', 'rotate(' + r + 'deg)') .attr('src', apibase + '/' + d.imagePath); var attribution = wrap.selectAll('.osc-attribution').html(''); @@ -345,13 +395,13 @@ export default { }, - selectedImage: function(imageKey) { + selectedImage: function(d) { if (!arguments.length) return openstreetcamImage; - openstreetcamImage = imageKey; + openstreetcamImage = d; d3_selectAll('.viewfield-group') .classed('selected', function(d) { - return d.key === imageKey; + return d.key === openstreetcamImage.key; }); return this; diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 59f228ce1..e17f073d2 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -81,7 +81,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { context.map().centerEase(d.loc); openstreetcam - .selectedImage(d.key) + .selectedImage(d) .updateViewer(d) .showViewer(); } @@ -97,7 +97,8 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function update() { var openstreetcam = getOpenstreetcam(), data = (openstreetcam ? openstreetcam.images(projection) : []), - imageKey = openstreetcam ? openstreetcam.selectedImage() : null; + image = openstreetcam && openstreetcam.selectedImage(), + imageKey = image && image.key; var markers = layer.selectAll('.viewfield-group') .data(data, function(d) { return d.key; }); From 8dd7841663243145197d688f9e8d989590480d1e Mon Sep 17 00:00:00 2001 From: JamesKingdom Date: Mon, 6 Nov 2017 17:04:18 +0000 Subject: [PATCH 039/159] Change max_age to min_age for min_age field (closes #4506) --- data/presets.yaml | 2 +- data/presets/fields.json | 2 +- data/presets/fields/playground/min_age.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index c97d09abb..1f506c0c9 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1079,7 +1079,7 @@ en: # max_age=* label: Maximum Age playground/min_age: - # max_age=* + # min_age=* label: Minimum Age population: # population=* diff --git a/data/presets/fields.json b/data/presets/fields.json index 0b957ac05..e74ccc937 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -1429,7 +1429,7 @@ "label": "Maximum Age" }, "playground/min_age": { - "key": "max_age", + "key": "min_age", "type": "number", "label": "Minimum Age" }, diff --git a/data/presets/fields/playground/min_age.json b/data/presets/fields/playground/min_age.json index 4616635b6..762005e62 100644 --- a/data/presets/fields/playground/min_age.json +++ b/data/presets/fields/playground/min_age.json @@ -1,5 +1,5 @@ { - "key": "max_age", + "key": "min_age", "type": "number", "label": "Minimum Age" } From 94c363abcf3ff8550612ae129a1a55f70fd3d02f Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 6 Nov 2017 15:08:11 -0200 Subject: [PATCH 040/159] add shop=agrarian preset and agrarian=* field --- data/presets.yaml | 8 ++++++++ data/presets/fields.json | 5 +++++ data/presets/fields/agrarian.json | 5 +++++ data/presets/presets.json | 27 +++++++++++++++++++++++++ data/presets/presets/shop/agrarian.json | 27 +++++++++++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 7 +++++++ 7 files changed, 83 insertions(+) create mode 100644 data/presets/fields/agrarian.json create mode 100644 data/presets/presets/shop/agrarian.json diff --git a/data/presets.yaml b/data/presets.yaml index c97d09abb..3ce2f8308 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -165,6 +165,9 @@ en: aeroway: # aeroway=* label: Type + agrarian: + # agrarian=* + label: Products amenity: # amenity=* label: Type @@ -4513,6 +4516,11 @@ en: # shop=* name: Shop terms: '' + shop/agrarian: + # shop=agrarian + name: Agriculture Shop + # 'terms: agricultural inputs,agricultural machines,seeds,pesticides,fertilizer,agricultural tools' + terms: '' shop/alcohol: # shop=alcohol name: Liquor Store diff --git a/data/presets/fields.json b/data/presets/fields.json index 0b957ac05..8ed7e0b6e 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -201,6 +201,11 @@ "type": "typeCombo", "label": "Type" }, + "agrarian": { + "key": "agrarian", + "type": "semiCombo", + "label": "Products" + }, "amenity": { "key": "amenity", "type": "typeCombo", diff --git a/data/presets/fields/agrarian.json b/data/presets/fields/agrarian.json new file mode 100644 index 000000000..d6072e167 --- /dev/null +++ b/data/presets/fields/agrarian.json @@ -0,0 +1,5 @@ +{ + "key": "agrarian", + "type": "semiCombo", + "label": "Products" +} diff --git a/data/presets/presets.json b/data/presets/presets.json index 2e27f8161..7052f35ca 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13519,6 +13519,33 @@ "name": "Vacant Shop", "searchable": false }, + "shop/agrarian": { + "icon": "shop", + "fields": [ + "name", + "brand", + "agrarian", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "agricultural inputs", + "agricultural machines", + "seeds", + "pesticides", + "fertilizer", + "agricultural tools" + ], + "tags": { + "shop": "agrarian" + }, + "name": "Agriculture Shop" + }, "shop/alcohol": { "icon": "alcohol-shop", "fields": [ diff --git a/data/presets/presets/shop/agrarian.json b/data/presets/presets/shop/agrarian.json new file mode 100644 index 000000000..080de0705 --- /dev/null +++ b/data/presets/presets/shop/agrarian.json @@ -0,0 +1,27 @@ +{ + "icon": "shop", + "fields": [ + "name", + "brand", + "agrarian", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "area" + ], + "terms": [ + "agricultural inputs", + "agricultural machines", + "seeds", + "pesticides", + "fertilizer", + "agricultural tools" + ], + "tags": { + "shop": "agrarian" + }, + "name": "Agriculture Shop" +} diff --git a/data/taginfo.json b/data/taginfo.json index 026d2a96f..a0249a9bf 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2591,6 +2591,10 @@ "key": "shop", "value": "vacant" }, + { + "key": "shop", + "value": "agrarian" + }, { "key": "shop", "value": "alcohol" diff --git a/dist/locales/en.json b/dist/locales/en.json index 1536a1780..0399d5673 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1219,6 +1219,9 @@ "aeroway": { "label": "Type" }, + "agrarian": { + "label": "Products" + }, "amenity": { "label": "Type" }, @@ -5052,6 +5055,10 @@ "name": "Vacant Shop", "terms": "" }, + "shop/agrarian": { + "name": "Agriculture Shop", + "terms": "agricultural inputs,agricultural machines,seeds,pesticides,fertilizer,agricultural tools" + }, "shop/alcohol": { "name": "Liquor Store", "terms": "alcohol,beer,booze,wine" From 59426e870518746b64f609d7e463029e9765ca7e Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 6 Nov 2017 16:43:51 -0200 Subject: [PATCH 041/159] remove brand field from shop=agrarian preset --- data/presets/presets.json | 2 +- data/presets/presets/shop/agrarian.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 7052f35ca..6feb29ee5 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13523,7 +13523,7 @@ "icon": "shop", "fields": [ "name", - "brand", + "operator", "agrarian", "address", "building_area", diff --git a/data/presets/presets/shop/agrarian.json b/data/presets/presets/shop/agrarian.json index 080de0705..8696682aa 100644 --- a/data/presets/presets/shop/agrarian.json +++ b/data/presets/presets/shop/agrarian.json @@ -2,7 +2,7 @@ "icon": "shop", "fields": [ "name", - "brand", + "operator", "agrarian", "address", "building_area", From e439ea406a43a199c8da98db16275954a3318a20 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 15:48:44 -0500 Subject: [PATCH 042/159] Cache sequence info, draw sequence linestrings --- css/60_photos.css | 14 ++++++- modules/services/openstreetcam.js | 61 ++++++++++++++++++++++++----- modules/svg/openstreetcam_images.js | 57 ++++++++++++++++++++++----- 3 files changed, 113 insertions(+), 19 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 637e1ae70..a251a2658 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -24,7 +24,6 @@ overflow: hidden; } - .viewfield-group { pointer-events: visible; cursor: pointer; @@ -57,6 +56,11 @@ fill-opacity: 0.6; } +.sequence { + stroke-width: 2; + fill: none; +} + /* Mapillary Image Layer */ .layer-mapillary-images { @@ -67,6 +71,10 @@ fill: #55ff22; } +.layer-mapillary-images .sequence { + stroke: #55ff22; +} + /* Mapillary Sign Layer */ .layer-mapillary-signs { @@ -105,6 +113,10 @@ fill: #77ddff; } +.layer-openstreetcam-images .sequence { + stroke: #77ddff; +} + /* Mapillary viewer */ #mly .domRenderer .TagSymbol { diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 0bc1f6d86..e12dcec6a 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -150,10 +150,19 @@ function loadNextTilePage(which, currZoom, url, tile) { captured_at: localeDateString(item.shot_date || item.date_added), captured_by: item.username, imagePath: item.lth_name, - sequence_id: item.sequence_id, - sequence_index: item.sequence_index + sequence_id: +item.sequence_id, + sequence_index: +item.sequence_index }; + + // cache sequence info + var seq = openstreetcamCache.sequences[d.sequence_id]; + if (!seq) { + seq = { rotation: 0, images: [] }; + openstreetcamCache.sequences[d.sequence_id] = seq; + } + seq.images[d.sequence_index] = d; } + return { minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1], data: d }; @@ -234,7 +243,7 @@ export default { openstreetcamCache = { images: { inflight: {}, loaded: {}, nextPage: {}, rtree: rbush() }, - sequences: { rotation: {} } + sequences: {} }; openstreetcamImage = null; @@ -247,6 +256,33 @@ export default { }, + sequences: function(projection) { + var viewport = projection.clipExtent(); + var min = [viewport[0][0], viewport[1][1]]; + var max = [viewport[1][0], viewport[0][1]]; + var bbox = geoExtent(projection.invert(min), projection.invert(max)).bbox(); + var seq_ids = {}; + + // all sequences for images in viewport + openstreetcamCache.images.rtree.search(bbox) + .forEach(function(d) { seq_ids[d.data.sequence_id] = true; }); + + // make linestrings from those sequences + var lineStrings = []; + Object.keys(seq_ids).forEach(function(seq_id) { + var seq = openstreetcamCache.sequences[seq_id]; + var images = seq && seq.images; + if (images) { + lineStrings.push({ + type: 'LineString', + coordinates: images.map(function (d) { return d.loc; }).filter(Boolean) + }); + } + }); + return lineStrings; + }, + + loadImages: function(projection) { var url = apibase + '/1.0/list/nearby-photos/'; loadTiles('images', url, projection); @@ -275,7 +311,7 @@ export default { controlsEnter .append('button') - .text('◅'); + .text('◄'); controlsEnter .append('button') @@ -289,17 +325,23 @@ export default { controlsEnter .append('button') - .text('▻'); + .text('►'); function rotate(deg) { return function() { if (!openstreetcamImage) return; - var seq = openstreetcamImage.sequence_id; - var r = openstreetcamCache.sequences.rotation[seq] || 0; + var seq_id = openstreetcamImage.sequence_id; + var seq = openstreetcamCache.sequences[seq_id]; + if (!seq) { + seq = { rotation: 0, coords: [] }; + openstreetcamCache.sequences[seq_id] = seq; + } + + var r = seq.rotation || 0; r += deg; - openstreetcamCache.sequences.rotation[seq] = r; + seq.rotation = r; d3_select('#photoviewer .osc-wrapper .osc-image') .transition() @@ -351,7 +393,8 @@ export default { .remove(); if (d) { - var r = openstreetcamCache.sequences.rotation[d.sequence_id] || 0; + var seq = openstreetcamCache.sequences[d.sequence_id]; + var r = (seq && seq.rotation) || 0; wrap.append('img') .attr('class', 'osc-image') diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index e17f073d2..458bec47c 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -1,5 +1,11 @@ import _throttle from 'lodash-es/throttle'; + import { select as d3_select } from 'd3-selection'; +import { + geoIdentity as d3_geoIdentity, + geoPath as d3_geoPath +} from 'd3-geo'; + import { svgPointTransform } from './point_transform'; import { services } from '../services'; @@ -95,13 +101,36 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function update() { - var openstreetcam = getOpenstreetcam(), - data = (openstreetcam ? openstreetcam.images(projection) : []), - image = openstreetcam && openstreetcam.selectedImage(), - imageKey = image && image.key; + var highZoom = ~~context.map().zoom() >= minViewfieldZoom; + var openstreetcam = getOpenstreetcam(); + var sequences = (openstreetcam && highZoom ? openstreetcam.sequences(projection) : []); + var images = (openstreetcam ? openstreetcam.images(projection) : []); + var selectedImage = openstreetcam && openstreetcam.selectedImage(); + var imageKey = selectedImage && selectedImage.key; - var markers = layer.selectAll('.viewfield-group') - .data(data, function(d) { return d.key; }); + var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; + var project = projection.stream; + var makePath = d3_geoPath().projection({ stream: function(output) { + return project(clip(output)); + }}); + + var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') + .data(sequences); + + lineStrings.exit() + .remove(); + + lineStrings = lineStrings.enter() + .append('path') + .attr('class', 'sequence') + .merge(lineStrings); + + lineStrings + .attr('d', makePath); + + + var markers = layer.selectAll('.markers').selectAll('.viewfield-group') + .data(images, function(d) { return d.key; }); markers.exit() .remove(); @@ -118,7 +147,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { var viewfields = markers.selectAll('.viewfield') - .data(~~context.map().zoom() >= minViewfieldZoom ? [0] : []); + .data(highZoom ? [0] : []); viewfields.exit() .remove(); @@ -149,10 +178,20 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { layer.exit() .remove(); - layer = layer.enter() + var layerEnter = layer.enter() .append('g') .attr('class', 'layer-openstreetcam-images') - .style('display', enabled ? 'block' : 'none') + .style('display', enabled ? 'block' : 'none'); + + layerEnter + .append('g') + .attr('class', 'sequences'); + + layerEnter + .append('g') + .attr('class', 'markers'); + + layer = layerEnter .merge(layer); if (enabled) { From 5f2b257ddc9344439fba6cf0ea7b6bd895cd0268 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 15:51:48 -0500 Subject: [PATCH 043/159] Swap clockwise/counterclockwise rotation buttons, change glyphs --- modules/services/openstreetcam.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index e12dcec6a..bfcf2af25 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -315,13 +315,13 @@ export default { controlsEnter .append('button') - .on('click.rotate-cw', rotate(90)) - .text('↻'); + .on('click.rotate-ccw', rotate(-90)) + .text('⤿'); controlsEnter .append('button') - .on('click.rotate-ccw', rotate(-90)) - .text('↺'); + .on('click.rotate-cw', rotate(90)) + .text('⤾'); controlsEnter .append('button') From d44b7546562dd50a65dd58706fc2125e822b19d8 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 16:06:25 -0500 Subject: [PATCH 044/159] Implement sequence step forward/backward --- modules/services/openstreetcam.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index bfcf2af25..01320c78f 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -289,7 +289,9 @@ export default { }, - loadViewer: function() { + loadViewer: function(context) { + var that = this; + // add osc-wrapper var wrap = d3_select('#photoviewer').selectAll('.osc-wrapper') .data([0]); @@ -311,6 +313,7 @@ export default { controlsEnter .append('button') + .on('click.back', step(-1)) .text('◄'); controlsEnter @@ -325,6 +328,7 @@ export default { controlsEnter .append('button') + .on('click.forward', step(1)) .text('►'); @@ -333,11 +337,7 @@ export default { if (!openstreetcamImage) return; var seq_id = openstreetcamImage.sequence_id; var seq = openstreetcamCache.sequences[seq_id]; - - if (!seq) { - seq = { rotation: 0, coords: [] }; - openstreetcamCache.sequences[seq_id] = seq; - } + if (!seq) return; var r = seq.rotation || 0; r += deg; @@ -349,6 +349,25 @@ export default { .style('transform', 'rotate(' + r + 'deg)'); }; } + + function step(stepBy) { + return function() { + if (!openstreetcamImage) return; + var seq_id = openstreetcamImage.sequence_id; + var seq = openstreetcamCache.sequences[seq_id]; + if (!seq) return; + + var nextIndex = openstreetcamImage.sequence_index + stepBy; + var nextImage = seq.images[nextIndex]; + if (!nextImage) return; + + context.map().centerEase(nextImage.loc); + + that + .selectedImage(nextImage) + .updateViewer(nextImage); + }; + } }, From 095dc191645671f51e45f5fe4f59ded509300807 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 21:32:03 -0500 Subject: [PATCH 045/159] Add sequence linestrings to mapillary photo layer too --- modules/services/mapillary.js | 46 ++++++++++++++++++++++++--- modules/svg/mapillary_images.js | 56 ++++++++++++++++++++++++++++----- 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index 7b266a511..932911d8a 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -165,6 +165,15 @@ function loadNextTilePage(which, currZoom, url, tile) { captured_at: feature.properties.captured_at, pano: feature.properties.pano }; + + } else if (which === 'sequences') { + var sk = feature.properties.key; + cache.lineString[sk] = feature; // cache sequence_key -> linestring + feature.properties.coordinateProperties.image_keys.forEach(function(ik) { + cache.forImage[ik] = sk; // cache image_key -> sequence_key + }); + return false; // nothing to actually insert + } else if (which === 'objects') { d = { loc: loc, @@ -190,11 +199,11 @@ function loadNextTilePage(which, currZoom, url, tile) { return { minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1], data: d }; - }); + }).filter(Boolean); cache.rtree.load(features); - if (which === 'images') { + if (which === 'images' || which === 'sequences') { dispatch.call('loadedImages'); } else if (which === 'objects') { dispatch.call('loadedSigns'); @@ -303,11 +312,15 @@ export default { if (cache.objects && cache.objects.inflight) { _forEach(cache.objects.inflight, abortRequest); } + if (cache.sequences && cache.sequences.inflight) { + _forEach(cache.sequences.inflight, abortRequest); + } } mapillaryCache = { images: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush() }, - objects: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush() }, + objects: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush() }, + sequences: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush(), forImage: {}, lineString: {} }, detections: {} }; @@ -328,6 +341,29 @@ export default { }, + sequences: function(projection) { + var viewport = projection.clipExtent(); + var min = [viewport[0][0], viewport[1][1]]; + var max = [viewport[1][0], viewport[0][1]]; + var bbox = geoExtent(projection.invert(min), projection.invert(max)).bbox(); + var sequenceKeys = {}; + + // all sequences for images in viewport + mapillaryCache.images.rtree.search(bbox) + .forEach(function(d) { + var sk = mapillaryCache.sequences.forImage[d.data.key]; + if (sk) { + sequenceKeys[sk] = true; + } + }); + + // Return linestrings for the sequences + return Object.keys(sequenceKeys).map(function(sk) { + return mapillaryCache.sequences.lineString[sk]; + }); + }, + + signsSupported: function() { var detected = utilDetect(); if (detected.ie) return false; @@ -354,8 +390,8 @@ export default { loadImages: function(projection) { - var url = apibase + 'images?'; - loadTiles('images', url, projection); + loadTiles('images', apibase + 'images?', projection); + loadTiles('sequences', apibase + 'sequences?', projection); }, diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index 9b537d616..3d2f21afa 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -1,5 +1,12 @@ import _throttle from 'lodash-es/throttle'; + +import { + geoIdentity as d3_geoIdentity, + geoPath as d3_geoPath +} from 'd3-geo'; + import { select as d3_select } from 'd3-selection'; + import { svgPointTransform } from './point_transform'; import { services } from '../services'; @@ -95,12 +102,35 @@ export function svgMapillaryImages(projection, context, dispatch) { function update() { - var mapillary = getMapillary(), - data = (mapillary ? mapillary.images(projection) : []), - imageKey = mapillary ? mapillary.selectedImage() : null; + var highZoom = ~~context.map().zoom() >= minViewfieldZoom; + var mapillary = getMapillary(); + var images = (mapillary ? mapillary.images(projection) : []); + var sequences = (mapillary && highZoom ? mapillary.sequences(projection) : []); + var imageKey = mapillary ? mapillary.selectedImage() : null; - var markers = layer.selectAll('.viewfield-group') - .data(data, function(d) { return d.key; }); + var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; + var project = projection.stream; + var makePath = d3_geoPath().projection({ stream: function(output) { + return project(clip(output)); + }}); + + var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') + .data(sequences); + + lineStrings.exit() + .remove(); + + lineStrings = lineStrings.enter() + .append('path') + .attr('class', 'sequence') + .merge(lineStrings); + + lineStrings + .attr('d', makePath); + + + var markers = layer.selectAll('.markers').selectAll('.viewfield-group') + .data(images, function(d) { return d.key; }); markers.exit() .remove(); @@ -117,7 +147,7 @@ export function svgMapillaryImages(projection, context, dispatch) { var viewfields = markers.selectAll('.viewfield') - .data(~~context.map().zoom() >= minViewfieldZoom ? [0] : []); + .data(highZoom ? [0] : []); viewfields.exit() .remove(); @@ -148,10 +178,20 @@ export function svgMapillaryImages(projection, context, dispatch) { layer.exit() .remove(); - layer = layer.enter() + var layerEnter = layer.enter() .append('g') .attr('class', 'layer-mapillary-images') - .style('display', enabled ? 'block' : 'none') + .style('display', enabled ? 'block' : 'none'); + + layerEnter + .append('g') + .attr('class', 'sequences'); + + layerEnter + .append('g') + .attr('class', 'markers'); + + layer = layerEnter .merge(layer); if (enabled) { From 2947dcc2fb892203134437b96c1df16ce1fc4861 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 6 Nov 2017 23:11:00 -0500 Subject: [PATCH 046/159] Add tests for Openstreetcam service and Mapillary sequences --- modules/services/index.js | 1 + test/index.html | 1 + test/spec/services/mapillary.js | 39 ++++ test/spec/services/openstreetcam.js | 310 ++++++++++++++++++++++++++++ 4 files changed, 351 insertions(+) create mode 100644 test/spec/services/openstreetcam.js diff --git a/modules/services/index.js b/modules/services/index.js index d5ab2d365..aa5055b5c 100644 --- a/modules/services/index.js +++ b/modules/services/index.js @@ -19,6 +19,7 @@ export var services = { export { serviceMapillary, serviceNominatim, + serviceOpenstreetcam, serviceOsm, serviceTaginfo, serviceWikidata, diff --git a/test/index.html b/test/index.html index c391ca88e..18092851b 100644 --- a/test/index.html +++ b/test/index.html @@ -102,6 +102,7 @@ + diff --git a/test/spec/services/mapillary.js b/test/spec/services/mapillary.js index dd184db05..e70d896f1 100644 --- a/test/spec/services/mapillary.js +++ b/test/spec/services/mapillary.js @@ -54,6 +54,7 @@ describe('iD.serviceMapillary', function() { var cache = mapillary.cache(); expect(cache).to.have.property('images'); expect(cache).to.have.property('objects'); + expect(cache).to.have.property('sequences'); expect(cache).to.have.property('detections'); mapillary.init(); @@ -348,6 +349,44 @@ describe('iD.serviceMapillary', function() { }); }); + + describe('#sequences', function() { + it('returns sequence linestrings in the visible map area', function() { + var features = [ + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90 } }, + { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90 } } + ]; + + mapillary.cache().images.rtree.load(features); + + var gj = { + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [[10,0], [10,0], [10,1]], + properties: { + key: '-', + pano: false, + coordinateProperties: { + cas: [90, 90, 90], + image_keys: ['0', '1', '2'] + } + } + } + }; + + mapillary.cache().sequences.lineString['-'] = gj; + mapillary.cache().sequences.forImage['0'] = '-'; + mapillary.cache().sequences.forImage['1'] = '-'; + mapillary.cache().sequences.forImage['2'] = '-'; + + var res = mapillary.sequences(context.projection); + expect(res).to.deep.eql([gj]); + }); + }); + + describe('#signsSupported', function() { it('returns false for Internet Explorer', function() { ua = 'Trident/7.0; rv:11.0'; diff --git a/test/spec/services/openstreetcam.js b/test/spec/services/openstreetcam.js new file mode 100644 index 000000000..facdd55ac --- /dev/null +++ b/test/spec/services/openstreetcam.js @@ -0,0 +1,310 @@ +describe('iD.serviceOpenstreetcam', function() { + var dimensions = [64, 64], + ua = navigator.userAgent, + isPhantom = (navigator.userAgent.match(/PhantomJS/) !== null), + uaMock = function () { return ua; }, + context, server, openstreetcam, orig; + + before(function() { + iD.services.openstreetcam = iD.serviceOpenstreetcam; + }); + + after(function() { + delete iD.services.openstreetcam; + }); + + beforeEach(function() { + context = iD.Context().assetPath('../dist/'); + context.projection + .scale(667544.214430109) // z14 + .translate([-116508, 0]) // 10,0 + .clipExtent([[0,0], dimensions]); + + server = sinon.fakeServer.create(); + openstreetcam = iD.services.openstreetcam; + openstreetcam.reset(); + + /* eslint-disable no-global-assign */ + /* mock userAgent */ + if (isPhantom) { + orig = navigator; + navigator = Object.create(orig, { userAgent: { get: uaMock }}); + } else { + orig = navigator.__lookupGetter__('userAgent'); + navigator.__defineGetter__('userAgent', uaMock); + } + }); + + afterEach(function() { + server.restore(); + + /* restore userAgent */ + if (isPhantom) { + navigator = orig; + } else { + navigator.__defineGetter__('userAgent', orig); + } + /* eslint-enable no-global-assign */ + }); + + + describe('#init', function() { + it('Initializes cache one time', function() { + var cache = openstreetcam.cache(); + expect(cache).to.have.property('images'); + expect(cache).to.have.property('sequences'); + + openstreetcam.init(); + var cache2 = openstreetcam.cache(); + expect(cache).to.equal(cache2); + }); + }); + + describe('#reset', function() { + it('resets cache and image', function() { + openstreetcam.cache({foo: 'bar'}); + openstreetcam.selectedImage('baz'); + + openstreetcam.reset(); + expect(openstreetcam.cache()).to.not.have.property('foo'); + expect(openstreetcam.selectedImage()).to.be.null; + }); + }); + + describe('#loadImages', function() { + it('fires loadedImages when images are loaded', function() { + var spy = sinon.spy(); + openstreetcam.on('loadedImages', spy); + openstreetcam.loadImages(context.projection); + + var data = { + status: { apiCode: '600', httpCode: 200, httpMessage: 'Success' }, + currentPageItems:[{ + id: '1', + sequence_id: '100', + sequence_index: '1', + lat: '0', + lng: '10.001', + name: 'storage6\/files\/photo\/foo1.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo1.jpg', + th_name: 'storage6\/files\/photo\/th\/foo1.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }, { + id: '2', + sequence_id: '100', + sequence_index: '2', + lat: '0', + lng: '10.002', + name: 'storage6\/files\/photo\/foo2.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo2.jpg', + th_name: 'storage6\/files\/photo\/th\/foo2.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }, { + id: '3', + sequence_id: '100', + sequence_index: '3', + lat: '0', + lng: '10.003', + name: 'storage6\/files\/photo\/foo3.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo3.jpg', + th_name: 'storage6\/files\/photo\/th\/foo3.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }], + totalFilteredItems: ['3'] + }; + + server.respondWith('POST', /nearby-photos/, + [200, { 'Content-Type': 'application/json' }, JSON.stringify(data) ]); + server.respond(); + + expect(spy).to.have.been.calledOnce; + }); + + it('does not load images around null island', function() { + var spy = sinon.spy(); + context.projection.translate([0,0]); + openstreetcam.on('loadedImages', spy); + openstreetcam.loadImages(context.projection); + + var data = { + status: { apiCode: '600', httpCode: 200, httpMessage: 'Success' }, + currentPageItems:[{ + id: '1', + sequence_id: '100', + sequence_index: '1', + lat: '0', + lng: '0', + name: 'storage6\/files\/photo\/foo1.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo1.jpg', + th_name: 'storage6\/files\/photo\/th\/foo1.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }, { + id: '2', + sequence_id: '100', + sequence_index: '2', + lat: '0', + lng: '0', + name: 'storage6\/files\/photo\/foo2.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo2.jpg', + th_name: 'storage6\/files\/photo\/th\/foo2.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }, { + id: '3', + sequence_id: '100', + sequence_index: '3', + lat: '0', + lng: '0', + name: 'storage6\/files\/photo\/foo3.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo3.jpg', + th_name: 'storage6\/files\/photo\/th\/foo3.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }], + totalFilteredItems: ['3'] + }; + + server.respondWith('POST', /nearby-photos/, + [200, { 'Content-Type': 'application/json' }, JSON.stringify(data) ]); + server.respond(); + + expect(spy).to.have.been.not.called; + }); + + it.skip('loads multiple pages of image results', function() { + var spy = sinon.spy(); + openstreetcam.on('loadedImages', spy); + openstreetcam.loadImages(context.projection); + + var features0 = [], + features1 = [], + i; + + for (i = 0; i < 1000; i++) { + features0.push({ + id: String(i), + sequence_id: '100', + sequence_index: String(i), + lat: '10', + lng: '0', + name: 'storage6\/files\/photo\/foo' + String(i) +'.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo' + String(i) +'.jpg', + th_name: 'storage6\/files\/photo\/th\/foo' + String(i) +'.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }); + } + for (i = 0; i < 500; i++) { + features1.push({ + id: String(i), + sequence_id: '100', + sequence_index: String(1000 + i), + lat: '10', + lng: '0', + name: 'storage6\/files\/photo\/foo' + String(1000 + i) +'.jpg', + lth_name: 'storage6\/files\/photo\/lth\/foo' + String(1000 + i) +'.jpg', + th_name: 'storage6\/files\/photo\/th\/foo' + String(1000 + i) +'.jpg', + shot_date: '2017-09-24 23:58:07', + heading: '90', + username: 'test' + }); + } + + var response0 = { + status: { apiCode: '600', httpCode: 200, httpMessage: 'Success' }, + currentPageItems: [features0], + totalFilteredItems: ['1000'] + }, + response1 = { + status: { apiCode: '600', httpCode: 200, httpMessage: 'Success' }, + currentPageItems: [features1], + totalFilteredItems: ['500'] + }; + + server.respondWith('POST', /nearby-photos/, function (request) { + var response; + if (request.requestBody.match(/page=1/) !== null) { + response = JSON.stringify(response0); + } else if (request.requestBody.match(/page=2/) !== null) { + response = JSON.stringify(response1); + } + request.respond(200, {'Content-Type': 'application/json'}, response); + }); + server.respond(); + + expect(spy).to.have.been.calledTwice; + }); + }); + + + describe('#images', function() { + it('returns images in the visible map area', function() { + var features = [ + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, + { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: 100, sequence_index: 2 } } + ]; + + openstreetcam.cache().images.rtree.load(features); + var res = openstreetcam.images(context.projection); + + expect(res).to.deep.eql([ + { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 }, + { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } + ]); + }); + + it('limits results no more than 3 stacked images in one spot', function() { + var features = [ + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '2', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 2 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '3', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 3 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '4', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 4 } } + ]; + + openstreetcam.cache().images.rtree.load(features); + var res = openstreetcam.images(context.projection); + expect(res).to.have.length.of.at.most(3); + }); + }); + + + describe('#sequences', function() { + it('returns sequence linestrings in the visible map area', function() { + var features = [ + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, + { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: 100, sequence_index: 2 } } + ]; + + openstreetcam.cache().images.rtree.load(features); + openstreetcam.cache().sequences['100'] = { rotation: 0, images: [ features[0].data, features[1].data, features[2].data ] }; + + var res = openstreetcam.sequences(context.projection); + expect(res).to.deep.eql([{ + type: 'LineString', + coordinates: [[10,0], [10,0], [10,1]] + }]); + }); + }); + + describe('#selectedImage', function() { + it('sets and gets selected image', function() { + openstreetcam.selectedImage('foo'); + expect(openstreetcam.selectedImage()).to.eql('foo'); + }); + }); + +}); From fb063aa2c507ee8e12b210a7423336feea9d0d46 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 7 Nov 2017 01:04:11 -0500 Subject: [PATCH 047/159] Render panoramic Mapillary viewfields as a sphere instead of arc (closes #3154) --- modules/svg/mapillary_images.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index 3d2f21afa..18da5c84a 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -156,7 +156,7 @@ export function svgMapillaryImages(projection, context, dispatch) { .append('path') .attr('class', 'viewfield') .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') - .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); + .attr('d', viewfieldPath); markers.selectAll('circle') .data([0]) @@ -165,6 +165,15 @@ export function svgMapillaryImages(projection, context, dispatch) { .attr('dx', '0') .attr('dy', '0') .attr('r', '6'); + + function viewfieldPath() { + var d = this.parentNode.__data__; + if (d.pano) { + return 'M 8,13 m -10,0 a 10,10 0 1,0 20,0 a 10,10 0 1,0 -20,0'; + } else { + return 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'; + } + } } From 4571fd05638152d7b629a24464feee098721b74b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 8 Nov 2017 00:35:44 -0500 Subject: [PATCH 048/159] Highlight selected/hovered streetview tracks, fade unselected Also some code cleanups and nitpicky variable renames More consistency in Mapillary/OpenStreetCam services --- css/60_photos.css | 60 +++++-- modules/services/mapillary.js | 239 +++++++++++++++++----------- modules/services/openstreetcam.js | 155 ++++++++++++------ modules/svg/mapillary_images.js | 64 +++++--- modules/svg/mapillary_signs.js | 33 ++-- modules/svg/openstreetcam_images.js | 71 ++++++--- test/spec/services/mapillary.js | 20 +-- test/spec/services/openstreetcam.js | 39 ++--- 8 files changed, 435 insertions(+), 246 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index a251a2658..54056a300 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -24,41 +24,71 @@ overflow: hidden; } +/* markers and sequences */ .viewfield-group { pointer-events: visible; cursor: pointer; } .viewfield-group * { - stroke-width: 1; - stroke: #444; z-index: 50; } - .viewfield-group.selected * { - stroke-width: 2; - stroke: #222; - fill: #ff5800 !important; + fill: #ffee00 !important; + z-index: 60; +} +.viewfield-group.hovered * { + fill: #eebb00 !important; + z-index: 70; +} +.viewfield-group.highlighted * { z-index: 60; } -.viewfield-group:hover * { - stroke-width: 1; +.viewfield-group circle { stroke: #333; - fill: #ff9900 !important; - z-index: 70; + stroke-width: 1; + stroke-opacity: 0.4; + fill-opacity: 0.4; +} +.viewfield-group.highlighted circle { + stroke-opacity: 0.9; + fill-opacity: 0.9; +} +.viewfield-group.highlighted.hovered circle { + stroke-width: 2; + stroke-opacity: 0.9; + fill-opacity: 0.9; +} +.viewfield-group.highlighted.selected circle { + stroke-width: 2; + stroke-opacity: 1; + fill-opacity: 1; } -.viewfield-group:hover path.viewfield, -.viewfield-group.selected path.viewfield, -.viewfield-group path.viewfield { +.viewfield-group .viewfield { stroke-width: 0; - fill-opacity: 0.6; + fill-opacity: 0.4; +} +.viewfield-group.highlighted .viewfield { + fill-opacity: 0.8; +} +.viewfield-group.highlighted.hovered .viewfield { + fill-opacity: 0.8; +} +.viewfield-group.highlighted.selected .viewfield { + fill-opacity: 0.9; } .sequence { - stroke-width: 2; fill: none; + stroke-width: 2; + stroke-opacity: 0.4; +} +.sequence.highlighted, +.sequence.selected { + stroke-width: 4; + stroke-opacity: 1; } diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index 932911d8a..d7d28619d 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -6,6 +6,7 @@ import _forEach from 'lodash-es/forEach'; import _isEmpty from 'lodash-es/isEmpty'; import _map from 'lodash-es/map'; import _some from 'lodash-es/some'; +import _union from 'lodash-es/union'; import { range as d3_range } from 'd3-array'; import { dispatch as d3_dispatch } from 'd3-dispatch'; @@ -35,12 +36,12 @@ var apibase = 'https://a.mapillary.com/v3/', maxResults = 1000, tileZoom = 14, dispatch = d3_dispatch('loadedImages', 'loadedSigns'), - mapillaryCache, - mapillaryClicks, - mapillaryImage, - mapillarySignDefs, - mapillarySignSprite, - mapillaryViewer; + _mlyCache, + _mlyClicks, + _mlySelectedImage, + _mlySignDefs, + _mlySignSprite, + _mlyViewer; function abortRequest(i) { @@ -120,7 +121,7 @@ function loadTiles(which, url, projection) { function loadNextTilePage(which, currZoom, url, tile) { - var cache = mapillaryCache[which], + var cache = _mlyCache[which], rect = tile.extent.rectangle(), maxPages = maxPageAtZoom(currZoom), nextPage = cache.nextPage[tile.id] || 0, @@ -165,14 +166,15 @@ function loadNextTilePage(which, currZoom, url, tile) { captured_at: feature.properties.captured_at, pano: feature.properties.pano }; + cache.forImageKey[d.key] = d; // cache imageKey -> image } else if (which === 'sequences') { - var sk = feature.properties.key; - cache.lineString[sk] = feature; // cache sequence_key -> linestring - feature.properties.coordinateProperties.image_keys.forEach(function(ik) { - cache.forImage[ik] = sk; // cache image_key -> sequence_key + var sequenceKey = feature.properties.key; + cache.lineString[sequenceKey] = feature; // cache sequenceKey -> lineString + feature.properties.coordinateProperties.image_keys.forEach(function(imageKey) { + cache.forImageKey[imageKey] = sequenceKey; // cache imageKey -> sequenceKey }); - return false; // nothing to actually insert + return false; // because no `d` data worth loading into an rbush } else if (which === 'objects') { d = { @@ -183,15 +185,15 @@ function loadNextTilePage(which, currZoom, url, tile) { detections: feature.properties.detections }; - // cache image_key -> detection_key + // cache imageKey -> detectionKey feature.properties.detections.forEach(function(detection) { - var ik = detection.image_key; - var dk = detection.detection_key; - if (!mapillaryCache.detections[ik]) { - mapillaryCache.detections[ik] = {}; + var imageKey = detection.image_key; + var detectionKey = detection.detection_key; + if (!_mlyCache.detections[imageKey]) { + _mlyCache.detections[imageKey] = {}; } - if (!mapillaryCache.detections[ik][dk]) { - mapillaryCache.detections[ik][dk] = {}; + if (!_mlyCache.detections[imageKey][detectionKey]) { + _mlyCache.detections[imageKey][detectionKey] = {}; } }); } @@ -199,6 +201,7 @@ function loadNextTilePage(which, currZoom, url, tile) { return { minX: loc[0], minY: loc[1], maxX: loc[0], maxY: loc[1], data: d }; + }).filter(Boolean); cache.rtree.load(features); @@ -295,7 +298,7 @@ function searchLimited(psize, limit, projection, rtree) { export default { init: function() { - if (!mapillaryCache) { + if (!_mlyCache) { this.reset(); } @@ -303,7 +306,7 @@ export default { }, reset: function() { - var cache = mapillaryCache; + var cache = _mlyCache; if (cache) { if (cache.images && cache.images.inflight) { @@ -317,27 +320,27 @@ export default { } } - mapillaryCache = { - images: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush() }, + _mlyCache = { + images: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush(), forImageKey: {} }, objects: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush() }, - sequences: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush(), forImage: {}, lineString: {} }, + sequences: { inflight: {}, loaded: {}, nextPage: {}, nextURL: {}, rtree: rbush(), forImageKey: {}, lineString: {} }, detections: {} }; - mapillaryImage = null; - mapillaryClicks = []; + _mlySelectedImage = null; + _mlyClicks = []; }, images: function(projection) { var psize = 16, limit = 3; - return searchLimited(psize, limit, projection, mapillaryCache.images.rtree); + return searchLimited(psize, limit, projection, _mlyCache.images.rtree); }, signs: function(projection) { var psize = 32, limit = 3; - return searchLimited(psize, limit, projection, mapillaryCache.objects.rtree); + return searchLimited(psize, limit, projection, _mlyCache.objects.rtree); }, @@ -349,17 +352,17 @@ export default { var sequenceKeys = {}; // all sequences for images in viewport - mapillaryCache.images.rtree.search(bbox) + _mlyCache.images.rtree.search(bbox) .forEach(function(d) { - var sk = mapillaryCache.sequences.forImage[d.data.key]; - if (sk) { - sequenceKeys[sk] = true; + var sequenceKey = _mlyCache.sequences.forImageKey[d.data.key]; + if (sequenceKey) { + sequenceKeys[sequenceKey] = true; } }); - // Return linestrings for the sequences - return Object.keys(sequenceKeys).map(function(sk) { - return mapillaryCache.sequences.lineString[sk]; + // Return lineStrings for the sequences + return Object.keys(sequenceKeys).map(function(sequenceKey) { + return _mlyCache.sequences.lineString[sequenceKey]; }); }, @@ -373,11 +376,11 @@ export default { signHTML: function(d) { - if (!mapillarySignDefs || !mapillarySignSprite) return; - var position = mapillarySignDefs[d.value]; + if (!_mlySignDefs || !_mlySignSprite) return; + var position = _mlySignDefs[d.value]; if (!position) return '
'; var iconStyle = [ - 'background-image:url(' + mapillarySignSprite + ')', + 'background-image:url(' + _mlySignSprite + ')', 'background-repeat:no-repeat', 'height:' + position.height + 'px', 'width:' + position.width + 'px', @@ -400,12 +403,12 @@ export default { loadTiles('objects', url, projection); // load traffic sign defs - if (!mapillarySignDefs) { - mapillarySignSprite = context.asset('img/traffic-signs/traffic-signs.png'); - mapillarySignDefs = {}; + if (!_mlySignDefs) { + _mlySignSprite = context.asset('img/traffic-signs/traffic-signs.png'); + _mlySignDefs = {}; d3_json(context.asset('img/traffic-signs/traffic-signs.json'), function(err, data) { if (err) return; - mapillarySignDefs = data; + _mlySignDefs = data; }); } }, @@ -455,7 +458,7 @@ export default { .selectAll('.photo-wrapper.mly-wrapper') .classed('hide', false); - mapillaryViewer.resize(); + _mlyViewer.resize(); } return this; @@ -468,10 +471,10 @@ export default { .selectAll('.photo-wrapper') .classed('hide', true); - d3_selectAll('.layer-mapillary-images .viewfield-group, .layer-mapillary-signs .icon-sign') + d3_selectAll('.viewfield-group, .sequence, .icon-sign') .classed('selected', false); - mapillaryImage = null; + _mlySelectedImage = null; return this; }, @@ -479,13 +482,13 @@ export default { parsePagination: parsePagination, - updateViewer: function(imageKey, context) { - if (!imageKey) return; + updateViewer: function(d, context) { + if (!d || !d.key) return; - if (!mapillaryViewer) { - this.initViewer(imageKey, context); + if (!_mlyViewer) { + this.initViewer(d.key, context); } else { - mapillaryViewer.moveToKey(imageKey); + _mlyViewer.moveToKey(d.key); } return this; @@ -504,51 +507,54 @@ export default { } }; - mapillaryViewer = new Mapillary.Viewer('mly', clientId, imageKey, opts); - mapillaryViewer.on('nodechanged', nodeChanged); + _mlyViewer = new Mapillary.Viewer('mly', clientId, imageKey, opts); + _mlyViewer.on('nodechanged', nodeChanged); } // nodeChanged: called after the viewer has changed images and is ready. // - // There is some logic here to batch up clicks into a mapillaryClicks array + // There is some logic here to batch up clicks into a _mlyClicks array // because the user might click on a lot of markers quickly and nodechanged // may be called out of order asychronously. // // Clicks are added to the array in `selectedImage` and removed here. // function nodeChanged(node) { - mapillaryViewer.getComponent('tag').removeAll(); // remove previous detections + _mlyViewer.getComponent('tag').removeAll(); // remove previous detections - var clicks = mapillaryClicks; + var clicks = _mlyClicks; var index = clicks.indexOf(node.key); - if (index > -1) { // `nodechanged` initiated from clicking on a marker.. - clicks.splice(index, 1); - // If `node.key` matches the current mapillaryImage, call `selectedImage()` + var selectedKey = _mlySelectedImage && _mlySelectedImage.key; + + if (index > -1) { // `nodechanged` initiated from clicking on a marker.. + clicks.splice(index, 1); // remove the click + // If `node.key` matches the current _mlySelectedImage, call `selectImage()` // one more time to update the detections and attribution.. - if (node.key === mapillaryImage) { - that.selectedImage(node.key, false); + if (node.key === selectedKey) { + that.selectImage(_mlySelectedImage, node.key, true); } } else { // `nodechanged` initiated from the Mapillary viewer controls.. var loc = node.computedLatLon ? [node.computedLatLon.lon, node.computedLatLon.lat] : [node.latLon.lon, node.latLon.lat]; context.map().centerEase(loc); - that.selectedImage(node.key, false); + that.selectImage(undefined, node.key, true); } } }, - selectedImage: function(imageKey, fromClick) { - if (!arguments.length) return mapillaryImage; - mapillaryImage = imageKey; - - if (fromClick) { - mapillaryClicks.push(imageKey); + selectImage: function(d, imageKey, fromViewer) { + if (!d && imageKey) { + d = _mlyCache.images.forImageKey[imageKey]; } - d3_selectAll('.viewfield-group') - .classed('selected', function(d) { - return d.key === imageKey; - }); + _mlySelectedImage = d; + imageKey = d && d.key; + + if (!fromViewer && imageKey) { + _mlyClicks.push(imageKey); + } + + this.setStyles(null, _mlySelectedImage, true); d3_selectAll('.layer-mapillary-signs .icon-sign') .classed('selected', function(d) { @@ -557,7 +563,7 @@ export default { }); }); - if (!imageKey) return this; + if (!d) return this; function localeTimestamp(s) { @@ -570,14 +576,14 @@ export default { var selected = d3_selectAll('.layer-mapillary-images .viewfield-group.selected'); if (selected.empty()) return this; - var datum = selected.datum(); - var timestamp = localeTimestamp(datum.captured_at); + var timestamp = localeTimestamp(d.captured_at); var attribution = d3_select('.mapillary-js-dom .Attribution'); var capturedAt = attribution.selectAll('.captured-at'); if (capturedAt.empty()) { capturedAt = attribution .insert('span', ':last-child') .attr('class', 'captured-at'); + attribution .insert('span', ':last-child') .text('|'); @@ -585,23 +591,79 @@ export default { capturedAt .text(timestamp); - this.updateDetections(); + this.updateDetections(d); return this; }, - updateDetections: function() { - if (!mapillaryViewer) return; + getSelectedImage: function() { + return _mlySelectedImage; + }, + + + getSequenceKeyForImage: function(d) { + var imageKey = d && d.key; + return imageKey && _mlyCache.sequences.forImageKey[imageKey]; + }, + + + getSelectedSequenceKey: function() { + return this.getSequenceKeyForImage(_mlySelectedImage); + }, + + + setStyles: function(hovered, selected, reset) { + if (reset) { // reset all layers + d3_selectAll('.viewfield-group') + .classed('highlighted', false) + .classed('hovered', false) + .classed('selected', false); + + d3_selectAll('.sequence') + .classed('highlighted', false) + .classed('selected', false); + } + + var hoveredImageKey = hovered && hovered.key; + var hoveredSequenceKey = this.getSequenceKeyForImage(hovered); + var hoveredLineString = hoveredSequenceKey && _mlyCache.sequences.lineString[hoveredSequenceKey]; + var hoveredImageKeys = (hoveredLineString && hoveredLineString.properties.coordinateProperties.image_keys) || []; + + var selectedImageKey = selected && selected.key; + var selectedSequenceKey = this.getSequenceKeyForImage(selected); + var selectedLineString = selectedSequenceKey && _mlyCache.sequences.lineString[selectedSequenceKey]; + var selectedImageKeys = (selectedLineString && selectedLineString.properties.coordinateProperties.image_keys) || []; + + // highlight sibling viewfields on either the selected or the hovered sequences + var highlightedImageKeys = _union(hoveredImageKeys, selectedImageKeys); + + d3_selectAll('.layer-mapillary-images .viewfield-group') + .classed('highlighted', function(d) { return highlightedImageKeys.indexOf(d.key) !== -1; }) + .classed('hovered', function(d) { return d.key === hoveredImageKey; }) + .classed('selected', function(d) { return d.key === selectedImageKey; }); + + d3_selectAll('.layer-mapillary-images .sequence') + .classed('highlighted', function(d) { return d.properties.key === hoveredSequenceKey; }) + .classed('selected', function(d) { return d.properties.key === selectedSequenceKey; }); + + return this; + }, + + + updateDetections: function(d) { + if (!_mlyViewer) return; + + var imageKey = d && d.key; + var detections = (imageKey && _mlyCache.detections[imageKey]) || []; - var detections = mapillaryCache.detections[mapillaryImage]; _forEach(detections, function(data, k) { if (_isEmpty(data)) { loadDetection(k); } else { var tag = makeTag(data); if (tag) { - var tagComponent = mapillaryViewer.getComponent('tag'); + var tagComponent = _mlyViewer.getComponent('tag'); tagComponent.add([tag]); } } @@ -622,13 +684,14 @@ export default { .get(function(err, data) { if (!data || !data.properties) return; - var ik = data.properties.image_key; - mapillaryCache.detections[ik][detectionKey] = data; + var imageKey = data.properties.image_key; + _mlyCache.detections[imageKey][detectionKey] = data; - if (mapillaryImage === ik) { + var selectedKey = _mlySelectedImage && _mlySelectedImage.key; + if (imageKey === selectedKey) { var tag = makeTag(data); if (tag) { - var tagComponent = mapillaryViewer.getComponent('tag'); + var tagComponent = _mlyViewer.getComponent('tag'); tagComponent.add([tag]); } } @@ -683,16 +746,14 @@ export default { }, - cache: function(_) { - if (!arguments.length) return mapillaryCache; - mapillaryCache = _; - return this; + cache: function() { + return _mlyCache; }, signDefs: function(_) { - if (!arguments.length) return mapillarySignDefs; - mapillarySignDefs = _; + if (!arguments.length) return _mlySignDefs; + _mlySignDefs = _; return this; } diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 01320c78f..9d76176a1 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -3,6 +3,7 @@ import _find from 'lodash-es/find'; import _flatten from 'lodash-es/flatten'; import _forEach from 'lodash-es/forEach'; import _map from 'lodash-es/map'; +import _union from 'lodash-es/union'; import { range as d3_range } from 'd3-array'; import { dispatch as d3_dispatch } from 'd3-dispatch'; @@ -24,8 +25,8 @@ var apibase = 'http://openstreetcam.org', maxResults = 1000, tileZoom = 14, dispatch = d3_dispatch('loadedImages'), - openstreetcamCache, - openstreetcamImage; + _oscCache, + _oscSelectedImage; function abortRequest(i) { @@ -105,7 +106,7 @@ function loadTiles(which, url, projection) { function loadNextTilePage(which, currZoom, url, tile) { - var cache = openstreetcamCache[which]; + var cache = _oscCache[which]; var bbox = tile.extent.bbox(); var maxPages = maxPageAtZoom(currZoom); var nextPage = cache.nextPage[tile.id] || 1; @@ -150,15 +151,15 @@ function loadNextTilePage(which, currZoom, url, tile) { captured_at: localeDateString(item.shot_date || item.date_added), captured_by: item.username, imagePath: item.lth_name, - sequence_id: +item.sequence_id, + sequence_id: item.sequence_id, sequence_index: +item.sequence_index }; // cache sequence info - var seq = openstreetcamCache.sequences[d.sequence_id]; + var seq = _oscCache.sequences[d.sequence_id]; if (!seq) { seq = { rotation: 0, images: [] }; - openstreetcamCache.sequences[d.sequence_id] = seq; + _oscCache.sequences[d.sequence_id] = seq; } seq.images[d.sequence_index] = d; } @@ -225,7 +226,7 @@ function searchLimited(psize, limit, projection, rtree) { export default { init: function() { - if (!openstreetcamCache) { + if (!_oscCache) { this.reset(); } @@ -233,7 +234,7 @@ export default { }, reset: function() { - var cache = openstreetcamCache; + var cache = _oscCache; if (cache) { if (cache.images && cache.images.inflight) { @@ -241,18 +242,18 @@ export default { } } - openstreetcamCache = { + _oscCache = { images: { inflight: {}, loaded: {}, nextPage: {}, rtree: rbush() }, sequences: {} }; - openstreetcamImage = null; + _oscSelectedImage = null; }, images: function(projection) { var psize = 16, limit = 3; - return searchLimited(psize, limit, projection, openstreetcamCache.images.rtree); + return searchLimited(psize, limit, projection, _oscCache.images.rtree); }, @@ -261,24 +262,26 @@ export default { var min = [viewport[0][0], viewport[1][1]]; var max = [viewport[1][0], viewport[0][1]]; var bbox = geoExtent(projection.invert(min), projection.invert(max)).bbox(); - var seq_ids = {}; + var sequenceKeys = {}; // all sequences for images in viewport - openstreetcamCache.images.rtree.search(bbox) - .forEach(function(d) { seq_ids[d.data.sequence_id] = true; }); + _oscCache.images.rtree.search(bbox) + .forEach(function(d) { sequenceKeys[d.data.sequence_id] = true; }); // make linestrings from those sequences var lineStrings = []; - Object.keys(seq_ids).forEach(function(seq_id) { - var seq = openstreetcamCache.sequences[seq_id]; - var images = seq && seq.images; - if (images) { - lineStrings.push({ - type: 'LineString', - coordinates: images.map(function (d) { return d.loc; }).filter(Boolean) - }); - } - }); + Object.keys(sequenceKeys) + .forEach(function(sequenceKey) { + var seq = _oscCache.sequences[sequenceKey]; + var images = seq && seq.images; + if (images) { + lineStrings.push({ + type: 'LineString', + coordinates: images.map(function (d) { return d.loc; }).filter(Boolean), + properties: { key: sequenceKey } + }); + } + }); return lineStrings; }, @@ -334,14 +337,14 @@ export default { function rotate(deg) { return function() { - if (!openstreetcamImage) return; - var seq_id = openstreetcamImage.sequence_id; - var seq = openstreetcamCache.sequences[seq_id]; - if (!seq) return; + if (!_oscSelectedImage) return; + var sequenceKey = _oscSelectedImage.sequence_id; + var sequence = _oscCache.sequences[sequenceKey]; + if (!sequence) return; - var r = seq.rotation || 0; + var r = sequence.rotation || 0; r += deg; - seq.rotation = r; + sequence.rotation = r; d3_select('#photoviewer .osc-wrapper .osc-image') .transition() @@ -352,19 +355,19 @@ export default { function step(stepBy) { return function() { - if (!openstreetcamImage) return; - var seq_id = openstreetcamImage.sequence_id; - var seq = openstreetcamCache.sequences[seq_id]; - if (!seq) return; + if (!_oscSelectedImage) return; + var sequenceKey = _oscSelectedImage.sequence_id; + var sequence = _oscCache.sequences[sequenceKey]; + if (!sequence) return; - var nextIndex = openstreetcamImage.sequence_index + stepBy; - var nextImage = seq.images[nextIndex]; + var nextIndex = _oscSelectedImage.sequence_index + stepBy; + var nextImage = sequence.images[nextIndex]; if (!nextImage) return; context.map().centerEase(nextImage.loc); that - .selectedImage(nextImage) + .selectImage(nextImage) .updateViewer(nextImage); }; } @@ -397,10 +400,10 @@ export default { .selectAll('.photo-wrapper') .classed('hide', true); - d3_selectAll('.layer-openstreetcam-images .viewfield-group') + d3_selectAll('.viewfield-group, .sequence, .icon-sign') .classed('selected', false); - openstreetcamImage = null; + _oscSelectedImage = null; return this; }, @@ -412,8 +415,8 @@ export default { .remove(); if (d) { - var seq = openstreetcamCache.sequences[d.sequence_id]; - var r = (seq && seq.rotation) || 0; + var sequence = _oscCache.sequences[d.sequence_id]; + var r = (sequence && sequence.rotation) || 0; wrap.append('img') .attr('class', 'osc-image') @@ -457,23 +460,73 @@ export default { }, - selectedImage: function(d) { - if (!arguments.length) return openstreetcamImage; - openstreetcamImage = d; + selectImage: function(d) { + _oscSelectedImage = d; - d3_selectAll('.viewfield-group') - .classed('selected', function(d) { - return d.key === openstreetcamImage.key; - }); + this.setStyles(null, _oscSelectedImage, true); + + d3_selectAll('.icon-sign') + .classed('selected', false); return this; }, - cache: function(_) { - if (!arguments.length) return openstreetcamCache; - openstreetcamCache = _; + getSelectedImage: function() { + return _oscSelectedImage; + }, + + + getSequenceKeyForImage: function(d) { + return d && d.sequence_id; + }, + + + getSelectedSequenceKey: function() { + return this.getSequenceKeyForImage(_oscSelectedImage); + }, + + + setStyles: function(hovered, selected, reset) { + if (reset) { // reset all layers + d3_selectAll('.viewfield-group') + .classed('highlighted', false) + .classed('hovered', false) + .classed('selected', false); + + d3_selectAll('.sequence') + .classed('highlighted', false) + .classed('selected', false); + } + + var hoveredImageKey = hovered && hovered.key; + var hoveredSequenceKey = this.getSequenceKeyForImage(hovered); + var hoveredSequence = hoveredSequenceKey && _oscCache.sequences[hoveredSequenceKey]; + var hoveredImageKeys = (hoveredSequence && hoveredSequence.images.map(function (d) { return d.key; })) || []; + + var selectedImageKey = selected && selected.key; + var selectedSequenceKey = this.getSequenceKeyForImage(selected); + var selectedSequence = selectedSequenceKey && _oscCache.sequences[selectedSequenceKey]; + var selectedImageKeys = (selectedSequence && selectedSequence.images.map(function (d) { return d.key; })) || []; + + // highlight sibling viewfields on either the selected or the hovered sequences + var highlightedImageKeys = _union(hoveredImageKeys, selectedImageKeys); + + d3_selectAll('.layer-openstreetcam-images .viewfield-group') + .classed('highlighted', function(d) { return highlightedImageKeys.indexOf(d.key) !== -1; }) + .classed('hovered', function(d) { return d.key === hoveredImageKey; }) + .classed('selected', function(d) { return d.key === selectedImageKey; }); + + d3_selectAll('.layer-openstreetcam-images .sequence') + .classed('highlighted', function(d) { return d.properties.key === hoveredSequenceKey; }) + .classed('selected', function(d) { return d.properties.key === selectedSequenceKey; }); + return this; + }, + + + cache: function() { + return _oscCache; } }; diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index 18da5c84a..d84de323a 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -14,7 +14,7 @@ import { services } from '../services'; export function svgMapillaryImages(projection, context, dispatch) { var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000), minZoom = 12, - minViewfieldZoom = 17, + minViewfieldZoom = 18, layer = d3_select(null), _mapillary; @@ -26,7 +26,7 @@ export function svgMapillaryImages(projection, context, dispatch) { } - function getMapillary() { + function getService() { if (services.mapillary && !_mapillary) { _mapillary = services.mapillary; _mapillary.event.on('loadedImages', throttledRedraw); @@ -39,10 +39,10 @@ export function svgMapillaryImages(projection, context, dispatch) { function showLayer() { - var mapillary = getMapillary(); - if (!mapillary) return; + var service = getService(); + if (!service) return; - mapillary.loadViewer(context); + service.loadViewer(context); editOn(); layer @@ -55,9 +55,9 @@ export function svgMapillaryImages(projection, context, dispatch) { function hideLayer() { - var mapillary = getMapillary(); - if (mapillary) { - mapillary.hideViewer(); + var service = getService(); + if (service) { + service.hideViewer(); } throttledRedraw.cancel(); @@ -82,18 +82,34 @@ export function svgMapillaryImages(projection, context, dispatch) { function click(d) { - var mapillary = getMapillary(); - if (!mapillary) return; + var service = getService(); + if (!service) return; context.map().centerEase(d.loc); - mapillary - .selectedImage(d.key, true) - .updateViewer(d.key, context) + service + .selectImage(d) + .updateViewer(d, context) .showViewer(); } + function mouseover(d) { + var service = getService(); + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(d, datum); + } + + + function mouseout() { + var service = getService(); + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(null, datum); + } + + function transform(d) { var t = svgPointTransform(projection)(d); if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; @@ -103,10 +119,9 @@ export function svgMapillaryImages(projection, context, dispatch) { function update() { var highZoom = ~~context.map().zoom() >= minViewfieldZoom; - var mapillary = getMapillary(); - var images = (mapillary ? mapillary.images(projection) : []); - var sequences = (mapillary && highZoom ? mapillary.sequences(projection) : []); - var imageKey = mapillary ? mapillary.selectedImage() : null; + var service = getService(); + var images = (service ? service.images(projection) : []); + var sequences = (service && highZoom ? service.sequences(projection) : []); var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; var project = projection.stream; @@ -115,7 +130,7 @@ export function svgMapillaryImages(projection, context, dispatch) { }}); var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') - .data(sequences); + .data(sequences, function(d) { return d.properties.key; }); lineStrings.exit() .remove(); @@ -138,7 +153,8 @@ export function svgMapillaryImages(projection, context, dispatch) { var enter = markers.enter() .append('g') .attr('class', 'viewfield-group') - .classed('selected', function(d) { return d.key === imageKey; }) + .on('mouseover', mouseover) + .on('mouseout', mouseout) .on('click', click); markers = markers @@ -166,6 +182,12 @@ export function svgMapillaryImages(projection, context, dispatch) { .attr('dy', '0') .attr('r', '6'); + + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(null, datum); + + function viewfieldPath() { var d = this.parentNode.__data__; if (d.pano) { @@ -179,7 +201,7 @@ export function svgMapillaryImages(projection, context, dispatch) { function drawImages(selection) { var enabled = svgMapillaryImages.enabled, - mapillary = getMapillary(); + mapillary = getService(); layer = selection.selectAll('.layer-mapillary-images') .data(mapillary ? [0] : []); @@ -229,7 +251,7 @@ export function svgMapillaryImages(projection, context, dispatch) { drawImages.supported = function() { - return !!getMapillary(); + return !!getService(); }; diff --git a/modules/svg/mapillary_signs.js b/modules/svg/mapillary_signs.js index 5137c5a8f..bbf9124a3 100644 --- a/modules/svg/mapillary_signs.js +++ b/modules/svg/mapillary_signs.js @@ -18,7 +18,7 @@ export function svgMapillarySigns(projection, context, dispatch) { } - function getMapillary() { + function getService() { if (services.mapillary && !_mapillary) { _mapillary = services.mapillary; _mapillary.event.on('loadedSigns', throttledRedraw); @@ -52,12 +52,12 @@ export function svgMapillarySigns(projection, context, dispatch) { function click(d) { - var mapillary = getMapillary(); - if (!mapillary) return; + var service = getService(); + if (!service) return; context.map().centerEase(d.loc); - var selected = mapillary.selectedImage(), + var selected = service.selectedImage(), imageKey; // Pick one of the images the sign was detected in, @@ -68,17 +68,18 @@ export function svgMapillarySigns(projection, context, dispatch) { } }); - mapillary - .selectedImage(imageKey, true) + service + .selectImage(null, imageKey) .updateViewer(imageKey, context) .showViewer(); } function update() { - var mapillary = getMapillary(), - data = (mapillary ? mapillary.signs(projection) : []), - imageKey = mapillary ? mapillary.selectedImage() : null; + var service = getService(); + var data = (service ? service.signs(projection) : []); + var image = service && service.getSelectedImage(); + var imageKey = image && image.key; var signs = layer.selectAll('.icon-sign') .data(data, function(d) { return d.key; }); @@ -101,7 +102,7 @@ export function svgMapillarySigns(projection, context, dispatch) { enter .append('xhtml:body') .attr('class', 'icon-sign-body') - .html(mapillary.signHTML); + .html(service.signHTML); signs .merge(enter) @@ -112,10 +113,10 @@ export function svgMapillarySigns(projection, context, dispatch) { function drawSigns(selection) { var enabled = svgMapillarySigns.enabled, - mapillary = getMapillary(); + service = getService(); layer = selection.selectAll('.layer-mapillary-signs') - .data(mapillary ? [0] : []); + .data(service ? [0] : []); layer.exit() .remove(); @@ -127,10 +128,10 @@ export function svgMapillarySigns(projection, context, dispatch) { .merge(layer); if (enabled) { - if (mapillary && ~~context.map().zoom() >= minZoom) { + if (service && ~~context.map().zoom() >= minZoom) { editOn(); update(); - mapillary.loadSigns(context, projection); + service.loadSigns(context, projection); } else { editOff(); } @@ -152,8 +153,8 @@ export function svgMapillarySigns(projection, context, dispatch) { drawSigns.supported = function() { - var mapillary = getMapillary(); - return (mapillary && mapillary.signsSupported()); + var service = getService(); + return (service && service.signsSupported()); }; diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 458bec47c..477bced21 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -1,11 +1,12 @@ import _throttle from 'lodash-es/throttle'; -import { select as d3_select } from 'd3-selection'; import { geoIdentity as d3_geoIdentity, geoPath as d3_geoPath } from 'd3-geo'; +import { select as d3_select } from 'd3-selection'; + import { svgPointTransform } from './point_transform'; import { services } from '../services'; @@ -13,7 +14,7 @@ import { services } from '../services'; export function svgOpenstreetcamImages(projection, context, dispatch) { var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000), minZoom = 12, - minViewfieldZoom = 17, + minViewfieldZoom = 18, layer = d3_select(null), _openstreetcam; @@ -25,7 +26,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { } - function getOpenstreetcam() { + function getService() { if (services.openstreetcam && !_openstreetcam) { _openstreetcam = services.openstreetcam; _openstreetcam.event.on('loadedImages', throttledRedraw); @@ -38,10 +39,10 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function showLayer() { - var openstreetcam = getOpenstreetcam(); - if (!openstreetcam) return; + var service = getService(); + if (!service) return; - openstreetcam.loadViewer(context); + service.loadViewer(context); editOn(); layer @@ -54,9 +55,9 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function hideLayer() { - var openstreetcam = getOpenstreetcam(); - if (openstreetcam) { - openstreetcam.hideViewer(); + var service = getService(); + if (service) { + service.hideViewer(); } throttledRedraw.cancel(); @@ -81,18 +82,34 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function click(d) { - var openstreetcam = getOpenstreetcam(); - if (!openstreetcam) return; + var service = getService(); + if (!service) return; context.map().centerEase(d.loc); - openstreetcam - .selectedImage(d) + service + .selectImage(d) .updateViewer(d) .showViewer(); } + function mouseover(d) { + var service = getService(); + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(d, datum); + } + + + function mouseout() { + var service = getService(); + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(null, datum); + } + + function transform(d) { var t = svgPointTransform(projection)(d); if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; @@ -102,11 +119,9 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function update() { var highZoom = ~~context.map().zoom() >= minViewfieldZoom; - var openstreetcam = getOpenstreetcam(); - var sequences = (openstreetcam && highZoom ? openstreetcam.sequences(projection) : []); - var images = (openstreetcam ? openstreetcam.images(projection) : []); - var selectedImage = openstreetcam && openstreetcam.selectedImage(); - var imageKey = selectedImage && selectedImage.key; + var service = getService(); + var sequences = (service && highZoom ? service.sequences(projection) : []); + var images = (service ? service.images(projection) : []); var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; var project = projection.stream; @@ -115,7 +130,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { }}); var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') - .data(sequences); + .data(sequences, function(d) { return d.properties.key; }); lineStrings.exit() .remove(); @@ -138,7 +153,8 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { var enter = markers.enter() .append('g') .attr('class', 'viewfield-group') - .classed('selected', function(d) { return d.key === imageKey; }) + .on('mouseover', mouseover) + .on('mouseout', mouseout) .on('click', click); markers = markers @@ -165,15 +181,20 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { .attr('dx', '0') .attr('dy', '0') .attr('r', '6'); + + + var selected = d3_select('.viewfield-group.selected'); + var datum = selected.size() && selected.datum(); + if (service) service.setStyles(null, datum); } function drawImages(selection) { var enabled = svgOpenstreetcamImages.enabled, - openstreetcam = getOpenstreetcam(); + service = getService(); layer = selection.selectAll('.layer-openstreetcam-images') - .data(openstreetcam ? [0] : []); + .data(service ? [0] : []); layer.exit() .remove(); @@ -195,10 +216,10 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { .merge(layer); if (enabled) { - if (openstreetcam && ~~context.map().zoom() >= minZoom) { + if (service && ~~context.map().zoom() >= minZoom) { editOn(); update(); - openstreetcam.loadImages(projection); + service.loadImages(projection); } else { editOff(); } @@ -220,7 +241,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { drawImages.supported = function() { - return !!getOpenstreetcam(); + return !!getService(); }; diff --git a/test/spec/services/mapillary.js b/test/spec/services/mapillary.js index e70d896f1..8fb7aef15 100644 --- a/test/spec/services/mapillary.js +++ b/test/spec/services/mapillary.js @@ -65,12 +65,12 @@ describe('iD.serviceMapillary', function() { describe('#reset', function() { it('resets cache and image', function() { - mapillary.cache({foo: 'bar'}); - mapillary.selectedImage('baz'); + mapillary.cache().foo = 'bar'; + mapillary.selectImage({key: 'baz'}); mapillary.reset(); expect(mapillary.cache()).to.not.have.property('foo'); - expect(mapillary.selectedImage()).to.be.null; + expect(mapillary.getSelectedImage()).to.be.null; }); }); @@ -377,9 +377,9 @@ describe('iD.serviceMapillary', function() { }; mapillary.cache().sequences.lineString['-'] = gj; - mapillary.cache().sequences.forImage['0'] = '-'; - mapillary.cache().sequences.forImage['1'] = '-'; - mapillary.cache().sequences.forImage['2'] = '-'; + mapillary.cache().sequences.forImageKey['0'] = '-'; + mapillary.cache().sequences.forImageKey['1'] = '-'; + mapillary.cache().sequences.forImageKey['2'] = '-'; var res = mapillary.sequences(context.projection); expect(res).to.deep.eql([gj]); @@ -430,10 +430,10 @@ describe('iD.serviceMapillary', function() { }); }); - describe('#selectedImage', function() { - it('sets and gets selected image', function() { - mapillary.selectedImage('foo'); - expect(mapillary.selectedImage()).to.eql('foo'); + describe('#selectImage', function() { + it('gets and sets the selected image', function() { + mapillary.selectImage('foo'); + expect(mapillary.getSelectedImage()).to.eql('foo'); }); }); diff --git a/test/spec/services/openstreetcam.js b/test/spec/services/openstreetcam.js index facdd55ac..e9d8dbc27 100644 --- a/test/spec/services/openstreetcam.js +++ b/test/spec/services/openstreetcam.js @@ -62,12 +62,12 @@ describe('iD.serviceOpenstreetcam', function() { describe('#reset', function() { it('resets cache and image', function() { - openstreetcam.cache({foo: 'bar'}); - openstreetcam.selectedImage('baz'); + openstreetcam.cache().foo = 'bar'; + openstreetcam.selectImage({key: 'baz'}); openstreetcam.reset(); expect(openstreetcam.cache()).to.not.have.property('foo'); - expect(openstreetcam.selectedImage()).to.be.null; + expect(openstreetcam.getSelectedImage()).to.be.null; }); }); @@ -251,27 +251,27 @@ describe('iD.serviceOpenstreetcam', function() { describe('#images', function() { it('returns images in the visible map area', function() { var features = [ - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, - { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: 100, sequence_index: 2 } } + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 1 } }, + { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: '100', sequence_index: 2 } } ]; openstreetcam.cache().images.rtree.load(features); var res = openstreetcam.images(context.projection); expect(res).to.deep.eql([ - { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 }, - { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } + { key: '0', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 0 }, + { key: '1', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 1 } ]); }); it('limits results no more than 3 stacked images in one spot', function() { var features = [ - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '2', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 2 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '3', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 3 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '4', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 4 } } + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 1 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '2', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 2 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '3', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 3 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '4', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 4 } } ]; openstreetcam.cache().images.rtree.load(features); @@ -284,9 +284,9 @@ describe('iD.serviceOpenstreetcam', function() { describe('#sequences', function() { it('returns sequence linestrings in the visible map area', function() { var features = [ - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 0 } }, - { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: 100, sequence_index: 1 } }, - { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: 100, sequence_index: 2 } } + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '0', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 0 } }, + { minX: 10, minY: 0, maxX: 10, maxY: 0, data: { key: '1', loc: [10,0], ca: 90, sequence_id: '100', sequence_index: 1 } }, + { minX: 10, minY: 1, maxX: 10, maxY: 1, data: { key: '2', loc: [10,1], ca: 90, sequence_id: '100', sequence_index: 2 } } ]; openstreetcam.cache().images.rtree.load(features); @@ -295,15 +295,16 @@ describe('iD.serviceOpenstreetcam', function() { var res = openstreetcam.sequences(context.projection); expect(res).to.deep.eql([{ type: 'LineString', - coordinates: [[10,0], [10,0], [10,1]] + coordinates: [[10,0], [10,0], [10,1]], + properties: { key: '100' } }]); }); }); describe('#selectedImage', function() { it('sets and gets selected image', function() { - openstreetcam.selectedImage('foo'); - expect(openstreetcam.selectedImage()).to.eql('foo'); + openstreetcam.selectImage('foo'); + expect(openstreetcam.getSelectedImage()).to.eql('foo'); }); }); From 0702c668344531999b478671130635e702701242 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 8 Nov 2017 15:30:45 -0500 Subject: [PATCH 049/159] Improve sign hover/selected, fix Mapillary viewer setup for signs layer --- css/60_photos.css | 21 ++++------- modules/services/mapillary.js | 58 ++++++++++++++++------------- modules/services/openstreetcam.js | 13 +++---- modules/svg/mapillary_images.js | 16 ++------ modules/svg/mapillary_signs.js | 18 ++++++--- modules/svg/openstreetcam_images.js | 13 +------ 6 files changed, 63 insertions(+), 76 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 54056a300..4411ee12b 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -96,11 +96,9 @@ .layer-mapillary-images { pointer-events: none; } - .layer-mapillary-images .viewfield-group * { fill: #55ff22; } - .layer-mapillary-images .sequence { stroke: #55ff22; } @@ -117,19 +115,19 @@ width: 24px; outline: 2px solid transparent; pointer-events: visible; - cursor: pointer; /* Opera */ - cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */ + cursor: pointer; z-index: 70; overflow: visible; } -.layer-mapillary-signs .icon-sign:hover .icon-sign-body { - outline: 2px solid rgba(255,198,0,0.8); +.layer-mapillary-signs .icon-sign.selected .icon-sign-body { + outline: 5px solid #ffee00; + background-color: #ffee00; z-index: 80; } - -.layer-mapillary-signs .icon-sign.selected .icon-sign-body { - outline: 2px solid rgba(255,0,0,0.8); +.layer-mapillary-signs .icon-sign:hover .icon-sign-body { + outline: 5px solid #eebb00; + background-color: #eebb00; z-index: 80; } @@ -138,11 +136,9 @@ .layer-openstreetcam-images { pointer-events: none; } - .layer-openstreetcam-images .viewfield-group * { fill: #77ddff; } - .layer-openstreetcam-images .sequence { stroke: #77ddff; } @@ -151,12 +147,11 @@ /* Mapillary viewer */ #mly .domRenderer .TagSymbol { font-size: 10px; - background-color: rgba(0, 0, 0, 0.4); + background-color: rgba(0,0,0,0.4); padding: 0 4px; border-radius: 4px; top: -25px; } - #mly .domRenderer .Attribution { width: 100%; font-size: 10px; diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index d7d28619d..36df2c0ad 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -71,6 +71,14 @@ function maxPageAtZoom(z) { } +function localeTimestamp(s) { + if (!s) return null; + var d = new Date(s); + if (isNaN(d.getTime())) return null; + return d.toLocaleString(undefined, { timeZone: 'UTC' }); +} + + function getTiles(projection) { var s = projection.scale() * 2 * Math.PI, z = Math.max(Math.log(s) / Math.log(2) - 8, 0), @@ -399,8 +407,9 @@ export default { loadSigns: function(context, projection) { - var url = apibase + 'objects?'; - loadTiles('objects', url, projection); + // if we are looking at signs, we'll actually need to fetch images too + loadTiles('images', apibase + 'images?', projection); + loadTiles('objects', apibase + 'objects?', projection); // load traffic sign defs if (!_mlySignDefs) { @@ -482,13 +491,13 @@ export default { parsePagination: parsePagination, - updateViewer: function(d, context) { - if (!d || !d.key) return; + updateViewer: function(imageKey, context) { + if (!imageKey) return this; if (!_mlyViewer) { - this.initViewer(d.key, context); + this.initViewer(imageKey, context); } else { - _mlyViewer.moveToKey(d.key); + _mlyViewer.moveToKey(imageKey); } return this; @@ -542,19 +551,29 @@ export default { }, + // Pass the image datum itself in `d` or the `imageKey` string. + // This allows images to be selected from places that dont have access + // to the full image datum (like the street signs layer or the js viewer) selectImage: function(d, imageKey, fromViewer) { if (!d && imageKey) { + // If the user clicked on something that's not an image marker, we + // might get in here.. Cache lookup can fail, e.g. if the user + // clicked a streetsign, but images are loading slowly asynchronously. + // We'll try to carry on anyway if there is no datum. There just + // might be a delay before user sees detections, captured_at, etc. d = _mlyCache.images.forImageKey[imageKey]; } _mlySelectedImage = d; - imageKey = d && d.key; + var viewer = d3_select('#photoviewer'); + if (!viewer.empty()) viewer.datum(d); + imageKey = (d && d.key) || imageKey; if (!fromViewer && imageKey) { _mlyClicks.push(imageKey); } - this.setStyles(null, _mlySelectedImage, true); + this.setStyles(null, true); d3_selectAll('.layer-mapillary-signs .icon-sign') .classed('selected', function(d) { @@ -565,19 +584,9 @@ export default { if (!d) return this; - - function localeTimestamp(s) { - if (!s) return null; - var d = new Date(s); - if (isNaN(d.getTime())) return null; - return d.toLocaleString(undefined, { timeZone: 'UTC' }); - } - - var selected = d3_selectAll('.layer-mapillary-images .viewfield-group.selected'); - if (selected.empty()) return this; - - var timestamp = localeTimestamp(d.captured_at); + // if viewer is just starting up, attribution might not be available yet var attribution = d3_select('.mapillary-js-dom .Attribution'); + var timestamp = localeTimestamp(d.captured_at); var capturedAt = attribution.selectAll('.captured-at'); if (capturedAt.empty()) { capturedAt = attribution @@ -608,12 +617,7 @@ export default { }, - getSelectedSequenceKey: function() { - return this.getSequenceKeyForImage(_mlySelectedImage); - }, - - - setStyles: function(hovered, selected, reset) { + setStyles: function(hovered, reset) { if (reset) { // reset all layers d3_selectAll('.viewfield-group') .classed('highlighted', false) @@ -630,6 +634,8 @@ export default { var hoveredLineString = hoveredSequenceKey && _mlyCache.sequences.lineString[hoveredSequenceKey]; var hoveredImageKeys = (hoveredLineString && hoveredLineString.properties.coordinateProperties.image_keys) || []; + var viewer = d3_select('#photoviewer'); + var selected = viewer.empty() ? undefined : viewer.datum(); var selectedImageKey = selected && selected.key; var selectedSequenceKey = this.getSequenceKeyForImage(selected); var selectedLineString = selectedSequenceKey && _mlyCache.sequences.lineString[selectedSequenceKey]; diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 9d76176a1..51d767be7 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -462,8 +462,10 @@ export default { selectImage: function(d) { _oscSelectedImage = d; + var viewer = d3_select('#photoviewer'); + if (!viewer.empty()) viewer.datum(d); - this.setStyles(null, _oscSelectedImage, true); + this.setStyles(null, true); d3_selectAll('.icon-sign') .classed('selected', false); @@ -482,12 +484,7 @@ export default { }, - getSelectedSequenceKey: function() { - return this.getSequenceKeyForImage(_oscSelectedImage); - }, - - - setStyles: function(hovered, selected, reset) { + setStyles: function(hovered, reset) { if (reset) { // reset all layers d3_selectAll('.viewfield-group') .classed('highlighted', false) @@ -504,6 +501,8 @@ export default { var hoveredSequence = hoveredSequenceKey && _oscCache.sequences[hoveredSequenceKey]; var hoveredImageKeys = (hoveredSequence && hoveredSequence.images.map(function (d) { return d.key; })) || []; + var viewer = d3_select('#photoviewer'); + var selected = viewer.empty() ? undefined : viewer.datum(); var selectedImageKey = selected && selected.key; var selectedSequenceKey = this.getSequenceKeyForImage(selected); var selectedSequence = selectedSequenceKey && _oscCache.sequences[selectedSequenceKey]; diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index d84de323a..a49c7ae04 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -89,24 +89,20 @@ export function svgMapillaryImages(projection, context, dispatch) { service .selectImage(d) - .updateViewer(d, context) + .updateViewer(d.key, context) .showViewer(); } function mouseover(d) { var service = getService(); - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(d, datum); + if (service) service.setStyles(d); } function mouseout() { var service = getService(); - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(null, datum); + if (service) service.setStyles(null); } @@ -182,12 +178,6 @@ export function svgMapillaryImages(projection, context, dispatch) { .attr('dy', '0') .attr('r', '6'); - - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(null, datum); - - function viewfieldPath() { var d = this.parentNode.__data__; if (d.pano) { diff --git a/modules/svg/mapillary_signs.js b/modules/svg/mapillary_signs.js index bbf9124a3..a327c108d 100644 --- a/modules/svg/mapillary_signs.js +++ b/modules/svg/mapillary_signs.js @@ -30,6 +30,10 @@ export function svgMapillarySigns(projection, context, dispatch) { function showLayer() { + var service = getService(); + if (!service) return; + + service.loadViewer(context); editOn(); } @@ -57,13 +61,14 @@ export function svgMapillarySigns(projection, context, dispatch) { context.map().centerEase(d.loc); - var selected = service.selectedImage(), - imageKey; + var selected = service.getSelectedImage(); + var selectedImageKey = selected && selected.key; + var imageKey; // Pick one of the images the sign was detected in, // preference given to an image already selected. d.detections.forEach(function(detection) { - if (!imageKey || selected === detection.image_key) { + if (!imageKey || selectedImageKey === detection.image_key) { imageKey = detection.image_key; } }); @@ -78,8 +83,9 @@ export function svgMapillarySigns(projection, context, dispatch) { function update() { var service = getService(); var data = (service ? service.signs(projection) : []); - var image = service && service.getSelectedImage(); - var imageKey = image && image.key; + var viewer = d3_select('#photoviewer'); + var selected = viewer.empty() ? undefined : viewer.datum(); + var selectedImageKey = selected && selected.key; var signs = layer.selectAll('.icon-sign') .data(data, function(d) { return d.key; }); @@ -94,7 +100,7 @@ export function svgMapillarySigns(projection, context, dispatch) { .attr('height', '24px') // for Firefox .classed('selected', function(d) { return _some(d.detections, function(detection) { - return detection.image_key === imageKey; + return detection.image_key === selectedImageKey; }); }) .on('click', click); diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 477bced21..07511fec6 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -96,17 +96,13 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function mouseover(d) { var service = getService(); - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(d, datum); + if (service) service.setStyles(d); } function mouseout() { var service = getService(); - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(null, datum); + if (service) service.setStyles(null); } @@ -181,11 +177,6 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { .attr('dx', '0') .attr('dy', '0') .attr('r', '6'); - - - var selected = d3_select('.viewfield-group.selected'); - var datum = selected.size() && selected.datum(); - if (service) service.setStyles(null, datum); } From 2432d2762ce3ced8372fd5fa932e1d6092ef948b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 8 Nov 2017 16:08:34 -0500 Subject: [PATCH 050/159] Add strokes to selected/highlighted viewfields for visibility --- css/60_photos.css | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 4411ee12b..67fbe49e0 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -46,21 +46,24 @@ } .viewfield-group circle { - stroke: #333; + stroke: #555; stroke-width: 1; stroke-opacity: 0.4; fill-opacity: 0.4; } .viewfield-group.highlighted circle { + stroke: #222; stroke-opacity: 0.9; fill-opacity: 0.9; } .viewfield-group.highlighted.hovered circle { + stroke: #222; stroke-width: 2; stroke-opacity: 0.9; fill-opacity: 0.9; } .viewfield-group.highlighted.selected circle { + stroke: #222; stroke-width: 2; stroke-opacity: 1; fill-opacity: 1; @@ -68,15 +71,19 @@ .viewfield-group .viewfield { stroke-width: 0; + stroke: #222; fill-opacity: 0.4; } .viewfield-group.highlighted .viewfield { + stroke-width: 1; fill-opacity: 0.8; } .viewfield-group.highlighted.hovered .viewfield { + stroke-width: 1; fill-opacity: 0.8; } .viewfield-group.highlighted.selected .viewfield { + stroke-width: 1; fill-opacity: 0.9; } @@ -108,7 +115,6 @@ .layer-mapillary-signs { pointer-events: none; } - .layer-mapillary-signs .icon-sign .icon-sign-body { min-width: 20px; height: 24px; @@ -116,19 +122,18 @@ outline: 2px solid transparent; pointer-events: visible; cursor: pointer; - z-index: 70; + z-index: 30; overflow: visible; } - -.layer-mapillary-signs .icon-sign.selected .icon-sign-body { - outline: 5px solid #ffee00; - background-color: #ffee00; - z-index: 80; -} .layer-mapillary-signs .icon-sign:hover .icon-sign-body { outline: 5px solid #eebb00; background-color: #eebb00; - z-index: 80; + z-index: 70; +} +.layer-mapillary-signs .icon-sign.selected .icon-sign-body { + outline: 5px solid #ffee00; + background-color: #ffee00; + z-index: 40; } From 9dac13a91526a65168d1b4972ef58544c68c3248 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 8 Nov 2017 16:46:53 -0500 Subject: [PATCH 051/159] Show only linestrings at low zooms --- modules/svg/mapillary_images.js | 22 +++++++++++++--------- modules/svg/openstreetcam_images.js | 22 +++++++++++++--------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index a49c7ae04..83cca9249 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -14,6 +14,7 @@ import { services } from '../services'; export function svgMapillaryImages(projection, context, dispatch) { var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000), minZoom = 12, + minMarkerZoom = 16, minViewfieldZoom = 18, layer = d3_select(null), _mapillary; @@ -114,10 +115,13 @@ export function svgMapillaryImages(projection, context, dispatch) { function update() { - var highZoom = ~~context.map().zoom() >= minViewfieldZoom; + var z = ~~context.map().zoom(); + var showMarkers = (z >= minMarkerZoom); + var showViewfields = (z >= minViewfieldZoom); + var service = getService(); - var images = (service ? service.images(projection) : []); - var sequences = (service && highZoom ? service.sequences(projection) : []); + var sequences = (service ? service.sequences(projection) : []); + var images = (service && showMarkers ? service.images(projection) : []); var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; var project = projection.stream; @@ -125,18 +129,18 @@ export function svgMapillaryImages(projection, context, dispatch) { return project(clip(output)); }}); - var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') + var traces = layer.selectAll('.sequences').selectAll('.sequence') .data(sequences, function(d) { return d.properties.key; }); - lineStrings.exit() + traces.exit() .remove(); - lineStrings = lineStrings.enter() + traces = traces.enter() .append('path') .attr('class', 'sequence') - .merge(lineStrings); + .merge(traces); - lineStrings + traces .attr('d', makePath); @@ -159,7 +163,7 @@ export function svgMapillaryImages(projection, context, dispatch) { var viewfields = markers.selectAll('.viewfield') - .data(highZoom ? [0] : []); + .data(showViewfields ? [0] : []); viewfields.exit() .remove(); diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index 07511fec6..d487c086d 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -14,6 +14,7 @@ import { services } from '../services'; export function svgOpenstreetcamImages(projection, context, dispatch) { var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000), minZoom = 12, + minMarkerZoom = 16, minViewfieldZoom = 18, layer = d3_select(null), _openstreetcam; @@ -114,10 +115,13 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function update() { - var highZoom = ~~context.map().zoom() >= minViewfieldZoom; + var z = ~~context.map().zoom(); + var showMarkers = (z >= minMarkerZoom); + var showViewfields = (z >= minViewfieldZoom); + var service = getService(); - var sequences = (service && highZoom ? service.sequences(projection) : []); - var images = (service ? service.images(projection) : []); + var sequences = (service ? service.sequences(projection) : []); + var images = (service && showMarkers ? service.images(projection) : []); var clip = d3_geoIdentity().clipExtent(projection.clipExtent()).stream; var project = projection.stream; @@ -125,18 +129,18 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { return project(clip(output)); }}); - var lineStrings = layer.selectAll('.sequences').selectAll('.sequence') + var traces = layer.selectAll('.sequences').selectAll('.sequence') .data(sequences, function(d) { return d.properties.key; }); - lineStrings.exit() + traces.exit() .remove(); - lineStrings = lineStrings.enter() + traces = traces.enter() .append('path') .attr('class', 'sequence') - .merge(lineStrings); + .merge(traces); - lineStrings + traces .attr('d', makePath); @@ -159,7 +163,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { var viewfields = markers.selectAll('.viewfield') - .data(highZoom ? [0] : []); + .data(showViewfields ? [0] : []); viewfields.exit() .remove(); From d53637618e1c4442beb8d7eed57451401956d6b6 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 9 Nov 2017 11:27:36 -0500 Subject: [PATCH 052/159] Draw selected marker big, fix draw ordering issues, fix close button --- css/60_photos.css | 4 ++ modules/services/mapillary.js | 10 +++-- modules/services/openstreetcam.js | 10 +++-- modules/svg/mapillary_images.js | 66 ++++++++++++++++++----------- modules/svg/openstreetcam_images.js | 58 ++++++++++++++++--------- modules/ui/init.js | 11 +++-- 6 files changed, 103 insertions(+), 56 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 67fbe49e0..8433eb60d 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -87,6 +87,10 @@ fill-opacity: 0.9; } +.viewfield-group.selected .viewfield-scale { + transform: scale(2,2); +} + .sequence { fill: none; stroke-width: 2; diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index 36df2c0ad..b67d02365 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -475,7 +475,12 @@ export default { hideViewer: function() { - d3_select('#photoviewer') + _mlySelectedImage = null; + + var viewer = d3_select('#photoviewer'); + if (!viewer.empty()) viewer.datum(null); + + viewer .classed('hide', true) .selectAll('.photo-wrapper') .classed('hide', true); @@ -483,8 +488,7 @@ export default { d3_selectAll('.viewfield-group, .sequence, .icon-sign') .classed('selected', false); - _mlySelectedImage = null; - return this; + return this.setStyles(null, true); }, diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 51d767be7..d0f35a020 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -395,7 +395,12 @@ export default { hideViewer: function() { - d3_select('#photoviewer') + _oscSelectedImage = null; + + var viewer = d3_select('#photoviewer'); + if (!viewer.empty()) viewer.datum(null); + + viewer .classed('hide', true) .selectAll('.photo-wrapper') .classed('hide', true); @@ -403,8 +408,7 @@ export default { d3_selectAll('.viewfield-group, .sequence, .icon-sign') .classed('selected', false); - _oscSelectedImage = null; - return this; + return this.setStyles(null, true); }, diff --git a/modules/svg/mapillary_images.js b/modules/svg/mapillary_images.js index 83cca9249..1bae3436c 100644 --- a/modules/svg/mapillary_images.js +++ b/modules/svg/mapillary_images.js @@ -86,12 +86,12 @@ export function svgMapillaryImages(projection, context, dispatch) { var service = getService(); if (!service) return; - context.map().centerEase(d.loc); - service .selectImage(d) .updateViewer(d.key, context) .showViewer(); + + context.map().centerEase(d.loc); } @@ -109,12 +109,17 @@ export function svgMapillaryImages(projection, context, dispatch) { function transform(d) { var t = svgPointTransform(projection)(d); - if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; + if (d.ca) { + t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; + } return t; } function update() { + var viewer = d3_select('#photoviewer'); + var selected = viewer.empty() ? undefined : viewer.datum(); + var z = ~~context.map().zoom(); var showMarkers = (z >= minMarkerZoom); var showViewfields = (z >= minViewfieldZoom); @@ -144,35 +149,36 @@ export function svgMapillaryImages(projection, context, dispatch) { .attr('d', makePath); - var markers = layer.selectAll('.markers').selectAll('.viewfield-group') + var groups = layer.selectAll('.markers').selectAll('.viewfield-group') .data(images, function(d) { return d.key; }); - markers.exit() + // exit + groups.exit() .remove(); - var enter = markers.enter() + // enter + var groupsEnter = groups.enter() .append('g') .attr('class', 'viewfield-group') .on('mouseover', mouseover) .on('mouseout', mouseout) .on('click', click); - markers = markers - .merge(enter) - .attr('transform', transform); + groupsEnter + .append('g') + .attr('class', 'viewfield-scale'); + // update + var markers = groups + .merge(groupsEnter) + .sort(function(a, b) { + return (a === selected) ? 1 + : (b === selected) ? -1 + : b.loc[1] - a.loc[1]; // sort Y + }) + .attr('transform', transform) + .select('.viewfield-scale'); - var viewfields = markers.selectAll('.viewfield') - .data(showViewfields ? [0] : []); - - viewfields.exit() - .remove(); - - viewfields.enter() - .append('path') - .attr('class', 'viewfield') - .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') - .attr('d', viewfieldPath); markers.selectAll('circle') .data([0]) @@ -182,6 +188,18 @@ export function svgMapillaryImages(projection, context, dispatch) { .attr('dy', '0') .attr('r', '6'); + var viewfields = markers.selectAll('.viewfield') + .data(showViewfields ? [0] : []); + + viewfields.exit() + .remove(); + + viewfields.enter() // viewfields may or may not be drawn... + .insert('path', 'circle') // but if they are, draw below the circles + .attr('class', 'viewfield') + .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') + .attr('d', viewfieldPath); + function viewfieldPath() { var d = this.parentNode.__data__; if (d.pano) { @@ -195,10 +213,10 @@ export function svgMapillaryImages(projection, context, dispatch) { function drawImages(selection) { var enabled = svgMapillaryImages.enabled, - mapillary = getService(); + service = getService(); layer = selection.selectAll('.layer-mapillary-images') - .data(mapillary ? [0] : []); + .data(service ? [0] : []); layer.exit() .remove(); @@ -220,10 +238,10 @@ export function svgMapillaryImages(projection, context, dispatch) { .merge(layer); if (enabled) { - if (mapillary && ~~context.map().zoom() >= minZoom) { + if (service && ~~context.map().zoom() >= minZoom) { editOn(); update(); - mapillary.loadImages(projection); + service.loadImages(projection); } else { editOff(); } diff --git a/modules/svg/openstreetcam_images.js b/modules/svg/openstreetcam_images.js index d487c086d..3184a7bc2 100644 --- a/modules/svg/openstreetcam_images.js +++ b/modules/svg/openstreetcam_images.js @@ -86,12 +86,12 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { var service = getService(); if (!service) return; - context.map().centerEase(d.loc); - service .selectImage(d) .updateViewer(d) .showViewer(); + + context.map().centerEase(d.loc); } @@ -109,12 +109,17 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { function transform(d) { var t = svgPointTransform(projection)(d); - if (d.ca) t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; + if (d.ca) { + t += ' rotate(' + Math.floor(d.ca) + ',0,0)'; + } return t; } function update() { + var viewer = d3_select('#photoviewer'); + var selected = viewer.empty() ? undefined : viewer.datum(); + var z = ~~context.map().zoom(); var showMarkers = (z >= minMarkerZoom); var showViewfields = (z >= minViewfieldZoom); @@ -144,35 +149,36 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { .attr('d', makePath); - var markers = layer.selectAll('.markers').selectAll('.viewfield-group') + var groups = layer.selectAll('.markers').selectAll('.viewfield-group') .data(images, function(d) { return d.key; }); - markers.exit() + // exit + groups.exit() .remove(); - var enter = markers.enter() + // enter + var groupsEnter = groups.enter() .append('g') .attr('class', 'viewfield-group') .on('mouseover', mouseover) .on('mouseout', mouseout) .on('click', click); - markers = markers - .merge(enter) - .attr('transform', transform); + groupsEnter + .append('g') + .attr('class', 'viewfield-scale'); + // update + var markers = groups + .merge(groupsEnter) + .sort(function(a, b) { + return (a === selected) ? 1 + : (b === selected) ? -1 + : b.loc[1] - a.loc[1]; // sort Y + }) + .attr('transform', transform) + .select('.viewfield-scale'); - var viewfields = markers.selectAll('.viewfield') - .data(showViewfields ? [0] : []); - - viewfields.exit() - .remove(); - - viewfields.enter() - .append('path') - .attr('class', 'viewfield') - .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') - .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); markers.selectAll('circle') .data([0]) @@ -181,6 +187,18 @@ export function svgOpenstreetcamImages(projection, context, dispatch) { .attr('dx', '0') .attr('dy', '0') .attr('r', '6'); + + var viewfields = markers.selectAll('.viewfield') + .data(showViewfields ? [0] : []); + + viewfields.exit() + .remove(); + + viewfields.enter() // viewfields may or may not be drawn... + .insert('path', 'circle') // but if they are, draw below the circles + .attr('class', 'viewfield') + .attr('transform', 'scale(1.5,1.5),translate(-8, -13)') + .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z'); } diff --git a/modules/ui/init.js b/modules/ui/init.js index 69eda0302..adeb376fb 100644 --- a/modules/ui/init.js +++ b/modules/ui/init.js @@ -8,9 +8,10 @@ import { d3keybinding as d3_keybinding } from '../lib/d3.keybinding.js'; import { t, textDirection } from '../util/locale'; import { tooltip } from '../util/tooltip'; -import { svgDefs, svgIcon } from '../svg'; -import { modeBrowse } from '../modes'; import { behaviorHash } from '../behavior'; +import { modeBrowse } from '../modes'; +import { services } from '../services'; +import { svgDefs, svgIcon } from '../svg'; import { utilGetDimensions } from '../util/dimensions'; import { uiAccount } from './account'; @@ -248,10 +249,8 @@ export function uiInit(context) { .append('button') .attr('class', 'thumb-hide') .on('click', function () { - d3_select('#photoviewer') - .classed('hide', true) - .select('div') - .classed('hide', true); + if (services.mapillary) { services.mapillary.hideViewer(); } + if (services.openstreetcam) { services.openstreetcam.hideViewer(); } }) .append('div') .call(svgIcon('#icon-close')); From bd639f2da01a8e729ff7b2294f902c894c451b61 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 9 Nov 2017 14:22:53 -0500 Subject: [PATCH 053/159] Don't defer merging loaded entities into the history graph (closes #4276) --- modules/core/context.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/context.js b/modules/core/context.js index 28ec30f60..21ee2e181 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -112,9 +112,9 @@ export function coreContext() { /* Connection */ - var entitiesLoaded = utilCallWhenIdle(function entitiesLoaded(err, result) { + function entitiesLoaded(err, result) { if (!err) history.merge(result.data, result.extent); - }); + } context.preauth = function(options) { if (connection) { From b882ae46bbb868c8253caf6c8aafa34efac18d9e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 9 Nov 2017 14:54:00 -0500 Subject: [PATCH 054/159] Add code so `tunnel=building_passage` doesn't default to `layer=-1` (closes #4516) --- modules/ui/fields/radio.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/ui/fields/radio.js b/modules/ui/fields/radio.js index aeb552b76..27c8175b3 100644 --- a/modules/ui/fields/radio.js +++ b/modules/ui/fields/radio.js @@ -203,10 +203,22 @@ export function uiFieldRadio(field, context) { } if (field.type === 'structureRadio') { - if (val === 'no' || (key !== 'bridge' && key !== 'tunnel')) { + // remove layer if it should not be set + if (val === 'no' || + (key !== 'bridge' && key !== 'tunnel') || + (key === 'tunnel' && val === 'building_passage')) { t.layer = undefined; } - } + // add layer if it should be set + if (t.layer === undefined) { + if (key === 'bridge' && val !== 'no') { + t.layer = '1'; + } + if (key === 'tunnel' && val !== 'no' && val !== 'building_passage') { + t.layer = '-1'; + } + } + } dispatch.call('change', this, t, onInput); } @@ -243,7 +255,7 @@ export function uiFieldRadio(field, context) { if (field.type === 'structureRadio') { if (activeKey === 'bridge') { t.layer = '1'; - } else if (activeKey === 'tunnel') { + } else if (activeKey === 'tunnel' && t.tunnel !== 'building_passage') { t.layer = '-1'; } else { t.layer = undefined; From 6a44bf96a7269cb42f263928ef8c001beb63329a Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 9 Nov 2017 22:30:55 -0500 Subject: [PATCH 055/159] Change craft=sweep -> craft=chimney_sweeper (closes #4510) --- data/presets.yaml | 8 ++--- data/presets/presets.json | 36 +++++++++---------- .../{sweep.json => chimney_sweeper.json} | 4 +-- data/taginfo.json | 8 ++--- dist/locales/en.json | 8 ++--- 5 files changed, 32 insertions(+), 32 deletions(-) rename data/presets/presets/craft/{sweep.json => chimney_sweeper.json} (78%) diff --git a/data/presets.yaml b/data/presets.yaml index 8c21bc350..8ce8c9ac3 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -2640,6 +2640,10 @@ en: # craft=caterer name: Caterer terms: '' + craft/chimney_sweeper: + # craft=chimney_sweeper + name: Chimney Sweeper + terms: '' craft/clockmaker: # craft=clockmaker name: Clockmaker @@ -2774,10 +2778,6 @@ en: name: Stonemason # 'terms: masonry' terms: '' - craft/sweep: - # craft=sweep - name: Chimney Sweep - terms: '' craft/tailor: # craft=tailor name: Tailor diff --git a/data/presets/presets.json b/data/presets/presets.json index 6feb29ee5..4e48d556f 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -5012,6 +5012,24 @@ }, "name": "Caterer" }, + "craft/chimney_sweeper": { + "icon": "poi-chimney", + "fields": [ + "name", + "operator", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "area" + ], + "tags": { + "craft": "chimney_sweeper" + }, + "name": "Chimney Sweeper" + }, "craft/clockmaker": { "icon": "poi-clock", "fields": [ @@ -5580,24 +5598,6 @@ }, "name": "Stonemason" }, - "craft/sweep": { - "icon": "poi-chimney", - "fields": [ - "name", - "operator", - "address", - "building_area", - "opening_hours" - ], - "geometry": [ - "point", - "area" - ], - "tags": { - "craft": "sweep" - }, - "name": "Chimney Sweep" - }, "craft/tiler": { "icon": "poi-tool", "fields": [ diff --git a/data/presets/presets/craft/sweep.json b/data/presets/presets/craft/chimney_sweeper.json similarity index 78% rename from data/presets/presets/craft/sweep.json rename to data/presets/presets/craft/chimney_sweeper.json index fbc3f164e..92f1ac592 100644 --- a/data/presets/presets/craft/sweep.json +++ b/data/presets/presets/craft/chimney_sweeper.json @@ -12,7 +12,7 @@ "area" ], "tags": { - "craft": "sweep" + "craft": "chimney_sweeper" }, - "name": "Chimney Sweep" + "name": "Chimney Sweeper" } diff --git a/data/taginfo.json b/data/taginfo.json index a0249a9bf..529cb657b 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -958,6 +958,10 @@ "key": "craft", "value": "caterer" }, + { + "key": "craft", + "value": "chimney_sweeper" + }, { "key": "craft", "value": "clockmaker" @@ -1070,10 +1074,6 @@ "key": "craft", "value": "stonemason" }, - { - "key": "craft", - "value": "sweep" - }, { "key": "craft", "value": "tiler" diff --git a/dist/locales/en.json b/dist/locales/en.json index 5a67f34db..34e3d749a 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -3406,6 +3406,10 @@ "name": "Caterer", "terms": "" }, + "craft/chimney_sweeper": { + "name": "Chimney Sweeper", + "terms": "" + }, "craft/clockmaker": { "name": "Clockmaker", "terms": "" @@ -3518,10 +3522,6 @@ "name": "Stonemason", "terms": "masonry" }, - "craft/sweep": { - "name": "Chimney Sweep", - "terms": "" - }, "craft/tiler": { "name": "Tiler", "terms": "" From e113c47835197eeb8445ceb3780c8cf541b4c782 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 9 Nov 2017 22:35:49 -0500 Subject: [PATCH 056/159] Add `government=*` type field to Government Office preset (closes #4517) --- data/presets.yaml | 3 +++ data/presets/fields.json | 5 +++++ data/presets/fields/government.json | 5 +++++ data/presets/presets.json | 1 + data/presets/presets/office/government.json | 1 + dist/locales/en.json | 3 +++ 6 files changed, 18 insertions(+) create mode 100644 data/presets/fields/government.json diff --git a/data/presets.yaml b/data/presets.yaml index 8ce8c9ac3..552794f3e 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -600,6 +600,9 @@ en: generator/type: # 'generator:type=*' label: Type + government: + # government=* + label: Type grape_variety: # grape_variety=* label: Grape Varieties diff --git a/data/presets/fields.json b/data/presets/fields.json index b3ea88859..5c086d479 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -820,6 +820,11 @@ "type": "combo", "label": "Type" }, + "government": { + "key": "government", + "type": "typeCombo", + "label": "Type" + }, "grape_variety": { "key": "grape_variety", "type": "semiCombo", diff --git a/data/presets/fields/government.json b/data/presets/fields/government.json new file mode 100644 index 000000000..0133a83d5 --- /dev/null +++ b/data/presets/fields/government.json @@ -0,0 +1,5 @@ +{ + "key": "government", + "type": "typeCombo", + "label": "Type" +} diff --git a/data/presets/presets.json b/data/presets/presets.json index 4e48d556f..76fa19d14 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11818,6 +11818,7 @@ "icon": "commercial", "fields": [ "name", + "government", "address", "building_area", "opening_hours" diff --git a/data/presets/presets/office/government.json b/data/presets/presets/office/government.json index 29c4cc4cc..31050bd31 100644 --- a/data/presets/presets/office/government.json +++ b/data/presets/presets/office/government.json @@ -2,6 +2,7 @@ "icon": "commercial", "fields": [ "name", + "government", "address", "building_area", "opening_hours" diff --git a/dist/locales/en.json b/dist/locales/en.json index 34e3d749a..a519d47e7 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1610,6 +1610,9 @@ "generator/type": { "label": "Type" }, + "government": { + "label": "Type" + }, "grape_variety": { "label": "Grape Varieties" }, From d1a46ce623afde12e5fb25b6472ef41eca288b34 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 10 Nov 2017 15:13:41 -0500 Subject: [PATCH 057/159] Move "Zoom in to edit" button up to be less in the way (re: #4482) --- css/80_app.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index 293c8898b..51c3811ab 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -3654,8 +3654,7 @@ img.tile-removing { .notice { position: absolute; - top: 50%; - bottom: 50%; + top: 45px; left: 0; right: 0; text-align: center; @@ -3664,7 +3663,7 @@ img.tile-removing { .notice .zoom-to { margin: auto; width: 300px; - height: 80px; + height: 70px; font-size: 150%; border-radius: 8px; } From 6d6405851e548d9031724d6a2d22a9c018ac0bc3 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 10 Nov 2017 15:22:52 -0500 Subject: [PATCH 058/159] 2.5.0 changelog --- CHANGELOG.md | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b15b64a6..b5aa64321 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,175 @@ _Breaking changes, which may affect downstream projects or sites that embed iD, [@xxxx]: https://github.com/xxxx --> + +# 2.5.0 +##### November 10, 2017 + +#### :mega: Release Highlights + +* :camera: We've added support for [OpenStreetCam](http://openstreetcam.org/) in the photo viewer! +This brings over 100 million user-contributed photos into the iD editor for improving OpenStreetMap.
+_Check out what streetlevel photo coverage is available by opening the Map Data pane (shortcut F)_ + +* :pray: Special thank you to all of our new and first-time contributors who submitted pull requests for +[Hacktoberfest](https://hacktoberfest.digitalocean.com/)! + + +#### :tada: New Features +* Add support for OpenStreetCam ([#4499], [#3795]) +* Add support for DigitalGlobe imagery vintage overlays (see [editor-layer-index/issues/#371], thanks [@marracci]) +* Add API parameter to conditionally disable feature types ([#4439], [#4393], thanks [@ferdibiflator]) +* Display name of gpx file in `imagery_used` instead of "Local GPX" ([#4440], [#4385], thanks [@ferdibiflator]) +* Remove lodash from build scripts ([#4447], [#4378], [@DzikowskiW]) + +[editor-layer-index/issues/#371]: https://github.com/osmlab/editor-layer-index/issues/371 +[#4499]: https://github.com/openstreetmap/iD/issues/4499 +[#4447]: https://github.com/openstreetmap/iD/issues/4447 +[#4440]: https://github.com/openstreetmap/iD/issues/4440 +[#4439]: https://github.com/openstreetmap/iD/issues/4439 +[#4393]: https://github.com/openstreetmap/iD/issues/4393 +[#4385]: https://github.com/openstreetmap/iD/issues/4385 +[#4378]: https://github.com/openstreetmap/iD/issues/4378 +[#3795]: https://github.com/openstreetmap/iD/issues/3795 +[@marracci]: https://github.com/marracci +[@ferdibiflator]: https://github.com/ferdibiflator +[@DzikowskiW]: https://github.com/DzikowskiW + + +#### :sparkles: Usability +* Improvements to Mapillary and OpenStreetCam usability ([#4512]) + * Traces are the only thing drawn at low zoom, circles appear at zoom 16, viewfield cones appear at zoom 18 + * Everything is drawn very dim by default + * Hovering a marker will brighten that marker, the parent trace, and other markers along the trace + * The selected marker is drawn bright yellow and scaled up to be extra visible + * Standardize on "username | captured_at | sitelink" for attribution line + * Render panoramic Mapillary viewfields as a sphere instead of cone ([#3154]) +* Bump default max_zoom from 20 to 22 (this affects custom imagery layers) +* Allow spellcheck in textarea fields ([#4471]) +* Move "Zoom in to edit" button out of the way, and allow wheel events to pass through to the map ([#4482]) +* Better capitalization for "Zoom in", "Zoom out", "Edit now", "Zoom in to edit" ([#4492], thanks [@jaller94]) + +[#4512]: https://github.com/openstreetmap/iD/issues/4512 +[#4492]: https://github.com/openstreetmap/iD/issues/4492 +[#4482]: https://github.com/openstreetmap/iD/issues/4482 +[#4471]: https://github.com/openstreetmap/iD/issues/4471 +[#3154]: https://github.com/openstreetmap/iD/issues/3154 +[@jaller94]: https://github.com/jaller94 + + +#### :bug: Bugfixes +* Add code so `tunnel=building_passage` doesn't default to `layer=-1` ([#4516]) +* Clicking on a search result should take you to that location the first time ([#4276]) +* Fix label placement on areas that don't have an icon ([#4479]) +* Don't add underscores to `source=*` field ([#4475], [#4474], thanks [@octagonal]) +* Depend on `bhousel/node-diff3` which includes fix for conflict resolution node duplication bug ([#3544], [#3058]) +* Allow copying text from info panels ([#4456], [#4406], thanks [@ferdibiflator]) +* Make sure `imagery_used` field is updated if a user cancels save and makes more edits ([#4445], [#4443], thanks [@moshen]) +* Fallback Area preset should preserve the `area=yes` tag ([#4424]) + +[#4516]: https://github.com/openstreetmap/iD/issues/4516 +[#4479]: https://github.com/openstreetmap/iD/issues/4479 +[#4475]: https://github.com/openstreetmap/iD/issues/4475 +[#4474]: https://github.com/openstreetmap/iD/issues/4474 +[#4456]: https://github.com/openstreetmap/iD/issues/4456 +[#4445]: https://github.com/openstreetmap/iD/issues/4445 +[#4443]: https://github.com/openstreetmap/iD/issues/4443 +[#4424]: https://github.com/openstreetmap/iD/issues/4424 +[#4406]: https://github.com/openstreetmap/iD/issues/4406 +[#4276]: https://github.com/openstreetmap/iD/issues/4276 +[#3544]: https://github.com/openstreetmap/iD/issues/3544 +[#3058]: https://github.com/openstreetmap/iD/issues/3058 +[@octagonal]: https://github.com/octagonal +[@ferdibiflator]: https://github.com/ferdibiflator +[@moshen]: https://github.com/moshen + + +#### :rocket: Presets +* Add `government=*` type field to Government Office preset ([#4517]) +* Change craft=sweep -> craft=chimney_sweeper ([#4510]) +* Add shop=agrarian preset and agrarian=* field ([#4507], thanks [@willemarcel]) +* Change max_age to min_age for min_age field ([#4506], thanks [@JamesKingdom]) +* Rename sculpter to sculptor not sculpter ([#4504], thanks [@simonpoole]) +* Add preset for music schools ([#4500], thanks [@tyrasd]) +* Add `voltage`,`operator`,`ref` fields to several `power=*` presets. +* Add `power=switch` preset ([#4441]) +* Drop `vertex` geometry from `office=*` presets (i.e. make them like `shop=*` presets) +* Add preset for "Pedestrian Area" (highway=pedestrian + area=yes) ([#4488]) +* Rename tourism=chalet to "Holiday Cottage" and add search terms ([#4490]) +* Remove poi-foot icon from place=square ([#4486]) +* Add several presets for common `office=*` types ([#4491], [#4489], thanks [@Nmargolis]) +* Add preset for `tourism=wilderness_hut` ([#4485], [#4483], thanks [@YuliyaVeklicheva]) +* Fix reference links for `highway=crossing`, `footway=crossing` ([#4480]) +* Add preset for `landuse=religious` ([#4478], [#4476], thanks [@YuliyaVeklicheva]) +* Add "Climbing hut" search term to alpine hut ([#4470], [#4469], thanks [@JamesKingdom]) +* Add presets for many kinds of Fitness Station equipment ([#4404], [#4373], thanks [@JamesKingdom]) +* Deprecate `amenity=scrapyard` in favor of "approved" `industrial=scrap_yard` (revert of [#3387]) +* Add `industrial=slaughterhouse` preset ([#4467], [#4466], thanks [@JamesKingdom]) +* Add `power=transformer` preset ([#4464], [#4442], thanks [@ToeBee]) +* Change drain icon to ditch ([#4462], [#4460], thanks [@AndreasHae]) +* Add preset for `place=islet` ([#4461], [#4458], thanks [@AndreasHae]) +* Add `leisure=boules` as "Boules/Bocce Court" ([#4451], [#4449], thanks [@DzikowskiW]) +* Add `landuse=brownfield` and `landuse=greenfield` presets ([#4448], [#4444], thanks [@manfredbrandl]) +* Add `leisure=sauna` preset ([#4438], [#4436], thanks [@haroldb]) +* Add `substance=*` field to pipeline preset ([#4432], [#4430], thanks [@xmile1]) +* Add `place=plot` preset ([#4427], [#4423], thanks [@humanforklift]) + +[#4517]: https://github.com/openstreetmap/iD/issues/4517 +[#4510]: https://github.com/openstreetmap/iD/issues/4510 +[#4507]: https://github.com/openstreetmap/iD/issues/4507 +[#4506]: https://github.com/openstreetmap/iD/issues/4506 +[#4504]: https://github.com/openstreetmap/iD/issues/4504 +[#4500]: https://github.com/openstreetmap/iD/issues/4500 +[#4441]: https://github.com/openstreetmap/iD/issues/4441 +[#4488]: https://github.com/openstreetmap/iD/issues/4488 +[#4490]: https://github.com/openstreetmap/iD/issues/4490 +[#4486]: https://github.com/openstreetmap/iD/issues/4486 +[#4491]: https://github.com/openstreetmap/iD/issues/4491 +[#4489]: https://github.com/openstreetmap/iD/issues/4489 +[#4485]: https://github.com/openstreetmap/iD/issues/4485 +[#4483]: https://github.com/openstreetmap/iD/issues/4483 +[#4480]: https://github.com/openstreetmap/iD/issues/4480 +[#4478]: https://github.com/openstreetmap/iD/issues/4478 +[#4476]: https://github.com/openstreetmap/iD/issues/4476 +[#4470]: https://github.com/openstreetmap/iD/issues/4470 +[#4469]: https://github.com/openstreetmap/iD/issues/4469 +[#4404]: https://github.com/openstreetmap/iD/issues/4404 +[#4373]: https://github.com/openstreetmap/iD/issues/4373 +[#4467]: https://github.com/openstreetmap/iD/issues/4467 +[#4466]: https://github.com/openstreetmap/iD/issues/4466 +[#4464]: https://github.com/openstreetmap/iD/issues/4464 +[#4462]: https://github.com/openstreetmap/iD/issues/4462 +[#4442]: https://github.com/openstreetmap/iD/issues/4442 +[#4461]: https://github.com/openstreetmap/iD/issues/4461 +[#4460]: https://github.com/openstreetmap/iD/issues/4460 +[#4458]: https://github.com/openstreetmap/iD/issues/4458 +[#4451]: https://github.com/openstreetmap/iD/issues/4451 +[#4449]: https://github.com/openstreetmap/iD/issues/4449 +[#4448]: https://github.com/openstreetmap/iD/issues/4448 +[#4444]: https://github.com/openstreetmap/iD/issues/4444 +[#4438]: https://github.com/openstreetmap/iD/issues/4438 +[#4436]: https://github.com/openstreetmap/iD/issues/4436 +[#4432]: https://github.com/openstreetmap/iD/issues/4432 +[#4430]: https://github.com/openstreetmap/iD/issues/4430 +[#4427]: https://github.com/openstreetmap/iD/issues/4427 +[#4423]: https://github.com/openstreetmap/iD/issues/4423 +[#3387]: https://github.com/openstreetmap/iD/issues/3387 +[@willemarcel]: https://github.com/willemarcel +[@JamesKingdom]: https://github.com/JamesKingdom +[@simonpoole]: https://github.com/simonpoole +[@tyrasd]: https://github.com/tyrasd +[@Nmargolis]: https://github.com/Nmargolis +[@YuliyaVeklicheva]: https://github.com/YuliyaVeklicheva +[@ToeBee]: https://github.com/ToeBee +[@AndreasHae]: https://github.com/AndreasHae +[@DzikowskiW]: https://github.com/DzikowskiW +[@manfredbrandl]: https://github.com/manfredbrandl +[@haroldb]: https://github.com/haroldb +[@xmile1]: https://github.com/xmile1 +[@humanforklift]: https://github.com/humanforklift + + + # 2.4.3 ##### October 9, 2017 From a7f62e550a685927fab8d08c5ff5c26d0d80ad34 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 10 Nov 2017 15:43:04 -0500 Subject: [PATCH 059/159] npm run imagery --- data/imagery.json | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/data/imagery.json b/data/imagery.json index fd9f92662..218892fe4 100644 --- a/data/imagery.json +++ b/data/imagery.json @@ -46934,6 +46934,66 @@ "description": "The emap from Taiwan National Land Surveying and Mapping Center", "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAxJJREFUOI3tlF9oW2UYxn9f4nKW2ixfjJGYMnuctRUZ5mhEpjdJEEaHtmsZaKHq0qt6ZdtZL3Zhk3ilIKS9Ui806UStE7Edjln8kwzEwaB6IshsmJIqK1ttZ7Qlzel2eryQhqZrsDC8EHyuvu993+/53j+8D/yPfxtip4GqH1X1owLkdHI3RSwbkbFu1yAPdx4t3hpSS6YLAM05i/vCqcmzZwpj9T6pIZYOZNArNADhsQj3RVNjtyS1DcKtiHlPIb96PTn67nJiq8++cRgJicTpQ7Yz0oHc7cQZeakzPbTyqr9iKXUr0lfbqOx7LHJgbXrux5/X9M0+G0C8SySeeWTPQPSLxu4jn1vd4tE7m4euDNclrCEvt6E+25/e6H+VuKen57vEe1b8I29b8cKyo6j6Uece6I/VK387jC70crgjMFBDPDEx8aA5aOPkG+f7FhcX9YhGZLIUBSD7VAtSsZOKNpGKNgFU710tbiJ7G0lFm9DucCL2R7uCXjTpQFZbMV6wMu+EbWnpQOIJVKcvFTuDIR+az4nmc1Zt6h4HuV9XGHjIx1D2EvrCKtLnUgE+Pig+kQ6kDeDFc9YQwJdP2rLuBlfzRjklw7yh7JJh0vfZL6Tb70IqdqRSnT/5JfQTBcZfDom4HaBiUjn5k/Xh0VYRe85ztZ11QX53K4ZQyPxwFcO0yP+2Ste9bi6XrxPbfxuvnV9g6uIfPK/dTskwURbOFfPTM2PSIeTT99Bzw4KMhERi5ICIl667OOHuYNzdQV5p/ccBxi89kUmm5vveDou06kLddvNSibasbvZGXvj9fYJGgbldAaYaI+SVVoq7ApxtCNXEH7ZyhL8+Nho00YJeoT3+6Xp0W2KtBU07NpzNlHulem2ecHmGzpUcmlGg+dp83aynitbkK99ayfwSel2tiLUTo3M4lSn3ys12ub5MsFL4O4GGWZq/fyszfvrPsfwSNZtnpw70i+jMfjPdf//MfXf7UYtrASqWQkUoeNzLtHumS0buzePJD4zjV1a5vPX9jmRT9aNGNCKbZXMn0vnfwl+e9BTflqrxKAAAAABJRU5ErkJggg==" }, + { + "id": "IBGE_Salvador_Streets", + "name": "Nomes de Ruas IBGE Salvador-BA", + "type": "tms", + "template": "https://api.mapbox.com/styles/v1/wille/cj8lp78dn62wl2rquim47qo0g/tiles/256/{zoom}/{x}/{y}?access_token=pk.eyJ1Ijoid2lsbGUiLCJhIjoicFNVWk5VWSJ9.hluCd0YGvYHNlFi_utWe2g", + "scaleExtent": [ + 0, + 20 + ], + "polygon": [ + [ + [ + -38.489742279052734, + -12.811131765117107 + ], + [ + -38.54484558105469, + -13.013924052026558 + ], + [ + -38.47755432128906, + -13.034662471471638 + ], + [ + -38.33473205566406, + -12.946846814654444 + ], + [ + -38.30005645751953, + -12.906692193510644 + ], + [ + -38.33953857421875, + -12.904349641337422 + ], + [ + -38.35481643676758, + -12.830213284310222 + ], + [ + -38.38090896606445, + -12.821844374997415 + ], + [ + -38.40717315673828, + -12.867535227819912 + ], + [ + -38.46536636352539, + -12.815985972925704 + ], + [ + -38.489742279052734, + -12.811131765117107 + ] + ] + ], + "description": "Streets geometry and names of Salvador, Bahia. Source: Faces de Logradouro - IBGE.", + "overlay": true + }, { "id": "MAPNIK", "name": "OpenStreetMap (Standard)", From 45de21c5a57dda918d2e9be16c9c9ff12f923e4d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 10 Nov 2017 15:43:32 -0500 Subject: [PATCH 060/159] npm run translations --- dist/locales/af.json | 10 +- dist/locales/ar-AA.json | 1 - dist/locales/ar.json | 181 +++++++++-- dist/locales/ast.json | 37 +-- dist/locales/bg-BG.json | 11 +- dist/locales/bn.json | 14 +- dist/locales/bs.json | 38 +-- dist/locales/ca.json | 590 ++++++++++++++++++++++++++++++--- dist/locales/cs.json | 580 ++++++++++++++++++++++++++++++--- dist/locales/da.json | 60 ++-- dist/locales/de.json | 449 ++++++++++++++++++++----- dist/locales/el.json | 39 +-- dist/locales/en-GB.json | 44 +-- dist/locales/eo.json | 312 ++++++++++++++++-- dist/locales/es.json | 376 ++++++++++++++++++--- dist/locales/et.json | 157 +++++++-- dist/locales/fa.json | 44 +-- dist/locales/fi.json | 38 +-- dist/locales/fr.json | 460 ++++++++++++++++++++++---- dist/locales/gl.json | 101 +++--- dist/locales/he.json | 82 ++++- dist/locales/hr.json | 36 +- dist/locales/hu.json | 240 ++++++++++++-- dist/locales/hy.json | 8 +- dist/locales/id.json | 33 +- dist/locales/is.json | 17 +- dist/locales/it.json | 91 +++--- dist/locales/ja.json | 105 +++--- dist/locales/kn.json | 15 +- dist/locales/ko.json | 217 ++++++++++--- dist/locales/lt.json | 43 +-- dist/locales/lv.json | 8 +- dist/locales/mk.json | 44 +-- dist/locales/ms.json | 8 +- dist/locales/nl.json | 49 +-- dist/locales/no.json | 29 +- dist/locales/pl.json | 340 ++++++++++++++++--- dist/locales/pt-BR.json | 257 ++++++++++++--- dist/locales/pt.json | 340 ++++++++++++++++--- dist/locales/ro.json | 46 +-- dist/locales/ru.json | 309 ++++++++++++++---- dist/locales/si.json | 8 +- dist/locales/sk.json | 47 +-- dist/locales/sl.json | 43 +-- dist/locales/sq.json | 1 - dist/locales/sr.json | 108 +++--- dist/locales/sv.json | 705 ++++++++++++++++++++++++++++++++-------- dist/locales/ta.json | 13 - dist/locales/te.json | 8 +- dist/locales/th.json | 4 - dist/locales/tl.json | 8 +- dist/locales/tr.json | 91 +++--- dist/locales/uk.json | 173 +++++++--- dist/locales/vi.json | 169 +++++++--- dist/locales/yue.json | 32 +- dist/locales/zh-CN.json | 561 ++++++++++++++++++++------------ dist/locales/zh-HK.json | 47 +-- dist/locales/zh-TW.json | 332 +++++++++++++++++-- dist/locales/zh.json | 11 +- 59 files changed, 6060 insertions(+), 2160 deletions(-) diff --git a/dist/locales/af.json b/dist/locales/af.json index 245e66978..d6f9873a3 100644 --- a/dist/locales/af.json +++ b/dist/locales/af.json @@ -189,8 +189,7 @@ }, "splash": { "welcome": "Welkom by die iD OpenStreetMap program", - "walkthrough": "Begin die Deurloop", - "start": "Verander Nou" + "walkthrough": "Begin die Deurloop" }, "source_switch": { "live": "lewendig", @@ -209,10 +208,6 @@ "tag_suggests_area": "Die kenmerk {tag} is geoormerk vir 'n area nie vir 'n lyn nie.", "deprecated_tags": "Vervalde kenmerke: {tags}" }, - "zoom": { - "in": "Zoom in", - "out": "Zoom uit" - }, "cannot_zoom": "Kan nie verder uitzoom in die huidige mode nie.", "help": { "title": "Help" @@ -1307,9 +1302,6 @@ "tourism/caravan_site": { "name": "RV Park" }, - "tourism/chalet": { - "name": "Chalet" - }, "tourism/guest_house": { "name": "Gastehuis" }, diff --git a/dist/locales/ar-AA.json b/dist/locales/ar-AA.json index 30ba7cae9..2adf4a7f1 100644 --- a/dist/locales/ar-AA.json +++ b/dist/locales/ar-AA.json @@ -116,7 +116,6 @@ "title": "تقسيم" } }, - "zoom_in_edit": ".كبِّر للتعديل", "logout": "تسجيل الخروج", "commit": { "upload_explanation": "التغييرات التي قمتم بتحميلها ستكون مرئية على جميع الخرائط التي تستخدم بيانات خريطة الشارع المفتوح.", diff --git a/dist/locales/ar.json b/dist/locales/ar.json index 813f83663..9e421529f 100644 --- a/dist/locales/ar.json +++ b/dist/locales/ar.json @@ -310,7 +310,6 @@ "localized_translation_language": "اختر لغة", "localized_translation_name": "الاسم" }, - "zoom_in_edit": "كبّر للتحرير", "login": "تسجيل دخول", "logout": "تسجيل خروج", "loading_auth": "جار الإتصال بـ OpenStreetMap ...", @@ -601,8 +600,7 @@ "splash": { "welcome": "مرحبا بك في محرر iD لخريطة الشارع المفتوحة OpenStreetMap.", "text": "محرر الخرائط ID هو محرر سهل وجذاب ولكنه أيضًا أداة قوية جدا وفعالة للمساهمة في أفضل خرائط حُرة ومجانية في العالم. هذا هو الإصدار رقم {version}. لمزيد من المعلومات انظر {website} ، كما يمكنك الإبلاغ عن العلل والمشاكل على {github}.", - "walkthrough": "بدء جولة تعليم", - "start": "حرّر الآن" + "walkthrough": "بدء جولة تعليم" }, "source_switch": { "live": "حي", @@ -632,10 +630,6 @@ "tag_suggests_area": "الوسم {tag} يقترح بأن الخط يجب أن يكون منطقة، ولكنها حاليا ليست منطقة", "deprecated_tags": "وسوم مهجورة: {tags}" }, - "zoom": { - "in": "تكبير", - "out": "تصغير" - }, "cannot_zoom": "لايمكن التصغير أكثر من ذلك في الوضع الحالي.", "full_screen": "التبديل إلى وضع ملء الشاشة", "gpx": { @@ -1351,6 +1345,9 @@ "historic": { "label": "النوع" }, + "historic/civilization": { + "label": "الحضارة التاريخية" + }, "hoops": { "placeholder": "1، 2، 4..." }, @@ -1745,9 +1742,17 @@ }, "placeholder": "غير معروف" }, + "structure_waterway": { + "options": { + "tunnel": "نفق" + } + }, "studio": { "label": "النوع" }, + "substance": { + "label": "مادة" + }, "substation": { "label": "النوع" }, @@ -1836,6 +1841,10 @@ "name": "العنوان", "terms": "عنوان" }, + "aerialway/cable_car": { + "name": "تلفريك", + "terms": "تلفريك، معبر هوائي" + }, "aeroway": { "name": "جوي" }, @@ -1965,6 +1974,9 @@ "name": "مياه شرب", "terms": "ماء الشرب" }, + "amenity/driving_school": { + "name": "مدرسة تعليم السياقة" + }, "amenity/embassy": { "name": "سفارة", "terms": "سفارة" @@ -1977,6 +1989,9 @@ "name": "محطة إطفاء حريق", "terms": "محطة إطفاء" }, + "amenity/food_court": { + "name": "قاعة طعام" + }, "amenity/fountain": { "name": "نافورة", "terms": "نافورة" @@ -1996,6 +2011,9 @@ "amenity/internet_cafe": { "name": "مقهى إنترنت" }, + "amenity/kindergarten": { + "name": "روصة أطفال" + }, "amenity/library": { "name": "مكتبة", "terms": "مكتبة" @@ -2079,6 +2097,9 @@ "amenity/school": { "name": "أرض مدرسة" }, + "amenity/scrapyard": { + "name": "مقبرة السيارات" + }, "amenity/shelter": { "name": "مأوى", "terms": "مأوى, ملجأ, ملاذ, سقيفة, وقاء" @@ -2320,6 +2341,22 @@ "building/university": { "name": "مبنى جامعي" }, + "craft/beekeeper": { + "name": "مربي النحل", + "terms": "مربي النحل, نحال" + }, + "craft/blacksmith": { + "name": "حدّاد", + "terms": "حدّاد" + }, + "craft/boatbuilder": { + "name": "بنّاء السفن", + "terms": "بنّاء السفن" + }, + "craft/bookbinder": { + "name": "مجلد الكتب", + "terms": "مجلد الكتب" + }, "craft/brewery": { "name": "مصنع بيرة", "terms": "بيرة; جعة" @@ -2331,6 +2368,14 @@ "name": "منظم حفلات", "terms": "منظم حفلات; متعهد حفلات;حفلة;حفلات" }, + "craft/clockmaker": { + "name": "ساعاتي", + "terms": "ساعاتي" + }, + "craft/confectionery": { + "name": "حلواني", + "terms": "حلواني" + }, "craft/electrician": { "name": "كهربائي", "terms": "كهربائي" @@ -2360,6 +2405,12 @@ "craft/shoemaker": { "name": "إسكافي" }, + "craft/tailor": { + "name": "خياط" + }, + "craft/tiler": { + "name": "خياط" + }, "emergency/ambulance_station": { "name": "محطة إسعاف", "terms": "محطة إسعاف, محطة اسعاف" @@ -2687,6 +2738,10 @@ "name": "موقد نار", "terms": "موقد" }, + "leisure/fitness_centre": { + "name": "مركز اللياقة البدنية", + "terms": "مركز اللياقة البدنية، نادي صحي" + }, "leisure/garden": { "name": "حديقة", "terms": "حديقة" @@ -2762,6 +2817,10 @@ "name": "مزلقة سفن", "terms": "مزلقة سفن" }, + "leisure/sports_centre": { + "name": "مركز رياضي", + "terms": " مركز رياضي، نادي رياضي " + }, "leisure/sports_centre/swimming": { "name": "مبنى حوض سباحة", "terms": "حمام سباحة; حوض سباحة; حمام; حوض; سباحة; مسبح" @@ -2774,6 +2833,10 @@ "name": "حوض سباحة", "terms": "حمام سباحة; حوض سباحة; حمام; حوض; سباحة; مسبح" }, + "leisure/track": { + "name": "مضمار سباق", + "terms": "مضمار سباق" + }, "leisure/water_park": { "name": "ملاهي مائية", "terms": "ملاهي مائية" @@ -2863,6 +2926,10 @@ "name": "محطة مياه", "terms": "محطة مياه" }, + "man_made/watermill": { + "name": "طاحونة مائية", + "terms": "طاحونة مائية" + }, "man_made/works": { "name": "مصنع", "terms": "مصنع" @@ -2973,16 +3040,28 @@ "terms": "مكتب" }, "office/accountant": { - "name": "المحاسب", - "terms": "المحاسب القانوني، المدقق، الحسابات " + "name": " المحاسب ", + "terms": " المحاسب القانوني، المدقق، الحسابات " }, "office/administrative": { "name": "مكتب الإداري ", "terms": "إدارة، إدارة عامة، مكتب تنظيمي" }, + "office/advertising_agency": { + "name": "وكالة إعلانية", + "terms": "وكالة الإشهار، وكالة إعلانية" + }, "office/architect": { - "name": "مهندس معماري ", - "terms": "بناء، مباني، مدينة، تعمير" + "name": " مهندس معماري ", + "terms": " بناء، مباني، مدينة، تعمير " + }, + "office/association": { + "name": "جمعية ", + "terms": "جمعية، منظمة غير ربحية " + }, + "office/charity": { + "name": "منظمة خيرية", + "terms": "منظمة خيرية" }, "office/company": { "name": "مكتب شركة", @@ -3004,30 +3083,46 @@ "name": "مكتب مالي", "terms": "وزارة المالية، المكتب المالي والضريبي، " }, + "office/forestry": { + "name": "إدارة الغابات", + "terms": "إدارة الغابات" + }, "office/government": { "name": "مكتب حكومي", "terms": "رئاسة الوزراء، إدارة الدولة، المكتب العام، " }, + "office/government/register_office": { + "name": "مكتب تسجيل", + "terms": "مكتب تسجيل" + }, + "office/government/tax": { + "name": "مكتب الضرائب", + "terms": "مكتب الضرائب" + }, "office/insurance": { "name": "مكتب تأمينات", "terms": "مديرية المعاشات، دائرة التأمينات الاجتماعية، إدارة التأمين" }, - "office/it": { - "name": "مكتب تقنية المعلومات", - "terms": "المكتب التقني، إدارة المعلوماتية، إدارة المعلومات ، هيئة التقانة" - }, "office/lawyer": { "name": "مكتب قانوني ", "terms": "مكتب محاماة، اﻹدارة القانونية، المحكمة،" }, + "office/lawyer/notary": { + "name": "كاتب عدل / موثق", + "terms": "كاتب عدل، موثق" + }, "office/newspaper": { "name": "صحيفة", - "terms": "جريدة، صفحة أخبار، يومية" + "terms": " جريدة، صفحة أخبار، يومية " }, "office/ngo": { "name": "مكتب المنظمات الغير حكومية", "terms": "مكتب الجمعيات الخيرية، هيئات العمل اﻹغائي، " }, + "office/notary": { + "name": "كاتب عدل / موثق", + "terms": "كاتب عدل، موثق" + }, "office/physician": { "name": "طبيب" }, @@ -3035,21 +3130,41 @@ "name": "الحزب السياسي ", "terms": "حزب سياسي، الحزب السياسي، المكتب السياسي، مكتب سياسي" }, + "office/private_investigator": { + "name": "مكتب محقق", + "terms": "مكتب محقق" + }, + "office/quango": { + "name": "السلطة الإدارية المستقلة", + "terms": "السلطة الإدارية المستقلة" + }, "office/research": { "name": "مكتب بحوث", "terms": "مكتب البحوث، مكتب اﻷبحاث، هيئة اﻷبحاث" }, + "office/surveyor": { + "name": "مساح", + "terms": "مساح" + }, + "office/tax_advisor": { + "name": "مستشار الضرائب", + "terms": "مستشار الضرائب" + }, "office/telecommunication": { "name": "مكتب اتصالات", "terms": "مكتب الاتصالات، إدارة الاتصال، هيئة الاتصالات العامة" }, "office/therapist": { "name": "المعالج", - "terms": "معالج، معالج فيزيائي، طبيب، مُمرض" + "terms": " معالج، معالج فيزيائي، طبيب، مُمرض " }, "office/travel_agent": { "name": "وكالة السفر" }, + "office/water_utility": { + "name": "شركة المياه", + "terms": "شركة المياه" + }, "place": { "name": "قصر" }, @@ -3079,6 +3194,14 @@ "place/neighbourhood": { "name": "حي سكني" }, + "place/square": { + "name": "ساحة", + "terms": "ساحة" + }, + "place/suburb": { + "name": "ضاحية", + "terms": "ضاحية" + }, "place/town": { "name": "بلدة", "terms": "بلدة" @@ -3098,6 +3221,14 @@ "name": "مولد طاقة", "terms": "مولد الطاقة" }, + "power/generator/source_nuclear": { + "name": " محطة طاقة نووية ", + "terms": " محطة طاقة نووية " + }, + "power/generator/source_wind": { + "name": "عنفة رياح", + "terms": "عنفة رياح" + }, "power/line": { "name": "خط الطاقة", "terms": "خط الكهرباء , خط الطاقة" @@ -3106,6 +3237,10 @@ "name": "خط كهربائي ثانوي", "terms": "خط كهربائي صغير، خط طاقة صغير" }, + "power/plant": { + "name": "محطة توليد الكهرباء", + "terms": "محطة توليد الكهرباء، الطاقة الكهربائية" + }, "power/pole": { "name": "برج كهربائي", "terms": "برج كهربائي" @@ -3135,6 +3270,10 @@ "name": "سكة حديدية مهجورة", "terms": "سكة حديد مهجورة" }, + "railway/buffer_stop": { + "name": "مصد", + "terms": "مصد" + }, "railway/crossing": { "name": "معبر سكة حديد (مسار)", "terms": "معبر سكة حديد; معبر" @@ -3143,6 +3282,10 @@ "name": "سكة حديدة مهجورة", "terms": "سكة حديد غير مستعملة" }, + "railway/funicular": { + "name": "قطار جبلي مائل", + "terms": "قطار جبلي مائل" + }, "railway/halt": { "name": "موقف سكة حديد", "terms": "موقف إجباري خاص بسكك الحديد، موقف السكة الحديدية" @@ -3440,10 +3583,6 @@ "name": "موقف عربات كبيرة", "terms": "موقف عربات كبيرة" }, - "tourism/chalet": { - "name": "شاليه", - "terms": "شاليه" - }, "tourism/gallery": { "name": "رواق فنون" }, diff --git a/dist/locales/ast.json b/dist/locales/ast.json index 73e07de3a..423bb62d1 100644 --- a/dist/locales/ast.json +++ b/dist/locales/ast.json @@ -280,7 +280,6 @@ "localized_translation_language": "Escoyer idioma", "localized_translation_name": "Nome" }, - "zoom_in_edit": "Averar pa editar", "login": "aniciu de sesión", "logout": "zarrar sesión", "loading_auth": "Coneutando con OpenStreetMap...", @@ -520,8 +519,7 @@ "splash": { "welcome": "Bienllegáu al editor d'OpenStreetMap iD", "text": "iD ye una ferramienta amistosa pero potente pa collaborar col meyor mapamundi llibre del mundu. Esta ye la versión {version}. Pa más información visite {website} ya informe de fallos en {github}.", - "walkthrough": "Aniciar la Visita guiada", - "start": "Editar yá" + "walkthrough": "Aniciar la Visita guiada" }, "source_switch": { "live": "en vivo", @@ -545,10 +543,6 @@ "tag_suggests_area": "La etiqueta {tag} suxer que la llinia tendría de ser un área, pero nun ye un area", "deprecated_tags": "Etiquetes anticuaes: {tags}" }, - "zoom": { - "in": "Averar", - "out": "Alloñar" - }, "full_screen": "Conmutar pantalla completa", "gpx": { "local_layer": "Ficheru llocal", @@ -2309,18 +2303,12 @@ "craft/scaffolder": { "name": "Montaxe d'andamios" }, - "craft/sculpter": { - "name": "Escultor" - }, "craft/shoemaker": { "name": "Zapateru" }, "craft/stonemason": { "name": "Canteru" }, - "craft/sweep": { - "name": "Llimpieza de chimenees" - }, "craft/tailor": { "name": "Sastre" }, @@ -2478,9 +2466,6 @@ "highway/path": { "name": "Camín" }, - "highway/pedestrian": { - "name": "Cai peatonal" - }, "highway/primary": { "name": "Carretera autonómica" }, @@ -2926,17 +2911,10 @@ "name": "Oficina", "terms": "Despachu" }, - "office/accountant": { - "name": "Contable" - }, "office/administrative": { "name": "Oficina alministrativa", "terms": "Alministración,Centru municipal" }, - "office/architect": { - "name": "Arquitectu", - "terms": "Arquitectura,Construcción" - }, "office/company": { "name": "Oficina d'empresa", "terms": "Delegación,Sucursal" @@ -2963,16 +2941,9 @@ "name": "Oficina de seguros", "terms": "Aseguradora,Seguros,Riesgu" }, - "office/it": { - "name": "Despachu de teunoloxía de la información" - }, "office/lawyer": { "name": "Despachu d'abogaos" }, - "office/newspaper": { - "name": "Periódicu", - "terms": "Revista, Boletín" - }, "office/ngo": { "name": "ONG", "terms": "Organización nun gubernamental" @@ -2989,9 +2960,6 @@ "office/telecommunication": { "name": "Oficina de telecomunicaciones" }, - "office/therapist": { - "name": "Terapeuta" - }, "office/travel_agent": { "name": "Axencia de viaxes" }, @@ -3470,9 +3438,6 @@ "tourism/caravan_site": { "name": "Aparcaderu d'autocaravanes" }, - "tourism/chalet": { - "name": "Casa d'aldea" - }, "tourism/gallery": { "name": "Galería d'arte" }, diff --git a/dist/locales/bg-BG.json b/dist/locales/bg-BG.json index 7f00b9ae8..f750867a0 100644 --- a/dist/locales/bg-BG.json +++ b/dist/locales/bg-BG.json @@ -212,7 +212,6 @@ "localized_translation_language": "Изберете език", "localized_translation_name": "Име" }, - "zoom_in_edit": "Приближаване за редакция", "logout": "изход", "loading_auth": "Свързване с OpenStreetMap...", "report_a_bug": "Докладвай грешка", @@ -399,8 +398,7 @@ "splash": { "welcome": "Добре дошли в iD редактора за OpenStreetMap", "text": "iD e лесен, но мощен инструмент за попълване на най-добрата свободна карта на света. Това е версия {version}. За повече информация вижте {website} и докладвайте за бъгове в {github}.", - "walkthrough": "Започнете опознавателната обиколка", - "start": "Редактирайте сега" + "walkthrough": "Започнете опознавателната обиколка" }, "source_switch": { "live": "live", @@ -422,10 +420,6 @@ "tag_suggests_area": "Тагът {tag} предполага линията да е площен обект, но тя не е", "deprecated_tags": "Отхвърлени тагове: {tags}" }, - "zoom": { - "in": "Увеличи", - "out": "Намали" - }, "cannot_zoom": "Не можете да намалявате повече в текущия режим.", "full_screen": "Превключи на Цял Екран", "mapillary_images": { @@ -1542,9 +1536,6 @@ "tourism/caravan_site": { "name": "Паркинг за каравани" }, - "tourism/chalet": { - "name": "Бунгала" - }, "tourism/guest_house": { "name": "Къща за гости" }, diff --git a/dist/locales/bn.json b/dist/locales/bn.json index d9d944f2f..09def562c 100644 --- a/dist/locales/bn.json +++ b/dist/locales/bn.json @@ -184,7 +184,6 @@ "localized_translation_language": "ভাষা বেছে নিন", "localized_translation_name": "নাম" }, - "zoom_in_edit": "সম্পাদনার জন্য জুম ইন করুন", "login": "প্রবেশ করুন", "logout": "বেরিয়ে যান", "loading_auth": "ওপেনস্ট্রীটম্যাপে সংযোগ করা হচ্ছে ...", @@ -313,8 +312,7 @@ }, "splash": { "welcome": "iD ওপেনস্ট্রীটম্যাপ সম্পাদকে অাপনাকে স্বাগতম", - "walkthrough": "ওয়াকথ্রু শুরু করুন", - "start": "এখুনি পরিবর্তন করুন" + "walkthrough": "ওয়াকথ্রু শুরু করুন" }, "source_switch": { "live": "সরাসরি", @@ -333,10 +331,6 @@ "tag_suggests_area": "{tag} ট্যাগটি অনুসারে রেখাটি এলাকা হবে, কিন্তু নয়।", "deprecated_tags": "পুরোন ও অব্যবহৃত ট্যাগ: {tags}" }, - "zoom": { - "in": "জুম্ ইন", - "out": "জুম্ আউট" - }, "cannot_zoom": "বর্তমান মোডে আরও জুম আউট করা যাবে না.", "help": { "title": "সাহায্য" @@ -1093,9 +1087,6 @@ "office": { "name": "কার্যালয়" }, - "office/newspaper": { - "name": "সংবাদপত্র" - }, "office/ngo": { "name": "এনজিও অফিস" }, @@ -1108,9 +1099,6 @@ "office/telecommunication": { "name": "টেলিকম অফিস" }, - "office/therapist": { - "name": "থেরাপিস্ট" - }, "place": { "name": "জায়গা" }, diff --git a/dist/locales/bs.json b/dist/locales/bs.json index 3bb42236b..22cb579f5 100644 --- a/dist/locales/bs.json +++ b/dist/locales/bs.json @@ -186,7 +186,6 @@ "localized_translation_language": "Izaberite jezik", "localized_translation_name": "Naziv" }, - "zoom_in_edit": "Uvećajte da bi ste uređivali.", "logout": "Odjavite se", "loading_auth": "Povezivanje na OpenStreetMap...", "status": { @@ -265,8 +264,7 @@ "splash": { "welcome": "Dobrodošli u ID - OpenStreetMap uređivač", "text": "ID je prijateljski ali moćan alat za doprinos najboljoj svjetskoj besplatnoj karti svijeta. Ovo je verzija {version}. Za više informacija pogledajte stranicu {website} i prijavite greške na stranici {github}.", - "walkthrough": "Počnite sa upoznavanjem", - "start": "Uređujte sada" + "walkthrough": "Počnite sa upoznavanjem" }, "source_switch": { "live": "uživo", @@ -285,10 +283,6 @@ "tag_suggests_area": "Oznaka {tag} ukazuje da bi linija trebala biti područje, ali nije područje", "deprecated_tags": "Zastarjele oznake: {tags}" }, - "zoom": { - "in": "Uvećati", - "out": "Umanjiti" - }, "cannot_zoom": "Ne može se umanjiti više u trenutnom načinu.", "help": { "title": "Pomoć", @@ -1096,15 +1090,9 @@ "craft/saddler": { "name": "Sedlar" }, - "craft/sculpter": { - "name": "Skulptor" - }, "craft/stonemason": { "name": "Klesar" }, - "craft/sweep": { - "name": "Čišćenje dimnjaka" - }, "craft/tailor": { "name": "Krojač" }, @@ -1569,18 +1557,10 @@ "name": "Ured", "terms": "ured,uslužni ured" }, - "office/accountant": { - "name": "Računovođa", - "terms": "računovođa,ured računovođe" - }, "office/administrative": { "name": "Administrativni ured", "terms": "administracija,administrativni ured,ured upravljanja" }, - "office/architect": { - "name": "Arhitekta", - "terms": "arhitekta,arhitekt,inžinjer arhitekture" - }, "office/company": { "name": "Ured kompanije", "terms": "ured kompanije,ured firme,korporativni ured" @@ -1609,18 +1589,10 @@ "name": "Ured za osiguranje", "terms": "ured za osiguranje,kancelarija za osiguranje" }, - "office/it": { - "name": "IT ured", - "terms": "IT ured,informatički ured,IT kancelarija" - }, "office/lawyer": { "name": "Pravni ured", "terms": "pravni ured,pravna kancelarija" }, - "office/newspaper": { - "name": "Novina", - "terms": "novine,novina,novinska agencija" - }, "office/ngo": { "name": "Ured NVO", "terms": "Nevladin ured,ured NVO,NVO kancelarija" @@ -1640,10 +1612,6 @@ "name": "Ured telekoma", "terms": "ured telekoma,ured telekom operatera,kancelarija telekom operatera" }, - "office/therapist": { - "name": "Terapeut", - "terms": "terapeut" - }, "office/travel_agent": { "name": "Putnička agencija" }, @@ -1981,10 +1949,6 @@ "name": "Kamp park", "terms": "kamp park,autokamp" }, - "tourism/chalet": { - "name": "Šale", - "terms": "šale,pastirska kuća" - }, "tourism/guest_house": { "name": "Gostinjska kuća", "terms": "gostinjska kuća,gostinjski dom" diff --git a/dist/locales/ca.json b/dist/locales/ca.json index 28dcfe9a6..a2cfa83c0 100644 --- a/dist/locales/ca.json +++ b/dist/locales/ca.json @@ -310,7 +310,6 @@ "localized_translation_language": "Trieu una llengua", "localized_translation_name": "Nom" }, - "zoom_in_edit": "Apropeu-vos més per editar", "login": "inicia sessió", "logout": "Tancar la sessió", "loading_auth": "Connectant a OpenStreetMap...", @@ -330,9 +329,11 @@ "title": "Puja a l'OpenStreetMap", "upload_explanation": "Els canvis que deseu seran visibles a tots els mapes que utilitzin dades d'OpenStreetMap.", "upload_explanation_with_user": "Els canvis que deseu com a {user} seran visibles en tots els mapes que utilitzin dades d'OpenStreetMap.", + "request_review": "M'agradaria que algú revisés les meves modificacions.", "save": "Puja", "cancel": "Cancel·lar", "changes": "{count} canvis", + "download_changes": "Descarregar el fitxer osmChange", "warnings": "Avisos", "modified": "Modificat", "deleted": "Eliminat", @@ -346,6 +347,53 @@ "list": "Edicions fetes per {users}", "truncated_list": "Edicions fetes per {users} i {count} més" }, + "info_panels": { + "key": "I", + "background": { + "key": "B", + "title": "Fons", + "zoom": "Zoom", + "vintage": "Antic", + "source": "Font", + "description": "Descripció", + "resolution": "Resolució", + "accuracy": "Precisió", + "unknown": "Desconegut", + "show_tiles": "Mostrar rajoles", + "hide_tiles": "Ocultar rajoles" + }, + "history": { + "key": "H", + "title": "Història", + "selected": "{n} seleccionat", + "version": "Versió", + "last_edit": "Darrera modificació", + "edited_by": "Modificat per", + "changeset": "Conjunt de modificacions", + "unknown": "Desconegut", + "link_text": "Història a openstreetmap.og" + }, + "location": { + "key": "L", + "title": "Ubicació", + "unknown_location": "Ubicació desconeguda" + }, + "measurement": { + "key": "M", + "title": "Mesurament", + "selected": "{n} seleccionat", + "geometry": "Geometria", + "closed": "tancat", + "center": "Center", + "perimeter": "Perímetre", + "length": "Longitud", + "area": "Àrea", + "centroid": "Centroide", + "location": "Ubicació", + "metric": "Mètric", + "imperial": "Imperial" + } + }, "geometry": { "point": "punt", "vertex": "vèrtex", @@ -408,6 +456,7 @@ "background": { "title": "Fons", "description": "Paràmetres de configuració del fons", + "key": "B", "percent_brightness": "{opacity}% brillantor", "none": "Cap", "best_imagery": "Font d'imatgeria millor coneguda per a aquesta ubicació", @@ -420,16 +469,25 @@ "offset": "Arrosega cap a qualsevol lloc de la zona gris de sota per ajustar la alineació de la imatgeria, o entra els valors de la alineació en metres.", "minimap": { "description": "Miniatura del mapa", - "tooltip": "Mostra un mapa amb menys zoom per ajudar a localitzar l'àrea que es mostra actualment." + "tooltip": "Mostra un mapa amb menys zoom per ajudar a localitzar l'àrea que es mostra actualment.", + "key": "/" } }, "map_data": { "title": "Dades del mapa", "description": "Dades del mapa", + "key": "F", "data_layers": "Capes de dades", + "layers": { + "osm": { + "tooltip": "Dades del mapa d'OpenStreetMap", + "title": "Dades d'OpenStreetMap" + } + }, "fill_area": "Emplenat d'àrees", "map_features": "Elements del mapa", - "autohidden": "Aquests objectes s'han ocultat automàticament perquè n'haurien aparegut massa a la pantalla. Us podeu acostar per editar-los." + "autohidden": "Aquests objectes s'han ocultat automàticament perquè n'haurien aparegut massa a la pantalla. Us podeu acostar per editar-los.", + "osmhidden": "Aquestes característiques han sigut ocultades automàticament perquè la capa d'OpenStreetMap es troba ocultada." }, "feature": { "points": { @@ -484,7 +542,8 @@ "area_fill": { "wireframe": { "description": "Sense emplenat (esquelet)", - "tooltip": "El mode d'esquelet fa més fàcil veure la imatgeria de fons." + "tooltip": "El mode d'esquelet fa més fàcil veure la imatgeria de fons.", + "key": "W" }, "partial": { "description": "Emplenat parcial", @@ -497,7 +556,9 @@ }, "restore": { "heading": "Teniu canvis sense desar", - "description": "Voleu restaurar els canvis no desats de la sessió anterior?" + "description": "Voleu restaurar els canvis no desats de la sessió anterior?", + "restore": "Restaurar els meus canvis", + "reset": "Descartar els meus canvis" }, "save": { "title": "Desa", @@ -517,6 +578,7 @@ "keep_remote": "Utilitzar els seus", "restore": "Restaurar", "delete": "Deixar eliminat", + "download_changes": "O descarregar el fitxer osmChange", "done": "Tots els conflictes resolts!", "help": "Un altre usuari ha canviat algun dels objectes que heu editat.\nCliqueu a cada objecte de sota per tenir més detalls del conflicte, escollint així si mantenir\nels vostres canvis o els de l'altre usuari.\n" } @@ -548,8 +610,7 @@ "splash": { "welcome": "Benvinguts a l'editor iD per a l'OpenStreetMap", "text": "L'editor iD és una eina fàcil i potent per contribuir al millor mapa lliure del món. Aquesta és la versió {version}. Per obtenir més informació visiteu {website} i si voleu comunicar l'existència d'algun error feu-ho a {github}.", - "walkthrough": "Comenceu la visita guiada", - "start": "Editeu-lo ara" + "walkthrough": "Comenceu la visita guiada" }, "source_switch": { "live": "directe", @@ -579,10 +640,6 @@ "tag_suggests_area": "L'etiqueta {tag} suggereix que la línia hauria de ser una àrea, però no és una àrea", "deprecated_tags": "Etiquetes obsoletes : {tags}" }, - "zoom": { - "in": "Apropa't", - "out": "Allunya't" - }, "cannot_zoom": "No es pot allunyar més la vista al mode actual.", "full_screen": "Passar a pantalla completa", "gpx": { @@ -604,6 +661,7 @@ }, "help": { "title": "Ajuda", + "key": "H", "help": "# Ajuda\n\nAixò és un editor per al [OpenStreetMap](http://www.openstreetmap.org/), el mapa lliure i editable del món. Podeu utilitzar-lo per afegir i actualitzar\nles dades a la vostra àrea, contibuint així a fer un mapa de codi obert i amb dades lliures del món\nmillor per a tothom.\n\nLes edicions que feu en aquest mapa seran visibles per tothom que faci servir OpenStreetMap. Per tal de començar a editar, necessitareu\n[iniciar sessió](https://www.openstreetmap.org/login).\n\nL'[Editor iD](http://ideditor.com/) és un projecte cooperatiu que té el [codi font\ndisponible a GitHub](https://github.com/openstreetmap/iD).\n", "gps": "# GPS\n\nLes traces enregistrades amb GPS són una font fiable de dades per a l'OpenStreetMap. Aquest editor accepta les traces locals - fitxers `.gpx` del vostre ordinador. Podeu generar aquest tipus de traça GPS amb aplicacions per a mòbils o per dispositius personals de GPS.\n\nPer a més informació de com recollir dades amb GPS, llegiu [Recollir dades amb GPS](http://learnosm.org/en/mobile-mapping/).\n\nPer utilitzar una traça GPX en la edició del mapa arrossegueu el fitxer GPX i deixeu-lo a l'editor. En detectar-se, s'afegirà en el mapa com una línia lila llampant. Cliqueu al menú 'Dades del mapa', al cantó dret, per activar, desactivar, o ajustar la visió d'aquesta capa GPX.\n\nLa traça GPX no pujarà directament a OpenStreetMap - la millor manera d'utilitzar-la és que dibuixeu en el mapa els nous objectes, fent-la servir com a guia. De tota manera, també la podeu [pujar a l'OpenStreetMap] (http://www.openstreetmap.org/trace/create) perquè d'altres persones l'aprofitin.\n", "imagery": "# Imatgeria\n\nLa imatgeria aèria és un recurs important per a l'edició de mapes. Una combinació de\nvols d'aeronaus, fotografies de satèl·lit, i d'altres fonts compilades gratuïtament\nestan disponibles a l'editor dins del menú de l'esquerra 'Paràmetres de configuració del fons'.\n\nPer defecte, l'editor mostra la capa de satèl·lit de [Bing Maps](http://www.bing.com/maps/), però a mesura que us moveu i ajusteu la vista del mapa a noves àrees geogràfiques, noves fonts estaran disponibles. En alguns països, com ara els Estats Units, França, i Dinamarca tenen\nuna imatgeria d'alta qualitat disponible per a determinades àrees.\n\nLa imatgeria a vegades no es correspon amb les dades del mapa, això és degut a un error\nper part del proveïdor de la imatge. Si observeu moltes carreteres mogudes del seu lloc a la imatge,\nno les mogueu per tal que encaixin amb aquesta. Ja que podeu ajustar la imatgeria per tal de que quadri amb les dades existents clicant a 'Corregeix la desalineació' al capdevall de la pestanya dels\n'Paràmetres de configuració del fons'.\n", @@ -615,16 +673,36 @@ "ok": "D'acord", "graph": { "block_number": "", + "city": "Tres Rius", "county": "", "district": "", "hamlet": "", "neighbourhood": "", + "postcode": "49093", "province": "", "quarter": "", "state": "", "subdistrict": "", "suburb": "", - "countrycode": "es" + "countrycode": "es", + "name": { + "1st-avenue": "1ra Avinguda", + "2nd-avenue": "2na Avinguda", + "4th-avenue": "4ta Avinguda", + "5th-avenue": "5ena Avinguda", + "6th-avenue": "6ena Avinguda", + "6th-street": "Carrer 6", + "7th-avenue": "7ena Avinguda", + "8th-avenue": "8ena Avinguda", + "9th-avenue": "9ena Avinguda", + "10th-avenue": "10ena Avinguda", + "11th-avenue": "11ena Avinguda", + "12th-avenue": "12ena Avinguda", + "adams-street": "Carrer Adams", + "andrews-elementary-school": "Escola de primària Andrews", + "andrews-street": "Carrer Andrews", + "pizza-hut": "Pizza Hut" + } }, "welcome": { "title": "Benvingut", @@ -736,7 +814,50 @@ } }, "shortcuts": { - "title": "Dreceres de teclat" + "title": "Dreceres de teclat", + "tooltip": "Mostra la finestra de dreceres del teclat.", + "toggle": { + "key": "?" + }, + "key": { + "alt": "Alt", + "backspace": "Tecla de retrocés", + "cmd": "Cmd", + "ctrl": "Ctrl", + "delete": "Suprimir", + "del": "Supr", + "end": "Fin", + "enter": "Entrar", + "esc": "Esc", + "home": "Inicio", + "pgdn": "Av Pág", + "pgup": "Re Pág" + }, + "or": "-o-", + "browsing": { + "title": "Cercant", + "navigation": { + "title": "Navegació" + }, + "help": { + "title": "Ajuda" + } + }, + "editing": { + "title": "Modificant", + "drawing": { + "title": "Dibuixant", + "add_point": "Mode \"Afegir punt\"", + "add_line": "Mode \"Afegir línia\"", + "add_area": "Mode \"Afegir Àrea\"" + } + }, + "tools": { + "title": "Ferramentes", + "info": { + "title": "Informació" + } + } }, "presets": { "categories": { @@ -860,7 +981,8 @@ "subdistrict": "Subdistricte", "subdistrict!vn": "Ward/Commune/Townlet", "suburb": "Sector", - "suburb!jp": "Suburbi" + "suburb!jp": "Suburbi", + "unit": "Unitat" } }, "admin_level": { @@ -974,12 +1096,19 @@ "board_type": { "label": "Tipus" }, + "boules": { + "label": "Tipus" + }, "boundary": { "label": "Tipus" }, "brand": { "label": "Marca" }, + "bridge": { + "label": "Tipus", + "placeholder": "Predeterminat" + }, "building": { "label": "Edifici" }, @@ -989,6 +1118,9 @@ "bunker_type": { "label": "Tipus" }, + "cables": { + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direcció (graus en sentit horari)", "placeholder": "45, 90, 180, 270" @@ -1039,12 +1171,19 @@ "clockwise": "en sentit de les agulles del rellotge" } }, + "clothes": { + "label": "Roba" + }, "club": { "label": "Tipus" }, "collection_times": { "label": "Horari de recollida" }, + "comment": { + "label": "Comentari dels canvis", + "placeholder": "Breu descripció de les teves contribucions (necessari)" + }, "communication_multi": { "label": "Tipus de comunicació" }, @@ -1055,6 +1194,9 @@ "label": "URL de la webcam", "placeholder": "http://example.com/" }, + "content": { + "label": "Contingut" + }, "country": { "label": "País" }, @@ -1064,6 +1206,16 @@ "craft": { "label": "Tipus" }, + "crane/type": { + "label": "Tipus de grua", + "options": { + "floor-mounted_crane": "Grua muntada al pis", + "portal_crane": "Pont Grua" + } + }, + "crop": { + "label": "Cultius" + }, "crossing": { "label": "Tipus" }, @@ -1073,6 +1225,10 @@ "currency_multi": { "label": "Tipus de divisa" }, + "cutting": { + "label": "Tipus", + "placeholder": "Predeterminat" + }, "cycle_network": { "label": "Xarxa" }, @@ -1129,6 +1285,10 @@ "description": { "label": "Descripció" }, + "devices": { + "label": "Dispositius", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Canviadors per a nadons" }, @@ -1141,6 +1301,10 @@ "drive_through": { "label": "Via dins una propietat." }, + "duration": { + "label": "Durada", + "placeholder": "00:00" + }, "electrified": { "label": "Electrificació", "options": { @@ -1158,6 +1322,10 @@ "label": "Correu-e", "placeholder": "exemple@exemple.com" }, + "embankment": { + "label": "Tipus", + "placeholder": "Predeterminat" + }, "emergency": { "label": "Material per a emergències" }, @@ -1180,6 +1348,9 @@ "fire_hydrant/position": { "label": "Posició", "options": { + "green": "Verd", + "lane": "Carril", + "parking_lot": "Aparcament", "sidewalk": "Vorera" } }, @@ -1192,9 +1363,19 @@ "wall": "Mur" } }, + "fitness_station": { + "label": "Tipus d'equipament" + }, "fixme": { "label": "Arregla'm" }, + "ford": { + "label": "Tipus", + "placeholder": "Predeterminat" + }, + "frequency": { + "label": "Freqüència de funcionament" + }, "fuel": { "label": "Carburant" }, @@ -1216,12 +1397,19 @@ "generator/method": { "label": "Mètode" }, + "generator/output/electricity": { + "label": "Sortida de potència", + "placeholder": "50 MW, 100 MW, 200 MW..." + }, "generator/source": { "label": "Font" }, "generator/type": { "label": "Tipus" }, + "grape_variety": { + "label": "Varietats de raïm" + }, "handicap": { "label": "Handicap", "placeholder": "1-18" @@ -1229,6 +1417,16 @@ "handrail": { "label": "Barana" }, + "hashtags": { + "label": "Hashtags suggerits", + "placeholder": "#exemple" + }, + "healthcare": { + "label": "Tipus" + }, + "healthcare/speciality": { + "label": "Especialitats" + }, "height": { "label": "Altura (metres)" }, @@ -1238,6 +1436,9 @@ "historic": { "label": "Tipus" }, + "historic/civilization": { + "label": "Civilització històrica" + }, "hoops": { "label": "Cistella de basquetbol", "placeholder": "1, 2, 4..." @@ -1267,6 +1468,9 @@ "inscription": { "label": "Inscripció" }, + "intermittent": { + "label": "Intermitent" + }, "internet_access": { "label": "Accés a Internet", "options": { @@ -1283,6 +1487,12 @@ "internet_access/ssid": { "label": "SSID (nom de la xarxa)" }, + "kerb": { + "label": "Vorera" + }, + "label": { + "label": "Etiqueta" + }, "lamp_type": { "label": "Tipus" }, @@ -1294,7 +1504,8 @@ "placeholder": "1, 2, 3..." }, "layer": { - "label": "Capa" + "label": "Capa", + "placeholder": "0" }, "leaf_cycle": { "label": "Cicle del fullatge", @@ -1354,6 +1565,9 @@ "man_made": { "label": "Tipus" }, + "manhole": { + "label": "Tipus" + }, "map_size": { "label": "Cobertura" }, @@ -1371,6 +1585,12 @@ "maxstay": { "label": "Estada màxima" }, + "maxweight": { + "label": "Pes màxim" + }, + "memorial": { + "label": "Tipus" + }, "mtb/scale": { "label": "Dificultat per a bicicletes de muntanya", "options": { @@ -1510,6 +1730,10 @@ "payment_multi": { "label": "Tipus de pagament" }, + "phases": { + "label": "Fases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telèfon", "placeholder": "+31 42 123 4567" @@ -1558,6 +1782,19 @@ "plant": { "label": "Planta" }, + "plant/output/electricity": { + "label": "Sortida de potència", + "placeholder": "500 MW, 1000 MW, 2000 MW..." + }, + "playground/baby": { + "label": "Seient de nadó" + }, + "playground/max_age": { + "label": "Edat màxima" + }, + "playground/min_age": { + "label": "Edat mínima" + }, "population": { "label": "Població" }, @@ -1586,6 +1823,39 @@ "container": "Contenidor" } }, + "ref": { + "label": "Codi de referència" + }, + "ref_aeroway_gate": { + "label": "Nombre de porta" + }, + "ref_golf_hole": { + "label": "Nombre de forat", + "placeholder": "1-18" + }, + "ref_highway_junction": { + "label": "Nombre d'encreuament" + }, + "ref_platform": { + "label": "Nombre de plataforma" + }, + "ref_road_number": { + "label": "Nombre de carretera" + }, + "ref_route": { + "label": "Nombre de ruta" + }, + "ref_runway": { + "label": "Número de Pista", + "placeholder": "p.e. 01L/19R" + }, + "ref_stop_position": { + "label": "Nombre de parada" + }, + "ref_taxiway": { + "label": "Nom del carrer de rodatge", + "placeholder": "exemple A5" + }, "relation": { "label": "Tipus" }, @@ -1652,6 +1922,9 @@ "yard": "Platja" } }, + "service_times": { + "label": "Temps de Servei" + }, "shelter": { "label": "Coberta" }, @@ -1693,6 +1966,9 @@ "social_facility": { "label": "Tipus" }, + "source": { + "label": "Fonts" + }, "sport": { "label": "Esports" }, @@ -1711,6 +1987,9 @@ "start_date": { "label": "Data d'inici" }, + "step_count": { + "label": "Nobmre de pases" + }, "stop": { "label": "Tipus de stop", "options": { @@ -1729,9 +2008,19 @@ }, "placeholder": "Desconegut" }, + "structure_waterway": { + "label": "Estructura", + "options": { + "tunnel": "Túnel" + }, + "placeholder": "Desconegut" + }, "studio": { "label": "Tipus" }, + "substance": { + "label": "Substància" + }, "substation": { "label": "Tipus" }, @@ -1751,12 +2040,22 @@ "label": "Tipus de vigilància", "options": { "ALPR": "Lector de matrícules automàtic", - "camera": "Càmera" + "camera": "Càmera", + "guard": "Vigilat" } }, "surveillance/zone": { "label": "Zona de vigilància" }, + "switch": { + "label": "Tipus", + "options": { + "circuit_breaker": "Contactor", + "disconnector": "Desconector", + "earthing": "Presa de terra", + "mechanical": "Mecanic" + } + }, "tactile_paving": { "label": "Paviment rugós" }, @@ -1787,6 +2086,9 @@ "tourism": { "label": "Tipus" }, + "tourism_attraction": { + "label": "Turisme" + }, "tower/construction": { "label": "Construcció" }, @@ -1804,6 +2106,9 @@ }, "placeholder": "Sòlid, majoritàriament sòlid, tou..." }, + "trade": { + "label": "Tipus" + }, "traffic_calming": { "label": "Tipus" }, @@ -1822,9 +2127,26 @@ }, "placeholder": "Excel·lent, Bona, Dolenta..." }, + "transformer": { + "label": "Tipus", + "options": { + "auto": "Autotransformador", + "auxiliary": "Auxiliar", + "converter": "Convertidor", + "distribution": "Distribuidor", + "generator": "Generador", + "phase_angle_regulator": "Regulador d'angle de fase", + "traction": "Tracció", + "yes": "Desconegut" + } + }, "trees": { "label": "Arbres" }, + "tunnel": { + "label": "Tipus", + "placeholder": "Predeterminat" + }, "vending": { "label": "Tipus de mercaderies" }, @@ -1836,6 +2158,34 @@ "street": "De 5 a 20 m (16 a 65 peus)" } }, + "volcano/status": { + "label": "Estat del volcà", + "options": { + "active": "Actiu", + "dormant": "Inactiu", + "extinct": "Extingit" + } + }, + "volcano/type": { + "label": "Tipus de volcà", + "options": { + "scoria": "Escòria", + "shield": "Escut", + "stratovolcano": "Estratovolcà" + } + }, + "voltage": { + "label": "Voltatge" + }, + "voltage/primary": { + "label": "Voltatge Primari" + }, + "voltage/secondary": { + "label": "Voltatge Secondari" + }, + "voltage/tertiary": { + "label": "Voltatge Terciari" + }, "wall": { "label": "Tipus" }, @@ -1863,6 +2213,22 @@ }, "wikipedia": { "label": "Viquipèdia" + }, + "windings": { + "label": "Bobines", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuració de bobines", + "options": { + "delta": "Delta", + "leblanc": "Leblanc", + "open": "Obert", + "open-delta": "Obert Delta", + "scott": "Scott", + "star": "Estrella", + "zigzag": "Zig Zag" + } } }, "presets": { @@ -1871,16 +2237,19 @@ "terms": "Adreça, Direcció, Domicili" }, "advertising/billboard": { - "name": "Taulell" + "name": "Taulell", + "terms": "Cartellera" }, "aerialway": { "name": "Transport per cable" }, "aerialway/cable_car": { - "name": "Telefèric" + "name": "Telefèric", + "terms": "Telefèric" }, "aerialway/chair_lift": { - "name": "Telecadira" + "name": "Telecadira", + "terms": "Telecadira" }, "aerialway/gondola": { "name": "Telecabina", @@ -1940,6 +2309,12 @@ "amenity": { "name": "Instal·lació" }, + "amenity/animal_boarding": { + "name": "Instal·lació d'embarcament d'animals" + }, + "amenity/animal_breeding": { + "name": "Instal·lació de reproducció d'animals" + }, "amenity/animal_shelter": { "name": "Refugi d'animals", "terms": "Refugi d'animals, protectora" @@ -2021,6 +2396,12 @@ "amenity/clinic": { "name": "Clínica" }, + "amenity/clinic/abortion": { + "name": "Clínica d'avortament" + }, + "amenity/clinic/fertility": { + "name": "Clínica de fertilitat" + }, "amenity/clock": { "name": "Rellotge" }, @@ -2118,9 +2499,15 @@ "amenity/motorcycle_parking": { "name": "Aparcament per a motocicletes" }, + "amenity/music_school": { + "name": "Escola de música" + }, "amenity/nightclub": { "name": "Club nocturn" }, + "amenity/nursing_home": { + "name": "Llar d'avis" + }, "amenity/parking": { "name": "Aparcament", "terms": "Aparcament, Pàrquing, Garatge, Parking, parking" @@ -2131,6 +2518,9 @@ "amenity/parking_space": { "name": "Espai d'aparcament" }, + "amenity/pavilion": { + "name": "Pabelló" + }, "amenity/pharmacy": { "name": "Farmàcia", "terms": "Farmàcia, establiment de venda de medicaments," @@ -2147,6 +2537,9 @@ "name": "Església", "terms": "Temple, església" }, + "amenity/place_of_worship/hindu": { + "name": "Temple Hindú" + }, "amenity/place_of_worship/jewish": { "name": "Sinagoga", "terms": "Sinagoga, temple jueu, església jueva, culte jueu, jueu" @@ -2155,6 +2548,15 @@ "name": "Mesquita", "terms": "Mesquita, temple musulmà, espai musulmà, musulmà" }, + "amenity/place_of_worship/shinto": { + "name": "Santuari sintoísta" + }, + "amenity/place_of_worship/sikh": { + "name": "Temple Sikh " + }, + "amenity/place_of_worship/taoist": { + "name": "Temple Taoista" + }, "amenity/planetarium": { "name": "Planetari" }, @@ -2207,9 +2609,15 @@ "name": "Escola", "terms": "Escola, CEIP, IES, Col·legi, Institut, Centre educatiu, Guarderia" }, + "amenity/scrapyard": { + "name": "Escorxador" + }, "amenity/shelter": { "name": "Refugi" }, + "amenity/shower": { + "name": "Dutxa" + }, "amenity/social_facility": { "name": "Equipament social" }, @@ -2223,6 +2631,9 @@ "amenity/social_facility/homeless_shelter": { "name": "Refugi per a indigents" }, + "amenity/social_facility/nursing_home": { + "name": "Llar d'avis" + }, "amenity/studio": { "name": "Estudi" }, @@ -2252,6 +2663,9 @@ "amenity/university": { "name": "Campus universitari" }, + "amenity/vending_machine": { + "name": "Màquina de vending" + }, "amenity/vending_machine/cigarettes": { "name": "Màquina de tabac" }, @@ -2264,9 +2678,15 @@ "amenity/vending_machine/excrement_bags": { "name": "Equipament de residus canins" }, + "amenity/vending_machine/feminine_hygiene": { + "name": "Màquina de vènding d'articles d'higiene femenina" + }, "amenity/vending_machine/news_papers": { "name": "Màquina expenedora de diaris" }, + "amenity/vending_machine/newspapers": { + "name": "Màquina expenedora de diaris" + }, "amenity/vending_machine/parcel_pickup_dropoff": { "name": "Màquina de recollida/enviament de paqueteria" }, @@ -2604,18 +3024,12 @@ "craft/scaffolder": { "name": "Muntador de bastides" }, - "craft/sculpter": { - "name": "Escultor" - }, "craft/shoemaker": { "name": "Sabater" }, "craft/stonemason": { "name": "Manobra" }, - "craft/sweep": { - "name": "Netejador de xemeneies" - }, "craft/tailor": { "name": "Sastreria" }, @@ -2775,9 +3189,6 @@ "name": "Camí", "terms": "Sender,Corriol" }, - "highway/pedestrian": { - "name": "Zona de vianants" - }, "highway/primary": { "name": "Carretera primària", "terms": "Carretera primària,Carretera de 1r ordre" @@ -3329,17 +3740,10 @@ "name": "Oficines", "terms": "Oficina, Oficines" }, - "office/accountant": { - "name": "Contable" - }, "office/administrative": { "name": "Oficina de tràmits locals", "terms": "Oficina administrativa" }, - "office/architect": { - "name": "Arquitecte", - "terms": "Arquitecte" - }, "office/company": { "name": "Oficines de companyia" }, @@ -3367,9 +3771,6 @@ "office/insurance": { "name": "Oficina de companyia asseguradora" }, - "office/it": { - "name": "Oficina d'informàtic/a" - }, "office/lawyer": { "name": "Bufet d'advocats" }, @@ -3377,10 +3778,6 @@ "name": "Notaria", "terms": "Oficina del notari" }, - "office/newspaper": { - "name": "Diari", - "terms": "Periòdic" - }, "office/ngo": { "name": "Oficina d'ONG" }, @@ -3397,9 +3794,6 @@ "office/telecommunication": { "name": "Oficina de telecomunicacions" }, - "office/therapist": { - "name": "Terapeuta" - }, "office/travel_agent": { "name": "Agència de viatges" }, @@ -3951,9 +4345,6 @@ "tourism/caravan_site": { "name": "Càmping per a caravanes" }, - "tourism/chalet": { - "name": "Xalet" - }, "tourism/gallery": { "name": "Galeria d'art" }, @@ -4188,17 +4579,95 @@ "description": "Imatges aèries i de satèl·lit.", "name": "Imatges aèries de Bing" }, + "DigitalGlobe-Premium": { + "attribution": { + "text": "Termes i comentaris" + }, + "description": "Imatges de satèl·lit de DigitalGlobe Premium", + "name": "Imatges de DigitalGlobe Premium" + }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Termes i comentaris" + }, + "description": "Limitacions d'imatges i dates de captura. Les etiquetes apareixen al nivell de zoom 14 i superior.", + "name": "Imatges de DigitalGlobe Premium Vintage" + }, "DigitalGlobe-Standard": { + "attribution": { + "text": "Termes i comentaris" + }, "description": "Imatges de satèl·lit de DigitalGlobe estàndard", "name": "Imatges de DigitalGlobe estàndard" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Termes i comentaris" + }, + "description": "Limitacions d'imatges i dates de captura. Les etiquetes apareixen al nivell de zoom 14 i superior.", + "name": "Imatges de DigitalGlobe estàndard Vintage" + }, + "EsriWorldImagery": { + "attribution": { + "text": "Termes i comentaris" + }, + "description": "Imatges aèries de Esri", + "name": "Imatges aèries de Esri" + }, "MAPNIK": { + "attribution": { + "text": "© OpenStreetMap col·laboradors, CC-BY-SA" + }, "description": "La capa d'OpenStreetmap predeterminada", "name": "OpenStreetMap (Estàndard)" }, "Mapbox": { + "attribution": { + "text": "Termes i comentaris" + }, "description": "Imatges aèries i de satèl·lit." }, + "OSM_Inspector-Addresses": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Adreces" + }, + "OSM_Inspector-Geometry": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Geometria" + }, + "OSM_Inspector-Highways": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Carreteres" + }, + "OSM_Inspector-Multipolygon": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Àrea" + }, + "OSM_Inspector-Places": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Llocs" + }, + "OSM_Inspector-Routing": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "Inspector OSM: Planificació de ruta" + }, + "OSM_Inspector-Tagging": { + "attribution": { + "text": "© Geofabrik GmbH, OpenStreetMap col·laboradors, CC-BY-SA" + } + }, "basemap.at": { "attribution": { "text": "basemap.at" @@ -4210,11 +4679,36 @@ "text": "basemap.at" } }, + "hike_n_bike": { + "name": "Excursió i bicicleta" + }, + "mapbox_locator_overlay": { + "attribution": { + "text": "Termes i comentaris" + } + }, + "openpt_map": { + "attribution": { + "text": "© OpenStreetMap col·laboradors, CC-BY-SA" + } + }, "osm-gps": { + "attribution": { + "text": "© OpenStreetMap col·laboradors" + }, "description": "Traces GPS públiques pujades a OpenStreetMap.", "name": "Traces GPS d'OpenStreetMap" }, + "osm-mapnik-black_and_white": { + "attribution": { + "text": "© OpenStreetMap col·laboradors, CC-BY-SA" + }, + "name": "OpenStreetMap (Estàndard Blanc i Negre)" + }, "osm-mapnik-german_style": { + "attribution": { + "text": "© OpenStreetMap col·laboradors, CC-BY-SA" + }, "name": "OpenStreetMap (Estil alemany)" } } diff --git a/dist/locales/cs.json b/dist/locales/cs.json index 87dca8fbd..e0e7aa8f5 100644 --- a/dist/locales/cs.json +++ b/dist/locales/cs.json @@ -7,8 +7,8 @@ "tail": "Klikněte na mapu a začněte tak kreslit plochu, jako třeba park, jezero nebo budovu." }, "add_line": { - "title": "Linie", - "description": "Přidat do mapy silnice, ulice, stezky, potoky či jiné linie.", + "title": "Čára", + "description": "Přidat do mapy silnice, ulice, stezky, potoky či jiné čáry.", "tail": "Klikněte na mapu a začněte tak kreslit silnice, stezky nebo trasy." }, "add_point": { @@ -310,7 +310,6 @@ "localized_translation_language": "Zvolte jazyk", "localized_translation_name": "Název" }, - "zoom_in_edit": "Pro editaci přibližte mapu", "login": "přihlášení", "logout": "odhlásit", "loading_auth": "Připojování na OpenStreetMap…", @@ -330,9 +329,11 @@ "title": "Nahrát na OpenStreetMap", "upload_explanation": "Vámi provedené změny budou viditelné na všech mapách postavených na datech z OpenStreetMap.", "upload_explanation_with_user": "Změny provedené pod jménem {user} budou viditelné na všech mapách postavených na datech z OpenStreetMap.", + "request_review": "Rád bych, kdyby se na mé změny někdo podíval.", "save": "Nahrát", "cancel": "Storno", "changes": "{count} změn", + "download_changes": "Stáhnout soubor osmChange", "warnings": "Varování", "modified": "Upraveno", "deleted": "Smazáno", @@ -346,6 +347,51 @@ "list": "Přispěli {users}", "truncated_list": "Přispěli {users} a {count} další." }, + "info_panels": { + "key": "I", + "background": { + "key": "B", + "title": "Pozadí", + "zoom": "Úroveň přiblížení", + "source": "Zdroj", + "description": "Popis", + "resolution": "Rozlišení", + "accuracy": "Přesnost", + "unknown": "Neznámé", + "show_tiles": "Zobrazit dlaždice", + "hide_tiles": "Skrýt dlaždice" + }, + "history": { + "key": "H", + "title": "Historie", + "selected": "{n} vybráno", + "version": "Verze", + "last_edit": "Poslední úprava", + "edited_by": "Upravil(a)", + "changeset": "Sada změn", + "unknown": "Neznámé", + "link_text": "Historie na openstreetmap.org" + }, + "location": { + "key": "L", + "title": "Umístění", + "unknown_location": "Neznámé umístění" + }, + "measurement": { + "key": "M", + "title": "Měřítko", + "selected": "{n} vybráno", + "geometry": "Geometrie", + "closed": "zavřeno", + "center": "Střed", + "perimeter": "Perimetr", + "length": "Délka", + "area": "Plocha", + "location": "Umístění", + "metric": "Metrické", + "imperial": "Imperiální" + } + }, "geometry": { "point": "bod", "vertex": "bod vnitřní", @@ -408,6 +454,7 @@ "background": { "title": "Pozadí", "description": "Nastavení pozadí", + "key": "B", "percent_brightness": "{opacity}% viditelnost", "none": "Žádné", "best_imagery": "Nejlepší známý zdroj podkladů pro toto místo", @@ -420,13 +467,21 @@ "offset": "Vizuálně vyrovnejte posunutí podkladů v šedé oblasti tak, aby lícovaly s mapou. Nebo zadejte hodnotu posunu v metrech.", "minimap": { "description": "Mapka", - "tooltip": "Zobrazit přehledovou mapku zobrazující aktuální výřez v širším okolí" + "tooltip": "Zobrazit přehledovou mapku zobrazující aktuální výřez v širším okolí", + "key": "I" } }, "map_data": { "title": "Mapová data", "description": "Mapová data", + "key": "F", "data_layers": "Datové vrstvy", + "layers": { + "osm": { + "tooltip": "Mapová data z OpenStreetMap", + "title": "Data OpenStreetMap" + } + }, "fill_area": "Vyplnění ploch", "map_features": "Mapové prvky", "autohidden": "Tyto prvky jsou nyní skryté, protože jinak by jich na mapě bylo zobrazeno příliš mnoho. Když mapu zvětšíte, můžete je zobrazit a editovat." @@ -484,7 +539,8 @@ "area_fill": { "wireframe": { "description": "Bez výplně", - "tooltip": "Při zobrazení bez výplně dobře uvidíte podkladové snímky." + "tooltip": "Při zobrazení bez výplně dobře uvidíte podkladové snímky.", + "key": "W" }, "partial": { "description": "Částečná výplň", @@ -497,7 +553,9 @@ }, "restore": { "heading": "Vaše úpravy nebyly uloženy", - "description": "Přejete si obnovit úpravy, které při minulém spuštění nebyly uloženy?" + "description": "Přejete si obnovit úpravy, které při minulém spuštění nebyly uloženy?", + "restore": "Obnovit moje změny", + "reset": "Zahodit moje změny" }, "save": { "title": "Uložit", @@ -517,6 +575,7 @@ "keep_remote": "Použít cizí", "restore": "Obnovit", "delete": "Nechat smazané", + "download_changes": "Nebo stáhnout soubor osmChange", "done": "Všechny konflikty vyřešeny!", "help": "Jiný uživatel změnil některé stejné prvky jako vy.\nKlikněte na každý prvek níže pro zobrazení více detailů o konfliktu a zvolte, zda zachovat vaše změny nebo změny druhého uživatele.\n" } @@ -548,8 +607,7 @@ "splash": { "welcome": "Vítá vás iD, program pro editaci OpenStreetMap", "text": "iD je uživatelsky přátelský, ale silný nástroj pro editaci nejrozsáhlejší svobodné mapy světa. Toto je verze {version}. Více informací na {website}, chybová hlášení na {github}.", - "walkthrough": "Prohlídka editoru", - "start": "Začít s editací" + "walkthrough": "Prohlídka editoru" }, "source_switch": { "live": "live", @@ -565,7 +623,7 @@ "used_with": "užito s {type}" }, "validations": { - "disconnected_highway": "Nepřipojená dálnice", + "disconnected_highway": "Nepřipojená cesta", "disconnected_highway_tooltip": "Cesty by měly být připojeny k dalším cestám nebo vstupům budov.", "old_multipolygon": "Na vnější linii se nachází tag multipolygon", "old_multipolygon_tooltip": "Takto se multipolygon již nedělá. Prosím přiřaďte tagy relaci multipolygon, nikoliv vnější cestě.", @@ -581,10 +639,6 @@ "tag_suggests_area": "Vlastnost {tag} obvykle označuje plochu, ale zvolený objekt není plocha", "deprecated_tags": "Zastaralé vlastnosti: {tag}" }, - "zoom": { - "in": "Přiblížit", - "out": "Oddálit" - }, "cannot_zoom": "Aktuální nastavení nedovoluje větší zvětšení.", "full_screen": "Na celou obrazovku", "gpx": { @@ -606,6 +660,7 @@ }, "help": { "title": "Nápověda", + "key": "H", "help": "# Pomoc\n\nToto je editor [OpenStreetMap](http://www.openstreetmap.org/), svobodné a otevřené mapy světa, vytvářené jako open-source a open-data. S pomocí editoru můžete přidávat a upravovat data v mapě třeba ve svém okolí, a zlepšovat tak celou mapu pro každého.\n\nVaše úpravy mapy budou viditelné pro každého uživatele OpenStreetMap. Před editací se ovšem musíte [přihlásit](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) je projekt vytvářený spoluprací mnoha lidí, se [zdrojovým kódem na GitHubu](https://github.com/openstreetmap/iD).\n", "gps": "# GPS\n\nData z GPS jsou jedním z důvěryhodných zdrojů informací pro OpenStreetMap. Tento editor podporuje zobrazení tras ve formátu `.gpx` nahraných z vašeho počítače. Takovou trasu můžete nasbírat s pomocí nejrůznějších aplikací pro mobily nebo s pomocí specializované navigace.\n\nPro více informací, jak provést takový sběr dat z GPS, viz např. návod anglicky: [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nPokud už máte záznam ve formátu GPX, přetáhněte soubor myší či prstem nad editor. Rozpozná-li editor formát souboru, zobrazí se trasa v mapě jako světle růžová čára. Pokud chcete tuto novou vrstvu zapnout, vypnout nebo zvětšit na velikost pracovní plochy, klikněte na menu 'Mapová data' na pravé straně.\n\nTrasa GPX nebude přímo nahrána na OpenStreetMap - pouze slouží jako vodítko, podle kterého se můžete orientovat, a podle kterého můžete kreslit nové objekty do mapy. Pokud chcete přímo trasu GPX poskytnout i ostatním, můžete ji [nahrát do samostatné databáze OpenStreetMap](http://www.openstreetmap.org/trace/create).\n", "imagery": "# Podkladové snímky\n\nSatelitní a letecké snímky jsou důležitým zdrojem mapových dat. V menu 'Nastavení pozadí' na levé straně editoru je k dispozici kombinace leteckých snímků, satelitních snímků a dalších volně dostupných podkladů.\n\nImplicitní vrstvou jsou satelitní snímky [Bing](http://www.bing.com/maps/), ale jakmile se přesunete do konkrétní geografické oblasti a nastavíte dostatečné zvětšení, nabídnou se vám další mapové podklady. V některých státech, jako jsou Spojené státy, Francie či Dánskou, jsou k dispozici snímky ve vysoké kvalitě. Pro velkou část České republiky jsou také dostupné velmi detailní satelitní snímky. **Data z katastru nemovitostí a letecké mapy ÚHUL** je možné zobrazit dle [návodu zde](https://wiki.openstreetmap.org/wiki/WikiProject_Czech_Republic/freemap#WMS_UHUL_-_ortofotomapa).\n\nPodklady jsou někdy posunuté vůči mapě, kvůli chybám na straně poskytovatele snímků. Pokud uvidíte, že je mnoho cest v mapě posunuto vůči pozadí, nesnažte se je hned přesunout - posun obvykle znamená chybu v podkladu a ne chybu v mapě. V menu 'Nastavení pozadí' klikněte na 'Zarovnat pozadí' - to vám dovolí posunout podklad, aby lícoval s mapou.\n", @@ -860,6 +915,10 @@ }, "shortcuts": { "title": "Klávesové zkratky", + "tooltip": "Zobrazit obrazovku klávesových zkratek.", + "toggle": { + "key": "?" + }, "key": { "alt": "Alt", "backspace": "Backspace", @@ -885,8 +944,51 @@ "or": "-nebo-", "browsing": { "title": "Procházení", + "navigation": { + "title": "Navigace", + "zoom": "Přiblížit / /oddálit" + }, "help": { "title": "Nápověda" + }, + "display_options": { + "title": "Vlastnosti zobrazení", + "background": "Zobrazit volby pozadí", + "map_data": "Zobrazit volby mapových dat", + "fullscreen": "Vstoupit do režimu celé obrazovky", + "minimap": "Přepnout minimapu" + }, + "selecting": { + "select_one": "Zvolit jednu vlastnost", + "select_multi": "Zvolit více vlastností" + } + }, + "editing": { + "title": "Úpravy", + "drawing": { + "title": "Kreslení", + "add_point": "Režim 'Přidat bod'", + "add_line": "Režim 'Přidat čáru'", + "add_area": "Režim 'Přidat plochu'", + "place_point": "Umístit bod", + "disable_snap": "Přidržte pro zakázání přichytávání bodů" + }, + "operations": { + "title": "Operace", + "reverse": "Vrátit čáru", + "circularize": "Zakulacení uzavřených čar, nebo ploch" + }, + "commands": { + "title": "Příkazy", + "copy": "Kopírovat vybrané vlastnosti", + "paste": "Vložit vybrané vlastnosti", + "save": "Uložit změny" + } + }, + "tools": { + "title": "Nástroje", + "info": { + "title": "Informace" } } }, @@ -1012,7 +1114,8 @@ "subdistrict": "Subdistrikt", "subdistrict!vn": "Okrsek/Komuna/Městys", "suburb": "Městská část (obvod)", - "suburb!jp": "Okrsek" + "suburb!jp": "Okrsek", + "unit": "Jednotka" } }, "admin_level": { @@ -1126,12 +1229,19 @@ "board_type": { "label": "Typ" }, + "boules": { + "label": "Typ" + }, "boundary": { "label": "Typ" }, "brand": { "label": "Obchodní značka" }, + "bridge": { + "label": "Typ", + "placeholder": "Výchozí" + }, "building": { "label": "Budova" }, @@ -1191,12 +1301,18 @@ "clockwise": "Po směru hod. ručiček" } }, + "clothes": { + "label": "Oblečení" + }, "club": { "label": "Typ" }, "collection_times": { "label": "Čas výběru" }, + "comment": { + "label": "Komentář ke změnám" + }, "communication_multi": { "label": "Druhy komunikace" }, @@ -1207,6 +1323,9 @@ "label": "URL webkamery", "placeholder": "http://priklad.cz/" }, + "content": { + "label": "Obsah" + }, "country": { "label": "Stát" }, @@ -1216,6 +1335,13 @@ "craft": { "label": "Typ" }, + "crane/type": { + "label": "Typ jeřábu", + "options": { + "floor-mounted_crane": "Pozemní jeřáb", + "portal_crane": "Portálový jeřáb" + } + }, "crop": { "label": "Plodina" }, @@ -1228,6 +1354,10 @@ "currency_multi": { "label": "Měny" }, + "cutting": { + "label": "Typ", + "placeholder": "Výchozí" + }, "cycle_network": { "label": "Síť" }, @@ -1284,6 +1414,9 @@ "description": { "label": "Popis" }, + "devices": { + "placeholder": "1, 2, 3…" + }, "diaper": { "label": "Přizpůsobeno výměně plenek" }, @@ -1296,6 +1429,10 @@ "drive_through": { "label": "Obsluha z/do auta" }, + "duration": { + "label": "Trvání", + "placeholder": "00:00" + }, "electrified": { "label": "Elektrifikace", "options": { @@ -1313,6 +1450,10 @@ "label": "Email", "placeholder": "priklad@priklad.cz" }, + "embankment": { + "label": "Typ", + "placeholder": "Výchozí" + }, "emergency": { "label": "Pohotovost" }, @@ -1353,6 +1494,13 @@ "fixme": { "label": "Opravit" }, + "ford": { + "label": "Typ", + "placeholder": "Výchozí" + }, + "frequency": { + "label": "Pracovní frekvence" + }, "fuel": { "label": "Palivo" }, @@ -1374,6 +1522,10 @@ "generator/method": { "label": "Princip" }, + "generator/output/electricity": { + "label": "Výkon", + "placeholder": "500kW, 100MW, 200MW…" + }, "generator/source": { "label": "Zdroj" }, @@ -1390,6 +1542,16 @@ "handrail": { "label": "Zábradlí" }, + "hashtags": { + "label": "Navržené hashtagy", + "placeholder": "#příklad" + }, + "healthcare": { + "label": "Typ" + }, + "healthcare/speciality": { + "label": "Specializace" + }, "height": { "label": "Výška (m)" }, @@ -1431,6 +1593,9 @@ "inscription": { "label": "Nápis" }, + "intermittent": { + "label": "Vysychající" + }, "internet_access": { "label": "Připojení k internetu", "options": { @@ -1450,6 +1615,9 @@ "kerb": { "label": "Obrubník" }, + "label": { + "label": "Štítek" + }, "lamp_type": { "label": "Typ" }, @@ -1461,7 +1629,8 @@ "placeholder": "1, 2, 3..." }, "layer": { - "label": "Vrstva" + "label": "Vrstva", + "placeholder": "O" }, "leaf_cycle": { "label": "Opadavost listí", @@ -1521,6 +1690,9 @@ "man_made": { "label": "Typ" }, + "manhole": { + "label": "Typ" + }, "map_size": { "label": "Pokrytí" }, @@ -1541,6 +1713,13 @@ "maxweight": { "label": "Max. hmotnost" }, + "memorial": { + "label": "Typ" + }, + "milestone_position": { + "label": "Pozice milníku", + "placeholder": "Vzdálenost na jedno desetinné místo (123.4)" + }, "mtb/scale": { "label": "Klasifikace obtížnosti pro MTB", "options": { @@ -1680,6 +1859,9 @@ "payment_multi": { "label": "Platební možnosti" }, + "phases": { + "placeholder": "1, 2, 3…" + }, "phone": { "label": "Telefon", "placeholder": "+420 603 123456" @@ -1728,6 +1910,19 @@ "plant": { "label": "Rostlina" }, + "plant/output/electricity": { + "label": "Výkon", + "placeholder": "500MW, 1000MW, 2000MW…" + }, + "playground/baby": { + "label": "Autosedačka" + }, + "playground/max_age": { + "label": "Maximální věk" + }, + "playground/min_age": { + "label": "Minimální věk" + }, "population": { "label": "Počet obyvatel" }, @@ -1756,6 +1951,9 @@ "container": "Kontejner" } }, + "ref_road_number": { + "label": "Číslo silnice" + }, "relation": { "label": "Typ" }, @@ -1869,6 +2067,9 @@ "social_facility_for": { "label": "Komu slouží" }, + "source": { + "label": "Zdroje" + }, "sport": { "label": "Sporty" }, @@ -1908,6 +2109,12 @@ }, "placeholder": "Není známo" }, + "structure_waterway": { + "options": { + "tunnel": "Tunel" + }, + "placeholder": "Neznámé" + }, "studio": { "label": "Typ" }, @@ -1967,6 +2174,9 @@ "tourism": { "label": "Typ" }, + "tourism_attraction": { + "label": "Turismus" + }, "tower/construction": { "label": "Konstrukce", "placeholder": "Ukotvená, příhradová, skrytá, ..." @@ -1985,6 +2195,9 @@ }, "placeholder": "Pevný, převážně pevný, měkký povrch" }, + "trade": { + "label": "Typ" + }, "traffic_calming": { "label": "Typ" }, @@ -2003,9 +2216,19 @@ }, "placeholder": "Výborná, Dobrá, Špatná..." }, + "transformer": { + "options": { + "auto": "Autotransformátor", + "generator": "Generátor" + } + }, "trees": { "label": "Stromy" }, + "tunnel": { + "label": "Typ", + "placeholder": "Výchozí" + }, "vending": { "label": "Druh zboží" }, @@ -2017,6 +2240,29 @@ "street": "5 až 20 m (16 až 65 ft)" } }, + "volcano/status": { + "label": "Stav sopky", + "options": { + "active": "Aktivní", + "dormant": "Spící", + "extinct": "Vyhaslá" + } + }, + "volcano/type": { + "label": "Druh sopky", + "options": { + "stratovolcano": "Stratovulkán" + } + }, + "voltage/primary": { + "label": "Primární napětí" + }, + "voltage/secondary": { + "label": "Sekundární napětí" + }, + "voltage/tertiary": { + "label": "Terciální napětí" + }, "wall": { "label": "Typ" }, @@ -2044,6 +2290,16 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "placeholder": "1, 2, 3…" + }, + "windings/configuration": { + "label": "Konfigurace vinutí", + "options": { + "delta": "Trojúhelník", + "star": "Hvězda" + } } }, "presets": { @@ -2244,6 +2500,12 @@ "name": "Poliklinika", "terms": "poliklinika,klinika,nemocnice,ambulance,špitál" }, + "amenity/clinic/abortion": { + "name": "Potratová klinika" + }, + "amenity/clinic/fertility": { + "name": "Klinika plodnosti" + }, "amenity/clock": { "name": "Hodiny", "terms": "hodiny,orloj,hodinky,chronometr,ciferník,čas,ukazatel času" @@ -2257,7 +2519,6 @@ "terms": "komunitní centrum,kulturní centrum,sociální centrum,komunitní dům,dům dětí,dům mládeže,dům dětí a mládeže,klub" }, "amenity/compressed_air": { - "name": "Vzduchová pumpa", "terms": "vzduchová pumpa,pumpa,pumpička,stlačený vzduch,kompresor,hustilka" }, "amenity/courthouse": { @@ -2398,6 +2659,9 @@ "name": "Kostel", "terms": "křesťanský,křesťanství,kostel,kostelík,chrám,bazilika,katedrála,kaple,kaplička,chrám páně,rotunda,farnost,diecéze" }, + "amenity/place_of_worship/hindu": { + "name": "Hinduistický chrám" + }, "amenity/place_of_worship/jewish": { "name": "Synagoga", "terms": "synagoga,židovský,židovská,židovské" @@ -2406,6 +2670,9 @@ "name": "Mešita", "terms": "mešita,islám,muslim,muslimský,muslimská,muslimské" }, + "amenity/place_of_worship/taoist": { + "name": "Taoistický chrám" + }, "amenity/planetarium": { "name": "Planetárium", "terms": "planetárium,hvězdárna,astronomie" @@ -2465,10 +2732,16 @@ "name": "Prostor školy", "terms": "škola,základní škola,střední škola,obecná škola,gymnázium,gymnasium,střední odborná škola,učiliště,odborné učiliště,střední odborné učiliště,školní,školský" }, + "amenity/scrapyard": { + "name": "Vrakoviště" + }, "amenity/shelter": { "name": "Přístřešek", "terms": "přístřešek,střecha,budka,bouda,čekárna" }, + "amenity/shower": { + "name": "Sprchy" + }, "amenity/social_facility": { "name": "Zařízení sociálních služeb", "terms": "sociální služby,sociální zařízení,sociální pomoc,sociální služba,azylový dům,dům na půl cesty,denní stacionář,nízkoprahové centrum,noclehárna,chudobinec" @@ -2540,6 +2813,9 @@ "name": "Automat na pytlíky na exkrementy", "terms": "automat,prodejní automat,pytlík,pes,psí exkrementy,psí hovna,exkrement,hovno,hovínko" }, + "amenity/vending_machine/feminine_hygiene": { + "name": "Automat dámské hygieny" + }, "amenity/vending_machine/news_papers": { "name": "Automat na noviny" }, @@ -2567,6 +2843,9 @@ "name": "Veterina", "terms": "veterina,veterinář,zvíře" }, + "amenity/waste/dog_excrement": { + "name": "Koš na psí výkaly" + }, "amenity/waste_basket": { "name": "Odpadkový koš", "terms": "popelnice,kontejner,odpadkový koš,odpadky" @@ -2595,6 +2874,15 @@ "name": "Plocha silnice", "terms": "plocha silnice,povrch silnice,plocha cesty,povrch cesty" }, + "attraction/bumper_car": { + "name": "Autodrom" + }, + "attraction/roller_coaster": { + "name": "Horská dráha" + }, + "attraction/train": { + "name": "Turistický vláček" + }, "barrier": { "name": "Zábrana", "terms": "zábrana,ohrada,bariéra" @@ -2863,6 +3151,9 @@ "name": "Hodinář (ne hodinky)", "terms": "hodinářství,hodinář,hodiny" }, + "craft/distillery": { + "name": "Lihovar" + }, "craft/dressmaker": { "name": "Švadlena", "terms": "švadlena,krejčí,krejčová,šaty,dámská krejčová" @@ -2960,10 +3251,6 @@ "name": "Lešenář", "terms": "lešenář,lešenářství,lešení" }, - "craft/sculpter": { - "name": "Sochař", - "terms": "sochař,sochařství,socha" - }, "craft/shoemaker": { "name": "Švec", "terms": "švec,ševcovství,obuvník,obuvnictví" @@ -2972,10 +3259,6 @@ "name": "Kameník", "terms": "kameník,kamenictví" }, - "craft/sweep": { - "name": "Kominík", - "terms": "kominík,kominictví" - }, "craft/tailor": { "name": "Krejčí" }, @@ -3025,6 +3308,9 @@ "name": "Požární hydrant", "terms": "požární hydrant, hasičský hydrant, pumpa" }, + "emergency/life_ring": { + "name": "Kruh života" + }, "emergency/no": { "name": "Vjezd záchranných vozidel zakázán" }, @@ -3101,10 +3387,43 @@ "name": "Vodní překážka", "terms": "voda,příčná voda,příčná překážka,žlutá voda" }, + "healthcare/alternative": { + "name": "Alternativní medicína" + }, + "healthcare/alternative/chiropractic": { + "name": "Chiropraktik" + }, + "healthcare/audiologist": { + "name": "Ušní" + }, + "healthcare/birthing_center": { + "name": "Porodnice" + }, "healthcare/blood_donation": { "name": "Odběr krve", "terms": "odběr krve,darování krve,transfúze,transfúzní stanice" }, + "healthcare/hospice": { + "name": "Hospic" + }, + "healthcare/optometrist": { + "name": "Optik" + }, + "healthcare/physiotherapist": { + "name": "Fyzioterapeut" + }, + "healthcare/podiatrist": { + "name": "Pedikér" + }, + "healthcare/psychotherapist": { + "name": "Psychoterapeut" + }, + "healthcare/rehabilitation": { + "name": "Rehabilitační středisko" + }, + "healthcare/speech_therapist": { + "name": "Logoped" + }, "highway": { "name": "Pozemní komunikace" }, @@ -3168,10 +3487,6 @@ "name": "Pěšina", "terms": "cesta" }, - "highway/pedestrian": { - "name": "Pěší zóna", - "terms": "pěší zóna,ulice pro pěší" - }, "highway/primary": { "name": "Silnice 1. třídy", "terms": "silnice I. třídy" @@ -3348,6 +3663,9 @@ "name": "Umělá vodní plocha", "terms": "zdrž,nádrž,voda,jezero,rybník" }, + "landuse/brownfield": { + "name": "Deprimující zóna" + }, "landuse/cemetery": { "name": "Hřbitov", "terms": "hřbitov,pohřebiště" @@ -3387,6 +3705,9 @@ "name": "Tráva", "terms": "tráva" }, + "landuse/greenfield": { + "name": "Zelená louka" + }, "landuse/harbour": { "name": "Přístav", "terms": "loď" @@ -3635,6 +3956,9 @@ "name": "Běžecká závodní dráha", "terms": "závod,závodění,běh,sprint,dráha" }, + "leisure/sauna": { + "name": "Sauna" + }, "leisure/slipway": { "name": "Vodní skluz", "terms": "spouštění lodi,dok,loděnice,skluz v loděnici,skluzavka" @@ -3687,6 +4011,9 @@ "name": "Komín", "terms": "komín" }, + "man_made/crane": { + "name": "Jeřáb" + }, "man_made/cutline": { "name": "Průsek", "terms": "lesní průsek,holina" @@ -3774,6 +4101,10 @@ "name": "Vodárna", "terms": "vodárna,úpravna vody" }, + "man_made/watermill": { + "name": "Vodní mlýn", + "terms": "Větrný mlýn" + }, "man_made/works": { "name": "Továrna", "terms": "montáž,výroba,pivovar,auto,závod,továrna,zpracování,rafinerie" @@ -3894,18 +4225,10 @@ "name": "Kanceláře", "terms": "kancelář,kancelářský,úřad,úřadovna,administrativa,office,sídlo" }, - "office/accountant": { - "name": "Finanční poradce", - "terms": "finanční poradce,účetní,daňový poradce" - }, "office/administrative": { "name": "Místní úřad", "terms": "místní úřad,městský úřad,krajský úřad,kancelář,administrativa,samospráva" }, - "office/architect": { - "name": "Architekt", - "terms": "architekt,stavební,architektonické studio" - }, "office/company": { "name": "Kancelář", "terms": "kancelář,firma,společnost,soukromá firma,soukromá společnost,sídlo,s.r.o." @@ -3942,10 +4265,6 @@ "name": "Pojišťovna", "terms": "pojišťovna,pojištění,zajišťovna" }, - "office/it": { - "name": "IT specialista", - "terms": "IT specialista,počítačový specialista" - }, "office/lawyer": { "name": "Právní kancelář", "terms": "právní kancelář,právník,právní zástupce,advokátní kancelář,advokát" @@ -3954,10 +4273,6 @@ "name": "Kancelář notáře", "terms": "koncipient,podpis,závěť,listina,pozemek,pozemky" }, - "office/newspaper": { - "name": "Noviny", - "terms": "noviny,deník,časopis,vydavatelství" - }, "office/ngo": { "name": "Nezisková organizace", "terms": "nezisková organizace,neziskovka,nevládní organizace" @@ -3977,10 +4292,6 @@ "name": "Telekomunikační společnost", "terms": "telekomunikační společnost,telekomunikace,spoje,mobilní operátor,mobil,radiotelekomunikace" }, - "office/therapist": { - "name": "Fyzioterapeut", - "terms": "fyzioterapeut,terapeut,rekonvalescence,masér" - }, "office/travel_agent": { "name": "Cestovní kancelář" }, @@ -4038,6 +4349,9 @@ "name": "Vesnice", "terms": "vesnice" }, + "playground/seesaw": { + "name": "Houpačka" + }, "point": { "name": "Uzel", "terms": "uzel,bod,vrchol,tečka,puntík" @@ -4049,6 +4363,12 @@ "name": "Generátor", "terms": "generátor,elektrický generátor,elektrárna,zdroj proudu" }, + "power/generator/source_nuclear": { + "name": "Jaderný reaktor" + }, + "power/generator/source_wind": { + "name": "Větrná turbína" + }, "power/line": { "name": "Elektrické vedení vyššího napětí (nad 50 kV)", "terms": "elektrické vedení,velmi vysoké napětí,zvláště vysoké napětí,přenosová soustava,energetika" @@ -4675,10 +4995,6 @@ "name": "Místo pro karavany", "terms": "místo pro karavany,kemp,camp,camping,karavan" }, - "tourism/chalet": { - "name": "Chata", - "terms": "chata,chalupa,chatka" - }, "tourism/gallery": { "name": "Galerie umění", "terms": "muzeum umění,galerie umění,umělecká galerie,umělecké muzeum,galerie" @@ -4775,6 +5091,9 @@ "name": "Opticko-akustická brzda", "terms": "opticko-akustická brzda,spotflex,zpomalovací práh,optická brzda,akustická brzda" }, + "traffic_calming/table": { + "name": "Rychlostní cedule" + }, "type/boundary": { "name": "Hranice", "terms": "hranice,hraniční,čára" @@ -4929,6 +5248,9 @@ "name": "Potok", "terms": "potok,potůček,strouha,tok,říčka,přítok,koryto,řeka,proud,vír,odtok,příliv,odliv" }, + "waterway/stream_intermittent": { + "name": "Vysychající/přerušovaný tok" + }, "waterway/water_point": { "name": "Pitná voda pro lodě", "terms": "pitná voda,lodě" @@ -4942,6 +5264,160 @@ "terms": "jez, splav" } } + }, + "imagery": { + "Bing": { + "description": "Satelitní a letecké snímky.", + "name": "Letecké snímky Bing" + }, + "DigitalGlobe-Premium": { + "attribution": { + "text": "Podmínky použití & zpětná vazba" + }, + "description": "Prémiové satelitní snímky DigitalGlobe", + "name": "Prémiové snímky DigitalGlobe" + }, + "DigitalGlobe-Standard": { + "attribution": { + "text": "Podmínky použití & zpětná vazba" + }, + "description": "Standardní satelitní snímky DigitalGlobe", + "name": "Standardní snímky DigitalGlobe" + }, + "EsriWorldImagery": { + "attribution": { + "text": "Podmínky použití & zpětná vazba" + } + }, + "MAPNIK": { + "attribution": { + "text": "© Přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "description": "Výchozí vrstva OpenStreetMap.", + "name": "OpenStreetMap (standardní)" + }, + "Mapbox": { + "attribution": { + "text": "Podmínky použití & zpětná vazba" + }, + "description": "Satelitní a letecké snímky.", + "name": "Satelitní snímky Mapbox" + }, + "OSM_Inspector-Addresses": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Adresy" + }, + "OSM_Inspector-Geometry": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Geometrie" + }, + "OSM_Inspector-Highways": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Cesty" + }, + "OSM_Inspector-Multipolygon": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Plochy" + }, + "OSM_Inspector-Places": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Místa" + }, + "OSM_Inspector-Routing": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Navigace" + }, + "OSM_Inspector-Tagging": { + "attribution": { + "text": "© Geofabrik GmbH, přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OSM Inspektor: Štítkování" + }, + "Waymarked_Trails-Cycling": { + "attribution": { + "text": "© Sarah Hoffmannová, CC by-SA 3.0, mapová data přispěvatelé OpenStreetMap, ODbL 1.0" + } + }, + "Waymarked_Trails-Hiking": { + "attribution": { + "text": "© Sarah Hoffmannová, CC by-SA 3.0, mapová data přispěvatelé OpenStreetMap, ODbL 1.0" + } + }, + "Waymarked_Trails-MTB": { + "attribution": { + "text": "© Sarah Hoffmannová, CC by-SA 3.0, mapová data přispěvatelé OpenStreetMap, ODbL 1.0" + } + }, + "Waymarked_Trails-Skating": { + "attribution": { + "text": "© Sarah Hoffmannová, CC by-SA 3.0, mapová data přispěvatelé OpenStreetMap, ODbL 1.0" + } + }, + "Waymarked_Trails-Winter_Sports": { + "attribution": { + "text": "© Michael Spreng, CC by-SA 3.0, mapová data přispěvatelé OpenStreetMap, ODbL 1.0" + } + }, + "basemap.at": { + "attribution": { + "text": "basemap.at" + }, + "name": "basemap.at" + }, + "basemap.at-orthofoto": { + "attribution": { + "text": "basemap.at" + }, + "name": "Ortofoto basemap.at" + }, + "hike_n_bike": { + "attribution": { + "text": "© Přispěvatelé OpenStreetMap" + } + }, + "mapbox_locator_overlay": { + "attribution": { + "text": "Podmínky použití & zpětná vazba" + } + }, + "osm-gps": { + "attribution": { + "text": "© Přispěvatelé OpenStreetMap" + }, + "name": "GPS stopy OpenStreetMap" + }, + "osm-mapnik-black_and_white": { + "attribution": { + "text": "© Přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OpenStreetMap (standardní černobílá)" + }, + "osm-mapnik-german_style": { + "attribution": { + "text": "© Přispěvatelé OpenStreetMap, CC-BY-SA" + }, + "name": "OpenStreetMap (německý styl)" + }, + "qa_no_address": { + "attribution": { + "text": "Simon Poole, data © přispěvatelé OpenStreetMap" + } + }, + "stamen-terrain-background": { + "name": "Terén Stamen" + } } } } \ No newline at end of file diff --git a/dist/locales/da.json b/dist/locales/da.json index 02c6bed14..267df5857 100644 --- a/dist/locales/da.json +++ b/dist/locales/da.json @@ -334,6 +334,7 @@ "save": "Upload", "cancel": "Annuller", "changes": "{count} ændringer", + "download_changes": "Download osmChange fil", "warnings": "Advarsler", "modified": "Ændret", "deleted": "Slettet", @@ -354,9 +355,15 @@ "title": "Baggrund", "zoom": "Zoom", "vintage": "Årgang", + "source": "Kilde", + "description": "Beskrivelse", + "resolution": "Opløsning", + "accuracy": "Nøjagtighed", "unknown": "Ukendt", "show_tiles": "Vis Kort-fliser", - "hide_tiles": "Skjul Kort-fliser" + "hide_tiles": "Skjul Kort-fliser", + "show_vintage": "Vis alder", + "hide_vintage": "Gem alder" }, "history": { "key": "H", @@ -475,9 +482,16 @@ "description": "Kortdata", "key": "F", "data_layers": "Datalag", + "layers": { + "osm": { + "tooltip": "Kortdata fra OpenStreetMap", + "title": "OpenStreetMap data" + } + }, "fill_area": "Udfyldning af områder", "map_features": "Kortobjekter", - "autohidden": "Disse objekter er automatisk blevet skjult, da for mange ellers ville blive vist på skærmen.\nDu kan zoome ind for at redigere dem." + "autohidden": "Disse objekter er automatisk blevet skjult, da for mange ellers ville blive vist på skærmen.\nDu kan zoome ind for at redigere dem.", + "osmhidden": "Disse kortobjekter er blevet automatisk gemt fordi OpenStreetMap-laget er gemt." }, "feature": { "points": { @@ -568,6 +582,7 @@ "keep_remote": "Brug deres", "restore": "Gendan", "delete": "Behold slettet", + "download_changes": "Eller download osmChange fil", "done": "Alle konflikter løst!", "help": "En anden bruger har ændret nogle af de samme kortobjekter som du har ændret.\n\nKlik på hvert objekt nedenfor for flere detaljer om konflikten, og vælg hvorvidt dine ændringer\n\neller den anden brugers ændringer skal bibeholdes.\n" } @@ -659,6 +674,8 @@ "title": "Hjælp", "key": "H", "help": "# Hjælp\n\nDette er et redigeringsværktøj til [OpenStreetMap](http://www.openstreetmap.org/), det åbne og redigerbare verdenskort. Du kan bruge dette værktøj til at opdatere geodata i dit lokalområde. Derved skaber du et bedre verdenskort med open source og frie geodata til gavn for alle.\n\nDine ændringer på kortet vil blive synligt for alle og enhver der benytter OpenStreetMap. For at lave redigeringer skal du være [logget ind](https://www.openstreetmap.org/login).\n\nDette værktøj, kaldet [iD-editoren](http://ideditor.com/), er et kollaborativt projekt og dets [kildekode er tilgængelig på GitHub](https://github.com/openstreetmap/iD).\n", + "editing_saving": "# Redigering & gemning\n\nDette redigeringsværktøj er primært beregnet til online brug, ligesom\ndu bruger det lige nu gennem en webside.\n\n### Markering af objekter\n\nFor at markere et kortobjekt f.eks. en vej eller et interessepunkt, klik\npå dette på kortet. Dette vil tydeligt markere objektet, og åbne et panel\nmed flere oplysninger om det. Højreklikker du på det, vil en menu vises med handlinger der kan foretages på objektet.\n\nFor at markere flere objekter på en gang, skal 'Skift\"-knappen holdes nede. Dernæst enten klik direkte\npå objekterne du vil markere, eller venstre-klik og træk med musen på kortet, hvilket markerer\nalle objekter indenfor rammen du tegner.\n\n### Gem redigeringer\n\nNår du laver ændringer f.eks. redigering af veje, bygninger og steder, så\ngemmes disse lokalt i din browser indtil du gemmer dem på serveren. Vær ikke bange for\nat lave en fejl - du kan fortryde ved at klikke på fortryd-knappen, og\nfå fortrudte ændringer tilbage med gendan-knappen.\n\nKlik på 'Gem' for at afslutte en serie af redigeringer - f.eks. hvis du har afsluttet\net område af en by og vil starte på et nyt område. Du vil få lejlighed\ntil at gennemse hvad du har lavet, og redigeringsværktøjet vil give forslag\nog advarsler hvis noget ikke ser korrekt ud.\n\nHvis alting ser fint ud, kan du tilføje en kort kommentar der forklarer\nændringerne du har lavet, og dernæst klikker du 'Upload' for at afsende ændringerne\ntil [OpenStreetMap.org](http://www.openstreetmap.org/), hvor de vil blive synlige\nfor alle andre brugere og tilgængelige for andre at bygge videre på.\n\nHvis du ikke kan nå at afslutte dine redigeringer, så kan du forlade redigeringsværktøjet\nog komme tilbage (på samme browser og computer) og redigeringsværktøjet\nvil tilbyde at gendanne dit arbejde.\n\n### Brug af redigeringsværktøjet\n\nDu kan hurtigt få vist en liste over genvejstaster ved at trykke på `?`-tasten.\n", + "roads": "# Veje\n\nDu kan oprette, tilrette og slette veje med dette tegneværktøj. Veje kan være af\nmange forskellige typer: stier, landeveje, spor, cykelstier m.v. Enhver\nofte benyttet rute kan kortlægges.\n\n### Markering\n\nKlik på en vej for at markere den. Et omrids vises\nsammen med et sidepanel der viser flere oplysninger om vejen. Hvis du højreklikker\npå den, får du vist en værktøjsmenu med handlinger du kan udføre på vejen.\n\n### Ændring\n\nOfte ses veje der ikke er justeret i forhold til luftfotoet bag dem\neller i forhold til et GPS-spor. Du kan justere disse veje så de er placeret rigtigt.\nKlik først på vejen du vil ændre. Dette fremhæver den og viser\nkontrolpunkter langs med den som kan trækkes det rigtige sted hen. Hvis\ndu har brug for flere kontrolpunkter for at gøre vejen mere detaljeret, kan du dobbeltklikke\npå en del af vejen, så tilføjes et nyt punkt her.\n\nHvis vejen er forbundet til andre veje, men ikke er korrekt forbundet\npå kortet, så træk et af kontrolpunkterne hen på den anden vej\nfor at koble dem sammen. Det er vigtigt for kortet, faktisk vitalt for rutevejledninger,\nat veje er forbundet.\n\nDu kan også højreklikke og vælge flytteværktøjet eller bare trykke\npå tastegenvejen \"M\" for at flytte hele vejen på en gang, og så klikke\nigen for at gemme flytningen.\n\n### Sletning\n\nHvis en vej er helt forkert - du kan ikke se den på et luftfoto\nog du har ideelt set fået bekræftet at vejen reelt ikke findes - så kan du slette\nvejen. Men pas på med at slette hvad andre har lavet - som med andre ændringer\ner resultatet synligt for alle, og luftfotos kan være forældede så vejen kunne\nvære bygget i mellemtiden.\n\nDu kan slette en vej ved at klikke på den for at vælge den og trykke på 'Slet'-tasten på dit tastatur, eller højreklikke og vælge skraldespands-ikonet.\n\n### Oprettelse\n\nHar du fundet et sted hvor der skulle være en vej, men den er ikke på kortet? Klik på 'Linje'-ikonet\ni øverste venstre hjørne af redigeringsværktøjet, eller klik på tastegenvejen '2' for at starte ned at tegne en linje.\n\nKlik hvor vejen begynder på luftfotoet for at påbegynde den. Hvis vejen\nforgrener sig fra en eksisterende vej, så begynd vejen der hvor de er forbundet.\n\nKlik derefter på punkter langs vejens forløb så det passer med\nluftfoto eller GPS-spor. Hvis vejen du tegner krydser en anden vej, så kobl\ndem sammen ved at klikke på punktet hvor de skærer hinanden. Når du er færdig med at tegne,\nså dobbeltklik eller tryk på 'Retur' eller 'Enter'-tasten på tastaturet.\n", "gps": "# GPS\n\nIndsamlede GPS-spor er en værdifuld kilde til data for OpenStreetMap. Denne editor understøtter lokale spor – '.gpx'-filer på din lokale computer. Du kan indsamle denne form for GPS-spor med en række smartphone-applikationer såvel som personlige GPS-enheder.\n\nLæs artiklen [Mapping with a Smartphone, GPS or Paper](http://learnosm.org/en/mobile-mapping/) (på engelsk) for nærmere information om, hvordan du optager et GPS-spor.\n\nFor at bruge et GPX-spor til kortlægning, skal du trække og slippe GPX-filen over på kort-editoren. Hvis sporet bliver accepteret, vil det blive tilføjet kortet som en lys lilla linje. Klik på \"Kortdata\"-menuen til højre for at aktivere, deaktivere eller zoome til dette nye GPX-drevne lag.\n\nGPX-sporet bliver ikke direkte uploadet til OpenStreetMap, men vises kun i den nuværende redigeringssession i iD. Den bedste måde at bruge sporet på, er at tegne på kortet mens du bruger sporet som en rettesnor til de nye objekter,\ndu tilføjer. {Upload det også gerne til OpenStreetMap](http://www.openstreetmap.org/trace/create), så andre brugere kan bruge det.\n", "imagery": "# Billeder\n\nLuftfotos er en vigtig ressource til kortlægning. En kombination af luftfotos taget fra fly, satellitbilleder og andre frit tilgængelige kilder er tilgængelige i redigeringsværktøjet i indstillingsmenuen 'Baggrund' i højre side.\n\n[Bing Maps](http://www.bing.com/maps/) satellitbilledelaget er standardopsætning i redigeringsværktøjet. Når du zoomer og kommer til nye geografiske områder, så vil andre kilder være tilgængelige. I nogle lande som f.eks. USA, Frankrig og Danmark vil der ofte være luftfotos i høj kvalitet i nogle egne.\n\nBillederne er af og til forskudt i forhold til de geografiske data, dette skyldes en fejl fra billedleverandørens side. Hvis du ser at en masse objekter er forskudt i forhold til billederne, så skal du ikke begynde at flytte disse objekter for at matche billedlaget. Du kan i stedet for i indstillingerne for 'Baggrund', nederst finde \"Juster billedets offset\" hvor billedets generelle placering i forhold til de geografisk objekter kan tilpasses.\n", "addresses": "#Adresser\n\nAdresser er noget af det mest brugbare information på kortet.\n\nSelvom adresser ofte repræsenteres som et specifikt udsnit af veje, er de i OpenStreetMap registreret som attributter på bygninger eller andre objekter langs med veje.\n\nDu kan tilføje adresseinformation til steder som er kortlagt som bygninger\neller som enkeltpunkter. Den optimale kilde til adressedata stammer fra\nindsamling på selve stedet eller fra personligt kendskab. Som med mange\nandre objekter, så er det strengt forbudt at kopiere fra kommercielle kilder\nsom f.eks. fra Google Maps.\n", @@ -2714,8 +2731,7 @@ "terms": "Skoleområde, Skolegrund" }, "amenity/scrapyard": { - "name": "Skrotplads", - "terms": "skrald,skrot,genbrug,affald" + "name": "Skrotplads" }, "amenity/shelter": { "name": "Shelter", @@ -3268,10 +3284,6 @@ "name": "Stilladsfirma", "terms": "Stilladsfirma" }, - "craft/sculpter": { - "name": "Skulpturmager", - "terms": "Skulpturmager, Billedhugger, Stenhugger" - }, "craft/shoemaker": { "name": "Skomager", "terms": "Skomager" @@ -3280,10 +3292,6 @@ "name": "Stenhugger", "terms": "Stenhugger, Billedhugger" }, - "craft/sweep": { - "name": "Skorstensfejer", - "terms": "Skorstensfejer" - }, "craft/tailor": { "name": "Skrædder" }, @@ -3492,10 +3500,6 @@ "name": "Sti", "terms": "Sti" }, - "highway/pedestrian": { - "name": "Gågade", - "terms": "Gågade" - }, "highway/primary": { "name": "Primærvej", "terms": "Primærvej" @@ -4234,18 +4238,10 @@ "name": "Kontor", "terms": "Kontor" }, - "office/accountant": { - "name": "Revisor", - "terms": "Revisor" - }, "office/administrative": { "name": "Administrativt kontor", "terms": "Administrativt kontor" }, - "office/architect": { - "name": "Arkitekt", - "terms": "Arkitekt, Arkitektfirma" - }, "office/company": { "name": "Firmakontor", "terms": "Firmakontor, Selskabskonto" @@ -4282,10 +4278,6 @@ "name": "Forsikringselskab", "terms": "Forsikringsselskab" }, - "office/it": { - "name": "IT-kontor", - "terms": "IT-kontor, IT-firma" - }, "office/lawyer": { "name": "Advokatkontor", "terms": "Advokatkontor, Advokatfirma" @@ -4294,10 +4286,6 @@ "name": "Notarkontor", "terms": "Notarkontor, Notar" }, - "office/newspaper": { - "name": "Avis", - "terms": "Avis" - }, "office/ngo": { "name": "NGO kontor", "terms": "NGO kontor, NGO" @@ -4317,10 +4305,6 @@ "name": "Teleselskabskontor", "terms": "Teleselskabskontor" }, - "office/therapist": { - "name": "Terapeut", - "terms": "Terapeut" - }, "office/travel_agent": { "name": "Rejsebureau" }, @@ -5041,10 +5025,6 @@ "name": "Autocamperplads", "terms": "Autocamperplads" }, - "tourism/chalet": { - "name": "Bjergferiehytte", - "terms": "Bjergferiehytte" - }, "tourism/gallery": { "name": "Kunstgalleri", "terms": "Kunstgalleri, Galleri" diff --git a/dist/locales/de.json b/dist/locales/de.json index caed9f45e..350ee06c8 100644 --- a/dist/locales/de.json +++ b/dist/locales/de.json @@ -151,7 +151,7 @@ "annotation": "Linien/Flächen getrennt.", "not_connected": "Es gibt hier nicht genug Linien/Flächen, um diese zu trennen.", "connected_to_hidden": "Dieses Objekt kann nicht getrennt werden, da es mit einem versteckten Objekt verbunden ist.", - "relation": "Dies kann nicht getrennt werde, da es Mitglieder einer Relation verbindet." + "relation": "Dies kann nicht getrennt werden, da es Mitglieder einer Relation verbindet." }, "merge": { "title": "Vereinigen", @@ -314,7 +314,7 @@ "login": "Login", "logout": "Abmelden", "loading_auth": "Mit OpenStreetMap verbinden …", - "report_a_bug": "Fehler melden", + "report_a_bug": "Einen Fehler melden", "help_translate": "Beim Übersetzen helfen", "feature_info": { "hidden_warning": "{count} versteckte Objekte", @@ -361,7 +361,9 @@ "accuracy": "Genauigkeit", "unknown": "Unbekannt", "show_tiles": "Raster einblenden", - "hide_tiles": "Raster ausblenden" + "hide_tiles": "Raster ausblenden", + "show_vintage": "Aufnahmedatum anzeigen", + "hide_vintage": "Aufnahmedatum ausblenden" }, "history": { "key": "C", @@ -408,7 +410,7 @@ "no_results_worldwide": "Keine Ergebnisse gefunden" }, "geolocate": { - "title": "Aktuelle Lage anzeigen", + "title": "Zeige meinen Standort", "locating": "Lokalisiere, bitte warten ..." }, "inspector": { @@ -659,7 +661,7 @@ }, "mapillary_images": { "tooltip": "Straßenfotos von Mapillary", - "title": "Photo-Überlagerung (Mapillary)" + "title": "Fotoüberlagerung (Mapillary)" }, "mapillary_signs": { "tooltip": "Verkehrsschilder von Mapillary (bei aktivierter Fotoebene)", @@ -668,6 +670,13 @@ "mapillary": { "view_on_mapillary": "Dieses Bild auf Mapillary ansehen" }, + "openstreetcam_images": { + "tooltip": "Straßenfotos von OpenStreetCam", + "title": "Fotoüberlagerung (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Dieses Bild auf OpenStreetCam ansehen" + }, "help": { "title": "Hilfe", "key": "H", @@ -686,46 +695,46 @@ "ok": "OK", "graph": { "block_number": "", - "city": "Graz", + "city": "Drei-Flüsse", "county": "", - "district": "Innere Stadt", + "district": "Altstadt", "hamlet": "", "neighbourhood": "", - "postcode": "8010", - "province": "Steiermark", + "postcode": "49093", + "province": "Bayern", "quarter": "", - "state": "", + "state": "BY", "subdistrict": "", "suburb": "", - "countrycode": "at", + "countrycode": "de", "name": { - "1st-avenue": "Allee 1", - "2nd-avenue": "Allee 2", - "4th-avenue": "Allee 4", - "5th-avenue": "Allee 5", - "6th-avenue": "Allee 6", - "6th-street": "6. Straße", - "7th-avenue": "7. Straße", - "8th-avenue": "Allee 8", - "9th-avenue": "Allee 9", - "10th-avenue": "Allee 10", - "11th-avenue": "11. Straße", - "12th-avenue": "12. Straße", + "1st-avenue": "Erste Alle", + "2nd-avenue": "Zweite Allee", + "4th-avenue": "Vierte Allee", + "5th-avenue": "Fünfte Allee", + "6th-avenue": "Sechste Allee", + "6th-street": "Sechste Straße", + "7th-avenue": "Siebte Straße", + "8th-avenue": "Achte Allee", + "9th-avenue": "Neunte Allee", + "10th-avenue": "Zehnte Allee", + "11th-avenue": "Elfte Straße", + "12th-avenue": "Zwölfte Straße", "access-point-employment": "Arbeitsmarktservice", "adams-street": "Amselweg", - "andrews-elementary-school": "Andreas Volkschule", + "andrews-elementary-school": "Grundschule St. Anon", "andrews-street": "Ahornweg", "armitage-street": "Am Sportplatz", "barrows-school": "Bischöfliches Gymnasium", "battle-street": "Birkenweg", "bennett-street": "Bergstraße", - "bowman-park": "Augarten", + "bowman-park": "Bayernpark", "collins-drive": "Kiefernweg", - "conrail-railroad": "Graz-Köflacher-Eisenbahn", + "conrail-railroad": "Chiemseebahn", "conservation-park": "Naturschutzgebiet", "constantine-street": "Kirchgasse", "cushman-street": "Kiefernweg", - "dollar-tree": "GardeRobe Second Hand", + "dollar-tree": "Vintys Second Hand", "douglas-avenue": "Dorfallee", "east-street": "Oststraße", "elm-street": "Eichenweg", @@ -741,69 +750,69 @@ "hook-avenue": "Hollunderweg", "jefferson-street": "Jahnstraße", "kelsey-street": "Kastanienweg", - "lafayette-park": "Stadtpark", - "las-coffee-cafe": "Tribeka Café", + "lafayette-park": "Inn Park", + "las-coffee-cafe": "Black Bean Café", "lincoln-avenue": "Lindenstraße", - "lowrys-books": "uni-buchladen", - "lynns-garage": "Schönaugarage", - "main-street-barbell": "Mrs. Sporty", - "main-street-cafe": "Gino Caffe Muhr", + "lowrys-books": "Thalia Buchladen", + "lynns-garage": "A.T.U. Werkstatt", + "main-street-barbell": "Bodyfit", + "main-street-cafe": "Café Simon", "main-street-fitness": "fitinn", - "main-street": "Herrengasse", + "main-street": "Lufwigstraße", "maple-street": "Mühlenweg", "marina-park": "Marina Park", "market-street": "Markstraße", - "memory-isle-park": "Gedächtnisinsel Park", - "memory-isle": "Gedächtnisinsel", - "michigan-avenue": "Hauptstraße", + "memory-isle-park": "Donauinsel Park", + "memory-isle": "Donauinsel", + "michigan-avenue": "Regenbuerger Straße", "middle-street": "Mittelstraße", "millard-street": "Meisenweg", "moore-street": "Mühlenstraße", "morris-avenue": "Meisenweg", "mural-mall": "Franziskanergasse", - "paisanos-bar-and-grill": "Landhauskeller", - "paisley-emporium": "Kastner & Öhler", - "paparazzi-tattoo": "Stichtag - Tattoo & Piercing", + "paisanos-bar-and-grill": "Altes Bräuhaus", + "paisley-emporium": "Stadtgalerie", + "paparazzi-tattoo": "Ink of Hell Tattoo", "pealer-street": "Parkstraße", "pine-street": "Pappelweg", - "pizza-hut": "L'Osteria", + "pizza-hut": "Pizzeria Gallo Nero", "portage-avenue": "Alte Poststraße", - "portage-river": "Grazbach", - "preferred-insurance-services": "Grazer Wechselseitige", + "portage-river": "Inn", + "preferred-insurance-services": "Zürich Versicherungs-AG", "railroad-drive": "Bahnhofstraße", "river-city-appliance": "Haushaltswaren Rauch", "river-drive": "Flussstraße", "river-road": "Flussweg", "river-street": "Ringstraße", - "riverside-cemetery": "Friedhof an der Mur", + "riverside-cemetery": "Innstadt Friedhof", "riverwalk-trail": "Bachweg", "riviera-theatre": "Schauspielhaus", - "rocky-river": "Andritzbach", - "saint-joseph-river": "Mur", - "scidmore-park-petting-zoo": "Schloßpark Eggenberg Streichelzoo", - "scidmore-park": "Schloßpark Eggenberg", - "scouter-park": "Skatepark Grünanger", + "rocky-river": "Ilz", + "saint-joseph-river": "Inn", + "scidmore-park-petting-zoo": "Klostergarten Streichelzoo", + "scidmore-park": "Klostergarten", + "scouter-park": "Skatepar", "sherwin-williams": "Kaspar Harnisch", "south-street": "Südstraße", - "southern-michigan-bank": "Steiermärkische Sparkasse", + "southern-michigan-bank": "Stadtsparkasse", "spring-street": "Gartenstraße", - "sturgeon-river-road": "Andritzbachweg", - "three-rivers-city-hall": "Grazer Rathaus", + "sturgeon-river-road": "Ilzbachweg", + "three-rivers-city-hall": "Rathaus", "three-rivers-elementary-school": "Volksschule", "three-rivers-fire-department": "Feuerwehr", "three-rivers-high-school": "Gymnasium", - "three-rivers-middle-school": "Volksschule Ferdinandeum", - "three-rivers-municipal-airport": "Flughafen Graz", + "three-rivers-middle-school": "Realschule", + "three-rivers-municipal-airport": "Flughafe", "three-rivers-post-office": "Hauptpost", "three-rivers-public-library": "Stadtbibliothek", - "three-rivers": "Graz", - "unique-jewelry": "Juwelier Weikhard", + "three-rivers": "Drei-Flüsse-Stadt", + "unique-jewelry": "Juwelie", "walnut-street": "Waldstraße", "washington-street": "Schillerstraße", "water-street": "Bachstraße", "west-street": "Weststraße", "wheeler-street": "Wilhelmstraße", - "william-towing": "Autowerkstatt Graz Andritz", + "william-towing": "Autowerkstatt", "willow-drive": "Wilhelmstraße", "wood-street": "Weidenweg", "world-fare": "Orange and Green" @@ -851,7 +860,7 @@ "update": "Gib mehr Details über dieses Café ein. Du kannst seinen Namen ändern, angeben welche Küche dort angeboten wird oder die Adresse eingeben. **Ändere die Details des Café.**", "update_close": "Wenn du das Café fertig geändet hast, drücke Escape oder oder klicke den {button} Knopf um den Objekteditor zu schließen.**", "rightclick": "Du kannst jedes Objekt rechtsklicken um das *Bearbeitungs-Menü* zu sehen, welches dir die Bearbeitungs-Möglichkeiten zeigt. **Wähle des erzeugten Punkt durch Rechts-Klicken aus und zeige das Bearbeitungs-Menü.**", - "delete": "Du kannst Objekte löschen, die es in der echten Welt nicht gibt.{br}Löschen eines Objets aus OpenStreetMap entfernt es von der Karte, die alle benutzen. Daher solltest du sicher sein, dass das Objekt nicht mehr gibt, bevor du es löschst. **Klicke auf {button} Knopf um den Punkt zu löschen.**", + "delete": "Du kannst Objekte löschen, die es in der echten Welt nicht gibt.{br}Löschen eines Objekts aus OpenStreetMap entfernt es von der Karte, die alle benutzen. Daher solltest du dir sicher sein, dass es das Objekt nicht mehr gibt, bevor du es löschst. **Klicke auf {button}-Knopf um den Punkt zu löschen.**", "undo": "Du kannst alle Änderungen rückgängig machen, bis du deine Bearbeitungen zu OpenStreetMap hochgeladen hast. **Klicke auf {button} Knopf um das Löschen rückgängig zu machen und den Punkt wiederherzustellen.**", "play": "Nachdem du jetzt Punkte erzeugen und bearbeiten kannst, versuche zur Übung ein paar Punkte zu erzeugen! **Wenn du zum nächsten Kapitel willst klicke '{next}'.**" }, @@ -977,7 +986,7 @@ "title": "Anzeigeoptionen", "background": "Hintergrundeinstellungen ein-/ausblenden", "background_switch": "Auf letzten Hintergrund zurückschalten", - "map_data": "Kartendaten ein-/ausblenden", + "map_data": "Kartendaten-Optionen ein-/ausblenden", "fullscreen": "Vollbildmodus ein-/ausschalten", "wireframe": "Gitter-Modus ein-/ausschalten", "minimap": "Minimap ein-/ausblenden" @@ -1217,6 +1226,9 @@ "aeroway": { "label": "Typ" }, + "agrarian": { + "label": "Produkte" + }, "amenity": { "label": "Typ" }, @@ -1285,6 +1297,9 @@ "board_type": { "label": "Typ" }, + "boules": { + "label": "Typ" + }, "boundary": { "label": "Typ" }, @@ -1304,6 +1319,10 @@ "bunker_type": { "label": "Typ" }, + "cables": { + "label": "Kabel", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Ausrichtung (Winkel Im Uhrzeigersinn) ", "placeholder": "45, 90, 180, 270" @@ -1469,6 +1488,10 @@ "description": { "label": "Beschreibung" }, + "devices": { + "label": "Geräte", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Windelwechseln möglich" }, @@ -1543,6 +1566,9 @@ "wall": "Wandanschluss" } }, + "fitness_station": { + "label": "Geräteausstattung" + }, "fixme": { "label": "Korrigiere mich" }, @@ -1550,6 +1576,9 @@ "label": "Typ", "placeholder": "Standard" }, + "frequency": { + "label": "Betriebsfrequenz" + }, "fuel": { "label": "Kraftstoff" }, @@ -1581,6 +1610,9 @@ "generator/type": { "label": "Typ" }, + "government": { + "label": "Typ" + }, "grape_variety": { "label": "Traubensorten" }, @@ -1643,7 +1675,7 @@ "label": "Inschrift" }, "intermittent": { - "label": "periodisch" + "label": "Periodisch" }, "internet_access": { "label": "Internetzugang", @@ -1908,6 +1940,10 @@ "payment_multi": { "label": "Zahlungsarten" }, + "phases": { + "label": "Phasen", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefonnummer", "placeholder": "+31 42 123 4567" @@ -1987,6 +2023,9 @@ "railway": { "label": "Typ" }, + "rating": { + "label": "Anschlussleistung" + }, "recycling_accepts": { "label": "akzeptiert" }, @@ -2195,6 +2234,9 @@ "studio": { "label": "Typ" }, + "substance": { + "label": "Substanz" + }, "substation": { "label": "Typ" }, @@ -2221,6 +2263,15 @@ "surveillance/zone": { "label": "Überwachungszone" }, + "switch": { + "label": "Typ", + "options": { + "circuit_breaker": "Schutzschalter", + "disconnector": "Trennschalter", + "earthing": "Erdung", + "mechanical": "mechanisch" + } + }, "tactile_paving": { "label": "Oberfläche mit Blindenleitsystem" }, @@ -2293,6 +2344,19 @@ }, "placeholder": "Ausgezeichnet, Gut, Schlecht …" }, + "transformer": { + "label": "Typ", + "options": { + "auto": "Spartransformer", + "auxiliary": "Eigenbedarfstransformator", + "converter": "Stromrichter-Transformator", + "distribution": "Masttransformator", + "generator": "Generator", + "phase_angle_regulator": "Querregeltransformator", + "traction": "Eisenbahntransformator", + "yes": "Unbekannt" + } + }, "trees": { "label": "Bäume" }, @@ -2327,6 +2391,18 @@ "stratovolcano": "Schichtvulkan" } }, + "voltage": { + "label": "Spannung" + }, + "voltage/primary": { + "label": "Primärspannung" + }, + "voltage/secondary": { + "label": "Sekundärspannung" + }, + "voltage/tertiary": { + "label": "Tertiärspannung" + }, "wall": { "label": "Typ" }, @@ -2354,6 +2430,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Windungen", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Windungskonfiguration", + "options": { + "delta": "Dreieckschaltung", + "leblanc": "Leblanc-Schaltung", + "open": " offene Wicklungen", + "open-delta": "offene Dreieckschaltung", + "scott": "Scott-Schaltung", + "star": "Sternschaltung", + "zigzag": "Zickzackschaltung" + } } }, "presets": { @@ -2662,7 +2754,7 @@ "terms": "Internetcafé, Cybercafé" }, "amenity/kindergarten": { - "name": "Kindergarten", + "name": "Kindergartengelände", "terms": "Kindergartengeläde,Kinderkrippengelände" }, "amenity/library": { @@ -2677,6 +2769,10 @@ "name": "Motorradparkplatz", "terms": "Motorrad-Parkplatz" }, + "amenity/music_school": { + "name": "Musikschule", + "terms": "Musikschule" + }, "amenity/nightclub": { "name": "Nachtklub", "terms": "Nachtklub, Etablissement, Nachtlokal" @@ -2800,8 +2896,7 @@ "terms": "Schulhof, Schule, Realschule, Mittelschule, Grundschule, Gymnasium, Ganztagsschule, Förderschule" }, "amenity/scrapyard": { - "name": "Schrottplatz", - "terms": "Schrottplatz, Sturzplatz" + "name": "Schrottplatz" }, "amenity/shelter": { "name": "Unterstand", @@ -3120,8 +3215,8 @@ "terms": "alleinstehendes Haus, freistehendes Haus, Einfamilienhaus" }, "building/dormitory": { - "name": "Schlafsaal", - "terms": "Schlafsaal, Dormitorium" + "name": "Wohnheim", + "terms": "Wohnheim, Studentenwohnheim, Dormitorium" }, "building/entrance": { "name": "Eingang/Ausgang" @@ -3261,6 +3356,10 @@ "name": "Partyservice", "terms": "Partyservice, Speiselieferant, Lebensmittellieferant, Brötchenservice, Gastronom" }, + "craft/chimney_sweeper": { + "name": "Kaminkehrer", + "terms": "Kaminkehrer,Schornsteinfeger" + }, "craft/clockmaker": { "name": "Uhrmacher", "terms": "Uhrmacher" @@ -3370,7 +3469,7 @@ "name": "Gerüstbauer", "terms": "Gerüstbauer" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Bildhauer", "terms": "Bildhauer" }, @@ -3382,10 +3481,6 @@ "name": "Steinmetz", "terms": "Steinmetz" }, - "craft/sweep": { - "name": "Kaminkehrer", - "terms": "Kaminkehrer, Schornsteinfeger, Kaminfeger" - }, "craft/tailor": { "name": "Herrenschneider" }, @@ -3654,9 +3749,13 @@ "name": "Weg", "terms": "Mehrzweck-Weg, Wanderweg, Reitweg, Radweg, Fußweg, Pfad" }, - "highway/pedestrian": { + "highway/pedestrian_area": { "name": "Fußgängerzone", - "terms": "Fußgängerzone, Fußgängerstraße" + "terms": "Fußgängerzone" + }, + "highway/pedestrian_line": { + "name": "Fußgängerstraße", + "terms": "Fußgängerstraße" }, "highway/primary": { "name": "Hauptverbindungsstraße", @@ -3834,6 +3933,10 @@ "name": "Becken", "terms": "Becken, Kessel" }, + "landuse/brownfield": { + "name": "Altlast", + "terms": "Altlast, Industriebrache, verseuchter Boden" + }, "landuse/cemetery": { "name": "Friedhof", "terms": "Friedhof, Friedwald" @@ -3873,6 +3976,10 @@ "name": "Gras", "terms": "Gras, Grünfläche, Wiese" }, + "landuse/greenfield": { + "name": "Freifläche", + "terms": "Freifläche, unbebaute Fläche, Bauland, Rohbauland" + }, "landuse/harbour": { "name": "Hafen", "terms": "Hafenanlage, Seehafen" @@ -3881,6 +3988,14 @@ "name": "Fabrikgelände", "terms": "Industriegebiet, Industriegelände, Industriegegend, Industrie, Fabriken" }, + "landuse/industrial/scrap_yard": { + "name": "Schrottplatz", + "terms": "Schrottplatz, Autofriedhof" + }, + "landuse/industrial/slaughterhouse": { + "name": "Schlachthof", + "terms": "Schlachthof, Schlachthaus" + }, "landuse/landfill": { "name": "Deponie", "terms": "Deponie, Mülldeponie, Geländeauffüllung, Müllkippe" @@ -3957,6 +4072,10 @@ "name": "Freizeitgelände", "terms": "Freizeitgelände, Erholungsgebiet, Erholungsraum" }, + "landuse/religious": { + "name": "Gelände mit religiöser Nutzung", + "terms": "Gelände mit religiöser Nutzung" + }, "landuse/residential": { "name": "Wohngebiet", "terms": "Wohngebiet, Wohnanlage, Wohngegend, Wohnregion, Wohnhäuser, Siedlungsfläche" @@ -4002,7 +4121,7 @@ "terms": "Feuerstelle" }, "leisure/fitness_centre": { - "name": "Fitness Studio", + "name": "Fitness-Studio", "terms": "Fitness-Center,Gymnastikstudio" }, "leisure/fitness_centre/yoga": { @@ -4013,6 +4132,50 @@ "name": "Freiluft-Fitness-Station", "terms": "Freiluft Fitness Einrichtung" }, + "leisure/fitness_station/balance_beam": { + "name": "Schwebebalken", + "terms": "Balken,Schwebebaum" + }, + "leisure/fitness_station/box": { + "name": "Sprungbox", + "terms": "Sprungbox" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Reck", + "terms": "Reck,Reckstange" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Klettergerüst", + "terms": "Klettergerüst" + }, + "leisure/fitness_station/hyperextension": { + "name": "Hyperextension-Bank", + "terms": "Hyperextension-Bank" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barren", + "terms": "Barren" + }, + "leisure/fitness_station/push-up": { + "name": "Liegestützstation", + "terms": "Liegestützstation" + }, + "leisure/fitness_station/rings": { + "name": "Ringe", + "terms": "Ringe,Turnringe" + }, + "leisure/fitness_station/sign": { + "name": "Übungsanleitungstafel", + "terms": "Übungsanleitungstafel,Übungsanleitung" + }, + "leisure/fitness_station/sit-up": { + "name": "Sit-Up-Station", + "terms": "Sit-Up-Station" + }, + "leisure/fitness_station/stairs": { + "name": "Übungsstiege", + "terms": "Übungsstiege,Übungsstufen" + }, "leisure/garden": { "name": "Garten", "terms": "Garten, Gartenanlage, Hausgarten" @@ -4073,6 +4236,10 @@ "name": "Beachvolleyballplatz", "terms": "Beachvolleyballplatz" }, + "leisure/pitch/boules": { + "name": "Boccia-Platz", + "terms": "Boccia-Platz" + }, "leisure/pitch/bowls": { "name": "Bowlingrasen", "terms": "Bowling-Rasenfläche, Bowlingrasen" @@ -4125,6 +4292,10 @@ "name": "Rennbbahn (Laufen)", "terms": "Rennbbahn (Laufen)Laufbahn, Laufstrecke" }, + "leisure/sauna": { + "name": "Sauna", + "terms": "Sauna" + }, "leisure/slipway": { "name": "Slipanlage", "terms": "Gleitbahn, Rampe" @@ -4409,16 +4580,32 @@ "terms": "Büro, Amt, Behörde" }, "office/accountant": { - "name": "Steuerberater", - "terms": "Buchhalter, Buchführer, Wirtschaftsprüfer" + "name": "Buchhaltungsbüro", + "terms": "Steuerberatungskanzlei" }, "office/administrative": { "name": "Verwaltungsamt", "terms": "Verwaltungsstelle, Öffentliche Verwaltung" }, + "office/adoption_agency": { + "name": "Adoptionsagentur", + "terms": "Adoptionsagentur" + }, + "office/advertising_agency": { + "name": "Werbeagentur", + "terms": "Werbeagentur" + }, "office/architect": { - "name": "Architekt", - "terms": "Architekturbüro, Planungsbüro" + "name": "Architekturbüro", + "terms": "Architekturbüro" + }, + "office/association": { + "name": "Nonprofit-Organisations-Büro", + "terms": "Nonprofit-Organisations-Büro" + }, + "office/charity": { + "name": "Wohlfahrtseinrichtung", + "terms": "Wohlfahrtseinrichtung" }, "office/company": { "name": "Firma", @@ -4436,6 +4623,10 @@ "name": "Arbeitsamt", "terms": "Arbeitsagentur, Arbeitsvermittlung, Arbeitsvermittlungsstelle, Stellenvermittlung, Agentur für Arbeit" }, + "office/energy_supplier": { + "name": "Energieversorgungsunternehmen", + "terms": "Energieversorgungsunternehmen" + }, "office/estate_agent": { "name": "Immobilienmakler", "terms": "Makler, Immobilienhändler, Liegenschaftsverwalter, Grundstücksmakler" @@ -4444,6 +4635,14 @@ "name": "Finanzberater", "terms": "Geldberater" }, + "office/forestry": { + "name": "Forstverwaltung", + "terms": "Forstverwaltung" + }, + "office/foundation": { + "name": "Stiftung", + "terms": "Stiftung" + }, "office/government": { "name": "Behörde", "terms": "Amt, Regierungsstelle" @@ -4452,13 +4651,21 @@ "name": "Standesamt", "terms": "Standesamt" }, + "office/government/tax": { + "name": "Finanzamt", + "terms": "Finanzamt" + }, + "office/guide": { + "name": "Reisebüro", + "terms": "Reisebüro" + }, "office/insurance": { "name": "Versicherung", "terms": "Versicherungsbüro" }, "office/it": { - "name": "IT-Büro", - "terms": "Softwareentwickler, Softwarebüro, Programmierer, IT" + "name": "Informations-Technologie-Firma", + "terms": "Informations-Technologie-Firma" }, "office/lawyer": { "name": "Anwalt", @@ -4468,14 +4675,22 @@ "name": "Notariat", "terms": "Notariat, Notariatskanzlei, Notarbüro" }, + "office/moving_company": { + "name": "Umzugsfirma", + "terms": "Umzugsfirma, Spedition" + }, "office/newspaper": { - "name": "Redaktion", - "terms": "Zeitung, Zeitschrift" + "name": "Zeitungsbüro", + "terms": "Zeitungsbüro" }, "office/ngo": { "name": "Nichtregierungsorganisation", "terms": "NRO, Nichtregierungsorganisation" }, + "office/notary": { + "name": "Notariat", + "terms": "Notariat" + }, "office/physician": { "name": "Arztpraxis" }, @@ -4483,21 +4698,41 @@ "name": "Partei", "terms": "Politische Partei, Parteizentrale" }, + "office/private_investigator": { + "name": "Privatdedektiv", + "terms": "Privatdedektiv" + }, + "office/quango": { + "name": "Quasi-NGO-Büro", + "terms": "Quasi-NGO-Büro" + }, "office/research": { "name": "Forschungseinrichtung", "terms": "Forschungsinstitut, Wissenschaftliches Institut" }, + "office/surveyor": { + "name": "Vermessungstechniker", + "terms": "Vermessungstechniker" + }, + "office/tax_advisor": { + "name": "Steuerberatungskanzlei", + "terms": "Steuerberatungskanzlei" + }, "office/telecommunication": { "name": "Telefongesellschaft", "terms": "Telekommunikation, Nachrichtentechniker" }, "office/therapist": { "name": "Therapeut", - "terms": "Masseur" + "terms": "Therapeut" }, "office/travel_agent": { "name": "Reisebüro" }, + "office/water_utility": { + "name": "Wasserversorgungsunternehmen", + "terms": "Wasserversorgungsunternehmen" + }, "piste": { "name": "Piste/Skipiste", "terms": "Piste, Skipiste, Skiwanderweg" @@ -4520,6 +4755,10 @@ "name": "Insel", "terms": "Insel" }, + "place/islet": { + "name": "Kleine Insel", + "terms": "Kleine Insel, Inselchen" + }, "place/isolated_dwelling": { "name": "abgelegene Siedlung", "terms": "frei stehendes Haus, Einzelhaus, Einöde" @@ -4532,6 +4771,10 @@ "name": "Wohngegend", "terms": "Wohngegend, Nachbarschaft, Umgebung, Viertel, Grätzel, Kiez" }, + "place/plot": { + "name": "Grundstück", + "terms": "Grundstück, Parzelle" + }, "place/quarter": { "name": "Gegend / Quartier", "terms": "Gegend, Quartier, Stadtviertel" @@ -4554,7 +4797,7 @@ }, "playground/balance_beam": { "name": "Balancierbalken", - "terms": "Balancierbalken, Schwebebalken" + "terms": "Balancierbalken" }, "playground/basket_spinner": { "name": "Korbschaukel", @@ -4573,8 +4816,8 @@ "terms": "Hüpfkissen" }, "playground/horizontal_bar": { - "name": "Reckstange", - "terms": "Reckstange" + "name": "Klimmzugstange", + "terms": "Klimmzugstange" }, "playground/rocker": { "name": "Springreiter", @@ -4650,6 +4893,10 @@ "name": "Umspannwerk", "terms": "Umspannwerk, Transformatorenstation, Schaltanlage" }, + "power/switch": { + "name": "Netzschalter", + "terms": "Netzschalter, Ein/Ausschalter" + }, "power/tower": { "name": "Hochspannungsmast", "terms": "Hauptstrommast" @@ -4768,6 +5015,10 @@ "name": "Laden", "terms": "Geschäft, Ladenlokal" }, + "shop/agrarian": { + "name": "Geschäft für landwirtschaftliche Produktion", + "terms": "Geschäft für landwirtschaftliche Produktion" + }, "shop/alcohol": { "name": "Spirituosenladen", "terms": "Alkoholika" @@ -5287,7 +5538,7 @@ }, "tourism/chalet": { "name": "Ferienhaus", - "terms": "Ferienhaus, Chalet" + "terms": "Ferienhaus" }, "tourism/gallery": { "name": "Kunstgalerie", @@ -5345,6 +5596,10 @@ "name": "Aussichtspunkt", "terms": "Aussichtspunkt" }, + "tourism/wilderness_hut": { + "name": "unbewirtschaftete Schutzhütte", + "terms": "unbewirtschaftete Schutzhütte" + }, "tourism/zoo": { "name": "Zoo", "terms": "Zoo" @@ -5548,7 +5803,7 @@ "terms": "Bach" }, "waterway/stream_intermittent": { - "name": "periodischer Bach", + "name": "Periodischer Bach", "terms": "periodischer Bach, periodisches Fliessgewässer" }, "waterway/water_point": { @@ -5577,6 +5832,13 @@ "description": "Premium-DigitalGlobe-Satellitenbilder", "name": "DigitalGlobe Premium" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Bedingungen & Feedback" + }, + "description": "Lufbildgrenzen und Aufnahmedaten. Die Beschriftung erscheint auf Zoom Level 14 und höher.", + "name": "DigitalGlobe Premium Luftbildaufnahmedatum" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Bedingungen & Feedback" @@ -5584,6 +5846,13 @@ "description": "Standard-DigitalGlobe-Satellitenbilder", "name": "DigitalGlobe Standard" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Bedingungen & Feedback" + }, + "description": "Lufbildgrenzen und Aufnahmedaten. Die Beschriftung erscheint auf Zoom Level 14 und höher.", + "name": "DigitalGlobe Standard Luftbildaufnahmedatum" + }, "EsriWorldImagery": { "attribution": { "text": "Bedingungen & Feedback" @@ -5648,15 +5917,15 @@ "name": "OSM-Objekteditor: Kennzeichnung" }, "US-TIGER-Roads-2012": { - "name": "TIGER Straße 2012" + "name": "TIGER Straßen 2012" }, "US-TIGER-Roads-2014": { "description": "Bei Zoom Level 16+ Public Domain Kartendaten vom US Census. Bei niedrigeren Zoom Leves werden nur die Änderungen seit 2006 ohne die bereits nach OpenStreetMap eingearbeiteten Änderungen", - "name": "TIGER Straße 2014" + "name": "TIGER Straßen 2014" }, "US-TIGER-Roads-2017": { "description": "Gelb = Freie Daten vom US Census. Rot = In OpenStreetMap fehlende Daten", - "name": "TIGER Straße 2017" + "name": "TIGER Straßen 2017" }, "Waymarked_Trails-Cycling": { "attribution": { diff --git a/dist/locales/el.json b/dist/locales/el.json index 54427994e..b9e407b6b 100644 --- a/dist/locales/el.json +++ b/dist/locales/el.json @@ -274,7 +274,6 @@ "localized_translation_language": "Επιλογή γλώσσας", "localized_translation_name": "Όνομα" }, - "zoom_in_edit": "Μεγεθύνετε για να Επεξεργαστείτε", "login": "σύνδεση", "logout": "Αποσύνδεση", "loading_auth": "Σύνδεση στο OpenStreetMap...", @@ -522,8 +521,7 @@ "splash": { "welcome": "Καλώς ήλθατε στον iD επεξεργαστή για το OpenStreetMap", "text": "Το iD είναι ένα φιλικό αλλά ισχυρό εργαλείο για συνεισφορά στον καλύτερο του κόσμου, ελεύθερο, παγκόσμιο χάρτη. Αυτή είναι η έκδοση {version}. Για περισσότερες πληροφορίες δείτε το {website} και αναφέρετε bugs στο {github}.", - "walkthrough": "Ξεκινήστε την Περιήγηση", - "start": "Επεξεργασία Τώρα" + "walkthrough": "Ξεκινήστε την Περιήγηση" }, "source_switch": { "lose_changes": "Έχετε μη αποθηκευμένες αλλαγές. Αλλάζοντας τον διακομιστή χάρτη θα τις απορρίψετε. Είστε σίγουρος/-η ότι θέλετε να αλλάξετε διακομιστή;" @@ -544,10 +542,6 @@ "tag_suggests_area": "Η ετικέτα {tag} προτείνει ότι η γραμμή πρέπει να είναι περιοχή, αλλά δεν είναι περιοχή", "deprecated_tags": "Παρωχημένες ετικέτες: {tags}" }, - "zoom": { - "in": "Μεγέθυνση", - "out": "Σμίκρυνση" - }, "cannot_zoom": "Δεν είναι δυνατή μεγαλύτερη σμίκρυνση στην τρέχουσα κατάσταση λειτουργίας.", "full_screen": "Αλλάξτε σε Πλήρη Οθόνη", "gpx": { @@ -2234,6 +2228,9 @@ "name": "Ωρολογοποιός", "terms": "ρολογάς" }, + "craft/confectionery": { + "name": "Ζαχαροπλαστείο" + }, "craft/dressmaker": { "name": "Ενδυματολόγος", "terms": "μοδίστρα, μόδιστρος, ράφτης, ράπτης, σχεδιάστρια μόδας, σχεδιαστής μόδας, μοντελίστ, ενδυματοποιός, ρούχα, φορέματα" @@ -2290,9 +2287,6 @@ "craft/scaffolder": { "name": "Κατασκευαστής σκαλωσιών" }, - "craft/sculpter": { - "name": "Γλύπτης" - }, "craft/shoemaker": { "name": "Τσαγκάρης", "terms": "παπουτσής,υποδηματοποιός" @@ -2300,9 +2294,6 @@ "craft/stonemason": { "name": "Λιθοποιός" }, - "craft/sweep": { - "name": "Καπνοδοχοκαθαριστής" - }, "craft/tailor": { "name": "Ραφτική" }, @@ -2422,10 +2413,6 @@ "name": "Μονοπάτι", "terms": "Διαδρομή, μονοπάτι" }, - "highway/pedestrian": { - "name": "Πεζόδρομος", - "terms": "Πεζόδρομος" - }, "highway/primary": { "name": "Πρωτεύων Δρόμος", "terms": "Κύρια Οδός" @@ -2979,18 +2966,10 @@ "name": "Γραφείο", "terms": "Γραφείο" }, - "office/accountant": { - "name": "Λογιστής", - "terms": "Λογιστική, φορολογικό γραφείο, φοροτεχνικό γραφείο, λογιστικό γραφείο" - }, "office/administrative": { "name": "Διοικητικό γραφείο", "terms": "Γραφείο διοίκησης" }, - "office/architect": { - "name": "Αρχιτέκτονας", - "terms": "Πολιτικός μηχανικός" - }, "office/company": { "name": "Εταιρικό Γραφείο", "terms": "Γραφείο Εταιρείας" @@ -3021,9 +3000,6 @@ "name": "Δικηγορικό Γραφείο", "terms": "νομικό γραφείο" }, - "office/newspaper": { - "name": "Εφημερίδα" - }, "office/ngo": { "name": "Γραφείο ΜΚΟ" }, @@ -3040,9 +3016,6 @@ "office/telecommunication": { "name": "Γραφείο Τηλεπικοινωνιών" }, - "office/therapist": { - "name": "Θεραπευτής" - }, "office/travel_agent": { "name": "Ταξιδιωτικό Γραφείο" }, @@ -3504,10 +3477,6 @@ "name": "Πάρκο τροχόσπιτων", "terms": "Πάρκο τροχόσπιτων" }, - "tourism/chalet": { - "name": "Σαλέ", - "terms": "Σαλέ, Αλπική έπαυλη" - }, "tourism/guest_house": { "name": "Ξενώνας", "terms": "Ξενώνας" diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index e2347c502..91bcd153d 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -310,7 +310,6 @@ "localized_translation_language": "Choose language", "localized_translation_name": "Name" }, - "zoom_in_edit": "Zoom in to edit", "login": "login", "logout": "logout", "loading_auth": "Connecting to OpenStreetMap...", @@ -612,8 +611,7 @@ "splash": { "welcome": "Welcome to the iD OpenStreetMap editor", "text": "iD is a friendly but powerful tool for contributing to the World's best free World map. This is version {version}. For more information see {website} and report bugs at {github}.", - "walkthrough": "Start the Walkthrough", - "start": "Edit now" + "walkthrough": "Start the Walkthrough" }, "source_switch": { "live": "live", @@ -645,10 +643,6 @@ "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area", "deprecated_tags": "Deprecated tags: {tags}" }, - "zoom": { - "in": "Zoom in", - "out": "Zoom out" - }, "cannot_zoom": "Cannot zoom out further in current mode.", "full_screen": "Toggle Full Screen", "gpx": { @@ -3131,18 +3125,12 @@ "craft/scaffolder": { "name": "Scaffolder" }, - "craft/sculpter": { - "name": "Sculpter" - }, "craft/shoemaker": { "name": "Shoemaker" }, "craft/stonemason": { "name": "Stonemason" }, - "craft/sweep": { - "name": "Chimney Sweep" - }, "craft/tailor": { "name": "Tailor" }, @@ -3351,9 +3339,6 @@ "highway/path": { "name": "Path" }, - "highway/pedestrian": { - "name": "Pedestrian Street" - }, "highway/primary": { "name": "Primary Road" }, @@ -3918,15 +3903,9 @@ "office": { "name": "Office" }, - "office/accountant": { - "name": "Accountant" - }, "office/administrative": { "name": "Administrative Office" }, - "office/architect": { - "name": "Architect" - }, "office/company": { "name": "Company Office" }, @@ -3954,18 +3933,12 @@ "office/insurance": { "name": "Insurance Office" }, - "office/it": { - "name": "IT Office" - }, "office/lawyer": { "name": "Law Office" }, "office/lawyer/notary": { "name": "Notary Office" }, - "office/newspaper": { - "name": "Newspaper" - }, "office/ngo": { "name": "NGO Office" }, @@ -3981,9 +3954,6 @@ "office/telecommunication": { "name": "Telecom Office" }, - "office/therapist": { - "name": "Therapist" - }, "office/travel_agent": { "name": "Travel Agency" }, @@ -4029,9 +3999,6 @@ "place/village": { "name": "Village" }, - "playground/balance_beam": { - "name": "Balance Beam" - }, "playground/basket_spinner": { "name": "Basket Spinner" }, @@ -4044,12 +4011,6 @@ "playground/cushion": { "name": "Bouncy Cushion" }, - "playground/horizontal_bar": { - "name": "Horizontal Bar" - }, - "playground/rocker": { - "name": "Springy Rocker" - }, "playground/roundabout": { "name": "Play Roundabout" }, @@ -4584,9 +4545,6 @@ "tourism/caravan_site": { "name": "Caravan Park" }, - "tourism/chalet": { - "name": "Chalet" - }, "tourism/gallery": { "name": "Art Gallery" }, diff --git a/dist/locales/eo.json b/dist/locales/eo.json index 8e235bb45..70af86b71 100644 --- a/dist/locales/eo.json +++ b/dist/locales/eo.json @@ -360,7 +360,9 @@ "accuracy": "Akurateco", "unknown": "Nekonata", "show_tiles": "Montri kahelojn", - "hide_tiles": "Kaŝi kahelojn" + "hide_tiles": "Kaŝi kahelojn", + "show_vintage": "Montri fot-daton", + "hide_vintage": "Kaŝi fot-daton" }, "history": { "key": "H", @@ -666,6 +668,13 @@ "mapillary": { "view_on_mapillary": "Montri ĉi tiun bildon en Mapillary" }, + "openstreetcam_images": { + "tooltip": "Strat-niveloj fotoj de OpenStreetCam", + "title": "Fotara surtavolo (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Montri tiun ĉi bildon ĉe OpenStreetCam" + }, "help": { "title": "Helpo", "key": "H", @@ -1215,6 +1224,9 @@ "aeroway": { "label": "Speco" }, + "agrarian": { + "label": "Produktaĵoj" + }, "amenity": { "label": "Speco" }, @@ -1283,6 +1295,9 @@ "board_type": { "label": "Speco" }, + "boules": { + "label": "Speco" + }, "boundary": { "label": "Speco" }, @@ -1302,6 +1317,10 @@ "bunker_type": { "label": "Speco" }, + "cables": { + "label": "Kabloj", + "placeholder": "1, 2, 3…" + }, "camera/direction": { "label": "Direkto (horloĝdirekte en gradoj)", "placeholder": "45, 90, 180, 270" @@ -1467,6 +1486,10 @@ "description": { "label": "Priskribo" }, + "devices": { + "label": "Aparatoj", + "placeholder": "1, 2, 3…" + }, "diaper": { "label": "Tablo por travindotukado" }, @@ -1541,6 +1564,9 @@ "wall": "Muro" } }, + "fitness_station": { + "label": "Speco de ekzerc-ilaro" + }, "fixme": { "label": "Riparu min!" }, @@ -1548,6 +1574,9 @@ "label": "Speco", "placeholder": "Norma" }, + "frequency": { + "label": "Frekvenco" + }, "fuel": { "label": "Brulaĵo" }, @@ -1906,6 +1935,10 @@ "payment_multi": { "label": "Pagmanieroj" }, + "phases": { + "label": "Fazoj", + "placeholder": "1, 2, 3…" + }, "phone": { "label": "Telefono", "placeholder": "+31 42 1231 4567" @@ -1985,6 +2018,9 @@ "railway": { "label": "Tipo" }, + "rating": { + "label": "Eliga povo" + }, "recycling_accepts": { "label": "Akceptanta" }, @@ -2193,6 +2229,9 @@ "studio": { "label": "Speco" }, + "substance": { + "label": "Substanco" + }, "substation": { "label": "Speco" }, @@ -2219,6 +2258,15 @@ "surveillance/zone": { "label": "Gardata areo" }, + "switch": { + "label": "Tipo", + "options": { + "circuit_breaker": "Malŝaltilo kurent-limiganta (441-14-20)", + "disconnector": "Malkonektilo (441-14-05)", + "earthing": "Ŝaltilo alteriga (441-14-07)", + "mechanical": "Meĥanika (441-14-10)" + } + }, "tactile_paving": { "label": "Reliefo por blinduloj" }, @@ -2291,6 +2339,19 @@ }, "placeholder": "Bonega, bona, malbona…" }, + "transformer": { + "label": "Tipo", + "options": { + "auto": "Komun-transformilo (aŭtotransformilo)", + "auxiliary": "Helpa (intern-sistema)", + "converter": "Konvertilo", + "distribution": "Distribu-transformilo", + "generator": "Blok-transformilo", + "phase_angle_regulator": "Fazangul-alĝustigilo", + "traction": "Kontaktrela", + "yes": "Nekonata" + } + }, "trees": { "label": "Arboj" }, @@ -2325,6 +2386,18 @@ "stratovolcano": "Tavolovulkano (stratovulkano)" } }, + "voltage": { + "label": "Tensio" + }, + "voltage/primary": { + "label": "Unua tensio" + }, + "voltage/secondary": { + "label": "Dua tensio" + }, + "voltage/tertiary": { + "label": "Tria tensio" + }, "wall": { "label": "Speco" }, @@ -2352,6 +2425,22 @@ }, "wikipedia": { "label": "Vikipedio" + }, + "windings": { + "label": "Volvaĵoj", + "placeholder": "1, 2, 3…" + }, + "windings/configuration": { + "label": "Aranĝo de volvaĵoj", + "options": { + "delta": "IEC 421-10-02 (delta / triangula)", + "leblanc": "IEC 421-10-07 (Leblanc)", + "open": "IEC 421-10-05 (malfermita)", + "open-delta": "IEC 421-10-03 (malfermita delta)", + "scott": "IEC 421-10-06 (Scott)", + "star": " IEC 421-10-01 (stel-forma)", + "zigzag": "IEC 421-10-04 (zigzaga)" + } } }, "presets": { @@ -2675,6 +2764,10 @@ "name": "Motorcikla parkumejo", "terms": "motorciklejo,motociklejo" }, + "amenity/music_school": { + "name": "Muzika lernejo", + "terms": "muziklernejo" + }, "amenity/nightclub": { "name": "Noktoklubejo", "terms": "noktoklubo,diskoteko,dancejo,noktklubo,klubo nokta,nokta klubo" @@ -2798,8 +2891,7 @@ "terms": "lernejo,edukejo,instruejo" }, "amenity/scrapyard": { - "name": "Ferrubejo", - "terms": "aŭtovrakejo,vrakejo,feraĵejo,recikliga centro,rubejo" + "name": "Ferrubejo" }, "amenity/shelter": { "name": "Ŝirmejo", @@ -3368,9 +3460,9 @@ "name": "Skafaldista oficejo", "terms": "skafaldo,trabaro,trabaĵo,trabaĵaro" }, - "craft/sculpter": { - "name": "Skulptista laborejo", - "terms": "skulptisto,skulptejo" + "craft/sculptor": { + "name": "Laborejo de skulptisto", + "terms": "skulptisto" }, "craft/shoemaker": { "name": "Ŝuista laborejo", @@ -3380,10 +3472,6 @@ "name": "Ŝton-tranĉista laborejo", "terms": "ŝtontranĉisto,shtontranchisto,sxtontrancxisto,ŝtonisto,shtonisto,sxtonisto" }, - "craft/sweep": { - "name": "Kamenpurigista oficejo", - "terms": "kamenoisto,kamenpurigisto,kamentubisto" - }, "craft/tailor": { "name": "Tajlora laborejo (ĉefe viraj vestoj)" }, @@ -3652,9 +3740,13 @@ "name": "Vojeto (piedpremita)", "terms": "vojo,pado,irejo,piedvojeto" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "name": "Piedirada areo", + "terms": "trotuaro,irejo,piedirejo,promenejo,promenvojo" + }, + "highway/pedestrian_line": { "name": "Piedirada strato", - "terms": "trotuaro,irejo,piedirejo,pavimo" + "terms": "trotuaro,irejo,piedirejo,pavimo,promenejo,promenvojo" }, "highway/primary": { "name": "Vojo unua-ranga", @@ -3832,6 +3924,10 @@ "name": "Baseno (artefarita lageto)", "terms": "akvo,akvejo,akvujo,lageto,lago,rezervujo" }, + "landuse/brownfield": { + "name": "Konstruejo (post industria tereno)", + "terms": "bruna kampo,kampo" + }, "landuse/cemetery": { "name": "Tombejo", "terms": "tombarejo,mortintejo,enterigejo,sepultejo,nekropolo" @@ -3871,6 +3967,10 @@ "name": "Herbotapiŝo", "terms": "gazono,herbejo" }, + "landuse/greenfield": { + "name": "Konstruejo (virga tereno)", + "terms": "verda kampo,kampo" + }, "landuse/harbour": { "name": "Haveno", "terms": "marhaveno,ŝipejo" @@ -3879,6 +3979,14 @@ "name": "Industria tereno", "terms": "industrio,fabriko" }, + "landuse/industrial/scrap_yard": { + "name": "Ferrubejo", + "terms": "aŭtovrakejo,vrakejo,feraĵejo,recikliga centro,rubejo" + }, + "landuse/industrial/slaughterhouse": { + "name": "Buĉejo", + "terms": "buchejo,bucxejo,porkmortigejo.porkomortigejo,mortigejo" + }, "landuse/landfill": { "name": "Rubodeponejo", "terms": "rubdeponejo,balaaĵejo,rubejo" @@ -3955,6 +4063,10 @@ "name": "Ripoza tereno", "terms": "ripozejo,distro" }, + "landuse/religious": { + "name": "Religia tereno", + "terms": "preĝejo,monaĥejo" + }, "landuse/residential": { "name": "Privatdoma tereno", "terms": "loĝejo,domo" @@ -4011,6 +4123,50 @@ "name": "Ekzerc-parko (eksterdoma)", "terms": "ripozgimnastiko,gimnastikejo,gimnastejo" }, + "leisure/fitness_station/balance_beam": { + "name": "Ŝtipo ekvilibra", + "terms": "shtipo,sxtipo,ekvilibrilo,balancilo" + }, + "leisure/fitness_station/box": { + "name": "Ekzerca skatolo (por salti)", + "terms": "gimnastika skatolo,ĉevalo gimnastika" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Horizontala stango", + "terms": "reko,alta stango" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Horizontala ŝtupetaro", + "terms": "gimnastikaj simiaj stangoj" + }, + "leisure/fitness_station/hyperextension": { + "name": "Dors-muskol-ekzercilo", + "terms": "dorsaj muskoloj,distranĉilo" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Du paralelaj stangoj", + "terms": "paralelaj stangoj,rekoj" + }, + "leisure/fitness_station/push-up": { + "name": "Puŝlev-ekzercilo", + "terms": "puŝlevoj,pusxlevoj,pushlevoj,kuŝapogo" + }, + "leisure/fitness_station/rings": { + "name": "Ekzercaj ringegoj", + "terms": "ringegoj" + }, + "leisure/fitness_station/sign": { + "name": "Inform-tabulo pri ekzerco", + "terms": "informtabulo,informsigno,signo" + }, + "leisure/fitness_station/sit-up": { + "name": "Ventr-muskol-ekzercilo", + "terms": "ventraj muskoloj" + }, + "leisure/fitness_station/stairs": { + "name": "Ekzerca ŝtuparo", + "terms": "ŝtuparo" + }, "leisure/garden": { "name": "Ĝardeno", "terms": "ghardeno,gxardeno" @@ -4071,6 +4227,10 @@ "name": "Plaĝ-flugpilkada ludkampo", "terms": "flugpilkadejo,retpilkadejo,volejbalejo,plaĝa flugpilkado, plagha flugpilkado,plagxa flugpilkado" }, + "leisure/pitch/boules": { + "name": "Globludo grunda (Boules)", + "terms": "globludo,bocce,lyonnaise,pétanque,petanque,grunda globludo" + }, "leisure/pitch/bowls": { "name": "Globlud-herbeja (bowls) ludkampo", "terms": "bowls,globludo,herbejglobludo" @@ -4123,6 +4283,10 @@ "name": "Kurejo", "terms": "dromo,kurado" }, + "leisure/sauna": { + "name": "Ŝvitbanejo", + "terms": "shvitbanejo,sxvitbanejo,saŭno,sauxno,sauno,naĝejo,baseno" + }, "leisure/slipway": { "name": "Ŝipglitejo", "terms": "shipglitejo,sxipglitejo,ŝiplanĉejo" @@ -4408,15 +4572,31 @@ }, "office/accountant": { "name": "Oficejo de kontisto", - "terms": "kontisto,librotenisto,kontregistristo" + "terms": "kontisto,librotenisto,librotenanto" }, "office/administrative": { "name": "Administra oficejo", "terms": "administrado" }, + "office/adoption_agency": { + "name": "Oficejo de adopto", + "terms": "adoptoficejo,agentejo de adopto,orfejo" + }, + "office/advertising_agency": { + "name": "Oficejo de reklamo", + "terms": "reklamejo,reklamistejo,merkatado" + }, "office/architect": { "name": "Oficejo de arĥitekturisto", - "terms": "arĥitekto,arkitekto,arhxitekto,arĥitekturisto,arkitekturisto,arhxitekturisto,konstruisto" + "terms": "arĥitekto,arhhitekto,arhxitekto,arkitekto,kontruisto" + }, + "office/association": { + "name": "Oficejo de ne-profit-cela organizaĵo", + "terms": "neprofitcela organizaĵo,neprofitdona organizaĵo,organizaĵo,neregistara organizaĵo,senprofitcela organizaĵo" + }, + "office/charity": { + "name": "Oficejo de almoza organizaĵo", + "terms": "almoza organizaĵo,karitata organizaĵo,karita organizaĵo" }, "office/company": { "name": "Oficejo de firmao", @@ -4434,6 +4614,10 @@ "name": "Dungoficejo", "terms": "dungado,labora agentejo,senlaborula oficejo,dungejo" }, + "office/energy_supplier": { + "name": "Oficejo de elektr-provizanto", + "terms": "elektroprovizanto,energiprovizanto" + }, "office/estate_agent": { "name": "Oficejo de nemoveblaĵisto", "terms": "nemoveblaĵisto,domvendisto" @@ -4442,6 +4626,14 @@ "name": "Financa oficejo", "terms": "financisto" }, + "office/forestry": { + "name": "Oficejo de arbar-mastrumo", + "terms": "arbarmastrumado,forsto,arbarkultivo" + }, + "office/foundation": { + "name": "Oficejo de fondaĵo", + "terms": "fondaĵo,fondajho,fondajxo,fondacio" + }, "office/government": { "name": "Registara oficejo", "terms": "registaro,ministrejo,civila stato,civilstato,prokuroro,imposto,prezidanto,doganejo" @@ -4450,13 +4642,21 @@ "name": "Oficejo de civila stato", "terms": "civila stato,civilstato,geedzeco" }, + "office/government/tax": { + "name": "Oficejo de imposto", + "terms": "imposto,impostkolekto,depago" + }, + "office/guide": { + "name": "Oficejo de vojaĝ-gvido", + "terms": "vojaĝgvidado,vojaghgvidado,vojagxgvidado,ekskurso,gvidado" + }, "office/insurance": { "name": "Oficejo de asekur-kompanio", "terms": "asekurkompanio,asekur-kompanio,asekuragento,asekuristo" }, "office/it": { - "name": "Inform-teĥnologia oficejo", - "terms": "informteĥnologio,informteknologio,programisto,komputscienco,komputoscienco,informatikisto,IT" + "name": "Oficejo de inform-teĥnologia firmao", + "terms": "inform-teĥnologio,informteĥnologio,komputiloj,programaro,IT" }, "office/lawyer": { "name": "Oficejo de leĝisto", @@ -4466,14 +4666,22 @@ "name": "Oficejo de notario", "terms": "notario,aktisto,registristo" }, + "office/moving_company": { + "name": "Oficejo de transloĝiĝ-helpa firmao", + "terms": "transloĝiĝo,transporto" + }, "office/newspaper": { - "name": "Gazet-redaktejo", - "terms": "gazetredaktejo,redaktejo,redakcio" + "name": "Oficejo de redakto", + "terms": "redaktejo,gazeto" }, "office/ngo": { "name": "Oficejo de neregistara organizaĵo", "terms": "neregistara organizaĵo,ne-registara organizaĵo" }, + "office/notary": { + "name": "Oficejo de notario", + "terms": "notario,aktisto,registristo" + }, "office/physician": { "name": "Kabineto de kuracisto" }, @@ -4481,21 +4689,41 @@ "name": "Oficejo de politika partio", "terms": "politika partio,politikpartio,partio" }, + "office/private_investigator": { + "name": "Oficejo de detektivo", + "terms": "detektivo" + }, + "office/quango": { + "name": "Oficejo de duon-registara organizaĵo", + "terms": "organizaĵo" + }, "office/research": { "name": "Oficejo de scienca esplorado", "terms": "esploro,progreso,scienco" }, + "office/surveyor": { + "name": "Oficejo de analiza firmao", + "terms": "anketo,demandfolio,analizo,mezuro" + }, + "office/tax_advisor": { + "name": "Oficejo de impost-konsilo", + "terms": "impostkonsilo" + }, "office/telecommunication": { "name": "Oficejo de telekomunikada firmao", "terms": "telekomunikado" }, "office/therapist": { "name": "Kabineto de terapiisto", - "terms": "terapiisto,terapeŭto,okup-terapiisto,psikologo,psiĥologo" + "terms": "terapiisto,psiĥoterapiisto,psikoterapiisto,psikologo,kuracisto" }, "office/travel_agent": { "name": "Vojaĝa oficejo" }, + "office/water_utility": { + "name": "Oficejo de akv-provizanta firmao", + "terms": "akvoprovizo,akvokondukto" + }, "piste": { "name": "Skivojo", "terms": "skitrako,skiado" @@ -4518,6 +4746,10 @@ "name": "Insulo", "terms": "insulo" }, + "place/islet": { + "name": "Insuleto", + "terms": "insulo" + }, "place/isolated_dwelling": { "name": "Solstaranta domo", "terms": "domo,kabano,ĥato,domaro" @@ -4530,6 +4762,10 @@ "name": "Najbaraĵo", "terms": "najbarajho,najbarajxo,vilaĝo,vilaĝeto,domaro,kvartalo" }, + "place/plot": { + "name": "Parcelo", + "terms": "terpeco,farmbieno,bieno" + }, "place/quarter": { "name": "Kvartalo", "terms": "suburbo,urboparto,distrikto,domaro" @@ -4551,8 +4787,8 @@ "terms": "vilagho,vilagxo,kamparo" }, "playground/balance_beam": { - "name": "Ŝtipo ekvilibra (infanludilo)", - "terms": "ekvilibrilo,balancilo" + "name": "Ŝtipo ekvilibra (por infanoj)", + "terms": "shtipo,sxtipo,ekvilibrilo,balancilo" }, "playground/basket_spinner": { "name": "Korba turniĝilo (infanludilo)", @@ -4571,7 +4807,7 @@ "terms": "salta kuseno" }, "playground/horizontal_bar": { - "name": "Horizontala stango (infanludilo)", + "name": "Horizontala stango (por infanoj)", "terms": "reko,alta stango" }, "playground/rocker": { @@ -4648,6 +4884,10 @@ "name": "Elektrosubcentralo", "terms": "subcentralo,transformatoro,substacio" }, + "power/switch": { + "name": "Ŝaltilo elektra", + "terms": "sxaltilo,shaltilo,malŝaltilo,elektroŝaltilo,malkonektilo" + }, "power/tower": { "name": "Elektrofosto (alttensia)", "terms": "fosto,elektrfosto,elektromasto" @@ -4766,6 +5006,10 @@ "name": "Vendejo", "terms": "aĉetejo" }, + "shop/agrarian": { + "name": "Terkultur-investaĵa vendejo", + "terms": "terkulturo,agrokulturo,agrikulturo,semoj,kripoj,furaĝoj,pesticidoj,kemiaĵoj,ĥemiaĵoj" + }, "shop/alcohol": { "name": "Alkohola vendejo", "terms": "alkoholejo,vino,brando,trinkaĵo,drinkaĵo" @@ -5284,8 +5528,8 @@ "terms": "kampadveturilo,kampveturilo" }, "tourism/chalet": { - "name": "Dometo feria (luprenebla)", - "terms": "pensiono,luprenado de ĉambro,luigado de ĉambro,apartamento,gastejo" + "name": "Dometo feria", + "terms": "feria dometo,hoteleto,loĝejo feria,apartamento" }, "tourism/gallery": { "name": "Artgalerio", @@ -5343,6 +5587,10 @@ "name": "Belvidejo", "terms": "videjo,vidindaĵo,rigardejo" }, + "tourism/wilderness_hut": { + "name": "Sovaĝeja kabano", + "terms": "sovagheja kabano,sovagxeja kabano,kabano,ĥato,ŝirmejo" + }, "tourism/zoo": { "name": "Bestoĝardeno", "terms": "bestoghardeno,bestogxardeno,zoo,zoologia ĝardeno" @@ -5575,6 +5823,13 @@ "description": "Detala satelita fotaro de DigitalGlobe.", "name": "Detala fotaro de DigitalGlobe" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Kondiĉoj kaj rimarkoj" + }, + "description": "Limoj kaj datoj de fotoj. Etikedoj montriĝas de skal-nivelo 14.", + "name": "Detala fotaro de DigitalGlobe - fot-dato" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Kondiĉoj kaj rimarkoj" @@ -5582,12 +5837,19 @@ "description": "Norma satelita fotaro de DigitalGlobe.", "name": "Norma fotaro de DigitalGlobe" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Kondiĉoj kaj rimarkoj" + }, + "description": "Limoj kaj datoj de fotoj. Etikedoj montriĝas de skal-nivelo 14.", + "name": "Norma fotaro de DigitalGlobe - fot-dato" + }, "EsriWorldImagery": { "attribution": { "text": "Kondiĉoj kaj rimarkoj" }, "description": "Tutmonda fotaro de Esri.", - "name": "Tutmonda fotaro de Esri." + "name": "Tutmonda fotaro de Esri" }, "MAPNIK": { "attribution": { diff --git a/dist/locales/es.json b/dist/locales/es.json index cdbdfed21..692467651 100644 --- a/dist/locales/es.json +++ b/dist/locales/es.json @@ -310,7 +310,7 @@ "localized_translation_language": "Elegir idioma", "localized_translation_name": "Nombre" }, - "zoom_in_edit": "Acercar para editar", + "zoom_in_edit": "Hacer zoom para editar", "login": "iniciar sesión", "logout": "Cerrar sesión", "loading_auth": "Conectando a OpenStreetMap...", @@ -361,7 +361,9 @@ "accuracy": "Precisión", "unknown": "Desconocido", "show_tiles": "Mostrar teselas", - "hide_tiles": "Ocultar teselas" + "hide_tiles": "Ocultar teselas", + "show_vintage": "Mostrar Antiguo", + "hide_vintage": "Ocultar Antiguo" }, "history": { "key": "H", @@ -646,8 +648,8 @@ "deprecated_tags": "Etiquetas obsoletas: {tags}" }, "zoom": { - "in": "Acercar", - "out": "Alejar" + "in": "Hacer zoom", + "out": "Alejar zoom" }, "cannot_zoom": "No se puede alejar más la imagen en el modo actual.", "full_screen": "Cambiar a pantalla completa", @@ -668,14 +670,25 @@ "mapillary": { "view_on_mapillary": "Ver esta imagen en Mapillary" }, + "openstreetcam_images": { + "tooltip": "Fotos a nivel de calle de OpenStreetCam", + "title": "Superposición de fotos (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Ver esta imagen en OpenStreetCam" + }, "help": { "title": "Ayuda", "key": "H", "help": "# Ayuda\n\nEste es un editor para [OpenStreetMap](http://www.openstreetmap.org/), el\nmapa libre y editable del mundo. Se puede utilizar para añadir y actualizar\ndatos en su área, haciendo que el mapa del mundo de fuente y datos abiertos\nsea mejor para todos.\n\nLas ediciones que realice en este mapa serán visible a todos los que usen\nOpenStreetMap. Para poder hacer una edición tendrá que\n[Iniciar sesión](https://www.openstreetmap.org/login).\n\nEl [editor iD](http://ideditor.com/) es un proyecto colaborativo con [código\nfuente disponible en GitHub](https://github.com/openstreetmap/iD).\n", + "editing_saving": "# Editando & Guardando\n\nEste editor está diseñado para trabajar principalmente en línea, y usted está accediendo\na él mediante una página web ahora mismo.\n\n### Seleccionando elementos\n\nPara seleccionar un elemento de mapa, como una carretera o un punto de interés, click sobre\nel mapa. Esto resaltará la función seleccionada\ny cargará una barra lateral con\ndetalles sobre él. Si hace click derecho sobre él, mostrará un menú de cosas\nque puede hacer con el elemento.\n\nPara seleccionar múltiples elementos, mantenga pulsada la «Tecla Shift». Luego haga click\nen los elementos que quiere seleccionar, o arrastre sobre el mapa para dibujar un contorno\nalrededor de esos elementos. Se seleccionarán todos los puntos dentro del área de lazo.\n\n### Guardando Ediciones\n\nCuando realiza cambios como editar carreteras, edificios y lugares, estos son\nalmacenados localmente hasta que los guarde en el servidor. No se preocupe si comete\nun error- puede deshacer los cambios haciendo click en el botón deshacer, y rehacer\ncambios haciendo click en el boton rehacer.\n\nHaga click en «Guardar» para finalizar un grupo de ediciones- por ejemplo, si ha completado\nun área de ciudad y le gustaría empezar un nuevo área. Tendrá una oportunidad\nde revisar lo que ha hecho, y el editor proporciona sugerencias útiles\ny advertencias si algo no parece estar correcto sobre los cambios.\n\nSi todo parece estar bien, puede introducir un breve comentario explicando el cambio\nque hizo, y hacer click en «Subir» para publicar los cambios en\n[OpenStreetMap.org](http://www.openstreetmap.org/), donde estarán visibles\npara los demás usuarios y disponibles para otros para construir y mejorar.\n\nSi no puede terminar sus ediciones de una vez, puede dejar la ventana del editor y volver (en el mismo navegador y computadora), y la aplicación del editor ofrecerá restaurar su trabajo.\n\n### Usando el editor\n\nPuede ver una lista de atajos de teclado presionando la tecla «?».\n", + "roads": "# Carreteras\n\nUsted puede crear, reparar y eliminar carreteras con este editor. Las carreteras pueden ser de todos los\ntipos: rutas, autovías, senderos, carriles bici y más - cualquier segmento cruzado a menudo\nel segmento debe ser mapeable.\n\n### Seleccionando\n\nClick en una carretera para seleccionar. Un esquema debe ser visible, junto\ncon una barra lateral mostrando más información sobre la carretera. Si hace click derecho\nen él, tendrá un menú de acciones que puede aplicar a la carretera.\n\n### Modificando\n\nA menudo verá carreteras que no están alineados con las imágenes detrás de ellos\no a un rastro GPS. Puede ajustar esas carreteras para que estén en el lugar\ncorrecto.\n\nPrimero clickee en la carretera que quiere cambiar. Esto la resaltará y mostrará\npuntos de control a lo largo de ella que puede arrastrar a mejores ubicaciones. Si\nquiere añadir nuevos puntos de control para más detalle, doble click en una parte\nde la carretera que no tenga nodo, y se añadido uno.\n\nSi la carretera conecta a otra carretera, pero no conecta apropiadamente con\nel mapa, puede arrastrar uno de sus puntos de control a la otra carretera para\nunirlas. Tener carreteras conectadas es importante para el mapa\ny esencial para proporcionar instrucciones de conducción.\n\nTambién puede hacer click derecho en ella y seleccionar la herramienta «Mover», o simplemente presionar\nla tecla de atajo «M», para mover toda la carretera al mismo tiempo, y luego hacer click\nde nuevo para guardar el movimiento.\n\n### Eliminando\n\nSi una carretera está completamente incorrecta - puede ver que no existe en las imágenes\nde satélitee y han confirmado localmente que no está presente - puede eliminarla\nlo que la borra del mapa. Tenga cuidado al eliminar elementos-\ncomo cualquier otra editar, los resultados son vistos por todos y las imágenes de satélite\na menudo están desactualizadas, por lo que la carretera podría simplemente ser de nueva construcción.\n\nPuede eliminar una carretera clickeando sobre ella para seleccionar, después presionar la tecla «Eliminar»\no haciendo click derecho sobre ella y luego hacer clic en el icono de la papelera.\n\n### Creando\n\n¿Ha encontrado en algún lugar en el que debería haber una carretera pero no hay? Clickee en el icono «Línea»\nen la esquina superior izquierda del editor o presione la tecla de acceso directo «2» para empezar a dibujar\nuna línea.\n\nClick al principio de la carretera en el mapa para empezar a dibujar. Si la carretera\nse ramifica desde una carretera existente, comience haciendo clic en el lugar donde se conectan.\n\nLuego haga clic en los puntos a lo largo de la carretera para que siga el camino correcto, de acuerdo\na la imagen de satélite o de GPS. Si la carretera que está atravesando atraviesa otra carretera, conéctela\nhaciendo clic en el punto de intersección. Cuando haya terminado de dibujar, doble click\no presione «Retorno» o «Intro» en su teclado.\n", "gps": "# GPS\n\nLas trazas de GPS recogidas son una valiosa fuente de datos para OpenStreetMap. Este\neditor soporta trazas locales - archivos `.gpx` en su equipo local. Usted puede obtener\neste tipo de traza GPS con una serie de aplicaciones de smartphone, como también con\nhardware GPS personal.\n\nPara más información sobre cómo realizar un relevamiento GPS, lea\n[Mapear con un smartphone, GPS, o papel](http://learnosm.org/es/mobile-mapping/).\n\nPara utilizar una traza GPX para mapear, arrastre y suelte el archivo GPX en el editor\nde mapa. Si este es reconocido, se añadirá al mapa como una línea púrpura brillante.\nHaga clic en el menú 'Datos del mapa' en el lado derecho para activar,\ndesactivar o acercar a esta nueva capa alimentada por GPX.\n\nLa traza GPX no se carga directamente a OpenStreetMap - la mejor manera de\nutilizarlo es dibujar en el mapa, usándolo como guía para las nuevos elementos que\nagregue, y también [subirlo a OpenStreetMap](http://www.openstreetmap.org/trace/create)\npara que otros usuarios lo utilicen.\n", "imagery": "# Imágenes\n\nLas imágenes aéreas son un importante recurso para mapear. Una combinación\nde vuelos aéreos, vistas de satélite, y compilaciones de fuentes libres están disponibles\nen el editor bajo el menú 'Ajustes del fondo' a la derecha.\n\nDe forma predeterminada se presenta la capa de satélite de [Bing Maps](http://www.bing.com/maps/) en el editor, pero mientras se mueva y acerque el mapa a nuevas áreas\ngeográficas, nuevas fuentes estarán disponibles. Algunos países, como los Estados\nUnidos, Francia, y Dinamarca poseen imágenes de muy alta calidad disponible\npara algunas áreas.\n\nLas imágenes a veces están desplazadas de los datos del mapa debido a un error en el\nlado del proveedor de imágenes. Si observa muchos caminos desplazados del fondo,\nno los mueva inmediatamente para emparejarlos con el fondo. En su lugar puede ajustar\nlas imágenes para que coincidan con los datos existentes haciendo clic\nen 'Corregir alineación' en la opción 'Ajustes del fondo' de la interfaz.\n", "addresses": "# Direcciones\n\nLas direcciones son parte de la información más útil que se puede añadir al mapa.\n\nAunque las direcciones se representan a menudo como parte de las calles, en OpenStreetMap esta información es guardada como atributos de los edificios y lugares presentes a lo largo de los viales.\n\nPuede agregar información sobre direcciones a lugares dibujados en el mapa como contornos de edificios, así como aquellos localizados únicamente con un punto. La fuente óptima para obtener datos de direcciones es la consulta sobre el terreno o el conocimiento personal. El uso de fuentes comerciales, como Google Maps, para obtener estos datos está estrictamente prohibido.\n", - "inspector": "# Usando el inspector\n\nEl inspector es la sección en la parte izquierda de la página que le permite\neditar los detalles del elemento seleccionado.\n\n## Selección de un tipo de elemento\n\nDespués de agregar un punto, línea o área, puede elegir qué tipo de elemento\nes, como si se trata de una carretera o camino residencial, supermercado o una cafetería.\nEl inspector mostrará botones para tipos de elementos comunes, y usted puede\nencontrar otros escribiendo lo que está buscando en el cuadro de búsqueda.\n\nHaga clic en la 'i' de la esquina inferior derecha de un botón de tipo de elemento\npara aprender más sobre él. Haga clic en un botón para elegir ese tipo.\n\n\n### Uso de formularios y edición de etiquetas\n\nDespués de elegir un tipo de elemento, o cuando se selecciona un elemento\nque ya tiene un tipo asignado, el inspector mostrará campos con detalles sobre\nel elemento como su nombre y dirección.\n\nDebajo de los campos que ve, puede hacer clic en el desplegable 'Añadir campo'\npara agregar otros detalles, como un enlace de Wikipedia, acceso en silla de ruedas, y más.\n\nEn la parte inferior del inspector, haga clic en 'Etiquetas adicionales' para agregar otras\netiquetas arbitrarias al elemento. [Taginfo](http://taginfo.openstreetmap.org/) es un\ngran recurso para aprender más acerca de las combinaciones de etiquetas populares.\n\nLos cambios que realice en el inspector se aplican automáticamente al mapa.\nPuede deshacerlos en cualquier momento haciendo clic en el botón 'Deshacer'.\n" + "inspector": "# Usando el inspector\n\nEl inspector es la sección en la parte izquierda de la página que le permite\neditar los detalles del elemento seleccionado.\n\n## Selección de un tipo de elemento\n\nDespués de agregar un punto, línea o área, puede elegir qué tipo de elemento\nes, como si se trata de una carretera o camino residencial, supermercado o una cafetería.\nEl inspector mostrará botones para tipos de elementos comunes, y usted puede\nencontrar otros escribiendo lo que está buscando en el cuadro de búsqueda.\n\nHaga clic en la 'i' de la esquina inferior derecha de un botón de tipo de elemento\npara aprender más sobre él. Haga clic en un botón para elegir ese tipo.\n\n\n### Uso de formularios y edición de etiquetas\n\nDespués de elegir un tipo de elemento, o cuando se selecciona un elemento\nque ya tiene un tipo asignado, el inspector mostrará campos con detalles sobre\nel elemento como su nombre y dirección.\n\nDebajo de los campos que ve, puede hacer clic en el desplegable 'Añadir campo'\npara agregar otros detalles, como un enlace de Wikipedia, acceso en silla de ruedas, y más.\n\nEn la parte inferior del inspector, haga clic en 'Etiquetas adicionales' para agregar otras\netiquetas arbitrarias al elemento. [Taginfo](http://taginfo.openstreetmap.org/) es un\ngran recurso para aprender más acerca de las combinaciones de etiquetas populares.\n\nLos cambios que realice en el inspector se aplican automáticamente al mapa.\nPuede deshacerlos en cualquier momento haciendo clic en el botón 'Deshacer'.\n", + "buildings": "# Edificios\n\nOpenStreetMap es la base de datos de edificios más grande del mundo. Usted puede crear\ny mejorar esta base de datos.\n\n### Seleccionando\n\nPuede seleccionar un edificio haciendo clic en su borde. Esto resaltará el\nedificio y cargará una barra lateral que muestra más información sobre el edificio.\nSi hace clic derecho en él, se mostrará un menú de acciones que puede ejecutar\nen el edificio.\n\n### Modificando\n\nA veces los edificios se colocan incorrectamente o tienen etiquetas incorrectas.\n\nPara mover un edificio entero, seleccionar y presione la tecla de acceso directo «M»,\no haga click derecho en él y seleccionar la herramienta «Mover». Mueva su\nratón para cambiar el edificio, y haga click cuando esté colocado correctamente.\n\nPara arreglar la forma específica de un edificio, haga clic y arrastre los nodos que forman\nsu borde enlugares mejores.\n\n### Creando\n\nUna de las preguntas principales sobre añadir edificios al mapa es que\nOpenStreetMap guarda edificios como formas y puntos. La regla de oro\nes _mapear un edificio como una forma cuando sea posible_, y mapear empresas, casas,\nservicios, y otras cosas que operan fuera de los edificios como puntos colocados\nen el interior de la forma del edificio.\n\nEmpiece dibujando un edificio como una forma pulsando el botón «Área» arriba\na la izquierda de la interfaz, y termínelo pulsando «Retorno» en su teclado\no haciendo clic en el primer nodo dibujado para cerrar la forma.\n\n### Eliminando\n\nSi un edificio está completamente incorrecto - puede ver que no existe en la imagen de satélite\ne idealmente han confirmado localmente que no está presente - puede eliminarlo\nlo que lo borra del mapa. Tenga cuidado al eliminar elementos-\ncomo cualquier otra editar, los resultados son vistos por todos y la imagen de satélite\na menudo está desactualizado, por lo que el edificio podría simplemente ser de nueva construcción.\n\nPuede eliminar un edificio haciendo click en él para seleccionar, después presionar la tecla «Suprimir»,\no haciendo clic derecho sobre él y luego haciendo clic en el ícono de papelera.\n", + "relations": "# Relaciones\n\nUna relación es un tipo de elemento especial de OpenStreetMap que agrupa\na otros elementos. Por ejemplo, dos tipos comunes de relaciones son *relaciones de ruta*,\nque agrupan secciones de la carretera que pertenecen a una autopista específica o\nautovía , y *multipolígonos*, que agrupan varias líneas que definen\nun área compleja (uno con varias piezas o agujeros como una rosquilla).\n\nEl grupo de elementos en una relación se llaman *miembros*. En la parte inferior de la\nbarra lateral, puede ver a qué relaciones es miembro un elemento y hacer clic en una\nrelación allí lo seleccionará. Cuando la relación está seleccionar, puede ver a todos\nsus miembros enumerados en la barra lateral y resaltados en el mapa.\n\nEn la mayor parte, la iD se ocupará de mantener las relaciones automáticamente\nmientras usted editar. Lo principal que debe tener en cuenta es que si elimina una\nsección de carretera para volver a dibujarla con mayor precisión, debería asegurarse de que la\nnueva sección es un miembro de las mismas relaciones que el original.\n\n## Editando Relaciones\n\nSi quiere editar relaciones, aquí están los básicos.\n\nPara añadir un elemento a una relación, seleccionar el elemento, click en el botón «+» en la\nsección «Todas las relaciones» de la barra lateral, y seleccionar o tipo el nombre de la relación.\n\nPara crear una nueva relación, seleccionar el primer elemento que debería ser un miembro,\nclick en el botón «+» en la sección «Todas las relaciones», y seleccionar «Nueva relación...».\n\nPara eliminar un elemento de una relación, seleccionar el elemento y haga click en el botón papelera\njunto a la relación de la que quiere eliminarlo.\n\nPuede crear multipolígonos con agujeros usando la herramienta «Mezclar». Dibuje dos áreas (interior\ny exterior), mantenga la tecla Shift y click en cada uno de ellas para seleccionar ambas, y luego\npresione la tecla de acceso directo «C». Otra opción es seleccionar ambas, y luego hacer click derecho en una\nde ellas y hacer click en el botón «Mezclar» (+).\n" }, "intro": { "done": "listo", @@ -1213,6 +1226,9 @@ "aeroway": { "label": "Tipo" }, + "agrarian": { + "label": "Productos" + }, "amenity": { "label": "Tipo" }, @@ -1261,7 +1277,7 @@ "label": "Tipo de tienda" }, "bench": { - "label": "Banco" + "label": "Banco / Asiento" }, "bicycle_parking": { "label": "Tipo" @@ -1281,6 +1297,9 @@ "board_type": { "label": "Tipo" }, + "boules": { + "label": "Tipo" + }, "boundary": { "label": "Tipo" }, @@ -1300,6 +1319,10 @@ "bunker_type": { "label": "Tipo" }, + "cables": { + "label": "Cables", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Dirección (grados en sentido horario)", "placeholder": "45, 90, 180, 270" @@ -1385,6 +1408,14 @@ "craft": { "label": "Tipo" }, + "crane/type": { + "label": "Tipo de grúa", + "options": { + "floor-mounted_crane": "Grúa fija al suelo", + "portal_crane": "Grúa portal", + "travel_lift": "Ascensor de viaje" + } + }, "crop": { "label": "Cultivo" }, @@ -1457,6 +1488,10 @@ "description": { "label": "Descripción" }, + "devices": { + "label": "Dispositivos", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Cambiador de pañales disponible" }, @@ -1531,6 +1566,9 @@ "wall": "Pared" } }, + "fitness_station": { + "label": "Tipo de equipo" + }, "fixme": { "label": "Arréglame" }, @@ -1538,6 +1576,9 @@ "label": "Tipo", "placeholder": "Predeterminado" }, + "frequency": { + "label": "Frecuencia de operación" + }, "fuel": { "label": "Combustible" }, @@ -1580,6 +1621,7 @@ "label": "Pasamanos" }, "hashtags": { + "label": "Hashtags sugeridos", "placeholder": "#ejemplo" }, "healthcare": { @@ -1895,6 +1937,10 @@ "payment_multi": { "label": "Formas de pago" }, + "phases": { + "label": "Fases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Teléfono", "placeholder": "+31 42 123 4567" @@ -1974,6 +2020,9 @@ "railway": { "label": "Tipo" }, + "rating": { + "label": "Potencia nominal" + }, "recycling_accepts": { "label": "Acepta" }, @@ -2182,6 +2231,9 @@ "studio": { "label": "Tipo" }, + "substance": { + "label": "Sustancia" + }, "substation": { "label": "Tipo" }, @@ -2208,6 +2260,15 @@ "surveillance/zone": { "label": "Zona de vigilancia" }, + "switch": { + "label": "Tipo", + "options": { + "circuit_breaker": "Cortacircuitos", + "disconnector": "Desconector", + "earthing": "Toma de tierra", + "mechanical": "Mecánico" + } + }, "tactile_paving": { "label": "Pavimento táctil" }, @@ -2259,6 +2320,9 @@ }, "placeholder": "Sólido, mayormente sólido, suave..." }, + "trade": { + "label": "Tipo" + }, "traffic_calming": { "label": "Tipo" }, @@ -2277,6 +2341,19 @@ }, "placeholder": "Excelente, bueno, malo..." }, + "transformer": { + "label": "Tipo", + "options": { + "auto": "Autotransformador", + "auxiliary": "Auxiliar", + "converter": "Convertidor", + "distribution": "Distribución", + "generator": "Generador", + "phase_angle_regulator": "Regulador de ángulo de fase", + "traction": "Tracción", + "yes": "Desconocido" + } + }, "trees": { "label": "Árboles" }, @@ -2311,6 +2388,18 @@ "stratovolcano": "Estratovolcán" } }, + "voltage": { + "label": "Voltaje" + }, + "voltage/primary": { + "label": "Voltaje primario" + }, + "voltage/secondary": { + "label": "Voltaje secundario" + }, + "voltage/tertiary": { + "label": "Voltaje terciario" + }, "wall": { "label": "Tipo" }, @@ -2338,6 +2427,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Serpenteante", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuración de devanados", + "options": { + "delta": "Delta", + "leblanc": "Leblanc", + "open": "Abierto", + "open-delta": "Delta abierto", + "scott": "Scott", + "star": "Estrella / Wye", + "zigzag": "Zig Zag" + } } }, "presets": { @@ -2471,7 +2576,7 @@ "terms": "barbacoa, asador, parrilla, churrasquería" }, "amenity/bench": { - "name": "Banco", + "name": "Banco / Asiento", "terms": "asiento,banco,banquillo,banqueta,banca" }, "amenity/bicycle_parking": { @@ -2540,7 +2645,7 @@ }, "amenity/clinic/abortion": { "name": "Clínica de aborto", - "terms": "Clínica de aborto, clinica de aborto, aborto" + "terms": "aborto, embarazo, interrupción embarazo, clínica de aborto" }, "amenity/clinic/fertility": { "name": "Clínica de fertilidad", @@ -2661,6 +2766,10 @@ "name": "Aparcamiento de motocicletas", "terms": "motocicleta, moto, aparcamiento, parking, estacionamiento, parqueadero, parqueo, parqueadero de motocicletas, estacionamiento de motocicletas, parqueo de motocicletas" }, + "amenity/music_school": { + "name": "Conservatorio", + "terms": "conservatorio, escuela de música, música, musica, instrumentos, profesor" + }, "amenity/nightclub": { "name": "Discoteca", "terms": "discoteca, club nocturno, boliche" @@ -2784,8 +2893,7 @@ "terms": "terreno, área, suelo, recinto escolar, escolar, escuela, colegio, centro educativo, unidad educativa, primaria, secundaria, secundario, instituto, institución educativa" }, "amenity/scrapyard": { - "name": "Depósito de chatarra", - "terms": "auto, automóvil, coche, carro, vehículo, basura, metal, objetos salvados, chatarra, naufragio, desguace, depósito, almacén, triturador, reciclaje, desguace, deshuesadero, chivera, yonke, junker" + "name": "Depósito de chatarra" }, "amenity/shelter": { "name": "Refugio", @@ -3249,6 +3357,10 @@ "name": "Relojero", "terms": "relojero, reloj, relojería" }, + "craft/confectionery": { + "name": "Confitería", + "terms": "confitería, confiteria, confitero" + }, "craft/distillery": { "name": "Destilería", "terms": "alcohol, bebida, bourbon, licor, brandy, ginebra, hooch, mezcal, moonshine, ron, scotch, escocés, bebidas espirituosas, tequila, vodka, whiskey, whisky, pisco, aguardiente, gin, singani" @@ -3350,9 +3462,9 @@ "name": "Andamista", "terms": "Andamio, monta andamios" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Escultor", - "terms": "escultor, artista, cincelador, imaginero, tallista, modelista" + "terms": "Escultor, artista " }, "craft/shoemaker": { "name": "Zapatero", @@ -3362,10 +3474,6 @@ "name": "Albañil", "terms": "Albañil, Cantero, Enconfrador" }, - "craft/sweep": { - "name": "Deshollinador", - "terms": "deshollinador, limpiachimeneas, chimenea" - }, "craft/tailor": { "name": "Sastre" }, @@ -3634,9 +3742,13 @@ "name": "Sendero", "terms": "vereda, sendero, senda, camino, vía, ramal, trocha, atajo, travesía, huella, rastro" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "name": "Área peatonal", + "terms": "área, area, centro, plaza, pasarela, peatón, peaton, peatonal" + }, + "highway/pedestrian_line": { "name": "Calle peatonal", - "terms": "calle, peatón, peatonal, alameda peatonal" + "terms": "peatón, peaton, peatonal, pasarela" }, "highway/primary": { "name": "Carretera primaria", @@ -3814,6 +3926,10 @@ "name": "Cuenca", "terms": "cuenca, área con agua" }, + "landuse/brownfield": { + "name": "Terreno industrial abandonado", + "terms": "terreno, industrial, solar, descampado, tierra, baldío, baldio, abandonada, abandonado" + }, "landuse/cemetery": { "name": "Cementerio", "terms": "cementerio, necrópolis, muerte, panteón, ataúdes, criptas, féretros, mausoleos" @@ -3853,6 +3969,10 @@ "name": "Césped", "terms": "pasto, hierba, césped, grama, zacate, franjas de separación, césped de parque" }, + "landuse/greenfield": { + "name": "Terreno en campo sin edificar", + "terms": "terreno, campo, urbanizable, construir, construcción" + }, "landuse/harbour": { "name": "Puerto", "terms": "puerto, portuario, barco, embarcaciones" @@ -3861,6 +3981,14 @@ "name": "Área industrial", "terms": "área industrial, parque industrial, industria, fábrica, área industrial, terreno industrial" }, + "landuse/industrial/scrap_yard": { + "name": "Depósito de chatarra", + "terms": "chatarra, coche, auto, vehículo, basura, metal, chatarra, naufragio, patio" + }, + "landuse/industrial/slaughterhouse": { + "name": "Matadero", + "terms": "matadero, carne, carnicería, becerro, pollo, vaca, cerdo, aves de corral, corral" + }, "landuse/landfill": { "name": "Relleno sanitario", "terms": "relleno sanitario, relleno municipal, vertedero de basura, desperdicio, basurales, vertederos, tiraderos, basureros" @@ -3937,6 +4065,10 @@ "name": "Parque de recreación", "terms": "recreación, diversión, zona verde, patio, terreno de juegos, juegos, área de recreación" }, + "landuse/religious": { + "name": "Área Religiosa", + "terms": "terreno, religioso, religión, religion" + }, "landuse/residential": { "name": "Área residencial", "terms": "área residencial, zona residencial, zona urbana, mancha urbana, urbanización, condominio" @@ -3993,6 +4125,50 @@ "name": "Estación de gimnasia al aire libre", "terms": "salud, gimnasio, entrenamiento, ejercicio, abierto, al aire libre, aeróbico" }, + "leisure/fitness_station/balance_beam": { + "name": "Barra de equilibrio para ejercicios", + "terms": "barra de equilibrio, equilibrio, tronco, ejercicios" + }, + "leisure/fitness_station/box": { + "name": "Cajón para ejercicio", + "terms": "cajón, cajon, caja, ejercicio, gimnasio, salto, saltar" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Barra horizontal para ejercicio", + "terms": "barra, mentón, barbilla, ejercicio, gimnasio, pullup, pull up, dorsalera, dorsales" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "barras trepadoras para ejercicio", + "terms": "barra, mentón, barbilla, ejercicio, gimnasio, escalera, barras de mono, mono, trapadoras, treparse, pullup, pull up" + }, + "leisure/fitness_station/hyperextension": { + "name": "Estación de hiperextensión", + "terms": "espalda, ejercicio, extensión, gimnasio, silla romana" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barras paralelas", + "terms": "barra, ejercicio, gimnasio" + }, + "leisure/fitness_station/push-up": { + "name": "Estación para flexión de brazos", + "terms": "barra, ejercicio, gimnasio, flexiones, brazos" + }, + "leisure/fitness_station/rings": { + "name": "Anillos para ejercicio", + "terms": "ejercicio, gimnasio, musculación, musculacion, pullup, pull up" + }, + "leisure/fitness_station/sign": { + "name": "Cartel de instrucciones de ejercicio", + "terms": "ejercicio, gimnasio, cartel, señal, instrucciones" + }, + "leisure/fitness_station/sit-up": { + "name": "Estación de abdominales", + "terms": "ejercicio, gimnasio, abdominales" + }, + "leisure/fitness_station/stairs": { + "name": "Escaleras para ejercicio", + "terms": "ejercicio, gimnasio, step, escaleras" + }, "leisure/garden": { "name": "Jardín", "terms": "parque, parterre, vergel, floresta, huerto, rosaleda, jardín" @@ -4053,6 +4229,10 @@ "name": "Cancha de voleibol de playa", "terms": "voleibol, volibol, balonvolea, voley, pelota, arena, playa, playero, mar" }, + "leisure/pitch/boules": { + "name": "Cancha de bolos / bochas", + "terms": "bolera, bochas, bolos, cancha" + }, "leisure/pitch/bowls": { "name": "Campo de bolos", "terms": "bolos" @@ -4105,6 +4285,10 @@ "name": "Pista de carrera (atletismo)", "terms": "pista, circuito, carrera, atletismo, caminata, correr" }, + "leisure/sauna": { + "name": "Sauna", + "terms": "baño de vapor, baño turco, vapor, turco" + }, "leisure/slipway": { "name": "Rampa para botes", "terms": "Grada, rampa, rampa para botes" @@ -4157,6 +4341,10 @@ "name": "Chimenea", "terms": "chimenea, fogón, fuego" }, + "man_made/crane": { + "name": "Grúa", + "terms": "elevadora, cabria, cabrestante, trucha, pluma" + }, "man_made/cutline": { "name": "Línea de corte forestal", "terms": "cortafuegos, cortafuegos forestal, línea de corte, linea de corte" @@ -4385,16 +4573,32 @@ "terms": "oficina, despacho, trabajo, salón" }, "office/accountant": { - "name": "Contador", - "terms": "contable, contador, contadora, contabilidad" + "name": "Oficina de contador", + "terms": "contador, contadora, contable" }, "office/administrative": { "name": "Oficina administrativa", "terms": "oficina administrativa, oficina de administración, administrativo, gestoría, asesoría" }, + "office/adoption_agency": { + "name": "Agencia de adopción", + "terms": "adopción, adopcion, bebes, niños" + }, + "office/advertising_agency": { + "name": "Agencia de publicidad", + "terms": "anuncio, agencia de publicidad, agencia publicitaria, publicidad, marketing" + }, "office/architect": { - "name": "Arquitecto", - "terms": "arquitecto, arquitectos, arquitecta, urbanista" + "name": "Oficina de arquitecto", + "terms": "arquitecto, arquitectos, arquitecta, urbanista, arquitectura" + }, + "office/association": { + "name": "Oficina de organización sin fines de lucro", + "terms": "organización sin ánimo de lucro, OSAL, organización sin fines de lucro, OSFL, organización no lucrativa, ONL, entidad sin ánimo de lucro, ESAL" + }, + "office/charity": { + "name": "Oficina de beneficencia", + "terms": "caridad, beneficencia" }, "office/company": { "name": "Oficina de empresa", @@ -4405,13 +4609,17 @@ "terms": "trabajo, oficina, coworking, cotrabajo, cooperativo, cooperación" }, "office/educational_institution": { - "name": "Institución educativa", - "terms": "institución educacional, institución educacional, institución de enseñanza, institución docente, centro de enseñanza, institución escolar, centro docente, centro educativo, institución académica" + "name": "Oficina de institución educativa", + "terms": "oficina, institución, educacional, enseñanza, docente, escolar, centro docente, centro educativo, académica" }, "office/employment_agency": { "name": "Agencia de empleo", "terms": "empleo, desempleo, colocación, trabajo, ocupación, desocupación, INEM, agencia de colocación, oficina de empleo, agencia de trabajo, agencia de contratación" }, + "office/energy_supplier": { + "name": "Oficina de proveedor de energía", + "terms": "electricidad,energía,empresa de energía" + }, "office/estate_agent": { "name": "Inmobiliaria", "terms": "bienes raíces, inmobiliaria, inmueble, oficina" @@ -4420,6 +4628,14 @@ "name": "Financiera", "terms": "financiera, financiero, bancario" }, + "office/forestry": { + "name": "Oficina forestal", + "terms": "bosque, parque, guardabosques, guardaparques" + }, + "office/foundation": { + "name": "Oficina de fundación", + "terms": "fundación, fundacion" + }, "office/government": { "name": "Oficina de gobierno", "terms": "Oficina gubernamental, oficina del gobierno" @@ -4428,13 +4644,21 @@ "name": "Registro civil", "terms": "identificación, documento identidad, cédula identidad, nacimiento, defunsión, estado civil, registro personas, dirección registro, dirección nacional registro, servicio identificación" }, + "office/government/tax": { + "name": "Oficina de impuestos y rentas", + "terms": "autoridades fiscales, ingresos, impuestos, rentas, AFIP, AGIP, ARBA, DGR" + }, + "office/guide": { + "name": "Oficina de turismo", + "terms": "turismo, guía de buceo, guía de montaña, guía de turismo" + }, "office/insurance": { "name": "Aseguradora", "terms": "aseguradora, seguro, oficina de seguros" }, "office/it": { - "name": "Oficina de informática", - "terms": "Oficina de IT, oficina de TI, oficina de informáticos, oficina de tecnologías de información, IT, TI, tecnologías" + "name": "Oficina de Tecnología de la Información", + "terms": "computadora, información, software, tecnología, tecnologia, informática, informatica" }, "office/lawyer": { "name": "Despacho de abogados", @@ -4444,14 +4668,22 @@ "name": "Notaría", "terms": "notaría pública, notario público, asistente de notario, escribano, notariado, notarial, testamento, firma, escritura, inmueble, protocolo notario" }, + "office/moving_company": { + "name": "Oficina de mudanzas", + "terms": "reubicación, mudanza, flete" + }, "office/newspaper": { - "name": "Periódico", + "name": "Oficina de periódicos", "terms": "periódico, diario, semanario, revista" }, "office/ngo": { "name": "ONG", "terms": "ONG, organización no gubernamental, Oficina de la ONG" }, + "office/notary": { + "name": "Escribanía / Notaría", + "terms": "notario, notaría, notaria, escribano, escribanía, escribania" + }, "office/physician": { "name": "Médico" }, @@ -4459,21 +4691,41 @@ "name": "Partido político", "terms": "Partido político, formación política, grupo político" }, + "office/private_investigator": { + "name": "Oficina de investigador privado", + "terms": "investigador privado, detective privado," + }, + "office/quango": { + "name": "Oficina ONG cuasiautónoma", + "terms": "ONG, no gubernamentales, organización, cuasi autónoma, cuasiautónoma" + }, "office/research": { "name": "Oficina de investigación", "terms": "oficina, despacho, laboratorio, departamento, centro, investigación" }, + "office/surveyor": { + "name": "Oficina de agrimensor", + "terms": "agrimensor, agrimensora, topógrafo, topografo, topógrafa, topografa, oficina" + }, + "office/tax_advisor": { + "name": "Oficina de asesor impositivo", + "terms": "asesor impositivo, asesor tributario, asesor impositivo, asesor en asuntos contributivos, asesor de impuestos, consejero de impuestos, asesora fiscal, asesora tributaria, asesora de impuestos, consejero fiscal, asesora impositiva, consejera de impuestos, asesora en asuntos contributivos, impuestos, impositivo, contributivo, fiscal, tributoria, oficina" + }, "office/telecommunication": { "name": "Oficina de telecomunicaciones", "terms": "Oficina de telecomunicaciones, telecomunicaciones, telefónica" }, "office/therapist": { - "name": "Terapeuta", - "terms": "Terapeuta, psicólogo" + "name": "Oficina de terapeuta", + "terms": "terapia, terapeuta, fisioterapia" }, "office/travel_agent": { "name": "Agencia de viajes" }, + "office/water_utility": { + "name": "Oficina de servicios públicos de agua", + "terms": "servicio público, servicio publico, agua, saneamiento" + }, "piste": { "name": "Pista/Sendero de ski", "terms": "Pista de esquí" @@ -4496,6 +4748,10 @@ "name": "Isla", "terms": "isla" }, + "place/islet": { + "name": "Islote", + "terms": "archipiélago, atolón, cayo, isla, islote, arrecife" + }, "place/isolated_dwelling": { "name": "Vivienda aislada", "terms": "Viviendas aisladas" @@ -4508,6 +4764,10 @@ "name": "Barrio / Vecindario", "terms": "barrio, vecindario, vecindad, urbanización, colonia" }, + "place/plot": { + "name": "Parcela", + "terms": "parcela, terreno, solar, lote" + }, "place/quarter": { "name": "Sub-municipio / Barrio - Quarter", "terms": "submunicipio, subdistrito, sector, cuadrante, delegación, localidad, barrio, vecindario, quarter" @@ -4529,8 +4789,8 @@ "terms": "población, aldea, pueblo, poblado" }, "playground/balance_beam": { - "name": "Barra de equilibrio", - "terms": "barra de equilibrio, equilibrio, tronco" + "name": "Barra de equilibrio para juegos", + "terms": "barra de equilibrio, equilibrio, tronco, juegos" }, "playground/basket_spinner": { "name": "Cesta giratoria", @@ -4549,8 +4809,8 @@ "terms": "Colchón inflable, rebotar, saltar, salto, amortiguar, cojín, cojin" }, "playground/horizontal_bar": { - "name": "Barra fija", - "terms": "Barra fija, horizonal, dolsalera, barra alta" + "name": "Barra horizontal para juegos", + "terms": "Barra fija, horizonal, dolsalera, barra alta, juegos" }, "playground/rocker": { "name": "Mecedor elástico", @@ -4626,6 +4886,10 @@ "name": "Subestación eléctrica", "terms": "Subestación, subestaciones" }, + "power/switch": { + "name": "Interruptor de alimentación", + "terms": "interruptor de encendido, botón de alimentación, interruptor de red, botón de encendido, interruptor de corriente, encendido, alimentación, alimentacion, red, corriente" + }, "power/tower": { "name": "Torre de alta tensión", "terms": "Torre de alto voltaje, torres de alta tensión, torre de electricidad" @@ -4744,6 +5008,10 @@ "name": "Tienda", "terms": "negocio, tienda, bazar, bodega, comercio, local" }, + "shop/agrarian": { + "name": "Tienda de agricultura", + "terms": "" + }, "shop/alcohol": { "name": "Licorería", "terms": "licor, trago, bebida, alcohol, licorería, tienda de licores, almacén de licores" @@ -4885,8 +5153,8 @@ "terms": "cosmético, cosméticos, cosmética, belleza, estética, cuidado personal, perfumería" }, "shop/craft": { - "name": "Tienda de artesanías", - "terms": "arte, pintura, oficio, artesanía, manualidades, tienda de artesanías" + "name": "Tienda artística / artículos para arte y artesanía", + "terms": "arte, pintura, oficio, artesanía, manualidades, artículos, articulos" }, "shop/curtain": { "name": "Tienda de cortinas", @@ -5166,6 +5434,10 @@ "name": "Venta de boletos", "terms": "ticket, boleto, billete, entrada, venta" }, + "shop/tiles": { + "name": "Tienda de azulejos", + "terms": "azulejos, azulejos, baldosas, tejas, teselas" + }, "shop/tobacco": { "name": "Tienda de tabaco", "terms": "tabaquería, tienda de tabacos, tabaco, cigarillos, cigarros, puros, expendeduría, quiosco, kiosko" @@ -5174,6 +5446,10 @@ "name": "Juguetería", "terms": "juguetes, juego, juguetería, tienda de juguetes" }, + "shop/trade": { + "name": "Tienda de comercio / Corralón", + "terms": "comercio, corralón, corralon, materiales, contrucción, construccion, madera, cemento, ladrillos" + }, "shop/travel_agency": { "name": "Agencia de viajes", "terms": "agencia de viajes, agencia de turismo, viajes, turismo" @@ -5226,8 +5502,8 @@ "terms": "turismo" }, "tourism/alpine_hut": { - "name": "Cabaña alpina", - "terms": "Refugio de montaña, refugio alpino, refugio, cabaña, choza, caseta, chabola, cabina, cobertizo" + "name": "Refugio de montaña", + "terms": "refugio, abrigo, vivac, choza, cabaña, refugio de montaña, refugio alpino, refugio andino" }, "tourism/apartment": { "name": "Apartamento de huéspedes", @@ -5254,8 +5530,8 @@ "terms": "caravana, remolque, autocaravana, roulotte" }, "tourism/chalet": { - "name": "Cabaña", - "terms": "chalet, chalé" + "name": "Cabaña de vacaciones", + "terms": "chalet, bungalow, bungaló, bungalo, turismo, cabaña, complejo de cabañas, vacacional, turístico, turistico, turismo" }, "tourism/gallery": { "name": "Galería de arte", @@ -5313,6 +5589,10 @@ "name": "Vista panorámica / Mirador", "terms": "oteadero, punto de vista, mirador, vistas, vista panorámica, perspectiva" }, + "tourism/wilderness_hut": { + "name": "Refugio de paraje natural", + "terms": "refugio, abrigo, vivac, choza, cabaña, paraje natural, lugar natural, campo abierto, cabaña sencilla, refugio sin alquiler, alojamiento temporal" + }, "tourism/zoo": { "name": "Zoológico", "terms": "zoo, zoológico " @@ -5545,6 +5825,13 @@ "description": "Imagen de satélite Premium de DigitalGlobe.", "name": "Imágenes aéreas DigitalGlobe Premium" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Términos y Observaciones" + }, + "description": "Límites de imágenes y fechas de captura. Las etiquetas aparecen en el nivel de zoom 14 y superior.", + "name": "Galería Antigua Premium de DigitalGlobe" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Términos y comentarios" @@ -5552,6 +5839,13 @@ "description": "Imagen de satélite Standard de DigitalGlobe.", "name": "Imágenes aéreas DigitalGlobe Standard" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Términos y Observaciones" + }, + "description": "Límites de galerías y fechas de captura. Las etiquetas aparecen en el nivel de zoom 14 y superior.", + "name": "Galería Antigua Estándar de DigitalGlobe" + }, "EsriWorldImagery": { "attribution": { "text": "Términos y comentarios" @@ -5619,11 +5913,11 @@ "name": "Carreteras TIGER 2012" }, "US-TIGER-Roads-2014": { - "description": "En nivel de zoom +16, datos de mapa de dominio público desde el US Census. En zooms inferiores, sólo cambios desde 2006 menos los cambios ya incorporados en OpenStreetMap", + "description": "En nivel de acercamiento +16, datos del mapa de dominio público desde el US Census. En acercamientos inferiores, sólo cambios desde 2006 menos los cambios ya incorporados en OpenStreetMap", "name": "Carreteras TIGER 2014" }, "US-TIGER-Roads-2017": { - "description": "Amarillo = Datos de mapa de dominio público desde el US Census. Rojo = Datos no encontrados en OpenStreetMap", + "description": "Amarillo = Datos del mapa de dominio público desde el US Census. Rojo = Datos no encontrados en OpenStreetMap", "name": "Carreteras TIGER 2017" }, "Waymarked_Trails-Cycling": { diff --git a/dist/locales/et.json b/dist/locales/et.json index 70aee77b3..e4b7df93a 100644 --- a/dist/locales/et.json +++ b/dist/locales/et.json @@ -117,6 +117,10 @@ "single": "Seda objekti ei saa kustutada, sest piisavalt suur osa sellest pole praegu nähtaval.", "multiple": "Neid objekte ei saa kustutada, sest piisavalt suur osa neist pole praegu nähtaval." }, + "incomplete_relation": { + "single": "Seda objekti ei saa kustutada, kuna see ei ole veel täielikult alla laaditud.", + "multiple": "Neid objekte ei saa kustutada, kuna need ei ole veel täielikult alla laaditud." + }, "part_of_relation": { "single": "Objekti ei saa kustutada, sest see on osa suuremast relatsioonist. Pead kõigepealt selle relatsioonist eemaldama.", "multiple": "Objekte ei saa kustutada, sest need on osa suurematest relatsioonidest. Pead kõigepealt need relatsioonidest eemaldama." @@ -207,6 +211,10 @@ "multiple": "Objektid peegeldatud lühkest telge pidi." } }, + "incomplete_relation": { + "single": "Seda objekti ei saa peegeldada, kuna see ei ole veel täielikult alla laaditud.", + "multiple": "Neid objekte ei saa peegeldada, kuna need ei ole veel täielikult alla laaditud." + }, "too_large": { "single": "Seda objekti ei saa peegeldada, sest piisavalt suur osa sellest pole praegu nähtaval.", "multiple": "Neid objekte ei saa peegeldada, sest piisavalt suur osa neist pole praegu nähtaval." @@ -224,6 +232,10 @@ "area": "Pööratud ala.", "multiple": "Pööratud mitut objekti." }, + "incomplete_relation": { + "single": "Seda objekti ei saa pöörata, kuna see ei ole veel täielikult alla laaditud.", + "multiple": "Neid objekte ei saa pöörata, kuna need ei ole veel täielikult alla laaditud." + }, "too_large": { "single": "Seda objekti ei saa pöörata, sest piisavalt suur osa sellest pole praegu nähtaval.", "multiple": "Neid objekte ei saa pöörata, sest piisavalt suur osa neist pole praegu nähtaval." @@ -277,7 +289,6 @@ "localized_translation_language": "Vali keel", "localized_translation_name": "Nimi" }, - "zoom_in_edit": "Muutmiseks suumi sisse", "login": "Logi sisse", "logout": "Logi välja", "loading_auth": "OpenStreetMapiga ühendamine...", @@ -295,6 +306,7 @@ "save": "Laadi üles", "cancel": "Loobu", "changes": "{count} muudatust", + "download_changes": "Laadi alla osmChange-fail", "warnings": "Hoiatused", "modified": "Muudetud", "deleted": "Kustutatud", @@ -306,6 +318,22 @@ "list": "Muutjad: {users}", "truncated_list": "Muutjad: {users} ja {count} teist" }, + "info_panels": { + "background": { + "source": "Allikas", + "description": "Kirjeldus", + "resolution": "Resolutsioon", + "accuracy": "Täpsus" + }, + "history": { + "title": "Ajalugu", + "version": "Versioon", + "last_edit": "Viimane muudatus", + "edited_by": "Muutis", + "changeset": "Muudatuskogum", + "unknown": "Teadmata" + } + }, "geometry": { "point": "punkt", "vertex": "tipp", @@ -383,9 +411,16 @@ "title": "Kaardi andmed", "description": "Kaardi andmed", "data_layers": "Andmekihid", + "layers": { + "osm": { + "tooltip": "Kaardiandmed OpenStreetMapist", + "title": "OpenStreetMapi andmed" + } + }, "fill_area": "Täida alad", "map_features": "Kaardikuva", - "autohidden": "Need objektid on automaatselt peidetud, sest neid oleks ekraanil liiga palju. Suumi sisse, et neid muuta." + "autohidden": "Need objektid on automaatselt peidetud, sest neid oleks ekraanil liiga palju. Suumi sisse, et neid muuta.", + "osmhidden": "Need objektid on automaatselt peidetud, sest OpenStreetMapi kiht on peidetud." }, "feature": { "points": { @@ -475,6 +510,7 @@ "keep_remote": "Kasuta tema oma", "restore": "Taasta", "delete": "Jäta kustutatuna", + "download_changes": "Või laadi alla osmChange-fail", "done": "Kõik konfliktid lahendatud!", "help": "Teine kasutaja muutis kaardil mõnd objekti, mida sinagi muutsid.\nKlõpsa allpool igal objektil, et näha konflikti üksikasju ja et valida, kas säilitada\nenda muudatused või teise kasutaja muudatused.\n" } @@ -504,8 +540,7 @@ "splash": { "welcome": "Tere tulemast OpenStreetMapi redaktorisse iD", "text": "iD on kasutajasõbralik ja samas võimas töövahend parima vaba maailmakaardi täiendamiseks. See on versioon {version}. Rohkem infot võib leida veebilehelt {website} ja vigadest saab teatada lehel {github}.", - "walkthrough": "Alusta tutvustust", - "start": "Alusta muutmist" + "walkthrough": "Alusta tutvustust" }, "source_switch": { "live": "live", @@ -528,10 +563,6 @@ "tag_suggests_area": "Silt {tag} viitab, et joon peaks olema ala, kuid see pole ala.", "deprecated_tags": "Iganenud sildid: {tags}" }, - "zoom": { - "in": "Suurenda vaadet", - "out": "Vähenda vaadet" - }, "cannot_zoom": "Ei ole võimalik rohkem välja suumida selles vaates.", "full_screen": "Lülita täisekraanile", "gpx": { @@ -912,6 +943,12 @@ "handrail": { "label": "Käsipuu" }, + "hashtags": { + "label": "Soovitatud trellsildid" + }, + "healthcare/speciality": { + "label": "Erialad" + }, "iata": { "label": "IATA" }, @@ -1160,6 +1197,9 @@ "social_facility": { "label": "Tüüp" }, + "source": { + "label": "Allikad" + }, "stop": { "label": "Tüüp", "options": { @@ -1177,6 +1217,11 @@ "tunnel": "Tunnel" } }, + "structure_waterway": { + "options": { + "tunnel": "Tunnel" + } + }, "studio": { "label": "Tüüp" }, @@ -1195,6 +1240,9 @@ "toll": { "label": "Maksustatud" }, + "tourism_attraction": { + "label": "Turism" + }, "tracktype": { "label": "Raja tüüp", "options": { @@ -1354,6 +1402,12 @@ "amenity/clinic": { "name": "Kliinik" }, + "amenity/clinic/abortion": { + "name": "Abordikliinik" + }, + "amenity/clinic/fertility": { + "name": "Viljakuskliinik" + }, "amenity/clock": { "name": "Kell", "terms": "seinakell" @@ -1609,6 +1663,15 @@ "area/highway": { "name": "Teekate" }, + "attraction/amusement_ride": { + "name": "Lõbuatraktsioon" + }, + "attraction/animal": { + "name": "Loom" + }, + "attraction/big_wheel": { + "name": "Vaateratas" + }, "barrier": { "name": "Barjäär", "terms": "tõke,takistus,blokeering,läbisõidupiirang" @@ -1913,18 +1976,12 @@ "craft/sawmill": { "name": "Saekaater" }, - "craft/sculpter": { - "name": "Skulptor" - }, "craft/shoemaker": { "name": "Kingsepp" }, "craft/stonemason": { "name": "Kiviraidur" }, - "craft/sweep": { - "name": "Korstnapühkija" - }, "craft/tailor": { "name": "Rätsep" }, @@ -1968,8 +2025,15 @@ "footway/crossing": { "name": "Ülekäik" }, + "footway/crossing-raised": { + "name": "Tõstetud ülekäik", + "terms": "lame,künnis,aeglusti" + }, "footway/crosswalk": { - "name": "Jalakäijate ülekäik" + "name": "Ülekäigurada" + }, + "footway/crosswalk-raised": { + "name": "Tõstetud ülekäigurada" }, "footway/sidewalk": { "name": "Kõnnitee" @@ -1978,10 +2042,33 @@ "name": "Koolmekoht", "terms": "Koole" }, + "healthcare": { + "name": "Tervishoiukeskus", + "terms": "kliinik,arst,haigla,heaolu,taastusravi,ravi" + }, + "healthcare/alternative": { + "name": "Alternatiivmeditsiin" + }, + "healthcare/alternative/chiropractic": { + "name": "Kiropraktik" + }, + "healthcare/audiologist": { + "name": "Audioloog" + }, + "healthcare/birthing_center": { + "name": "Sünnitusmaja" + }, "healthcare/blood_donation": { "name": "Verekeskus", "terms": "veretalitus, vereteenistus, doonor" }, + "healthcare/hospice": { + "name": "Hooldekodu", + "terms": "hospiits" + }, + "healthcare/midwife": { + "name": "Ämmaemand" + }, "highway": { "name": "Tee" }, @@ -1998,10 +2085,16 @@ "highway/crossing": { "name": "Ülekäigurada" }, + "highway/crossing-raised": { + "name": "Tõstetud ristmik" + }, "highway/crosswalk": { "name": "Ülekäigurada", "terms": "jalakäijate ülekäik,ülekäik" }, + "highway/crosswalk-raised": { + "name": "Tõstetud ülekäigurada" + }, "highway/cycleway": { "name": "Rattatee" }, @@ -2032,9 +2125,6 @@ "highway/path": { "name": "Rada" }, - "highway/pedestrian": { - "name": "Jalakäijate tänav" - }, "highway/primary": { "name": "Põhimaantee", "terms": "maantee" @@ -2232,6 +2322,12 @@ "name": "Tööstuspiirkond", "terms": "Tööstusala" }, + "landuse/industrial/scrap_yard": { + "name": "Vanametalli kokkuost" + }, + "landuse/industrial/slaughterhouse": { + "name": "Tapamaja" + }, "landuse/landfill": { "name": "Prügila", "terms": "Prügimägi" @@ -2388,6 +2484,9 @@ "leisure/running_track": { "name": "Jooksurada" }, + "leisure/sauna": { + "name": "Saun" + }, "leisure/slipway": { "name": "Slipp", "terms": "Slipp, väikesadam" @@ -2433,6 +2532,9 @@ "man_made/chimney": { "name": "Korsten" }, + "man_made/crane": { + "name": "Kraana" + }, "man_made/cutline": { "name": "Siht", "terms": "metsasiht,soosiht" @@ -2615,6 +2717,13 @@ "place/island": { "name": "Saar" }, + "place/islet": { + "name": "Laid", + "terms": "saareke,rahu,kari" + }, + "place/plot": { + "name": "Krunt" + }, "place/suburb": { "name": "Eeslinn", "terms": "Äärelinn" @@ -3202,10 +3311,6 @@ "name": "Karavanipark", "terms": "autoelamu,haagissuvila,kämpimisala" }, - "tourism/chalet": { - "name": "Mägimajake", - "terms": "alpimaja" - }, "tourism/gallery": { "name": "Kunstigalerii" }, @@ -3295,6 +3400,10 @@ "name": "Täristi", "terms": "põristi,põrin,tärin,värin,väristaja,müra,triibud,risti jooned,jooned" }, + "traffic_calming/table": { + "name": "Tõstetud pind", + "terms": "lame,künnis,lamav politseinik,kiirustõke,tõke,liikluskünnis" + }, "type/boundary": { "name": "Piir" }, @@ -3420,6 +3529,10 @@ "waterway/stream": { "name": "Oja" }, + "waterway/stream_intermittent": { + "name": "Ajutine oja", + "terms": "perioodiline" + }, "waterway/water_point": { "name": "Joogiveepunkt (veesõidukitele)", "terms": "vesi,vee" diff --git a/dist/locales/fa.json b/dist/locales/fa.json index e54c0d189..c5189af8e 100644 --- a/dist/locales/fa.json +++ b/dist/locales/fa.json @@ -299,7 +299,6 @@ "localized_translation_language": "انتخاب زبان", "localized_translation_name": "نام" }, - "zoom_in_edit": "بزرگنمایی برای ویرایش", "login": "ورود", "logout": "خروج", "loading_auth": "در حال اتصال به OpenStreetMap...", @@ -524,8 +523,7 @@ "splash": { "welcome": "به ویرایشگر ID OpenStreetMap خوش آمدید", "text": "iD یک ابزار دوستانه اما قدرتمند برای کمک کردن به بهترین نقشه رایگان جهان است. این نسخه ی {version} است. برای اطلاعات بیشتر {website} را ببینید و باگ را در {github} گزارش دهید.", - "walkthrough": "آغاز گردش", - "start": "حالا ویرایش کن" + "walkthrough": "آغاز گردش" }, "source_switch": { "live": "زنده", @@ -548,10 +546,6 @@ "tag_suggests_area": "برچسب {tag} پیشنهاد میکند خط باید یک فضا باشد، اما این یک فضا نیست", "deprecated_tags": "برچسب های توصیه شده: {tags}" }, - "zoom": { - "in": "بزرگنمایی", - "out": "کوچک نمایی" - }, "cannot_zoom": "در حالت فعلی بیش از این نمیتوان کوچک نمایی کرد.", "full_screen": "تعویض صفحه‌نمایش کامل", "mapillary_images": { @@ -2539,10 +2533,6 @@ "name": "داربستی", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'داربست'، با کاما جدا می‌شوند>" }, - "craft/sculpter": { - "name": "حجاری", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'حجاری کردن'، با کاما جدا می‌شوند>" - }, "craft/shoemaker": { "name": "کفاش", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'کفاش'، با کاما جدا می‌شوند>" @@ -2551,10 +2541,6 @@ "name": "سنگ تراش", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'سنگ‌تراش'، با کاما جدا میشوند>" }, - "craft/sweep": { - "name": "جاروکش شومینه", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دودکش پاک کن'، با کاما جدا می‌شوند>" - }, "craft/tailor": { "name": "خیاط" }, @@ -2743,10 +2729,6 @@ "name": "مسیر", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'مسیر'، با کاما جدا می‌شوند>" }, - "highway/pedestrian": { - "name": "خیابان پیاده‌روی", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'خیابان پیاده‌روی'، با کاما جدا می‌شوند>" - }, "highway/primary": { "name": "جاده اصلی", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'راه اصلی'، با کاما جدا می‌شوند>" @@ -3397,18 +3379,10 @@ "name": "اداره", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'اداره'، با کاما جدا می‌شوند>" }, - "office/accountant": { - "name": "حسابدار", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'حسابدار'، با کاما جدا می‌شوند>" - }, "office/administrative": { "name": "دفتر اداری", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر اداری'، با کاما جدا می‌شوند>" }, - "office/architect": { - "name": "معمار", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'معمار'، با کاما جدا می‌شوند>" - }, "office/company": { "name": "دفتر شرکت", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر شرکت'، با کاما جدا می‌شوند>" @@ -3444,18 +3418,10 @@ "name": "دفتر بیمه", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'اداره بیمه'، با کاما جدا می‌شوند>" }, - "office/it": { - "name": "سازمان آی تی", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر IT'، با کاما جدا می‌شوند>" - }, "office/lawyer": { "name": "دفتر حقوقی", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر حقوقی'، با کاما جدا می‌شوند>" }, - "office/newspaper": { - "name": "روزنامه", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'روزنامه'، با کاما جدا می‌شوند>" - }, "office/ngo": { "name": "سازمان غیر دولتی", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر سازمان غیر دولتی NGO'، با کاما جدا می‌شوند>" @@ -3475,10 +3441,6 @@ "name": "اداره مخابرات", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'دفتر مخابراتی '، با کاما جدا می‌شوند>" }, - "office/therapist": { - "name": "درمان شناس", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'درمانگر'، با کاما جدا می‌شوند>" - }, "office/travel_agent": { "name": "آژانس مسافرتی" }, @@ -4143,10 +4105,6 @@ "name": "پارکینگ ماشین کاروان", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'پارکینگ ماشین کاروان'، با کاما جدا می‌شوند>" }, - "tourism/chalet": { - "name": "کلبه ییلاقی", - "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'کلبه ییلاقی'، با کاما جدا می‌شوند>" - }, "tourism/gallery": { "name": "گالری هنری", "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'گالری هنری'، با کاما جدا می‌شوند>" diff --git a/dist/locales/fi.json b/dist/locales/fi.json index ea3a9a2d2..a1bc72393 100644 --- a/dist/locales/fi.json +++ b/dist/locales/fi.json @@ -292,7 +292,6 @@ "localized_translation_language": "Valitse kieli", "localized_translation_name": "Nimi" }, - "zoom_in_edit": "Lähennä karttaa ennen muokkaamista", "login": "kirjaudu", "logout": "kirjaudu ulos", "loading_auth": "Yhdistetään OpenStreetMap-palveluun...", @@ -568,8 +567,7 @@ "splash": { "welcome": "Tervetuloa iD-kartanmuokkausohjelmaan", "text": "iD on tehokas ja helppokäyttöinen kartanmuokkausohjelma, jolla luodaan maailman tasokkain kartta. Tämä on versio {version}. Lisätietoja ohjelmasta on osoitteessa {website}, ja ohjelmistovirheistä voi ilmoittaa osoitteessa {github}.", - "walkthrough": "Aloitusopas", - "start": "Muokkaa heti" + "walkthrough": "Aloitusopas" }, "source_switch": { "live": "suora lähetys", @@ -596,10 +594,6 @@ "tag_suggests_area": "Ominaisuustiedon {tag} mukaan viiva on alue, vaikka se ei sitä ole.", "deprecated_tags": "Vanhentuneet ominaisuustiedot: {tags}" }, - "zoom": { - "in": "Lähennä", - "out": "Loitonna" - }, "cannot_zoom": "Nykyisessä tilassa ei voi loitontaa enempää.", "full_screen": "Koko näytön tila", "gpx": { @@ -2806,18 +2800,12 @@ "craft/scaffolder": { "name": "Rakennustelineliike" }, - "craft/sculpter": { - "name": "Kuvanveistämö" - }, "craft/shoemaker": { "name": "Suutari" }, "craft/stonemason": { "name": "Kivenhakkaamo" }, - "craft/sweep": { - "name": "Nuohooja" - }, "craft/tailor": { "name": "Räätäli" }, @@ -2992,9 +2980,6 @@ "highway/path": { "name": "Polku" }, - "highway/pedestrian": { - "name": "Kävelykatu" - }, "highway/primary": { "name": "Kantatie" }, @@ -3584,17 +3569,10 @@ "office": { "name": "Toimisto" }, - "office/accountant": { - "name": "Tilintarkastustoimisto", - "terms": "tilintarkastus, tilintarkastaja, kirjanpito, kirjanpitäjä, kirjanpitotoimisto" - }, "office/administrative": { "name": "Kunnallishallinnon toimisto", "terms": "kunta, paikkakunta, paikallinen, paikallis, seutu, seudullinen, kaupunki, kaupungin, kunnan, kunnallinen, toimisto, hallinto, hallitus" }, - "office/architect": { - "name": "Arkkitehtitoimisto" - }, "office/company": { "name": "Yritystoimisto" }, @@ -3627,10 +3605,6 @@ "name": "Vakuutustoimisto", "terms": "vakuutus, vakuutusyhtiö, vakuutukset, vakuutuksia" }, - "office/it": { - "name": "Tietotekniikkatoimisto", - "terms": "tietotalo, tietotekniikka, teknologia, tietoteknologia, IT-talo, IT-teknologia, IT-tekniikka, teknologiatalo" - }, "office/lawyer": { "name": "Lakitoimisto", "terms": "asianajotoimisto, asianajajatoimisto, asianajo, asianajaja, lakimies, juristi, toimisto, lakiasia, lakiasiaintoimisto" @@ -3639,10 +3613,6 @@ "name": "Asianajotoimisto", "terms": "asianajaja, juristi, laki, lakimies, toimisto, konttori, yritys, firma, oikeus" }, - "office/newspaper": { - "name": "Toimitus", - "terms": "sanomalehti, sanomalehden, lehti, lehden, aikakauslehti, aikakauslehden, tv, tv-toimitus, media, mediatalo, sanomatalo, lehtitoimitus, toimisto" - }, "office/ngo": { "name": "Kansalaisjärjestö", "terms": "kansalaisjärjestö, järjestö, kansanliike, kansanjärjestö, kansalaisjärjestötoimisto, toimisto" @@ -3660,9 +3630,6 @@ "office/telecommunication": { "name": "Tietoliikennetoimisto" }, - "office/therapist": { - "name": "Terapialaitos" - }, "office/travel_agent": { "name": "Matkatoimisto" }, @@ -4237,9 +4204,6 @@ "tourism/caravan_site": { "name": "Asuntoautopysäköinti" }, - "tourism/chalet": { - "name": "Chalet-huoneisto" - }, "tourism/gallery": { "name": "Taidegalleria" }, diff --git a/dist/locales/fr.json b/dist/locales/fr.json index 27109b744..b1b1bbfc9 100644 --- a/dist/locales/fr.json +++ b/dist/locales/fr.json @@ -310,7 +310,7 @@ "localized_translation_language": "Choisir une langue", "localized_translation_name": "Nom" }, - "zoom_in_edit": "Zoomer pour Modifier", + "zoom_in_edit": " Zoomer pour Modifier ", "login": "identifiant", "logout": "Déconnexion", "loading_auth": "Connexion à OpenStreetMap...", @@ -613,7 +613,7 @@ "welcome": "Bienvenue sur ID, l'éditeur en ligne d'OpenStreetMap", "text": "ID est un outil convivial mais puissant pour contribuer à la meilleure carte libre du monde. Ceci est la version {version}. Pour plus d'informations consultez {website} et reportez les bugs sur {github}.", "walkthrough": "Commencer le tutoriel", - "start": "Editer" + "start": "Modifier maintenant" }, "source_switch": { "live": "live", @@ -673,6 +673,7 @@ "key": "H", "help": "# Aide\n\nCeci est un éditeur pour [OpenStreetMap](http://www.openstreetmap.org/), la\ncarte du monde libre et éditable. Vous pouvez l'utiliser pour ajouter ou mettre à jour\nles données dans votre zone, et participer ainsi à la réalisation d'une carte du monde libre et à données ouvertes\nmeilleure pour tout le monde.\n\nLes modifications que vous réaliserez sur cette carte seront visibles par tous les utilisateurs d'OpenStreetMap. Pour commencer à modifier, vous devez vous [connecter](https://www.openstreetmap.org/login).\n\nL'[éditeur iD](http://ideditor.com/) est un projet collaboratif dont le [code\nsource est disponible sur GitHub](https://github.com/openstreetmap/iD).\n", "editing_saving": "# Modification et sauvegarde\n\nCet éditeur est conçu pour fonctionner essentiellement en ligne, et vous êtes en train d'y accéder depuis un site Web.\n\n### Sélection des éléments\n\nPour sélectionner un élément de la carte, comme une route ou un point\nd'intérêt, cliquez sur cet élément sur la carte. L'élément sélectionné\nest mis en surbrillance, et un panneau apparaît sur le côté avec des\ndétails sur l'élément. Si vous cliquez droit sur l'élément, un menu apparaît,\navec des actions que vous pouvez faire avec l'élément.\n\nPour sélectionner plusieurs éléments, maintenez la touche « Maj » enfoncée.\nPuis vous pouvez soit cliquer sur chaque élément que vous voulez sélectionner,\nsoit dessiner sur la carte un contour autour de ces éléments. Tous les\npoints dans le « lasso » dessiné seront sélectionnés.\n\n### Sauvegarde des modifications\n\nQuand vous faites des modifications comme changer des routes, des bâtiments,\net des places, ces modifications sont stockées localement jusqu'à ce que\nvous les sauvegardiez sur le serveur. Ne vous inquiétez pas si vous faites\nune erreur : vous pouvez annuler vos modifications en cliquant sur\nle bouton « Annuler », et les refaire en cliquant sur le bouton « Rétablir ».\n\nCliquez sur « Sauvegarder » pour terminer un groupe de modifications\n(par exemple, si vous avez complété une partie de la ville et si vous voulez\ncommencer une nouvelle zone). Vous aurez la possibilité de passer en revue\nce que vous avez fait, et l'éditeur fournit quelques suggestions utiles\nainsi que des avertissements si quelque chose semble être incorrect parmi\nvos modifications.\n\nSi tout semble correct, vous pouvez saisir un petit commentaire pour\nexpliquer vos modifications, et cliquer sur « Envoyer » pour envoyer les modifications\nà [OpenStreetMap.org](http://www.openstreetmap.org/), où elles seront\nvisibles par tous les utilisateurs, et disponibles pour que d'autres viennent\nles enrichir et les améliorer.\n\nSi vous ne pouvez pas terminer vos modifications en une fois, vous pouvez\nquitter la fenêtre de votre éditeur et revenir plus tard (sur le même ordinateur et\nle même navigateur) : l'éditeur vous proposera de restaurer votre travail.\n\n### Utilisation de l'éditeur\n\nVous pouvez afficher une liste des raccourcis clavier en appuyant sur la touche « ? ».\n", + "roads": "# Routes\n\nVous pouvez créer, mettre à jour et supprimer des routes à l'aide de l'éditeur. Il peut s'agir de tous types de routes : chemins, autoroutes, pistes cyclables, et plus encore : toute voie régulièrement fréquentée peut être cartographiée.\n\n### Sélection\n\nCliquez sur une route pour la sélectionner. Elle sera alors surlignée et un menu 'outils' apparaîtra sur la carte, ainsi qu'une barre d'état affichant des informations supplémentaires.\n\n### Modification\n\nIl est fréquent que les routes ne soient pas bien alignées avec l'imagerie satellite ou avec les traces GPS. Vous pouvez ajuster et corriger la position des routes.Cliquez d'abord sur la route à modifier. Elle est alors surlignée et des points de contrôle apparaissent qui permettent de corriger sa position. Pour ajouter des points de contrôle, double-cliquez sur un segment de la route sans nœuds.Si la route est connectée à une autre, mais que la connexion est incorrecte, vous pouvez déplacer un de ses points de contrôle sur la seconde route pour corriger la connexion. Des routes bien connectées sont essentielles pour la carte et pour fournir de bonnes informations d'itinéraire.Vous pouvez également cliquer sur l'outil 'Déplacer' ou appuyer sur le raccourci `M` pour déplacer l'ensemble de la route en une fois, puis cliquer de nouveau une fois pour sauvegarder le déplacement\n\n### Suppression\n\nSi une route est complètement fausse - c'est-à-dire qu'elle n'apparaît pas sur l'image satellite, et que dans l'idéal, vous avez confirmé qu'elle n'existe pas sur le terrain - vous pouvez la supprimer, ce qui l'enlèvera de la carte. Faites attention lorsque vous supprimez des éléments : comme n'importe quelle autre modification, le résultat sera visible par tout le monde sur la carte. Les photos aériennes sont souvent dépassées et la route est peut-être tout simplement récente.Pour supprimer une route, sélectionnez-la en cliquant dessus, puis cliquez sur l'icône 'Poubelle' ou appuyez sur la touche 'Suppr'.\n\n### Création\n\nVous avez constaté qu'une route de votre connaissance manque à la carte ? Cliquez sur l'icône 'Ligne' en haut à gauche de l'éditeur ou appuyez sur le raccourci `2` pour dessiner une route. Pour commencer le dessin, cliquez sur l'endroit où commence la route. Si elle commence à l'embranchement d'une autre route, commencez le dessin en cliquant à l'endroit de la connexion.Cliquez ensuite régulièrement le long de la route pour ajouter des points, en utilisant l'imagerie satellite comme référence. Si la route que vous dessinez croise une autre route, connectez les deux en cliquant à l'endroit de l'intersection. Lorsque vous avez terminé le dessin, double-cliquez ou appuyez sur 'Entrée'.\n", "gps": "# GPS\n\nLe GPS est la source la plus fiable de données pour OpenStreetMap. Cet éditeur\nsupporte les traces en local - fichiers `.gpx` sur votre ordinateur. Vous pouvez collecter\nce genre de trace GPS à l'aide de nombreuses applications pour smartphones ainsi\nqu'avec du matériel GPS personnel.\n\nPour savoir comment effectuer un relevé GPS, lisez\n[Sur le terrain avec un GPS](http://learnosm.org/fr/beginner/using-gps/).\n\nPour utiliser un tracé GPX pour cartographier, effectuer un \"glissé-déposé\" du\nfichier GPX dans l'éditeur de cartes. S'il est reconnu, une ligne violette en\nsurbrillance apparaîtra sur la carte. Cliquez dans le menu \"Données de la carte\"\nsur le côté droit pour activer, désactiver, ou zoomer dans ce nouveau calque GPX.\n\nLe tracé GPX n'est pas directement envoyé sur OpenStreetMap - le meilleur moyen de\nl'utiliser est de dessiner sur la carte, en l'utilisant comme guide pour les\nnouveaux éléments que vous ajoutez, et aussi de le\n[charger dans OpenStreetMap](http://www.openstreetmap.org/trace/create) pour que\nles autres utilisateurs puissent s'en servir.\n", "imagery": "# Fond de carte\n\nLes photos aériennes sont une source importante pour cartographier. Une\ncompilation de photos prises d'avion, imageries satellites, et autres sources\nlibre d'utilisation sont disponibles dans l'éditeur dans le menu \"Configuration\ndu fond de carte\" à gauche.\n\nPar défaut, l'imagerie aérienne de [Bing Maps](http://www.bing.com/maps/)\nest utilisée dans l'éditeur, mais lorsque vous zoomez sur la carte, d'autres sources sont parfois disponibles dans certaines zones. Certains pays tels que la France, les États-Unis ou le Danemark disposent d'images de très haute qualité sur certaines zones.\n\nCertaines images sont parfois décalées par rapport aux données, notamment\nà cause d'un mauvais calibrage. Si vous voyez de nombreux éléments tous décalés par rapport au fond de carte, ne déplacez pas immédiatement ces éléments. À la place, vous pouvez ajuster le fond de carte afin qu'il soit aligné aux données en cliquant sur \"Ajuster le décalage du fond de carte\" en bas de l'interface de configuration du fond de carte.\n", "addresses": "# Adresses\n\nLes adresses sont parmis les informations les plus utiles pour la carte.\n\nAlors que les adresses sont souvent représentées comme faisant partie des rues, dans OpenStreetMap, les adresses sont enregistrées comme attributs des bâtiments le long des rues.\n\nVous pouvez ajouter une adresse sur les éléments modélisés avec un polygone\net sur ceux modélisés avec des points. La meilleure source de données afin\nde cartographier les adresses reste le relevé sur le terrain ou les connaissances personnelles, car comme pour tous les autres éléments, la copie de données à partir de contenu non libre de droits comme Google Maps est strictement interdite.\n", @@ -1214,6 +1215,9 @@ "aeroway": { "label": "Type" }, + "agrarian": { + "label": "Produits" + }, "amenity": { "label": "Type" }, @@ -1282,6 +1286,9 @@ "board_type": { "label": "Type" }, + "boules": { + "label": "Type" + }, "boundary": { "label": "Type" }, @@ -1301,6 +1308,10 @@ "bunker_type": { "label": "Type" }, + "cables": { + "label": "Cables ", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direction (en degrés dans le sens horaire)", "placeholder": "45, 90, 180, 270" @@ -1387,7 +1398,12 @@ "label": "Type" }, "crane/type": { - "label": "Type de Grue" + "label": "Type de Grue", + "options": { + "floor-mounted_crane": "Grue inamovible", + "portal_crane": "Grue chargeant un porte-conteneur", + "travel_lift": "Chariot de manutention de bateaux" + } }, "crop": { "label": "Cultures" @@ -1461,6 +1477,10 @@ "description": { "label": "Description" }, + "devices": { + "label": "Appareils", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Table à langer" }, @@ -1535,6 +1555,9 @@ "wall": "Mur" } }, + "fitness_station": { + "label": "Type d'équipement " + }, "fixme": { "label": "À corriger" }, @@ -1542,6 +1565,9 @@ "label": "Type", "placeholder": "Défaut" }, + "frequency": { + "label": "Fréquence " + }, "fuel": { "label": "Carburant" }, @@ -1573,6 +1599,9 @@ "generator/type": { "label": "Type" }, + "government": { + "label": "Type" + }, "grape_variety": { "label": "Cépages" }, @@ -1584,6 +1613,7 @@ "label": "Rampe, Main courante" }, "hashtags": { + "label": "Hashtags suggérés", "placeholder": "#exemple" }, "healthcare": { @@ -1899,6 +1929,10 @@ "payment_multi": { "label": "Types de paiement" }, + "phases": { + "label": "Phases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Téléphone ", "placeholder": "+33 1 23 45 67 89" @@ -1951,6 +1985,15 @@ "label": "Puissance", "placeholder": "500 MW, 1000 MW, 2000 MW..." }, + "playground/baby": { + "label": "Siège enfant" + }, + "playground/max_age": { + "label": "Age maximum" + }, + "playground/min_age": { + "label": "Age minimum" + }, "population": { "label": "Population" }, @@ -1969,6 +2012,9 @@ "railway": { "label": "Type" }, + "rating": { + "label": "Puissance" + }, "recycling_accepts": { "label": "Accepte" }, @@ -2168,13 +2214,18 @@ "placeholder": "Inconnu" }, "structure_waterway": { + "label": "Structure", "options": { "tunnel": "Tunnel" - } + }, + "placeholder": "Inconnu" }, "studio": { "label": "Type" }, + "substance": { + "label": "Substance" + }, "substation": { "label": "Type" }, @@ -2201,6 +2252,15 @@ "surveillance/zone": { "label": "Zone de surveillance" }, + "switch": { + "label": "Type", + "options": { + "circuit_breaker": "Disjoncteur", + "disconnector": "Sectionneur", + "earthing": "Sectionneur de terre", + "mechanical": "Interrupteur" + } + }, "tactile_paving": { "label": "Surface podotactile" }, @@ -2252,6 +2312,9 @@ }, "placeholder": "Dur, compact, mou…" }, + "trade": { + "label": "Type" + }, "traffic_calming": { "label": "Dispositif" }, @@ -2270,6 +2333,19 @@ }, "placeholder": "Excellent, bon, mauvais…" }, + "transformer": { + "label": "Type", + "options": { + "auto": "Autotransformateur", + "auxiliary": "auxiliaire", + "converter": "Convertisseur", + "distribution": "Distribution", + "generator": "Générateur", + "phase_angle_regulator": "Déphaseur", + "traction": "Traction", + "yes": "Inconnu" + } + }, "trees": { "label": "Arbres" }, @@ -2304,6 +2380,18 @@ "stratovolcano": "Stratovolcan" } }, + "voltage": { + "label": "Tension électrique" + }, + "voltage/primary": { + "label": "Tension primaire" + }, + "voltage/secondary": { + "label": "Tension secondaire" + }, + "voltage/tertiary": { + "label": "Tension tertiaire" + }, "wall": { "label": "Type" }, @@ -2331,6 +2419,22 @@ }, "wikipedia": { "label": "Wikipédia" + }, + "windings": { + "label": "Enroulements", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuration des enroulements", + "options": { + "delta": "Triangle", + "leblanc": "Leblanc", + "open": "Ouverte", + "open-delta": "Triangle-ouvert", + "scott": "Scott", + "star": "Étoile", + "zigzag": "Zig-zag " + } } }, "presets": { @@ -2532,10 +2636,12 @@ "terms": "hopital, hôpital, ambulatoire, médecins, infirmières, patients, docteurs, clinique médicale, clinique, médical, soins, urgence, clinic" }, "amenity/clinic/abortion": { - "name": "Clinique d'avortement" + "name": "Clinique d'avortement", + "terms": "Clinique d'avortement, avortement, clinique IVG, clinique IMG, hopital d'avortement, hopital ivg, hopital img" }, "amenity/clinic/fertility": { - "name": "Clinique de fertilité" + "name": "Clinique de fertilité", + "terms": "Clinique fertilité, hôpital fertilité, clinique du couple, hôpital du couple, clinique de la reproduction, hôpital de la reproduction" }, "amenity/clock": { "name": "Horloge", @@ -2645,13 +2751,17 @@ "terms": "Bibliothèque, Médiathèque" }, "amenity/marketplace": { - "name": "Place de marché", - "terms": "Marché" + "name": "Marché", + "terms": "Marché, Place de marché" }, "amenity/motorcycle_parking": { "name": "Parking pour motocyclettes", "terms": "Parc à motos,Stationnement motos" }, + "amenity/music_school": { + "name": "École de musique", + "terms": "École de musique" + }, "amenity/nightclub": { "name": "Boîte de nuit", "terms": "Boîte de nuit, Discothèque" @@ -2775,8 +2885,7 @@ "terms": "école élémentaire, école primaire, collège, lycée, \ncycles primaires et secondaires, enseignements élémentaire et secondaire, \nenseignement élémentaire, enseignement secondaire, \nétablissement d'enseignement élémentaire, établissement d'enseignement secondaire, \nécole, écoliers, CP-CE1-CE2-CM1-CM2, college, lycee, school" }, "amenity/scrapyard": { - "name": "Ferraille", - "terms": "" + "name": "Casse automobile" }, "amenity/shelter": { "name": "Abri", @@ -2857,6 +2966,10 @@ "name": "Distributeur de sacs pour excréments d'animaux", "terms": "distributeur de sacs pour excréments d'animaux, distributeur à sacs pour excréments d'animaux, sacs pour excréments d'animaux, sacs à excréments d'animaux, sacs à crottes, distributeur automatique de sacs pour excréments d'animaux, distributeur automatique de sacs à crottes, machine à sacs pour excréments d'animaux, machine à sacs à crottes, vente de sacs pour excréments d'animaux, vente de sacs à crottes, vente sacs pour excréments d'animaux, vente sacs à crottes, vending machine excrement bags, excrement bags" }, + "amenity/vending_machine/feminine_hygiene": { + "name": "Distributeur de produits d'hygiène féminine", + "terms": "machine distributrice de produits d'hygiène féminine, distributeur de serviettes hygiéniques, distributeur de tampons, distributeur de tampon, serviette, tampon, cup, distributeur de cup, menstruations" + }, "amenity/vending_machine/news_papers": { "name": "Distributeur de journaux" }, @@ -3232,12 +3345,17 @@ "name": "Traiteur", "terms": "Restaurateur" }, + "craft/chimney_sweeper": { + "name": "Ramoneur", + "terms": "Ramoneur, Cheminée" + }, "craft/clockmaker": { "name": "Horloger", "terms": "Horloger, Horlogerie" }, "craft/confectionery": { - "name": "Confiseur" + "name": "Confiseur", + "terms": "Confisier, confiseur, fabricant de bonbons" }, "craft/distillery": { "name": "Distillerie", @@ -3340,7 +3458,7 @@ "name": "Monteur d'échafaudages", "terms": "Échafaudages" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Sculpteur", "terms": "Sculpteur" }, @@ -3352,10 +3470,6 @@ "name": "Tailleur de pierre", "terms": "Tailleur de pierre" }, - "craft/sweep": { - "name": "Ramoneur", - "terms": "Fumiste, Chauffagiste" - }, "craft/tailor": { "name": "Tailleur" }, @@ -3433,10 +3547,18 @@ "name": "Passage piéton", "terms": "Traversée de rue,Passage clouté" }, + "footway/crossing-raised": { + "name": "Passage piéton surélevé", + "terms": "Passage piéton, piéton, passage clouté, croisée de rues" + }, "footway/crosswalk": { "name": "Passage piéton (zebra)", "terms": "Passage piéton, Zébra, Passage zébré" }, + "footway/crosswalk-raised": { + "name": "Passage piéton surélevé", + "terms": "Zébra, passage piéton, passage cloûté" + }, "footway/sidewalk": { "name": "Trottoir", "terms": "Trottoir" @@ -3486,10 +3608,12 @@ "terms": "ligne d'eau" }, "healthcare": { - "name": "Établissement de soins de santé" + "name": "Établissement de soins de santé", + "terms": "Hopital, hôpital, clinique, établissement de santé, chr, chu, chic, ch" }, "healthcare/alternative": { - "name": "Médecine alternative" + "name": "Médecine alternative", + "terms": "Techniques de bien-être alternatives" }, "healthcare/alternative/chiropractic": { "name": "Chiropraticien", @@ -3500,38 +3624,48 @@ "terms": "Audiologiste, Audiologue" }, "healthcare/birthing_center": { - "name": "Maison de naissance" + "name": "Maison de naissance", + "terms": "Maternité" }, "healthcare/blood_donation": { "name": "Centre de don du sang", "terms": "Centre de don du sang, Banque du sang" }, "healthcare/hospice": { - "name": "Hospice" + "name": "Hospice", + "terms": "Hôpital, clinique, établissement de santé, chr, chu, chic, ch" }, "healthcare/midwife": { - "name": "Sage-femme" + "name": "Sage-femme", + "terms": "Sage-femme, maïeuticienne" }, "healthcare/occupational_therapist": { - "name": "Ergothérapeute" + "name": "Ergothérapeute", + "terms": "Ergothérapeute" }, "healthcare/optometrist": { - "name": "Optométriste" + "name": "Optométriste", + "terms": "Opticien" }, "healthcare/physiotherapist": { - "name": "Physiothérapeute" + "name": "Physiothérapeute", + "terms": "Kinésithérapeute, kiné" }, "healthcare/podiatrist": { - "name": "Podologue" + "name": "Podologue", + "terms": "Pédicure-podologue, podologue" }, "healthcare/psychotherapist": { - "name": "Psychothérapeute" + "name": "Psychothérapeute", + "terms": "Psychologue" }, "healthcare/rehabilitation": { - "name": "Centre de réadaptation" + "name": "Centre de réadaptation", + "terms": "Centre de réadaptation, établissement de réadaptation" }, "healthcare/speech_therapist": { - "name": "Orthophoniste" + "name": "Orthophoniste", + "terms": "Orthophoniste" }, "highway": { "name": "Route" @@ -3552,10 +3686,18 @@ "name": "Passage piéton", "terms": "Passage piéton " }, + "highway/crossing-raised": { + "name": "Passage piéton surélevé", + "terms": "Passage piéton" + }, "highway/crosswalk": { "name": "Passage piéton (zebra)", "terms": "Passage piéton, Zébra, Passage zébré" }, + "highway/crosswalk-raised": { + "name": "Passage piéton surélevé", + "terms": "Passage piéton" + }, "highway/cycleway": { "name": "Voie cyclable", "terms": "Piste cyclable" @@ -3596,9 +3738,13 @@ "name": "Chemin non carrossable", "terms": "Chemin" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "name": "Zone piétonne", + "terms": "Zone piétonne, zone piétonnière, piétonnier." + }, + "highway/pedestrian_line": { "name": "Rue piétonne", - "terms": "Rue piétonnière,Espace piétonnier,Place piétonne,Rue piétonne" + "terms": "Rue piétonne, Rue pédestre, Rue pour piétons." }, "highway/primary": { "name": "Route principale", @@ -3776,6 +3922,10 @@ "name": "Bassin", "terms": "Bassin" }, + "landuse/brownfield": { + "name": "Friche industrielle", + "terms": "Friche industrielle, squat" + }, "landuse/cemetery": { "name": "Cimetière", "terms": "Cimetière" @@ -3815,6 +3965,10 @@ "name": "Herbe", "terms": "Herbe" }, + "landuse/greenfield": { + "name": "Terrain vierge", + "terms": "Terrain vierge" + }, "landuse/harbour": { "name": "Havre", "terms": "beateau,navire,port,baie" @@ -3823,6 +3977,14 @@ "name": "Zone industrielle", "terms": "Usines" }, + "landuse/industrial/scrap_yard": { + "name": "Casse automobile", + "terms": "Casse automobile, Cimetière de voitures, Ferrailles." + }, + "landuse/industrial/slaughterhouse": { + "name": "Abattoir", + "terms": "Abattoir" + }, "landuse/landfill": { "name": "Décharge", "terms": "Centre d'enfouissement des déchets" @@ -3899,6 +4061,10 @@ "name": "Terrain de jeux", "terms": "Terrain de jeux,Terrain de loisirs" }, + "landuse/religious": { + "name": "Zone religieuse", + "terms": "Zone religieuse" + }, "landuse/residential": { "name": "Zone résidentielle", "terms": "Zone d’habitation" @@ -3955,6 +4121,50 @@ "name": "Fitness en extérieur", "terms": "Équipements de fitness en extérieur" }, + "leisure/fitness_station/balance_beam": { + "name": "Poutre (fitness en extérieur)", + "terms": "Poutre " + }, + "leisure/fitness_station/box": { + "name": "Boîte de saut", + "terms": "Boîte de saut" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Barre fixe", + "terms": "Barre fixe" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Barres de singe", + "terms": "Barres de singe" + }, + "leisure/fitness_station/hyperextension": { + "name": "Équipement d'hyperextension en extérieur", + "terms": "Équipement d’hyperextension en extérieur" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barres parallèles", + "terms": "Barres parallèles" + }, + "leisure/fitness_station/push-up": { + "name": "Les pompes inclinées en extérieur", + "terms": "Les pompes inclinées en extérieur" + }, + "leisure/fitness_station/rings": { + "name": "Anneaux de gymnastique ", + "terms": "Anneaux de gymnastique " + }, + "leisure/fitness_station/sign": { + "name": "Panneau d'instruction d'un exercice", + "terms": "Panneau d'instruction d'un exercice" + }, + "leisure/fitness_station/sit-up": { + "name": "Équipement de Sit-up en extérieur", + "terms": "Équipement de Sit-up en extérieur" + }, + "leisure/fitness_station/stairs": { + "name": "Escalier d'exercices", + "terms": "Escalier d'exercices" + }, "leisure/garden": { "name": "Jardin", "terms": "Jardin" @@ -3964,7 +4174,8 @@ "terms": "Golf, Terrain de golf, Parcours de golf" }, "leisure/hackerspace": { - "name": "Hackerspace" + "name": "Hackerspace", + "terms": "Hackerspace" }, "leisure/horse_riding": { "name": "Centre équestre", @@ -4014,6 +4225,10 @@ "name": "Terrain de Beach-volley", "terms": "Terrain de Beach-volley" }, + "leisure/pitch/boules": { + "name": "Terrain de boules (Pétanque, Bocce...)", + "terms": "Terrain de pétanque, Bocce, Lyonnaise" + }, "leisure/pitch/bowls": { "name": "Terrain de boulingrin", "terms": "Terrain de boule anglaise" @@ -4059,13 +4274,17 @@ "terms": "Aire de Jeu, Cour de récréation" }, "leisure/resort": { - "name": "Complexe touristique", - "terms": "Complexe hôtelier, Complexe touristique, Spa, détente, Relaxation, Station thermale." + "name": "Complexe touristique , Village de vacances", + "terms": "Complexe hôtelier, Complexe touristique, Village de vacances, Spa, détente, Relaxation, Station thermale." }, "leisure/running_track": { "name": "Piste de course (à pieds)", "terms": "piste,course,athlétisme" }, + "leisure/sauna": { + "name": "Sauna", + "terms": "Sauna" + }, "leisure/slipway": { "name": "Cale de mise à l'eau", "terms": "Cale de lancement, Cale, Cale de mise à l'eau, Rampe de mise à l'eau" @@ -4119,7 +4338,8 @@ "terms": "Cheminée" }, "man_made/crane": { - "name": "Grue" + "name": "Grue", + "terms": "Grue" }, "man_made/cutline": { "name": "Layon", @@ -4350,16 +4570,32 @@ }, "office/accountant": { "name": "Comptable", - "terms": "Comptable, Expert-comptable" + "terms": "Comptable, Expert-comptable." }, "office/administrative": { "name": "Bureau administratif", "terms": "Bureau administratif" }, + "office/adoption_agency": { + "name": "Agence d'adoption", + "terms": "Agence d'adoption" + }, + "office/advertising_agency": { + "name": "Agence de publicité", + "terms": "Agence de publicité, Agence publicitaire" + }, "office/architect": { "name": "Architecte", "terms": "Architecte" }, + "office/association": { + "name": "Bureau d'association", + "terms": "Bureau d'association, Organisation à but non lucratif" + }, + "office/charity": { + "name": "Organisation de bienfaisance/charité", + "terms": "Organisation de bienfaisance, Organisation de charité" + }, "office/company": { "name": "Bureau d'entreprise", "terms": "Bureau d'entreprise, Siège social" @@ -4376,13 +4612,25 @@ "name": "Agence pour l'emploi", "terms": "Agence pour l'emploi" }, + "office/energy_supplier": { + "name": "Fournisseur d'énergie", + "terms": "Fournisseur d'énergie, électricité" + }, "office/estate_agent": { "name": "Agence immobilière", "terms": "Agence immobilière" }, "office/financial": { - "name": "Établissement financier", - "terms": "Bureau financier" + "name": "Bureau d'entreprise financière  ", + "terms": "Bureau financier,Établissement financier" + }, + "office/forestry": { + "name": "Administration forestière", + "terms": "Administration forestière" + }, + "office/foundation": { + "name": "Fondation", + "terms": "Fondation" }, "office/government": { "name": "Administration publique", @@ -4392,13 +4640,21 @@ "name": "Bureau d'état-civil", "terms": "Registre d'état civil" }, + "office/government/tax": { + "name": "Bureau des impôts", + "terms": "Bureau des impôts" + }, + "office/guide": { + "name": "Bureau des guides", + "terms": "Bureau des guides" + }, "office/insurance": { "name": "Agence d'assurance", "terms": "Agence d'assurance" }, "office/it": { - "name": "Bureau informatique", - "terms": "Bureau informatique,SSII,ESN" + "name": "Spécialiste en informatique", + "terms": "Spécialiste en informatique, informaticien" }, "office/lawyer": { "name": "Cabinet d'avocats", @@ -4408,13 +4664,21 @@ "name": "Notaire", "terms": "Notaire" }, + "office/moving_company": { + "name": "Entreprise de déménagement", + "terms": "Entreprise de déménagement" + }, "office/newspaper": { "name": "Journal", - "terms": "Journal, Presse" + "terms": "Journal, Agence de presse" }, "office/ngo": { - "name": "ONG", - "terms": "ONG" + "name": "Organisation non gouvernementale", + "terms": "ONG, Bureau de l'organisation non gouvernementale" + }, + "office/notary": { + "name": "Notaire", + "terms": "Notaire" }, "office/physician": { "name": "Médecin" @@ -4423,10 +4687,26 @@ "name": "Parti politique", "terms": "Parti politique" }, + "office/private_investigator": { + "name": "Enquêteur privé/détective", + "terms": "Enquêteur privé, Détective" + }, + "office/quango": { + "name": "Autorité administrative indépendante ", + "terms": "Autorité administrative indépendante, ONG quasi-autonome, QUANGO." + }, "office/research": { "name": "Organisme de recherche", "terms": "Centre de recherches" }, + "office/surveyor": { + "name": "Géomètre", + "terms": "Géomètre, Géomètre-expert, Arpenteur, Topographe." + }, + "office/tax_advisor": { + "name": "Conseiller fiscal", + "terms": "Conseiller fiscal" + }, "office/telecommunication": { "name": "Agence de télécommunications", "terms": "Agence télécom,FAI,Opérateur" @@ -4438,6 +4718,10 @@ "office/travel_agent": { "name": "Agence de voyage" }, + "office/water_utility": { + "name": "Agence de l'eau", + "terms": "Agence de l'eau, Compagnie des eaux" + }, "piste": { "name": "Piste de ski", "terms": "Piste de ski" @@ -4460,6 +4744,10 @@ "name": "Île", "terms": "Île" }, + "place/islet": { + "name": "Îlot", + "terms": "Îlot, Île" + }, "place/isolated_dwelling": { "name": "Lieu-dit habité (1 ou 2 habitations)", "terms": "Habitation isolée" @@ -4472,6 +4760,10 @@ "name": "Voisinage", "terms": "Environs, Voisinage, Quartier" }, + "place/plot": { + "name": "Parcelle", + "terms": "Terrains" + }, "place/quarter": { "name": "Quartier", "terms": "quartier" @@ -4493,34 +4785,60 @@ "terms": "Village" }, "playground/balance_beam": { - "name": "Poutre " + "name": "Poutre (Jeux pour enfants)", + "terms": "Poutre " + }, + "playground/basket_spinner": { + "name": "Présentoir", + "terms": "Présentoir, présentoir à paniers" + }, + "playground/basket_swing": { + "name": "Balançoire à panier", + "terms": "balançoire, balancelle, jeux pour enfants" }, "playground/climbing_frame": { - "name": "Cage à poules " + "name": "Cage à poules ", + "terms": "portique, portique de jeux, jeux, jeux pour enfants" }, "playground/cushion": { - "name": "Jeu gonflable" + "name": "Jeu gonflable", + "terms": "trampoline, trampoline à eau, trampoline à air" }, "playground/horizontal_bar": { - "name": "Barre fixe" + "name": "Barre fixe pour enfants", + "terms": "Barre fixe" + }, + "playground/rocker": { + "name": "Balançoire à ressort", + "terms": "Jeux pour enfants, animal sur ressort, jouet sur ressort" }, "playground/roundabout": { - "name": "Tourniquet" + "name": "Tourniquet", + "terms": "Tourniquet, jeux pour enfant" }, "playground/sandpit": { - "name": "Bac à sable" + "name": "Bac à sable", + "terms": "Bac à sable, jeux pour enfants, sable" }, "playground/seesaw": { - "name": "Balançoire à bascule" + "name": "Balançoire à bascule", + "terms": "Balançoire à bascule, tape-fesses, tape-cul, jeux pour enfants" }, "playground/slide": { - "name": "Toboggan " + "name": "Toboggan ", + "terms": "Toboggan, jeux pour enfants" + }, + "playground/structure": { + "name": "Structure (Jeu pour enfants)", + "terms": "Structure de jeux, portique de jeux, jeux pour enfants" }, "playground/swing": { - "name": "Balançoire" + "name": "Balançoire", + "terms": "Balançoire, balancelles, jeux pour enfants" }, "playground/zipwire": { - "name": "Tyrolienne" + "name": "Tyrolienne", + "terms": "Tyrolienne" }, "point": { "name": "Point", @@ -4564,6 +4882,10 @@ "name": "Sous-station", "terms": "Sous-station électrique" }, + "power/switch": { + "name": "Appareil de connexion électrique", + "terms": "Appareil de connexion électrique" + }, "power/tower": { "name": "Pylône électrique ", "terms": "Pylône haute-tension" @@ -4616,7 +4938,7 @@ "terms": "Passage à niveau (voiture)" }, "railway/milestone": { - "name": "Jalon Féroviaire", + "name": "Borne kilométrique ferroviaire", "terms": "" }, "railway/monorail": { @@ -4682,6 +5004,10 @@ "name": "Magasin", "terms": "Magasin,Boutique" }, + "shop/agrarian": { + "name": "Magasin d'agriculture", + "terms": "Magasin d'agriculture" + }, "shop/alcohol": { "name": "Magasin de vente d'alcool", "terms": "Cave, Caviste, Magasin de vin, Vins & Spiritueux" @@ -5201,7 +5527,7 @@ }, "tourism/chalet": { "name": "Gîte", - "terms": "Chalet" + "terms": "Gîte" }, "tourism/gallery": { "name": "Galerie d'art", @@ -5259,6 +5585,10 @@ "name": "Point de vue", "terms": "Point de vue, observatoire, mirador" }, + "tourism/wilderness_hut": { + "name": "Refuge de bivouac", + "terms": "Refuge de bivouac, Refuge non gardé, Cabane." + }, "tourism/zoo": { "name": "Parc zoologique", "terms": "Zoo" @@ -5300,7 +5630,8 @@ "terms": "Section de route à rainurage" }, "traffic_calming/table": { - "name": "Dos d'âne trapézoïdal" + "name": "Dos d'âne trapézoïdal", + "terms": "Ralentisseur, cassis, dos d'âne" }, "type/boundary": { "name": "Frontière", @@ -5406,7 +5737,8 @@ "terms": "Site" }, "type/waterway": { - "name": "Voie navigable" + "name": "Voie navigable", + "terms": "Canal, rivière, cours d'eau" }, "vertex": { "name": "Autre", @@ -5436,7 +5768,7 @@ "terms": "Quai pour cargo" }, "waterway/drain": { - "name": "Cours d'eau artificiel ou canalisé", + "name": "Canal d'évacuation des eaux pluviales", "terms": "Drain" }, "waterway/fuel": { @@ -5460,7 +5792,8 @@ "terms": "Ruisseau" }, "waterway/stream_intermittent": { - "name": "Ruisseau intermittent" + "name": "Ruisseau intermittent", + "terms": "Ruisseau intermittent" }, "waterway/water_point": { "name": "Eau potable", @@ -5558,6 +5891,17 @@ }, "name": "OSM Inspector: Étiqueter" }, + "US-TIGER-Roads-2012": { + "name": "Données géographiques et topologiques intégrées et encodées 2012" + }, + "US-TIGER-Roads-2014": { + "description": "Au niveau de zoom 16+, carte du domaine public issue du recensement américain. A des niveaux de zooms inférieur, les changements depuis 2006, moins les changements déjà incorporés dans OpenStreetMap", + "name": "Données géographiques et topologiques intégrées et encodées 2014" + }, + "US-TIGER-Roads-2017": { + "description": "Le jaune correspond aux données des cartes du domaine public issues du recensement américain, le rouge à des données non trouvées dans OpenStreetMap", + "name": "Données géographiques et topologiques intégrées et encodées 2017" + }, "Waymarked_Trails-Cycling": { "attribution": { "text": "© Sarah Hoffmann, CC by-SA 3.0, données cartographiques des contributeurs OpenStreetMap, ODbL 1.0" diff --git a/dist/locales/gl.json b/dist/locales/gl.json index d9820531d..1b1806b3b 100644 --- a/dist/locales/gl.json +++ b/dist/locales/gl.json @@ -310,7 +310,6 @@ "localized_translation_language": "Escoller idioma", "localized_translation_name": "Nome" }, - "zoom_in_edit": "Fai zoom para editar.", "login": "loguear", "logout": "saír", "loading_auth": "Conectando con OpenStreetMap...", @@ -612,8 +611,7 @@ "splash": { "welcome": "Benvido ao editor de OpenStreetMap iD", "text": "iD é unha amigable pero potente ferramenta para contribuir ao mellor mapa libre do mundo. Esta é a versión {version}. Para obter máis información visita {website} e informa de erros en {github}.", - "walkthrough": "Comezar o titorial", - "start": "Editar agora" + "walkthrough": "Comezar o titorial" }, "source_switch": { "live": "en liña", @@ -645,10 +643,6 @@ "tag_suggests_area": "A etiqueta {tag} suxire que a liña debería ser unha área, pero non é unha área.", "deprecated_tags": "Etiquetas obsoletas: {tags}" }, - "zoom": { - "in": "Ampliar", - "out": "Reducir" - }, "cannot_zoom": "Non se pode reducir máis no modo actual.", "full_screen": "Pasar a pantalla completa", "gpx": { @@ -1170,7 +1164,8 @@ "subdistrict": "Subdistrito", "subdistrict!vn": "Ward/Commune/Townlet", "suburb": "Barrio", - "suburb!jp": "Barrio" + "suburb!jp": "Barrio", + "unit": "Departamento" } }, "admin_level": { @@ -1284,6 +1279,9 @@ "board_type": { "label": "Tipo" }, + "boules": { + "label": "Tipo" + }, "boundary": { "label": "Tipo" }, @@ -1388,6 +1386,9 @@ "craft": { "label": "Tipo" }, + "crane/type": { + "label": "Tipo de grúa" + }, "crop": { "label": "Cultivos" }, @@ -1460,6 +1461,9 @@ "description": { "label": "Descrición completa" }, + "devices": { + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Con área de cambia-cueiros " }, @@ -1541,6 +1545,9 @@ "label": "Tipo", "placeholder": "Por defecto" }, + "frequency": { + "label": "Frecuencia de operación" + }, "fuel": { "label": "Combustible" }, @@ -1583,6 +1590,7 @@ "label": "Carretilla" }, "hashtags": { + "label": "Cancelos suxeridos", "placeholder": "#exemplo" }, "healthcare": { @@ -1632,6 +1640,9 @@ "inscription": { "label": "Inscrición" }, + "intermittent": { + "label": "Intermitente" + }, "internet_access": { "label": "Acceso a internet", "options": { @@ -1895,6 +1906,9 @@ "payment_multi": { "label": "Tipos de pagamento" }, + "phases": { + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Teléfono", "placeholder": "+34 989 12 34 56" @@ -1971,6 +1985,9 @@ "railway": { "label": "Tipo" }, + "rating": { + "label": "Potencia" + }, "recycling_accepts": { "label": "Acepta" }, @@ -2179,6 +2196,9 @@ "studio": { "label": "Tipo" }, + "substance": { + "label": "Substancia" + }, "substation": { "label": "Tipo" }, @@ -2256,6 +2276,9 @@ }, "placeholder": "Sólido, maiormente sólido, brando..." }, + "trade": { + "label": "Tipo" + }, "traffic_calming": { "label": "Tipo" }, @@ -2274,6 +2297,17 @@ }, "placeholder": "Excelente, bo, malo..." }, + "transformer": { + "options": { + "auto": "Autotransformador", + "converter": "Conversor", + "distribution": "Distribución", + "generator": "Xerador", + "phase_angle_regulator": "Desfasador", + "traction": "Tracción", + "yes": "Descoñecido" + } + }, "trees": { "label": "Árbores" }, @@ -2328,6 +2362,21 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuración dos devanados", + "options": { + "delta": "Triángulo", + "leblanc": "Leblanc", + "open": "Independentes", + "open-delta": "Triángulo aberto", + "scott": "Scott", + "star": "Estrela", + "zigzag": "Zig-zag" + } } }, "presets": { @@ -3216,10 +3265,6 @@ "name": "Andamista", "terms": "andamios, andamista" }, - "craft/sculpter": { - "name": "Escultor", - "terms": "escultor, artista" - }, "craft/shoemaker": { "name": "Zapateiro", "terms": "zapateiro, zapatos" @@ -3228,9 +3273,6 @@ "name": "Albanel", "terms": "albanel, canteiro, pedra" }, - "craft/sweep": { - "name": "Limpa Chemineas" - }, "craft/tailor": { "name": "Xastre" }, @@ -3399,10 +3441,6 @@ "highway/path": { "name": "Camiño" }, - "highway/pedestrian": { - "name": "Rúa peonil", - "terms": "rúa, peonil, peatonal" - }, "highway/primary": { "name": "Estrada primaria", "terms": "estrada, primaria, primaria básica" @@ -4033,16 +4071,9 @@ "office": { "name": "Oficina" }, - "office/accountant": { - "name": "Contador", - "terms": "contador, contable, contabilidade" - }, "office/administrative": { "name": "Administración local" }, - "office/architect": { - "name": "Arquitecto" - }, "office/company": { "name": "Oficina de empresa" }, @@ -4071,10 +4102,6 @@ "name": "Oficina de seguros", "terms": "seguros, aseguradora" }, - "office/it": { - "name": "Oficina TIC", - "terms": "it, tic, informática, computación, telecomunicacións" - }, "office/lawyer": { "name": "Bufete", "terms": "bufete, avogados, legal" @@ -4083,9 +4110,6 @@ "name": "Notaría", "terms": "notaría, notario" }, - "office/newspaper": { - "name": "Xornal" - }, "office/ngo": { "name": "Oficina ONG" }, @@ -4102,10 +4126,6 @@ "office/telecommunication": { "name": "Oficina de telecomunicacións" }, - "office/therapist": { - "name": "Terapeuta", - "terms": "terapeuta, fisioterapeuta, fisio" - }, "office/travel_agent": { "name": "Axencia de viaxes" }, @@ -4671,13 +4691,10 @@ "name": "Área de camping" }, "tourism/caravan_site": { - "name": "Parque de Caravanas" - }, - "tourism/chalet": { - "name": "Chalé" + "name": "Parque de caravanas" }, "tourism/gallery": { - "name": "Galería de Arte" + "name": "Galería de arte" }, "tourism/guest_house": { "name": "Hostal", diff --git a/dist/locales/he.json b/dist/locales/he.json index 305f76ad5..f9fbde887 100644 --- a/dist/locales/he.json +++ b/dist/locales/he.json @@ -75,12 +75,17 @@ } } }, + "restore": { + "restore": "שחזור השינויים שלי", + "reset": "התעלמות מהשינויים שלי" + }, + "save": { + "title": "שמירה", + "no_changes": "אין שינויים לשמירה" + }, "confirm": { "cancel": "ביטול" }, - "splash": { - "start": "לערוך כעת" - }, "source_switch": { "live": "חי" }, @@ -110,11 +115,80 @@ "suburb": "", "countrycode": "il" }, + "points": { + "title": "נקודות" + }, "areas": { "title": "אזורים" }, "lines": { - "title": "קווים" + "title": "קווים", + "retry_delete": "לא לחצת על כפתור המחיקה. נא לנסות שוב." + }, + "buildings": { + "title": "בניינים" + }, + "startediting": { + "save": "לא לשכוח לשמור את השינויים שלך לעתים תכופות!" + } + }, + "shortcuts": { + "title": "קיצורי מקלדת", + "tooltip": "הצגת מסך קיצורי המקלדת", + "browsing": { + "navigation": { + "title": "ניווט" + }, + "help": { + "title": "עזרה", + "help": "הצגת עזרה/תיעוד", + "keyboard": "הצגת קיצורי מקלדת" + }, + "display_options": { + "title": "אפשרויות תצוגה", + "background": "הצגת אפשרויות רקע", + "background_switch": "חזרה לרקע האחרון", + "map_data": "הצגת אפשרויות נתוני מפה", + "fullscreen": "כניסה למצב מסך מלא", + "minimap": "החלפת תצוגת מפה מוקטנת" + }, + "selecting": { + "title": "בחירת תכונות", + "select_one": "בחירת תכונה בודדה", + "select_multi": "בחירת מגוון תכונות", + "lasso": "ציור פלצור בחירה מסביב לתכונות" + }, + "with_selected": { + "edit_menu": "החלפת תצוגה של תפריט עריכה" + } + }, + "editing": { + "title": "עריכה", + "drawing": { + "title": "ציור" + }, + "operations": { + "split": "פיצול קו לשניים במפרק הנבחר", + "reverse": "ביפוך כיוון קו", + "move": "העברת התכונות הנבחרות", + "rotate": "הטיית התכונות הנבחרות", + "orthogonalize": "יישור קו / פינות של איזור ריבועי", + "delete": "מחיקת התכונות הנבחרות" + }, + "commands": { + "title": "פקודות", + "copy": "העתקת התכונות הנבחרות", + "paste": "הדבקת התכונות הנבחרות", + "undo": "ביטול הפעולה האחרונה", + "redo": "ביצוע חוזר של הפעולה שבוטלה", + "save": "שמירת השינויים" + } + }, + "tools": { + "title": "כלים", + "info": { + "title": "מידע" + } } } } diff --git a/dist/locales/hr.json b/dist/locales/hr.json index 2364a4dd8..783d18008 100644 --- a/dist/locales/hr.json +++ b/dist/locales/hr.json @@ -310,7 +310,6 @@ "localized_translation_language": "Odaberi jezik", "localized_translation_name": "Ime" }, - "zoom_in_edit": "Približi za uređivanje", "login": "prijava", "logout": "odjava", "loading_auth": "Spajanje na OpenStreetMap...", @@ -548,8 +547,7 @@ "splash": { "welcome": "Dobrodošli na iD OpenStreetMap uređivač", "text": "iD je vrlo jednostavan ali moćan alat za doprinošenje najboljoj besplatnoj karti svijeta. Ovo je verzija {version}. Za više informacija pogledaj {website} i prijavi greške u softveru na {github}.", - "walkthrough": "Počni prohod", - "start": "Odmah uređuj" + "walkthrough": "Počni prohod" }, "source_switch": { "live": "uživo", @@ -581,10 +579,6 @@ "tag_suggests_area": "Oznaka {tag} ukazuje da bi linija trebala biti područje, ali nije područje", "deprecated_tags": "Zastarjele oznake: {tags}" }, - "zoom": { - "in": "Približi", - "out": "Udalji" - }, "cannot_zoom": "Nije moguće više udaljiti u trenutnom môdu.", "full_screen": "Slika preko cijelog zaslona", "gpx": { @@ -2463,18 +2457,12 @@ "craft/scaffolder": { "name": "Građevinska skela" }, - "craft/sculpter": { - "name": "Kipar" - }, "craft/shoemaker": { "name": "Obućar" }, "craft/stonemason": { "name": "Zidar" }, - "craft/sweep": { - "name": "Dimnjačar" - }, "craft/tailor": { "name": "Krojač" }, @@ -2590,9 +2578,6 @@ "highway/path": { "name": "Staza" }, - "highway/pedestrian": { - "name": "Pješačka zona" - }, "highway/primary": { "name": "Državna cesta" }, @@ -3042,12 +3027,6 @@ "name": "Ured", "terms": "ured,kancelarija" }, - "office/accountant": { - "name": "Računovođa" - }, - "office/architect": { - "name": "Arhitekt" - }, "office/educational_institution": { "name": "Obrazovna ustanova" }, @@ -3057,15 +3036,9 @@ "office/insurance": { "name": "Ured osiguravajućeg društva" }, - "office/it": { - "name": "Informatički ured" - }, "office/lawyer": { "name": "Odvjetnički ured" }, - "office/newspaper": { - "name": "Redakcija novina" - }, "office/ngo": { "name": "Nevladina organizacija" }, @@ -3081,9 +3054,6 @@ "office/telecommunication": { "name": "Ured za telekomunikacije" }, - "office/therapist": { - "name": "Psihoterapeut" - }, "office/travel_agent": { "name": "Putnička agencija" }, @@ -3613,10 +3583,6 @@ "name": "Parkiralište za kamp kućice", "terms": "park za rekreativna vozila,park za kamp-prikolice,RV park,kamp,kamp za kamp kućice,kamp za kamp prikolice,kamp prikolica,park za kamp prikolice,kamp za kamp-prikolice" }, - "tourism/chalet": { - "name": "Bungalov", - "terms": "planinarski dom,planinska koliba,koliba,planinarski,planinarska" - }, "tourism/gallery": { "name": "Umjetnička galerija" }, diff --git a/dist/locales/hu.json b/dist/locales/hu.json index 925cbd58a..d1ecb41f4 100644 --- a/dist/locales/hu.json +++ b/dist/locales/hu.json @@ -310,7 +310,7 @@ "localized_translation_language": "Válassz nyelvet", "localized_translation_name": "Név" }, - "zoom_in_edit": "Szerkesztéshez nagyíts rá", + "zoom_in_edit": "Nagyíts a szerkesztéshez", "login": "bejelentkezés", "logout": "kijelentkezés", "loading_auth": "Csatlakozás az OpenStreetMap kiszolgálóhoz…", @@ -361,7 +361,9 @@ "accuracy": "Pontosság", "unknown": "Ismeretlen", "show_tiles": "Csempék megjelenítése", - "hide_tiles": "Csempék elrejtése" + "hide_tiles": "Csempék elrejtése", + "show_vintage": "Évjárat mutatása", + "hide_vintage": "Évjárat elrejtése" }, "history": { "key": "H", @@ -646,8 +648,8 @@ "deprecated_tags": "Elavult címkék: {tags}" }, "zoom": { - "in": "Közelítés", - "out": "Távolítás" + "in": "Nagyítás", + "out": "Kicsinyítés" }, "cannot_zoom": "Nem lehet jobban távolítani ebben a módban.", "full_screen": "Váltás teljes képernyőre", @@ -1281,6 +1283,9 @@ "board_type": { "label": "Típus" }, + "boules": { + "label": "Típus" + }, "boundary": { "label": "Típus" }, @@ -1300,6 +1305,9 @@ "bunker_type": { "label": "Típus" }, + "cables": { + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Irány (fok, az óramutató járása szerint)", "placeholder": "45, 90, 180, 270" @@ -1460,6 +1468,9 @@ "description": { "label": "Leírás" }, + "devices": { + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Pelenkázó van" }, @@ -1898,6 +1909,9 @@ "payment_multi": { "label": "Fizetési típusok" }, + "phases": { + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefonszám", "placeholder": "+36 1 123 45 67" @@ -2185,6 +2199,9 @@ "studio": { "label": "Típus" }, + "substance": { + "label": "Szállított anyag" + }, "substation": { "label": "Típus" }, @@ -2211,6 +2228,9 @@ "surveillance/zone": { "label": "Megfigyelt terület" }, + "switch": { + "label": "Típus" + }, "tactile_paving": { "label": "Vakvezető burkolat" }, @@ -2262,6 +2282,9 @@ }, "placeholder": "Szilárd, vegyes, laza…" }, + "trade": { + "label": "Típus" + }, "traffic_calming": { "label": "Típus" }, @@ -2280,6 +2303,12 @@ }, "placeholder": "Kiváló, jó, rossz…" }, + "transformer": { + "label": "Típus", + "options": { + "yes": "Ismeretlen" + } + }, "trees": { "label": "Fák" }, @@ -2341,6 +2370,9 @@ }, "wikipedia": { "label": "Wikipédia" + }, + "windings": { + "placeholder": "1, 2, 3..." } }, "presets": { @@ -2664,6 +2696,10 @@ "name": "Motorkerékpár-parkoló", "terms": "motoros parkoló, motor parkoló" }, + "amenity/music_school": { + "name": "Zeneiskola", + "terms": "" + }, "amenity/nightclub": { "name": "Diszkó", "terms": "Night Club, Éjszakai bár, Diszkó" @@ -2787,8 +2823,7 @@ "terms": "suli, tanítás, oktatás, nevelés, közoktatás, köznevelés" }, "amenity/scrapyard": { - "name": "Szeméttelep", - "terms": "hulladékudvar,roncstelep" + "name": "Szeméttelep" }, "amenity/shelter": { "name": "Esőbeálló", @@ -3252,6 +3287,9 @@ "name": "Órás (falióra)", "terms": "Órás" }, + "craft/confectionery": { + "terms": "" + }, "craft/distillery": { "name": "Párlatfőző", "terms": "alkohol,ital,pálinka,szeszfőzde" @@ -3353,9 +3391,8 @@ "name": "Állványépítő", "terms": "ács-állványozó" }, - "craft/sculpter": { - "name": "Szobrász", - "terms": "Szobrász" + "craft/sculptor": { + "terms": "" }, "craft/shoemaker": { "name": "Cipész", @@ -3365,10 +3402,6 @@ "name": "Kőfaragó", "terms": "Kőfaragó műhely" }, - "craft/sweep": { - "name": "Kéményseprő", - "terms": "Kéményseprő" - }, "craft/tailor": { "name": "Szabó" }, @@ -3637,9 +3670,11 @@ "name": "Gyalogút", "terms": "Ösvény" }, - "highway/pedestrian": { - "name": "Sétálóutca", - "terms": "sétálóutca" + "highway/pedestrian_area": { + "terms": "" + }, + "highway/pedestrian_line": { + "terms": "" }, "highway/primary": { "name": "Főút", @@ -3817,6 +3852,10 @@ "name": "Vízgyűjtő medence", "terms": "Vízgyűjtőterület, vízgyűjtő, vízválasztó" }, + "landuse/brownfield": { + "name": "Barnamezős terület", + "terms": "mező, barna, szántó" + }, "landuse/cemetery": { "name": "Temető", "terms": "Köztemető, sírkert" @@ -3856,6 +3895,10 @@ "name": "Fű", "terms": "gyep" }, + "landuse/greenfield": { + "name": "Zöldmezős terület", + "terms": "mező, szántó, zöld" + }, "landuse/harbour": { "name": "Kikötő", "terms": "kikötő, hajó" @@ -3864,6 +3907,12 @@ "name": "Ipari terület", "terms": "ipar, gyárterület, gyár, ipari park" }, + "landuse/industrial/scrap_yard": { + "terms": "" + }, + "landuse/industrial/slaughterhouse": { + "terms": "" + }, "landuse/landfill": { "name": "Hulladéklerakó", "terms": "Szemétlerakó, szeméttelep" @@ -3940,6 +3989,9 @@ "name": "Szabadidőpark", "terms": "park, pihenőhely" }, + "landuse/religious": { + "terms": "" + }, "landuse/residential": { "name": "Lakóövezet", "terms": "lakótelep, lakóterület" @@ -3996,6 +4048,39 @@ "name": "Fitneszpark", "terms": "fitnesz,sport, edzőhely" }, + "leisure/fitness_station/balance_beam": { + "terms": "" + }, + "leisure/fitness_station/box": { + "terms": "" + }, + "leisure/fitness_station/horizontal_bar": { + "terms": "" + }, + "leisure/fitness_station/horizontal_ladder": { + "terms": "" + }, + "leisure/fitness_station/hyperextension": { + "terms": "" + }, + "leisure/fitness_station/parallel_bars": { + "terms": "" + }, + "leisure/fitness_station/push-up": { + "terms": "" + }, + "leisure/fitness_station/rings": { + "terms": "" + }, + "leisure/fitness_station/sign": { + "terms": "" + }, + "leisure/fitness_station/sit-up": { + "terms": "" + }, + "leisure/fitness_station/stairs": { + "terms": "" + }, "leisure/garden": { "name": "Kert", "terms": "Kert" @@ -4056,6 +4141,9 @@ "name": "Strandröplabda pálya", "terms": "strand,röplabda,röpi,pálya" }, + "leisure/pitch/boules": { + "terms": "" + }, "leisure/pitch/bowls": { "name": "Gyeptekepálya", "terms": "bowling pálya" @@ -4108,6 +4196,10 @@ "name": "Futópálya", "terms": "futókör" }, + "leisure/sauna": { + "name": "Szauna", + "terms": "gőz, meleg, izzad, szauna" + }, "leisure/slipway": { "name": "Sólya", "terms": "Sólya, hajócsúszda" @@ -4392,16 +4484,26 @@ "terms": "Iroda" }, "office/accountant": { - "name": "Könyvelő", - "terms": "könyvvizsgálat" + "terms": "" }, "office/administrative": { "name": "Közigazgatási hivatal", "terms": "hivatal, önkormányzat, hatóság" }, + "office/adoption_agency": { + "terms": "" + }, + "office/advertising_agency": { + "terms": "" + }, "office/architect": { - "name": "Építész", - "terms": "architektúra" + "terms": "" + }, + "office/association": { + "terms": "" + }, + "office/charity": { + "terms": "" }, "office/company": { "name": "Vállalati iroda", @@ -4419,6 +4521,9 @@ "name": "Munkaügyi központ", "terms": "munkaügyi hivatal" }, + "office/energy_supplier": { + "terms": "" + }, "office/estate_agent": { "name": "Ingatlaniroda", "terms": "ingatlanközvetítő" @@ -4427,6 +4532,12 @@ "name": "Pénzügyi vállalat irodája", "terms": "pénzügy, hitelezés, kölcsön, befektetés, biztosítás" }, + "office/forestry": { + "terms": "" + }, + "office/foundation": { + "terms": "" + }, "office/government": { "name": "Kormányzati hivatal", "terms": "Kormányzat, minisztérium, országos szerv" @@ -4435,13 +4546,18 @@ "name": "Anyakönyvi hivatal", "terms": "anyakönyvi hivatal, házasságkötési hivatal" }, + "office/government/tax": { + "terms": "" + }, + "office/guide": { + "terms": "" + }, "office/insurance": { "name": "Biztosító", "terms": "Biztosító" }, "office/it": { - "name": "Informatikai cég irodája", - "terms": "számítástechnika, IT, információ-technológia" + "terms": "" }, "office/lawyer": { "name": "Ügyvéd", @@ -4451,14 +4567,19 @@ "name": "Közjegyzői iroda", "terms": "közjegyző" }, + "office/moving_company": { + "terms": "" + }, "office/newspaper": { - "name": "Újságszekesztőség", - "terms": "Újság, szerkesztőség, kiadó, napilap, hetilap, folyóirat" + "terms": "" }, "office/ngo": { "name": "Civil szervezet", "terms": "Nonprofit szervezet, NGO, egyesület" }, + "office/notary": { + "terms": "" + }, "office/physician": { "name": "Orvosi rendelő" }, @@ -4466,21 +4587,35 @@ "name": "Pártiroda", "terms": "pártszékház, politika, párt" }, + "office/private_investigator": { + "terms": "" + }, + "office/quango": { + "terms": "" + }, "office/research": { "name": "Kutatóintézet", "terms": "kutatás, fejlesztés, alapkutatás" }, + "office/surveyor": { + "terms": "" + }, + "office/tax_advisor": { + "terms": "" + }, "office/telecommunication": { "name": "Távközlési cég irodája", "terms": "mobilszolgáltató, telekommunikáció, telefon, internet" }, "office/therapist": { - "name": "Fizioterápiás rendelő", - "terms": "gyógyász, gyógyító, fizioterápia" + "terms": "" }, "office/travel_agent": { "name": "Utazási iroda" }, + "office/water_utility": { + "terms": "" + }, "piste": { "name": "Sípálya", "terms": "sífutóút, lesiklópálya" @@ -4503,6 +4638,10 @@ "name": "Sziget", "terms": "sziget" }, + "place/islet": { + "name": "Szigetecske", + "terms": "" + }, "place/isolated_dwelling": { "name": "Elszigetelt lakás", "terms": "Elszigetelt otthon" @@ -4515,6 +4654,10 @@ "name": "Környék", "terms": "környék,negyed" }, + "place/plot": { + "name": "Parcella", + "terms": "" + }, "place/quarter": { "name": "Sub-Borough / Quarter", "terms": "sub-borough,quarter" @@ -4536,8 +4679,7 @@ "terms": "község" }, "playground/balance_beam": { - "name": "Egyensúlyozó gerenda", - "terms": "gerenda,egyensúly,ügyesség,sport" + "terms": "" }, "playground/basket_spinner": { "name": "Kosár forgó", @@ -4556,12 +4698,10 @@ "terms": "párna,felfúj,ugrál" }, "playground/horizontal_bar": { - "name": "Nyújtó", - "terms": "nyújtó,lóg,játék" + "terms": "" }, "playground/rocker": { - "name": "Rugós hinta", - "terms": "hinta,rugó,játék" + "terms": "" }, "playground/roundabout": { "name": "Körforgó", @@ -4633,6 +4773,10 @@ "name": "Alállomás", "terms": "Elektromos alállomás, transzformátorállomás, trafóállomás, trafóház" }, + "power/switch": { + "name": "Hálózati kapcsoló", + "terms": "" + }, "power/tower": { "name": "Távvezetékoszlop", "terms": "Magasfeszültségű oszlop, villanyoszlop" @@ -5173,6 +5317,10 @@ "name": "Jegyárus", "terms": "koncertjegy,színházjegy,interticket,hajójegy" }, + "shop/tiles": { + "name": "Csempebolt", + "terms": "" + }, "shop/tobacco": { "name": "Dohánybolt", "terms": "Nemzeti dohánybolt, dohány, cigaretta, szivar" @@ -5181,6 +5329,10 @@ "name": "Játékbolt", "terms": "barbie,lego,hasbro,mattel,babák,fisher price,logikai,barkács,bébi,gyermek,kreatív" }, + "shop/trade": { + "name": "Kereskedelmi üzlet", + "terms": "" + }, "shop/travel_agency": { "name": "Utazási iroda", "terms": "ibusz,vista,neckermann,nyaralás,last minute,utazás,travel,karthago tours,tours,tui,reisen,otp travel,voyage" @@ -5262,7 +5414,7 @@ }, "tourism/chalet": { "name": "Nyaralóház", - "terms": "víkendház, kulcsosház" + "terms": "" }, "tourism/gallery": { "name": "Művészeti galéria", @@ -5320,6 +5472,9 @@ "name": "Kilátóhely", "terms": "Kilátópont" }, + "tourism/wilderness_hut": { + "terms": "" + }, "tourism/zoo": { "name": "Állatkert", "terms": "Állatkert" @@ -5552,6 +5707,11 @@ "description": "Premium DigitalGlobe műholdképek", "name": "DigitalGlobe Premium felvételek" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Feltételek és visszajelzés" + } + }, "DigitalGlobe-Standard": { "attribution": { "text": "Feltételek és visszajelzés" @@ -5559,6 +5719,11 @@ "description": "Standard DigitalGlobe műholdképek", "name": "DigitalGlobe Standard felvételek" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Feltételek és visszajelzés" + } + }, "EsriWorldImagery": { "attribution": { "text": "Feltételek és visszajelzés" @@ -5622,6 +5787,15 @@ }, "name": "OSM Inspector: címkézés ellenőrzése" }, + "US-TIGER-Roads-2012": { + "name": "TIGER Roads 2012" + }, + "US-TIGER-Roads-2014": { + "name": "TIGER Roads 2014" + }, + "US-TIGER-Roads-2017": { + "name": "TIGER Roads 2017" + }, "Waymarked_Trails-Cycling": { "attribution": { "text": "© Sarah Hoffmann, CC by-SA 3.0, térképadatok: OpenStreetMap-közreműködők, ODbL 1.0" diff --git a/dist/locales/hy.json b/dist/locales/hy.json index ffa56499c..426cf0b83 100644 --- a/dist/locales/hy.json +++ b/dist/locales/hy.json @@ -211,7 +211,6 @@ "localized_translation_language": "Ընտրել լեզուն", "localized_translation_name": "Անուն" }, - "zoom_in_edit": "Խոշորացնել Խմբագրելու համար", "logout": "ելք", "loading_auth": "Կապւում է ՕփենՍթրիթՄէփը…", "report_a_bug": "Հաղորդել ծրագրի վրիպակի մասին տեղեկատւութիւն", @@ -408,8 +407,7 @@ "splash": { "welcome": "Բարի գալուստ iD ՕփենՍթրիթՄէփ խմբագրիչ։", "text": "iD ֊ն աշխարհի ամենա լաւ ազատ քարտէզին աջակցելու պարզ, բայց հզօր գործիք է։ Սա {version} վարկածն է։ Մանրամասների համար տես {website} եւ յայտնիր վրիպակների մասին {github} ֊ում։", - "walkthrough": "Սկսել ծանօթանալը։", - "start": "Խմբագրել հիմա" + "walkthrough": "Սկսել ծանօթանալը։" }, "source_switch": { "live": "եթերում է", @@ -430,10 +428,6 @@ "tag_suggests_area": "{tag} պիտակը ենթադրում է, որ գիծը պէտք է լինի տիրոյթ, բայց այն տիրոյթ չէ", "deprecated_tags": "Հնացած պիտակներ՝ {tags}" }, - "zoom": { - "in": "Խոշորացնել", - "out": "Փոքրացնել" - }, "cannot_zoom": "Այս ռեժիմում հնարաւոր չէ աւելի փոքրացնել։", "full_screen": "Դարձնել լիաէկրան", "mapillary": { diff --git a/dist/locales/id.json b/dist/locales/id.json index 23cf48e4e..8cf91ddef 100644 --- a/dist/locales/id.json +++ b/dist/locales/id.json @@ -210,7 +210,6 @@ "localized_translation_language": "Pilih Bahasa", "localized_translation_name": "Nama" }, - "zoom_in_edit": "Perbesar untuk bisa menyunting", "logout": "keluar", "loading_auth": "Menghubungkan dengan OpenStreetMap...", "report_a_bug": "Laporkan bug", @@ -421,8 +420,7 @@ "splash": { "welcome": "Selamat datang di penyuting iD OpenStreetMap", "text": "iD begitu bersahabat namun juga alat yang kuat untuk berperan dalam peta dunia gratis terbaik. Ini adalah versi {version}. Untuk informasi lebih lihat {website} dan laporkan kesalahan di {github}.", - "walkthrough": "Memulai Perjalanan", - "start": "Sunting Sekarang" + "walkthrough": "Memulai Perjalanan" }, "source_switch": { "live": "terhubung", @@ -444,10 +442,6 @@ "tag_suggests_area": "Penanda {tag} menyarankan garis sebaiknya dalam bentuk area, tapi ini bukan sebuah area", "deprecated_tags": "Tag sudah tidak dipergunakan: {tags}" }, - "zoom": { - "in": "Perbesar tampilan", - "out": "Perkecil tampilan" - }, "cannot_zoom": "Tidak bisa memperbesar tampilan lebih jauh dengan mode ini.", "full_screen": "Tombol Layar Penuh", "mapillary": { @@ -1566,15 +1560,9 @@ "craft/scaffolder": { "name": "Perancah" }, - "craft/sculpter": { - "name": "Pembuat Patung" - }, "craft/shoemaker": { "name": "Pembuat Sepatu" }, - "craft/sweep": { - "name": "Penyapu Cerobong" - }, "craft/tailor": { "name": "Penjahit Pakaian Pria" }, @@ -1667,9 +1655,6 @@ "highway/path": { "name": "Jalur" }, - "highway/pedestrian": { - "name": "Trotoar" - }, "highway/primary": { "name": "Jalan Provinsi", "terms": "Jalan Primer, Jalan Utama" @@ -2088,15 +2073,9 @@ "name": "Kantor", "terms": "Balai" }, - "office/accountant": { - "name": "Akuntan" - }, "office/administrative": { "name": "Kantor Administrasi" }, - "office/architect": { - "name": "Arsitek" - }, "office/company": { "name": "Kantor Perusahaan" }, @@ -2118,16 +2097,9 @@ "office/insurance": { "name": "Kantor Asuransi" }, - "office/it": { - "name": "Kantor IT", - "terms": "Teknologi Informasi, TI" - }, "office/lawyer": { "name": "Kantor Hukum" }, - "office/newspaper": { - "name": "Koran" - }, "office/ngo": { "name": "Kantor LSM" }, @@ -2140,9 +2112,6 @@ "office/telecommunication": { "name": "Kantor Telekomunikasi" }, - "office/therapist": { - "name": "Penerapi" - }, "office/travel_agent": { "name": "Biro Perjalanan" }, diff --git a/dist/locales/is.json b/dist/locales/is.json index 36b11bcb6..6ffb52a6e 100644 --- a/dist/locales/is.json +++ b/dist/locales/is.json @@ -200,7 +200,6 @@ "localized_translation_language": "Veldu tungumál", "localized_translation_name": "Nafn" }, - "zoom_in_edit": "Þysja inn til að breyta", "logout": "útskrá", "loading_auth": "Tengist við OpenStreetMap...", "status": { @@ -321,8 +320,7 @@ "splash": { "welcome": "Velkomin/n í iD ritil OpenStreetMap", "text": "iD er notandavænt tæki til að bæta við besta fría kortagrunn heimsins. Þetta er þróunarútgáfa {version}. Þú getur fengið meiri upplýsingar á vefnum {website} og tilkynnt villur {github}.", - "walkthrough": "Skoða leiðarvísir", - "start": "Breyta núna" + "walkthrough": "Skoða leiðarvísir" }, "source_switch": { "live": "raun", @@ -341,10 +339,6 @@ "tag_suggests_area": "Merkingin {tag} þýðir að línan ætti að vera svæði, en hún er ekki svæði", "deprecated_tags": "Úrelt merki: {tags}" }, - "zoom": { - "in": "Þysja inn", - "out": "Þysja út" - }, "cannot_zoom": "Get ekki þysjað lengra út í núverandi ham.", "mapillary": { "view_on_mapillary": "Skoða þessa mynd á Mapillary" @@ -1436,18 +1430,12 @@ "office": { "name": "Skrifstofa" }, - "office/architect": { - "name": "Arkitekt" - }, "office/financial": { "name": "Fjármálafyrirtæki" }, "office/government": { "name": "Opinber stofnun" }, - "office/newspaper": { - "name": "Fréttablað" - }, "office/political_party": { "name": "Stjórnmálaflokkur" }, @@ -1731,9 +1719,6 @@ "tourism/caravan_site": { "name": "Hjólhýsagarður" }, - "tourism/chalet": { - "name": "Bjálkakofi" - }, "tourism/guest_house": { "name": "Gestahús" }, diff --git a/dist/locales/it.json b/dist/locales/it.json index 4cd35df61..5c1c2d3db 100644 --- a/dist/locales/it.json +++ b/dist/locales/it.json @@ -330,9 +330,11 @@ "title": "Carica su OpenStreetMap", "upload_explanation": "Le modifiche che carichi saranno visibili su tutte le mappe che usano i dati di OpenStreetMap.", "upload_explanation_with_user": "Le modifiche che carichi come {user} saranno visibili su tutte le mappe che usano i dati di OpenStreetMap.", + "request_review": "Vorrei che qualcuno controllasse le mie modifiche.", "save": "Carica", "cancel": "Annulla", "changes": "{count} Cambiamenti", + "download_changes": "Scarica file in formato osmChange", "warnings": "Avvertimenti", "modified": "Modificati", "deleted": "Cancellati", @@ -346,6 +348,37 @@ "list": "Modifiche di {users}", "truncated_list": "Modifiche di {users} e {count} altri" }, + "info_panels": { + "background": { + "title": "Sfondo", + "description": "Descrizione", + "resolution": "Risoluzione", + "accuracy": "Accuratezza", + "unknown": "Sconosciuto" + }, + "history": { + "selected": "{n} selezionato/i", + "version": "Versione", + "last_edit": "Ultima modifica", + "edited_by": "Modificato da", + "changeset": "Gruppo di modifiche", + "unknown": "Sconosciuto", + "link_text": "Cronologia su openstreetmap.org" + }, + "measurement": { + "title": "Misurazione", + "selected": "{n} selezionato/i", + "geometry": "Geometria", + "closed": "chiuso", + "center": "Centro", + "perimeter": "Perimetro", + "length": "Lunghezza", + "area": "Area", + "centroid": "Centroide", + "metric": "Metrico", + "imperial": "Imperiale" + } + }, "geometry": { "point": "punto", "vertex": "vertice", @@ -427,9 +460,16 @@ "title": "Dati mappa", "description": "Dati della mappa", "data_layers": "Livelli di dati", + "layers": { + "osm": { + "tooltip": "Dati delle mappe da OpenStreetMap", + "title": "Dati OpenStreetMap" + } + }, "fill_area": "Riempimento aree", "map_features": "Elementi della mappa", - "autohidden": "Questi elementi sono stati automaticamente nascosti perché sarebbero stati troppi da visualizzare. Per modificarli è necessario ingrandire." + "autohidden": "Questi elementi sono stati automaticamente nascosti perché sarebbero stati troppi da visualizzare. Per modificarli è necessario ingrandire.", + "osmhidden": "Questi elementi sono stati nascosti automaticamente perché il livello OpenStreetMap è nascosto." }, "feature": { "points": { @@ -548,8 +588,7 @@ "splash": { "welcome": "Benvenuti nell'editor OpenStreetMap iD", "text": "iD è un intuitivo ma potente strumento per contribuire alla migliore mappa gratuita del mondo. Questa è la versione {version}. Per ulteriori informazioni vai su {website} o segnala gli errori su {github}", - "walkthrough": "Inizia il Tutorial", - "start": "Modifica adesso" + "walkthrough": "Inizia il Tutorial" }, "source_switch": { "live": "live", @@ -581,10 +620,6 @@ "tag_suggests_area": "Il tag {tag} fa pensare che la linea sia un'area, ma non rappresenta un'area", "deprecated_tags": "Tag deprecati: {tags}" }, - "zoom": { - "in": "Ingrandisci", - "out": "Riduci" - }, "cannot_zoom": "Impossibile fare zooCannot zoom out further in current mode.", "full_screen": "Passa a schermo intero", "gpx": { @@ -960,6 +995,12 @@ "redo": "Ripeti l'ultima operazione", "save": "Salva le modifiche" } + }, + "tools": { + "title": "Strumenti", + "info": { + "title": "Informazioni" + } } }, "presets": { @@ -3042,10 +3083,6 @@ "name": "Impalcature", "terms": "Costruttore di impalcature" }, - "craft/sculpter": { - "name": "Scultore", - "terms": "Scultore" - }, "craft/shoemaker": { "name": "Calzolaio", "terms": "scarpe,scarpino,calzature" @@ -3054,10 +3091,6 @@ "name": "Tagliapietre", "terms": "muratura" }, - "craft/sweep": { - "name": "Spazzacamino", - "terms": "spazzacamino,camino,comignolo" - }, "craft/tailor": { "name": "Sarto" }, @@ -3250,10 +3283,6 @@ "name": "Sentiero", "terms": "Sentiero" }, - "highway/pedestrian": { - "name": "Area Pedonale", - "terms": "Pedonale" - }, "highway/primary": { "name": "Primaria", "terms": "Primaria" @@ -3976,18 +4005,10 @@ "name": "Uffici", "terms": "Ufficio" }, - "office/accountant": { - "name": "Contabile", - "terms": "Commercialista, amministrativo, ragioniere" - }, "office/administrative": { "name": "Autorità locale", "terms": "Ufficio amministrativo,amministrazione,autorità locale,supervisione,comune" }, - "office/architect": { - "name": "Architetto", - "terms": "architetto,studio,design" - }, "office/company": { "name": "Ufficio aziendale", "terms": "Ufficio" @@ -4024,10 +4045,6 @@ "name": "Assicurazione", "terms": "assicurativo,sinistri,polizza assicurativa" }, - "office/it": { - "name": "Ufficio informatico", - "terms": "internet,web,app,applicazioni,siti web,siti internet,rete internet,computer,informatica,programmazione" - }, "office/lawyer": { "name": "Studio legale", "terms": "ufficio legale,legale,avvocato,avvocatura,magistrato,difensore,azzeccagarbugli" @@ -4036,10 +4053,6 @@ "name": "Ufficio notarile", "terms": "firma,notaio,stato,burocrazia" }, - "office/newspaper": { - "name": "Giornale", - "terms": "testata,quotidiano,redazione" - }, "office/ngo": { "name": "Organizzazione non governativa", "terms": "ong,ngo,onu,associazione,non profit,nonprofit,no profit,onlus,non lucrativa,senza fini di lucro,cooperativa,cooperazione" @@ -4059,10 +4072,6 @@ "name": "Ufficio di telecomunicazioni", "terms": "telecomunicazioni,telefonia" }, - "office/therapist": { - "name": "Terapista", - "terms": "fisioterapista,terapeuta" - }, "office/travel_agent": { "name": "Agenzia di viaggi" }, @@ -4757,10 +4766,6 @@ "name": "Sosta per camper", "terms": "Parco camper" }, - "tourism/chalet": { - "name": "Chalet", - "terms": " Casetta (chalet) " - }, "tourism/gallery": { "name": "Galleria d'arte", "terms": "opere d'arte,quadri,sculture,galleria,fotografie,dipinti,art*" diff --git a/dist/locales/ja.json b/dist/locales/ja.json index f21fc694d..ffadcfdd7 100644 --- a/dist/locales/ja.json +++ b/dist/locales/ja.json @@ -310,7 +310,6 @@ "localized_translation_language": "言語選択", "localized_translation_name": "名称" }, - "zoom_in_edit": "編集するには地図を拡大してください", "login": "ログイン", "logout": "ログアウト", "loading_auth": "OpenStreetMapへ接続中...", @@ -330,9 +329,11 @@ "title": "OpenStreetMapへアップロード", "upload_explanation": "あなたがアップロードした編集内容は、OpenStreetMapを利用しているすべてのユーザが閲覧できるようになります。", "upload_explanation_with_user": "編集した内容を {user} アカウントでアップロードし、OpenStreetMapを利用しているすべてのユーザが閲覧できるようにします。", + "request_review": "編集のレビューを希望します。", "save": "アップロード", "cancel": "キャンセル", "changes": "{count} 個の変更", + "download_changes": "osmChangeファイルをダウンロード", "warnings": "注意", "modified": "変更した地物", "deleted": "削除した地物", @@ -346,6 +347,32 @@ "list": "{users} による編集", "truncated_list": "{users} とその他 {count} 人による編集" }, + "info_panels": { + "key": "I", + "background": { + "key": "B", + "title": "背景", + "zoom": "ズーム", + "show_tiles": "タイルを表示", + "hide_tiles": "タイルを非表示" + }, + "history": { + "key": "H", + "title": "編集履歴", + "selected": "{n} 個を選択中", + "version": "バージョン", + "changeset": "変更セット" + }, + "location": { + "key": "L" + }, + "measurement": { + "key": "M", + "selected": "{n} 個を選択中", + "length": "長さ", + "area": "エリア" + } + }, "geometry": { "point": "ポイント", "vertex": "交点", @@ -548,8 +575,7 @@ "splash": { "welcome": "iD 起動中", "text": "iDは、世界でもっとも優れた自由な世界地図を編集するためのツールで、馴染みやすく、かつ高機能です。現在のバージョンは {version} です。詳細は {website} で公開中です。バグ報告は {github} で受け付けています。", - "walkthrough": "チュートリアルを開始", - "start": "編集開始" + "walkthrough": "チュートリアルを開始" }, "source_switch": { "live": "本番サーバ", @@ -581,10 +607,6 @@ "tag_suggests_area": "ラインに {tag} タグが付与されています。エリアで描かれるべきです", "deprecated_tags": "タグの重複: {tags}" }, - "zoom": { - "in": "ズームイン", - "out": "ズームアウト" - }, "cannot_zoom": "現在のモードでは、これ以上ズームアウトできません。", "full_screen": "フルスクリーンにする", "gpx": { @@ -777,7 +799,25 @@ "shortcuts": { "title": "ショートカットキー", "tooltip": "キーボードショートカット画面を表示", + "toggle": { + "key": "?" + }, "key": { + "alt": "Alt", + "backspace": "Backspace", + "ctrl": "Ctrl", + "delete": "Delete", + "del": "Del", + "end": "End", + "enter": "Enter", + "esc": "Esc", + "home": "Home", + "option": "Option", + "pause": "Pause", + "pgdn": "PgDn", + "pgup": "PgUp", + "return": "Return", + "shift": "Shift", "space": "スペース" }, "gesture": { @@ -2471,8 +2511,7 @@ "terms": "学校の敷地, 校庭" }, "amenity/scrapyard": { - "name": "自動車解体場", - "terms": "自動車解体場, 解体, スクラップ, 解体屋" + "name": "自動車解体場" }, "amenity/shelter": { "name": "(風雨をしのぐための)休憩所", @@ -2616,6 +2655,10 @@ "name": "ローラーコースター", "terms": "ジェットコースター" }, + "attraction/water_slide": { + "name": "ウォータースライダー", + "terms": "ウォータースライダー, 滑り台, ウォータースライド" + }, "barrier": { "name": "障害物", "terms": "障害物, バリア" @@ -2985,10 +3028,6 @@ "name": "足場職人", "terms": "足場職人, とび職" }, - "craft/sculpter": { - "name": "彫刻家", - "terms": "彫刻家" - }, "craft/shoemaker": { "name": "製靴", "terms": "製靴, 靴製造" @@ -2997,10 +3036,6 @@ "name": "石工", "terms": "石工, 石材加工" }, - "craft/sweep": { - "name": "煙突掃除", - "terms": "煙突掃除" - }, "craft/tailor": { "name": "仕立て屋" }, @@ -3197,10 +3232,6 @@ "name": "小道", "terms": "小道" }, - "highway/pedestrian": { - "name": "歩行者天国", - "terms": "歩行者天国" - }, "highway/primary": { "name": "主要地方道", "terms": "主要地方道" @@ -3689,8 +3720,8 @@ "terms": "競技トラック" }, "leisure/water_park": { - "name": "親水公園", - "terms": "公園, ウォーターパーク" + "name": "ウォーターパーク", + "terms": "テーマパーク, 遊園地, プール, ウォーターパーク" }, "line": { "name": "線", @@ -3927,18 +3958,10 @@ "name": "オフィス", "terms": "オフィス" }, - "office/accountant": { - "name": "会計事務所", - "terms": "会計事務所, 会計士" - }, "office/administrative": { "name": "地方行政事務所", "terms": "地方行政事務所" }, - "office/architect": { - "name": "建築事務所", - "terms": "建築事務所, 建設事務所" - }, "office/company": { "name": "会社事務所", "terms": "会社事務所, 営業所" @@ -3975,10 +3998,6 @@ "name": "保険代理店", "terms": "保険代理店" }, - "office/it": { - "name": "IT事務所", - "terms": "IT事務所, システムベンダー" - }, "office/lawyer": { "name": "法律事務所", "terms": "法律事務所" @@ -3987,10 +4006,6 @@ "name": "公証人役場", "terms": "公証人役場" }, - "office/newspaper": { - "name": "新聞社", - "terms": "新聞社" - }, "office/ngo": { "name": "NGO事務所", "terms": "NGO事務所" @@ -4010,10 +4025,6 @@ "name": "通信会社事務所", "terms": "通信会社事務所" }, - "office/therapist": { - "name": "セラピスト", - "terms": "セラピスト" - }, "office/travel_agent": { "name": "旅行代理店" }, @@ -4736,10 +4747,6 @@ "name": "オートキャンプ場", "terms": "オートキャンプ場" }, - "tourism/chalet": { - "name": "貸別荘", - "terms": "貸別荘, コテージ" - }, "tourism/gallery": { "name": "アートギャラリー", "terms": "画廊" @@ -4939,6 +4946,10 @@ "name": "区域", "terms": "区域" }, + "type/waterway": { + "name": "水路", + "terms": "水路" + }, "vertex": { "name": "その他", "terms": "その他" diff --git a/dist/locales/kn.json b/dist/locales/kn.json index 073eec088..dd73e0329 100644 --- a/dist/locales/kn.json +++ b/dist/locales/kn.json @@ -310,9 +310,7 @@ "localized_translation_language": "ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", "localized_translation_name": "ಹೆಸರು" }, - "zoom_in_edit": "ಸಂಪಾದಿಸಲು ಜೂಮ್ ಇನ್ ಮಾಡಿ", "login": "ಲಾಗಿನ್", - "logout": "ಲಾಗ್ ಔಟ್", "loading_auth": "ಓಪನ್ ಸ್ಟ್ರೀಟ್ ಮ್ಯಾಪ್ ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ.....", "report_a_bug": "ದೋಷವನ್ನು ವಿವರಿಸಿ. ", "help_translate": "ಅನುವಾದಕ್ಕೆ ನೀವು ಸಹಾಯಮಾಡಿ. ", @@ -549,8 +547,7 @@ }, "splash": { "welcome": "ಓಪನ್ ಸ್ಟ್ರೀಟ್ ಮ್ಯಾಪ್ ಐಡಿ ಎಡಿಟರಿಗೆ ಸ್ವಾಗತ!", - "walkthrough": "ಸಹಾಯದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸಿ ", - "start": "ಈಗ ಸಂಪಾದಿಸಿ" + "walkthrough": "ಸಹಾಯದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸಿ " }, "source_switch": { "live": "ಲೈವ್", @@ -572,10 +569,6 @@ "untagged_relation": "ಟ್ಯಾಗ್ ಮಾಡಲಾಗದ ಸಂಬಂಧ", "deprecated_tags": "‍ಉಪಯೋಗಿಸದ ಗುರುತುಪಟ್ಟಿಗಳು: {tags}" }, - "zoom": { - "in": "ಹಿಗ್ಗಿಸು", - "out": "ಕುಗ್ಗಿಸು" - }, "full_screen": "‍ಪೂರ್ಣ ಪರದೆಗೆ ಹಿಂದಿರುಗು", "gpx": { "local_layer": "ಸ್ಥಳೀಯ ಕಡತ" @@ -1686,9 +1679,6 @@ "craft/optician": { "name": "ನೇತ್ರ ತಜ್ಞ" }, - "craft/sculpter": { - "name": "ಶಿಲ್ಪಿ" - }, "craft/shoemaker": { "name": "ಚಮ್ಮಾರ" }, @@ -1782,9 +1772,6 @@ "office": { "name": "ಕಚೇರಿ" }, - "office/newspaper": { - "name": "ವಾರ್ತಾಪತ್ರಿಕೆ" - }, "office/physician": { "name": "ವೈದ್ಯ" }, diff --git a/dist/locales/ko.json b/dist/locales/ko.json index 4aa338f36..ec9b68494 100644 --- a/dist/locales/ko.json +++ b/dist/locales/ko.json @@ -310,7 +310,6 @@ "localized_translation_language": "언어 선택", "localized_translation_name": "이름" }, - "zoom_in_edit": "편집하려면 확대", "login": "로그인", "logout": "로그아웃", "loading_auth": "오픈스트리트맵에 연결 중...", @@ -359,7 +358,7 @@ "resolution": "해결", "accuracy": "정확도", "unknown": "알 수 없음", - "show_tiles": "타일 나타내기", + "show_tiles": "타일 보이기", "hide_tiles": "타일 숨기기" }, "history": { @@ -610,8 +609,7 @@ "splash": { "welcome": "iD 오픈스트리트맵 편집기에 오신 것을 환영합니다", "text": "iD는 세계 최고의 자유 세계 지도에 기여하기 위한 친절하지만 강력한 도구입니다. 버전은 {version}입니다. 자세한 정보에 대해서는 {website}을 참조하고 {github}에서 버그를 보고하세요.", - "walkthrough": "연습 시작", - "start": "지금 편집하기" + "walkthrough": "연습 시작" }, "source_switch": { "live": "실시간", @@ -643,10 +641,6 @@ "tag_suggests_area": "{tag} 태그의 제안 선은 공간이여야 하지만 태그는 공간이 아닙니다", "deprecated_tags": "사용되지 않는 태그: {tags}" }, - "zoom": { - "in": "확대", - "out": "축소" - }, "cannot_zoom": "현재 모드에서 더 축소할 수 없습니다.", "full_screen": "전체 화면 전환", "gpx": { @@ -1217,6 +1211,10 @@ "bunker_type": { "label": "유형" }, + "cables": { + "label": "케이블 수", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "방향 (시계 방향)", "placeholder": "45, 90, 180, 270" @@ -1382,6 +1380,10 @@ "description": { "label": "설명" }, + "devices": { + "label": "장치 수", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "기저귀 교환대 이용 가능" }, @@ -1456,6 +1458,9 @@ "wall": "벽" } }, + "fitness_station": { + "label": "운동 기구 종류" + }, "fixme": { "label": "고쳐주기" }, @@ -1463,6 +1468,9 @@ "label": "유형", "placeholder": "기본값" }, + "frequency": { + "label": "동작 주파수" + }, "fuel": { "label": "주유소" }, @@ -1820,6 +1828,10 @@ "payment_multi": { "label": "결제 종류" }, + "phases": { + "label": "상 수", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "전화", "placeholder": "+82 2 123 4567" @@ -1899,6 +1911,9 @@ "railway": { "label": "유형" }, + "rating": { + "label": "정격 용량" + }, "recycling_accepts": { "label": "수락" }, @@ -2107,6 +2122,9 @@ "studio": { "label": "유형" }, + "substance": { + "label": "물질" + }, "substation": { "label": "유형" }, @@ -2202,6 +2220,15 @@ }, "placeholder": "우수함, 좋음, 나쁨..." }, + "transformer": { + "label": "변압기 유형", + "options": { + "auto": "단권변압기", + "auxiliary": "보조변압기", + "distribution": "배전용 변압기", + "phase_angle_regulator": "이상변압기" + } + }, "trees": { "label": "나무" }, @@ -2235,6 +2262,18 @@ "stratovolcano": "성층화산" } }, + "voltage": { + "label": "전압" + }, + "voltage/primary": { + "label": "주전압" + }, + "voltage/secondary": { + "label": "이차 전압" + }, + "voltage/tertiary": { + "label": "3차 전압" + }, "wall": { "label": "유형" }, @@ -2262,6 +2301,22 @@ }, "wikipedia": { "label": "위키백과" + }, + "windings": { + "label": "권선 수", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "권선 배치", + "options": { + "delta": "삼각결선", + "leblanc": "르블랑 결선", + "open": "개방 권선", + "open-delta": "개방 삼각결선", + "scott": "스코트 결선", + "star": "성형결선", + "zigzag": "지그재그 결선" + } } }, "presets": { @@ -2585,6 +2640,9 @@ "name": "오토바이 주차장", "terms": "모터사이클 주차장" }, + "amenity/music_school": { + "name": "음악 학교" + }, "amenity/nightclub": { "name": "나이트클럽", "terms": "나이트 클럽" @@ -3264,9 +3322,9 @@ "name": "비계 설치자", "terms": "비계 설치자" }, - "craft/sculpter": { + "craft/sculptor": { "name": "조각가", - "terms": "조각가" + "terms": "조각사,조공" }, "craft/shoemaker": { "name": "구두공", @@ -3276,10 +3334,6 @@ "name": "석공", "terms": "석공" }, - "craft/sweep": { - "name": "굴뚝 청소부", - "terms": "굴뚝 청소부" - }, "craft/tailor": { "name": "재단사" }, @@ -3329,6 +3383,10 @@ "name": "소화전", "terms": "소화전" }, + "emergency/life_ring": { + "name": "구명부환", + "terms": "구명부표" + }, "emergency/no": { "name": "비상시 접근 금지" }, @@ -3415,7 +3473,8 @@ "name": "카이로프랙틱" }, "healthcare/audiologist": { - "name": "청능사" + "name": "청능사", + "terms": "귀,청력,소리" }, "healthcare/blood_donation": { "name": "헌혈의 집", @@ -3428,12 +3487,27 @@ "name": "조산사", "terms": "산파" }, + "healthcare/occupational_therapist": { + "name": "작업치료사" + }, "healthcare/optometrist": { - "name": "검안사" + "name": "검안사", + "terms": "눈,안경,라식,렌즈,시력" }, "healthcare/physiotherapist": { "name": "물리치료사" }, + "healthcare/podiatrist": { + "name": "족부의사", + "terms": "발,발톱" + }, + "healthcare/psychotherapist": { + "name": "심리치료사", + "terms": "임상심리사,상담심리사,불안,상담사,우울증,정신 건강,마음,자살" + }, + "healthcare/rehabilitation": { + "name": "재활 시설" + }, "healthcare/speech_therapist": { "name": "언어치료사" }, @@ -3500,10 +3574,6 @@ "name": "경로", "terms": "경로" }, - "highway/pedestrian": { - "name": "보행자 거리", - "terms": "보행자 거리" - }, "highway/primary": { "name": "주요 도로", "terms": "주요 도로" @@ -3680,6 +3750,9 @@ "name": "웅덩이", "terms": "웅덩이, 분지" }, + "landuse/brownfield": { + "name": "브라운필드" + }, "landuse/cemetery": { "name": "묘지", "terms": "묘지" @@ -3719,6 +3792,9 @@ "name": "잔디", "terms": "잔디" }, + "landuse/greenfield": { + "name": "그린필드" + }, "landuse/harbour": { "name": "항구", "terms": "항구" @@ -3727,6 +3803,13 @@ "name": "산업 지역", "terms": "산업 지역" }, + "landuse/industrial/scrap_yard": { + "name": "폐차장" + }, + "landuse/industrial/slaughterhouse": { + "name": "도축장", + "terms": "도살장" + }, "landuse/landfill": { "name": "쓰레기 매립지", "terms": "쓰레기 매립지" @@ -3803,6 +3886,9 @@ "name": "휴양지", "terms": "레크리에이션 지역" }, + "landuse/religious": { + "name": "종교 지역" + }, "landuse/residential": { "name": "주거 지역", "terms": "주거지역" @@ -3859,6 +3945,9 @@ "name": "야외 신체단련소", "terms": "야외 피트니스 장소" }, + "leisure/fitness_station/parallel_bars": { + "name": "평행봉" + }, "leisure/garden": { "name": "정원", "terms": "정원" @@ -3867,6 +3956,10 @@ "name": "골프장", "terms": "골프장" }, + "leisure/hackerspace": { + "name": "해커스페이스", + "terms": "메이커스페이스" + }, "leisure/horse_riding": { "name": "승마 시설", "terms": "승마 시설" @@ -3967,6 +4060,9 @@ "name": "육상 트랙 (달리기)", "terms": "육상 트랙 (달리기)" }, + "leisure/sauna": { + "name": "사우나" + }, "leisure/slipway": { "name": "선가대", "terms": "선양장, 슬립웨이" @@ -4125,6 +4221,10 @@ "name": "맨홀", "terms": "맨홀" }, + "manhole/drain": { + "name": "우수관", + "terms": "빗물 배수관" + }, "natural": { "name": "자연", "terms": "자연" @@ -4242,16 +4342,27 @@ "terms": "사무소" }, "office/accountant": { - "name": "회계 사무소", - "terms": "회계 사무소" + "name": "회계사 사무소" }, "office/administrative": { "name": "관리 사무소", "terms": "관리 사무소" }, + "office/adoption_agency": { + "name": "입양기관" + }, + "office/advertising_agency": { + "name": "광고 대행사" + }, "office/architect": { - "name": "건축사", - "terms": "건축사" + "name": "건축가 사무소" + }, + "office/association": { + "name": "비영리 단체 사무소", + "terms": "비영리조직,비영리기관" + }, + "office/charity": { + "name": "자선 단체 사무소" }, "office/company": { "name": "회사 사무실", @@ -4277,6 +4388,9 @@ "name": "금융 사무소", "terms": "금융 사무실" }, + "office/foundation": { + "name": "재단 사무소" + }, "office/government": { "name": "관청", "terms": "관공서,정부 청사" @@ -4285,14 +4399,16 @@ "name": "등기소", "terms": "등기소" }, + "office/government/tax": { + "name": "세무서" + }, + "office/guide": { + "name": "여행 가이드 사무소" + }, "office/insurance": { "name": "보험 사무소", "terms": "보험 사무실" }, - "office/it": { - "name": "IT 사무실", - "terms": "IT 사무소" - }, "office/lawyer": { "name": "법률 사무소", "terms": "법률 사무실" @@ -4301,14 +4417,20 @@ "name": "공증인 사무소", "terms": "공증인 사무소" }, + "office/moving_company": { + "name": "이삿짐센터" + }, "office/newspaper": { - "name": "신문사", - "terms": "신문사" + "name": "신문사 사무소" }, "office/ngo": { "name": "NGO 사무실", "terms": "비정부기구 사무실" }, + "office/notary": { + "name": "공증사무소", + "terms": "공증인" + }, "office/physician": { "name": "내과의원" }, @@ -4316,21 +4438,30 @@ "name": "정당", "terms": "정당" }, + "office/private_investigator": { + "name": "사설탐정 사무소", + "terms": "민간조사원" + }, + "office/quango": { + "name": "준정부조직 사무소" + }, "office/research": { "name": "연구 사무실", "terms": "연구 사무소" }, + "office/tax_advisor": { + "name": "세무사 사무소" + }, "office/telecommunication": { "name": "통신 사무실", "terms": "통신 사무소,통신 지사,전화국" }, - "office/therapist": { - "name": "치료원", - "terms": "치료원" - }, "office/travel_agent": { "name": "여행사" }, + "office/water_utility": { + "name": "수도사업소" + }, "piste": { "name": "활강/스키 트레일", "terms": "활강/스키 트레일" @@ -4385,15 +4516,9 @@ "name": "촌", "terms": "촌" }, - "playground/balance_beam": { - "name": "평균대" - }, "playground/climbing_frame": { "name": "정글짐" }, - "playground/horizontal_bar": { - "name": "철봉" - }, "playground/sandpit": { "name": "모래밭" }, @@ -4471,10 +4596,16 @@ "name": "버려진 철도", "terms": "버려진 철도" }, + "railway/buffer_stop": { + "name": "차막이" + }, "railway/crossing": { "name": "철도 건널목 (인도)", "terms": "철도 건널목 (인도)" }, + "railway/derail": { + "name": "탈선기" + }, "railway/disused": { "name": "폐선된 철도", "terms": "폐선된 철도" @@ -4507,6 +4638,9 @@ "name": "철로", "terms": "철도" }, + "railway/signal": { + "name": "철도신호" + }, "railway/station": { "name": "철도역", "terms": "역" @@ -4925,6 +5059,9 @@ "shop/ticket": { "name": "티켓 판매소" }, + "shop/tiles": { + "name": "타일 가게" + }, "shop/tobacco": { "name": "담배상점", "terms": "담배 판매업소" diff --git a/dist/locales/lt.json b/dist/locales/lt.json index 71fb82eda..17877110d 100644 --- a/dist/locales/lt.json +++ b/dist/locales/lt.json @@ -310,7 +310,6 @@ "localized_translation_language": "Pasirinkti kalbą", "localized_translation_name": "Pavadinimas" }, - "zoom_in_edit": "Padidinkite prieš redaguodami", "login": "prisijungti", "logout": "atsijungti", "loading_auth": "Jungiamasi prie OpenStreetMap...", @@ -548,8 +547,7 @@ "splash": { "welcome": "Jus sveikina iD OpenStreetMap redaktorius", "text": "iD yra draugiškas, bet galingas įrankis pildant didžiausią, atviriausią ir nemokamą/laisvą pasaulio žemėlapį. Šiuo metu naudojate versiją {version}. Daugiau informacijos rasite svetainėje {website}, o apie klaidas galite pranešti {github}.", - "walkthrough": "Pradėti pažingsninę demonstraciją", - "start": "Keisti dabar" + "walkthrough": "Pradėti pažingsninę demonstraciją" }, "source_switch": { "live": "gyva", @@ -579,10 +577,6 @@ "tag_suggests_area": "Žyma {tag} rodo, kad linija turėtų būti plotas, bet ji nėra plotas", "deprecated_tags": "Pasenusios žymos: {tags}" }, - "zoom": { - "in": "Sumažinti", - "out": "Padidinti" - }, "cannot_zoom": "Negalima atitolinti šiame režime.", "full_screen": "Perjungti pilną ekraną", "gpx": { @@ -2192,10 +2186,6 @@ "craft/scaffolder": { "name": "Pastolių montuotojas" }, - "craft/sculpter": { - "name": "Skulptorius", - "terms": "skulptorius" - }, "craft/shoemaker": { "name": "Batsiuvys", "terms": "Kurpius" @@ -2204,10 +2194,6 @@ "name": "Mūrininkas", "terms": "mūrininkas" }, - "craft/sweep": { - "name": "Kaminkrėtys", - "terms": "kaminkrėtys" - }, "craft/tailor": { "name": "Siuvėjas" }, @@ -2295,9 +2281,6 @@ "name": "Takas", "terms": "takas" }, - "highway/pedestrian": { - "name": "Pėsčiųjų gatvė" - }, "highway/primary": { "name": "Pagrindinis kelias" }, @@ -2687,17 +2670,9 @@ "name": "Biuras", "terms": "kontora" }, - "office/accountant": { - "name": "Buhalteris", - "terms": "buhalteris" - }, "office/administrative": { "name": "Administracinis biuras" }, - "office/architect": { - "name": "Architektas", - "terms": "architektas" - }, "office/company": { "name": "Kompanijos kontora" }, @@ -2723,17 +2698,9 @@ "name": "Draudimo įstaiga", "terms": "draudimas,draudimo kontora" }, - "office/it": { - "name": "IT kontora", - "terms": "it kontora,informacinės technologijos" - }, "office/lawyer": { "name": "Advokatų kontora" }, - "office/newspaper": { - "name": "Laikraštis", - "terms": "laikraštis" - }, "office/physician": { "name": "Gydytojas" }, @@ -2748,10 +2715,6 @@ "office/telecommunication": { "name": "Telekomunikacijų biuras" }, - "office/therapist": { - "name": "Terapeutas", - "terms": "Gydytojas" - }, "office/travel_agent": { "name": "Kelionių agentūra" }, @@ -3228,10 +3191,6 @@ "tourism/attraction": { "name": "Turistų traukos vieta" }, - "tourism/chalet": { - "name": "Sodyba", - "terms": "sodyba,kaimo sodyba" - }, "tourism/guest_house": { "name": "Svečių namai", "terms": "Svečių namai" diff --git a/dist/locales/lv.json b/dist/locales/lv.json index 9765e3d33..982804cf1 100644 --- a/dist/locales/lv.json +++ b/dist/locales/lv.json @@ -151,7 +151,6 @@ "translate": "Tulkot", "localized_translation_language": "Izvelties valodu" }, - "zoom_in_edit": "Pietuvināt, lai labotu", "logout": "atslēgties", "loading_auth": "Savienojas ar OpenStreetMap...", "status": { @@ -230,8 +229,7 @@ "cancel": "Atcelt" }, "splash": { - "welcome": "Laipni lūgti iD OpenStreetMap redaktorā", - "start": "Labot tagad" + "welcome": "Laipni lūgti iD OpenStreetMap redaktorā" }, "source_switch": { "live": "live", @@ -249,10 +247,6 @@ "tag_suggests_area": "Apzīmējums {tag} parasti tiek lietots apgabaliem, bet objekts nav apgabals", "deprecated_tags": "Novecojuši apzīmējumi: {tags}" }, - "zoom": { - "in": "Pietuvināt", - "out": "Attālināt" - }, "help": { "title": "Palīdzība" }, diff --git a/dist/locales/mk.json b/dist/locales/mk.json index 404266ba5..79631b091 100644 --- a/dist/locales/mk.json +++ b/dist/locales/mk.json @@ -218,7 +218,6 @@ "localized_translation_language": "Изберете јазик", "localized_translation_name": "Име" }, - "zoom_in_edit": "Приближете за да уредувате", "login": "најава", "logout": "одјава", "loading_auth": "Се поврзувам со OpenStreetMap...", @@ -439,8 +438,7 @@ "splash": { "welcome": "Добре дојдовте на уредникот ID за OpenStreetMap", "text": "iD е достапна, но моќна алатка за учество во најдобрата слободна карта на светот. Ова е верзијата {version}. Повеќе информации ќе најдете на {website}. Грешките пријавувајте ги на {github}.", - "walkthrough": "Започнете ја прошетката", - "start": "Уреди сега" + "walkthrough": "Започнете ја прошетката" }, "source_switch": { "live": "во живо", @@ -462,10 +460,6 @@ "tag_suggests_area": "Ознаката {tag} укажува дека линијата треба да е подрачје, но не е.", "deprecated_tags": "Застарени ознаки: {tags}" }, - "zoom": { - "in": "Приближи", - "out": "Оддалечи" - }, "cannot_zoom": "Не можам повеќе да приближувам во тековниот режим.", "full_screen": "Полн екран", "mapillary_images": { @@ -2400,10 +2394,6 @@ "name": "Скелар", "terms": "<преведете со истозначници или сродни поими на „Скелар“, одделени со запирки>" }, - "craft/sculpter": { - "name": "Вајар", - "terms": "<преведете со истозначници или сродни поими на „Вајар“, одделени со запирки>" - }, "craft/shoemaker": { "name": "Чевлар", "terms": "<преведете со истозначници или сродни поими на „Чевлар“, одделени со запирки>" @@ -2412,10 +2402,6 @@ "name": "Каменорезец", "terms": "<преведете со истозначници или сродни поими на „Каменорезец“, одделени со запирки>" }, - "craft/sweep": { - "name": "Оџачар", - "terms": "<преведете со истозначници или сродни поими на „Оџачар“, одделени со запирки>" - }, "craft/tailor": { "name": "Кројач" }, @@ -2604,10 +2590,6 @@ "name": "Патека", "terms": "<преведете со истозначници или сродни поими на „Патека“, одделени со запирки>" }, - "highway/pedestrian": { - "name": "Пешачка улица", - "terms": "<преведете со истозначници или сродни поими на „Пешачка улица“, одделени со запирки>" - }, "highway/primary": { "name": "Главен пат", "terms": "<преведете со истозначници или сродни поими на „Главен пат“, одделени со запирки>" @@ -3270,18 +3252,10 @@ "name": "Канцеларија", "terms": "<преведете со истозначници или сродни поими на „Канцеларија“, одделени со запирки>" }, - "office/accountant": { - "name": "Сметководител", - "terms": "<преведете со истозначници или сродни поими на „Сметководител“, одделени со запирки>" - }, "office/administrative": { "name": "Администрација", "terms": "<преведете со истозначници или сродни поими на „Администрација“, одделени со запирки>" }, - "office/architect": { - "name": "Архитект", - "terms": "<преведете со истозначници или сродни поими на „Архитект“, одделени со запирки>" - }, "office/company": { "name": "Претпријатие", "terms": "<преведете со истозначници или сродни поими на „Претпријатие“, одделени со запирки>" @@ -3314,18 +3288,10 @@ "name": "Осигурително друштво", "terms": "<преведете со истозначници или сродни поими на „Осигурително друштво“, одделени со запирки>" }, - "office/it": { - "name": "Информатичка служба", - "terms": "<преведете со истозначници или сродни поими на „Информатичка служба“, одделени со запирки>" - }, "office/lawyer": { "name": "Правник", "terms": "<преведете со истозначници или сродни поими на „Правник“, одделени со запирки>" }, - "office/newspaper": { - "name": "Весник", - "terms": "<преведете со истозначници или сродни поими на „Весник“, одделени со запирки>" - }, "office/ngo": { "name": "НВО", "terms": "<преведете со истозначници или сродни поими на „НВО“, одделени со запирки>" @@ -3345,10 +3311,6 @@ "name": "Телекомуникациска служба", "terms": "<преведете со истозначници или сродни поими на „Телекомуникациска служба“, одделени со запирки>" }, - "office/therapist": { - "name": "Терапевт", - "terms": "<преведете со истозначници или сродни поими на „Терапевт“, одделени со запирки>" - }, "office/travel_agent": { "name": "Туристичка агенција" }, @@ -4011,10 +3973,6 @@ "name": "Трајлерски камп", "terms": "<преведете со истозначници или сродни поими на „Трајлерски камп“, одделени со запирки>" }, - "tourism/chalet": { - "name": "Планинска викендичка", - "terms": "<преведете со истозначници или сродни поими на „Планинска викендичка“, одделени со запирки>" - }, "tourism/gallery": { "name": "Уметничка галерија", "terms": "<преведете со истозначници или сродни поими на „Уметничка галерија“, одделени со запирки>" diff --git a/dist/locales/ms.json b/dist/locales/ms.json index c57478407..7b1883db0 100644 --- a/dist/locales/ms.json +++ b/dist/locales/ms.json @@ -310,7 +310,6 @@ "localized_translation_language": "Pilih bahasa", "localized_translation_name": "Nama" }, - "zoom_in_edit": "Zum masuk untuk Menyunting", "login": "log masuk", "logout": "log keluar", "loading_auth": "Berhubung ke OpenStreetMap...", @@ -598,8 +597,7 @@ "splash": { "welcome": "Selamat datang! Ini ialah penyunting iD OpenStreetMap", "text": "Penyunting iD ialah suatu alat yang berkuasa tinggi tetapi sangat mudah digunakan untuk membuat sumbangan terhadap peta percuma yang terunggul di dunia. Ini ialah versi {version}. Untuk maklumat lanjut sila layari {website} dan laporkan pepijat di {github}.", - "walkthrough": "Mulakan Panduan", - "start": "Sunting Sekarang" + "walkthrough": "Mulakan Panduan" }, "source_switch": { "live": "live", @@ -631,10 +629,6 @@ "tag_suggests_area": "Tanda {tag} mencadangkan garis sepatutnya menjadi kawasan, tetapi ianya bukan kawasan", "deprecated_tags": "Tag-tag yang telah lapuk: {tags}" }, - "zoom": { - "in": "Zum Dekat", - "out": "Zum Jauh" - }, "cannot_zoom": "Had zum jauh telah dicapai dalam mod yang sedang dipakai.", "full_screen": "Togol Skrin Penuh", "gpx": { diff --git a/dist/locales/nl.json b/dist/locales/nl.json index a0a01d303..cecc4f2d4 100644 --- a/dist/locales/nl.json +++ b/dist/locales/nl.json @@ -310,7 +310,6 @@ "localized_translation_language": "Selecteer taal", "localized_translation_name": "Naam" }, - "zoom_in_edit": "Zoom in om aan te passen", "login": "login", "logout": "Afmelden", "loading_auth": "Aan het verbinden met OpenStreetMap …", @@ -612,8 +611,7 @@ "splash": { "welcome": "Welkom bij iD, een bewerkingsprogramma voor OpenStreetMap", "text": "iD biedt een gebruiksvriendelijke en krachtige manier om bij te dragen aan de beste, open wereldkaart ter wereld. Dit is versie {version}. Voor meer informatie, zie {website} en meld softwarefouten op {github}.", - "walkthrough": "Start de rondleiding", - "start": "Pas nu aan" + "walkthrough": "Start de rondleiding" }, "source_switch": { "live": "live", @@ -645,10 +643,6 @@ "tag_suggests_area": "De tag {tag} suggereert dat de lijn een vlak is, maar het is geen vlak", "deprecated_tags": "Afgeschafte tags: {tags}" }, - "zoom": { - "in": "Inzoomen", - "out": "Uitzoomen" - }, "cannot_zoom": "Kan niet verder uitzoomen in huidige modus", "full_screen": "Volledig scherm aan/uit", "gpx": { @@ -2774,8 +2768,7 @@ "terms": "school,onderwijs,secundair onderwijs,lager onderwijs,basisschool,middelbaar,voortgezet onderwijs" }, "amenity/scrapyard": { - "name": "Sloperij", - "terms": "autokerkhof,oud ijzer,wrakken,schroothoop,metaal" + "name": "Sloperij" }, "amenity/shelter": { "name": "Beschutting", @@ -3327,10 +3320,6 @@ "name": "Stellingenmaker", "terms": "stellagemaker" }, - "craft/sculpter": { - "name": "Beeldhouwer", - "terms": "beeldhouwer" - }, "craft/shoemaker": { "name": "Schoenmaker", "terms": "schoenenmaker" @@ -3339,10 +3328,6 @@ "name": "Metselaar", "terms": "metselaar" }, - "craft/sweep": { - "name": "Schoorsteenveger", - "terms": "schouwveger" - }, "craft/tailor": { "name": "Kleermaker" }, @@ -3610,10 +3595,6 @@ "name": "Pad", "terms": "wandelpad,fietspad,gemengd wandelpad en fietspad,hikepad" }, - "highway/pedestrian": { - "name": "Voetgangersstraat", - "terms": "voetgangersgebied,voetgangerszone,autovrij gebied,autovrije zone" - }, "highway/primary": { "name": "Hoofdweg", "terms": "provinciale weg,primaire weg,gewestweg,provincieweg" @@ -4338,17 +4319,10 @@ "name": "Kantoor", "terms": "bureau" }, - "office/accountant": { - "name": "Boekhouder" - }, "office/administrative": { "name": "Bestuurlijke instantie", "terms": "administratief kantoor" }, - "office/architect": { - "name": "Architect", - "terms": "tekenaar" - }, "office/company": { "name": "Bedrijfskantoor", "terms": "bedrijfsbureau,hoofdkwartier,bedrijfsvestiging,bureau,kantoor" @@ -4384,10 +4358,6 @@ "name": "Verzekeringskantoor", "terms": "verzekeringsmakelaarkantoor,makelaarkantoor" }, - "office/it": { - "name": "Kantoor van computerspecialist", - "terms": "computer,elektronica,hardware,software,IT,ICT" - }, "office/lawyer": { "name": "Advocatenkantoor", "terms": "advocatenbureau,wetsgeleerden" @@ -4396,10 +4366,6 @@ "name": "Notariaat", "terms": "notaris,akte,testament" }, - "office/newspaper": { - "name": "Krantredactie", - "terms": "redactie,nieuwsredactie,krantenredactie" - }, "office/ngo": { "name": "Kantoor van NGO", "terms": "niet-gouvernementele organisatie,vzw,ngo,kantoor van vzw,bureau van vzw,kantoor van ngo,kantoor van vzw,vereniging zonder winstoogmerk" @@ -4419,10 +4385,6 @@ "name": "Telecomkantoor", "terms": "belwinkel,gsm-winkel,telcokantoor" }, - "office/therapist": { - "name": "Therapeut", - "terms": "behandelaar,kliniek" - }, "office/travel_agent": { "name": "Reisbureau" }, @@ -4479,9 +4441,6 @@ "playground/climbing_frame": { "name": "Klimrek" }, - "playground/rocker": { - "name": "Veertoestel" - }, "playground/roundabout": { "name": "Speel rotonde" }, @@ -5154,10 +5113,6 @@ "name": "Caravan-/kampeerwagenterrein", "terms": "caravans,kampeerwagens,campers,motorhomes,mobilehomes,terrein voor kampeerwagens" }, - "tourism/chalet": { - "name": "Chalet", - "terms": "chalet,vakantiehuis,vakantiehuisje,huisje,bungalow" - }, "tourism/gallery": { "name": "Kunstgallerij", "terms": "tentoonstelling,exposé,gallerij,kunstgallerie,gallerie" diff --git a/dist/locales/no.json b/dist/locales/no.json index d7126fb69..3b92aba77 100644 --- a/dist/locales/no.json +++ b/dist/locales/no.json @@ -310,7 +310,6 @@ "localized_translation_language": "Velg språk", "localized_translation_name": "Navn" }, - "zoom_in_edit": "Zoom inn for å redigere", "login": "logg inn", "logout": "logg ut", "loading_auth": "Kobler til OpenStreetMap...", @@ -586,8 +585,7 @@ "splash": { "welcome": "Velkommen til iD OpenStreetMap editor", "text": "iD er et brukervennlig, men kraftig verktøy for å bidra til verdens beste frie kart. Dette er versjon {version}. For mer informasjon, se {website} og meld om feil på {github}.", - "walkthrough": "Begynn Gjennomgangen", - "start": "Rediger nå" + "walkthrough": "Begynn Gjennomgangen" }, "source_switch": { "live": "direkte", @@ -617,10 +615,6 @@ "tag_suggests_area": "Taggen {tag} anbefaler at linje bør være et areal, men dette er ikke et areal", "deprecated_tags": "Utgående tagger: {tags}" }, - "zoom": { - "in": "Forstørr", - "out": "Forminsk" - }, "cannot_zoom": "Kan ikke zoome ut lenger i gjeldende modus.", "full_screen": "Skru av/på fullskjerm.", "gpx": { @@ -2028,18 +2022,12 @@ "craft/scaffolder": { "name": "Stillasbygger" }, - "craft/sculpter": { - "name": "Skulptør" - }, "craft/shoemaker": { "name": "Skomaker" }, "craft/stonemason": { "name": "Steinhugger" }, - "craft/sweep": { - "name": "Feier" - }, "craft/tailor": { "name": "Skredder" }, @@ -2142,9 +2130,6 @@ "highway/path": { "name": "Sti" }, - "highway/pedestrian": { - "name": "Gågate" - }, "highway/primary": { "name": "Primær hovedvei" }, @@ -2496,18 +2481,9 @@ "office": { "name": "Kontor" }, - "office/accountant": { - "name": "Regnskapsfører" - }, - "office/architect": { - "name": "Arkitekt" - }, "office/lawyer": { "name": "Advokatkontor" }, - "office/newspaper": { - "name": "Avisredaksjon" - }, "office/political_party": { "name": "Politisk parti" }, @@ -2928,9 +2904,6 @@ "tourism/attraction": { "name": "Turistattraksjon" }, - "tourism/chalet": { - "name": "Hytte" - }, "tourism/gallery": { "name": "Kunstgalleri" }, diff --git a/dist/locales/pl.json b/dist/locales/pl.json index e0b27806c..e2a8bd431 100644 --- a/dist/locales/pl.json +++ b/dist/locales/pl.json @@ -352,7 +352,7 @@ "key": "I", "background": { "key": "B", - "title": "Warstawa tła", + "title": "Warstwa tła", "zoom": "Powiększenie", "vintage": "Datowanie", "source": "Źródło", @@ -361,7 +361,9 @@ "accuracy": "Dokładność", "unknown": "Nieznane", "show_tiles": "Pokaż dane kafli", - "hide_tiles": "Ukryj dane kafli" + "hide_tiles": "Ukryj dane kafli", + "show_vintage": "Pokaż datowanie", + "hide_vintage": "Ukryj datowanie" }, "history": { "key": "H", @@ -613,7 +615,7 @@ "welcome": "Witamy w iD, edytorze map OpenStreetMap", "text": "iD jest przyjaznym, ale i jednocześnie potężnym narzędziem, dzięki któremu możesz przyczynić się do rozwoju najlepszej wolnej mapy świata. To jest wersja {version}. Więcej informacji znajdziesz na {website}, a błędy zgłosisz na {github}.", "walkthrough": "Rozpocznij samouczek", - "start": "Edytuj teraz" + "start": "Edytuj" }, "source_switch": { "live": "live", @@ -659,15 +661,22 @@ }, "mapillary_images": { "tooltip": "Zdjęcia z serwisu Mapillary", - "title": "Nakładka zdjęć (Mapillary)" + "title": "Nakładka ze zdjęciami (Mapillary)" }, "mapillary_signs": { "tooltip": "Znaki drogowe z Mapillary (włączy Nakładkę zdjęć)", - "title": "Nakładka z znakami drogowymi (Mapillary)" + "title": "Nakładka ze znakami drogowymi (Mapillary)" }, "mapillary": { "view_on_mapillary": "Zobacz ten obraz w Mapillary" }, + "openstreetcam_images": { + "tooltip": "Zdjęcia z poziomu ulicy z OpenStreetCam", + "title": "Nakładka ze zdjęciami (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Zobacz to zdjęcie na OpenStreetCam" + }, "help": { "title": "Pomoc", "key": "H", @@ -1217,6 +1226,9 @@ "aeroway": { "label": "Typ" }, + "agrarian": { + "label": "Asortyment" + }, "amenity": { "label": "Typ" }, @@ -1236,7 +1248,7 @@ "label": "Dzieło sztuki" }, "artwork_type": { - "label": "Typ" + "label": "Rodzaj" }, "atm": { "label": "Bankomat" @@ -1285,6 +1297,9 @@ "board_type": { "label": "Typ" }, + "boules": { + "label": "Rodzaj" + }, "boundary": { "label": "Typ" }, @@ -1304,6 +1319,9 @@ "bunker_type": { "label": "Typ" }, + "cables": { + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Kierunek (w stopniach, zgodnie z ruchem wskazówek zegara)", "placeholder": "45, 90, 180, 270" @@ -1389,6 +1407,14 @@ "craft": { "label": "Typ" }, + "crane/type": { + "label": "Rodzaj żurawia", + "options": { + "floor-mounted_crane": "Przymocowany do podłoża", + "portal_crane": "Bramowy", + "travel_lift": "Transportowy" + } + }, "crop": { "label": "Rodzaj uprawy" }, @@ -1461,6 +1487,10 @@ "description": { "label": "Opis obiektu" }, + "devices": { + "label": "Liczba urządzeń", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Dostępny przewijak dla dzieci" }, @@ -1535,6 +1565,9 @@ "wall": "Mur" } }, + "fitness_station": { + "label": "Rodzaj urządzeń" + }, "fixme": { "label": "Popraw mnie (fixme)" }, @@ -1542,6 +1575,9 @@ "label": "Rodzaj", "placeholder": "Domyślny" }, + "frequency": { + "label": "Częstotliwość pracy" + }, "fuel": { "label": "Paliwo" }, @@ -1584,6 +1620,7 @@ "label": "Poręcz" }, "hashtags": { + "label": "Proponowane hasztagi", "placeholder": "#przykład" }, "healthcare": { @@ -1634,7 +1671,7 @@ "label": "Inskrypcja" }, "intermittent": { - "label": "Okresowy" + "label": "Okresowość" }, "internet_access": { "label": "Dostęp do internetu", @@ -1899,6 +1936,10 @@ "payment_multi": { "label": "Rodzaje płatności" }, + "phases": { + "label": "Liczba faz", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefon", "placeholder": "+48 42 123 4567" @@ -1951,6 +1992,15 @@ "label": "Moc wyjściowa", "placeholder": "500 MW, 1000 MW, 2000 MW..." }, + "playground/baby": { + "label": "Dla niemowląt" + }, + "playground/max_age": { + "label": "Maksymalny wiek dziecka" + }, + "playground/min_age": { + "label": "Minimalny wiek dziecka" + }, "population": { "label": "Liczba ludności" }, @@ -1969,6 +2019,9 @@ "railway": { "label": "Typ" }, + "rating": { + "label": "Moc" + }, "recycling_accepts": { "label": "Przyjmuje" }, @@ -2167,9 +2220,19 @@ }, "placeholder": "Nieznane" }, + "structure_waterway": { + "label": "Konstrukcja", + "options": { + "tunnel": "Tunel" + }, + "placeholder": "Brak" + }, "studio": { "label": "Typ" }, + "substance": { + "label": "Substancja chemiczna" + }, "substation": { "label": "Typ" }, @@ -2196,6 +2259,15 @@ "surveillance/zone": { "label": "Obszar Dozoru" }, + "switch": { + "label": "Rodzaj", + "options": { + "circuit_breaker": "Wyłącznik", + "disconnector": "Odłącznik", + "earthing": "Uziemnik", + "mechanical": "Mechaniczny" + } + }, "tactile_paving": { "label": "Wypustki dla niewidomych" }, @@ -2247,6 +2319,9 @@ }, "placeholder": "Utwardzona, nieubita..." }, + "trade": { + "label": "Rodzaj" + }, "traffic_calming": { "label": "Rodzaj" }, @@ -2265,6 +2340,16 @@ }, "placeholder": "Doskonała, Dobra, Zła..." }, + "transformer": { + "label": "Rodzaj transformatora", + "options": { + "auto": "Autotransformator", + "auxiliary": "Potrzeb własnych", + "converter": "Przekształtnik", + "traction": "Trakcyjny", + "yes": "Nieznany" + } + }, "trees": { "label": "Drzewa" }, @@ -2299,6 +2384,18 @@ "stratovolcano": "Stratowulkan" } }, + "voltage": { + "label": "Napięcie" + }, + "voltage/primary": { + "label": "Napięcie pierwotne" + }, + "voltage/secondary": { + "label": "Napięcie wtórne" + }, + "voltage/tertiary": { + "label": "Napięcie trzeciorzędne" + }, "wall": { "label": "Typ" }, @@ -2326,6 +2423,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Liczba uzwojeń", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Układ połączeń", + "options": { + "delta": "Trójkąt", + "leblanc": "Leblanc", + "open": "Otwarty", + "open-delta": "Otwarty trójkąt", + "scott": "Scott", + "star": "Gwiazdowy", + "zigzag": "Zygzak" + } } }, "presets": { @@ -2448,7 +2561,7 @@ }, "amenity/bank": { "name": "Bank", - "terms": "bankowość, kasa" + "terms": "bankowość, kasa, skok" }, "amenity/bar": { "name": "Bar alkoholowy", @@ -2649,6 +2762,10 @@ "name": "Parking dla motocyklów", "terms": "miejsce postojowe dla motocyklów" }, + "amenity/music_school": { + "name": "Szkoła muzyczna niepodlegająca MEN", + "terms": "nauka gry, kursy muzyczne, lekcje muzyki" + }, "amenity/nightclub": { "name": "Klub nocny", "terms": "klub dla dorosłych, striptease" @@ -2772,8 +2889,7 @@ "terms": "tereny szkolne" }, "amenity/scrapyard": { - "name": "Złomowisko", - "terms": "skład złomu, składowisko złomu" + "name": "Złomowisko" }, "amenity/shelter": { "name": "Schronienie", @@ -2918,7 +3034,8 @@ "terms": "typ nawierzchni" }, "attraction/amusement_ride": { - "name": "przejażdżka-atrakcja (ogólna)" + "name": "przejażdżka-atrakcja (ogólna)", + "terms": "przejażdżka-atrakcja (ogólna)" }, "attraction/animal": { "name": "Zwierzę", @@ -2940,6 +3057,14 @@ "name": "Karuzela", "terms": "karuzela" }, + "attraction/dark_ride": { + "name": "Mroczna przejażdżka", + "terms": "dark ride, mroczna przejażdżka, mroczny przejazd, pałac strachów" + }, + "attraction/drop_tower": { + "name": "Wieża Swobodnego Spadania", + "terms": "wieża spadania" + }, "attraction/pirate_ship": { "name": "Statek piracki", "terms": "statek piracki" @@ -3228,6 +3353,10 @@ "name": "Zegarmistrz", "terms": "zegarmistrz" }, + "craft/confectionery": { + "name": "Cukiernik", + "terms": "cukiernik, wytwórca słodyczy" + }, "craft/distillery": { "name": "Gorzelnia", "terms": "wytwórnia napojów alkoholowych, destylarnia" @@ -3329,9 +3458,9 @@ "name": "Rusztowania", "terms": "Wyrób rusztowań" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Rzeźbiarz", - "terms": "rzeźby" + "terms": "rzeźbiarz" }, "craft/shoemaker": { "name": "Szewc", @@ -3341,10 +3470,6 @@ "name": "Zakład kamieniarski", "terms": "kamieniarz" }, - "craft/sweep": { - "name": "Kominiarz", - "terms": "Kominiarz" - }, "craft/tailor": { "name": "Krawiec" }, @@ -3483,10 +3608,12 @@ "terms": "przeszkoda wodna" }, "healthcare": { - "name": "Placówka służby zdrowia" + "name": "Placówka służby zdrowia", + "terms": "placówka służby zdrowia" }, "healthcare/alternative": { - "name": "Medycyna alternatywna" + "name": "Medycyna alternatywna", + "terms": "medycyna alternatywna" }, "healthcare/alternative/chiropractic": { "name": "Kręgarz", @@ -3559,10 +3686,18 @@ "name": "Przejście dla pieszych", "terms": "Przejście drogowe" }, + "highway/crossing-raised": { + "name": "Przejście dla pieszych-podwyższone", + "terms": "podwyższone przejście dla pieszych, wyniesione przejście dla pieszych" + }, "highway/crosswalk": { "name": "Przejście dla pieszych", "terms": "Przejście drogowe" }, + "highway/crosswalk-raised": { + "name": "Przejście dla pieszych-podwyższone i oznakowane", + "terms": "podwyższone oznakowane przejście dla pieszych" + }, "highway/cycleway": { "name": "Droga rowerowa", "terms": "droga,rowerowa,ścieżka,rowerów" @@ -3603,8 +3738,12 @@ "name": "Ścieżka/droga ", "terms": "ścieżka,dróżka" }, - "highway/pedestrian": { - "name": "Ciąg pieszy", + "highway/pedestrian_area": { + "name": "Plac - deptak", + "terms": "plac, skwer, deptak" + }, + "highway/pedestrian_line": { + "name": "Ulica - deptak", "terms": "deptak" }, "highway/primary": { @@ -3783,6 +3922,10 @@ "name": "Zbiornik wodny", "terms": "zbiornik,wodny,retencyjny" }, + "landuse/brownfield": { + "name": "Teren pod ponowną zabudowę", + "terms": "teren poprzemysłowy, teren powyburzeniowy" + }, "landuse/cemetery": { "name": "Cmentarz", "terms": "cmentarz" @@ -3822,6 +3965,10 @@ "name": "Trawa", "terms": "trawa, trawnik, " }, + "landuse/greenfield": { + "name": "Teren niezabudowany", + "terms": "teren niezabudowany" + }, "landuse/harbour": { "name": "Port morski", "terms": "port morski,port" @@ -3906,6 +4053,10 @@ "name": "Tereny rekreacyjne", "terms": "rekreacja,odpoczynek" }, + "landuse/religious": { + "name": "Teren dla celów religijnych", + "terms": "teren kościelny, teren religijny" + }, "landuse/residential": { "name": "Zabudowa mieszkaniowa", "terms": "Teren zamieszkały" @@ -3970,6 +4121,10 @@ "name": "Pole golfowe", "terms": "pole golfowe" }, + "leisure/hackerspace": { + "name": "Hackerspace", + "terms": "hackerspace, hackspace, hacklab, makerspace, creative space " + }, "leisure/horse_riding": { "name": "Jazda konna", "terms": "jazda konna" @@ -4018,6 +4173,10 @@ "name": "Boisko do gry w siatkówkę plażową", "terms": "Siatkówka plażowa" }, + "leisure/pitch/boules": { + "name": "Bule", + "terms": "bule, petanka" + }, "leisure/pitch/bowls": { "name": "Pole do gry w bowls", "terms": "bowls" @@ -4070,6 +4229,10 @@ "name": "Bieżnia (Bieganie)", "terms": "bieżnia,tor,bieg" }, + "leisure/sauna": { + "name": "Sauna", + "terms": "sauna" + }, "leisure/slipway": { "name": "Pochylnia okrętowa", "terms": "pochylnia" @@ -4122,6 +4285,10 @@ "name": "Komin", "terms": "kominek" }, + "man_made/crane": { + "name": "Żuraw stacjonarny", + "terms": "żuraw, dźwig" + }, "man_made/cutline": { "name": "Przecinka leśna", "terms": "przecinka" @@ -4349,14 +4516,14 @@ "name": "Biuro", "terms": "Biuro," }, - "office/accountant": { - "name": "Księgowy", - "terms": "biuro rachunkowe, księgowość, rachun" - }, "office/administrative": { "name": "Biuro samorządowe", "terms": "Urząd" }, + "office/advertising_agency": { + "name": "Agencja reklamowa", + "terms": "reklama, agencja reklamowa" + }, "office/architect": { "name": "Architekt", "terms": "studio architektoniczne, biuro architektoniczne, pracownia architektoniczna" @@ -4398,7 +4565,7 @@ "terms": "agencja ubezpieczeniowa" }, "office/it": { - "name": "Biuro firmy informatycznej", + "name": "Firma informatyczna", "terms": "firma it, firma informatyczna" }, "office/lawyer": { @@ -4409,14 +4576,22 @@ "name": "Notariusz", "terms": "sekretarz,akt,majątek" }, + "office/moving_company": { + "name": "Biuro firmy przeprowadzkowej", + "terms": "przeprowadzki" + }, "office/newspaper": { - "name": "Gazeta", - "terms": "dziennik" + "name": "Siedziba wydawcy gazety", + "terms": "gazeta, dziennik, tygodnik" }, "office/ngo": { "name": "Biuro organizacji pożytku publicznego", "terms": "stowarzyszenie, fundacja,ngo" }, + "office/notary": { + "name": "Notariusz", + "terms": "notariusz" + }, "office/physician": { "name": "Lekarz" }, @@ -4424,17 +4599,25 @@ "name": "Partia polityczna", "terms": "partia polityczna" }, + "office/private_investigator": { + "name": "Prywatny detektyw", + "terms": "prywatny detektyw" + }, "office/research": { "name": "Biuro badawcze", "terms": "instytut badawczy" }, + "office/tax_advisor": { + "name": "Biuro rachunkowe", + "terms": "biuro rachunkowe, podatki" + }, "office/telecommunication": { "name": "Biuro firmy telekomunikacyjnej", "terms": "telekomunikacja" }, "office/therapist": { "name": "Terapeuta", - "terms": "terapeuta" + "terms": "terapeuta, fizjoterapeuta" }, "office/travel_agent": { "name": "Biuro podróży" @@ -4461,6 +4644,10 @@ "name": "Wyspa", "terms": "Wyspa" }, + "place/islet": { + "name": "Wysepka", + "terms": "wysepka, mała wyspa" + }, "place/isolated_dwelling": { "name": "Pojedyncze zabudowania", "terms": "odosobnione zabudowanie mieszkalne" @@ -4473,6 +4660,10 @@ "name": "Sąsiedztwo", "terms": "osiedle,okolica" }, + "place/plot": { + "name": "Działka", + "terms": "działka, ewidencja gruntów" + }, "place/quarter": { "name": "Kwartał", "terms": "kwartał,osiedle,dzielnica" @@ -4493,8 +4684,32 @@ "name": "Wieś", "terms": "wieś, wioska" }, + "playground/basket_spinner": { + "name": "Kosz obrotowy", + "terms": "kosz obrotowy" + }, + "playground/basket_swing": { + "name": "Huśtawka bocianie gniazdo", + "terms": "bocianie gniazdo" + }, + "playground/climbing_frame": { + "name": "Drabinki", + "terms": "drabinki, wspinaczka, konstrukcja do wspinania" + }, + "playground/cushion": { + "name": "Dmuchana trampolina", + "terms": "trampolina, dmuchaniec" + }, + "playground/rocker": { + "name": "Bujak sprężynowy", + "terms": "bujak sprężynowy, sprężynowiec" + }, + "playground/roundabout": { + "name": "Karuzela", + "terms": "karuzela" + }, "playground/sandpit": { - "name": "Piaskowanica", + "name": "Piaskownica", "terms": "piaskownica" }, "playground/seesaw": { @@ -4505,10 +4720,18 @@ "name": "Zjeżdzalnia", "terms": "zjeżdzalnia" }, + "playground/structure": { + "name": "Zestaw zabawowy", + "terms": "zestaw zabawowy, budowla" + }, "playground/swing": { "name": "Huśtawka", "terms": "huśtawka" }, + "playground/zipwire": { + "name": "Zjazd linowy", + "terms": "zjazd linowy" + }, "point": { "name": "Punkt", "terms": "węzeł" @@ -4669,6 +4892,10 @@ "name": "Sklep", "terms": "Sklep" }, + "shop/agrarian": { + "name": "Sklep rolniczy", + "terms": "rolniczy, produkcja rolna, pasze, nasiona, sprzęt rolniczy, pestycydy, części do maszyn rolniczych" + }, "shop/alcohol": { "name": "Sklep monopolowy", "terms": "alkohol" @@ -5091,6 +5318,10 @@ "name": "Sprzedaż biletów", "terms": "kasa biletowa" }, + "shop/tiles": { + "name": "Sklep z płytkami ceramicznymi", + "terms": "płytki, gres" + }, "shop/tobacco": { "name": "Sklep z tytoniem", "terms": "Sklep tytoniowy" @@ -5099,6 +5330,10 @@ "name": "Sklep z zabawkami", "terms": "zabawki, sklep zabawkarski" }, + "shop/trade": { + "name": "Skład branżowy", + "terms": "skład drewna, skład budowlany, hurtownia budowlana, skład opału" + }, "shop/travel_agency": { "name": "Biuro podróży", "terms": "Biuro podróży, " @@ -5179,8 +5414,8 @@ "terms": "kemping dla samochodów kempingowych" }, "tourism/chalet": { - "name": "Drewniana chata", - "terms": "domek kempingowy" + "name": "Domek/domki na wynajem", + "terms": "domek, domki, letnisko" }, "tourism/gallery": { "name": "Galeria lub muzeum (sztuka)", @@ -5278,6 +5513,10 @@ "name": "Linia wibracyjna", "terms": "linia wibracyjna, wibracyjne oznakowanie poziome" }, + "traffic_calming/table": { + "name": "Próg zwalniający z długą płaską nawierzchnią", + "terms": "długi próg zwalniający" + }, "type/boundary": { "name": "Granica", "terms": "granica" @@ -5456,7 +5695,7 @@ }, "imagery": { "Bing": { - "description": "Zdjęcia satelitarne i lotnicze.", + "description": "Zdjęcia satelitarne i lotnicze Bing.", "name": "Bing (satelitarne)" }, "DigitalGlobe-Premium": { @@ -5466,6 +5705,13 @@ "description": "Zdjęcia satelitarne DigitalGlobe Premium.", "name": "DigitalGlobe Premium (satelitarne)" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Warunki użytkowania i opinia" + }, + "description": "Granice zdjęć i data ich wykonania. Opisy są widoczne na poziomie powiększenia 14 i wyższym.", + "name": "Datowanie zdjęć DigitalGlobe Premium " + }, "DigitalGlobe-Standard": { "attribution": { "text": "Warunki użytkowania i opinia" @@ -5473,12 +5719,19 @@ "description": "Zdjęcia satelitarne DigitalGlobe Standard.", "name": "DigitalGlobe Standard (satelitarne)" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Warunki użytkowania i opinia" + }, + "description": "Granice zdjęć i data ich wykonania. Opisy są widoczne na poziomie powiększenia 14 i wyższym.", + "name": "Datowanie zdjęć DigitalGlobe Standard" + }, "EsriWorldImagery": { "attribution": { "text": "Warunki użytkowania i opinia" }, - "description": "Obrazowanie świata Esri.", - "name": "Obrazowanie świata Esri" + "description": "Zdjęcia satelitarne i lotnicze Esri.", + "name": "Esri (satelitarne i lotnicze)" }, "MAPNIK": { "attribution": { @@ -5491,7 +5744,7 @@ "attribution": { "text": "Warunki użytkowania i opinia" }, - "description": "Zdjęcia satelitarne i lotnicze.", + "description": "Zdjęcia satelitarne i lotnicze Mapbox.", "name": "Mapbox Satellite (satelitarne)" }, "OSM_Inspector-Addresses": { @@ -5536,6 +5789,17 @@ }, "name": "Inspektor OSM: Tagowanie" }, + "US-TIGER-Roads-2012": { + "name": "TIGER Roads 2012" + }, + "US-TIGER-Roads-2014": { + "description": "Na poziomie powiększenia 16+ są dane public domain od US Census. Na niższych poziomach powiększenia są tylko zmiany od 2006, ale bez zmian już włączonych do OpenStreetMap", + "name": "TIGER Roads 2014" + }, + "US-TIGER-Roads-2017": { + "description": "Żółty = Dane public domain od US Census. Czerwony = Brak danych w OpenStreetMap", + "name": "TIGER Roads 2017" + }, "Waymarked_Trails-Cycling": { "attribution": { "text": "© Sarah Hoffmann, CC by-SA 3.0, dane mapy autorzy OpenStreetMap, ODbL 1.0" @@ -5591,7 +5855,7 @@ "text": "Warunki użytkowania i opinia" }, "description": "Pokazuje najważniejsze obiekty pomocne w orientacji.", - "name": "Nakładka lokalizująca" + "name": "Nakładka identyfikująca" }, "openpt_map": { "attribution": { @@ -5622,7 +5886,7 @@ "attribution": { "text": "Simon Poole, Dane © autorzy OpenStreetMap" }, - "name": "QA Bez Adesu" + "name": "QA Bez Adresu" }, "skobbler": { "attribution": { diff --git a/dist/locales/pt-BR.json b/dist/locales/pt-BR.json index b1387b6ee..66961e3ae 100644 --- a/dist/locales/pt-BR.json +++ b/dist/locales/pt-BR.json @@ -310,7 +310,7 @@ "localized_translation_language": "Escolha o idioma", "localized_translation_name": "Nome" }, - "zoom_in_edit": "Aproxime o zoom para editar o mapa.", + "zoom_in_edit": "Aproxime o zoom para editar", "login": "login", "logout": "sair", "loading_auth": "Conectando ao OpenStreetMap...", @@ -354,14 +354,16 @@ "key": "B", "title": "Fundo", "zoom": "Zoom", - "vintage": "Vintage", + "vintage": "Data de Captura", "source": "Fonte", "description": "Descrição", "resolution": "Resolução", "accuracy": "Precisão", "unknown": "Desconhecido", "show_tiles": "Mostrar moisaco", - "hide_tiles": "Ocultar moisaco" + "hide_tiles": "Ocultar moisaco", + "show_vintage": "Mostrar Data de Captura", + "hide_vintage": "Ocultar Data de Captura" }, "history": { "key": "H", @@ -613,7 +615,7 @@ "welcome": "Bem vindo(a) ao editor iD do OpenStreetMap", "text": "iD é uma ferramenta amigável, porém poderosa, para contribuir no melhor mapa livre do mundo. Esta é a versão {version}. Para mais informações, consulte {website} e reporte bugs no {github}.

\nAtenção: NÃO é permitido copiar nomes de ruas do Google Maps, Bing, Here, mapas impressos ou quaisquer fontes que possuam copyright.", "walkthrough": "Comece o tutorial", - "start": "Editar Agora" + "start": "Editar agora" }, "source_switch": { "live": "ao vivo", @@ -646,8 +648,8 @@ "deprecated_tags": "Etiquetas obsoletas: {tags}" }, "zoom": { - "in": "Aproximar", - "out": "Afastar" + "in": "Aproximar o zoom", + "out": "Afastar o zoom" }, "cannot_zoom": "Não é possível afastar mais no modo atual.", "full_screen": "Alterar para Tela Cheia", @@ -668,15 +670,24 @@ "mapillary": { "view_on_mapillary": "Ver esta imagem no Mapillary" }, + "openstreetcam_images": { + "tooltip": "Fotos a nível de rua do OpenStreetCam", + "title": "Camada de Fotos (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Ver esta imagem no OpenStreetCam" + }, "help": { "title": "Ajuda", "key": "H", "help": "# Ajuda\n\nEste é um editor para [OpenStreetMap](http://www.openstreetmap.org/), o mapa mundial livre e editável. Você pode usá-lo para adicionar e atualizar de dados em sua área, tornando um mapa mundi de código aberto melhor para todos.\n\nAs edições que você fizer nesse mapa serão visíveis para todos que usam OpenStreetMap. Para fazer uma edição você precisará se [identificar](https://www.openstreetmap.org/login).\n\nO [editor iD](http://ideditor.com/) é um projeto colaborativo com o [código fonte disponível no GitHub](https://github.com/openstreetmap/iD).\n", "editing_saving": "# Editando & Salvando\n\nEste editor foi criado para funcionar primariamente online, e, neste momento, você o está\nacessando através de um website.\n\n### Selecionando Elementos\n\nPara selecionar um elemento do mapa, como uma via ou um ponto de interesse, clique\nclique sobre o elemento no mapa. Isto irá destacar o elemento selecionado, abrir um painel\ncom detalhes sobre ele e exibir um menu de ações que você pode executar no elemento.\n\nPara selecionar múltiplos elementos, segure a tecla 'Shift'. Então clique nos elementos\nque você deseja selecionar, ou arraste o mouse sobre o mapa para desenhar um contorno\nem volta destes elementos. Todos os pontos dentro da área que você desenhou serão\nselecionados.\n\n### Salvando Edições\n\nQuando você faz alterações como editar ruas, prédios e locais, elas são\nguardadas localmente até que você as envie para o servidor. Não se preocupe\nse você cometer algum deslize - você pode desfazer alterações clicando no\nbotão de desfazer e também refazer as alterações clicando no botão de refazer.\nClique em \"Salvar\" para finalizar um conjunto de alterações. Por exemplo, você\ncompletou uma área de uma cidade e gostaria de começar a editar uma outra\nárea. Você terá a chance de revisar o que foi feito até o momento e o editor\nmostrará sugestões e dicas se alguma coisa parecer estar errada com as suas\nalterações.Se tudo parecer estar OK, você pode inserir um breve comentário\nexplicando as mudanças que você fez e clicar em \"Salvar\" de novo para enviar as\nmudanças para o [OpenStreetMap](http://www.openstreetmap.org/), onde elas estarão\nvisíveis para todos os outros usuários. Se você não conseguir concluir uma sessão de\nedição, você pode fechar a janela do editor e voltar mais tarde (no mesmo navegador e\ncomputador) que o editor irá oferecer a possibilidade de restaurar o seu trabalho.\n\n### Usando o editor\n\nVocê pode ver uma lista de atalhos de teclado pressionando a tecla `?`.\n", + "roads": "# Vias\n\nVocê pode criar, corrigir e excluir vias com este editor. As vias podem ser de vários tipos:\ncaminhos, estradas, ruas, trilhas, ciclovias e muito mais - qualquer segmento onde pessoas\ncostumam transitar pode ser mapeado.\n\n### Selecionando\n\nClique em uma via para selecioná-la. Um contorno deve tornar-se visível junto ao elemento,\nbem como uma barra lateral mostrando mais informações sobre a estrada. Se você clicar com\no botão direito do mouse, um pequeno menu de ações se abrirá e você poderá aplicá-las na\nvia.\n\n### Modificando\n\nMuitas vezes você vai encontrar vias que não estão alinhadas com as imagens por trás\ndelas ou com uma faixa de GPS. Você pode ajustar estas vias para que elas fiquem no\nlugar certo.\n\nPrimeiro clique no caminho que você deseja alterar. Isso irá destacá-lo e mostrar pontos\nde controle ao longo dela, os quais você pode arrastar para melhorar o desenho da mesma.\nSe o que você deseja é adicionar novos pontos de controle para obter mais detalhes,\nclique duas vezes em uma parte da estrada que necessite de um ponto adicional.\n\nSe a via se conecta a uma outra, mas não está corretamente conectada no\nmapa, você pode arrastar um de seus pontos de controle para a outra estrada a fim de\nconectá-las. Ter vias que se conectam é importante para o mapa e essencial para\npodermos calcular rotas.\n\nVocê também pode clicar com o botão direito e escolher a ferramenta 'Mover' ou\npressionar a tecla 'M' para mover o caminho inteiro de uma vez. Mova o objeto com o\nmouse e, em seguida, clique com o botão esquerdo para salvar o deslocamento.\n\n### Apagando\n\nSe uma via está completamente errada - você pode ver que ela não existe nas imagens\nde satélite e, além disso, ter confirmado localmente que ela não existe - você pode\napagá-la do mapa. Seja cauteloso ao excluir objetos - como em qualquer outra edição,\nos resultados serão vistos por todos, e como as imagens de satélite podem estar\ndesatualizadas, a via pode ter sido construída recentemente.\n\nVocê pode excluir um caminho clicando sobre ele para selecioná-lo e, em seguida,\npressionando a tecla 'Delete'. Ou clicar com o botão direito na via e, em seguida,\nno ícone da lixeira.\n\n### Criando\n\nEncontrou um lugar onde deveria ter uma via, mas não tem? Clique no botão 'Linha' no\ncanto superior esquerdo do editor ou pressione a tecla de atalho '2' para começar a\ndesenhar uma linha.\n\nClique no início da via no mapa para começar a desenhar. Se a via se ramifica de uma\noutra já mapeada, comece clicando sobre o lugar onde elas se conectam.\n\nEm seguida, clique em pontos ao longo da via para que ela siga o caminho certo, de\nacordo com imagens de satélite ou GPS. Se a via que você está desenhando atravessa\numa outra via, conecte-as clicando sobre o ponto de intersecção. Quando você terminar\nde desenhá-la, dê um duplo clique ou pressione 'Return' ou 'Enter' no seu teclado.\n", "gps": "# GPS\n\nOs dados de GPS são as fontes mais confiáveis do OpenStreetMap. Este editor suporta trilhas locais - arquivos '.gpx'. Você pode utilizar aplicativos de celular ou aparelhos de GPS para coletar esse tipo de trilha. Para informações sobre como realizar levantamento com GPS, leia [Mapeando com smartphone, GPS ou papel](http://learnosm.org/pt/mobile-mapping/).\n\nPara usar uma trilha GPX para mapeamento, arraste e solte o arquivo GPX no editor de mapa iD. Caso seja reconhecida, será adicionada ao mapa como linhas roxo-claras. Clique no menu 'Dados do Mapa', no lado direito, para ativar, desativar ou focar o zoom nesta nova camada alimentada pelo GPX.\n\nA trilha GPX não é diretamente enviada ao OpenStreetMap - a melhor maneira para usá-la é desenhar no mapa, usando-a como um guia para os novos elementos que você adicionar, e também [enviá-lo ao OpenStreetMap](http://www.openstreetmap.org/trace/create) para que outros usuários possam usá-la.\n", "imagery": "# Imagens aéreas\n\nAs imagens aéreas são um recurso muito importante para o mapeamento.\nFotos de avião, de satélite e de outras fontes livre estão disponíveis no editor,\nno menu \"Configurações da Imagem de Fundo\" à direita.\n\nPor padrão, as imagens de satélite do [Bing Maps](http://www.bing.com/maps/)\nestão habilitadas no editor, mas ao mover e aproximar o mapa para certas áreas,\nnovas fontes de imagens estarão disponíveis. Alguns países, tais como os EUA, a\nFrança e a Dinamarca, têm imagens aéreas de alta qualidade disponíveis em algumas áreas.\n\nAtenção: as imagens aéreas algumas vezes não batem exatamente com o\nque há em terra, isto é, têm algum deslocamento por causa de algum erro por\nparte de quem as gerou. Se você notar que muitas ruas estão deslocadas\nem comparação com a imagem de fundo, não as alinhe imediatamente com\na imagem. Em vez disso ajuste a imagem para que ela se alinhe com as ruas\natravés da opção \"Ajustar o deslocamento da imagem de fundo\" no final do painel de Configurações da Imagem de Fundo.\n", "addresses": "# Endereços\n\nOs endereços são uma das informações mais úteis do mapa.\n\nApesar de os endereços serem representados como parte de uma rua,\nno OpenStreetMap eles também são gravados como atributos de prédios\ne outros lugares ao longo das ruas.\n\nVocê pode adicionar informações de endereço nos locais mapeados como\nárea de edifícios ou mapeados como pontos. A melhor fonte de informações\nsobre endereços é a que vem de pesquisas de campo ou conhecimento\npessoal do local - assim como qualquer outra informação, copiar de fontes\ncomerciais como o Google Maps é estritamente proibido.\n", - "inspector": "# Usando o editor de elementos\n\nO editor de elementos é a seção no lado esquerdo da página que aparece quando um elemento é selecionado e permite que você edite seus detalhes.\n\n### Selecionando um tipo de elemento\n\nDepois de adicionar um ponto, linha ou área, você pode escolher que tipo de elemento ele é, como, por exemplo, se é uma autoestrada ou via residencial, supermercado ou cafeteria. O editor de elementos mostrará sugestões para os tipos de elementos mais comuns, mas você pode encontrar outros digitando o que você procura na caixa de pesquisa.\n\nClique no botão \"i\" no canto direito de um botão de recurso para aprender mais sobre ele. Clique em um botão para alterar o tipo.\n\n### Utilizando formulários e editando etiquetas\n\nDepois de escolher um tipo de elemento, ou quando você seleciona um elemento que já tem um tipo atribuído, o editor de elementos exibe campos com detalhes sobre o elemento, como seu nome e endereço.\n\nAbaixo dos campos que você vê, você pode clicar no menu de \"Adicionar campo:\" para adicionar outras informações, como um link da Wikipédia, acessibilidade para cadeirantes, entre outros.\n\nNa parte inferior do editor de elementos, você pode clicar em 'Etiquetas adicionais' para adicionar outras etiquetas específicas. O [Taginfo](http://taginfo.openstreetmap.org/) é uma excelente ferramenta para aprender mais sobre as combinações de etiquetas mais usadas.\n\nAs alterações feitas no editor de elementos são automaticamente aplicadas ao mapa. Você pode desfazê-las a qualquer momento, clicando no botão 'Desfazer'.\n" + "inspector": "# Usando o editor de elementos\n\nO editor de elementos é a seção no lado esquerdo da página que aparece quando um elemento é selecionado e permite que você edite seus detalhes.\n\n### Selecionando um tipo de elemento\n\nDepois de adicionar um ponto, linha ou área, você pode escolher que tipo de elemento ele é, como, por exemplo, se é uma autoestrada ou via residencial, supermercado ou cafeteria. O editor de elementos mostrará sugestões para os tipos de elementos mais comuns, mas você pode encontrar outros digitando o que você procura na caixa de pesquisa.\n\nClique no botão \"i\" no canto direito de um botão de recurso para aprender mais sobre ele. Clique em um botão para alterar o tipo.\n\n### Utilizando formulários e editando etiquetas\n\nDepois de escolher um tipo de elemento, ou quando você seleciona um elemento que já tem um tipo atribuído, o editor de elementos exibe campos com detalhes sobre o elemento, como seu nome e endereço.\n\nAbaixo dos campos que você vê, você pode clicar no menu de \"Adicionar campo:\" para adicionar outras informações, como um link da Wikipédia, acessibilidade para cadeirantes, entre outros.\n\nNa parte inferior do editor de elementos, você pode clicar em 'Etiquetas adicionais' para adicionar outras etiquetas específicas. O [Taginfo](http://taginfo.openstreetmap.org/) é uma excelente ferramenta para aprender mais sobre as combinações de etiquetas mais usadas.\n\nAs alterações feitas no editor de elementos são automaticamente aplicadas ao mapa. Você pode desfazê-las a qualquer momento, clicando no botão 'Desfazer'.\n", + "buildings": "# Edifícios\n\nO OpenStreetMap é a maior base de dados de edifícios do mundo. Você pode criar e\nmelhorar esta base de dados.\n\n### Selecionando\n\nVocê pode selecionar um edifício clicando em sua borda. Isto irá destacar\no edifício e abrir uma barra lateral com informações sobre ele. Se você clicar com o\nbotão direito do mouse, será exibido um menu de ações que você poderá executar no\nedifício.\n\n### Modificando\n\nÀs vezes um edifício está no lugar errado ou tem etiquetas erradas.\n\nPara mover um edifício inteiro, selecione-o e pressione o atalho de teclado 'M',\nou clique com botão direito do mouse no mesmo e escolha a ferramenta 'Mover'.\nMova o mouse para deslocar o edifício e clique novamente quando ele\nestiver no local certo.\n\nPara corrigir o formato de um edifício, clique e arraste os pontos que\nformam suas bordas para o lugar apropriado.\n\n### Criando\n\nUma das principais questões sobre adicionar edifícios ao mapa é que o\nOpenStreetMap registra-os tanto como polígonos quanto como pontos. A\nregra geral é _mapeie um edifício como polígono sempre que possível_,\ne mapeie empresas, lojas, serviços, e outros locais que funcionam no\nedifício como pontos dentro do contorno dele.\n\nComece desenhando um edifício como polígono clicando no botão 'Área', no\ncanto superior esquerdo da interface, e finalize pressionando 'Enter' no\nteclado ou clicando no primeiro ponto que você desenhou para fechar o polígono.\n\n### Excluindo\n\nSe um edifício estiver totalmente errado - você vê que ele não está na\nimagem de satélite e também confirmou pessoalmente que ele não existe\n- você pode excluí-lo, removendo-o do mapa. Seja cuidadoso ao remover\ncoisas - assim como em qualquer outra edição, os resultados serão vistos por\ntodos, e as imagens de satélite podem estar desatualizadas, ou seja,\npode ser que o edifício tenha sido construído recentemente.\n\nVocê pode remover um edifício clicando nele para selecioná-lo, e depois\npressionando a tecla 'Delete', ou clicando com o botão direito do mouse no mesmo e,\nem seguida, na ferramenta com o ícone de lixeira.\n" }, "intro": { "done": "feito", @@ -1214,6 +1225,9 @@ "aeroway": { "label": "Tipo" }, + "agrarian": { + "label": "Produtos" + }, "amenity": { "label": "Tipo" }, @@ -1282,6 +1296,9 @@ "board_type": { "label": "Tipo" }, + "boules": { + "label": "Tipo" + }, "boundary": { "label": "Tipo" }, @@ -1301,6 +1318,10 @@ "bunker_type": { "label": "Tipo" }, + "cables": { + "label": "Cabos", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direção (Graus Sentido Horário)", "placeholder": "45, 90, 180, 270" @@ -1386,6 +1407,9 @@ "craft": { "label": "Tipo" }, + "crane/type": { + "label": "Tipo de Grua" + }, "crop": { "label": "Espécie cultivada" }, @@ -1458,6 +1482,10 @@ "description": { "label": "Descrição" }, + "devices": { + "label": "Dispositivos", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Troca de Fraldas Disponível" }, @@ -1532,6 +1560,9 @@ "wall": "Muro" } }, + "fitness_station": { + "label": "Tipo de Equipamento" + }, "fixme": { "label": "Corrija-me" }, @@ -1539,6 +1570,9 @@ "label": "Tipo", "placeholder": "Padrão" }, + "frequency": { + "label": "Frequência Operacional" + }, "fuel": { "label": "Combustível" }, @@ -1581,6 +1615,7 @@ "label": "Corrimão" }, "hashtags": { + "label": "Hashtags Sugeridas", "placeholder": "#exemplo" }, "healthcare": { @@ -1662,7 +1697,7 @@ "label": "Tipo" }, "lanes": { - "label": "Faixas", + "label": "Total de Faixas", "placeholder": "1, 2, 3..." }, "layer": { @@ -1896,6 +1931,10 @@ "payment_multi": { "label": "Tipos de Pagamento" }, + "phases": { + "label": "Fases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefone", "placeholder": "+55 11 0982 1098" @@ -1975,6 +2014,9 @@ "railway": { "label": "Tipo" }, + "rating": { + "label": "Potência Nominal" + }, "recycling_accepts": { "label": "Aceita" }, @@ -2183,6 +2225,9 @@ "studio": { "label": "Tipo" }, + "substance": { + "label": "Substância" + }, "substation": { "label": "Tipo" }, @@ -2209,6 +2254,14 @@ "surveillance/zone": { "label": "Zona de vigilância" }, + "switch": { + "label": "Tipo", + "options": { + "circuit_breaker": "Disjuntor", + "disconnector": "Interruptor", + "mechanical": "Mecânico" + } + }, "tactile_paving": { "label": "Piso Tátil" }, @@ -2260,6 +2313,9 @@ }, "placeholder": "Rígida, Parcialmente Rígida, Macia..." }, + "trade": { + "label": "Tipo" + }, "traffic_calming": { "label": "Tipo" }, @@ -2278,6 +2334,19 @@ }, "placeholder": "Excelente, Bom, Ruim..." }, + "transformer": { + "label": "Tipo", + "options": { + "auto": "Autotransformador", + "auxiliary": "Auxiliar", + "converter": "Conversor", + "distribution": "Distribuição", + "generator": "Gerador", + "phase_angle_regulator": "Regulador de Ângulo de Fase", + "traction": "Tração", + "yes": "Desconhecido" + } + }, "trees": { "label": "Árvores" }, @@ -2312,6 +2381,18 @@ "stratovolcano": "Estratovulcão" } }, + "voltage": { + "label": "Voltagem" + }, + "voltage/primary": { + "label": "Voltagem Primária" + }, + "voltage/secondary": { + "label": "Voltagem Secundária" + }, + "voltage/tertiary": { + "label": "Voltagem Terciária" + }, "wall": { "label": "Tipo" }, @@ -2339,6 +2420,17 @@ }, "wikipedia": { "label": "Artigo na Wikipédia" + }, + "windings": { + "label": "Número de Bombinas", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuração das Bombinas", + "options": { + "open": "Aberta", + "zigzag": "Zig Zag" + } } }, "presets": { @@ -2662,6 +2754,9 @@ "name": "Estacionamento de motos", "terms": "Estacionamento de motocicletas, estacionamento de motos, estacionamento" }, + "amenity/music_school": { + "name": "Escola de Música" + }, "amenity/nightclub": { "name": "Boate", "terms": "Discoteca, Boate, Casa Noturna, boite, " @@ -2785,8 +2880,7 @@ "terms": "Área Escolar, Terreno Escolar, Pátio Escolar" }, "amenity/scrapyard": { - "name": "Ferro Velho", - "terms": "Ferro-velho, ferro velho, sucateiro" + "name": "Ferro Velho" }, "amenity/shelter": { "name": "Abrigo contra Intempéries", @@ -3250,6 +3344,9 @@ "name": "Relojoeiro", "terms": "Relógios, relojoaria, Conserto de relógios, Reparos de relógios" }, + "craft/confectionery": { + "name": "Doceria" + }, "craft/distillery": { "name": "Destilaria", "terms": "" @@ -3351,9 +3448,8 @@ "name": "Montador de Andaimes", "terms": "Montador de Andaimes" }, - "craft/sculpter": { - "name": "Escultor", - "terms": "Escultor" + "craft/sculptor": { + "name": "Escultor" }, "craft/shoemaker": { "name": "Sapateiro", @@ -3363,10 +3459,6 @@ "name": "Pedreiro", "terms": "Pedreiro" }, - "craft/sweep": { - "name": "Limpador de Chaminé", - "terms": "Limpador de Chaminé" - }, "craft/tailor": { "name": "Alfaiate" }, @@ -3504,8 +3596,8 @@ "terms": "Lago, água, perigo de água, golfe" }, "healthcare": { - "name": "Posto de Saúde", - "terms": "Posto de Saúde, Unidade de Pronto Atendimento, Unidade Básica de Saúde" + "name": "Assistência Médica", + "terms": "Posto de Saúde, Unidade de Pronto Atendimento, Unidade Básica de Saúde, clínica, doutor, consultório médico, hospital, dentista, fisioterapia" }, "healthcare/alternative": { "name": "Medicina Alternativa", @@ -3624,9 +3716,11 @@ "name": "Caminho Informal", "terms": "Caminho Informal" }, - "highway/pedestrian": { - "name": "Calçadão", - "terms": "Rua de Pedestres, Calçadão, Rua Fechada" + "highway/pedestrian_area": { + "name": "Calçadão" + }, + "highway/pedestrian_line": { + "name": "Calçadão" }, "highway/primary": { "name": "Via Primária", @@ -3851,6 +3945,12 @@ "name": "Área industrial", "terms": "Indústria, Parque industrial, Fábrica, Fábricas" }, + "landuse/industrial/scrap_yard": { + "name": "Ferro-Velho" + }, + "landuse/industrial/slaughterhouse": { + "name": "Matadouro" + }, "landuse/landfill": { "name": "Aterro Sanitário", "terms": "Aterro Sanitário, Depósito de Lixo" @@ -3927,6 +4027,9 @@ "name": "Pátio de Recreação", "terms": "Recreação, Diversão, área verde, pátio" }, + "landuse/religious": { + "name": "Área Religiosa" + }, "landuse/residential": { "name": "Área residencial", "terms": "Residencial, residências" @@ -3983,6 +4086,18 @@ "name": "Equipamento de Exercícios ao Ar Livre", "terms": "Máquina de execício, Equipamento de exercício, Equipamento de ginástica" }, + "leisure/fitness_station/balance_beam": { + "name": "Trave de Equilíbrio" + }, + "leisure/fitness_station/hyperextension": { + "name": "Estação de Hiperextensão" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barras Paralelas" + }, + "leisure/fitness_station/stairs": { + "name": "Escadas de Exercício" + }, "leisure/garden": { "name": "Jardim / Horta", "terms": "Jardim, plantas, horta, vegetais, flores" @@ -4095,6 +4210,9 @@ "name": "Pista de atletismo", "terms": "corrida, correr, olímpico, olímpica, atletismo, esportes," }, + "leisure/sauna": { + "name": "Sauna" + }, "leisure/slipway": { "name": "Rampa Náutica", "terms": "Rampa Náutica" @@ -4147,6 +4265,9 @@ "name": "Chaminé", "terms": "Lareira, Forno, Fábrica, Indústria, Gás" }, + "man_made/crane": { + "name": "Grua" + }, "man_made/cutline": { "name": "Linha de Corte em Floresta", "terms": "Linha de Corte em Floresta" @@ -4375,16 +4496,26 @@ "terms": "Escritório" }, "office/accountant": { - "name": "Contador", - "terms": "Contador" + "name": "Escritório de Contabilidade" }, "office/administrative": { "name": "Escritório Administrativo", "terms": "Sala Administrativa, Administração, Sala do Administrativo" }, + "office/adoption_agency": { + "name": "Agência de Adoção" + }, + "office/advertising_agency": { + "name": "Agência de Publicidade" + }, "office/architect": { - "name": "Arquiteto", - "terms": "Arquitetura, Escritório de Arquitetura" + "name": "Escritório de Arquitetura" + }, + "office/association": { + "name": "Escritório de ONG" + }, + "office/charity": { + "name": "Escritório de Caridade" }, "office/company": { "name": "Escritório", @@ -4402,6 +4533,9 @@ "name": "Agência de Empregos", "terms": "agência, SINE, emprego, empregos, desempregado" }, + "office/energy_supplier": { + "name": "Escritório de Fornecedor de Energia" + }, "office/estate_agent": { "name": "Imobiliária", "terms": "aluguel, casas, apartamentos, corretora de imóveis, venda de imóveis, imóveis" @@ -4410,6 +4544,9 @@ "name": "Escritório Financeiro", "terms": "Escritório Financeiro, Financeiro" }, + "office/foundation": { + "name": "Escritório de Fundação" + }, "office/government": { "name": "Órgão governamental", "terms": "Gabinete, escritório, governo, secretaria, organização, departamento" @@ -4418,13 +4555,15 @@ "name": "Cartório", "terms": "tabelionato, registro civil, registro de imóveis" }, + "office/guide": { + "name": "Escritório de Guia Turístico" + }, "office/insurance": { "name": "Seguradora", "terms": "seguro, seguradora, apólice, corretor" }, "office/it": { - "name": "Escritório de TI", - "terms": "ti, cpd, informática, computador, rede, Tecnologia da Informação" + "name": "Escritório de Empresa de Tecnologia da Informação" }, "office/lawyer": { "name": "Escritório de Advocacia", @@ -4435,8 +4574,7 @@ "terms": "Notário, Cartório" }, "office/newspaper": { - "name": "Escritório de Jornal", - "terms": "jornal, notícia" + "name": "Escritório de Jornal" }, "office/ngo": { "name": "Sede de ONG", @@ -4449,6 +4587,9 @@ "name": "Escritório de Partido Político", "terms": "política, político, partido, gabinete" }, + "office/private_investigator": { + "name": "Escritório de Detetive" + }, "office/research": { "name": "Escritório de Pesquisa", "terms": "pesquisa, pesquisas, pesquisador, escritório" @@ -4458,8 +4599,8 @@ "terms": "Escritório de Telecomunicações, Departamento de Telecomunicações" }, "office/therapist": { - "name": "Terapeuta", - "terms": "Terapista, Terapia, Tratamento Terapêutico" + "name": "Escritório de Terapeuta", + "terms": "terapia, holístico, terapias alternativas, saúde" }, "office/travel_agent": { "name": "Agência de Viagens" @@ -4486,6 +4627,9 @@ "name": "Ilha", "terms": "Ilhota" }, + "place/islet": { + "name": "Ilhota" + }, "place/isolated_dwelling": { "name": "Moradia Isolada", "terms": "Moradia Isolada" @@ -4498,6 +4642,9 @@ "name": "Vizinhança", "terms": "Vizinhança, Bairro" }, + "place/plot": { + "name": "Lote" + }, "place/quarter": { "name": "Sub-bairro", "terms": "loteamento, conjunto habitacional, residencial," @@ -4518,11 +4665,11 @@ "name": "Povoado", "terms": "Vila, Povoado, Distrito" }, - "playground/balance_beam": { - "name": "Eixo de Equilíbrio" + "playground/cushion": { + "name": "Colchão Inflável" }, - "playground/horizontal_bar": { - "name": "Barra Horizontal" + "playground/rocker": { + "name": "Balanço de Mola" }, "playground/roundabout": { "name": "Carrossel", @@ -4704,6 +4851,9 @@ "name": "Loja", "terms": "Loja, Comércio" }, + "shop/agrarian": { + "name": "Loja de Produtos Agrícolas" + }, "shop/alcohol": { "name": "Loja de alcoólicos licenciada", "terms": "Loja de Licores" @@ -5126,6 +5276,9 @@ "name": "Bilheteria", "terms": "Loja de Tickets, Bilhetes, Entradas" }, + "shop/tiles": { + "name": "Loja de Azulejos" + }, "shop/tobacco": { "name": "Tabacaria", "terms": "Loja de tabaco. Cachimbo. Cigarro, Hookah" @@ -5134,6 +5287,9 @@ "name": "Loja de Brinquedos", "terms": "Loja de Brinquedos" }, + "shop/trade": { + "name": "Distribuidor" + }, "shop/travel_agency": { "name": "Agência de Viagens", "terms": "Agência de Viagens" @@ -5213,10 +5369,6 @@ "name": "Estacionamento de Trailers", "terms": "Estacionamento de Trailers" }, - "tourism/chalet": { - "name": "Chalé", - "terms": "Chalé" - }, "tourism/gallery": { "name": "Galeria de Arte", "terms": "Arte, Galeria, Exposição, Artes Plásticas, Cultura, museu" @@ -5504,6 +5656,13 @@ "description": "Imagem de satélite premium da DigitalGlobe.", "name": "Imagem premium da DigitalGlobe" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Termos & Comentários" + }, + "description": "Limites de imagens de satélite e datas de captura. Etiquetas aparecerão no nível de zoom 14 ou acima.", + "name": "Bordas das Imagens de Satélite DigitalGlobe Premium" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Termos & Comentários" @@ -5511,6 +5670,13 @@ "description": "Imagem de satélite padrão da DigitalGlobe.", "name": "Imagem padrão da DigitalGlobe" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Termos & Comentários" + }, + "description": "Limites de imagens de satélite e datas de captura. Etiquetas aparecerão no nível de zoom 14 ou acima.", + "name": "Boradas das Imagens de Satélite DigitalGlobe Standard" + }, "EsriWorldImagery": { "attribution": { "text": "Termos & Comentários" @@ -5574,6 +5740,17 @@ }, "name": "Inspetor OSM: Etiquetas" }, + "US-TIGER-Roads-2012": { + "name": "Estradas TIGER 2012" + }, + "US-TIGER-Roads-2014": { + "description": "No nível de zoom 16+, há dados de mapas de domínio público do Censo dos EUA. Nos níveis de zoom menores, apenas alterações desde 2006 exceto alterações já incorporadas no OpenStreetMap", + "name": "Estradas TIGER 2014" + }, + "US-TIGER-Roads-2017": { + "description": "Amarelo = Dados de mapa de domínio público do Censo dos EUA. Vermelho = Dados não encontrados no OpenStreetMap", + "name": "Estradas TIGER 2017" + }, "Waymarked_Trails-Cycling": { "attribution": { "text": "© Sarah Hoffmann, CC by-SA 3.0, dados do mapa Colaboradores do OpenStreetMap, ODbL 1.0" diff --git a/dist/locales/pt.json b/dist/locales/pt.json index 3f270f9ec..b9fa9ec8b 100644 --- a/dist/locales/pt.json +++ b/dist/locales/pt.json @@ -310,7 +310,7 @@ "localized_translation_language": "Escolha a língua", "localized_translation_name": "Nome" }, - "zoom_in_edit": "Aproxime para Editar", + "zoom_in_edit": "Aproxime para editar", "login": "Iniciar sessão", "logout": "Terminar sessão", "loading_auth": "A fazer a ligação ao OpenStreetMap...", @@ -361,7 +361,9 @@ "accuracy": "Precisão", "unknown": "Desconhecido", "show_tiles": "Mostrar Telas", - "hide_tiles": "Ocultar Telas" + "hide_tiles": "Ocultar Telas", + "show_vintage": "Mostrar data de captura", + "hide_vintage": "Ocultar data de captura" }, "history": { "key": "H", @@ -668,6 +670,13 @@ "mapillary": { "view_on_mapillary": "Ver esta imagem no Mapillary" }, + "openstreetcam_images": { + "tooltip": "Fotos ao nível da rua de OpenStreetCam", + "title": "Sobreposição de Fotos (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Ver esta imagem no OpenStreetCam" + }, "help": { "title": "Ajuda", "key": "H", @@ -1217,6 +1226,9 @@ "aeroway": { "label": "Tipo" }, + "agrarian": { + "label": "Produtos" + }, "amenity": { "label": "Tipo" }, @@ -1285,6 +1297,9 @@ "board_type": { "label": "Tipo" }, + "boules": { + "label": "Tipo" + }, "boundary": { "label": "Tipo" }, @@ -1304,6 +1319,10 @@ "bunker_type": { "label": "Tipo" }, + "cables": { + "label": "Cabos", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direção (Graus no sentido dos ponteiros do relógio)", "placeholder": "45, 90, 180, 270" @@ -1390,11 +1409,11 @@ "label": "Tipo" }, "crane/type": { - "label": "Tipo de grua", + "label": "Tipo de Grua", "options": { - "floor-mounted_crane": "Grua fixa ao solo", - "portal_crane": "Grua pórtica", - "travel_lift": "Grua de transporte" + "floor-mounted_crane": "Grua Fixa ao Solo", + "portal_crane": "Grua de Ponte Rolante", + "travel_lift": "Grua de Elevação de Embarcações" } }, "crop": { @@ -1469,6 +1488,10 @@ "description": { "label": "Descrição" }, + "devices": { + "label": "Dispositivos", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Fraldário " }, @@ -1543,6 +1566,9 @@ "wall": "Muro" } }, + "fitness_station": { + "label": "Tipo de Equipamento" + }, "fixme": { "label": "Corrigir" }, @@ -1550,6 +1576,9 @@ "label": "Tipo", "placeholder": "Padrão" }, + "frequency": { + "label": "Frequência Operacional" + }, "fuel": { "label": "Combustível" }, @@ -1760,7 +1789,7 @@ "label": "Tempo máximo" }, "maxweight": { - "label": "undefined" + "label": "Peso Máximo" }, "memorial": { "label": "Tipo" @@ -1908,6 +1937,10 @@ "payment_multi": { "label": "Tipos de pagamentos" }, + "phases": { + "label": "Fases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefone / Telemóvel", "placeholder": "+351 211 123456" @@ -1987,6 +2020,9 @@ "railway": { "label": "Tipo" }, + "rating": { + "label": "Potência Nominal" + }, "recycling_accepts": { "label": "Aceita" }, @@ -1998,7 +2034,7 @@ } }, "ref": { - "label": "Código de referência " + "label": "Código de Referência" }, "ref_aeroway_gate": { "label": "Número da Porta" @@ -2195,6 +2231,9 @@ "studio": { "label": "Tipo" }, + "substance": { + "label": "Substância" + }, "substation": { "label": "Tipo" }, @@ -2221,6 +2260,15 @@ "surveillance/zone": { "label": "Zona de videovigilância" }, + "switch": { + "label": "Tipo", + "options": { + "circuit_breaker": "Disjuntor", + "disconnector": "Chave Seccionadora", + "earthing": "Ligação à Terra", + "mechanical": "Mecânico" + } + }, "tactile_paving": { "label": "Pavimento tátil para invisuais" }, @@ -2293,6 +2341,19 @@ }, "placeholder": "Excelente, boa, má..." }, + "transformer": { + "label": "Tipo", + "options": { + "auto": "Autotransformador", + "auxiliary": "Auxiliar", + "converter": "Conversor", + "distribution": "Distribuição", + "generator": "Gerador", + "phase_angle_regulator": "Regulador de Ângulo de Fase", + "traction": "Tração", + "yes": "Desconhecido" + } + }, "trees": { "label": "Árvores" }, @@ -2327,6 +2388,18 @@ "stratovolcano": "Estratovulcão" } }, + "voltage": { + "label": "Voltagem" + }, + "voltage/primary": { + "label": "Voltagem Primária" + }, + "voltage/secondary": { + "label": "Voltagem Secundária" + }, + "voltage/tertiary": { + "label": "Voltagem Terciária" + }, "wall": { "label": "Tipo" }, @@ -2354,6 +2427,22 @@ }, "wikipedia": { "label": "Wikipédia" + }, + "windings": { + "label": "Bobine", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Configuração da Bobine", + "options": { + "delta": "Delta", + "leblanc": "Leblanc", + "open": "Aberto", + "open-delta": "Delta Aberto", + "scott": "Scott", + "star": "Estrela / Y", + "zigzag": "Zigue Zague" + } } }, "presets": { @@ -2677,6 +2766,10 @@ "name": "Parque de motas", "terms": "Motorcycle Parking, Motas, Estacionamento" }, + "amenity/music_school": { + "name": "Escola de Música", + "terms": "conservatório,música,escola" + }, "amenity/nightclub": { "name": "Discoteca (dança)", "terms": "Nightclub, Salão de Dança" @@ -2800,8 +2893,7 @@ "terms": "Academia, Creche, Colégio, Departamento, Externato, Liceu, Seminário" }, "amenity/scrapyard": { - "name": "Sucata", - "terms": "scrapyard, scrap yard, scrap, sucata, sucatas, sucateiro, sucateiros, ferro-velho, ferro velho, " + "name": "Sucata" }, "amenity/shelter": { "name": "Abrigo", @@ -3266,8 +3358,8 @@ "terms": "Clockmaker, Relógios" }, "craft/confectionery": { - "name": "Doçaria", - "terms": "" + "name": "Confeitaria", + "terms": "Confectionery, Confeitos, Doces, Doçaria" }, "craft/distillery": { "name": "Destilaria", @@ -3370,9 +3462,9 @@ "name": "Montador de Andaimes", "terms": "Scaffolder, Colocador de Andaimes, Andaimes" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Escultor", - "terms": "Sculpter, Escultura, Escultora" + "terms": "escultora,esculpir,escultura,estatuária" }, "craft/shoemaker": { "name": "Sapateiro", @@ -3382,10 +3474,6 @@ "name": "Pedreiro", "terms": "Stonemason, Rocha, Canteiro, Pedra, Pedras, Pedraria, Rocha, Rochas" }, - "craft/sweep": { - "name": "Limpador de Chaminés", - "terms": "Chimney Sweep, Limpa Chaminés" - }, "craft/tailor": { "name": "Alfaiate" }, @@ -3654,9 +3742,13 @@ "name": "Trilho", "terms": "Trilha, Caminho" }, - "highway/pedestrian": { - "name": "Rua pedonal", - "terms": "Pedestrian, Rua Pedonal, Rua Pedestre, Praça" + "highway/pedestrian_area": { + "name": "Área Pedestre", + "terms": "praça, largo" + }, + "highway/pedestrian_line": { + "name": "Estrada Pedonal", + "terms": "pedestre, rua pedonal, rua pedestre, pedonal" }, "highway/primary": { "name": "Estrada primária", @@ -3834,6 +3926,10 @@ "name": "Bacia hidrográfica", "terms": "Bacia de Drenagem" }, + "landuse/brownfield": { + "name": "Terreno Industrial Abandonado", + "terms": "terreto, industrial, abandonado, contaminado" + }, "landuse/cemetery": { "name": "Cemitério", "terms": "Cemitério, Vala" @@ -3873,6 +3969,10 @@ "name": "Relva", "terms": "Relva, Grama" }, + "landuse/greenfield": { + "name": "Terreno com loteamento planeado", + "terms": "loteamento" + }, "landuse/harbour": { "name": "Porto Marítimo", "terms": "porto, abra, refúgio, abrigo, porto seguro, porto-seguro, porto abrigado, ancoradouro" @@ -3881,6 +3981,14 @@ "name": "Zona industrial", "terms": "Industrial" }, + "landuse/industrial/scrap_yard": { + "name": "Sucata", + "terms": "sucateiro, ferro-velho, ferro velho" + }, + "landuse/industrial/slaughterhouse": { + "name": "Matadouro", + "terms": "açougue, abatedouro" + }, "landuse/landfill": { "name": "Aterro sanitário", "terms": "Landfill, Lixeira, Sucata" @@ -3957,6 +4065,10 @@ "name": "Zona de recreação", "terms": "Recreation Ground" }, + "landuse/religious": { + "name": "Área religiosa", + "terms": "" + }, "landuse/residential": { "name": "Zona residencial", "terms": "Residencial, Urbano, Antrópico, Residential" @@ -4013,6 +4125,50 @@ "name": "Equipamento de Exercícios ao Ar Livre", "terms": "Máquinas de exercícios, Máquina de execício, Exercício ao ar livre, Exercícios ao ar livre, Ginástica, Equipamento de exercícios" }, + "leisure/fitness_station/balance_beam": { + "name": "Trave de Equilíbrio", + "terms": "trave, equilíbrio, barra, balanço" + }, + "leisure/fitness_station/box": { + "name": "Caixa de Exercícios", + "terms": "" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Barra Fixa Horizontal", + "terms": "barra, horizontal" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Escada Horizontal", + "terms": "" + }, + "leisure/fitness_station/hyperextension": { + "name": "Dispositivo de Extensões", + "terms": "Extensões" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barras Paralelas", + "terms": "barras, paralelas" + }, + "leisure/fitness_station/push-up": { + "name": "Barra de Flexões", + "terms": "Flexões, Flexão, Extensão" + }, + "leisure/fitness_station/rings": { + "name": "Argolas de Exercício", + "terms": "Argolas" + }, + "leisure/fitness_station/sign": { + "name": "Placa de Instruções de Exercício", + "terms": "" + }, + "leisure/fitness_station/sit-up": { + "name": "Dispositivo para Abdominais", + "terms": "Abdominais" + }, + "leisure/fitness_station/stairs": { + "name": "Escadas de Exercício", + "terms": "Escadas" + }, "leisure/garden": { "name": "Jardim", "terms": "Jardim, Garden" @@ -4073,6 +4229,10 @@ "name": "Campo de voleibol de praia", "terms": "Vólei, campo, praia, voleibol, volley" }, + "leisure/pitch/boules": { + "name": "Campo de Boules/Boccia", + "terms": "" + }, "leisure/pitch/bowls": { "name": "Campo de boccia", "terms": "Bowling Green" @@ -4125,6 +4285,10 @@ "name": "Pista de atletismo ", "terms": "Pista, corrida, jogging, atletismo, atleta" }, + "leisure/sauna": { + "name": "Sauna", + "terms": "banho finlandês, banho turco, banho de vapor" + }, "leisure/slipway": { "name": "Rampa para barcos", "terms": "Slipway" @@ -4179,7 +4343,7 @@ }, "man_made/crane": { "name": "Grua", - "terms": "" + "terms": "guindaste, gindaste, guindastre, gindastre" }, "man_made/cutline": { "name": "Aceiro / Linha corta-fogo", @@ -4306,7 +4470,7 @@ }, "natural/beach": { "name": "Praia", - "terms": "praia" + "terms": "areal" }, "natural/cave_entrance": { "name": "Entrada de gruta", @@ -4416,9 +4580,25 @@ "name": "Escritório da administração local", "terms": "Administrative Office, Administrativo" }, + "office/adoption_agency": { + "name": "Agência de Adoção", + "terms": "adoção, adopção, adotar, adoptar" + }, + "office/advertising_agency": { + "name": "Agência de Publicidade", + "terms": "publicidade, anúncio" + }, "office/architect": { - "name": "Arquiteto(a)", - "terms": "Architect, Arquiteto, Arquitetos, Arquiteta, Arquitetas, Arquitecto, Arquitectos, Arquitecta, Arquitectas, Arquitetura, Arquitectura" + "name": "Arquiteto", + "terms": "arquitecto, arquitectura, arquitetura" + }, + "office/association": { + "name": "Organização Sem Fins Lucrativos", + "terms": "ONG" + }, + "office/charity": { + "name": "Instituição de Caridade", + "terms": "Caridade, Filantropia" }, "office/company": { "name": "Escritório de empresa", @@ -4433,9 +4613,13 @@ "terms": "Educacional Institution, Escola, Instituição Educacional, Educação, Educacional" }, "office/employment_agency": { - "name": "Agência de emprego", + "name": "Agência de Emprego", "terms": "Employment Agency, Agência de Emprego, Emprego" }, + "office/energy_supplier": { + "name": "Fornecedor de Energia", + "terms": "Eletricidade, Gás, Botijas de Gás, Combustível" + }, "office/estate_agent": { "name": "Agência imobiliária", "terms": "Real Estate Office, Imóvel, Imóveis, Mudanças, Compra de Casas, Casa, Casas, habitação, Habitações" @@ -4444,21 +4628,36 @@ "name": "Finanças", "terms": "Financial Office, Posto de Finanças, Balcão de Finanças, Repartição" }, + "office/forestry": { + "name": "Posto Florestal", + "terms": "Guarda Florestal" + }, + "office/foundation": { + "name": "Fundação", + "terms": "" + }, "office/government": { "name": "Escritório da administração nacional", - "terms": "Government Office, Governo, Estado" + "terms": "Government Office, Governo, Estado, Finanças, Segurança Social, DGV, Instituto de Emprego, Centro de Emprego, Direcção-Geral, Direção-Geral, Loja do Cidadão" }, "office/government/register_office": { "name": "Conservatória do Registo Civil", "terms": "Register Office, Conservatória, Registo Civil, Registo, Nascimento, Casamento, Óbito, Divórcio, Conservatória dos Registos Centrais, estado civil, " }, + "office/government/tax": { + "name": "Finanças", + "terms": "Direção de Finanças, Repartição de Finanças, Direção das Finanças, Repartição das Finanças" + }, + "office/guide": { + "name": "Guia Turístico", + "terms": "Guia" + }, "office/insurance": { "name": "Agência de seguros", "terms": "Insurance Office, Seguros, Seguro" }, "office/it": { - "name": "Escritório de informática", - "terms": "IT Office" + "terms": "" }, "office/lawyer": { "name": "Escritório de advogados", @@ -4466,16 +4665,24 @@ }, "office/lawyer/notary": { "name": "Notário", - "terms": "Notary Office" + "terms": "Notary Office, Notariado" + }, + "office/moving_company": { + "name": "Empresa de Mudanças", + "terms": "Mudanças, Transportadora" }, "office/newspaper": { - "name": "Sede/filial de Jornal", - "terms": "Newspaper, Jornal, revista" + "name": "Sede/Filial de Jornal", + "terms": "jornal" }, "office/ngo": { "name": "Escritório de ONG", "terms": "NGO Office, Organização, Organização Não Governamental, NGO, ONG" }, + "office/notary": { + "name": "Notário", + "terms": "Notary Office, Notariado" + }, "office/physician": { "name": "Médico especialista" }, @@ -4483,21 +4690,38 @@ "name": "Sede/filial de partido político", "terms": "Political Party, Partido, Partidos" }, + "office/private_investigator": { + "name": "Detetive Privado", + "terms": "Detetive, Detetive Particular" + }, + "office/quango": { + "terms": "" + }, "office/research": { "name": "Centro de investigação", "terms": "Research Office, Escritório de Investigação, Centro de Pesquisa" }, + "office/surveyor": { + "terms": "" + }, + "office/tax_advisor": { + "terms": "" + }, "office/telecommunication": { - "name": "Escritório de telecomunicações", + "name": "Empresa de telecomunicações", "terms": "Telecom Office, Telecomunicações, Internet, Televisão" }, "office/therapist": { - "name": "Terapeuta", + "name": "Terapista", "terms": "Therapist, Terapista, Terapêutica" }, "office/travel_agent": { "name": "Agência de viagens" }, + "office/water_utility": { + "name": "Fornecedor de Água", + "terms": "Água, Companhia de Água, Cooperativa de Água" + }, "piste": { "name": "Pista de ski", "terms": "Piste/Ski Trail, Ski" @@ -4520,6 +4744,10 @@ "name": "Ilha", "terms": "Arquipélago, Atol, Ilha, Ilhéu, Recife, Restinga" }, + "place/islet": { + "name": "Ilhéu", + "terms": "ilhota, farelhão, pequena ilha, ilha pequena, rochedo, banco de areia, roca, cayo" + }, "place/isolated_dwelling": { "name": "Habitação isolada", "terms": "Isolated Dwelling, isolado, remoto, remota" @@ -4532,6 +4760,10 @@ "name": "Bairro", "terms": "Neigborhood, Vizinhança" }, + "place/plot": { + "name": "Lote", + "terms": "parcela" + }, "place/quarter": { "name": "Quarteirão", "terms": "quarteirão, bairro, vizinhança, limite" @@ -4576,6 +4808,10 @@ "name": "Barra Fixa Horizontal", "terms": "Barra Horizontal" }, + "playground/rocker": { + "name": "Baloiço de mola", + "terms": "Mola" + }, "playground/roundabout": { "name": "Gira-Gira", "terms": "Girar" @@ -4646,6 +4882,10 @@ "name": "Subestação", "terms": "Substation, energia, Sub-estação, Sub estação, Distribuição" }, + "power/switch": { + "name": "Interruptor", + "terms": "" + }, "power/tower": { "name": "Torre de alta tensão", "terms": "High-Voltage Tower, Torre de Alta-Tensão, Poste de Alta-Tensão" @@ -5187,8 +5427,8 @@ "terms": "Ticket Seller, Bilheteria, Bilhete, Ingresso" }, "shop/tiles": { - "name": "Loja de telhas", - "terms": "" + "name": "Loja de Tijoleiras", + "terms": "Tijoleira, Azulejo, Ladrilho" }, "shop/tobacco": { "name": "Tabacaria", @@ -5341,6 +5581,10 @@ "name": "Miradouro", "terms": "Viewpoint, Vista" }, + "tourism/wilderness_hut": { + "name": "Abrigo Remoto", + "terms": "Cabana, Abrigo de montanha, cabana de montanha" + }, "tourism/zoo": { "name": "Jardim zoológico", "terms": "Zoológico, Zoo, Zológico, Animais" @@ -5570,22 +5814,36 @@ "attribution": { "text": "Termos e opinião" }, - "description": "Imagens de satélite DigitalGlobe Premium.", - "name": "Imagens aéreas DigitalGlobe Premium" + "description": "Imagens aéreas DigitalGlobe Premium.", + "name": "DigitalGlobe Premium" + }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Termos e Opinião" + }, + "description": "Limites das imagens e datas de captura. As etiquetas aparecem no nível de aproximação 14 ou superior.", + "name": "DigitalGlobe Premium Vintage" }, "DigitalGlobe-Standard": { "attribution": { "text": "Termos e opinião" }, "description": "Imagens aéreas DigitalGlobe Standard.", - "name": "Imagens aéreas DigitalGlobe Standard" + "name": "DigitalGlobe Standard" + }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Termos e Opinião" + }, + "description": "Limites das imagens e datas de captura. As etiquetas aparecem no nível de aproximação 14 ou superior.", + "name": "DigitalGlobe Standard Vintage" }, "EsriWorldImagery": { "attribution": { "text": "Termos e Opinião" }, "description": "Imagens aéreas Esri.", - "name": "Imagens aéreas Esri." + "name": "Esri" }, "MAPNIK": { "attribution": { @@ -5599,7 +5857,7 @@ "text": "Termos e opinião" }, "description": "Imagens aéreas e de satélite.", - "name": "Imagens aéreas Mapbox" + "name": "Mapbox Satellite" }, "OSM_Inspector-Addresses": { "attribution": { diff --git a/dist/locales/ro.json b/dist/locales/ro.json index 1cf04ad4d..d71b0735c 100644 --- a/dist/locales/ro.json +++ b/dist/locales/ro.json @@ -212,7 +212,6 @@ "localized_translation_language": "Alege limba", "localized_translation_name": "Nume" }, - "zoom_in_edit": "Mărește pentru a edita", "login": "login", "logout": "logout", "loading_auth": "Conectare la OpenStreetMap..", @@ -463,8 +462,7 @@ }, "splash": { "welcome": "Bine ai venit în editorul iD OpenStreetMap", - "walkthrough": "Începe ghidul", - "start": "Editează acum" + "walkthrough": "Începe ghidul" }, "source_switch": { "live": "live", @@ -488,10 +486,6 @@ "tag_suggests_area": "Tag-ul {tag} sugerează că linia trebuie sa fie o suprafață, dar nu e.", "deprecated_tags": "Tag-uri învechite: {tags}" }, - "zoom": { - "in": "Mărește", - "out": "Micșorează" - }, "gpx": { "local_layer": "Fișier local", "zoom": "Mărește la strat", @@ -1995,9 +1989,6 @@ "name": "Școală", "terms": "" }, - "amenity/scrapyard": { - "terms": "" - }, "amenity/shelter": { "terms": "" }, @@ -2436,10 +2427,6 @@ "craft/scaffolder": { "terms": "" }, - "craft/sculpter": { - "name": "Sculptor", - "terms": "" - }, "craft/shoemaker": { "name": "Cizmar", "terms": "" @@ -2447,9 +2434,6 @@ "craft/stonemason": { "terms": "" }, - "craft/sweep": { - "terms": "" - }, "craft/tiler": { "terms": "" }, @@ -2601,10 +2585,6 @@ "name": "Potecă", "terms": "" }, - "highway/pedestrian": { - "name": "Drum Pietonal", - "terms": "" - }, "highway/primary": { "name": "Drum principal", "terms": "" @@ -3303,18 +3283,10 @@ "name": "Oficiu", "terms": "" }, - "office/accountant": { - "name": "Socotitor", - "terms": "" - }, "office/administrative": { "name": "Oficiu Administrativ", "terms": "" }, - "office/architect": { - "name": "Arhitect", - "terms": "" - }, "office/company": { "name": "Oficiu de Companie", "terms": "" @@ -3349,10 +3321,6 @@ "name": "Oficiu de Asigurare", "terms": "" }, - "office/it": { - "name": "Oficiu IT", - "terms": "" - }, "office/lawyer": { "name": "Cabinet de Avocatură", "terms": "" @@ -3361,10 +3329,6 @@ "name": "Notar", "terms": "" }, - "office/newspaper": { - "name": "Ziar", - "terms": "" - }, "office/ngo": { "name": "Oficiu NGO", "terms": "" @@ -3384,10 +3348,6 @@ "name": "Oficiu Telecom", "terms": "" }, - "office/therapist": { - "name": "Terapist", - "terms": "" - }, "office/travel_agent": { "name": "Agenție de Călătorii" }, @@ -4055,10 +4015,6 @@ "tourism/caravan_site": { "terms": "" }, - "tourism/chalet": { - "name": "Șalet", - "terms": "" - }, "tourism/gallery": { "name": "Galerie de Artă", "terms": "" diff --git a/dist/locales/ru.json b/dist/locales/ru.json index 2380d85af..861ad378e 100644 --- a/dist/locales/ru.json +++ b/dist/locales/ru.json @@ -310,7 +310,6 @@ "localized_translation_language": "Выберите язык", "localized_translation_name": "Название" }, - "zoom_in_edit": "Приблизьте для редактирования", "login": "войти", "logout": "выйти", "loading_auth": "Подключение к OpenStreetMap…", @@ -334,6 +333,7 @@ "save": "Сохранить", "cancel": "Отменить", "changes": "Правок: {count}", + "download_changes": "Скачать osmChange файл", "warnings": "Предупреждения", "modified": "Изменён", "deleted": "Удалён", @@ -479,6 +479,12 @@ "description": "Данные карты", "key": "F", "data_layers": "Слой данных", + "layers": { + "osm": { + "tooltip": "Картографические данные OpenStreetMap", + "title": "Данные OpenStreetMap" + } + }, "fill_area": "Заливать полигоны", "map_features": "Объекты на карте", "autohidden": "Эти объекты были автоматически скрыты, чтобы не загромождать карту на экране. Чтобы их редактировать, приблизьте карту." @@ -572,6 +578,7 @@ "keep_remote": "Чужая версия", "restore": "Восстановить", "delete": "Оставить удалённым", + "download_changes": "Или скачать osmChange файл", "done": "Все конфликты устранены!", "help": "Кто-то из участников OSM также изменил объекты, исправленные вами.\nПросмотрите каждый конфликт в списке ниже и решите, оставить ваши\nправки или принять правки другого участника.\n" } @@ -603,8 +610,7 @@ "splash": { "welcome": "Вас приветствует iD — редактор карт OpenStreetMap", "text": "Редактор iD — простой, но мощный инструмент для редактирования лучшей в мире бесплатной открытой карты. Версия программы: {version}. Дополнительную информацию смотрите на {website}, об ошибках сообщайте на {github}.", - "walkthrough": "Запустить обучение", - "start": "В редактор" + "walkthrough": "Запустить обучение" }, "source_switch": { "live": "основной", @@ -636,10 +642,6 @@ "tag_suggests_area": "Тег {tag} обычно ставится на полигоны, но это не полигон", "deprecated_tags": "Теги устарели: {tags}" }, - "zoom": { - "in": "Приблизить", - "out": "Отдалить" - }, "cannot_zoom": "В текущем режиме дальнейшее отдаление невозможно.", "full_screen": "Во весь экран", "gpx": { @@ -663,10 +665,14 @@ "title": "Справка", "key": "H", "help": "# Справка\n\nЭто редактор [OpenStreetMap](http://www.openstreetmap.org/): общедоступной,\nсвободноредактируемой карты мира. Вы можете использовать этот редактор для добавления\nи обновления карты вашей местности, улучшая открытую и свободную карту мира и помогая, таким образом, всем.\n\nВаши правки увидит каждый пользователь карты OpenStreetMap. Для\nредактирования вам потребуется [войти в OpenStreetMap](https://www.openstreetmap.org/login).\n\n[Редактор iD](http://ideditor.com/) — открытый совместный проект\nс [исходным кодом на GitHub](https://github.com/openstreetmap/iD).\n", + "editing_saving": "# Редактирование и сохранение\n\nЭтот редактор создан в основном для онлайн-редактирования, и\nсейчас вы работаете с ним именно через сайт.\n\n### Выбор объектов\n\nЧтобы выбрать объект карты, например дорогу или точку\nинтереса, щёлкните по нему на карте. Выбранный объект будет\nпомечен выделением, откроется панель его свойств, а рядом с ним\nпоявится меню с действиями, которые вы можете над ним совершить.\n\nМожно выделить несколько объектов сразу, удерживая при щелчке\nклавишу Shift, или растягивая рамку выделения с нажатой кнопкой\nмыши. При этом, все точки внутри рамки будут выделены.\n\n### Сохранение правок\n\nКогда вы редактируете карту, например изменяете дороги, здания и\nместа, эти изменения хранятся на вашем компьютере, пока вы не\nсохраните их на сервере. Не бойтесь ошибиться — изменения\nможно откатить кнопкой «Отмена», а также снова повторить их\nкнопкой «Повтор».\n\nНажмите «Сохранить» для сохранения группы изменений — например,\nвы закончили редактировать один район города и хотите продолжить\nс другим. У вас будет возможность просмотреть ваши изменения, а\nредактор покажет предложения и предупреждения, если\nв изменённых данных что-то не так.\n\nЕсли всё верно, введите краткое описание ваших изменений и ещё\nраз нажмите «Сохранить» для отправки данных на [OpenStreetMap.org](http://www.openstreetmap.org/),\nгде они станут видны другим участникам для просмотра и\nдальнейшего улучшения карты.\n\nЕсли у вас не получается закончить с правками за один раз,\nокно редактора можно закрыть, и тогда при следующем запуске\nредактора (на том же компьютере и в том же браузере) программа\nпредложит восстановить вашу работу.\n\n### Использование редактора\n\nСписок доступных горячих клавиш можно получить нажатием `?`.\n", + "roads": "# Дороги\n\nВ этом редакторе вы можете создавать, изменять и удалять дороги.\nДороги бывают самых разных типов: тропы, шоссе, грунтовки, велодорожки\nи другие — любой участок местности, по которому есть какое-либо движение.\n\n### Выбор\n\nЩёлкните по дороге, чтобы выбрать её. Дорога подсветится контуром выделения,\nслева появится редактор свойств дороги. Щелчок правой кнопкой мыши на\nлинии дороги покажет меню действий.\n\n### Изменение\n\nИногда вам могут встретиться дороги, не совпадающие со слоем снимка или\nGPS-трека. Такие дороги можно отредактировать.\n\nЩёлкните по дороге, которую надо изменить. Линия дороги подсветится, и\nна ней появятся контрольные точки, которые можно перетащить на правильные\nместа. Если вы захотите сделать дорогу более детализированной, дважды\nщёлкните по линии для добавления в этом месте новой контрольной точки.\n\nЕсли в реальности дороги соединяются на перекрестке, а на карте не\nсоединены — перетащите одну из контрольных точек дороги на линию другой.\nПравильное соединение дорог очень важно для карты и навигаторов,\nпрокладывающих по ним маршрут.\n\nЧтобы передвинуть линию дороги целиком, выберите инструмент «Перемещение»\nили нажмите клавишу «M». Повторный щелчок мышью зафиксирует дорогу\nна новом месте.\n\n### Удаление\n\nЕсли дорога нарисована совсем неправильно — её не видно на спутниковом снимке,\nа в идеальном случае вы были сами на месте и убедились в её отсутствии — вы\nможете удалить дорогу с карты. Будьте очень осторожны, удаляя что-либо: как и\nдругие ваши правки, это затрагивает всех пользователей карты. Спутниковые снимки\nчасто бывают устаревшими, так что дорога может быть просто построена недавно.\n\nЧтобы удалить дорогу, выберите её щелчком мыши, затем щелкните\nпо значку мусорного ведра или нажмите клавишу Delete.\n\n### Создание\n\nНашли место, где в действительности есть дорога, а на карте её нет?\nНажмите кнопку «Линия» слева вверху окна редактора или клавишу `2`,\nчтобы начать рисовать линию.\n\nЩёлкните на карте в месте, где должна начинаться дорога. Если она ответвляется\nот уже нарисованной, можно начать рисование щелчком мыши в месте\nих пересечения.\n\nЗатем щёлкайте на карте вдоль траектории дороги согласно спутниковому снимку\nили GPS-треку. Если новая дорога пересекается с другой, обязательно щёлкните\nпо уже существующей, чтобы создать точку перекрёстка.\nЧтобы закончить рисование, сделайте двойной щелчок мышью или\nнажмите Enter на клавиатуре.\n", "gps": "# GPS\n\nДанные GPS — наиболее достоверный источник данных для OpenStreetMap. Этот редактор\nподдерживает загрузку локальных файлов треков в формате .gpx с вашего компьютера.\nВы можете записывать такие треки с помощью приложений для смартфонов и GPS-устройств.\n\nБолее подробно о сборе данных GPS можно прочесть\nна странице [Mapping with a Smartphone, GPS or Paper](http://learnosm.org/en/mobile-mapping/).\n\nЧтобы воспользоваться GPX-треками при рисовании карты,\nперетащите файл трека прямо в окно редактора. Если трек\nуспешно загрузится, то он отобразится на карте в виде светло-фиолетовой\nлинии. В меню «Данные карты» можно выключить, включить или\nмасштабировать слой с треками.\n\nТрек при этом не будет загружен в базу OpenStreetMap, лучший\nспособ его использования — нарисовать новые объекты карты,\nосновываясь на данных трека; вы также можете [загрузить его на\nOpenStreetMap](http://www.openstreetmap.org/trace/create), чтобы\nим смогли воспользоваться другие.\n", "imagery": "# Спутниковые снимки\n\nСнимки земной поверхности с воздуха — важный источник данных для картирования. В меню «Настройка слоёв» с левой стороны окна редактора доступно подключение слоёв спутниковых снимков, аэрофотосъёмки и других открытых источников изображений.\n\nПо умолчанию в редакторе подключён слой спутниковых снимков [Bing Maps](http://www.bing.com/maps/), но в разных местах земного шара могут быть доступны и другие источники слоёв. Для ряда районов некоторых стран, к примеру США, Франции и Дании, доступны изображения очень высокого качества.\n\nИногда спутниковые снимки сдвинуты относительно данных карты по вине поставщика снимков. Если вы видите множество дорог, не совпадающих со снимком, не начинайте передвигать их под снимок. Вместо этого нужно сдвинуть снимок для совпадения с существующими данными — для этого в меню «Настройка слоёв» есть кнопка «Исправить смещение».\n", "addresses": "# Адреса\n\nАдреса — одна из самых важных составляющих карты.\n\nВ OpenStreetMap адреса хранятся в свойствах зданий и мест, расположенных вдоль улиц.\n\nАдресную информацию можно добавлять к полигонам зданий, а также к отдельным точкам. Лучший источник адресов — ваши собственные знания или данные, полученные после обхода местности. Как и в случае с другими данными, копирование адресов из коммерческих источников вроде Yandex, 2GIS, Google строго запрещено.\n", - "inspector": "# Использование редактора свойств\n\nРедактор свойств — это элемент интерфейса программы,\nнаходящийся в левой части окна, который позволяет отредактировать\nсвойства выбранного объекта.\n\n### Выбор типа объекта\n\nПосле того как вы добавили точку, линию или область, вы можете\nвыбрать, какой именно это тип объекта: шоссе, обычная дорога,\nсупермаркет или кафе. Редактор свойств показывает кнопки для\nвыбора наиболее часто используемых типов объектов, и можно\nвоспользоваться строкой поиска, чтобы найти другие типы.\n\nЩёлкните по значку «i» в нижнем правом углу кнопки типа\nобъекта, чтобы узнать о нём больше. Щёлкните по самой кнопке,\nчтобы выбрать этот тип.\n\n### Использование полей и редактирование тегов\n\nПосле того как вы выберете тип объекта или выделите объект, у\nкоторого тип уже проставлен, редактор свойств покажет поля\nописывающие его свойства, например название или адрес.\n\nНиже этих полей находится выпадающий список «Добавить поле»,\nс помощью которого можно добавить дополнительные свойства,\nнапример ссылку на статью в Википедии, информацию о\nдоступности для инвалидов и др.\n\nВ самом низу окна редактора свойств находится кнопка\n«Дополнительные теги», позволяющая добавить объекту произвольные\nтеги. О наиболее популярных комбинациях тегов можно узнать на странице [Taginfo](http://taginfo.openstreetmap.org/).\n\nИзменения в редакторе свойств применяются к объекту\nавтоматически. Как и другие изменения, их можно откатить кнопкой «Отмена».\n" + "inspector": "# Использование редактора свойств\n\nРедактор свойств — это элемент интерфейса программы,\nнаходящийся в левой части окна, который позволяет отредактировать\nсвойства выбранного объекта.\n\n### Выбор типа объекта\n\nПосле того как вы добавили точку, линию или область, вы можете\nвыбрать, какой именно это тип объекта: шоссе, обычная дорога,\nсупермаркет или кафе. Редактор свойств показывает кнопки для\nвыбора наиболее часто используемых типов объектов, и можно\nвоспользоваться строкой поиска, чтобы найти другие типы.\n\nЩёлкните по значку «i» в нижнем правом углу кнопки типа\nобъекта, чтобы узнать о нём больше. Щёлкните по самой кнопке,\nчтобы выбрать этот тип.\n\n### Использование полей и редактирование тегов\n\nПосле того как вы выберете тип объекта или выделите объект, у\nкоторого тип уже проставлен, редактор свойств покажет поля\nописывающие его свойства, например название или адрес.\n\nНиже этих полей находится выпадающий список «Добавить поле»,\nс помощью которого можно добавить дополнительные свойства,\nнапример ссылку на статью в Википедии, информацию о\nдоступности для инвалидов и др.\n\nВ самом низу окна редактора свойств находится кнопка\n«Дополнительные теги», позволяющая добавить объекту произвольные\nтеги. О наиболее популярных комбинациях тегов можно узнать на странице [Taginfo](http://taginfo.openstreetmap.org/).\n\nИзменения в редакторе свойств применяются к объекту\nавтоматически. Как и другие изменения, их можно откатить кнопкой «Отмена».\n", + "buildings": "# Здания\n\nOpenStreetMap — крупнейшая в мире база данных о зданиях. Вы можете добавлять и изменять эти данные.\n\n### Выбор\n\nЧтобы выбрать здание, нужно щёлкнуть по его полигону. При этом здание\nбудет подсвечено, слева откроется редактор его свойств.\nЩелчок правой кнопкой мыши на линии полигона здания покажет меню действий.\n\n### Редактирование\n\nИногда здания неправильно размещены или имеют неверные свойства.\n\nЧтобы переместить здание целиком, выберите его и нажмите клавишу 'M'\nили щёлкните на инструменте «Перемещение» в меню действий.\nПеретащите здание мышью в нужное место и щёлкните, чтобы зафиксировать\nего на новом месте.\n\nЧтобы изменить форму здания, перетаскивайте точки его полигона на нужные места.\n\n### Создание\n\nОдно из основных противоречий в добавлении новых зданий\nв OpenStreetMap заключается в том, что их можно задавать как\nполигонами, так и точками. Стоит взять за правило такой подход:\nсамо здание по возможности рисуется полигоном, а находящиеся\nв этом здании компании, магазины и другие подобные объекты,\nпривязанные к зданиям, рисуются точками, находящимися внутри\nполигона здания.\n\nНарисуйте полигон здания с помощью кнопки «Область», находящейся\nслева вверху окна, затем закончите рисование либо нажатием клавиши\nEnter на клавиатуре, либо щёлкнув мышью на первой нарисованной\nточке здания.\n\n### Удаление\n\nЕсли здание нарисовано совсем неправильно — его нет на спутниковом\nснимке или вы лично, на месте убедились, что оно отсутствует — вы\nможете удалить его с карты. Будьте очень осторожны при удалении\nобъектов: ваши правки затрагивают всех пользователей OSM, а\nснимки часто бывают устаревшими. Возможно,\nэто здание построили недавно.\n\nЧтобы удалить здание, выделите его щелчком мыши, а затем нажмите на значок мусорного ведра в меню действий или клавишу Delete.\n", + "relations": "# Отношения\n\nОтношение — это специальный тип объекта в OpenStreetMap,\nкоторый объединяет другие объекты вместе. Например,\nдва распространённых типа отношений — *отношения маршрутов*, которые\nобъединяют вместе участки дорог, принадлежащих одной автостраде или шоссе,\nи *мультиполигоны*, которые группируют несколько линий в сложный полигон,\nописывающий область (например из нескольких островов или с дырами внутри).\n\nОбъекты, объединённые в отношение, называются участниками отношения.\nНа боковой панели вы можете увидеть, участником каких отношений является\nвыбранный объект; нажмите на отношение в этом списке,\nчтобы выделить его. Когда отношение выделено, вы можете увидеть всех\nего участников в списке на боковой панели и подсвеченными на карте.\n\nВ основном, редактор iD заботится о поддержке отношений сам,\nпока вы редактируете. Основной момент, на который стоит обратить внимание:\nесли вы удаляете отрезок дороги, чтобы перерисовать его с\nбольшей точностью, следует убедиться, что новый отрезок будет участником\nтех же отношений, что и начальный.\n\n## Редактирование отношений\n\nВот некоторые основы, если вы хотите редактировать отношения.\n\nЧтобы добавить объект в отношение, выделите объект, нажмите кнопку «+»\nв разделе «Все отношения» на боковой панели и выберите или напечатайте\nназвание отношения.\n\nЧтобы создать новое отношение, выберите первый объект, который будет\nучастником отношения, нажмите кнопку «+» в разделе «Все отношения» и\nвыберите «Новое отношение…».\n\nЧтобы удалить объект из отношения, выберите объект и нажмите кнопку\nс мусорной корзиной рядом с отношением, из которого вы хотите его удалить.\n\nИспользуя инструмент «Объединить», можно создать мультиполигон с отверстиями.\nНарисуйте две границы (внутреннюю и внешнюю) и, удерживая клавишу\nShift, щёлкните по каждой, чтобы они обе были выделены, после чего нажмите\nкнопку «Объединить эти линии» (+).\n" }, "intro": { "done": "выполнено", @@ -802,35 +808,35 @@ "title": "Перемещение", "drag": "Область рисования карты показывает данные OpenStreetMap поверх подложки.{br}Двигайте карту, нажав левую кнопку мыши и перетаскивая её. Кнопки клавиатуры со стрелочками тоже работают. **Попробуйте перетащить карту!**", "zoom": "Изменить масштаб можно колесом мыши или прокруткой на трекпеде, либо кнопкам {plus} и {minus}. **Попробуйте увеличить карту!**", - "features": "Мы используем слово *объект* для описания предметов, отображаемых на карте. Любой предмет реального мира может быть добавлен как объект не карте в OpenStreetMap.", + "features": "Мы используем слово *объект* для описания предметов, отображаемых на карте. Любой предмет реального мира может быть добавлен как объект на карте в OpenStreetMap.", "points_lines_areas": "Объекты на карте создаются с помощью *точек, линий или областей.*", - "nodes_ways": "В OpenStreetMap, точки иногда называются *улзами*, а линии и области иногда называются *отрезками*.", + "nodes_ways": "В OpenStreetMap, точки иногда называются *узлами*, а линии и области иногда называются *отрезками*.", "click_townhall": "Любые объекты на карте могут быть выбраны щелчком на них. **Нажмите на точку чтобы выбрать ее.**", "selected_townhall": "Отлично! Теперь точка выделена. Выбранный объект выделяется пульсирующей обводкой.", "editor_townhall": "Когда объект выбран, рядом с картой показывается *редактор объекта*.", "preset_townhall": "В верхней части редактора объекта отображается тип объекта. Эта точка имеет тип {preset}.", "fields_townhall": "Средняя часть редактора объектов содержит *поля*, соответствующие свойствам объекта, таким как название и адрес.", "close_townhall": "**Закройте редактор объекта с помощью клавиши Esc или нажмите кнопку {button} в верхнем углу.**", - "search_street": "Вы можете искать объекта на видимой части карты или во всём мире. **Попробуйте искать '{name}'.**", + "search_street": "Вы можете искать объекты на видимой части карты или во всём мире. **Попробуйте искать '{name}'.**", "choose_street": "**Выберите {name} из списка чтобы выбрать его.**", - "selected_street": "Отлично! {name} теперь выбрано.", - "editor_street": "Поля, отображаемые для улицы отличаются от полей показываемых для здания администрации.{br}Для выбранной улицы редактор объекта покажет поля наподобие '{field1}' и '{field2}'. **Закройте редактор объекта нажав escape или кнопку {button}.**", + "selected_street": "Отлично! Теперь выбрана {name}.", + "editor_street": "Поля, отображаемые для улицы, отличаются от полей показываемых для здания администрации.{br}Для выбранной улицы редактор объекта покажет поля, характерные для дорог: '{field1}' и '{field2}'. **Закройте редактор объекта нажав escape или кнопку {button}.**", "play": "Попробуйте подвигать карту и щелкнуть на некоторых других объектах чтобы узнать, какие виды объектов могут быть добавлены на OpenStreetMap. **Когда вы будете готовы перейти к следующей главе, нажмите '{next}'.**" }, "points": { "title": "Точки", - "add_point": "Точки можно использовать для отображения таких объектов, как магазины, рестораны и памятники.{br}Они отражают местоположение объекта и описывают его. **Нажмите {button} кнопку Точка, чтобы добавить новую точку.**", + "add_point": "Точки можно использовать для отображения таких объектов, как магазины, рестораны и памятники.{br}Они отражают местоположение объекта и описывают его. **Нажмите кнопку {button} Точка, чтобы добавить новую точку.**", "place_point": "Чтобы разместить точку на карте наведите курсор мыши в то место, где она должна располагаться, затем левый клик мыши или нажмите пробел. **Наведите указатель мышь на здание и нажмите левую кнопку или пробел.**", "search_cafe": "Точками можно обозначать самые разные объекты.\nСейчас вы добавили точку для кафе. **Найдите «{preset}»**", "choose_cafe": "**Выберите {preset} из списка.**", - "feature_editor": "Вы пометили точку как кафе. Используя свойства объекта, можно добавить больше информации о кофе.", + "feature_editor": "Вы пометили точку как кафе. Используя свойства объекта, можно добавить больше информации об этом кафе.", "add_name": "В OpenStreetMap все поля необязательные и это нормально оставить поле пустым если вы не уверены в его значении.{br}Предположим, у вас есть местное знание об этом кафе и вы знаете его название. **Добавьте название этого кафе.**", "add_close": "Редактор объекта запомнит все правки автоматически. **Когда вы добавили имя, нажмите Esc, Ввод, или кнопку {button} чтобы закрыть редактор объектов.**", - "reselect": "Нередко точки уже нарисованы на карте, но неточно или с ошибками. Мы можем их поправить. **Нажмите и выберите кафе, которые вы создали.**", - "update": "Давайте добавим свойств этом кафе. Заполните его название, укажите кухню или добавьте адрес. **Заполните свойства кафе.**", + "reselect": "Часто точки уже нарисованы на карте, но неточно или с ошибками. Мы можем их поправить. **Нажмите на точку кафе, которые вы создали.**", + "update": "Давайте добавим значений свойствам этого кафе. Заполните его название, укажите кухню или добавьте адрес. **Заполните свойства кафе.**", "update_close": "**Когда вы закончите обновлять кафе, нажмите Esc, Ввод, или кнопку {button} чтобы закрыть редактор объектов.**", "rightclick": "Вы можете щелкнуть правой кнопкой мыши по любому объекту, чтобы увидеть *меню редактирования*, в котором показан список операций редактирования, которые могут быть выполнены. ** Щелкните правой кнопкой мыши, чтобы выбрать созданную вами точку и показать меню редактирования. **", - "delete": "Не бойтесь удалять объекты, которыч нет в реальном мире.{br}Удаление объекта с OpenStreetMap удаляет его с карты, которой все пользуются, поэтому вы должны убедиться, что объект действительно исчез, прежде чем удалить его. ** Нажмите кнопку {button}, чтобы удалить точку. **", + "delete": "Не бойтесь удалять объекты, которых нет в реальном мире.{br}Удаление объекта с OpenStreetMap удаляет его с карты, которой все пользуются, поэтому вы должны убедиться, что объект действительно исчез, прежде чем удалить его. ** Нажмите кнопку {button}, чтобы удалить точку. **", "undo": "Вы всегда можете отменить все изменения перед сохранением Ваших правок в OpenStreetMap. **Нажмите кнопку {button} для отмены удаления точки **.", "play": "Теперь, когда вы знаете, как добавлять и править точки, попробуйте попрактиковаться и создать еще немного точек! **Когда вы будете готовы перейти к следующей главе, нажмите '{next}'.**" }, @@ -852,36 +858,58 @@ "title": "Линии", "add_line": "*Линии* используются для обозначения таких объектов как дороги, железные дороги и реки. **Нажми {button} кнопку Линия и добавь новую линию.**", "start_line": "Вот дорога, которая не нарисована. Давайте добавим её!{br}В OpenStreetMap линии должны быть нарисованы по центру дороги. Вы можете перетаскивать и масштабировать карту во время рисования, если это необходимо. **Начните новую линию, щёлкнув по верхнему концу этой отсутствующей дороги.**", - "intersect": "Кликните или нажмите пробел для добавления сегментов к линии.{br}Дороги, и многие другие типы линий являются частью более крупной сети. Важно, чтобы эти линии были соединены в правильном порядке для работы приложений навигации. **Кликните на {names} для создания точки пересечения двух линий.**", + "intersect": "Кликните или нажмите пробел для добавления сегментов к линии.{br}Дороги, и многие другие типы линий являются частью более крупной сети. Важно, чтобы эти линии были соединены в правильном порядке для работы приложений навигации. **Кликните на {name} для создания точки пересечения двух линий.**", "retry_intersect": "Эта дорога должна пересекаться с {name}. Попробуй ещё раз!", "continue_line": "Продолжайте рисовать линию для новой дороги. Помните, что Вы можете при необходимости перетаскивать и зуммировать карту.{br}Когда закончите рисовать, кликните на последнем сегменте снова. **Завершить рисование дороги.**", "choose_category_road": "**Выберите {category} из списка.**", "choose_preset_residential": "Существует много различных типов дорог, но в данном случае это дорога вдоль жилых зон. **Выберите тип дороги «{preset}»**", "retry_preset_residential": "Вы не выбрали тип {preset}. **Щёлкните здесь, чтобы выбрать заново.**", - "name_road": "**Дайте этой дороге название, затем нажмите escape, enter или щёлкните {button} кнопку, чтобы закрыть редактор свойств.**", + "name_road": "**Дайте этой дороге название, затем нажмите escape, enter или щёлкните кнопку {button}, чтобы закрыть редактор свойств.**", "did_name_road": "Замечательно! Теперь мы изучим как изменить форму линии.", "update_line": "Иногда вам потребуется изменить форму существующей линии. Вот эта дорога явно выглядит не совсем правильно.", - "add_node": "Мы можем добавить сегментов к этой линии для улучшения ее формы. Один из способов добавить сегмент это двойной клик по линии там, где вы хотите разместить этот сегмент. **Двойной клик по линии для создания нового сегмента.**", + "add_node": "Мы можем добавить сегментов к этой линии для улучшения ее формы. Один из способов добавить сегмент это двойной клик по линии там, где вы хотите разместить начало нового сегмента. **Двойной клик по линии для создания нового сегмента.**", "start_drag_endpoint": "Когда линия выделена, можно перетаскивать любой ее сегмент, кликнув и удерживая левую кнопку мыши. **Перетащите конечную точку к месту, где эти дороги должны пересекаться.**", "finish_drag_endpoint": "Вот неплохое место. **Отпустите левую кнопку мыши чтобы завершить перемещение.**", "start_drag_midpoint": "Маленькие треугольники нарисованы по центру сегментов. Другой способ создать новый сегмент - это перетащить точку по центру сегмента на новую позицию. ** Перетащите треугольник в середине сегмента для создания нового сегмента вдоль изгиба дороги.**", + "continue_drag_midpoint": "Линия выглядит намного лучше! Продолжайте уточнять линию двойным кликом или перетаскиванием серединным точек, пока кривая не совпадет с формой дороги. **Когда вы будете удовлетворены формой линии, нажмите ОК**", + "delete_lines": "Удалять линии дорог, которых не существуют в реальным мире — нормально. Здесь вы видите пример того, что город планировал {street}, но так и не построил. Мы можем улучшить эту часть карты, удалив лишние линии.", + "rightclick_intersection": "Последняя построенная улица — {street1}, поэтому мы *разделим* {street2} в точке пересечения и удалим линни сверху. **Нажмите правой кнопкой на точке пересечения.**", "split_intersection": "**Щелкните кнопку {button} чтобы разделить {street}.**", "retry_split": "Вы не щелкнули кнопку «Разделить». Попробуйте снова.", - "retry_delete": "Вы не щелкнули кнопку «Удалить». Попробуйте снова." + "did_split_multi": "Отличная работа! {street1} теперь разделена на две части. Верхнюю часть можно удалить. **Щелкните на верхней части {street2} чтобы выделить ее.**", + "did_split_single": "**Щелкните на верхней части {street2} чтобы выделить ее.**", + "multi_select": "Линия {selected} теперь выбрана. Давайте выделим ещё и {other1}. Вы можете выделять несколько линий щелчком с нажатой клавишей Shift. **Нажмите Shift и щёлкните на {other2}.**", + "multi_rightclick": "Хорошо. Теперь выделены обе линии, которые нужно удалить. **Нажмите правой кнопкой мыши на любой из этих линий, чтобы перейти к меню редактирования объекта.**", + "multi_delete": "**Щёлкните по кнопке {button} чтобы удалить эти линии.**", + "retry_delete": "Вы не щелкнули кнопку «Удалить». Попробуйте снова.", + "play": "Великолепно! Используя полученные навыки, потренируйтесь в редактировании других линий. **Когда будете готовы перейти к следующей главе, нажмите '{next}'.**" }, "buildings": { "title": "Здания", + "add_building": "OpenStreetMap — крупнейшая в мире база данных о зданиях.{br}Вы можете добавить ещё не внесенные здания. **Нажмите кнопку {button} Область, чтобы добавить новую область**", + "start_building": "Давайте обведём контур этого дома, чтобы добавить его на карту.{br}Здания нужно обводить по фундаменту с максимальной точностью. **Щелкните или нажмите пробел на одном из углов здания, чтобы создать первую точку.**", + "continue_building": "Добавьте точки на остальные углы дома. Можете увеличить изображение, чтобы видеть больше деталей.{br}Нажмите пробел или еще раз щёлкните на первой или последней точке контура чтобы завершить здание. **Завершите рисование здания.**", + "retry_building": "Похоже, что Вы отметили не все углы здания. Попробуйте ещё раз!", "choose_category_building": "**Выберите {category} из списка.**", + "choose_preset_house": "Существует много типов зданий, но этот дом точно частный жилой.{br}Если Вы точно не знаете тип дома, можно выбирать *Здание без конкретного типа*. **Выберите тип {preset}.**", + "close": "**Нажмите Esc или кнопку {button} , чтобы закрыть редактор свойств.**", + "rightclick_building": "**Нажмите правой кнопкой мыши на добавленном здании, чтобы перейти к меню редактирования объекта.**", "square_building": "Дом, который вы только что добавили, будет выглядеть еще лучше с идеально прямыми углами. **Нажмите кнопку {button} чтобы спрямить форму здания.**", "retry_square": "Вы не щелкнули кнопку «Спрямить углы». Попробуйте снова.", + "done_square": "Видите как углы здания передвинулись на другое место? Давайте освоим еще один полезный приём.", "add_tank": "Теперь мы обрисуем этот круглый резервуар. **Нажмите {button} кнопку «Область» чтобы добавить новую область.**", + "start_tank": "Не волнуйтесь, не придётся рисовать идеальный круг. Просто нарисуйте область с точками на контуре резервуара. **Щёлкните или нажмите пробел на контуре резервуара, чтобы создать первую точку.**", + "continue_tank": "Добавьте еще несколько точек на контуре. Нарисованные точки образуют круглую область.{br}Нажмите Enter или щёлкните ещё раз на первой или последней точке, чтобы закончить рисование. **Завершите обведение резервуара.**", "search_tank": "**Искать '{preset}'.**", "choose_tank": "**Выберите {preset} из списка**", + "circle_tank": "**Нажмите кнопку {button}, чтобы сделать резервуар круглым.**", "retry_circle": "Вы не щелкнули кнопку «Скруглить». Попробуйте снова.", "play": "Замечательно! Потренируйтесь обводить ещё несколько зданий, и попробуйте другие команды в меню редактирования. **Нажмите '{next}' когда будете готовы перейти к следующей главе.**" }, "startediting": { "title": "Редактировать", + "help": "Теперь можно приступать к редактированию OpenStreetMap!{br}Вы можете повторить это обучение или ознакомиться с более подробной документацией, нажав кнопку справки {button} или клавишу '{key}'.", + "shortcuts": "Вы можете посмотреть список команд вместе с их горячими клавишами. Нажмите кнопку '{key}'.", "save": "Не забывайте регулярно сохранять свои изменения!", "start": "Рисовать карту!" } @@ -889,8 +917,12 @@ "shortcuts": { "title": "Горячие клавиши", "tooltip": "Справка по горячим клавишам", + "toggle": { + "key": "?" + }, "key": { "alt": "Alt", + "backspace": "Backspace", "cmd": "Cmd", "ctrl": "Ctrl", "delete": "Delete", @@ -907,6 +939,9 @@ "shift": "Shift", "space": "Пробел" }, + "gesture": { + "drag": "drag" + }, "or": "-или-", "browsing": { "title": "Просмотр", @@ -972,6 +1007,8 @@ "rotate": "Повернуть выделенные объекты", "orthogonalize": "Выпрямить линию / Сделать область прямоугольной", "circularize": "Сделать замкнутую линию или область кругом", + "reflect_long": "Отразить объекты по их длинной оси. ", + "reflect_short": "Отразить объекты по их короткой оси. ", "delete": "Удалить выделенные объекты" }, "commands": { @@ -1237,6 +1274,9 @@ "brand": { "label": "Бренд" }, + "bridge": { + "label": "Тип моста" + }, "building": { "label": "Тип здания / конструкция" }, @@ -1328,6 +1368,12 @@ "craft": { "label": "Тип мастерской" }, + "crane/type": { + "label": "Тип крана", + "options": { + "portal_crane": "Портальный кран" + } + }, "crop": { "label": "Выращивается" }, @@ -1340,6 +1386,9 @@ "currency_multi": { "label": "Типы валюты" }, + "cutting": { + "label": "Тип вырубки" + }, "cycle_network": { "label": "Сеть" }, @@ -1408,6 +1457,9 @@ "drive_through": { "label": "Доступен без выхода из машины" }, + "duration": { + "label": "Продолжительность" + }, "electrified": { "label": "Электрификация", "options": { @@ -1425,6 +1477,9 @@ "label": "Email", "placeholder": "example@example.com" }, + "embankment": { + "label": "Тип насыпи" + }, "emergency": { "label": "Экстренные службы" }, @@ -1462,9 +1517,18 @@ "wall": "Настенный" } }, + "fitness_station": { + "label": "Тип снаряжения" + }, "fixme": { "label": "Исправь меня" }, + "ford": { + "label": "Тип брода" + }, + "frequency": { + "label": "Частота действий" + }, "fuel": { "label": "Топливо" }, @@ -1506,6 +1570,9 @@ "handrail": { "label": "Поручни" }, + "healthcare/speciality": { + "label": "Специальности" + }, "height": { "label": "Высота (метры)" }, @@ -1547,6 +1614,9 @@ "inscription": { "label": "Надпись" }, + "intermittent": { + "label": "Прерывистый" + }, "internet_access": { "label": "Доступ в Интернет", "options": { @@ -1654,6 +1724,13 @@ "maxweight": { "label": "Макс. вес" }, + "memorial": { + "label": "Тип памятника" + }, + "milestone_position": { + "label": "Положение километрового столба", + "placeholder": "Расстояние с точностью до одного знака (123.4)" + }, "mtb/scale": { "label": "Сложность трассы для горного велосипеда", "options": { @@ -1692,7 +1769,7 @@ }, "name": { "label": "Название", - "placeholder": "Местное название (если имеется)" + "placeholder": "Имя собственное, без описаний (если есть)" }, "natural": { "label": "Природные объекты" @@ -1863,6 +1940,9 @@ "railway": { "label": "Тип" }, + "rating": { + "label": "Трансформаторная мощность" + }, "recycling_accepts": { "label": "Принимает" }, @@ -1873,6 +1953,30 @@ "container": "Контейнер для приема отходов на переработку" } }, + "ref_aeroway_gate": { + "label": "Номер ворот" + }, + "ref_golf_hole": { + "label": "Номер лунки" + }, + "ref_highway_junction": { + "label": "Номер съезда" + }, + "ref_platform": { + "label": "Номер платформы" + }, + "ref_road_number": { + "label": "Номер дороги" + }, + "ref_route": { + "label": "Номер маршрута" + }, + "ref_runway": { + "label": "Номер полосы" + }, + "ref_stop_position": { + "label": "Номер остановки" + }, "relation": { "label": "Тип отношения" }, @@ -2028,9 +2132,18 @@ }, "placeholder": "не указано" }, + "structure_waterway": { + "label": "Тип тоннеля", + "options": { + "tunnel": "Туннель, арка в доме" + } + }, "studio": { "label": "Тип" }, + "substance": { + "label": "Перекачиваемое вещество" + }, "substation": { "label": "Тип" }, @@ -2087,6 +2200,9 @@ "tourism": { "label": "Тип" }, + "tourism_attraction": { + "label": "Туризм" + }, "tower/construction": { "label": "Тип конструкции", "placeholder": "На растяжках, Решетчатая, Скрытая, …" @@ -2123,9 +2239,24 @@ }, "placeholder": "Отличная, хорошая, плохая…" }, + "transformer": { + "options": { + "auto": "Автотрансформатор", + "auxiliary": "Вспомогательный", + "converter": "Конвертер", + "distribution": "Распределительный", + "generator": "Генератор", + "phase_angle_regulator": "Фазоповоротный", + "traction": "Тяговый", + "yes": "Неизвестный" + } + }, "trees": { "label": "Деревья" }, + "tunnel": { + "label": "Тип тоннеля" + }, "vending": { "label": "Тип товаров" }, @@ -2137,6 +2268,21 @@ "street": "От 5 до 20 м" } }, + "volcano/status": { + "label": "Статус вулкана", + "options": { + "active": "Активный", + "dormant": "Бездействующий", + "extinct": "Потухший" + } + }, + "volcano/type": { + "label": "Тип вулкана", + "options": { + "scoria": "Шлаковый", + "shield": "Щитовидный" + } + }, "wall": { "label": "Тип" }, @@ -2164,6 +2310,12 @@ }, "wikipedia": { "label": "Википедия" + }, + "windings/configuration": { + "options": { + "open": "Открытый", + "zigzag": "Зиг Заг" + } } }, "presets": { @@ -2677,6 +2829,9 @@ "name": "Ветеринар", "terms": "ветеринар, ветеринарный врач, ветеринарная клиника" }, + "amenity/waste/dog_excrement": { + "name": "Урна для экскрементов собак" + }, "amenity/waste_basket": { "name": "Мусорная корзина", "terms": "мусорная корзина, урна, мусорка" @@ -2705,19 +2860,29 @@ "terms": "дорожное покрытие" }, "attraction/animal": { - "name": "Животные" + "name": "Животные", + "terms": "зоопарк, лев, тигр, обезьяна" }, "attraction/big_wheel": { - "name": "Колесо обозрения" + "name": "Колесо обозрения", + "terms": "Колесо обозрения" }, "attraction/bumper_car": { "name": "Автодром (бамперные машинки)" }, "attraction/bungee_jumping": { - "name": "Банджи-джампинг" + "name": "Банджи-джампинг", + "terms": "Батут" }, "attraction/carousel": { - "name": "Карусель" + "name": "Карусель", + "terms": "Карусель, Колесо обозрения, Аттракционы" + }, + "attraction/pirate_ship": { + "name": "Пиратский корабль" + }, + "attraction/train": { + "name": "Аттракцион \"туристический поезд\"" }, "barrier": { "name": "Преграда", @@ -2980,6 +3145,9 @@ "name": "Мастерская часовщика", "terms": "часовщик" }, + "craft/confectionery": { + "name": "Кондитерская" + }, "craft/dressmaker": { "name": "Портной", "terms": "портной, швея, портниха, модистка, одежда" @@ -3076,10 +3244,6 @@ "name": "Изготовление или продажа строительных лесов", "terms": "такелаж, груз, строительные леса, блок, трос" }, - "craft/sculpter": { - "name": "Скульптор", - "terms": "скульптура, лепить, памятник," - }, "craft/shoemaker": { "name": "Мастерская сапожника", "terms": "сапожник, башмачник" @@ -3088,10 +3252,6 @@ "name": "Каменщик", "terms": "каменщик, кладка, камень, кирпич, строительство, каменотёс" }, - "craft/sweep": { - "name": "Трубочист", - "terms": "труба, сажа, дымоход, дым, трубочист" - }, "craft/tailor": { "name": "Портной" }, @@ -3215,9 +3375,19 @@ "golf/water_hazard_line": { "name": "Водная преграда" }, + "healthcare": { + "name": "Здравоохранение" + }, + "healthcare/birthing_center": { + "name": "Роддом", + "terms": "Роддом, родильный дом" + }, "healthcare/blood_donation": { "name": "Станция переливания крови" }, + "healthcare/hospice": { + "name": "Хоспис" + }, "highway": { "name": "Дорога" }, @@ -3279,10 +3449,6 @@ "name": "Тропа", "terms": "Тропа, Тропинка, Тропка" }, - "highway/pedestrian": { - "name": "Пешеходная улица", - "terms": "Пешеходная зона" - }, "highway/primary": { "name": "Дорога регионального значения", "terms": "первичная, региональная" @@ -3499,7 +3665,7 @@ "terms": "промзона, завод" }, "landuse/landfill": { - "name": "Стихийная свалка / промышленные отходы", + "name": "Свалка", "terms": "свалка, отходы" }, "landuse/meadow": { @@ -3723,6 +3889,10 @@ "name": "Беговая дорожка", "terms": "Легкоатлетический стадион" }, + "leisure/sauna": { + "name": "Сауна", + "terms": "баня" + }, "leisure/slipway": { "name": "Стапель", "terms": "Стапель" @@ -3773,6 +3943,10 @@ "name": "Дымовая труба", "terms": "дымовая труба, труба, заводская труба" }, + "man_made/crane": { + "name": "Подъемный кран", + "terms": "кран" + }, "man_made/cutline": { "name": "Просека", "terms": "просека" @@ -3988,17 +4162,12 @@ "name": "Офисы", "terms": "Офисы, Офис, Контора, Канцелярия" }, - "office/accountant": { - "name": "Бухгалтерская контора", - "terms": "Бухгалтерская фирма, Бухгалтерский учёт, Аудит" - }, "office/administrative": { "name": "Местная администрация и надзирающие органы", "terms": "канцелярия, офис" }, - "office/architect": { - "name": "Архитектурная мастерская", - "terms": "Архитектурная студия, Дизайнерское бюро, Архитектор" + "office/advertising_agency": { + "name": "Рекламное агенство" }, "office/company": { "name": "Офис компании или организации", @@ -4036,8 +4205,7 @@ "terms": "Страховой агент, Страхование, Автострахование, Полис, ОМС, КАСКО, ОСАГО, Страховка," }, "office/it": { - "name": "IT-офис", - "terms": "IT-офис, ИТ-офис, офис IT, офис IT-специалиста, офис ИТ, офис ИТ-специалиста" + "name": "Офис IT компании" }, "office/lawyer": { "name": "Юридические услуги", @@ -4047,13 +4215,15 @@ "name": "Нотариус" }, "office/newspaper": { - "name": "Редакция газеты", - "terms": "Редакция журнала, Газета, Журнал, Периодическое издание, Редакция периодического издания" + "name": "Редакция газеты" }, "office/ngo": { "name": "Общественная организация", "terms": "Общественное движение, НКО, Неправительственная организация, Некоммерческая организация, Общественный фонд, Общественное учреждение," }, + "office/notary": { + "name": "Нотариус" + }, "office/physician": { "name": "Врач" }, @@ -4061,6 +4231,10 @@ "name": "Политическая партия", "terms": "политическая партия" }, + "office/private_investigator": { + "name": "Частный сыщик", + "terms": "Частный сыщик" + }, "office/research": { "name": "Научно-исследовательская организация", "terms": "Научно-исследовательская организация, Научно-исследовательский институт, Центр передовых исследований и разработки, нии" @@ -4069,10 +4243,6 @@ "name": "Офис телекоммуникационной компании", "terms": "Телеком" }, - "office/therapist": { - "name": "Терапевт", - "terms": "терапевт, врач, доктор" - }, "office/travel_agent": { "name": "Турагентство" }, @@ -4373,8 +4543,8 @@ "terms": "магазин сыра, магазин сыров, сыр, сыры, сырный магазин" }, "shop/chemist": { - "name": "Аптека", - "terms": "Медикаменты" + "name": "Бытовая химия", + "terms": "Предметы личной гигиены, косметика" }, "shop/chocolate": { "name": "Магазин шоколада", @@ -4401,8 +4571,8 @@ "terms": "Продуктовый магазин, Магазин шаговой доступности" }, "shop/copyshop": { - "name": "Магазин ксерокопирования, печати", - "terms": "ксерокопирование, распечатка текстов" + "name": "Магазин копирования, печати", + "terms": "копирование, распечатка текстов" }, "shop/cosmetics": { "name": "Магазин косметики", @@ -4770,10 +4940,6 @@ "name": "Стоянка автодомов", "terms": "караван-парк" }, - "tourism/chalet": { - "name": "Сельский домик, шале", - "terms": "Шале,Коттедж" - }, "tourism/gallery": { "name": "Картинная галерея", "terms": "Галерея искусств" @@ -4828,6 +4994,10 @@ "name": "Обзорная точка", "terms": "площадка, обозрение, точка обзора, смотровая площадка" }, + "tourism/wilderness_hut": { + "name": "Охотничий домик", + "terms": "Заимка, избушка, зимовье, хижина, землянка" + }, "tourism/zoo": { "name": "Зоопарк", "terms": "зоопарк" @@ -5017,6 +5187,9 @@ "name": "Ручей", "terms": "Ручей" }, + "waterway/stream_intermittent": { + "name": "Пересыхающий ручей" + }, "waterway/water_point": { "name": "Морская питьевая вода", "terms": "Морская питьевая вода" @@ -5043,6 +5216,11 @@ "description": "Премиум спутниковые снимки DigitalGlobe.", "name": "Премиум снимки DigitalGlobe." }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Условия и обратная связь" + } + }, "DigitalGlobe-Standard": { "attribution": { "text": "Условия и обратная связь" @@ -5050,6 +5228,11 @@ "description": "Стандартные спутниковые снимки DigitalGlobe.", "name": "Стандартные снимки DigitalGlobe" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Условия и обратная связь" + } + }, "EsriWorldImagery": { "attribution": { "text": "Условия и обратная связь" diff --git a/dist/locales/si.json b/dist/locales/si.json index 268232ec5..055821d47 100644 --- a/dist/locales/si.json +++ b/dist/locales/si.json @@ -203,7 +203,6 @@ "localized_translation_language": "භාෂාවක් තෝරාගන්න", "localized_translation_name": "නම" }, - "zoom_in_edit": "සංස්කරණය කිරීම සදහා සමීප කරන්න ", "logout": "ඉවත් වන්න ", "loading_auth": "OpenStreetMap වෙත සම්බන්ද වෙමින්...", "feature_info": { @@ -371,8 +370,7 @@ "cancel": "අහෝසි කරන්න" }, "splash": { - "welcome": "iD OpenStreetMap සංස්කරණ වේදසටහන වෙත සාදරයෙන් පිළිගනිමු", - "start": "දෙන සංස්කරණය කරන්න" + "welcome": "iD OpenStreetMap සංස්කරණ වේදසටහන වෙත සාදරයෙන් පිළිගනිමු" }, "source_switch": { "live": "සජීවී" @@ -388,10 +386,6 @@ "untagged_area": "සටහනක් නොයෙදූ ප්‍රදේශයක්", "deprecated_tags": "{tags} : බාවිතයෙන් ඉවත් කර ඇත" }, - "zoom": { - "in": "විශාලනය වැඩි කරන්න", - "out": "විශාලනය අඩු කරන්න" - }, "help": { "title": "සහය" }, diff --git a/dist/locales/sk.json b/dist/locales/sk.json index ce68cd349..13dec2a77 100644 --- a/dist/locales/sk.json +++ b/dist/locales/sk.json @@ -310,7 +310,6 @@ "localized_translation_language": "Zvoľte jazyk", "localized_translation_name": "Meno" }, - "zoom_in_edit": "Priblížiť mapu pre úpravu", "login": "prihlásenie", "logout": "odhlásiť", "loading_auth": "Pripája sa k OpenStreetMap...", @@ -612,8 +611,7 @@ "splash": { "welcome": "Vitajte v iD editore pre OpenStreetMap", "text": "iD je prívetivý ale silný nástroj pre prispievanie do najlepšej slobodnej mapy sveta. Toto je verzia {version}. Pre viac informácií navštívte {website} alebo nahlasujte chyby na {github}.", - "walkthrough": "Začni prehliadku", - "start": "Upravuj" + "walkthrough": "Začni prehliadku" }, "source_switch": { "live": "pripojený", @@ -645,10 +643,6 @@ "tag_suggests_area": "Označenie {tag} predpokladá, že objekt by mal byť plochou a nie čiarou.", "deprecated_tags": "Neschválené označenie: {tags}" }, - "zoom": { - "in": "Priblížiť", - "out": "Oddialiť" - }, "cannot_zoom": "V tomto móde nemožno viac oddialiť.", "full_screen": "Prepni na plnú obrazovku", "gpx": { @@ -2729,8 +2723,7 @@ "terms": "Skolsky areal,skola,druzina" }, "amenity/scrapyard": { - "name": "Vrakovisko", - "terms": "vrakovisko,smetisko,šrotovisko,srotovisko" + "name": "Vrakovisko" }, "amenity/shelter": { "name": "Prístrešok", @@ -3219,10 +3212,6 @@ "name": "Lešenárstvo", "terms": "lesenarstvo,lešenie,lesenie" }, - "craft/sculpter": { - "name": "Sochár", - "terms": "sochar" - }, "craft/shoemaker": { "name": "Obuvník", "terms": "buvnik" @@ -3231,10 +3220,6 @@ "name": "Kamenárstvo", "terms": "kamenarstvo,kamenár,kamenar" }, - "craft/sweep": { - "name": "Kominárstvo", - "terms": "kominarstvo,kominár,kominar" - }, "craft/tailor": { "name": "Krajčír" }, @@ -3403,10 +3388,6 @@ "name": "Cestička", "terms": "cesticka,chodnik,chodník,pešina,pesina" }, - "highway/pedestrian": { - "name": "Pešia zóna", - "terms": "pesia zona,namestie,námestie" - }, "highway/primary": { "name": "Cesta 1. triedy", "terms": "cesta prvej triedy,hlavná cesta,hlavna cesta" @@ -3971,18 +3952,10 @@ "name": "Úrad", "terms": "urad" }, - "office/accountant": { - "name": "Účtovník", - "terms": "uctovnik" - }, "office/administrative": { "name": "Administratívny úrad", "terms": "administrativny urad" }, - "office/architect": { - "name": "Architekt", - "terms": "Architekti" - }, "office/company": { "name": "Firma", "terms": "firmy,spoločnosť,spolocnost" @@ -4011,18 +3984,10 @@ "name": "Poistenie", "terms": "poistenie" }, - "office/it": { - "name": "IT služby", - "terms": "IT, it sluzby,pocitace,počítače" - }, "office/lawyer": { "name": "Právna kancelária", "terms": "pravna kancelaria" }, - "office/newspaper": { - "name": "Noviny", - "terms": "noviny" - }, "office/ngo": { "name": "Nezisková organizácia", "terms": "neziskova organizacia,neziskovka" @@ -4042,10 +4007,6 @@ "name": "Telekomunikácie", "terms": "telekomunikacie,mobilny operator,mobilný operátor,operator,operátor" }, - "office/therapist": { - "name": "Terapeut", - "terms": "terapeut" - }, "office/travel_agent": { "name": "Cestovná agentúra" }, @@ -4680,10 +4641,6 @@ "name": "Parkovisko pre karavany", "terms": "parkovisko pre karavany,karavany,parkovisko,tabor,tábor" }, - "tourism/chalet": { - "name": "Koliba", - "terms": "salas,salaš,chata" - }, "tourism/gallery": { "name": "Umelecká galéria" }, diff --git a/dist/locales/sl.json b/dist/locales/sl.json index 452992a14..ee5964bee 100644 --- a/dist/locales/sl.json +++ b/dist/locales/sl.json @@ -310,7 +310,6 @@ "localized_translation_language": "Izbor jezika", "localized_translation_name": "Naziv" }, - "zoom_in_edit": "Za urejanje približajte pogled", "login": "prijava", "logout": "odjava", "loading_auth": "Vzpostavljanje povezave z OpenStreetMap ...", @@ -611,8 +610,7 @@ "splash": { "welcome": "Dobrodošli v iD, urejevalniku podatkov OpenStreetMap", "text": "Urejevalnik iD je zmogljivo, uporabniku prijazno orodje za vnašanje podatkov na najboljši brezplačni svetovni zemljevid. Uporabljena je zadnja različica {version}. Več podrobnosti o urejevalniku je na voljo na {website}, poročila o hroščih pa se zbirajo na spletišču {github}.", - "walkthrough": "Predstavitev orodja", - "start": "Urejevalnik" + "walkthrough": "Predstavitev orodja" }, "source_switch": { "live": "objavljeno", @@ -644,10 +642,6 @@ "tag_suggests_area": "Oznaka {tag} nakazuje, da črta opisovati območje, vendar pa ni sklenjena", "deprecated_tags": "Zastarele oznake: {tags}" }, - "zoom": { - "in": "Približaj", - "out": "Oddalji" - }, "cannot_zoom": "V trenutnem načinu nadaljnje oddaljevanje pogleda ni mogoče.", "full_screen": "Preklopi celozaslonski način", "gpx": { @@ -3115,10 +3109,6 @@ "name": "Gradbeni odri", "terms": "postavljalec gradbenih odrov" }, - "craft/sculpter": { - "name": "Kiparstvo", - "terms": "kipar,rezbar" - }, "craft/shoemaker": { "name": "Čevljarstvo", "terms": "čevljar" @@ -3127,10 +3117,6 @@ "name": "Klesarstvo", "terms": "klesar" }, - "craft/sweep": { - "name": "Dimnikarstvo", - "terms": "dimnikar" - }, "craft/tailor": { "name": "Krojaštvo" }, @@ -3313,9 +3299,6 @@ "name": "Pot", "terms": "steza,gaz" }, - "highway/pedestrian": { - "name": "Ulica namenjena pešcem" - }, "highway/primary": { "name": "Glavna cesta", "terms": "glavna cesta,primarna cesta" @@ -4004,18 +3987,10 @@ "name": "Urad", "terms": "pisarna" }, - "office/accountant": { - "name": "Računovodstvo", - "terms": "računovodja,davčno svetovanje,finančno svetovanje" - }, "office/administrative": { "name": "Upravna enota", "terms": "Upravni urad,upravna pisarna" }, - "office/architect": { - "name": "Arhitekt", - "terms": "arhitekturni biro" - }, "office/company": { "name": "Podjetje", "terms": "firma,sedež podjetja,podjetnik" @@ -4047,10 +4022,6 @@ "name": "Zavarovalnica", "terms": "zavarovalniški agent,zavarovalni agent,zavarovalni posrednik" }, - "office/it": { - "name": "Strokovnjak za informacijske tehnologije", - "terms": "IT strokovnjak,informacijski strokovnjak" - }, "office/lawyer": { "name": "Pravna pisarna", "terms": "pravni urad,advokat,odvetništvo" @@ -4058,10 +4029,6 @@ "office/lawyer/notary": { "name": "Notarska pisarna" }, - "office/newspaper": { - "name": "Časopisna hiša", - "terms": "časopis" - }, "office/ngo": { "name": "Sedež nevladne organizacije", "terms": "nevladna organizacija" @@ -4081,10 +4048,6 @@ "name": "Telekomunikacijska pisarna", "terms": "telekomunikacije,telekom" }, - "office/therapist": { - "name": "Terapevt", - "terms": "terapevtka,psihoterapevt,psihoterapevtka,psihiater,psihiatrinja" - }, "office/travel_agent": { "name": "Potovalna agencija" }, @@ -4690,10 +4653,6 @@ "name": "Parkirišče za avtodome", "terms": "parkirišče za karavaning" }, - "tourism/chalet": { - "name": "Apartma", - "terms": "stanovanje" - }, "tourism/gallery": { "name": "Umetnostna galerija" }, diff --git a/dist/locales/sq.json b/dist/locales/sq.json index 433d7a9b9..6f6225e13 100644 --- a/dist/locales/sq.json +++ b/dist/locales/sq.json @@ -197,7 +197,6 @@ "localized_translation_language": "Zgjidhni gdjuhën", "localized_translation_name": "Emër" }, - "zoom_in_edit": "Zmadhoni për të redaktuar", "logout": "dil", "loading_auth": "Lidh me OpenStreetMap...", "feature_info": { diff --git a/dist/locales/sr.json b/dist/locales/sr.json index fa0745866..baae233e7 100644 --- a/dist/locales/sr.json +++ b/dist/locales/sr.json @@ -199,11 +199,11 @@ "description": { "long": { "single": "Рефлектуј ово обележје преко своје дужинске осе.", - "multiple": "Рефлектуј ова обележја преко њихове дужинске осе." + "multiple": "Одрази ова обележја преко њихове дуже осе." }, "short": { "single": "Рефлектуј ово обележје преко своје ширинске осе.", - "multiple": "Рефлектуј ова обележја преко њихове ширинске осе." + "multiple": "Одрази ова обележја преко њихове краће осе." } }, "key": { @@ -213,11 +213,11 @@ "annotation": { "long": { "single": "Рефлектовано обележје преко своје дужинске осе.", - "multiple": "Рефлектована обележја преко њихове дужинске осе." + "multiple": "Одражена обележја преко њихове дуже осе." }, "short": { "single": "Рефлектовано обележје преко своје ширинске осе.", - "multiple": "Рефлектована обележја преко њихове ширинске осе." + "multiple": "Одражена обележја преко њихове краће осе." } }, "incomplete_relation": { @@ -262,7 +262,7 @@ "title": "Преусмери", "description": "Преусмери путању у супротном смеру.", "key": "V", - "annotation": "Преусмерена путања." + "annotation": "Промењен смер путање." }, "split": { "title": "Раздвој", @@ -284,6 +284,7 @@ "restriction": { "help": { "select": "Кликните да бисте изабрали део пута.", + "toggle": "Кликните да бисте укључили / искључили ограничења скретања.", "toggle_on": "Кликните да бисте додали \"{restriction}\" ограничење.", "toggle_off": "Кликните да бисте улонили \"{restriction}\" ограничење." }, @@ -309,7 +310,6 @@ "localized_translation_language": "Изабери језик", "localized_translation_name": "Назив" }, - "zoom_in_edit": "Приближите да бисте уређивали", "login": "пријава", "logout": "одјава", "loading_auth": "Повезивање са Опенстритмап...", @@ -458,6 +458,7 @@ "key": "B", "percent_brightness": "{opacity}% прозирно", "none": "Ниједна", + "best_imagery": "Најбољи познати извор слика за овај положај", "switch": "Пребаци се на ову позадину", "custom": "Прилагођена", "custom_button": "Измени прилагођену позадину", @@ -473,7 +474,7 @@ }, "map_data": { "title": "Подаци мапе", - "description": "Подави мапе", + "description": "Подаци мапе", "key": "F", "data_layers": "Слојеви података", "layers": { @@ -606,8 +607,7 @@ "splash": { "welcome": "Добродошли на iD, уређивач Опенстреетмапа ", "text": "ИД је једноставан али моћан алат за допринос најбољој слободној мапи света. Ово је верзија {version}. За више информација погледајте {website} и пријавите грешке на {github}.", - "walkthrough": "Покрени упознавање", - "start": "Уређуј одмах" + "walkthrough": "Покрени упознавање" }, "source_switch": { "live": "уживо", @@ -637,12 +637,8 @@ "tag_suggests_area": "Ознака {ознака} указује да би линија требало да буде област, али није област", "deprecated_tags": "Застареле ознаке: {tags}" }, - "zoom": { - "in": "Увеличај", - "out": "Умањи" - }, "cannot_zoom": "Не можете даље умањивати у тренутном режиму.", - "full_screen": "Пребаци на цео екран", + "full_screen": "Укључи / искључи приказ на целом екрану", "gpx": { "local_layer": "Локална датотека", "drag_drop": "Превуците и отпустите .gpx, .geojson или .kml датотеку на страницу или кликните на дугме здесна за претраживање", @@ -663,10 +659,12 @@ "help": { "title": "Помоћ", "key": "H", - "help": "# Помоћ\n\nОво је уређивач за [Опенстритмап] (http://www.openstreetmap.org/), бесплатну\nи уредиву мапу света. Можете га користити за додавање и ажурирање\nподатака у вашој области, чинећи мапу света отвореног кода и\nотворених података бољим за свакога.\n\nИзмене које направите на овој мапи ће бити видљиве свима који користе\nОпенстритмап. Да бисте направили измене, мораћете се\n[пријавити] (https://www.openstreetmap.org/login).\n\n[iD изређивач] (http://ideditor.com/) је заједнички пројекат са [изворним\nкодом доступним на Гитхабу] (https://github.com/openstreetmap/iD).\n", + "help": "# Помоћ\n\nОво је уређивач за [Опенстритмап](http://www.openstreetmap.org/), бесплатну\nи уредиву мапу света. Можете га користити за додавање и ажурирање\nподатака у вашој области, чинећи мапу света отвореног кода и\nотворених података бољим за свакога.\n\nИзмене које направите на овој мапи ће бити видљиве свима који користе\nОпенстритмап. Да бисте направили измене, мораћете се\n[пријавити](https://www.openstreetmap.org/login).\n\n[iD изређивач](http://ideditor.com/) је заједнички пројекат са [изворним\nкодом доступним на Гитхабу](https://github.com/openstreetmap/iD).\n", "editing_saving": "# Уређивање и чување\n\nОвај уређивач је дизајниран првенствено за рад на мрежи, а приступате\nму непосредно преко сајта.\n\n### Избор обележја\n\nДа бисте изабрали обележје мапе, као што су пут или тачка од интереса,\nкликните на обележје на карти. Овим ће се означити изабрано обележје и\nучитати бочну траку са детаљима. Ако кликнете десним тастером миша на\nобележје, приказаће се мени са радњама које можете применити на дато\nобележје.\n\nДа бисте изабрали већи број обележја, држите притиснут тастер \"Shift\".\nЗатим или кликните на обележја која желите да изаберете, или превуците на\nмапи да бисте нацртали контуру око тих обележја. Све тачке унутар превученог\nподручја ће бити изабране.\n\n### Чување измена\n\nКада правите измене попут уређивања путева, зграда и места, оне се\nлокално чувају на рачунару док их не сачувате на серверу. Не брините ако\nнаправите грешку - можете поништити измене кликом на дугме за отказивање\nи поновити измене кликом на дугме Поново.\n\nКликните на 'Сачувај' да бисте довршили групу измена - на пример, ако сте\nзавршили подручје града и волели бисте да започне на новом подручју.\nИмате прилику да прегледате шта сте урадили, а уређивач вам даје корисне\nпредлоге и упозорења ако нешто од измена не изгледа исправно.\n\nАко све изгледа добро, можете додати кратак коментар који објашњава измену\nкоју сте направили и кликните на 'Учитај' да бисте објавили измене на\n[OpenStreetMap.org](http://www.openstreetmap.org/), где ће бити видљиве\nсвим осталим корисницима и доступне другима за надоградњу и побољшање.\n\nАко не можете завршити своје измене током једној сесији, можете оставити\nпрозор уређивача и вратити се (на истом претраживачу и рачунару),\nа уређивачка апликација ће вам понудити да повратите свој рад.\n\n### Коришћење уређивача\n\nМожете прегледати списак пречица на тастатури притиском на тастер `?`.\n", - "imagery": "# Снимци\n\nСнимци из ваздуха су важан ресурс за мапирање. Комбинација\nавионских прелета, сателитских приказа и слободно састављених извора су на\nрасполагању у уређивачу испод менија 'Подешавања позадине' са десне стране.\n\nПодразумевано је представљен [Bing Maps] (http://www.bing.com/maps/) слој\nсателитских снимака у уређивачу, али као померате и увећавате мапу на нова географска\nподручја, нови извори ће постати доступни. Неке земље, попут Сједињених\nДржава, Француске и Данске имају веома квалитетне снимке доступна за неке области.\n\nСнимак је некада померен у односу на податке на мапи због грешке од страни\nдобављача снимака. Ако видите много путева померених у односу на позадину,\nнемојте их одмах преместити све да одговарају позадини. Уместо тога можете подесити\nслике тако да одговарају постојећим подацима кликом на 'Поправи поравнање' на\nдну интерфејса Подешавање позадине.\n", - "addresses": "# Адресе\n\nАдресе су једне од најкориснијих информација на мапи.\n\nИако су адресе често представљене као делови улица, у Опенстреетмап\nсу забележене као атрибути објеката и места дуж улица.\n\nМожете да додате информације о адреси на местима мапираним као основе зграде\nкао и оних мапираних као појединачне тачке. Оптимални извор података адреса\nје од премеравања на терену или лично знање - као и са било којим\nдругим објектом, копирање са комерцијалних извора, као што су Гугл мапе је строго\nзабрањено.\n" + "roads": "# Путеви\n\nМожете додавати, поправљати и брисати путеве помоћу овог уређивача.\nПутеви могу бити различитих врста: улице, ауто-путеви, стазе, бициклистичке\nстазе и друго - било који често коришћена саобраћајна путања би требало да\nбуде уцртана.\n\n### Избор\n\nКликните на пут да бисте га изабрали. Требало би да постане видљиво\nуоквирен са бочном траком која приказује више информација о путу.\nАко кликнете десним тастером миша на њега, појавиће се мени са\nоперацијама које можете применити на пут.\n\n### Измена\n\nЧесто ћете видети путеве који нису усклађени са сликама иза њих\nили са ГПС путањама. Ове путеве можете прилагодити тако да су у\nисправном положају.\n\nПрво кликните на пут који желите да промените. Овим ћете га обележити\nи приказаће се контролне тачке дуж пута, које можете превући на боље\nположаје. Ако желите додати нове контролне тачке за више детаља, кликните\nдвапут на део пута без чвора, и један ће бити додат.\n\nАко је пут повезан са другим путем, али није правилно повезан на\nмапи, можете превући једну од његових контролних тачака на други пут\nкако би се спојили. Повезивање путева је важно за мапу и суштински за\nдавање упутстава приликом вожње.\n\nТакође можете кликнути десним тастером миша и одабрати алат 'Премести'\nили једноставно притиснути тастер `M`, да бисте од једном померили цео пут,\nа затим кликните поново да бисте сачували померање.\n\n### Брисање\n\nАко је пут у потпуности нетачан - можете видети да не постоји на сателитској\nслици и у најбољем случају локално можете потврдити да није присутан - можете\nга избрисати, чиме се уклања са мапе. Будите опрезни приликом брисања обележја -\nкао и код сваке друге измене, резултате може видети свако, а сателитски снимци\nсу често застарели, тако да пут може једноставно бити новоизграђен.\n\nМожете избрисати пут кликом на њега да бисте га изабрали, а затим притисните\n'Избриши' тастер, или десним тастером миша, а затим кликните на икону за смеће.\n\n### Додавање\n\nПронашли сте место на коме би требало да постоји пут, али није уцртан?\nКликните на дугме 'Путања' у горњем левом углу уређивача, или притисните тастер\n`2` као пречицу, да бисте започели цртање путање.\n\nКликните на почетак пута на мапи да бисте започели цртање. Ако се пут\nграна са постојећег пута, почните цртање кликом на место где се повезују.\n\nЗатим кликните на тачке дуж пута тако да следи праву путању, према сателитском\nснимку или ГПС путањи. Ако пут који нацртате пресеца други пут, повежите их\nкликом на тачку пресека. Када завршите са цртањем, кликните двапут или\nпритисните \"Return\" или \"Enter\" на вашој тастатури.\n", + "imagery": "# Снимци\n\nСнимци из ваздуха су важан ресурс за мапирање. Комбинација\nавионских прелета, сателитских приказа и слободно састављених извора су на\nрасполагању у уређивачу испод менија 'Подешавања позадине' са десне стране.\n\nПодразумевано је представљен [Bing Maps](http://www.bing.com/maps/) слој\nсателитских снимака у уређивачу, али као померате и увећавате мапу на нова географска\nподручја, нови извори ће постати доступни. Неке земље, попут Сједињених\nДржава, Француске и Данске имају веома квалитетне снимке доступна за неке области.\n\nСнимак је некада померен у односу на податке на мапи због грешке од страни\nдобављача снимака. Ако видите много путева померених у односу на позадину,\nнемојте их одмах преместити све да одговарају позадини. Уместо тога можете подесити\nслике тако да одговарају постојећим подацима кликом на 'Поправи поравнање' на\nдну интерфејса Подешавање позадине.\n", + "addresses": "# Адресе\n\nАдресе су једне од најкориснијих информација на мапи.\n\nИако су адресе често представљене као делови улица, у Опенстреетмап\nсу забележене као атрибути објеката и места дуж улица.\n\nМожете да додате информације о адреси на местима мапираним као основе зграде\nкао и оних мапираних као појединачне тачке. Оптимални извор података адреса\nје од премеравања на терену или лично знање - као и са било којим\nдругим објектом, копирање са комерцијалних извора, као што су Гугл мапе је строго\nзабрањено.\n", + "buildings": "# Грађевине\n\nОпенстритмап је највећа светска база података о грађевинама. Можете\nдодавати и побољшати ову базу података.\n\n### Избор\n\nМожете изабрати грађевину кликом на њене оквире. Овим ће се обележити\nграђевина и приказати бочна трака са додатним информацијама о објекту.\nАко кликнете десним тастером миша на грађевину, приказаће се мени операција\nкоје можете извршити над објектом.\n\n### Измена\n\nПонекад су грађевине неправилно постављене или имају нетачне ознаке.\n\nДа бисте преместили целу грађевину, изаберите је и притисните тастер 'M',\nили кликните десним тастером миша и изаберите алат 'Премести'. Померите\nпоказивач миша за премештање зграде и кликните када је исправно постављена.\n\nДа бисте поправили специфичан облик грађевине, кликните и превуците\nчворове који формирају границу објекта на боље место.\n\n### Додавање\n\nЈедно од главних недоумица око додавања грађевина на мапу је то што их\nОпенстритмап чува, и као облике, и као чворове. Правило је да се _дода\nграђевина као облик кад год је то могуће_, и да се мапирају предузећа, куће,\nпогодности и друга обележја као чворове у оквиру грађевине.\n\nПочните да цртате грађевину као облик кликом на дугме 'Област' у горњем левом\nделу уређивача и завршите га притиском на 'Return' на вашој тастатури,\nили кликом на први нацртан чвор, за затварање облика.\n\n### Брисање\n\nАко је грађевина у потпуности нетачна - видећете да не постоји на сателитском\nснимку, и у најбољем случају, потврдили сте локално да није присутна - можете\nје избрисати, чиме се уклања са мапе. Будите опрезни приликом брисања обележја -\nкао и било које друго уређивање, резултате може видети свако, а сателитски снимци\nсу често застарели, па би грађевина могла једноставно бити новоизграђена.\n\nМожете обрисати грађевину кликом на њу да бисте је изабрали, а затим притисните\nтастер 'Delete', или кликните десним тастером миша, а затим на икону за смеће.\n" }, "intro": { "done": "готово", @@ -692,6 +690,7 @@ "words": "Овај водич ће вам представити неке нове речи и појмове. Када уводимо нову реч, користићемо *курзив*.", "mouse": "Можете да користите било који улазни уређај за уређивање мапе, али овај водич претпоставља да имате миш са левим и десним тастерима. **Ако желите да додате миша, урадите то сада, а затим кликните на У реду.**", "leftclick": "Када вам овај водич затражи да кликнете једанпут или двапут, мисли се са левим тастером. На тактилној подлози може бити представљено кликом или додиром прста. **Леви клик {num} пута.**", + "rightclick": "Понекад ћемо вас замолити да кликнете десним тастером миша. Ово може бити иста као контрол+клик или додир са два прста на додирну таблу. Ваша тастатура може имати чак и 'мени' тастер који се понаша као десни клик. **Десни клик {num} пута.**", "chapters": "Засада је добро! Можете користити дугмад испод да бисте прескочили поглавља у било ком тренутку или да изнова започнете поглавље ако се заглавите. Па почнимо! **Кликните на '{next}' за наставак.**" }, "navigation": { @@ -731,7 +730,8 @@ "choose_preset_house": "Постоји много различитих врста грађевина, али ова је очито кућа.{br}Ако нисте сигурни за врсту, у реду је ако само изаберете општу врсту објекта. **Изаберите {preset} обележје.**", "search_tank": "**Претражите за '{preset}'.**", "choose_tank": "**Изаберите {preset} са списка.**", - "circle_tank": "**Кликните на {button} дугме да бисте резервоар учинили кружним.**" + "circle_tank": "**Кликните на {button} дугме да бисте резервоар учинили кружним.**", + "retry_circle": "Нисте кликнули на Заокружи дугме. Пробајте поново." }, "startediting": { "title": "Почни уређивање", @@ -742,7 +742,7 @@ }, "shortcuts": { "title": "Пречице на тастатури", - "tooltip": "Прикажи екран за пречице на тастатури.", + "tooltip": "Прикажи екран са пречицама на тастатури.", "toggle": { "key": "?" }, @@ -773,6 +773,8 @@ "title": "Прегледање", "navigation": { "title": "Навигација", + "pan": "Померај мапу", + "pan_more": "Померај мапу за величину екрана", "zoom": "Приближи / Удаљи", "zoom_more": "Приближи / Удаљи у више корака" }, @@ -784,27 +786,55 @@ "display_options": { "title": "Опције приказа", "background": "Прикажи опције позадине", - "fullscreen": "Прикажи преко целог екрана" + "background_switch": "Пребаци се на претходну позадину", + "map_data": "Прикажи опције података мапе", + "fullscreen": "Прикажи преко целог екрана", + "wireframe": "Укључи / искључи попуњавање области", + "minimap": "Укључи / искључи мини-мапу" }, "selecting": { "title": "Избор обележја", "select_one": "Избор појединачног обележја", - "select_multi": "Избор вишеструких обележја" + "select_multi": "Избор вишеструких обележја", + "lasso": "Исцртај подручје избора обележја" + }, + "with_selected": { + "title": "Са изабраним обележјем", + "edit_menu": "Укључи / искључи мени операција" }, "vertex_selected": { + "title": "Са изабраним чвором", "previous": "Скочи до претходног чвора", "next": "Скочи до следећег чвора", "first": "Скочи до првог чвора", - "last": "Скочи до последњег чвора" + "last": "Скочи до последњег чвора", + "change_parent": "Промени родитељску путању" } }, "editing": { "title": "Уређивање", "drawing": { - "title": "Цртање" + "title": "Цртање", + "add_point": "Додај чвор", + "add_line": "Додај путању", + "add_area": "Додај област", + "place_point": "Постави чвор", + "disable_snap": "Задржи за онемогућавање померања чвора", + "stop_line": "Заврши цртање путање или области" }, "operations": { "title": "Операције", + "continue_line": "Настави путању на изабраном чвору", + "merge": "Комбинуј (спој) изабрана обележја", + "disconnect": "Раздвој обележја на изабраном чвору", + "split": "Раздвој путању на две на изабраном чвору", + "reverse": "Промени смер путање", + "move": "Помери изабрана обележја", + "rotate": "Заокрени изабрана обележја", + "orthogonalize": "Исправи путању / нормализуј углове области", + "circularize": "Заокружи затворену путању или област", + "reflect_long": "Одрази обележја преко дуже осе", + "reflect_short": "Одрази обележја преко краће осе", "delete": "Избриши изабрана обележја" }, "commands": { @@ -819,7 +849,12 @@ "tools": { "title": "Алати", "info": { - "title": "Информације" + "title": "Информације", + "all": "Укључи / искључи све инфо-картице", + "background": "Укључи / искључи инфо-картицу позадине", + "history": "Укључи / искључи инфо-картицу историје", + "location": "Укључи / искључи инфо-картицу положаја", + "measurement": "Укључи / искључи инфо-картицу мерења" } } }, @@ -2187,8 +2222,7 @@ "name": "Школско двориште" }, "amenity/scrapyard": { - "name": "Ауто-отпад", - "terms": "ауто-отпад,старо гвожђе,прикупљање строг гвожђа" + "name": "Ауто-отпад" }, "amenity/shelter": { "name": "Склониште" @@ -2594,19 +2628,12 @@ "craft/scaffolder": { "name": "Скелар" }, - "craft/sculpter": { - "name": "Вајар" - }, "craft/shoemaker": { "name": "Обућар" }, "craft/stonemason": { "name": "Каменорезац" }, - "craft/sweep": { - "name": "Oџачар", - "terms": "оџачар,димничар" - }, "craft/tailor": { "name": "Kројач" }, @@ -2744,9 +2771,6 @@ "highway/path": { "name": "Стаза" }, - "highway/pedestrian": { - "name": "Пешачка улица" - }, "highway/primary": { "name": "Главни пут" }, @@ -3241,12 +3265,6 @@ "office": { "name": "Канцеларија" }, - "office/accountant": { - "name": "Рачуновођа" - }, - "office/architect": { - "name": "Архитекта" - }, "office/educational_institution": { "name": "Образовна институција" }, @@ -3263,9 +3281,6 @@ "office/political_party": { "name": "Политичка странка" }, - "office/therapist": { - "name": "Терапеут" - }, "office/travel_agent": { "name": "Туристичка агенција" }, @@ -3658,9 +3673,6 @@ "tourism/caravan_site": { "name": "Камп-парк" }, - "tourism/chalet": { - "name": "Шале" - }, "tourism/gallery": { "name": "Галерија слика" }, diff --git a/dist/locales/sv.json b/dist/locales/sv.json index 32d74abdc..83d599b4e 100644 --- a/dist/locales/sv.json +++ b/dist/locales/sv.json @@ -30,8 +30,8 @@ "operations": { "add": { "annotation": { - "point": "Lagt till en punkt.", - "vertex": "Lagt till en nod till en linje.", + "point": "Lade till en punkt.", + "vertex": "Lade till en nod till en linje.", "relation": "Lade till en relation." } }, @@ -46,10 +46,10 @@ "title": "Fortsätt", "description": "Fortsätt denna linje.", "not_eligible": "Ingen linje kan fortsätta här.", - "multiple": "Flera linjer kan fortsätta härifrån. För att välja en linje, tryck på tangenten Skift och klicka på den för att välja.", + "multiple": "Flera linjer kan fortsätta härifrån. För att välja en linje, tryck på tangenten Shift och klicka på den för att välja.", "annotation": { "line": "Fortsatte en linje.", - "area": "Fortsatt ett område." + "area": "Fortsatte på ett område." } }, "cancel_draw": { @@ -84,8 +84,8 @@ }, "key": "S", "annotation": { - "line": "Gjort hörnen på en linje fyrkantiga.", - "area": "Gjort hörnen på ett område fyrkantiga." + "line": "Gjorde hörnen på en linje fyrkantiga.", + "area": "Gjorde hörnen på ett område fyrkantiga." }, "not_squarish": "Denna kan inte rätas upp då den inte är fyrkantig.", "too_large": "Denna kan inte rätas upp då inte tillräckligt är synligt för tillfället.", @@ -106,12 +106,12 @@ "multiple": "Radera dessa objekt permanent." }, "annotation": { - "point": "Raderat en punkt.", - "vertex": "Raderat en nod från en väg.", - "line": "Raderat en linje.", - "area": "Raderat ett område.", - "relation": "Raderat en relation.", - "multiple": "Raderat {n} objekt." + "point": "Raderade en punkt.", + "vertex": "Raderade en nod från en väg.", + "line": "Raderade en linje.", + "area": "Raderade ett område.", + "relation": "Raderade en relation.", + "multiple": "Raderade {n} objekt." }, "too_large": { "single": "Detta objekt kan inte raderas då inte tillräckligt av det är synligt för tillfället.", @@ -122,8 +122,8 @@ "multiple": "Dessa objekt kan inte raderas då de inte är fullständigt nedladdade." }, "part_of_relation": { - "single": "Detta objekt kan inte raderas då det är del i en större relation. Du måste ta bort det från relationen först. ", - "multiple": "Dessa objekt kan inte raderas då de är delar i större relationer. Du måste ta bort dem från relationerna först." + "single": "Detta objekt kan inte raderas då det är del i en relation. Du måste ta bort det från relationen först. ", + "multiple": "Dessa objekt kan inte raderas då de är delar i en relation. Du måste ta bort dem från relationen först." }, "connected_to_hidden": { "single": "Detta objekt kan inte raderas då det är kopplat till ett dolt objekt.", @@ -131,27 +131,27 @@ } }, "add_member": { - "annotation": "Lagt till en medlem till en relationen." + "annotation": "Lade till en medlem till en relationen." }, "delete_member": { - "annotation": "Raderat en medlem från en relationen." + "annotation": "Raderade en medlem från en relationen." }, "connect": { "annotation": { - "point": "Kopplat en väg till en punkt.", - "vertex": "Kopplat en väg till en annan väg.", - "line": "Kopplat en väg till en linje.", - "area": "Kopplat en väg till ett område." + "point": "Kopplade en väg till en punkt.", + "vertex": "Kopplade en väg till en annan väg.", + "line": "Kopplade en väg till en linje.", + "area": "Kopplade en väg till ett område." } }, "disconnect": { - "title": "Bryt av", - "description": "Bryt av dessa linjer/områden från varandra.", + "title": "Koppla isär", + "description": "Koppla isär dessa linjer/områden från varandra.", "key": "D", - "annotation": "Bröt av linjer/områden.", - "not_connected": "Det finns inte tillräckligt med linjer/områden här att koppla ifrån.", - "connected_to_hidden": "Detta kan inte brytas av då det är kopplat till ett dolt objekt.", - "relation": "Detta kan inte brytas av då den kopplar ihop medlemmar i en relation." + "annotation": "Kopplade isär linjer/områden.", + "not_connected": "Det finns inte tillräckligt med linjer/områden här att sära på.", + "connected_to_hidden": "Detta kan inte kopplas isär då det är kopplat till ett dolt objekt.", + "relation": "Detta kan inte kopplas isär då den kopplar ihop medlemmar i en relation." }, "merge": { "title": "Sammanfoga", @@ -198,12 +198,12 @@ }, "description": { "long": { - "single": "Spegla detta objekt längst dess långa axel.", - "multiple": "Spegla dessa objekt längst dess långa axel." + "single": "Spegla detta objekt längs dess långa axel.", + "multiple": "Spegla dessa objekt längs deras gemensamma långa axel." }, "short": { - "single": "Spegla detta objekt längst dess korta axel.", - "multiple": "Spegla dessa objekt längst dess korta axel." + "single": "Spegla detta objekt längs dess korta axel.", + "multiple": "Spegla dessa objekt längs deras gemensamma korta axel." } }, "key": { @@ -213,11 +213,11 @@ "annotation": { "long": { "single": "Speglade ett objekt längs dess långa axel.", - "multiple": "Speglade flera objekt längst dess långa axel." + "multiple": "Speglade flera objekt längs deras långa axel." }, "short": { "single": "Speglade ett objekt längs dess korta axel.", - "multiple": "Speglade flera objekt längst dess korta axel." + "multiple": "Speglade flera objekt längs deras korta axel." } }, "incomplete_relation": { @@ -237,13 +237,13 @@ "title": "Rotera", "description": { "single": "Rotera detta objekt runt dess centrumpunkt.", - "multiple": "Rotera dessa objekt runt dess centrumpunkt." + "multiple": "Rotera dessa objekt runt deras gemensamma centrumpunkt." }, "key": "R", "annotation": { "line": "Roterade en linje.", "area": "Roterade ett område.", - "multiple": "Rotera flera objekt." + "multiple": "Roterade flera objekt." }, "incomplete_relation": { "single": "Detta objekt kan inte roteras då det inte har laddats ned fullständigt.", @@ -273,9 +273,9 @@ }, "key": "X", "annotation": { - "line": "Dela en linje.", - "area": "Dela gränsen för ett område.", - "multiple": "Dela gränsen för {n} linjer/områden." + "line": "Delade linje.", + "area": "Delade gränsen för ett område.", + "multiple": "Delade gränsen för {n} linjer/områden." }, "not_eligible": "Linjer kan inte delas vid deras början eller slut.", "multiple_ways": "Det är för många linjer här för att kunna dela dem.", @@ -289,8 +289,8 @@ "toggle_off": "Klicka för att ta bort \"{restriction}\"-restriktionen." }, "annotation": { - "create": "Lagt till en svängrestriktion", - "delete": "Tagit bort en svängrestriktion" + "create": "Lade till en svängrestriktion", + "delete": "Tog bort en svängrestriktion" } } }, @@ -324,7 +324,7 @@ "error": "Kan inte ansluta till API:et.", "offline": "API:et är inte tillgängligt. Vänligen försök redigera senare.", "readonly": "API:et är skrivskyddat. Du måste vänta innan du kan spara dina ändringar.", - "rateLimit": "API:t är begränsat för anonyma anslutningar. Du kan fixa detta genom att logga in." + "rateLimit": "API:t är begränsat för anonyma anslutningar. Du kan lösa detta genom att logga in." }, "commit": { "title": "Ladda upp till OpenStreetMap", @@ -334,6 +334,7 @@ "save": "Ladda upp", "cancel": "Avbryt", "changes": "{count} ändringar", + "download_changes": "Ladda ned osmChange-fil", "warnings": "Varningar", "modified": "Ändrat", "deleted": "Raderat", @@ -360,7 +361,9 @@ "accuracy": "Precision", "unknown": "Okänt", "show_tiles": "Visa kartrutor", - "hide_tiles": "Dölj kartrutor" + "hide_tiles": "Dölj kartrutor", + "show_vintage": "Visa ålder", + "hide_vintage": "Dölj ålder" }, "history": { "key": "H", @@ -395,9 +398,9 @@ } }, "geometry": { - "point": "Punkt", - "vertex": "Hörn", - "line": "Linje", + "point": "punkt", + "vertex": "hörn", + "line": "linje", "area": "område", "relation": "relation" }, @@ -479,6 +482,12 @@ "description": "Kartdata", "key": "F", "data_layers": "Datalager", + "layers": { + "osm": { + "tooltip": "Kartdata från OpenStreetMap", + "title": "OpenStreetMap-data" + } + }, "fill_area": "Fyllda områden", "map_features": "Kartobjekt", "autohidden": "Dessa objekt har dolts automatiskt då för mycket annars skulle ha visats på skärmen. Du kan zooma in för att redigera dem. ", @@ -490,7 +499,7 @@ "tooltip": "Intressanta platser" }, "traffic_roads": { - "description": "Trafikvägar", + "description": "Vägar", "tooltip": "Landsväg, gata m.m." }, "service_roads": { @@ -503,7 +512,7 @@ }, "buildings": { "description": "Byggnader", - "tooltip": "Byggnader, skydd, garage, m-m-" + "tooltip": "Byggnader, skydd, garage, m.m." }, "landuse": { "description": "Markanvändning", @@ -536,21 +545,21 @@ }, "area_fill": { "wireframe": { - "description": "Ingen ifyllnad (trådram)", + "description": "Ingen fyllning (trådram)", "tooltip": "Genom att använda trådram blir det enklare att se bakomliggande flygfoto.", "key": "W" }, "partial": { - "description": "Delvist fylld", - "tooltip": "Områden ritas med fyllnad enbart längst insidan av kanterna. (Rekommenderas för nybörjare)" + "description": "Delvis ifyllda", + "tooltip": "Områden ritas med fyllning enbart längs insidan av kanterna. (Rekommenderas för nybörjare)" }, "full": { - "description": "Full ifyllnad", + "description": "Fullt ifyllda", "tooltip": "Områden är ritade fullt ifyllda." } }, "restore": { - "heading": "Du har icke-sparade ändringar.", + "heading": "Du har osparade ändringar.", "description": "Du har ändringar från förra sessionen som inte har sparats. Vill du hämta dessa ändringar?", "restore": "Återställ mina ändringar", "reset": "Ta bort mina ändringar" @@ -560,10 +569,10 @@ "help": "Granska dina ändringar och ladda upp dem till OpenStreetMap för att göra dem synliga för andra användare.", "no_changes": "Inga ändringar att spara.", "error": "Något gick fel vid sparandet", - "status_code": "Server returnerade statuskoden {code}", + "status_code": "Servern returnerade statuskoden {code}", "unknown_error_details": "Kontrollera att du är ansluten till Internet.", "uploading": "Laddar upp ändringar till OpenStreetMap...", - "unsaved_changes": "Du har icke-sparade ändringar.", + "unsaved_changes": "Du har osparade ändringar.", "conflict": { "header": "Lös motstridiga ändringar", "count": "Konflikt {num} av {total}", @@ -573,8 +582,9 @@ "keep_remote": "Använd deras", "restore": "Återställ", "delete": "Låt vara raderad", + "download_changes": "Eller ladda ned osmChange-fil", "done": "Alla konflikter lösta!", - "help": "En annan användare har ändrat på samma objekt som du har ändrat.\nKlicka på vardera objekt nedan för ytterligare detaljer om respektive konflikt, och välj om dina eller\nden andra användarens ändringar ska behållas.\n" + "help": "En annan användare har ändrat på samma objekt som du har ändrat.\nKlicka på objekten nedan för ytterligare detaljer om respektive konflikt, och välj om dina eller\nden andra användarens ändringar ska behållas.\n" } }, "merge_remote_changes": { @@ -587,7 +597,7 @@ } }, "success": { - "edited_osm": "Redigerat OSM!", + "edited_osm": "Redigerade OSM!", "just_edited": "Du har nu redigerat OpenStreetMap!", "view_on_osm": "Visa på OSM", "facebook": "Dela på Facebook", @@ -605,11 +615,11 @@ "welcome": "Välkommen till iD OpenStreetMap-redigeraren", "text": "iD är ett användarvänligt och kraftfullt verktyg för att bidra till världens bästa fria karta. Detta är version {version}. För mer information besök {website} eller rapportera fel på {github}.", "walkthrough": "Starta genomgången", - "start": "Ändra nu" + "start": "Redigera nu" }, "source_switch": { "live": "live", - "lose_changes": "Du har icke-sparade ändringar som kommer gå förlorade vid byte av kartserver. Är du säker att du vill byta server?", + "lose_changes": "Du har osparade ändringar som kommer gå förlorade vid byte av kartserver. Är du säker att du vill byta server?", "dev": "dev" }, "version": { @@ -621,8 +631,8 @@ "used_with": "används med {type}" }, "validations": { - "disconnected_highway": "Ej kopplad väg", - "disconnected_highway_tooltip": "Vägar bör vara kopplade till andra vägar eller entréer i byggnader.", + "disconnected_highway": "Ej ansluten väg", + "disconnected_highway_tooltip": "Vägar bör vara anslutna till andra vägar eller entréer i byggnader.", "old_multipolygon": "Multipolygontaggar på yttre väg", "old_multipolygon_tooltip": "Denna typ av multipolygon är föråldrad. Istället för att ha taggar på den yttre vägen, flytta dem till dess överliggande multipolygonen.", "untagged_point": "Otaggad punkt", @@ -660,14 +670,25 @@ "mapillary": { "view_on_mapillary": "Visa denna bild på Mapillary" }, + "openstreetcam_images": { + "tooltip": "Gatubilder från OpenStreetCam", + "title": "Bildlager (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Visa denna bild på OpenStreetCam" + }, "help": { "title": "Hjälp", "key": "H", - "help": "# Hjälp\n\nDetta är en redigerare för [OpenStreetMap](http://www.openstreetmap.org/),\nen gratis och redigerbar karta över världen. Du kan använda den för att lägga till och ändra\ndata i ditt område, allt för att göra en världsomspännande karta baserad på\nöppen källkod och öppen data bättre för alla.\n\nRedigeringar du gör på kartan kommer att visas för alla som använder\nOpenStreetMap. För att göra en redigering måste du\n[log in](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) är ett gemensamt projekt med [källkod\ntillgänglig på GitHub](https://github.com/openstreetmap/iD).\n", - "gps": "# GPS\n\nInsamlade GPS-spår är en värdefull källan för data till OpenStreetMap. Denna redigeraren\nstöder lokala spår - .gpx-filer på din lokala dator. Du kan samla\nin denna typ av GPS-spår med ett antal olika appar till din smartphone eller en GPS-enhet.\n\nFör information om du du gör en GPS-uppmätning, läs\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nFör att använda ett GPX-spår för att kartlägga, dra och släpp GPX-filen på kartredigeraren.\nOm den accepteras kommer det att läggas till på kartan som en ljuslila\nlinje. Klicka på menyn Kartdata till höger för att aktivera,\navaktivera eller zooma in till detta nya GPX-skapade lager.\n\nGPX-spåret laddas inte direkt upp till OpenStreetMap - bästa sätet att använda\ndet är att rita på kartan och använda det som en guide för att lägga till ny information,\nmen också för att [ladda upp det till OpenStreetMap] (http://www.openstreetmap.org/trace/create)\nså att andra kan använda det.\n", - "imagery": "# Flygfoton\n\nFlygfoton är en viktig källa vid kartläggning. En kombination av bilder från flygplan, satelliter och andra fria källor finns tillgängliga i redigeraren i menyn 'Bakgrundsinställningar' till höger.\n\nNormalt visas ett satellitlager från [Bing Maps](http://www.bing.com/maps/) i redigeraren, men när du förflytta dig runt och zooma till nya geografiska områden kommer nya källor bli tillgängliga. Vissa länder, som t.ex. USA, Frankrike och Danmark har bilder av väldigt hög kvalité tillgängliga för vissa områden.\n\nFlygfotona är ibland förskjutna till kartan på grund av misstag från leverantören av flygfoton. Om du ser att många vägar är förskjutna i förhållande till flygfotot, flytta dem inte direkt för att matcha bakgrunden. Istället kan du justera flygfotot så att det matchar med existerande data genom att klicka 'Justera bildplacering' längst ned i menyn för Bakgrundsinställningar.\n", - "addresses": "# Adresser\n\nAdresser är bland den mest användbara informationen på kartan.\n\nÄven om adresser normalt oftast är relaterade till segment av gatan är de i OpenStreetMap hanterade som attribut på byggnader och platser längst gatan.\n\nDu kan lägga till adressinformation både på platser kartlagda som byggnadskonturer och på platser kartlagda som enskilda punkter.\nDen bästa källan för adressinformation är från egen kunskap eller genom att besöka platsen - precis som för allt annat, att kopiera från kommersiella källor som Google Maps är strikt förbjudet.\n", - "inspector": "# Använda objektredigeraren\n\nObjektredigeraren är området till vänster på sidan som låter dig\nändra detaljerna för valt objekt.\n\n### Välj objekttyp\n\nEfter att du lagt till en punkt, linje eller område kan du välja vad för typ av objekt det\när, t.ex. om det är en huvudväg eller bostadsgata, shoppingcenter eller café.\nobjektredigeraren visar knappar för vanliga objekttyper, och du kan\nsöka efter andra typer i sökfönstret.\n\nKlicka på 'i' i nedre högra hörnet för en objekttyp för\natt läsa mer om det. Klicka på en knapp för att välja typ.\n\n### Använda formulär och ändra taggar\n\nEfter att du valt en objekttyp, eller om du väljer ett objekt som redan\nhar en typ associerad, kommer objektredigeraren visa fält med detaljer om objekttypen så som namn och adress.\n\nUnder fälten du ser kan du klicka på menyn 'Lägg till fält\" för att lägga till\nandra detaljer, som t.ex. Wikipedia-länk, handikappanpassning m.m.\n\nLängst ned i objektredigeraren, klicka på 'Alla taggar' för att lägga till ytterligare godtyckliga\ntaggar till objektet. [Taginfo](http://taginfo.openstreetmap.org/) är en\nbra resurs för att lära dig mer om populära tagg-kombinationer.\n\nÄndringar du gör i objektredigeraren visas automatiskt på kartan.\nDu kan ångra dem när du vill genom att klicka på 'Ånga'-knappen.\n" + "help": "# Hjälp\n\nDetta är en redigerare för [OpenStreetMap](http://www.openstreetmap.org/),\nen gratis och redigerbar karta över världen. Du kan använda den för att lägga till och ändra\ndata i ditt område, allt för att göra en världsomspännande karta baserad på\nöppen källkod och öppen data bättre för alla.\n\nRedigeringar du gör på kartan kommer att visas för alla som använder\nOpenStreetMap. För att göra en redigering måste du\n[logga in](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) är ett gemensamt projekt med [källkod\ntillgänglig på GitHub](https://github.com/openstreetmap/iD).\n", + "editing_saving": "# Redigera & spara\n\nDenna redigerare är främst gjord för att fungera online, och du använder den via en webbsida just nu.\n\n### Markera objekt\n\nFör att välja ett kartobjekt, t.ex. en väg eller en punkt, klicka på det på kartan. Detta markerar det valda objektet och laddar en sidopanel med detaljer om det. Om du högerklickar på det visas en meny med saker du kan göra med objektet.\n\nFör att markera flera objekt, håll ned Shift-tangenten. Klicka sedan på objekten du vill markera eller dra på kartan för att rita en kontur runt objekten. Alla punkter inuti ritat område kommer att markeras .\n\n### Spara redigeringar\n\nNär du gör ändringar såsom att ändra på en väg, byggnad eller plats är detta lagrat lokalt fram till att du sparar det på servern. Oroa dig inte om du gör ett misstag, du kan alltid ångra en ändring genom att klicka på Ångra-knappen och göra om din förändring genom att klicka på Gör om-knappen.\n\nKlicka på Spara för att slutföra en samling förändringar, t.ex. om du har gjort färdigt ett område i en stad och vill börja ändra i ett annat område. Du får möjlighet att granska vad du har gjort och redigeraren ger dig hjälpsamma förslag och varningar om någon ändring inte verkar korrekt.\n\nOm allt ser bra ut kan du ange en kort kommentar som förklarar vad du har gjort, och sedan klicka på 'Ladda upp' för att skicka ändringarna till [OpenStreetMap.org](http://www.openstreetmap.org/) där de blir synliga för alla andra användare och tillgängliga för andra att jobba vidare med.\n\nOm du inte kan slutföra din ändring på en gång kan du lämna redigeringsfönstret öppet och komma tillbaka (i samma webbläsare på samma dator) och redigeringsprogrammet kommer att ge dig möjlighet att återuppta ditt arbete.\n\n### Använda redigeraren\n\nDu kan se en lista med kortkommandon genom att trycka på tangenten `?`\n", + "roads": "# Vägar\n\nDu kan skapa, fixa och ta bort vägar med denna redigerare. Vägar kan vara alla typer av: stigar, bilvägar, spår, cykelvägar m.m. - alla välanvända segment ska kartläggas.\n\n### Markering\n\nKlicka på en väg för att välja den. En markering blir då synlig tillsammans med en sidopanel som visar mer information om vägen. Om du högerklickar på den får du en meny med åtgärder du kan utföra på vägen.\n\n### Modifiering\n\nOfta ser du vägar som inte är justerade till bakgrundsbilden eller till ett GPS-spår. Du kan justera dessa vägar så att de hamnar på rätt plats.\n\nKlicka först på vägen du vill ändra. Detta kommer att markera den och visa kontrollpunkter längs den som du kan dra i för att justera den. Om du vill lägga till en ny kontrollpunkt för högre detaljrikedom, dubbelklicka på en del av vägen utan en punkt så kommer en kontrollpunkt att läggas till.\n\nOm vägen är ansluten till en annan väg, men inte är det på kartan, kan du dra en av dess kontrollpunkter till den andra vägen för att koppla ihop dem. Att vägarna är kopplade till varandra är viktigt för kartan och avgörande för att kunna ge korrekta körinstruktioner.\n\nDu kan också högerklicka på den och välja 'Flytta', eller helt enkelt trycka på tangenten 'M' på tangentbordet, för att flytta en hel väg på en gång, och sedan klicka igen för att spara flytten.\n\n### Radering\n\nOm hela vägen är helt fel - du kan se att den inte existerar på satellitbilderna och har helst bekräftat i verkligheten att den inte finns - kan du radera den, vilket tar bort den från kartan. Var försiktigt när du raderar objekt - precis som vid all redigering kan alla se resultatet och satellitbilderna är ofta gamla, så vägen kan helt enkelt vara nybyggd.\n\nDu kan radera en väg genom att klicka på den för att markera den, och sedan trycka på tangenten 'Delete' eller högerklicka på den och klicka på soptunnan.\n\n### Skapa\n\nHar du hittat någonstans att det borde finnas en väg där det inte finns en? Klicka på ikonen 'Linje' högst upp till vänster i redigeringsfönstret eller klicka på knappen '2' på tangentbordet för att börja rita en linje.\n\nKlicka på början av vägen på kartan för att påbörja ritningen. Om vägen viker av från en existerande väg, starta genom att klicka där de ansluter till varandra.\n\nKlicka sedan på punkter längs vägen så att den följer vägens sträckning enligt satellitbilder eller GPS-spår. Om vägen du ritar korsar en annan väg, anslut dem genom att klicka där de korsar varandra. När du är klar med att rita in vägen, dubbelklicka eller tryck 'Enter' på tangentbordet.\n", + "gps": "# GPS\n\nInsamlade GPS-spår är en värdefull källa för data till OpenStreetMap. Den här redigeraren\nstöder lokala spår - .gpx-filer på din lokala dator. Du kan samla\nin denna typ av GPS-spår med ett antal olika appar till din smartphone eller en GPS-enhet.\n\nFör information om hur du gör en GPS-uppmätning, läs\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nFör att använda ett GPX-spår för att kartlägga, dra och släpp GPX-filen på kartredigeraren.\nOm den accepteras kommer det att läggas till på kartan som en ljuslila\nlinje. Klicka på menyn Kartdata till höger för att aktivera,\navaktivera eller zooma in till detta nya GPX-skapade lager.\n\nGPX-spåret laddas inte direkt upp till OpenStreetMap - bästa sättet att använda\ndet är att rita på kartan och använda det som en guide för att lägga till ny information,\nmen också för att [ladda upp det till OpenStreetMap] (http://www.openstreetmap.org/trace/create)\nså att andra kan använda det.\n", + "imagery": "# Flygfoton\n\nFlygfoton är en viktig källa vid kartläggning. En kombination av bilder från flygplan, satelliter och andra fria källor finns tillgängliga i redigeraren i menyn 'Bakgrundsinställningar' till höger.\n\nNormalt visas ett satellitlager från [Bing Maps](http://www.bing.com/maps/) i redigeraren, men när du förflyttar dig runt och zoomar till nya geografiska områden kommer nya källor att bli tillgängliga. Vissa länder, som t.ex. USA, Frankrike och Danmark har bilder av väldigt hög kvalitet tillgängliga för vissa områden.\n\nFlygfotona är ibland förskjutna jämfört med kartan på grund av misstag från leverantören av flygfoton. Om du ser att många vägar är förskjutna i förhållande till flygfotot, flytta dem inte direkt för att matcha bakgrunden. Istället kan du justera flygfotot så att det matchar med existerande data genom att klicka 'Justera bildplacering' längst ned i menyn för Bakgrundsinställningar.\n", + "addresses": "# Adresser\n\nAdresser är bland den mest användbara informationen på kartan.\n\nÄven om adresser normalt är relaterade till segment av gatan är de i OpenStreetMap hanterade som attribut på byggnader och platser längs gatan.\n\nDu kan lägga till adressinformation både på platser kartlagda som byggnadskonturer och på platser kartlagda som enskilda punkter.\nDen bästa källan för adressinformation är från egen kunskap eller genom att besöka platsen - precis som för allt annat; att kopiera från kommersiella källor som Google Maps är strikt förbjudet.\n", + "inspector": "# Använda objektredigeraren\n\nObjektredigeraren är området till vänster på sidan som låter dig\nändra detaljerna för valt objekt.\n\n### Välj objekttyp\n\nEfter att du har lagt till en punkt, linje eller ett område kan du välja vad för typ av objekt det\när, t.ex. om det är en huvudväg eller bostadsgata, shoppingcenter eller café.\nObjektredigeraren visar knappar för vanliga objekttyper, och du kan\nsöka efter andra typer i sökfönstret.\n\nKlicka på 'i' i nedre högra hörnet för en objekttyp för\natt läsa mer om det. Klicka på en knapp för att välja typ.\n\n### Använda formulär och ändra taggar\n\nEfter att du har valt en objekttyp, eller om du väljer ett objekt som redan\nhar en typ associerad, kommer objektredigeraren att visa fält med detaljer om objekttypen såsom namn och adress.\n\nUnder fälten du ser kan du klicka på menyn 'Lägg till fält\" för att lägga till\nandra detaljer, som t.ex. Wikipedia-länk, handikappanpassning m.m.\n\nLängst ned i objektredigeraren, klicka på 'Alla taggar' för att lägga till ytterligare godtyckliga\ntaggar till objektet. [Taginfo](http://taginfo.openstreetmap.org/) är en\nbra resurs för att lära dig mer om populära tagg-kombinationer.\n\nÄndringar du gör i objektredigeraren visas automatiskt på kartan.\nDu kan ångra dem när du vill genom att klicka på 'Ångra'-knappen.\n", + "buildings": "# Byggnader\n\nOpenStreetMap är världens största databas över byggnader. Du kan skapa\noch förbättra denna databas.\n\n### Markering\n\nDu kan markera en byggnad genom att klicka på dess kant. Detta kommer att markera byggnaden och ladda en sidopanel som visar mer information om byggnaden. Om du högerklickar på den, kommer det att visas en meny med åtgärder du kan utföra på byggnaden.\n\n### Modifiering\n\nIbland är byggnader felaktigt placerade eller har felaktiga taggar.\n\nFör att flytta en hel byggnad, markera den och tryck på tangenten 'M', eller högerklicka och välj alternativet 'Flytta'. Rör på musen för att flytta byggnaden, och klicka när den är korrekt placerad.\n\nFör att fixa den specifika formen av en byggnad, klicka och dra noderna som bildar\nramen till bättre platser.\n\n### Skapa\n\nEn av de viktigaste frågorna att tänka på vid tilläggning av byggnader till kartan är att\nOpenStreetMap registrerar byggnader både som form och punkt. Tumregeln\när att _kartlägga en byggnad som en form när möjligt_ och kartlägg företag, bostäder,\nfaciliteter, och andra saker finns i byggnaderna som punkter placerade\ninuti byggnadernas ram.\n\nBörja rita en byggnad som en ram genom att klicka på knappen \"område\" högst upp till vänster\ngränssnittet, och avsluta det antingen genom att trycka på \"Enter\" på tangentbordet\neller genom att klicka på den först ritade noden för att sluta formen.\n\n### Radering\n\nOm en byggnad är helt fel – du kan se att den inte finns med i någon satellitbild\noch har helst bekräftat lokalt att den inte finns – kan du ta bort\nden, vilket tar bort den från kartan. Var försiktig när du tar bort objekt –\nlikt alla ändringar kommer resultatet ses av alla och satellitbilder\när ofta föråldrade, så byggnaden kan helt enkelt vara nybyggd.\n\nDu kan ta bort en byggnad genom att klicka på den för att markera den och sedan klicka på tangenten 'Delete', eller högerklicka och på den och sedan klicka på soptunnan.\n", + "relations": "# Relationer\n\nEn relation är en speciell typ av egenskap i OpenStreetMap som grupperar objekt. Två vanliga relationstyper är t.ex. *ruttrelation* som grupperar vägsträckor som tillhör en specifik riksväg eller motorväg, och *multipolygoner* som grupperar linjer som definierar ett komplext område (som t.ex. har flera delar eller hål i sig)\n\nObjekten i en relation kallas *medlemmar*. Längst ned i sidopanelen kan du se vilka relationer ett objekt är medlem i, och ett klick på en relation kommer att markera den. När relationen är markerad kan du se alla medlemmar listade i sidopanelen och markerade på kartan.\n\nFör det mesta kommer iD att ta hand om relationerna automatiskt när du redigerar. Det viktigaste du måste veta om är att om du tar bort en vägsträcka för att rita om den mer exakt, måste du se till att den nya sträckan är medlem i samma relation som originalet.\n\n## Redigera relationer\n\nOm du vill redigera relationer är här grunderna.\n\nFör att lägga till ett objekt i en relation, markera objektet och klicka på \"+\"-knappen i sektionen \"Alla relationer\" i sidopanelen, och välj sedan eller skriv namnet på relationen.\n\nFör att skapa en ny relation, markera det första objektet som ska vara medlem i relationen, klicka på \"+\"-knappen i sektionen \"Alla relationer\" och välj \"Ny relation...\"\n\nFör att ta bort ett objekt från en relation, markera objektet och klicka på soptunnan bredvid relationen du vill ta bort den från.\n\nDu kan skapa multipolygoner med hål i sig med verktyget \"sammanfoga\". Rita två områden (inre och yttre), håll ned shift-tangenten och klicka på var och en av dem för att markera båda, tryck sedan på tangenten 'C'. Ett annat alternativ är att markera båda, och sedan högerklicka på en av dem och sedan klicka på knappen 'Sammanfoga' (+).\n" }, "intro": { "done": "klar", @@ -750,7 +771,7 @@ "morris-avenue": "Tvärvägen", "mural-mall": "Målargränd", "paisanos-bar-and-grill": "Paisano's Bar och Grill", - "paisley-emporium": "Begagnadsmarknad", + "paisley-emporium": "Begagnatmarknad", "paparazzi-tattoo": "Paparazzi Tattoo", "pealer-street": "Falkvägen", "pine-street": "Tallgatan", @@ -800,8 +821,8 @@ "welcome": { "title": "Välkommen", "welcome": "Välkommen! Denna genomgång kommer att lära dig grunderna i att redigera på OpenStreetMap.", - "practice": "Allt i denna genomgång är enbart för träningssyfte, ingen redigering du gör i genomgången kommer att sparas.", - "words": "Denna genomgång kommer att introducera några nya ord och koncept. När vi introducerar ett nytt ord kommer vi använda *kursiv* text. ", + "practice": "Allt i denna genomgång är enbart i träningssyfte; ingen redigering du gör i genomgången kommer att sparas.", + "words": "Denna genomgång kommer att introducera några nya ord och koncept. När vi introducerar ett nytt ord kommer vi att använda *kursiv* text. ", "mouse": "Du kan använda valfri inmatningshårdvara för att redigera kartan, men genomgången kommer att utgå från att du har en mus med vänster- och högerknappar. **Om du vill ansluta en mus, gör det nu och klicka OK.**", "leftclick": "När genomgången ber dig att klicka eller dubbelklicka, syftar vi på vänsterknappen. På en styrplatta kan det vara enkelklick eller tryck med ett finger. **Tryck med vänster musknapp {num} gånger.**", "rightclick": "Ibland kommer vi också be dig att högerklicka. Detta kan vara samma sak som att kontroll-klicka eller klicka med två fingrar på en styrplatta. Ditt tangentbord kanske även har en 'meny'-knapp som fungerar som högerklick. **Högerklicka {num} gånger.**", @@ -809,80 +830,80 @@ }, "navigation": { "title": "Navigation", - "drag": "Huvudkartsområdet visar OpenStreetMap-data ovanpå en bakgrund. {br}Du kan dra kartan genom att hålla ned vänster musknapp medan du flyttar musen. Du kan också använda piltangenterna på tangentbordet. **Dra kartan!**", + "drag": "Huvudkartområdet visar OpenStreetMap-data ovanpå en bakgrund. {br}Du kan dra kartan genom att hålla ned vänster musknapp medan du flyttar musen. Du kan också använda piltangenterna på tangentbordet. **Dra kartan!**", "zoom": "Du kan zooma in eller ut genom att rulla med mushjulet eller styrplattan eller genom att klicka på knapparna {plus} / {minus}. **Zooma kartan!**", "features": "Vi använder ordet *objekt* för att beskriva saker som förekommer på kartan. Allt i den verkliga världen kan karteras som ett objekt på OpenStreetMap.", "points_lines_areas": "Kartobjekt representeras med *punkter, linjer och områden.*", "nodes_ways": "I OpenStreetMap kallas ibland punkter för *noder*, och linjer och områden kallas ibland för *vägar*.", "click_townhall": "Alla objekt på kartan kan markeras genom att klicka på dem. **Klicka på punkten och markera den.**", - "selected_townhall": "Vad bra! Punkten är nu markerad. Markerat objekt är nu ritat med ett pulserande glöd.", + "selected_townhall": "Vad bra! Punkten är nu markerad. Markerade objekt visas med en pulserande glödande ram.", "editor_townhall": "När ett objekt är markerat visas *objektredigeraren* bredvid kartan.", "preset_townhall": "Högst upp i objektredigeraren visas objekttyp. Denna punkt representerar ett {preset}.", - "fields_townhall": "Mittdelen av objektredigeraren innehåller *fält* som visar objektets attribut, så som namn och adress. ", + "fields_townhall": "Mittdelen av objektredigeraren innehåller *fält* som visar objektets attribut, såsom namn och adress. ", "close_townhall": "**Stäng objektredigeraren genom att trycka på Escape på tangentbordet eller genom att trycka på knappen {button} i övre högra hörnet. ", "search_street": "Du kan också söka efter objekt i aktuell vy eller globalt. **Sök efter '{name}'.**", "choose_street": "**Välj {name} i listan för att markera den.**", "selected_street": "Vad bra! {name} är nu markerad.", - "editor_street": "Fälten som visas för en väg är annorlunda mot fälten som visades för kommunhuset.{br}För markerad gata visar objektredigeraren fälts så som '{field1}' och '{field2}'. **Stäng objektredigeraren genom att trycka Escape eller trycka på knappen {button}.", + "editor_street": "Fälten som visas för en väg är annorlunda mot fälten som visades för kommunhuset.{br}För markerad gata visar objektredigeraren fält som '{field1}' och '{field2}'. **Stäng objektredigeraren genom att trycka Escape eller trycka på knappen {button}.", "play": "Prova att flytta runt på kartan och klicka på några andra objekt för att se vad för typ av saker som kan läggas till i OpenStreetMap. **När du är redo att fortsätta till nästa kapitel, tryck '{next}'.**" }, "points": { "title": "Punkter", - "add_point": "*Punkter* kan användas för att representera objekt så som affärer, restauranger och monument.{br}De markerar en specifik position och beskriver vad det är. **Klicka på knappen {button} Punkt för att lägga till en ny punkt.**", + "add_point": "*Punkter* kan användas för att representera objekt såsom affärer, restauranger och monument.{br}De markerar en specifik position och beskriver vad det är. **Klicka på knappen {button} Punkt för att lägga till en ny punkt.**", "place_point": "För att placera den nya punkten på kartan, placera din muspekare där punkten ska vara och vänsterklicka eller tryck på mellanslagstangenten. **Flytta muspekaren till denna byggnad, vänsterklicka sedan eller tryck på mellanslag.**", "search_cafe": "Det finns många olika typer av objekt som kan representeras med punkter. Punkten du just lade till är ett café. **Sök efter '{preset}'.**", "choose_cafe": "**Välj {preset} i listan.**", "feature_editor": "Punkten är nu markerad som ett café. Med hjälp av objektredigeraren kan vi lägga till mer information om caféet. ", - "add_name": "På OpenStreetMap är alla fält valfria, och det är ok att lämna ett fält tomt om du är osäker.{br}Låt oss låssas att du har lokalkännedom om caféet och vet dess namn. **Lägg till ett namn på caféet.**", + "add_name": "På OpenStreetMap är alla fält valfria, och det är ok att lämna ett fält tomt om du är osäker.{br}Låt oss låtsas att du har lokalkännedom om caféet och vet dess namn. **Lägg till ett namn på caféet.**", "add_close": "Objektredigeraren komma ihåg alla dina ändringar automatiskt. **När du är klar med att lägga till ett namn, tryck Escape, Enter eller klicka på knappen {button} för att stänga objektredigeraren.**", "reselect": "Ofta existerar redan punkter men är felaktiga eller ofullständiga. Vi kan ändra redan existerande punkter. **Klicka för att markera caféet du just skapade.**", - "update": "Låt oss fylla i lite mer information om caféet. Du kan ändra dess namn, ange vad för typ av mat som serveras eller lägga till en address. **Ändra information om caféet.**", + "update": "Låt oss fylla i lite mer information om caféet. Du kan ändra dess namn, ange vad för typ av mat som serveras eller lägga till en adress. **Ändra information om caféet.**", "update_close": "**När du är färdig med att uppdatera caféet, tryck Escape, Enter eller klicka på knappen {button} för att stänga objektredigeraren.**", - "rightclick": "Du kan högerklicka på valfritt objekt för att se menyn *redigera*, vilken innehåller en lista av operationer som kan utföra. **Högerklicka för att markera punkten du skapade och för att visa redigerarmenyn.**", + "rightclick": "Du kan högerklicka på valfritt objekt för att se *redigeringsmenyn*, vilken innehåller en lista med operationer som kan utföras. **Högerklicka för att markera punkten du skapade och för att visa redigeringsmenyn.**", "delete": "Det är ok att radera objekt som inte existerar i verkligheten.{br}Genom att radera ett objekt på OpenStreetMap tas det bort från kartan som alla använder, så du bör försäkra dig om att objektet verkligen är borta innan du raderar det. **Klicka på knappen {button} för att radera punkten.**", - "undo": "Du kan alltid ångra alla ändringar fram tills dess att du sparar dina redigeringar till OpenStreetMap. **Klicka på knappen {button} för att ångra raderingen och få tillbaka punkten.**", - "play": "Nu när du vet hur du skapar och redigerar punkter, prova att skapa några fler punkter för övningen skull! **När du är redo att fortsätta till nästa kapitel, klicka på '{next}'.**" + "undo": "Du kan alltid ångra alla ändringar fram till att du sparar dina redigeringar till OpenStreetMap. **Klicka på knappen {button} för att ångra raderingen och få tillbaka punkten.**", + "play": "Nu när du vet hur du skapar och redigerar punkter, prova att skapa några fler punkter för övnings skull! **När du är redo att fortsätta till nästa kapitel, klicka på '{next}'.**" }, "areas": { "title": "Områden", - "add_playground": "*Områden* används för att visa avgränsningar för objekt så som sjöar, byggnader och bostadsområden.{br}De kan också används för mer detaljerad kartering av många objekt som du kanske normalt skulle kartera som punkter. **Klicka på knappen {button} Område för att skapa ett nytt område.**", + "add_playground": "*Områden* används för att visa avgränsningar för objekt så som sjöar, byggnader och bostadsområden.{br}De kan också användas för mer detaljerad kartläggning av många objekt som du kanske normalt skulle kartlägga som punkter. **Klicka på knappen {button} Område för att skapa ett nytt område.**", "start_playground": "Låt oss lägga till denna lekplats på kartan genom att rita ett område. Områden ritas genom att placera *noder* längs yttre kanten av objektet. **Klicka eller tryck mellanslag för att placera en startnod på ett av hörnen av lekplatsen.**", "continue_playground": "Fortsätt rita området genom att placera noder längs kanten på lekplatsen. Det är ok att ansluta området till existerande gångvägar.{br}Tips: Du kan hålla ned '{alt}'-tangenten för att förhindra att noder kopplas ihop med andra objekt. **Fortsätt att rita ett område runt lekplatsen.**", "finish_playground": "Slutför området genom att trycka Enter eller genom att trycka igen på antingen första eller sista noden. **Rita färdigt området för lekplatsen.**", "search_playground": "**Sök efter '{preset}'.**", "choose_playground": "**Välj {preset} i listan.**", "add_field": "Denna lekplats har inget officiellt namn, så vi anger inget i namnfältet.{br}Låt oss lägga till lite andra detaljer om lekplatsen till fältet Beskrivning. **Öppna listan för Lägg till fält.**", - "choose_field": "*'Välj {field} i listan.**", + "choose_field": "**Välj {field} i listan.**", "retry_add_field": "Du valde inte fältet {field}. Låt oss försöka igen.", "describe_playground": "**Ange en beskrivning och klicka sedan på knappen {button} för att stänga objektredigeraren.**", "play": "Bra jobbat! Prova att rita lite fler områden för att se vad för typ av områden du kan lägga till på OpenStreetMap. **När du är redo att fortsätta till nästa kapitel, klicka på '{next}'.**" }, "lines": { "title": "Linjer", - "add_line": "*Linjer* används för att representera objekt så som vägar, järnvägar och floder. **Klicka på knappen {button} Linje för att lägga till en ny linje.**", - "start_line": "Här är en väg som saknas. Låt oss lägga till den!{br}På OpenStreetMap bör linjer ritas längst mitten av vägen. Du kan dra och zooma kartan medan du ritar om det är nödvändigt. **Påbörja en ny linje genom att klicka på den övre änden av den saknade vägen.**", - "intersect": "Klicka eller tryck mellanslag för att lägga till fler noder på linjen.{br}Vägar, och många andra typer av linjer, tillhör ett stort nätverk. Det är viktigt för dessa typer av linjer är korrekt anslutna till varandra för att navigationsappar ska fungera. **Klicka på {name} för att skapa en korsning som sammanbinder de två linjerna.**", + "add_line": "*Linjer* används för att representera objekt såsom vägar, järnvägar och floder. **Klicka på knappen {button} Linje för att lägga till en ny linje.**", + "start_line": "Här är en väg som saknas. Låt oss lägga till den!{br}På OpenStreetMap bör linjer ritas längs mitten av vägen. Du kan dra och zooma kartan medan du ritar om det är nödvändigt. **Påbörja en ny linje genom att klicka på den övre änden av den saknade vägen.**", + "intersect": "Klicka eller tryck mellanslag för att lägga till fler noder på linjen.{br}Vägar och många andra typer av linjer bildar större nätverk. Det är viktigt att de linjerna är korrekt anslutna till varandra för att navigationsappar ska fungera. **Klicka på {name} för att skapa en korsning som sammanbinder de två linjerna.**", "retry_intersect": "Vägen måste sammanbindas med {name}. Försök igen!", - "continue_line": "Fortsätt rita linjen för den nya vägen. Komihåg att du kan dra och zooma karta om du behöver.{br}När du ritat färdigt, klicka på sista noden igen. **Rita färdigt vägen.**", + "continue_line": "Fortsätt att rita linjen för den nya vägen. Kom ihåg att du kan dra och zooma kartan om du behöver.{br}När du har ritat färdigt, klicka på den sista noden igen. **Rita färdigt vägen.**", "choose_category_road": "**Välj {category} i listan.**", "choose_preset_residential": "Det finns många typer av vägar, men detta är en bostadsgata. **Välj typen {preset}.**", "retry_preset_residential": "Du valde inte typen {preset}. **Klicka här för att välja igen.**", "name_road": "**Ge vägen ett namn. Klicka sedan Escape, Enter eller knappen {button} för att stänga objektredigeraren.**", - "did_name_road": "Ser bra ut! Nu kommer vi lära oss hur vi uppdatera formen på en linje. ", - "update_line": "Ibland måste du ändra formen på en existerande linje. Här är en väg som inte ser helt rätt ut.", + "did_name_road": "Ser bra ut! Nu ska vi lära oss hur vi uppdaterar formen på en linje. ", + "update_line": "Ibland måste du ändra formen på en befintlig linje. Här är en väg som inte ser helt rätt ut.", "add_node": "Vi kan lägga till några noder på linjen för att förbättra dess form. Ett sätt att lägga till noder är genom att dubbelklicka på linjen där du vill lägga till en nod. **Dubbelklicka på linjen för att skapa en ny nod.**", "start_drag_endpoint": "När en linje är markerad, kan du flytta dess noder genom att klicka och hålla ned vänster musknapp samtidigt som du drar. **Flytta slutpunkten till platsen där korsningen bör vara.**", - "finish_drag_endpoint": "Denna platsen ser bra ut. **Släpp vänster musknapp för att slutföra förflyttningen.**", - "start_drag_midpoint": "Små trianglar ritas på \"mittpunkten\" mellan noder. Ett annat sätt att skapa en ny nod är genom att dra en mittpunkt till en ny position. **Dra triangeln i mittpunkten för att skapa en ny nod längst kurvan för vägen.**", + "finish_drag_endpoint": "Den här platsen ser bra ut. **Släpp vänster musknapp för att slutföra förflyttningen.**", + "start_drag_midpoint": "Små trianglar ritas på \"mittpunkten\" mellan noder. Ett annat sätt att skapa en ny nod är genom att dra en mittpunkt till en ny position. **Dra triangeln i mittpunkten för att skapa en ny nod längs kurvan för vägen.**", "continue_drag_midpoint": "Linjen ser mycket bättre ut nu! Fortsätt att justera linjen genom att dubbelklicka eller dra i mittpunkten tills kurvan matchar vägens sträckning. **När du är nöjd med hur linjen ser ut, tryck OK.**", "delete_lines": "Det är ok att radera linjer för vägar som inte existerar i verkligheten.{br}Här är ett exempel där staden planerade den {street} som sedan aldrig byggdes. Vi kan förbättra denna del av kartan genom att radera denna överflödiga linje. ", - "rightclick_intersection": "Den sista verkliga gatan är {street1}, så vi kommer att *dela* {street2} vid denna korsningen och radera allt ovanför den. **Högerklicka på noden i korsningen.**", + "rightclick_intersection": "Den sista verkliga gatan är {street1}, så vi kommer att *dela* {street2} vid den här korsningen och radera allt ovanför den. **Högerklicka på noden i korsningen.**", "split_intersection": "**Klicka på knappen {button} för att dela {street}.**", - "retry_split": "Du tryckte inte på knappen Dela upp. försök igen.", + "retry_split": "Du tryckte inte på knappen Dela upp. Försök igen.", "did_split_multi": "Bra jobbat! {street1} är nu delad i två delar. Den övre delen kan raderas. **Klicka på den övre delen av {street2} för att markera den.**", "did_split_single": "**Klicka på övre delen av {street2} för att markera den.**", "multi_select": "{selected} är nu markerad. Låt oss även markera {other1}. Du kan shift-klicka för att markera flera saker. **Håll ned Shift och klicka på {other2}.**", - "multi_rightclick": "Bra! Båda linjerna som ska raderas är nu markerade. **Högerklicka på en av linjerna för att visa redigeramenyn.**", + "multi_rightclick": "Bra! Båda linjerna som ska raderas är nu markerade. **Högerklicka på en av linjerna för att visa redigeringsmenyn.**", "multi_delete": "**Klicka på knappen {button} för att radera de överflödiga linjerna.**", "retry_delete": "Du klickade inte på knappen Radera. Försök igen.", "play": "Bra! Använd de färdigheter som du har lärt dig i det här kapitlet för att öva på att redigera några fler linjer. ** När du är redo att fortsätta till nästa kapitel, klicka på \"{next}\". **" @@ -890,29 +911,29 @@ "buildings": { "title": "Byggnader", "add_building": "OpenStreetMap har världens största databas över byggnader.{br}Du kan hjälpa till att förbättra denna databas genom att rita in byggnader som inte redan är karterade. **Klicka på knappen {button} Område för att lägga till ett nytt område.**", - "start_building": "Låt oss lägga till detta hus på kartan genom att rita av dess kontur.{br}Byggnader bör ritas efter hur dess kontur ser ut vid marknivå så gott det går. **Klicka eller tryck mellanslag för att placera en startnod vid ett av hörnen på byggnaden.**", - "continue_building": "Fortsätt att lägga till fler noder för att markera byggnadens kontur. Komihåg att du kan zooma in om du vill lägga till fler detaljer.{br}Slutför byggnaden genom att trycka Enter eller genom att klicka igen på antingen första eller sista noden. **Slutför byggnaden.**", + "start_building": "Låt oss lägga till detta hus på kartan genom att rita av dess kontur.{br}Byggnader bör ritas efter hur deras kontur ser ut vid marknivå, så gott det går. **Klicka eller tryck mellanslag för att placera en startnod vid ett av hörnen på byggnaden.**", + "continue_building": "Fortsätt att lägga till fler noder för att markera byggnadens kontur. Kom ihåg att du kan zooma in om du vill lägga till fler detaljer.{br}Slutför byggnaden genom att trycka Enter eller genom att klicka igen på antingen den första eller sista noden. **Slutför byggnaden.**", "retry_building": "Det ser ut som att du har problem med att placera ut noderna vid byggnadens hörn. Försök igen!", "choose_category_building": "**Välj {category} i listan.**", - "choose_preset_house": "Det finns många olika typer av byggnader, men detta är uppenbarligen ett enfamiljshus.{br}Om du inte är säker på typen, är det helt ok att ange det som en en odefinierad Byggnad. **Välj typen {preset}.**", + "choose_preset_house": "Det finns många olika typer av byggnader, men detta är uppenbarligen ett enfamiljshus.{br}Om du inte är säker på typen är det helt ok att ange det som en odefinierad \"Byggnad\". **Välj typen {preset}.**", "close": "**Tryck Escape eller klicka på knappen {button} för att stänga objektredigeraren.**", - "rightclick_building": "**Högerklicka för att markera byggnaden du skapade och visa redigeramenyn.**", + "rightclick_building": "**Högerklicka för att markera byggnaden du skapade och visa redigeringsmenyn.**", "square_building": "Huset du just skapade kommer att se ännu bättre ut med perfekt vinkelräta hörn. **Klicka på knappen {button} för att göra hörnen på byggnaden vinkelräta.**", "retry_square": "Du klickade inte på knappen Räta upp. Försök igen.", - "done_square": "Såg du hur byggnadens hörn justerades? Låt oss lära oss ytterligare ett användbart trycks. ", - "add_tank": "Nu ska vi rita av konturerna på denna cirkulära lagringstank. **Klicka på knappen {button} Område för att lägga till ett nytt område.**", - "start_tank": "Oroa dig inte, du behöver inte rita en perfekt cirkel. Rita bara ett område inuti tanken som nudda vid dess kanter. **Klicka eller tryck mellanslag för att placera en startnod vid kanten av tanken.**", - "continue_tank": "Lägg till några fler noder längst kanten. Cirkeln kommer att skapas utanför noderna du just ritade.{br}Slutför området genom att trycka Enter eller genom att trycka igen på antingen första eller sista noden. **Slutför tanken.**", + "done_square": "Såg du hur byggnadens hörn justerades? Nu kommer ytterligare ett användbart trick.", + "add_tank": "Nu ska vi rita av konturen på denna cirkulära lagringstank. **Klicka på knappen {button} Område för att lägga till ett nytt område.**", + "start_tank": "Oroa dig inte, du behöver inte rita en perfekt cirkel. Rita bara ett område inuti tanken som nuddar vid dess kanter. **Klicka eller tryck mellanslag för att placera en startnod vid kanten av tanken.**", + "continue_tank": "Lägg till några fler noder längs kanten. Cirkeln kommer sedan att skapas utanför de noder du ritar.{br}Slutför området genom att trycka Enter eller genom att trycka igen på antingen första eller sista noden. **Slutför tanken.**", "search_tank": "**Sök efter '{preset}'.**", "choose_tank": "**Välj {preset} i listan.**", - "rightclick_tank": "**Högerklicka för att markera lagringstanken du skapade och för att visa redigeramenyn.**", + "rightclick_tank": "**Högerklicka för att markera lagringstanken du skapade och för att visa redigeringsmenyn.**", "circle_tank": "**Klicka på knappen {button} för att göra tanken cirkulär.**", "retry_circle": "Du tryckte inte på knappen Gör till cirkel. Försök igen.", - "play": "Bra jobbat! Öva dig genom att rita av några fler byggnader och prova några fler av kommandona i redigeramenyn. **När du är redo att fortsätta till nästa kapitel, klicka på '{next}'.**" + "play": "Bra jobbat! Öva dig genom att rita av några fler byggnader och prova några fler av kommandona i redigeringsmenyn. **När du är redo att fortsätta till nästa kapitel, klicka på '{next}'.**" }, "startediting": { "title": "Börja redigera", - "help": "Du är nu redo att redigera OpenStreetMap!{br}Du kan göra om denna genomgång när du vill, eller läsa mer i dokumentationen genom att klicka på knappen {button} Hjälp eller trycka på '{key}'-tangenten.", + "help": "Du är nu redo att redigera OpenStreetMap!{br}Du kan repetera denna genomgång när du vill, eller läsa mer i dokumentationen genom att klicka på knappen {button} Hjälp eller trycka på '{key}'-tangenten.", "shortcuts": "Du kan se en lista med kommandon tillsammans med deras kortkommandon genom att trycka på tangenten '{key}'.", "save": "Glöm inte att regelbundet spara dina ändringar!", "start": "Börja kartera!" @@ -1004,15 +1025,15 @@ "title": "Operationer", "continue_line": "Fortsätt en linje från markerad nod", "merge": "Kombinera (sammanfoga) markerade objekt", - "disconnect": "Bryt av objekt vid markerad nod", + "disconnect": "Koppla isär objekt vid markerad nod", "split": "Dela en linje i två vid markerad nod", "reverse": "Byt riktning på en linje", "move": "Flytta markerade objekt", "rotate": "Rotera markerade objekt", "orthogonalize": "Räta ut linje / Räta upp hörnen på område", - "circularize": "Gör en stängd linje eller ett område cirkulär. ", - "reflect_long": "Spegla objekt längst dess långa axel", - "reflect_short": "Spegla objekt längst dess korta axel", + "circularize": "Gör en sluten linje eller ett område cirkulär. ", + "reflect_long": "Spegla objekt längs dess långa axel", + "reflect_short": "Spegla objekt längs deras korta axel", "delete": "Radera markerade objekt" }, "commands": { @@ -1205,6 +1226,9 @@ "aeroway": { "label": "Typ" }, + "agrarian": { + "label": "Produkter" + }, "amenity": { "label": "Typ" }, @@ -1273,6 +1297,9 @@ "board_type": { "label": "Typ" }, + "boules": { + "label": "Typ" + }, "boundary": { "label": "Typ" }, @@ -1292,6 +1319,10 @@ "bunker_type": { "label": "Typ" }, + "cables": { + "label": "Kablar", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Riktning (grader medurs)", "placeholder": "45, 90, 180, 270" @@ -1377,6 +1408,14 @@ "craft": { "label": "Typ" }, + "crane/type": { + "label": "Krantyp", + "options": { + "floor-mounted_crane": "Golvmonterad kran", + "portal_crane": "Portalkran", + "travel_lift": "Traverslift" + } + }, "crop": { "label": "Grödor" }, @@ -1449,6 +1488,10 @@ "description": { "label": "Beskrivning" }, + "devices": { + "label": "Enheter", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Skötbord tillgängligt" }, @@ -1523,6 +1566,9 @@ "wall": "Vägg" } }, + "fitness_station": { + "label": "Typ av utrustning" + }, "fixme": { "label": "Fixa mig" }, @@ -1530,6 +1576,9 @@ "label": "Typ", "placeholder": "Standard" }, + "frequency": { + "label": "Arbetsfrekvens" + }, "fuel": { "label": "Bränsle" }, @@ -1561,6 +1610,9 @@ "generator/type": { "label": "Typ" }, + "government": { + "label": "Typ" + }, "grape_variety": { "label": "druvsorter" }, @@ -1572,6 +1624,7 @@ "label": "Ledstång" }, "hashtags": { + "label": "Föreslagna hashtag", "placeholder": "#exempel" }, "healthcare": { @@ -1710,7 +1763,7 @@ "placeholder": "2, 4, 6..." }, "lit": { - "label": "Upplyst" + "label": "Belysning" }, "location": { "label": "Lokalisering" @@ -1887,6 +1940,10 @@ "payment_multi": { "label": "Betalningssätt" }, + "phases": { + "label": "Faser", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telefon", "placeholder": "+46 31 123 4567" @@ -1939,6 +1996,15 @@ "label": "Effektuttaget", "placeholder": "500 MW, 1000 MW, 2000 MW..." }, + "playground/baby": { + "label": "Babygunga" + }, + "playground/max_age": { + "label": "Högsta ålder" + }, + "playground/min_age": { + "label": "Lägsta ålder" + }, "population": { "label": "Folkmängd" }, @@ -1957,6 +2023,9 @@ "railway": { "label": "Typ" }, + "rating": { + "label": "Märkeffekt" + }, "recycling_accepts": { "label": "Accepterar" }, @@ -2155,9 +2224,19 @@ }, "placeholder": "Okänt" }, + "structure_waterway": { + "label": "Struktur", + "options": { + "tunnel": "Tunnel" + }, + "placeholder": "Okänd" + }, "studio": { "label": "Typ" }, + "substance": { + "label": "Substans" + }, "substation": { "label": "Typ" }, @@ -2184,6 +2263,15 @@ "surveillance/zone": { "label": "Övervakningsområde" }, + "switch": { + "label": "Typ", + "options": { + "circuit_breaker": "Effektbrytare", + "disconnector": "Frånskiljare", + "earthing": "Enpelarjordningskopplare", + "mechanical": "Lastbrytare" + } + }, "tactile_paving": { "label": "Ledstråk" }, @@ -2235,6 +2323,9 @@ }, "placeholder": "Fast, Mestadels fast, Mjuk ..." }, + "trade": { + "label": "Typ" + }, "traffic_calming": { "label": "Typ" }, @@ -2253,6 +2344,19 @@ }, "placeholder": "Utmärkt, bra, dåligt..." }, + "transformer": { + "label": "Typ", + "options": { + "auto": "Enkellindad transformator", + "auxiliary": "Lokaltransformator", + "converter": "Konverterare", + "distribution": "Distribution", + "generator": "Generator", + "phase_angle_regulator": "Fasregulator", + "traction": "Enfastransformator", + "yes": "Okänd" + } + }, "trees": { "label": "Träd" }, @@ -2287,6 +2391,18 @@ "stratovolcano": "Stratovulkan" } }, + "voltage": { + "label": "Spänning" + }, + "voltage/primary": { + "label": "Primärspänning" + }, + "voltage/secondary": { + "label": "Sekundärspänning" + }, + "voltage/tertiary": { + "label": "Tertiärspänning" + }, "wall": { "label": "Typ" }, @@ -2314,6 +2430,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Lindningar", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Lindningskonfiguration", + "options": { + "delta": " D-koppling", + "leblanc": " Leblanc-koppling", + "open": "Öppna lindningar", + "open-delta": "Öppen D-koppling", + "scott": " Scott-koppling", + "star": " Y-koppling", + "zigzag": " Z-koppling" + } } }, "presets": { @@ -2518,6 +2650,10 @@ "name": "Abortklinik", "terms": "abort, abortklinik, framkallat missfall, missfall, fosterfördrivning, avbrytande av havandeskap" }, + "amenity/clinic/fertility": { + "name": "Fertilitetsklinik", + "terms": "Fertilitetsklinik, Fertilitet, IVF, Fertilitetscentrum, Insemination, Äggfrys, barnlöshet, befruktning, äggdonation, spermadonation, spermie, fortplantning, reproduktion, ägglossning" + }, "amenity/clock": { "name": "Klocka", "terms": "Klocka, ur, urtavla, kyrkklocka, tidur, solur, väggur, väggklocka" @@ -2633,6 +2769,10 @@ "name": "Motorcykelparkering", "terms": "Motorcykelparkering, parkering motorcykel, ställplats, motorcykelställ, parkering, motorcykel, parkeringsplats, parkeringsplats motorcykel" }, + "amenity/music_school": { + "name": "Musikskola", + "terms": "musikskola, musik, kultur, kulturskola, sångskola, instrumentskola, instrument, musikinstrument, kör, sång" + }, "amenity/nightclub": { "name": "Nattklubb", "terms": "Nattklubb, disko*, diskotek, klubb, nöjeslokal, dansställe, bar, disco, dans, dansklubb" @@ -2756,8 +2896,7 @@ "terms": "Skolgård, skolområde, Campus, universitetsområde, högskoleområde, universitet, högskola, grundskola, mellanstadium, lågstadium, högstadium, gymnasium" }, "amenity/scrapyard": { - "name": "Bilskrot", - "terms": "Bilskrot, skrot, bil, fordon, metall, bärgning, vrak, bildemontering, metallavfall, metallskräp, metallskrot, skrotupplag, skrotningsanläggning" + "name": "Bilskrot" }, "amenity/shelter": { "name": "Väderskydd", @@ -2838,6 +2977,10 @@ "name": "Bajspåsar", "terms": "Bajspåsar, hundbajspåsar, hundpåsar, hundbajs, hundskit, skitpåse, avföringspåse, bajs, hund, djur" }, + "amenity/vending_machine/feminine_hygiene": { + "name": "Varumaskin för mensskydd", + "terms": "Varumaskin för mensskydd, mensskydd, kondom, tampong, bindor, binda, kvinna, kvinnor, mens, menstruation" + }, "amenity/vending_machine/news_papers": { "name": "Tidningsautomat" }, @@ -3217,6 +3360,10 @@ "name": "Urmakare (väggur)", "terms": "Urmakare, klockmakare" }, + "craft/confectionery": { + "name": "Godistillverkare", + "terms": "Godistillverkare, sötsaker, godis, karameller, godisfabrik, godsaker, konfekt, konfektyrer, choklad, pastiller" + }, "craft/distillery": { "name": "Destilleri", "terms": "alkohol,bourbon,sprit,brandy,gin,sprit,mezcal,spritdryck,rom,scotch,sprit,tequila,vodka,whisky,whisky, Destilleri, spritdestillering, hembränning, alkoholdestillering, sprittillverkning, alkoholtillverkning" @@ -3318,9 +3465,9 @@ "name": "Ställningsbyggare", "terms": "Ställningsbyggare, byggnadsställning, ställning" }, - "craft/sculpter": { + "craft/sculptor": { "name": "Skulptör", - "terms": "Skulptör, staty, skulptur, stenskulptör, bildhuggare, bildsnidare" + "terms": "skulptör, bildhuggare, skulpturer, skulptur, bildsnidare, staty" }, "craft/shoemaker": { "name": "Skomakare", @@ -3330,10 +3477,6 @@ "name": "Stenhuggare", "terms": "Stenhuggare, stenbrott" }, - "craft/sweep": { - "name": "Sotare", - "terms": "Sotare, skorstensfejare" - }, "craft/tailor": { "name": "Skräddare" }, @@ -3411,10 +3554,18 @@ "name": "Vägpassage", "terms": "Vägövergång, övergångsställe, vägpassage, gångvägspassage, gångpassage" }, + "footway/crossing-raised": { + "name": "Upphöjd vägkorsning", + "terms": "Upphöjd vägkorsning, vägövergång, farthinder, fartdämpare, gupp, upphöjd" + }, "footway/crosswalk": { "name": "Övergångsställe för gående", "terms": "Övergångsställe för gående, övergångsställe, Vägövergång, vägpassage, gångvägspassage, gångpassage" }, + "footway/crosswalk-raised": { + "name": "Upphöjt övergångsställe", + "terms": "Upphöjd vägkorsning, Upphöjt övergångsställe, vägövergång, övergångsställe, farthinder, fartdämpare, gupp, upphöjd" + }, "footway/sidewalk": { "name": "Trottoar", "terms": "Trottoar, gångbana, gångväg" @@ -3463,10 +3614,66 @@ "name": "Vattenhinde", "terms": "Vattenhinde, golf" }, + "healthcare": { + "name": "Hälsovård", + "terms": "Hälsovård, klinik, mottagning, doktor, läkare, sjukdom, hälsa, institution, sjuk, kirurgi, välmående" + }, + "healthcare/alternative": { + "name": "Alternativmedicin", + "terms": "Alternativmedicin, alternativ medicin, akupunktur, antroposofisk, tillämpad kinesiologi, aromaterapi, ayurveda, herbalism, örtmedicin, homeopati, hydroterapi, hypnos, naturopati, osteopati, reflexologi, reiki, shiatsu, traditionell, tuina, unani" + }, + "healthcare/alternative/chiropractic": { + "name": "Kiropraktik (rygg)", + "terms": "Kiropraktor, Kiropraktik, ryggbesvär, ryggen, smärta, ryggsmärta, ryggrad, Kotknackare" + }, + "healthcare/audiologist": { + "name": "Audionomi (hörsel)", + "terms": "Audionomist, Audionomi, Audionom, öra, örat, hörsel, ljud, hörapparat" + }, + "healthcare/birthing_center": { + "name": "Förlossning", + "terms": "Förlossning, Förlossningsavdelning, Barnbördshus , BB, barn, baby, bäbis, bebis, förlossning, graviditet, barnafödsel" + }, "healthcare/blood_donation": { "name": "Blodgivarcentral", "terms": "Blodgivarcentral, blodcentral, blodgivare, blodgivning, bloddonation, ge blod, donera blod, blodbank, blodtransfusion, aferes, plasmaferes, Plateletpheresis, stamcellsdonation" }, + "healthcare/hospice": { + "name": "Hospis (palliativ vård)", + "terms": "Hospis, Palliativ vård, död, döende, terminalvård " + }, + "healthcare/midwife": { + "name": "Barnmorska", + "terms": "Barnmorska, jordemo, ackuschörska, mödrahälsovård, mödravårdscentra, gynekolog, Gynekologi, Preventivmedel, ungdomsmottagning" + }, + "healthcare/occupational_therapist": { + "name": "Arbetsterapi", + "terms": "Arbetsterapi, terapeut, terapi, rehabilitering, ergonomi, hjälpmedel" + }, + "healthcare/optometrist": { + "name": "Optometri (ögon)", + "terms": "Optometri, Optometrier , ögon, glasögon, ögonlaser, linser, syn, synfel, korrektionsglas, synhjälpmedel" + }, + "healthcare/physiotherapist": { + "name": "Fysioterapi (sjukgymnastik)", + "terms": "Fysioterapeut, Fysioterapi, sjukgymnastik, fysisk, terapeut, terapi" + }, + "healthcare/podiatrist": { + "name": "Podiatri (fötter)", + "terms": "Podiatri, podiatriker, fot, fötter, naglar, fothälsa, fotkirurgi" + }, + "healthcare/psychotherapist": { + "name": "Psykoterapi", + "terms": "Psykoterapi, Psykoterapeut, psykologisk behandling, ångest, rådgivare, depression, mental hälsa, sinne, självmord, terapeut, terapi, psykolog, kuratorer" + }, + "healthcare/rehabilitation": { + "name": "Rehabilitering", + "terms": "Rehabilitering, Rehab, terapeut, terapi" + }, + "healthcare/speech_therapist": { + "name": "Logoped (röst/tal)", + "terms": "Logoped, tal, terapeut, terapi, röst, språk, språkstörning, talstörning, röststörning, dysfagi" + }, "highway": { "name": "Väg" }, @@ -3486,10 +3693,18 @@ "name": "Vägkorsning", "terms": "Korsning, kryss, vägkors, kors, vägskäl, gatukorsning, plankorsning, vägpassage" }, + "highway/crossing-raised": { + "name": "Upphöjd vägkorsning", + "terms": "Upphöjd vägkorsning, vägövergång, farthinder, fartdämpare, gupp, upphöjd" + }, "highway/crosswalk": { "name": "Övergångsställe för gående", "terms": "Övergångsställe för gående, övergångsställe, Vägövergång, vägpassage, gångvägspassage, gångpassage" }, + "highway/crosswalk-raised": { + "name": "Upphöjt övergångsställe", + "terms": "Upphöjd vägkorsning, Upphöjt övergångsställe, vägövergång, övergångsställe, farthinder, fartdämpare, gupp, upphöjd" + }, "highway/cycleway": { "name": "Cykelväg", "terms": "cykelväg, cykelled, gc-väg, gång- och cykelväg, cykel" @@ -3530,9 +3745,13 @@ "name": "Stig", "terms": "Stig, gång, led, spår, gångväg, vandringsled, vandra, vandring, promenad, löparbana, motionsspår" }, - "highway/pedestrian": { + "highway/pedestrian_area": { + "name": "Gångfartsområde", + "terms": "Gångfartsområde, gångfart, centrum, plaza, torg, gångväg, gångområde, gågata, gårdsgata" + }, + "highway/pedestrian_line": { "name": "Gågata", - "terms": "Gågata, gångbana, gående, fotgängare, gånggata, affärsgata, shoppinggata" + "terms": "Gågata, centrum, plaza, torg, gångväg, gångområde, gång, promenad, gångbana, gående, fotgängare, affärsgata, shoppinggata" }, "highway/primary": { "name": "Primär väg", @@ -3710,6 +3929,10 @@ "name": "Avrinningsområde", "terms": "avrinning, avrinningsområde, bassäng, infiltration, infiltrering, dagvatten, dagvattenbassäng" }, + "landuse/brownfield": { + "name": "Övergivet industriområde (Brownfield)", + "terms": "Industriområde, övergivet, rivet, rivningstomt, förorenat, industri, ödetomt, byggtomt, Brownfield" + }, "landuse/cemetery": { "name": "Gravfällt", "terms": "Kyrkogård, begravningsplats, gravfält, griftegård, grav" @@ -3749,6 +3972,10 @@ "name": "Gräs", "terms": "Gräs, klippt gräs, refug, rondell, mittremsa" }, + "landuse/greenfield": { + "name": "Planerad byggnation", + "terms": "Greenfield, planerad byggnation, framtid, urbanisering" + }, "landuse/harbour": { "name": "Hamn", "terms": "Hamn, kaj, marin, båt, båtplats, båtterminal" @@ -3757,6 +3984,14 @@ "name": "Industriområde", "terms": "Industriområde, fabriksområde, fabriksdistrikt, industricentrum" }, + "landuse/industrial/scrap_yard": { + "name": "Skrotupplag", + "terms": "Bilskrot, skrot, bil, fordon, metall, bärgning, vrak, bildemontering, metallavfall, metallskräp, metallskrot, skrotupplag, skrotningsanläggning, skräp, metallåtervinning" + }, + "landuse/industrial/slaughterhouse": { + "name": "Slaktare", + "terms": "Slaktare, slakteri, slakthus, slakt, styckning, styckare, kött, chark, styckningsanläggning, nötkött, slaktare, kalv, kyckling, ko, gris, fläsk, fjäderfän" + }, "landuse/landfill": { "name": "Soptipp", "terms": "Soptipp, återvinningscentral, avskrädeshög, avfallsanläggning, tipp" @@ -3833,6 +4068,10 @@ "name": "Rekreationsområde", "terms": "Park, parkområde, rekreationsområde, friluftsområde, trädgård, grönområde, parkanläggning" }, + "landuse/religious": { + "name": "Religiöst område", + "terms": "Religiöst område, religiös, religion, tillbedjan, kyrka, moské, synagoga, kyrkogård, religiös anläggning, tempelområde, tempel, böneplats, andligt område" + }, "landuse/residential": { "name": "Bostadsområde", "terms": "Bostadsområde, villaområde, lägenhetsområde, getto, miljonområde, förort, " @@ -3889,6 +4128,43 @@ "name": "Utomhusgym", "terms": "Utomhusgym, utegym, gym, fitness, träning" }, + "leisure/fitness_station/balance_beam": { + "name": "Balansbom (träning)", + "terms": "Balansbom, balans, träning, fitness, gym, träningsspår" + }, + "leisure/fitness_station/box": { + "name": "Träningsplattform", + "terms": "låda, hoppövning, plattform, hopp, träning, fitness, gym, träningsbana" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Räck (träning)", + "terms": "räck, bar, träning, fitness, gym, pullup, träningsbana" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Armgång" + }, + "leisure/fitness_station/hyperextension": { + "name": "Ryggsträckare" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Barrpress", + "terms": "Dips, Barrpress, barr, motion, fitness, gym" + }, + "leisure/fitness_station/push-up": { + "name": "Armhävningsstation" + }, + "leisure/fitness_station/rings": { + "name": "Ringar" + }, + "leisure/fitness_station/sign": { + "name": "Instruktionsskylt" + }, + "leisure/fitness_station/sit-up": { + "name": "Situps-station" + }, + "leisure/fitness_station/stairs": { + "name": "Träningstrappa" + }, "leisure/garden": { "name": "Trädgård", "terms": "Trädgård, park, plantering, örtgård, odlingslott, botanisk trädgård, botanisk, botanik, zoologisk trädgård" @@ -3897,6 +4173,10 @@ "name": "Golfbana", "terms": "Golfbana, golf, golfanläggning, golfcenter" }, + "leisure/hackerspace": { + "name": "Hackerspace", + "terms": "hackerspace, hackare, hackers, lan, makerspace, hacklab, projekt" + }, "leisure/horse_riding": { "name": "Ridskola", "terms": "Ridskola, häst, hästridning, ridning, rida, stall, ryttare, häst*, ridklubb, ridhus, " @@ -3945,6 +4225,10 @@ "name": "Beachvolleyplan", "terms": "beachvolleyplan, beachplan, beachvolley, beachhandboll, beachfotboll, Beachvolleyboll, strandvolleyboll, volleyboll, Beachhall, Beachvolleyhall" }, + "leisure/pitch/boules": { + "name": "Boule/Bocce-plan", + "terms": "Boule, Bocce, Boule, pétanque, lyonnaise" + }, "leisure/pitch/bowls": { "name": "Bowlsplan", "terms": "Bowls, Shortmat" @@ -3997,6 +4281,10 @@ "name": "Kapplöpningsbana", "terms": "Kapplöpningsbana, löpbana, motionsspår, Löparbana " }, + "leisure/sauna": { + "name": "Bastu", + "terms": "Bastu, sauna, badstuga, kölna" + }, "leisure/slipway": { "name": "Stapelbädd", "terms": "Stapelbädd, Sjösättningsplats, staplar, varv, docka, fartygsdocka, torrdocka, båtramp, sjösättning, båtramp" @@ -4049,6 +4337,10 @@ "name": "Skorsten", "terms": "skorsten, rökgång" }, + "man_made/crane": { + "name": "Kran", + "terms": "Kran, lyftkran, vinsch, travers, telfer" + }, "man_made/cutline": { "name": "Snittlinje i skog", "terms": "Snittlinje, skiljelinje, rågång, gränslinje, gräns, brandgata, skogssektion, skidspår, pipeline, rörgata, pipelinegata, jaktgata, skogsområde, domän" @@ -4277,16 +4569,27 @@ "terms": "Kontor, tjänster, tjänsteman, tjänstemän, byrå, expedition" }, "office/accountant": { - "name": "Revisor", - "terms": "Revisor, revision, räkenskapsgranskare, granskningsman, kontrollant" + "name": "Bokhållare", + "terms": "bokhållare, Redovisningsekonom, bokföring, kontorist, räkenskap, tjänsteman" }, "office/administrative": { "name": "Lokal myndighet", "terms": "Lokal myndighet, myndighet, kommun, kommunkontor, kommunbyggnad" }, + "office/adoption_agency": { + "name": "Adoptionsbyrå" + }, + "office/advertising_agency": { + "name": "Reklambyrå" + }, "office/architect": { - "name": "Arkitekt", - "terms": "Arkitekt, byggnadskonstnär, byggnadskonst, ritningar" + "name": "Arkitektbyrå" + }, + "office/association": { + "name": "Frivilligorganisation" + }, + "office/charity": { + "name": "Välgörenhetsorganisation" }, "office/company": { "name": "Företagskontor", @@ -4304,6 +4607,10 @@ "name": "Arbetsförmedling", "terms": "Arbetsförmedling, arbetsförmedlingen, arbetslös, arbetssökande, förmedling, jobb" }, + "office/energy_supplier": { + "name": "Energibolag", + "terms": "Energibolag, Elbolag, el, ström, energi, gas" + }, "office/estate_agent": { "name": "Mäklare/bostadsförmedling", "terms": "Bostadsförmedling, fastighetsförmedling, husförmedling, mäklare, egendom, mark, fastighet, fastighetsmäklare, bostadsuthyrning, fastighetsuthyrning, kontorsuthyrning" @@ -4312,6 +4619,12 @@ "name": "Bankkontor", "terms": "Bankkontor, finanskontor, ekonomi, finans, bank, ekonomisk" }, + "office/forestry": { + "name": "Skogsbolag" + }, + "office/foundation": { + "name": "Stiftelse" + }, "office/government": { "name": "Myndighet", "terms": "Myndighet, myndighetskontor, statlig myndighet" @@ -4320,13 +4633,19 @@ "name": "Registreringsbyrå", "terms": "Registreringsbyrå, borgerlig vigsel, stadshus, registrerade enhet, inskrivningskontor, registreringskontor, Folkbokföring, Skattemyndigheten, mantalslängder" }, + "office/government/tax": { + "name": "Skattekontor" + }, + "office/guide": { + "name": "Guidekontor", + "terms": "Guidekontor, Rundtur, Dykguide, Fjällguide, Turistguide, guide" + }, "office/insurance": { "name": "Försäkringskontor", "terms": "Försäkringskontor, försäkringar, försäkringsförmedling" }, "office/it": { - "name": "IT-kontor", - "terms": "IT-kontor, datorföretag, dataföretag, IT-företag, informationsteknologi, dotcomföretag, IT-konsult, datakonsult, datorkonsult, helpdesk" + "name": "IT-kontor" }, "office/lawyer": { "name": "Advokatkontor", @@ -4336,14 +4655,19 @@ "name": "Notariekontor", "terms": "Notariekontor, Notarie, Notarius, Notarius publicus, signatur, fullmakt, namnteckning, påskrift, underskrift, bevittna, testamente, arv, handlingar, kontrakt, avtal, egendom, dödsbo, värdehandlningar" }, + "office/moving_company": { + "name": "Flyttfirma" + }, "office/newspaper": { - "name": "Tidningsredaktion", - "terms": "Tidningsredaktion, tidning, nyhetsredaktion, redaktion, tidningslokal, utgivare, tidskrift, magasin" + "name": "Tidningsredaktion" }, "office/ngo": { "name": "Icke-statlig organisation", "terms": "Icke-statlig organisation, organisation, hjälporganisation, fackförening, ideell förening, ideell, förening, icke-kommersiell, frivilligorganisation, frivillig, intresseorganisation" }, + "office/notary": { + "name": "Notarie" + }, "office/physician": { "name": "Läkare" }, @@ -4351,21 +4675,36 @@ "name": "Politiskt parti", "terms": "Politiskt parti, politik, parti" }, + "office/private_investigator": { + "name": "Privatdetektiv" + }, + "office/quango": { + "name": "Kvasiautonom icke-statlig organisation", + "terms": "Quango, Kvasiautonom, icke-statlig, organisation, kvasi" + }, "office/research": { "name": "Forskning och utveckling", "terms": "Forskning och utveckling, forskning, utveckling, vetenskapligt studium, vetenskapligt arbete, undersökning, efterforskning, research" }, + "office/surveyor": { + "name": "Lantmätare" + }, + "office/tax_advisor": { + "name": "Skatterådgivning" + }, "office/telecommunication": { "name": "Telekom", "terms": "Telekom, telefoni, telefoner, telefon, internet, internetcafé, surfning, surfcafé mobil, mobiltelefon, mobiltelefoni" }, "office/therapist": { - "name": "Terapeut", - "terms": "Terapeut, behandling, behandlare, psykolog, psykoterapeut, psykologi, terapi, Arbetsterapi, arbetsterapeut, Fysioterapi,sjukgymnast, logoped, Språkterapi, Talterapi, Röstterapi, Kemoterapi, cellgiftsbehandling, Radioterapi, Farmakoterapi, Samtalsterapi, Psykoterapi, Kognitiv beteendeterapi, beteendeterapi, kbt, Kognitiv terapi, Beteendeterapi, Psykoanalys, Sexterapi, Familjeterapi" + "name": "Terapeut" }, "office/travel_agent": { "name": "Resebyrå " }, + "office/water_utility": { + "name": "Vattenleverantör" + }, "piste": { "name": "Pist/skidspår", "terms": "Pist, skidspår, skidbacke, slalombacke, skidbana, utförsåkning, längdskidåkning, längdskidspår, skidor, skida, pulka, snowboard, utförsåkning, skoter" @@ -4388,6 +4727,9 @@ "name": "Ö", "terms": "ö, holme, skär, kobbe, klippa, rev, atoll, skärgård, rev" }, + "place/islet": { + "name": "Holme" + }, "place/isolated_dwelling": { "name": "Isolerad boplats", "terms": "Isolerad boplats, boplats, bosättning" @@ -4400,6 +4742,10 @@ "name": "Kvarter", "terms": "Kvarter, närområde, bostadsområde, stadsdel, område" }, + "place/plot": { + "name": "Tomt", + "terms": "tomt, lott, trädgård, hustomt, privat, mark, skifte" + }, "place/quarter": { "name": "Kvarter / Under-Borough", "terms": "Kvarter, Under-Borough, stadsdel, område, grannskap," @@ -4420,6 +4766,52 @@ "name": "Mindre samhälle", "terms": "tätort, ort" }, + "playground/balance_beam": { + "name": "Balansbom (lekplats)", + "terms": "balansbom, balans, bom" + }, + "playground/basket_spinner": { + "name": "Korgkarusell" + }, + "playground/basket_swing": { + "name": "Korggunga" + }, + "playground/climbing_frame": { + "name": "Klätterställning" + }, + "playground/cushion": { + "name": "Hoppkudde" + }, + "playground/horizontal_bar": { + "name": "Räck (lekplats)", + "terms": "bar, räck, lekplats" + }, + "playground/rocker": { + "name": "Fjädergunga", + "terms": "Gungdjur,Fjädergunga" + }, + "playground/roundabout": { + "name": "Karusell" + }, + "playground/sandpit": { + "name": "Sandlåda" + }, + "playground/seesaw": { + "name": "Gungbräda" + }, + "playground/slide": { + "name": "Rutschkana" + }, + "playground/structure": { + "name": "Lekslott" + }, + "playground/swing": { + "name": "Gungställning", + "terms": "Gunga,Gungställning" + }, + "playground/zipwire": { + "name": "Linbana" + }, "point": { "name": "Punkt", "terms": "Punkt, fläck, läge, ställe, plats" @@ -4462,6 +4854,10 @@ "name": "Fördelningsstation", "terms": "Transformator, elomvandling, elskåp, fördelningsstation, stadsnätstation, elfördelning" }, + "power/switch": { + "name": "Frånskiljare", + "terms": "Strömbrytare,Frånskiljare" + }, "power/tower": { "name": "Högspänningsmast", "terms": "Högspänningsmast, kraftledningsstolpe, kraftledningsmast, mast" @@ -5002,6 +5398,10 @@ "name": "Biljettförsäljning", "terms": "Biljettförsäljning, biljetter, biljettkassa, biljettsäljare, biljettkontor, biljettlucka, biljettåterförsäljare" }, + "shop/tiles": { + "name": "Kakelbutik", + "terms": "Kakelbutik, Klinker, kakel, plattor, plattsättare, kakelplatta" + }, "shop/tobacco": { "name": "Tobaksbutik", "terms": "Tobaksbutik, tobak, rökning, pipa, pipor, snus, cigaretter, cigarett, cigarr, cigarrer, röktillbehör" @@ -5010,6 +5410,9 @@ "name": "Leksaksaffär", "terms": "Leksaksaffär, leksaker, barnsaker" }, + "shop/trade": { + "name": "Proffshandel" + }, "shop/travel_agency": { "name": "Resebyrå", "terms": "Resebyrå, reseagent, biljettförsäljning, charter, charterflyg, charterresa " @@ -5090,8 +5493,7 @@ "terms": "Ställplats, campingplats, camping, husvagnscamping, husbilscamping, fricamping" }, "tourism/chalet": { - "name": "Campingstuga", - "terms": "Campingstuga, stuga, sommarstuga" + "name": "Stuga" }, "tourism/gallery": { "name": "Konstgalleri", @@ -5149,6 +5551,9 @@ "name": "Utsiktspunkt", "terms": "Utsiktsplats, utsikt, vy" }, + "tourism/wilderness_hut": { + "name": "Stuga (för vandrare o.d.)" + }, "tourism/zoo": { "name": "Zoo", "terms": "Zoo, zoologisk trädgård, djurpark" @@ -5189,6 +5594,9 @@ "name": "Bullerräfflor", "terms": "Bullerräfflor, Pennsylvaniaräfflor" }, + "traffic_calming/table": { + "name": "Fartgupp (långt)" + }, "type/boundary": { "name": "Gräns", "terms": "Gräns, gränslinje, administrativ gräns" @@ -5292,6 +5700,9 @@ "name": "Plats", "terms": "Plats, ställe, läge, anläggning" }, + "type/waterway": { + "name": "Vattendrag" + }, "vertex": { "name": "Annat", "terms": "Annat, övrigt" @@ -5343,6 +5754,9 @@ "name": "Bäck", "terms": "vattendrag, bäck, dike, biflöde, flöde, ström, flod, flöde, rännil, biflod" }, + "waterway/stream_intermittent": { + "name": "Tillfälligt vattendrag" + }, "waterway/water_point": { "name": "Dricksvatten för båt", "terms": "Dricksvatten för båt, Dricksvatten, vattenpåfyllning, vattentank" @@ -5364,21 +5778,35 @@ }, "DigitalGlobe-Premium": { "attribution": { - "text": "Villkor & feedback" + "text": "Villkor & återkoppling" }, "description": "Premium DigitalGlobe-satellitfoton.", "name": "DigitalGlobe Premium-bilder" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Villkor & återkoppling" + }, + "description": "Gränser för flygfoto och fotograferingsdatum. Etiketter visas vid zoomnivå 14 och upp.", + "name": "DigitalGlobe Premium flygfotoålder" + }, "DigitalGlobe-Standard": { "attribution": { - "text": "Villkor & feedback" + "text": "Villkor & återkoppling" }, "description": "Standard DigitalGlobe-satellitfoton.", "name": "DigitalGlobe Standard-bilder" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Villkor & återkoppling" + }, + "description": "Gränser för flygfoto och fotograferingsdatum. Etiketter visas vid zoomnivå 14 och upp.", + "name": "DigitalGlobe Standard flygfotoålder" + }, "EsriWorldImagery": { "attribution": { - "text": "Villkor & feedback" + "text": "Villkor & återkoppling" }, "description": "Esri världsflygfoto.", "name": "Esri världsflygfoto" @@ -5392,7 +5820,7 @@ }, "Mapbox": { "attribution": { - "text": "Villkor & feedback" + "text": "Villkor & återkoppling" }, "description": "Satellit- eller flygfoton.", "name": "Mapbox satellit" @@ -5439,6 +5867,17 @@ }, "name": "OSM Inspector: Taggning" }, + "US-TIGER-Roads-2012": { + "name": "TIGER Roads 2012" + }, + "US-TIGER-Roads-2014": { + "description": "Vid zoomnivå 16+, fritt tillgänglig kartdata (public domain) från US Census. Vid lägre zoomnivåer, enbart ändringar sedan 2006 minus ändringar redan införlivats i OpenStreetMap.", + "name": "TIGER Roads 2014" + }, + "US-TIGER-Roads-2017": { + "description": "Gul = Fritt tillgänglig kartdata (public domain) från US Census. Röd = Data ej hittad i OpenStreetMap", + "name": "TIGER Roads 2017" + }, "Waymarked_Trails-Cycling": { "attribution": { "text": "© Sarah Hoffmann, CC by-SA 3.0, kartdata OpenStreetMaps bidragsgivare, ODbL 1.0" @@ -5491,7 +5930,7 @@ }, "mapbox_locator_overlay": { "attribution": { - "text": "Villkor & feedback" + "text": "Villkor & återkoppling" }, "description": "Visa de viktigaste objekten för att hjälpa dig att orientera dig. ", "name": "Bildlager för lokalisering" diff --git a/dist/locales/ta.json b/dist/locales/ta.json index d70293c71..d7ceada3b 100644 --- a/dist/locales/ta.json +++ b/dist/locales/ta.json @@ -219,16 +219,9 @@ "confirm": { "cancel": "ரத்து" }, - "splash": { - "start": "இப்போது திருத்து" - }, "tag_reference": { "description": "விளக்கம்" }, - "zoom": { - "in": "பெரிதாக்கு", - "out": "சிறிதாக்கு" - }, "help": { "title": "உதவி" }, @@ -1254,12 +1247,6 @@ "office": { "name": "அலுவலகம்" }, - "office/accountant": { - "name": "கணக்காளர்" - }, - "office/newspaper": { - "name": "செய்தித்தாள்" - }, "place": { "name": "இடம்" }, diff --git a/dist/locales/te.json b/dist/locales/te.json index 9c32a68ff..c86f360af 100644 --- a/dist/locales/te.json +++ b/dist/locales/te.json @@ -187,7 +187,6 @@ "localized_translation_language": "భాషను ఎంచుకోండి", "localized_translation_name": "పేరు" }, - "zoom_in_edit": "మార్చడానికి దగ్గరగా వీక్షించు", "logout": "నిష్క్రమించు", "loading_auth": "ఓపెన్‌స్ట్రీట్‌మ్యాపుకి అనుసంధానిస్తున్నాం…", "help_translate": "అనువాదనకు సహకరించండి", @@ -314,16 +313,11 @@ "cancel": "రద్దుచేయి" }, "splash": { - "walkthrough": "దర్శన మొదలుపెట్టు", - "start": "ఇప్పుడే సవరించండి" + "walkthrough": "దర్శన మొదలుపెట్టు" }, "tag_reference": { "description": "వివరణ" }, - "zoom": { - "in": "దగ్గరగా వీక్షించు", - "out": "దూరంగా వీక్షించు" - }, "help": { "title": "సహాయం" }, diff --git a/dist/locales/th.json b/dist/locales/th.json index 94ddad6e2..98fe5f105 100644 --- a/dist/locales/th.json +++ b/dist/locales/th.json @@ -135,10 +135,6 @@ "description": "สิ่งก่อสร้าง" } }, - "zoom": { - "in": "ขยาย", - "out": "ย่อ" - }, "help": { "title": "ช่วยเหลือ" }, diff --git a/dist/locales/tl.json b/dist/locales/tl.json index ff15f727f..c53dfdfa7 100644 --- a/dist/locales/tl.json +++ b/dist/locales/tl.json @@ -286,7 +286,6 @@ "localized_translation_language": "Pumili ng wika", "localized_translation_name": "Pangalan" }, - "zoom_in_edit": "Mag-zoom-in para makapag-edit", "login": "mag-login", "logout": "Mag-logout", "loading_auth": "Kumokonekta sa OpenStreetMap ...", @@ -477,8 +476,7 @@ "splash": { "welcome": "Maligayang pagdating sa iD OpenStreetMap editor", "text": "Ang iD ay isang simple ngunit magandang editor para sa pag-edit ng libreng mapa ng buong mundo. Ito ay bersyon {version}. Para sa karagdagang impormasyon tingnan ang {website} at i-ulat ang mga bugs sa {github}.", - "walkthrough": "Simulan ang \"Walkthrough\"", - "start": "Simulan ang pag-edit" + "walkthrough": "Simulan ang \"Walkthrough\"" }, "source_switch": { "live": "live", @@ -501,10 +499,6 @@ "tag_suggests_area": "Ang tag na {tag} ay kalimitang para sa mga area o poligon sublait ito ay nasa linya lamang.", "deprecated_tags": "Hindi na ginagamit na \"tag\": {tags}" }, - "zoom": { - "in": "i-zoom in", - "out": "I-zoom out" - }, "cannot_zoom": "Hindi na pwedeng mag-zoom out sa kasalukuyang \"mode\".", "full_screen": "I-fullscreen", "help": { diff --git a/dist/locales/tr.json b/dist/locales/tr.json index 9c5dcfbd4..2f2db3b6a 100644 --- a/dist/locales/tr.json +++ b/dist/locales/tr.json @@ -310,7 +310,6 @@ "localized_translation_language": "Dil seç", "localized_translation_name": "İsim" }, - "zoom_in_edit": "Düzenlemek için görüntüyü yakınlaştır.", "login": "giriş yap", "logout": "çıkış yap", "loading_auth": "OpenStreetMap'e bağlanıyor...", @@ -346,6 +345,24 @@ "list": "{users} tarafından yapılmış değişiklikler", "truncated_list": "{users} ve {count} başka kişi tarafından yapılmış değişiklikler" }, + "info_panels": { + "background": { + "zoom": "Yakınlaştırma", + "source": "Kaynak", + "description": "Açıklama", + "resolution": "Çözüm", + "accuracy": "Doğruluk", + "unknown": "Bilinmeyen" + }, + "history": { + "version": "Versiyon", + "changeset": "Değişiklik Kümesi" + }, + "measurement": { + "title": "Ölçüm", + "length": "Uzunluk" + } + }, "geometry": { "point": "nokta", "vertex": "köşe", @@ -552,8 +569,7 @@ "splash": { "welcome": "OpenStreetMap Editörü iD'ye Hoşgeldin", "text": "iD, dünyanın en iyi ve bedava haritasına katkıda bulunmak için, kullanılması kolay ve güçlü bir araç. Bu sürüm {version}. Daha çok bilgi için {website} sayfasına git ve hataları {github} aracılığıyla bildir.", - "walkthrough": "Eğitime Başla", - "start": "Şimdi Düzenle" + "walkthrough": "Eğitime Başla" }, "source_switch": { "live": "canlı", @@ -583,10 +599,6 @@ "tag_suggests_area": "{tag} etiketi buranın alan olmasını ima ediyor, ama burası alan değil.", "deprecated_tags": "Kullanımdan kaldırılmış etiketler: {tags}" }, - "zoom": { - "in": "Yaklaş", - "out": "Uzaklaş" - }, "cannot_zoom": "Bu modda daha fazla uzaklaşılamaz.", "full_screen": "Tam Ekran", "gpx": { @@ -1206,6 +1218,9 @@ "clockwise": "Saat Yönünde" } }, + "clothes": { + "label": "Çamaşırlar" + }, "club": { "label": "Cins" }, @@ -2012,6 +2027,11 @@ }, "placeholder": "Bilinmiyor" }, + "structure_waterway": { + "options": { + "tunnel": "Tünel" + } + }, "studio": { "label": "Tür" }, @@ -2601,8 +2621,7 @@ "terms": "Okul, Okul Bahçesi" }, "amenity/scrapyard": { - "name": "Hurdalık", - "terms": "Hurdalık, Hurda Toplama Yeri" + "name": "Hurdalık" }, "amenity/shelter": { "name": "Barınak", @@ -3147,10 +3166,6 @@ "name": "İskeleci", "terms": "İskeleci, Yapı Kurma Ustası" }, - "craft/sculpter": { - "name": "Heykeltraş", - "terms": "Heykeltraş" - }, "craft/shoemaker": { "name": "Ayakkabıcı", "terms": "Ayakkabıcı" @@ -3159,10 +3174,6 @@ "name": "Duvarcı", "terms": "Duvarcı" }, - "craft/sweep": { - "name": "Baca Temizleyicisi", - "terms": "Baca Temizleyicisi" - }, "craft/tailor": { "name": "Terzi" }, @@ -3363,10 +3374,6 @@ "name": "Patika", "terms": "Patika, Yol" }, - "highway/pedestrian": { - "name": "Yaya Yolu", - "terms": "Yaya Yolu, Çarşı" - }, "highway/primary": { "name": "Anayol", "terms": "Anayol" @@ -4097,18 +4104,10 @@ "name": "Ofis", "terms": "Ofis, Büro" }, - "office/accountant": { - "name": "Muhasebeci", - "terms": "Muhasebeci" - }, "office/administrative": { "name": "İdari Ofis", "terms": "İdari Ofis" }, - "office/architect": { - "name": "Mimar", - "terms": "Mimar" - }, "office/company": { "name": "Şirket", "terms": "Şirket" @@ -4145,10 +4144,6 @@ "name": "Sigorta Acentesi", "terms": "Sigorta Acentesi" }, - "office/it": { - "name": "Bilgi Teknolojileri Ofisi", - "terms": "Bilgi Teknolojileri Ofisi" - }, "office/lawyer": { "name": "Hukuk Bürosu", "terms": "Hukuk Bürosu" @@ -4157,10 +4152,6 @@ "name": "Noter", "terms": "Noter" }, - "office/newspaper": { - "name": "Gazete", - "terms": "Gazete" - }, "office/ngo": { "name": "Sivil Toplum Örgütü", "terms": "Sivil Toplum Örgütü" @@ -4180,10 +4171,6 @@ "name": "Haberleşme Bürosu", "terms": "Haberleşme Bürosu, Telekomünikasyon Bürosu, Telekom Bürosu" }, - "office/therapist": { - "name": "Terapist", - "terms": "Terapist" - }, "office/travel_agent": { "name": "Seyahat Acentesi" }, @@ -4878,10 +4865,6 @@ "name": "Karavan Parkı", "terms": "Karavan Parkı" }, - "tourism/chalet": { - "name": "Tatil Evi", - "terms": "Tatil Evi, Yayla Evi, Ahşap Ev, Dağ Evi, Küçük Köşk" - }, "tourism/gallery": { "name": "Sanat Galerisi", "terms": "Sanat Galerisi" @@ -5197,22 +5180,26 @@ "OSM_Inspector-Addresses": { "attribution": { "text": "© Geofabrik GmbH, OpenStreetMap destekçileri, CC-BY-SA" - } + }, + "name": "OSM Müfettişi: Adresler" }, "OSM_Inspector-Geometry": { "attribution": { "text": "© Geofabrik GmbH, OpenStreetMap destekçileri, CC-BY-SA" - } + }, + "name": "OSM Müfettişi: Geometri" }, "OSM_Inspector-Highways": { "attribution": { "text": "© Geofabrik GmbH, OpenStreetMap destekçileri, CC-BY-SA" - } + }, + "name": "OSM Müfettişi: Karayolları" }, "OSM_Inspector-Multipolygon": { "attribution": { "text": "© Geofabrik GmbH, OpenStreetMap destekçileri, CC-BY-SA" - } + }, + "name": "OSM Müfettiş: Alan" }, "OSM_Inspector-Places": { "attribution": { @@ -5274,6 +5261,12 @@ "mapbox_locator_overlay": { "attribution": { "text": "Şartlar & Geri Bildirim" + }, + "name": "Yer Belirleyici Yerleşimi" + }, + "openpt_map": { + "attribution": { + "text": "© OpenStreetMap katkıda bulunan kullanıcılar, CC-BY-SA" } }, "osm-gps": { diff --git a/dist/locales/uk.json b/dist/locales/uk.json index 0105ba638..18ce19a2b 100644 --- a/dist/locales/uk.json +++ b/dist/locales/uk.json @@ -310,7 +310,7 @@ "localized_translation_language": "Обрати мову", "localized_translation_name": "Назва" }, - "zoom_in_edit": "Необхідно збільшити масштаб, щоб редагувати", + "zoom_in_edit": "Наблизтесь, щоб редагувати", "login": "вхід", "logout": "вийти", "loading_auth": "З’єднання з OpenStreetMap…", @@ -361,7 +361,9 @@ "accuracy": "Точність", "unknown": "Невідомо", "show_tiles": "Показати тайли", - "hide_tiles": "Сховати тайли" + "hide_tiles": "Сховати тайли", + "show_vintage": "Показати Vintage", + "hide_vintage": "Приховати Vintage" }, "history": { "key": "Р", @@ -668,6 +670,13 @@ "mapillary": { "view_on_mapillary": "Переглянути цей знімок на Mapillary" }, + "openstreetcam_images": { + "tooltip": "Знімки з вулиць від OpenStreetCam", + "title": "Фото-шар (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Переглянути цей знімок на OpenStreetCam" + }, "help": { "title": "Довідка", "key": "H", @@ -1217,6 +1226,9 @@ "aeroway": { "label": "Тип" }, + "agrarian": { + "label": " Продукція" + }, "amenity": { "label": "Тип" }, @@ -1285,6 +1297,9 @@ "board_type": { "label": "Тип" }, + "boules": { + "label": "Тип" + }, "boundary": { "label": "Тип" }, @@ -1304,6 +1319,10 @@ "bunker_type": { "label": "Тип" }, + "cables": { + "label": "Дроти", + "placeholder": "1, 2, 3…" + }, "camera/direction": { "label": "Напрямок (в градусах за годинниковою стрілкою)", "placeholder": "45, 90, 180, 270" @@ -1469,6 +1488,10 @@ "description": { "label": "Опис" }, + "devices": { + "label": "Пристрої", + "placeholder": "1, 2, 3…" + }, "diaper": { "label": "Сповивальний стіл" }, @@ -1543,6 +1566,9 @@ "wall": "Настінний" } }, + "fitness_station": { + "label": "Вид спорядження" + }, "fixme": { "label": "Потребує виправлення" }, @@ -1550,6 +1576,9 @@ "label": "Тип", "placeholder": "Типово" }, + "frequency": { + "label": "Робоча частота" + }, "fuel": { "label": "АЗС" }, @@ -1581,6 +1610,9 @@ "generator/type": { "label": "Тип" }, + "government": { + "label": "Тип" + }, "grape_variety": { "label": "Сорти винограду" }, @@ -1908,6 +1940,10 @@ "payment_multi": { "label": "Види розрахунків" }, + "phases": { + "label": "Фази", + "placeholder": "1, 2, 3…" + }, "phone": { "label": "Телефон", "placeholder": "+31 42 123 4567" @@ -1987,6 +2023,9 @@ "railway": { "label": "Тип" }, + "rating": { + "label": "Потужність" + }, "recycling_accepts": { "label": "Приймається" }, @@ -2195,6 +2234,9 @@ "studio": { "label": "Тип" }, + "substance": { + "label": "Речовина" + }, "substation": { "label": "Тип" }, @@ -2221,6 +2263,15 @@ "surveillance/zone": { "label": "Зона спостереження" }, + "switch": { + "label": "Тип", + "options": { + "circuit_breaker": "Автоматичний вимикач", + "disconnector": "Розʼєднувач", + "earthing": "Заземлення", + "mechanical": "Механічний" + } + }, "tactile_paving": { "label": "Тактильне покриття" }, @@ -2293,6 +2344,19 @@ }, "placeholder": "Відмінна, Хороша, Погана,..." }, + "transformer": { + "label": "Тип", + "options": { + "auto": "Автотрансформатор", + "auxiliary": "Допоміжний", + "converter": "Перетворювач", + "distribution": "Розподільчий", + "generator": "Генератор", + "phase_angle_regulator": "Регулятор фазового зсуву", + "traction": "Силовий", + "yes": "Невідомо" + } + }, "trees": { "label": "Дерева" }, @@ -2327,6 +2391,18 @@ "stratovolcano": "Стратовулкан" } }, + "voltage": { + "label": "Напруга" + }, + "voltage/primary": { + "label": "Напруга первинної обмотки" + }, + "voltage/secondary": { + "label": "Напруга вторинної обмотки" + }, + "voltage/tertiary": { + "label": "Напруга третинної обмотки" + }, "wall": { "label": "Тип" }, @@ -2354,6 +2430,16 @@ }, "wikipedia": { "label": "Вікіпедія" + }, + "windings": { + "label": "Обмотки", + "placeholder": "1, 2, 3…" + }, + "windings/configuration": { + "label": "Конфігурація обмоток", + "options": { + "delta": "Трикутник" + } } }, "presets": { @@ -2800,8 +2886,7 @@ "terms": "School grounds, nthbnjhsz irjkb, шкільний двір, школа" }, "amenity/scrapyard": { - "name": "Авторозборка", - "terms": "авто,розборка,б/у,вживані,деталі,свалка" + "name": "Авторозборка" }, "amenity/shelter": { "name": "Притулок", @@ -3370,10 +3455,6 @@ "name": "Такелажник", "terms": "такелаж, вантаж, будівельні ліси" }, - "craft/sculpter": { - "name": "Скульптор", - "terms": "скульптура, ліпити, пам’ятник, " - }, "craft/shoemaker": { "name": "Чоботар", "terms": "взуття, туфлі, башмак, чобіт, швець, сандалі, " @@ -3382,10 +3463,6 @@ "name": "Каменяр", "terms": "каменяр, кладка, камінь, цегла, будівництво" }, - "craft/sweep": { - "name": "Сажотрус", - "terms": "труба, димар, сажа, димохід, дим, трубочист" - }, "craft/tailor": { "name": "Кравець" }, @@ -3654,10 +3731,6 @@ "name": "Стежка", "terms": "Path, cntrf, тропа" }, - "highway/pedestrian": { - "name": "Пішохідна зона", - "terms": "Pedestrian Street,пішохідна,тротуар,люди,вулиця,площа,майдан" - }, "highway/primary": { "name": "Головна дорога", "terms": "Primary Road, ujkjdyf ljhjuf, головна дорога, основна дорога" @@ -3834,6 +3907,10 @@ "name": "Водойма", "terms": "Basin, djljqvf, резервуар, водойма" }, + "landuse/brownfield": { + "name": "Очищене місце під забудову", + "terms": "будівництво,ділянка,пустир,місце,реконструкція" + }, "landuse/cemetery": { "name": "Кладовище", "terms": "Cemetery, rkfljdbot, цвинтар" @@ -3873,6 +3950,10 @@ "name": "Трава", "terms": "Grass, nhfdf, трава" }, + "landuse/greenfield": { + "name": "Ділянка під нову забудову", + "terms": "будівництво,ділянка,місце,план" + }, "landuse/harbour": { "name": "Гавань", "terms": "гавань,затока,порт,притулок" @@ -4073,6 +4154,10 @@ "name": "Пляжний волейбол", "terms": "майданчик,площадка,волейбол,пляж,спорт,дозвілля.гра" }, + "leisure/pitch/boules": { + "name": "Буль/Боке", + "terms": "спорт,майданчик,шар,буль,боке" + }, "leisure/pitch/bowls": { "name": "Боулз", "terms": "болуз,спорт,трава,кулі,джек,кітті,вудз,бола" @@ -4125,6 +4210,10 @@ "name": "Бігова доріжка (бігуни)", "terms": "біг,трек,спрінт,перегони" }, + "leisure/sauna": { + "name": "Сауна", + "terms": "сауна,баня,лазня,чан" + }, "leisure/slipway": { "name": "Стапель", "terms": "Slipway, cnfgtkm, стапель" @@ -4408,18 +4497,10 @@ "name": "Офіс", "terms": "Office, jasc, офіс" }, - "office/accountant": { - "name": "Бухгалтерська або аудиторська фірма", - "terms": "Бухгалтерська або аудиторська фірма, eufknthcmrf fj felbnjhcmrf ashvf, Accountant, аудит, бухгалтер" - }, "office/administrative": { "name": "Канцелярія", "terms": "канцелярія, офіс" }, - "office/architect": { - "name": "Архітектурне або дизайнерське бюро", - "terms": "архітектор, Архітектурне або дизайнерське бюро, fhsntrnehyt fj lbpfqythcmrt hj, Architect" - }, "office/company": { "name": "Офіс компанії", "terms": "фірма, підприємство, контора, бюро, юридична особа, Офіс компанії, jasc rjvgfys, Company Office" @@ -4456,10 +4537,6 @@ "name": "Страхове бюро", "terms": "страхування" }, - "office/it": { - "name": "Офіс ІТ компанії ", - "terms": "інформаційні технології" - }, "office/lawyer": { "name": "Адвокатське бюро", "terms": "адвокатура, адвокат " @@ -4468,10 +4545,6 @@ "name": "Нотаріус", "terms": "нотаріус,контора,офіс" }, - "office/newspaper": { - "name": "Газета", - "terms": "новини, видавництво" - }, "office/ngo": { "name": "Недержавна громадська організація", "terms": "офіс неурядової організації" @@ -4491,10 +4564,6 @@ "name": "Телекомунікаційна компанія", "terms": "Зв’язок, телекомунікації" }, - "office/therapist": { - "name": "Терапевт", - "terms": "терапевт, лікар, доктор" - }, "office/travel_agent": { "name": "Туристична агенція" }, @@ -4532,6 +4601,10 @@ "name": "Околиці", "terms": "місцевість, район " }, + "place/plot": { + "name": "Ділянка", + "terms": "ділянка,дача,участок,город" + }, "place/quarter": { "name": "Мікро-район/Квартал", "terms": "мікрорайон,квартал,оклоток" @@ -4552,10 +4625,6 @@ "name": "Село", "terms": "Village, ctkj, село" }, - "playground/balance_beam": { - "name": "Бревно", - "terms": "бревно,баланс,балка,рівновага,балансування" - }, "playground/basket_spinner": { "name": "Кошик карусель", "terms": "кошик,забавка,гойдалка,крутилка,ігровий,майданчик,діти,дитячий,карусель" @@ -4572,9 +4641,9 @@ "name": "Надувний замок", "terms": "забавка,ігровий,майданчик,діти,дитячий,замок,надувний,горка,пригалка" }, - "playground/horizontal_bar": { - "name": "Турнік", - "terms": "забавка,ігровий,майданчик,діти,дитячий,турнік" + "playground/rocker": { + "name": "Пружинна гойдалка", + "terms": "забавка,ігровий,майданчик,діти,дитячий,гойдалка,конячка,літачок,мотоцикл,пружина" }, "playground/roundabout": { "name": "Карусель", @@ -5281,10 +5350,6 @@ "name": "Караван-парк", "terms": "RV Park, rfhfdfy-gfhr, караван-парк" }, - "tourism/chalet": { - "name": "Шале", - "terms": "Chalet, ifkt, шале" - }, "tourism/gallery": { "name": "Художня галерея", "terms": "музей,мистецтво,виставка,галерея " @@ -5573,6 +5638,13 @@ "description": "Супутникові знімки DigitalGlobe Premium", "name": "Знімки DigitalGlobe Premium" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Умови використання та Відгуки" + }, + "description": "Межі та дати знімків. Підписи з'являються з 14 рівня масштабування. ", + "name": "Знімки DigitalGlobe Premium Vintage" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Умови використання та Відгуки" @@ -5580,6 +5652,13 @@ "description": "Супутникові знімки DigitalGlobe Standard.", "name": "Знімки DigitalGlobe Standard" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Умови використання та Відгуки" + }, + "description": "Межі та дати знімків. Підписи з'являються з 14 рівня масштабування. ", + "name": "Знімки DigitalGlobe Standard Vintage" + }, "EsriWorldImagery": { "attribution": { "text": "Умови використання та Відгуки" diff --git a/dist/locales/vi.json b/dist/locales/vi.json index cc41cfbd4..ded94bebb 100644 --- a/dist/locales/vi.json +++ b/dist/locales/vi.json @@ -310,7 +310,7 @@ "localized_translation_language": "Chọn ngôn ngữ", "localized_translation_name": "Tên" }, - "zoom_in_edit": "Phong to để Sửa đổi", + "zoom_in_edit": "Phong to để sửa đổi", "login": "đăng nhập", "logout": "đăng xuất", "loading_auth": "Đang kết nối với OpenStreetMap…", @@ -361,7 +361,9 @@ "accuracy": "Độ chính xác", "unknown": "Không rõ", "show_tiles": "Hiện các Mảnh", - "hide_tiles": "Ẩn các Mảnh" + "hide_tiles": "Ẩn các Mảnh", + "show_vintage": "Hiện Lúc Chụp", + "hide_vintage": "Ẩn Lúc Chụp" }, "history": { "key": "L", @@ -668,6 +670,13 @@ "mapillary": { "view_on_mapillary": "Xem hình này trên Mapillary" }, + "openstreetcam_images": { + "tooltip": "Hình ảnh từ con đường do OpenStreetCam cung cấp", + "title": "Lớp phủ Hình ảnh (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "Xem hình này trên OpenStreetCam" + }, "help": { "title": "Trợ giúp", "key": "H", @@ -1122,6 +1131,9 @@ "aeroway": { "label": "Loại" }, + "agrarian": { + "label": "Sản phẩm" + }, "amenity": { "label": "Loại" }, @@ -1190,6 +1202,9 @@ "board_type": { "label": "Kiểu" }, + "boules": { + "label": "Kiểu" + }, "boundary": { "label": "Kiểu" }, @@ -1209,6 +1224,10 @@ "bunker_type": { "label": "Kiểu" }, + "cables": { + "label": "Số Cáp", + "placeholder": "1, 2, 3…" + }, "camera/direction": { "label": "Hướng (Độ theo Chiều Kim Đồng hồ)", "placeholder": "45, 90, 180, 270" @@ -1374,6 +1393,10 @@ "description": { "label": "Miêu tả" }, + "devices": { + "label": "Số Thiết bị", + "placeholder": "1, 2, 3…" + }, "diaper": { "label": "Có Bàn Thay Tã" }, @@ -1448,6 +1471,9 @@ "wall": "Tường" } }, + "fitness_station": { + "label": "Loại Thiết bị" + }, "fixme": { "label": "Cần Sửa chữa" }, @@ -1455,6 +1481,9 @@ "label": "Kiểu", "placeholder": "Bình thường" }, + "frequency": { + "label": "Tần số Hoạt động" + }, "fuel": { "label": "Nhiên liệu" }, @@ -1813,6 +1842,10 @@ "payment_multi": { "label": "Phương thức Thanh toán" }, + "phases": { + "label": "Số Pha", + "placeholder": "1, 2, 3…" + }, "phone": { "label": "Số Điện thoại", "placeholder": "+84 1 234 5678" @@ -1892,6 +1925,9 @@ "railway": { "label": "Kiểu" }, + "rating": { + "label": "Công suất" + }, "recycling_accepts": { "label": "Nhận" }, @@ -2100,6 +2136,9 @@ "studio": { "label": "Kiểu" }, + "substance": { + "label": "Chất" + }, "substation": { "label": "Kiểu" }, @@ -2126,6 +2165,15 @@ "surveillance/zone": { "label": "Phạm vi Quan sát" }, + "switch": { + "label": "Kiểu", + "options": { + "circuit_breaker": "Cầu dao", + "disconnector": "Cầu dao Cách ly", + "earthing": "Cầu dao Tiếp địa", + "mechanical": "Cơ học" + } + }, "tactile_paving": { "label": "Gạch dành cho Người Khiếm thị" }, @@ -2177,6 +2225,9 @@ }, "placeholder": "Rất chắc, Khá Chắc, Mềm…" }, + "trade": { + "label": "Nghề" + }, "traffic_calming": { "label": "Kiểu" }, @@ -2195,6 +2246,19 @@ }, "placeholder": "Tốt, Khá, Trung bình…" }, + "transformer": { + "label": "Kiểu", + "options": { + "auto": "Tự biến áp", + "auxiliary": "Phụ tải", + "converter": "Chuyển đổi", + "distribution": "Phân phối", + "generator": "Phát điện", + "phase_angle_regulator": "Dịch pha", + "traction": "Kéo", + "yes": "Không rõ" + } + }, "trees": { "label": "Loại cây" }, @@ -2229,6 +2293,18 @@ "stratovolcano": "Tầng" } }, + "voltage": { + "label": "Điện áp" + }, + "voltage/primary": { + "label": "Điện áp Chính" + }, + "voltage/secondary": { + "label": "Điện áp Thứ 2" + }, + "voltage/tertiary": { + "label": "Điện áp Thứ 3" + }, "wall": { "label": "Kiểu" }, @@ -2256,6 +2332,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Số Cuộn dây", + "placeholder": "1, 2, 3…" + }, + "windings/configuration": { + "label": "Cách Nối Cuộn dây", + "options": { + "delta": "Tam giác", + "leblanc": "Leblanc", + "open": "Hở mạch", + "open-delta": "Tam giác Hở", + "scott": "Scott", + "star": "Sao", + "zigzag": "Chữ chi" + } } }, "presets": { @@ -2702,8 +2794,7 @@ "terms": "sân trường, sân trường học, sân nhà trường, sân trung tâm giáo dục, san truong, san truong hoc, san nha truong, san trung tam giao duc" }, "amenity/scrapyard": { - "name": "Bãi Phế liệu", - "terms": "phế liệu, ve chai, rác rưởi, sắt vụn, mảnh sắt, xe hơi, xe cộ, gạch vụn, phe lieu, ve chai, rac ruoi, sat vun, manh sat, xe hoi, xe co, gach vun" + "name": "Bãi Phế liệu" }, "amenity/shelter": { "name": "Nhà trú", @@ -3272,10 +3363,6 @@ "name": "Xây Giàn", "terms": "người xây giàn, người lắp dựng giàn, nguoi xay gian, nguoi lap dung gian" }, - "craft/sculpter": { - "name": "Điêu khắc", - "terms": "nhà điều khắc, thợ chạm trổ, bức tượng điêu khắc, nha dieu khac, tho cham tro, buc tuong dieu khac" - }, "craft/shoemaker": { "name": "Đóng Giày", "terms": "thợ đóng giày dép, người đóng giày dép, người làm giày dép, thợ sửa giày dép, người sửa giày dép, tho dong giay dep, nguoi dong giay dep, nguoi lam giay dep, tho sua giay dep, nguoi sua giay dep" @@ -3284,10 +3371,6 @@ "name": "Xây Đá", "terms": "thợ xây đá, người xây đá, tho xay da, nguoi xay da" }, - "craft/sweep": { - "name": "Quét Bồ hóng", - "terms": "người quét bồ hóng, người cạo ống khói, thợ quét bồ hóng, thợ quét ống khói, nguoi quet bo hong, nguoi cao ong khoi, tho quet bo hong, tho quet ong khoi" - }, "craft/tailor": { "name": "May Quần áo" }, @@ -3556,10 +3639,6 @@ "name": "Lối", "terms": "đường mòn, duong mon" }, - "highway/pedestrian": { - "name": "Đường Đi bộ", - "terms": "đường đi bộ, đường dành cho người đi bộ, duong di bo, duong danh cho nguoi di bo" - }, "highway/primary": { "name": "Đường Chính", "terms": "đường chính, quốc lộ, ql, xa lộ, xl, đường liên tỉnh, đlt, duong chinh, quoc lo, xa lo, duong lien tinh" @@ -4310,18 +4389,10 @@ "name": "Văn phòng", "terms": "văn phòng, sở, van phong, so" }, - "office/accountant": { - "name": "Tư vấn Kế toán", - "terms": "tư vấn kế toán, kế toán viên, văn phòng kế toán, nhân viên kế toán, dịch vụ khai thuế, văn phòng khai thuế, tài chính, tài chánh, tu van ke toan, ke toan vien, van phong ke toan, nhan vien ke toan, dich vu khai thue, van phong khai thue, tai chinh, tai chanh" - }, "office/administrative": { "name": "Cơ quan Địa phương", "terms": "cơ quan địa phương, hội đồng địa phương, công sở địa phương, sở hành chính địa phương, co quan dia phuong, hoi dong dia phuong, cong so dia phuong, so hanh chinh dia phuong" }, - "office/architect": { - "name": "Kiến trúc sư", - "terms": "kiến trúc sư, kien truc su" - }, "office/company": { "name": "Văn phòng Công ty", "terms": "văn phòng công ty, văn phòng công ti, văn phòng cty, trụ sở công ty, trụ sở công ti, trụ sở cty, van phong cong ty, van phong cong ti, van phong cty, tru so cong ty, tru so cong ti, tru so cty" @@ -4358,10 +4429,6 @@ "name": "Văn phòng Bảo hiểm", "terms": "văn phòng bảo hiểm, van phong bao hiem" }, - "office/it": { - "name": "Văn phòng Tin học", - "terms": "văn phòng tin học, chuyên viên tin học, văn phòng công nghệ thông tin, văn phòng cntt, van phong tin hoc, chuyen vien tin hoc, van phong cong nghe thong tin, van phong cntt" - }, "office/lawyer": { "name": "Văn phòng Luật sư", "terms": "văn phòng luật sư, van phong luat su" @@ -4370,10 +4437,6 @@ "name": "Văn phòng Công chứng", "terms": "văn phòng công chứng, công chứng viên, di chúc, chứng thư, van phong cong chung, cong chung vien, di chuc, chung thu" }, - "office/newspaper": { - "name": "Tờ báo", - "terms": "tờ báo, nhật báo, tuần báo, tạp chí, to bao, nhat bao, tuan bao, tap chi" - }, "office/ngo": { "name": "Tổ chức Phi chính phủ", "terms": "tổ chức phi chính phủ, văn phòng ngo, văn phòng ong, tổ chức phi lợi nhuận, tổ chức bất vụ lợi, quỹ từ thiện, hiệp hội thương mại, to chuc phi chinh phu, van phong ngo, van phong ong, to chuc phi loi nhuan, to chuc bat vu loi, quy tu thien, hiep hoi thuong mai" @@ -4393,10 +4456,6 @@ "name": "Văn phòng Viễn thông", "terms": "văn phòng viễn thông, tiệm viễn thông, cửa hàng viễn thông, trụ sở công ty viễn thông, trụ sở công ti viễn thông, trụ sở cty viễn thông, van phong vien thong, tiem vien thong, cua hang vien thong, tru so cong ty vien thong, tru so cong ti vien thong, tru so cty vien thong" }, - "office/therapist": { - "name": "Nhà trị liệu", - "terms": "nhà trị liệu, bác sĩ chuyên khoa, thầy thuốc chuyên khoa, nha tri lieu, bac si chuyen khoa, thay thuoc chuyen khoa" - }, "office/travel_agent": { "name": "Văn phòng Du lịch" }, @@ -4434,6 +4493,10 @@ "name": "Hàng xóm", "terms": "hàng xóm, khu phố, hang xom, khu pho" }, + "place/plot": { + "name": "Miếng đất", + "terms": "miếng đất, mảnh đất, mieng dat, manh dat" + }, "place/quarter": { "name": "Khu", "terms": "khu, phố, pho" @@ -4454,10 +4517,6 @@ "name": "Làng", "terms": "làng, thôn, ấp, lang, thon, ap" }, - "playground/balance_beam": { - "name": "Cầu thăng bằng", - "terms": "cầu thăng bằng, đòn cân bằng, đòn cân, cau thang bang, don can bang, don can" - }, "playground/basket_spinner": { "name": "Rổ Quay", "terms": "rổ quay, ro quay" @@ -4474,10 +4533,6 @@ "name": "Đệm Hơi", "terms": "đệm hơi, nệm hơi, dem hoi, nem hoi" }, - "playground/horizontal_bar": { - "name": "Xà Đơn", - "terms": "xà đơn, xà cao, ba-rơ-phích, xa don, xa cao, ba-ro-phich" - }, "playground/rocker": { "name": "Thú Nhún Lò xo", "terms": "thú nhún lò xo, thú nhún, thu nhun lo xo, thu nhun" @@ -5092,6 +5147,10 @@ "name": "Đại lý Bán Vé", "terms": "đại lý bán vé, đại lí bán vé, văn phòng bán vé, vé buổi hòa nhạc, vé buổi hoà nhạc, vé xe buýt, vé xe lửa, vé máy bay, vé phi cơ, dai ly ban ve, dai li ban ve, van phong ban ve, ve buoi hoa nhac, ve xe buyt, ve xe lua, ve may bay, ve phi co" }, + "shop/tiles": { + "name": "Tiệm Ngói", + "terms": "tiệm ngói, cửa hàng ngói, tiem ngoi, cua hang ngoi" + }, "shop/tobacco": { "name": "Tiệm Thuốc lá", "terms": "tiệm thuốc lá, cửa hàng thuốc lá, cửa hiệu thuốc lá, tiệm xì gà, cửa hàng xì gà, cửa hiệu xì gà, tiem thuoc la, cua hang thuoc la, cua hieu thuoc la, tiem xi ga, cua hang xi ga, cua hieu xi ga" @@ -5100,6 +5159,10 @@ "name": "Tiệm Đồ chơi", "terms": "tiệm đồ chơi cho trẻ em, chỗ bán đồ chơi, cửa hàng đồ chơi, cửa hiệu đồ chơi, đồ chơi trẻ nhỏ, tiem do choi cho tre em, cho ban do choi, cua hang do choi, cua hieu do choi, do choi tre nho" }, + "shop/trade": { + "name": "Tiệm Công nghiệp", + "terms": "tiệm công nghiệp, cửa hàng công nghiệp, tiệm vật liệu công nghiệp, cửa hàng vật liệu công nghiệp, tiệm máy móc công nghiệp, cửa hàng máy móc công nghiệp, tiem cong nghiẹp, cua hang cong nghiep, tiem vat lieu cong nghiep, cua hang vat lieu cong nghiep, tiem may moc cong nghiep, cua hang may moc cong nghiep" + }, "shop/travel_agency": { "name": "Văn phòng Du lịch", "terms": "văn phòng du lịch, công ty du lịch, công ti du lịch, cty du lịch, đại lý du lịch, đại lí du lịch, du lịch theo nhóm, tour, vé máy bay, van phong du lich, cong ty du lich, cong ti du lich, cty du lich, dai ly du lich, dai li du lich, du lich theo nhom, ve may bay" @@ -5179,10 +5242,6 @@ "name": "Bãi Đậu Nhà lưu động", "terms": "bãi đậu nhà lưu động, sân đậu nhà lưu động, chỗ đậu nhà lưu động, nơi đậu nhà lưu động, khu nhà lưu động, bai dau nha luu dong, san dau nha luu dong, cho dau nha luu dong, noi dau nha luu dong, khu nha luu dong" }, - "tourism/chalet": { - "name": "Nhà nghỉ Riêng biệt", - "terms": "nhà nghỉ riêng biệt, nhà ván gỗ kiểu thụy sĩ, nhà ván gỗ kiểu thụy sỹ, nhà ván gỗ kiểu thuỵ sĩ, nhà ván gỗ kiểu thuỵ sỹ, nhà nghỉ trên núi tuyết, nha nghi rieng biet, nha van go kieu thuy si, nha van go kieu thuy sy, nha nghi tren nui tuyet" - }, "tourism/gallery": { "name": "Phòng tranh", "terms": "phòng tranh, phòng triển lãm nghệ thuật, phòng triển lãm nghệ phẩm, phong tranh, phong trien lam nghe thuat, phong trien lam nghe pham" @@ -5471,6 +5530,13 @@ "description": "Hình ảnh thượng hạng chụp từ vệ tinh DigitalGlobe.", "name": "DigitalGlobe Thượng hạng" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Điều khoản & Phản hồi" + }, + "description": "Biên giới và ngày tháng chụp. Các nhãn xuất hiện tại mức thu phóng 14 trở lên.", + "name": "Lúc chụp DigitalGlobe Thượng hạng" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Điều khoản & Phản hồi" @@ -5478,6 +5544,13 @@ "description": "Hình ảnh tiêu chuẩn chụp từ vệ tinh DigitalGlobe.", "name": "DigitalGlobe Tiêu chuẩn" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Điều khoản & Phản hồi" + }, + "description": "Biên giới và ngày tháng chụp. Các nhãn xuất hiện tại mức thu phóng 14 trở lên.", + "name": "Lúc chụp DigitalGlobe Tiêu chuẩn" + }, "EsriWorldImagery": { "attribution": { "text": "Điều khoản & Phản hồi" diff --git a/dist/locales/yue.json b/dist/locales/yue.json index 36fca9083..841c3aa32 100644 --- a/dist/locales/yue.json +++ b/dist/locales/yue.json @@ -235,7 +235,6 @@ "localized_translation_language": "揀話", "localized_translation_name": "名" }, - "zoom_in_edit": "放大去改", "logout": "簽走", "loading_auth": "駁上去公家街圖⋯⋯", "report_a_bug": "報錯", @@ -468,8 +467,7 @@ "splash": { "welcome": "歡迎來到艾第公家街圖造圖。", "text": "艾第爾件架生,易用之時,亦功用多多,用來投稿修改去,世界至好,任用嘅世界地圖片。現時版本係{version}。想多啲資料,睇下 {website}同埋去{github}報告出錯。", - "walkthrough": "開始逐步解釋", - "start": "卽改" + "walkthrough": "開始逐步解釋" }, "source_switch": { "live": "運行之中", @@ -491,10 +489,6 @@ "tag_suggests_area": "{tag}籤話條綫係範圍,實情佢唔係。", "deprecated_tags": "廢籤:{tags}" }, - "zoom": { - "in": "放大", - "out": "縮細" - }, "cannot_zoom": "今下模式,無得再縮。", "full_screen": "來回全螢幕", "mapillary_images": { @@ -2367,18 +2361,10 @@ "name": "寫字樓", "terms": "Office,寫字樓,辦公室" }, - "office/accountant": { - "name": "會計師樓", - "terms": "Accountant,會計師樓" - }, "office/administrative": { "name": "行政樓", "terms": "Administrative Office,行政樓" }, - "office/architect": { - "name": "則樓", - "terms": "Architect,則師樓,則樓,建築師樓" - }, "office/company": { "name": "公司寫字樓", "terms": "Company Office,公司,公司寫字樓" @@ -2407,18 +2393,10 @@ "name": "保險公司寫字樓", "terms": "Insurance Office,保險公司,保險公司寫字樓" }, - "office/it": { - "name": "電腦資訊寫字樓", - "terms": "IT Office,IT公司,資訊工藝寫字樓,資訊技藝寫字樓,資訊科技寫字樓,電腦公司寫字樓" - }, "office/lawyer": { "name": "律師事務所", "terms": "Law Office,律師事務所" }, - "office/newspaper": { - "name": "報社", - "terms": "Newspaper,報社,新聞社,通訊社" - }, "office/ngo": { "name": "志顠機構寫字樓", "terms": "NGO Office,志顠機構寫字樓,非政府組織" @@ -2438,10 +2416,6 @@ "name": "電話公司寫字樓", "terms": "Telecom Office,電信公司,電話公司寫字樓" }, - "office/therapist": { - "name": "治療師", - "terms": "Therapist,治療師,醫療師" - }, "office/travel_agent": { "name": "旅行社" }, @@ -2798,10 +2772,6 @@ "name": "露營車營地", "terms": "RV Park,房車營地,露營車停車場,露營車營地" }, - "tourism/chalet": { - "name": "木屋", - "terms": "Chalet,木屋" - }, "tourism/guest_house": { "name": "賓館", "terms": "Guest House,賓館" diff --git a/dist/locales/zh-CN.json b/dist/locales/zh-CN.json index 76713bde5..3688e4a84 100644 --- a/dist/locales/zh-CN.json +++ b/dist/locales/zh-CN.json @@ -2,7 +2,7 @@ "zh-CN": { "modes": { "add_area": { - "title": "面", + "title": "区域", "description": "在地图上添加公园、建筑物、湖泊或其他区域。", "tail": "在地图上单击开始绘制面状要素,如公园、湖泊或建筑物。" }, @@ -45,11 +45,11 @@ "key": "A", "title": "继续", "description": "继续绘制这条线。", - "not_eligible": "这里没有线可以在继续。", - "multiple": "多条线可以在此延长。要选定其中一条,按住Shift键并单击以选中它。", + "not_eligible": "无法在此继续绘制线段", + "multiple": "有多条线段可以在此延长。要选定其中一条,按住Shift键并单击以选中它。", "annotation": { "line": "继续绘制线。", - "area": "继续绘制面状要素。" + "area": "继续绘制区域。" } }, "cancel_draw": { @@ -59,18 +59,18 @@ "annotation": "更改关系成员的角色。" }, "change_tags": { - "annotation": "更改标签。" + "annotation": "标签已更改。" }, "circularize": { "title": "环状化", "description": { "line": "环状化该线。", - "area": "环状化该面。" + "area": "将此区域变成圆形。" }, "key": "O", "annotation": { "line": "使线环状化。", - "area": "使面环状化。" + "area": "将区域变成圆形。" }, "not_closed": "它不是首尾相接的线,无法将其环状化。", "too_large": "由于可见部分不足,无法将其环状化。", @@ -80,12 +80,12 @@ "title": "直角化", "description": { "line": "将这条线上的弯角转化成直角。", - "area": "将这个面状要素上的弯角转化成直角。" + "area": "将这个区域上的弯角转化成直角。" }, "key": "S", "annotation": { - "line": "拉直线上角的边。", - "area": "已将面要素的弯角换成直角。" + "line": "已将线段上的弯角换成直角。", + "area": "已将区域的弯角换成直角。" }, "not_squarish": "因为它不是近似方形的,这不能被直角化。", "too_large": "因为可见部分不足,不能变成方形。", @@ -106,12 +106,12 @@ "multiple": "彻底删除这些要素。" }, "annotation": { - "point": "删除点。", - "vertex": "删除路径上的节点。", - "line": "删除线。", - "area": "删除面状要素。", - "relation": "删除关系。", - "multiple": "删除 {n} 个要素。" + "point": "删除了一个点。", + "vertex": "删除了路径上的一个节点。", + "line": "删除了一条线。", + "area": "删除了一个区域。", + "relation": "删除了一个关系。", + "multiple": "删除了 {n} 个要素。" }, "too_large": { "single": "该要素暂不能删除,因为该要素在当前视角可视部分太少。", @@ -131,24 +131,24 @@ } }, "add_member": { - "annotation": "增加关系中的成员。" + "annotation": "关系中增加了一个成员。" }, "delete_member": { - "annotation": "删除关系中的成员。" + "annotation": "从关系中删除了一个成员。" }, "connect": { "annotation": { - "point": "连接路径到点。", - "vertex": "连接路径到另一路径。", - "line": "连接路径到线。", - "area": "连接条线要素到面要素。" + "point": "已连接路径到一个点。", + "vertex": "已连接路径到另一路径。", + "line": "已连接路径到一线段。", + "area": "已连接路径到一区域。" } }, "disconnect": { "title": "断开连接", - "description": "断开这些线/面之间的连接。", + "description": "断开这些线/区域之间的连接。", "key": "D", - "annotation": "断开线/面连接。", + "annotation": "断开线/区域连接。", "not_connected": "没有足够的线/面来断开。", "connected_to_hidden": "无法断开连接,因为其与一隐藏要素相连。", "relation": "无法断开连接,因为其构成关系成员间的连接。" @@ -174,9 +174,9 @@ "annotation": { "point": "移动点。", "vertex": "移动路径中节点。", - "line": "移动线。", - "area": "移动面状要素。", - "multiple": "移动多个要素。" + "line": "移动了一条线。", + "area": "移动了一个区域", + "multiple": "移动了多个要素。" }, "incomplete_relation": { "single": "因该要素未完全下载,所以无法被移动。", @@ -242,7 +242,7 @@ "key": "R", "annotation": { "line": "旋转线。", - "area": "旋转面状要素。", + "area": "旋转了一个区域。", "multiple": "旋转多个要素。" }, "incomplete_relation": { @@ -314,7 +314,7 @@ "login": "登录", "logout": "退出", "loading_auth": "正在连接 OpenStreetMap...", - "report_a_bug": "报告漏洞", + "report_a_bug": "反馈 BUG", "help_translate": "帮助改进翻译", "feature_info": { "hidden_warning": "{count}个隐藏要素", @@ -330,7 +330,7 @@ "title": "上传至 OpenStreetMap", "upload_explanation": "您上传的修改将会在所有使用 OpenStreetMap 数据的地图上可见。", "upload_explanation_with_user": "{user},您上传的修改将会在所有使用 OpenStreetMap 数据的地图上可见。", - "request_review": "我想要让他人检查我的编辑。", + "request_review": "我想要让其他人复核我的编辑。", "save": "上传", "cancel": "取消", "changes": "{count}个变更", @@ -339,14 +339,14 @@ "modified": "已更改", "deleted": "已删除", "created": "已创建", - "about_changeset_comments": "关于修改集合说明", + "about_changeset_comments": "关于编辑变动", "about_changeset_comments_link": "//wiki.openstreetmap.org/wiki/Good_changeset_comments", - "google_warning": "您在该评论中提及 Google : 记住复制 Google Maps 中信息是严格禁止的。", + "google_warning": "您在该评论中提及 Google : 请注意从 Google Maps 中复制信息是被严格禁止的。", "google_warning_link": "http://www.openstreetmap.org/copyright" }, "contributors": { - "list": "{users} 编辑", - "truncated_list": "{users}及另外{count}人编辑" + "list": "由 {users} 编辑", + "truncated_list": "由 {users} 及另外{count}人编辑" }, "info_panels": { "key": "I", @@ -361,7 +361,9 @@ "accuracy": "精度", "unknown": "未知", "show_tiles": "显示瓦片", - "hide_tiles": "隐藏瓦片" + "hide_tiles": "隐藏瓦片", + "show_vintage": "显示影像日期", + "hide_vintage": "隐藏影像日期" }, "history": { "key": "H", @@ -370,7 +372,7 @@ "version": "版本", "last_edit": "最近编辑", "edited_by": "编辑者", - "changeset": "修改集合", + "changeset": "变更集合", "unknown": "未知", "link_text": "在 openstreetmap.org 上的历史记录" }, @@ -399,7 +401,7 @@ "point": "点", "vertex": "顶点", "line": "线", - "area": "面", + "area": "区域", "relation": "关系" }, "geocoder": { @@ -429,7 +431,7 @@ "back_tooltip": "变更要素", "remove": "删除", "search": "搜索", - "multiselect": "选择要素", + "multiselect": "已选择的要素", "unknown": "未知", "incomplete": "<未下载>", "feature_list": "搜索要素", @@ -466,7 +468,7 @@ "custom_button": "编辑自定义背景", "custom_prompt": "输入地图瓦片URL地址。有效的参数有:\n   - {zoom}/{z}, {x}, {y} 作为 Z/X/Y 坐标系\n   - {ty} 作为翻转的 TMS 算法 Y 坐标\n   - {u} 作为四叉树坐标编码\n   - {switch:a,b,c} 作为 DNS 服务器解析的并行连接子域\n\n示例:\n{example}", "fix_misalignment": "调整影像偏移", - "imagery_source_faq": "该影像的来源是?", + "imagery_source_faq": "该影像是从哪里来的呢?", "reset": "重置", "offset": "在下面的灰色区域拖动来调整影像偏移,或输入以米为单位的偏移量。", "minimap": { @@ -486,7 +488,7 @@ "title": "OpenStreetMap 数据" } }, - "fill_area": "填充面状要素", + "fill_area": "填充区域", "map_features": "地图要素", "autohidden": "这些要素已被自动隐藏,因为屏幕中的要素过多。请放大再编辑。", "osmhidden": "由于禁用的 OpenStreetMap 数据图层,这些要素已被自动隐藏。" @@ -501,8 +503,8 @@ "tooltip": "公路、街道等" }, "service_roads": { - "description": "专用道路", - "tooltip": "专用道路、停车场通道、轮迹路等" + "description": "服务性道路", + "tooltip": "服务性道路、停车场通道、赛道等" }, "paths": { "description": "小路", @@ -553,7 +555,7 @@ }, "full": { "description": "全部填充", - "tooltip": "面状要素以全部填充绘制。" + "tooltip": "区域全部填充绘制。" } }, "restore": { @@ -613,7 +615,7 @@ "welcome": "欢迎使用 OpenStreetMap iD 编辑器", "text": "iD 编辑器是一个既易用而又功能强大的工具,以助您编辑世界上最好的自由世界地图。这是 {version} 版本。欲知详情,请浏览 {website} 及在 {github} 报告程序错误。", "walkthrough": "开始演练", - "start": "现在编辑" + "start": "现在就编辑" }, "source_switch": { "live": "实况模式", @@ -637,12 +639,12 @@ "untagged_point_tooltip": "选择该点的要素类型。", "untagged_line": "未标记的线", "untagged_line_tooltip": "选择描述这条线的要素类型。", - "untagged_area": "未标记的面", - "untagged_area_tooltip": "选择描述这个面的要素类型。", + "untagged_area": "未标记的区域", + "untagged_area_tooltip": "选择描述这块区域的要素类型。", "untagged_relation": "未标记的关系", "untagged_relation_tooltip": "选择描述这个关系的要素类型。", "many_deletions": "您正在删除 {n} 个要素。您确定要这么做吗?这些要素将会在任何人所见的 openstreetmap.org 地图上被删除。", - "tag_suggests_area": "标签{tag}表明线应该为面要素,但它不是面", + "tag_suggests_area": "{tag}的标签所建议的线段应为区域,但这个不是一区域", "deprecated_tags": "弃用标签:{tags}" }, "zoom": { @@ -671,14 +673,14 @@ "help": { "title": "帮助", "key": "H", - "help": "#帮助\n\n这是一个免费且可编辑的世界地图 [OpenStreetMap](http://www.openstreetmap.org/)\n的编辑器,你可以用它来增加和更新你所在地区的数据,为全世界将这个开源、开放数据的世界地图变得更好。\n\n你在这张地图上的编辑将会被所有使用 OpenStreetMap 的人看到。\n你需要 [登录](https://www.openstreetmap.org/login) 才能编辑。\n\n本编辑器名为 [iD](http://ideditor.com/) ,是一个 [源码在GitHub上共享](https://github.com/openstreetmap/iD) 的协作项目。\n", - "editing_saving": "# 编辑和保存\n\n本编辑器为在线编辑设计,您正在经由本网站使用它。\n\n### 选择要素\n\n您可以在地图上单击以选中一个要素,如道路或一个兴趣点。\n被选中的要素将被高亮显示,同时加载出显示其详细信息的侧边面板,\n如果您右键点击它,它将会显示可对该要素进行之操作的菜单。\n\n如需同时选中多个要素,您需要先按住 Shift 键。然后请多次点击选择全部的要素,\n或者在地图上画出一个长方形以圈出并选中长方形中所有的点。\n\n### 保存编辑内容\n\n当您做了比如编辑道路、建筑物或地点的更改后,\n这些更改在您将它们保存到服务器之前都只会保存在本地。\n无需担心犯错:您随时可以点击撤销按钮或重做按钮以撤销或重做更改。\n\n请点击“保存”按钮以结束一组编辑内容。例如,如果您刚完成了城镇的一个区域,\n正打算开始下一个区域的工作,这时您有机会重新检查之前完成的工作,\n同时编辑器会自动给出有用的建议。如果您的更改有一些问题,编辑器也会给出警告。\n\n如果一切正常,您可以在保存时写入一小段注释以说明上一阶段的工作内容,\n然后点击“上传”按钮以向\n[OpenStreetMap.org](http://www.openstreetmap.org/) 提交更改。\n在此之后,您的更改将对所有其它用户可见,其它用户也将以此为基础继续改进地图。\n\n如果您一时无法完成编辑内容,您可以关闭编辑器窗口。\n待稍后您返回 (至同一台计算机的同一个浏览器) 时,\n重新打开编辑器将会恢复您的工作进度。\n\n## 使用编辑器\n\n您可以按下 `?` 键来查看键盘快捷键列表。\n", + "help": "#帮助\n\n这是 [OpenStreetMap](http://www.openstreetmap.org/) 的编辑器,OpenStreetMap 是一个免费且可编辑的世界地图。你可以用这个编辑器来增加和更新你所在地区的地图资料,令这个开源和开放数据的世界地图变得更好。\n\n你在这张地图上的编辑将会被所有使用 OpenStreetMap 的人看到。\n你需要 [登录](https://www.openstreetmap.org/login) 才能编辑。\n\n本编辑器名为 [iD](http://ideditor.com/) ,是一个 [源码在GitHub上共享](https://github.com/openstreetmap/iD) 的协作项目。\n", + "editing_saving": "# 编辑和保存\n\n本编辑器为在线编辑设计,您现在正经由本网站使用它。\n\n### 选择要素\n\n您可以在地图上单击以选中一个要素,如道路或一个兴趣点。被选中的要素将被高亮显示,同时开启有其详细信息的侧边面板。如果您右键点击它,将会显示一个菜单,列出可对该要素进行的操作。\n\n如需同时选中多个要素,您首先需要按住 Shift 键,然后要么依次点击选择需要的要素,或者在地图上拖一个长方形以圈出需要选则的要素,长方形中所有的点都会被选中。\n\n### 保存编辑内容\n\n当您做了比如编辑道路、建筑物或地点的更改后,这些更改在您将它们保存到服务器之前都只会保存在本地。无需担心犯错:您随时可以点击撤销按钮或重做按钮以撤销或重做更改。\n\n点击“保存”按钮以结束一组编辑内容,例如,在您刚完成了城镇的一个区域,正打算开始下一个区域的工作时。这时您有机会重新检查之前完成的工作,同时编辑器会自动给出有用的建议。如果您的更改有一些问题,编辑器也会给出警告。\n\n如果一切正常,您可以写入一小段注释来解释你做的变动,接着点击“上传”按钮提交更改到 [OpenStreetMap.org](http://www.openstreetmap.org/)。在此之后,您的更改将被所有其它用户可见,其它用户也会以此为基础继续改进地图。\n\n如果您一时无法完成编辑内容,您可以关闭编辑器窗口。待稍后您返回 (至同一台计算机的同一个浏览器) 时,重新打开编辑器将会恢复您的工作进度。\n\n## 使用编辑器\n\n您可以按下 `?` 键来查看键盘快捷键列表。\n", "roads": "# 道路\n\n您可以利用这个编辑器创建,修复,及删除道路。道路可以有很多种:路径,公路,郊游径,单车径,和更多- 任何经常使用的路段都可制图。\n\n### 选择道路\n\n点击图上的道路以选择该道路。道路的轮廓会以高亮度显示,同时侧边面板会显示有关该道路的信息。如果您右键点击它,将会显示可对该道路进行之操作的菜单。\n\n### 编辑道路\n\n您或会经常注意到,道路并非对齐在背景中显示的卫星图像或GPS轨迹。您可以调整这些道路,让他们位于正确的位置。\n\n首先,点击您想编辑的道路。这会将道路以高亮度显示,并显示沿着这道路的节点,你可以拖曳这些节点到更好的位置。如果您想增加细节,可以为道路添加新的节点,点击两下道路上没有节点的部分,便可在该处増加节点。\n\n如果道路连接到另一条道路,但在地图上并未妥善连接,你可以拖曳道路的其中一个节点到另一条道路上,以连接两条道路。连接好道路,对地图非常重要,特别是对提供驾驶指示的应用程序而言,是必要的。\n\n您也可以右键该道路并点击'移动'工具或按`M`快捷键,来移动整条道路,然后再次点击以完成移动的动作。\n\n### 删除道路\n\n如果一条道路完全不正确- 您看到它在卫星图像上不存在,并最好实地证实它根本不存在- 您可以将道路删除,这会从地图中将之移除。删除物件时务必要小心- 像任何其他的编辑,结果会被大家看见,而卫星图像往往会过时,因此该道路或许只是新建的。\n\n要删除道路,您可以点击它以选中,然后按下 '删除' 快捷键,或者右键点击后再点击垃圾桶图标。\n\n### 绘制新道路\n\n发现某处应有一条道路,但地图上没有?点击编辑器左上方的'线'图标,或按下`2`快速键,以开始绘制线段。\n\n在地图上点击道路的开端,以开始绘制道路。如果道路从一条现有的道路分支出来,应点击两者连接的地方,以开始绘制。\n\n然后点击沿着道路的点,以根据卫星影像或GPS轨迹,正确地绘制道路。如果您绘制的道路如果与另一条道路交汇,请点击相交点以将它们连接起来。当您完成绘制后,可点击两下或按键盘上的'Return' 或'Enter' 键。\n", "gps": "# GPS\n\n户外采集的GPS轨迹是OpenStreetMap的重要数据源之一。本编辑器\n支持本地轨迹——即你的电脑上的.gpx文件。你可以用众多智能手机\n应用或者个人GPS硬件采集这种GPS轨迹。\n\n有关如何使用GPS测量的信息,请参见\n[用智能手机、GPS或纸质图测图](http://learnosm.org/en/mobile-mapping/)。\n\n要使用GPX轨迹制图,将GPX文件拖曳到编辑器上即可。\n如果可以识别,将以亮紫色线条在地图上显示。\n点击右侧“地图数据”菜单可以打开、关闭或者\n缩放到新添加的GPX图层。\n\nGPX轨迹不会被直接上传到OpenStreetMap——最佳的使用方法是\n将其展绘到地图上作为辅助来绘制新增的地图要素,\n或者将其[上传到OpenStreetMap](http://www.openstreetmap.org/trace/create)\n供他人使用。\n", - "imagery": "# 影像\n\n航拍影像是绘制地图的一个重要资源。编辑器右侧「背景设置」菜单里提供了一组飞机航拍、卫星影像及自由编译的来源。\n\n默认情况下编辑器显示的是[必应地图](http://www.bing.com/maps/)的卫星图层,但当您移动或缩放地图到一个新的地理区域会得到新的来源。一些国家,比如美国、法国和丹麦,会在一些区域提供非常高质量的影像。\n\n影像有时会因为影像提供商的错误和地图数据存在偏移。如果您看到许多道路偏离背景,请不要立刻移动它们来匹配背景,您可以点击背景设置界面底部的「修复对齐」来调整影像以使它和已有数据吻合。\n", + "imagery": "# 影像\n\n航拍影像是绘制地图的一个重要资源。编辑器右侧「背景设置」菜单里有一组飞机航拍、卫星影像及自定义的来源可供选择。\n\n默认情况下编辑器显示的是[必应地图](http://www.bing.com/maps/)的卫星图层,但当您移动或缩放地图到一个新的地理区域,可能会有新的图源。一些国家,比如美国、法国和丹麦,会在一些区域提供非常高质量的影像。\n\n有时候由于影像提供商的错误,影像可能会与地图数据存在偏移。如果您看到许多道路偏离背景,请不要立刻移动它们来匹配背景,您可以点击背景设置界面底部的「修复对齐」来调整影像位置,以使它和已有数据吻合。\n", "addresses": "# 地址\n\n地址是地图上的最有用的一些信息。\n\nOpenStreetMap通过沿街位置记录建筑和场所的地址,地址通常表示为街道的一部分。\n\n您可以添加地址信息映射为建筑轮廓的地方以及那些映射为单个点。地址的最佳来源数据是来自于实地调查或个人的知识与任何其他功能,从谷歌地图商业来源的复制是严格禁止的。\n", - "inspector": "# 使用查看器\n\n查看器是页面左侧窗格中供你\n查看所选要素详细信息栏目。\n\n### 选择要素类型\n\n你添加完一个点、线或面之后,要选择它是什么类型,\n比如高速公路还是居民区街道、超市还是咖啡厅。\n查看器会显示一些常见要素类型的按钮,你也可以通过\n搜索框查找其他标签。\n\n点击要素类型按钮右下角的“i”可以深入了解该类型。\n点击类型按钮即可选择该类型。\n\n### 使用表格编辑标签\n\n选择要素类型后,或者某要素本来已有类型时,\n查看器会显示要素的字段详情,比如名称和地\n址。\n\n在已有的字段下方,你可以点击“添加字段”下拉菜单\n来添加其他详情,比如维基百科链接、轮椅通行情况\n等。\n\n在查看器底部,可以点击“附加标签”按钮来给要素添加\n任意其他标签。[Taginfo](http://taginfo.openstreetmap.org/)\n是了解更多常见标签组合的好资源。\n\n你在查看器里所做的变更会自动应用到地图。\n你可以随时点击“撤销”按钮撤销这些变更。\n", - "buildings": "# 建筑物\n\nOpenStreetMap 是世界上最大的建筑物的数据库。您可以建立和改善这个数据库。\n\n### 选择建筑物\n\n您可以点击建筑物的边界,以选择该建筑物。该建筑物将以高亮显示,同时加载出有关建筑物更多资料的侧边面板。如果您右键点击它,它将会显示可对该建筑物进行之操作的菜单。\n\n### 修改建筑物\n\n有时候,建筑物的位置或其标签或许会不正确。\n\n要移动整个建筑物的位置,先选择该建筑物,然后按 'M' 移动快捷键,或者右键点击后再选择 '移动' 工具。移动您的鼠标以移动筑物,在移到正确位置上点击一下。\n\n要更正建筑物的形状,点击并拖曳建筑物轮廓的节点,以移到更佳的位置。\n\n### 绘制新建筑物\n\n为地图添加建筑物的主要问题之一,是OpenStreetMap 可以用轮廓或点的形式,记录建筑物。一般来说,应_尽可能以区域记录建筑物的轮廓_,并以置于建筑轮廓内的点,记录建筑物中的公司、住宅、设施及其他东西。\n\n要开始绘制建筑物,先单击左上方的'区域'按钮,最后则按键盘上的回车键或点击所绘的第一个节点,完成轮廓的绘制。\n\n### 删除建筑物\n\n如果一个建筑物完全不正确- 您看到它在卫星图像上不存在,并最好实地证实它根本不存在- 您可以将建筑物删除,这会从地图中将之移除。删除要素时务必要小心- 像任何其他的编辑一样,结果会公之于众,而卫星图像往往会过时,因此该建筑物或许只是新建的。\n\n要删除建筑物,您可以点击它以选中,然后按下 '删除' 快捷键,或者右键点击后再点击垃圾桶图标。\n", + "inspector": "# 使用查看器\n\n查看器是在页面左侧窗格的栏目,供你查看和编辑所选要素的详细信息。\n\n### 选择要素类型\n\n当添加完一个点、线或区域之后,你可以选择这个要素是什么类型,比如是高速公路还是居民区街道、超市还是咖啡厅。查看器会列出一些常见要素类型,你也可以通过搜索框查找其他类型。\n\n点击要素类型按钮右方的“i”可以显示该类型的介绍。点击类型按钮即可选择该类型。\n\n### 使用表格编辑标签\n\n选择要素类型后,或者某要素本来已有类型时,查看器会显示要素的字段详情,比如名称和地址。\n\n在已有的字段下方,你可以点击“添加字段”下拉菜单来添加其他详情,比如维基百科链接、轮椅通行情况等。\n\n在查看器底部,可以点击“附加标签”按钮来给要素添加任意其他标签。[Taginfo](http://taginfo.openstreetmap.org/) 是相当好用的工具,你可以了解常见的标签组合。\n\n你在查看器里所做的变更会自动应用到地图上。你可以随时点击“撤销”按钮撤销这些变更。\n", + "buildings": "# 建筑物\n\nOpenStreetMap 是世界上最大的建筑物的数据库。您可以建立和改善这个数据库。\n\n### 选择建筑物\n\n您可以点击建筑物的边界选择该建筑物。该建筑物将以高亮显示,同时在侧边面板中加载出此建筑物的更多信息。如果您右键点击它,它将会显示可对该建筑物进行之操作的菜单。\n\n### 修改建筑物\n\n有时候,建筑物的位置或其标签或许会不正确。\n\n要移动整个建筑物的位置,先选择该建筑物,然后按 'M' 移动快捷键,或者右键点击后再选择 '移动' 工具。移动您的鼠标以移动筑物,在移到正确位置上点击一下。\n\n要更正建筑物的形状,点击并拖曳建筑物轮廓的节点,以移到更佳的位置。\n\n### 绘制新建筑物\n\n在 OpenStreetMap 上既可以用形状也可以用点来标记建筑,很多人常常困惑到底应该使用那种方式。一般来说,应_尽可能用区域来标记建筑物的轮廓_,用置于建筑轮廓内的点来标记建筑物中的公司、住宅、设施及其他东西。\n\n要开始绘制建筑物,先单击左上方的'区域'按钮,最后按键盘上的回车键或点击所绘的第一个节点,完成轮廓的绘制。\n\n### 删除建筑物\n\n如果一个建筑物完全不正确:您看到它在卫星图像上不存在,并最好实地证实它根本不存在,您可以将建筑物删除,这会从地图中将之移除。删除要素时务必要小心:像任何其他的编辑一样,结果会公之于众。该建筑物或许是新建的,而卫星图像往往会过时。\n\n要删除建筑物,您可以点击它以选中,然后按下 '删除' 快捷键,或者右键点击后再点击垃圾桶图标。\n", "relations": "# 关系\n\n关系是 OpenStreetMap 中用于组合其它要素的特殊要素类型。比如,两个基本关系类型*路径关系*和*复合多边形*,它们分别用于组合同一条公路或高速公路的不同部分和一个复杂区域(分成多块或像油炸圈饼一样中间有个洞)的多条线条。\n\n关系中包含的要素称为*成员*。在侧边栏的底部,您可以看到成员所属的关系,并点击以选中它。选中某个关系后,您就能看到它的所有成员在侧边栏被全部列出并在地图上被高亮显示。\n\n在大多数时候,iD 会在您编辑的时候自动处理关系。您主要注意的是当您删除道路的某个部分并重绘它时,请确保新的部分还是原来的关系中的一员。\n\n## 编辑关系\n\n如果您想要编辑关系,这里是一些基本技巧。\n\n要向关系中添加要素,选择该要素,点击侧边栏「所有关系」中的「+」按钮,并选择或输入关系的名称。\n\n要创建一个新的关系,选中要作为成员的第一个要素,点击「所有关系」中的「+」按钮,并选择「新建关系...」。\n\n要从一个关系中移除要素,选择要素并点击您要从中移除的关系旁边的垃圾箱按钮。\n\n您可以使用「合并」工具创建有洞的复合多边形。绘制两个区域(内部和外部),按住 Shift 键并点击各个多边形来选中它们,然后按 'C' 快捷键。另一种方法是同时选中它们,右键点击其中一个,然后点击「合并」(+) 按钮。\n" }, "intro": { @@ -824,8 +826,8 @@ "drag": "主地图区域在背景上显示了 OpenStreetMap 数据。{br}您可以在左键点击同时移动鼠标来拖动地图。您也可以使用键盘上的方向键。**拖动地图!**", "zoom": "您可以滚动鼠标、触控板或点击 {plus} / {minus} 按钮来放大或缩小地图。 **缩放地图!**", "features": "我们使用 *要素* 一词来描述在地图上出现的东西。现实世界上的任何东西都可以在 OpenStreetMap 中描绘成要素。", - "points_lines_areas": "地图要素以 *点、线、面* 的形式呈现。", - "nodes_ways": "在 OpenStreetMap 中,点有时被称为 *节点* ,线和面有时被称为 *路径* 。", + "points_lines_areas": "地图要素以 *点、线、区域* 的形式呈现。", + "nodes_ways": "在 OpenStreetMap 中,点有时被称为 *节点* ,线和区域有时被称为 *路径* 。", "click_townhall": "所有地图上的要素都可以通过点击来选中。 **点击选中该点。**", "selected_townhall": "很好!该点已经被选中了。选中的要素的周围会有光亮不停闪烁。", "editor_townhall": "当一个要素被选中时, *要素编辑器* 将会在地图旁边显示。", @@ -856,18 +858,18 @@ "play": "现在您知道了如何创建和编辑点,尝试练习创建更多的点! **当您准备好进入下一章节时,点击 '{next}' 。**" }, "areas": { - "title": "面", - "add_playground": "*面* 用来显示诸如湖泊、建筑物或居民区等要素的边界。{br}他们亦可作为一种更细致的绘制方式,以替代普通地用点来标记的方式。 **点击 {button} 面按钮来添加一个新的面。**", - "start_playground": "让我们通过描绘一个面来添加这个游乐场。面通过在要素的外部轮廓上放置若干 *节点* 来描绘。 **点击或按空格键,在游乐场的其中一角放置一个起始节点。**", - "continue_playground": "通过继续在游乐场的轮廓上放置更多的节点来绘制该面。若将面连接到已经存在的人行道上也是可以的。{br}提示:您可以按下{alt}键以防止节点连接到其他要素上。 **继续绘制游乐场的面。**", - "finish_playground": "按回车键、或再次点击起始/结束节点来结束绘制该面。 **完成勾画该游乐场的轮廓。**", + "title": "区域", + "add_playground": "*区域* 用来显示诸如湖泊、建筑物或居民区等要素的边界。{br}他们亦可作为一种更细致的绘制方式,以替代普通地用点来标记的方式。 **点击 {button} 区域按钮来添加一个新的区域。**", + "start_playground": "让我们用描绘一个区域的方式来添加这个游乐场吧。区域是通过在要素的外部轮廓上放置若干 *节点* 来描绘。 **点击或按空格键,在游乐场的其中一角放置一个起始节点。**", + "continue_playground": "继续在游乐场的轮廓上放置更多的节点来绘制该区域。如果遇到既有的人行道,你也可以将区域连接到人行道上。{br}提示:您可以按下{alt}键以防止节点连接到其他要素上。 **继续绘制游乐场区域。**", + "finish_playground": "按回车键、或再次点击起始/结束节点来结束绘制该区域。 **完成勾画该游乐场的轮廓。**", "search_playground": "**搜索 '{preset}' 。**", "choose_playground": "**在列表中选择 {preset} 。**", "add_field": "这个游乐场还没有一个正式的名称,所以我们将不会在“名称”字段中填写任何东西。{br}但我们可以在“描述”字段中加入更多关于游乐场的的细节。 **打开“添加字段”列表。**", "choose_field": "**在列表中选择 {field} 。**", "retry_add_field": "您并未选择 {field} 字段。让我们重新试一次。", "describe_playground": "**添加一条描述,然后点击 {button} 按钮来关闭要素编辑器。**", - "play": "干得不错!尝试绘制更多的面,来查看还有哪些面的要素可以被添加到 OpenStreetMap 。 **当您准备好进入下一章节时,点击 '{next}' 。**" + "play": "干得不错!再试试绘制更多的区域,然后看看还有哪些区域要素可以被添加到 OpenStreetMap 上。 **当您准备好进入下一章节时,点击 '{next}' 。**" }, "lines": { "title": "线", @@ -901,7 +903,7 @@ }, "buildings": { "title": "建筑物", - "add_building": "OpenStreetMap 是世界上最大的建筑物数据库。{br}您可以通过勾画未被标记的建筑物来帮助改进该数据库。 **点击 {button} 面按钮来添加一个新的面。**", + "add_building": "OpenStreetMap 是世界上最大的建筑物数据库。{br}您可以通过勾画未被标记的建筑物来帮助改进该数据库。 **点击 {button} 面按钮来添加一个新的区域。**", "start_building": "让我们通过勾画这个房屋的轮廓来添加它。{br}建筑物应该尽可能准确地勾画在他们的底部周围。 **点击或按空格键,在建筑物的一处角落放置一个起始节点。**", "continue_building": "继续在建筑物的轮廓上添加一些更多的节点。别忘您还可以放大地图来添加更多细节。{br}按回车键、或再次点击起始/结束节点来结束绘制建筑物。 **完成勾画建筑物的轮廓。**", "retry_building": "看起来您在建筑物角落上放置节点时遇到了困难。请重试!", @@ -912,9 +914,9 @@ "square_building": "如果能使您刚才创建的房屋拥有完美的直角那就更好了。 **点击 {button} 按钮使建筑物轮廓直角化。**", "retry_square": "您并未点击直角化按钮。请重试。", "done_square": "看见了建筑物的边角是如何规整的吗?让我们学习另一个有用的小技巧。", - "add_tank": "接下来我们将勾画这个圆形储罐的轮廓。 **点击 {button} 面按钮来添加一个新的面。**", - "start_tank": "不用担心,您不需要画出一个完美的圆。只需要在储罐上画一个面,使其节点接触到储罐的边缘。 **点击或按空格键,在储罐的边缘处放置一个起始节点。**", - "continue_tank": "在其边缘处添加一些更多的节点。之后圆将会创建在您勾画的节点外部。{br}按回车键、或再次点击起始/结束节点来结束绘制该面。 **完成勾画该储罐的轮廓。**", + "add_tank": "接下来我们将勾画这个圆形储罐的轮廓。 **点击 {button} 面按钮来添加一个新的区域。**", + "start_tank": "不用担心,您不需要画出一个完美的圆。只需要在储罐上画一个区域,使其节点接触到储罐的边缘。 **点击或按空格键,在储罐的边缘处放置一个起始节点。**", + "continue_tank": "在其边缘处添加一些更多的节点。之后圆将会创建在您勾画的节点外部。{br}按回车键、或再次点击起始/结束节点来结束绘制该区域。 **完成勾画该储罐的轮廓。**", "search_tank": "**搜索 '{preset}' 。**", "choose_tank": "**在列表中选择 {preset} 。**", "rightclick_tank": "**右键点击选中您创建的储罐来显示编辑菜单。**", @@ -1007,10 +1009,10 @@ "title": "绘制", "add_point": "'增加 点' 模式", "add_line": "'增加 线' 模式", - "add_area": "'增加 面' 模式", + "add_area": "'增加区域' 模式", "place_point": "放置一个点", "disable_snap": "按住以禁用节点吸附", - "stop_line": "完成绘制线或面" + "stop_line": "完成绘制线段或区域" }, "operations": { "title": "操作", @@ -1021,8 +1023,8 @@ "reverse": "反转线的方向", "move": "移动选中的要素", "rotate": "旋转选中的要素", - "orthogonalize": "将线拉直 / 直角化面", - "circularize": "环状化闭合的线或面", + "orthogonalize": "将线拉直 / 将区域变方", + "circularize": "将闭合的线或区域变成圆形", "reflect_long": "沿要素的长轴翻转", "reflect_short": "沿要素的短轴翻转", "delete": "删除选中的要素" @@ -1051,51 +1053,51 @@ "presets": { "categories": { "category-barrier": { - "name": "障碍要素" + "name": "屏障" }, "category-building": { - "name": "建筑要素" + "name": "建筑" }, "category-golf": { - "name": "高尔夫要素" + "name": "高尔夫" }, "category-landuse": { - "name": "土地利用要素" + "name": "土地用途" }, "category-natural-area": { - "name": "自然面要素" + "name": "自然" }, "category-natural-line": { - "name": "自然线要素" + "name": "自然" }, "category-natural-point": { - "name": "自然点要素" + "name": "自然" }, "category-path": { - "name": "小路要素" + "name": "小路" }, "category-rail": { - "name": "铁路要素" + "name": "铁路" }, "category-restriction": { "name": "限制" }, "category-road": { - "name": "道路要素" + "name": "道路" }, "category-route": { "name": "线路" }, "category-water-area": { - "name": "水体面要素" + "name": "水体" }, "category-water-line": { - "name": "水体线要素" + "name": "水体" } }, "fields": { "access": { - "label": "通行规则", + "label": "允许通行", "options": { "designated": { "description": "只限标志指定或特定本地法律容许的人士、车辆进入", @@ -1136,14 +1138,14 @@ } }, "access_simple": { - "label": "通行规则" + "label": "允许进入" }, "address": { "label": "地址", "placeholders": { "block_number": "街区编号", "block_number!jp": "街区号", - "city": "直辖市/地级市/自治州", + "city": "地级市/自治州", "city!jp": "市/镇/村/东京都特别区", "city!vn": "市/镇", "conscriptionnumber": "123号", @@ -1166,7 +1168,7 @@ "quarter": "地方", "quarter!jp": "大字/町", "state": "行政州", - "street": "道路", + "street": "路", "subdistrict": "街道", "subdistrict!vn": "行政区/社区/小镇", "suburb": "地区", @@ -1192,7 +1194,7 @@ "label": "圆形顶" }, "aerialway/capacity": { - "label": "容量(每小时)", + "label": "客流量(每小时)", "placeholder": "500, 2500, 5000..." }, "aerialway/duration": { @@ -1258,7 +1260,7 @@ "options": { "foot_bath": "足浴", "hot_spring": "温泉", - "onsen": "日本温泉" + "onsen": "日式温泉" } }, "beauty": { @@ -1285,6 +1287,9 @@ "board_type": { "label": "类型" }, + "boules": { + "label": "类型" + }, "boundary": { "label": "类型" }, @@ -1309,7 +1314,7 @@ "placeholder": "45, 90, 180, 270" }, "camera/mount": { - "label": "相机支架" + "label": "相机架设" }, "camera/type": { "label": "相机类型", @@ -1355,7 +1360,7 @@ } }, "clothes": { - "label": "服装" + "label": "服饰" }, "club": { "label": "类型" @@ -1384,7 +1389,7 @@ "label": "国家" }, "covered": { - "label": "覆盖" + "label": "有上盖" }, "craft": { "label": "种类" @@ -1404,7 +1409,7 @@ "label": "类型" }, "cuisine": { - "label": "菜肴" + "label": "菜系" }, "currency_multi": { "label": "货币类型" @@ -1420,7 +1425,7 @@ "label": "自行车道", "options": { "lane": { - "description": "交通标线与机动车隔开的自行车道", + "description": "通过交通标线与机动车隔开的自行车道", "title": "标准自行车道" }, "none": { @@ -1428,7 +1433,7 @@ "title": "无" }, "opposite": { - "description": "单行街道上双向行驶的自行车道", + "description": "单行路上可双向通行的自行车道", "title": "逆向自行车道" }, "opposite_lane": { @@ -1464,7 +1469,7 @@ "label": "教派" }, "denotation": { - "label": "意思" + "label": "树木指示性" }, "description": { "label": "描述" @@ -1490,10 +1495,10 @@ "options": { "contact_line": "接触线", "no": "否", - "rail": "电气化铁路", + "rail": "第三轨供电", "yes": "是(未指明)" }, - "placeholder": "接触线、电气化铁路…" + "placeholder": "架空接触线、第三轨供电…" }, "elevation": { "label": "海拔" @@ -1529,9 +1534,9 @@ "label": "位置", "options": { "green": "绿地", - "lane": "小巷", + "lane": "车道", "parking_lot": "停车场", - "sidewalk": "路边人行道" + "sidewalk": "人行道" } }, "fire_hydrant/type": { @@ -1539,12 +1544,15 @@ "options": { "pillar": "支柱/地上", "pond": "池塘", - "underground": "地铁", + "underground": "地下", "wall": "墙" } }, + "fitness_station": { + "label": "器械种类" + }, "fixme": { - "label": "修复我" + "label": "Fix Me" }, "ford": { "label": "类型", @@ -1564,7 +1572,7 @@ "options": { "female": "女", "male": "男", - "unisex": "无性别" + "unisex": "男女通用" }, "placeholder": "未知" }, @@ -1572,7 +1580,7 @@ "label": "模式" }, "generator/output/electricity": { - "label": "输出功率", + "label": "电力输出", "placeholder": "50 MW, 100 MW, 200 MW..." }, "generator/source": { @@ -1627,7 +1635,7 @@ "label": "斜度" }, "incline_steps": { - "label": "坡度", + "label": "斜坡", "options": { "down": "下", "up": "上" @@ -1674,7 +1682,7 @@ "label": "类型" }, "lanes": { - "label": "车道", + "label": "车道数目", "placeholder": "1, 2, 3..." }, "layer": { @@ -1727,7 +1735,7 @@ "label": "楼层" }, "levels": { - "label": "层数", + "label": "楼层数", "placeholder": "2, 4, 6..." }, "lit": { @@ -1767,18 +1775,18 @@ }, "milestone_position": { "label": "里程碑位置", - "placeholder": "距离精确到一位小数 (123.4)" + "placeholder": "距离,精确到一位小数 (123.4)" }, "mtb/scale": { "label": "山地自行车骑行难度", "options": { - "0": "0:坚实的硕石土路,没有障碍物,大湾曲", - "1": "1:铺面部分松散,有小的障碍物,大弯曲", - "2": "2:大都是松散的铺面,有的障碍物,容易通过的发夹弯", - "3": "3:铺面光滑,有大的障碍物", + "0": "0:坚实的硕石土路,没有障碍物,路线较直", + "1": "1:路面部分松散,有小的障碍物,路线较直", + "2": "2:大都是松散的路面,有大的障碍物,容易通过的发夹弯", + "3": "3:路面容易打滑,有大的障碍物,有发夹弯", "4": "4:路面松散或是充满石头,有危险的发夹弯", "5": "5:骑乘等级最困难,路面充满石头,或者是路面坍方", - "6": "6:除非是技巧极好的越野车手,否则并不适合骑乘" + "6": "6:无法骑行,除非是技巧极好的越野车手" }, "placeholder": "0, 1, 2, 3..." }, @@ -1826,7 +1834,7 @@ "placeholder": "本地的,地区的,国家的,国际的" }, "network_foot": { - "label": "网络类型", + "label": "徒步网络类型", "options": { "iwn": "国际的", "lwn": "本地的", @@ -1900,7 +1908,7 @@ "garage_boxes": "车库盒", "lane": "路边", "multi-storey": "多层", - "sheds": "单独车库", + "sheds": "车棚", "surface": "地面", "underground": "地下" } @@ -1940,7 +1948,7 @@ "label": "类型", "options": { "downhill": "下坡", - "hike": "徒步旅行", + "hike": "徒步", "ice_skate": "冰刀", "nordic": "北欧人", "playground": "练习场", @@ -1991,7 +1999,7 @@ "label": "接受" }, "recycling_type": { - "label": "回收场所", + "label": "回收类型", "options": { "centre": "回收站", "container": "回收容器" @@ -2054,14 +2062,14 @@ "sac_scale": { "label": "远足难度", "options": { - "alpine_hiking": "T4:高山旅行", - "demanding_alpine_hiking": "T5:进阶高山旅行", - "demanding_mountain_hiking": "T3:进阶登山旅行", - "difficult_alpine_hiking": "T6:艰困高山旅行", - "hiking": "T1:徒步旅行", - "mountain_hiking": "T2:登山旅行" + "alpine_hiking": "T4:高山徒步", + "demanding_alpine_hiking": "T5:进阶高山徒步", + "demanding_mountain_hiking": "T3:进阶山地徒步", + "difficult_alpine_hiking": "T6:艰困高山徒步", + "hiking": "T1:徒步", + "mountain_hiking": "T2:山地徒步" }, - "placeholder": "登山旅行,越岭行走..." + "placeholder": "山地徒步,高山远足..." }, "sanitary_dump_station": { "label": "厕所废物" @@ -2130,7 +2138,7 @@ "excellent": "轴承:溜冰,滑板", "good": "细轮:竞速自行车", "horrible": "越野:高负重越野车辆", - "impassable": "禁止通行/禁止轮类交通工具", + "impassable": "无法通行 / 有轮车辆无法通行", "intermediate": "轮胎:通勤脚踏车,轮椅,滑板车", "very_bad": "轻量化:低负重越野车辆", "very_horrible": "越野专用:拖拉机,全地形越野车" @@ -2188,13 +2196,16 @@ "structure_waterway": { "label": "结构", "options": { - "tunnel": "地道" + "tunnel": "隧道" }, "placeholder": "未知" }, "studio": { "label": "类型" }, + "substance": { + "label": "材质" + }, "substation": { "label": "类型" }, @@ -2205,7 +2216,7 @@ "label": "支持物" }, "surface": { - "label": "路面铺设" + "label": "表面铺设" }, "surveillance": { "label": "监视" @@ -2252,7 +2263,7 @@ "label": "类型" }, "tourism_attraction": { - "label": "旅游业" + "label": "类型" }, "tower/construction": { "label": "结构", @@ -2272,6 +2283,9 @@ }, "placeholder": "坚硬地面,硬物铺面,软铺面" }, + "trade": { + "label": "类型" + }, "traffic_calming": { "label": "类型" }, @@ -2290,6 +2304,16 @@ }, "placeholder": "良好,尚可,稍差..." }, + "transformer": { + "options": { + "converter": "变流器", + "distribution": "配电变压器", + "generator": "发电机变压器", + "phase_angle_regulator": "相角调节器", + "traction": "牵引变压器", + "yes": "未知" + } + }, "trees": { "label": "树林" }, @@ -2324,6 +2348,15 @@ "stratovolcano": "复合锥" } }, + "voltage/primary": { + "label": "一次电压" + }, + "voltage/secondary": { + "label": "二次电压" + }, + "voltage/tertiary": { + "label": "三次电压" + }, "wall": { "label": "类型" }, @@ -2351,6 +2384,18 @@ }, "wikipedia": { "label": "维基百科" + }, + "windings/configuration": { + "label": "绕组配置", + "options": { + "delta": "三角形", + "leblanc": "勒布朗", + "open": "开放", + "open-delta": "开放三角形", + "scott": "斯科特", + "star": "星型(Y型)", + "zigzag": "曲折连接" + } } }, "presets": { @@ -2686,12 +2731,12 @@ "terms": "停车" }, "amenity/parking_entrance": { - "name": "停车场入口/出口", - "terms": "停车场出入口" + "name": "车库出入口", + "terms": "停车场出入口,地下车库出入口,多层车库出入口" }, "amenity/parking_space": { - "name": "停车空间", - "terms": "停车空间,停车场地" + "name": "停车位", + "terms": "停车空间,停车场地,停车位" }, "amenity/pavilion": { "name": "休息亭", @@ -2797,8 +2842,7 @@ "terms": "学校,高中,初中,中学,小学,校园,中专,学习" }, "amenity/scrapyard": { - "name": "废品堆放场", - "terms": "废品堆放场,废料场,垃圾,垃圾场,废物,废品,回收,填埋,堆放,废弃,报废,废料,废弃,残余物,碎片,清理,废置,坏,汽车,金属,打捞,沉船,场地" + "name": "废品堆放场" }, "amenity/shelter": { "name": "亭", @@ -3023,8 +3067,8 @@ "terms": "自行车,单车,路障" }, "barrier/ditch": { - "name": "沟", - "terms": "沟" + "name": "堑壕", + "terms": "沟,壕沟,堑壕" }, "barrier/entrance": { "name": "入口" @@ -3074,8 +3118,8 @@ "terms": "建筑物,屋宇" }, "building/apartments": { - "name": "公寓", - "terms": "公寓" + "name": "住宅楼", + "terms": "公寓,住宅楼" }, "building/barn": { "name": "谷仓", @@ -3113,7 +3157,7 @@ "terms": "在建建筑" }, "building/detached": { - "name": "独立式房屋", + "name": "独栋住宅", "terms": "独立式房屋" }, "building/dormitory": { @@ -3144,7 +3188,7 @@ "terms": "宾馆建筑" }, "building/house": { - "name": "房屋", + "name": "洋房", "terms": "房屋" }, "building/hut": { @@ -3196,7 +3240,7 @@ "terms": "固定房车,房车" }, "building/terrace": { - "name": "屋列", + "name": "联排式住宅", "terms": "屋列,房列,一列房,一列屋" }, "building/train_station": { @@ -3367,10 +3411,6 @@ "name": "脚手架搭建工", "terms": "脚手架搭建工,搭脚手架的人" }, - "craft/sculpter": { - "name": "雕刻师", - "terms": "雕刻师" - }, "craft/shoemaker": { "name": "鞋匠", "terms": "鞋匠,制鞋店" @@ -3379,10 +3419,6 @@ "name": "石匠", "terms": "石匠" }, - "craft/sweep": { - "name": "烟囱清理工", - "terms": "烟囱清理工,扫烟囱的人" - }, "craft/tailor": { "name": "裁缝" }, @@ -3457,11 +3493,11 @@ "terms": "入口/出口,出入口" }, "footway/crossing": { - "name": "路口", + "name": "人行横道", "terms": "路口" }, "footway/crossing-raised": { - "name": "抬高的街道十字路口", + "name": "抬高的人行横道", "terms": "人行横道,速度,减速,交通稳静化" }, "footway/crosswalk": { @@ -3497,7 +3533,7 @@ "terms": "高尔夫球洞" }, "golf/lateral_water_hazard_area": { - "name": "高尔夫侧面水障碍水体", + "name": "高尔夫侧面水障碍区", "terms": "高尔夫侧面水障碍水体,水障碍,侧面水障碍,水障碍区" }, "golf/lateral_water_hazard_line": { @@ -3513,7 +3549,7 @@ "terms": "高尔夫开球区,开球区,发球台" }, "golf/water_hazard_area": { - "name": "高尔夫水障碍水体", + "name": "高尔夫水障碍区", "terms": "高尔夫水障碍水体,水障碍,正面水障碍,水障碍区" }, "golf/water_hazard_line": { @@ -3620,15 +3656,15 @@ "terms": "电梯,直梯" }, "highway/footway": { - "name": "独立人行道", - "terms": "独立人行道,人行道,步行径" + "name": "步行道路", + "terms": "步行径" }, "highway/give_way": { "name": "让行标志", "terms": "让行标志,减速让行标志" }, "highway/living_street": { - "name": "生活街", + "name": "生活性街道", "terms": "居住街道" }, "highway/mini_roundabout": { @@ -3651,9 +3687,11 @@ "name": "小道", "terms": "路径" }, - "highway/pedestrian": { - "name": "步行街", - "terms": "步行街" + "highway/pedestrian_area": { + "name": "行人区域(广场)" + }, + "highway/pedestrian_line": { + "name": "步行街" }, "highway/primary": { "name": "主要道路", @@ -3693,7 +3731,7 @@ }, "highway/service/alley": { "name": "胡同/弄堂", - "terms": "胡同,巷,弄堂,里弄,小巷,巷,弄,巷弄" + "terms": "胡同,巷,弄堂,里弄,小巷,巷,弄,巷弄(可通行机动车)" }, "highway/service/drive-through": { "name": "免下车", @@ -3720,7 +3758,7 @@ "terms": "超速摄像头,电子警察,电子眼" }, "highway/steps": { - "name": "楼梯", + "name": "阶梯", "terms": "楼梯,台阶" }, "highway/stop": { @@ -3772,12 +3810,12 @@ "terms": "小型/未分级道路" }, "historic": { - "name": "历史遗迹", + "name": "历史地点", "terms": "历史遗迹,史迹" }, "historic/archaeological_site": { - "name": "遗址", - "terms": "考古遗址" + "name": "考古地点", + "terms": "考古,遗址" }, "historic/boundary_stone": { "name": "界碑", @@ -3831,6 +3869,10 @@ "name": "水池", "terms": "水池" }, + "landuse/brownfield": { + "name": "棕土", + "terms": "工商业使用过但被弃置的土地" + }, "landuse/cemetery": { "name": "墓地", "terms": "墓地" @@ -3870,6 +3912,10 @@ "name": "草坪", "terms": "草地" }, + "landuse/greenfield": { + "name": "待开发荒地", + "terms": "未开发过的土地" + }, "landuse/harbour": { "name": "港口", "terms": "港口,港,岸,海" @@ -3878,6 +3924,13 @@ "name": "工业区", "terms": "工业区" }, + "landuse/industrial/scrap_yard": { + "name": "废料场", + "terms": "废料场" + }, + "landuse/industrial/slaughterhouse": { + "name": "屠宰场" + }, "landuse/landfill": { "name": "垃圾填埋区", "terms": "垃圾,填埋,填埋场,填埋区,焚烧,填埋坑,废物" @@ -3947,13 +4000,16 @@ "terms": "矿场" }, "landuse/railway": { - "name": "铁路用地", + "name": "铁路走廊", "terms": "铁路用地" }, "landuse/recreation_ground": { "name": "绿地", "terms": "绿地" }, + "landuse/religious": { + "name": "宗教场所" + }, "landuse/residential": { "name": "居民区", "terms": "住宅小区" @@ -4031,8 +4087,8 @@ "terms": "滑冰,滑冰场" }, "leisure/marina": { - "name": "船坞", - "terms": "船坞,码头" + "name": "游艇码头", + "terms": "码头,游艇码头" }, "leisure/miniature_golf": { "name": "迷你高尔夫", @@ -4051,7 +4107,7 @@ "terms": "Picnic Table" }, "leisure/pitch": { - "name": "运动场", + "name": "运动场地", "terms": "体育场,操场,运动,田径,跑道" }, "leisure/pitch/american_football": { @@ -4099,7 +4155,7 @@ "terms": "足球场" }, "leisure/pitch/table_tennis": { - "name": "乒乓球桌", + "name": "乒乓球场地", "terms": "乒乓桌,乒乓球桌,乒乓球" }, "leisure/pitch/tennis": { @@ -4122,6 +4178,9 @@ "name": "跑道(跑步)", "terms": "跑步,跑道,操场,跑" }, + "leisure/sauna": { + "name": "桑拿" + }, "leisure/slipway": { "name": "船台", "terms": "船台" @@ -4163,7 +4222,7 @@ "terms": "坑道入口,矿道入口" }, "man_made/breakwater": { - "name": "避风塘", + "name": "防波堤", "terms": "避风塘,避风港" }, "man_made/bridge": { @@ -4194,8 +4253,8 @@ "terms": "大型燃气罐,大型储气罐,煤气包" }, "man_made/groyne": { - "name": "防波堤", - "terms": "防波堤" + "name": "拦沙坝", + "terms": "防波堤,拦沙坝" }, "man_made/lighthouse": { "name": "灯塔", @@ -4342,8 +4401,8 @@ "terms": "山脊,山高,凸,坡,斜坡,山峰,山冈,山" }, "natural/saddle": { - "name": "山脊", - "terms": "山脊,山鞍,鞍部" + "name": "垭口", + "terms": "垭口,山口,山鞍,鞍部" }, "natural/sand": { "name": "沙漠", @@ -4374,7 +4433,7 @@ "terms": "火山" }, "natural/water": { - "name": "水", + "name": "水体", "terms": "水" }, "natural/water/lake": { @@ -4402,20 +4461,32 @@ "terms": "死胡同" }, "office": { - "name": "写字楼", + "name": "办公地点", "terms": "办公室,写字楼" }, "office/accountant": { - "name": "会计师楼", - "terms": "会计师楼" + "name": "会计师事务所" }, "office/administrative": { "name": "行政楼", "terms": "行政楼" }, + "office/adoption_agency": { + "name": "领养中介" + }, + "office/advertising_agency": { + "name": "广告中介" + }, "office/architect": { - "name": "建筑师楼", - "terms": "建筑师楼" + "name": "建筑事务所", + "terms": "建筑事务所" + }, + "office/association": { + "name": "非盈利机构办公室", + "terms": "非盈利机构办公室" + }, + "office/charity": { + "name": "慈善机构" }, "office/company": { "name": "公司", @@ -4433,29 +4504,45 @@ "name": "就业机构", "terms": "就业机构" }, + "office/energy_supplier": { + "name": "电力公司" + }, "office/estate_agent": { "name": "地产代理", "terms": "地产代理" }, "office/financial": { - "name": "财务部写字楼", - "terms": "财务部写字楼" + "name": "金融机构", + "terms": "金融机构" + }, + "office/forestry": { + "name": "林务管理" + }, + "office/foundation": { + "name": "基金办公室", + "terms": "基金办公室" }, "office/government": { - "name": "政府楼", - "terms": "政府楼" + "name": "政府办公点", + "terms": "政府办公点" }, "office/government/register_office": { "name": "登记处", "terms": "登记处,出生登记处,结婚登记处,死亡登记处" }, + "office/government/tax": { + "name": "税局", + "terms": "税局" + }, + "office/guide": { + "name": "导游机构" + }, "office/insurance": { "name": "保险公司", "terms": "保险公司" }, "office/it": { - "name": "IT公司", - "terms": "IT公司" + "name": "IT公司" }, "office/lawyer": { "name": "律师事务所", @@ -4465,14 +4552,19 @@ "name": "公证处", "terms": "公证处,Notary Office" }, + "office/moving_company": { + "name": "搬家公司" + }, "office/newspaper": { - "name": "报社", - "terms": "报社,通讯社" + "name": "报社" }, "office/ngo": { "name": "非政府组织", "terms": "非政府组织" }, + "office/notary": { + "name": "公证处" + }, "office/physician": { "name": "医生" }, @@ -4480,21 +4572,32 @@ "name": "政党", "terms": "政党" }, + "office/private_investigator": { + "name": "私家侦探事务所" + }, + "office/quango": { + "name": "准非政府组织" + }, "office/research": { "name": "研究所", "terms": "研究所" }, + "office/tax_advisor": { + "name": "税务顾问机构" + }, "office/telecommunication": { "name": "电信办公室", "terms": "电信公司" }, "office/therapist": { - "name": "医疗师", - "terms": "理疗,医生,中医,推拿,整骨,医疗,治疗,医疗,医师,护士,医护,办公室,技师,医院" + "name": "治疗师工作室" }, "office/travel_agent": { "name": "旅行社" }, + "office/water_utility": { + "name": "水务设施机构" + }, "piste": { "name": "滑雪道", "terms": "滑雪道" @@ -4517,6 +4620,10 @@ "name": "岛屿", "terms": "岛屿" }, + "place/islet": { + "name": "小岛", + "terms": "小岛" + }, "place/isolated_dwelling": { "name": "孤立居所", "terms": "孤立居所" @@ -4526,7 +4633,7 @@ "terms": "地方,地点" }, "place/neighbourhood": { - "name": "街坊", + "name": "街坊社区 / 小区", "terms": "社区,街坊" }, "place/quarter": { @@ -4550,8 +4657,7 @@ "terms": "村庄" }, "playground/balance_beam": { - "name": "平衡木", - "terms": "平衡木,独木桥,木桩,勇敢者道路,儿童,小孩,游乐,游乐设施,游乐园,游乐场,乐园,儿童乐园" + "name": "跷跷板" }, "playground/basket_spinner": { "name": "网兜旋转器 (儿童游乐)", @@ -4570,8 +4676,7 @@ "terms": "气垫,弹簧垫,弹簧,弹力,弹性,垫子,弹跳,蹦跳,跳,充气,充气城堡" }, "playground/horizontal_bar": { - "name": "单杠", - "terms": "单杠,高低杠,杠子,横杠,铁棒,竞技,运动,体操,操场,回环,转体,摆荡,儿童,小孩,游乐,游乐设施,游乐园,游乐场,乐园,儿童乐园" + "name": "平衡木" }, "playground/rocker": { "name": "弹簧木马 (儿童游乐)", @@ -4625,12 +4730,12 @@ "terms": "风能,风轮机,涡轮,发电机,发电器,风力,风车,风,发电" }, "power/line": { - "name": "供电线", - "terms": "供电线" + "name": "输电线", + "terms": "输电线" }, "power/minor_line": { - "name": "小供电线", - "terms": "小供电线" + "name": "次要输电线", + "terms": "次要输电线" }, "power/plant": { "name": "发电厂", @@ -4667,7 +4772,7 @@ "name": "铁路" }, "railway/abandoned": { - "name": "已拆除铁路", + "name": "已拆除铁路遗迹", "terms": "废弃的铁路" }, "railway/buffer_stop": { @@ -4711,11 +4816,11 @@ "terms": "窄轨铁路,铁路" }, "railway/platform": { - "name": "铁路站台", - "terms": "站台" + "name": "月台", + "terms": "站台,月台" }, "railway/rail": { - "name": "铁轨", + "name": "标准铁路", "terms": "铁轨" }, "railway/signal": { @@ -5016,7 +5121,7 @@ "terms": "音响店" }, "shop/houseware": { - "name": "小型家饰店", + "name": "家居用品店", "terms": "小型家饰店" }, "shop/interior_decoration": { @@ -5187,6 +5292,10 @@ "name": "售票处", "terms": "售票处,售票亭" }, + "shop/tiles": { + "name": "瓷砖商店", + "terms": "磁磚商店" + }, "shop/tobacco": { "name": "烟草店", "terms": "烟草店" @@ -5195,6 +5304,10 @@ "name": "玩具店", "terms": "玩具店" }, + "shop/trade": { + "name": "材料商店", + "terms": "建材商店,材料行" + }, "shop/travel_agency": { "name": "旅行社", "terms": "旅行社" @@ -5227,7 +5340,7 @@ "terms": "手表店,钟表店,Watches Shop" }, "shop/water_sports": { - "name": "水上运动/泳装店", + "name": "水上运动/泳具店", "terms": "水上运动/泳装店" }, "shop/weapons": { @@ -5243,16 +5356,16 @@ "terms": "酒品商店,酒店,酒楼,酒坊" }, "tourism": { - "name": "旅行", - "terms": "旅行" + "name": "旅游设施", + "terms": "旅行,旅游设施" }, "tourism/alpine_hut": { "name": "高山小屋", "terms": "高山小屋" }, "tourism/apartment": { - "name": "公寓", - "terms": "公寓,客人公寓" + "name": "出租公寓", + "terms": "公寓,客人公寓,出租公寓" }, "tourism/aquarium": { "name": "水族馆", @@ -5275,8 +5388,8 @@ "terms": "房车营地" }, "tourism/chalet": { - "name": "木屋", - "terms": "木屋" + "name": "度假屋", + "terms": "度假屋" }, "tourism/gallery": { "name": "美术馆", @@ -5334,20 +5447,23 @@ "name": "观景点", "terms": "景点" }, + "tourism/wilderness_hut": { + "name": "野外住宿小屋" + }, "tourism/zoo": { "name": "动物园", "terms": "动物园" }, "traffic_calming": { - "name": "交通稳静化", - "terms": "交通稳静化,交通静稳化,车辆减速措施" + "name": "交通减速设置", + "terms": "车辆减速措施" }, "traffic_calming/bump": { "name": "减速带", "terms": "减速,减速带,交通稳静化" }, "traffic_calming/chicane": { - "name": "曲折车行道", + "name": "减速弯道", "terms": "曲折车行道,减速弯道" }, "traffic_calming/choker": { @@ -5359,7 +5475,7 @@ "terms": "减速,减速垫,减速板,减速带,减速胶,交通稳静化" }, "traffic_calming/dip": { - "name": "路凹", + "name": "减速路凹", "terms": "路凹,减速路凹,减速坑" }, "traffic_calming/hump": { @@ -5367,8 +5483,8 @@ "terms": "减速,减速丘,交通稳静化" }, "traffic_calming/island": { - "name": "交通岛", - "terms": "交通岛,导流岛,安全岛,中心岛,交通稳静化" + "name": "交通分隔岛", + "terms": "交通岛,导流岛,安全岛,中心岛,分隔岛" }, "traffic_calming/rumble_strip": { "name": "路肩警示带", @@ -5566,6 +5682,13 @@ "description": "DigitalGlobe 优质卫星影像", "name": "DigitalGlobe 优质影像" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "使用条款与意见反馈" + }, + "description": "影像边界和拍摄日期。标签会在缩放到14层级或更高时显示。", + "name": "DigitalGlobe 优质影像年份" + }, "DigitalGlobe-Standard": { "attribution": { "text": "条款与反馈" @@ -5573,6 +5696,13 @@ "description": "DigitalGlobe 标准卫星影像", "name": "DigitalGlobe 标准影像" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "使用条款与意见反馈" + }, + "description": "影像边界和拍摄日期。标签会在缩放到14层级或更高时显示。", + "name": "DigitalGlobe 标准影像年份" + }, "EsriWorldImagery": { "attribution": { "text": "条款和反馈" @@ -5644,6 +5774,7 @@ "name": "TIGER 道路 2014" }, "US-TIGER-Roads-2017": { + "description": "黄色 = 来自美国人口调查局的公共领域地图数据。红色 = 在 OpenStreetMap 中找不到数据。", "name": "TIGER 道路 2017" }, "Waymarked_Trails-Cycling": { @@ -5700,7 +5831,7 @@ "attribution": { "text": "条款与反馈" }, - "description": "显示主要要素辅助定向", + "description": "叠加显示主要要素,以辅助定位", "name": "定位辅助叠加层" }, "openpt_map": { diff --git a/dist/locales/zh-HK.json b/dist/locales/zh-HK.json index 9c5464a58..1814d6120 100644 --- a/dist/locales/zh-HK.json +++ b/dist/locales/zh-HK.json @@ -310,7 +310,6 @@ "localized_translation_language": "選擇語言", "localized_translation_name": "名稱" }, - "zoom_in_edit": "放大以編輯", "login": "登入", "logout": "登出", "loading_auth": "正在連接 OpenStreetMap...", @@ -603,8 +602,7 @@ "splash": { "welcome": "歡迎使用iD OpenStreetMap編輯器", "text": "iD是一個易用但功能強大的工具以便你可在世界上最好的免費地圖中作出貢獻。這個是版本{version}。你可在{website}得到更多資料和在{github}報告錯誤。", - "walkthrough": "開始新手教學", - "start": "立即編輯" + "walkthrough": "開始新手教學" }, "source_switch": { "live": "實況模式", @@ -636,10 +634,6 @@ "tag_suggests_area": "{tag}標籤建議綫應為範圍,但這不是一個範圍。", "deprecated_tags": "已棄用的標籤: {tags}" }, - "zoom": { - "in": "放大", - "out": "縮細" - }, "cannot_zoom": "在這個模式下不能再縮小。", "full_screen": "切換全螢幕", "gpx": { @@ -2737,8 +2731,7 @@ "terms": "學校,中學,小學,學校用地,學校範圍,國際學校" }, "amenity/scrapyard": { - "name": "廢料場", - "terms": "Scrap Yard, 廢車場, 廢物場" + "name": "廢料場" }, "amenity/shelter": { "name": "涼亭", @@ -3303,10 +3296,6 @@ "name": "棚架工程", "terms": "搭棚" }, - "craft/sculpter": { - "name": "雕塑工程", - "terms": "雕刻工程" - }, "craft/shoemaker": { "name": "鞋匠", "terms": "皮鞋匠" @@ -3315,10 +3304,6 @@ "name": "石匠", "terms": "石工" }, - "craft/sweep": { - "name": "煙囱打掃", - "terms": "煙囱清掃,煙囱清潔" - }, "craft/tailor": { "name": "裁縫" }, @@ -3547,10 +3532,6 @@ "name": "路徑", "terms": "Path,徑,路徑" }, - "highway/pedestrian": { - "name": "行人專用區", - "terms": "行人區, 行人專用" - }, "highway/primary": { "name": "市區幹道", "terms": "Primary Road,主要道路,大路" @@ -4293,18 +4274,10 @@ "name": "辦公室", "terms": "Office,寫字樓,辦公室" }, - "office/accountant": { - "name": "會計師樓", - "terms": "Accountant,會計師樓" - }, "office/administrative": { "name": "行政樓", "terms": "Administrative Office,行政樓" }, - "office/architect": { - "name": "建築師樓", - "terms": "Architect,則師樓,則樓,建築師樓" - }, "office/company": { "name": "公司辦事處", "terms": "Company Office,公司,公司寫字樓" @@ -4341,10 +4314,6 @@ "name": "保險公司辦公室", "terms": "Insurance Office,保險公司,保險公司寫字樓" }, - "office/it": { - "name": "資訊科技公司辦公室", - "terms": "IT Office,IT公司,資訊科技寫字樓,電腦公司寫字樓" - }, "office/lawyer": { "name": "律師事務所", "terms": "Law Office,律師事務所" @@ -4353,10 +4322,6 @@ "name": "公證行", "terms": "Notary Office,公證人" }, - "office/newspaper": { - "name": "報社", - "terms": "Newspaper,報社,新聞社,通訊社" - }, "office/ngo": { "name": "非政府機構辦公室", "terms": "NGO Office,志願機構寫字樓,非政府組織,志願組織" @@ -4376,10 +4341,6 @@ "name": "電訊公司辦公室", "terms": "Telecom Office,電信公司,電話公司寫字樓" }, - "office/therapist": { - "name": "治療師", - "terms": "Therapist,治療師,醫療師" - }, "office/travel_agent": { "name": "旅行社" }, @@ -5106,10 +5067,6 @@ "name": "露營車營地", "terms": "RV Park,房車營地,露營車停車場,露營車營地" }, - "tourism/chalet": { - "name": "木屋", - "terms": "Chalet,木屋" - }, "tourism/gallery": { "name": "畫廊", "terms": "藝廊,藝術廊" diff --git a/dist/locales/zh-TW.json b/dist/locales/zh-TW.json index 437006c0d..596ec2828 100644 --- a/dist/locales/zh-TW.json +++ b/dist/locales/zh-TW.json @@ -310,7 +310,7 @@ "localized_translation_language": "選擇語言", "localized_translation_name": "名稱" }, - "zoom_in_edit": "放大以開始編輯", + "zoom_in_edit": "拉近以編輯", "login": "登入", "logout": "登出", "loading_auth": "正在連接 OpenStreetMap...", @@ -361,7 +361,9 @@ "accuracy": "準確度", "unknown": "未知", "show_tiles": "顯示圖磚", - "hide_tiles": "隱藏圖磚" + "hide_tiles": "隱藏圖磚", + "show_vintage": "顯示年份", + "hide_vintage": "隱藏年份" }, "history": { "key": "H", @@ -613,7 +615,7 @@ "welcome": "歡迎使用iD OpenStreetMap編輯器", "text": "iD編輯器是一個既易用而又功能強大的工具,以助您編輯世界上最好的自由世界地圖。這是版本{version}。欲知詳情,請瀏覽 {website} 及於{github}報告臭蟲。", "walkthrough": "開始新手教學", - "start": "現在就開始編輯" + "start": "現在就編輯" }, "source_switch": { "live": "實況模式", @@ -646,8 +648,8 @@ "deprecated_tags": "已棄用的標籤︰{tags}" }, "zoom": { - "in": "放大", - "out": "縮小" + "in": "拉近", + "out": "拉遠" }, "cannot_zoom": "在此模式下不能再縮小。", "full_screen": "啟動全螢幕", @@ -658,15 +660,22 @@ "browse": "瀏覽檔案" }, "mapillary_images": { - "tooltip": "從 Mapillary 來的街道照片", - "title": "照片重疊 (Mapillary)" + "tooltip": "從 Mapillary 來的街道級照片", + "title": "照片覆蓋層 (Mapillary)" }, "mapillary_signs": { "tooltip": "從 Mapillary 而來的交通號誌(必須啟用照片重疊)", - "title": "紅綠燈重疊 (Mapillary)" + "title": "紅綠燈覆蓋層 (Mapillary)" }, "mapillary": { - "view_on_mapillary": "在 Mapillary 看這張照片" + "view_on_mapillary": "在 Mapillary 檢視這張照片" + }, + "openstreetcam_images": { + "tooltip": "從 OpenStreetCam 而來的街道級照片", + "title": "照片覆蓋層 (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "在 OpenStreetCam 檢視這張圖片" }, "help": { "title": "說明文件", @@ -1217,6 +1226,9 @@ "aeroway": { "label": "種類" }, + "agrarian": { + "label": "產品" + }, "amenity": { "label": "種類" }, @@ -1285,6 +1297,9 @@ "board_type": { "label": "種類" }, + "boules": { + "label": "類型" + }, "boundary": { "label": "種類" }, @@ -1304,6 +1319,10 @@ "bunker_type": { "label": "類型" }, + "cables": { + "label": "電纜", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "方向(順時針)", "placeholder": "45, 90, 180, 270" @@ -1469,6 +1488,10 @@ "description": { "label": "描述" }, + "devices": { + "label": "裝置", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "有尿布台" }, @@ -1543,6 +1566,9 @@ "wall": "牆" } }, + "fitness_station": { + "label": "設備類型" + }, "fixme": { "label": "修復我" }, @@ -1550,6 +1576,9 @@ "label": "類型", "placeholder": "預設" }, + "frequency": { + "label": "運作頻率" + }, "fuel": { "label": "燃料" }, @@ -1908,6 +1937,10 @@ "payment_multi": { "label": "付款種類" }, + "phases": { + "label": "相位數", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "電話", "placeholder": "+31 42 123 4567" @@ -1987,6 +2020,9 @@ "railway": { "label": "種類" }, + "rating": { + "label": "電力頻率" + }, "recycling_accepts": { "label": "接受" }, @@ -2195,6 +2231,9 @@ "studio": { "label": "種類" }, + "substance": { + "label": "材質" + }, "substation": { "label": "種類" }, @@ -2221,6 +2260,15 @@ "surveillance/zone": { "label": "監視區域" }, + "switch": { + "label": "類型", + "options": { + "circuit_breaker": "斷路器", + "disconnector": "分段開關", + "earthing": "接地開關", + "mechanical": "機械開關" + } + }, "tactile_paving": { "label": "人行道視障引導設施" }, @@ -2293,6 +2341,19 @@ }, "placeholder": "良好、尚可、稍差..." }, + "transformer": { + "label": "類型", + "options": { + "auto": "自動變壓", + "auxiliary": "輔助", + "converter": "變流器", + "distribution": "分配", + "generator": "發電機", + "phase_angle_regulator": "相角調節器", + "traction": "牽引", + "yes": "未知" + } + }, "trees": { "label": "樹" }, @@ -2327,6 +2388,18 @@ "stratovolcano": "複式火山" } }, + "voltage": { + "label": "伏特" + }, + "voltage/primary": { + "label": "主要電壓" + }, + "voltage/secondary": { + "label": "次要電壓" + }, + "voltage/tertiary": { + "label": "三次電壓" + }, "wall": { "label": "種類" }, @@ -2354,6 +2427,22 @@ }, "wikipedia": { "label": "維基百科" + }, + "windings": { + "label": "線圈", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "繞組設定", + "options": { + "delta": "Delta", + "leblanc": "勒布朗", + "open": "開放", + "open-delta": "Open Delta", + "scott": "Scott", + "star": "Star / Wye", + "zigzag": "Zig Zag" + } } }, "presets": { @@ -2677,6 +2766,10 @@ "name": "機車停車場", "terms": "機車停車場,速克達停車場,摩托車停車場" }, + "amenity/music_school": { + "name": "音樂學校", + "terms": "" + }, "amenity/nightclub": { "name": "夜總會", "terms": "夜店" @@ -2800,8 +2893,7 @@ "terms": "學校,中學,小學,國中,國小,高中,學校用地,學校範圍,School Grounds,School" }, "amenity/scrapyard": { - "name": "汽車廢料場", - "terms": "汽車廢料場,廢料場,回收場" + "name": "汽車廢料場" }, "amenity/shelter": { "name": "涼亭", @@ -3370,9 +3462,9 @@ "name": "棚架工程", "terms": "棚架工程" }, - "craft/sculpter": { - "name": "雕塑工程", - "terms": "雕塑工程" + "craft/sculptor": { + "name": "雕塑家", + "terms": "" }, "craft/shoemaker": { "name": "鞋匠", @@ -3382,10 +3474,6 @@ "name": "切石廠", "terms": "切石廠" }, - "craft/sweep": { - "name": "煙囪清掃工", - "terms": "煙囪清掃工" - }, "craft/tailor": { "name": "裁縫" }, @@ -3654,9 +3742,13 @@ "name": "路徑", "terms": "路徑" }, - "highway/pedestrian": { + "highway/pedestrian_area": { "name": "徒步區", - "terms": "行人徒步區" + "terms": "" + }, + "highway/pedestrian_line": { + "name": "人行徒步街道", + "terms": "" }, "highway/primary": { "name": "主要道路", @@ -3834,6 +3926,10 @@ "name": "水池", "terms": "水池" }, + "landuse/brownfield": { + "name": "棕色地帶", + "terms": "棕色地帶" + }, "landuse/cemetery": { "name": "墓園", "terms": "墓園" @@ -3873,6 +3969,10 @@ "name": "草地", "terms": "草地" }, + "landuse/greenfield": { + "name": "未開發地帶", + "terms": "未開發地帶,未開發地區" + }, "landuse/harbour": { "name": "港灣", "terms": "港灣,海港" @@ -3881,6 +3981,14 @@ "name": "工業區", "terms": "工業區" }, + "landuse/industrial/scrap_yard": { + "name": "廢料場", + "terms": "" + }, + "landuse/industrial/slaughterhouse": { + "name": "屠宰場", + "terms": "" + }, "landuse/landfill": { "name": "埯埋場", "terms": "堆填區" @@ -3957,6 +4065,10 @@ "name": "遊憩區", "terms": "休憩區,遊樂場,遊樂園" }, + "landuse/religious": { + "name": "宗教設施用地", + "terms": "" + }, "landuse/residential": { "name": "住宅區", "terms": "住宅用地" @@ -4013,6 +4125,50 @@ "name": "戶外健身站", "terms": "戶外健身站,健身站" }, + "leisure/fitness_station/balance_beam": { + "name": "運動平衡梁", + "terms": "" + }, + "leisure/fitness_station/box": { + "name": "運動箱", + "terms": "" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "運動平衡單槓", + "terms": "" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "橫爬架", + "terms": "" + }, + "leisure/fitness_station/hyperextension": { + "name": "羅馬凳站", + "terms": "" + }, + "leisure/fitness_station/parallel_bars": { + "name": "雙槓", + "terms": "" + }, + "leisure/fitness_station/push-up": { + "name": "伏地挺身站", + "terms": "" + }, + "leisure/fitness_station/rings": { + "name": "運動吊環", + "terms": "" + }, + "leisure/fitness_station/sign": { + "name": "運動指示標誌", + "terms": "" + }, + "leisure/fitness_station/sit-up": { + "name": "仰臥起坐台", + "terms": "" + }, + "leisure/fitness_station/stairs": { + "name": "運動椅", + "terms": "" + }, "leisure/garden": { "name": "花園", "terms": "花園,果園,菜園,植物園,公園" @@ -4073,6 +4229,10 @@ "name": "沙灘排球場", "terms": "沙灘排球場,沙灘排球" }, + "leisure/pitch/boules": { + "name": "法式滾球場", + "terms": "法式滾球場" + }, "leisure/pitch/bowls": { "name": "保齡球綠地", "terms": "保齡球綠地" @@ -4125,6 +4285,10 @@ "name": "操場(跑步)", "terms": "操場" }, + "leisure/sauna": { + "name": "桑拿", + "terms": "桑拿,芬蘭浴,三溫暖" + }, "leisure/slipway": { "name": "船架滑道", "terms": "船架滑道" @@ -4410,15 +4574,31 @@ }, "office/accountant": { "name": "會計師事務所", - "terms": "會計師樓,會計師辦公室" + "terms": "" }, "office/administrative": { "name": "行政辦公室", "terms": "行政辦公室" }, + "office/adoption_agency": { + "name": "領養代理", + "terms": "" + }, + "office/advertising_agency": { + "name": "廣告代理公司", + "terms": "" + }, "office/architect": { "name": "建築師事務所", - "terms": "建築師樓,建築師辦公室" + "terms": "" + }, + "office/association": { + "name": "非營利組織辦公室", + "terms": "" + }, + "office/charity": { + "name": "慈善事業辦公室", + "terms": "" }, "office/company": { "name": "公司辦事處", @@ -4436,6 +4616,10 @@ "name": "就業服務站", "terms": "職業介紹所" }, + "office/energy_supplier": { + "name": "電力供應辦公室", + "terms": "" + }, "office/estate_agent": { "name": "房地產仲介", "terms": "地產代理,房仲,不動產仲介" @@ -4444,6 +4628,14 @@ "name": "金融機構辦公室", "terms": "金融機構,金融單位" }, + "office/forestry": { + "name": "林務辦公室", + "terms": "" + }, + "office/foundation": { + "name": "基金會辦公室", + "terms": "" + }, "office/government": { "name": "政府辦公室", "terms": "政府辦公室" @@ -4452,13 +4644,21 @@ "name": "戶政事務所", "terms": "戶政事務所,戶政機關" }, + "office/government/tax": { + "name": "稅務辦公室", + "terms": "" + }, + "office/guide": { + "name": "導遊辦公室", + "terms": "" + }, "office/insurance": { "name": "保險公司辦公室", "terms": "保險公司,人壽公司" }, "office/it": { - "name": "資訊科技公司辦公室", - "terms": "資訊公司,IT公司" + "name": "資訊公司辦公室", + "terms": "" }, "office/lawyer": { "name": "律師事務所", @@ -4468,14 +4668,22 @@ "name": "公證處", "terms": "公證人,民間公證人,民間公證處,Notary Office" }, + "office/moving_company": { + "name": "搬家公司辦公室", + "terms": "" + }, "office/newspaper": { - "name": "報社", - "terms": "報社,報館" + "name": "報社辦公室", + "terms": "" }, "office/ngo": { "name": "非政府機構辦公室", "terms": "NGO辦公室" }, + "office/notary": { + "name": "公證處", + "terms": "" + }, "office/physician": { "name": "醫務所" }, @@ -4483,21 +4691,41 @@ "name": "政黨辦公室", "terms": "黨部,競選總部,服務處" }, + "office/private_investigator": { + "name": "私家偵探辦公室", + "terms": "" + }, + "office/quango": { + "name": "準非政府組織辦公室", + "terms": "" + }, "office/research": { "name": "研究機構", "terms": "研究辦公室" }, + "office/surveyor": { + "name": "測量員辦公室", + "terms": "" + }, + "office/tax_advisor": { + "name": "稅務顧問辦公室", + "terms": "" + }, "office/telecommunication": { "name": "電信公司辦事處", "terms": "電訊公司辦事處" }, "office/therapist": { - "name": "治療師診所", - "terms": "治療師,物理治療師" + "name": "治療師辦公室", + "terms": "" }, "office/travel_agent": { "name": "旅行社" }, + "office/water_utility": { + "name": "自來水設施辦公室", + "terms": "" + }, "piste": { "name": "滑雪場", "terms": "滑雪場" @@ -4520,6 +4748,10 @@ "name": "島嶼", "terms": "島,island" }, + "place/islet": { + "name": "小島", + "terms": "小島" + }, "place/isolated_dwelling": { "name": "獨立聚落", "terms": "孤立民居" @@ -4532,6 +4764,10 @@ "name": "鄰里", "terms": "四鄰,Neighborhood" }, + "place/plot": { + "name": "地籍", + "terms": "" + }, "place/quarter": { "name": "自治市區", "terms": "自治市區" @@ -4553,8 +4789,8 @@ "terms": "村落,village" }, "playground/balance_beam": { - "name": "平衡木", - "terms": "平衡木" + "name": "平衡梁", + "terms": "" }, "playground/basket_spinner": { "name": "籃子旋轉器", @@ -4574,7 +4810,11 @@ }, "playground/horizontal_bar": { "name": "單槓", - "terms": "" + "terms": "" + }, + "playground/rocker": { + "name": "彈簧椅", + "terms": "" }, "playground/roundabout": { "name": "旋轉輪", @@ -4646,6 +4886,10 @@ "name": "變電所", "terms": "變電站" }, + "power/switch": { + "name": "電力開關", + "terms": "電力開關" + }, "power/tower": { "name": "高壓電塔", "terms": "高壓輸電塔" @@ -4764,6 +5008,10 @@ "name": "商店", "terms": "商店,商行" }, + "shop/agrarian": { + "name": "農用品店", + "terms": "" + }, "shop/alcohol": { "name": "酒類專賣店", "terms": "酒類商店,酒品專賣店,酒莊" @@ -5282,8 +5530,8 @@ "terms": "房車營地" }, "tourism/chalet": { - "name": "木屋", - "terms": "木屋" + "name": "假日小屋", + "terms": "" }, "tourism/gallery": { "name": "藝廊", @@ -5341,6 +5589,10 @@ "name": "觀景點", "terms": "風景點" }, + "tourism/wilderness_hut": { + "name": "野外小屋", + "terms": "" + }, "tourism/zoo": { "name": "動物園", "terms": "動物園" @@ -5573,6 +5825,13 @@ "description": "Premium DigitalGlobe 衛星圖", "name": "DigitalGlobe Premium 空照圖" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "使用條款與意見回饋" + }, + "description": "影像邊界與取得時間。標籤會在縮放14層級或更高時顯示。", + "name": "DigitalGlobe Premium 空照圖年份" + }, "DigitalGlobe-Standard": { "attribution": { "text": "使用條款與意見回饋" @@ -5580,6 +5839,13 @@ "description": "Standard DigitalGlobe 衛星圖", "name": "DigitalGlobe Standard 空照圖" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "使用條款與意見回饋" + }, + "description": "影像邊界與取得時間。標籤會在縮放14層級或更高時顯示。", + "name": "DigitalGlobe Standard 空照圖年份" + }, "EsriWorldImagery": { "attribution": { "text": "使用條款與回饋" diff --git a/dist/locales/zh.json b/dist/locales/zh.json index 4177a673c..d4c281873 100644 --- a/dist/locales/zh.json +++ b/dist/locales/zh.json @@ -164,7 +164,6 @@ "localized_translation_language": "选择语言", "localized_translation_name": "名称" }, - "zoom_in_edit": "放大编辑", "logout": "退出", "loading_auth": "连接OpenStreetMap...", "status": { @@ -231,8 +230,7 @@ "splash": { "welcome": "欢迎使用OpenStreetMap编辑器iD", "text": "iD编辑器是一个既易用而又功能强大的工具,以助您编辑世界上最好的自由世界地图。这是版本{version}。欲知详情,请浏览{website} 及在{github}上报告程序错误。", - "walkthrough": "开始练习", - "start": "现在编辑" + "walkthrough": "开始练习" }, "source_switch": { "live": "运行模式", @@ -251,10 +249,6 @@ "tag_suggests_area": "{tag}这个标签建议使用在面上,但是他不是一个面", "deprecated_tags": "已过时标签:{tags}" }, - "zoom": { - "in": "放大", - "out": "缩小" - }, "cannot_zoom": "在当前模式下无法进一步缩小。", "help": { "title": "帮助" @@ -1281,9 +1275,6 @@ "tourism/caravan_site": { "name": "房车营地" }, - "tourism/chalet": { - "name": "木屋" - }, "tourism/guest_house": { "name": "宾馆" }, From 2a5d7d875a64752751c277c6ecaebccf1c665811 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 10 Nov 2017 15:47:56 -0500 Subject: [PATCH 061/159] v2.5.0 --- modules/core/context.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/core/context.js b/modules/core/context.js index 21ee2e181..293b8e19d 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -53,7 +53,7 @@ export function setAreaKeys(value) { export function coreContext() { var context = {}; - context.version = '2.4.3'; + context.version = '2.5.0'; // create a special translation that contains the keys in place of the strings var tkeys = _cloneDeep(dataEn); diff --git a/package.json b/package.json index 630b7bd6d..4825ae738 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iD", - "version": "2.4.3", + "version": "2.5.0", "description": "A friendly editor for OpenStreetMap", "main": "iD.js", "repository": "openstreetmap/iD", From 8d26543773af3476e58bb47a40848e013067038c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 11 Nov 2017 00:09:07 -0500 Subject: [PATCH 062/159] Update to rollup v0.51.3 --- build_src.js | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build_src.js b/build_src.js index 7a48ae683..8f8315781 100644 --- a/build_src.js +++ b/build_src.js @@ -26,7 +26,7 @@ module.exports = function buildSrc() { return rollup .rollup({ - entry: './modules/id.js', + input: './modules/id.js', plugins: [ includePaths({ paths: [ @@ -34,7 +34,7 @@ module.exports = function buildSrc() { ] }), nodeResolve({ - jsnext: true, + module: true, main: true, browser: false }), @@ -47,9 +47,9 @@ module.exports = function buildSrc() { cache = bundle; return bundle.write({ format: 'iife', - dest: 'dist/iD.js', - sourceMap: true, - useStrict: false + file: 'dist/iD.js', + sourcemap: true, + strict: false }); }) .then(function() { diff --git a/package.json b/package.json index 4825ae738..e50895640 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.45.2", + "rollup": "0.51.3", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From 2f81cd672986276df896c09b05c9dd53cdb3afc2 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 12 Nov 2017 11:37:53 -0500 Subject: [PATCH 063/159] Add source switcher to dist/index.html (closes #4405) --- dist/index.html | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dist/index.html b/dist/index.html index d8fa8ab1b..0246a2cf5 100644 --- a/dist/index.html +++ b/dist/index.html @@ -46,7 +46,23 @@ id.features().disable('boundaries'); } - id.ui()(document.getElementById('id-container')); + id.ui()(document.getElementById('id-container'), function() { + id.container().select('#about-list') + .insert('li', '.user-list') + .attr('class', 'source-switch') + .call(iD.uiSourceSwitch(id) + .keys([{ + 'urlroot': 'https://www.openstreetmap.org', + 'oauth_consumer_key': '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT', + 'oauth_secret': 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL' + }, { + 'urlroot': 'https://api06.dev.openstreetmap.org', + 'oauth_consumer_key': 'zwQZFivccHkLs3a8Rq5CoS412fE5aPCXDw9DZj7R', + 'oauth_secret': 'aMnOOCwExO2XYtRVWJ1bI9QOdqh1cay2UgpbhA6p' + } + ]) + ); + }); } From 35a9f77a63bff3d19413cf2852936837839e785b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 12 Nov 2017 12:34:04 -0500 Subject: [PATCH 064/159] Preserve selected entity when cancelling save mode (closes #4407) --- modules/modes/save.js | 14 +++++++++++--- modules/ui/commit.js | 3 ++- modules/ui/commit_changes.js | 23 +++++++++++++++++------ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/modules/modes/save.js b/modules/modes/save.js index 18a01ea9b..4fb3908a0 100644 --- a/modules/modes/save.js +++ b/modules/modes/save.js @@ -24,7 +24,11 @@ import { } from '../actions'; import { coreGraph } from '../core'; -import { modeBrowse } from './index'; + +import { + modeBrowse, + modeSelect +} from './index'; import { uiConflicts, @@ -53,8 +57,12 @@ export function modeSave(context) { .on('save', save); - function cancel() { - context.enter(modeBrowse(context)); + function cancel(selectedID) { + if (selectedID) { + context.enter(modeSelect(context, [selectedID])); + } else { + context.enter(modeBrowse(context)); + } } diff --git a/modules/ui/commit.js b/modules/ui/commit.js index 62ca53989..52696ca30 100644 --- a/modules/ui/commit.js +++ b/modules/ui/commit.js @@ -228,7 +228,8 @@ export function uiCommit(context) { buttonSection.selectAll('.cancel-button') .on('click.cancel', function() { - dispatch.call('cancel'); + var selectedID = commitChanges.entityID(); + dispatch.call('cancel', this, selectedID); }); buttonSection.selectAll('.save-button') diff --git a/modules/ui/commit_changes.js b/modules/ui/commit_changes.js index 321d643bc..195a7fd6c 100644 --- a/modules/ui/commit_changes.js +++ b/modules/ui/commit_changes.js @@ -15,6 +15,7 @@ import { export function uiCommitChanges(context) { + var _entityID; var detected = utilDetect(); @@ -91,7 +92,7 @@ export function uiCommitChanges(context) { items .on('mouseover', mouseover) .on('mouseout', mouseout) - .on('click', zoomToEntity); + .on('click', click); // Download changeset link @@ -144,17 +145,27 @@ export function uiCommitChanges(context) { } - function zoomToEntity(change) { - var entity = change.entity; - if (change.changeType !== 'deleted' && - context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') { + function click(change) { + if (change.changeType === 'deleted') { + _entityID = null; + } else { + var entity = change.entity; + _entityID = change.entity.id; context.map().zoomTo(entity); - context.surface().selectAll(utilEntityOrMemberSelector([entity.id], context.graph())) + context.surface().selectAll(utilEntityOrMemberSelector([_entityID], context.graph())) .classed('hover', true); } } } + commitChanges.entityID = function(_) { + if (!arguments.length) return _entityID; + _entityID = _; + return commitChanges; + }; + + + return commitChanges; } From 8cb930a8cecfa5cd8a73d5c8829023f77706132e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 13 Nov 2017 09:08:13 -0500 Subject: [PATCH 065/159] Update std/esm and rollup dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e50895640..1f1f5c895 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@mapbox/maki": "^4.0.0", - "@std/esm": "^0.13.0", + "@std/esm": "^0.14.0", "brfs": "1.4.3", "chai": "^4.1.0", "colors": "^1.1.2", @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.51.3", + "rollup": "0.51.5", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From 1dd437a1f2da765f492efd2e54c0678cf23c68b2 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 14 Nov 2017 11:32:42 -0500 Subject: [PATCH 066/159] Hide mapillary-js attribution and just handle it in iD (closes #4526) What we were doing before was d3.selecting the attribution line and inserting the capture date into it. This was confusing the viewer (which updates asynchronously) so that the sitelink would never update. To make things easier, we'll just hide the viewer's built in attribution and construct the attribution line the way we want it. --- css/60_photos.css | 60 ++++++++++++++--------------- modules/services/mapillary.js | 64 ++++++++++++++++++++++--------- modules/services/openstreetcam.js | 8 ++-- test/spec/services/mapillary.js | 7 ++-- 4 files changed, 83 insertions(+), 56 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 8433eb60d..94f86793b 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -24,25 +24,35 @@ overflow: hidden; } +.photo-wrapper .photo-attribution { + width: 100%; + font-size: 10px; + text-align: right; + position: absolute; + bottom: 0; + right: 0; + padding: 4px 2px; + z-index: 10; +} + +.photo-attribution a, +.photo-attribution a:visited, +.photo-attribution span { + padding: 4px 2px; + color: #fff; +} + /* markers and sequences */ .viewfield-group { pointer-events: visible; cursor: pointer; } -.viewfield-group * { - z-index: 50; -} .viewfield-group.selected * { fill: #ffee00 !important; - z-index: 60; } .viewfield-group.hovered * { fill: #eebb00 !important; - z-index: 70; -} -.viewfield-group.highlighted * { - z-index: 60; } .viewfield-group circle { @@ -162,11 +172,18 @@ top: -25px; } #mly .domRenderer .Attribution { - width: 100%; - font-size: 10px; - text-align: right; + /* we will roll our own to avoid async update issues like #4526 */ + display: none; } +.mly-wrapper .photo-attribution a:active, +.mly-wrapper .photo-attribution a:hover { + color: #35af6d; +} + +.mly-wrapper .mapillary-js-dom { + z-index: 9; +} /* OpenStreetCam viewer */ .osc-wrapper { @@ -177,25 +194,8 @@ background-repeat: no-repeat; } -.osc-wrapper .osc-attribution { - width: 100%; - font-size: 10px; - text-align: right; - position: absolute; - bottom: 0; - right: 0; - padding: 4px 2px; - z-index: 10; -} - -.osc-attribution a, -.osc-attribution a:visited, -.osc-attribution span { - padding: 4px 2px; - color: #fff; -} -.osc-attribution a:active, -.osc-attribution a:hover { +.osc-wrapper .photo-attribution a:active, +.osc-wrapper .photo-attribution a:hover { color: #77ddff; } diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index b67d02365..cb06b4edd 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -172,6 +172,7 @@ function loadNextTilePage(which, currZoom, url, tile) { key: feature.properties.key, ca: feature.properties.ca, captured_at: feature.properties.captured_at, + captured_by: feature.properties.username, pano: feature.properties.pano }; cache.forImageKey[d.key] = d; // cache imageKey -> image @@ -424,15 +425,21 @@ export default { loadViewer: function(context) { - // add mly-wrapper for viewer-js - d3_select('#photoviewer').selectAll('.mly-wrapper') - .data([0]) - .enter() + // add mly-wrapper + var wrap = d3_select('#photoviewer').selectAll('.mly-wrapper') + .data([0]); + + var wrapEnter = wrap.enter() .append('div') .attr('id', 'mly') .attr('class', 'photo-wrapper mly-wrapper') .classed('hide', true); + wrapEnter + .append('div') + .attr('class', 'photo-attribution fillD'); + + // load mapillary-viewercss d3_select('head').selectAll('#mapillary-viewercss') .data([0]) @@ -586,25 +593,44 @@ export default { }); }); - if (!d) return this; + var wrap = d3_select('#photoviewer .mly-wrapper'); + var attribution = wrap.selectAll('.photo-attribution').html(''); - // if viewer is just starting up, attribution might not be available yet - var attribution = d3_select('.mapillary-js-dom .Attribution'); - var timestamp = localeTimestamp(d.captured_at); - var capturedAt = attribution.selectAll('.captured-at'); - if (capturedAt.empty()) { - capturedAt = attribution - .insert('span', ':last-child') - .attr('class', 'captured-at'); + if (d) { + if (d.captured_by) { + attribution + .append('a') + .attr('class', 'captured_by') + .attr('target', '_blank') + .attr('href', 'https://www.mapillary.com/app/user/' + encodeURIComponent(d.captured_by)) + .text('@' + d.captured_by); + + attribution + .append('span') + .text('|'); + } + + if (d.captured_at) { + attribution + .append('span') + .attr('class', 'captured_at') + .text(localeTimestamp(d.captured_at)); + + attribution + .append('span') + .text('|'); + } attribution - .insert('span', ':last-child') - .text('|'); - } - capturedAt - .text(timestamp); + .append('a') + .attr('class', 'image_link') + .attr('target', '_blank') + .attr('href', 'https://www.mapillary.com/app/?pKey=' + encodeURIComponent(d.key) + + '&focus=photo&lat=' + d.loc[1] + '&lng=' + d.loc[0] + '&z=17') + .text('mapillary.com'); - this.updateDetections(d); + this.updateDetections(d); + } return this; }, diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index d0f35a020..fd3f81e09 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -306,7 +306,7 @@ export default { wrapEnter .append('div') - .attr('class', 'osc-attribution fillD'); + .attr('class', 'photo-attribution fillD'); var controlsEnter = wrapEnter .append('div') @@ -427,14 +427,14 @@ export default { .style('transform', 'rotate(' + r + 'deg)') .attr('src', apibase + '/' + d.imagePath); - var attribution = wrap.selectAll('.osc-attribution').html(''); + var attribution = wrap.selectAll('.photo-attribution').html(''); if (d.captured_by) { attribution .append('a') .attr('class', 'captured_by') .attr('target', '_blank') - .attr('href', apibase + '/user/' + d.captured_by) + .attr('href', 'http://openstreetcam.org/user/' + encodeURIComponent(d.captured_by)) .text('@' + d.captured_by); attribution @@ -457,7 +457,7 @@ export default { .append('a') .attr('class', 'image_link') .attr('target', '_blank') - .attr('href', apibase + '/details/' + d.sequence_id + '/' + d.sequence_index) + .attr('href', 'http://openstreetcam.org/details/' + d.sequence_id + '/' + d.sequence_index) .text('openstreetcam.org'); } return this; diff --git a/test/spec/services/mapillary.js b/test/spec/services/mapillary.js index 8fb7aef15..26d674bc6 100644 --- a/test/spec/services/mapillary.js +++ b/test/spec/services/mapillary.js @@ -66,7 +66,7 @@ describe('iD.serviceMapillary', function() { describe('#reset', function() { it('resets cache and image', function() { mapillary.cache().foo = 'bar'; - mapillary.selectImage({key: 'baz'}); + mapillary.selectImage({ key: 'baz', loc: [10,0] }); mapillary.reset(); expect(mapillary.cache()).to.not.have.property('foo'); @@ -432,8 +432,9 @@ describe('iD.serviceMapillary', function() { describe('#selectImage', function() { it('gets and sets the selected image', function() { - mapillary.selectImage('foo'); - expect(mapillary.getSelectedImage()).to.eql('foo'); + var d = { key: 'baz', loc: [10,0] }; + mapillary.selectImage(d); + expect(mapillary.getSelectedImage()).to.eql(d); }); }); From 91f9da0f067800e82bec472e2a9d8099a479c48e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 14 Nov 2017 13:42:23 -0500 Subject: [PATCH 067/159] Switch openstreetcam from http to https to avoid mixed content issues (closes #4527) --- modules/services/openstreetcam.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index fd3f81e09..c1df3415a 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -21,7 +21,7 @@ import { geoExtent } from '../geo'; import { utilQsString, utilRebind } from '../util'; -var apibase = 'http://openstreetcam.org', +var apibase = 'https://openstreetcam.org', maxResults = 1000, tileZoom = 14, dispatch = d3_dispatch('loadedImages'), @@ -434,7 +434,7 @@ export default { .append('a') .attr('class', 'captured_by') .attr('target', '_blank') - .attr('href', 'http://openstreetcam.org/user/' + encodeURIComponent(d.captured_by)) + .attr('href', 'https://openstreetcam.org/user/' + encodeURIComponent(d.captured_by)) .text('@' + d.captured_by); attribution @@ -457,7 +457,7 @@ export default { .append('a') .attr('class', 'image_link') .attr('target', '_blank') - .attr('href', 'http://openstreetcam.org/details/' + d.sequence_id + '/' + d.sequence_index) + .attr('href', 'https://openstreetcam.org/details/' + d.sequence_id + '/' + d.sequence_index) .text('openstreetcam.org'); } return this; From 9b705a6375d83c43ff21607e32c846c92b9080ac Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 14 Nov 2017 21:30:01 -0500 Subject: [PATCH 068/159] Don't call async callbacks after connection resets/switches (closes #4288) --- modules/core/context.js | 34 +++++++----- modules/renderer/map.js | 8 +-- modules/services/osm.js | 104 ++++++++++++++++++++++++++++-------- modules/ui/source_switch.js | 18 ++++--- modules/ui/status.js | 7 ++- test/spec/services/osm.js | 15 ++++++ 6 files changed, 139 insertions(+), 47 deletions(-) diff --git a/modules/core/context.js b/modules/core/context.js index 293b8e19d..3eb716a7d 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -112,10 +112,6 @@ export function coreContext() { /* Connection */ - function entitiesLoaded(err, result) { - if (!err) history.merge(result.data, result.extent); - } - context.preauth = function(options) { if (connection) { connection.switch(options); @@ -124,39 +120,51 @@ export function coreContext() { }; context.loadTiles = utilCallWhenIdle(function(projection, dimensions, callback) { + var cid; function done(err, result) { - entitiesLoaded(err, result); + if (connection.getConnectionId() !== cid) { + if (callback) callback({ message: 'Connection Switched', status: -1 }); + return; + } + if (!err) history.merge(result.data, result.extent); if (callback) callback(err, result); } if (connection) { + cid = connection.getConnectionId(); connection.loadTiles(projection, dimensions, done); } }); - context.loadEntity = function(id, callback) { + context.loadEntity = function(entityId, callback) { + var cid; function done(err, result) { - entitiesLoaded(err, result); + if (connection.getConnectionId() !== cid) { + if (callback) callback({ message: 'Connection Switched', status: -1 }); + return; + } + if (!err) history.merge(result.data, result.extent); if (callback) callback(err, result); } if (connection) { - connection.loadEntity(id, done); + cid = connection.getConnectionId(); + connection.loadEntity(entityId, done); } }; - context.zoomToEntity = function(id, zoomTo) { + context.zoomToEntity = function(entityId, zoomTo) { if (zoomTo !== false) { - this.loadEntity(id, function(err, result) { + this.loadEntity(entityId, function(err, result) { if (err) return; - var entity = _find(result.data, function(e) { return e.id === id; }); + var entity = _find(result.data, function(e) { return e.id === entityId; }); if (entity) { map.zoomTo(entity); } }); } map.on('drawn.zoomToEntity', function() { - if (!context.hasEntity(id)) return; + if (!context.hasEntity(entityId)) return; map.on('drawn.zoomToEntity', null); context.on('enter.zoomToEntity', null); - context.enter(modeSelect(context, [id])); + context.enter(modeSelect(context, [entityId])); }); context.on('enter.zoomToEntity', function() { diff --git a/modules/renderer/map.js b/modules/renderer/map.js index 56dbbf8d1..de88fb343 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -74,10 +74,10 @@ export function rendererMap(context) { mousemove; var zoom = d3_zoom() - .scaleExtent([ztok(2), ztok(24)]) - .interpolate(d3_interpolate) - .filter(zoomEventFilter) - .on('zoom', zoomPan); + .scaleExtent([ztok(2), ztok(24)]) + .interpolate(d3_interpolate) + .filter(zoomEventFilter) + .on('zoom', zoomPan); var _selection = d3_select(null); var isRedrawScheduled = false; diff --git a/modules/services/osm.js b/modules/services/osm.js index 94e59207b..cf33659a3 100644 --- a/modules/services/osm.js +++ b/modules/services/osm.js @@ -31,6 +31,7 @@ var dispatch = d3_dispatch('authLoading', 'authDone', 'change', 'loading', 'load inflight = {}, loadedTiles = {}, entityCache = {}, + connectionId = 1, tileZoom = 16, oauth = osmAuth({ url: urlroot, @@ -189,6 +190,7 @@ export default { reset: function() { + connectionId++; userChangesets = undefined; userDetails = undefined; rateLimitError = undefined; @@ -200,6 +202,11 @@ export default { }, + getConnectionId: function() { + return connectionId; + }, + + changesetURL: function(changesetId) { return urlroot + '/changeset/' + changesetId; }, @@ -232,8 +239,14 @@ export default { loadFromAPI: function(path, callback, options) { options = _extend({ cache: true }, options); var that = this; + var cid = connectionId; function done(err, xml) { + if (that.getConnectionId() !== cid) { + if (callback) callback({ message: 'Connection Switched', status: -1 }); + return; + } + var isAuthenticated = that.authenticated(); // 400 Bad Request, 401 Unauthorized, 403 Forbidden @@ -333,6 +346,8 @@ export default { putChangeset: function(changeset, changes, callback) { + var that = this; + var cid = connectionId; // Create the changeset.. oauth.xhr({ @@ -344,7 +359,13 @@ export default { function createdChangeset(err, changeset_id) { - if (err) return callback(err); + if (err) { + return callback(err); + } + if (that.getConnectionId() !== cid) { + return callback({ message: 'Connection Switched', status: -1 }); + } + changeset = changeset.update({ id: changeset_id }); // Upload the changeset.. @@ -366,12 +387,16 @@ export default { callback(null, changeset); }, 2500); - // Still attempt to close changeset, but ignore response because #2667 - oauth.xhr({ - method: 'PUT', - path: '/api/0.6/changeset/' + changeset.id + '/close', - options: { header: { 'Content-Type': 'text/xml' } } - }, function() { return true; }); + // At this point, we don't really care if the connection was switched.. + // Only try to close the changeset if we're still talking to the same server. + if (that.getConnectionId() === cid) { + // Still attempt to close changeset, but ignore response because #2667 + oauth.xhr({ + method: 'PUT', + path: '/api/0.6/changeset/' + changeset.id + '/close', + options: { header: { 'Content-Type': 'text/xml' } } + }, function() { return true; }); + } } }, @@ -382,8 +407,16 @@ export default { return; } + var that = this; + var cid = connectionId; + function done(err, user_details) { - if (err) return callback(err); + if (err) { + return callback(err); + } + if (that.getConnectionId() !== cid) { + return callback({ message: 'Connection Switched', status: -1 }); + } var u = user_details.getElementsByTagName('user')[0], img = u.getElementsByTagName('img'), @@ -420,27 +453,36 @@ export default { return; } + var that = this; + var cid = connectionId; + this.userDetails(function(err, user) { if (err) { - callback(err); - return; + return callback(err); + } + if (that.getConnectionId() !== cid) { + return callback({ message: 'Connection Switched', status: -1 }); } function done(err, changesets) { if (err) { - callback(err); - } else { - userChangesets = Array.prototype.map.call( - changesets.getElementsByTagName('changeset'), - function (changeset) { - return { tags: getTags(changeset) }; - } - ).filter(function (changeset) { - var comment = changeset.tags.comment; - return comment && comment !== ''; - }); - callback(undefined, userChangesets); + return callback(err); } + if (that.getConnectionId() !== cid) { + return callback({ message: 'Connection Switched', status: -1 }); + } + + userChangesets = Array.prototype.map.call( + changesets.getElementsByTagName('changeset'), + function (changeset) { + return { tags: getTags(changeset) }; + } + ).filter(function (changeset) { + var comment = changeset.tags.comment; + return comment && comment !== ''; + }); + + callback(undefined, userChangesets); } oauth.xhr({ method: 'GET', path: '/api/0.6/changesets?user=' + user.id }, done); @@ -449,7 +491,14 @@ export default { status: function(callback) { + var that = this; + var cid = connectionId; + function done(xml) { + if (that.getConnectionId() !== cid) { + return callback({ message: 'Connection Switched', status: -1 }, 'connectionSwitched'); + } + // update blacklists var elements = xml.getElementsByTagName('blacklist'), regexes = []; @@ -568,9 +617,9 @@ export default { done: authDone }, options)); - dispatch.call('change'); this.reset(); this.userChangesets(function() {}); // eagerly load user details/changesets + dispatch.call('change'); return this; }, @@ -599,10 +648,19 @@ export default { authenticate: function(callback) { var that = this; + var cid = connectionId; userChangesets = undefined; userDetails = undefined; function done(err, res) { + if (err) { + if (callback) callback(err); + return; + } + if (that.getConnectionId() !== cid) { + if (callback) callback({ message: 'Connection Switched', status: -1 }); + return; + } rateLimitError = undefined; dispatch.call('change'); if (callback) callback(err, res); diff --git a/modules/ui/source_switch.js b/modules/ui/source_switch.js index 475cd4801..fe54f5a67 100644 --- a/modules/ui/source_switch.js +++ b/modules/ui/source_switch.js @@ -13,22 +13,28 @@ export function uiSourceSwitch(context) { function click() { d3_event.preventDefault(); + + var osm = context.connection(); + if (!osm) return; + if (context.inIntro()) return; if (context.history().hasChanges() && !window.confirm(t('source_switch.lose_changes'))) return; - var live = d3_select(this) + var isLive = d3_select(this) .classed('live'); - context.history().clearSaved(); - context.connection().switch(live ? keys[1] : keys[0]); + isLive = !isLive; context.enter(modeBrowse(context)); - context.flush(); + context.history().clearSaved(); // remove saved history + context.flush(); // remove stored data d3_select(this) - .text(live ? t('source_switch.dev') : t('source_switch.live')) - .classed('live', !live); + .text(isLive ? t('source_switch.live') : t('source_switch.dev')) + .classed('live', isLive); + + osm.switch(isLive ? keys[0] : keys[1]); // switch connection (warning: dispatches 'change' event) } var sourceSwitch = function(selection) { diff --git a/modules/ui/status.js b/modules/ui/status.js index ec758011c..0dc62b4c2 100644 --- a/modules/ui/status.js +++ b/modules/ui/status.js @@ -16,7 +16,12 @@ export function uiStatus(context) { selection.html(''); if (err) { - if (apiStatus === 'rateLimited') { + if (apiStatus === 'connectionSwitched') { + // if the connection was just switched, we can't rely on + // the status (we're getting the status of the previous api) + return; + + } else if (apiStatus === 'rateLimited') { selection .text(t('status.rateLimit')) .append('a') diff --git a/test/spec/services/osm.js b/test/spec/services/osm.js index a38c69bf3..3f51916f1 100644 --- a/test/spec/services/osm.js +++ b/test/spec/services/osm.js @@ -52,6 +52,21 @@ describe('iD.serviceOsm', function () { expect(connection.changesetURL(2)).to.match(/^https:/); }); + describe('#getConnectionId', function() { + it('changes the connection id every time connection is reset', function() { + var cid1 = connection.getConnectionId(); + connection.reset(); + var cid2 = connection.getConnectionId(); + expect(cid2).to.be.above(cid1); + }); + it('changes the connection id every time connection is switched', function() { + var cid1 = connection.getConnectionId(); + connection.switch({ urlroot: 'https://api06.dev.openstreetmap.org' }); + var cid2 = connection.getConnectionId(); + expect(cid2).to.be.above(cid1); + }); + }); + describe('#changesetURL', function() { it('provides a changeset url', function() { expect(connection.changesetURL(2)).to.eql('http://www.openstreetmap.org/changeset/2'); From af3b0bc1c9a8d84d26e3b46beff997a58f8a0148 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 14 Nov 2017 01:37:37 +0000 Subject: [PATCH 069/159] chore(package): update @std/esm to version 0.15.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1f1f5c895..e22054c29 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@mapbox/maki": "^4.0.0", - "@std/esm": "^0.14.0", + "@std/esm": "^0.15.0", "brfs": "1.4.3", "chai": "^4.1.0", "colors": "^1.1.2", From 9e2def3d9c588c8fe0f0f1784706c338471a0eb7 Mon Sep 17 00:00:00 2001 From: Vonter Date: Wed, 15 Nov 2017 21:31:29 +0530 Subject: [PATCH 070/159] added preset for railway=light_rail --- data/presets/presets/railway/light_rail.json | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/presets/presets/railway/light_rail.json diff --git a/data/presets/presets/railway/light_rail.json b/data/presets/presets/railway/light_rail.json new file mode 100644 index 000000000..462b8f0e4 --- /dev/null +++ b/data/presets/presets/railway/light_rail.json @@ -0,0 +1,22 @@ +{ + "icon": "railway-light-rail", + "geometry": [ + "line" + ], + "tags": { + "railway": "light_rail" + }, + "fields": [ + "name", + "structure", + "gauge", + "electrified", + "service_rail" + ], + "terms": [ + "light rail", + "streetcar", + "trolley" + ], + "name": "Light Rail" +} From 6e0a2c1221ee9207179ca98f2073e44ee8301f0d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 15 Nov 2017 11:56:32 -0500 Subject: [PATCH 071/159] Don't use real filenames in the imagery_used field (for privacy) (closes #4530) --- modules/renderer/background.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/renderer/background.js b/modules/renderer/background.js index a6d72909b..d1d59042e 100644 --- a/modules/renderer/background.js +++ b/modules/renderer/background.js @@ -91,7 +91,10 @@ export function rendererBackground(context) { var gpx = context.layers().layer('gpx'); if (gpx && gpx.enabled() && gpx.hasGpx()) { - imageryUsed.push(gpx.getSrc()); + // Include a string like '.gpx data file' or '.geojson data file' + var match = gpx.getSrc().match(/(kml|gpx|(?:geo)?json)$/i); + var extension = match ? ('.' + match[0].toLowerCase() + ' ') : ''; + imageryUsed.push(extension + 'data file'); } var mapillary_images = context.layers().layer('mapillary-images'); From 3ba25eac527c8b8ef4a3bf23679f9fd9b6b1e809 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 15 Nov 2017 12:01:41 -0500 Subject: [PATCH 072/159] npm run build for light_rail preset --- data/presets.yaml | 5 +++++ data/presets/presets.json | 22 ++++++++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 4 files changed, 35 insertions(+) diff --git a/data/presets.yaml b/data/presets.yaml index 552794f3e..6b515506f 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4443,6 +4443,11 @@ en: name: Railway Crossing (Road) # 'terms: crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing' terms: '' + railway/light_rail: + # railway=light_rail + name: Light Rail + # 'terms: light rail,streetcar,trolley' + terms: '' railway/milestone: # railway=milestone name: Railway Milestone diff --git a/data/presets/presets.json b/data/presets/presets.json index 76fa19d14..17defbf03 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13158,6 +13158,28 @@ ], "name": "Railway Crossing (Road)" }, + "railway/light_rail": { + "icon": "railway-light-rail", + "geometry": [ + "line" + ], + "tags": { + "railway": "light_rail" + }, + "fields": [ + "name", + "structure", + "gauge", + "electrified", + "service_rail" + ], + "terms": [ + "light rail", + "streetcar", + "trolley" + ], + "name": "Light Rail" + }, "railway/milestone": { "icon": "poi-milestone", "geometry": [ diff --git a/data/taginfo.json b/data/taginfo.json index 529cb657b..06e6c1fad 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2520,6 +2520,10 @@ "key": "railway", "value": "level_crossing" }, + { + "key": "railway", + "value": "light_rail" + }, { "key": "railway", "value": "milestone" diff --git a/dist/locales/en.json b/dist/locales/en.json index a519d47e7..ff15951fd 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4989,6 +4989,10 @@ "name": "Railway Crossing (Road)", "terms": "crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing" }, + "railway/light_rail": { + "name": "Light Rail", + "terms": "light rail,streetcar,trolley" + }, "railway/milestone": { "name": "Railway Milestone", "terms": "milestone,marker" From 38920b2c616f0b03bb78e62d95645159226a8fbd Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 15 Nov 2017 13:47:59 -0500 Subject: [PATCH 073/159] Reset temp placement variable each loop iteration (closes #4473) Otherwise `if (p)` will have stale data and be truthy for vertices at low zoom --- modules/svg/labels.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/svg/labels.js b/modules/svg/labels.js index bc17fdd4b..a42022721 100644 --- a/modules/svg/labels.js +++ b/modules/svg/labels.js @@ -337,7 +337,7 @@ export function svgLabels(projection, context) { var getName = (geometry === 'line') ? utilDisplayNameForPath : utilDisplayName, name = getName(entity), width = name && textWidth(name, fontSize), - p; + p = null; if (geometry === 'point') { p = getPointLabel(entity, width, fontSize, geometry); From 2962f808217adad848959574d0f68cda6af74897 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 15 Nov 2017 16:58:49 -0500 Subject: [PATCH 074/159] Perform eased zoom to avoid Firefox crash (and it looks nice too) (closes #4421) --- modules/ui/notice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/notice.js b/modules/ui/notice.js index 86353a968..9e35a610f 100644 --- a/modules/ui/notice.js +++ b/modules/ui/notice.js @@ -17,7 +17,7 @@ export function uiNotice(context) { .append('button') .attr('class', 'zoom-to notice fillD') .on('click', function() { - context.map().zoom(context.minEditableZoom()); + context.map().zoomEase(context.minEditableZoom()); }) .on('wheel', function() { // let wheel events pass through #4482 var e2 = new WheelEvent(d3_event.type, d3_event); From 0c0ecdfcfc8c512412a2b946c795faac9086a096 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 15 Nov 2017 22:21:40 -0500 Subject: [PATCH 075/159] Comment out some of the requestIdleCallback to fix walkthrough crash (closes #4533) There are several issues here.. Here's a quick brain dump: - the requestIdleCallbacks in map.js (scheduleRedraw) seem to be causing crashiness in Firefox on fast zoom/unzoom, mousewheel, etc.. anything where the view transform changes a lot and the redraws don't catch up. (commented out, reverted back to lodash throttle) - the requestIdleCallback worker queue in idle_worker.js seems to be causing crashiness in Firefox and Chrome when exiting the walkthrough. Something about deferring the tile parsing as the user leaves the intro has a problem. It might be an infinite `while` loop, not sure. (commented out, reverted back to for loop) - the requestIdleCallback in call_when_idle.js is only used to defer tile loading in context.loadTiles() - this one seems fine, and actually has maybe the biggest benefit for improving performance. (left in) --- modules/renderer/map.js | 35 ++++++++++++++------------ modules/util/idle_worker.js | 49 +++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/modules/renderer/map.js b/modules/renderer/map.js index de88fb343..93cc7bdd0 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -1,5 +1,6 @@ import _compact from 'lodash-es/compact'; import _map from 'lodash-es/map'; +import _throttle from 'lodash-es/throttle'; import _values from 'lodash-es/values'; import { set as d3_set } from 'd3-collection'; @@ -80,25 +81,27 @@ export function rendererMap(context) { .on('zoom', zoomPan); var _selection = d3_select(null); - var isRedrawScheduled = false; - var pendingRedrawCall; - function scheduleRedraw() { - // Only schedule the redraw if one has not already been set. - if (isRedrawScheduled) return; - isRedrawScheduled = true; - var that = this; - var args = arguments; - pendingRedrawCall = requestIdleCallback(function () { - // Reset the boolean so future redraws can be set. - isRedrawScheduled = false; - redraw.apply(that, args); - }, { timeout: 1400 }); - } + var scheduleRedraw = _throttle(redraw, 750); + // var isRedrawScheduled = false; + // var pendingRedrawCall; + // function scheduleRedraw() { + // // Only schedule the redraw if one has not already been set. + // if (isRedrawScheduled) return; + // isRedrawScheduled = true; + // var that = this; + // var args = arguments; + // pendingRedrawCall = window.requestIdleCallback(function () { + // // Reset the boolean so future redraws can be set. + // isRedrawScheduled = false; + // redraw.apply(that, args); + // }, { timeout: 1400 }); + // } function cancelPendingRedraw() { - isRedrawScheduled = false; - window.cancelIdleCallback(pendingRedrawCall); + scheduleRedraw.cancel(); + // isRedrawScheduled = false; + // window.cancelIdleCallback(pendingRedrawCall); } function map(selection) { diff --git a/modules/util/idle_worker.js b/modules/util/idle_worker.js index 2a5cc5cfb..5e75ef324 100644 --- a/modules/util/idle_worker.js +++ b/modules/util/idle_worker.js @@ -1,27 +1,34 @@ export function utilIdleWorker(tasks, processor, callback) { - var processed = []; - var currentPos = 0; - var totalTasks = tasks.length; - - function worker(deadline) { - while (deadline.timeRemaining() > 0 && currentPos < totalTasks) { - var result = processor(tasks[currentPos]); - - // if falsy dont add to the processed list - if (result) processed.push(result); - currentPos++; - } - - // more tasks are left, we might need more idleCallbacks - if (currentPos < totalTasks) { - return window.requestIdleCallback(function(deadline) {worker(deadline);}); - } - - // tasks are completed - return callback(processed); + var results = [], result; + for (var i = 0; i < tasks.length; i++) { + result = processor(tasks[i]); + if (result) results.push(result); } + callback(results); - window.requestIdleCallback(function(deadline) {worker(deadline);}); + // var processed = []; + // var currentPos = 0; + // var totalTasks = tasks.length; + + // function worker(deadline) { + // while (deadline.timeRemaining() > 0 && currentPos < totalTasks) { + // var result = processor(tasks[currentPos]); + + // // if falsy dont add to the processed list + // if (result) processed.push(result); + // currentPos++; + // } + + // // more tasks are left, we might need more idleCallbacks + // if (currentPos < totalTasks) { + // return window.requestIdleCallback(function(deadline) {worker(deadline);}); + // } + + // // tasks are completed + // return callback(processed); + // } + + // window.requestIdleCallback(function(deadline) {worker(deadline);}); } // shim From ed1fe5e4e88d389330f0c807a6d2ff84dcdb5f97 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 16 Nov 2017 00:24:37 -0500 Subject: [PATCH 076/159] npm run translations --- dist/locales/ar.json | 27 +- dist/locales/de.json | 8 +- dist/locales/en-GB.json | 280 +++++++++++++++- dist/locales/eo.json | 11 + dist/locales/es.json | 143 +++++---- dist/locales/et.json | 8 +- dist/locales/fa.json | 272 +++++++++++++++- dist/locales/fr.json | 8 +- dist/locales/he.json | 692 +++++++++++++++++++++++++++++++++++++++- dist/locales/hu.json | 35 +- dist/locales/ko.json | 242 ++++++++------ dist/locales/nl.json | 4 +- dist/locales/pl.json | 23 ++ dist/locales/pt-BR.json | 36 ++- dist/locales/pt.json | 21 +- dist/locales/ru.json | 94 +++++- dist/locales/sl.json | 8 +- dist/locales/sv.json | 7 +- dist/locales/uk.json | 196 +++++++++++- dist/locales/vi.json | 107 +++++++ dist/locales/zh-CN.json | 6 +- dist/locales/zh-TW.json | 7 + 22 files changed, 2030 insertions(+), 205 deletions(-) diff --git a/dist/locales/ar.json b/dist/locales/ar.json index 9e421529f..62bd447aa 100644 --- a/dist/locales/ar.json +++ b/dist/locales/ar.json @@ -310,6 +310,7 @@ "localized_translation_language": "اختر لغة", "localized_translation_name": "الاسم" }, + "zoom_in_edit": "كبّر للتعديل", "login": "تسجيل دخول", "logout": "تسجيل خروج", "loading_auth": "جار الإتصال بـ OpenStreetMap ...", @@ -630,6 +631,10 @@ "tag_suggests_area": "الوسم {tag} يقترح بأن الخط يجب أن يكون منطقة، ولكنها حاليا ليست منطقة", "deprecated_tags": "وسوم مهجورة: {tags}" }, + "zoom": { + "in": "تكبير", + "out": "تصغير" + }, "cannot_zoom": "لايمكن التصغير أكثر من ذلك في الوضع الحالي.", "full_screen": "التبديل إلى وضع ملء الشاشة", "gpx": { @@ -811,10 +816,12 @@ "start_drag_midpoint": "تظهر مثلثات صغيرة عند *نقاط المنتصف* بين كل نقطتين. ومن الطرق الأخرى لإنشاء نقطة جديدة هو سحب هذه المثلثات الصغيرة إلى مكان مختلف. **اسحب مثلث نقطة الوسط لإنشاء نقطة جديدة على طول منحنى الطريق.**", "continue_drag_midpoint": "هذا الخط يبدو أفضل بكثير! استمر بتعديل هذا الخط عن طريق النقر المزدوج عليه أو سحب مثلثات المنتصف لإنشاء نقط جديدة ومطابقة هذه النقط على الطريق ليأخذ المنحنى نفس شكل الطريق. **عند رضائك عن شكل المنحنى ومطابقته لشكل الطريق، انقر \"موافق\".**", "split_intersection": "**انقر على زرّ {button} لفصل {street}.**", - "retry_split": "لم تقم بالنقر على زر الفصل. حاول مجددا." + "retry_split": "لم تقم بالنقر على زر الفصل. حاول مجددا.", + "retry_delete": "أنت لم تضغط على زرّ الحذف. حاول مجددا" }, "buildings": { "title": "المباني", + "choose_category_building": "**اختر {category} من القائمة.**", "close": "**اضغط زرّ الهروب \"Esc\" أو انقر على زرّ {button} لإغلاق محرر العناصر.**", "rightclick_building": "**انقر بالزرّ الأيمن لاختيار المبنى الذي أنشأته وعرض قائعة التحرير.**" }, @@ -829,9 +836,23 @@ "shortcuts": { "title": "اختصارات لوحة المفاتيح", "tooltip": "عرض شاشة اختصارات لوحة المفاتيح", + "toggle": { + "key": "?" + }, "key": { + "alt": "Alt", + "ctrl": "Ctrl", + "delete": "Delete", + "del": "Del", + "end": "End", + "enter": "Enter", + "esc": "Esc", "home": "الرئيسية", - "return": "رجوع" + "pgdn": "PgDn", + "pgup": "PgUp", + "return": "رجوع", + "shift": "Shift", + "space": "Space" }, "gesture": { "drag": "سحب" @@ -2012,7 +2033,7 @@ "name": "مقهى إنترنت" }, "amenity/kindergarten": { - "name": "روصة أطفال" + "name": "روضة أطفال" }, "amenity/library": { "name": "مكتبة", diff --git a/dist/locales/de.json b/dist/locales/de.json index 350ee06c8..cb28c400e 100644 --- a/dist/locales/de.json +++ b/dist/locales/de.json @@ -2027,7 +2027,7 @@ "label": "Anschlussleistung" }, "recycling_accepts": { - "label": "akzeptiert" + "label": "Akzeptiert" }, "recycling_type": { "label": "Recycling Typ", @@ -3715,7 +3715,7 @@ }, "highway/elevator": { "name": "Aufzug", - "terms": "Aufzug, Fahrstuhl, Lift, Personenaufzug, Aufzugsanlage" + "terms": "Aufzug,Fahrstuhl,Lift,Personenaufzug,Aufzugsanlage" }, "highway/footway": { "name": "Fußweg", @@ -4948,6 +4948,10 @@ "name": "Bahnübergang (Straße)", "terms": "Eisenbagnkreuzung (Straße), Eisenbahnstraßenkreuzung" }, + "railway/light_rail": { + "name": "Stadtbahngleise", + "terms": "Stadtbahngleise" + }, "railway/milestone": { "name": "Eisenbahn Meilenstein", "terms": "Eisenbahnmeilenstein entlang einer Strecke" diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index 91bcd153d..2b8370eb7 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -310,6 +310,7 @@ "localized_translation_language": "Choose language", "localized_translation_name": "Name" }, + "zoom_in_edit": "Zoom in to edit", "login": "login", "logout": "logout", "loading_auth": "Connecting to OpenStreetMap...", @@ -360,7 +361,9 @@ "accuracy": "Accuracy", "unknown": "Unknown", "show_tiles": "Show Tiles", - "hide_tiles": "Hide Tiles" + "hide_tiles": "Hide Tiles", + "show_vintage": "Show Vintage", + "hide_vintage": "Hide Vintage" }, "history": { "key": "H", @@ -611,7 +614,8 @@ "splash": { "welcome": "Welcome to the iD OpenStreetMap editor", "text": "iD is a friendly but powerful tool for contributing to the World's best free World map. This is version {version}. For more information see {website} and report bugs at {github}.", - "walkthrough": "Start the Walkthrough" + "walkthrough": "Start the Walkthrough", + "start": "Edit now" }, "source_switch": { "live": "live", @@ -643,6 +647,10 @@ "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area", "deprecated_tags": "Deprecated tags: {tags}" }, + "zoom": { + "in": "Zoom in", + "out": "Zoom out" + }, "cannot_zoom": "Cannot zoom out further in current mode.", "full_screen": "Toggle Full Screen", "gpx": { @@ -662,6 +670,13 @@ "mapillary": { "view_on_mapillary": "View this image on Mapillary" }, + "openstreetcam_images": { + "tooltip": "Street-level photos from OpenStreetCam", + "title": "Photo Overlay (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "View this image on OpenStreetCam" + }, "help": { "title": "Help", "key": "H", @@ -1211,6 +1226,9 @@ "aeroway": { "label": "Type" }, + "agrarian": { + "label": "Products" + }, "amenity": { "label": "Type" }, @@ -1248,7 +1266,7 @@ "label": "Sand Bath" }, "bath/type": { - "label": "Specialty", + "label": "Speciality", "options": { "foot_bath": "Foot Bath", "hot_spring": "Hot Spring", @@ -1279,6 +1297,9 @@ "board_type": { "label": "Type" }, + "boules": { + "label": "Type" + }, "boundary": { "label": "Type" }, @@ -1298,6 +1319,10 @@ "bunker_type": { "label": "Type" }, + "cables": { + "label": "Cables", + "placeholder": "1, 2, 3..." + }, "camera/direction": { "label": "Direction (Degrees Clockwise)", "placeholder": "45, 90, 180, 270" @@ -1463,6 +1488,10 @@ "description": { "label": "Description" }, + "devices": { + "label": "Devices", + "placeholder": "1, 2, 3..." + }, "diaper": { "label": "Baby Changing Available" }, @@ -1537,6 +1566,9 @@ "wall": "Wall" } }, + "fitness_station": { + "label": "Equipment Type" + }, "fixme": { "label": "Fix Me" }, @@ -1544,6 +1576,9 @@ "label": "Type", "placeholder": "Default" }, + "frequency": { + "label": "Operating Frequency" + }, "fuel": { "label": "Fuel" }, @@ -1575,6 +1610,9 @@ "generator/type": { "label": "Type" }, + "government": { + "label": "Type" + }, "grape_variety": { "label": "Grape Varieties" }, @@ -1593,7 +1631,7 @@ "label": "Type" }, "healthcare/speciality": { - "label": "Specialties" + "label": "Specialities" }, "height": { "label": "Height (Meters)" @@ -1902,6 +1940,10 @@ "payment_multi": { "label": "Payment Types" }, + "phases": { + "label": "Phases", + "placeholder": "1, 2, 3..." + }, "phone": { "label": "Telephone", "placeholder": "+44 207 123456" @@ -1981,6 +2023,9 @@ "railway": { "label": "Type" }, + "rating": { + "label": "Power Rating" + }, "recycling_accepts": { "label": "Accepts" }, @@ -2189,6 +2234,9 @@ "studio": { "label": "Type" }, + "substance": { + "label": "Substance" + }, "substation": { "label": "Type" }, @@ -2215,6 +2263,15 @@ "surveillance/zone": { "label": "Surveillance Zone" }, + "switch": { + "label": "Type", + "options": { + "circuit_breaker": "Circuit Breaker", + "disconnector": "Disconnector", + "earthing": "Earthing", + "mechanical": "Mechanical" + } + }, "tactile_paving": { "label": "Tactile Paving" }, @@ -2287,6 +2344,19 @@ }, "placeholder": "Excellent, Good, Bad..." }, + "transformer": { + "label": "Type", + "options": { + "auto": "Autotransformer", + "auxiliary": "Auxiliary", + "converter": "Converter", + "distribution": "Distribution", + "generator": "Generator", + "phase_angle_regulator": "Phase Angle Regulator", + "traction": "Traction", + "yes": "Unknown" + } + }, "trees": { "label": "Trees" }, @@ -2321,6 +2391,18 @@ "stratovolcano": "Stratovolcano" } }, + "voltage": { + "label": "Voltage" + }, + "voltage/primary": { + "label": "Primary Voltage" + }, + "voltage/secondary": { + "label": "Secondary Voltage" + }, + "voltage/tertiary": { + "label": "Tertiary Voltage" + }, "wall": { "label": "Type" }, @@ -2348,6 +2430,22 @@ }, "wikipedia": { "label": "Wikipedia" + }, + "windings": { + "label": "Windings", + "placeholder": "1, 2, 3..." + }, + "windings/configuration": { + "label": "Windings Configuration", + "options": { + "delta": "Delta", + "leblanc": "Leblanc", + "open": "Open", + "open-delta": "Open Delta", + "scott": "Scott", + "star": "Star / Wye", + "zigzag": "Zig Zag" + } } }, "presets": { @@ -2596,6 +2694,9 @@ "amenity/motorcycle_parking": { "name": "Motorcycle Parking" }, + "amenity/music_school": { + "name": "Music School" + }, "amenity/nightclub": { "name": "Nightclub" }, @@ -3041,6 +3142,9 @@ "craft/caterer": { "name": "Caterer" }, + "craft/chimney_sweeper": { + "name": "Chimney Sweeper" + }, "craft/clockmaker": { "name": "Clockmaker" }, @@ -3125,6 +3229,9 @@ "craft/scaffolder": { "name": "Scaffolder" }, + "craft/sculptor": { + "name": "Sculptor" + }, "craft/shoemaker": { "name": "Shoemaker" }, @@ -3339,6 +3446,12 @@ "highway/path": { "name": "Path" }, + "highway/pedestrian_area": { + "name": "Pedestrian Area" + }, + "highway/pedestrian_line": { + "name": "Pedestrian Street" + }, "highway/primary": { "name": "Primary Road" }, @@ -3471,6 +3584,9 @@ "landuse/basin": { "name": "Basin" }, + "landuse/brownfield": { + "name": "Brownfield" + }, "landuse/cemetery": { "name": "Cemetery" }, @@ -3501,12 +3617,21 @@ "landuse/grass": { "name": "Grass" }, + "landuse/greenfield": { + "name": "Greenfield" + }, "landuse/harbour": { "name": "Harbor" }, "landuse/industrial": { "name": "Industrial Area" }, + "landuse/industrial/scrap_yard": { + "name": "Scrap Yard" + }, + "landuse/industrial/slaughterhouse": { + "name": "Slaughterhouse" + }, "landuse/landfill": { "name": "Landfill" }, @@ -3564,6 +3689,9 @@ "landuse/recreation_ground": { "name": "Recreation Ground" }, + "landuse/religious": { + "name": "Religious Area" + }, "landuse/residential": { "name": "Residential Area" }, @@ -3606,6 +3734,39 @@ "leisure/fitness_station": { "name": "Outdoor Fitness Station" }, + "leisure/fitness_station/balance_beam": { + "name": "Exercise Balance Beam" + }, + "leisure/fitness_station/box": { + "name": "Exercise Box" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Exercise Horizontal Bar" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Exercise Monkey Bars" + }, + "leisure/fitness_station/hyperextension": { + "name": "Hyperextension Station" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Parallel Bars" + }, + "leisure/fitness_station/push-up": { + "name": "Push-Up Station" + }, + "leisure/fitness_station/rings": { + "name": "Exercise Rings" + }, + "leisure/fitness_station/sign": { + "name": "Exercise Instruction Sign" + }, + "leisure/fitness_station/sit-up": { + "name": "Sit-Up Station" + }, + "leisure/fitness_station/stairs": { + "name": "Exercise Stairs" + }, "leisure/garden": { "name": "Garden" }, @@ -3651,6 +3812,9 @@ "leisure/pitch/beachvolleyball": { "name": "Beach Volleyball Court" }, + "leisure/pitch/boules": { + "name": "Boules/Bocce Court" + }, "leisure/pitch/bowls": { "name": "Bowling Green" }, @@ -3690,6 +3854,9 @@ "leisure/running_track": { "name": "Racetrack (Running)" }, + "leisure/sauna": { + "name": "Sauna" + }, "leisure/slipway": { "name": "Slipway" }, @@ -3903,9 +4070,27 @@ "office": { "name": "Office" }, + "office/accountant": { + "name": "Accountant Office" + }, "office/administrative": { "name": "Administrative Office" }, + "office/adoption_agency": { + "name": "Adoption Agency" + }, + "office/advertising_agency": { + "name": "Advertising Agency" + }, + "office/architect": { + "name": "Architect Office" + }, + "office/association": { + "name": "Nonprofit Organization Office" + }, + "office/charity": { + "name": "Charity Office" + }, "office/company": { "name": "Company Office" }, @@ -3918,45 +4103,90 @@ "office/employment_agency": { "name": "Employment Agency" }, + "office/energy_supplier": { + "name": "Energy Supplier Office" + }, "office/estate_agent": { "name": "Estate Agent" }, "office/financial": { "name": "Financial Office" }, + "office/forestry": { + "name": "Forestry Office" + }, + "office/foundation": { + "name": "Foundation Office" + }, "office/government": { "name": "Government Office" }, "office/government/register_office": { "name": "Register Office" }, + "office/government/tax": { + "name": "Tax and Revenue Office" + }, + "office/guide": { + "name": "Tour Guide Office" + }, "office/insurance": { "name": "Insurance Office" }, + "office/it": { + "name": "Information Technology Office" + }, "office/lawyer": { "name": "Law Office" }, "office/lawyer/notary": { "name": "Notary Office" }, + "office/moving_company": { + "name": "Moving Company Office" + }, + "office/newspaper": { + "name": "Newspaper Office" + }, "office/ngo": { "name": "NGO Office" }, + "office/notary": { + "name": "Notary Office" + }, "office/physician": { "name": "Physician" }, "office/political_party": { "name": "Political Party" }, + "office/private_investigator": { + "name": "Private Investigator Office" + }, + "office/quango": { + "name": "Quasi-NGO Office" + }, "office/research": { "name": "Research Office" }, + "office/surveyor": { + "name": "Surveyor Office" + }, + "office/tax_advisor": { + "name": "Tax Advisor Office" + }, "office/telecommunication": { "name": "Telecom Office" }, + "office/therapist": { + "name": "Therapist Office" + }, "office/travel_agent": { "name": "Travel Agency" }, + "office/water_utility": { + "name": "Water Utility Office" + }, "piste": { "name": "Piste/Ski Trail" }, @@ -3975,6 +4205,9 @@ "place/island": { "name": "Island" }, + "place/islet": { + "name": "Islet" + }, "place/isolated_dwelling": { "name": "Isolated Dwelling" }, @@ -3984,6 +4217,9 @@ "place/neighbourhood": { "name": "Neighborhood" }, + "place/plot": { + "name": "Plot" + }, "place/quarter": { "name": "Sub-Borough / Quarter" }, @@ -3999,6 +4235,9 @@ "place/village": { "name": "Village" }, + "playground/balance_beam": { + "name": "Play Balance Beam" + }, "playground/basket_spinner": { "name": "Basket Spinner" }, @@ -4011,6 +4250,12 @@ "playground/cushion": { "name": "Bouncy Cushion" }, + "playground/horizontal_bar": { + "name": "Play Horizontal Bar" + }, + "playground/rocker": { + "name": "Spring Rider" + }, "playground/roundabout": { "name": "Play Roundabout" }, @@ -4065,6 +4310,9 @@ "power/substation": { "name": "Substation" }, + "power/switch": { + "name": "Power Switch" + }, "power/tower": { "name": "High-Voltage Tower" }, @@ -4155,6 +4403,9 @@ "shop": { "name": "Shop" }, + "shop/agrarian": { + "name": "Agriculture Shop" + }, "shop/alcohol": { "name": "Off licence (Alcohol shop)" }, @@ -4545,6 +4796,9 @@ "tourism/caravan_site": { "name": "Caravan Park" }, + "tourism/chalet": { + "name": "Holiday Cottage" + }, "tourism/gallery": { "name": "Art Gallery" }, @@ -4587,6 +4841,9 @@ "tourism/viewpoint": { "name": "Viewpoint" }, + "tourism/wilderness_hut": { + "name": "Wilderness Hut" + }, "tourism/zoo": { "name": "Zoo" }, @@ -4766,6 +5023,13 @@ "description": "Premium DigitalGlobe satellite imagery.", "name": "DigitalGlobe Premium Imagery" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Premium Imagery Vintage" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Terms & Feedback" @@ -4773,6 +5037,13 @@ "description": "Standard DigitalGlobe satellite imagery.", "name": "DigitalGlobe Standard Imagery" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Standard Imagery Vintage" + }, "EsriWorldImagery": { "attribution": { "text": "Terms & Feedback" @@ -4844,6 +5115,7 @@ "name": "TIGER Roads 2014" }, "US-TIGER-Roads-2017": { + "description": "Yellow = Public domain map data from the US Census. Red = Data not found in OpenStreetMap", "name": "TIGER Roads 2017" }, "Waymarked_Trails-Cycling": { diff --git a/dist/locales/eo.json b/dist/locales/eo.json index 70af86b71..c7d749f9d 100644 --- a/dist/locales/eo.json +++ b/dist/locales/eo.json @@ -1608,6 +1608,9 @@ "generator/type": { "label": "Tipo" }, + "government": { + "label": "Speco" + }, "grape_variety": { "label": "Specoj de vinberujoj" }, @@ -3351,6 +3354,10 @@ "name": "Manĝ-provizista oficejo", "terms": "manghprovizado,mangxprovizado,catering" }, + "craft/chimney_sweeper": { + "name": "Oficejo de kamenpurigisto", + "terms": "kamenisto,kamenpurigisto,kamentubisto" + }, "craft/clockmaker": { "name": "Horloĝista laborejo", "terms": "horloĝisto,horloghisto,horlogxisto" @@ -4939,6 +4946,10 @@ "name": "Traknivela pasejo (por aŭtoj)", "terms": "pasejo,nivelpasejo,trenpasejo,trajnpasejo" }, + "railway/light_rail": { + "name": "Fervojo malpeza", + "terms": "malpeza fervojo,malpeza trajno,suburba fervojo,tramo" + }, "railway/milestone": { "name": "Mejloŝtono fervoja", "terms": "fervoja mejloŝtono" diff --git a/dist/locales/es.json b/dist/locales/es.json index 692467651..e73efae41 100644 --- a/dist/locales/es.json +++ b/dist/locales/es.json @@ -310,7 +310,7 @@ "localized_translation_language": "Elegir idioma", "localized_translation_name": "Nombre" }, - "zoom_in_edit": "Hacer zoom para editar", + "zoom_in_edit": "Acercar para editar", "login": "iniciar sesión", "logout": "Cerrar sesión", "loading_auth": "Conectando a OpenStreetMap...", @@ -362,8 +362,8 @@ "unknown": "Desconocido", "show_tiles": "Mostrar teselas", "hide_tiles": "Ocultar teselas", - "show_vintage": "Mostrar Antiguo", - "hide_vintage": "Ocultar Antiguo" + "show_vintage": "Mostrar antigüedad", + "hide_vintage": "Ocultar antigüedad" }, "history": { "key": "H", @@ -410,7 +410,7 @@ "no_results_worldwide": "No hay resultados" }, "geolocate": { - "title": "Mostrar mi localización", + "title": "Mostrar mi ubicación", "locating": "Ubicando, por favor espere..." }, "inspector": { @@ -453,7 +453,7 @@ "node": "Nodo", "way": "Vía", "relation": "Relación", - "location": "Localización", + "location": "Ubicación", "add_fields": "Añadir campo:" }, "background": { @@ -466,7 +466,7 @@ "switch": "Volver a este fondo", "custom": "Personalizado", "custom_button": "Editar fondo personalizado", - "custom_prompt": "Introduzca una plantilla URL de tesela. Los tokens válidos son:\n  - {zoom}/{z}, {x}, {y} para el esquema de tesela Z / X / Y\n  - {ty} para coordenadas Y invertidas del estilo TMS\n  - {u} para el esquema cuádruple\n  - {switch:a,b,c} para la multiplexación del servidor DNS\n\nEjemplo:\n{example}", + "custom_prompt": "Introduzca una plantilla URL de tesela. Los tokens válidos son:\n  - {zoom}/{z}, {x}, {y} para el esquema de tesela Z/X/Y\n  - {ty} para coordenadas Y invertidas del estilo TMS\n  - {u} para el esquema quadtile\n  - {switch:a,b,c} para la multiplexación del servidor DNS\n\nEjemplo:\n{example}", "fix_misalignment": "Ajustar desplazamiento de imágenes", "imagery_source_faq": "¿De dónde vienen estas imágenes?", "reset": "reiniciar", @@ -648,8 +648,8 @@ "deprecated_tags": "Etiquetas obsoletas: {tags}" }, "zoom": { - "in": "Hacer zoom", - "out": "Alejar zoom" + "in": "Acercar", + "out": "Alejar" }, "cannot_zoom": "No se puede alejar más la imagen en el modo actual.", "full_screen": "Cambiar a pantalla completa", @@ -661,18 +661,18 @@ }, "mapillary_images": { "tooltip": "Fotos a nivel calle de Mapillary", - "title": "Superposición de fotos (Mapillary)" + "title": "Capa de fotos (Mapillary)" }, "mapillary_signs": { - "tooltip": "Señales de tráfico de Mapillary (debe permitir superposición de fotos)", - "title": "Superposición de señal de tráfico (Mapillary)" + "tooltip": "Señales de tráfico Mapillary (debe habilitar Capa de fotos)", + "title": "Capa de señales de tráfico (Mapillary)" }, "mapillary": { "view_on_mapillary": "Ver esta imagen en Mapillary" }, "openstreetcam_images": { "tooltip": "Fotos a nivel de calle de OpenStreetCam", - "title": "Superposición de fotos (OpenStreetCam)" + "title": "Capa de fotos (OpenStreetCam)" }, "openstreetcam": { "view_on_openstreetcam": "Ver esta imagen en OpenStreetCam" @@ -831,7 +831,7 @@ "navigation": { "title": "Navegación", "drag": "El área del mapa principal muestra los datos de OpenStreetMap encima de un fondo.{br}Puede arrastrar el mapa manteniendo presionado el botón izquierdo del ratón mientras mueve el ratón alrededor. También puede utilizar las teclas de flechas de su teclado. **¡Arrastre el mapa!**", - "zoom": "Puede acercar o alejar desplazándose con la rueda del ratón o el trackpad, o haciendo clic en los botones {plus} / {minus}. **¡Acerque el mapa!**", + "zoom": "Puede acercar o alejar desplazándose con la rueda del ratón o el trackpad, o haciendo clic en los botones {plus} / {minus}. **¡Acercar el mapa!**", "features": "Utilizamos la palabra *elementos* para describir las cosas que aparecen en el mapa. Cualquier cosa en el mundo real puede ser mapeada como un elemento en OpenStreetMap.", "points_lines_areas": "Las elementos del mapa se representan usando *puntos, líneas o áreas.*", "nodes_ways": "En OpenStreetMap, los puntos a veces se llaman *nodos*, y las líneas y áreas a veces se llaman *vías*.", @@ -1610,6 +1610,9 @@ "generator/type": { "label": "Tipo" }, + "government": { + "label": "Tipo" + }, "grape_variety": { "label": "Variedades de uva" }, @@ -2057,14 +2060,14 @@ }, "ref_runway": { "label": "Número de pista de aterrizaje", - "placeholder": "p.e. 01L/19R" + "placeholder": "ej. 01L/19R" }, "ref_stop_position": { "label": "Número de parada" }, "ref_taxiway": { "label": "Nombre de pista de rodaje", - "placeholder": "p.e. A5" + "placeholder": "ej. A5" }, "relation": { "label": "Tipo" @@ -2150,7 +2153,7 @@ "smoking": { "label": "Fumar", "options": { - "dedicated": "Dedicado a los fumadores (ej: el club de los fumadores)", + "dedicated": "Dedicado a los fumadores (ej.: club de fumadores)", "isolated": "En áreas de fumadores, físicamente aislados", "no": "No fumar en todas partes", "outside": "Permitido fuera", @@ -2429,11 +2432,11 @@ "label": "Wikipedia" }, "windings": { - "label": "Serpenteante", + "label": "Bobinas", "placeholder": "1, 2, 3..." }, "windings/configuration": { - "label": "Configuración de devanados", + "label": "Configuración de bobinas", "options": { "delta": "Delta", "leblanc": "Leblanc", @@ -2645,11 +2648,11 @@ }, "amenity/clinic/abortion": { "name": "Clínica de aborto", - "terms": "aborto, embarazo, interrupción embarazo, clínica de aborto" + "terms": "aborto, abotar, interrupción, embarazo, interrupción embarazo, clínica de aborto, clinica aborto" }, "amenity/clinic/fertility": { "name": "Clínica de fertilidad", - "terms": "Clínica de fertilidad, clinica de fertilidad, fertilidad, reproducción, reproduccion, esperma, ovulación, ovulacion" + "terms": "clínica de fertilidad, clinica de fertilidad, fertilidad, reproducción, reproduccion, esperma, ovulación, ovulacion" }, "amenity/clock": { "name": "Reloj", @@ -2760,15 +2763,15 @@ }, "amenity/marketplace": { "name": "Mercado", - "terms": "mercado, mercadillo, mercado público, plaza de mercado" + "terms": "mercado, mercadillo, mercado público, plaza de mercado, feria" }, "amenity/motorcycle_parking": { "name": "Aparcamiento de motocicletas", "terms": "motocicleta, moto, aparcamiento, parking, estacionamiento, parqueadero, parqueo, parqueadero de motocicletas, estacionamiento de motocicletas, parqueo de motocicletas" }, "amenity/music_school": { - "name": "Conservatorio", - "terms": "conservatorio, escuela de música, música, musica, instrumentos, profesor" + "name": "Escuela de música", + "terms": "conservatorio, academia, música, musica, musical, instrumentos musicales, escuela de música, academia de música, conservatorio de música" }, "amenity/nightclub": { "name": "Discoteca", @@ -2901,7 +2904,7 @@ }, "amenity/shower": { "name": "Ducha", - "terms": "ducha, regadera" + "terms": "ducha, regadera, cuarto de aseo" }, "amenity/social_facility": { "name": "Instalación social", @@ -3038,52 +3041,52 @@ "terms": "superficie, revestimiento, cobertura" }, "attraction/amusement_ride": { - "name": "Atracción", - "terms": "atracción de feria, juego, juego de feria, máquina de emociones mecanizada" + "name": "Atracción de feria", + "terms": "atracción de feria, juego, juego de feria, juegos mecánicos, máquina de emociones mecanizada" }, "attraction/animal": { "name": "Animal", - "terms": "animal, atracción" + "terms": "animal, atracción, parque temático, parque de animales, león, tigue, oso, zoológico" }, "attraction/big_wheel": { "name": "Noria", - "terms": "rueda de la fortuna, vuelta al mundo, viaje a la luna, rueda moscovita, rueda de Chicago, rueda chicagua, rueda gigante, rueda Ferris" + "terms": "rueda de la fortuna, vuelta al mundo, viaje a la luna, rueda moscovita, rueda de chicago, rueda chicagua, rueda gigante, rueda feria, juego mecánico, juego de feria" }, "attraction/bumper_car": { "name": "Autos chocadores", - "terms": "autos chocadores, chocadores, autos de choque, coches de choque, coches locos, carros chocones" + "terms": "autos, carros, coches, chocadores, choque, locos, chocones, autos chocadores, autos chocones, autos locos, juego mecánico, juego de feria" }, "attraction/bungee_jumping": { - "name": "Bungee", - "terms": "bungee, puenting" + "name": "Saldo de bungee", + "terms": "salto, saltar, bungee, puenting, puente, benji, cuerda elástica, salto al vacío" }, "attraction/carousel": { "name": "Carrusel", - "terms": "carrusel, tiovivo, calesita" + "terms": "carrusel, tiovivo, calesita, caballitos, juego mecánico, juego de feria" }, "attraction/dark_ride": { "name": "Paseo oscuro", - "terms": "viaje oscuro, feria, atracción" + "terms": "viaje oscuro, tren fantasma, paseo guiado, juego de feria" }, "attraction/drop_tower": { "name": "Torre de caída", - "terms": "torre de caída, atracción de feria, feria, juego, juego de feria, drop tower" + "terms": "torre de caída, pilar de caída, juego mecánico, juego de feria" }, "attraction/pirate_ship": { "name": "Barco pirata", - "terms": "barco pirata" + "terms": "barco pirata, pirata, juego mecánico, juego de feria" }, "attraction/river_rafting": { - "name": "Rafting", - "terms": "descenso de ríos, balsismo" + "name": "Rafting de río", + "terms": "descenso, río, balsa, balsismo, canotaje, descenso rápidos, deporte extremo, " }, "attraction/roller_coaster": { "name": "Montaña rusa", - "terms": "montaña rusa" + "terms": "montaña rusa, juego mecánico, juego de feria" }, "attraction/train": { "name": "Tren turístico", - "terms": "tren, ferrocarril, atracción" + "terms": "tren, ferrocarril, vagón, turismo, turístico" }, "attraction/water_slide": { "name": "Tobogán acuático", @@ -3353,13 +3356,17 @@ "name": "Catering", "terms": "abastecedor, proveedor, catering, cáterin, comida" }, + "craft/chimney_sweeper": { + "name": "Deshollinador", + "terms": "chimenea, fogón, hollín, limpiachimenea, limpieza de chimeneas" + }, "craft/clockmaker": { "name": "Relojero", "terms": "relojero, reloj, relojería" }, "craft/confectionery": { - "name": "Confitería", - "terms": "confitería, confiteria, confitero" + "name": "Confitero", + "terms": "confite, hacer confite, dulce, fabricación de dulces, caramelos duros, caramelos de goma, gomitas, chicles, regaliz, algodón de azúcar, chocolates, trufas de chocolate, grageas, dulce de azúcar, caramelos, toffees" }, "craft/distillery": { "name": "Destilería", @@ -3464,7 +3471,7 @@ }, "craft/sculptor": { "name": "Escultor", - "terms": "Escultor, artista " + "terms": "escultura, artista, cincelador, imaginero, tallista, modelista, mármol, piedra, busto, escultura" }, "craft/shoemaker": { "name": "Zapatero", @@ -3612,12 +3619,12 @@ "terms": "obstáculo, agua, golf" }, "healthcare": { - "name": "Centro de salud", - "terms": "Centro de salud, clínica, doctor, enfermedad, salud, institución, enfermo, cirugía, bienestar" + "name": "Asistencia sanitaria", + "terms": "asistencia médica, atención médica, atención sanitaria, servicio de salud, seguro sanitario, caja, seguro privado, sistema de salud, clínica, doctor, consultorio, salud, institución, enfermo, cirugía, bienestar, salubridad, diagnóstico, enfermedad, lesiones, discapacidad, médicos, odontología, obstetricia, enfermería, optometría, audiología, psicología, laboratorio, fisoterapia, rehabilitación" }, "healthcare/alternative": { "name": "Medicina alternativa", - "terms": "Medicina alternativa, acupuntura, antroposófico, kinesiología aplicada, aromaterapia, ayurveda, herbolario, homeopatía, hidroterapia, hipnosis, naturopatía, osteopatía, reflexología, reiki, shiatsu, tradicional, tuina, unani" + "terms": "medicina alternativa, acupuntura, antroposófico, kinesiología aplicada, aromaterapia, ayurveda, herbolario, homeopatía, hidroterapia, hipnosis, naturopatía, osteopatía, reflexología, reiki, shiatsu, tradicional, tuina, unani, medicina alterna" }, "healthcare/alternative/chiropractic": { "name": "Quiropráctico", @@ -4066,16 +4073,16 @@ "terms": "recreación, diversión, zona verde, patio, terreno de juegos, juegos, área de recreación" }, "landuse/religious": { - "name": "Área Religiosa", - "terms": "terreno, religioso, religión, religion" + "name": "Área religiosa", + "terms": "terreno, religioso, religión, religion, monasterio, convento, seminario, casa de retiro, instituto religioso, capilla, templo, iglesia, lugar de oración, gruta" }, "landuse/residential": { "name": "Área residencial", "terms": "área residencial, zona residencial, zona urbana, mancha urbana, urbanización, condominio" }, "landuse/retail": { - "name": "Área de tiendas y mercado minorista", - "terms": "comercios, tiendas, mercado minorista" + "name": "Área de tiendas", + "terms": "comercios, tiendas, venta, minorista, al por menor, menudeo" }, "landuse/vineyard": { "name": "Viñedo", @@ -4657,7 +4664,7 @@ "terms": "aseguradora, seguro, oficina de seguros" }, "office/it": { - "name": "Oficina de Tecnología de la Información", + "name": "Oficina de tecnología de la información", "terms": "computadora, información, software, tecnología, tecnologia, informática, informatica" }, "office/lawyer": { @@ -4941,6 +4948,10 @@ "name": "Cruce de ferrocarril (carretera)", "terms": "cruce, tren, ferrocarril, carretera, camino, cruce ferroviario, paso a nivel" }, + "railway/light_rail": { + "name": "Tren ligero", + "terms": "lrt, tren, tranvía, tren urbano, tranvía urbano, tren eléctrico, tren rápido, tren ligero, tren tranvía, metro ligero" + }, "railway/milestone": { "name": "Hito kilométrico ferroviario", "terms": "hito, señal, marcador, kilométrico, mojón, vía, via, férrea, ferroviaria, ferroviario, ferrocarril, tren" @@ -5010,7 +5021,7 @@ }, "shop/agrarian": { "name": "Tienda de agricultura", - "terms": "" + "terms": "agricultura, agrícola, cultivo, invernadero, granja, insumos, máquinas, semillas, pesticidas, control plagas, fertilizantes, herramientas, maquinaria, tierra, huerto" }, "shop/alcohol": { "name": "Licorería", @@ -5822,36 +5833,36 @@ "attribution": { "text": "Términos y comentarios" }, - "description": "Imagen de satélite Premium de DigitalGlobe.", - "name": "Imágenes aéreas DigitalGlobe Premium" + "description": "Imágenes de satélite DigitalGlobe Premium.", + "name": "Imágenes DigitalGlobe Premium" }, "DigitalGlobe-Premium-vintage": { "attribution": { - "text": "Términos y Observaciones" + "text": "Términos y comentarios" }, - "description": "Límites de imágenes y fechas de captura. Las etiquetas aparecen en el nivel de zoom 14 y superior.", - "name": "Galería Antigua Premium de DigitalGlobe" + "description": "Límites de imágenes y fechas de captura. Las etiquetas aparecen en el nivel de acercamiento 14 y superior.", + "name": "Imágenes antiguas DigitalGlobe Premium" }, "DigitalGlobe-Standard": { "attribution": { "text": "Términos y comentarios" }, - "description": "Imagen de satélite Standard de DigitalGlobe.", - "name": "Imágenes aéreas DigitalGlobe Standard" + "description": "Imagen de satélite DigitalGlobe Standard.", + "name": "Imágenes DigitalGlobe Standard" }, "DigitalGlobe-Standard-vintage": { "attribution": { - "text": "Términos y Observaciones" + "text": "Términos y comentarios" }, - "description": "Límites de galerías y fechas de captura. Las etiquetas aparecen en el nivel de zoom 14 y superior.", - "name": "Galería Antigua Estándar de DigitalGlobe" + "description": "Límites de imágenes y fechas de captura. Las etiquetas aparecen en el nivel de acercamiento 14 y superior.", + "name": "Imágenes antiguas DigitalGlobe Standard" }, "EsriWorldImagery": { "attribution": { "text": "Términos y comentarios" }, - "description": "Imágenes Esri globales.", - "name": "Imágenes Esri globales" + "description": "Imágenes mundiales Esri.", + "name": "Imágenes mundiales Esri" }, "MAPNIK": { "attribution": { @@ -5913,7 +5924,7 @@ "name": "Carreteras TIGER 2012" }, "US-TIGER-Roads-2014": { - "description": "En nivel de acercamiento +16, datos del mapa de dominio público desde el US Census. En acercamientos inferiores, sólo cambios desde 2006 menos los cambios ya incorporados en OpenStreetMap", + "description": "En nivel de acercamiento 16 o más, datos del mapa de dominio público desde el US Census. En acercamientos inferiores, sólo cambios desde 2006 menos los cambios ya incorporados en OpenStreetMap", "name": "Carreteras TIGER 2014" }, "US-TIGER-Roads-2017": { @@ -5961,7 +5972,7 @@ "attribution": { "text": "basemap.at" }, - "description": "Capa de ortofoto proporcionada por basemap.at. «Sucesor» de las imágenes aéreas de geoimage.at.", + "description": "Capa de ortofoto proporcionada por basemap.at. «Sucesor» de las imágenes de geoimage.at.", "name": "Ortofoto de basemap.at" }, "hike_n_bike": { @@ -5975,7 +5986,7 @@ "text": "Términos y comentarios" }, "description": "Muestra los principales elementos que le ayudarán a orientarse.", - "name": "Superposición de localizador" + "name": "Capa de orientación" }, "openpt_map": { "attribution": { diff --git a/dist/locales/et.json b/dist/locales/et.json index e4b7df93a..e82eaaa72 100644 --- a/dist/locales/et.json +++ b/dist/locales/et.json @@ -289,6 +289,7 @@ "localized_translation_language": "Vali keel", "localized_translation_name": "Nimi" }, + "zoom_in_edit": "Suurenda, et redigeerida", "login": "Logi sisse", "logout": "Logi välja", "loading_auth": "OpenStreetMapiga ühendamine...", @@ -540,7 +541,8 @@ "splash": { "welcome": "Tere tulemast OpenStreetMapi redaktorisse iD", "text": "iD on kasutajasõbralik ja samas võimas töövahend parima vaba maailmakaardi täiendamiseks. See on versioon {version}. Rohkem infot võib leida veebilehelt {website} ja vigadest saab teatada lehel {github}.", - "walkthrough": "Alusta tutvustust" + "walkthrough": "Alusta tutvustust", + "start": "Redigeeri kohe" }, "source_switch": { "live": "live", @@ -563,6 +565,10 @@ "tag_suggests_area": "Silt {tag} viitab, et joon peaks olema ala, kuid see pole ala.", "deprecated_tags": "Iganenud sildid: {tags}" }, + "zoom": { + "in": "Suurenda", + "out": "Vähenda" + }, "cannot_zoom": "Ei ole võimalik rohkem välja suumida selles vaates.", "full_screen": "Lülita täisekraanile", "gpx": { diff --git a/dist/locales/fa.json b/dist/locales/fa.json index c5189af8e..f5b2955f3 100644 --- a/dist/locales/fa.json +++ b/dist/locales/fa.json @@ -3,7 +3,7 @@ "modes": { "add_area": { "title": "محدوده", - "description": "افزودن پارک‌ها، ساختمان‌ها، دریاچه‌ها و سایر محدوده‌ها به نقشه.", + "description": "افزودن پارک‌ها، ساختمان‌ها، دریاچه‌ها و سایر محدوده‌ها به نقشه.", "tail": "برای کشیدن محدوده‌هایی مثل پارک، دریاچه، یا ساختمان روی نقشه کلیک کنید." }, "add_line": { @@ -299,6 +299,7 @@ "localized_translation_language": "انتخاب زبان", "localized_translation_name": "نام" }, + "zoom_in_edit": "برای ویرایش زوم کنید", "login": "ورود", "logout": "خروج", "loading_auth": "در حال اتصال به OpenStreetMap...", @@ -315,8 +316,11 @@ "rateLimit": "این API برای کاربران ثبت‌نام نکرده محدود است. برای رفع این مشکل میتوانید وارد شوید." }, "commit": { + "title": "آپلود در اوپن استریت مپ", "upload_explanation": "تغییراتی که بارگذاری میکنید در همه ی نقشه هایی که از داده های OpenStreetMap استفاده میکنند پدیدار میشوند.", "upload_explanation_with_user": "تفییراتی که شما به عنوان {user} بارگذاری میکنید در همه ی نقشه هایی که از داده های OpenStreetMap استفاده میکنند پدیدار میشوند.", + "request_review": "مایل به بازنگری در ویرایش های خود هستم", + "save": "بارگزاری", "cancel": "لغو", "changes": "{count} تغییر", "warnings": "اخطارها", @@ -332,6 +336,31 @@ "list": "ویرایش توسط {users}", "truncated_list": "ویرایش توسط {users} و {count} نفر دیگر" }, + "info_panels": { + "background": { + "title": "پس زمینه", + "zoom": "بزرگنمایی", + "description": "توضیح", + "resolution": "وضوح", + "accuracy": "دقت", + "unknown": "نامعلوم" + }, + "history": { + "title": "تاریخچه", + "last_edit": "آخرین ویرایش", + "unknown": "نامعلوم", + "link_text": "سابقه در openstreetmap.org" + }, + "location": { + "title": "مکان" + }, + "measurement": { + "title": "اندازه", + "length": "درازا", + "area": "ناحیه", + "location": "مکان" + } + }, "geometry": { "point": "نقطه", "vertex": "رأس", @@ -375,6 +404,12 @@ "yes": "بله", "no": "خیر" }, + "radio": { + "structure": { + "default": "پیش‌فرض", + "layer": "لایه" + } + }, "add": "اضافه کردن", "none": "هیچ", "node": "گره", @@ -475,7 +510,8 @@ }, "restore": { "heading": "شما تغییرات ذخیره نشده دارید", - "description": "آیا مایلید تغییرات ذخیره نشده جلسه قبل را بازیابی کنید؟" + "description": "آیا مایلید تغییرات ذخیره نشده جلسه قبل را بازیابی کنید؟", + "restore": " بازگردانی تغییرات من" }, "save": { "title": "ذخیره", @@ -536,6 +572,7 @@ "used_with": "با {type} استفاده شده" }, "validations": { + "disconnected_highway": "قطع اتصال", "untagged_point": "نقطه برچسب نخورده", "untagged_point_tooltip": "یک نوع عنصر را برای توصیف موجودیت این نقطه انتخاب کنید.", "untagged_line": "خط برچسب گذاری نشده", @@ -546,6 +583,10 @@ "tag_suggests_area": "برچسب {tag} پیشنهاد میکند خط باید یک فضا باشد، اما این یک فضا نیست", "deprecated_tags": "برچسب های توصیه شده: {tags}" }, + "zoom": { + "in": "بزرگ‌نمایی", + "out": "کوچک‌نمایی" + }, "cannot_zoom": "در حالت فعلی بیش از این نمیتوان کوچک نمایی کرد.", "full_screen": "تعویض صفحه‌نمایش کامل", "mapillary_images": { @@ -695,12 +736,17 @@ "address": { "label": "آدرس", "placeholders": { + "block_number": "شماره بلوک ", + "block_number!jp": "بلوک", "city": "شهر", + "city!jp": "شهر/شهرستان/روستا/بخش", "city!vn": "شهر", "conscriptionnumber": "123", "country": "کشور", "county": "کشور", + "county!jp": "ناحیه", "district": "منطقه", + "district!vn": "محله/ شهر / منطقه", "floor": "طبقه", "hamlet": "دهکده", "housename": "نام خانه", @@ -709,6 +755,7 @@ "place": "مکان", "postcode": "کدپستی", "province": "استان", + "province!jp": "ساختمان ریاست جمهوری", "quarter": "ربع", "state": "ایالت", "street": "خيابان", @@ -762,6 +809,9 @@ "amenity": { "label": "نوع" }, + "animal_shelter": { + "label": "پناهگاه حیوانات" + }, "area/highway": { "label": "نوع" }, @@ -4368,6 +4418,224 @@ "terms": "<ترجمه با مترادف یا اصطلاحات مشابه برای 'بند'، با کاما جدا می‌شوند>" } } + }, + "imagery": { + "Bing": { + "description": "نقشه های ماهواره ای aerial", + "name": "نقشه های Bing" + }, + "DigitalGlobe-Premium": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "نقشه های ماهواره ای Premium DigitalGlobe ", + "name": "نقشه های DigitalGlobe Premium" + }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "مرزها و تاریخ نقشه ها از زوم 14 به بالا قابل مشاهده هستند", + "name": "فهرست DigitalGlobe Premium" + }, + "DigitalGlobe-Standard": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "نقشه های ماهواره ای استاندارد DigitalGlobe Premium", + "name": "نقشه های استاندارد DigitalGlobe Premium" + }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "مرزها و تاریخ نقشه ها از زوم 14 به بالا قابل مشاهده هستند", + "name": "فهرست DigitalGlobe Premium" + }, + "EsriWorldImagery": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "نقشه های Esri world ", + "name": "نقشه های Esri world " + }, + "MAPNIK": { + "attribution": { + "text": "©همکاران OSM و CC-BY-SA" + }, + "description": "لایه پیش فرض OSM", + "name": "نقشه های OSM ( استاندارد)" + }, + "Mapbox": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "نقشه های ماهواره ای aerial", + "name": "نقشه های ماهواره ای Mapbox" + }, + "OSM_Inspector-Addresses": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : آدرسها" + }, + "OSM_Inspector-Geometry": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : ژئومتری" + }, + "OSM_Inspector-Highways": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : اتوبانها" + }, + "OSM_Inspector-Multipolygon": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : محدوده" + }, + "OSM_Inspector-Places": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : مکانها" + }, + "OSM_Inspector-Routing": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : خطوط" + }, + "OSM_Inspector-Tagging": { + "attribution": { + "text": "مرکز ژئوگرافی GmbH با همکاری OSM و CC-BY-SA" + }, + "name": "بازرسی OSM : برچسبها" + }, + "US-TIGER-Roads-2012": { + "name": "جاده های TIGER 2012" + }, + "US-TIGER-Roads-2014": { + "description": "از زوم +16 به بعد اطلاعات مالکیت ملکی در آمریکا دیده میشود.از زومهای کمتر فقط تغییراتی که در OSM مربوط به سال 2006 ثبت شده است قابل دیدن است", + "name": "جاده های TIGER 2014" + }, + "US-TIGER-Roads-2017": { + "description": "زود = داده های دولتی سرشماری آمریکا. قرمز : داده های بدون منبع در OSM", + "name": "جاده های TIGER 2017" + }, + "Waymarked_Trails-Cycling": { + "attribution": { + "text": "© Sarah Hoffmann, CC by-SA 3.0, map data OpenStreetMap contributors, ODbL 1.0" + }, + "name": "مسیرهای مشخص شده: دوچرخه سواری" + }, + "Waymarked_Trails-Hiking": { + "attribution": { + "text": "© Sarah Hoffmann, CC by-SA 3.0, map data OpenStreetMap contributors, ODbL 1.0" + }, + "name": "مسیرهای مشخص شده: پیاده روی" + }, + "Waymarked_Trails-MTB": { + "attribution": { + "text": "© Sarah Hoffmann, CC by-SA 3.0, map data OpenStreetMap contributors, ODbL 1.0" + }, + "name": "مسیرهای مشخص شده: MTB" + }, + "Waymarked_Trails-Skating": { + "attribution": { + "text": "© Sarah Hoffmann, CC by-SA 3.0, map data OpenStreetMap contributors, ODbL 1.0" + }, + "name": "مسیرهای مشخص شده: اسکیت" + }, + "Waymarked_Trails-Winter_Sports": { + "attribution": { + "text": "© Michael Spreng, CC by-SA 3.0, map data OpenStreetMap contributors, ODbL 1.0" + }, + "name": "مسیرهای مشخص شده: ورزشهای زمستانی" + }, + "basemap.at": { + "attribution": { + "text": "basemap.at" + }, + "description": "نقشه اصلی استرالیا، نقشه ثبت شده دولتی", + "name": "basemap.at" + }, + "basemap.at-orthofoto": { + "attribution": { + "text": "basemap.at" + }, + "description": "Orthofoto layer provided by basemap.at. \"Successor\" of geoimage.at imagery.", + "name": "basemap.at Orthofoto" + }, + "hike_n_bike": { + "attribution": { + "text": "© OpenStreetMap contributors" + }, + "name": "پیاده روی و دوچرخه سواری" + }, + "mapbox_locator_overlay": { + "attribution": { + "text": "ارسال نظرات" + }, + "description": "برای کمک به شما ویژگی های اصلی نمایش میدهد.", + "name": "لایه یاب" + }, + "openpt_map": { + "attribution": { + "text": "© OpenStreetMap contributors, CC-BY-SA" + }, + "name": "OpenPT Map (overlay)" + }, + "osm-gps": { + "attribution": { + "text": "© OpenStreetMap contributors" + }, + "description": "آپلود GPSهای عمومی در OSM", + "name": "ظبط مسیر در OSM" + }, + "osm-mapnik-black_and_white": { + "attribution": { + "text": "© OpenStreetMap contributors, CC-BY-SA" + }, + "name": "OSM ( استاندارد سیاه و سفید )" + }, + "osm-mapnik-german_style": { + "attribution": { + "text": "© OpenStreetMap contributors, CC-BY-SA" + }, + "name": "SOM (نمای آلمانی)" + }, + "qa_no_address": { + "attribution": { + "text": "Simon Poole, Data ©OpenStreetMap contributors" + } + }, + "skobbler": { + "attribution": { + "text": "© Tiles: skobbler Map data: OpenStreetMap contributors" + } + }, + "stamen-terrain-background": { + "attribution": { + "text": "Map tiles by Stamen Design, under CC BY 3.0" + }, + "name": "لجن زار" + }, + "tf-cycle": { + "attribution": { + "text": "Maps © Thunderforest, Data © OpenStreetMap contributors" + }, + "name": "Thunderforest OpenCycleMap" + }, + "tf-landscape": { + "attribution": { + "text": "Maps © Thunderforest, Data © OpenStreetMap contributors" + }, + "name": "Thunderforest Landscape" + } } } } \ No newline at end of file diff --git a/dist/locales/fr.json b/dist/locales/fr.json index b1b1bbfc9..a7f232467 100644 --- a/dist/locales/fr.json +++ b/dist/locales/fr.json @@ -4937,6 +4937,10 @@ "name": "Passage à niveau (route)", "terms": "Passage à niveau (voiture)" }, + "railway/light_rail": { + "name": "Métro léger", + "terms": "Métro léger" + }, "railway/milestone": { "name": "Borne kilométrique ferroviaire", "terms": "" @@ -5391,8 +5395,8 @@ "terms": "Vendeur de poissons, fruits de mer, écailler" }, "shop/second_hand": { - "name": "Magasin caritatif", - "terms": "Magasin caritatif" + "name": "Dépôt-vente/produits d'occasion", + "terms": "Produits de seconde main" }, "shop/shoes": { "name": "Magasin de chaussures", diff --git a/dist/locales/he.json b/dist/locales/he.json index f9fbde887..a30f46cbd 100644 --- a/dist/locales/he.json +++ b/dist/locales/he.json @@ -53,6 +53,9 @@ "cancel_draw": { "annotation": "ביטל ציור." }, + "change_role": { + "annotation": "שינוי התפקיד של חבר ביחס." + }, "change_tags": { "annotation": "שינה תגיות." }, @@ -62,82 +65,721 @@ "line": "להפוך קו זה למעגלי.", "area": "להפוך איזור זה למעגלי." }, + "key": "ע", "annotation": { "line": "הקו עוגל", "area": "האיזור עוגל." - } + }, + "not_closed": "אי אפשר להפוך את זה למעגלי כי זאת לא לולאה.", + "too_large": "אי אפשר להפוך את זה למעגלי כי התצוגה של הפריט היא חלקית.", + "connected_to_hidden": "אי אפשר להפוך את זה למעגלי כי הפריט מחובר לתכונה נסתרת." }, "orthogonalize": { "title": "ריבוע", "description": { "line": "ריבוע פינות בקו זה", "area": "ריבוע פינות באיזור זה" + }, + "key": "ר", + "annotation": { + "line": "הפיכת הקצוות של קו לריבוע.", + "area": "הפיכת הקצוות של שטח לריבוע." + }, + "not_squarish": "אי אפשר להפוך את זה לריבוע כי הצורה לא ריבועית.", + "too_large": "אי אפשר להפוך את זה לריבוע כי התצוגה של הפריט היא חלקית.", + "connected_to_hidden": "אי אפשר להפוך את זה לריבוע כי הפריט מחובר לתכונה נסתרת." + }, + "straighten": { + "title": "יישור", + "description": "יישור הקו הזה.", + "key": "ש", + "annotation": "יישור קו.", + "too_bendy": "אי אפשר ליישר את הקו הזה כיוון שהוא יותר מדי מכופף.", + "connected_to_hidden": "אי אפשר ליישר את הקו הזה כי הוא מחובר לתכונה נסתרת." + }, + "delete": { + "title": "מחיקה", + "description": { + "single": "מחיקת התכונה הזו לצמיתות.", + "multiple": "מחיקת התכונות האלה לצמיתות." + }, + "annotation": { + "point": "נמחקה נקודה.", + "vertex": "נמחק מפרק מדרך.", + "line": "נמחק קו.", + "area": "נמחק שטח.", + "relation": "נמחק יחס.", + "multiple": "נמחקו {n} תכונות." + }, + "too_large": { + "single": "אי אפשרות למחוק תכונה זו כי הפריט לא מופיע במלואו." + } + }, + "add_member": { + "annotation": "נוסף חבר ליחס." + }, + "delete_member": { + "annotation": "חבר הוסר מהיחס." + }, + "connect": { + "annotation": { + "point": "חיבור של דרך לנקודה.", + "vertex": "חיבור של דרך לדרך אחרת.", + "line": "חיבור של דרך לקו.", + "area": "חיבור של דרך לשטח." + } + }, + "disconnect": { + "title": "ניתוק", + "description": "ניתוק הקווים/השטחים האלה זה מזה.", + "key": "נ", + "annotation": "קווים/שטחים מנותקים." + }, + "merge": { + "title": "מיזוג", + "description": "מיזוג התכונות האלה.", + "key": "ז", + "annotation": "{n} תכונות מוזגו.", + "not_eligible": "אי אפשר למזג תכונות אלו." + }, + "move": { + "title": "העברה", + "description": { + "single": "העברת התכונה הזאת למיקום שונה.", + "multiple": "העברת התכונות האלו למיקום שונה." + }, + "key": "ע", + "annotation": { + "point": "העברת נקודה.", + "vertex": "העברת מפרק בדרך.", + "line": "העברת קו.", + "area": "העברת שטח.", + "multiple": "העברת מספר תכונות." + } + }, + "rotate": { + "title": "הטייה", + "description": { + "single": "הטיית התכונה הזאת מסביב לנקודת המרכז שלה.", + "multiple": "הטיית התכונות האלו סביב נקודות המרכז שלהן." + }, + "key": "ט", + "annotation": { + "line": "הטיית קו.", + "area": "הטיית שטח.", + "multiple": "טיית מגוון תכונות." + }, + "incomplete_relation": { + "single": "אי אפשר להטות תכונה זו כיוון שהיא לא התקבלה לחלוטין.", + "multiple": "אי אפשר להטות את התכונות האלו כיוון שהן לא התקבלו לחלוטין." + }, + "too_large": { + "single": "לא ניתן להטות את התכונה הזאת כיוון שאינה גלויה מספיק.", + "multiple": "לא ניתן להטות את התכונות הללו כיוון שאינן גלויות מספיק." + }, + "connected_to_hidden": { + "single": "לא ניתן להטות את התכונה הזאת כיוון שהיא מחוברת לתכונה נסתרת.", + "multiple": "אי אפשר להטות את התכונות האלה כיוון שחלקן מחוברות לתכונות נסתרות." + } + }, + "reverse": { + "title": "היפוך", + "description": "הפיכת הכיוון של הקו הזה.", + "key": "פ", + "annotation": "קו התהפך." + }, + "split": { + "title": "פיצול", + "description": { + "line": "פיצול הקו הזה לשניים במפרק הזה.", + "area": "פיצול הגבול של השטח הזה לשניים.", + "multiple": "פיצול הקווים/שטח של המפרק הזה לשניים." + }, + "key": "צ", + "annotation": { + "line": "פיצול קו.", + "area": "פיצול גבול שטח.", + "multiple": "פיצול {n} קווים/גבולות שטחים." + }, + "not_eligible": "אי אפשר לפצל קווים בהתחלה או בסוף.", + "multiple_ways": "יש כאן יותר מדי קווים לפיצול.", + "connected_to_hidden": "אי אפשר לפצל את זה כי זה מחובר לתכונה נסתרת." + }, + "restriction": { + "help": { + "select": "יש ללחוץ כדי לבחור במקטע דרך.", + "toggle": "יש ללחוץ כדי להפעיל/להשבית הגבלות פנייה.", + "toggle_on": "יש ללחוץ כדי להוסיף הגבלה מסוג „{restriction}”.", + "toggle_off": "יש ללחוץ כדי להסיר הגבלה מסוג „{restriction}”." + }, + "annotation": { + "create": "נוספה הגבלת פנייה", + "delete": "נמחקה הגבלת פנייה" } } }, + "undo": { + "tooltip": "ביטול: {action}", + "nothing": "אין מה לבטל." + }, + "redo": { + "tooltip": "ביצוע חוזר: {action}", + "nothing": "אין ביטולים לביצוע חוזר." + }, + "tooltip_keyhint": "קיצור דרך:", + "browser_notice": "עורך זה נתמך ב־Firefox,‏ Chrome,‏ Safari,‏ Opera ו־Internet Explorer 11 ומעלה. נא לשדרג את הדפדפן שלך או להשתמש ב־Potlatch 2 כדי לערוך את המפה.", + "translate": { + "translate": "תרגום", + "localized_translation_label": "שם רב־לשוני", + "localized_translation_language": "בחירת שפה", + "localized_translation_name": "שם" + }, + "zoom_in_edit": "יש להתקרב כדי לערוך", + "login": "כניסה", + "logout": "יציאה", + "loading_auth": "מתבצעת התחברות ל־OpenStreetMap…", + "report_a_bug": "דיווח על תקלה", + "help_translate": "עזרה בתרגום", + "feature_info": { + "hidden_warning": "{count} תכונות נסתרות", + "hidden_details": "התכונות האלו מוסתרות כרגע: {details}" + }, + "status": { + "error": "לא ניתן להתחבר ל־API.", + "offline": "ה־API אינו זמין. נא לנסות לערוך מאוחר יותר.", + "readonly": "ה־API הוא לקריאה בלבד. יהיה עליך להמתין כדי לשמור את השינויים שלך.", + "rateLimit": "ה־API מגביל חיבורים אלמוניים. ניתן לתקן זאת על ידי כניסה למערכת." + }, + "commit": { + "title": "העלאה ל־OpenStreetMap", + "upload_explanation": "השינויים שיועלו על ידיך יהיו גלויים בכל המפות שמשתמשות בנתונים של OpenStreetMap.", + "upload_explanation_with_user": "השינויים שיועלו על ידיך בשם {user} יהיו גלויים בכל המפות שמשתמשות בנתונים של OpenStreetMap.", + "request_review": "ארצה סיוע בסקירת העריכות שלי.", + "save": "העלאה", + "cancel": "ביטול", + "changes": "{count} שינויים", + "download_changes": "הורדת קובץ osmChange", + "warnings": "אזהרות", + "modified": "השתנה", + "deleted": "נמחק", + "created": "נוצר", + "about_changeset_comments": "על הערות לערכות שינויים", + "about_changeset_comments_link": "//wiki.openstreetmap.org/wiki/Good_changeset_comments", + "google_warning": "ציינת את Google בהערה הזאת: כדאי לזכור כי העתקה ממפות Google אסורה בתכלית האיסור.", + "google_warning_link": "http://www.openstreetmap.org/copyright" + }, + "contributors": { + "list": "עריכות מאת {users}", + "truncated_list": "עריכות מאת {users} ו־{count} נוספים" + }, + "info_panels": { + "key": "ח", + "background": { + "key": "ר", + "title": "רקע", + "zoom": "תקריב", + "vintage": "סגנון מיושן", + "source": "מקור", + "description": "תיאור", + "resolution": "רזולוציה", + "accuracy": "דיוק", + "unknown": "לא ידוע", + "show_tiles": "הצגת אריחים", + "hide_tiles": "הסתרת אריחים", + "show_vintage": "הצגת סגנון מיושן", + "hide_vintage": "הסתרת סגנון מיושן" + }, + "history": { + "key": "ה", + "title": "היסטוריה", + "selected": "{n} נבחרו", + "version": "גרסה", + "last_edit": "עריכה אחרונה", + "edited_by": "נערך על ידי", + "changeset": "ערכת שינויים", + "unknown": "לא ידוע", + "link_text": "היסטוריה ב־openstreetmap.org" + }, + "location": { + "key": "ק", + "title": "מיקום", + "unknown_location": "מיקום לא ידוע" + }, + "measurement": { + "key": "ד", + "title": "מדידה", + "selected": "{n} נבחרו", + "geometry": "צורה", + "closed": "סגורה", + "center": "מרכז", + "perimeter": "היקף", + "length": "אורך", + "area": "שטח", + "location": "מיקום", + "metric": "מטרי", + "imperial": "אימפריאלית" + } + }, + "geometry": { + "point": "נקודה", + "vertex": "קודקוד", + "line": "קו", + "area": "שטח", + "relation": "יחס" + }, + "geocoder": { + "search": "חיפוש בכל העולם…", + "no_results_visible": "אין תוצאות באזור הגלוי של המפה", + "no_results_worldwide": "לא נמצאו תוצאות" + }, + "geolocate": { + "title": "הצגת המיקום שלי", + "locating": "בטעינה, נא להמתין…" + }, + "inspector": { + "no_documentation_combination": "אין תיעוד זמין לצירוף תגיות זה", + "no_documentation_key": "אין תיעוד זמין למפתח זה", + "documentation_redirect": "תיעוד זה הופנה לעמוד חדש", + "show_more": "הצגת עוד", + "view_on_osm": "הצגה ב־openstreetmap.org", + "all_fields": "כל השדות", + "all_tags": "כל התגיות", + "all_members": "כל החברים", + "all_relations": "כל היחסים", + "new_relation": "יחס חדש…", + "role": "תפקיד", + "choose": "בחירת סוג תכונה", + "results": "{n} תוצאות לחיפוש {search}", + "reference": "הצגה בוויקי של OpenStreetMap", + "back_tooltip": "שינוי תכונה", + "remove": "הסרה", + "search": "חיפוש", + "multiselect": "תכונות נבחרות", + "unknown": "לא ידוע", + "incomplete": "<לא התקבל>", + "feature_list": "חיפוש תכונות", + "edit": "עריכת תכונה", + "check": { + "yes": "כן", + "no": "לא", + "reverser": "שינוי הכיוון" + }, + "radio": { + "structure": { + "type": "סוג", + "default": "בררת מחדל", + "layer": "שכבה" + } + }, + "add": "הוספה", + "none": "אין", + "node": "מפרק", + "way": "דרך", + "relation": "יחס", + "location": "מיקום", + "add_fields": "הוספת שדה:" + }, + "background": { + "title": "רקע", + "description": "הגדרות רקע", + "key": "ר", + "percent_brightness": "{opacity}% בהירות", + "none": "אין", + "best_imagery": "מקור התמונה המוכר והטוב ביותר למיקום זה", + "switch": "חזרה לרקע זה", + "custom": "התאמה אישית", + "custom_button": "עריכת רקע בהתאמה אישית", + "fix_misalignment": "התאמת הזחה של תמונת רקע", + "imagery_source_faq": "מאיפה מגיעה התמונה הזאת?", + "reset": "איפוס", + "offset": "ניתן לגרור כל מקום באזור האפור להלן כדי להתאים את הזחת תמונות הרקע או להקליד את ערכי ההזחה במטרים.", + "minimap": { + "description": "מפה מוקטנת", + "tooltip": "הצגת מפה מרוחקת כדי לסייע באיתור האיזור שמוצג כרגע.", + "key": "/" + } + }, + "map_data": { + "title": "נתוני מפה", + "description": "נתוני מפה", + "key": "נ", + "data_layers": "שכבות נתונים", + "layers": { + "osm": { + "tooltip": "נתוני מפה מ־OpenStreetMap", + "title": "נתוני OpenStreetMap" + } + }, + "fill_area": "אזורי מילוי", + "map_features": "תכונות מפה", + "autohidden": "תכונות אלו הוסתרו אוטומטית כיוון שעלולות להופיע יותר מדי על המסך. ניתן להתקרב כדי לערוך אותן.", + "osmhidden": "התכונות האלו הוסתרו אוטומטית כיוון שהשכבה ב־OpenStreetMap מוסתרת." + }, + "feature": { + "points": { + "description": "נקודות", + "tooltip": "נקודות עניין" + }, + "traffic_roads": { + "description": "דרכי תנועה", + "tooltip": "כבישים מהירים, רחובות וכו׳" + }, + "service_roads": { + "description": "כבישי שירות", + "tooltip": "כבישי שירות, מתחמי חנייה, מסלולים וכו׳" + }, + "paths": { + "description": "שבילים", + "tooltip": "מדרכות, שבילים להולכי רגל, שבילי אופניים וכו׳" + }, + "buildings": { + "description": "בניינים", + "tooltip": "בניינים, מקלטים, חניות מקורות וכו׳" + }, + "landuse": { + "description": "תכונות שטח", + "tooltip": "יערות, קרקע חקלאית, פארקים, אזורי מגורים, תעשייה וכו׳" + }, + "boundaries": { + "description": "גבולות", + "tooltip": "גבולות מנהליים" + }, + "water": { + "description": "תכונות מים", + "tooltip": "נחלים, נהרות, מעיינות, בריכות וכו׳" + }, + "rail": { + "description": "תכונות רכבת", + "tooltip": "מסילות רכבת" + }, + "power": { + "description": "תכונות חשמל", + "tooltip": "קווי חשמל, תחנות תת־קרקעיות, מפעלי אנרגיה וכו׳" + }, + "past_future": { + "description": "עבר/עתיד", + "tooltip": "מקומות מוצעים, בבנייה, נטושים, הרוסים וכו׳" + }, + "others": { + "description": "אחרים", + "tooltip": "כל השאר" + } + }, + "area_fill": { + "wireframe": { + "description": "ללא מילוי (מסגרת דקיקה)", + "tooltip": "הפעלת מצב מסגרת דקיקה מאפשר לך לראות בקלות את התמונה ברקע.", + "key": "ד" + }, + "partial": { + "description": "מילוי חלקי", + "tooltip": "השטחים מצויירים עם מילוי רק סביב הקצוות הפנימיים שלהם. (מומלץ לממפים מתחילים)" + }, + "full": { + "description": "מילוי מלא", + "tooltip": "השטחים מצויירים עם מילוי מלא." + } + }, "restore": { + "heading": "יש לך שינויים שלא נשמרו", + "description": "לשחזר שינויים שלא נשמרו מהפעלות עריכה קודמות?", "restore": "שחזור השינויים שלי", "reset": "התעלמות מהשינויים שלי" }, "save": { "title": "שמירה", - "no_changes": "אין שינויים לשמירה" + "help": "סקירת השינויים שלך והעלאה שלהם ל־OpenStreetMap כדי להנגיש אותם למשתמשים אחרים.", + "no_changes": "אין שינויים לשמירה", + "error": "אירעו שגיאות בעת ניסיון השמירה", + "status_code": "השרת החזיר קוד מצב {code}", + "unknown_error_details": "נא לוודא שיש לך חיבור לאינטרנט", + "uploading": "השינויים נשלחים אל OpenStreetMap…", + "unsaved_changes": "יש לך שינויים שלא נשמרו", + "conflict": { + "header": "פתרון עריכות סותרות", + "count": "סתירה {num} מתוך {total}", + "previous": "< הקודמת", + "next": "הבאה >", + "keep_local": "להשאיר את שלי", + "keep_remote": "להשתמש בשלהם", + "restore": "שחזור", + "delete": "להשאיר מחוק", + "download_changes": "או להוריד קובץ osmChange", + "done": "כל הסתירות נפתרו!" + } + }, + "merge_remote_changes": { + "conflict": { + "deleted": "תכונה זו נמחקה על ידי {user}.", + "location": "תכונה זו הועברה גם על ידיך וגם על ידי {user}.", + "nodelist": "המפרקים עברו שינוי על ידיך וגם על ידי {user}.", + "memberlist": "החברים ביחס עברו שינוי גם על ידיך וגם על ידי {user}." + } + }, + "success": { + "just_edited": "הרגע ערכת את OpenStreetMap!", + "view_on_osm": "צפייה ב־OSM", + "facebook": "שיתוף בפייסבוק", + "twitter": "שיתוף בטוויטר", + "google": "שיתוף ב־Google+‎", + "help_link_text": "פרטים" }, "confirm": { + "okay": "אישור", "cancel": "ביטול" }, + "splash": { + "welcome": "ברוך בואך לעורך המפות iD של OpenStreetMap", + "walkthrough": "להתחיל במדריך", + "start": "לערוך כעת" + }, "source_switch": { - "live": "חי" + "live": "חי", + "lose_changes": "יש לך שינויים שלא נשמרו. החלפת שרת המפות יסלק אותם. לעבור שרת?", + "dev": "פיתוח" }, "version": { "whats_new": "מה חדש ב־iD {version}" }, "tag_reference": { - "description": "תיאור" + "description": "תיאור", + "on_wiki": "{tag} ב־wiki.osm.org", + "used_with": "בשימוש עם {type}" }, + "validations": { + "disconnected_highway": "דרך ראשית מנותקת", + "disconnected_highway_tooltip": "דרכים אמורות להיות מחוברות לדרכים אחרות או לכניסות לבניינים.", + "untagged_point": "נקודה ללא תיוג", + "untagged_point_tooltip": "נא לבחור בסוג תכונה שמתאר מה הנקודה הזו.", + "untagged_line": "קו ללא תיוג", + "untagged_line_tooltip": "נא לבחור בסוג תכונה שמתאר מה הקו הזה.", + "untagged_area": "שטח ללא תיוג", + "untagged_area_tooltip": "נא לבחור בסוג תכונה שמתאר מה השטח הזה.", + "untagged_relation": "יחס בלתי מתויג", + "untagged_relation_tooltip": "נא לבחור סוג תכונה שמתארת מה היחס הזה.", + "many_deletions": "בחירתך תמחק {n} תכונות. להמשיך בפעולה? אם כן, התכונות תימחקנה מהמפה לכל מי שרואה את openstreetmap.org.", + "tag_suggests_area": "התגית {tag} רומזת שהקו אמור להיות שטח, אך זה לא שטח", + "deprecated_tags": "תגיות שנזנחו: {tags}" + }, + "zoom": { + "in": "התקרבות", + "out": "התרחקות" + }, + "cannot_zoom": "לא ניתן להתקרב יותר במצב הנוכחי.", + "full_screen": "החלפת מצב מסך מלא", "gpx": { - "local_layer": "קובץ מקומי" + "local_layer": "קובץ מקומי", + "drag_drop": "יש לגרור ולהשליך קובצי ‎.gpx,‏ ‎.geojson או ‎.kml לעמוד או ללחוץ על הכפתור שמשמאל לעיון", + "zoom": "התקרבות לשכבה", + "browse": "עיון אחר קובץ" + }, + "mapillary_images": { + "tooltip": "תמונות בהתמקדות על רחובות מ־Mapillary", + "title": "שכבת תמונה (Mapillary)" + }, + "mapillary_signs": { + "tooltip": "תמרורים מ־Mapillary (חובה להפעיל שכבת תמונה)", + "title": "שכבת תמרורים (Mapillary)" + }, + "mapillary": { + "view_on_mapillary": "צפייה בתמונה הזאת ב־Mapillary" + }, + "openstreetcam_images": { + "tooltip": "תמונות בהתמקדות על רחובות מ־OpenStreetCam", + "title": "שכבת תמרורים (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "צפייה בתמונה הזאת ב־OpenStreetCam" }, "help": { - "title": "עזרה" + "title": "עזרה", + "key": "ע", + "help": "# עזרה\n\nזהו עורך של [OpenStreetMap](http://www.openstreetmap.org/), המפה\nהעולמית החופשית והזמינה לעריכה. ניתן להשתמש בו כדי להוסיף ולעדכן\nנתונים באזור שלך, למטרת יצירת מפה עולמית בקוד פתוח ונתונים פתוחים\nשתטיב עם כולם.\n\nהעריכות שלך במפה הזאת יהיו חשופים בפני כל המשתמשים\nב־OpenStreetMap. כדי לערוך, עליך\n[להיכנס](https://www.openstreetmap.org/login).\n\n[העורך iD](http://ideditor.com/) הוא מיזם שיתופי ש[קוד\nהמקור שלו זמין ב־GitHub](https://github.com/openstreetmap/iD).\n" }, "intro": { + "ok": "אישור", "graph": { "block_number": "", + "city": "קריית שלושה", "county": "", "district": "", "hamlet": "", "neighbourhood": "", + "postcode": "9051501", "province": "", "quarter": "", "state": "", "subdistrict": "", "suburb": "", - "countrycode": "il" + "countrycode": "il", + "name": { + "1st-avenue": "אחד העם", + "2nd-avenue": "שדרת הדודאים", + "4th-avenue": "שדרות הארבעה", + "5th-avenue": "שדרת החמישה", + "8th-avenue": "שמיני עצרת", + "elm-street": "רח׳ אלם", + "french-street": "רח׳ צרפת", + "garden-street": "רח׳ גן השקמים", + "lincoln-avenue": "סמטת אשכול", + "lowrys-books": "סטימצקי", + "lynns-garage": "המוסך של ניסים", + "main-street-barbell": "אימון משה ברחוב העצמאות", + "main-street-cafe": "קפה רחוב העצמאות", + "main-street-fitness": "חיטוב רחוב העצמאות", + "main-street": "רחוב העצמאות", + "maple-street": "רחוב דבש", + "marina-park": "רחוב הנמל", + "market-street": "רחוב השוק", + "memory-isle-park": "פארק אבני זכרון", + "memory-isle": "אבני זכרון", + "millard-street": "רח׳ הרב פנחס מילר", + "moore-street": "רח׳ מור", + "morris-avenue": "שד׳ פישר מוריס", + "mural-mall": "קניון איילון", + "paisanos-bar-and-grill": "השווארמה של הרצל", + "pine-street": "רחוב האורן", + "pizza-hut": "פיצה פדאל", + "river-drive": "כביש הנחל", + "river-road": "דרך הנחל", + "river-street": "רחוב הנחל", + "riverside-cemetery": "בית העלמין שליד הנחל", + "riverwalk-trail": "מסלול הליכה לצד הנחל", + "riviera-theatre": "תאטרון עידה", + "rocky-river": "נהר ששון", + "saint-joseph-river": "נחל רבי עקיבא", + "scidmore-park-petting-zoo": "גן חיות המחמד פרץ", + "scidmore-park": "פארק פרץ", + "scouter-park": "פארק מועלם", + "sherwin-williams": "יחיא-עבודי", + "south-street": "כפר דרום", + "southern-michigan-bank": "בנק צפון אשקלון", + "spring-street": "מעלה אביב", + "sturgeon-river-road": "דרך נחל רביבים", + "three-rivers-city-hall": "בניין העירייה של קריית שלושה", + "three-rivers-elementary-school": "בית הספר היסודי של קריית שלושה", + "three-rivers-fire-department": "לוחמי האש של קריית שלושה", + "three-rivers-high-school": "תיכון קריית שלושה", + "three-rivers-middle-school": "חטיבת קריית שלושה", + "three-rivers-municipal-airport": "נמל התעופה העירוני של קריית שלושה", + "three-rivers-post-office": "משרד הדואר של קריית שלושה", + "three-rivers-public-library": "הספרייה הציבורית של קריית שלושה", + "three-rivers": "קריית שלושה", + "washington-street": "רחוב בן גוריון", + "water-street": "רחוב הנחל", + "world-fare": "יריד עולם" + } + }, + "welcome": { + "title": "ברוך בואך", + "welcome": "ברוך בואך! המדריך האינטראקטיבי הזה ילמד אותך את יסודות העריכה ב־OpenStreetMap.", + "practice": "כל המידע במדריך הזה מיועד לתרגול בלבד וכל העריכות שתתבצענה במדריך לא תישמרנה.", + "words": "המדריך הזה יציג מספר מילים ורעיונות חדשים. בעת הצגת מילה חדשה נשתמש בכתב *נטוי*.", + "mouse": "ניתן להשתמש בכל התקן קלט כדי לערוך את המפה אך מדריך זה יוצא מנקודת הנחה שיש לך עכבר עם שני כפתורים. **אם ברצונך לחבר עכבר כדאי לעשות זאת ואז ללחוץ על אישור.**" + }, + "navigation": { + "title": "ניווט", + "nodes_ways": "ב־OpenStreetMap, נקודות לעתים נקראות *מפרקים* וקווים או שטחים נעתים נקראים *דרכים*.", + "click_townhall": "ניתן לבחור את כל התכונות במפה על ידי לחיצה עליהם. **ניתן ללחוץ על הנקודה כדי לבחור אותה**", + "selected_townhall": "נהדר! הנקודה נבחרה. התכונות הנבחרות מופיעות עם זריחה מהבהבת.", + "close_townhall": "**יש לסגור את עורך התכונות על ידי לחיצה על escape או על הכפתור {button} בפינה העליונה.**", + "search_street": "ניתן גם לחפש תכונות בתצוגה הנוכחית או בכל רחבי העולם. **חיפוש אחר ‚{name}’.**", + "choose_street": "**יש לבחור {name} מהרשימה כדי לבחור אותו.**" }, "points": { - "title": "נקודות" + "title": "נקודות", + "search_cafe": "ישנן מגוון תכונות שניתן לייצג בנקודות. הנקודה שהרגע הוספת היא בית קפה. **חיפוש אחר ‚{preset}’.**", + "choose_cafe": "**יש לבחור {preset} מהרשימה.**" }, "areas": { - "title": "אזורים" + "title": "אזורים", + "search_playground": "**חיפוש אחר ‚{preset}’.**", + "choose_playground": "**יש לבחור {preset} מהרשימה.**", + "choose_field": "**יש לבחור {field} מהרשימה.**", + "retry_add_field": "לא בחרת את השדה {field}. נא לנסות שוב." }, "lines": { "title": "קווים", + "retry_intersect": "הדרך צריכה להשתלב עם {name}. נא לנסות שוב!", + "choose_category_road": "**יש לבחור {category} מהרשימה.**", + "choose_preset_residential": "ישנן מגוון סוגים של דרכים אך הדרך הזאת היא דרך עירונית. **יש לבחור בסוג {preset}.**", + "retry_preset_residential": "לא בחרת את הסוג {preset}. **יש ללחוץ כאן כדי לבחור שוב.**", + "did_name_road": "נראה מעולה! עכשיו נלמד איך לעדכן צורה של קו.", + "update_line": "לפעמים יש צורך לשנות צורה של קו קיים. להלן דרך שלא נראית כמו שצריך.", + "add_node": "נוכל להוסיף עוד מפרקים לקו זה כדי לשפר את הצורה שלו. אחת הדרכים להוסיף מפרק היא ללחוץ לחיצה כפולה על הקו במקום בו ברצונך להוסיף מפרק. **יש ללחוץ לחיצה כפולה על הקו כדי ליצור מפרק חדש.**", + "finish_drag_endpoint": "המיקום הזה נראה נהדר. **יש לשחרר את הכפתור השמאלי בעכבר כדי לסיים את הגרירה.**", + "rightclick_intersection": "הרחוב האמתי האחרון הוא {street1}, כך שאנחנו *נפצל* את {street2} בצומת הזה ונסיר את כל מה שמעליו. **יש ללחוץ עם הכפתור הימני בעכבר על מפרק הצומת.**", + "split_intersection": "**יש ללחוץ על הלחצן {button} כדי לפצל {street}.**", + "retry_split": "לא לחצת על לחצן הפיצול. נא לנסות שוב.", + "multi_delete": "**יש ללחוץ על הכפתור {button} כדי למחוק את הקווים העודפים.**", "retry_delete": "לא לחצת על כפתור המחיקה. נא לנסות שוב." }, "buildings": { - "title": "בניינים" + "title": "בניינים", + "add_building": "OpenStreetMap הוא מסד הנתונים הגדול ביותר של בניינים.{br}ניתן לסייע בשיפור מסד הנתונים הזה על ידי תיעוד בניינים שאינם ממופים עדיין. **יש ללחוץ על כפתור השטח {button} כדי להוסיף שטח חדש.**", + "start_building": "בואו נוסיף את הבית הזה למפה על ידי מעקב אחר קו מתאר החיצוני שלו.{br}יש לעקוב אחר קו המתאר החיצוני של הבניין בצורה המדויקת ביותר ככל הניתן. **יש ללחוץ על רווח כדי להציב מפרק התחלה באחת מפינות הבניין.**", + "retry_building": "נראה כי נתקלת בבעיה בהצבת המפרקים בפינות הבניין. נא לנסות שוב!", + "choose_category_building": "**יש לבחור ב{category} מהרשימה.**", + "choose_preset_house": "ישנו מגוון רחב של סוגי סניינים, אך הסוג הזה הוא בוודאות בית.{br}במקרה של ספק בנוגע לסוג, זה בסדר גמור פשוט לבחור בסוג מגנה גנרי. **יש לבחור את הסוג {preset}.**", + "close": "**יש ללחוץ על escape או על הכפתור {button} כדי לסגור את עורך התכונות.**", + "rightclick_building": "**ניתן לבחור את הבניין שיצרת ולהציג את תפריט העריכה בלחיצה ימנית.**", + "square_building": "הבית שזה עתה הוספת ייראה אפילו טוב יותר עם פינות מרובעות לחלוטין. **יש ללחוץ על הכפתור {button} כדי להפוך את צורת הבניין לריבוע.**", + "retry_square": "לא לחצת על הכפתור המרובע. נא לנסות שוב.", + "done_square": "ראית איך שפינות הבניין התגבשו לכדי צורה? יש עוד טריקים שימושיים כאלה.", + "add_tank": "בשלב הבא אנו נסמן את מיכל האחסון עגול הזה. **יש ללחוץ על כפתור השטח {button} כדי להוסיף שטח חדש.**", + "start_tank": "אל דאגה, לא חובה לצייר עיגול מושלם. עליך פשוט לצייר שטח בתוך המיכל שנוגע בקצוות שלו. **יש ללחוץ עם העכבר או עם מקש הרווח כדי להציב נקודת התחלה על קצה המיכל.**", + "search_tank": "**חיפוש אחר ‚{preset}’.**", + "choose_tank": "**יש לבחור {preset} מהרשימה.**", + "rightclick_tank": "**ניתן לבחור את מיכל האחסון שיצרת ולהציג את תפריט העריכה בלחיצה ימנית.**", + "circle_tank": "**יש ללחוץ על הכפתור {button} כדי להפוך את המיכל לעיגול.**", + "retry_circle": "לא לחצת על הכפתור לעיגול. נא לנסות שוב.", + "play": "עבודה נפלאה! כעת ניתן להתנסות באיתור מספר בניינים נוספים ולנסות פקודות אחרות בתפריט העריכה. **לאחר סיום ההתנסות, כדי לעבור לפרק הבא יש ללחוץ על ‚{next}’.**" }, "startediting": { - "save": "לא לשכוח לשמור את השינויים שלך לעתים תכופות!" + "title": "להתחיל בעריכה", + "help": "סיימת את ההכנות לקראת עריכת OpenStreetMap!{br} ניתן לחזור על המדריך הזה בכל עת או לצפות בתיעוד נוסף על ידי לחיצה על הכפתור העזרה {button} או לחיצה על המקש ‚{key}’.", + "shortcuts": "ניתן לצפות ברשימה של פקודות לצד קיצורי המקלדת שלהם על ידי לחיצה על המקש ‚{key}’.", + "save": "לא לשכוח לשמור את השינויים שלך לעתים תכופות!", + "start": "בואו נתחיל למפות!" } }, "shortcuts": { "title": "קיצורי מקלדת", "tooltip": "הצגת מסך קיצורי המקלדת", + "toggle": { + "key": "?" + }, + "key": { + "alt": "Alt", + "backspace": "Backspace", + "cmd": "Cmd", + "ctrl": "Ctrl", + "delete": "Delete", + "del": "Del", + "end": "End", + "enter": "Enter", + "esc": "Esc", + "home": "Home", + "option": "Option", + "pause": "Pause", + "pgdn": "PgDn", + "pgup": "PgUp", + "return": "Return", + "shift": "Shift", + "space": "רווח" + }, + "gesture": { + "drag": "גרירה" + }, + "or": "-או-", "browsing": { + "title": "סיור", "navigation": { - "title": "ניווט" + "title": "ניווט", + "pan": "סריקת המפה", + "pan_more": "סריקת המפה תוך מעבר מסך מלא", + "zoom": "התקרבות/התרחקות", + "zoom_more": "התקרבות/התרחקות בהרבה" }, "help": { "title": "עזרה", @@ -150,6 +792,7 @@ "background_switch": "חזרה לרקע האחרון", "map_data": "הצגת אפשרויות נתוני מפה", "fullscreen": "כניסה למצב מסך מלא", + "wireframe": "החלפת מצב גבול דקיק", "minimap": "החלפת תצוגת מפה מוקטנת" }, "selecting": { @@ -160,14 +803,30 @@ }, "with_selected": { "edit_menu": "החלפת תצוגה של תפריט עריכה" + }, + "vertex_selected": { + "previous": "קפיצה למפרק הקודם", + "next": "קפיצה למפרק הבא", + "first": "קפיצה למפרק הראשון", + "last": "קפיצה למפרק האחרון", + "change_parent": "החלפת דרך ההורה" } }, "editing": { "title": "עריכה", "drawing": { - "title": "ציור" + "title": "ציור", + "add_point": "מצב ‚הוספת נקודה’", + "add_line": "מצב ‚הוספת קו’", + "add_area": "מצב ‚הוספת שטח’", + "place_point": "הצבת נקודה", + "disable_snap": "יש להחזיק כדי להשבית הצמדת נקודות", + "stop_line": "סיום ציור קו או שטח" }, "operations": { + "continue_line": "להמשיך את הקו במפרק הנבחר", + "merge": "שילוב (מיזוג) התכונות הנבחרות", + "disconnect": "ניתוק תכונות במפרק הנבחר", "split": "פיצול קו לשניים במפרק הנבחר", "reverse": "ביפוך כיוון קו", "move": "העברת התכונות הנבחרות", @@ -187,7 +846,12 @@ "tools": { "title": "כלים", "info": { - "title": "מידע" + "title": "מידע", + "all": "החלפת מצב תצוגת כל חלוניות המידע", + "background": "החלפת מצב תצוגת הרקע", + "history": "החלפת מצב תצוגת חלונית היסטוריה", + "location": "החלפת מצב תצוגת חלונית מיקום", + "measurement": "החלפת מצב תצוגת חלונית מדידה" } } } diff --git a/dist/locales/hu.json b/dist/locales/hu.json index d1ecb41f4..91b06d9b6 100644 --- a/dist/locales/hu.json +++ b/dist/locales/hu.json @@ -670,6 +670,13 @@ "mapillary": { "view_on_mapillary": "E kép megtekintése a Mapillary weboldalon" }, + "openstreetcam_images": { + "tooltip": "Utcafotók az OpenStreetCam-ról", + "title": "Fotó réteg (OpenStreetCam)" + }, + "openstreetcam": { + "view_on_openstreetcam": "A kép megtekintése az OpenStreetCam weboldalon" + }, "help": { "title": "Súgó", "key": "H", @@ -1215,6 +1222,9 @@ "aeroway": { "label": "Típus" }, + "agrarian": { + "label": "Termékek" + }, "amenity": { "label": "Típus" }, @@ -1583,6 +1593,9 @@ "generator/type": { "label": "Típus" }, + "government": { + "label": "Típus" + }, "grape_variety": { "label": "Szőlőfajták" }, @@ -1910,6 +1923,7 @@ "label": "Fizetési típusok" }, "phases": { + "label": "Fázisok", "placeholder": "1, 2, 3..." }, "phone": { @@ -1991,6 +2005,9 @@ "railway": { "label": "Típus" }, + "rating": { + "label": "Generátorteljesítmény" + }, "recycling_accepts": { "label": "Elfogad" }, @@ -2229,7 +2246,11 @@ "label": "Megfigyelt terület" }, "switch": { - "label": "Típus" + "label": "Típus", + "options": { + "circuit_breaker": "Áramkör megszakító", + "earthing": "Földelés" + } }, "tactile_paving": { "label": "Vakvezető burkolat" @@ -2306,6 +2327,8 @@ "transformer": { "label": "Típus", "options": { + "converter": "Átalakító", + "generator": "Áramfejlesztő", "yes": "Ismeretlen" } }, @@ -2343,6 +2366,9 @@ "stratovolcano": "Rétegvulkán" } }, + "voltage": { + "label": "Feszültség" + }, "wall": { "label": "Típus" }, @@ -3288,6 +3314,7 @@ "terms": "Órás" }, "craft/confectionery": { + "name": "Cukrász", "terms": "" }, "craft/distillery": { @@ -3392,6 +3419,7 @@ "terms": "ács-állványozó" }, "craft/sculptor": { + "name": "Szobrász", "terms": "" }, "craft/shoemaker": { @@ -3671,9 +3699,11 @@ "terms": "Ösvény" }, "highway/pedestrian_area": { + "name": "Sétáló övezet", "terms": "" }, "highway/pedestrian_line": { + "name": "Sétálóutca", "terms": "" }, "highway/primary": { @@ -3908,9 +3938,11 @@ "terms": "ipar, gyárterület, gyár, ipari park" }, "landuse/industrial/scrap_yard": { + "name": "Szeméttelep", "terms": "" }, "landuse/industrial/slaughterhouse": { + "name": "Vágóhíd", "terms": "" }, "landuse/landfill": { @@ -3990,6 +4022,7 @@ "terms": "park, pihenőhely" }, "landuse/religious": { + "name": "Vallási övezet", "terms": "" }, "landuse/residential": { diff --git a/dist/locales/ko.json b/dist/locales/ko.json index ec9b68494..9808ded18 100644 --- a/dist/locales/ko.json +++ b/dist/locales/ko.json @@ -1124,6 +1124,9 @@ "aeroway": { "label": "유형" }, + "agrarian": { + "label": "상품 종류" + }, "amenity": { "label": "유형" }, @@ -1272,7 +1275,7 @@ "label": "유형" }, "collection_times": { - "label": "모은 시간" + "label": "수거 시간" }, "comment": { "label": "바뀜집합 댓글", @@ -1309,7 +1312,7 @@ } }, "crop": { - "label": "곡물" + "label": "작물" }, "crossing": { "label": "유형" @@ -1397,7 +1400,7 @@ "label": "차량 탑승 중 이용 가능" }, "duration": { - "label": "지속기간", + "label": "소요 시간", "placeholder": "00:00" }, "electrified": { @@ -1502,6 +1505,9 @@ "generator/type": { "label": "유형" }, + "government": { + "label": "유형" + }, "grape_variety": { "label": "포도 품종" }, @@ -1520,7 +1526,7 @@ "label": "종류" }, "healthcare/speciality": { - "label": "특징" + "label": "전문 분야" }, "height": { "label": "높이(미터)" @@ -1811,7 +1817,7 @@ } }, "park_ride": { - "label": "공원과 라이드" + "label": "파크 앤드 라이드" }, "parking": { "label": "유형", @@ -1903,7 +1909,7 @@ "label": "전원 공급 장치" }, "produce": { - "label": "생산고" + "label": "생산물" }, "product": { "label": "제품" @@ -2151,6 +2157,15 @@ "surveillance/zone": { "label": "감시 구역" }, + "switch": { + "label": "개폐기 유형", + "options": { + "circuit_breaker": "회로차단기", + "disconnector": "단로형 개폐기", + "earthing": "접지 개폐기", + "mechanical": "기계적 개폐기" + } + }, "tactile_paving": { "label": "점자블록" }, @@ -2185,7 +2200,7 @@ "label": "관광" }, "tower/construction": { - "label": "공사중", + "label": "건축 형태", "placeholder": "Guyed, Lattice, Concealed, ..." }, "tower/type": { @@ -2202,6 +2217,9 @@ }, "placeholder": "단단함, 거의 단단함, 부드러움..." }, + "trade": { + "label": "상품 종류" + }, "traffic_calming": { "label": "유형" }, @@ -2225,8 +2243,12 @@ "options": { "auto": "단권변압기", "auxiliary": "보조변압기", + "converter": "변환기 변압기", "distribution": "배전용 변압기", - "phase_angle_regulator": "이상변압기" + "generator": "발전기 변압기", + "phase_angle_regulator": "이상변압기", + "traction": "가공 전차선 변압기", + "yes": "알 수 없음" } }, "trees": { @@ -2258,6 +2280,7 @@ "volcano/type": { "label": "화산 종류", "options": { + "scoria": "스코리아", "shield": "순상화산", "stratovolcano": "성층화산" } @@ -2400,7 +2423,7 @@ }, "aeroway/helipad": { "name": "헬기 착륙장", - "terms": "헬기 착륙장" + "terms": "헬리콥터,헬리포트" }, "aeroway/runway": { "name": "활주로", @@ -2427,7 +2450,7 @@ }, "amenity/animal_shelter": { "name": "동물 보호소", - "terms": "동물 보호소" + "terms": "입양,고양이,개,말,애완동물,강아지,맹금,파충류,구조" }, "amenity/arts_centre": { "name": "아트 센터", @@ -2483,7 +2506,7 @@ }, "amenity/cafe": { "name": "카페", - "terms": "카페" + "terms": "비스트로,커피,차" }, "amenity/car_rental": { "name": "자동차 대여", @@ -2499,15 +2522,15 @@ }, "amenity/casino": { "name": "카지노", - "terms": "카지노, 도박장" + "terms": "도박장,도박,노름,크랩스,포커,블랙잭" }, "amenity/charging_station": { "name": "충전소", - "terms": "충전소" + "terms": "전기차" }, "amenity/childcare": { "name": "보육/육아", - "terms": "보육/육아" + "terms": "탁아소,고아원,보육원" }, "amenity/cinema": { "name": "영화관", @@ -2598,7 +2621,7 @@ }, "amenity/fuel": { "name": "주유소", - "terms": "주유소" + "terms": "휘발유,연료,가솔린,프로페인,경유,LNG,CNG,바이오디젤" }, "amenity/grave_yard": { "name": "묘지", @@ -2812,7 +2835,7 @@ }, "amenity/theatre": { "name": "극장", - "terms": "극장" + "terms": "공연,연극,뮤지컬" }, "amenity/toilets": { "name": "화장실", @@ -2828,7 +2851,7 @@ }, "amenity/vending_machine": { "name": "자동판매기", - "terms": "자동판매기" + "terms": "자판기" }, "amenity/vending_machine/cigarettes": { "name": "담배 자판기", @@ -3132,7 +3155,7 @@ }, "building/school": { "name": "학교 건물", - "terms": "학교 건물" + "terms": "초등학교,중학교,고등학교" }, "building/semidetached_house": { "name": "반분리된 주택", @@ -3464,13 +3487,15 @@ "terms": "워터 해저드" }, "healthcare": { - "name": "의료 시설" + "name": "의료 시설", + "terms": "치료소,의원,병원,의사,질병,건강,기관,수술" }, "healthcare/alternative": { "name": "대체의학" }, "healthcare/alternative/chiropractic": { - "name": "카이로프랙틱" + "name": "카이로프랙틱", + "terms": "허리,요통,척추" }, "healthcare/audiologist": { "name": "청능사", @@ -3574,6 +3599,12 @@ "name": "경로", "terms": "경로" }, + "highway/pedestrian_area": { + "name": "보행자 지역" + }, + "highway/pedestrian_line": { + "name": "보행자 거리" + }, "highway/primary": { "name": "주요 도로", "terms": "주요 도로" @@ -3731,8 +3762,8 @@ "terms": "길가의 신사" }, "junction": { - "name": "분기점", - "terms": "분기점" + "name": "교차로", + "terms": "삼거리,사거리,오거리" }, "landuse": { "name": "토지 이용", @@ -3743,8 +3774,8 @@ "terms": "텃밭" }, "landuse/aquaculture": { - "name": "양식업", - "terms": "양식업" + "name": "양식장", + "terms": "양어장,갑각류,조류,새우,굴" }, "landuse/basin": { "name": "웅덩이", @@ -3782,7 +3813,7 @@ }, "landuse/forest": { "name": "숲", - "terms": "숲" + "terms": "삼림,산림,나무" }, "landuse/garages": { "name": "차고", @@ -3804,7 +3835,8 @@ "terms": "산업 지역" }, "landuse/industrial/scrap_yard": { - "name": "폐차장" + "name": "폐차장", + "terms": "자동차,폐품,금속,고철,차량" }, "landuse/industrial/slaughterhouse": { "name": "도축장", @@ -3868,7 +3900,7 @@ }, "landuse/orchard": { "name": "과수원", - "terms": "과수원" + "terms": "과일" }, "landuse/plant_nursery": { "name": "식물 양식장", @@ -3899,7 +3931,7 @@ }, "landuse/vineyard": { "name": "포도밭", - "terms": "포도밭" + "terms": "포도원,포도주,와인" }, "leisure": { "name": "여가", @@ -3907,11 +3939,11 @@ }, "leisure/adult_gaming_centre": { "name": "성인용 게임방", - "terms": "성인용 게임방" + "terms": "도박,노름,슬롯머신" }, "leisure/bird_hide": { "name": "탐조대", - "terms": "탐조대" + "terms": "감시대,전망대,조망대,새,조류" }, "leisure/bowling_alley": { "name": "볼링장", @@ -3931,7 +3963,7 @@ }, "leisure/firepit": { "name": "불구덩이", - "terms": "불구덩이" + "terms": "캠프파이어,모닥불" }, "leisure/fitness_centre": { "name": "체육관 / 피트니스 센터", @@ -3966,7 +3998,7 @@ }, "leisure/ice_rink": { "name": "아이스 링크", - "terms": "아이스 링크" + "terms": "아이스하키,스케이팅,컬링" }, "leisure/marina": { "name": "마리나", @@ -4008,6 +4040,10 @@ "name": "비치발리볼 코트", "terms": "비치발리볼 코트" }, + "leisure/pitch/boules": { + "name": "불/보체 코트", + "terms": "보체,리오네즈,페탕크" + }, "leisure/pitch/bowls": { "name": "잔디 볼링장", "terms": "잔디 볼링장" @@ -4088,8 +4124,8 @@ "terms": "경마장 (비 자동차 스포츠)" }, "leisure/water_park": { - "name": "수상공원", - "terms": "워터파크" + "name": "워터파크", + "terms": "물놀이장" }, "line": { "name": "선", @@ -4109,14 +4145,15 @@ }, "man_made/bridge": { "name": "다리", - "terms": "다리" + "terms": "교량" }, "man_made/chimney": { "name": "굴뚝", "terms": "굴뚝" }, "man_made/crane": { - "name": "크레인" + "name": "크레인", + "terms": "기중기" }, "man_made/cutline": { "name": "숲 경계선", @@ -4142,8 +4179,8 @@ "terms": "등대" }, "man_made/mast": { - "name": "돛대", - "terms": "돛대" + "name": "안테나 기둥", + "terms": "안테나,방송탑,송신탑,기지국" }, "man_made/observation": { "name": "전망대", @@ -4155,7 +4192,7 @@ }, "man_made/pier": { "name": "부두", - "terms": "부두" + "terms": "선창" }, "man_made/pipeline": { "name": "파이프라인", @@ -4230,8 +4267,8 @@ "terms": "자연" }, "natural/bare_rock": { - "name": "베어 락", - "terms": "베어 락" + "name": "노출된 암반", + "terms": "바위,암석,기반암" }, "natural/bay": { "name": "만", @@ -4239,7 +4276,7 @@ }, "natural/beach": { "name": "해변", - "terms": "해변" + "terms": "바닷가,연안,해안" }, "natural/cave_entrance": { "name": "동굴 입구", @@ -4247,7 +4284,7 @@ }, "natural/cliff": { "name": "절벽", - "terms": "절벽" + "terms": "벼랑,낭떠러지,급경사면" }, "natural/coastline": { "name": "해안선", @@ -4263,7 +4300,7 @@ }, "natural/grassland": { "name": "초원", - "terms": "초원" + "terms": "사바나" }, "natural/heath": { "name": "황무지", @@ -4271,19 +4308,19 @@ }, "natural/peak": { "name": "정상", - "terms": "정상" + "terms": "봉우리,산꼭대기,정점,첨봉,언덕,산" }, "natural/ridge": { "name": "산등성이", "terms": "산등성이" }, "natural/saddle": { - "name": "안장", - "terms": "안장" + "name": "안부", + "terms": "콜,고개,재,영" }, "natural/sand": { "name": "모래", - "terms": "모래" + "terms": "사막" }, "natural/scree": { "name": "급사면", @@ -4307,7 +4344,7 @@ }, "natural/volcano": { "name": "화산", - "terms": "화산" + "terms": "산,크레이터,분화구" }, "natural/water": { "name": "물", @@ -4327,11 +4364,11 @@ }, "natural/wetland": { "name": "습지", - "terms": "습지" + "terms": "늪,갈대밭,갯벌,간석지" }, "natural/wood": { - "name": "산림", - "terms": "산림" + "name": "삼림", + "terms": "숲,산림,나무" }, "noexit/yes": { "name": "출구 없음", @@ -4352,7 +4389,8 @@ "name": "입양기관" }, "office/advertising_agency": { - "name": "광고 대행사" + "name": "광고 대행사", + "terms": "광고,선전,마케팅" }, "office/architect": { "name": "건축가 사무소" @@ -4380,6 +4418,10 @@ "name": "직업 소개소", "terms": "직업 소개소" }, + "office/energy_supplier": { + "name": "에너지 공급자 사무소", + "terms": "전기,에너지,가스" + }, "office/estate_agent": { "name": "부동산 사무소", "terms": "부동산 사무실,부동산 중개" @@ -4409,6 +4451,10 @@ "name": "보험 사무소", "terms": "보험 사무실" }, + "office/it": { + "name": "IT 사무소", + "terms": "컴퓨터,정보,소프트웨어,기술" + }, "office/lawyer": { "name": "법률 사무소", "terms": "법률 사무실" @@ -4418,7 +4464,8 @@ "terms": "공증인 사무소" }, "office/moving_company": { - "name": "이삿짐센터" + "name": "이삿짐센터", + "terms": "이사" }, "office/newspaper": { "name": "신문사 사무소" @@ -4676,13 +4723,17 @@ "name": "상점", "terms": "가게" }, + "shop/agrarian": { + "name": "농업 용품 가게", + "terms": "농기계,씨앗,종자,농약,살충제,비료,농기구" + }, "shop/alcohol": { "name": "주류 상점", - "terms": "주류 상점, 술집" + "terms": "알코올,술,맥주,와인,포도주" }, "shop/anime": { "name": "애니메이션 가게", - "terms": "애니메이션 가게" + "terms": "만화,일본,코스프레,피규어" }, "shop/antiques": { "name": "골동품 가게", @@ -4690,7 +4741,7 @@ }, "shop/appliance": { "name": "가전 제품 가게", - "terms": "가전 제품 가게" + "terms": "에어컨,기기,식기세척기,건조기,냉장고,그릴,석쇠,주방,부엌,오븐,난로,세탁기" }, "shop/art": { "name": "미술품 가게", @@ -4706,19 +4757,19 @@ }, "shop/bakery": { "name": "제과점", - "terms": "제과점" + "terms": "빵집" }, "shop/bathroom_furnishing": { "name": "화장실 기구 판매점", "terms": "화장실 기구 판매점" }, "shop/beauty": { - "name": "미용실", - "terms": "미용실, 이발소" + "name": "뷰티 샵", + "terms": "스파,살롱,태닝" }, "shop/beauty/nails": { "name": "네일 살롱", - "terms": "네일 살롱" + "terms": "매니큐어,페디큐어" }, "shop/beauty/tanning": { "name": "일광 살롱", @@ -4742,7 +4793,7 @@ }, "shop/books": { "name": "서점", - "terms": "서점" + "terms": "책방" }, "shop/boutique": { "name": "부티크", @@ -4770,7 +4821,7 @@ }, "shop/carpet": { "name": "카펫 가게", - "terms": "카펫 가게" + "terms": "융단,양탄자,깔개" }, "shop/charity": { "name": "자선 쇼핑몰", @@ -4825,8 +4876,8 @@ "terms": "커튼 가게" }, "shop/dairy": { - "name": "낙농장", - "terms": "커튼 가게" + "name": "유제품 가게", + "terms": "우유,달걀,계란,치즈" }, "shop/deli": { "name": "델리", @@ -4850,15 +4901,15 @@ }, "shop/electronics": { "name": "전자 제품 가게", - "terms": "전자 제품 가게" + "terms": "기기,오디오,블루레이,카메라,사진기,컴퓨터,DVD,라디오,스피커,TV,텔레비전,비디오" }, "shop/erotic": { "name": "성인용품 가게", "terms": "성인용품 가게" }, "shop/fabric": { - "name": "직물 저장소", - "terms": "직물 저장소" + "name": "직물 가게", + "terms": "천,옷감,바느질" }, "shop/farm": { "name": "산지 직매", @@ -4881,14 +4932,14 @@ }, "shop/funeral_directors": { "name": "장례식장", - "terms": "장례식장" + "terms": "장의사" }, "shop/furnace": { "name": "퍼니스 스토어" }, "shop/furniture": { "name": "가구점", - "terms": "가구점" + "terms": "의자,소파,식탁,탁자,책상" }, "shop/garden_centre": { "name": "원예 용품점", @@ -4904,11 +4955,11 @@ }, "shop/greengrocer": { "name": "청과상", - "terms": "청과상" + "terms": "과일,채소,야채" }, "shop/hairdresser": { - "name": "이발소", - "terms": "이발소" + "name": "미용실", + "terms": "이발소,미장원" }, "shop/hardware": { "name": "철물점", @@ -4921,7 +4972,8 @@ "name": "약초 가게" }, "shop/hifi": { - "name": "고급 오디오 상점" + "name": "고급 오디오 상점", + "terms": "스테레오,비디오" }, "shop/houseware": { "name": "가정 용품 매장" @@ -4930,7 +4982,8 @@ "name": "실내장식 가게" }, "shop/jewelry": { - "name": "보석 상점" + "name": "보석 상점", + "terms": "다이아몬드,보석,귀금속,반지" }, "shop/kiosk": { "name": "신문 판매대" @@ -4974,10 +5027,12 @@ "terms": "모터사이클 대리점" }, "shop/music": { - "name": "음반 가게" + "name": "음반 가게", + "terms": "CD,레코드판" }, "shop/musical_instrument": { - "name": "악기 상점" + "name": "악기 상점", + "terms": "기타" }, "shop/newsagent": { "name": "신문/잡지 가게" @@ -4986,13 +5041,15 @@ "name": "영양 보조 식품 쇼핑몰" }, "shop/optician": { - "name": "안경점" + "name": "안경점", + "terms": "눈,안경" }, "shop/organic": { "name": "유기농 상품 가게" }, "shop/outdoor": { - "name": "아웃도어 상점" + "name": "아웃도어 상점", + "terms": "캠핑,야영,등산,등반,하이킹" }, "shop/paint": { "name": "페인트 가게" @@ -5007,10 +5064,12 @@ "name": "향수 상점" }, "shop/pet": { - "name": "애완 동물 가게" + "name": "애완동물 가게", + "terms": "동물,고양이,개,물고기,강아지,파충류" }, "shop/photo": { - "name": "사진 가게" + "name": "사진 가게", + "terms": "카메라,사진기,필름" }, "shop/pyrotechnics": { "name": "불꽃놀이 상점" @@ -5022,7 +5081,7 @@ "name": "종교 상점" }, "shop/scuba_diving": { - "name": "스쿠버다이빙 가게" + "name": "스쿠버 다이빙 가게" }, "shop/seafood": { "name": "해산물 가게", @@ -5038,7 +5097,8 @@ "name": "스포츠 용품 가게" }, "shop/stationery": { - "name": "문구점" + "name": "문구점", + "terms": "문방구,카드,종이" }, "shop/storage_rental": { "name": "저장공간 대여소" @@ -5048,7 +5108,8 @@ "terms": "수퍼마켓, 슈퍼마켓" }, "shop/tailor": { - "name": "양복점" + "name": "양복점", + "terms": "양복상,양복전,양복집,옷,정장,슈트" }, "shop/tattoo": { "name": "문신 가게" @@ -5067,7 +5128,8 @@ "terms": "담배 판매업소" }, "shop/toys": { - "name": "완구점" + "name": "완구점", + "terms": "장난감" }, "shop/travel_agency": { "name": "여행사" @@ -5098,7 +5160,8 @@ "name": "수상 스포츠/수영 가게" }, "shop/weapons": { - "name": "무기상점" + "name": "무기상점", + "terms": "탄약,총,칼,나이프" }, "shop/window_blind": { "name": "창문 블라인드 가게" @@ -5139,7 +5202,8 @@ "name": "별장" }, "tourism/gallery": { - "name": "미술관" + "name": "미술관", + "terms": "예술,전시,그림,회화,사진,조각" }, "tourism/guest_house": { "name": "민박" @@ -5368,10 +5432,10 @@ }, "waterway/stream": { "name": "개울", - "terms": "하천" + "terms": "개천,시내,하천,물줄기" }, "waterway/stream_intermittent": { - "name": "간헐천", + "name": "간헐 하천", "terms": "간헐천" }, "waterway/water_point": { diff --git a/dist/locales/nl.json b/dist/locales/nl.json index cecc4f2d4..90e902f55 100644 --- a/dist/locales/nl.json +++ b/dist/locales/nl.json @@ -3558,7 +3558,7 @@ }, "highway/cycleway": { "name": "Fietspad", - "terms": "rijwielpad,fietssnelweg,flitsfietspad" + "terms": "rijwielpad,fietssnelweg,flitsfietspad,fietsoversteekplaats" }, "highway/elevator": { "name": "Lift" @@ -3593,7 +3593,7 @@ }, "highway/path": { "name": "Pad", - "terms": "wandelpad,fietspad,gemengd wandelpad en fietspad,hikepad" + "terms": "wandelpad,fietspad,gemengd wandelpad en fietspad,hikepad,fietsoversteekplaats" }, "highway/primary": { "name": "Hoofdweg", diff --git a/dist/locales/pl.json b/dist/locales/pl.json index e2a8bd431..6bd00448d 100644 --- a/dist/locales/pl.json +++ b/dist/locales/pl.json @@ -1609,6 +1609,9 @@ "generator/type": { "label": "Typ" }, + "government": { + "label": "Rodzaj" + }, "grape_variety": { "label": "Odmiany winorośli" }, @@ -3349,6 +3352,10 @@ "name": "Catering", "terms": "Żywieniowiec, katering" }, + "craft/chimney_sweeper": { + "name": "Kominiarz", + "terms": "kominiarz, zakład kominiarski" + }, "craft/clockmaker": { "name": "Zegarmistrz", "terms": "zegarmistrz" @@ -4516,10 +4523,18 @@ "name": "Biuro", "terms": "Biuro," }, + "office/accountant": { + "name": "Biuro rachunkowe", + "terms": "biuro rachunkowe, księgowy" + }, "office/administrative": { "name": "Biuro samorządowe", "terms": "Urząd" }, + "office/adoption_agency": { + "name": "Ośrodek adopcyjny", + "terms": "ośrodek adopcyjny, adopcja" + }, "office/advertising_agency": { "name": "Agencja reklamowa", "terms": "reklama, agencja reklamowa" @@ -4560,6 +4575,14 @@ "name": "Urząd Stanu Cywilnego", "terms": "stan cywilny,śluby,metryki,rejestracja urodzin" }, + "office/government/tax": { + "name": "Urząd Skarbowy", + "terms": "urząd skarbowy, fiskus" + }, + "office/guide": { + "name": "Przewodnik turystyczny", + "terms": "przewodnik turystyczny" + }, "office/insurance": { "name": "Biuro ubezpieczeń", "terms": "agencja ubezpieczeniowa" diff --git a/dist/locales/pt-BR.json b/dist/locales/pt-BR.json index 66961e3ae..0c7bd93f6 100644 --- a/dist/locales/pt-BR.json +++ b/dist/locales/pt-BR.json @@ -1408,7 +1408,11 @@ "label": "Tipo" }, "crane/type": { - "label": "Tipo de Grua" + "label": "Tipo de Grua", + "options": { + "floor-mounted_crane": "Guindaste montado no chão", + "portal_crane": "Guindaste Pórtico" + } }, "crop": { "label": "Espécie cultivada" @@ -1604,6 +1608,9 @@ "generator/type": { "label": "Tipo" }, + "government": { + "label": "Tipo" + }, "grape_variety": { "label": "Variedades de Uva" }, @@ -3340,6 +3347,9 @@ "name": "Fornecedor de refeições", "terms": "Fornecedor de Mantimentos, Aprovisionador, cozinheiro, encomenda, marmita, PF, refeição," }, + "craft/chimney_sweeper": { + "name": "Limpador de Chaminé" + }, "craft/clockmaker": { "name": "Relojoeiro", "terms": "Relógios, relojoaria, Conserto de relógios, Reparos de relógios" @@ -4544,6 +4554,9 @@ "name": "Escritório Financeiro", "terms": "Escritório Financeiro, Financeiro" }, + "office/forestry": { + "name": "Escritório da Administração Florestal" + }, "office/foundation": { "name": "Escritório de Fundação" }, @@ -4555,6 +4568,9 @@ "name": "Cartório", "terms": "tabelionato, registro civil, registro de imóveis" }, + "office/government/tax": { + "name": "Escritório de Receita e Fisco" + }, "office/guide": { "name": "Escritório de Guia Turístico" }, @@ -4573,6 +4589,9 @@ "name": "Notário", "terms": "Notário, Cartório" }, + "office/moving_company": { + "name": "Escritório de Companhia de Mudanças" + }, "office/newspaper": { "name": "Escritório de Jornal" }, @@ -4580,6 +4599,9 @@ "name": "Sede de ONG", "terms": "ONG Escritório, Departamento de ONG, Organização não governamental" }, + "office/notary": { + "name": "Tabelionato" + }, "office/physician": { "name": "Médico" }, @@ -4590,10 +4612,16 @@ "office/private_investigator": { "name": "Escritório de Detetive" }, + "office/quango": { + "name": "Escritório de Organização Não Governamental Quase Autônoma" + }, "office/research": { "name": "Escritório de Pesquisa", "terms": "pesquisa, pesquisas, pesquisador, escritório" }, + "office/tax_advisor": { + "name": "Escritório de Assessoria Fiscal" + }, "office/telecommunication": { "name": "Escritório de Telecomunicações", "terms": "Escritório de Telecomunicações, Departamento de Telecomunicações" @@ -4605,6 +4633,9 @@ "office/travel_agent": { "name": "Agência de Viagens" }, + "office/water_utility": { + "name": "Escritório de Companhia de Água" + }, "piste": { "name": "Pista de Ski", "terms": "Pista de Ski, Trilha de Ski" @@ -5425,6 +5456,9 @@ "name": "Mirante", "terms": "Mirante" }, + "tourism/wilderness_hut": { + "name": "Abrigo Isolado" + }, "tourism/zoo": { "name": "Zoológico", "terms": "Zoológico, Zoobotânico, Parque Zoológico" diff --git a/dist/locales/pt.json b/dist/locales/pt.json index b9fa9ec8b..d83336cd6 100644 --- a/dist/locales/pt.json +++ b/dist/locales/pt.json @@ -1610,6 +1610,9 @@ "generator/type": { "label": "Tipo" }, + "government": { + "label": "Tipo" + }, "grape_variety": { "label": "Variedades de Castas" }, @@ -3353,6 +3356,10 @@ "name": "Catering", "terms": "Caterer, Catering, Cattering, Comida" }, + "craft/chimney_sweeper": { + "name": "Limpa-Chaminés", + "terms": "chaminé, limpador de chaminés, limpar chaminés" + }, "craft/clockmaker": { "name": "Relojoeiro", "terms": "Clockmaker, Relógios" @@ -4657,6 +4664,7 @@ "terms": "Insurance Office, Seguros, Seguro" }, "office/it": { + "name": "Escritório de Tecnologia da Informação", "terms": "" }, "office/lawyer": { @@ -4695,6 +4703,7 @@ "terms": "Detetive, Detetive Particular" }, "office/quango": { + "name": "Escritório de NGO Governamental", "terms": "" }, "office/research": { @@ -4702,10 +4711,12 @@ "terms": "Research Office, Escritório de Investigação, Centro de Pesquisa" }, "office/surveyor": { + "name": "Empresa de Agrimensura", "terms": "" }, "office/tax_advisor": { - "terms": "" + "name": "Escritório de Assessor Fiscal", + "terms": "Assessoria Fiscal, Acessoria Fiscal, Acecoria Fiscal, Açessoria Fiscal, Açecoria Fiscal, Açesoria Fiscal, Acessor Fiscal, Acecor Fiscal, Açessor Fiscal, Açecor Fiscal, Açesor Fiscal" }, "office/telecommunication": { "name": "Empresa de telecomunicações", @@ -4937,6 +4948,10 @@ "name": "Passagem de nível (estrada)", "terms": "Railway Crossing (Road)" }, + "railway/light_rail": { + "name": "Metro Ligeiro", + "terms": "Metrô leve, metro ligeiro, metropolitano de superfície, veículo leve sobre trilhos, comboio ligeiro" + }, "railway/milestone": { "name": "Marco Quilométrico Ferroviário", "terms": "Railway Milestone, marco quilométrico" @@ -5004,6 +5019,10 @@ "name": "Loja", "terms": "Loja, Venda, Vendedor" }, + "shop/agrarian": { + "name": "Loja de Produtos Agrícolas", + "terms": "produtos agrícolas, produtos agrículas" + }, "shop/alcohol": { "name": "Loja de bebidas alcoólicas", "terms": "Alcool" diff --git a/dist/locales/ru.json b/dist/locales/ru.json index 861ad378e..a165ccf71 100644 --- a/dist/locales/ru.json +++ b/dist/locales/ru.json @@ -360,7 +360,9 @@ "accuracy": "Точность", "unknown": "Неизвестно", "show_tiles": "Показать тайлы", - "hide_tiles": "Спрятать тайлы" + "hide_tiles": "Спрятать тайлы", + "show_vintage": "Показать Vintage", + "hide_vintage": "Скрыть Vintage" }, "history": { "key": "H", @@ -610,7 +612,8 @@ "splash": { "welcome": "Вас приветствует iD — редактор карт OpenStreetMap", "text": "Редактор iD — простой, но мощный инструмент для редактирования лучшей в мире бесплатной открытой карты. Версия программы: {version}. Дополнительную информацию смотрите на {website}, об ошибках сообщайте на {github}.", - "walkthrough": "Запустить обучение" + "walkthrough": "Запустить обучение", + "start": "Редактировать" }, "source_switch": { "live": "основной", @@ -642,6 +645,10 @@ "tag_suggests_area": "Тег {tag} обычно ставится на полигоны, но это не полигон", "deprecated_tags": "Теги устарели: {tags}" }, + "zoom": { + "in": "Приблизить", + "out": "Отдалить" + }, "cannot_zoom": "В текущем режиме дальнейшее отдаление невозможно.", "full_screen": "Во весь экран", "gpx": { @@ -1268,6 +1275,9 @@ "board_type": { "label": "Тип" }, + "boules": { + "label": "Тип" + }, "boundary": { "label": "Тип границы" }, @@ -1275,7 +1285,8 @@ "label": "Бренд" }, "bridge": { - "label": "Тип моста" + "label": "Тип моста", + "placeholder": "По умолчанию" }, "building": { "label": "Тип здания / конструкция" @@ -1286,6 +1297,9 @@ "bunker_type": { "label": "Тип" }, + "cables": { + "placeholder": "1, 2, 3…" + }, "camera/direction": { "label": "Направление (в градусах по часовой стрелке)", "placeholder": "45, 90, 180, 270" @@ -1359,6 +1373,9 @@ "label": "Адрес камеры", "placeholder": "http://example.com/" }, + "content": { + "label": "Содержимое" + }, "country": { "label": "Страна" }, @@ -1387,7 +1404,8 @@ "label": "Типы валюты" }, "cutting": { - "label": "Тип вырубки" + "label": "Тип вырубки", + "placeholder": "По умолчанию" }, "cycle_network": { "label": "Сеть" @@ -1445,6 +1463,9 @@ "description": { "label": "Описание" }, + "devices": { + "placeholder": "1, 2, 3…" + }, "diaper": { "label": "Доступно пеленание" }, @@ -1458,7 +1479,8 @@ "label": "Доступен без выхода из машины" }, "duration": { - "label": "Продолжительность" + "label": "Продолжительность", + "placeholder": "00:00" }, "electrified": { "label": "Электрификация", @@ -1478,7 +1500,8 @@ "placeholder": "example@example.com" }, "embankment": { - "label": "Тип насыпи" + "label": "Тип насыпи", + "placeholder": "По умолчанию" }, "emergency": { "label": "Экстренные службы" @@ -1524,7 +1547,8 @@ "label": "Исправь меня" }, "ford": { - "label": "Тип брода" + "label": "Тип брода", + "placeholder": "По умолчанию" }, "frequency": { "label": "Частота действий" @@ -1560,6 +1584,9 @@ "generator/type": { "label": "Тип" }, + "government": { + "label": "Тип" + }, "grape_variety": { "label": "Сорта винограда" }, @@ -1570,6 +1597,13 @@ "handrail": { "label": "Поручни" }, + "hashtags": { + "label": "Предлагаемые хештеги", + "placeholder": "#пример" + }, + "healthcare": { + "label": "Тип" + }, "healthcare/speciality": { "label": "Специальности" }, @@ -1633,6 +1667,9 @@ "internet_access/ssid": { "label": "SSID (Название сети)" }, + "kerb": { + "label": "Бордюр" + }, "lamp_type": { "label": "Тип" }, @@ -1644,7 +1681,8 @@ "placeholder": "1, 2, 3…" }, "layer": { - "label": "Слой" + "label": "Слой", + "placeholder": "0" }, "leaf_cycle": { "label": "Цикл листвы у деревьев", @@ -1704,6 +1742,9 @@ "man_made": { "label": "Тип" }, + "manhole": { + "label": "Тип" + }, "map_size": { "label": "Покрытие" }, @@ -1870,6 +1911,10 @@ "payment_multi": { "label": "Способы оплаты" }, + "phases": { + "label": "Количество фаз", + "placeholder": "1, 2, 3…" + }, "phone": { "label": "Телефон", "placeholder": "+7 495 1234567" @@ -1957,7 +2002,8 @@ "label": "Номер ворот" }, "ref_golf_hole": { - "label": "Номер лунки" + "label": "Номер лунки", + "placeholder": "1-18" }, "ref_highway_junction": { "label": "Номер съезда" @@ -2170,6 +2216,12 @@ "surveillance/zone": { "label": "Область наблюдения" }, + "switch": { + "label": "Тип", + "options": { + "earthing": "Заземление" + } + }, "tactile_paving": { "label": "Тактильное покрытие" }, @@ -2221,6 +2273,9 @@ }, "placeholder": "Твердая, скорее твёрдая, мягкая" }, + "trade": { + "label": "Тип" + }, "traffic_calming": { "label": "Тип" }, @@ -2240,6 +2295,7 @@ "placeholder": "Отличная, хорошая, плохая…" }, "transformer": { + "label": "Тип", "options": { "auto": "Автотрансформатор", "auxiliary": "Вспомогательный", @@ -2255,7 +2311,8 @@ "label": "Деревья" }, "tunnel": { - "label": "Тип тоннеля" + "label": "Тип тоннеля", + "placeholder": "По умолчанию" }, "vending": { "label": "Тип товаров" @@ -2283,6 +2340,18 @@ "shield": "Щитовидный" } }, + "voltage": { + "label": "Напряжение" + }, + "voltage/primary": { + "label": "Напряжение первичной обмотки" + }, + "voltage/secondary": { + "label": "Напряжение вторичной обмотки" + }, + "voltage/tertiary": { + "label": "Напряжение третичной обмотки" + }, "wall": { "label": "Тип" }, @@ -2311,7 +2380,12 @@ "wikipedia": { "label": "Википедия" }, + "windings": { + "label": "Обмотки", + "placeholder": "1, 2, 3…" + }, "windings/configuration": { + "label": "Конфигурация обмоток", "options": { "open": "Открытый", "zigzag": "Зиг Заг" diff --git a/dist/locales/sl.json b/dist/locales/sl.json index ee5964bee..4ed6dd954 100644 --- a/dist/locales/sl.json +++ b/dist/locales/sl.json @@ -310,6 +310,7 @@ "localized_translation_language": "Izbor jezika", "localized_translation_name": "Naziv" }, + "zoom_in_edit": "Približaj za urejanje", "login": "prijava", "logout": "odjava", "loading_auth": "Vzpostavljanje povezave z OpenStreetMap ...", @@ -610,7 +611,8 @@ "splash": { "welcome": "Dobrodošli v iD, urejevalniku podatkov OpenStreetMap", "text": "Urejevalnik iD je zmogljivo, uporabniku prijazno orodje za vnašanje podatkov na najboljši brezplačni svetovni zemljevid. Uporabljena je zadnja različica {version}. Več podrobnosti o urejevalniku je na voljo na {website}, poročila o hroščih pa se zbirajo na spletišču {github}.", - "walkthrough": "Predstavitev orodja" + "walkthrough": "Predstavitev orodja", + "start": "Uredi takoj" }, "source_switch": { "live": "objavljeno", @@ -642,6 +644,10 @@ "tag_suggests_area": "Oznaka {tag} nakazuje, da črta opisovati območje, vendar pa ni sklenjena", "deprecated_tags": "Zastarele oznake: {tags}" }, + "zoom": { + "in": "Približaj", + "out": "Oddalji" + }, "cannot_zoom": "V trenutnem načinu nadaljnje oddaljevanje pogleda ni mogoče.", "full_screen": "Preklopi celozaslonski način", "gpx": { diff --git a/dist/locales/sv.json b/dist/locales/sv.json index 83d599b4e..9d9295a68 100644 --- a/dist/locales/sv.json +++ b/dist/locales/sv.json @@ -855,7 +855,7 @@ "choose_cafe": "**Välj {preset} i listan.**", "feature_editor": "Punkten är nu markerad som ett café. Med hjälp av objektredigeraren kan vi lägga till mer information om caféet. ", "add_name": "På OpenStreetMap är alla fält valfria, och det är ok att lämna ett fält tomt om du är osäker.{br}Låt oss låtsas att du har lokalkännedom om caféet och vet dess namn. **Lägg till ett namn på caféet.**", - "add_close": "Objektredigeraren komma ihåg alla dina ändringar automatiskt. **När du är klar med att lägga till ett namn, tryck Escape, Enter eller klicka på knappen {button} för att stänga objektredigeraren.**", + "add_close": "Objektredigeraren kommer ihåg alla dina ändringar automatiskt. **När du är klar med att lägga till ett namn, tryck Escape, Enter eller klicka på knappen {button} för att stänga objektredigeraren.**", "reselect": "Ofta existerar redan punkter men är felaktiga eller ofullständiga. Vi kan ändra redan existerande punkter. **Klicka för att markera caféet du just skapade.**", "update": "Låt oss fylla i lite mer information om caféet. Du kan ändra dess namn, ange vad för typ av mat som serveras eller lägga till en adress. **Ändra information om caféet.**", "update_close": "**När du är färdig med att uppdatera caféet, tryck Escape, Enter eller klicka på knappen {button} för att stänga objektredigeraren.**", @@ -872,7 +872,7 @@ "finish_playground": "Slutför området genom att trycka Enter eller genom att trycka igen på antingen första eller sista noden. **Rita färdigt området för lekplatsen.**", "search_playground": "**Sök efter '{preset}'.**", "choose_playground": "**Välj {preset} i listan.**", - "add_field": "Denna lekplats har inget officiellt namn, så vi anger inget i namnfältet.{br}Låt oss lägga till lite andra detaljer om lekplatsen till fältet Beskrivning. **Öppna listan för Lägg till fält.**", + "add_field": "Denna lekplats har inget officiellt namn, så vi anger inget i namnfältet.{br}Låt oss lägga till lite andra detaljer om lekplatsen i fältet Beskrivning. **Öppna listan för Lägg till fält.**", "choose_field": "**Välj {field} i listan.**", "retry_add_field": "Du valde inte fältet {field}. Låt oss försöka igen.", "describe_playground": "**Ange en beskrivning och klicka sedan på knappen {button} för att stänga objektredigeraren.**", @@ -4976,6 +4976,9 @@ "name": "Affär", "terms": "Affär, shop, butik" }, + "shop/agrarian": { + "name": "Jordbruksaffär" + }, "shop/alcohol": { "name": "Vin-och-spritaffär", "terms": "Vinaffär, spritaffär, vin- och sprit, vin- och spritaffär, systemet, systembolaget, bolaget, alkohol, öl, vin, sprit" diff --git a/dist/locales/uk.json b/dist/locales/uk.json index 18ce19a2b..568d49da3 100644 --- a/dist/locales/uk.json +++ b/dist/locales/uk.json @@ -2438,7 +2438,13 @@ "windings/configuration": { "label": "Конфігурація обмоток", "options": { - "delta": "Трикутник" + "delta": "Трикутник", + "leblanc": "зʼєднання Лебланк", + "open": "Незалежні", + "open-delta": "Відкритий трикутник", + "scott": "зʼєднання Скотта", + "star": "Зірка", + "zigzag": "Зиг-Заг" } } }, @@ -2763,6 +2769,10 @@ "name": "Стоянка для мотоциклів", "terms": "стоянка,мотоцикл" }, + "amenity/music_school": { + "name": "Музична школа", + "terms": "музика,школа,навчання,інструмент,гітара,піаніно,фортепіано,рояль,скрипка,труба" + }, "amenity/nightclub": { "name": "Нічний клуб", "terms": "Nightclub, ysxybq rke, нічний клуб, розваги, дискотека, бар" @@ -3346,6 +3356,10 @@ "name": "Організація банкетів", "terms": "постачання, їжа, бенкети, обслуговування, кейтерінг" }, + "craft/chimney_sweeper": { + "name": "Сажотрус", + "terms": "сажа,димар,чистити,труба,димохід" + }, "craft/clockmaker": { "name": "Годинникар", "terms": "годинник, ремонт, годинникар, час" @@ -3455,6 +3469,10 @@ "name": "Такелажник", "terms": "такелаж, вантаж, будівельні ліси" }, + "craft/sculptor": { + "name": "Скульптор", + "terms": "майстерня,скульптура,творець" + }, "craft/shoemaker": { "name": "Чоботар", "terms": "взуття, туфлі, башмак, чобіт, швець, сандалі, " @@ -3731,6 +3749,14 @@ "name": "Стежка", "terms": "Path, cntrf, тропа" }, + "highway/pedestrian_area": { + "name": "Пішохідна зона", + "terms": "майдан,площа,пішохід,зона,територія" + }, + "highway/pedestrian_line": { + "name": "Пішохідна вулиця", + "terms": "пішохід,площа,майдан,плац" + }, "highway/primary": { "name": "Головна дорога", "terms": "Primary Road, ujkjdyf ljhjuf, головна дорога, основна дорога" @@ -3962,6 +3988,14 @@ "name": "Промислова зона", "terms": "завод, фабрика, промисловість, виробництво, робоа, підприємство" }, + "landuse/industrial/scrap_yard": { + "name": "Авторозборка", + "terms": "автомобіль,вживаний,частина,запасна,брухт" + }, + "landuse/industrial/slaughterhouse": { + "name": "Скотобійня", + "terms": "бійня,скот,гов'ядина,телятина,свинина,баранина,м'ясо" + }, "landuse/landfill": { "name": "Звалище", "terms": "Landfill, Pdfkbot, смітник, звалище, полігон" @@ -4038,6 +4072,10 @@ "name": "Зона відпочинку", "terms": "газон,поле,майданчик,відпочинок,дозвілля,громада" }, + "landuse/religious": { + "name": "Територія відправлення релігійних обрядів", + "terms": "храм,церква,костьол,монастир,релігія,обряд,собор" + }, "landuse/residential": { "name": "Житлова зона", "terms": "житло,помешкання,будинок,маєток,садиба,город" @@ -4094,6 +4132,50 @@ "name": "Тренажери на вулиці", "terms": "спорт,качалка,тренування,гімнастика,фітнес" }, + "leisure/fitness_station/balance_beam": { + "name": "Бревно", + "terms": "бревно,балансування,гімнастика,фітнес,фізкультура,спорт,майданчик" + }, + "leisure/fitness_station/box": { + "name": "Козел", + "terms": "козел,стрибати,гімнастичний,фітнес,майданчик" + }, + "leisure/fitness_station/horizontal_bar": { + "name": "Перекладина", + "terms": "перекладина,турник,підтягування,фітнес,майданчик,спорт" + }, + "leisure/fitness_station/horizontal_ladder": { + "name": "Рукохід", + "terms": "горизонтальна,драбина,фітнес,майданчик,руки,ходити,спорт" + }, + "leisure/fitness_station/hyperextension": { + "name": "Гіперекстензія", + "terms": "фітнес,майданчик,тренажер,спорт,спина,прес" + }, + "leisure/fitness_station/parallel_bars": { + "name": "Бруси", + "terms": "паралельні,бруси,віджимання,фітнес,майданчик,спорт,тренажер" + }, + "leisure/fitness_station/push-up": { + "name": "Низька перекладина", + "terms": "перекладина,віджимання,фітнес,майданчик,спорт,тренажер" + }, + "leisure/fitness_station/rings": { + "name": "Кільця", + "terms": "кільця,гімнастика,фітнес,майданчик,спорт,тренажер" + }, + "leisure/fitness_station/sign": { + "name": "Знак", + "terms": "фітнес,майданчик,спорт,знак,опис,вправа" + }, + "leisure/fitness_station/sit-up": { + "name": "Прес", + "terms": "прес,фітнес,майданчик,тренажер,спорт" + }, + "leisure/fitness_station/stairs": { + "name": "Сходи", + "terms": "сходи,фітнес,майданчик,спорт,тренажер" + }, "leisure/garden": { "name": "Сад", "terms": "Garden, cfl, сад" @@ -4497,10 +4579,34 @@ "name": "Офіс", "terms": "Office, jasc, офіс" }, + "office/accountant": { + "name": "Бухгалтер", + "terms": "облік,фінанси,аудит,послуги,бухгалтерія" + }, "office/administrative": { "name": "Канцелярія", "terms": "канцелярія, офіс" }, + "office/adoption_agency": { + "name": "Агенція з усиновлення", + "terms": "офіс,усиновлення,опіка,агенція,сирота" + }, + "office/advertising_agency": { + "name": "Рекламна агенція", + "terms": "реклама,оголошення,теле,відео,радіо,преса" + }, + "office/architect": { + "name": "Архітектор", + "terms": "бюро,архітектура,будівництво,проектування" + }, + "office/association": { + "name": "Неприбуткова організація", + "terms": "спілка,фундація,фонд,НГО,рада" + }, + "office/charity": { + "name": "Благодійна організація", + "terms": "допомога,офіс" + }, "office/company": { "name": "Офіс компанії", "terms": "фірма, підприємство, контора, бюро, юридична особа, Офіс компанії, jasc rjvgfys, Company Office" @@ -4517,6 +4623,10 @@ "name": "Кадрова агенція", "terms": "працевлаштування, робота, пошук роботи, рекрутингова агенція, Кадрова агенція, rflhjdf futywsz, Employment Agency" }, + "office/energy_supplier": { + "name": "Електропостачальна компанія", + "terms": "електрика,споживачі,постачання,офіс,контора" + }, "office/estate_agent": { "name": "Агенція з нерухомості", "terms": "ріелтор, Агенція з нерухомості, futywsz p ythejvjcns, Real Estate Office" @@ -4525,6 +4635,14 @@ "name": "Фінансове управління", "terms": "відділ, банк, департамент" }, + "office/forestry": { + "name": "Лісництво", + "terms": "лісництво,контора" + }, + "office/foundation": { + "name": "Фундація", + "terms": "фундація,фонд,пожертва" + }, "office/government": { "name": "Уряд", "terms": "правління, " @@ -4533,10 +4651,22 @@ "name": "Відділ державної реєстрації актів цивільного стану", "terms": "реєстрація,актів,цивільного,стану,народження,смерть,шлюб,зміна,імені,призвіща,розлучення,громадянин" }, + "office/government/tax": { + "name": "Фіскальна служба", + "terms": "податки,фіскальна,інспекція,служба" + }, + "office/guide": { + "name": "Гід", + "terms": "гід,туризм,лекція,супровід" + }, "office/insurance": { "name": "Страхове бюро", "terms": "страхування" }, + "office/it": { + "name": "ІТ компанія", + "terms": "інформаційні,технології,офіс,компанія" + }, "office/lawyer": { "name": "Адвокатське бюро", "terms": "адвокатура, адвокат " @@ -4545,10 +4675,22 @@ "name": "Нотаріус", "terms": "нотаріус,контора,офіс" }, + "office/moving_company": { + "name": "Перевезення речей", + "terms": "компанія,речі,переїзд,послуги" + }, + "office/newspaper": { + "name": "Редакція газети", + "terms": "газета,редакція,новини,агенція" + }, "office/ngo": { "name": "Недержавна громадська організація", "terms": "офіс неурядової організації" }, + "office/notary": { + "name": "Нотаріус", + "terms": "нотаріус,договір,купівля,продаж,нерухомість,заповіт,спадщина,довіреність" + }, "office/physician": { "name": "Лікар" }, @@ -4556,17 +4698,41 @@ "name": "Політична партія", "terms": "політика, партія" }, + "office/private_investigator": { + "name": "Приватний детектив", + "terms": "офіс,детектив,приватний,розшук,спостереження" + }, + "office/quango": { + "name": "Квазі-НГО", + "terms": "офіс,НГО,громадська,організація,некомерційна,державна" + }, "office/research": { "name": "Дослідницька лабораторія", "terms": "лабораторія, дослідт, випробування, експерименти" }, + "office/surveyor": { + "name": "Експет-оцінщик", + "terms": "експертна,оцінка,будівлі,споруди,траспорт,автомобіль,земельна,ділянка" + }, + "office/tax_advisor": { + "name": "Податкова консультація", + "terms": "податки,консультант,оптимізація,фінансовий,експерт" + }, "office/telecommunication": { "name": "Телекомунікаційна компанія", "terms": "Зв’язок, телекомунікації" }, + "office/therapist": { + "name": "Фізіотерапевт", + "terms": "лікування,процедури,лікарня,лікар,неврологія" + }, "office/travel_agent": { "name": "Туристична агенція" }, + "office/water_utility": { + "name": "Водоканал", + "terms": "водопостачання,водовідведення,каналізація,послуги" + }, "piste": { "name": "Трек / Лижна траса", "terms": "доріжка, з’їзд, спуск " @@ -4589,6 +4755,10 @@ "name": "Острів", "terms": "Island, jcnhsd, архіпелаг, атол, мис, бар’єр, мілина, острівець, риф, коса, острів" }, + "place/islet": { + "name": "Острівець", + "terms": "острів,малий,острівець,риф,банка,атол" + }, "place/isolated_dwelling": { "name": "Маєток", "terms": "Isolated Dwelling,dsljrhtvktyt bnkj,відокремлене житло,маєток" @@ -4625,6 +4795,10 @@ "name": "Село", "terms": "Village, ctkj, село" }, + "playground/balance_beam": { + "name": "Бревно", + "terms": "ігровий,майданчик,бревно,розваги" + }, "playground/basket_spinner": { "name": "Кошик карусель", "terms": "кошик,забавка,гойдалка,крутилка,ігровий,майданчик,діти,дитячий,карусель" @@ -4641,6 +4815,10 @@ "name": "Надувний замок", "terms": "забавка,ігровий,майданчик,діти,дитячий,замок,надувний,горка,пригалка" }, + "playground/horizontal_bar": { + "name": "Перекладина", + "terms": "турник" + }, "playground/rocker": { "name": "Пружинна гойдалка", "terms": "забавка,ігровий,майданчик,діти,дитячий,гойдалка,конячка,літачок,мотоцикл,пружина" @@ -4715,6 +4893,10 @@ "name": "Підстанція", "terms": "підстанція" }, + "power/switch": { + "name": "Розʼєднувач", + "terms": "електричний,роз'єднувач" + }, "power/tower": { "name": "Опора ЛЕП", "terms": "High-Voltage Tower, jgjhf KTG, опора ЛЕП" @@ -4833,6 +5015,10 @@ "name": "Магазини/Майстерні", "terms": "Shop, vfufpbyb vfqcnthys, продаж, послуги, крамниця, магазин" }, + "shop/agrarian": { + "name": "Сільгосптовари", + "terms": "насіння,добрива,пестициди,хімікати,садженці,запасні,частини" + }, "shop/alcohol": { "name": "Алкогольні напої", "terms": "Liquor Store, fkrjujkmys yfgj, алкоголь" @@ -5350,6 +5536,10 @@ "name": "Караван-парк", "terms": "RV Park, rfhfdfy-gfhr, караван-парк" }, + "tourism/chalet": { + "name": "Шале", + "terms": "котедж,туризм" + }, "tourism/gallery": { "name": "Художня галерея", "terms": "музей,мистецтво,виставка,галерея " @@ -5406,6 +5596,10 @@ "name": "Оглядовий майданчик", "terms": "Viewpoint, jukzljddbq vfqlfyxbr, оглядовий майданчик" }, + "tourism/wilderness_hut": { + "name": "Лісова хатинка", + "terms": "притулок,халупа,хатка" + }, "tourism/zoo": { "name": "Зоопарк", "terms": "Zoo,pjjgfhr, зоопарк" diff --git a/dist/locales/vi.json b/dist/locales/vi.json index ded94bebb..82a20347b 100644 --- a/dist/locales/vi.json +++ b/dist/locales/vi.json @@ -1515,6 +1515,9 @@ "generator/type": { "label": "Kiểu" }, + "government": { + "label": "Cấp" + }, "grape_variety": { "label": "Loại Nho" }, @@ -2671,6 +2674,10 @@ "name": "Chỗ Đậu Xe máy", "terms": "chỗ đậu xe máy, đậu xe máy, chỗ đậu mô-tô, chỗ đậu mô tô, đậu mô-tô, chỗ đậu mô tô, chỗ đậu xe hai bánh, đậu xe hai bánh, chỗ đậu xe ba bánh, đậu xe ba bánh, cho dau xe may, dau xe may, cho dau mo-to, cho dau mo to, dau mo-to, dau mo to, cho dau xe hai banh, dau xe hai banh, cho dau xe ba banh, dau xe ba banh" }, + "amenity/music_school": { + "name": "Trường Âm nhạc", + "terms": "trường âm nhạc, trường dạy nhạc, trường nhạc, truong am nhac, truong day nhac, truong nhac" + }, "amenity/nightclub": { "name": "Câu lạc bộ Giải trí", "terms": "câu lạc bộ giải trí, clb giải trí, câu lạc bộ đêm, clb đêm, vũ trường, hộp đêm, câu lạc bộ, sàn nhảy về đêm, cau lac bo giai tri, clb giai tri, cau lac bo dem, clb dem, vu truong, hop dem, cau lac bo, san nhay ve dem" @@ -3254,6 +3261,10 @@ "name": "Suất ăn", "terms": "người suất ăn, nguoi suat an" }, + "craft/chimney_sweeper": { + "name": "Quét Bồ hóng", + "terms": "người quét bồ hóng, người cạo ống khói, thợ quét bồ hóng, thợ quét ống khói, nguoi quet bo hong, nguoi cao ong khoi, tho quet bo hong, tho quet ong khoi" + }, "craft/clockmaker": { "name": "Xây Đồng hồ", "terms": "thợ đồng hồ, người làm đồng hồ, người xây đồng hồ, tho dong ho, nguoi lam dong ho, nguoi xay dong ho" @@ -3363,6 +3374,10 @@ "name": "Xây Giàn", "terms": "người xây giàn, người lắp dựng giàn, nguoi xay gian, nguoi lap dung gian" }, + "craft/sculptor": { + "name": "Nhà Điêu khắc", + "terms": "nhà điêu khắc, thợ chạm, nha dieu khac, tho cham" + }, "craft/shoemaker": { "name": "Đóng Giày", "terms": "thợ đóng giày dép, người đóng giày dép, người làm giày dép, thợ sửa giày dép, người sửa giày dép, tho dong giay dep, nguoi dong giay dep, nguoi lam giay dep, tho sua giay dep, nguoi sua giay dep" @@ -3639,6 +3654,14 @@ "name": "Lối", "terms": "đường mòn, duong mon" }, + "highway/pedestrian_area": { + "name": "Khu vực Đi bộ", + "terms": "khu vực đi bộ, quảng trường, khu vuc di bo, quang truong" + }, + "highway/pedestrian_line": { + "name": "Đường Đi bộ", + "terms": "đường đi bộ, đường dành cho người đi bộ, duong di bo, duong danh cho nguoi di bo" + }, "highway/primary": { "name": "Đường Chính", "terms": "đường chính, quốc lộ, ql, xa lộ, xl, đường liên tỉnh, đlt, duong chinh, quoc lo, xa lo, duong lien tinh" @@ -3815,6 +3838,10 @@ "name": "Lưu vực", "terms": "lưu vực, lưu vực sông, luu vuc, luu vuc song" }, + "landuse/brownfield": { + "name": "Đất Bỏ hoang", + "terms": "đất bỏ hoang, dat bo hoang" + }, "landuse/cemetery": { "name": "Nghĩa địa", "terms": "nghĩa địa, nghĩa trang, bãi tha ma, mộ, nghia dia, nghia trang, bai tha ma, mo" @@ -3854,6 +3881,10 @@ "name": "Cỏ", "terms": "cỏ, đồng cỏ, bãi cỏ, co, dong co, bai co" }, + "landuse/greenfield": { + "name": "Đất Chưa Khai khẩn", + "terms": "đất chưa khai khẩn, đất không khai khẩn, đất chưa phát triển, đất không phát triển, dat chua khai khan, dat khong khai khan, dat chua phat trien, dat khong phat trien" + }, "landuse/harbour": { "name": "Cảng", "terms": "cảng, bến tàu, cang, ben tau" @@ -3862,6 +3893,14 @@ "name": "Đất Công nghiệp", "terms": "đất công nghiệp, khu vực công nghiệp, vùng công nghiệp nhà máy, xưởng, dat cong nghiep, khu vuc cong nghiep, vung cong nghiep, nha may, xuong" }, + "landuse/industrial/scrap_yard": { + "name": "Bãi Phế liệu", + "terms": "phế liệu, ve chai, rác rưởi, sắt vụn, mảnh sắt, xe hơi, xe cộ, gạch vụn, phe lieu, ve chai, rac ruoi, sat vun, manh sat, xe hoi, xe co, gach vun" + }, + "landuse/industrial/slaughterhouse": { + "name": "Lò mổ", + "terms": "lò mổ, lò sát sinh, lò thịt, lo mo, lo sat sinh, lo thit" + }, "landuse/landfill": { "name": "Bãi rác", "terms": "bãi rác thải, bãi rác, bãi chứa rác, bãi chôn rác, bãi chất thải, bãi chôn chất thải, bai rac thai, bai rac, bai chua rac, bai chon rac, bai chat thai, bai chon chat thai" @@ -3938,6 +3977,10 @@ "name": "Sân Giải trí", "terms": "sân giải trí, sân chơi, san giai tri, san choi" }, + "landuse/religious": { + "name": "Khu vực Tôn giáo", + "terms": "khu vực tôn giáo, khu vuc ton giao" + }, "landuse/residential": { "name": "Đất Dân cư", "terms": "đất dân cư, khu vực dân cư, vùng dân cư, khu vực nhà ở, vùng nhà ở, đất dân sinh, khu vực dân sinh, vùng dân sinh, hàng xóm, dat dan cu, khu vuc dan cu, vung dan cu, khu vuc nha o, vung nha o, dat dan sinh, khu vuc dan sinh, vung dan sinh, hang xom" @@ -4106,6 +4149,10 @@ "name": "Đường Chạy", "terms": "đường chạy, đường chạy đua, đường chạy điền kinh, duong chay, duong chay dua, duong chay dien kinh" }, + "leisure/sauna": { + "name": "Tắm hơi", + "terms": "nhà tắm hơi, phòng tắm hơi, nha tam hoi, phong tam hoi" + }, "leisure/slipway": { "name": "Đường Trượt tàu", "terms": "đường trượt tàu, duong truot tau" @@ -4389,10 +4436,34 @@ "name": "Văn phòng", "terms": "văn phòng, sở, van phong, so" }, + "office/accountant": { + "name": "Văn phòng Kế toán", + "terms": "tư vấn kế toán, kế toán viên, văn phòng kế toán, nhân viên kế toán, dịch vụ khai thuế, văn phòng khai thuế, tài chính, tài chánh, tu van ke toan, ke toan vien, van phong ke toan, nhan vien ke toan, dich vu khai thue, van phong khai thue, tai chinh, tai chanh" + }, "office/administrative": { "name": "Cơ quan Địa phương", "terms": "cơ quan địa phương, hội đồng địa phương, công sở địa phương, sở hành chính địa phương, co quan dia phuong, hoi dong dia phuong, cong so dia phuong, so hanh chinh dia phuong" }, + "office/adoption_agency": { + "name": "Cơ quan Nhận Con nuoi", + "terms": "cơ quan nhận con nuôi, văn phòng nhận con nuôi, co quan nhan con nuoi, van phong nhan con nuoi" + }, + "office/advertising_agency": { + "name": "Cơ sở Quảng cáo", + "terms": "cơ sở quảng cáo, văn phòng quảng cáo, co so quang cao, van phong quang cao" + }, + "office/architect": { + "name": "Văn phòng Kiến trúc sư", + "terms": "văn phòng kiến trúc sư, van phong kien truc su" + }, + "office/association": { + "name": "Tổ chức Phi lợi nhuận", + "terms": "tổ chức phi lợi nhuận, tổ chức bất vụ lợi, to chuc phi loi nhuan, to chuc bat vu loi" + }, + "office/charity": { + "name": "Tổ chức Từ thiện", + "terms": "tổ chức từ thiện, hội từ thiện, to chuc tu thien, hoi tu thien" + }, "office/company": { "name": "Văn phòng Công ty", "terms": "văn phòng công ty, văn phòng công ti, văn phòng cty, trụ sở công ty, trụ sở công ti, trụ sở cty, van phong cong ty, van phong cong ti, van phong cty, tru so cong ty, tru so cong ti, tru so cty" @@ -4417,6 +4488,10 @@ "name": "Văn phòng Tài chính", "terms": "văn phòng tài chính, văn phòng tài chánh, van phong tai chinh, van phong tai chanh" }, + "office/forestry": { + "name": "Văn phòng Lâm nghiệp", + "terms": "văn phòng lâm nghiệp, van phong lam nghiep" + }, "office/government": { "name": "Công sở", "terms": "công sở, cơ quan chính phủ, cơ quan chính quyền, cong so, co quan chinh phu, co quan chinh quyen" @@ -4425,10 +4500,18 @@ "name": "Văn phòng Hộ tịch", "terms": "văn phòng hộ tịch, phòng hộ tịch, sở hộ tịch, van phong ho tich, phong ho tich, so ho tich" }, + "office/government/tax": { + "name": "Sở Thuế vụ", + "terms": "sở thuế vụ, văn phòng thuế vụ, văn phòng khai thuế, so thue vu, van phong thue vu, van phong khai thue" + }, "office/insurance": { "name": "Văn phòng Bảo hiểm", "terms": "văn phòng bảo hiểm, van phong bao hiem" }, + "office/it": { + "name": "Văn phòng Tin học", + "terms": "văn phong tin học, văn phòng công nghệ thông tin, văn phòng cntt, van phong tin hoc, van phong cong nghe thong tin, van phong cntt" + }, "office/lawyer": { "name": "Văn phòng Luật sư", "terms": "văn phòng luật sư, van phong luat su" @@ -4437,10 +4520,18 @@ "name": "Văn phòng Công chứng", "terms": "văn phòng công chứng, công chứng viên, di chúc, chứng thư, van phong cong chung, cong chung vien, di chuc, chung thu" }, + "office/newspaper": { + "name": "Văn phòng Tờ báo", + "terms": "văn phòng tờ báo, trụ sở tờ báo, van phong to bao, tru so to bao" + }, "office/ngo": { "name": "Tổ chức Phi chính phủ", "terms": "tổ chức phi chính phủ, văn phòng ngo, văn phòng ong, tổ chức phi lợi nhuận, tổ chức bất vụ lợi, quỹ từ thiện, hiệp hội thương mại, to chuc phi chinh phu, van phong ngo, van phong ong, to chuc phi loi nhuan, to chuc bat vu loi, quy tu thien, hiep hoi thuong mai" }, + "office/notary": { + "name": "Văn phòng Công chứng", + "terms": "văn phòng công chứng, công chứng viên, van phong cong chung, cong chung vien" + }, "office/physician": { "name": "Văn phòng Bác sĩ" }, @@ -4448,10 +4539,18 @@ "name": "Đảng Chính trị", "terms": "văn phòng đảng chính trị, văn phòng đảng chánh trị, van phong dang chinh tri, van phong dang chanh tri" }, + "office/private_investigator": { + "name": "Văn phòng Thám tử Tư", + "terms": "văn phòng thám tử tư, van phong tham tu tu" + }, "office/research": { "name": "Văn phòng Nghiên cứu", "terms": "văn phòng nghiên cứu, van phong nghien cuu" }, + "office/surveyor": { + "name": "Văn phòng Khảo sát", + "terms": "văn phòng khảo sát, văn phòng kiểm sát, văn phòng thanh tra, van phong khao sat, van phong kiem sat, van phong thanh tra" + }, "office/telecommunication": { "name": "Văn phòng Viễn thông", "terms": "văn phòng viễn thông, tiệm viễn thông, cửa hàng viễn thông, trụ sở công ty viễn thông, trụ sở công ti viễn thông, trụ sở cty viễn thông, van phong vien thong, tiem vien thong, cua hang vien thong, tru so cong ty vien thong, tru so cong ti vien thong, tru so cty vien thong" @@ -4481,6 +4580,10 @@ "name": "Đảo", "terms": "đảo, hòn đảo, quần đảo, đảo san hô, san hô, cồn cát, cồn, đá ngầm, chỗ nông, chỗ cạn, dao, hon dao, quan dao, dao san ho, san ho, con cat, con, da ngam, cho nong, cho can" }, + "place/islet": { + "name": "Đảo Nhỏ", + "terms": "đảo nhỏ, hòn đảo nhỏ, dao nho, hon dao nho" + }, "place/isolated_dwelling": { "name": "Chỗ ở Hẻo lánh", "terms": "chỗ ở hẻo lánh, xóm, liên gia, cho o heo lanh, xom, lien gia" @@ -4607,6 +4710,10 @@ "name": "Trạm Điện Phụ", "terms": "trạm điện phụ, tram dien phu" }, + "power/switch": { + "name": "Cầu dao", + "terms": "cầu dao, ngắt điện, ngắt mạch, cau dao, ngat dien, ngat mach" + }, "power/tower": { "name": "Cột điện Cao thế", "terms": "cột điện cao thế, cot dien cao the" diff --git a/dist/locales/zh-CN.json b/dist/locales/zh-CN.json index 3688e4a84..e12536775 100644 --- a/dist/locales/zh-CN.json +++ b/dist/locales/zh-CN.json @@ -1235,7 +1235,7 @@ "label": "类型" }, "artist": { - "label": "艺人" + "label": "艺术家" }, "artwork_type": { "label": "类型" @@ -3216,8 +3216,8 @@ "terms": "商业建筑" }, "building/roof": { - "name": "楼顶", - "terms": "楼顶,房顶,屋顶" + "name": "开放式建筑", + "terms": "大棚,屋顶,上盖,开放式建筑" }, "building/school": { "name": "学校建筑", diff --git a/dist/locales/zh-TW.json b/dist/locales/zh-TW.json index 596ec2828..144fb3900 100644 --- a/dist/locales/zh-TW.json +++ b/dist/locales/zh-TW.json @@ -1610,6 +1610,9 @@ "generator/type": { "label": "種類" }, + "government": { + "label": "類型" + }, "grape_variety": { "label": "葡萄品種" }, @@ -3353,6 +3356,10 @@ "name": "辦桌", "terms": "辦桌,包辦伙食者,備辦宴會者" }, + "craft/chimney_sweeper": { + "name": "煙囪清掃工 ", + "terms": "" + }, "craft/clockmaker": { "name": "製鐘廠", "terms": "製鐘店" From add1bac3f2e5e1bfa7f2eff422cb56fda4347ee3 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 16 Nov 2017 00:43:56 -0500 Subject: [PATCH 077/159] v2.5.1 --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++------------- modules/core/context.js | 2 +- package.json | 2 +- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5aa64321..5689436aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,42 @@ _Breaking changes, which may affect downstream projects or sites that embed iD, --> +# 2.5.1 +##### November 16, 2017 + +#### :sparkles: Usability + +* Keep the highlighted feature selected when cancelling save mode ([#4407]) + +[#4407]: https://github.com/openstreetmap/iD/issues/4407 + +#### :bug: Bugfixes + +* Fix crash when exiting the walkthrough ([#4533]) +* Fix crash in Firefox when doing a lot of zoom (e.g. when pressing "Zoom in to edit" button) ([#4421]) +* Fix garbled label text - vertex labels being drawn over node labels ([#4473]) +* Don't use real filenames in the imagery_used field (for privacy) ([#4530]) +* Don't pull stale data from OSM after switching connection between live/dev servers ([#4288]) +* Switch OpenStreetCam from `http` to `https` to avoid mixed content issues ([#4527]) +* Fix issue where Mapillary sitelink was always linking to first image viewed ([#4526]) + +[#4533]: https://github.com/openstreetmap/iD/issues/4533 +[#4530]: https://github.com/openstreetmap/iD/issues/4530 +[#4527]: https://github.com/openstreetmap/iD/issues/4527 +[#4526]: https://github.com/openstreetmap/iD/issues/4526 +[#4473]: https://github.com/openstreetmap/iD/issues/4473 +[#4421]: https://github.com/openstreetmap/iD/issues/4421 +[#4288]: https://github.com/openstreetmap/iD/issues/4288 + +#### :rocket: Presets + +* Add preset for `railway=light_rail` ([#4531], [#4528], thanks [@Vonter]) + +[#4531]: https://github.com/openstreetmap/iD/issues/4531 +[#4528]: https://github.com/openstreetmap/iD/issues/4528 +[@Vonter]: https://github.com/Vonter + + # 2.5.0 ##### November 10, 2017 @@ -39,8 +75,8 @@ _Check out what streetlevel photo coverage is available by opening the Map Data * :pray: Special thank you to all of our new and first-time contributors who submitted pull requests for [Hacktoberfest](https://hacktoberfest.digitalocean.com/)! - #### :tada: New Features + * Add support for OpenStreetCam ([#4499], [#3795]) * Add support for DigitalGlobe imagery vintage overlays (see [editor-layer-index/issues/#371], thanks [@marracci]) * Add API parameter to conditionally disable feature types ([#4439], [#4393], thanks [@ferdibiflator]) @@ -60,8 +96,8 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@ferdibiflator]: https://github.com/ferdibiflator [@DzikowskiW]: https://github.com/DzikowskiW - #### :sparkles: Usability + * Improvements to Mapillary and OpenStreetCam usability ([#4512]) * Traces are the only thing drawn at low zoom, circles appear at zoom 16, viewfield cones appear at zoom 18 * Everything is drawn very dim by default @@ -81,8 +117,8 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [#3154]: https://github.com/openstreetmap/iD/issues/3154 [@jaller94]: https://github.com/jaller94 - #### :bug: Bugfixes + * Add code so `tunnel=building_passage` doesn't default to `layer=-1` ([#4516]) * Clicking on a search result should take you to that location the first time ([#4276]) * Fix label placement on areas that don't have an icon ([#4479]) @@ -108,20 +144,20 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@ferdibiflator]: https://github.com/ferdibiflator [@moshen]: https://github.com/moshen - #### :rocket: Presets + * Add `government=*` type field to Government Office preset ([#4517]) -* Change craft=sweep -> craft=chimney_sweeper ([#4510]) -* Add shop=agrarian preset and agrarian=* field ([#4507], thanks [@willemarcel]) -* Change max_age to min_age for min_age field ([#4506], thanks [@JamesKingdom]) -* Rename sculpter to sculptor not sculpter ([#4504], thanks [@simonpoole]) +* Change `craft=sweep` -> `craft=chimney_sweeper` ([#4510]) +* Add `shop=agrarian` preset and `agrarian=*` field ([#4507], thanks [@willemarcel]) +* Change `max_age` to `min_age` for `min_age` field ([#4506], thanks [@JamesKingdom]) +* Rename sculpter to sculptor ([#4504], thanks [@simonpoole]) * Add preset for music schools ([#4500], thanks [@tyrasd]) * Add `voltage`,`operator`,`ref` fields to several `power=*` presets. * Add `power=switch` preset ([#4441]) * Drop `vertex` geometry from `office=*` presets (i.e. make them like `shop=*` presets) * Add preset for "Pedestrian Area" (highway=pedestrian + area=yes) ([#4488]) -* Rename tourism=chalet to "Holiday Cottage" and add search terms ([#4490]) -* Remove poi-foot icon from place=square ([#4486]) +* Rename `tourism=chalet` to "Holiday Cottage" and add search terms ([#4490]) +* Remove poi-foot icon from `place=square` ([#4486]) * Add several presets for common `office=*` types ([#4491], [#4489], thanks [@Nmargolis]) * Add preset for `tourism=wilderness_hut` ([#4485], [#4483], thanks [@YuliyaVeklicheva]) * Fix reference links for `highway=crossing`, `footway=crossing` ([#4480]) @@ -208,14 +244,12 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [#4398]: https://github.com/openstreetmap/iD/issues/4398 [@mojodna]: https://github.com/mojodna - #### :mortar_board: Walkthrough * Make sure "Add Field" scrolls into view during "Area" chapter of walkthrough ([#4417]) [#4417]: https://github.com/openstreetmap/iD/issues/4417 - #### :rocket: Presets * Refined playground presets terms for Spring Rider and Play Roundabout ([#4415], thanks, [@1ec5]) @@ -247,7 +281,6 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@iandees]: https://github.com/iandees [@jgravois]: https://github.com/jgravois - #### :sparkles: Usability * Change label for hashtag field to "Suggested Hashtags") ([#4396] thanks [@arka-nitd]) @@ -268,7 +301,6 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@arka-nitd]: https://github.com/arka-nitd [@leegenes]: https://github.com/leegenes - #### :bug: Bugfixes * Fix overlapping in preset list when multiple tag references are expanded ([#4023], [#4412], thanks [@jleh]) @@ -304,7 +336,6 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@jgravois]: https://github.com/jgravois [@leegenes]: https://github.com/leegenes - #### :earth_asia: Localization * Improve Address format for Poland ([#4328], thanks [@Teiron]) @@ -320,7 +351,6 @@ _Check out what streetlevel photo coverage is available by opening the Map Data [@manfredbrandl]: https://github.com/manfredbrandl [@willemarcel]: https://github.com/willemarcel - #### :rocket: Presets * Add Tile Shop and Trade Shop presets ([#4410], thanks [@TheGreenToaster]) @@ -436,7 +466,6 @@ _Check out the new imagery by opening the Background pane (shortcut B [@kepta]: https://github.com/kepta [@JamesKingdom]: https://github.com/JamesKingdom - #### :sparkles: Usability * In save mode, esc should cancel and return to browse mode ([#4230]) @@ -454,7 +483,6 @@ _Check out the new imagery by opening the Background pane (shortcut B [#4182]: https://github.com/openstreetmap/iD/issues/4182 [#4042]: https://github.com/openstreetmap/iD/issues/4042 - #### :bug: Bugfixes * Include imagery offset when calculating tiles for background layer ([#4232]) @@ -465,7 +493,6 @@ _Check out the new imagery by opening the Background pane (shortcut B [#4222]: https://github.com/openstreetmap/iD/issues/4222 [#4184]: https://github.com/openstreetmap/iD/issues/4184 - #### :earth_asia: Localization * Update Chinese address format ([#4248], thanks [@Stenive]) @@ -476,7 +503,6 @@ _Check out the new imagery by opening the Background pane (shortcut B [#4248]: https://github.com/openstreetmap/iD/issues/4248 [@Stenive]: https://github.com/Stenive - #### :hourglass: Performance * Use `requestIdleCallback` in supported browsers for deferred data fetching ([#4259], thanks [@kepta]) @@ -487,7 +513,6 @@ _Check out the new imagery by opening the Background pane (shortcut B [#4259]: https://github.com/openstreetmap/iD/issues/4259 [@kepta]: https://github.com/kepta - #### :rocket: Presets * Add signpost term to guidepost preset ([#4277], thanks [@JamesKingdom]) diff --git a/modules/core/context.js b/modules/core/context.js index 3eb716a7d..a3e618e46 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -53,7 +53,7 @@ export function setAreaKeys(value) { export function coreContext() { var context = {}; - context.version = '2.5.0'; + context.version = '2.5.1'; // create a special translation that contains the keys in place of the strings var tkeys = _cloneDeep(dataEn); diff --git a/package.json b/package.json index e22054c29..5291bee43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iD", - "version": "2.5.0", + "version": "2.5.1", "description": "A friendly editor for OpenStreetMap", "main": "iD.js", "repository": "openstreetmap/iD", From bc70138283fa5db59691a9d535961ee5cead7797 Mon Sep 17 00:00:00 2001 From: Vonter <25414711+Vonter@users.noreply.github.com> Date: Thu, 16 Nov 2017 21:55:59 +0530 Subject: [PATCH 078/159] added common fields for preset amenity=telephone --- data/presets/presets/amenity/telephone.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/data/presets/presets/amenity/telephone.json b/data/presets/presets/amenity/telephone.json index 8229c6f9f..037a399e0 100644 --- a/data/presets/presets/amenity/telephone.json +++ b/data/presets/presets/amenity/telephone.json @@ -1,5 +1,13 @@ { "icon": "telephone", + "fields": [ + "operator", + "phone", + "fee", + "payment_multi", + "covered", + "indoor" + ], "geometry": [ "point", "vertex" @@ -11,4 +19,4 @@ "phone" ], "name": "Telephone" -} \ No newline at end of file +} From e67f969819923883b8158634227fe692e83969ac Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 17 Nov 2017 22:14:30 -0500 Subject: [PATCH 079/159] npm run build for new preset changes --- data/presets/presets.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/presets/presets.json b/data/presets/presets.json index 17defbf03..9c283551e 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -2921,6 +2921,14 @@ }, "amenity/telephone": { "icon": "telephone", + "fields": [ + "operator", + "phone", + "fee", + "payment_multi", + "covered", + "indoor" + ], "geometry": [ "point", "vertex" From 532a5a4831d00d39b03eeeac0685bff014829c0c Mon Sep 17 00:00:00 2001 From: tohaklim Date: Sat, 18 Nov 2017 15:41:30 +0000 Subject: [PATCH 080/159] Kiosk name update Wiki makes no mention of it being specifically a "news" kiosk, describing it instead as selling various things. Is this country-specific usage? --- data/presets/presets/shop/kiosk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/presets/presets/shop/kiosk.json b/data/presets/presets/shop/kiosk.json index ebbbb0031..eebbfc091 100644 --- a/data/presets/presets/shop/kiosk.json +++ b/data/presets/presets/shop/kiosk.json @@ -14,5 +14,5 @@ "tags": { "shop": "kiosk" }, - "name": "News Kiosk" + "name": "Kiosk" } From dcdcea9b3dffc8a80a0ecb990c446338a25c7e9b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 18 Nov 2017 10:55:28 -0500 Subject: [PATCH 081/159] npm run build for presets --- data/presets.yaml | 4 ++-- data/presets/presets.json | 2 +- dist/locales/en.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index 6b515506f..263a3b238 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4831,8 +4831,8 @@ en: terms: '' shop/kiosk: # shop=kiosk - name: News Kiosk - terms: '' + name: Kiosk + terms: '' shop/kitchen: # shop=kitchen name: Kitchen Design Store diff --git a/data/presets/presets.json b/data/presets/presets.json index 9c283551e..727f62734 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -14954,7 +14954,7 @@ "tags": { "shop": "kiosk" }, - "name": "News Kiosk" + "name": "Kiosk" }, "shop/kitchen": { "icon": "shop", diff --git a/dist/locales/en.json b/dist/locales/en.json index ff15951fd..f8c5241db 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5330,7 +5330,7 @@ "terms": "diamond,gem,ring" }, "shop/kiosk": { - "name": "News Kiosk", + "name": "Kiosk", "terms": "" }, "shop/kitchen": { From 3b3ce099065631422656a001ce897f2111fdcf85 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 19 Nov 2017 23:20:00 -0500 Subject: [PATCH 082/159] Add `route=light_rail` relation route preset (closes #4538) --- data/presets.yaml | 4 ++++ data/presets/categories.json | 1 + data/presets/categories/route.json | 1 + data/presets/presets.json | 17 +++++++++++++++++ data/presets/presets/type/route/light_rail.json | 17 +++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 7 files changed, 48 insertions(+) create mode 100644 data/presets/presets/type/route/light_rail.json diff --git a/data/presets.yaml b/data/presets.yaml index 263a3b238..817ffcbc5 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -5307,6 +5307,10 @@ en: # 'type=route, route=horse' name: Riding Route terms: '' + type/route/light_rail: + # 'type=route, route=light_rail' + name: Light Rail Route + terms: '' type/route/pipeline: # 'type=route, route=pipeline' name: Pipeline Route diff --git a/data/presets/categories.json b/data/presets/categories.json index 70122732e..99da1ee99 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -174,6 +174,7 @@ "type/route/horse", "type/route/bus", "type/route/train", + "type/route/light_rail", "type/route/tram", "type/route/ferry", "type/route/power", diff --git a/data/presets/categories/route.json b/data/presets/categories/route.json index b9926d32a..bca9e6647 100644 --- a/data/presets/categories/route.json +++ b/data/presets/categories/route.json @@ -10,6 +10,7 @@ "type/route/horse", "type/route/bus", "type/route/train", + "type/route/light_rail", "type/route/tram", "type/route/ferry", "type/route/power", diff --git a/data/presets/presets.json b/data/presets/presets.json index 727f62734..4a0dd2a91 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -17061,6 +17061,23 @@ }, "name": "Riding Route" }, + "type/route/light_rail": { + "icon": "route-tram", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "light_rail" + }, + "name": "Light Rail Route" + }, "type/route/pipeline": { "icon": "route-pipeline", "fields": [ diff --git a/data/presets/presets/type/route/light_rail.json b/data/presets/presets/type/route/light_rail.json new file mode 100644 index 000000000..fa26c5763 --- /dev/null +++ b/data/presets/presets/type/route/light_rail.json @@ -0,0 +1,17 @@ +{ + "icon": "route-tram", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "light_rail" + }, + "name": "Light Rail Route" +} diff --git a/data/taginfo.json b/data/taginfo.json index 06e6c1fad..5cbbd2631 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -3293,6 +3293,10 @@ "key": "route", "value": "horse" }, + { + "key": "route", + "value": "light_rail" + }, { "key": "route", "value": "pipeline" diff --git a/dist/locales/en.json b/dist/locales/en.json index f8c5241db..06a44d749 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5769,6 +5769,10 @@ "name": "Riding Route", "terms": "" }, + "type/route/light_rail": { + "name": "Light Rail Route", + "terms": "" + }, "type/route/pipeline": { "name": "Pipeline Route", "terms": "" From 73c231a73a01254f333f7250f6498d5638a1d533 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 09:20:01 -0500 Subject: [PATCH 083/159] Add preset for piste route relation --- data/presets.yaml | 4 ++++ data/presets/categories.json | 1 + data/presets/categories/route.json | 1 + data/presets/presets.json | 17 +++++++++++++++++ data/presets/presets/type/route/piste.json | 17 +++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 7 files changed, 48 insertions(+) create mode 100644 data/presets/presets/type/route/piste.json diff --git a/data/presets.yaml b/data/presets.yaml index 817ffcbc5..7635bac1b 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -5315,6 +5315,10 @@ en: # 'type=route, route=pipeline' name: Pipeline Route terms: '' + type/route/piste: + # 'type=route, route=piste' + name: Piste/Ski Route + terms: '' type/route/power: # 'type=route, route=power' name: Power Route diff --git a/data/presets/categories.json b/data/presets/categories.json index 99da1ee99..b169d3975 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -172,6 +172,7 @@ "type/route/foot", "type/route/hiking", "type/route/horse", + "type/route/piste", "type/route/bus", "type/route/train", "type/route/light_rail", diff --git a/data/presets/categories/route.json b/data/presets/categories/route.json index bca9e6647..050ffe7e8 100644 --- a/data/presets/categories/route.json +++ b/data/presets/categories/route.json @@ -8,6 +8,7 @@ "type/route/foot", "type/route/hiking", "type/route/horse", + "type/route/piste", "type/route/bus", "type/route/train", "type/route/light_rail", diff --git a/data/presets/presets.json b/data/presets/presets.json index 4a0dd2a91..5c974c720 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -17094,6 +17094,23 @@ }, "name": "Pipeline Route" }, + "type/route/piste": { + "icon": "route-foot", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "piste" + }, + "name": "Piste/Ski Route" + }, "type/route/power": { "icon": "route-power", "fields": [ diff --git a/data/presets/presets/type/route/piste.json b/data/presets/presets/type/route/piste.json new file mode 100644 index 000000000..fe10eb5c0 --- /dev/null +++ b/data/presets/presets/type/route/piste.json @@ -0,0 +1,17 @@ +{ + "icon": "route-foot", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "piste" + }, + "name": "Piste/Ski Route" +} diff --git a/data/taginfo.json b/data/taginfo.json index 5cbbd2631..d00485bd6 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -3301,6 +3301,10 @@ "key": "route", "value": "pipeline" }, + { + "key": "route", + "value": "piste" + }, { "key": "route", "value": "power" diff --git a/dist/locales/en.json b/dist/locales/en.json index 06a44d749..60d0ef80b 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5777,6 +5777,10 @@ "name": "Pipeline Route", "terms": "" }, + "type/route/piste": { + "name": "Piste/Ski Route", + "terms": "" + }, "type/route/power": { "name": "Power Route", "terms": "" From 719638fb07a619f464a97edc8f55b25f88efa624 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 14:56:43 -0500 Subject: [PATCH 084/159] Add a few icons, including route=piste, route=subway (closes #4355) --- data/presets/presets.json | 2 +- data/presets/presets/type/route/piste.json | 2 +- svg/iD-sprite.json | 8 ++ svg/iD-sprite.src.idraw | Bin 336063 -> 348602 bytes svg/iD-sprite.src.svg | 140 ++++++++++++++++----- 5 files changed, 117 insertions(+), 35 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 5c974c720..8ffcb3e1f 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -17095,7 +17095,7 @@ "name": "Pipeline Route" }, "type/route/piste": { - "icon": "route-foot", + "icon": "route-piste", "fields": [ "name", "ref_route", diff --git a/data/presets/presets/type/route/piste.json b/data/presets/presets/type/route/piste.json index fe10eb5c0..bb180f302 100644 --- a/data/presets/presets/type/route/piste.json +++ b/data/presets/presets/type/route/piste.json @@ -1,5 +1,5 @@ { - "icon": "route-foot", + "icon": "route-piste", "fields": [ "name", "ref_route", diff --git a/svg/iD-sprite.json b/svg/iD-sprite.json index f49b6df5f..0cde5da81 100644 --- a/svg/iD-sprite.json +++ b/svg/iD-sprite.json @@ -218,11 +218,15 @@ "ferry-line": { "viewBox": "660 140 60 60" }, "pipeline-line": { "viewBox": "720 140 60 60" }, + "piste-line": { "viewBox": "780 140 60 60" }, "ferry-line-dashes": { "fill": "inherit" }, "ferry-line-stroke1": { "fill": "currentColor" }, "ferry-line-stroke2": { "fill": "currentColor" }, "pipeline-line-stroke": { "fill": "currentColor" }, + "piste-line-dashes": { "fill": "inherit" }, + "piste-line-stroke1": { "fill": "currentColor" }, + "piste-line-stroke2": { "fill": "currentColor" }, "relation": { "viewBox": "0 200 60 60" }, "boundary": { "viewBox": "60 200 60 60" }, @@ -240,6 +244,9 @@ "route-power": { "viewBox": "780 200 60 60" }, "route-water": { "viewBox": "840 200 60 60" }, "route-master": { "viewBox": "0 260 60 60" }, + "route-piste": { "viewBox": "660 260 60 60" }, + "route-line": { "viewBox": "720 260 60 60" }, + "route-subway": { "viewBox": "780 260 60 60" }, "route-bicycle-stroke": { "fill": "currentColor" }, "route-foot-stroke": { "fill": "currentColor" }, @@ -247,6 +254,7 @@ "route-ferry-stroke": { "fill": "currentColor" }, "route-water-stroke1": { "fill": "currentColor" }, "route-water-stroke2": { "fill": "currentColor" }, + "route-piste-stroke": { "fill": "currentColor" }, "restriction-no-straight-on": { "viewBox": "60 260 60 60" }, "restriction-no-u-turn": { "viewBox": "120 260 60 60" }, diff --git a/svg/iD-sprite.src.idraw b/svg/iD-sprite.src.idraw index fbae9281584b9460548c9740d81e6c8f830c6463..a43d8182f5d8a938a260114303dd0fdb30b81be9 100644 GIT binary patch delta 230513 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�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%0Ap5NS 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 delta 217760 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μ#1@HdE9VlDrT=C)``w8R%YWD={|YEG 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 diff --git a/svg/iD-sprite.src.svg b/svg/iD-sprite.src.svg index f28cbeec3..c0f102e14 100644 --- a/svg/iD-sprite.src.svg +++ b/svg/iD-sprite.src.svg @@ -483,6 +483,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -650,28 +716,27 @@ - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + @@ -907,6 +972,13 @@ + + + + + + + @@ -993,22 +1065,24 @@ - - - - - - + + + + + + + + - - - - - - + + + + + + From 855c6d5c2fb308e0af2906aecaa79db0bc95c8e7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 15:03:33 -0500 Subject: [PATCH 085/159] Add preset for route=subway relation (closes #4548) --- data/presets.yaml | 4 ++++ data/presets/categories.json | 1 + data/presets/categories/route.json | 1 + data/presets/presets.json | 17 +++++++++++++++++ data/presets/presets/type/route/subway.json | 17 +++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 7 files changed, 48 insertions(+) create mode 100644 data/presets/presets/type/route/subway.json diff --git a/data/presets.yaml b/data/presets.yaml index 7635bac1b..f0f13136a 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -5327,6 +5327,10 @@ en: # 'type=route, route=road' name: Road Route terms: '' + type/route/subway: + # 'type=route, route=subway' + name: Subway Route + terms: '' type/route/train: # 'type=route, route=train' name: Train Route diff --git a/data/presets/categories.json b/data/presets/categories.json index b169d3975..0cae38795 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -177,6 +177,7 @@ "type/route/train", "type/route/light_rail", "type/route/tram", + "type/route/subway", "type/route/ferry", "type/route/power", "type/route/pipeline", diff --git a/data/presets/categories/route.json b/data/presets/categories/route.json index 050ffe7e8..f60c0d34b 100644 --- a/data/presets/categories/route.json +++ b/data/presets/categories/route.json @@ -13,6 +13,7 @@ "type/route/train", "type/route/light_rail", "type/route/tram", + "type/route/subway", "type/route/ferry", "type/route/power", "type/route/pipeline", diff --git a/data/presets/presets.json b/data/presets/presets.json index 8ffcb3e1f..fdd1e8703 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -17143,6 +17143,23 @@ }, "name": "Road Route" }, + "type/route/subway": { + "icon": "route-subway", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "subway" + }, + "name": "Subway Route" + }, "type/route/train": { "icon": "route-train", "fields": [ diff --git a/data/presets/presets/type/route/subway.json b/data/presets/presets/type/route/subway.json new file mode 100644 index 000000000..c9258a8c9 --- /dev/null +++ b/data/presets/presets/type/route/subway.json @@ -0,0 +1,17 @@ +{ + "icon": "route-subway", + "fields": [ + "name", + "ref_route", + "operator", + "network" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "route", + "route": "subway" + }, + "name": "Subway Route" +} diff --git a/data/taginfo.json b/data/taginfo.json index d00485bd6..65f60e1cb 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -3313,6 +3313,10 @@ "key": "route", "value": "road" }, + { + "key": "route", + "value": "subway" + }, { "key": "route", "value": "train" diff --git a/dist/locales/en.json b/dist/locales/en.json index 60d0ef80b..8db61b9f2 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5789,6 +5789,10 @@ "name": "Road Route", "terms": "" }, + "type/route/subway": { + "name": "Subway Route", + "terms": "" + }, "type/route/train": { "name": "Train Route", "terms": "" From 710a075a902bdeb9ebc1efd3b3ff9abeb50f9ab1 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 16:16:33 -0500 Subject: [PATCH 086/159] When deleting final nodes from a way, pan to final node's location (closes #4541) --- modules/operations/delete.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/operations/delete.js b/modules/operations/delete.js index 4eb4e2d47..820d3cbba 100644 --- a/modules/operations/delete.js +++ b/modules/operations/delete.js @@ -18,6 +18,7 @@ export function operationDelete(selectedIDs, context) { var operation = function() { var nextSelectedID; + var nextSelectedLoc; if (selectedIDs.length === 1) { var id = selectedIDs[0], @@ -27,7 +28,7 @@ export function operationDelete(selectedIDs, context) { parent = parents[0]; // Select the next closest node in the way. - if (geometry === 'vertex' && parent.nodes.length > 2) { + if (geometry === 'vertex') { var nodes = parent.nodes, i = nodes.indexOf(id); @@ -42,13 +43,19 @@ export function operationDelete(selectedIDs, context) { } nextSelectedID = nodes[i]; + nextSelectedLoc = context.entity(nextSelectedID).loc; } } context.perform(action, operation.annotation()); - if (nextSelectedID && context.hasEntity(nextSelectedID)) { - context.enter(modeSelect(context, [nextSelectedID]).follow(true)); + if (nextSelectedID && nextSelectedLoc) { + if (context.hasEntity(nextSelectedID)) { + context.enter(modeSelect(context, [nextSelectedID]).follow(true)); + } else { + context.map().centerEase(nextSelectedLoc); + context.enter(modeBrowse(context)); + } } else { context.enter(modeBrowse(context)); } From 92d22d54f2006f83006f3912b23558aeda218090 Mon Sep 17 00:00:00 2001 From: tastrax Date: Wed, 22 Nov 2017 18:15:23 +1100 Subject: [PATCH 087/159] Preset for railway=miniature Go easy on me - first github project and pull request! --- data/presets/presets/railway/miniature.json | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/presets/presets/railway/miniature.json diff --git a/data/presets/presets/railway/miniature.json b/data/presets/presets/railway/miniature.json new file mode 100644 index 000000000..240a4d8da --- /dev/null +++ b/data/presets/presets/railway/miniature.json @@ -0,0 +1,22 @@ +{ + "icon": "railway-rail", + "geometry": [ + "line" + ], + "tags": { + "railway": "miniature" + }, + "fields": [ + "name", + "structure", + "gauge", + "electrified", + "service_rail" + ], + "terms": [ + "ridable miniature railway", + "narrow gauge railway", + "minimum gauge railway", + ], + "name": "Miniature Railway" +} From ff1a983a146f20e0a695e3ae15561f6db5a280ee Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Tue, 24 Oct 2017 20:03:13 +0200 Subject: [PATCH 088/159] New help texts --- data/core.yaml | 601 ++++++++++++++++++++++++++++--------------- dist/locales/en.json | 78 +++++- modules/ui/help.js | 44 +++- 3 files changed, 489 insertions(+), 234 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 7d41e40ae..9c0f21f69 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -268,7 +268,7 @@ en: about_changeset_comments: About changeset comments about_changeset_comments_link: //wiki.openstreetmap.org/wiki/Good_changeset_comments google_warning: "You mentioned Google in this comment: remember that copying from Google Maps is strictly forbidden." - google_warning_link: http://www.openstreetmap.org/copyright + google_warning_link: https://www.openstreetmap.org/copyright contributors: list: "Edits by {users}" truncated_list: "Edits by {users} and {count} others" @@ -554,282 +554,455 @@ en: help: title: "Help" key: H - help: | - # Help + help: + intro: | + # Help + + With this [OpenStreetMap](https://www.openstreetmap.org/) editor you can + add and update the free and editable map of the world online with your browser. + + opendata: | + ### Open Data + + Edits that you make on this map will be freely available to everyone who uses + OpenStreetMap. They can be visible on every map based on OpenStreetMap. + The optimal resources for mapping are on-the-ground survey, personal knowledge, + or the provieded background. Copying from commercial sources like Google Maps is strictly forbidden. + + beforestart: | + ### Before you start + + You should be familiar with OpenStreetMap and this editor before you start editing. + The walkthrough will teach you the basics of editing on OpenStreetMap and you will + practice using the editor. It takes about 15 minutes and then you can start editing. + + opensource: | + ### Open Source + + The iD editor is a collaborative project with [source + code available on GitHub](https://github.com/openstreetmap/iD). + + othereditors: | + ### Other Editors + + While the iD editor is easy to use and requires only a browser, there are also other + [OSM-Editors](https://wiki.openstreetmap.org/wiki/Editors). + Also heavily used is JOSM, a highly expandable standalone Java desktop application. + + overview: + intro: | + # Overview + + This help will repeat and extend information from the walkthrough, which + you should have done by now. + + features: | + ### Features + + In OpenStreetMap we use the word *feature* to describe things that appear on the map. + Anything in the real world can be mapped as a feature on OpenStreetMap. + Features are represented on the map using *points*, *lines*, or *areas*. + Points are sometimes called nodes. Lines and areas are a connected line + of nodes and are sometimes called ways. + + screen: | + ### Screen + + This help is on top of the map area which shows OpenStreetMap data + on top of a background imagery. On the left side is the *feature editor*, + there you can search for features and edit feature's type and attributes. + The buttons in the top row and the right column explain their + function if you hold the mouse pointer over them. + + navigation: | + ### Navigation + + You can drag the map by pressing and holding the left mouse button + while moving the mouse around. This is also called panning. + You can also use the arrow keys on your keyboard, using the keys + while holding 'Ctrl' will move the map for one screenful. + You can zoom in or out by scrolling with the mouse wheel or trackpad, + or by clicking the {plus} / {minus} buttons, holding 'Ctrl' while + clicking will zoom a lot. + + editing: + intro: | + # Editing & Saving + + To select a feature you want to edit, click on it on the map + or search for it by name in the feature editor. + Selected features are drawn with a pulsing glow and in the + feature editor the feature's type and attributes are shown. + If you right-click on it, the editing menu appears. + + multiselect: | + ### Multiselect + To select multiple features, hold down the 'Shift' key. + Then either click on the features you want to select, + or click, hold and move the mouse on the map to draw + a contour around those features. + All the points inside the lasso area will be selected. + + edit: | + ### Edit + + When you make changes like editing roads, building, and places + these are stored locally until you save them to the server. + Don't worry if you make a mistake - you can undo changes + by clicking the {undo} Undo button, and redo changes by clicking the {redo} Redo button. + + save: | + ### Save + + Click `Save` to finish a group of edits - for instance, if you've completed + an area of town and would like to start on a new area. You'll have a chance + to review what you've done, and the editor supplies helpful suggestions + and warnings if something doesn't seem right about the changes. + + upload: | + ### Upload + + If everything looks good, you should explain your changes as a + [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments) + and click `Upload` to post the changes to + [OpenStreetMap.org](https://www.openstreetmap.org/), where they will be visible + to all other users and available for others to build and improve upon. + + comeback: | + If you can't finish your edits in one sitting, you can leave the editor + window and come back (on the same browser and computer), and the + editor will offer to restore your work. + + roads: + intro: | + # Roads & Lines + + You can create, fix, and delete roads with this editor. Roads can be all + kinds: paths, highways, trails, cycle ways, and more - any used segment + is mapable. Roads are the most used type of lines. Other examples of + lines are waterways, walls, and fences. What you can do with roads + applies to most types of lines. + + modifying: | + ### Modifying + + Often you'll see roads that aren't aligned to the imagery behind them or + to a GPS track. You can adjust these roads so they are in the correct place. + Click on a road to select it and the pulsing glow will become visible. + All nodes of the road will be shown as small circles. + You can drag the nodes to better locations. + You can also create new nodes either by double-clicking on the road or by + moving the small triangles at the midpoints between nodes. + + move: | + ### Moving + + If you right-click the road the editing menu with several tools appears. + You can select the {move} 'Move' tool, move the entire road at one time, and + then click again to save that movement. You can also simply press the + `M` shortcut key, to start the move. + + connect: | + ### Connecting + + If the road connects to another road, but doesn't properly connect on + the map, you can drag one of its nodes onto the other road in + order to join them. The node will become grey inside. + + Having roads connected properly is important for the map + and essential for providing driving directions. + If two road are connected on the map but not in reality, + you can disconnect them with right-click the connecting node and select + the {disconnect} 'Disconnect' tool or press the `D` shortcut key. + + If you know that the crossing has traffic lights or crossswalks, + you can add them by selecting the connecting node and using the + feature editor to select the correct feature's type. + + attributes: | + ### Attribues + + When a road is selected on the left side the feature editor will show + the type of the road and many attributes like name, speed limit, lines, + and surface. You can modify fields or even add new ones. + + delete: | + ### Deleting + + If a road is entirely incorrect - you can see that it doesn't exist in satellite + imagery and ideally have confirmed locally that it's not present - you can delete + it, which removes it from the map. Be cautious when deleting features - + like any other edit, the results are seen by everyone and satellite imagery + is often out of date, so the road could simply be newly built. + + You can delete a road by clicking on it to select it, then pressing the 'Delete' + key or right-clicking it and then using the {delete} 'Delete' tool. + + create: | + ### Creating + + Found somewhere there should be a road but there isn't? Click the {line} Line + icon in the top-left of the editor or press the shortcut key `2` to start drawing + a line. + + Click on the start of the road on the map to start drawing. If the road + branches off from an existing road, start by clicking on the place where they connect. + + Then click on points along the road so that it follows the right path, according + to satellite imagery or GPS. If the road you are drawing crosses another road, connect + it by clicking on the intersection point. When you're done drawing, double-click + or press 'Return' or 'Enter' on your keyboard. + + gps: + intro: | + # GPS + + Collected GPS traces are one valuable source of data for OpenStreetMap. This editor + supports local traces - `.gpx` files on your local computer. You can collect + this kind of GPS trace with a number of smartphone applications as well as + personal GPS hardware. - This is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the - free and editable map of the world. You can use it to add and update - data in your area, making an open-source and open-data map of the world - better for everyone. + For information on how to perform a GPS survey, read + [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). - Edits that you make on this map will be visible to everyone who uses - OpenStreetMap. In order to make an edit, you'll need to - [log in](https://www.openstreetmap.org/login). + using: | + ### Using - The [iD editor](http://ideditor.com/) is a collaborative project with [source - code available on GitHub](https://github.com/openstreetmap/iD). - editing_saving: | - # Editing & Saving + To use a GPX track for mapping, drag and drop the GPX file onto the map + editor. If it's recognized, it will be added to the map as a bright purple + line. Click on the 'Map Data' menu on the right side to enable, + disable, or zoom to this new GPX-powered layer. - This editor is designed to work primarily online, and you're accessing - it through a website right now. + The GPX track isn't directly uploaded to OpenStreetMap - the best way to + use it is to draw on the map, using it as a guide for the new features that + you add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create) + for other users to use. - ### Selecting Features + buildings: + intro: | + # Buildings & Areas - To select a map feature, like a road or point of interest, click on it on - the map. This will highlight the selected feature and load a sidebar with - details about it. If you right-click on it, it will show a menu of things - you can do with the feature. + OpenStreetMap is the world's largest database of buildings. + You can improve this database. Buildings are the most used type + of areas, others are landuse, lakes, ponds, or forests. + What you can do with buildings applies to most types of areas. - To select multiple features, hold down the 'Shift' key. Then either click - on the features you want to select, or drag on the map to draw a contour - around those features. All the points inside the lasso area will be selected. + select: | + ### Selecting - ### Saving Edits + You can select a building by clicking on its border. the pulsing glow will + will become visible, all nodes will be shown as circles and the + feature editor on the left will show the type of the building and + attributes like name, levels, and address. - When you make changes like editing roads, buildings, and places, these are - stored locally until you save them to the server. Don't worry if you make - a mistake - you can undo changes by clicking the undo button, and redo - changes by clicking the redo button. + modify: | + ### Modifying - Click 'Save' to finish a group of edits - for instance, if you've completed - an area of town and would like to start on a new area. You'll have a chance - to review what you've done, and the editor supplies helpful suggestions - and warnings if something doesn't seem right about the changes. + Sometimes buildings are incorrectly placed or have incorrect tags. + To move an entire building, select it and press the `M` shortcut key, + or right-click it and select the {move} 'Move' tool. Move your + mouse to shift the building, and click when it's correctly placed. - If everything looks good, you can enter a short comment explaining the change - you made, and click 'Upload' to post the changes to - [OpenStreetMap.org](http://www.openstreetmap.org/), where they will be visible - to all other users and available for others to build and improve upon. + To fix the specific shape of a building, click and drag the nodes that form + its border into better places. - If you can't finish your edits in one sitting, you can leave the editor - window and come back (on the same browser and computer), and the - editor application will offer to restore your work. - - ### Using the editor + create: | + ### Creating - You can view a list of keyboard shortcuts by pressing the `?` key. + One of the main questions around adding buildings to the map is that + OpenStreetMap records buildings both as shapes and points. The rule of thumb + is to _map a building as a shape whenever possible_, and map companies, homes, + amenities, and other things that operate out of buildings as points placed + within the building shape. - roads: | - # Roads + Start drawing a building as a shape by clicking the {area} Area button in the top + left of the map, and end it either by pressing 'Return' on your keyboard + or clicking on the first node drawn or clicking again on the last node drawn + to close the shape. - You can create, fix, and delete roads with this editor. Roads can be all - kinds: paths, highways, trails, cycleways, and more - any often-crossed - segment should be mappable. + Then you assign the type of the building to the outline with the feature editor. + Most buildings are houses, if you're not sure choose the generic Building type. - ### Selecting - - Click on a road to select it. An outline should become visible, along - with a sidebar showing more information about the road. If you right-click - on it, you'll have a menu of actions you can apply on the road. + delete: | + ### Deleting - ### Modifying + If a building is entirely incorrect - you can see that it doesn't exist in satellite + imagery and ideally have confirmed locally that it's not present - you can delete + it, which removes it from the map. Be cautious when deleting features - + like any other edit, the results are seen by everyone and satellite imagery + is often out of date, so the building could simply be newly built. - Often you'll see roads that aren't aligned to the imagery behind them - or to a GPS track. You can adjust these roads so they are in the correct - place. + You can delete a building by clicking on it to select it, then pressing the 'Delete' + key, or right-clicking it and then using the {delete} Delete tool. - First click on the road you want to change. This will highlight it and show - control points along it that you can drag to better locations. If - you want to add new control points for more detail, double-click a part - of the road without a node, and one will be added. + addresses: + intro: | + # Addresses & Points - If the road connects to another road, but doesn't properly connect on - the map, you can drag one of its control points onto the other road in - order to join them. Having roads connect is important for the map - and essential for providing driving directions. + Addresses are some of the most useful information for the map. - You can also right-click on it and select the 'Move' tool, or simply press - the `M` shortcut key, to move the entire road at one time, and then click - again to save that movement. + Address information can be added to OpenStreetMap using a variety of methods, + such as adding a simple point containing an address, adding address information + to a building, site or other area, or alternatively to an entrance node. - ### Deleting + nodup: | + ### No duplication - If a road is entirely incorrect - you can see that it doesn't exist in satellite - imagery and ideally have confirmed locally that it's not present - you can delete - it, which removes it from the map. Be cautious when deleting features - - like any other edit, the results are seen by everyone and satellite imagery - is often out of date, so the road could simply be newly built. + Usually address informations doesn't need to be duplicated, e.g. when there + is a building outline on the map and several shops as points inside, + only the building should have an address. - You can delete a road by clicking on it to select it, then pressing the 'Delete' - key or right-clicking it and then clicking the trash can icon. + recommendation: | + ### Recommendation - ### Creating + Most buildings and sites have only one address and it is recommeded to add + the address to the building as a whole. If there is no building on the map + and you cannot draw one, you should add an address point to the map. - Found somewhere there should be a road but there isn't? Click the 'Line' - icon in the top-left of the editor or press the shortcut key `2` to start drawing - a line. + Some buildings or sites have more than one address. You can add the + addresses as separate points inside the building. - Click on the start of the road on the map to start drawing. If the road - branches off from an existing road, start by clicking on the place where they connect. + points: | + ### Other Points - Then click on points along the road so that it follows the right path, according - to satellite imagery or GPS. If the road you are drawing crosses another road, connect - it by clicking on the intersection point. When you're done drawing, double-click - or press 'Return' or 'Enter' on your keyboard. - gps: | - # GPS + While addresses are still the most common type of point feature, + there are other often used types like trees, towers, or poles. - Collected GPS traces are one valuable source of data for OpenStreetMap. This editor - supports local traces - `.gpx` files on your local computer. You can collect - this kind of GPS trace with a number of smartphone applications as well as - personal GPS hardware. + To create a point feature click the {point} Point icon in the top-left + of the editor or press the shortcut key `1` to insert a point. - For information on how to perform a GPS survey, read - [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). + feature_editor: + intro: | + # Feature Editor - To use a GPX track for mapping, drag and drop the GPX file onto the map - editor. If it's recognized, it will be added to the map as a bright purple - line. Click on the 'Map Data' menu on the right side to enable, - disable, or zoom to this new GPX-powered layer. + The feature editor is the section on the left side of the page that allows you to + edit the details of the selected feature. - The GPX track isn't directly uploaded to OpenStreetMap - the best way to - use it is to draw on the map, using it as a guide for the new features that - you add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create) - for other users to use. - imagery: | - # Imagery + select: | + ### Selecting a Feature Type - Aerial imagery is an important resource for mapping. A combination of - airplane flyovers, satellite views, and freely-compiled sources are available - in the editor under the 'Background Settings' menu on the right. + After you add a point, line, or area, you can choose what type of feature it + is, like whether it's a highway or residential road, supermarket or cafe. + The feature editor will display buttons for common feature types, and you can + find others by typing what you're looking for in the search box. + + Click the 'i' in the top-right-hand corner of a feature type button to + learn more about it. Click a button to choose that type. - By default a [Bing Maps](http://www.bing.com/maps/) satellite layer is - presented in the editor, but as you pan and zoom the map to new geographical - areas, new sources will become available. Some countries, like the United - States, France, and Denmark have very high-quality imagery available for some areas. + fields: | + ### Fields - Imagery is sometimes offset from the map data because of a mistake on the - imagery provider's side. If you see a lot of roads shifted from the background, - don't immediately move them all to match the background. Instead you can adjust - the imagery so that it matches the existing data by clicking 'Fix alignment' at - the bottom of the Background Settings UI. - addresses: | - # Addresses + After you choose a feature type, or when you select a feature that already + has a type assigned, the feature editor will display fields with details about + the feature like its name or speed limit for a road or levels and address for a building. - Addresses are some of the most useful information for the map. + Below the fields you see, you can click the `Add field` dropdown to add + other details, like a Wikipedia link, wheelchair access, and more. - Although addresses are often represented as parts of streets, in OpenStreetMap - they're recorded as attributes of buildings and places along streets. + tags: | + ### Tags - You can add address information to places mapped as building outlines - as well as those mapped as single points. The optimal source of address - data is from an on-the-ground survey or personal knowledge - as with any - other feature, copying from commercial sources like Google Maps is strictly - forbidden. - inspector: | - # Using the Inspector + Below that you see the tags which is how the fields are stored in OpenStreetMap. + If you cannot find the feature's type with the feature editor or you + cannot add required fields, then you can add additional tags with the `+` button. - The inspector is the section on the left side of the page that allows you to - edit the details of the selected feature. + You will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/), + also [Taginfo](https://taginfo.openstreetmap.org/) is a + great resource to learn more about popular tag combinations. + + undo: | + ### Undo & Redo - ### Selecting a Feature Type + Changes you make in the feature editor are automatically applied. + You can undo them at any time by clicking the {undo} button and redo + changes by clicking the {redo} Redo button. - After you add a point, line, or area, you can choose what type of feature it - is, like whether it's a highway or residential road, supermarket or cafe. - The inspector will display buttons for common feature types, and you can - find others by typing what you're looking for in the search box. + imagery: + intro: | + # Imagery - Click the 'i' in the bottom-right-hand corner of a feature type button to - learn more about it. Click a button to choose that type. + Aerial imagery is an important resource for mapping. A combination of + airplane flyovers, satellite views, and freely-compiled sources are available + in the editor under the `Background settings` menu on the right. - ### Using Forms and Editing Tags + background: | + ### Background - After you choose a feature type, or when you select a feature that already - has a type assigned, the inspector will display fields with details about - the feature like its name and address. + By default a [Bing Maps](https://www.bing.com/maps/) satellite layer is + presented in the editor, but as you pan and zoom the map to new geographical + areas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/) + will become available and the best for the area will be marked with a '*'. - Below the fields you see, you can click the 'Add field' dropdown to add - other details, like a Wikipedia link, wheelchair access, and more. + offset: | + ### Offset - At the bottom of the inspector, click 'Additional tags' to add arbitrary - other tags to the element. [Taginfo](http://taginfo.openstreetmap.org/) is a - great resource for learn more about popular tag combinations. + Imagery is sometimes offset from the map data because of a mistake on the + imagery provider's side. If you see a lot of roads shifted from the background, + don't immediately move them all to match the background. Instead you can adjust + the imagery so that it matches the existing data by clicking 'Fix alignment' at + the bottom of the Background Settings. - Changes you make in the inspector are automatically applied to the map. - You can undo them at any time by clicking the 'Undo' button. - buildings: | - # Buildings + relations: + intro: | + # Relations - OpenStreetMap is the world's largest database of buildings. You can create - and improve this database. + A relation is a special type of feature in OpenStreetMap that groups together + other features. The most common type of relation is the *multipolygon*, + which groups together several areas to define a complex area, which may + consist of several pieces or has holes in it like a donut. Another often + used type of relation is the *Turn restriction*. - ### Selecting + Two other common types of relations are *route relations*, which group together + sections of road that belong to a specific highway, bus route, or hiking route, + and *boundaries*, which group together sections of boundary lines like roads, + rivers, plot boundaries, or other boundary lines. - You can select a building by clicking on its border. This will highlight the - building and load a sidebar showing more information about the building. - If you right-click on it, it will show a menu of actions you can execute - in the building. + members: | + ### Members - ### Modifying + The group of features in a relation are called *members*. In the bottom of the + feature editor, you can see which relations a feature is a member of, and click on a + relation there will select it. When the relation is selected, you can see all of + its members listed in the sidebar and highlighted on the map. - Sometimes buildings are incorrectly placed or have incorrect tags. + maintain: | + ### Maintaining - To move an entire building, select it and press the 'M' shortcut key, - or right-click it and select the 'Move' tool. Move your - mouse to shift the building, and click when it's correctly placed. + For the most part, iD will take care of maintaining relations automatically + while you edit. The main thing you should be aware of is that if you delete a + section of road to redraw it more accurately, you should make sure that the + new section is a member of the same relations as the original. - To fix the specific shape of a building, click and drag the nodes that form - its border into better places. + edit: | + ## Editing Relations - ### Creating + To add a feature to a relation, select the feature, click the {plus} button + in the 'All relations' section of the feature editor, and select or type + the name of the relation. - One of the main questions around adding buildings to the map is that - OpenStreetMap records buildings both as shapes and points. The rule of thumb - is to _map a building as a shape whenever possible_, and map companies, homes, - amenities, and other things that operate out of buildings as points placed - within the building shape. + To create a new relation, select the first feature that should be a member, + click the {plus} button in the 'All relations' section, and select 'New relation...'. - Start drawing a building as a shape by clicking the 'Area' button in the top - left of the interface, and end it either by pressing 'Return' on your keyboard - or clicking on the first node drawn to close the shape. + To remove a feature from a relation, select the feature and click the {delete} + Delete button next to the relation you want to remove it from. - ### Deleting + multipolygons: | + ### Multipolygons - If a building is entirely incorrect - you can see that it doesn't exist in satellite - imagery and ideally have confirmed locally that it's not present - you can delete - it, which removes it from the map. Be cautious when deleting features - - like any other edit, the results are seen by everyone and satellite imagery - is often out of date, so the building could simply be newly built. + You can create multipolygons with holes using the {merge} 'Merge' tool. + Draw two areas (inner and outer) and select both. + Then press either press the `C` shortcut key or right-click one + of the selected areas and select the 'Merge' {plus} tool. - You can delete a building by clicking on it to select it, then pressing the 'Delete' - key, or right-clicking it and then clicking the trash can icon. - relations: | - # Relations + turnrestrictions: | + ### Turn restrictions - A relation is a special type of feature in OpenStreetMap that groups together - other features. For example, two common types of relations are *route relations*, - which group together sections of road that belong to a specific freeway or - highway, and *multipolygons*, which group together several lines that define - a complex area (one with several pieces or holes in it like a donut). + You can create turn restrictions in the feature editor when you select + an intersection node common to two or more roads on the map. + For every turn connected with the intersection you can forbid U-turn and for + every other road you can forbid left-turn, straight-on or right-turn. - The group of features in a relation are called *members*. In the bottom of the - sidebar, you can see which relations a feature is a member of, and click on a - relation there will select it. When the relation is selected, you can see all of - its members listed in the sidebar and highlighted on the map. - For the most part, iD will take care of maintaining relations automatically - while you edit. The main thing you should be aware of is that if you delete a - section of road to redraw it more accurately, you should make sure that the - new section is a member of the same relations as the original. - - ## Editing Relations - - If you want to edit relations, here are the basics. - - To add a feature to a relation, select the feature, click the "+" button in the - "All relations" section of the sidebar, and select or type the name of the relation. - - To create a new relation, select the first feature that should be a member, - click the "+" button in the "All relations" section, and select "New relation...". - - To remove a feature from a relation, select the feature and click the trash - button next to the relation you want to remove it from. - - You can create multipolygons with holes using the "Merge" tool. Draw two areas (inner - and outer), hold the Shift key and click on each of them to select them both, and then - press the 'C' shortcut key. Other option is to select both, and then right-click one - of the and click the "Merge" (+) button. intro: done: done ok: OK diff --git a/dist/locales/en.json b/dist/locales/en.json index 8db61b9f2..588e09b18 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -342,7 +342,7 @@ "about_changeset_comments": "About changeset comments", "about_changeset_comments_link": "//wiki.openstreetmap.org/wiki/Good_changeset_comments", "google_warning": "You mentioned Google in this comment: remember that copying from Google Maps is strictly forbidden.", - "google_warning_link": "http://www.openstreetmap.org/copyright" + "google_warning_link": "https://www.openstreetmap.org/copyright" }, "contributors": { "list": "Edits by {users}", @@ -680,15 +680,73 @@ "help": { "title": "Help", "key": "H", - "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n", - "editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click on it on\nthe map. This will highlight the selected feature and load a sidebar with\ndetails about it. If you right-click on it, it will show a menu of things\nyou can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a contour\naround those features. All the points inside the lasso area will be selected.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Upload' to post the changes to\n[OpenStreetMap.org](http://www.openstreetmap.org/), where they will be visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n\n### Using the editor\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n", - "roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a sidebar showing more information about the road. If you right-click\non it, you'll have a menu of actions you can apply on the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also right-click on it and select the 'Move' tool, or simply press\nthe `M` shortcut key, to move the entire road at one time, and then click\nagain to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then clicking the trash can icon.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n", - "gps": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n", - "imagery": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the 'Background Settings' menu on the right.\n\nBy default a [Bing Maps](http://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources will become available. Some countries, like the United\nStates, France, and Denmark have very high-quality imagery available for some areas.\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings UI.\n", - "addresses": "# Addresses\n\nAddresses are some of the most useful information for the map.\n\nAlthough addresses are often represented as parts of streets, in OpenStreetMap\nthey're recorded as attributes of buildings and places along streets.\n\nYou can add address information to places mapped as building outlines\nas well as those mapped as single points. The optimal source of address\ndata is from an on-the-ground survey or personal knowledge - as with any\nother feature, copying from commercial sources like Google Maps is strictly\nforbidden.\n", - "inspector": "# Using the Inspector\n\nThe inspector is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n\n### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe inspector will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the bottom-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n\n### Using Forms and Editing Tags\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the inspector will display fields with details about\nthe feature like its name and address.\n\nBelow the fields you see, you can click the 'Add field' dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n\nAt the bottom of the inspector, click 'Additional tags' to add arbitrary\nother tags to the element. [Taginfo](http://taginfo.openstreetmap.org/) is a\ngreat resource for learn more about popular tag combinations.\n\nChanges you make in the inspector are automatically applied to the map.\nYou can undo them at any time by clicking the 'Undo' button.\n", - "buildings": "# Buildings\n\nOpenStreetMap is the world's largest database of buildings. You can create\nand improve this database.\n\n### Selecting\n\nYou can select a building by clicking on its border. This will highlight the\nbuilding and load a sidebar showing more information about the building.\nIf you right-click on it, it will show a menu of actions you can execute\nin the building.\n\n### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\n\nTo move an entire building, select it and press the 'M' shortcut key,\nor right-click it and select the 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n\n### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the 'Area' button in the top\nleft of the interface, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn to close the shape.\n\n### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then clicking the trash can icon.\n", - "relations": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. For example, two common types of relations are *route relations*,\nwhich group together sections of road that belong to a specific freeway or\nhighway, and *multipolygons*, which group together several lines that define\na complex area (one with several pieces or holes in it like a donut).\n\nThe group of features in a relation are called *members*. In the bottom of the\nsidebar, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n\n## Editing Relations\n\nIf you want to edit relations, here are the basics.\n\nTo add a feature to a relation, select the feature, click the \"+\" button in the\n\"All relations\" section of the sidebar, and select or type the name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the \"+\" button in the \"All relations\" section, and select \"New relation...\".\n\nTo remove a feature from a relation, select the feature and click the trash\nbutton next to the relation you want to remove it from.\n\nYou can create multipolygons with holes using the \"Merge\" tool. Draw two areas (inner\nand outer), hold the Shift key and click on each of them to select them both, and then\npress the 'C' shortcut key. Other option is to select both, and then right-click one\nof the and click the \"Merge\" (+) button.\n" + "help": { + "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nThe optimal resources for mapping are on-the-ground survey, personal knowledge,\nor the provieded background. Copying from commercial sources like Google Maps is strictly forbidden.\n", + "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", + "opensource": "### Open Source\n\nThe iD editor is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n", + "othereditors": "### Other Editors\n\nWhile the iD editor is easy to use and requires only a browser, there are also other\n[OSM-Editors](https://wiki.openstreetmap.org/wiki/Editors).\nAlso heavily used is JOSM, a highly expandable standalone Java desktop application.\n" + }, + "overview": { + "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", + "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", + "screen": "### Screen\n\nThis help is on top of the map area which shows OpenStreetMap data\non top of a background imagery. On the left side is the *feature editor*,\nthere you can search for features and edit feature's type and attributes.\nThe buttons in the top row and the right column explain their\nfunction if you hold the mouse pointer over them.\n", + "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons, holding 'Ctrl' while\nclicking will zoom a lot.\n" + }, + "editing": { + "intro": "# Editing & Saving\n\nTo select a feature you want to edit, click on it on the map\nor search for it by name in the feature editor. \nSelected features are drawn with a pulsing glow and in the\nfeature editor the feature's type and attributes are shown.\nIf you right-click on it, the editing menu appears.\n", + "multiselect": "### Multiselect\nTo select multiple features, hold down the 'Shift' key.\nThen either click on the features you want to select,\nor click, hold and move the mouse on the map to draw\na contour around those features.\nAll the points inside the lasso area will be selected.\n", + "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - you can undo changes\nby clicking the {undo} Undo button, and redo changes by clicking the {redo} Redo button.\n", + "save": "### Save\n\nClick `Save` to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n", + "upload": "### Upload\n\nIf everything looks good, you should explain your changes as a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)\nand click `Upload` to post the changes to\n[OpenStreetMap.org](https://www.openstreetmap.org/), where they will be visible\nto all other users and available for others to build and improve upon.\n", + "comeback": "If you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor will offer to restore your work.\n" + }, + "roads": { + "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mapable. Roads are the most used type of lines. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", + "modifying": "### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them or\nto a GPS track. You can adjust these roads so they are in the correct place.\nClick on a road to select it and the pulsing glow will become visible.\nAll nodes of the road will be shown as small circles.\nYou can drag the nodes to better locations.\nYou can also create new nodes either by double-clicking on the road or by\nmoving the small triangles at the midpoints between nodes.\n", + "move": "### Moving\n\nIf you right-click the road the editing menu with several tools appears.\nYou can select the {move} 'Move' tool, move the entire road at one time, and\nthen click again to save that movement. You can also simply press the\n`M` shortcut key, to start the move.\n", + "connect": "### Connecting\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its nodes onto the other road in\norder to join them. The node will become grey inside.\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\nIf two road are connected on the map but not in reality,\nyou can disconnect them with right-click the connecting node and select\nthe {disconnect} 'Disconnect' tool or press the `D` shortcut key.\n\nIf you know that the crossing has traffic lights or crossswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", + "attributes": "### Attribues\n\nWhen a road is selected on the left side the feature editor will show\nthe type of the road and many attributes like name, speed limit, lines,\nand surface. You can modify fields or even add new ones.\n", + "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", + "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n" + }, + "gps": { + "intro": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", + "using": "### Using\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + }, + "buildings": { + "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are landuse, lakes, ponds, or forests.\nWhat you can do with buildings applies to most types of areas.\n", + "select": "### Selecting \n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and \nattributes like name, levels, and address.\n", + "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", + "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", + "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then using the {delete} Delete tool.\n" + }, + "addresses": { + "intro": "# Addresses & Points\n\nAddresses are some of the most useful information for the map.\n\nAddress information can be added to OpenStreetMap using a variety of methods,\nsuch as adding a simple point containing an address, adding address information\nto a building, site or other area, or alternatively to an entrance node.\n", + "nodup": "### No duplication\n\nUsually address informations doesn't need to be duplicated, e.g. when there\nis a building outline on the map and several shops as points inside,\nonly the building should have an address.\n", + "recommendation": "### Recommendation\n\nMost buildings and sites have only one address and it is recommeded to add\nthe address to the building as a whole. If there is no building on the map\nand you cannot draw one, you should add an address point to the map.\n\nSome buildings or sites have more than one address. You can add the\naddresses as separate points inside the building.\n", + "points": "### Other Points\n\nWhile addresses are still the most common type of point feature,\nthere are other often used types like trees, towers, or poles.\n\nTo create a point feature click the {point} Point icon in the top-left\nof the editor or press the shortcut key `1` to insert a point.\n" + }, + "feature_editor": { + "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", + "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", + "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building. \n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", + "tags": "### Tags\n\nBelow that you see the tags which is how the fields are stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n\nYou will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/),\nalso [Taginfo](https://taginfo.openstreetmap.org/) is a\ngreat resource to learn more about popular tag combinations.\n", + "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} button and redo\nchanges by clicking the {redo} Redo button.\n" + }, + "imagery": { + "intro": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the `Background settings` menu on the right.\n", + "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available and the best for the area will be marked with a '*'.\n", + "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" + }, + "relations": { + "intro": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. The most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut. Another often\nused type of relation is the *Turn restriction*.\n\nTwo other common types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines like roads,\nrivers, plot boundaries, or other boundary lines.\n", + "members": "### Members\n\nThe group of features in a relation are called *members*. In the bottom of the\nfeature editor, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n", + "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", + "edit": "## Editing Relations\n\nTo add a feature to a relation, select the feature, click the {plus} button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the {plus} button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \nDelete button next to the relation you want to remove it from.\n", + "multipolygons": "### Multipolygons\n\nYou can create multipolygons with holes using the {merge} 'Merge' tool.\nDraw two areas (inner and outer) and select both.\nThen press either press the `C` shortcut key or right-click one\nof the selected areas and select the 'Merge' {plus} tool.\n", + "turnrestrictions": "### Turn restrictions\n\nYou can create turn restrictions in the feature editor when you select\nan intersection node common to two or more roads on the map.\nFor every turn connected with the intersection you can forbid U-turn and for\nevery other road you can forbid left-turn, straight-on or right-turn.\n" + } }, "intro": { "done": "done", diff --git a/modules/ui/help.js b/modules/ui/help.js index aafe0c152..620dd5e50 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -13,23 +13,47 @@ import { uiShortcuts } from './shortcuts'; import { uiTooltipHtml } from './tooltipHtml'; import { tooltip } from '../util/tooltip'; +import { icon } from 'intro/helper'; + export function uiHelp(context) { var key = t('help.key'); var docKeys = [ - 'help.help', - 'help.editing_saving', - 'help.roads', - 'help.gps', - 'help.imagery', - 'help.addresses', - 'help.inspector', - 'help.buildings', - 'help.relations']; + ['help.help.',['intro','opendata','beforestart','opensource','othereditors']], + ['help.overview.',['intro','features','screen','navigation']], + ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], + ['help.roads.',['intro','move','connect','attributes','delete','create']], + ['help.gps.',['intro','using']], + ['help.buildings.',['intro','select','modify','create','delete']], + ['help.addresses.',['intro','nodup','recommendation','points']], + ['help.feature_editor.',['intro','select','fields','tags','undo']], + ['help.imagery.',['intro','background','offset']], + ['help.relations.',['intro','members','maintain','edit','multipolygons','turnrestrictions']] + ]; + + var icont = { + apply: icon('#icon-apply', 'pre-text'), + area: icon('#icon-area', 'pre-text'), + help: icon('#icon-help', 'pre-text'), + line: icon('#icon-line', 'pre-text'), + minus: icon('#icon-minus', 'pre-text'), + plus: icon('#icon-plus', 'pre-text'), + point: icon('#icon-point', 'pre-text'), + mapdata: icon('#logo-layers', 'pre-text'), + circularize: icon('#operation-circularize', 'pre-text'), + delete: icon('#operation-delete', 'pre-text'), + orthogonalize: icon('#operation-orthogonalize', 'pre-text'), + split: icon('#operation-split', 'pre-text'), + undo: icon('#operation-undo', 'pre-text'), + redo: icon('#operation-redo', 'pre-text'), + save: icon('#operation-save', 'pre-text'), + move: icon('#operation-move', 'pre-text'), + disconnect: icon('#operation-disconnect', 'pre-text') + }; var docs = docKeys.map(function(key) { - var text = t(key); + var text = key[1].reduce(function(all,part) { return all + t(key[0].concat(part),icont); }, ''); return { title: text.split('\n')[0].replace('#', '').trim(), html: marked(text.split('\n').slice(1).join('\n')) From 6a711552e4a7c0743640a1d1a41a5368f829b566 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Wed, 25 Oct 2017 09:12:32 +0200 Subject: [PATCH 089/159] Remove other editors --- data/core.yaml | 7 ------- dist/locales/en.json | 3 +-- modules/ui/help.js | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 9c0f21f69..6c0fff188 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -582,13 +582,6 @@ en: The iD editor is a collaborative project with [source code available on GitHub](https://github.com/openstreetmap/iD). - othereditors: | - ### Other Editors - - While the iD editor is easy to use and requires only a browser, there are also other - [OSM-Editors](https://wiki.openstreetmap.org/wiki/Editors). - Also heavily used is JOSM, a highly expandable standalone Java desktop application. - overview: intro: | # Overview diff --git a/dist/locales/en.json b/dist/locales/en.json index 588e09b18..6e308a82f 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -684,8 +684,7 @@ "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nThe optimal resources for mapping are on-the-ground survey, personal knowledge,\nor the provieded background. Copying from commercial sources like Google Maps is strictly forbidden.\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", - "opensource": "### Open Source\n\nThe iD editor is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n", - "othereditors": "### Other Editors\n\nWhile the iD editor is easy to use and requires only a browser, there are also other\n[OSM-Editors](https://wiki.openstreetmap.org/wiki/Editors).\nAlso heavily used is JOSM, a highly expandable standalone Java desktop application.\n" + "opensource": "### Open Source\n\nThe iD editor is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n" }, "overview": { "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index 620dd5e50..b63d7ed3c 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -20,7 +20,7 @@ export function uiHelp(context) { var key = t('help.key'); var docKeys = [ - ['help.help.',['intro','opendata','beforestart','opensource','othereditors']], + ['help.help.',['intro','opendata','beforestart','opensource']], ['help.overview.',['intro','features','screen','navigation']], ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], ['help.roads.',['intro','move','connect','attributes','delete','create']], From 84ac7df859bb2c9ab5ae3ae85c61f2ddb9b3b891 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Fri, 27 Oct 2017 18:00:03 +0200 Subject: [PATCH 090/159] add icons and tools --- data/core.yaml | 66 ++++++++++++++++++++++++++++++++++++++++++++ dist/locales/en.json | 5 ++++ modules/ui/help.js | 54 ++++++++++++++++++++++++++++-------- 3 files changed, 114 insertions(+), 11 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 6c0fff188..87ff24ce1 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -935,6 +935,72 @@ en: the imagery so that it matches the existing data by clicking 'Fix alignment' at the bottom of the Background Settings. + iconstools: + icons: | + # Icons & Tools + + ### Top row: + {search} Search features + {point} 'Add point' mode + {line} 'Add line' mode + {area} 'Add area' mode + {undo} Undo + {redo} Redo + {save} Save changes + ### Right column: + {plus} Zoom in + {minus} Zoom out + {geolocate} Show my location + {layers} Background settings + {data} Data data + {help} Help + ### Bottom row: + {bug} Report a bug + {translate} Help translate + + tools: | + ## Tools + + The editing menu has the following tools to operate on selected features: + {move} Move + {rotate} Rotate + {reflect_long} Reflect at long axis + {reflect_short} Reflect at short axis + {continue} Continue line + {reverse} Reverse direction + {merge} Merge features into one or create relation + {split} Split in two + {disconnect} Disconnect + {circularize} Circularize + {orthogonalize} Orthogonalize + {straighten} Straighten line + {delete} Delete + ### Reserved for later are: + {simplify} Simplify + {smooth} Smooth + + more: | + ### More icons {more} + {apply} Apply + {close} Close + {backward} Backward + {forward} Forward + {fullscreen} Fullscreen + {collapsescreen} Collapse-screen + {up} Up + {down} Down + {relation} Relation + {vertex} Vertex + {load} Load + ### Reserved for later are: + {copy} Copy + {paste} Paste + {alert} Alert + {inspect} Inspect + {nearby} Nearby + {avatar} Avatar + {outlink} Outlink + relations: intro: | # Relations diff --git a/dist/locales/en.json b/dist/locales/en.json index 6e308a82f..f8730dbb8 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -738,6 +738,11 @@ "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available and the best for the area will be marked with a '*'.\n", "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" }, + "iconstools": { + "icons": "# Icons & Tools\n\n### Top row:\n{search} Search features\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo\n{redo} Redo\n{save} Save changes\n### Right column:\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Data data\n{help} Help\n### Bottom row:\n{bug} Report a bug\n{translate} Help translate\n", + "tools": "## Tools\n\nThe editing menu has the following tools to operate on selected features:\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{merge} Merge features into one or create relation\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{straighten} Straighten line\n{delete} Delete\n### Reserved for later are:\n{simplify} Simplify\n{smooth} Smooth\n", + "more": "### More icons {more}\n{apply} Apply\n{close} Close\n{backward} Backward\n{forward} Forward\n{fullscreen} Fullscreen\n{collapsescreen} Collapse-screen\n{up} Up\n{down} Down\n{relation} Relation\n{vertex} Vertex\n{load} Load\n### Reserved for later are:\n{copy} Copy\n{paste} Paste\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" + }, "relations": { "intro": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. The most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut. Another often\nused type of relation is the *Turn restriction*.\n\nTwo other common types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines like roads,\nrivers, plot boundaries, or other boundary lines.\n", "members": "### Members\n\nThe group of features in a relation are called *members*. In the bottom of the\nfeature editor, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index b63d7ed3c..344e45c77 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -15,7 +15,6 @@ import { tooltip } from '../util/tooltip'; import { icon } from 'intro/helper'; - export function uiHelp(context) { var key = t('help.key'); @@ -29,27 +28,61 @@ export function uiHelp(context) { ['help.addresses.',['intro','nodup','recommendation','points']], ['help.feature_editor.',['intro','select','fields','tags','undo']], ['help.imagery.',['intro','background','offset']], + ['help.iconstools.',['icons','tools','more']], ['help.relations.',['intro','members','maintain','edit','multipolygons','turnrestrictions']] ]; var icont = { + more: icon('#icon-more', 'pre-text'), apply: icon('#icon-apply', 'pre-text'), + alert: icon('#icon-alert', 'pre-text'), + avatar: icon('#icon-avatar', 'pre-text'), + forward: icon('#icon-forward', 'pre-text'), + backward: icon('#icon-backward', 'pre-text'), + fullscreen: icon('#icon-full-screen', 'pre-text'), + collapsescreen: icon('#icon-collapse-screen', 'pre-text'), + geolocate: icon('#icon-geolocate', 'pre-text'), + load: icon('#icon-load', 'pre-text'), + search: icon('#icon-search', 'pre-text'), + bug: icon('#icon-bug', 'pre-text'), + point: icon('#icon-point', 'pre-text'), + line: icon('#icon-line', 'pre-text'), area: icon('#icon-area', 'pre-text'), help: icon('#icon-help', 'pre-text'), - line: icon('#icon-line', 'pre-text'), - minus: icon('#icon-minus', 'pre-text'), plus: icon('#icon-plus', 'pre-text'), - point: icon('#icon-point', 'pre-text'), - mapdata: icon('#logo-layers', 'pre-text'), + minus: icon('#icon-minus', 'pre-text'), + nearby: icon('#icon-nearby', 'pre-text'), + outlink: icon('#icon-out-link', 'pre-text'), + relation: icon('#icon-relation', 'pre-text'), + translate: icon('#icon-translate', 'pre-text'), circularize: icon('#operation-circularize', 'pre-text'), - delete: icon('#operation-delete', 'pre-text'), orthogonalize: icon('#operation-orthogonalize', 'pre-text'), split: icon('#operation-split', 'pre-text'), - undo: icon('#operation-undo', 'pre-text'), - redo: icon('#operation-redo', 'pre-text'), - save: icon('#operation-save', 'pre-text'), + reflect_long: icon('#operation-reflect-long', 'pre-text'), + reflect_short: icon('#operation-reflect-short', 'pre-text'), + simplify: icon('#operation-simplify', 'pre-text'), + smooth: icon('#operation-smooth', 'pre-text'), + straighten: icon('#operation-straighten', 'pre-text'), + rotate: icon('#operation-rotate', 'pre-text'), + reverse: icon('#operation-reverse', 'pre-text'), + continue: icon('#operation-continue', 'pre-text'), + disconnect: icon('#operation-disconnect', 'pre-text'), + layers: icon('#operation-layers', 'pre-text'), + vertex: icon('#icon-vertex', 'pre-text'), + data: icon('#icon-data', 'pre-text'), + down: icon('#icon-down', 'pre-text'), + up: icon('#icon-up', 'pre-text'), + inspect: icon('#icon-inspect', 'pre-text'), + geolocate: icon('#icon-geolocate', 'pre-text'), move: icon('#operation-move', 'pre-text'), - disconnect: icon('#operation-disconnect', 'pre-text') + merge: icon('#operation-merge', 'pre-text'), + copy: icon('#operation-copy', 'pre-text'), + paste: icon('#operation-paste', 'pre-text'), + delete: icon('#operation-delete', 'pre-text'), + close: icon('#icon-close', 'pre-text'), + undo: icon('#icon-undo', 'pre-text'), + redo: icon('#icon-redo', 'pre-text'), + save: icon('#icon-save', 'pre-text') }; var docs = docKeys.map(function(key) { @@ -60,7 +93,6 @@ export function uiHelp(context) { }; }); - function help(selection) { function hide() { From 365290669dea0e29344436775ccff6269655eb4f Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Fri, 27 Oct 2017 18:11:55 +0200 Subject: [PATCH 091/159] remove duplicate key geolocate --- modules/ui/help.js | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ui/help.js b/modules/ui/help.js index 344e45c77..e5703bf71 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -73,7 +73,6 @@ export function uiHelp(context) { down: icon('#icon-down', 'pre-text'), up: icon('#icon-up', 'pre-text'), inspect: icon('#icon-inspect', 'pre-text'), - geolocate: icon('#icon-geolocate', 'pre-text'), move: icon('#operation-move', 'pre-text'), merge: icon('#operation-merge', 'pre-text'), copy: icon('#operation-copy', 'pre-text'), From 05df663783c5a4b5dc28c9324c743dd883010deb Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Sun, 29 Oct 2017 18:24:29 +0100 Subject: [PATCH 092/159] Add List of Icons & Tools --- data/core.yaml | 90 ++++++++++++++++++++++---------------------- dist/locales/en.json | 38 +++++++++---------- modules/ui/help.js | 7 ++-- 3 files changed, 69 insertions(+), 66 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 87ff24ce1..9515c4a7f 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -566,8 +566,9 @@ en: Edits that you make on this map will be freely available to everyone who uses OpenStreetMap. They can be visible on every map based on OpenStreetMap. - The optimal resources for mapping are on-the-ground survey, personal knowledge, - or the provieded background. Copying from commercial sources like Google Maps is strictly forbidden. + Your edits can be based on personal knowledge, on-the-ground survey, or + background imgagery. + Copying from commercial sources like Google Maps is strictly forbidden. beforestart: | ### Before you start @@ -579,8 +580,10 @@ en: opensource: | ### Open Source - The iD editor is a collaborative project with [source - code available on GitHub](https://github.com/openstreetmap/iD). + This editor is called iD and you use version {version} now. + You can contribute and {translate} [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) + or {bug} [report a bug](https://github.com/openstreetmap/iD/issues). + The source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD). overview: intro: | @@ -603,9 +606,7 @@ en: This help is on top of the map area which shows OpenStreetMap data on top of a background imagery. On the left side is the *feature editor*, - there you can search for features and edit feature's type and attributes. - The buttons in the top row and the right column explain their - function if you hold the mouse pointer over them. + there you can {search} search for features and edit feature's type and attributes. navigation: | ### Navigation @@ -615,8 +616,8 @@ en: You can also use the arrow keys on your keyboard, using the keys while holding 'Ctrl' will move the map for one screenful. You can zoom in or out by scrolling with the mouse wheel or trackpad, - or by clicking the {plus} / {minus} buttons, holding 'Ctrl' while - clicking will zoom a lot. + or by clicking the {plus} / {minus} buttons on the top-right-hand + of the map, holding 'Ctrl' while clicking will zoom a lot. editing: intro: | @@ -642,7 +643,8 @@ en: When you make changes like editing roads, building, and places these are stored locally until you save them to the server. Don't worry if you make a mistake - you can undo changes - by clicking the {undo} Undo button, and redo changes by clicking the {redo} Redo button. + by clicking the {undo} 'Undo' button, and redo changes + by clicking the {redo} 'Redo' button. save: | ### Save @@ -735,7 +737,7 @@ en: ### Creating Found somewhere there should be a road but there isn't? Click the {line} Line - icon in the top-left of the editor or press the shortcut key `2` to start drawing + icon in the top-left of the map or press the shortcut key `2` to start drawing a line. Click on the start of the road on the map to start drawing. If the road @@ -763,7 +765,7 @@ en: To use a GPX track for mapping, drag and drop the GPX file onto the map editor. If it's recognized, it will be added to the map as a bright purple - line. Click on the 'Map Data' menu on the right side to enable, + line. Click on the {data} 'Map data' menu on the right side to enable, disable, or zoom to this new GPX-powered layer. The GPX track isn't directly uploaded to OpenStreetMap - the best way to @@ -826,7 +828,7 @@ en: is often out of date, so the building could simply be newly built. You can delete a building by clicking on it to select it, then pressing the 'Delete' - key, or right-clicking it and then using the {delete} Delete tool. + key, or right-clicking it and then using the {delete} 'Delete' tool. addresses: intro: | @@ -862,7 +864,7 @@ en: there are other often used types like trees, towers, or poles. To create a point feature click the {point} Point icon in the top-left - of the editor or press the shortcut key `1` to insert a point. + of the map or press the shortcut key `1` to insert a point. feature_editor: intro: | @@ -907,8 +909,8 @@ en: ### Undo & Redo Changes you make in the feature editor are automatically applied. - You can undo them at any time by clicking the {undo} button and redo - changes by clicking the {redo} Redo button. + You can undo them at any time by clicking the {undo} 'Undo' button and redo + changes by clicking the {redo} 'Redo' button. imagery: intro: | @@ -916,7 +918,7 @@ en: Aerial imagery is an important resource for mapping. A combination of airplane flyovers, satellite views, and freely-compiled sources are available - in the editor under the `Background settings` menu on the right. + in the editor under the {layers} `Background settings` menu on the right. background: | ### Background @@ -924,7 +926,7 @@ en: By default a [Bing Maps](https://www.bing.com/maps/) satellite layer is presented in the editor, but as you pan and zoom the map to new geographical areas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/) - will become available and the best for the area will be marked with a '*'. + will become available. offset: | ### Offset @@ -937,64 +939,65 @@ en: iconstools: icons: | - # Icons & Tools + # List Icons & Tools - ### Top row: + ### Feature editor {search} Search features + + ### Top row {point} 'Add point' mode {line} 'Add line' mode {area} 'Add area' mode {undo} Undo {redo} Redo {save} Save changes - ### Right column: + + ### Right column {plus} Zoom in {minus} Zoom out {geolocate} Show my location {layers} Background settings - {data} Data data + {data} Map data {help} Help - ### Bottom row: + + ### Bottom row {bug} Report a bug {translate} Help translate tools: | - ## Tools + ## Tools in the Editing Menu - The editing menu has the following tools to operate on selected features: {move} Move {rotate} Rotate {reflect_long} Reflect at long axis {reflect_short} Reflect at short axis {continue} Continue line {reverse} Reverse direction - {merge} Merge features into one or create relation + {merge} Merge selected features into one or create relation {split} Split in two {disconnect} Disconnect {circularize} Circularize {orthogonalize} Orthogonalize {straighten} Straighten line {delete} Delete - ### Reserved for later are: - {simplify} Simplify - {smooth} Smooth - more: | - ### More icons {more} + reserved: | + ### Reserved for later use are: {apply} Apply {close} Close {backward} Backward {forward} Forward {fullscreen} Fullscreen - {collapsescreen} Collapse-screen + {collapsescreen} Collapse screen {up} Up {down} Down {relation} Relation {vertex} Vertex {load} Load - ### Reserved for later are: {copy} Copy {paste} Paste + {simplify} Simplify + {smooth} Smooth {alert} Alert {inspect} Inspect {nearby} Nearby @@ -1019,7 +1022,7 @@ en: members: | ### Members - The group of features in a relation are called *members*. In the bottom of the + The group of features in a relation are called *members*. At the bottom of the feature editor, you can see which relations a feature is a member of, and click on a relation there will select it. When the relation is selected, you can see all of its members listed in the sidebar and highlighted on the map. @@ -1035,32 +1038,31 @@ en: edit: | ## Editing Relations - To add a feature to a relation, select the feature, click the {plus} button + To add a feature to a relation, select the feature, click the `+` button in the 'All relations' section of the feature editor, and select or type the name of the relation. To create a new relation, select the first feature that should be a member, - click the {plus} button in the 'All relations' section, and select 'New relation...'. + click the `+` button in the 'All relations' section, and select 'New relation...'. To remove a feature from a relation, select the feature and click the {delete} - Delete button next to the relation you want to remove it from. + 'Delete' button next to the relation you want to remove it from. multipolygons: | ### Multipolygons You can create multipolygons with holes using the {merge} 'Merge' tool. - Draw two areas (inner and outer) and select both. + Draw two or more areas (inner and outer) and select them. Then press either press the `C` shortcut key or right-click one - of the selected areas and select the 'Merge' {plus} tool. + of the selected areas and select the {merge} 'Merge' tool. turnrestrictions: | ### Turn restrictions - You can create turn restrictions in the feature editor when you select - an intersection node common to two or more roads on the map. - For every turn connected with the intersection you can forbid U-turn and for - every other road you can forbid left-turn, straight-on or right-turn. - + You can create turn restrictions when you select the point at a street + crossing of to two or more roads on the map. + In the feature editor your will find a graphical tool below 'Turn Restrictions' + where you can select a road and disable U-turn and turns into every other road. intro: done: done diff --git a/dist/locales/en.json b/dist/locales/en.json index f8730dbb8..3ebd624b4 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -682,20 +682,20 @@ "key": "H", "help": { "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nThe optimal resources for mapping are on-the-ground survey, personal knowledge,\nor the provieded background. Copying from commercial sources like Google Maps is strictly forbidden.\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imgagery.\nCopying from commercial sources like Google Maps is strictly forbidden.\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", - "opensource": "### Open Source\n\nThe iD editor is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n" + "opensource": "### Open Source\n\nThis editor is called iD and you use version {version} now.\nYou can contribute and {translate} [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor {bug} [report a bug](https://github.com/openstreetmap/iD/issues).\nThe source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD).\n" }, "overview": { "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", - "screen": "### Screen\n\nThis help is on top of the map area which shows OpenStreetMap data\non top of a background imagery. On the left side is the *feature editor*,\nthere you can search for features and edit feature's type and attributes.\nThe buttons in the top row and the right column explain their\nfunction if you hold the mouse pointer over them.\n", - "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons, holding 'Ctrl' while\nclicking will zoom a lot.\n" + "screen": "### Screen\n\nThis help is on top of the map area which shows OpenStreetMap data\non top of a background imagery. On the left side is the *feature editor*,\nthere you can {search} search for features and edit feature's type and attributes.\n", + "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" }, "editing": { "intro": "# Editing & Saving\n\nTo select a feature you want to edit, click on it on the map\nor search for it by name in the feature editor. \nSelected features are drawn with a pulsing glow and in the\nfeature editor the feature's type and attributes are shown.\nIf you right-click on it, the editing menu appears.\n", "multiselect": "### Multiselect\nTo select multiple features, hold down the 'Shift' key.\nThen either click on the features you want to select,\nor click, hold and move the mouse on the map to draw\na contour around those features.\nAll the points inside the lasso area will be selected.\n", - "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - you can undo changes\nby clicking the {undo} Undo button, and redo changes by clicking the {redo} Redo button.\n", + "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - you can undo changes\nby clicking the {undo} 'Undo' button, and redo changes\nby clicking the {redo} 'Redo' button.\n", "save": "### Save\n\nClick `Save` to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n", "upload": "### Upload\n\nIf everything looks good, you should explain your changes as a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)\nand click `Upload` to post the changes to\n[OpenStreetMap.org](https://www.openstreetmap.org/), where they will be visible\nto all other users and available for others to build and improve upon.\n", "comeback": "If you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor will offer to restore your work.\n" @@ -707,49 +707,49 @@ "connect": "### Connecting\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its nodes onto the other road in\norder to join them. The node will become grey inside.\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\nIf two road are connected on the map but not in reality,\nyou can disconnect them with right-click the connecting node and select\nthe {disconnect} 'Disconnect' tool or press the `D` shortcut key.\n\nIf you know that the crossing has traffic lights or crossswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", "attributes": "### Attribues\n\nWhen a road is selected on the left side the feature editor will show\nthe type of the road and many attributes like name, speed limit, lines,\nand surface. You can modify fields or even add new ones.\n", "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", - "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n" + "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n" }, "gps": { "intro": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", - "using": "### Using\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + "using": "### Using\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the {data} 'Map data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" }, "buildings": { "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are landuse, lakes, ponds, or forests.\nWhat you can do with buildings applies to most types of areas.\n", "select": "### Selecting \n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and \nattributes like name, levels, and address.\n", "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", - "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then using the {delete} Delete tool.\n" + "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then using the {delete} 'Delete' tool.\n" }, "addresses": { "intro": "# Addresses & Points\n\nAddresses are some of the most useful information for the map.\n\nAddress information can be added to OpenStreetMap using a variety of methods,\nsuch as adding a simple point containing an address, adding address information\nto a building, site or other area, or alternatively to an entrance node.\n", "nodup": "### No duplication\n\nUsually address informations doesn't need to be duplicated, e.g. when there\nis a building outline on the map and several shops as points inside,\nonly the building should have an address.\n", "recommendation": "### Recommendation\n\nMost buildings and sites have only one address and it is recommeded to add\nthe address to the building as a whole. If there is no building on the map\nand you cannot draw one, you should add an address point to the map.\n\nSome buildings or sites have more than one address. You can add the\naddresses as separate points inside the building.\n", - "points": "### Other Points\n\nWhile addresses are still the most common type of point feature,\nthere are other often used types like trees, towers, or poles.\n\nTo create a point feature click the {point} Point icon in the top-left\nof the editor or press the shortcut key `1` to insert a point.\n" + "points": "### Other Points\n\nWhile addresses are still the most common type of point feature,\nthere are other often used types like trees, towers, or poles.\n\nTo create a point feature click the {point} Point icon in the top-left\nof the map or press the shortcut key `1` to insert a point.\n" }, "feature_editor": { "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building. \n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", "tags": "### Tags\n\nBelow that you see the tags which is how the fields are stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n\nYou will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/),\nalso [Taginfo](https://taginfo.openstreetmap.org/) is a\ngreat resource to learn more about popular tag combinations.\n", - "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} button and redo\nchanges by clicking the {redo} Redo button.\n" + "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" }, "imagery": { - "intro": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the `Background settings` menu on the right.\n", - "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available and the best for the area will be marked with a '*'.\n", + "intro": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the {layers} `Background settings` menu on the right.\n", + "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available.\n", "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" }, "iconstools": { - "icons": "# Icons & Tools\n\n### Top row:\n{search} Search features\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo\n{redo} Redo\n{save} Save changes\n### Right column:\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Data data\n{help} Help\n### Bottom row:\n{bug} Report a bug\n{translate} Help translate\n", - "tools": "## Tools\n\nThe editing menu has the following tools to operate on selected features:\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{merge} Merge features into one or create relation\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{straighten} Straighten line\n{delete} Delete\n### Reserved for later are:\n{simplify} Simplify\n{smooth} Smooth\n", - "more": "### More icons {more}\n{apply} Apply\n{close} Close\n{backward} Backward\n{forward} Forward\n{fullscreen} Fullscreen\n{collapsescreen} Collapse-screen\n{up} Up\n{down} Down\n{relation} Relation\n{vertex} Vertex\n{load} Load\n### Reserved for later are:\n{copy} Copy\n{paste} Paste\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" + "icons": "# List Icons & Tools\n\n### Feature editor\n{search} Search features\n\n### Top row\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo\n{redo} Redo\n{save} Save changes\n\n### Right column\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Map data\n{help} Help\n\n### Bottom row\n{bug} Report a bug\n{translate} Help translate\n", + "tools": "## Tools in the Editing Menu\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{merge} Merge selected features into one or create relation\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{straighten} Straighten line\n{delete} Delete\n", + "reserved": "### Reserved for later use are:\n{apply} Apply\n{close} Close\n{backward} Backward\n{forward} Forward\n{fullscreen} Fullscreen\n{collapsescreen} Collapse screen\n{up} Up\n{down} Down\n{relation} Relation\n{vertex} Vertex\n{load} Load\n{copy} Copy\n{paste} Paste\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" }, "relations": { "intro": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. The most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut. Another often\nused type of relation is the *Turn restriction*.\n\nTwo other common types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines like roads,\nrivers, plot boundaries, or other boundary lines.\n", - "members": "### Members\n\nThe group of features in a relation are called *members*. In the bottom of the\nfeature editor, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n", + "members": "### Members\n\nThe group of features in a relation are called *members*. At the bottom of the\nfeature editor, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n", "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", - "edit": "## Editing Relations\n\nTo add a feature to a relation, select the feature, click the {plus} button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the {plus} button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \nDelete button next to the relation you want to remove it from.\n", - "multipolygons": "### Multipolygons\n\nYou can create multipolygons with holes using the {merge} 'Merge' tool.\nDraw two areas (inner and outer) and select both.\nThen press either press the `C` shortcut key or right-click one\nof the selected areas and select the 'Merge' {plus} tool.\n", - "turnrestrictions": "### Turn restrictions\n\nYou can create turn restrictions in the feature editor when you select\nan intersection node common to two or more roads on the map.\nFor every turn connected with the intersection you can forbid U-turn and for\nevery other road you can forbid left-turn, straight-on or right-turn.\n" + "edit": "## Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \n'Delete' button next to the relation you want to remove it from.\n", + "multipolygons": "### Multipolygons\n\nYou can create multipolygons with holes using the {merge} 'Merge' tool.\nDraw two or more areas (inner and outer) and select them.\nThen press either press the `C` shortcut key or right-click one\nof the selected areas and select the {merge} 'Merge' tool.\n", + "turnrestrictions": "### Turn restrictions\n\nYou can create turn restrictions when you select the point at a street\ncrossing of to two or more roads on the map.\nIn the feature editor your will find a graphical tool below 'Turn Restrictions'\nwhere you can select a road and disable U-turn and turns into every other road.\n" } }, "intro": { diff --git a/modules/ui/help.js b/modules/ui/help.js index e5703bf71..e432bc517 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -28,7 +28,7 @@ export function uiHelp(context) { ['help.addresses.',['intro','nodup','recommendation','points']], ['help.feature_editor.',['intro','select','fields','tags','undo']], ['help.imagery.',['intro','background','offset']], - ['help.iconstools.',['icons','tools','more']], + ['help.iconstools.',['icons','tools']], ['help.relations.',['intro','members','maintain','edit','multipolygons','turnrestrictions']] ]; @@ -67,7 +67,7 @@ export function uiHelp(context) { reverse: icon('#operation-reverse', 'pre-text'), continue: icon('#operation-continue', 'pre-text'), disconnect: icon('#operation-disconnect', 'pre-text'), - layers: icon('#operation-layers', 'pre-text'), + layers: icon('#icon-layers', 'pre-text'), vertex: icon('#icon-vertex', 'pre-text'), data: icon('#icon-data', 'pre-text'), down: icon('#icon-down', 'pre-text'), @@ -81,7 +81,8 @@ export function uiHelp(context) { close: icon('#icon-close', 'pre-text'), undo: icon('#icon-undo', 'pre-text'), redo: icon('#icon-redo', 'pre-text'), - save: icon('#icon-save', 'pre-text') + save: icon('#icon-save', 'pre-text'), + version: context.version }; var docs = docKeys.map(function(key) { From 16c3a96777966761aec317f0193076d3b5030016 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Sun, 29 Oct 2017 22:33:04 +0100 Subject: [PATCH 093/159] improve relations --- data/core.yaml | 110 ++++++++++++++++++++++++------------------- dist/locales/en.json | 22 ++++----- modules/ui/help.js | 2 +- 3 files changed, 74 insertions(+), 60 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 9515c4a7f..011b0b8c2 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -568,7 +568,8 @@ en: OpenStreetMap. They can be visible on every map based on OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground survey, or background imgagery. - Copying from commercial sources like Google Maps is strictly forbidden. + [Copying from commercial sources](https://www.openstreetmap.org/copyright) + like Google Maps is strictly forbidden. beforestart: | ### Before you start @@ -580,8 +581,9 @@ en: opensource: | ### Open Source - This editor is called iD and you use version {version} now. - You can contribute and {translate} [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) + The iD editor is a collaborative project and you use version {version} now. + You can contribute and {translate} + [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or {bug} [report a bug](https://github.com/openstreetmap/iD/issues). The source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD). @@ -604,9 +606,10 @@ en: screen: | ### Screen - This help is on top of the map area which shows OpenStreetMap data - on top of a background imagery. On the left side is the *feature editor*, - there you can {search} search for features and edit feature's type and attributes. + This help is on top of the map area which shows a background imagery + and features on top of it. Here you can edit where the features are. + On the left side is the *feature editor*, there you can edit feature's type + and attributes and also {search} search for features and features's type. navigation: | ### Navigation @@ -939,17 +942,23 @@ en: iconstools: icons: | - # List Icons & Tools + # Icons & Tools + + The icons used in this editor are made to be easily understandable + and all give you more information with mouse-over. + Here icons are often used. ### Feature editor {search} Search features + {apply} Apply + {close} Close ### Top row {point} 'Add point' mode {line} 'Add line' mode {area} 'Add area' mode - {undo} Undo - {redo} Redo + {undo} Undo changes + {redo} Redo changes {save} Save changes ### Right column @@ -967,35 +976,35 @@ en: tools: | ## Tools in the Editing Menu + With right-click on features you can use these tools. + {move} Move {rotate} Rotate {reflect_long} Reflect at long axis {reflect_short} Reflect at short axis {continue} Continue line {reverse} Reverse direction - {merge} Merge selected features into one or create relation + {straighten} Straighten line + {merge} Merge selected features {split} Split in two {disconnect} Disconnect {circularize} Circularize {orthogonalize} Orthogonalize - {straighten} Straighten line {delete} Delete reserved: | ### Reserved for later use are: - {apply} Apply - {close} Close - {backward} Backward {forward} Forward - {fullscreen} Fullscreen - {collapsescreen} Collapse screen + {backward} Backward {up} Up {down} Down + {fullscreen} Fullscreen + {collapsescreen} Collapse screen {relation} Relation {vertex} Vertex - {load} Load {copy} Copy {paste} Paste + {load} Load {simplify} Simplify {smooth} Smooth {alert} Alert @@ -1006,26 +1015,47 @@ en: relations: intro: | - # Relations + # Relations & Members - A relation is a special type of feature in OpenStreetMap that groups together - other features. The most common type of relation is the *multipolygon*, + A *relation* is a special type of feature in OpenStreetMap that groups together other + features, called *members* of the relation. Every member of a relation can have a + *role* for the relation. At the bottom of the feature editor, you can see which + relations a feature is a member of, and the click on a relation there will select it. + When the relation is selected, you can see all of its members highlighted on the map + and listed in the feature editor together with their role for the relation. + + types: | + ### Common Types + + The most common type of relation is the *multipolygon*, which groups together several areas to define a complex area, which may - consist of several pieces or has holes in it like a donut. Another often - used type of relation is the *Turn restriction*. + consist of several pieces or has holes in it like a donut. + Another type of relation is the *Turn restriction* which groups togehter two + roads segments at a crossing to disable turning options. - Two other common types of relations are *route relations*, which group together + Two other types of relations are *route relations*, which group together sections of road that belong to a specific highway, bus route, or hiking route, - and *boundaries*, which group together sections of boundary lines like roads, - rivers, plot boundaries, or other boundary lines. + and *boundaries*, which group together sections of boundary lines which may be + roads, rivers, or plot boundaries at the same time. - members: | - ### Members + multipolygons: | + ### Multipolygons - The group of features in a relation are called *members*. At the bottom of the - feature editor, you can see which relations a feature is a member of, and click on a - relation there will select it. When the relation is selected, you can see all of - its members listed in the sidebar and highlighted on the map. + Draw two or more areas and select them. Then press either press + the `C` shortcut key or right-click one of the selected areas and + select the {merge} 'Merge' tool. This will create a new multipolygon + relation with all selected areas as members. The areas will have the role + outer except When a area is inside another area it will have the role inner + and become the hole in the outer area. + + turnrestrictions: | + ### Turn restrictions + + Select the crossing node of two or more roads. In the feature editor + you will see the roads connected to the crossing below 'Turn Restrictions'. + There you can select a road and disable U-turn and turns into every other road. + This will create a turn restriction multipolygon with both roads and the + crossing as members with roles from, to, and via. maintain: | ### Maintaining @@ -1036,7 +1066,7 @@ en: new section is a member of the same relations as the original. edit: | - ## Editing Relations + ### Editing Relations To add a feature to a relation, select the feature, click the `+` button in the 'All relations' section of the feature editor, and select or type @@ -1048,22 +1078,6 @@ en: To remove a feature from a relation, select the feature and click the {delete} 'Delete' button next to the relation you want to remove it from. - multipolygons: | - ### Multipolygons - - You can create multipolygons with holes using the {merge} 'Merge' tool. - Draw two or more areas (inner and outer) and select them. - Then press either press the `C` shortcut key or right-click one - of the selected areas and select the {merge} 'Merge' tool. - - turnrestrictions: | - ### Turn restrictions - - You can create turn restrictions when you select the point at a street - crossing of to two or more roads on the map. - In the feature editor your will find a graphical tool below 'Turn Restrictions' - where you can select a road and disable U-turn and turns into every other road. - intro: done: done ok: OK diff --git a/dist/locales/en.json b/dist/locales/en.json index 3ebd624b4..df586800f 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -682,14 +682,14 @@ "key": "H", "help": { "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imgagery.\nCopying from commercial sources like Google Maps is strictly forbidden.\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imgagery.\n[Copying from commercial sources](https://www.openstreetmap.org/copyright)\nlike Google Maps is strictly forbidden.\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", - "opensource": "### Open Source\n\nThis editor is called iD and you use version {version} now.\nYou can contribute and {translate} [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor {bug} [report a bug](https://github.com/openstreetmap/iD/issues).\nThe source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD).\n" + "opensource": "### Open Source\n\nThe iD editor is a collaborative project and you use version {version} now.\nYou can contribute and {translate}\n[help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor {bug} [report a bug](https://github.com/openstreetmap/iD/issues).\nThe source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD).\n" }, "overview": { "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", - "screen": "### Screen\n\nThis help is on top of the map area which shows OpenStreetMap data\non top of a background imagery. On the left side is the *feature editor*,\nthere you can {search} search for features and edit feature's type and attributes.\n", + "screen": "### Screen\n\nThis help is on top of the map area which shows a background imagery\nand features on top of it. Here you can edit where the features are.\nOn the left side is the *feature editor*, there you can edit feature's type\nand attributes and also {search} search for features and features's type.\n", "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" }, "editing": { @@ -739,17 +739,17 @@ "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" }, "iconstools": { - "icons": "# List Icons & Tools\n\n### Feature editor\n{search} Search features\n\n### Top row\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo\n{redo} Redo\n{save} Save changes\n\n### Right column\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Map data\n{help} Help\n\n### Bottom row\n{bug} Report a bug\n{translate} Help translate\n", - "tools": "## Tools in the Editing Menu\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{merge} Merge selected features into one or create relation\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{straighten} Straighten line\n{delete} Delete\n", - "reserved": "### Reserved for later use are:\n{apply} Apply\n{close} Close\n{backward} Backward\n{forward} Forward\n{fullscreen} Fullscreen\n{collapsescreen} Collapse screen\n{up} Up\n{down} Down\n{relation} Relation\n{vertex} Vertex\n{load} Load\n{copy} Copy\n{paste} Paste\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" + "icons": "# Icons & Tools\n\nThe icons used in this editor are made to be easily understandable\nand all give you more information with mouse-over.\nHere icons are often used.\n\n### Feature editor\n{search} Search features\n{apply} Apply\n{close} Close\n\n### Top row\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo changes\n{redo} Redo changes\n{save} Save changes\n\n### Right column\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Map data\n{help} Help\n\n### Bottom row\n{bug} Report a bug\n{translate} Help translate\n", + "tools": "## Tools in the Editing Menu\n\nWith right-click on features you can use these tools.\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{straighten} Straighten line\n{merge} Merge selected features\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{delete} Delete\n", + "reserved": "### Reserved for later use are:\n{forward} Forward\n{backward} Backward\n{up} Up\n{down} Down\n{fullscreen} Fullscreen\n{collapsescreen} Collapse screen\n{relation} Relation\n{vertex} Vertex\n{copy} Copy\n{paste} Paste\n{load} Load\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" }, "relations": { - "intro": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. The most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut. Another often\nused type of relation is the *Turn restriction*.\n\nTwo other common types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines like roads,\nrivers, plot boundaries, or other boundary lines.\n", - "members": "### Members\n\nThe group of features in a relation are called *members*. At the bottom of the\nfeature editor, you can see which relations a feature is a member of, and click on a\nrelation there will select it. When the relation is selected, you can see all of\nits members listed in the sidebar and highlighted on the map.\n", + "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", + "types": "### Common Types\n\nThe most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut.\nAnother type of relation is the *Turn restriction* which groups togehter two\nroads segments at a crossing to disable turning options.\n\nTwo other types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines which may be\nroads, rivers, or plot boundaries at the same time.\n", + "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and \nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When a area is inside another area it will have the role inner\nand become the hole in the outer area.\n", + "turnrestrictions": "### Turn restrictions\n\nSelect the crossing node of two or more roads. In the feature editor\nyou will see the roads connected to the crossing below 'Turn Restrictions'.\nThere you can select a road and disable U-turn and turns into every other road.\nThis will create a turn restriction multipolygon with both roads and the\ncrossing as members with roles from, to, and via.\n", "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", - "edit": "## Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \n'Delete' button next to the relation you want to remove it from.\n", - "multipolygons": "### Multipolygons\n\nYou can create multipolygons with holes using the {merge} 'Merge' tool.\nDraw two or more areas (inner and outer) and select them.\nThen press either press the `C` shortcut key or right-click one\nof the selected areas and select the {merge} 'Merge' tool.\n", - "turnrestrictions": "### Turn restrictions\n\nYou can create turn restrictions when you select the point at a street\ncrossing of to two or more roads on the map.\nIn the feature editor your will find a graphical tool below 'Turn Restrictions'\nwhere you can select a road and disable U-turn and turns into every other road.\n" + "edit": "### Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \n'Delete' button next to the relation you want to remove it from.\n" } }, "intro": { diff --git a/modules/ui/help.js b/modules/ui/help.js index e432bc517..97429edf9 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -29,7 +29,7 @@ export function uiHelp(context) { ['help.feature_editor.',['intro','select','fields','tags','undo']], ['help.imagery.',['intro','background','offset']], ['help.iconstools.',['icons','tools']], - ['help.relations.',['intro','members','maintain','edit','multipolygons','turnrestrictions']] + ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] ]; var icont = { From 13ccad0241f32dd9029dcf5a3c6d2e5fb7de08e0 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Mon, 30 Oct 2017 08:49:54 +0100 Subject: [PATCH 094/159] correct typos --- data/core.yaml | 38 +++++++++++++++++++------------------- dist/locales/en.json | 32 ++++++++++++++++---------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 011b0b8c2..283f7c060 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -4,7 +4,7 @@ en: title: Area description: "Add parks, buildings, lakes or other areas to the map." tail: "Click on the map to start drawing an area, like a park, lake, or building." - add_line: + sadd_line: title: Line description: "Add highways, streets, pedestrian paths, canals or other lines to the map." tail: "Click on the map to start drawing a road, path, or route." @@ -567,7 +567,7 @@ en: Edits that you make on this map will be freely available to everyone who uses OpenStreetMap. They can be visible on every map based on OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground survey, or - background imgagery. + background imagery. [Copying from commercial sources](https://www.openstreetmap.org/copyright) like Google Maps is strictly forbidden. @@ -606,10 +606,10 @@ en: screen: | ### Screen - This help is on top of the map area which shows a background imagery + This help is on top of the map area which shows background imagery and features on top of it. Here you can edit where the features are. On the left side is the *feature editor*, there you can edit feature's type - and attributes and also {search} search for features and features's type. + and attributes and also {search} search for features and feature's type. navigation: | ### Navigation @@ -677,7 +677,7 @@ en: You can create, fix, and delete roads with this editor. Roads can be all kinds: paths, highways, trails, cycle ways, and more - any used segment - is mapable. Roads are the most used type of lines. Other examples of + is mappable. Roads are the most used type of lines. Other examples of lines are waterways, walls, and fences. What you can do with roads applies to most types of lines. @@ -713,12 +713,12 @@ en: you can disconnect them with right-click the connecting node and select the {disconnect} 'Disconnect' tool or press the `D` shortcut key. - If you know that the crossing has traffic lights or crossswalks, + If you know that the crossing has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type. attributes: | - ### Attribues + ### Attributtes When a road is selected on the left side the feature editor will show the type of the road and many attributes like name, speed limit, lines, @@ -756,8 +756,8 @@ en: # GPS Collected GPS traces are one valuable source of data for OpenStreetMap. This editor - supports local traces - `.gpx` files on your local computer. You can collect - this kind of GPS trace with a number of smartphone applications as well as + supports local traces files (file types `.gpx`, `.geojson`, and `.kml`) on your local computer. + You can collect this kind of GPS trace with a number of smartphone applications as well as personal GPS hardware. For information on how to perform a GPS survey, read @@ -782,7 +782,7 @@ en: OpenStreetMap is the world's largest database of buildings. You can improve this database. Buildings are the most used type - of areas, others are landuse, lakes, ponds, or forests. + of areas, others are residential areas, farmland, forests, lakes, or ponds. What you can do with buildings applies to most types of areas. select: | @@ -846,14 +846,14 @@ en: nodup: | ### No duplication - Usually address informations doesn't need to be duplicated, e.g. when there + Usually address information doesn't need to be duplicated, e.g. when there is a building outline on the map and several shops as points inside, only the building should have an address. recommendation: | ### Recommendation - Most buildings and sites have only one address and it is recommeded to add + Most buildings and sites have only one address and it is recommended to add the address to the building as a whole. If there is no building on the map and you cannot draw one, you should add an address point to the map. @@ -900,7 +900,7 @@ en: tags: | ### Tags - Below that you see the tags which is how the fields are stored in OpenStreetMap. + Below that you see the tags which are actually stored in OpenStreetMap. If you cannot find the feature's type with the feature editor or you cannot add required fields, then you can add additional tags with the `+` button. @@ -989,7 +989,7 @@ en: {split} Split in two {disconnect} Disconnect {circularize} Circularize - {orthogonalize} Orthogonalize + {orthogonalize} Square corners {delete} Delete reserved: | @@ -998,7 +998,7 @@ en: {backward} Backward {up} Up {down} Down - {fullscreen} Fullscreen + {fullscreen} Full screen {collapsescreen} Collapse screen {relation} Relation {vertex} Vertex @@ -1011,7 +1011,7 @@ en: {inspect} Inspect {nearby} Nearby {avatar} Avatar - {outlink} Outlink + {outlink} Share relations: intro: | @@ -1030,7 +1030,7 @@ en: The most common type of relation is the *multipolygon*, which groups together several areas to define a complex area, which may consist of several pieces or has holes in it like a donut. - Another type of relation is the *Turn restriction* which groups togehter two + Another type of relation is the *Turn restriction* which groups together two roads segments at a crossing to disable turning options. Two other types of relations are *route relations*, which group together @@ -1045,7 +1045,7 @@ en: the `C` shortcut key or right-click one of the selected areas and select the {merge} 'Merge' tool. This will create a new multipolygon relation with all selected areas as members. The areas will have the role - outer except When a area is inside another area it will have the role inner + outer except When an area is inside another area it will have the role inner and become the hole in the outer area. turnrestrictions: | @@ -1054,7 +1054,7 @@ en: Select the crossing node of two or more roads. In the feature editor you will see the roads connected to the crossing below 'Turn Restrictions'. There you can select a road and disable U-turn and turns into every other road. - This will create a turn restriction multipolygon with both roads and the + This will create a turn restriction relation with both roads and the crossing as members with roles from, to, and via. maintain: | diff --git a/dist/locales/en.json b/dist/locales/en.json index df586800f..b1a7c3633 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -6,7 +6,7 @@ "description": "Add parks, buildings, lakes or other areas to the map.", "tail": "Click on the map to start drawing an area, like a park, lake, or building." }, - "add_line": { + "sadd_line": { "title": "Line", "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.", "tail": "Click on the map to start drawing a road, path, or route." @@ -682,14 +682,14 @@ "key": "H", "help": { "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imgagery.\n[Copying from commercial sources](https://www.openstreetmap.org/copyright)\nlike Google Maps is strictly forbidden.\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imagery.\n[Copying from commercial sources](https://www.openstreetmap.org/copyright)\nlike Google Maps is strictly forbidden.\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", "opensource": "### Open Source\n\nThe iD editor is a collaborative project and you use version {version} now.\nYou can contribute and {translate}\n[help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor {bug} [report a bug](https://github.com/openstreetmap/iD/issues).\nThe source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD).\n" }, "overview": { "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", - "screen": "### Screen\n\nThis help is on top of the map area which shows a background imagery\nand features on top of it. Here you can edit where the features are.\nOn the left side is the *feature editor*, there you can edit feature's type\nand attributes and also {search} search for features and features's type.\n", + "screen": "### Screen\n\nThis help is on top of the map area which shows background imagery\nand features on top of it. Here you can edit where the features are.\nOn the left side is the *feature editor*, there you can edit feature's type\nand attributes and also {search} search for features and feature's type.\n", "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" }, "editing": { @@ -701,20 +701,20 @@ "comeback": "If you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor will offer to restore your work.\n" }, "roads": { - "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mapable. Roads are the most used type of lines. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", + "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mappable. Roads are the most used type of lines. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", "modifying": "### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them or\nto a GPS track. You can adjust these roads so they are in the correct place.\nClick on a road to select it and the pulsing glow will become visible.\nAll nodes of the road will be shown as small circles.\nYou can drag the nodes to better locations.\nYou can also create new nodes either by double-clicking on the road or by\nmoving the small triangles at the midpoints between nodes.\n", "move": "### Moving\n\nIf you right-click the road the editing menu with several tools appears.\nYou can select the {move} 'Move' tool, move the entire road at one time, and\nthen click again to save that movement. You can also simply press the\n`M` shortcut key, to start the move.\n", - "connect": "### Connecting\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its nodes onto the other road in\norder to join them. The node will become grey inside.\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\nIf two road are connected on the map but not in reality,\nyou can disconnect them with right-click the connecting node and select\nthe {disconnect} 'Disconnect' tool or press the `D` shortcut key.\n\nIf you know that the crossing has traffic lights or crossswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", - "attributes": "### Attribues\n\nWhen a road is selected on the left side the feature editor will show\nthe type of the road and many attributes like name, speed limit, lines,\nand surface. You can modify fields or even add new ones.\n", + "connect": "### Connecting\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its nodes onto the other road in\norder to join them. The node will become grey inside.\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\nIf two road are connected on the map but not in reality,\nyou can disconnect them with right-click the connecting node and select\nthe {disconnect} 'Disconnect' tool or press the `D` shortcut key.\n\nIf you know that the crossing has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", + "attributes": "### Attributtes\n\nWhen a road is selected on the left side the feature editor will show\nthe type of the road and many attributes like name, speed limit, lines,\nand surface. You can modify fields or even add new ones.\n", "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n" }, "gps": { - "intro": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", + "intro": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces files (file types `.gpx`, `.geojson`, and `.kml`) on your local computer.\nYou can collect this kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", "using": "### Using\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the {data} 'Map data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" }, "buildings": { - "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are landuse, lakes, ponds, or forests.\nWhat you can do with buildings applies to most types of areas.\n", + "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", "select": "### Selecting \n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and \nattributes like name, levels, and address.\n", "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", @@ -722,15 +722,15 @@ }, "addresses": { "intro": "# Addresses & Points\n\nAddresses are some of the most useful information for the map.\n\nAddress information can be added to OpenStreetMap using a variety of methods,\nsuch as adding a simple point containing an address, adding address information\nto a building, site or other area, or alternatively to an entrance node.\n", - "nodup": "### No duplication\n\nUsually address informations doesn't need to be duplicated, e.g. when there\nis a building outline on the map and several shops as points inside,\nonly the building should have an address.\n", - "recommendation": "### Recommendation\n\nMost buildings and sites have only one address and it is recommeded to add\nthe address to the building as a whole. If there is no building on the map\nand you cannot draw one, you should add an address point to the map.\n\nSome buildings or sites have more than one address. You can add the\naddresses as separate points inside the building.\n", + "nodup": "### No duplication\n\nUsually address information doesn't need to be duplicated, e.g. when there\nis a building outline on the map and several shops as points inside,\nonly the building should have an address.\n", + "recommendation": "### Recommendation\n\nMost buildings and sites have only one address and it is recommended to add\nthe address to the building as a whole. If there is no building on the map\nand you cannot draw one, you should add an address point to the map.\n\nSome buildings or sites have more than one address. You can add the\naddresses as separate points inside the building.\n", "points": "### Other Points\n\nWhile addresses are still the most common type of point feature,\nthere are other often used types like trees, towers, or poles.\n\nTo create a point feature click the {point} Point icon in the top-left\nof the map or press the shortcut key `1` to insert a point.\n" }, "feature_editor": { "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building. \n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", - "tags": "### Tags\n\nBelow that you see the tags which is how the fields are stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n\nYou will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/),\nalso [Taginfo](https://taginfo.openstreetmap.org/) is a\ngreat resource to learn more about popular tag combinations.\n", + "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n\nYou will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/),\nalso [Taginfo](https://taginfo.openstreetmap.org/) is a\ngreat resource to learn more about popular tag combinations.\n", "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" }, "imagery": { @@ -740,14 +740,14 @@ }, "iconstools": { "icons": "# Icons & Tools\n\nThe icons used in this editor are made to be easily understandable\nand all give you more information with mouse-over.\nHere icons are often used.\n\n### Feature editor\n{search} Search features\n{apply} Apply\n{close} Close\n\n### Top row\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo changes\n{redo} Redo changes\n{save} Save changes\n\n### Right column\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Map data\n{help} Help\n\n### Bottom row\n{bug} Report a bug\n{translate} Help translate\n", - "tools": "## Tools in the Editing Menu\n\nWith right-click on features you can use these tools.\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{straighten} Straighten line\n{merge} Merge selected features\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Orthogonalize\n{delete} Delete\n", - "reserved": "### Reserved for later use are:\n{forward} Forward\n{backward} Backward\n{up} Up\n{down} Down\n{fullscreen} Fullscreen\n{collapsescreen} Collapse screen\n{relation} Relation\n{vertex} Vertex\n{copy} Copy\n{paste} Paste\n{load} Load\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Outlink\n" + "tools": "## Tools in the Editing Menu\n\nWith right-click on features you can use these tools.\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{straighten} Straighten line\n{merge} Merge selected features\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Square corners\n{delete} Delete\n", + "reserved": "### Reserved for later use are:\n{forward} Forward\n{backward} Backward\n{up} Up\n{down} Down\n{fullscreen} Full screen\n{collapsescreen} Collapse screen\n{relation} Relation\n{vertex} Vertex\n{copy} Copy\n{paste} Paste\n{load} Load\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Share\n" }, "relations": { "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", - "types": "### Common Types\n\nThe most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut.\nAnother type of relation is the *Turn restriction* which groups togehter two\nroads segments at a crossing to disable turning options.\n\nTwo other types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines which may be\nroads, rivers, or plot boundaries at the same time.\n", - "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and \nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When a area is inside another area it will have the role inner\nand become the hole in the outer area.\n", - "turnrestrictions": "### Turn restrictions\n\nSelect the crossing node of two or more roads. In the feature editor\nyou will see the roads connected to the crossing below 'Turn Restrictions'.\nThere you can select a road and disable U-turn and turns into every other road.\nThis will create a turn restriction multipolygon with both roads and the\ncrossing as members with roles from, to, and via.\n", + "types": "### Common Types\n\nThe most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut.\nAnother type of relation is the *Turn restriction* which groups together two\nroads segments at a crossing to disable turning options.\n\nTwo other types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines which may be\nroads, rivers, or plot boundaries at the same time.\n", + "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and \nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When an area is inside another area it will have the role inner\nand become the hole in the outer area.\n", + "turnrestrictions": "### Turn restrictions\n\nSelect the crossing node of two or more roads. In the feature editor\nyou will see the roads connected to the crossing below 'Turn Restrictions'.\nThere you can select a road and disable U-turn and turns into every other road.\nThis will create a turn restriction relation with both roads and the\ncrossing as members with roles from, to, and via.\n", "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", "edit": "### Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \n'Delete' button next to the relation you want to remove it from.\n" } From 9a921b72a9f6c9fed223591e11b5976266677550 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Tue, 31 Oct 2017 09:52:45 +0100 Subject: [PATCH 095/159] add_line instead of errorneous sadd_line --- data/core.yaml | 2 +- dist/locales/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 283f7c060..bd648688d 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -4,7 +4,7 @@ en: title: Area description: "Add parks, buildings, lakes or other areas to the map." tail: "Click on the map to start drawing an area, like a park, lake, or building." - sadd_line: + add_line: title: Line description: "Add highways, streets, pedestrian paths, canals or other lines to the map." tail: "Click on the map to start drawing a road, path, or route." diff --git a/dist/locales/en.json b/dist/locales/en.json index b1a7c3633..65067945c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -6,7 +6,7 @@ "description": "Add parks, buildings, lakes or other areas to the map.", "tail": "Click on the map to start drawing an area, like a park, lake, or building." }, - "sadd_line": { + "add_line": { "title": "Line", "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.", "tail": "Click on the map to start drawing a road, path, or route." From 011f351bb7e2c9df18bf6c9c39ea4e617bd6bcb1 Mon Sep 17 00:00:00 2001 From: Manfred Brandl Date: Thu, 2 Nov 2017 14:28:37 +0100 Subject: [PATCH 096/159] do not mention wiki.openstreetmap.org --- data/core.yaml | 6 ++---- dist/locales/en.json | 16 +--------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index bd648688d..e663673ee 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -903,10 +903,8 @@ en: Below that you see the tags which are actually stored in OpenStreetMap. If you cannot find the feature's type with the feature editor or you cannot add required fields, then you can add additional tags with the `+` button. - - You will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/), - also [Taginfo](https://taginfo.openstreetmap.org/) is a - great resource to learn more about popular tag combinations. + [Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more + about popular tag combinations. undo: | ### Undo & Redo diff --git a/dist/locales/en.json b/dist/locales/en.json index 65067945c..bd579943a 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -730,7 +730,7 @@ "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building. \n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", - "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n\nYou will find many tags in the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/),\nalso [Taginfo](https://taginfo.openstreetmap.org/) is a\ngreat resource to learn more about popular tag combinations.\n", + "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n[Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more\nabout popular tag combinations.\n", "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" }, "imagery": { @@ -5949,13 +5949,6 @@ "description": "Premium DigitalGlobe satellite imagery.", "name": "DigitalGlobe Premium Imagery" }, - "DigitalGlobe-Premium-vintage": { - "attribution": { - "text": "Terms & Feedback" - }, - "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", - "name": "DigitalGlobe Premium Imagery Vintage" - }, "DigitalGlobe-Standard": { "attribution": { "text": "Terms & Feedback" @@ -5963,13 +5956,6 @@ "description": "Standard DigitalGlobe satellite imagery.", "name": "DigitalGlobe Standard Imagery" }, - "DigitalGlobe-Standard-vintage": { - "attribution": { - "text": "Terms & Feedback" - }, - "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", - "name": "DigitalGlobe Standard Imagery Vintage" - }, "EsriWorldImagery": { "attribution": { "text": "Terms & Feedback" From 3b775930f67b8877379e3e689e820dbdb24e77aa Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 17:20:54 -0500 Subject: [PATCH 097/159] 4 space tabwidth, no trailing spaces --- data/core.yaml | 22 ++++---- dist/locales/en.json | 14 +++++ modules/ui/help.js | 131 ++++++++++++++++++++++--------------------- 3 files changed, 92 insertions(+), 75 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index e663673ee..dd2be9118 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -558,14 +558,14 @@ en: intro: | # Help - With this [OpenStreetMap](https://www.openstreetmap.org/) editor you can + With this [OpenStreetMap](https://www.openstreetmap.org/) editor you can add and update the free and editable map of the world online with your browser. opendata: | ### Open Data Edits that you make on this map will be freely available to everyone who uses - OpenStreetMap. They can be visible on every map based on OpenStreetMap. + OpenStreetMap. They can be visible on every map based on OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground survey, or background imagery. [Copying from commercial sources](https://www.openstreetmap.org/copyright) @@ -615,7 +615,7 @@ en: ### Navigation You can drag the map by pressing and holding the left mouse button - while moving the mouse around. This is also called panning. + while moving the mouse around. This is also called panning. You can also use the arrow keys on your keyboard, using the keys while holding 'Ctrl' will move the map for one screenful. You can zoom in or out by scrolling with the mouse wheel or trackpad, @@ -627,7 +627,7 @@ en: # Editing & Saving To select a feature you want to edit, click on it on the map - or search for it by name in the feature editor. + or search for it by name in the feature editor. Selected features are drawn with a pulsing glow and in the feature editor the feature's type and attributes are shown. If you right-click on it, the editing menu appears. @@ -786,11 +786,11 @@ en: What you can do with buildings applies to most types of areas. select: | - ### Selecting + ### Selecting You can select a building by clicking on its border. the pulsing glow will will become visible, all nodes will be shown as circles and the - feature editor on the left will show the type of the building and + feature editor on the left will show the type of the building and attributes like name, levels, and address. modify: | @@ -883,7 +883,7 @@ en: is, like whether it's a highway or residential road, supermarket or cafe. The feature editor will display buttons for common feature types, and you can find others by typing what you're looking for in the search box. - + Click the 'i' in the top-right-hand corner of a feature type button to learn more about it. Click a button to choose that type. @@ -892,7 +892,7 @@ en: After you choose a feature type, or when you select a feature that already has a type assigned, the feature editor will display fields with details about - the feature like its name or speed limit for a road or levels and address for a building. + the feature like its name or speed limit for a road or levels and address for a building. Below the fields you see, you can click the `Add field` dropdown to add other details, like a Wikipedia link, wheelchair access, and more. @@ -905,7 +905,7 @@ en: cannot add required fields, then you can add additional tags with the `+` button. [Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more about popular tag combinations. - + undo: | ### Undo & Redo @@ -1040,7 +1040,7 @@ en: ### Multipolygons Draw two or more areas and select them. Then press either press - the `C` shortcut key or right-click one of the selected areas and + the `C` shortcut key or right-click one of the selected areas and select the {merge} 'Merge' tool. This will create a new multipolygon relation with all selected areas as members. The areas will have the role outer except When an area is inside another area it will have the role inner @@ -1073,7 +1073,7 @@ en: To create a new relation, select the first feature that should be a member, click the `+` button in the 'All relations' section, and select 'New relation...'. - To remove a feature from a relation, select the feature and click the {delete} + To remove a feature from a relation, select the feature and click the {delete} 'Delete' button next to the relation you want to remove it from. intro: diff --git a/dist/locales/en.json b/dist/locales/en.json index bd579943a..f0c1fa3de 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5949,6 +5949,13 @@ "description": "Premium DigitalGlobe satellite imagery.", "name": "DigitalGlobe Premium Imagery" }, + "DigitalGlobe-Premium-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Premium Imagery Vintage" + }, "DigitalGlobe-Standard": { "attribution": { "text": "Terms & Feedback" @@ -5956,6 +5963,13 @@ "description": "Standard DigitalGlobe satellite imagery.", "name": "DigitalGlobe Standard Imagery" }, + "DigitalGlobe-Standard-vintage": { + "attribution": { + "text": "Terms & Feedback" + }, + "description": "Imagery boundaries and capture dates. Labels appear at zoom level 14 and higher.", + "name": "DigitalGlobe Standard Imagery Vintage" + }, "EsriWorldImagery": { "attribution": { "text": "Terms & Feedback" diff --git a/modules/ui/help.js b/modules/ui/help.js index 97429edf9..364e74427 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -19,80 +19,83 @@ export function uiHelp(context) { var key = t('help.key'); var docKeys = [ - ['help.help.',['intro','opendata','beforestart','opensource']], - ['help.overview.',['intro','features','screen','navigation']], - ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], - ['help.roads.',['intro','move','connect','attributes','delete','create']], - ['help.gps.',['intro','using']], - ['help.buildings.',['intro','select','modify','create','delete']], - ['help.addresses.',['intro','nodup','recommendation','points']], - ['help.feature_editor.',['intro','select','fields','tags','undo']], - ['help.imagery.',['intro','background','offset']], - ['help.iconstools.',['icons','tools']], - ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] - ]; + ['help.help.',['intro','opendata','beforestart','opensource']], + ['help.overview.',['intro','features','screen','navigation']], + ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], + ['help.roads.',['intro','move','connect','attributes','delete','create']], + ['help.gps.',['intro','using']], + ['help.buildings.',['intro','select','modify','create','delete']], + ['help.addresses.',['intro','nodup','recommendation','points']], + ['help.feature_editor.',['intro','select','fields','tags','undo']], + ['help.imagery.',['intro','background','offset']], + ['help.iconstools.',['icons','tools']], + ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] + ]; var icont = { - more: icon('#icon-more', 'pre-text'), - apply: icon('#icon-apply', 'pre-text'), - alert: icon('#icon-alert', 'pre-text'), - avatar: icon('#icon-avatar', 'pre-text'), - forward: icon('#icon-forward', 'pre-text'), - backward: icon('#icon-backward', 'pre-text'), - fullscreen: icon('#icon-full-screen', 'pre-text'), - collapsescreen: icon('#icon-collapse-screen', 'pre-text'), - geolocate: icon('#icon-geolocate', 'pre-text'), - load: icon('#icon-load', 'pre-text'), - search: icon('#icon-search', 'pre-text'), - bug: icon('#icon-bug', 'pre-text'), - point: icon('#icon-point', 'pre-text'), - line: icon('#icon-line', 'pre-text'), - area: icon('#icon-area', 'pre-text'), - help: icon('#icon-help', 'pre-text'), - plus: icon('#icon-plus', 'pre-text'), - minus: icon('#icon-minus', 'pre-text'), - nearby: icon('#icon-nearby', 'pre-text'), - outlink: icon('#icon-out-link', 'pre-text'), - relation: icon('#icon-relation', 'pre-text'), - translate: icon('#icon-translate', 'pre-text'), - circularize: icon('#operation-circularize', 'pre-text'), - orthogonalize: icon('#operation-orthogonalize', 'pre-text'), - split: icon('#operation-split', 'pre-text'), - reflect_long: icon('#operation-reflect-long', 'pre-text'), - reflect_short: icon('#operation-reflect-short', 'pre-text'), - simplify: icon('#operation-simplify', 'pre-text'), - smooth: icon('#operation-smooth', 'pre-text'), - straighten: icon('#operation-straighten', 'pre-text'), - rotate: icon('#operation-rotate', 'pre-text'), - reverse: icon('#operation-reverse', 'pre-text'), - continue: icon('#operation-continue', 'pre-text'), - disconnect: icon('#operation-disconnect', 'pre-text'), - layers: icon('#icon-layers', 'pre-text'), - vertex: icon('#icon-vertex', 'pre-text'), - data: icon('#icon-data', 'pre-text'), - down: icon('#icon-down', 'pre-text'), - up: icon('#icon-up', 'pre-text'), - inspect: icon('#icon-inspect', 'pre-text'), - move: icon('#operation-move', 'pre-text'), - merge: icon('#operation-merge', 'pre-text'), - copy: icon('#operation-copy', 'pre-text'), - paste: icon('#operation-paste', 'pre-text'), - delete: icon('#operation-delete', 'pre-text'), - close: icon('#icon-close', 'pre-text'), - undo: icon('#icon-undo', 'pre-text'), - redo: icon('#icon-redo', 'pre-text'), - save: icon('#icon-save', 'pre-text'), - version: context.version - }; + more: icon('#icon-more', 'pre-text'), + apply: icon('#icon-apply', 'pre-text'), + alert: icon('#icon-alert', 'pre-text'), + avatar: icon('#icon-avatar', 'pre-text'), + forward: icon('#icon-forward', 'pre-text'), + backward: icon('#icon-backward', 'pre-text'), + fullscreen: icon('#icon-full-screen', 'pre-text'), + collapsescreen: icon('#icon-collapse-screen', 'pre-text'), + geolocate: icon('#icon-geolocate', 'pre-text'), + load: icon('#icon-load', 'pre-text'), + search: icon('#icon-search', 'pre-text'), + bug: icon('#icon-bug', 'pre-text'), + point: icon('#icon-point', 'pre-text'), + line: icon('#icon-line', 'pre-text'), + area: icon('#icon-area', 'pre-text'), + help: icon('#icon-help', 'pre-text'), + plus: icon('#icon-plus', 'pre-text'), + minus: icon('#icon-minus', 'pre-text'), + nearby: icon('#icon-nearby', 'pre-text'), + outlink: icon('#icon-out-link', 'pre-text'), + relation: icon('#icon-relation', 'pre-text'), + translate: icon('#icon-translate', 'pre-text'), + circularize: icon('#operation-circularize', 'pre-text'), + orthogonalize: icon('#operation-orthogonalize', 'pre-text'), + split: icon('#operation-split', 'pre-text'), + reflect_long: icon('#operation-reflect-long', 'pre-text'), + reflect_short: icon('#operation-reflect-short', 'pre-text'), + simplify: icon('#operation-simplify', 'pre-text'), + smooth: icon('#operation-smooth', 'pre-text'), + straighten: icon('#operation-straighten', 'pre-text'), + rotate: icon('#operation-rotate', 'pre-text'), + reverse: icon('#operation-reverse', 'pre-text'), + continue: icon('#operation-continue', 'pre-text'), + disconnect: icon('#operation-disconnect', 'pre-text'), + layers: icon('#icon-layers', 'pre-text'), + vertex: icon('#icon-vertex', 'pre-text'), + data: icon('#icon-data', 'pre-text'), + down: icon('#icon-down', 'pre-text'), + up: icon('#icon-up', 'pre-text'), + inspect: icon('#icon-inspect', 'pre-text'), + move: icon('#operation-move', 'pre-text'), + merge: icon('#operation-merge', 'pre-text'), + copy: icon('#operation-copy', 'pre-text'), + paste: icon('#operation-paste', 'pre-text'), + delete: icon('#operation-delete', 'pre-text'), + close: icon('#icon-close', 'pre-text'), + undo: icon('#icon-undo', 'pre-text'), + redo: icon('#icon-redo', 'pre-text'), + save: icon('#icon-save', 'pre-text'), + version: context.version + }; var docs = docKeys.map(function(key) { - var text = key[1].reduce(function(all,part) { return all + t(key[0].concat(part),icont); }, ''); + var text = key[1].reduce(function(all, part) { + return all + t(key[0].concat(part), icont); + }, ''); return { title: text.split('\n')[0].replace('#', '').trim(), html: marked(text.split('\n').slice(1).join('\n')) }; }); + function help(selection) { function hide() { From 7f1dc5e03caf2ca95a1859a1ca0ef587e2830547 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 17:32:16 -0500 Subject: [PATCH 098/159] Remove pre-text style from icons, remove "icons and tools" section Between keyboard shortcuts screen and onscreen hover text, I think we have the icons covered well enough and don't need to add it to the help. Having it in help means that translators need to do double work. --- data/core.yaml | 73 ---------------------------------- modules/ui/help.js | 99 +++++++++++++++++++++++----------------------- 2 files changed, 49 insertions(+), 123 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index dd2be9118..c600a99d8 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -938,79 +938,6 @@ en: the imagery so that it matches the existing data by clicking 'Fix alignment' at the bottom of the Background Settings. - iconstools: - icons: | - # Icons & Tools - - The icons used in this editor are made to be easily understandable - and all give you more information with mouse-over. - Here icons are often used. - - ### Feature editor - {search} Search features - {apply} Apply - {close} Close - - ### Top row - {point} 'Add point' mode - {line} 'Add line' mode - {area} 'Add area' mode - {undo} Undo changes - {redo} Redo changes - {save} Save changes - - ### Right column - {plus} Zoom in - {minus} Zoom out - {geolocate} Show my location - {layers} Background settings - {data} Map data - {help} Help - - ### Bottom row - {bug} Report a bug - {translate} Help translate - - tools: | - ## Tools in the Editing Menu - - With right-click on features you can use these tools. - - {move} Move - {rotate} Rotate - {reflect_long} Reflect at long axis - {reflect_short} Reflect at short axis - {continue} Continue line - {reverse} Reverse direction - {straighten} Straighten line - {merge} Merge selected features - {split} Split in two - {disconnect} Disconnect - {circularize} Circularize - {orthogonalize} Square corners - {delete} Delete - - reserved: | - ### Reserved for later use are: - {forward} Forward - {backward} Backward - {up} Up - {down} Down - {fullscreen} Full screen - {collapsescreen} Collapse screen - {relation} Relation - {vertex} Vertex - {copy} Copy - {paste} Paste - {load} Load - {simplify} Simplify - {smooth} Smooth - {alert} Alert - {inspect} Inspect - {nearby} Nearby - {avatar} Avatar - {outlink} Share - relations: intro: | # Relations & Members diff --git a/modules/ui/help.js b/modules/ui/help.js index 364e74427..9ce698cb3 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -28,60 +28,59 @@ export function uiHelp(context) { ['help.addresses.',['intro','nodup','recommendation','points']], ['help.feature_editor.',['intro','select','fields','tags','undo']], ['help.imagery.',['intro','background','offset']], - ['help.iconstools.',['icons','tools']], ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] ]; var icont = { - more: icon('#icon-more', 'pre-text'), - apply: icon('#icon-apply', 'pre-text'), - alert: icon('#icon-alert', 'pre-text'), - avatar: icon('#icon-avatar', 'pre-text'), - forward: icon('#icon-forward', 'pre-text'), - backward: icon('#icon-backward', 'pre-text'), - fullscreen: icon('#icon-full-screen', 'pre-text'), - collapsescreen: icon('#icon-collapse-screen', 'pre-text'), - geolocate: icon('#icon-geolocate', 'pre-text'), - load: icon('#icon-load', 'pre-text'), - search: icon('#icon-search', 'pre-text'), - bug: icon('#icon-bug', 'pre-text'), - point: icon('#icon-point', 'pre-text'), - line: icon('#icon-line', 'pre-text'), - area: icon('#icon-area', 'pre-text'), - help: icon('#icon-help', 'pre-text'), - plus: icon('#icon-plus', 'pre-text'), - minus: icon('#icon-minus', 'pre-text'), - nearby: icon('#icon-nearby', 'pre-text'), - outlink: icon('#icon-out-link', 'pre-text'), - relation: icon('#icon-relation', 'pre-text'), - translate: icon('#icon-translate', 'pre-text'), - circularize: icon('#operation-circularize', 'pre-text'), - orthogonalize: icon('#operation-orthogonalize', 'pre-text'), - split: icon('#operation-split', 'pre-text'), - reflect_long: icon('#operation-reflect-long', 'pre-text'), - reflect_short: icon('#operation-reflect-short', 'pre-text'), - simplify: icon('#operation-simplify', 'pre-text'), - smooth: icon('#operation-smooth', 'pre-text'), - straighten: icon('#operation-straighten', 'pre-text'), - rotate: icon('#operation-rotate', 'pre-text'), - reverse: icon('#operation-reverse', 'pre-text'), - continue: icon('#operation-continue', 'pre-text'), - disconnect: icon('#operation-disconnect', 'pre-text'), - layers: icon('#icon-layers', 'pre-text'), - vertex: icon('#icon-vertex', 'pre-text'), - data: icon('#icon-data', 'pre-text'), - down: icon('#icon-down', 'pre-text'), - up: icon('#icon-up', 'pre-text'), - inspect: icon('#icon-inspect', 'pre-text'), - move: icon('#operation-move', 'pre-text'), - merge: icon('#operation-merge', 'pre-text'), - copy: icon('#operation-copy', 'pre-text'), - paste: icon('#operation-paste', 'pre-text'), - delete: icon('#operation-delete', 'pre-text'), - close: icon('#icon-close', 'pre-text'), - undo: icon('#icon-undo', 'pre-text'), - redo: icon('#icon-redo', 'pre-text'), - save: icon('#icon-save', 'pre-text'), + more: icon('#icon-more'), + apply: icon('#icon-apply'), + alert: icon('#icon-alert'), + avatar: icon('#icon-avatar'), + forward: icon('#icon-forward'), + backward: icon('#icon-backward'), + fullscreen: icon('#icon-full-screen'), + collapsescreen: icon('#icon-collapse-screen'), + geolocate: icon('#icon-geolocate'), + load: icon('#icon-load'), + search: icon('#icon-search'), + bug: icon('#icon-bug'), + point: icon('#icon-point'), + line: icon('#icon-line'), + area: icon('#icon-area'), + help: icon('#icon-help'), + plus: icon('#icon-plus'), + minus: icon('#icon-minus'), + nearby: icon('#icon-nearby'), + outlink: icon('#icon-out-link'), + relation: icon('#icon-relation'), + translate: icon('#icon-translate'), + circularize: icon('#operation-circularize'), + orthogonalize: icon('#operation-orthogonalize'), + split: icon('#operation-split'), + reflect_long: icon('#operation-reflect-long'), + reflect_short: icon('#operation-reflect-short'), + simplify: icon('#operation-simplify'), + smooth: icon('#operation-smooth'), + straighten: icon('#operation-straighten'), + rotate: icon('#operation-rotate'), + reverse: icon('#operation-reverse'), + continue: icon('#operation-continue'), + disconnect: icon('#operation-disconnect'), + layers: icon('#icon-layers'), + vertex: icon('#icon-vertex'), + data: icon('#icon-data'), + down: icon('#icon-down'), + up: icon('#icon-up'), + inspect: icon('#icon-inspect'), + move: icon('#operation-move'), + merge: icon('#operation-merge'), + copy: icon('#operation-copy'), + paste: icon('#operation-paste'), + delete: icon('#operation-delete'), + close: icon('#icon-close'), + undo: icon('#icon-undo'), + redo: icon('#icon-redo'), + save: icon('#icon-save'), version: context.version }; From d05c56b914f1915fdc6a5bd3d5a825fa52c94d57 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 18:12:32 -0500 Subject: [PATCH 099/159] Simplify help intro texts --- data/core.yaml | 29 ++++++++++++++--------------- dist/locales/en.json | 25 ++++++++++--------------- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index c600a99d8..275cd9e08 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -558,34 +558,33 @@ en: intro: | # Help - With this [OpenStreetMap](https://www.openstreetmap.org/) editor you can - add and update the free and editable map of the world online with your browser. + Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). + With this editor you can update OpenStreetMap right from your web browser. opendata: | ### Open Data - Edits that you make on this map will be freely available to everyone who uses - OpenStreetMap. They can be visible on every map based on OpenStreetMap. - Your edits can be based on personal knowledge, on-the-ground survey, or - background imagery. - [Copying from commercial sources](https://www.openstreetmap.org/copyright) - like Google Maps is strictly forbidden. + Edits that you make on this map will be visible to everyone who uses + OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, + or aerial or streetlevel imagery. Copying from commercial sources, like Google Maps, + [is strictly forbidden](https://www.openstreetmap.org/copyright). beforestart: | ### Before you start You should be familiar with OpenStreetMap and this editor before you start editing. - The walkthrough will teach you the basics of editing on OpenStreetMap and you will - practice using the editor. It takes about 15 minutes and then you can start editing. + iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. + Click "Start the Walkthrough" on this screen to take the tutorial - it takes only + about 15 minutes. opensource: | ### Open Source - The iD editor is a collaborative project and you use version {version} now. - You can contribute and {translate} - [help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) - or {bug} [report a bug](https://github.com/openstreetmap/iD/issues). - The source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD). + The iD editor is a collaborative open source project, and you are using version {version} now. + The source code is available [on GitHub](https://github.com/openstreetmap/iD). + + You can help us by [translating iD](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) + or [reporting bugs or suggestions](https://github.com/openstreetmap/iD/issues). overview: intro: | diff --git a/dist/locales/en.json b/dist/locales/en.json index f0c1fa3de..b4e9d7c7f 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -681,19 +681,19 @@ "title": "Help", "key": "H", "help": { - "intro": "# Help\n\nWith this [OpenStreetMap](https://www.openstreetmap.org/) editor you can \nadd and update the free and editable map of the world online with your browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be freely available to everyone who uses\nOpenStreetMap. They can be visible on every map based on OpenStreetMap. \nYour edits can be based on personal knowledge, on-the-ground survey, or\nbackground imagery.\n[Copying from commercial sources](https://www.openstreetmap.org/copyright)\nlike Google Maps is strictly forbidden.\n", - "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\nThe walkthrough will teach you the basics of editing on OpenStreetMap and you will\npractice using the editor. It takes about 15 minutes and then you can start editing.\n", - "opensource": "### Open Source\n\nThe iD editor is a collaborative project and you use version {version} now.\nYou can contribute and {translate}\n[help translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor {bug} [report a bug](https://github.com/openstreetmap/iD/issues).\nThe source code is available for [contributions on GitHub](https://github.com/openstreetmap/iD).\n" + "intro": "# Help\n\nWelcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/).\nWith this editor you can update OpenStreetMap right from your web browser.\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor aerial or streetlevel imagery. Copying from commercial sources, like Google Maps,\n[is strictly forbidden](https://www.openstreetmap.org/copyright).\n", + "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", + "opensource": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help us by [translating iD](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs or suggestions](https://github.com/openstreetmap/iD/issues).\n" }, "overview": { "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", "screen": "### Screen\n\nThis help is on top of the map area which shows background imagery\nand features on top of it. Here you can edit where the features are.\nOn the left side is the *feature editor*, there you can edit feature's type\nand attributes and also {search} search for features and feature's type.\n", - "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning. \nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" + "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning.\nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" }, "editing": { - "intro": "# Editing & Saving\n\nTo select a feature you want to edit, click on it on the map\nor search for it by name in the feature editor. \nSelected features are drawn with a pulsing glow and in the\nfeature editor the feature's type and attributes are shown.\nIf you right-click on it, the editing menu appears.\n", + "intro": "# Editing & Saving\n\nTo select a feature you want to edit, click on it on the map\nor search for it by name in the feature editor.\nSelected features are drawn with a pulsing glow and in the\nfeature editor the feature's type and attributes are shown.\nIf you right-click on it, the editing menu appears.\n", "multiselect": "### Multiselect\nTo select multiple features, hold down the 'Shift' key.\nThen either click on the features you want to select,\nor click, hold and move the mouse on the map to draw\na contour around those features.\nAll the points inside the lasso area will be selected.\n", "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - you can undo changes\nby clicking the {undo} 'Undo' button, and redo changes\nby clicking the {redo} 'Redo' button.\n", "save": "### Save\n\nClick `Save` to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n", @@ -715,7 +715,7 @@ }, "buildings": { "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", - "select": "### Selecting \n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and \nattributes like name, levels, and address.\n", + "select": "### Selecting\n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and\nattributes like name, levels, and address.\n", "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then using the {delete} 'Delete' tool.\n" @@ -729,7 +729,7 @@ "feature_editor": { "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", - "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building. \n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", + "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building.\n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n[Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more\nabout popular tag combinations.\n", "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" }, @@ -738,18 +738,13 @@ "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available.\n", "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" }, - "iconstools": { - "icons": "# Icons & Tools\n\nThe icons used in this editor are made to be easily understandable\nand all give you more information with mouse-over.\nHere icons are often used.\n\n### Feature editor\n{search} Search features\n{apply} Apply\n{close} Close\n\n### Top row\n{point} 'Add point' mode\n{line} 'Add line' mode\n{area} 'Add area' mode\n{undo} Undo changes\n{redo} Redo changes\n{save} Save changes\n\n### Right column\n{plus} Zoom in\n{minus} Zoom out\n{geolocate} Show my location\n{layers} Background settings\n{data} Map data\n{help} Help\n\n### Bottom row\n{bug} Report a bug\n{translate} Help translate\n", - "tools": "## Tools in the Editing Menu\n\nWith right-click on features you can use these tools.\n\n{move} Move\n{rotate} Rotate\n{reflect_long} Reflect at long axis\n{reflect_short} Reflect at short axis\n{continue} Continue line\n{reverse} Reverse direction\n{straighten} Straighten line\n{merge} Merge selected features\n{split} Split in two\n{disconnect} Disconnect\n{circularize} Circularize\n{orthogonalize} Square corners\n{delete} Delete\n", - "reserved": "### Reserved for later use are:\n{forward} Forward\n{backward} Backward\n{up} Up\n{down} Down\n{fullscreen} Full screen\n{collapsescreen} Collapse screen\n{relation} Relation\n{vertex} Vertex\n{copy} Copy\n{paste} Paste\n{load} Load\n{simplify} Simplify\n{smooth} Smooth\n{alert} Alert\n{inspect} Inspect\n{nearby} Nearby\n{avatar} Avatar\n{outlink} Share\n" - }, "relations": { "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", "types": "### Common Types\n\nThe most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut.\nAnother type of relation is the *Turn restriction* which groups together two\nroads segments at a crossing to disable turning options.\n\nTwo other types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines which may be\nroads, rivers, or plot boundaries at the same time.\n", - "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and \nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When an area is inside another area it will have the role inner\nand become the hole in the outer area.\n", + "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and\nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When an area is inside another area it will have the role inner\nand become the hole in the outer area.\n", "turnrestrictions": "### Turn restrictions\n\nSelect the crossing node of two or more roads. In the feature editor\nyou will see the roads connected to the crossing below 'Turn Restrictions'.\nThere you can select a road and disable U-turn and turns into every other road.\nThis will create a turn restriction relation with both roads and the\ncrossing as members with roles from, to, and via.\n", "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", - "edit": "### Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete} \n'Delete' button next to the relation you want to remove it from.\n" + "edit": "### Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete}\n'Delete' button next to the relation you want to remove it from.\n" } }, "intro": { From 3ae7ec803208694bb1871169293ead8cb1b0aacb Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 20 Nov 2017 23:01:20 -0500 Subject: [PATCH 100/159] Simplify help overview, editing texts --- data/core.yaml | 96 ++++++++++++++++++++++---------------------- dist/locales/en.json | 22 +++++----- modules/ui/help.js | 2 +- 3 files changed, 59 insertions(+), 61 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 275cd9e08..1e58d40c6 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -583,91 +583,89 @@ en: The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD). - You can help us by [translating iD](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) - or [reporting bugs or suggestions](https://github.com/openstreetmap/iD/issues). + You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) + or [reporting bugs](https://github.com/openstreetmap/iD/issues). overview: intro: | # Overview - This help will repeat and extend information from the walkthrough, which - you should have done by now. - features: | - ### Features + ### Map Features - In OpenStreetMap we use the word *feature* to describe things that appear on the map. - Anything in the real world can be mapped as a feature on OpenStreetMap. - Features are represented on the map using *points*, *lines*, or *areas*. - Points are sometimes called nodes. Lines and areas are a connected line - of nodes and are sometimes called ways. + We use the word *features* to describe things that appear on the map, + such as roads, buildings, or points of interest. Anything in the real + world can be mapped as a feature on OpenStreetMap. Features are + represented on the map using *points*, *lines*, or *areas*. - screen: | - ### Screen - - This help is on top of the map area which shows background imagery - and features on top of it. Here you can edit where the features are. - On the left side is the *feature editor*, there you can edit feature's type - and attributes and also {search} search for features and feature's type. + In OpenStreetmap, points are sometimes called *nodes*, and lines and areas + are sometimes called *ways*. navigation: | ### Navigation You can drag the map by pressing and holding the left mouse button - while moving the mouse around. This is also called panning. - You can also use the arrow keys on your keyboard, using the keys - while holding 'Ctrl' will move the map for one screenful. + while moving the mouse around. This is also called *panning*. + You can zoom in or out by scrolling with the mouse wheel or trackpad, - or by clicking the {plus} / {minus} buttons on the top-right-hand - of the map, holding 'Ctrl' while clicking will zoom a lot. + or by clicking the {plus} / {minus} buttons along the side of the map. + + keyboard: | + ### Keyboard Shortcuts + + You can view a list of keyboard shortcuts by pressing the `?` key. editing: intro: | # Editing & Saving - To select a feature you want to edit, click on it on the map - or search for it by name in the feature editor. - Selected features are drawn with a pulsing glow and in the - feature editor the feature's type and attributes are shown. - If you right-click on it, the editing menu appears. + `Left-Click` on a feature to select it. This will highlight the + feature with a pusling glow, and the sidebar will display more details, + such as its name or address. + + `Right-click` on a map feature to display the editing menu, which shows + the commands that are available, such as rotating, moving, and deleting. multiselect: | ### Multiselect - To select multiple features, hold down the 'Shift' key. - Then either click on the features you want to select, - or click, hold and move the mouse on the map to draw - a contour around those features. - All the points inside the lasso area will be selected. + + `Shift-click` to select several features together. This makes + it easier to move or delete multiple items. + + Another way to select multiple features is to hold down the `Shift` key, + then press and hold the left mouse button, and drag the mouse to draw a + selection lasso. All of the points inside the lasso area will be selected. edit: | ### Edit - When you make changes like editing roads, building, and places - these are stored locally until you save them to the server. - Don't worry if you make a mistake - you can undo changes - by clicking the {undo} 'Undo' button, and redo changes - by clicking the {redo} 'Redo' button. + When you make changes to the map, these are stored locally until you save + them to the server. Don't worry if you make a mistake - until the edits are + saved, you can undo changes by clicking the {undo} `Undo` button, and redo + changes by clicking the {redo} `Redo` button. save: | ### Save - Click `Save` to finish a group of edits - for instance, if you've completed - an area of town and would like to start on a new area. You'll have a chance - to review what you've done, and the editor supplies helpful suggestions - and warnings if something doesn't seem right about the changes. + Click `Save` to finish your edits and send them to the OpenStreetMap + server. You should remember to save your work frequently! + + On the save screen, you'll have a chance to review what you've done. + The editor will perform a basic check for missing data and may offer + helpful suggestions and warnings if something doesn't seem right. upload: | ### Upload - If everything looks good, you should explain your changes as a - [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments) - and click `Upload` to post the changes to - [OpenStreetMap.org](https://www.openstreetmap.org/), where they will be visible - to all other users and available for others to build and improve upon. + Before uploading your changes you must enter a + [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). + Then click `Upload` to send your changes to OpenStreetMap, where they will be + merged into the map and publicly visible to everyone. comeback: | - If you can't finish your edits in one sitting, you can leave the editor - window and come back (on the same browser and computer), and the + If you can't finish your edits in one sitting, for example if your computer + crashes or you close the browser tab, your edits are still saved locally. + You can come back later (on the same browser and computer), and the editor will offer to restore your work. roads: diff --git a/dist/locales/en.json b/dist/locales/en.json index b4e9d7c7f..c8488b67c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -684,21 +684,21 @@ "intro": "# Help\n\nWelcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/).\nWith this editor you can update OpenStreetMap right from your web browser.\n", "opendata": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor aerial or streetlevel imagery. Copying from commercial sources, like Google Maps,\n[is strictly forbidden](https://www.openstreetmap.org/copyright).\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", - "opensource": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help us by [translating iD](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs or suggestions](https://github.com/openstreetmap/iD/issues).\n" + "opensource": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs](https://github.com/openstreetmap/iD/issues).\n" }, "overview": { - "intro": "# Overview\n\nThis help will repeat and extend information from the walkthrough, which\nyou should have done by now.\n", - "features": "### Features\n\nIn OpenStreetMap we use the word *feature* to describe things that appear on the map.\nAnything in the real world can be mapped as a feature on OpenStreetMap.\nFeatures are represented on the map using *points*, *lines*, or *areas*.\nPoints are sometimes called nodes. Lines and areas are a connected line\nof nodes and are sometimes called ways.\n", - "screen": "### Screen\n\nThis help is on top of the map area which shows background imagery\nand features on top of it. Here you can edit where the features are.\nOn the left side is the *feature editor*, there you can edit feature's type\nand attributes and also {search} search for features and feature's type.\n", - "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called panning.\nYou can also use the arrow keys on your keyboard, using the keys\nwhile holding 'Ctrl' will move the map for one screenful.\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons on the top-right-hand\nof the map, holding 'Ctrl' while clicking will zoom a lot.\n" + "intro": "# Overview\n", + "features": "### Map Features\n\nWe use the word *features* to describe things that appear on the map,\nsuch as roads, buildings, or points of interest. Anything in the real\nworld can be mapped as a feature on OpenStreetMap. Features are\nrepresented on the map using *points*, *lines*, or *areas*.\n\nIn OpenStreetmap, points are sometimes called *nodes*, and lines and areas\nare sometimes called *ways*.\n", + "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called *panning*.\n\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons along the side of the map.\n", + "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" }, "editing": { - "intro": "# Editing & Saving\n\nTo select a feature you want to edit, click on it on the map\nor search for it by name in the feature editor.\nSelected features are drawn with a pulsing glow and in the\nfeature editor the feature's type and attributes are shown.\nIf you right-click on it, the editing menu appears.\n", - "multiselect": "### Multiselect\nTo select multiple features, hold down the 'Shift' key.\nThen either click on the features you want to select,\nor click, hold and move the mouse on the map to draw\na contour around those features.\nAll the points inside the lasso area will be selected.\n", - "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - you can undo changes\nby clicking the {undo} 'Undo' button, and redo changes\nby clicking the {redo} 'Redo' button.\n", - "save": "### Save\n\nClick `Save` to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n", - "upload": "### Upload\n\nIf everything looks good, you should explain your changes as a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments)\nand click `Upload` to post the changes to\n[OpenStreetMap.org](https://www.openstreetmap.org/), where they will be visible\nto all other users and available for others to build and improve upon.\n", - "comeback": "If you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor will offer to restore your work.\n" + "intro": "# Editing & Saving\n\nYou can `Click` on a feature once to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display more details,\nsuch as its name or address.\n\nIf you `Right-click` a map feature, an editing menu will appear, showing\nthe commands that are available, such as rotating, moving, and deleting.\n", + "multiselect": "### Multiselect\n\nYou can `Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", + "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - until the edits are saved, you\ncan undo changes by clicking the {undo} `Undo` button, and redo changes\nby clicking the {redo} `Redo` button.\n", + "save": "### Save\n\nClick `Save` to finish a group of edits and send them to the OpenStreetMap\nserver. You should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\nThe editor will perform a basic check for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", + "upload": "### Upload\n\nBefore uploading your changes you must enter a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments).\nThen click `Upload` to send your changes to OpenStreetMap, where they will be\nmerged into the map and publicly visible to everyone.\n", + "comeback": "If you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally.\nYou can come back later (on the same browser and computer), and the\neditor will offer to restore your work.\n" }, "roads": { "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mappable. Roads are the most used type of lines. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index 9ce698cb3..95ce7c2e2 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -20,7 +20,7 @@ export function uiHelp(context) { var docKeys = [ ['help.help.',['intro','opendata','beforestart','opensource']], - ['help.overview.',['intro','features','screen','navigation']], + ['help.overview.',['intro','features','navigation','keyboard']], ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], ['help.roads.',['intro','move','connect','attributes','delete','create']], ['help.gps.',['intro','using']], From f48a00ce50da4657d7954d9396035c5e986b0561 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 21 Nov 2017 10:49:06 -0500 Subject: [PATCH 101/159] Simplify language in GPS section, add section on streetlevel photos --- data/core.yaml | 96 +++++++++++++++++++++++++++++--------------- dist/locales/en.json | 31 ++++++++------ modules/ui/help.js | 1 + 3 files changed, 82 insertions(+), 46 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 1e58d40c6..dc445846e 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -674,17 +674,16 @@ en: You can create, fix, and delete roads with this editor. Roads can be all kinds: paths, highways, trails, cycle ways, and more - any used segment - is mappable. Roads are the most used type of lines. Other examples of + is mappable. Roads are the most used type of line. Other examples of lines are waterways, walls, and fences. What you can do with roads applies to most types of lines. modifying: | ### Modifying - Often you'll see roads that aren't aligned to the imagery behind them or + Often you'll see roads that aren't aligned to the imagery or to a GPS track. You can adjust these roads so they are in the correct place. - Click on a road to select it and the pulsing glow will become visible. - All nodes of the road will be shown as small circles. + Click on a road to select it. All nodes of the road will be shown as small circles. You can drag the nodes to better locations. You can also create new nodes either by double-clicking on the road or by moving the small triangles at the midpoints between nodes. @@ -692,33 +691,37 @@ en: move: | ### Moving - If you right-click the road the editing menu with several tools appears. - You can select the {move} 'Move' tool, move the entire road at one time, and - then click again to save that movement. You can also simply press the - `M` shortcut key, to start the move. + If you `right-click` the road, the editing menu will appear. + You can select the {move} 'Move' tool to move the entire road at one time. + Then click again to place the road in its new location. + You can also press the `M` shortcut key to move a road. connect: | ### Connecting - If the road connects to another road, but doesn't properly connect on - the map, you can drag one of its nodes onto the other road in - order to join them. The node will become grey inside. - Having roads connected properly is important for the map and essential for providing driving directions. - If two road are connected on the map but not in reality, - you can disconnect them with right-click the connecting node and select - the {disconnect} 'Disconnect' tool or press the `D` shortcut key. - If you know that the crossing has traffic lights or crosswalks, + The connections between roads are drawn with grey circles. + The endpoints of a road are drawn with larger white circles if they + don't connect to anything. + + To connect a road to another feature, drag one of its nodes onto the + other feature in order to join them. + + To disconnect a road from another feature, right-click the connecting + node and select the {disconnect} 'Disconnect' tool or press the `D` + shortcut key. + + If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type. attributes: | ### Attributtes - When a road is selected on the left side the feature editor will show - the type of the road and many attributes like name, speed limit, lines, + When a road is selected, the feature editor in the sidebar will show + the type of the road and many attributes like name, speed limit, and surface. You can modify fields or even add new ones. delete: | @@ -746,16 +749,15 @@ en: Then click on points along the road so that it follows the right path, according to satellite imagery or GPS. If the road you are drawing crosses another road, connect it by clicking on the intersection point. When you're done drawing, double-click - or press 'Return' or 'Enter' on your keyboard. + or press `Return` or `Enter` on your keyboard. gps: intro: | - # GPS + # GPS Traces - Collected GPS traces are one valuable source of data for OpenStreetMap. This editor - supports local traces files (file types `.gpx`, `.geojson`, and `.kml`) on your local computer. - You can collect this kind of GPS trace with a number of smartphone applications as well as - personal GPS hardware. + Collected GPS traces are a valuable source of data for OpenStreetMap. This editor + supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect + GPS traces with a smartphone, sports watch, or other GPS device. For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). @@ -763,16 +765,44 @@ en: using: | ### Using - To use a GPX track for mapping, drag and drop the GPX file onto the map - editor. If it's recognized, it will be added to the map as a bright purple - line. Click on the {data} 'Map data' menu on the right side to enable, - disable, or zoom to this new GPX-powered layer. + To use a GPS trace for mapping, drag and drop the data file onto the map + editor. If it's recognized, it will be drawn on the map as a bright purple + line. Click on the {data} 'Map data' panel on the side of the map to enable, + disable, or zoom to your GPS data. - The GPX track isn't directly uploaded to OpenStreetMap - the best way to - use it is to draw on the map, using it as a guide for the new features that - you add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create) + The GPS track isn't sent to OpenStreetMap - the best way to use it is to + draw on the map, using it as a guide for the new features that you add. + + You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use. + streetlevel: + intro: | + # Street Level Photos + + Street level photos provide a ground-truth prespective of an area, useful + for mapping traffic signs, businesses, and other details that you can't + see from satellite and aerial images. The iD editor supports street level + photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org). + + using: | + ### Using + + To use streetlevel photos for mapping, click on the {data} 'Map data' panel on the + side of the map to enable or disable the available photo layers. + + When enabled, the photo layer will display a line along the sequence of photos. + At higher zooms you will see a circle at each photo location, and at even higher + zooms you will see a viewfield to indicate the direction that the photo was taken. + + viewer: | + + When you click on one of the photo locations, a photo viewer will appear in the + bottom corner of the map. The photo viewer contains controls to step forward and + backward in the image sequence. It will also show the username of the person who + captured the image, the date it was captured, and a link to view the image on + the original site. + buildings: intro: | # Buildings & Areas @@ -827,8 +857,8 @@ en: like any other edit, the results are seen by everyone and satellite imagery is often out of date, so the building could simply be newly built. - You can delete a building by clicking on it to select it, then pressing the 'Delete' - key, or right-clicking it and then using the {delete} 'Delete' tool. + You can delete a building by clicking on it to select it and then pressing the `Delete` + key, or by right-clicking it and then using the {delete} 'Delete' tool. addresses: intro: | diff --git a/dist/locales/en.json b/dist/locales/en.json index c8488b67c..06575a6da 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -693,32 +693,37 @@ "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" }, "editing": { - "intro": "# Editing & Saving\n\nYou can `Click` on a feature once to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display more details,\nsuch as its name or address.\n\nIf you `Right-click` a map feature, an editing menu will appear, showing\nthe commands that are available, such as rotating, moving, and deleting.\n", - "multiselect": "### Multiselect\n\nYou can `Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", - "edit": "### Edit\n\nWhen you make changes like editing roads, building, and places\nthese are stored locally until you save them to the server.\nDon't worry if you make a mistake - until the edits are saved, you\ncan undo changes by clicking the {undo} `Undo` button, and redo changes\nby clicking the {redo} `Redo` button.\n", - "save": "### Save\n\nClick `Save` to finish a group of edits and send them to the OpenStreetMap\nserver. You should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\nThe editor will perform a basic check for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", + "intro": "# Editing & Saving\n\n`Left-Click` on a feature to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display more details,\nsuch as its name or address.\n\n`Right-click` on a map feature to display the editing menu, which shows\nthe commands that are available, such as rotating, moving, and deleting.\n", + "multiselect": "### Multiselect\n\n`Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", + "edit": "### Edit\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", + "save": "### Save\n\nClick `Save` to finish your edits and send them to the OpenStreetMap\nserver. You should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\nThe editor will perform a basic check for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", "upload": "### Upload\n\nBefore uploading your changes you must enter a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments).\nThen click `Upload` to send your changes to OpenStreetMap, where they will be\nmerged into the map and publicly visible to everyone.\n", "comeback": "If you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally.\nYou can come back later (on the same browser and computer), and the\neditor will offer to restore your work.\n" }, "roads": { - "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mappable. Roads are the most used type of lines. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", - "modifying": "### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them or\nto a GPS track. You can adjust these roads so they are in the correct place.\nClick on a road to select it and the pulsing glow will become visible.\nAll nodes of the road will be shown as small circles.\nYou can drag the nodes to better locations.\nYou can also create new nodes either by double-clicking on the road or by\nmoving the small triangles at the midpoints between nodes.\n", - "move": "### Moving\n\nIf you right-click the road the editing menu with several tools appears.\nYou can select the {move} 'Move' tool, move the entire road at one time, and\nthen click again to save that movement. You can also simply press the\n`M` shortcut key, to start the move.\n", - "connect": "### Connecting\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its nodes onto the other road in\norder to join them. The node will become grey inside.\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\nIf two road are connected on the map but not in reality,\nyou can disconnect them with right-click the connecting node and select\nthe {disconnect} 'Disconnect' tool or press the `D` shortcut key.\n\nIf you know that the crossing has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", - "attributes": "### Attributtes\n\nWhen a road is selected on the left side the feature editor will show\nthe type of the road and many attributes like name, speed limit, lines,\nand surface. You can modify fields or even add new ones.\n", + "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mappable. Roads are the most used type of line. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", + "modifying": "### Modifying\n\nOften you'll see roads that aren't aligned to the imagery or\nto a GPS track. You can adjust these roads so they are in the correct place.\nClick on a road to select it. All nodes of the road will be shown as small circles.\nYou can drag the nodes to better locations.\nYou can also create new nodes either by double-clicking on the road or by\nmoving the small triangles at the midpoints between nodes.\n", + "move": "### Moving\n\nIf you `right-click` the road, the editing menu will appear.\nYou can select the {move} 'Move' tool to move the entire road at one time.\nThen click again to place the road in its new location.\nYou can also press the `M` shortcut key to move a road.\n", + "connect": "### Connecting\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\n\nThe connections between roads are drawn with grey circles.\nThe endpoints of a road are drawn with larger white circles if they\ndon't connect to anything.\n\nTo connect a road to another feature, drag one of its nodes onto the\nother feature in order to join them.\n\nTo disconnect a road from another feature, right-click the connecting\nnode and select the {disconnect} 'Disconnect' tool or press the `D`\nshortcut key.\n\nIf you know that the connection has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", + "attributes": "### Attributtes\n\nWhen a road is selected, the feature editor in the sidebar will show\nthe type of the road and many attributes like name, speed limit,\nand surface. You can modify fields or even add new ones.\n", "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", - "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n" + "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press `Return` or `Enter` on your keyboard.\n" }, "gps": { - "intro": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces files (file types `.gpx`, `.geojson`, and `.kml`) on your local computer.\nYou can collect this kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", - "using": "### Using\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the {data} 'Map data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", + "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click on the {data} 'Map data' panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + }, + "streetlevel": { + "intro": "# Street Level Photos\n\nStreet level photos provide a ground-truth prespective of an area, useful\nfor mapping traffic signs, businesses, and other details that you can't\nsee from satellite and aerial images. The iD editor supports street level\nphotos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).\n", + "using": "### Using\n\nTo use streetlevel photos for mapping, click on the {data} 'Map data' panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", + "viewer": "\nWhen you click on one of the photo locations, a photo viewer will appear in the\nbottom corner of the map. The photo viewer contains controls to step forward and\nbackward in the image sequence. It will also show the person who captured the image,\nthe date it was captured, and a link to view the image on the original site.\n" }, "buildings": { "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", "select": "### Selecting\n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and\nattributes like name, levels, and address.\n", "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", - "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then pressing the 'Delete'\nkey, or right-clicking it and then using the {delete} 'Delete' tool.\n" + "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it and then pressing the `Delete`\nkey, or by right-clicking it and then using the {delete} 'Delete' tool.\n" }, "addresses": { "intro": "# Addresses & Points\n\nAddresses are some of the most useful information for the map.\n\nAddress information can be added to OpenStreetMap using a variety of methods,\nsuch as adding a simple point containing an address, adding address information\nto a building, site or other area, or alternatively to an entrance node.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index 95ce7c2e2..adaa4dc9b 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -24,6 +24,7 @@ export function uiHelp(context) { ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], ['help.roads.',['intro','move','connect','attributes','delete','create']], ['help.gps.',['intro','using']], + ['help.streetlevel.',['intro','using','viewer']], ['help.buildings.',['intro','select','modify','create','delete']], ['help.addresses.',['intro','nodup','recommendation','points']], ['help.feature_editor.',['intro','select','fields','tags','undo']], From 467fcb8b9a1fe3f50b3ea93def6728f36c6e4532 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 21 Nov 2017 11:32:38 -0500 Subject: [PATCH 102/159] Simplify language in imagery section, move streetlevel and gps after --- data/core.yaml | 150 +++++++++++++++++++++++-------------------- dist/locales/en.json | 28 ++++---- modules/ui/help.js | 6 +- 3 files changed, 97 insertions(+), 87 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index dc445846e..7c35baa08 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -566,8 +566,8 @@ en: Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, - or aerial or streetlevel imagery. Copying from commercial sources, like Google Maps, - [is strictly forbidden](https://www.openstreetmap.org/copyright). + or imagery collected from aerial or street level photos. Copying from commercial + sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright). beforestart: | ### Before you start @@ -751,63 +751,11 @@ en: it by clicking on the intersection point. When you're done drawing, double-click or press `Return` or `Enter` on your keyboard. - gps: - intro: | - # GPS Traces - - Collected GPS traces are a valuable source of data for OpenStreetMap. This editor - supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect - GPS traces with a smartphone, sports watch, or other GPS device. - - For information on how to perform a GPS survey, read - [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). - - using: | - ### Using - - To use a GPS trace for mapping, drag and drop the data file onto the map - editor. If it's recognized, it will be drawn on the map as a bright purple - line. Click on the {data} 'Map data' panel on the side of the map to enable, - disable, or zoom to your GPS data. - - The GPS track isn't sent to OpenStreetMap - the best way to use it is to - draw on the map, using it as a guide for the new features that you add. - - You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) - for other users to use. - - streetlevel: - intro: | - # Street Level Photos - - Street level photos provide a ground-truth prespective of an area, useful - for mapping traffic signs, businesses, and other details that you can't - see from satellite and aerial images. The iD editor supports street level - photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org). - - using: | - ### Using - - To use streetlevel photos for mapping, click on the {data} 'Map data' panel on the - side of the map to enable or disable the available photo layers. - - When enabled, the photo layer will display a line along the sequence of photos. - At higher zooms you will see a circle at each photo location, and at even higher - zooms you will see a viewfield to indicate the direction that the photo was taken. - - viewer: | - - When you click on one of the photo locations, a photo viewer will appear in the - bottom corner of the map. The photo viewer contains controls to step forward and - backward in the image sequence. It will also show the username of the person who - captured the image, the date it was captured, and a link to view the image on - the original site. - buildings: intro: | # Buildings & Areas - OpenStreetMap is the world's largest database of buildings. + OpenStreetMap is the world's largest freely-available database of buildings. You can improve this database. Buildings are the most used type of areas, others are residential areas, farmland, forests, lakes, or ponds. What you can do with buildings applies to most types of areas. @@ -942,28 +890,90 @@ en: imagery: intro: | - # Imagery + # Background Imagery - Aerial imagery is an important resource for mapping. A combination of - airplane flyovers, satellite views, and freely-compiled sources are available - in the editor under the {layers} `Background settings` menu on the right. + Background imagery is an important resource for mapping, and is displayed + beneath the map data. This imagery can be aerial photos collected + from satellites, airplanes, and drones, or it can be scanned historical + maps or other freely available source data. - background: | - ### Background + To see which imagery sources are available for editing, click on + the {layers} 'Background settings' panel on the side of the map. - By default a [Bing Maps](https://www.bing.com/maps/) satellite layer is - presented in the editor, but as you pan and zoom the map to new geographical - areas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/) - will become available. + sources: | + ### Sources + + By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is + displayed in the editor. Depending on where you are editing, other imagery + sources will be available. Some may be newer or have higher resolution, + so it is always useful to check and see which layer is the best one to use + as a mapping reference. offset: | ### Offset - Imagery is sometimes offset from the map data because of a mistake on the - imagery provider's side. If you see a lot of roads shifted from the background, - don't immediately move them all to match the background. Instead you can adjust - the imagery so that it matches the existing data by clicking 'Fix alignment' at - the bottom of the Background Settings. + Imagery is sometimes offset slightly from accurate map data. + + If you see a lot of roads or buildings shifted from the background imagery, + don't move them all to match the background. Instead, you can adjust + the background so that it matches the existing data by expanding the + 'Adjust Imagery Offset' section at the bottom of the Background Settings pane. + + Click on the small triangles to adjust the imagery offset in small steps, + or press the mouse down and drag within the grey square to slide the imagery + into alignment. + + streetlevel: + intro: | + # Street Level Photos + + Street level photos provide a ground-truth prespective of an area, useful + for mapping traffic signs, businesses, and other details that you can't + see from satellite and aerial images. The iD editor supports street level + photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org). + + using: | + ### Using + + To use street level photos for mapping, click on the {data} 'Map data' panel on the + side of the map to enable or disable the available photo layers. + + When enabled, the photo layer will display a line along the sequence of photos. + At higher zooms you will see a circle at each photo location, and at even higher + zooms you will see a viewfield to indicate the direction that the photo was taken. + + viewer: | + + When you click on one of the photo locations, a photo viewer will appear in the + bottom corner of the map. The photo viewer contains controls to step forward and + backward in the image sequence. It will also show the username of the person who + captured the image, the date it was captured, and a link to view the image on + the original site. + + gps: + intro: | + # GPS Traces + + Collected GPS traces are a valuable source of data for OpenStreetMap. This editor + supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect + GPS traces with a smartphone, sports watch, or other GPS device. + + For information on how to perform a GPS survey, read + [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). + + using: | + ### Using + + To use a GPS trace for mapping, drag and drop the data file onto the map + editor. If it's recognized, it will be drawn on the map as a bright purple + line. Click on the {data} 'Map data' panel on the side of the map to enable, + disable, or zoom to your GPS data. + + The GPS track isn't sent to OpenStreetMap - the best way to use it is to + draw on the map, using it as a guide for the new features that you add. + + You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) + for other users to use. relations: intro: | diff --git a/dist/locales/en.json b/dist/locales/en.json index 06575a6da..af8b7c1e0 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -682,7 +682,7 @@ "key": "H", "help": { "intro": "# Help\n\nWelcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/).\nWith this editor you can update OpenStreetMap right from your web browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor aerial or streetlevel imagery. Copying from commercial sources, like Google Maps,\n[is strictly forbidden](https://www.openstreetmap.org/copyright).\n", + "opendata": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor imagery collected from aerial or street level photos. Copying from commercial\nsources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).\n", "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", "opensource": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs](https://github.com/openstreetmap/iD/issues).\n" }, @@ -709,17 +709,8 @@ "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press `Return` or `Enter` on your keyboard.\n" }, - "gps": { - "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", - "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click on the {data} 'Map data' panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" - }, - "streetlevel": { - "intro": "# Street Level Photos\n\nStreet level photos provide a ground-truth prespective of an area, useful\nfor mapping traffic signs, businesses, and other details that you can't\nsee from satellite and aerial images. The iD editor supports street level\nphotos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).\n", - "using": "### Using\n\nTo use streetlevel photos for mapping, click on the {data} 'Map data' panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", - "viewer": "\nWhen you click on one of the photo locations, a photo viewer will appear in the\nbottom corner of the map. The photo viewer contains controls to step forward and\nbackward in the image sequence. It will also show the person who captured the image,\nthe date it was captured, and a link to view the image on the original site.\n" - }, "buildings": { - "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", + "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest freely-available database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", "select": "### Selecting\n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and\nattributes like name, levels, and address.\n", "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", @@ -739,9 +730,18 @@ "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" }, "imagery": { - "intro": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the {layers} `Background settings` menu on the right.\n", - "background": "### Background\n\nBy default a [Bing Maps](https://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources from the [Open Imagery Network](https://openimagerynetwork.github.io/)\nwill become available.\n", - "offset": "### Offset\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings.\n" + "intro": "# Background Imagery\n\nBackground imagery is an important resource for mapping, and is displayed\nbeneath the map data. This imagery can be aerial photos collected\nfrom satellites, airplanes, and drones, or it can be scanned historical\nmaps or other freely available source data.\n\nTo see which imagery sources are available for editing, click on\nthe {layers} 'Background settings' panel on the side of the map.\n", + "sources": "### Sources\n\nBy default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is\ndisplayed in the editor. Depending on where you are editing, other imagery\nsources will be available. Some may be newer or have higher resolution,\nso it is always useful to check and see which layer is the best one to use\nas a mapping reference.\n", + "offset": "### Offset\n\nImagery is sometimes offset slightly from accurate map data.\n\nIf you see a lot of roads or buildings shifted from the background imagery,\ndon't move them all to match the background. Instead, you can adjust\nthe background so that it matches the existing data by expanding the\n'Adjust Imagery Offset' section at the bottom of the Background Settings pane.\n\nClick on the small triangles to adjust the imagery offset in small steps,\nor press the mouse down and drag within the grey square to slide the imagery\ninto alignment.\n" + }, + "streetlevel": { + "intro": "# Street Level Photos\n\nStreet level photos provide a ground-truth prespective of an area, useful\nfor mapping traffic signs, businesses, and other details that you can't\nsee from satellite and aerial images. The iD editor supports street level\nphotos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).\n", + "using": "### Using\n\nTo use street level photos for mapping, click on the {data} 'Map data' panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", + "viewer": "\nWhen you click on one of the photo locations, a photo viewer will appear in the\nbottom corner of the map. The photo viewer contains controls to step forward and\nbackward in the image sequence. It will also show the username of the person who\ncaptured the image, the date it was captured, and a link to view the image on\nthe original site.\n" + }, + "gps": { + "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", + "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click on the {data} 'Map data' panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" }, "relations": { "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index adaa4dc9b..77090480a 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -23,12 +23,12 @@ export function uiHelp(context) { ['help.overview.',['intro','features','navigation','keyboard']], ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], ['help.roads.',['intro','move','connect','attributes','delete','create']], - ['help.gps.',['intro','using']], - ['help.streetlevel.',['intro','using','viewer']], ['help.buildings.',['intro','select','modify','create','delete']], ['help.addresses.',['intro','nodup','recommendation','points']], ['help.feature_editor.',['intro','select','fields','tags','undo']], - ['help.imagery.',['intro','background','offset']], + ['help.imagery.',['intro','sources','offset']], + ['help.streetlevel.',['intro','using','viewer']], + ['help.gps.',['intro','using']], ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] ]; From 1f6c8d9132329ca6ae19e72a7618d9a173454f93 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 21 Nov 2017 16:33:58 -0500 Subject: [PATCH 103/159] Move more of the content from the walkthrough into the help sections --- data/core.yaml | 337 +++++++++++++++++++++---------------------- dist/locales/en.json | 67 ++++----- modules/ui/help.js | 10 +- 3 files changed, 207 insertions(+), 207 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 7c35baa08..a976abdc9 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -590,38 +590,33 @@ en: intro: | # Overview + navigation: | + ### Navigation + + You can drag the map by pressing and holding the left mouse button while + moving the mouse around. You can also use the arrow keys on your keyboard. + + You can zoom in or out by scrolling with the mouse wheel or trackpad, + or by clicking the {plus} / {minus} buttons along the side of the map. + features: | ### Map Features We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real - world can be mapped as a feature on OpenStreetMap. Features are + world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*. In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*. - navigation: | - ### Navigation - - You can drag the map by pressing and holding the left mouse button - while moving the mouse around. This is also called *panning*. - - You can zoom in or out by scrolling with the mouse wheel or trackpad, - or by clicking the {plus} / {minus} buttons along the side of the map. - - keyboard: | - ### Keyboard Shortcuts - - You can view a list of keyboard shortcuts by pressing the `?` key. - editing: intro: | # Editing & Saving - `Left-Click` on a feature to select it. This will highlight the - feature with a pusling glow, and the sidebar will display more details, - such as its name or address. + `Left-click` on a feature to select it. This will highlight the + feature with a pusling glow, and the sidebar will display details + about that feature, such as it's name or address. `Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting. @@ -636,8 +631,8 @@ en: then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected. - edit: | - ### Edit + undo_redo: | + ### Undo and Redo When you make changes to the map, these are stored locally until you save them to the server. Don't worry if you make a mistake - until the edits are @@ -647,11 +642,11 @@ en: save: | ### Save - Click `Save` to finish your edits and send them to the OpenStreetMap - server. You should remember to save your work frequently! + Click {save} `Save` to finish your edits and send them to OpenStreetMap. + You should remember to save your work frequently! On the save screen, you'll have a chance to review what you've done. - The editor will perform a basic check for missing data and may offer + iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right. upload: | @@ -662,187 +657,191 @@ en: Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone. - comeback: | + backups: | + ### Automatic Backups + If you can't finish your edits in one sitting, for example if your computer - crashes or you close the browser tab, your edits are still saved locally. - You can come back later (on the same browser and computer), and the - editor will offer to restore your work. + crashes or you close the browser tab, your edits are still saved locally + in your browser's storage. You can come back later (on the same browser + and computer), and iD will offer to restore your work. - roads: + keyboard: | + ### Keyboard Shortcuts + + You can view a list of keyboard shortcuts by pressing the `?` key. + + points: intro: | - # Roads & Lines + # Points - You can create, fix, and delete roads with this editor. Roads can be all - kinds: paths, highways, trails, cycle ways, and more - any used segment - is mappable. Roads are the most used type of line. Other examples of - lines are waterways, walls, and fences. What you can do with roads - applies to most types of lines. + *Points* can be used to represent features such as shops, restaurants, and + monuments. They mark a specific location, and describe what's there. - modifying: | - ### Modifying + add_point: | + ### Adding Points - Often you'll see roads that aren't aligned to the imagery or - to a GPS track. You can adjust these roads so they are in the correct place. - Click on a road to select it. All nodes of the road will be shown as small circles. - You can drag the nodes to better locations. - You can also create new nodes either by double-clicking on the road or by - moving the small triangles at the midpoints between nodes. + To add a point, click the {point} `Point` button on the toolbar + at the top of the map, or press the shortcut key `1`. This will + change the mouse cursor to a cross symbol. - move: | - ### Moving + To place the new point on the map, position the mouse cursor where the point + should go, then `left-click` or press the `spacebar`. - If you `right-click` the road, the editing menu will appear. - You can select the {move} 'Move' tool to move the entire road at one time. - Then click again to place the road in its new location. - You can also press the `M` shortcut key to move a road. + move_point: | + ### Moving Points - connect: | - ### Connecting + To move a point, place the mouse cursor over the point, then press the left + mouse button and hold it down while dragging the point to its new location. + + delete_point: | + ### Deleting Points + + It's OK to delete features that don't exist in the real world. Deleting a feature + from OpenStreetMap removes it from the map that everyone uses, so you should make + sure a feature is really gone before you delete it. + + To delete a point, `right-click` on the point to select it and + show the edit menu, then use the {delete} `Delete` command. + You can also press the `delete` key on your keyboard. + + lines: + intro: | + # Lines & Roads + + *Lines* are used to represent features such as roads, railroads, and rivers. + Lines should be drawn down the center of the feature that they represent. + + add_line: | + ### Adding Lines + + To add a line, click the {line} `Line` button on the toolbar + at the top of the map, or press the shortcut key `2`. This will + change the mouse cursor to a cross symbol. + + Next, position the mouse cursor where the line should begin and `left-click` + or press the `spacebar` to begin placing nodes along the line. + Continue placing more nodes by `left-clicking` or pressing `spacebar`. + While drawing, you can zoom in or drag the map in order to add more detail. + + To finish a line, press `enter` or click on the last node again. + + modify_line: | + ### Modifying Lines + + Often you'll see lines that aren't shaped correctly, for example a road + that does not match up with the background imagery. To adjust the shape + of a line, first `left-click` to select it. All nodes of the line will be + drawn as small circles. You can then drag the nodes to better locations. + + You can also create new nodes along a line either by `double-clicking` on + the line or by dragging the small triangles at the midpoints between nodes. + + connect_line: | + ### Connecting Lines Having roads connected properly is important for the map and essential for providing driving directions. The connections between roads are drawn with grey circles. - The endpoints of a road are drawn with larger white circles if they + The endpoints of a line are drawn with larger white circles if they don't connect to anything. - To connect a road to another feature, drag one of its nodes onto the - other feature in order to join them. - - To disconnect a road from another feature, right-click the connecting - node and select the {disconnect} 'Disconnect' tool or press the `D` - shortcut key. + To connect a line to another feature, drag one of its nodes onto the + other feature to connect them. If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type. - attributes: | - ### Attributtes + disconnect_line: | + ### Disconnecting Lines - When a road is selected, the feature editor in the sidebar will show - the type of the road and many attributes like name, speed limit, - and surface. You can modify fields or even add new ones. + To disconnect a road from another feature, `right-click` the connecting + node and select the {disconnect} `Disconnect` tool. - delete: | - ### Deleting + move_line: | + ### Moving Lines - If a road is entirely incorrect - you can see that it doesn't exist in satellite - imagery and ideally have confirmed locally that it's not present - you can delete - it, which removes it from the map. Be cautious when deleting features - - like any other edit, the results are seen by everyone and satellite imagery - is often out of date, so the road could simply be newly built. + To move an entire line, `right-click` the line and select the {move} + `Move` tool from the editing menu. Then move the mouse, and `left-click` + to place the line in a new location. - You can delete a road by clicking on it to select it, then pressing the 'Delete' - key or right-clicking it and then using the {delete} 'Delete' tool. + Lines that are connected to other features will stay connected as you + move the line to a new location. iD may prevent you from moving a line + across another connected line. - create: | - ### Creating + delete_line: | + ### Deleting Lines - Found somewhere there should be a road but there isn't? Click the {line} Line - icon in the top-left of the map or press the shortcut key `2` to start drawing - a line. + If a line is entirely incorrect, for example a road that doesn't exist + in the real world, it's OK to delete it. Be cautious when deleting features - + the background imagery you are using might be outdated, and a road that + looks wrong could simply be newly built. - Click on the start of the road on the map to start drawing. If the road - branches off from an existing road, start by clicking on the place where they connect. + To delete a line, `right-click` on the line to select it and + show the edit menu, then use the {delete} `Delete` command. + You can also press the `delete` key on your keyboard. - Then click on points along the road so that it follows the right path, according - to satellite imagery or GPS. If the road you are drawing crosses another road, connect - it by clicking on the intersection point. When you're done drawing, double-click - or press `Return` or `Enter` on your keyboard. - - buildings: + areas: intro: | - # Buildings & Areas + # Areas & Buildings - OpenStreetMap is the world's largest freely-available database of buildings. - You can improve this database. Buildings are the most used type - of areas, others are residential areas, farmland, forests, lakes, or ponds. - What you can do with buildings applies to most types of areas. + *Areas* are used to show the boundaries of features like lakes, buildings, + and residential areas. Areas should be traced around the edge of the + feature that they represent, for example, around the base of a building. - select: | - ### Selecting + point_or_area: | + ### Points or Areas? - You can select a building by clicking on its border. the pulsing glow will - will become visible, all nodes will be shown as circles and the - feature editor on the left will show the type of the building and - attributes like name, levels, and address. + Many features can be represented as points or areas. + It is recommended to map buildings and property outlines as areas + whenever possible, and to map businesses, amenities, and other features + that operate within buildings as points placed inside the building area. - modify: | - ### Modifying + add_area: | + ### Adding Areas - Sometimes buildings are incorrectly placed or have incorrect tags. - To move an entire building, select it and press the `M` shortcut key, - or right-click it and select the {move} 'Move' tool. Move your - mouse to shift the building, and click when it's correctly placed. + To add an area, click the {area} `Area` button on the toolbar + at the top of the map, or press the shortcut key `3`. This will + change the mouse cursor to a cross symbol. - To fix the specific shape of a building, click and drag the nodes that form - its border into better places. + Next, position the mouse cursor at one of the corners of the feature and `left-click` + or press the `spacebar` to begin placing nodes around the outer edge of + the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. + While drawing, you can zoom in or drag the map in order to add more detail. - create: | - ### Creating + To finish an area, press `enter` or click again on either the first or last node. - One of the main questions around adding buildings to the map is that - OpenStreetMap records buildings both as shapes and points. The rule of thumb - is to _map a building as a shape whenever possible_, and map companies, homes, - amenities, and other things that operate out of buildings as points placed - within the building shape. + square_area: | + ### Square Corners - Start drawing a building as a shape by clicking the {area} Area button in the top - left of the map, and end it either by pressing 'Return' on your keyboard - or clicking on the first node drawn or clicking again on the last node drawn - to close the shape. + Many area features like buildings have square corners. + To square the corners of an area, `right-click` the edge of the area + and select the {square} `Square` tool. - Then you assign the type of the building to the outline with the feature editor. - Most buildings are houses, if you're not sure choose the generic Building type. + modify_area: | + ### Modifying Areas - delete: | - ### Deleting + Often you'll see areas that aren't shaped correctly, for example a building + that does not match up with the background imagery. To adjust the shape + of an area, first `left-click` to select it. All nodes of the area will be + drawn as small circles. You can then drag the nodes to better locations. - If a building is entirely incorrect - you can see that it doesn't exist in satellite - imagery and ideally have confirmed locally that it's not present - you can delete - it, which removes it from the map. Be cautious when deleting features - - like any other edit, the results are seen by everyone and satellite imagery - is often out of date, so the building could simply be newly built. + You can also create new nodes along an area either by `double-clicking` on + the edge of the area or by dragging the small triangles at the midpoints + between nodes. - You can delete a building by clicking on it to select it and then pressing the `Delete` - key, or by right-clicking it and then using the {delete} 'Delete' tool. + delete_area: | + ### Deleting Areas - addresses: - intro: | - # Addresses & Points + If an area is entirely incorrect, for example a building that doesn't exist + in the real world, it's OK to delete it. Be cautious when deleting features - + the background imagery you are using might be outdated, and a building that + looks wrong could simply be newly built. - Addresses are some of the most useful information for the map. - - Address information can be added to OpenStreetMap using a variety of methods, - such as adding a simple point containing an address, adding address information - to a building, site or other area, or alternatively to an entrance node. - - nodup: | - ### No duplication - - Usually address information doesn't need to be duplicated, e.g. when there - is a building outline on the map and several shops as points inside, - only the building should have an address. - - recommendation: | - ### Recommendation - - Most buildings and sites have only one address and it is recommended to add - the address to the building as a whole. If there is no building on the map - and you cannot draw one, you should add an address point to the map. - - Some buildings or sites have more than one address. You can add the - addresses as separate points inside the building. - - points: | - ### Other Points - - While addresses are still the most common type of point feature, - there are other often used types like trees, towers, or poles. - - To create a point feature click the {point} Point icon in the top-left - of the map or press the shortcut key `1` to insert a point. + To delete an area, `right-click` on the area to select it and + show the edit menu, then use the {delete} `Delete` command. + You can also press the `delete` key on your keyboard. feature_editor: intro: | @@ -859,7 +858,7 @@ en: The feature editor will display buttons for common feature types, and you can find others by typing what you're looking for in the search box. - Click the 'i' in the top-right-hand corner of a feature type button to + Click the {inspect} icon next to the feature name to learn more about it. Click a button to choose that type. fields: | @@ -885,8 +884,8 @@ en: ### Undo & Redo Changes you make in the feature editor are automatically applied. - You can undo them at any time by clicking the {undo} 'Undo' button and redo - changes by clicking the {redo} 'Redo' button. + You can undo them at any time by clicking the {undo} `Undo` button and redo + changes by clicking the {redo} `Redo` button. imagery: intro: | @@ -897,14 +896,14 @@ en: from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data. - To see which imagery sources are available for editing, click on - the {layers} 'Background settings' panel on the side of the map. + To see which imagery sources are available for editing, click the + {layers} `Background settings` button on the side of the map. sources: | ### Sources By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is - displayed in the editor. Depending on where you are editing, other imagery + chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference. @@ -920,8 +919,8 @@ en: 'Adjust Imagery Offset' section at the bottom of the Background Settings pane. Click on the small triangles to adjust the imagery offset in small steps, - or press the mouse down and drag within the grey square to slide the imagery - into alignment. + or hold the left mouse botton and drag within the grey square to slide + the imagery into alignment. streetlevel: intro: | @@ -935,7 +934,7 @@ en: using: | ### Using - To use street level photos for mapping, click on the {data} 'Map data' panel on the + To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers. When enabled, the photo layer will display a line along the sequence of photos. @@ -966,7 +965,7 @@ en: To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple - line. Click on the {data} 'Map data' panel on the side of the map to enable, + line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data. The GPS track isn't sent to OpenStreetMap - the best way to use it is to diff --git a/dist/locales/en.json b/dist/locales/en.json index af8b7c1e0..10666cd8c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -688,60 +688,61 @@ }, "overview": { "intro": "# Overview\n", - "features": "### Map Features\n\nWe use the word *features* to describe things that appear on the map,\nsuch as roads, buildings, or points of interest. Anything in the real\nworld can be mapped as a feature on OpenStreetMap. Features are\nrepresented on the map using *points*, *lines*, or *areas*.\n\nIn OpenStreetmap, points are sometimes called *nodes*, and lines and areas\nare sometimes called *ways*.\n", - "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button\nwhile moving the mouse around. This is also called *panning*.\n\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons along the side of the map.\n", - "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" + "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button while\nmoving the mouse around. You can also use the arrow keys on your keyboard.\n\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons along the side of the map.\n", + "features": "### Map Features\n\nWe use the word *features* to describe things that appear on the map,\nsuch as roads, buildings, or points of interest. Anything in the real\nworld can be mapped as a feature on OpenStreetMap. Map features are\nrepresented on the map using *points*, *lines*, or *areas*.\n\nIn OpenStreetmap, points are sometimes called *nodes*, and lines and areas\nare sometimes called *ways*.\n" }, "editing": { - "intro": "# Editing & Saving\n\n`Left-Click` on a feature to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display more details,\nsuch as its name or address.\n\n`Right-click` on a map feature to display the editing menu, which shows\nthe commands that are available, such as rotating, moving, and deleting.\n", + "intro": "# Editing & Saving\n\n`Left-click` on a feature to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display details\nabout that feature, such as it's name or address.\n\n`Right-click` on a map feature to display the editing menu, which shows\nthe commands that are available, such as rotating, moving, and deleting.\n", "multiselect": "### Multiselect\n\n`Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", - "edit": "### Edit\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", - "save": "### Save\n\nClick `Save` to finish your edits and send them to the OpenStreetMap\nserver. You should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\nThe editor will perform a basic check for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", + "undo_redo": "### Undo and Redo\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", + "save": "### Save\n\nClick {save} `Save` to finish your edits and send them to OpenStreetMap.\nYou should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\niD will also perform some basic checks for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", "upload": "### Upload\n\nBefore uploading your changes you must enter a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments).\nThen click `Upload` to send your changes to OpenStreetMap, where they will be\nmerged into the map and publicly visible to everyone.\n", - "comeback": "If you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally.\nYou can come back later (on the same browser and computer), and the\neditor will offer to restore your work.\n" + "backups": "### Automatic Backups\n\nIf you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally\nin your browser's storage. You can come back later (on the same browser\nand computer), and iD will offer to restore your work.\n", + "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" }, - "roads": { - "intro": "# Roads & Lines\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycle ways, and more - any used segment\nis mappable. Roads are the most used type of line. Other examples of\nlines are waterways, walls, and fences. What you can do with roads\napplies to most types of lines.\n", - "modifying": "### Modifying\n\nOften you'll see roads that aren't aligned to the imagery or\nto a GPS track. You can adjust these roads so they are in the correct place.\nClick on a road to select it. All nodes of the road will be shown as small circles.\nYou can drag the nodes to better locations.\nYou can also create new nodes either by double-clicking on the road or by\nmoving the small triangles at the midpoints between nodes.\n", - "move": "### Moving\n\nIf you `right-click` the road, the editing menu will appear.\nYou can select the {move} 'Move' tool to move the entire road at one time.\nThen click again to place the road in its new location.\nYou can also press the `M` shortcut key to move a road.\n", - "connect": "### Connecting\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\n\nThe connections between roads are drawn with grey circles.\nThe endpoints of a road are drawn with larger white circles if they\ndon't connect to anything.\n\nTo connect a road to another feature, drag one of its nodes onto the\nother feature in order to join them.\n\nTo disconnect a road from another feature, right-click the connecting\nnode and select the {disconnect} 'Disconnect' tool or press the `D`\nshortcut key.\n\nIf you know that the connection has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", - "attributes": "### Attributtes\n\nWhen a road is selected, the feature editor in the sidebar will show\nthe type of the road and many attributes like name, speed limit,\nand surface. You can modify fields or even add new ones.\n", - "delete": "### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then pressing the 'Delete'\nkey or right-clicking it and then using the {delete} 'Delete' tool.\n", - "create": "### Creating\n\nFound somewhere there should be a road but there isn't? Click the {line} Line\nicon in the top-left of the map or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press `Return` or `Enter` on your keyboard.\n" + "points": { + "intro": "# Points\n\n*Points* can be used to represent features such as shops, restaurants, and\nmonuments. They mark a specific location, and describe what's there.\n", + "add_point": "### Adding Points\n\nTo add a point, click the {point} `Point` button on the toolbar\nat the top of the map, or press the shortcut key `1`. This will\nchange the mouse cursor to a cross symbol.\n\nTo place the new point on the map, position the mouse cursor where the point\nshould go, then `left-click` or press the `spacebar`.\n", + "move_point": "### Moving Points\n\nTo move a point, place the mouse cursor over the point, then press the left\nmouse button and hold it down while dragging the point to its new location.\n", + "delete_point": "### Deleting Points\n\nIt's OK to delete features that don't exist in the real world. Deleting a feature\nfrom OpenStreetMap removes it from the map that everyone uses, so you should make\nsure a feature is really gone before you delete it.\n\nTo delete a point, `right-click` on the point to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, - "buildings": { - "intro": "# Buildings & Areas\n\nOpenStreetMap is the world's largest freely-available database of buildings.\nYou can improve this database. Buildings are the most used type\nof areas, others are residential areas, farmland, forests, lakes, or ponds.\nWhat you can do with buildings applies to most types of areas.\n", - "select": "### Selecting\n\nYou can select a building by clicking on its border. the pulsing glow will\nwill become visible, all nodes will be shown as circles and the\nfeature editor on the left will show the type of the building and\nattributes like name, levels, and address.\n", - "modify": "### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\nTo move an entire building, select it and press the `M` shortcut key,\nor right-click it and select the {move} 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n", - "create": "### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the {area} Area button in the top\nleft of the map, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn or clicking again on the last node drawn\nto close the shape.\n\nThen you assign the type of the building to the outline with the feature editor.\nMost buildings are houses, if you're not sure choose the generic Building type.\n", - "delete": "### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it and then pressing the `Delete`\nkey, or by right-clicking it and then using the {delete} 'Delete' tool.\n" + "lines": { + "intro": "# Lines & Roads\n\n*Lines* are used to represent features such as roads, railroads, and rivers.\nLines should be drawn down the center of the feature that they represent.\n", + "add_line": "### Adding Lines\n\nTo add a line, click the {line} `Line` button on the toolbar\nat the top of the map, or press the shortcut key `2`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor where the line should begin and `left-click`\nor press the `spacebar` to begin placing nodes along the line.\nContinue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish a line, press `enter` or click on the last node again.\n", + "modify_line": "### Modifying Lines\n\nOften you'll see lines that aren't shaped correctly, for example a road\nthat does not match up with the background imagery. To adjust the shape\nof a line, first `left-click` to select it. All nodes of the line will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along a line either by `double-clicking` on\nthe line or by dragging the small triangles at the midpoints between nodes.\n", + "connect_line": "### Connecting Lines\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\n\nThe connections between roads are drawn with grey circles.\nThe endpoints of a line are drawn with larger white circles if they\ndon't connect to anything.\n\nTo connect a line to another feature, drag one of its nodes onto the\nother feature to connect them.\n\nIf you know that the connection has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", + "disconnect_line": "### Disconnecting Lines\n\nTo disconnect a road from another feature, `right-click` the connecting\nnode and select the {disconnect} `Disconnect` tool.\n", + "move_line": "### Moving Lines\n\nTo move an entire line, `right-click` the line and select the {move}\n`Move` tool from the editing menu. Then move the mouse, and `left-click`\nto place the line in a new location.\n\nLines that are connected to other features will stay connected as you\nmove the line to a new location. iD may prevent you from moving a line\nacross another connected line.\n", + "delete_line": "### Deleting Lines\n\nIf a line is entirely incorrect, for example a road that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a road that\nlooks wrong could simply be newly built.\n\nTo delete a line, `right-click` on the line to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, - "addresses": { - "intro": "# Addresses & Points\n\nAddresses are some of the most useful information for the map.\n\nAddress information can be added to OpenStreetMap using a variety of methods,\nsuch as adding a simple point containing an address, adding address information\nto a building, site or other area, or alternatively to an entrance node.\n", - "nodup": "### No duplication\n\nUsually address information doesn't need to be duplicated, e.g. when there\nis a building outline on the map and several shops as points inside,\nonly the building should have an address.\n", - "recommendation": "### Recommendation\n\nMost buildings and sites have only one address and it is recommended to add\nthe address to the building as a whole. If there is no building on the map\nand you cannot draw one, you should add an address point to the map.\n\nSome buildings or sites have more than one address. You can add the\naddresses as separate points inside the building.\n", - "points": "### Other Points\n\nWhile addresses are still the most common type of point feature,\nthere are other often used types like trees, towers, or poles.\n\nTo create a point feature click the {point} Point icon in the top-left\nof the map or press the shortcut key `1` to insert a point.\n" + "areas": { + "intro": "# Areas & Buildings\n\n*Areas* are used to show the boundaries of features like lakes, buildings,\nand residential areas. Areas should be traced around the edge of the\nfeature that they represent, for example, around the base of a building.\n", + "point_or_area": "### Points or Areas?\n\nMany features can be represented as points or areas.\nIt is recommended to map buildings and property outlines as areas\nwhenever possible, and to map businesses, amenities, and other features\nthat operate within buildings as points placed inside the building area.\n", + "add_area": "### Adding Areas\n\nTo add an area, click the {area} `Area` button on the toolbar\nat the top of the map, or press the shortcut key `3`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor at one of the corners of the feature and `left-click`\nor press the `spacebar` to begin placing nodes around the outer edge of\nthe area. Continue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish an area, press `enter` or click again on either the first or last node.\n", + "square_area": "### Square Corners\n\nMany area features like buildings have square corners.\nTo square the corners of an area, `right-click` the edge of the area\nand select the {square} `Square` tool.\n", + "modify_area": "### Modifying Areas\n\nOften you'll see areas that aren't shaped correctly, for example a building\nthat does not match up with the background imagery. To adjust the shape\nof an area, first `left-click` to select it. All nodes of the area will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along an area either by `double-clicking` on\nthe edge of the area or by dragging the small triangles at the midpoints\nbetween nodes.\n", + "delete_area": "### Deleting Areas\n\nIf an area is entirely incorrect, for example a building that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a building that\nlooks wrong could simply be newly built.\n\nTo delete an area, `right-click` on the area to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, "feature_editor": { "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", - "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the top-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n", + "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the {inspect} icon next to the feature name to\nlearn more about it. Click a button to choose that type.\n", "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building.\n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n[Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more\nabout popular tag combinations.\n", - "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} 'Undo' button and redo\nchanges by clicking the {redo} 'Redo' button.\n" + "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} `Undo` button and redo\nchanges by clicking the {redo} `Redo` button.\n" }, "imagery": { - "intro": "# Background Imagery\n\nBackground imagery is an important resource for mapping, and is displayed\nbeneath the map data. This imagery can be aerial photos collected\nfrom satellites, airplanes, and drones, or it can be scanned historical\nmaps or other freely available source data.\n\nTo see which imagery sources are available for editing, click on\nthe {layers} 'Background settings' panel on the side of the map.\n", - "sources": "### Sources\n\nBy default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is\ndisplayed in the editor. Depending on where you are editing, other imagery\nsources will be available. Some may be newer or have higher resolution,\nso it is always useful to check and see which layer is the best one to use\nas a mapping reference.\n", - "offset": "### Offset\n\nImagery is sometimes offset slightly from accurate map data.\n\nIf you see a lot of roads or buildings shifted from the background imagery,\ndon't move them all to match the background. Instead, you can adjust\nthe background so that it matches the existing data by expanding the\n'Adjust Imagery Offset' section at the bottom of the Background Settings pane.\n\nClick on the small triangles to adjust the imagery offset in small steps,\nor press the mouse down and drag within the grey square to slide the imagery\ninto alignment.\n" + "intro": "# Background Imagery\n\nBackground imagery is an important resource for mapping, and is displayed\nbeneath the map data. This imagery can be aerial photos collected\nfrom satellites, airplanes, and drones, or it can be scanned historical\nmaps or other freely available source data.\n\nTo see which imagery sources are available for editing, click the\n{layers} `Background settings` button on the side of the map.\n", + "sources": "### Sources\n\nBy default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is\nchosen as the background image. Depending on where you are editing, other imagery\nsources will be available. Some may be newer or have higher resolution,\nso it is always useful to check and see which layer is the best one to use\nas a mapping reference.\n", + "offset": "### Offset\n\nImagery is sometimes offset slightly from accurate map data.\n\nIf you see a lot of roads or buildings shifted from the background imagery,\ndon't move them all to match the background. Instead, you can adjust\nthe background so that it matches the existing data by expanding the\n'Adjust Imagery Offset' section at the bottom of the Background Settings pane.\n\nClick on the small triangles to adjust the imagery offset in small steps,\nor hold the left mouse botton and drag within the grey square to slide\nthe imagery into alignment.\n" }, "streetlevel": { "intro": "# Street Level Photos\n\nStreet level photos provide a ground-truth prespective of an area, useful\nfor mapping traffic signs, businesses, and other details that you can't\nsee from satellite and aerial images. The iD editor supports street level\nphotos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).\n", - "using": "### Using\n\nTo use street level photos for mapping, click on the {data} 'Map data' panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", + "using": "### Using\n\nTo use street level photos for mapping, click the {data} `Map data` panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", "viewer": "\nWhen you click on one of the photo locations, a photo viewer will appear in the\nbottom corner of the map. The photo viewer contains controls to step forward and\nbackward in the image sequence. It will also show the username of the person who\ncaptured the image, the date it was captured, and a link to view the image on\nthe original site.\n" }, "gps": { "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", - "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click on the {data} 'Map data' panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click the {data} `Map data` panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" }, "relations": { "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", diff --git a/modules/ui/help.js b/modules/ui/help.js index 77090480a..62cfe4e2d 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -20,12 +20,12 @@ export function uiHelp(context) { var docKeys = [ ['help.help.',['intro','opendata','beforestart','opensource']], - ['help.overview.',['intro','features','navigation','keyboard']], - ['help.editing.',['intro','multiselect','edit','save','upload','comeback']], - ['help.roads.',['intro','move','connect','attributes','delete','create']], - ['help.buildings.',['intro','select','modify','create','delete']], - ['help.addresses.',['intro','nodup','recommendation','points']], + ['help.overview.',['intro','features','navigation']], + ['help.editing.',['intro','multiselect','undo_redo','save','upload','backups','keyboard']], ['help.feature_editor.',['intro','select','fields','tags','undo']], + ['help.points.',['intro','add_point','move_point','delete_point']], + ['help.lines.',['intro','add_line','modify_line','connect_line','disconnect_line','move_line','delete_line']], + ['help.areas.',['intro','point_or_area','add_area','square_area','modify_area','delete_area']], ['help.imagery.',['intro','sources','offset']], ['help.streetlevel.',['intro','using','viewer']], ['help.gps.',['intro','using']], From c484e8cc924bf44e6d90d8062348dcd4662845bf Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 21 Nov 2017 16:46:24 -0500 Subject: [PATCH 104/159] Swap undo/redo when rtl --- modules/ui/help.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/ui/help.js b/modules/ui/help.js index 62cfe4e2d..d723bad3b 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -32,7 +32,7 @@ export function uiHelp(context) { ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] ]; - var icont = { + var replacements = { more: icon('#icon-more'), apply: icon('#icon-apply'), alert: icon('#icon-alert'), @@ -79,15 +79,15 @@ export function uiHelp(context) { paste: icon('#operation-paste'), delete: icon('#operation-delete'), close: icon('#icon-close'), - undo: icon('#icon-undo'), - redo: icon('#icon-redo'), + undo: icon(textDirection === 'rtl' ? '#icon-redo' : '#icon-undo'), + redo: icon(textDirection === 'rtl' ? '#icon-undo' : '#icon-redo'), save: icon('#icon-save'), version: context.version }; var docs = docKeys.map(function(key) { var text = key[1].reduce(function(all, part) { - return all + t(key[0].concat(part), icont); + return all + t(key[0].concat(part), replacements); }, ''); return { title: text.split('\n')[0].replace('#', '').trim(), From 5a7030894730bcef6f3d586a7aaf975ee8698d3e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 08:53:16 -0500 Subject: [PATCH 105/159] Simplify language in feature_editor section --- data/core.yaml | 93 ++++++++++++++++++++++++---------------------- modules/ui/help.js | 2 +- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index a976abdc9..14ce64918 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -670,6 +670,55 @@ en: You can view a list of keyboard shortcuts by pressing the `?` key. + feature_editor: + intro: | + # Feature Editor + + The *feature editor* appears alongside the map, and allows you to see + and edit all of the information for the selected feature. + + The top section displays the feature's type. The middle section + contains *fields* showing the feature's attributes, such as its name or address. + + select: | + ### Feature Type + + You can click on the feature type to change the feature to a different type. + Everything that exists in the real world can be added to OpenStreetMap, so there + are thousands of feature types to choose from. + + The type picker displays the most common feature types - such as parks, hospitals, + restaurants, roads, and buildings. You can search for anything by typing what you're + looking for in the search box. You can also click the {inspect} info icon next + to the feature type to learn more about it. + + fields: | + ### Fields + + The "All fields" section contains all of the feature's details that you + may edit. In OpenStreetMap, all of the fields are optional, and it's OK + to leave a field blank if you are unsure. + + Each feature type will display different fields. For example, a road + may display fields for its surface and speed limit, but a restaurant + may display fields for the type of food it serves and the hours it is open. + + You can also click the `Add field` dropdown to add more fields, such as + a description, Wikipedia link, wheelchair access, and more. + + tags: | + ### Tags + + Below the fields section, you can expand the "All tags" section to edit + any of the OpenStreetMap *tags* for the selected feature. Each tag + consists of a *key* and *value*, data elements that define all of + the features stored in OpenStreetMap. + + Editing a feature's tags requires intermediate knowledge about OpenStreetMap. + You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) + or [Taginfo](https://taginfo.openstreetmap.org/) to learn more + about accepted OpenStreetMap tagging practices. + points: intro: | # Points @@ -843,50 +892,6 @@ en: show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard. - feature_editor: - intro: | - # Feature Editor - - The feature editor is the section on the left side of the page that allows you to - edit the details of the selected feature. - - select: | - ### Selecting a Feature Type - - After you add a point, line, or area, you can choose what type of feature it - is, like whether it's a highway or residential road, supermarket or cafe. - The feature editor will display buttons for common feature types, and you can - find others by typing what you're looking for in the search box. - - Click the {inspect} icon next to the feature name to - learn more about it. Click a button to choose that type. - - fields: | - ### Fields - - After you choose a feature type, or when you select a feature that already - has a type assigned, the feature editor will display fields with details about - the feature like its name or speed limit for a road or levels and address for a building. - - Below the fields you see, you can click the `Add field` dropdown to add - other details, like a Wikipedia link, wheelchair access, and more. - - tags: | - ### Tags - - Below that you see the tags which are actually stored in OpenStreetMap. - If you cannot find the feature's type with the feature editor or you - cannot add required fields, then you can add additional tags with the `+` button. - [Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more - about popular tag combinations. - - undo: | - ### Undo & Redo - - Changes you make in the feature editor are automatically applied. - You can undo them at any time by clicking the {undo} `Undo` button and redo - changes by clicking the {redo} `Redo` button. - imagery: intro: | # Background Imagery diff --git a/modules/ui/help.js b/modules/ui/help.js index d723bad3b..831e9748a 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -22,7 +22,7 @@ export function uiHelp(context) { ['help.help.',['intro','opendata','beforestart','opensource']], ['help.overview.',['intro','features','navigation']], ['help.editing.',['intro','multiselect','undo_redo','save','upload','backups','keyboard']], - ['help.feature_editor.',['intro','select','fields','tags','undo']], + ['help.feature_editor.',['intro','select','fields','tags']], ['help.points.',['intro','add_point','move_point','delete_point']], ['help.lines.',['intro','add_line','modify_line','connect_line','disconnect_line','move_line','delete_line']], ['help.areas.',['intro','point_or_area','add_area','square_area','modify_area','delete_area']], From ca49166d6c1bff8a3aab1f85fe20336ff675b751 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 11:51:51 -0500 Subject: [PATCH 106/159] Simplify language in relation section --- data/core.yaml | 168 ++++++++++++++++++++++++------------------- dist/locales/en.json | 41 +++++------ modules/ui/help.js | 6 +- 3 files changed, 120 insertions(+), 95 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 14ce64918..7949d2fdd 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -561,7 +561,7 @@ en: Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser. - opendata: | + open_data: | ### Open Data Edits that you make on this map will be visible to everyone who uses @@ -569,7 +569,7 @@ en: or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright). - beforestart: | + before_start: | ### Before you start You should be familiar with OpenStreetMap and this editor before you start editing. @@ -577,7 +577,7 @@ en: Click "Start the Walkthrough" on this screen to take the tutorial - it takes only about 15 minutes. - opensource: | + open_source: | ### Open Source The iD editor is a collaborative open source project, and you are using version {version} now. @@ -632,7 +632,7 @@ en: selection lasso. All of the points inside the lasso area will be selected. undo_redo: | - ### Undo and Redo + ### Undo & Redo When you make changes to the map, these are stored locally until you save them to the server. Don't worry if you make a mistake - until the edits are @@ -755,7 +755,7 @@ en: lines: intro: | - # Lines & Roads + # Lines *Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent. @@ -833,7 +833,7 @@ en: areas: intro: | - # Areas & Buildings + # Areas *Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the @@ -866,7 +866,7 @@ en: Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area - and select the {square} `Square` tool. + and select the {orthogonalize} `Square` tool. modify_area: | ### Modifying Areas @@ -892,6 +892,95 @@ en: show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard. + relations: + intro: | + # Relations + + A *relation* is a special type of feature in OpenStreetMap that groups + together other features. The features that belong to a relation are + called *members*, and each member can have a *role* in the relation. + + edit: | + ### Editing Relations + + At the bottom of the feature editor, you can expand the "All relations" + section to see if the selected feature is a member of any relations. + You can then click on the relation to select and edit it. + + To add a feature to a relation, select the feature, then click the {plus} + button in the "All relations" section of the feature editor. You can choose + from a list of nearby relations, or choose the 'New relation...' option. + + You can also click the {delete} `Delete` button to remove the selected + feature from the relation. If you remove all of the members from a + relation, the relation will be deleted automatically. + + maintain: | + ### Maintaining + + For the most part, iD will maintainin relations automatically as you + edit. You should take care when replacing features that might be members + of relations. For example if you delete a section of road and draw a new + section of road to replace it, you should add the new section to the same + relations (routes, turn restrictions, etc.) as the original. + + types: | + ## Relation Types + + multipolygons: | + ### Multipolygons + + A *multipolygon* relation is a group of one or more *outer* features and + one or more inner features. The outer features define the outer edges + of the multipolygon, and the inner features define sub-areas or holes + cut out from the inside of the multipolygon. + + To create a multipolygon, for example a building with a hole in it, + draw the outer edge as an area and the inner edge as a line or different + kind of area. Then `shift-click` to select both features, `right-click` + to show the edit menu, and select the {merge} `Merge` tool. + + Merging several lines or areas will create a new multipolygon relation + with all selected areas as members. iD will choose the inner and outer roles + automatically, based on which features are contained inside other features. + + turn_restrictions: | + ### Turn restrictions + + A *turn restriction* relation is a group of several road segments in + an intersection. Turn restrictions consist of a *from* road, *via* + node or roads, and a *to* road. + + To edit turn restrictions, select a junction node where two or more roads + meet. The feature editor will display a special 'Turn Restrictions' field + containing a model of the intersection. + + In the 'Turn Restrictions' field, click to select a "from" road, and + see whether turns are allowed or restricted to any of the "to" roads. + You can click on the turn icons to toggle them between allowed and restricted. + iD will create relations automatically and choose the from, via, and to roles + based on your choices. + + routes: | + ### Routes + + A *route* relation is a group of one or more line features that together + form a route network, like a bus route, train route, or highway route. + + To add a feature to a route relation, select the feature and scroll down + to the "All relations" section of the feature editor, then click the + {plus} plus to add this feature to a nearby existing relation or a new relation. + + boundaries: | + ### Boundaries + + A *boundary* relation is a group of one or more line features that together + form an administrative boundary. + + To add a feature to a boundary relation, select the feature and scroll down + to the "All relations" section of the feature editor, then click the + {plus} plus to add this feature to a nearby existing relation or a new relation. + imagery: intro: | # Background Imagery @@ -979,71 +1068,6 @@ en: You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use. - relations: - intro: | - # Relations & Members - - A *relation* is a special type of feature in OpenStreetMap that groups together other - features, called *members* of the relation. Every member of a relation can have a - *role* for the relation. At the bottom of the feature editor, you can see which - relations a feature is a member of, and the click on a relation there will select it. - When the relation is selected, you can see all of its members highlighted on the map - and listed in the feature editor together with their role for the relation. - - types: | - ### Common Types - - The most common type of relation is the *multipolygon*, - which groups together several areas to define a complex area, which may - consist of several pieces or has holes in it like a donut. - Another type of relation is the *Turn restriction* which groups together two - roads segments at a crossing to disable turning options. - - Two other types of relations are *route relations*, which group together - sections of road that belong to a specific highway, bus route, or hiking route, - and *boundaries*, which group together sections of boundary lines which may be - roads, rivers, or plot boundaries at the same time. - - multipolygons: | - ### Multipolygons - - Draw two or more areas and select them. Then press either press - the `C` shortcut key or right-click one of the selected areas and - select the {merge} 'Merge' tool. This will create a new multipolygon - relation with all selected areas as members. The areas will have the role - outer except When an area is inside another area it will have the role inner - and become the hole in the outer area. - - turnrestrictions: | - ### Turn restrictions - - Select the crossing node of two or more roads. In the feature editor - you will see the roads connected to the crossing below 'Turn Restrictions'. - There you can select a road and disable U-turn and turns into every other road. - This will create a turn restriction relation with both roads and the - crossing as members with roles from, to, and via. - - maintain: | - ### Maintaining - - For the most part, iD will take care of maintaining relations automatically - while you edit. The main thing you should be aware of is that if you delete a - section of road to redraw it more accurately, you should make sure that the - new section is a member of the same relations as the original. - - edit: | - ### Editing Relations - - To add a feature to a relation, select the feature, click the `+` button - in the 'All relations' section of the feature editor, and select or type - the name of the relation. - - To create a new relation, select the first feature that should be a member, - click the `+` button in the 'All relations' section, and select 'New relation...'. - - To remove a feature from a relation, select the feature and click the {delete} - 'Delete' button next to the relation you want to remove it from. - intro: done: done ok: OK diff --git a/dist/locales/en.json b/dist/locales/en.json index 10666cd8c..d5c366357 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -682,9 +682,9 @@ "key": "H", "help": { "intro": "# Help\n\nWelcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/).\nWith this editor you can update OpenStreetMap right from your web browser.\n", - "opendata": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor imagery collected from aerial or street level photos. Copying from commercial\nsources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).\n", - "beforestart": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", - "opensource": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs](https://github.com/openstreetmap/iD/issues).\n" + "open_data": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor imagery collected from aerial or street level photos. Copying from commercial\nsources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).\n", + "before_start": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", + "open_source": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs](https://github.com/openstreetmap/iD/issues).\n" }, "overview": { "intro": "# Overview\n", @@ -694,12 +694,18 @@ "editing": { "intro": "# Editing & Saving\n\n`Left-click` on a feature to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display details\nabout that feature, such as it's name or address.\n\n`Right-click` on a map feature to display the editing menu, which shows\nthe commands that are available, such as rotating, moving, and deleting.\n", "multiselect": "### Multiselect\n\n`Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", - "undo_redo": "### Undo and Redo\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", + "undo_redo": "### Undo & Redo\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", "save": "### Save\n\nClick {save} `Save` to finish your edits and send them to OpenStreetMap.\nYou should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\niD will also perform some basic checks for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", "upload": "### Upload\n\nBefore uploading your changes you must enter a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments).\nThen click `Upload` to send your changes to OpenStreetMap, where they will be\nmerged into the map and publicly visible to everyone.\n", "backups": "### Automatic Backups\n\nIf you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally\nin your browser's storage. You can come back later (on the same browser\nand computer), and iD will offer to restore your work.\n", "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" }, + "feature_editor": { + "intro": "# Feature Editor\n\nThe *feature editor* appears alongside the map, and allows you to see\nand edit all of the information for the selected feature.\n\nThe top section displays the feature's type. The middle section\ncontains *fields* showing the feature's attributes, such as its name or address.\n", + "select": "### Feature Type\n\nYou can click on the feature type to change the feature to a different type.\nEverything that exists in the real world can be added to OpenStreetMap, so there\nare thousands of feature types to choose from.\n\nThe type picker displays the most common feature types - such as parks, hospitals,\nrestaurants, roads, and buildings. You can search for anything by typing what you're\nlooking for in the search box. You can also click the {inspect} info icon next\nto the feature type to learn more about it.\n", + "fields": "### Fields\n\nThe \"All fields\" section contains all of the feature's details that you\nmay edit. In OpenStreetMap, all of the fields are optional, and it's OK\nto leave a field blank if you are unsure.\n\nEach feature type will display different fields. For example, a road\nmay display fields for its surface and speed limit, but a restaurant\nmay display fields for the type of food it serves and the hours it is open.\n\nYou can also click the `Add field` dropdown to add more fields, such as\na description, Wikipedia link, wheelchair access, and more.\n", + "tags": "### Tags\n\nBelow the fields section, you can expand the \"All tags\" section to edit\nany of the OpenStreetMap *tags* for the selected feature. Each tag\nconsists of a *key* and *value*, data elements that define all of\nthe features stored in OpenStreetMap.\n\nEditing a feature's tags requires intermediate knowledge about OpenStreetMap.\nYou should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page)\nor [Taginfo](https://taginfo.openstreetmap.org/) to learn more\nabout accepted OpenStreetMap tagging practices.\n" + }, "points": { "intro": "# Points\n\n*Points* can be used to represent features such as shops, restaurants, and\nmonuments. They mark a specific location, and describe what's there.\n", "add_point": "### Adding Points\n\nTo add a point, click the {point} `Point` button on the toolbar\nat the top of the map, or press the shortcut key `1`. This will\nchange the mouse cursor to a cross symbol.\n\nTo place the new point on the map, position the mouse cursor where the point\nshould go, then `left-click` or press the `spacebar`.\n", @@ -707,7 +713,7 @@ "delete_point": "### Deleting Points\n\nIt's OK to delete features that don't exist in the real world. Deleting a feature\nfrom OpenStreetMap removes it from the map that everyone uses, so you should make\nsure a feature is really gone before you delete it.\n\nTo delete a point, `right-click` on the point to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, "lines": { - "intro": "# Lines & Roads\n\n*Lines* are used to represent features such as roads, railroads, and rivers.\nLines should be drawn down the center of the feature that they represent.\n", + "intro": "# Lines\n\n*Lines* are used to represent features such as roads, railroads, and rivers.\nLines should be drawn down the center of the feature that they represent.\n", "add_line": "### Adding Lines\n\nTo add a line, click the {line} `Line` button on the toolbar\nat the top of the map, or press the shortcut key `2`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor where the line should begin and `left-click`\nor press the `spacebar` to begin placing nodes along the line.\nContinue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish a line, press `enter` or click on the last node again.\n", "modify_line": "### Modifying Lines\n\nOften you'll see lines that aren't shaped correctly, for example a road\nthat does not match up with the background imagery. To adjust the shape\nof a line, first `left-click` to select it. All nodes of the line will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along a line either by `double-clicking` on\nthe line or by dragging the small triangles at the midpoints between nodes.\n", "connect_line": "### Connecting Lines\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\n\nThe connections between roads are drawn with grey circles.\nThe endpoints of a line are drawn with larger white circles if they\ndon't connect to anything.\n\nTo connect a line to another feature, drag one of its nodes onto the\nother feature to connect them.\n\nIf you know that the connection has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", @@ -716,19 +722,22 @@ "delete_line": "### Deleting Lines\n\nIf a line is entirely incorrect, for example a road that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a road that\nlooks wrong could simply be newly built.\n\nTo delete a line, `right-click` on the line to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, "areas": { - "intro": "# Areas & Buildings\n\n*Areas* are used to show the boundaries of features like lakes, buildings,\nand residential areas. Areas should be traced around the edge of the\nfeature that they represent, for example, around the base of a building.\n", + "intro": "# Areas\n\n*Areas* are used to show the boundaries of features like lakes, buildings,\nand residential areas. Areas should be traced around the edge of the\nfeature that they represent, for example, around the base of a building.\n", "point_or_area": "### Points or Areas?\n\nMany features can be represented as points or areas.\nIt is recommended to map buildings and property outlines as areas\nwhenever possible, and to map businesses, amenities, and other features\nthat operate within buildings as points placed inside the building area.\n", "add_area": "### Adding Areas\n\nTo add an area, click the {area} `Area` button on the toolbar\nat the top of the map, or press the shortcut key `3`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor at one of the corners of the feature and `left-click`\nor press the `spacebar` to begin placing nodes around the outer edge of\nthe area. Continue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish an area, press `enter` or click again on either the first or last node.\n", "square_area": "### Square Corners\n\nMany area features like buildings have square corners.\nTo square the corners of an area, `right-click` the edge of the area\nand select the {square} `Square` tool.\n", "modify_area": "### Modifying Areas\n\nOften you'll see areas that aren't shaped correctly, for example a building\nthat does not match up with the background imagery. To adjust the shape\nof an area, first `left-click` to select it. All nodes of the area will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along an area either by `double-clicking` on\nthe edge of the area or by dragging the small triangles at the midpoints\nbetween nodes.\n", "delete_area": "### Deleting Areas\n\nIf an area is entirely incorrect, for example a building that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a building that\nlooks wrong could simply be newly built.\n\nTo delete an area, `right-click` on the area to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" }, - "feature_editor": { - "intro": "# Feature Editor\n\nThe feature editor is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n", - "select": "### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe feature editor will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the {inspect} icon next to the feature name to\nlearn more about it. Click a button to choose that type.\n", - "fields": "### Fields\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the feature editor will display fields with details about\nthe feature like its name or speed limit for a road or levels and address for a building.\n\nBelow the fields you see, you can click the `Add field` dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n", - "tags": "### Tags\n\nBelow that you see the tags which are actually stored in OpenStreetMap.\nIf you cannot find the feature's type with the feature editor or you\ncannot add required fields, then you can add additional tags with the `+` button.\n[Taginfo](https://taginfo.openstreetmap.org/) is a great resource to learn more\nabout popular tag combinations.\n", - "undo": "### Undo & Redo\n\nChanges you make in the feature editor are automatically applied.\nYou can undo them at any time by clicking the {undo} `Undo` button and redo\nchanges by clicking the {redo} `Redo` button.\n" + "relations": { + "intro": "# Relations\n\nA *relation* is a special type of feature in OpenStreetMap that groups\ntogether other features. The features that belong to a relation are\ncalled *members*, and each member can have a *role* in the relation.\n", + "edit": "### Editing Relations\n\nAt the bottom of the feature editor, you can expand the \"All relations\"\nsection to see if the selected feature is a member of any relations.\nYou can then click on the relation to select and edit it.\n\nTo add a feature to a relation, select the feature, then click the {plus}\nbutton in the \"All relations\" section of the feature editor. You can choose\nfrom a list of nearby relations, or choose the 'New relation...' option.\n\nYou can also click the {delete} `Delete` button to remove the selected\nfeature from the relation. If you remove all of the members from a\nrelation, the relation will be deleted automatically.\n", + "maintain": "### Maintaining\n\nFor the most part, iD will maintainin relations automatically as you\nedit. You should take care when replacing features that might be members\nof relations. For example if you delete a section of road and draw a new\nsection of road to replace it, you should add the new section to the same\nrelations (routes, turn restrictions, etc.) as the original.\n", + "types": "## Relation Types\n", + "multipolygons": "### Multipolygons\n\nA *multipolygon* relation is a group of one or more *outer* features and\none or more inner features. The outer features define the outer edges\nof the multipolygon, and the inner features define sub-areas or holes\ncut out from the inside of the multipolygon.\n\nTo create a multipolygon, for example a building with a hole in it,\ndraw the outer edge as an area and the inner edge as a line or different\nkind of area. Then `shift-click` to select both features, `right-click`\nto show the edit menu, and select the {merge} `Merge` tool.\n\nMerging several lines or areas will create a new multipolygon relation\nwith all selected areas as members. iD will choose the inner and outer roles\nautomatically, based on which features are contained inside other features.\n", + "turn_restrictions": "### Turn restrictions\n\nA *turn restriction* relation is a group of several road segments in\nan intersection. Turn restrictions consist of a *from* road, *via*\nnode or roads, and a *to* road.\n\nTo edit turn restrictions, select a junction node where two or more roads\nmeet. The feature editor will display a special 'Turn Restrictions' field\ncontaining a model of the intersection.\n\nIn the 'Turn Restrictions' field, click to select a \"from\" road, and\nsee whether turns are allowed or restricted to any of the \"to\" roads.\nYou can click on the turn icons to toggle them between allowed and restricted.\niD will create relations automatically and choose the from, via, and to roles\nbased on your choices.\n", + "routes": "### Routes\n\nA *route* relation is a group of one or more line features that together\nform a route network, like a bus route, train route, or highway route.\n\nTo add a feature to a route relation, select the feature and scroll down\nto the \"All relations\" section of the feature editor, then click the\n{plus} plus to add this feature to a nearby existing relation or a new relation.\n", + "boundaries": "### Boundaries\n\nA *boundary* relation is a group of one or more line features that together\nform an administrative boundary.\n\nTo add a feature to a boundary relation, select the feature and scroll down\nto the \"All relations\" section of the feature editor, then click the\n{plus} plus to add this feature to a nearby existing relation or a new relation.\n" }, "imagery": { "intro": "# Background Imagery\n\nBackground imagery is an important resource for mapping, and is displayed\nbeneath the map data. This imagery can be aerial photos collected\nfrom satellites, airplanes, and drones, or it can be scanned historical\nmaps or other freely available source data.\n\nTo see which imagery sources are available for editing, click the\n{layers} `Background settings` button on the side of the map.\n", @@ -743,14 +752,6 @@ "gps": { "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click the {data} `Map data` panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" - }, - "relations": { - "intro": "# Relations & Members\n\nA *relation* is a special type of feature in OpenStreetMap that groups together other\nfeatures, called *members* of the relation. Every member of a relation can have a\n*role* for the relation. At the bottom of the feature editor, you can see which\nrelations a feature is a member of, and the click on a relation there will select it.\nWhen the relation is selected, you can see all of its members highlighted on the map\nand listed in the feature editor together with their role for the relation.\n", - "types": "### Common Types\n\nThe most common type of relation is the *multipolygon*,\nwhich groups together several areas to define a complex area, which may\nconsist of several pieces or has holes in it like a donut.\nAnother type of relation is the *Turn restriction* which groups together two\nroads segments at a crossing to disable turning options.\n\nTwo other types of relations are *route relations*, which group together\nsections of road that belong to a specific highway, bus route, or hiking route,\nand *boundaries*, which group together sections of boundary lines which may be\nroads, rivers, or plot boundaries at the same time.\n", - "multipolygons": "### Multipolygons\n\nDraw two or more areas and select them. Then press either press\nthe `C` shortcut key or right-click one of the selected areas and\nselect the {merge} 'Merge' tool. This will create a new multipolygon\nrelation with all selected areas as members. The areas will have the role\nouter except When an area is inside another area it will have the role inner\nand become the hole in the outer area.\n", - "turnrestrictions": "### Turn restrictions\n\nSelect the crossing node of two or more roads. In the feature editor\nyou will see the roads connected to the crossing below 'Turn Restrictions'.\nThere you can select a road and disable U-turn and turns into every other road.\nThis will create a turn restriction relation with both roads and the\ncrossing as members with roles from, to, and via.\n", - "maintain": "### Maintaining\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n", - "edit": "### Editing Relations\n\nTo add a feature to a relation, select the feature, click the `+` button\nin the 'All relations' section of the feature editor, and select or type\nthe name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the `+` button in the 'All relations' section, and select 'New relation...'.\n\nTo remove a feature from a relation, select the feature and click the {delete}\n'Delete' button next to the relation you want to remove it from.\n" } }, "intro": { diff --git a/modules/ui/help.js b/modules/ui/help.js index 831e9748a..df739078a 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -19,17 +19,17 @@ export function uiHelp(context) { var key = t('help.key'); var docKeys = [ - ['help.help.',['intro','opendata','beforestart','opensource']], + ['help.help.',['intro','open_data','before_start','open_source']], ['help.overview.',['intro','features','navigation']], ['help.editing.',['intro','multiselect','undo_redo','save','upload','backups','keyboard']], ['help.feature_editor.',['intro','select','fields','tags']], ['help.points.',['intro','add_point','move_point','delete_point']], ['help.lines.',['intro','add_line','modify_line','connect_line','disconnect_line','move_line','delete_line']], ['help.areas.',['intro','point_or_area','add_area','square_area','modify_area','delete_area']], + ['help.relations.',['intro','edit','maintain','types','multipolygons','turn_restrictions','routes','boundaries']], ['help.imagery.',['intro','sources','offset']], ['help.streetlevel.',['intro','using','viewer']], - ['help.gps.',['intro','using']], - ['help.relations.',['intro','types','multipolygons','turnrestrictions','maintain','edit']] + ['help.gps.',['intro','using']] ]; var replacements = { From 4165371c277625aa3bf9e9846b3c158b734d66bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Wed, 22 Nov 2017 12:30:49 -0800 Subject: [PATCH 107/159] Copyediting --- data/core.yaml | 56 ++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 7949d2fdd..a6a569e10 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -687,7 +687,7 @@ en: Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from. - The type picker displays the most common feature types - such as parks, hospitals, + The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it. @@ -791,12 +791,12 @@ en: Having roads connected properly is important for the map and essential for providing driving directions. - The connections between roads are drawn with grey circles. + The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything. - To connect a line to another feature, drag one of its nodes onto the - other feature to connect them. + To connect a line to another feature, drag one of the line's nodes onto + the other feature until both features snap together. If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the @@ -823,7 +823,7 @@ en: ### Deleting Lines If a line is entirely incorrect, for example a road that doesn't exist - in the real world, it's OK to delete it. Be cautious when deleting features - + in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built. @@ -843,9 +843,9 @@ en: ### Points or Areas? Many features can be represented as points or areas. - It is recommended to map buildings and property outlines as areas - whenever possible, and to map businesses, amenities, and other features - that operate within buildings as points placed inside the building area. + You should map buildings and property outlines as areas whenever + possible. Place points inside a building area to represent businesses, + amenities, and other features located inside the building. add_area: | ### Adding Areas @@ -909,7 +909,7 @@ en: To add a feature to a relation, select the feature, then click the {plus} button in the "All relations" section of the feature editor. You can choose - from a list of nearby relations, or choose the 'New relation...' option. + from a list of nearby relations, or choose the "New relation..." option. You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a @@ -955,7 +955,7 @@ en: meet. The feature editor will display a special 'Turn Restrictions' field containing a model of the intersection. - In the 'Turn Restrictions' field, click to select a "from" road, and + In the "Turn Restrictions" field, click to select a "from" road, and see whether turns are allowed or restricted to any of the "to" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles @@ -985,10 +985,10 @@ en: intro: | # Background Imagery - Background imagery is an important resource for mapping, and is displayed - beneath the map data. This imagery can be aerial photos collected - from satellites, airplanes, and drones, or it can be scanned historical - maps or other freely available source data. + The background imagery that appears beneath the map data is an important + resource for mapping. This imagery can be aerial photos collected from + satellites, airplanes, and drones, or it can be scanned historical maps + or other freely available source data. To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map. @@ -1007,13 +1007,14 @@ en: Imagery is sometimes offset slightly from accurate map data. - If you see a lot of roads or buildings shifted from the background imagery, - don't move them all to match the background. Instead, you can adjust - the background so that it matches the existing data by expanding the - 'Adjust Imagery Offset' section at the bottom of the Background Settings pane. + If you see a lot of roads or buildings shifted from the background + imagery, it may be the imagery that's incorrect, so don't move them all + to match the background. Instead, you can adjust the background so that + it matches the existing data by expanding the "Adjust Imagery Offset" + section at the bottom of the Background Settings pane. Click on the small triangles to adjust the imagery offset in small steps, - or hold the left mouse botton and drag within the grey square to slide + or hold the left mouse button and drag within the grey square to slide the imagery into alignment. streetlevel: @@ -1031,17 +1032,18 @@ en: To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers. - When enabled, the photo layer will display a line along the sequence of photos. - At higher zooms you will see a circle at each photo location, and at even higher - zooms you will see a viewfield to indicate the direction that the photo was taken. + When enabled, the photo layer displays a line along the sequence of + photos. At higher zoom levels, a circle marks at each photo location, + and at even higher zoom levels, a cone indicates the direction the + camera was facing when the photo was taken. viewer: | - When you click on one of the photo locations, a photo viewer will appear in the - bottom corner of the map. The photo viewer contains controls to step forward and - backward in the image sequence. It will also show the username of the person who - captured the image, the date it was captured, and a link to view the image on - the original site. + When you click on one of the photo locations, a photo viewer appears in + the bottom corner of the map. The photo viewer contains controls to step + forward and backward in the image sequence. It also shows the username + of the person who captured the image, the date it was captured, and a + link to view the image on the original site. gps: intro: | From 6490abbb4fd62a419eb475492bc467d101100884 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 16:58:18 -0500 Subject: [PATCH 108/159] Split up all help sections and titles, assemble markdown from keys (also incorporate some of @1ec5's copyedits, and adjust icon styles) --- css/80_app.css | 7 + data/core.yaml | 646 ++++++++++--------------------------------- dist/locales/en.json | 190 +++++++++---- modules/ui/help.js | 269 +++++++++++++----- 4 files changed, 492 insertions(+), 620 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index 51c3811ab..378df26f3 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -2617,6 +2617,13 @@ div.full-screen > button:hover { background:#eee; } +.help-wrap .left-content .icon.pre-text { + vertical-align: text-top; + margin-right: 0; + margin-left: 0; + display: inline-block; +} + .help-wrap .toc { /* This is two columns, 41.66666 x .4 = 16.6666 */ width:40%; diff --git a/data/core.yaml b/data/core.yaml index a6a569e10..d2a6a9edd 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -552,524 +552,158 @@ en: openstreetcam: view_on_openstreetcam: "View this image on OpenStreetCam" help: - title: "Help" + title: Help key: H help: - intro: | - # Help - - Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). - With this editor you can update OpenStreetMap right from your web browser. - - open_data: | - ### Open Data - - Edits that you make on this map will be visible to everyone who uses - OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, - or imagery collected from aerial or street level photos. Copying from commercial - sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright). - - before_start: | - ### Before you start - - You should be familiar with OpenStreetMap and this editor before you start editing. - iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. - Click "Start the Walkthrough" on this screen to take the tutorial - it takes only - about 15 minutes. - - open_source: | - ### Open Source - - The iD editor is a collaborative open source project, and you are using version {version} now. - The source code is available [on GitHub](https://github.com/openstreetmap/iD). - - You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) - or [reporting bugs](https://github.com/openstreetmap/iD/issues). - + title: Help + welcome: "Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser." + open_data_h: "### Open Data" + open_data: "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright)." + before_start_h: "### Before you start" + before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click 'Start the Walkthrough' on this screen to take the tutorial - it takes only about 15 minutes." + open_source_h: "### Open Source" + open_source: "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD)." + open_source_help: "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." overview: - intro: | - # Overview - - navigation: | - ### Navigation - - You can drag the map by pressing and holding the left mouse button while - moving the mouse around. You can also use the arrow keys on your keyboard. - - You can zoom in or out by scrolling with the mouse wheel or trackpad, - or by clicking the {plus} / {minus} buttons along the side of the map. - - features: | - ### Map Features - - We use the word *features* to describe things that appear on the map, - such as roads, buildings, or points of interest. Anything in the real - world can be mapped as a feature on OpenStreetMap. Map features are - represented on the map using *points*, *lines*, or *areas*. - - In OpenStreetmap, points are sometimes called *nodes*, and lines and areas - are sometimes called *ways*. - + title: Overview + navigation_h: "### Navigation" + navigation_drag: "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard." + navigation_zoom: "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map." + features_h: "### Map Features" + features: "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*." + nodes_ways: "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." editing: - intro: | - # Editing & Saving - - `Left-click` on a feature to select it. This will highlight the - feature with a pusling glow, and the sidebar will display details - about that feature, such as it's name or address. - - `Right-click` on a map feature to display the editing menu, which shows - the commands that are available, such as rotating, moving, and deleting. - - multiselect: | - ### Multiselect - - `Shift-click` to select several features together. This makes - it easier to move or delete multiple items. - - Another way to select multiple features is to hold down the `Shift` key, - then press and hold the left mouse button, and drag the mouse to draw a - selection lasso. All of the points inside the lasso area will be selected. - - undo_redo: | - ### Undo & Redo - - When you make changes to the map, these are stored locally until you save - them to the server. Don't worry if you make a mistake - until the edits are - saved, you can undo changes by clicking the {undo} `Undo` button, and redo - changes by clicking the {redo} `Redo` button. - - save: | - ### Save - - Click {save} `Save` to finish your edits and send them to OpenStreetMap. - You should remember to save your work frequently! - - On the save screen, you'll have a chance to review what you've done. - iD will also perform some basic checks for missing data and may offer - helpful suggestions and warnings if something doesn't seem right. - - upload: | - ### Upload - - Before uploading your changes you must enter a - [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). - Then click `Upload` to send your changes to OpenStreetMap, where they will be - merged into the map and publicly visible to everyone. - - backups: | - ### Automatic Backups - - If you can't finish your edits in one sitting, for example if your computer - crashes or you close the browser tab, your edits are still saved locally - in your browser's storage. You can come back later (on the same browser - and computer), and iD will offer to restore your work. - - keyboard: | - ### Keyboard Shortcuts - - You can view a list of keyboard shortcuts by pressing the `?` key. - + title: "Editing & Saving" + select_h: "### Select" + select_left_click: "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address." + select_right_click: "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting." + multiselect_h: "### Multiselect" + multiselect_shift_click: "`Shift-click` to select several features together. This makes it easier to move or delete multiple items." + multiselect_lasso: "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected." + undo_redo_h: "### Undo & Redo" + undo_redo: "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button." + save_h: "### Save" + save: "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!" + save_validation: "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right." + upload_h: "### Upload" + upload: "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone." + backups_h: "### Automatic Backups" + backups: "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work." + keyboard_h: "### Keyboard Shortcuts" + keyboard: "You can view a list of keyboard shortcuts by pressing the `?` key." feature_editor: - intro: | - # Feature Editor - - The *feature editor* appears alongside the map, and allows you to see - and edit all of the information for the selected feature. - - The top section displays the feature's type. The middle section - contains *fields* showing the feature's attributes, such as its name or address. - - select: | - ### Feature Type - - You can click on the feature type to change the feature to a different type. - Everything that exists in the real world can be added to OpenStreetMap, so there - are thousands of feature types to choose from. - - The type picker displays the most common feature types, such as parks, hospitals, - restaurants, roads, and buildings. You can search for anything by typing what you're - looking for in the search box. You can also click the {inspect} info icon next - to the feature type to learn more about it. - - fields: | - ### Fields - - The "All fields" section contains all of the feature's details that you - may edit. In OpenStreetMap, all of the fields are optional, and it's OK - to leave a field blank if you are unsure. - - Each feature type will display different fields. For example, a road - may display fields for its surface and speed limit, but a restaurant - may display fields for the type of food it serves and the hours it is open. - - You can also click the `Add field` dropdown to add more fields, such as - a description, Wikipedia link, wheelchair access, and more. - - tags: | - ### Tags - - Below the fields section, you can expand the "All tags" section to edit - any of the OpenStreetMap *tags* for the selected feature. Each tag - consists of a *key* and *value*, data elements that define all of - the features stored in OpenStreetMap. - - Editing a feature's tags requires intermediate knowledge about OpenStreetMap. - You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) - or [Taginfo](https://taginfo.openstreetmap.org/) to learn more - about accepted OpenStreetMap tagging practices. - + title: Feature Editor + intro: "The *feature editor* appears alongside the map, and allows you to see and edit all of the information for the selected feature." + definitions: "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address." + type_h: "### Feature Type" + type: "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from." + type_picker: "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it." + fields_h: "### Fields" + fields_all_fields: "The 'All fields' section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." + fields_example: "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open." + fields_add_field: "You can also click the 'Add field' dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more." + tags_h: "Tags" + tags_all_tags: "Below the fields section, you can expand the 'All tags' section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap." + tags_resources: "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." points: - intro: | - # Points - - *Points* can be used to represent features such as shops, restaurants, and - monuments. They mark a specific location, and describe what's there. - - add_point: | - ### Adding Points - - To add a point, click the {point} `Point` button on the toolbar - at the top of the map, or press the shortcut key `1`. This will - change the mouse cursor to a cross symbol. - - To place the new point on the map, position the mouse cursor where the point - should go, then `left-click` or press the `spacebar`. - - move_point: | - ### Moving Points - - To move a point, place the mouse cursor over the point, then press the left - mouse button and hold it down while dragging the point to its new location. - - delete_point: | - ### Deleting Points - - It's OK to delete features that don't exist in the real world. Deleting a feature - from OpenStreetMap removes it from the map that everyone uses, so you should make - sure a feature is really gone before you delete it. - - To delete a point, `right-click` on the point to select it and - show the edit menu, then use the {delete} `Delete` command. - You can also press the `delete` key on your keyboard. - + title: Points + intro: "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there." + add_point_h: "### Adding Points" + add_point: "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol." + add_point_finish: "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`." + move_point_h: "### Moving Points" + move_point: "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location." + delete_point_h: "### Deleting Points" + delete_point: "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it." + delete_point_command: "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." lines: - intro: | - # Lines - - *Lines* are used to represent features such as roads, railroads, and rivers. - Lines should be drawn down the center of the feature that they represent. - - add_line: | - ### Adding Lines - - To add a line, click the {line} `Line` button on the toolbar - at the top of the map, or press the shortcut key `2`. This will - change the mouse cursor to a cross symbol. - - Next, position the mouse cursor where the line should begin and `left-click` - or press the `spacebar` to begin placing nodes along the line. - Continue placing more nodes by `left-clicking` or pressing `spacebar`. - While drawing, you can zoom in or drag the map in order to add more detail. - - To finish a line, press `enter` or click on the last node again. - - modify_line: | - ### Modifying Lines - - Often you'll see lines that aren't shaped correctly, for example a road - that does not match up with the background imagery. To adjust the shape - of a line, first `left-click` to select it. All nodes of the line will be - drawn as small circles. You can then drag the nodes to better locations. - - You can also create new nodes along a line either by `double-clicking` on - the line or by dragging the small triangles at the midpoints between nodes. - - connect_line: | - ### Connecting Lines - - Having roads connected properly is important for the map - and essential for providing driving directions. - - The connections between roads are drawn with gray circles. - The endpoints of a line are drawn with larger white circles if they - don't connect to anything. - - To connect a line to another feature, drag one of the line's nodes onto - the other feature until both features snap together. - - If you know that the connection has traffic lights or crosswalks, - you can add them by selecting the connecting node and using the - feature editor to select the correct feature's type. - - disconnect_line: | - ### Disconnecting Lines - - To disconnect a road from another feature, `right-click` the connecting - node and select the {disconnect} `Disconnect` tool. - - move_line: | - ### Moving Lines - - To move an entire line, `right-click` the line and select the {move} - `Move` tool from the editing menu. Then move the mouse, and `left-click` - to place the line in a new location. - - Lines that are connected to other features will stay connected as you - move the line to a new location. iD may prevent you from moving a line - across another connected line. - - delete_line: | - ### Deleting Lines - - If a line is entirely incorrect, for example a road that doesn't exist - in the real world, it's OK to delete it. Be careful when deleting features: - the background imagery you are using might be outdated, and a road that - looks wrong could simply be newly built. - - To delete a line, `right-click` on the line to select it and - show the edit menu, then use the {delete} `Delete` command. - You can also press the `delete` key on your keyboard. - + title: Lines + intro: "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent." + add_line_h: "### Adding Lines" + add_line: "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol." + add_line_draw: "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." + add_line_finish: "To finish a line, press `enter` or click on the last node again." + modify_line_h: "### Modifying Lines" + modify_line_dragnode: "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations." + modify_line_addnode: "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes." + connect_line_h: "### Connecting Lines" + connect_line: "Having roads connected properly is important for the map and essential for providing driving directions." + connect_line_display: "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything." + connect_line_drag: "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together." + connect_line_tag: "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type." + disconnect_line_h: "### Disconnecting Lines" + disconnect_line_command: "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool." + move_line_h: "### Moving Lines" + move_line_command: "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location." + move_line_connected: "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line." + delete_line_h: "### Deleting Lines" + delete_line: "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built." + delete_line_command: "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." areas: - intro: | - # Areas - - *Areas* are used to show the boundaries of features like lakes, buildings, - and residential areas. Areas should be traced around the edge of the - feature that they represent, for example, around the base of a building. - - point_or_area: | - ### Points or Areas? - - Many features can be represented as points or areas. - You should map buildings and property outlines as areas whenever - possible. Place points inside a building area to represent businesses, - amenities, and other features located inside the building. - - add_area: | - ### Adding Areas - - To add an area, click the {area} `Area` button on the toolbar - at the top of the map, or press the shortcut key `3`. This will - change the mouse cursor to a cross symbol. - - Next, position the mouse cursor at one of the corners of the feature and `left-click` - or press the `spacebar` to begin placing nodes around the outer edge of - the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. - While drawing, you can zoom in or drag the map in order to add more detail. - - To finish an area, press `enter` or click again on either the first or last node. - - square_area: | - ### Square Corners - - Many area features like buildings have square corners. - To square the corners of an area, `right-click` the edge of the area - and select the {orthogonalize} `Square` tool. - - modify_area: | - ### Modifying Areas - - Often you'll see areas that aren't shaped correctly, for example a building - that does not match up with the background imagery. To adjust the shape - of an area, first `left-click` to select it. All nodes of the area will be - drawn as small circles. You can then drag the nodes to better locations. - - You can also create new nodes along an area either by `double-clicking` on - the edge of the area or by dragging the small triangles at the midpoints - between nodes. - - delete_area: | - ### Deleting Areas - - If an area is entirely incorrect, for example a building that doesn't exist - in the real world, it's OK to delete it. Be cautious when deleting features - - the background imagery you are using might be outdated, and a building that - looks wrong could simply be newly built. - - To delete an area, `right-click` on the area to select it and - show the edit menu, then use the {delete} `Delete` command. - You can also press the `delete` key on your keyboard. - + title: Areas + intro: "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the feature that they represent, for example, around the base of a building." + point_or_area_h: "### Points or Areas?" + point_or_area: "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building." + add_area_h: "### Adding Areas" + add_area_command: "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol." + add_area_draw: "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." + add_area_finish: "To finish an area, press `enter` or click again on either the first or last node." + square_area_h: "### Square Corners" + square_area_command: "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool." + modify_area_h: "### Modifying Areas" + modify_area_dragnode: "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations." + modify_area_addnode: "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes." + delete_area_h: "### Deleting Areas" + delete_area: "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built." + delete_area_command: "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." relations: - intro: | - # Relations - - A *relation* is a special type of feature in OpenStreetMap that groups - together other features. The features that belong to a relation are - called *members*, and each member can have a *role* in the relation. - - edit: | - ### Editing Relations - - At the bottom of the feature editor, you can expand the "All relations" - section to see if the selected feature is a member of any relations. - You can then click on the relation to select and edit it. - - To add a feature to a relation, select the feature, then click the {plus} - button in the "All relations" section of the feature editor. You can choose - from a list of nearby relations, or choose the "New relation..." option. - - You can also click the {delete} `Delete` button to remove the selected - feature from the relation. If you remove all of the members from a - relation, the relation will be deleted automatically. - - maintain: | - ### Maintaining - - For the most part, iD will maintainin relations automatically as you - edit. You should take care when replacing features that might be members - of relations. For example if you delete a section of road and draw a new - section of road to replace it, you should add the new section to the same - relations (routes, turn restrictions, etc.) as the original. - - types: | - ## Relation Types - - multipolygons: | - ### Multipolygons - - A *multipolygon* relation is a group of one or more *outer* features and - one or more inner features. The outer features define the outer edges - of the multipolygon, and the inner features define sub-areas or holes - cut out from the inside of the multipolygon. - - To create a multipolygon, for example a building with a hole in it, - draw the outer edge as an area and the inner edge as a line or different - kind of area. Then `shift-click` to select both features, `right-click` - to show the edit menu, and select the {merge} `Merge` tool. - - Merging several lines or areas will create a new multipolygon relation - with all selected areas as members. iD will choose the inner and outer roles - automatically, based on which features are contained inside other features. - - turn_restrictions: | - ### Turn restrictions - - A *turn restriction* relation is a group of several road segments in - an intersection. Turn restrictions consist of a *from* road, *via* - node or roads, and a *to* road. - - To edit turn restrictions, select a junction node where two or more roads - meet. The feature editor will display a special 'Turn Restrictions' field - containing a model of the intersection. - - In the "Turn Restrictions" field, click to select a "from" road, and - see whether turns are allowed or restricted to any of the "to" roads. - You can click on the turn icons to toggle them between allowed and restricted. - iD will create relations automatically and choose the from, via, and to roles - based on your choices. - - routes: | - ### Routes - - A *route* relation is a group of one or more line features that together - form a route network, like a bus route, train route, or highway route. - - To add a feature to a route relation, select the feature and scroll down - to the "All relations" section of the feature editor, then click the - {plus} plus to add this feature to a nearby existing relation or a new relation. - - boundaries: | - ### Boundaries - - A *boundary* relation is a group of one or more line features that together - form an administrative boundary. - - To add a feature to a boundary relation, select the feature and scroll down - to the "All relations" section of the feature editor, then click the - {plus} plus to add this feature to a nearby existing relation or a new relation. - + title: Relations + intro: "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation." + edit_relation_h: "### Editing Relations" + edit_relation: "At the bottom of the feature editor, you can expand the 'All relations' section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it." + edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} button in the 'All relations' section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." + edit_relation_delete: "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically." + maintain_relation_h: "### Maintaining Relations" + maintain_relation: "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original." + relation_types_h: "## Relation Types" + multipolygon_h: "### Multipolygons" + multipolygon: "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon." + multipolygon_create: "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool." + multipolygon_merge: "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features." + turn_restriction_h: "### Turn restrictions" + turn_restriction: "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road." + turn_restriction_field: "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special 'Turn Restrictions' field containing a model of the intersection." + turn_restriction_editing: "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices." + route_h: "### Routes" + route: "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route." + route_add: "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." + boundary_h: "### Boundaries" + boundary: "A *boundary* relation is a group of one or more line features that together form an administrative boundary." + boundary_add: "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." imagery: - intro: | - # Background Imagery - - The background imagery that appears beneath the map data is an important - resource for mapping. This imagery can be aerial photos collected from - satellites, airplanes, and drones, or it can be scanned historical maps - or other freely available source data. - - To see which imagery sources are available for editing, click the - {layers} `Background settings` button on the side of the map. - - sources: | - ### Sources - - By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is - chosen as the background image. Depending on where you are editing, other imagery - sources will be available. Some may be newer or have higher resolution, - so it is always useful to check and see which layer is the best one to use - as a mapping reference. - - offset: | - ### Offset - - Imagery is sometimes offset slightly from accurate map data. - - If you see a lot of roads or buildings shifted from the background - imagery, it may be the imagery that's incorrect, so don't move them all - to match the background. Instead, you can adjust the background so that - it matches the existing data by expanding the "Adjust Imagery Offset" - section at the bottom of the Background Settings pane. - - Click on the small triangles to adjust the imagery offset in small steps, - or hold the left mouse button and drag within the grey square to slide - the imagery into alignment. - + title: Background Imagery + intro: "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data." + choosing: "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map." + sources_h: "### Sources" + sources: "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference." + offsets_h: "### Offset" + offset: "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane." + offset_change: "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." streetlevel: - intro: | - # Street Level Photos - - Street level photos provide a ground-truth prespective of an area, useful - for mapping traffic signs, businesses, and other details that you can't - see from satellite and aerial images. The iD editor supports street level - photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org). - - using: | - ### Using - - To use street level photos for mapping, click the {data} `Map data` panel on the - side of the map to enable or disable the available photo layers. - - When enabled, the photo layer displays a line along the sequence of - photos. At higher zoom levels, a circle marks at each photo location, - and at even higher zoom levels, a cone indicates the direction the - camera was facing when the photo was taken. - - viewer: | - - When you click on one of the photo locations, a photo viewer appears in - the bottom corner of the map. The photo viewer contains controls to step - forward and backward in the image sequence. It also shows the username - of the person who captured the image, the date it was captured, and a - link to view the image on the original site. - + title: Street Level Photos + intro: "Street level photos provide a ground-truth prespective of an area, useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org)." + using_h: "### Using" + using: "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers." + photos: "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken." + viewer: "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." gps: - intro: | - # GPS Traces - - Collected GPS traces are a valuable source of data for OpenStreetMap. This editor - supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect - GPS traces with a smartphone, sports watch, or other GPS device. - - For information on how to perform a GPS survey, read - [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/). - - using: | - ### Using - - To use a GPS trace for mapping, drag and drop the data file onto the map - editor. If it's recognized, it will be drawn on the map as a bright purple - line. Click the {data} `Map data` panel on the side of the map to enable, - disable, or zoom to your GPS data. - - The GPS track isn't sent to OpenStreetMap - the best way to use it is to - draw on the map, using it as a guide for the new features that you add. - - You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) - for other users to use. - + title: GPS Traces + intro: "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device." + survey: "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/)." + using_h: "### Using" + using: "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data." + tracing: "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add." + upload: "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." intro: done: done ok: OK diff --git a/dist/locales/en.json b/dist/locales/en.json index d5c366357..e593d61fe 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -681,77 +681,165 @@ "title": "Help", "key": "H", "help": { - "intro": "# Help\n\nWelcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/).\nWith this editor you can update OpenStreetMap right from your web browser.\n", - "open_data": "### Open Data\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying,\nor imagery collected from aerial or street level photos. Copying from commercial\nsources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).\n", - "before_start": "### Before you start\n\nYou should be familiar with OpenStreetMap and this editor before you start editing.\niD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap.\nClick \"Start the Walkthrough\" on this screen to take the tutorial - it takes only\nabout 15 minutes.\n", - "open_source": "### Open Source\n\nThe iD editor is a collaborative open source project, and you are using version {version} now.\nThe source code is available [on GitHub](https://github.com/openstreetmap/iD).\n\nYou can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating)\nor [reporting bugs](https://github.com/openstreetmap/iD/issues).\n" + "title": "Help", + "welcome": "Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser.", + "open_data_h": "### Open Data", + "open_data": "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).", + "before_start_h": "### Before you start", + "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click 'Start the Walkthrough' on this screen to take the tutorial - it takes only about 15 minutes.", + "open_source_h": "### Open Source", + "open_source": "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD).", + "open_source_help": "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." }, "overview": { - "intro": "# Overview\n", - "navigation": "### Navigation\n\nYou can drag the map by pressing and holding the left mouse button while\nmoving the mouse around. You can also use the arrow keys on your keyboard.\n\nYou can zoom in or out by scrolling with the mouse wheel or trackpad,\nor by clicking the {plus} / {minus} buttons along the side of the map.\n", - "features": "### Map Features\n\nWe use the word *features* to describe things that appear on the map,\nsuch as roads, buildings, or points of interest. Anything in the real\nworld can be mapped as a feature on OpenStreetMap. Map features are\nrepresented on the map using *points*, *lines*, or *areas*.\n\nIn OpenStreetmap, points are sometimes called *nodes*, and lines and areas\nare sometimes called *ways*.\n" + "title": "Overview", + "navigation_h": "### Navigation", + "navigation_drag": "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard.", + "navigation_zoom": "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map.", + "features_h": "### Map Features", + "features": "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*.", + "nodes_ways": "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." }, "editing": { - "intro": "# Editing & Saving\n\n`Left-click` on a feature to select it. This will highlight the\nfeature with a pusling glow, and the sidebar will display details\nabout that feature, such as it's name or address.\n\n`Right-click` on a map feature to display the editing menu, which shows\nthe commands that are available, such as rotating, moving, and deleting.\n", - "multiselect": "### Multiselect\n\n`Shift-click` to select several features together. This makes\nit easier to move or delete multiple items.\n\nAnother way to select multiple features is to hold down the `Shift` key,\nthen press and hold the left mouse button, and drag the mouse to draw a\nselection lasso. All of the points inside the lasso area will be selected.\n", - "undo_redo": "### Undo & Redo\n\nWhen you make changes to the map, these are stored locally until you save\nthem to the server. Don't worry if you make a mistake - until the edits are\nsaved, you can undo changes by clicking the {undo} `Undo` button, and redo\nchanges by clicking the {redo} `Redo` button.\n", - "save": "### Save\n\nClick {save} `Save` to finish your edits and send them to OpenStreetMap.\nYou should remember to save your work frequently!\n\nOn the save screen, you'll have a chance to review what you've done.\niD will also perform some basic checks for missing data and may offer\nhelpful suggestions and warnings if something doesn't seem right.\n", - "upload": "### Upload\n\nBefore uploading your changes you must enter a\n[changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments).\nThen click `Upload` to send your changes to OpenStreetMap, where they will be\nmerged into the map and publicly visible to everyone.\n", - "backups": "### Automatic Backups\n\nIf you can't finish your edits in one sitting, for example if your computer\ncrashes or you close the browser tab, your edits are still saved locally\nin your browser's storage. You can come back later (on the same browser\nand computer), and iD will offer to restore your work.\n", - "keyboard": "### Keyboard Shortcuts\n\nYou can view a list of keyboard shortcuts by pressing the `?` key.\n" + "title": "Editing & Saving", + "select_h": "### Select", + "select_left_click": "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address.", + "select_right_click": "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting.", + "multiselect_h": "### Multiselect", + "multiselect_shift_click": "`Shift-click` to select several features together. This makes it easier to move or delete multiple items.", + "multiselect_lasso": "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected.", + "undo_redo_h": "### Undo & Redo", + "undo_redo": "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button.", + "save_h": "### Save", + "save": "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!", + "save_validation": "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right.", + "upload_h": "### Upload", + "upload": "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone.", + "backups_h": "### Automatic Backups", + "backups": "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work.", + "keyboard_h": "### Keyboard Shortcuts", + "keyboard": "You can view a list of keyboard shortcuts by pressing the `?` key." }, "feature_editor": { - "intro": "# Feature Editor\n\nThe *feature editor* appears alongside the map, and allows you to see\nand edit all of the information for the selected feature.\n\nThe top section displays the feature's type. The middle section\ncontains *fields* showing the feature's attributes, such as its name or address.\n", - "select": "### Feature Type\n\nYou can click on the feature type to change the feature to a different type.\nEverything that exists in the real world can be added to OpenStreetMap, so there\nare thousands of feature types to choose from.\n\nThe type picker displays the most common feature types - such as parks, hospitals,\nrestaurants, roads, and buildings. You can search for anything by typing what you're\nlooking for in the search box. You can also click the {inspect} info icon next\nto the feature type to learn more about it.\n", - "fields": "### Fields\n\nThe \"All fields\" section contains all of the feature's details that you\nmay edit. In OpenStreetMap, all of the fields are optional, and it's OK\nto leave a field blank if you are unsure.\n\nEach feature type will display different fields. For example, a road\nmay display fields for its surface and speed limit, but a restaurant\nmay display fields for the type of food it serves and the hours it is open.\n\nYou can also click the `Add field` dropdown to add more fields, such as\na description, Wikipedia link, wheelchair access, and more.\n", - "tags": "### Tags\n\nBelow the fields section, you can expand the \"All tags\" section to edit\nany of the OpenStreetMap *tags* for the selected feature. Each tag\nconsists of a *key* and *value*, data elements that define all of\nthe features stored in OpenStreetMap.\n\nEditing a feature's tags requires intermediate knowledge about OpenStreetMap.\nYou should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page)\nor [Taginfo](https://taginfo.openstreetmap.org/) to learn more\nabout accepted OpenStreetMap tagging practices.\n" + "title": "Feature Editor", + "intro": "The *feature editor* appears alongside the map, and allows you to see and edit all of the information for the selected feature.", + "definitions": "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address.", + "type_h": "### Feature Type", + "type": "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from.", + "type_picker": "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it.", + "fields_h": "### Fields", + "fields_all_fields": "The 'All fields' section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure.", + "fields_example": "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open.", + "fields_add_field": "You can also click the 'Add field' dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more.", + "tags_h": "Tags", + "tags_all_tags": "Below the fields section, you can expand the 'All tags' section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap.", + "tags_resources": "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." }, "points": { - "intro": "# Points\n\n*Points* can be used to represent features such as shops, restaurants, and\nmonuments. They mark a specific location, and describe what's there.\n", - "add_point": "### Adding Points\n\nTo add a point, click the {point} `Point` button on the toolbar\nat the top of the map, or press the shortcut key `1`. This will\nchange the mouse cursor to a cross symbol.\n\nTo place the new point on the map, position the mouse cursor where the point\nshould go, then `left-click` or press the `spacebar`.\n", - "move_point": "### Moving Points\n\nTo move a point, place the mouse cursor over the point, then press the left\nmouse button and hold it down while dragging the point to its new location.\n", - "delete_point": "### Deleting Points\n\nIt's OK to delete features that don't exist in the real world. Deleting a feature\nfrom OpenStreetMap removes it from the map that everyone uses, so you should make\nsure a feature is really gone before you delete it.\n\nTo delete a point, `right-click` on the point to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" + "title": "Points", + "intro": "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there.", + "add_point_h": "### Adding Points", + "add_point": "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol.", + "add_point_finish": "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`.", + "move_point_h": "### Moving Points", + "move_point": "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location.", + "delete_point_h": "### Deleting Points", + "delete_point": "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it.", + "delete_point_command": "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "lines": { - "intro": "# Lines\n\n*Lines* are used to represent features such as roads, railroads, and rivers.\nLines should be drawn down the center of the feature that they represent.\n", - "add_line": "### Adding Lines\n\nTo add a line, click the {line} `Line` button on the toolbar\nat the top of the map, or press the shortcut key `2`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor where the line should begin and `left-click`\nor press the `spacebar` to begin placing nodes along the line.\nContinue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish a line, press `enter` or click on the last node again.\n", - "modify_line": "### Modifying Lines\n\nOften you'll see lines that aren't shaped correctly, for example a road\nthat does not match up with the background imagery. To adjust the shape\nof a line, first `left-click` to select it. All nodes of the line will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along a line either by `double-clicking` on\nthe line or by dragging the small triangles at the midpoints between nodes.\n", - "connect_line": "### Connecting Lines\n\nHaving roads connected properly is important for the map\nand essential for providing driving directions.\n\nThe connections between roads are drawn with grey circles.\nThe endpoints of a line are drawn with larger white circles if they\ndon't connect to anything.\n\nTo connect a line to another feature, drag one of its nodes onto the\nother feature to connect them.\n\nIf you know that the connection has traffic lights or crosswalks,\nyou can add them by selecting the connecting node and using the\nfeature editor to select the correct feature's type.\n", - "disconnect_line": "### Disconnecting Lines\n\nTo disconnect a road from another feature, `right-click` the connecting\nnode and select the {disconnect} `Disconnect` tool.\n", - "move_line": "### Moving Lines\n\nTo move an entire line, `right-click` the line and select the {move}\n`Move` tool from the editing menu. Then move the mouse, and `left-click`\nto place the line in a new location.\n\nLines that are connected to other features will stay connected as you\nmove the line to a new location. iD may prevent you from moving a line\nacross another connected line.\n", - "delete_line": "### Deleting Lines\n\nIf a line is entirely incorrect, for example a road that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a road that\nlooks wrong could simply be newly built.\n\nTo delete a line, `right-click` on the line to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" + "title": "Lines", + "intro": "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent.", + "add_line_h": "### Adding Lines", + "add_line": "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol.", + "add_line_draw": "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", + "add_line_finish": "To finish a line, press `enter` or click on the last node again.", + "modify_line_h": "### Modifying Lines", + "modify_line_dragnode": "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations.", + "modify_line_addnode": "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes.", + "connect_line_h": "### Connecting Lines", + "connect_line": "Having roads connected properly is important for the map and essential for providing driving directions.", + "connect_line_display": "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything.", + "connect_line_drag": "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together.", + "connect_line_tag": "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type.", + "disconnect_line_h": "### Disconnecting Lines", + "disconnect_line_command": "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool.", + "move_line_h": "### Moving Lines", + "move_line_command": "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location.", + "move_line_connected": "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line.", + "delete_line_h": "### Deleting Lines", + "delete_line": "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built.", + "delete_line_command": "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "areas": { - "intro": "# Areas\n\n*Areas* are used to show the boundaries of features like lakes, buildings,\nand residential areas. Areas should be traced around the edge of the\nfeature that they represent, for example, around the base of a building.\n", - "point_or_area": "### Points or Areas?\n\nMany features can be represented as points or areas.\nIt is recommended to map buildings and property outlines as areas\nwhenever possible, and to map businesses, amenities, and other features\nthat operate within buildings as points placed inside the building area.\n", - "add_area": "### Adding Areas\n\nTo add an area, click the {area} `Area` button on the toolbar\nat the top of the map, or press the shortcut key `3`. This will\nchange the mouse cursor to a cross symbol.\n\nNext, position the mouse cursor at one of the corners of the feature and `left-click`\nor press the `spacebar` to begin placing nodes around the outer edge of\nthe area. Continue placing more nodes by `left-clicking` or pressing `spacebar`.\nWhile drawing, you can zoom in or drag the map in order to add more detail.\n\nTo finish an area, press `enter` or click again on either the first or last node.\n", - "square_area": "### Square Corners\n\nMany area features like buildings have square corners.\nTo square the corners of an area, `right-click` the edge of the area\nand select the {square} `Square` tool.\n", - "modify_area": "### Modifying Areas\n\nOften you'll see areas that aren't shaped correctly, for example a building\nthat does not match up with the background imagery. To adjust the shape\nof an area, first `left-click` to select it. All nodes of the area will be\ndrawn as small circles. You can then drag the nodes to better locations.\n\nYou can also create new nodes along an area either by `double-clicking` on\nthe edge of the area or by dragging the small triangles at the midpoints\nbetween nodes.\n", - "delete_area": "### Deleting Areas\n\nIf an area is entirely incorrect, for example a building that doesn't exist\nin the real world, it's OK to delete it. Be cautious when deleting features -\nthe background imagery you are using might be outdated, and a building that\nlooks wrong could simply be newly built.\n\nTo delete an area, `right-click` on the area to select it and\nshow the edit menu, then use the {delete} `Delete` command.\nYou can also press the `delete` key on your keyboard.\n" + "title": "Areas", + "intro": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the feature that they represent, for example, around the base of a building.", + "point_or_area_h": "### Points or Areas?", + "point_or_area": "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building.", + "add_area_h": "### Adding Areas", + "add_area_command": "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol.", + "add_area_draw": "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", + "add_area_finish": "To finish an area, press `enter` or click again on either the first or last node.", + "square_area_h": "### Square Corners", + "square_area_command": "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool.", + "modify_area_h": "### Modifying Areas", + "modify_area_dragnode": "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations.", + "modify_area_addnode": "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes.", + "delete_area_h": "### Deleting Areas", + "delete_area": "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built.", + "delete_area_command": "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "relations": { - "intro": "# Relations\n\nA *relation* is a special type of feature in OpenStreetMap that groups\ntogether other features. The features that belong to a relation are\ncalled *members*, and each member can have a *role* in the relation.\n", - "edit": "### Editing Relations\n\nAt the bottom of the feature editor, you can expand the \"All relations\"\nsection to see if the selected feature is a member of any relations.\nYou can then click on the relation to select and edit it.\n\nTo add a feature to a relation, select the feature, then click the {plus}\nbutton in the \"All relations\" section of the feature editor. You can choose\nfrom a list of nearby relations, or choose the 'New relation...' option.\n\nYou can also click the {delete} `Delete` button to remove the selected\nfeature from the relation. If you remove all of the members from a\nrelation, the relation will be deleted automatically.\n", - "maintain": "### Maintaining\n\nFor the most part, iD will maintainin relations automatically as you\nedit. You should take care when replacing features that might be members\nof relations. For example if you delete a section of road and draw a new\nsection of road to replace it, you should add the new section to the same\nrelations (routes, turn restrictions, etc.) as the original.\n", - "types": "## Relation Types\n", - "multipolygons": "### Multipolygons\n\nA *multipolygon* relation is a group of one or more *outer* features and\none or more inner features. The outer features define the outer edges\nof the multipolygon, and the inner features define sub-areas or holes\ncut out from the inside of the multipolygon.\n\nTo create a multipolygon, for example a building with a hole in it,\ndraw the outer edge as an area and the inner edge as a line or different\nkind of area. Then `shift-click` to select both features, `right-click`\nto show the edit menu, and select the {merge} `Merge` tool.\n\nMerging several lines or areas will create a new multipolygon relation\nwith all selected areas as members. iD will choose the inner and outer roles\nautomatically, based on which features are contained inside other features.\n", - "turn_restrictions": "### Turn restrictions\n\nA *turn restriction* relation is a group of several road segments in\nan intersection. Turn restrictions consist of a *from* road, *via*\nnode or roads, and a *to* road.\n\nTo edit turn restrictions, select a junction node where two or more roads\nmeet. The feature editor will display a special 'Turn Restrictions' field\ncontaining a model of the intersection.\n\nIn the 'Turn Restrictions' field, click to select a \"from\" road, and\nsee whether turns are allowed or restricted to any of the \"to\" roads.\nYou can click on the turn icons to toggle them between allowed and restricted.\niD will create relations automatically and choose the from, via, and to roles\nbased on your choices.\n", - "routes": "### Routes\n\nA *route* relation is a group of one or more line features that together\nform a route network, like a bus route, train route, or highway route.\n\nTo add a feature to a route relation, select the feature and scroll down\nto the \"All relations\" section of the feature editor, then click the\n{plus} plus to add this feature to a nearby existing relation or a new relation.\n", - "boundaries": "### Boundaries\n\nA *boundary* relation is a group of one or more line features that together\nform an administrative boundary.\n\nTo add a feature to a boundary relation, select the feature and scroll down\nto the \"All relations\" section of the feature editor, then click the\n{plus} plus to add this feature to a nearby existing relation or a new relation.\n" + "title": "Relations", + "intro": "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation.", + "edit_relation_h": "### Editing Relations", + "edit_relation": "At the bottom of the feature editor, you can expand the 'All relations' section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it.", + "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} button in the 'All relations' section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", + "edit_relation_delete": "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically.", + "maintain_relation_h": "### Maintaining Relations", + "maintain_relation": "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original.", + "relation_types_h": "## Relation Types", + "multipolygon_h": "### Multipolygons", + "multipolygon": "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon.", + "multipolygon_create": "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool.", + "multipolygon_merge": "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features.", + "turn_restriction_h": "### Turn restrictions", + "turn_restriction": "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road.", + "turn_restriction_field": "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special 'Turn Restrictions' field containing a model of the intersection.", + "turn_restriction_editing": "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices.", + "route_h": "### Routes", + "route": "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route.", + "route_add": "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation.", + "boundary_h": "### Boundaries", + "boundary": "A *boundary* relation is a group of one or more line features that together form an administrative boundary.", + "boundary_add": "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." }, "imagery": { - "intro": "# Background Imagery\n\nBackground imagery is an important resource for mapping, and is displayed\nbeneath the map data. This imagery can be aerial photos collected\nfrom satellites, airplanes, and drones, or it can be scanned historical\nmaps or other freely available source data.\n\nTo see which imagery sources are available for editing, click the\n{layers} `Background settings` button on the side of the map.\n", - "sources": "### Sources\n\nBy default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is\nchosen as the background image. Depending on where you are editing, other imagery\nsources will be available. Some may be newer or have higher resolution,\nso it is always useful to check and see which layer is the best one to use\nas a mapping reference.\n", - "offset": "### Offset\n\nImagery is sometimes offset slightly from accurate map data.\n\nIf you see a lot of roads or buildings shifted from the background imagery,\ndon't move them all to match the background. Instead, you can adjust\nthe background so that it matches the existing data by expanding the\n'Adjust Imagery Offset' section at the bottom of the Background Settings pane.\n\nClick on the small triangles to adjust the imagery offset in small steps,\nor hold the left mouse botton and drag within the grey square to slide\nthe imagery into alignment.\n" + "title": "Background Imagery", + "intro": "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data.", + "choosing": "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map.", + "sources_h": "### Sources", + "sources": "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference.", + "offsets_h": "### Offset", + "offset": "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane.", + "offset_change": "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." }, "streetlevel": { - "intro": "# Street Level Photos\n\nStreet level photos provide a ground-truth prespective of an area, useful\nfor mapping traffic signs, businesses, and other details that you can't\nsee from satellite and aerial images. The iD editor supports street level\nphotos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).\n", - "using": "### Using\n\nTo use street level photos for mapping, click the {data} `Map data` panel on the\nside of the map to enable or disable the available photo layers.\n\nWhen enabled, the photo layer will display a line along the sequence of photos.\nAt higher zooms you will see a circle at each photo location, and at even higher\nzooms you will see a viewfield to indicate the direction that the photo was taken.\n", - "viewer": "\nWhen you click on one of the photo locations, a photo viewer will appear in the\nbottom corner of the map. The photo viewer contains controls to step forward and\nbackward in the image sequence. It will also show the username of the person who\ncaptured the image, the date it was captured, and a link to view the image on\nthe original site.\n" + "title": "Street Level Photos", + "intro": "Street level photos provide a ground-truth prespective of an area, useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).", + "using_h": "### Using", + "using": "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers.", + "photos": "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken.", + "viewer": "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." }, "gps": { - "intro": "# GPS Traces\n\nCollected GPS traces are a valuable source of data for OpenStreetMap. This editor\nsupports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect\nGPS traces with a smartphone, sports watch, or other GPS device.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n", - "using": "### Using\n\nTo use a GPS trace for mapping, drag and drop the data file onto the map\neditor. If it's recognized, it will be drawn on the map as a bright purple\nline. Click the {data} `Map data` panel on the side of the map to enable,\ndisable, or zoom to your GPS data.\n\nThe GPS track isn't sent to OpenStreetMap - the best way to use it is to\ndraw on the map, using it as a guide for the new features that you add.\n\nYou can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create)\nfor other users to use.\n" + "title": "GPS Traces", + "intro": "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device.", + "survey": "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).", + "using_h": "### Using", + "using": "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data.", + "tracing": "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add.", + "upload": "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." } }, "intro": { diff --git a/modules/ui/help.js b/modules/ui/help.js index df739078a..5693dce32 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -19,79 +19,222 @@ export function uiHelp(context) { var key = t('help.key'); var docKeys = [ - ['help.help.',['intro','open_data','before_start','open_source']], - ['help.overview.',['intro','features','navigation']], - ['help.editing.',['intro','multiselect','undo_redo','save','upload','backups','keyboard']], - ['help.feature_editor.',['intro','select','fields','tags']], - ['help.points.',['intro','add_point','move_point','delete_point']], - ['help.lines.',['intro','add_line','modify_line','connect_line','disconnect_line','move_line','delete_line']], - ['help.areas.',['intro','point_or_area','add_area','square_area','modify_area','delete_area']], - ['help.relations.',['intro','edit','maintain','types','multipolygons','turn_restrictions','routes','boundaries']], - ['help.imagery.',['intro','sources','offset']], - ['help.streetlevel.',['intro','using','viewer']], - ['help.gps.',['intro','using']] + ['help', [ + 'welcome', + 'open_data_h', + 'open_data', + 'before_start_h', + 'before_start', + 'open_source_h', + 'open_source', + 'open_source_help' + ]], + ['overview', [ + 'navigation_h', + 'navigation_drag', + 'navigation_zoom', + 'features_h', + 'features', + 'nodes_ways' + ]], + ['editing', [ + 'select_h', + 'select_left_click', + 'select_right_click', + 'multiselect_h', + 'multiselect_shift_click', + 'multiselect_lasso', + 'undo_redo_h', + 'undo_redo', + 'save_h', + 'save', + 'save_validation', + 'upload_h', + 'upload', + 'backups_h', + 'backups', + 'keyboard_h', + 'keyboard' + ]], + ['feature_editor', [ + 'intro', + 'definitions', + 'type_h', + 'type', + 'type_picker', + 'fields_h', + 'fields_all_fields', + 'fields_example', + 'fields_add_field', + 'tags_h', + 'tags_all_tags', + 'tags_resources' + ]], + ['points', [ + 'intro', + 'add_point_h', + 'add_point', + 'add_point_finish', + 'move_point_h', + 'move_point', + 'delete_point_h', + 'delete_point', + 'delete_point_command' + ]], + ['lines', [ + 'intro', + 'add_line_h', + 'add_line', + 'add_line_draw', + 'add_line_finish', + 'modify_line_h', + 'modify_line_dragnode', + 'modify_line_addnode', + 'connect_line_h', + 'connect_line', + 'connect_line_display', + 'connect_line_drag', + 'connect_line_tag', + 'disconnect_line_h', + 'disconnect_line_command', + 'move_line_h', + 'move_line_command', + 'move_line_connected', + 'delete_line_h', + 'delete_line', + 'delete_line_command' + ]], + ['areas', [ + 'intro', + 'point_or_area_h', + 'point_or_area', + 'add_area_h', + 'add_area_command', + 'add_area_draw', + 'add_area_finish', + 'square_area_h', + 'square_area_command', + 'modify_area_h', + 'modify_area_dragnode', + 'modify_area_addnode', + 'delete_area_h', + 'delete_area', + 'delete_area_command' + ]], + ['relations', [ + 'intro', + 'edit_relation_h', + 'edit_relation', + 'edit_relation_add', + 'edit_relation_delete', + 'maintain_relation_h', + 'maintain_relation', + 'relation_types_h', + 'multipolygon_h', + 'multipolygon', + 'multipolygon_create', + 'multipolygon_merge', + 'turn_restriction_h', + 'turn_restriction', + 'turn_restriction_field', + 'turn_restriction_editing', + 'route_h', + 'route', + 'route_add', + 'boundary_h', + 'boundary', + 'boundary_add' + ]], + ['imagery', [ + 'intro', + 'choosing', + 'sources_h', + 'sources', + 'offsets_h', + 'offset', + 'offset_change' + ]], + ['streetlevel', [ + 'intro', + 'using_h', + 'using', + 'photos', + 'viewer' + ]], + ['gps', [ + 'intro', + 'survey', + 'using_h', + 'using', + 'tracing', + 'upload' + ]] ]; var replacements = { - more: icon('#icon-more'), - apply: icon('#icon-apply'), - alert: icon('#icon-alert'), - avatar: icon('#icon-avatar'), - forward: icon('#icon-forward'), - backward: icon('#icon-backward'), - fullscreen: icon('#icon-full-screen'), - collapsescreen: icon('#icon-collapse-screen'), - geolocate: icon('#icon-geolocate'), - load: icon('#icon-load'), - search: icon('#icon-search'), - bug: icon('#icon-bug'), - point: icon('#icon-point'), - line: icon('#icon-line'), - area: icon('#icon-area'), - help: icon('#icon-help'), - plus: icon('#icon-plus'), - minus: icon('#icon-minus'), - nearby: icon('#icon-nearby'), - outlink: icon('#icon-out-link'), - relation: icon('#icon-relation'), - translate: icon('#icon-translate'), - circularize: icon('#operation-circularize'), - orthogonalize: icon('#operation-orthogonalize'), - split: icon('#operation-split'), - reflect_long: icon('#operation-reflect-long'), - reflect_short: icon('#operation-reflect-short'), - simplify: icon('#operation-simplify'), - smooth: icon('#operation-smooth'), - straighten: icon('#operation-straighten'), - rotate: icon('#operation-rotate'), - reverse: icon('#operation-reverse'), - continue: icon('#operation-continue'), - disconnect: icon('#operation-disconnect'), - layers: icon('#icon-layers'), - vertex: icon('#icon-vertex'), - data: icon('#icon-data'), - down: icon('#icon-down'), - up: icon('#icon-up'), - inspect: icon('#icon-inspect'), - move: icon('#operation-move'), - merge: icon('#operation-merge'), - copy: icon('#operation-copy'), - paste: icon('#operation-paste'), - delete: icon('#operation-delete'), - close: icon('#icon-close'), - undo: icon(textDirection === 'rtl' ? '#icon-redo' : '#icon-undo'), - redo: icon(textDirection === 'rtl' ? '#icon-undo' : '#icon-redo'), - save: icon('#icon-save'), + more: icon('#icon-more', 'pre-text'), + apply: icon('#icon-apply', 'pre-text'), + alert: icon('#icon-alert', 'pre-text'), + avatar: icon('#icon-avatar', 'pre-text'), + forward: icon('#icon-forward', 'pre-text'), + backward: icon('#icon-backward', 'pre-text'), + fullscreen: icon('#icon-full-screen', 'pre-text'), + collapsescreen: icon('#icon-collapse-screen', 'pre-text'), + geolocate: icon('#icon-geolocate', 'pre-text'), + load: icon('#icon-load', 'pre-text'), + search: icon('#icon-search', 'pre-text'), + bug: icon('#icon-bug', 'pre-text'), + point: icon('#icon-point', 'pre-text'), + line: icon('#icon-line', 'pre-text'), + area: icon('#icon-area', 'pre-text'), + help: icon('#icon-help', 'pre-text'), + plus: icon('#icon-plus', 'pre-text'), + minus: icon('#icon-minus', 'pre-text'), + nearby: icon('#icon-nearby', 'pre-text'), + outlink: icon('#icon-out-link', 'pre-text'), + relation: icon('#icon-relation', 'pre-text'), + translate: icon('#icon-translate', 'pre-text'), + circularize: icon('#operation-circularize', 'pre-text'), + orthogonalize: icon('#operation-orthogonalize', 'pre-text'), + split: icon('#operation-split', 'pre-text'), + reflect_long: icon('#operation-reflect-long', 'pre-text'), + reflect_short: icon('#operation-reflect-short', 'pre-text'), + simplify: icon('#operation-simplify', 'pre-text'), + smooth: icon('#operation-smooth', 'pre-text'), + straighten: icon('#operation-straighten', 'pre-text'), + rotate: icon('#operation-rotate', 'pre-text'), + reverse: icon('#operation-reverse', 'pre-text'), + continue: icon('#operation-continue', 'pre-text'), + disconnect: icon('#operation-disconnect', 'pre-text'), + layers: icon('#icon-layers', 'pre-text'), + vertex: icon('#icon-vertex', 'pre-text'), + data: icon('#icon-data', 'pre-text'), + down: icon('#icon-down', 'pre-text'), + up: icon('#icon-up', 'pre-text'), + inspect: icon('#icon-inspect', 'pre-text'), + move: icon('#operation-move', 'pre-text'), + merge: icon('#operation-merge', 'pre-text'), + copy: icon('#operation-copy', 'pre-text'), + paste: icon('#operation-paste', 'pre-text'), + delete: icon('#operation-delete', 'pre-text'), + close: icon('#icon-close', 'pre-text'), + undo: icon(textDirection === 'rtl' ? '#icon-redo' : '#icon-undo', 'pre-text'), + redo: icon(textDirection === 'rtl' ? '#icon-undo' : '#icon-redo', 'pre-text'), + save: icon('#icon-save', 'pre-text'), version: context.version }; + // For each section, squash all the texts into a single markdown document var docs = docKeys.map(function(key) { + var tkey = 'help.' + key[0]; + var title = t(tkey + '.title'); var text = key[1].reduce(function(all, part) { - return all + t(key[0].concat(part), replacements); + return all + t(tkey + '.' + part, replacements) + '\n\n'; }, ''); + return { - title: text.split('\n')[0].replace('#', '').trim(), - html: marked(text.split('\n').slice(1).join('\n')) + title: title, + html: marked(text.trim()) }; }); From d88300e28ead4d7ca9790b0a8a6e3f7b4110cfeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Wed, 22 Nov 2017 15:24:32 -0800 Subject: [PATCH 109/159] Double quotation marks --- data/core.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index d2a6a9edd..d751fb6ad 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -560,7 +560,7 @@ en: open_data_h: "### Open Data" open_data: "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright)." before_start_h: "### Before you start" - before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click 'Start the Walkthrough' on this screen to take the tutorial - it takes only about 15 minutes." + before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes." open_source_h: "### Open Source" open_source: "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD)." open_source_help: "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." @@ -599,11 +599,11 @@ en: type: "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from." type_picker: "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it." fields_h: "### Fields" - fields_all_fields: "The 'All fields' section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." + fields_all_fields: "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." fields_example: "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open." - fields_add_field: "You can also click the 'Add field' dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more." + fields_add_field: "You can also click the \"Add field\" dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more." tags_h: "Tags" - tags_all_tags: "Below the fields section, you can expand the 'All tags' section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap." + tags_all_tags: "Below the fields section, you can expand the \"All tags\" section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap." tags_resources: "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." points: title: Points @@ -660,8 +660,8 @@ en: title: Relations intro: "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation." edit_relation_h: "### Editing Relations" - edit_relation: "At the bottom of the feature editor, you can expand the 'All relations' section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it." - edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} button in the 'All relations' section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." + edit_relation: "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it." + edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." edit_relation_delete: "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically." maintain_relation_h: "### Maintaining Relations" maintain_relation: "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original." @@ -672,7 +672,7 @@ en: multipolygon_merge: "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features." turn_restriction_h: "### Turn restrictions" turn_restriction: "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road." - turn_restriction_field: "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special 'Turn Restrictions' field containing a model of the intersection." + turn_restriction_field: "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection." turn_restriction_editing: "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices." route_h: "### Routes" route: "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route." From 70fb1432eafb9e902cb919f140cf0062bb3b1cbf Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 21:27:24 -0500 Subject: [PATCH 110/159] Remove the unused icons from the replacements object --- data/core.yaml | 4 ++-- dist/locales/en.json | 18 +++++++++--------- modules/ui/help.js | 32 -------------------------------- 3 files changed, 11 insertions(+), 43 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index d751fb6ad..dbe053fea 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -602,7 +602,7 @@ en: fields_all_fields: "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." fields_example: "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open." fields_add_field: "You can also click the \"Add field\" dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more." - tags_h: "Tags" + tags_h: "### Tags" tags_all_tags: "Below the fields section, you can expand the \"All tags\" section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap." tags_resources: "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." points: @@ -691,7 +691,7 @@ en: offset_change: "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." streetlevel: title: Street Level Photos - intro: "Street level photos provide a ground-truth prespective of an area, useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org)." + intro: "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org)." using_h: "### Using" using: "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers." photos: "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken." diff --git a/dist/locales/en.json b/dist/locales/en.json index e593d61fe..24acf1931 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -686,7 +686,7 @@ "open_data_h": "### Open Data", "open_data": "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).", "before_start_h": "### Before you start", - "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click 'Start the Walkthrough' on this screen to take the tutorial - it takes only about 15 minutes.", + "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes.", "open_source_h": "### Open Source", "open_source": "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD).", "open_source_help": "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." @@ -728,11 +728,11 @@ "type": "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from.", "type_picker": "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it.", "fields_h": "### Fields", - "fields_all_fields": "The 'All fields' section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure.", + "fields_all_fields": "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure.", "fields_example": "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open.", - "fields_add_field": "You can also click the 'Add field' dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more.", - "tags_h": "Tags", - "tags_all_tags": "Below the fields section, you can expand the 'All tags' section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap.", + "fields_add_field": "You can also click the \"Add field\" dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more.", + "tags_h": "### Tags", + "tags_all_tags": "Below the fields section, you can expand the \"All tags\" section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap.", "tags_resources": "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." }, "points": { @@ -793,8 +793,8 @@ "title": "Relations", "intro": "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation.", "edit_relation_h": "### Editing Relations", - "edit_relation": "At the bottom of the feature editor, you can expand the 'All relations' section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it.", - "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} button in the 'All relations' section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", + "edit_relation": "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it.", + "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", "edit_relation_delete": "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically.", "maintain_relation_h": "### Maintaining Relations", "maintain_relation": "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original.", @@ -805,7 +805,7 @@ "multipolygon_merge": "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features.", "turn_restriction_h": "### Turn restrictions", "turn_restriction": "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road.", - "turn_restriction_field": "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special 'Turn Restrictions' field containing a model of the intersection.", + "turn_restriction_field": "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection.", "turn_restriction_editing": "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices.", "route_h": "### Routes", "route": "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route.", @@ -826,7 +826,7 @@ }, "streetlevel": { "title": "Street Level Photos", - "intro": "Street level photos provide a ground-truth prespective of an area, useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).", + "intro": "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).", "using_h": "### Using", "using": "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers.", "photos": "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken.", diff --git a/modules/ui/help.js b/modules/ui/help.js index 5693dce32..e7749d879 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -172,50 +172,18 @@ export function uiHelp(context) { ]; var replacements = { - more: icon('#icon-more', 'pre-text'), - apply: icon('#icon-apply', 'pre-text'), - alert: icon('#icon-alert', 'pre-text'), - avatar: icon('#icon-avatar', 'pre-text'), - forward: icon('#icon-forward', 'pre-text'), - backward: icon('#icon-backward', 'pre-text'), - fullscreen: icon('#icon-full-screen', 'pre-text'), - collapsescreen: icon('#icon-collapse-screen', 'pre-text'), - geolocate: icon('#icon-geolocate', 'pre-text'), - load: icon('#icon-load', 'pre-text'), - search: icon('#icon-search', 'pre-text'), - bug: icon('#icon-bug', 'pre-text'), point: icon('#icon-point', 'pre-text'), line: icon('#icon-line', 'pre-text'), area: icon('#icon-area', 'pre-text'), - help: icon('#icon-help', 'pre-text'), plus: icon('#icon-plus', 'pre-text'), minus: icon('#icon-minus', 'pre-text'), - nearby: icon('#icon-nearby', 'pre-text'), - outlink: icon('#icon-out-link', 'pre-text'), - relation: icon('#icon-relation', 'pre-text'), - translate: icon('#icon-translate', 'pre-text'), - circularize: icon('#operation-circularize', 'pre-text'), orthogonalize: icon('#operation-orthogonalize', 'pre-text'), - split: icon('#operation-split', 'pre-text'), - reflect_long: icon('#operation-reflect-long', 'pre-text'), - reflect_short: icon('#operation-reflect-short', 'pre-text'), - simplify: icon('#operation-simplify', 'pre-text'), - smooth: icon('#operation-smooth', 'pre-text'), - straighten: icon('#operation-straighten', 'pre-text'), - rotate: icon('#operation-rotate', 'pre-text'), - reverse: icon('#operation-reverse', 'pre-text'), - continue: icon('#operation-continue', 'pre-text'), disconnect: icon('#operation-disconnect', 'pre-text'), layers: icon('#icon-layers', 'pre-text'), - vertex: icon('#icon-vertex', 'pre-text'), data: icon('#icon-data', 'pre-text'), - down: icon('#icon-down', 'pre-text'), - up: icon('#icon-up', 'pre-text'), inspect: icon('#icon-inspect', 'pre-text'), move: icon('#operation-move', 'pre-text'), merge: icon('#operation-merge', 'pre-text'), - copy: icon('#operation-copy', 'pre-text'), - paste: icon('#operation-paste', 'pre-text'), delete: icon('#operation-delete', 'pre-text'), close: icon('#icon-close', 'pre-text'), undo: icon(textDirection === 'rtl' ? '#icon-redo' : '#icon-undo', 'pre-text'), From 278bd9638db437928f1b36530e3bd9b3612e1a61 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 21:31:53 -0500 Subject: [PATCH 111/159] Add core.yaml to gazer watchlist (closes #4556) --- development_server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/development_server.js b/development_server.js index 7b8871a23..b8ce39eec 100644 --- a/development_server.js +++ b/development_server.js @@ -28,6 +28,7 @@ if (isDevelopment) { gaze( [ 'data/**/*.{js,json}', + 'data/core.yaml', // ignore the output files of `buildData` '!data/presets/categories.json', '!data/presets/fields.json', From bf2251bbc4e359e7c358f9153d6332c44e9f0e70 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 22:27:23 -0500 Subject: [PATCH 112/159] Add markdown headings with code, not in translation text --- data/core.yaml | 80 ++++++++++++++++++++++---------------------- dist/locales/en.json | 80 ++++++++++++++++++++++---------------------- modules/ui/help.js | 52 ++++++++++++++++++++++++++-- 3 files changed, 129 insertions(+), 83 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index dbe053fea..b44adddb5 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -557,142 +557,142 @@ en: help: title: Help welcome: "Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser." - open_data_h: "### Open Data" + open_data_h: "Open Data" open_data: "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright)." - before_start_h: "### Before you start" + before_start_h: "Before you start" before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes." - open_source_h: "### Open Source" + open_source_h: "Open Source" open_source: "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD)." open_source_help: "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." overview: title: Overview - navigation_h: "### Navigation" + navigation_h: "Navigation" navigation_drag: "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard." navigation_zoom: "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map." - features_h: "### Map Features" + features_h: "Map Features" features: "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*." nodes_ways: "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." editing: title: "Editing & Saving" - select_h: "### Select" + select_h: "Select" select_left_click: "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address." select_right_click: "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting." - multiselect_h: "### Multiselect" + multiselect_h: "Multiselect" multiselect_shift_click: "`Shift-click` to select several features together. This makes it easier to move or delete multiple items." multiselect_lasso: "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected." - undo_redo_h: "### Undo & Redo" + undo_redo_h: "Undo & Redo" undo_redo: "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button." - save_h: "### Save" + save_h: "Save" save: "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!" save_validation: "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right." - upload_h: "### Upload" + upload_h: "Upload" upload: "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone." - backups_h: "### Automatic Backups" + backups_h: "Automatic Backups" backups: "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work." - keyboard_h: "### Keyboard Shortcuts" + keyboard_h: "Keyboard Shortcuts" keyboard: "You can view a list of keyboard shortcuts by pressing the `?` key." feature_editor: title: Feature Editor intro: "The *feature editor* appears alongside the map, and allows you to see and edit all of the information for the selected feature." definitions: "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address." - type_h: "### Feature Type" + type_h: "Feature Type" type: "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from." type_picker: "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it." - fields_h: "### Fields" + fields_h: "Fields" fields_all_fields: "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." fields_example: "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open." fields_add_field: "You can also click the \"Add field\" dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more." - tags_h: "### Tags" + tags_h: "Tags" tags_all_tags: "Below the fields section, you can expand the \"All tags\" section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap." tags_resources: "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." points: title: Points intro: "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there." - add_point_h: "### Adding Points" + add_point_h: "Adding Points" add_point: "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol." add_point_finish: "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`." - move_point_h: "### Moving Points" + move_point_h: "Moving Points" move_point: "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location." - delete_point_h: "### Deleting Points" + delete_point_h: "Deleting Points" delete_point: "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it." delete_point_command: "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." lines: title: Lines intro: "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent." - add_line_h: "### Adding Lines" + add_line_h: "Adding Lines" add_line: "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol." add_line_draw: "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." add_line_finish: "To finish a line, press `enter` or click on the last node again." - modify_line_h: "### Modifying Lines" + modify_line_h: "Modifying Lines" modify_line_dragnode: "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations." modify_line_addnode: "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes." - connect_line_h: "### Connecting Lines" + connect_line_h: "Connecting Lines" connect_line: "Having roads connected properly is important for the map and essential for providing driving directions." connect_line_display: "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything." connect_line_drag: "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together." connect_line_tag: "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type." - disconnect_line_h: "### Disconnecting Lines" + disconnect_line_h: "Disconnecting Lines" disconnect_line_command: "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool." - move_line_h: "### Moving Lines" + move_line_h: "Moving Lines" move_line_command: "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location." move_line_connected: "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line." - delete_line_h: "### Deleting Lines" + delete_line_h: "Deleting Lines" delete_line: "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built." delete_line_command: "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." areas: title: Areas intro: "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the feature that they represent, for example, around the base of a building." - point_or_area_h: "### Points or Areas?" + point_or_area_h: "Points or Areas?" point_or_area: "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building." - add_area_h: "### Adding Areas" + add_area_h: "Adding Areas" add_area_command: "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol." add_area_draw: "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." add_area_finish: "To finish an area, press `enter` or click again on either the first or last node." - square_area_h: "### Square Corners" + square_area_h: "Square Corners" square_area_command: "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool." - modify_area_h: "### Modifying Areas" + modify_area_h: "Modifying Areas" modify_area_dragnode: "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations." modify_area_addnode: "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes." - delete_area_h: "### Deleting Areas" + delete_area_h: "Deleting Areas" delete_area: "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built." delete_area_command: "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." relations: title: Relations intro: "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation." - edit_relation_h: "### Editing Relations" + edit_relation_h: "Editing Relations" edit_relation: "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it." edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." edit_relation_delete: "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically." - maintain_relation_h: "### Maintaining Relations" + maintain_relation_h: "Maintaining Relations" maintain_relation: "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original." - relation_types_h: "## Relation Types" - multipolygon_h: "### Multipolygons" + relation_types_h: "Relation Types" + multipolygon_h: "Multipolygons" multipolygon: "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon." multipolygon_create: "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool." multipolygon_merge: "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features." - turn_restriction_h: "### Turn restrictions" + turn_restriction_h: "Turn restrictions" turn_restriction: "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road." turn_restriction_field: "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection." turn_restriction_editing: "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices." - route_h: "### Routes" + route_h: "Routes" route: "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route." route_add: "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." - boundary_h: "### Boundaries" + boundary_h: "Boundaries" boundary: "A *boundary* relation is a group of one or more line features that together form an administrative boundary." boundary_add: "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." imagery: title: Background Imagery intro: "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data." choosing: "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map." - sources_h: "### Sources" + sources_h: "Background Sources" sources: "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference." - offsets_h: "### Offset" + offsets_h: "Adjusting Imagery Offset" offset: "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane." offset_change: "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." streetlevel: title: Street Level Photos intro: "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org)." - using_h: "### Using" + using_h: "Using Street Level Photos" using: "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers." photos: "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken." viewer: "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." @@ -700,7 +700,7 @@ en: title: GPS Traces intro: "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device." survey: "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/)." - using_h: "### Using" + using_h: "Using GPS Traces" using: "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data." tracing: "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add." upload: "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." diff --git a/dist/locales/en.json b/dist/locales/en.json index 24acf1931..ab1b857c7 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -683,134 +683,134 @@ "help": { "title": "Help", "welcome": "Welcome to the iD editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser.", - "open_data_h": "### Open Data", + "open_data_h": "Open Data", "open_data": "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).", - "before_start_h": "### Before you start", + "before_start_h": "Before you start", "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes.", - "open_source_h": "### Open Source", + "open_source_h": "Open Source", "open_source": "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD).", "open_source_help": "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." }, "overview": { "title": "Overview", - "navigation_h": "### Navigation", + "navigation_h": "Navigation", "navigation_drag": "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard.", "navigation_zoom": "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map.", - "features_h": "### Map Features", + "features_h": "Map Features", "features": "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*.", "nodes_ways": "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." }, "editing": { "title": "Editing & Saving", - "select_h": "### Select", + "select_h": "Select", "select_left_click": "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address.", "select_right_click": "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting.", - "multiselect_h": "### Multiselect", + "multiselect_h": "Multiselect", "multiselect_shift_click": "`Shift-click` to select several features together. This makes it easier to move or delete multiple items.", "multiselect_lasso": "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected.", - "undo_redo_h": "### Undo & Redo", + "undo_redo_h": "Undo & Redo", "undo_redo": "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button.", - "save_h": "### Save", + "save_h": "Save", "save": "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!", "save_validation": "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right.", - "upload_h": "### Upload", + "upload_h": "Upload", "upload": "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone.", - "backups_h": "### Automatic Backups", + "backups_h": "Automatic Backups", "backups": "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work.", - "keyboard_h": "### Keyboard Shortcuts", + "keyboard_h": "Keyboard Shortcuts", "keyboard": "You can view a list of keyboard shortcuts by pressing the `?` key." }, "feature_editor": { "title": "Feature Editor", "intro": "The *feature editor* appears alongside the map, and allows you to see and edit all of the information for the selected feature.", "definitions": "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address.", - "type_h": "### Feature Type", + "type_h": "Feature Type", "type": "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from.", "type_picker": "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it.", - "fields_h": "### Fields", + "fields_h": "Fields", "fields_all_fields": "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure.", "fields_example": "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open.", "fields_add_field": "You can also click the \"Add field\" dropdown to add more fields, such as a description, Wikipedia link, wheelchair access, and more.", - "tags_h": "### Tags", + "tags_h": "Tags", "tags_all_tags": "Below the fields section, you can expand the \"All tags\" section to edit any of the OpenStreetMap *tags* for the selected feature. Each tag consists of a *key* and *value*, data elements that define all of the features stored in OpenStreetMap.", "tags_resources": "Editing a feature's tags requires intermediate knowledge about OpenStreetMap. You should consult resources like the [OpenStreetMap Wiki](https://wiki.openstreetmap.org/wiki/Main_Page) or [Taginfo](https://taginfo.openstreetmap.org/) to learn more about accepted OpenStreetMap tagging practices." }, "points": { "title": "Points", "intro": "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there.", - "add_point_h": "### Adding Points", + "add_point_h": "Adding Points", "add_point": "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol.", "add_point_finish": "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`.", - "move_point_h": "### Moving Points", + "move_point_h": "Moving Points", "move_point": "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location.", - "delete_point_h": "### Deleting Points", + "delete_point_h": "Deleting Points", "delete_point": "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it.", "delete_point_command": "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "lines": { "title": "Lines", "intro": "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent.", - "add_line_h": "### Adding Lines", + "add_line_h": "Adding Lines", "add_line": "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol.", "add_line_draw": "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", "add_line_finish": "To finish a line, press `enter` or click on the last node again.", - "modify_line_h": "### Modifying Lines", + "modify_line_h": "Modifying Lines", "modify_line_dragnode": "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations.", "modify_line_addnode": "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes.", - "connect_line_h": "### Connecting Lines", + "connect_line_h": "Connecting Lines", "connect_line": "Having roads connected properly is important for the map and essential for providing driving directions.", "connect_line_display": "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything.", "connect_line_drag": "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together.", "connect_line_tag": "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type.", - "disconnect_line_h": "### Disconnecting Lines", + "disconnect_line_h": "Disconnecting Lines", "disconnect_line_command": "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool.", - "move_line_h": "### Moving Lines", + "move_line_h": "Moving Lines", "move_line_command": "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location.", "move_line_connected": "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line.", - "delete_line_h": "### Deleting Lines", + "delete_line_h": "Deleting Lines", "delete_line": "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built.", "delete_line_command": "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "areas": { "title": "Areas", "intro": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the feature that they represent, for example, around the base of a building.", - "point_or_area_h": "### Points or Areas?", + "point_or_area_h": "Points or Areas?", "point_or_area": "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building.", - "add_area_h": "### Adding Areas", + "add_area_h": "Adding Areas", "add_area_command": "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol.", "add_area_draw": "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", "add_area_finish": "To finish an area, press `enter` or click again on either the first or last node.", - "square_area_h": "### Square Corners", + "square_area_h": "Square Corners", "square_area_command": "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool.", - "modify_area_h": "### Modifying Areas", + "modify_area_h": "Modifying Areas", "modify_area_dragnode": "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations.", "modify_area_addnode": "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes.", - "delete_area_h": "### Deleting Areas", + "delete_area_h": "Deleting Areas", "delete_area": "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built.", "delete_area_command": "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." }, "relations": { "title": "Relations", "intro": "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation.", - "edit_relation_h": "### Editing Relations", + "edit_relation_h": "Editing Relations", "edit_relation": "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it.", "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", "edit_relation_delete": "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically.", - "maintain_relation_h": "### Maintaining Relations", + "maintain_relation_h": "Maintaining Relations", "maintain_relation": "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original.", - "relation_types_h": "## Relation Types", - "multipolygon_h": "### Multipolygons", + "relation_types_h": "Relation Types", + "multipolygon_h": "Multipolygons", "multipolygon": "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon.", "multipolygon_create": "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool.", "multipolygon_merge": "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features.", - "turn_restriction_h": "### Turn restrictions", + "turn_restriction_h": "Turn restrictions", "turn_restriction": "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road.", "turn_restriction_field": "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection.", "turn_restriction_editing": "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices.", - "route_h": "### Routes", + "route_h": "Routes", "route": "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route.", "route_add": "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation.", - "boundary_h": "### Boundaries", + "boundary_h": "Boundaries", "boundary": "A *boundary* relation is a group of one or more line features that together form an administrative boundary.", "boundary_add": "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." }, @@ -818,16 +818,16 @@ "title": "Background Imagery", "intro": "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data.", "choosing": "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map.", - "sources_h": "### Sources", + "sources_h": "Background Sources", "sources": "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference.", - "offsets_h": "### Offset", + "offsets_h": "Adjusting Imagery Offset", "offset": "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane.", "offset_change": "Click on the small triangles to adjust the imagery offset in small steps, or hold the left mouse button and drag within the gray square to slide the imagery into alignment." }, "streetlevel": { "title": "Street Level Photos", "intro": "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).", - "using_h": "### Using", + "using_h": "Using Street Level Photos", "using": "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers.", "photos": "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken.", "viewer": "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." @@ -836,7 +836,7 @@ "title": "GPS Traces", "intro": "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device.", "survey": "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).", - "using_h": "### Using", + "using_h": "Using GPS Traces", "using": "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data.", "tracing": "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add.", "upload": "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." diff --git a/modules/ui/help.js b/modules/ui/help.js index e7749d879..7b293efe6 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -171,6 +171,49 @@ export function uiHelp(context) { ]] ]; + var headings = { + 'help.help.open_data_h': 3, + 'help.help.before_start_h': 3, + 'help.help.open_source_h': 3, + 'help.overview.navigation_h': 3, + 'help.overview.features_h': 3, + 'help.editing.select_h': 3, + 'help.editing.multiselect_h': 3, + 'help.editing.undo_redo_h': 3, + 'help.editing.save_h': 3, + 'help.editing.upload_h': 3, + 'help.editing.backups_h': 3, + 'help.editing.keyboard_h': 3, + 'help.feature_editor.type_h': 3, + 'help.feature_editor.fields_h': 3, + 'help.feature_editor.tags_h': 3, + 'help.points.add_point_h': 3, + 'help.points.move_point_h': 3, + 'help.points.delete_point_h': 3, + 'help.lines.add_line_h': 3, + 'help.lines.modify_line_h': 3, + 'help.lines.connect_line_h': 3, + 'help.lines.disconnect_line_h': 3, + 'help.lines.move_line_h': 3, + 'help.lines.delete_line_h': 3, + 'help.areas.point_or_area_h': 3, + 'help.areas.add_area_h': 3, + 'help.areas.square_area_h': 3, + 'help.areas.modify_area_h': 3, + 'help.areas.delete_area_h': 3, + 'help.relations.edit_relation_h': 3, + 'help.relations.maintain_relation_h': 3, + 'help.relations.relation_types_h': 2, + 'help.relations.multipolygon_h': 3, + 'help.relations.turn_restriction_h': 3, + 'help.relations.route_h': 3, + 'help.relations.boundary_h': 3, + 'help.imagery.sources_h': 3, + 'help.imagery.offsets_h': 3, + 'help.streetlevel.using_h': 3, + 'help.gps.using_h': 3, + }; + var replacements = { point: icon('#icon-point', 'pre-text'), line: icon('#icon-line', 'pre-text'), @@ -194,10 +237,13 @@ export function uiHelp(context) { // For each section, squash all the texts into a single markdown document var docs = docKeys.map(function(key) { - var tkey = 'help.' + key[0]; - var title = t(tkey + '.title'); + var helpkey = 'help.' + key[0]; + var title = t(helpkey + '.title'); var text = key[1].reduce(function(all, part) { - return all + t(tkey + '.' + part, replacements) + '\n\n'; + var subkey = helpkey + '.' + part; + var depth = headings[subkey]; // is this subkey a heading? + var hhh = depth ? Array(depth + 1).join('#') + ' ' : ''; // if so, prepend with some ##'s + return all + hhh + t(subkey, replacements) + '\n\n'; }, ''); return { From fd49f47edec671809f01b09d1a72089cda067b35 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Nov 2017 22:29:06 -0500 Subject: [PATCH 113/159] Now background, map_data, help stay open when user clicks on map surface There is really no need to hide these, and the user might just want to keep the pane open (e.g. viewing help) while they do stuff. --- modules/ui/background.js | 3 --- modules/ui/help.js | 3 --- modules/ui/map_data.js | 4 ---- 3 files changed, 10 deletions(-) diff --git a/modules/ui/background.js b/modules/ui/background.js index 8f1ba2d2f..9b58c79d5 100644 --- a/modules/ui/background.js +++ b/modules/ui/background.js @@ -568,9 +568,6 @@ export function uiBackground(context) { d3_select(document) .call(keybinding); - - context.surface().on('mousedown.background-outside', hide); - context.container().on('mousedown.background-outside', hide); } return background; diff --git a/modules/ui/help.js b/modules/ui/help.js index 7b293efe6..45e5b27aa 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -439,9 +439,6 @@ export function uiHelp(context) { d3_select(document) .call(keybinding); - - context.surface().on('mousedown.help-outside', hide); - context.container().on('mousedown.help-outside', hide); } return help; diff --git a/modules/ui/map_data.js b/modules/ui/map_data.js index 49a238ba3..fb522c098 100644 --- a/modules/ui/map_data.js +++ b/modules/ui/map_data.js @@ -492,11 +492,7 @@ export function uiMapData(context) { d3_select(document) .call(keybinding); - - context.surface().on('mousedown.map_data-outside', hidePanel); - context.container().on('mousedown.map_data-outside', hidePanel); } - return map_data; } From 434bc5af960d23ebb8e32b35e26d507893d9d6e7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Thu, 23 Nov 2017 02:31:12 -0500 Subject: [PATCH 114/159] Improve styling of keyboard shortcuts, clicks, commands in help text --- css/80_app.css | 23 +++++++---- data/core.yaml | 84 +++++++++++++++++++------------------- dist/locales/en.json | 84 +++++++++++++++++++------------------- modules/ui/help.js | 11 +++-- modules/ui/intro/helper.js | 5 ++- 5 files changed, 110 insertions(+), 97 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index 378df26f3..b8662d899 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -2613,8 +2613,16 @@ div.full-screen > button:hover { } .help-wrap .left-content .body p code { - padding:2px 4px; - background:#eee; + padding: 3px 4px; + font-size: 12px; + color: #555; + vertical-align: baseline; + background-color: #f6f6f6; + border: solid 1px #ccc; + margin: 0 2px; + border-bottom-color: #bbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbb; } .help-wrap .left-content .icon.pre-text { @@ -2625,7 +2633,6 @@ div.full-screen > button:hover { } .help-wrap .toc { - /* This is two columns, 41.66666 x .4 = 16.6666 */ width:40%; float:right; margin-left: 20px; @@ -2636,7 +2643,7 @@ div.full-screen > button:hover { .help-wrap .toc li a, .help-wrap .nav a { display: block; - border: 1px solid #CCC; + border: 1px solid #ccc; padding: 5px 10px; } @@ -2650,7 +2657,7 @@ div.full-screen > button:hover { } .help-wrap .toc li a.selected { - background: #E8EBFF; + background: #e8ebff; } .help-wrap .toc li:first-child a { @@ -2658,7 +2665,7 @@ div.full-screen > button:hover { } .help-wrap .toc li:nth-last-child(3) a { - border-bottom: 1px solid #CCC; + border-bottom: 1px solid #ccc; border-radius: 0 0 4px 4px } @@ -3495,11 +3502,11 @@ img.tile-removing { box-shadow: inset 0 -1px 0 #bbb; } -.modal-shortcuts .shortcut-keys svg.mouseclick use.left { +svg.mouseclick use.left { fill: rgba(112, 146, 255, 1); color: rgba(112, 146, 255, 0); } -.modal-shortcuts .shortcut-keys svg.mouseclick use.right { +svg.mouseclick use.right { fill: rgba(112, 146, 255, 0); color: rgba(112, 146, 255, 1); } diff --git a/data/core.yaml b/data/core.yaml index b44adddb5..e40b52190 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -560,33 +560,33 @@ en: open_data_h: "Open Data" open_data: "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright)." before_start_h: "Before you start" - before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes." + before_start: "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes." open_source_h: "Open Source" open_source: "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD)." open_source_help: "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." overview: title: Overview navigation_h: "Navigation" - navigation_drag: "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard." - navigation_zoom: "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map." + navigation_drag: "You can drag the map by pressing and holding down the {leftclick} left mouse button and moving the mouse around. You can also use the `↓`, `↑`, `←`, `→` arrow keys on your keyboard." + navigation_zoom: "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map. You can also use the `+`, `-` keys on your keyboard." features_h: "Map Features" features: "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*." nodes_ways: "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." editing: title: "Editing & Saving" select_h: "Select" - select_left_click: "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address." - select_right_click: "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting." + select_left_click: "{leftclick} Left-click on a feature to select it. This will highlight it with a pulsing glow, and the sidebar will display details about that feature, such as its name or address." + select_right_click: "{rightclick} Right-click on a feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting." multiselect_h: "Multiselect" - multiselect_shift_click: "`Shift-click` to select several features together. This makes it easier to move or delete multiple items." - multiselect_lasso: "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected." + multiselect_shift_click: "`{shift}`+{leftclick} left-click to select several features together. This makes it easier to move or delete multiple items." + multiselect_lasso: "Another way to select multiple features is to hold down the `{shift}` key, then press and hold down the {leftclick} left mouse button and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected." undo_redo_h: "Undo & Redo" - undo_redo: "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button." + undo_redo: "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} **Undo** button, and redo them by clicking the {redo} **Redo** button." save_h: "Save" - save: "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!" + save: "Click {save} **Save** to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!" save_validation: "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right." upload_h: "Upload" - upload: "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone." + upload: "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click **Upload** to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone." backups_h: "Automatic Backups" backups: "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work." keyboard_h: "Keyboard Shortcuts" @@ -597,7 +597,7 @@ en: definitions: "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address." type_h: "Feature Type" type: "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from." - type_picker: "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it." + type_picker: "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} **Info** icon next to the feature type to learn more about it." fields_h: "Fields" fields_all_fields: "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure." fields_example: "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open." @@ -609,82 +609,82 @@ en: title: Points intro: "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there." add_point_h: "Adding Points" - add_point: "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol." - add_point_finish: "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`." + add_point: "To add a point, click the {point} **Point** button on the toolbar above the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol." + add_point_finish: "To place the new point on the map, position the mouse cursor where the point should go, then {leftclick} left-click or press `Space`." move_point_h: "Moving Points" - move_point: "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location." + move_point: "To move a point, place the mouse cursor over the point, then press and hold the {leftclick} left mouse button while dragging the point to its new location." delete_point_h: "Deleting Points" delete_point: "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it." - delete_point_command: "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + delete_point_command: "To delete a point, {rightclick} right-click on the point to select it and show the edit menu, then use the {delete} **Delete** command." lines: title: Lines intro: "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent." add_line_h: "Adding Lines" - add_line: "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol." - add_line_draw: "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." - add_line_finish: "To finish a line, press `enter` or click on the last node again." + add_line: "To add a line, click the {line} **Line** button on the toolbar above the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol." + add_line_draw: "Next, position the mouse cursor where the line should begin and {leftclick} left-click or press `Space` to begin placing nodes along the line. Continue placing more nodes by clicking or pressing `Space`. While drawing, you can zoom in or drag the map in order to add more detail." + add_line_finish: "To finish a line, press `{return}` or click again on the last node." modify_line_h: "Modifying Lines" - modify_line_dragnode: "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations." - modify_line_addnode: "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes." + modify_line_dragnode: "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first {leftclick} left-click to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations." + modify_line_addnode: "You can also create new nodes along a line either by {leftclick}**x2** double-clicking on the line or by dragging the small triangles at the midpoints between nodes." connect_line_h: "Connecting Lines" connect_line: "Having roads connected properly is important for the map and essential for providing driving directions." connect_line_display: "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything." - connect_line_drag: "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together." + connect_line_drag: "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together. Tip: You can hold down the `{alt}` key to prevent nodes from connecting to other features." connect_line_tag: "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type." disconnect_line_h: "Disconnecting Lines" - disconnect_line_command: "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool." + disconnect_line_command: "To disconnect a road from another feature, {rightclick} right-click the connecting node and select the {disconnect} **Disconnect** command from the editing menu." move_line_h: "Moving Lines" - move_line_command: "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location." + move_line_command: "To move an entire line, {rightclick} right-click the line and select the {move} **Move** command from the editing menu. Then move the mouse, and {leftclick} left-click to place the line in a new location." move_line_connected: "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line." delete_line_h: "Deleting Lines" delete_line: "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built." - delete_line_command: "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + delete_line_command: "To delete a line, {rightclick} right-click on the line to select it and show the edit menu, then use the {delete} **Delete** command." areas: title: Areas intro: "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas. Areas should be traced around the edge of the feature that they represent, for example, around the base of a building." point_or_area_h: "Points or Areas?" point_or_area: "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building." add_area_h: "Adding Areas" - add_area_command: "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol." - add_area_draw: "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail." - add_area_finish: "To finish an area, press `enter` or click again on either the first or last node." + add_area_command: "To add an area, click the {area} **Area** button on the toolbar above the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol." + add_area_draw: "Next, position the mouse cursor at one of the corners of the feature and {leftclick} left-click or press `Space` to begin placing nodes around the outer edge of the area. Continue placing more nodes by clicking or pressing `Space`. While drawing, you can zoom in or drag the map in order to add more detail." + add_area_finish: "To finish an area, press `{return}` or click again on either the first or last node." square_area_h: "Square Corners" - square_area_command: "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool." + square_area_command: "Many area features like buildings have square corners. To square the corners of an area, {rightclick} right-click the edge of the area and select the {orthogonalize} **Square** command from the editing menu." modify_area_h: "Modifying Areas" - modify_area_dragnode: "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations." - modify_area_addnode: "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes." + modify_area_dragnode: "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first {leftclick} left-click to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations." + modify_area_addnode: "You can also create new nodes along an area either by {leftclick}**x2** double-clicking on the edge of the area or by dragging the small triangles at the midpoints between nodes." delete_area_h: "Deleting Areas" delete_area: "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built." - delete_area_command: "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + delete_area_command: "To delete an area, {rightclick} right-click on the area to select it and show the edit menu, then use the {delete} **Delete** command." relations: title: Relations intro: "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation." edit_relation_h: "Editing Relations" edit_relation: "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it." - edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." - edit_relation_delete: "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically." + edit_relation_add: "To add a feature to a relation, select the feature, then click the {plus} add button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option." + edit_relation_delete: "You can also click the {delete} **Delete** button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically." maintain_relation_h: "Maintaining Relations" maintain_relation: "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original." relation_types_h: "Relation Types" multipolygon_h: "Multipolygons" multipolygon: "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon." - multipolygon_create: "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool." + multipolygon_create: "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `{shift}`+{leftclick} left-click to select both features, {rightclick} right-click to show the edit menu, and select the {merge} **Merge** command." multipolygon_merge: "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features." turn_restriction_h: "Turn restrictions" turn_restriction: "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road." turn_restriction_field: "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection." - turn_restriction_editing: "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices." + turn_restriction_editing: "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and set the from, via, and to roles based on your choices." route_h: "Routes" route: "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route." - route_add: "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." + route_add: "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} add button to add this feature to a nearby existing relation or a new relation." boundary_h: "Boundaries" boundary: "A *boundary* relation is a group of one or more line features that together form an administrative boundary." - boundary_add: "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." + boundary_add: "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} add button to add this feature to a nearby existing relation or a new relation." imagery: title: Background Imagery intro: "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data." - choosing: "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map." - sources_h: "Background Sources" + sources_h: "Imagery Sources" + choosing: "To see which imagery sources are available for editing, click the {layers} **Background settings** button on the side of the map." sources: "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference." offsets_h: "Adjusting Imagery Offset" offset: "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane." @@ -693,15 +693,15 @@ en: title: Street Level Photos intro: "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org)." using_h: "Using Street Level Photos" - using: "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers." + using: "To use street level photos for mapping, click the {data} **Map data** panel on the side of the map to enable or disable the available photo layers." photos: "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken." viewer: "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." gps: title: GPS Traces - intro: "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device." + intro: "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports *.gpx*, *.geojson*, and *.kml* files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device." survey: "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/)." using_h: "Using GPS Traces" - using: "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data." + using: "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} **Map data** panel on the side of the map to enable, disable, or zoom to your GPS data." tracing: "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add." upload: "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." intro: diff --git a/dist/locales/en.json b/dist/locales/en.json index ab1b857c7..dfab15bd5 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -686,7 +686,7 @@ "open_data_h": "Open Data", "open_data": "Edits that you make on this map will be visible to everyone who uses OpenStreetMap. Your edits can be based on personal knowledge, on-the-ground surveying, or imagery collected from aerial or street level photos. Copying from commercial sources, like Google Maps, [is strictly forbidden](https://www.openstreetmap.org/copyright).", "before_start_h": "Before you start", - "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a builtin walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes.", + "before_start": "You should be familiar with OpenStreetMap and this editor before you start editing. iD contains a walkthrough to teach you the basics of editing OpenStreetMap. Click \"Start the Walkthrough\" on this screen to take the tutorial - it takes only about 15 minutes.", "open_source_h": "Open Source", "open_source": "The iD editor is a collaborative open source project, and you are using version {version} now. The source code is available [on GitHub](https://github.com/openstreetmap/iD).", "open_source_help": "You can help iD by [translating](https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating) or [reporting bugs](https://github.com/openstreetmap/iD/issues)." @@ -694,8 +694,8 @@ "overview": { "title": "Overview", "navigation_h": "Navigation", - "navigation_drag": "You can drag the map by pressing and holding the left mouse button while moving the mouse around. You can also use the arrow keys on your keyboard.", - "navigation_zoom": "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map.", + "navigation_drag": "You can drag the map by pressing and holding down the {leftclick} left mouse button and moving the mouse around. You can also use the `↓`, `↑`, `←`, `→` arrow keys on your keyboard.", + "navigation_zoom": "You can zoom in or out by scrolling with the mouse wheel or trackpad, or by clicking the {plus} / {minus} buttons along the side of the map. You can also use the `+`, `-` keys on your keyboard.", "features_h": "Map Features", "features": "We use the word *features* to describe things that appear on the map, such as roads, buildings, or points of interest. Anything in the real world can be mapped as a feature on OpenStreetMap. Map features are represented on the map using *points*, *lines*, or *areas*.", "nodes_ways": "In OpenStreetmap, points are sometimes called *nodes*, and lines and areas are sometimes called *ways*." @@ -703,18 +703,18 @@ "editing": { "title": "Editing & Saving", "select_h": "Select", - "select_left_click": "`Left-click` on a feature to select it. This will highlight the feature with a pulsing glow, and the sidebar will display details about that feature, such as its name or address.", - "select_right_click": "`Right-click` on a map feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting.", + "select_left_click": "{leftclick} Left-click on a feature to select it. This will highlight it with a pulsing glow, and the sidebar will display details about that feature, such as its name or address.", + "select_right_click": "{rightclick} Right-click on a feature to display the editing menu, which shows the commands that are available, such as rotating, moving, and deleting.", "multiselect_h": "Multiselect", - "multiselect_shift_click": "`Shift-click` to select several features together. This makes it easier to move or delete multiple items.", - "multiselect_lasso": "Another way to select multiple features is to hold down the `Shift` key, then press and hold the left mouse button, and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected.", + "multiselect_shift_click": "`{shift}`+{leftclick} left-click to select several features together. This makes it easier to move or delete multiple items.", + "multiselect_lasso": "Another way to select multiple features is to hold down the `{shift}` key, then press and hold down the {leftclick} left mouse button and drag the mouse to draw a selection lasso. All of the points inside the lasso area will be selected.", "undo_redo_h": "Undo & Redo", - "undo_redo": "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} `Undo` button, and redo them by clicking the {redo} `Redo` button.", + "undo_redo": "Your edits are stored locally in your browser until you choose to save them to the OpenStreetMap server. You can undo edits by clicking the {undo} **Undo** button, and redo them by clicking the {redo} **Redo** button.", "save_h": "Save", - "save": "Click {save} `Save` to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!", + "save": "Click {save} **Save** to finish your edits and send them to OpenStreetMap. You should remember to save your work frequently!", "save_validation": "On the save screen, you'll have a chance to review what you've done. iD will also perform some basic checks for missing data and may offer helpful suggestions and warnings if something doesn't seem right.", "upload_h": "Upload", - "upload": "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click `Upload` to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone.", + "upload": "Before uploading your changes you must enter a [changeset comment](https://wiki.openstreetmap.org/wiki/Good_changeset_comments). Then click **Upload** to send your changes to OpenStreetMap, where they will be merged into the map and publicly visible to everyone.", "backups_h": "Automatic Backups", "backups": "If you can't finish your edits in one sitting, for example if your computer crashes or you close the browser tab, your edits are still saved in your browser's storage. You can come back later (on the same browser and computer), and iD will offer to restore your work.", "keyboard_h": "Keyboard Shortcuts", @@ -726,7 +726,7 @@ "definitions": "The top section displays the feature's type. The middle section contains *fields* showing the feature's attributes, such as its name or address.", "type_h": "Feature Type", "type": "You can click on the feature type to change the feature to a different type. Everything that exists in the real world can be added to OpenStreetMap, so there are thousands of feature types to choose from.", - "type_picker": "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} info icon next to the feature type to learn more about it.", + "type_picker": "The type picker displays the most common feature types, such as parks, hospitals, restaurants, roads, and buildings. You can search for anything by typing what you're looking for in the search box. You can also click the {inspect} **Info** icon next to the feature type to learn more about it.", "fields_h": "Fields", "fields_all_fields": "The \"All fields\" section contains all of the feature's details that you may edit. In OpenStreetMap, all of the fields are optional, and it's OK to leave a field blank if you are unsure.", "fields_example": "Each feature type will display different fields. For example, a road may display fields for its surface and speed limit, but a restaurant may display fields for the type of food it serves and the hours it is open.", @@ -739,37 +739,37 @@ "title": "Points", "intro": "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there.", "add_point_h": "Adding Points", - "add_point": "To add a point, click the {point} `Point` button on the toolbar at the top of the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol.", - "add_point_finish": "To place the new point on the map, position the mouse cursor where the point should go, then `left-click` or press the `spacebar`.", + "add_point": "To add a point, click the {point} **Point** button on the toolbar above the map, or press the shortcut key `1`. This will change the mouse cursor to a cross symbol.", + "add_point_finish": "To place the new point on the map, position the mouse cursor where the point should go, then {leftclick} left-click or press `Space`.", "move_point_h": "Moving Points", - "move_point": "To move a point, place the mouse cursor over the point, then press the left mouse button and hold it down while dragging the point to its new location.", + "move_point": "To move a point, place the mouse cursor over the point, then press and hold the {leftclick} left mouse button while dragging the point to its new location.", "delete_point_h": "Deleting Points", "delete_point": "It's OK to delete features that don't exist in the real world. Deleting a feature from OpenStreetMap removes it from the map that everyone uses, so you should make sure a feature is really gone before you delete it.", - "delete_point_command": "To delete a point, `right-click` on the point to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + "delete_point_command": "To delete a point, {rightclick} right-click on the point to select it and show the edit menu, then use the {delete} **Delete** command." }, "lines": { "title": "Lines", "intro": "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent.", "add_line_h": "Adding Lines", - "add_line": "To add a line, click the {line} `Line` button on the toolbar at the top of the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol.", - "add_line_draw": "Next, position the mouse cursor where the line should begin and `left-click` or press the `spacebar` to begin placing nodes along the line. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", - "add_line_finish": "To finish a line, press `enter` or click on the last node again.", + "add_line": "To add a line, click the {line} **Line** button on the toolbar above the map, or press the shortcut key `2`. This will change the mouse cursor to a cross symbol.", + "add_line_draw": "Next, position the mouse cursor where the line should begin and {leftclick} left-click or press `Space` to begin placing nodes along the line. Continue placing more nodes by clicking or pressing `Space`. While drawing, you can zoom in or drag the map in order to add more detail.", + "add_line_finish": "To finish a line, press `{return}` or click again on the last node.", "modify_line_h": "Modifying Lines", - "modify_line_dragnode": "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first `left-click` to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations.", - "modify_line_addnode": "You can also create new nodes along a line either by `double-clicking` on the line or by dragging the small triangles at the midpoints between nodes.", + "modify_line_dragnode": "Often you'll see lines that aren't shaped correctly, for example a road that does not match up with the background imagery. To adjust the shape of a line, first {leftclick} left-click to select it. All nodes of the line will be drawn as small circles. You can then drag the nodes to better locations.", + "modify_line_addnode": "You can also create new nodes along a line either by {leftclick}**x2** double-clicking on the line or by dragging the small triangles at the midpoints between nodes.", "connect_line_h": "Connecting Lines", "connect_line": "Having roads connected properly is important for the map and essential for providing driving directions.", "connect_line_display": "The connections between roads are drawn with gray circles. The endpoints of a line are drawn with larger white circles if they don't connect to anything.", - "connect_line_drag": "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together.", + "connect_line_drag": "To connect a line to another feature, drag one of the line's nodes onto the other feature until both features snap together. Tip: You can hold down the `{alt}` key to prevent nodes from connecting to other features.", "connect_line_tag": "If you know that the connection has traffic lights or crosswalks, you can add them by selecting the connecting node and using the feature editor to select the correct feature's type.", "disconnect_line_h": "Disconnecting Lines", - "disconnect_line_command": "To disconnect a road from another feature, `right-click` the connecting node and select the {disconnect} `Disconnect` tool.", + "disconnect_line_command": "To disconnect a road from another feature, {rightclick} right-click the connecting node and select the {disconnect} **Disconnect** command from the editing menu.", "move_line_h": "Moving Lines", - "move_line_command": "To move an entire line, `right-click` the line and select the {move} `Move` tool from the editing menu. Then move the mouse, and `left-click` to place the line in a new location.", + "move_line_command": "To move an entire line, {rightclick} right-click the line and select the {move} **Move** command from the editing menu. Then move the mouse, and {leftclick} left-click to place the line in a new location.", "move_line_connected": "Lines that are connected to other features will stay connected as you move the line to a new location. iD may prevent you from moving a line across another connected line.", "delete_line_h": "Deleting Lines", "delete_line": "If a line is entirely incorrect, for example a road that doesn't exist in the real world, it's OK to delete it. Be careful when deleting features: the background imagery you are using might be outdated, and a road that looks wrong could simply be newly built.", - "delete_line_command": "To delete a line, `right-click` on the line to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + "delete_line_command": "To delete a line, {rightclick} right-click on the line to select it and show the edit menu, then use the {delete} **Delete** command." }, "areas": { "title": "Areas", @@ -777,48 +777,48 @@ "point_or_area_h": "Points or Areas?", "point_or_area": "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building.", "add_area_h": "Adding Areas", - "add_area_command": "To add an area, click the {area} `Area` button on the toolbar at the top of the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol.", - "add_area_draw": "Next, position the mouse cursor at one of the corners of the feature and `left-click` or press the `spacebar` to begin placing nodes around the outer edge of the area. Continue placing more nodes by `left-clicking` or pressing `spacebar`. While drawing, you can zoom in or drag the map in order to add more detail.", - "add_area_finish": "To finish an area, press `enter` or click again on either the first or last node.", + "add_area_command": "To add an area, click the {area} **Area** button on the toolbar above the map, or press the shortcut key `3`. This will change the mouse cursor to a cross symbol.", + "add_area_draw": "Next, position the mouse cursor at one of the corners of the feature and {leftclick} left-click or press `Space` to begin placing nodes around the outer edge of the area. Continue placing more nodes by clicking or pressing `Space`. While drawing, you can zoom in or drag the map in order to add more detail.", + "add_area_finish": "To finish an area, press `{return}` or click again on either the first or last node.", "square_area_h": "Square Corners", - "square_area_command": "Many area features like buildings have square corners. To square the corners of an area, `right-click` the edge of the area and select the {orthogonalize} `Square` tool.", + "square_area_command": "Many area features like buildings have square corners. To square the corners of an area, {rightclick} right-click the edge of the area and select the {orthogonalize} **Square** command from the editing menu.", "modify_area_h": "Modifying Areas", - "modify_area_dragnode": "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first `left-click` to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations.", - "modify_area_addnode": "You can also create new nodes along an area either by `double-clicking` on the edge of the area or by dragging the small triangles at the midpoints between nodes.", + "modify_area_dragnode": "Often you'll see areas that aren't shaped correctly, for example a building that does not match up with the background imagery. To adjust the shape of an area, first {leftclick} left-click to select it. All nodes of the area will be drawn as small circles. You can then drag the nodes to better locations.", + "modify_area_addnode": "You can also create new nodes along an area either by {leftclick}**x2** double-clicking on the edge of the area or by dragging the small triangles at the midpoints between nodes.", "delete_area_h": "Deleting Areas", "delete_area": "If an area is entirely incorrect, for example a building that doesn't exist in the real world, it's OK to delete it. Be cautious when deleting features - the background imagery you are using might be outdated, and a building that looks wrong could simply be newly built.", - "delete_area_command": "To delete an area, `right-click` on the area to select it and show the edit menu, then use the {delete} `Delete` command. You can also press the `delete` key on your keyboard." + "delete_area_command": "To delete an area, {rightclick} right-click on the area to select it and show the edit menu, then use the {delete} **Delete** command." }, "relations": { "title": "Relations", "intro": "A *relation* is a special type of feature in OpenStreetMap that groups together other features. The features that belong to a relation are called *members*, and each member can have a *role* in the relation.", "edit_relation_h": "Editing Relations", "edit_relation": "At the bottom of the feature editor, you can expand the \"All relations\" section to see if the selected feature is a member of any relations. You can then click on the relation to select and edit it.", - "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", - "edit_relation_delete": "You can also click the {delete} `Delete` button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically.", + "edit_relation_add": "To add a feature to a relation, select the feature, then click the {plus} add button in the \"All relations\" section of the feature editor. You can choose from a list of nearby relations, or choose the \"New relation...\" option.", + "edit_relation_delete": "You can also click the {delete} **Delete** button to remove the selected feature from the relation. If you remove all of the members from a relation, the relation will be deleted automatically.", "maintain_relation_h": "Maintaining Relations", "maintain_relation": "For the most part, iD will maintain relations automatically as you edit. You should take care when replacing features that might be members of relations. For example if you delete a section of road and draw a new section of road to replace it, you should add the new section to the same relations (routes, turn restrictions, etc.) as the original.", "relation_types_h": "Relation Types", "multipolygon_h": "Multipolygons", "multipolygon": "A *multipolygon* relation is a group of one or more *outer* features and one or more inner features. The outer features define the outer edges of the multipolygon, and the inner features define sub-areas or holes cut out from the inside of the multipolygon.", - "multipolygon_create": "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `shift-click` to select both features, `right-click` to show the edit menu, and select the {merge} `Merge` tool.", + "multipolygon_create": "To create a multipolygon, for example a building with a hole in it, draw the outer edge as an area and the inner edge as a line or different kind of area. Then `{shift}`+{leftclick} left-click to select both features, {rightclick} right-click to show the edit menu, and select the {merge} **Merge** command.", "multipolygon_merge": "Merging several lines or areas will create a new multipolygon relation with all selected areas as members. iD will choose the inner and outer roles automatically, based on which features are contained inside other features.", "turn_restriction_h": "Turn restrictions", "turn_restriction": "A *turn restriction* relation is a group of several road segments in an intersection. Turn restrictions consist of a *from* road, *via* node or roads, and a *to* road.", "turn_restriction_field": "To edit turn restrictions, select a junction node where two or more roads meet. The feature editor will display a special \"Turn Restrictions\" field containing a model of the intersection.", - "turn_restriction_editing": "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and choose the from, via, and to roles based on your choices.", + "turn_restriction_editing": "In the \"Turn Restrictions\" field, click to select a \"from\" road, and see whether turns are allowed or restricted to any of the \"to\" roads. You can click on the turn icons to toggle them between allowed and restricted. iD will create relations automatically and set the from, via, and to roles based on your choices.", "route_h": "Routes", "route": "A *route* relation is a group of one or more line features that together form a route network, like a bus route, train route, or highway route.", - "route_add": "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation.", + "route_add": "To add a feature to a route relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} add button to add this feature to a nearby existing relation or a new relation.", "boundary_h": "Boundaries", "boundary": "A *boundary* relation is a group of one or more line features that together form an administrative boundary.", - "boundary_add": "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} plus to add this feature to a nearby existing relation or a new relation." + "boundary_add": "To add a feature to a boundary relation, select the feature and scroll down to the \"All relations\" section of the feature editor, then click the {plus} add button to add this feature to a nearby existing relation or a new relation." }, "imagery": { "title": "Background Imagery", "intro": "The background imagery that appears beneath the map data is an important resource for mapping. This imagery can be aerial photos collected from satellites, airplanes, and drones, or it can be scanned historical maps or other freely available source data.", - "choosing": "To see which imagery sources are available for editing, click the {layers} `Background settings` button on the side of the map.", - "sources_h": "Background Sources", + "sources_h": "Imagery Sources", + "choosing": "To see which imagery sources are available for editing, click the {layers} **Background settings** button on the side of the map.", "sources": "By default, a [Bing Maps](https://www.bing.com/maps/) satellite layer is chosen as the background image. Depending on where you are editing, other imagery sources will be available. Some may be newer or have higher resolution, so it is always useful to check and see which layer is the best one to use as a mapping reference.", "offsets_h": "Adjusting Imagery Offset", "offset": "Imagery is sometimes offset slightly from accurate map data. If you see a lot of roads or buildings shifted from the background imagery, it may be the imagery that's incorrect, so don't move them all to match the background. Instead, you can adjust the background so that it matches the existing data by expanding the \"Adjust Imagery Offset\" section at the bottom of the Background Settings pane.", @@ -828,16 +828,16 @@ "title": "Street Level Photos", "intro": "Street level photos are useful for mapping traffic signs, businesses, and other details that you can't see from satellite and aerial images. The iD editor supports street level photos from [Mapillary](https://www.mapillary.com) and [OpenStreetCam](https://www.openstreetcam.org).", "using_h": "Using Street Level Photos", - "using": "To use street level photos for mapping, click the {data} `Map data` panel on the side of the map to enable or disable the available photo layers.", + "using": "To use street level photos for mapping, click the {data} **Map data** panel on the side of the map to enable or disable the available photo layers.", "photos": "When enabled, the photo layer displays a line along the sequence of photos. At higher zoom levels, a circle marks at each photo location, and at even higher zoom levels, a cone indicates the direction the camera was facing when the photo was taken.", "viewer": "When you click on one of the photo locations, a photo viewer appears in the bottom corner of the map. The photo viewer contains controls to step forward and backward in the image sequence. It also shows the username of the person who captured the image, the date it was captured, and a link to view the image on the original site." }, "gps": { "title": "GPS Traces", - "intro": "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports `.gpx`, `.geojson`, and `.kml` files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device.", + "intro": "Collected GPS traces are a valuable source of data for OpenStreetMap. This editor supports *.gpx*, *.geojson*, and *.kml* files on your local computer. You can collect GPS traces with a smartphone, sports watch, or other GPS device.", "survey": "For information on how to perform a GPS survey, read [Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).", "using_h": "Using GPS Traces", - "using": "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} `Map data` panel on the side of the map to enable, disable, or zoom to your GPS data.", + "using": "To use a GPS trace for mapping, drag and drop the data file onto the map editor. If it's recognized, it will be drawn on the map as a bright purple line. Click the {data} **Map data** panel on the side of the map to enable, disable, or zoom to your GPS data.", "tracing": "The GPS track isn't sent to OpenStreetMap - the best way to use it is to draw on the map, using it as a guide for the new features that you add.", "upload": "You can also [upload your GPS data to OpenStreetMap](https://www.openstreetmap.org/trace/create) for other users to use." } diff --git a/modules/ui/help.js b/modules/ui/help.js index 45e5b27aa..6b1e6b435 100644 --- a/modules/ui/help.js +++ b/modules/ui/help.js @@ -8,6 +8,7 @@ import { d3keybinding as d3_keybinding } from '../lib/d3.keybinding.js'; import marked from 'marked'; import { t, textDirection } from '../util/locale'; import { svgIcon } from '../svg'; +import { uiCmd } from './cmd'; import { uiIntro } from './intro'; import { uiShortcuts } from './shortcuts'; import { uiTooltipHtml } from './tooltipHtml'; @@ -147,8 +148,8 @@ export function uiHelp(context) { ]], ['imagery', [ 'intro', - 'choosing', 'sources_h', + 'choosing', 'sources', 'offsets_h', 'offset', @@ -232,13 +233,17 @@ export function uiHelp(context) { undo: icon(textDirection === 'rtl' ? '#icon-redo' : '#icon-undo', 'pre-text'), redo: icon(textDirection === 'rtl' ? '#icon-undo' : '#icon-redo', 'pre-text'), save: icon('#icon-save', 'pre-text'), + leftclick: icon('#walkthrough-mouse', 'pre-text mouseclick', 'left'), + rightclick: icon('#walkthrough-mouse', 'pre-text mouseclick', 'right'), + shift: uiCmd.display('⇧'), + alt: uiCmd.display('⌥'), + return: uiCmd.display('↵'), version: context.version }; // For each section, squash all the texts into a single markdown document var docs = docKeys.map(function(key) { var helpkey = 'help.' + key[0]; - var title = t(helpkey + '.title'); var text = key[1].reduce(function(all, part) { var subkey = helpkey + '.' + part; var depth = headings[subkey]; // is this subkey a heading? @@ -247,7 +252,7 @@ export function uiHelp(context) { }, ''); return { - title: title, + title: t(helpkey + '.title'), html: marked(text.trim()) }; }); diff --git a/modules/ui/intro/helper.js b/modules/ui/intro/helper.js index 37e257fa8..4c8cdb361 100644 --- a/modules/ui/intro/helper.js +++ b/modules/ui/intro/helper.js @@ -38,9 +38,10 @@ export function pad(locOrBox, padding, context) { } -export function icon(name, svgklass) { +export function icon(name, svgklass, useklass) { return '' + - ''; + ''; } From f719e1a9272a7343947492300b17aa13cc2c183b Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 24 Nov 2017 20:04:43 -0500 Subject: [PATCH 115/159] Fix extra comma and then run build for new preset --- data/presets.yaml | 5 +++++ data/presets/presets.json | 22 +++++++++++++++++++++ data/presets/presets/railway/miniature.json | 4 ++-- data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/data/presets.yaml b/data/presets.yaml index f0f13136a..d6757b63a 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4453,6 +4453,11 @@ en: name: Railway Milestone # 'terms: milestone,marker' terms: '' + railway/miniature: + # railway=miniature + name: Miniature Railway + # 'terms: rideable miniature railway,narrow gauge railway,minimum gauge railway' + terms: '' railway/monorail: # railway=monorail name: Monorail diff --git a/data/presets/presets.json b/data/presets/presets.json index fdd1e8703..75f448871 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13206,6 +13206,28 @@ ], "name": "Railway Milestone" }, + "railway/miniature": { + "icon": "railway-rail", + "geometry": [ + "line" + ], + "tags": { + "railway": "miniature" + }, + "fields": [ + "name", + "structure", + "gauge", + "electrified", + "service_rail" + ], + "terms": [ + "rideable miniature railway", + "narrow gauge railway", + "minimum gauge railway" + ], + "name": "Miniature Railway" + }, "railway/monorail": { "icon": "railway-monorail", "geometry": [ diff --git a/data/presets/presets/railway/miniature.json b/data/presets/presets/railway/miniature.json index 240a4d8da..cabbc299e 100644 --- a/data/presets/presets/railway/miniature.json +++ b/data/presets/presets/railway/miniature.json @@ -14,9 +14,9 @@ "service_rail" ], "terms": [ - "ridable miniature railway", + "rideable miniature railway", "narrow gauge railway", - "minimum gauge railway", + "minimum gauge railway" ], "name": "Miniature Railway" } diff --git a/data/taginfo.json b/data/taginfo.json index 65f60e1cb..e3e6ab678 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2528,6 +2528,10 @@ "key": "railway", "value": "milestone" }, + { + "key": "railway", + "value": "miniature" + }, { "key": "railway", "value": "monorail" diff --git a/dist/locales/en.json b/dist/locales/en.json index dfab15bd5..0cdefe708 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5149,6 +5149,10 @@ "name": "Railway Milestone", "terms": "milestone,marker" }, + "railway/miniature": { + "name": "Miniature Railway", + "terms": "rideable miniature railway,narrow gauge railway,minimum gauge railway" + }, "railway/monorail": { "name": "Monorail", "terms": "" From 680af26bf0730e676146d0a160c09b7408eb049e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 21 Nov 2017 22:04:39 +0000 Subject: [PATCH 116/159] chore(package): update d3 to version 4.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5291bee43..afdddf21b 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "chai": "^4.1.0", "colors": "^1.1.2", "concat-files": "^0.1.1", - "d3": "4.11.0", + "d3": "4.12.0", "ecstatic": "^3.0.0", "editor-layer-index": "osmlab/editor-layer-index.git#gh-pages", "eslint": "^4.3.0", From 0f9712b3808bcf1f673cf3efd29bf990f491202c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 25 Nov 2017 00:10:45 -0500 Subject: [PATCH 117/159] Update rollup to v0.51.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afdddf21b..d6fad1f14 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.51.5", + "rollup": "0.51.8", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From cfa17593678bd6ddfa11f225f9b6ad62d2a1b236 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 25 Nov 2017 00:11:16 -0500 Subject: [PATCH 118/159] Add scroll zooming support to the OpenStreetCam viewer (closes #4561) --- css/60_photos.css | 8 ++++ modules/services/openstreetcam.js | 63 ++++++++++++++++++++++++++----- 2 files changed, 62 insertions(+), 9 deletions(-) diff --git a/css/60_photos.css b/css/60_photos.css index 94f86793b..a71255e89 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -231,3 +231,11 @@ background: rgba(0,0,0,0.85); color: #fff; } + +.osc-image-wrap { + transform-origin:0 0; + -ms-transform-origin:0 0; + -webkit-transform-origin:0 0; + -moz-transform-origin:0 0; + -o-transform-origin:0 0; +} diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index c1df3415a..225ecf246 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -10,21 +10,37 @@ import { dispatch as d3_dispatch } from 'd3-dispatch'; import { request as d3_request } from 'd3-request'; import { + event as d3_event, select as d3_select, selectAll as d3_selectAll } from 'd3-selection'; +import { + zoom as d3_zoom, + zoomIdentity as d3_zoomIdentity +} from 'd3-zoom'; + import rbush from 'rbush'; import { d3geoTile as d3_geoTile } from '../lib/d3.geo.tile'; import { geoExtent } from '../geo'; -import { utilQsString, utilRebind } from '../util'; + +import { + utilQsString, + utilRebind, + utilSetTransform +} from '../util'; var apibase = 'https://openstreetcam.org', maxResults = 1000, tileZoom = 14, dispatch = d3_dispatch('loadedImages'), + imgZoom = d3_zoom() + .extent([[0, 0], [320, 240]]) + .translateExtent([[0, 0], [320, 240]]) + .scaleExtent([1, 15]) + .on('zoom', zoomPan), _oscCache, _oscSelectedImage; @@ -222,6 +238,12 @@ function searchLimited(psize, limit, projection, rtree) { } +function zoomPan() { + var t = d3_event.transform; + d3_select('#photoviewer .osc-image-wrap') + .call(utilSetTransform, t.x, t.y, t.k); +} + export default { @@ -302,7 +324,9 @@ export default { var wrapEnter = wrap.enter() .append('div') .attr('class', 'photo-wrapper osc-wrapper') - .classed('hide', true); + .classed('hide', true) + .call(imgZoom) + .on('dblclick.zoom', null); wrapEnter .append('div') @@ -334,6 +358,10 @@ export default { .on('click.forward', step(1)) .text('►'); + wrapEnter + .append('div') + .attr('class', 'osc-image-wrap'); + function rotate(deg) { return function() { @@ -344,9 +372,19 @@ export default { var r = sequence.rotation || 0; r += deg; + + if (r > 180) r -= 360; + if (r < -180) r += 360; sequence.rotation = r; - d3_select('#photoviewer .osc-wrapper .osc-image') + var wrap = d3_select('#photoviewer .osc-wrapper'); + + wrap + .transition() + .duration(100) + .call(imgZoom.transform, d3_zoomIdentity); + + wrap.selectAll('.osc-image') .transition() .duration(100) .style('transform', 'rotate(' + r + 'deg)'); @@ -414,20 +452,27 @@ export default { updateViewer: function(d) { var wrap = d3_select('#photoviewer .osc-wrapper'); + var imageWrap = wrap.selectAll('.osc-image-wrap'); + var attribution = wrap.selectAll('.photo-attribution').html(''); - wrap.selectAll('.osc-image') + wrap + .transition() + .duration(100) + .call(imgZoom.transform, d3_zoomIdentity); + + imageWrap + .selectAll('.osc-image') .remove(); if (d) { var sequence = _oscCache.sequences[d.sequence_id]; var r = (sequence && sequence.rotation) || 0; - wrap.append('img') + imageWrap + .append('img') .attr('class', 'osc-image') - .style('transform', 'rotate(' + r + 'deg)') - .attr('src', apibase + '/' + d.imagePath); - - var attribution = wrap.selectAll('.photo-attribution').html(''); + .attr('src', apibase + '/' + d.imagePath) + .style('transform', 'rotate(' + r + 'deg)'); if (d.captured_by) { attribution From c0040f3cd6a3aba9a19da876b5dccb80f6e9afa6 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 26 Nov 2017 19:30:19 -0500 Subject: [PATCH 119/159] Add caseSensitive option for combofields, use for `source=*` (closes #4558) --- data/presets/fields.json | 1 + data/presets/fields/source.json | 1 + data/presets/schema/field.json | 5 +++++ modules/ui/fields/combo.js | 2 ++ 4 files changed, 9 insertions(+) diff --git a/data/presets/fields.json b/data/presets/fields.json index 5c086d479..fff751e4e 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -1738,6 +1738,7 @@ "universal": true, "label": "Sources", "snake_case": false, + "caseSensitive": true, "options": [ "survey", "local knowledge", diff --git a/data/presets/fields/source.json b/data/presets/fields/source.json index b4411e47e..0d953e6e4 100644 --- a/data/presets/fields/source.json +++ b/data/presets/fields/source.json @@ -5,6 +5,7 @@ "universal": true, "label": "Sources", "snake_case": false, + "caseSensitive": true, "options": [ "survey", "local knowledge", diff --git a/data/presets/schema/field.json b/data/presets/schema/field.json index 504bdc442..df4ef642d 100644 --- a/data/presets/schema/field.json +++ b/data/presets/schema/field.json @@ -115,6 +115,11 @@ "description": "If true, replace spaces with underscores in the tag value (combo type fields)", "type": "boolean", "default": true + }, + "caseSensitive": { + "description": "If true, allow case sensitive field values (combo type fields)", + "type": "boolean", + "default": false } }, "additionalProperties": false diff --git a/modules/ui/fields/combo.js b/modules/ui/fields/combo.js index df1dc9dc4..875fc6393 100644 --- a/modules/ui/fields/combo.js +++ b/modules/ui/fields/combo.js @@ -37,8 +37,10 @@ export function uiFieldCombo(field, context) { optstrings = field.strings && field.strings.options, optarray = field.options, snake_case = (field.snake_case || (field.snake_case === undefined)), + caseSensitive = field.caseSensitive, combobox = d3_combobox() .container(context.container()) + .caseSensitive(caseSensitive) .minItems(isMulti || isSemi ? 1 : 2), comboData = [], multiData = [], From 90ed011e3759c334f26e5066fe81184a4dd0ceda Mon Sep 17 00:00:00 2001 From: tastrax Date: Mon, 27 Nov 2017 18:16:24 +1100 Subject: [PATCH 120/159] Remove the default building=yes for marketplace preset #4559 --- data/presets/presets/amenity/marketplace.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/presets/presets/amenity/marketplace.json b/data/presets/presets/amenity/marketplace.json index 3b2628767..503564095 100644 --- a/data/presets/presets/amenity/marketplace.json +++ b/data/presets/presets/amenity/marketplace.json @@ -4,7 +4,7 @@ "name", "operator", "address", - "building_area", + "building", "opening_hours" ], "geometry": [ From 52f25e4ba948b6bcb84e3900a60696663da5c694 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 27 Nov 2017 09:03:34 -0500 Subject: [PATCH 121/159] npm run build --- data/presets/presets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 75f448871..45a6e018d 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -1855,7 +1855,7 @@ "name", "operator", "address", - "building_area", + "building", "opening_hours" ], "geometry": [ From c879a9ee5dd423f078cd5b75fd401841136f88d6 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 25 Nov 2017 20:22:50 +0000 Subject: [PATCH 122/159] chore(package): update rollup to version 0.52.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d6fad1f14..2fde986f1 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.51.8", + "rollup": "0.52.0", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From 71361c78667f6c070c92d01b3f92d00e12a76102 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 27 Nov 2017 09:39:46 -0500 Subject: [PATCH 123/159] Bump @std/esm version to v0.17.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2fde986f1..ef8bddabc 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@mapbox/maki": "^4.0.0", - "@std/esm": "^0.15.0", + "@std/esm": "^0.17.2", "brfs": "1.4.3", "chai": "^4.1.0", "colors": "^1.1.2", From 668dcb60c215e11c6da284ae8f063f526510ec3b Mon Sep 17 00:00:00 2001 From: Guillaume RISCHARD Date: Wed, 29 Nov 2017 01:36:06 +0100 Subject: [PATCH 124/159] Optimised images in dist/ --- dist/img/arrow-icon.png | Bin 1734 -> 1393 bytes dist/img/background-pattern-1.png | Bin 89 -> 76 bytes dist/img/background-pattern-opacity.png | Bin 90 -> 79 bytes dist/img/cursor-draw-connect-line.png | Bin 452 -> 260 bytes dist/img/cursor-draw-connect-line2x.png | Bin 832 -> 512 bytes dist/img/cursor-draw-connect-vertex.png | Bin 227 -> 214 bytes dist/img/cursor-draw-connect-vertex2x.png | Bin 412 -> 402 bytes dist/img/cursor-draw.png | Bin 190 -> 179 bytes dist/img/cursor-grab2x.png | Bin 851 -> 848 bytes dist/img/cursor-grabbing.png | Bin 328 -> 314 bytes dist/img/cursor-grabbing2x.png | Bin 627 -> 585 bytes dist/img/cursor-pointing.png | Bin 352 -> 333 bytes dist/img/cursor-pointing2x.png | Bin 665 -> 654 bytes dist/img/cursor-select-acting.png | Bin 226 -> 205 bytes dist/img/cursor-select-acting2x.png | Bin 376 -> 349 bytes dist/img/cursor-select-add.png | Bin 303 -> 289 bytes dist/img/cursor-select-area.png | Bin 282 -> 267 bytes dist/img/cursor-select-area2x.png | Bin 515 -> 512 bytes dist/img/cursor-select-line.png | Bin 335 -> 321 bytes dist/img/cursor-select-line2x.png | Bin 1071 -> 673 bytes dist/img/cursor-select-mapillary.png | Bin 568 -> 341 bytes dist/img/cursor-select-mapillary2x.png | Bin 1081 -> 639 bytes dist/img/cursor-select-point.png | Bin 354 -> 340 bytes dist/img/cursor-select-point2x.png | Bin 685 -> 677 bytes dist/img/cursor-select-remove.png | Bin 290 -> 277 bytes dist/img/cursor-select-split.png | Bin 297 -> 282 bytes dist/img/cursor-select-split2x.png | Bin 566 -> 538 bytes dist/img/cursor-select-vertex.png | Bin 305 -> 292 bytes dist/img/logo.png | Bin 3693 -> 1976 bytes dist/img/mini-loader.gif | Bin 1414 -> 1413 bytes dist/img/pattern/cemetery.png | Bin 292 -> 138 bytes dist/img/pattern/construction.png | Bin 280 -> 121 bytes dist/img/pattern/dots.png | Bin 222 -> 109 bytes dist/img/pattern/farmland.png | Bin 206 -> 98 bytes dist/img/pattern/orchard.png | Bin 339 -> 153 bytes dist/img/pattern/vineyard.png | Bin 354 -> 155 bytes dist/img/pattern/wetland.png | Bin 301 -> 137 bytes dist/img/traffic-signs/traffic-signs.png | Bin 253891 -> 242443 bytes 38 files changed, 0 insertions(+), 0 deletions(-) diff --git a/dist/img/arrow-icon.png b/dist/img/arrow-icon.png index 891492c1b4e72ff6c7baba805f452c2cb8e65eff..f1a7516572d79cb578800df4ba8896eb0e222715 100644 GIT binary patch delta 1375 zcmV-l1)%!I4e<()BYy=rNkluW?o1er(~NRg4)hXxWXsIihFsAfi!d`z0whs4Ue*Sfzx zoPEx{a~*9A&*s8C_n!UV|MmK>bwv7fQOQU~Fwq&JE*%hz|p)App<=VVg(J%VLppl$%`BykH=7UGOe$W%LA{2 ztYSO^L`1lSm`DUCLIsmq%@GX4Sl1WG?RfH>VL1a65D^@0G>Z@?_aY(;Wks;1?LR!s z+Zdj0Nt|)S#D5~xp&VvN0*fO`;2Ftl7@muayE5cEC`~vKNw-Hh?!)+jGbrOlq%1iMCqgWO<3Vy5?Y%)hjH29M>^E^D z4CG6UbNr0*GA@M-D;5#qaTMdFQphnV$}_2PfvFSWQGb+9au}T$vvEY(E|=c13B_1+ zdCd1QATcihMj{MH$#D@QM>om=`X{CrU9kv5X~*+*G2~PfJ{SaZ$LOxUi=Qk5ZL-v?_oWl;|MJX>y?m4Sx;3y~KHx6ATGEQnrx@6H$~J;SQ7| z49n6usp(}X9VnN`;RC~D?I=WyK2S&R$8m!4c^e)7xT z{E0CpluDuc2Jtyci!cM_UHVZhAx~no(?tgzbZ|2Btmg!sba9L$C|k1_q@Xv^hVh6n z1%FEuD#=u;GgEzFcP^Oyd&V|d3q&N6EWixn5K6N!0naxK4gqo^RMW(K8faiX4b-v* zrJEdoV65aW<}izTYM9Lw3dQO~sN@t%lTb+xPgP*)O0y5gOgvpEr}2zU)#)Eh20vN|5yLENr1e z9mR7BV`8F71!tu@Bod(&X6Sp)GX@}pP+0=Hr|Tj znVxd!VNlvjyU5XvF)3(SPsoJlTolXZ7M{b{+-oz8aMa=H!qbg0A;_F7brvzNqknu< z*g6fvGbM>(R(h#U)&?CtjZz&Bay{}R4o@i$6*Jm`vYUQI=@O+%$t*m_$Z-l~k_ctR z9K)*MW0bFYnt3})j@229G@dbzSr}abv^qQ1W&PBNupYx`EcIRshS4BGc}bf{Qpz&( z<3ezPKOaC*w)Ga2ZFrP<#a<)AQGbham=3-}(?AvKU4+Fb#-S_CQhV^^SyJc$q^Xh* zI(27ea4M9|L2SleZR%5$4Ga!EV;ogHK{G8h^B9#`OLig*V{=fl@mC)vx1bp9ETVsp zd@M=3bUDg7U%u8Tj2m6)o%!vwv$}2lT3J<~QD8Em%vaXC^bK zXDLs!i#(n@%3DmowwH-&*70po2S^4ApB=XS8sAQepy#rdSNW9RLZkkIowTx$QP<-o ht&-cQqOxyK{|jG8vuqn6qhJ64002ovPDHLkV1l?+Z@K^g delta 1719 zcmV;o21xnw3dRkPBYyw{XF*Lt006O%3;baP0000WV@Og>004R>004l5008;`004mK z004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt1>s3VK~zY`g_mEfT}2hf ze>3|Q+Dl`htx{|2#X^z(H7K=KEk+6y;vev8n@A$XgclQ{HGeglXd0rnyqXXmG%+EH zJounQo4&vU2`1JSf^E@;dkab$N~>sU#a`O8XZFvBJ!hYD?k&0}C)sPuaT5Hx? z6J+?3Fmm5LFJm5o#2f8nL!9;f@XRm@I(p48{&Ci`jSwsxP(3s_|(ZhtX(#Ki?R7z_MLA2VBf!PU-X z+O)r4*jT&6N@&Ffae)WSCcoD43}Q5jl@FLr)~;$gg56Dn`^_frG6?lP-tBO2?Kopmo?0La#&o@jS zbi7C(xTO-8c-Yz(h8?xhWcHTgo?-EOY<$IRGMk+;yK__vecRq@HaR%}-D~oZ5eKz* zt4;pRizObDZ#iRfdAm4+ScnG4eB9*0KIk%&$$!n_(5D3PhbCXODUh|vX_McXvte4x zZnHMIsRg~=#$Oj(g&})xGWl0?Ng~TYl zLbT~Je&%fg0XLYtfWj!Q>4Lp34tmpM&+I?Diq($Wg-GXMul6~UJI3hIFu|3~5TG#n zEN>G_C7$7C9^>yU?gE-p4?pW=xLK{N`(z0@llnpl3#4P zj_?@!34DwBW`FWGceV1#{_F0>} zb;N4X;AWFYobs5-54H;p?RVU6GW%S5hpz8QYa2f^r~yWCtI4KRfc2f=Shn?!l5DOY zG?cU3^C$Q+@NFLF91saKynmnD_zwYDz|)-VqE(ji5Z@yZSi|&CgFdI+{=j7Ruy;D% z^{2y$qyJ{1_mp<%fGY?8H*@5-W3uGTU-|`CIB%$dY=vLpggZS@djCCLBifD2pH3#& zReJuwPdUmd&T$c0z`I$&E$kvw(eQH~<>;)F$vgD??O5Y(j}BFUwtu0hi;C?2_H@!* zX72wyM*&+|&sx^8p2bMy2q!qfai%ym>qIkj{XfwDwTy}}E^&4)$jHeMfd2w7awFYQ zLHa%b001R)MObuXVRU6WV{&C-bY%cCFflYOFgPtSGgL7!Ix;yrG&L(QGCD9Y#2PeE z0000bbVXQnWMOn=IxuZ-WNBu305UK!G%YYVEip4xF)%tZIXW~oD=;!TFfg@8jO+ja N002ovPDHLkV1nR9Fs=Xq diff --git a/dist/img/background-pattern-1.png b/dist/img/background-pattern-1.png index d2f2bcb125924fa13e23a9e4d657ef10198a6a5d..e3cbe81790868d9e4a70bbe40d57ea5ec59ad95a 100644 GIT binary patch delta 56 zcma#_nILJ*#K6FC(@W_EkP`NEaSY*zPTo=f|6jR5LPLOt4nw_wmdKI;Vst06GL2X#fBK diff --git a/dist/img/background-pattern-opacity.png b/dist/img/background-pattern-opacity.png index f24376283025091b6fbe5b8e64b2dd4a38d470d5..4ca1ff201e91976bb3c1a524921f1eccbb2d1bf2 100644 GIT binary patch delta 59 zcma#@pCD<*#K6Fizpg?aNQrs6IEGX(CeL7C{-4<3p=iOa=RQY(Vc)F~?MXRjW&u?& Nc)I$ztaD0e0szo<5eNVP delta 70 zcmeZ|njq=O#=yYv;LLjuAf@Q(;uunKYi^ez7XyPp)35(e`ggxPu=9YUj)QzYhuGY< Z0)-6~>@m}~m;n_tc)I$ztaD0e0swjm8Cd`T diff --git a/dist/img/cursor-draw-connect-line.png b/dist/img/cursor-draw-connect-line.png index 1228707295702c13b7b5468d62947714627f5151..d106a46e5edc99a6cadc3bd0bef488c16354c7d7 100644 GIT binary patch delta 232 zcmVP#nT*sa4enGlM#4fYuOugx0!ON}U4Ap3!^%3ZMVM-vHYP zY~OB&yEW8xeWf)`v!ly+mfDT)>0pdG<10u-!Q37i0j)YIWnmA8msAwY?V*9z^wkp3 zNXxuuZDv;li~FH`|Jp2|JLEAgh}dJZU-^UGGC_jDBVxBQFptfPKn{i@oO4HOZTtgU ihLOL39$HQymcpK93j--qBVFPE0000lH5B!2{RLP=Bz2nYy#2xN!=000SaNLh0L01edu01edvJ=R$90000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$RK}keGR5*?8mAy^^K@>*M zT{fXXVo9jfN*_Qw;u>CH>8PdjndnV6LG}TR*qE%AB$i4=V}D~Y#S%7qEnpK|2X@5P zFPY@#&NpZ7Wd1}|*(DKa0@r{Cj8*k*m*3k-Td6-9jU-8LLE4fto zEBynlnrw-!65s>~ecwMUch>9mM`O(WX0Fj_bQg=oW!al$*(WgefH02Z+H$$f%gq?m zDGxNpbZp)@j(=-F=mUA0rV3)Ah3Anz^ypk z+~b^K$3vRrmK*b)~LwnXGrL{vodPv=lXTEN4_;P~w3>B_mnD%k1y;E0#u3}Ct! z&<1-RzE6Sfz7<+ws`}yb9?p{_Imq)|fP9^^!T?;3O(XFI2ymyWGZ85UeS-mf0q~ft Uj$Oy9bpQYW07*qoM6N<$f-G;p5dZ)H diff --git a/dist/img/cursor-draw-connect-line2x.png b/dist/img/cursor-draw-connect-line2x.png index 9e45b4011bec391f79876a6d624f77b1c9b37d53..c884e568bfa04716a6cd26521c8865f95c69b694 100644 GIT binary patch delta 487 zcmV*`iM!A#7omOz<&@)z@Z7i07DpGwq5`W zU;!+E1+V}v9cuy5Vup+*0#}XO;LdY_WR~h*Su!*@WSY+okaDPo2%wrVLg2Ogb#wLf=p-q#wxR*2`;{K|l_7@UWLY#%;_Ppor55RKV@u z?Pj@zWr0|3x33<@#hj&J|~002ovPDHLkV1g06Hq)$ z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10=-E@K~z|U?U~I^6Hye$ zf46N~gktasOkC2k(9J|h0|ui{;8%z%ZBie=JuBZpu?rW*wSOORX<~#}##u?Cm_Q&V zK7k6ig|D_B9PmOioVj+O}O?U0to^a=99C8qcdnio=8VficH% zv}IXY0Nb`}Gk-HPqd-GM9t;|A5g=?wDTUv@XktH(Ek02V0ZlaoG}RE$R6{^h#R0f{ z%)Ur61{9IyBS4n@J|ig+K`C_#xPq6@r6bOb44{;n1Lh*yZ2(_@HzKm9@bb7jz&JoE zm5S`uOeV9UwSL=aOg5XHuh;9dQEj@e+w!Zsz>@?}0Ds2w`Mh=HnPiy`8S>9t?=-9|c(w zz&b#&Sd>bovIDq1magmdQYw|oPO(^QXTR$T$N(ka%rP#u>yzB$6CBic;Bh<5jN-lg zoCn6@f`2^!2U3CWn*bVOEvv1&?EPuE9eh>BlcT+^3_Z6@QxEmt!0{VCl zMucky;h?`^CMw*^;G{S_SOwVL-q!7gt*x!9Uu^`&C4o+G*TZme0j>d*N+sFc+|(Nz z8@f~~wKI^<;lT&Z76;8%819;gygJPINq$8C0W66~-5+<@LJc48^^x{tO1Cn=W&Zvf oq9YM!j*8l(j diff --git a/dist/img/cursor-draw-connect-vertex.png b/dist/img/cursor-draw-connect-vertex.png index bd2766bde58ee2b912b9ea6df0c29e6ad5b13d58..409c294dbcf4a676b19574c4180bfc6c2844132e 100644 GIT binary patch delta 186 zcmV;r07d`f0oDPKB!8VrL_t(|0b?Kn@BwiF5ElWl5(5=L+PZb?3RkaQT>>$ba?tSq z|9>zBu?L5NqXs%48R$Ta1|?{6Xh6fb3~<1%7LiVi)~{b*3~>b}MmG(YI*=K#bXovP zxRe?QG6Q55ENi7v>Sd@Id?ZK8kV=ONK>Pp{tWa8kQUf2@moupS&pzh(A4G%rlo|*! o430s3dbp5q0ZS+hsa^#D0MY;W0K$H*=l}o!07*qoM6N<$g5JDGqyPW_ delta 199 zcmV;&0672F0pkIXB!8+&L_t(|+U=Fg34|~ZhEstxhzHwHo5{tCuLA5RkaS@kb~4T{ zSy?td0wb&k10OSy;UnrKQABhKkA!KMj>)d-V}#mT+ZtmANbeAi99NLP!eZu|`%%wueHZcF&3c~|7{u|1#fCYMr+DH&-^C18L002ovPDHLkV1fWJ BR(Svb diff --git a/dist/img/cursor-draw-connect-vertex2x.png b/dist/img/cursor-draw-connect-vertex2x.png index e2c88221b264182b1da2430f190a66e471b120fb..5e5d3ca1c0acb898ab5d21d809f919dd378288f5 100644 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*Fy#*Z`jp*Z=?j1DQY)2v}HHfNW%- zt*wpBg|LqvJ<83^eemExH8r)vhYxFMX&nOtp!kUsCxB|Qk2x|iGkUb@xT{Fq0`jFx zg8YIR8X9Vv9I80{dCCfkO5ON<%A8Azi;7Dt%S-Cin#F<2PI|gHhE&{od-XJ5lYv0% z!+Bau@4V*{tN4Gsq=`|zuu#Zs*N1qs_)A+%nty71J9l;JLRHBnHp?~~d3$fk2NAJ~ zh}#DOIU+cJ9FA|k$nDnVt*yEIzI>lZN5PYt9G|Jo*UR6&i`vTZWa`R^ePLUjS4#z7 zIhMGI=N6}5!tq4)3ybCTR>{8Fy0G26kS%rz-`Z18Zg@s+c&&M=CC=i1OMHDAhmeKK z4W?#}(^ltS3ppfkJaTDsc(|uj>eJevi6<07uOD_ZHY-oN@%jF7;jNYYiGQjd`~!uT Mr>mdKI;Vst037C={r~^~ delta 397 zcmV;80doG51Dpep8Gi-<004~sxNQIc0b@x-K~#9!?b%OigfJ8a@cwZz;DEPqp*@79 zFmy5CLAoiDD+?=inmJNSMrL4(ikdzSw#3?j3NA(kjyi4rM3QZ=-N?gN@sGU zWLu2A1#VAyrYI{7;2{7H02M`Xnx?58$MI5@<;5WD5P&T(^M5>_>0Tj(WMCHpP$7)t zaC-zsU<5{B1V*3}Sp5R5#DR>ofScfupXxcaGL`SQyfPguT&m&9C=GW=lH`4D(lmW= z;n2rtOsk&E06d}rH5}D*ub3X6xPZRn!NB$8myM^DYPc74kOm^K@N|Cz`@TPi0)%A= ztZ|d)`Dqx2hJQM|`NReE9S;Ur46x=E%r8B@sXSJ&Z(!Oj-^>n_Hh^uWHJ1IqY}E0m zE><(40?l)6Maco(IF1qpGVbQ~T0ef=>8I%)!DqBBka9qcEOARDKbHnF%1#6dOtH`+ r5jemU*=F2Fz_J^){2{vh-w>Z&Bfv^@E@0;X0000>$ba?tSq z|9>zBu?L5NqXs%48R$Ta1|?{6Xh6fb3~<1%7LiVi)~{b*3~>b}MmG(YI*=K#bXovP zxRe?QG6Q55ENi7v>Sd@Id?ZK8uuF%d22x(YQeFiB0I0m!?+~E+MKggzIEmAEwzdPfkDw#kq@>_MTT6N< zMd6``&r>lflu|CirVxjCMBn8{gf^wL#27b{z99_QAJBLTzacc0&)8c9=e*JiIzUY?M-G;Pqr#O6$w993YFX))*`XdE$}H^P2^-}Pto#eu0iYHI`}aI) QSpWb407*qoM6N<$f=V?&F?90Q5R(h< z8b~UY5@vIAlM^3T6Vg=f*fRfB5HJ!_>Fn&}h98guEbU-$#6GPKE3@czAfoYda(*B)Icgj@qY`#v%Wg@5diUv2D$h6XiW1bzx}zdQ#S zAmBGx0_~j0B&=M2f4^80i^VAVo&}-MOCTPPr+hZ}d_KPMltOMK91e4xXB1NLfxMF0 z*w_#iRo3C*VZPZFq4V=|X=!QU{6VYGJs^F3ePYk_^t5Y2TU%S4`x|8_bQ4HhTbm$S zsd{H}a(|LSudPC~N&%UlpVvy&I~^Sz6uN(r&=Vkyjg7LqyDM(z;NXBV8Q`@GQR*$v zoNP8LZf0g?hC)$oKZINXpMeYw4N0j~61OriFhHSEoe-sNu^Ut$pl;;o=t#U?uUf1C znzcd%c>qf4pH^2_rQTUsSYUNlF5OeJiEnLfEq^!Z^^E1feOil<2dn_;>FJR|p&<3h z$;pXoUD>kUsP$XNbr1(KK0Yq>$i&11tFz|xn`<}t#hxgi&x_OS?ChuyZ*~%QoCr~B zR7vrSnwpxD?d@&Z+uM^wA|aVfrra0nl1`^(adA-sfdH!$G5)auxeLAmF=QG1Zz5#h z=rSSj27IarCP5aQ{X^mud<0=ve~xjBzZ-H68g&o=Bb_@05*y2600000NkvXXu0mjf DO5lg6 delta 828 zcmV-C1H=5#2Ga(RB!3!7L_t(|+U=N6NRwe4$J?-_*&v;VLWn_NAb}<#=4BTNyqMCZ z9Rfk}6cKpokjzsch_|4F+D^lxASkJkVy8f`LQrCVPBodEUe=njetnp~UIk}CH?Ko)$OP~Y zlGol*sG@zu^!E0a&lf!yQ`idWA1)LM@!BH_=@Qp~Pk-M>CZUl2_|?X)si{%pMc}6p z_sesT0Rn!5Ind0BOv1`_cXx|5u~>|v?^zHEy#(U%c*K%}sGTJ3Bj+$pEh| zM5(ttbF$g2xS5HG2?|B6GP=+e@EJ&7U!RmpC2=b~Jv|f}v=gG#Ep~(I3)GG5?d^%z z>s5;tK)tOHK^}mTdeh?KqEtIGGc&Bt!i9TkHh=Mrjg93dy^66OxKAq)@_+>(9UUD~ zC={d`IXE~_tt(sB8CM2!DzK<!{g-tIPk2$8&~8e4K0M0q!F3<2A zF@b6<$}%)fgPHc(`CX)2y5+2_-h&``gS86Sh_HEqF{a$Bs(FA*6 zFbt4onGw?WJt7Yk)Zvv)hf<0VS3$=x42_{ANf0`zpsj7&#!wVR2pufVoYOQlf*i*| zXs3hrgpfrf&vTHke5HfdBFy)FD9dvCGvhdZA#K~jYi4FQYn le}U5r0zU=fdKiX54*=(I%}zJEaM1t&002ovPDHLkV1j+*h~5AI delta 301 zcmV+|0n+}u0>}c8B!3S{L_t(|+P#!9ii1EDhC>25h&ezSu~D$y!UN<4)~Qlxk+kW& zg3X@51K2r*x`?C@AtZs6rii3)o44-;69zJa16lIJ2anPJV_-%{0Prt-MuahuQ;#_y zl9rFiAo?evMC6TV{RQQsK7M5iVO0q12{+5qrq6xwr$AO|K?kCfA9q_5^ z8VtjrmzP7I$R-q7AvMwGT_l_)F6~eiM7|Z4fTdFS?<}{wI5vXy4~*o3f`9wbCu41JonN? z7ah1D9nsJKjwpD@F=qsWGYTH!5+{UQE{ExKsw)%hxku^GlcyGJIa$#ms-${_}J?ZM@j=K?e+W9%JV;m?f^U;(bWRMfQ&fbGcgh(WU@pz16GO2%2(=?^*4EjK5Hk)AR zbUOMMRcB|=XMg##l@f^rRJK~JWXvzJ>^EV(UPEfP+fZ4r*ONgX$+AG%& zdv~Ay5aRJTs?{p^F4A8u^Z8tVQEoOHm^GWtP^nbl^ZDdDFUWECXhm@7HC-Vk-JnPG ymfq9fohb+6yU-~8h0768`PJZ%rUMuSqW}O9>N6t2J_@J+0000_L29khpjT(l?7)Pv+Pr-+t1wSR-Mvx!4Qi9~|>{k~o* zm15MP)y-Mn1ScT9UQeWd%;!d%QvupX;-|lC6O7^b-017SqZ8hkRnXXA69yo;&GE)e zgN!b0`YvDah~lGw88d&<*qjQKeE*f@!r{j2WYw zWA&0ewPa o^vf8bfBr4nTL1TB4f-3M16B~G5u)OEwEzGB07*qoM6N<$f&|Aak^lez diff --git a/dist/img/cursor-pointing.png b/dist/img/cursor-pointing.png index 910bc7f19ad356a3d551577b43bfd60989b1958c..935cff02a17259c2b1777599af884bc9bd1c9885 100644 GIT binary patch delta 306 zcmV-20nPs40?h)DB!3i1L_t(|0ko2VW`$4~#}gYg^a5iK5$g>apm!(%8v>Lu18h$b z>{ZHCR6=94*}^QyFtq;rzPWMk6`i^6kDoqre$K~H4v9&=Y&7=?m3f{cO;hl^PY6xZ zupDCF$XD`Gxas-7LuFacx8v_Te~`~>t7ArtinHf=tE-=gp?@Sv=EGZaRaN5ZTbz=$ zuIqn4WmyW{2SI>on&7%FWa#^zBg1a!*7todbzMV-IF31#?uO1ZP5bV;4zfg1#Gwae zfjh@>AWImA9J*Nw>8h%J^1G42Fbob|kc(VdmW4I4EW_r7tK=d_;9r^r$JR|I15r2;;<+I~BE3Ym}PR61r zig_T$5x?7m*l zTkmxZz#rxB4C3~vLZ8l6Xm2e++%8!Jg+;sT2s$F9QYrL$y?-<5bXua0))90<5+fw& zWF0|R5+thhjfQfzT%0*AK`P75nR6YKOeWFq_tmon{(I4x`%Hc1is=pNcDu^YSHIro zia8IO&1UnIU+gR>7K_>4rOt!YT_&jAZrj|YE`s>J1X6$T(x1!KQNtYtaUQx&cb5do zf9x2q&c%bc>wol=P6_kW@f^9~IOw^&aC>_j`}_M!kha+eaW`pV7zXO~I%LISQG1YO zSrYVpRnQ?J6beC|-|vUcwOTC+`mieK7QyH9L0vYRh0ay0RSBxuouRLUMx%lGbvhmB zTqcu|pci&Q&j`U_5Yy=tSG8y~DnSqJf=oIlR4Nr*)qetkfCL>b4HDdA!p_bP#^W(` zPTs#ZH#a57>ms?CB`Dtagg9%5h9TYbS#lbNYKkmJyUZ&`a#I$a&A8^ z=I<`Qn{J2v2lR_@aBzS^p@3$yiNRoi$z%fF#kw#?E^$>KwKStM`K=F*4CVSkeF^^&B+I4G8q~UhvM2=yk52DzMvuBv7LbW z{l0K~^ZDW(yE14#pD!m|*c>RCOs?Cd)U0s=_dYzJX(Bg5fvP_x-2 zo=T-69i;0zgMMrR9U+QFqa;o+7?cX?bUFKFAzl{5t_|rw5v%Z5)6904S%GfQ$(7k?FBkSu14M4OntcC#1?@cKKSI9|g+d`Jm&?>{w`nvQkzp8%ZM=0?RjXCnxYv2ixVKDIg`Sbq`4GsS#B_+QB+Od_bLudhco03A1wYM>A(%s}2m7)Uvo0V)hLsv4*XiU7EQR02ED f!fX_bf>8hf3(kj*w}s?p00000NkvXXu0mjfBcMjR delta 198 zcmV;%06G870pbCWB!8(%L_t(|+U?Q734|~Z1<*YRxqC|qHjr9`6r#7J3=2pPyCs-D zgmfU};`oQ%fCPli#>;{OKZ43*X7V7SOY=VP_+&*0|v@%;O_46`Tzg`07*qoM6N<$g8zhF AGynhq diff --git a/dist/img/cursor-select-acting2x.png b/dist/img/cursor-select-acting2x.png index 7611328eb40795c0d27a788748e925420ea53b8c..bb3e24c40e1a25b7ccdda994b88c206759047f5e 100644 GIT binary patch delta 322 zcmV-I0lohC0^I_TB!47HL_t(|0qv9_Xv07hhIh>+fy%0gdZ>qN-fUhK;-TJbE+^~F z<_T=xY+f}U>Y*a4vLY1v_V?gH8F!_Ob!Qpr-R9P;K_*w{xb${ zd2*x$GAo`OsXKvFxaY}{7Rao5a-;^%;SrM~GLU%-PKhAy!g2CZ6h%=KMNt&x6Yen{ US(AzYAOHXW07*qoM6N<$f{n+RG5`Po delta 349 zcmV-j0iyoh0{8-uB!53iL_t(|+U?iDiNZh>#_^qGl7L4~IoN;=WVeIe5`;8h2YO46 zcAy0Ww1eFeOanIHAt#R>g5cYaVZwkU1cZ?%ya)ete$2xMeh?As-Uo=GhmL50G*6)G zj8*MCEM^y%deV%CVtvK*m}uiqDN zimrGO^U){9BhVpt$h-(w;2hntu3kWrB<9BvMGrPz69ka%* zC+%%)ZD210%Wm%<%ElY+IB&8azVdv0+`V_MmWmo^h?H=wg-F}BD$6qEy6%-~JHneQ zY#;HD5ye6qp$kt_eX%4dU6$5@G>NDC)Z2Qb~RTJ%jWkM>exb2}e8UDPa%<7w|LT zxOr<~6h&wLoKTxBjN|ykg{b}i%8M_>_SuN4sx~?qdeEzJng4nZ{kp{m36g{J00000 LNkvXXu0mjf2SR_r delta 276 zcmV+v0qg#u00`ek3otBOu!c!Nw;+qNX7B;WVn{H$QYrNR^|)2r(`D$A0RB>8aWvVTPAV4GOkSfMR*g-UwP z^L!}KkxPXhdWLP9S7a6{X@Q;%g1gb^0B0eg-UAp5?U-Y50BR`p z2yhP*ZeT*=INxB@F}RLID}VBuaeUeR8y4RRkF-K21ha)m*L9rdIfr3*kl99vJ{7i* zUDNkH6A{O8e3aixA+ZWGoJ?mJ2Ck}#(= zu6YyAPl?Wya49%}Jh;oQN`ePaLf16ST1NB=?2OW<>{Vxz63x3k>p$^5vxG{ZW`E(Y pAH{=B=<2#&`DEC^uE%Bn^v*B#%rl+$3Qqt4002ovPDHLkV1mAyZx8?g delta 254 zcmV1gb^0B0eg-UAp5?bu^*0BW|> zBe3@{;RYt#IR1%{;22$2)XJZHcC-Av%+A1yh(7Au1IyqJF5qY}kY%l0u$~TuIZ`B51c}4^z04@tziXgj}>PnFyjFTpfbj6vDdH68O}bG3>~LE8`fFo zthXl;D2KHOC;{WyANa$eeCxAOZQE{qFwSt+0}TK5t{#yDCQf-1b_sPB!9|oy8<^}^V zOZKvLgsqpYiYVH_4hECaAcAM#6~8jB@5r84?jPOVxuh%jd45VBxQ}h77gLV*t%x<@n@pvqaMt_5%XYd=m1<^AFSKxAT zt{jg?nNFwD?RF_@*?=LaK0~k%E^F1|SpObOK+~sS47T>8cCC7x>py{?;I)??L_PyC z#wcp~`h5x3!NH!0{pkP1rywPN0DB_A3bw)7uFI85rE>Xmlu9Lu<5-Htq7(`RiK2*d z7UN5hl7DVg4u1vGpqy91cdQ(*E6gAmfekAsG(k!ZSvi^@QUg7Z0F#mAI;*A$R>7W? zb3>4FANc|NalU1NbFMRMPC0^1SUD+zJzzSW&Zp&a`9(xb7VHc=>nhpP1e@T*%5e#D zt&7EClvR${SzI?|(jy0~-+33z1#`h% zFc-{=I()(V$psT&X0zFcN6Fb)`i1pQc;#=kTFHDqe=j0mvtVb~S^AY<$N6Y_Ao`<8 c$N#hQFKMM(v8XkT>;M1&07*qoM6N<$f(Y2+sd_J^-;=1Ua+Wj9RT0WwTipU4vIp^+J%dTrR2C>wi(HRASK`_ypG=IH%wg z=$$*1&1OS`!GP-Z`hNT8pbhfp5Nrb7R%6WVUx7X-yA%w;0uR+~HAHIv7QBN?Cvy;a z1f-NAA!7So2^PT`JE9-@hd32v$v2>P#8<&8*hTF+lw2;SKaNZ$Ltz+FI-RCeDn&sM zuv~<4CCHLrrhk!xbpe)hD|o{r$D)N!1p_eWk>i^nOSXCBNPDK1g{Ko9%2ZJ$b!;fPXtYZ1_9&$62U|; z5ljRf3nqj5p9;z(f_z{d4u^LqlGC;J53E-3k-t)@bVj4mE!LiGh-yT&gd@L<;nH+U f0one~0>J{1B!37=L_t(|0kx9>X2w7eg^Nf?1OfyKKrWE8gaBa=P(=%5PZ0s7 z1V934dxPX2B?o9*7CN2BF0qxa{n!6^Rwm;!^OC)}mPmVLH|!`F2yNR&ZQD|kB=1~% zU>BDHSHO(+eJ3d;m1X(O??!gz3v4i%Eu|Dq(?oS$|8UQX4}UPinwacNI%6+A_I-Z@ z*p|M)0-0gW129-4GP8iUY{8Ze3-sE+3Ln4%ie*{uxg`HHdNlNpUaibdAzjzKWm)!# z6VJ|^UBEO=zla5BFmM=#=QxfPpurOYhN+%drsfHB!@Pl53+rJ`0}BG`;0aIz2%a#{ s^ADV%KrzqrogeGRMh|-3IM1v13wK1w2^K&+(EtDd07*qoM6N<$g72h$oB#j- delta 308 zcmV-40n7fu0?z`FB!3o3L_t(|+O3mM3W7is##@Mj;-;OO_FcfU1nvY65G`uwoI+X! zfook>H_&?o9-u$qrq}z(0hy>trw=|y$H$NFJ)H>={nf7vFP$s)f^8WCp}MXqiXw6x z=gfO+_H-<;0!*rD8WKWK5CnIAw`I?V0vAZ8s%=}!^PIvke1CAwVF=Jdn@ILa7|X9f z3EiY=+6Sl>LxEGw3~lNY>46fu#mxFZ){LDXp~eYnRp1;SKmjIYS+4kAd^2iL`xcpX z?9Yt#5faDo$@9D`Ry?Ej>pXNo*L82i0@N6oW!c`g?G{kugn%K{jwSa-169~)AlgEE zXj8(BfZgB;P%Q~CPU!po1*<7ADT-pL`>|1jS`Bdc(R%`A-~a7TgLk|D00008FclY9b{J3uU?$0^y z`QJOY`G*m|aRv@SG^m1-1vm!#fe@6LPN$;TY>Ie1E=8}vD}Qhh2tk?Uaw+=#z9Ihku5SN1I0AdX^Be+qTTRhy|0OsDCE!`2V8MrS zTg}mK|2236?gCHp1PI4*ggJ)o_bB_|iYvm0{zW_&WL^WVNMHpIzzw%cmqa4rz8tYw zOhltm5s5@ZIDZ@#p-@PbbAYG$yz9u}eFF~gJP-6ojw0xDLf~8;IYAU;j?^Q^AeaIT z&;gDm>}a^1hU|e$^~l*F$fC#c0eEpvY*0kmX_P!wj+|YB4HnjFweDmxd5XU{Hn4+T z>~y;gDS>Nw;ZoOWg_$sK%@y(sj=Pxw>^Fh!c=aZmW z&PPGBoPTeE>V(MW^B1X9>ZeA|FG2l;$Ye4rDd)4GenN2d_*)N4LB7z9n=Zor(lOg!{P9eEVqSS>IbWB8Z4_;tDVtk^biktW&=CerGE0;=GWkz kCMse?r-@uZuWly*=P)n+qws|Y00000NkvXXt^-0~f+aRM7ytkO delta 1051 zcmV+$1mydn1+NH@BYyw{b3#c}2nYxWd8K$hUBsY^u4Krf6vh-3bRp8h`~exsqN~suvYbULD1S+IUDhr#BVCmWE~L6_ zp$k!Bm^h`I2Dc&+B0>v&8KX}#IbBSi#P||pemP$_@P6EP-{+ol?>YB9B_e#xay>M_ zUAhKTN=c2qQA#~iO6d;?h=@=Lv(&L1@GUT6x9z3f0<@LMWF#C8i(wcx=o#<|c>GZS z+REqi5{t#e=YR9rpk?4U;7dUD67UTmnM~#uq=<-RS+cgaCc$8^I{XK~b6}tsfX@I4 zhr^D5)p7{`Kfw3EST_N6AZHkc0{I;v@p!x`KwD1X?-t+) zaOU&*#Ime=LE7px;EhTmBL4!voSdAnv9Zx!g6))UxqlQM1La^a=;)!ozCJMwL)>n+ z=(;YNrisht5~Wo2>W+6M#8r^LQzzwALDaL3!8HQ>iaIHW4$rYx0TpoIlyZ6v=(tl6 z5m8G0czJpGYISv$SS;3X9xJ6hz&!9N;Aw3&T&n;a0)L1|K~+5F^wI$!=kxhSj*gBn z48y)|4}U^c!952C0d!q&YmZqfmCBXFGvIaI&P1dL{M1CsnFj^~fj}{xPFq)3SLJpr zolaYUK%iI|@O)hl0w|@%fWu%gsAn=6`wMUXPTxKjeka;`2GGDe!u@kG#Y(knxO3JL@%z9yX?c11vt%;)w7;sE#UXMBA8 zo8#kSpZ%Otim|b=lUy#hYM%qnX{ML5EbIDM)3j3U{RaWeX0t=4X$}I|AqEJALVwn_ z?SDC7Hk%!qo16REG)>R&@bG_LueYFST6tk%;qB7W(!qlQ+Hj|*r=N_Dj-GCBZ~r_o zF;Q&vOwax-v;qe`0&EoydH~oC9CTq0nx?5OE-rq)wY4=_E|*=!VzIwaC=9g%*A>9p z3UP69f!FIbTY>8e;O6G$B*6LkIq;z(41Wv^T(klQT>#WH?LFMA5Qbq~w%T9E7fC1- zdJ7*agdJw53el`O?!iPN@weOUe!srHJ_%5-LNu#R>}Fm9o}HbYcQZ3HLv3|d(eCc< zyV=>YPoQOAAku}+qReVNsob=gY-up z*vyWHilTT7g5VA7Z_?>GGa+QS4C^Ao#XIC=S@u*_)$ME{o*qjn#Pa;%J(_G-d7^p$*giHR{`vMV)p5_c%fb{?X N002ovPDHLkV1l@+lPCZH delta 544 zcmV+*0^j}B0=NW_BYyw{b3#c}2nYxWd^H3DV zpHmANq6xT#f>Rb<3k4@T6uNc@LAYa}@9yH7t`-D~L%WG|5Pve<@#Xa&&~)k|cI=>J zd!h9MFBFeUB5nLgB0lgyxcBhmx#!*!VrKlNN&rAa9Q&Gx_KB$cV`7|;nVG{dWFZ7= znsx`^5WprgqlgpWbr^=6D2gKXeV;AMdIr!3uw4|mFNEN?NC-Bj+YVoAk>!n|MQ%Y%MC6iJb0Gca6X1*PbMwh9cRa&jq1^{@T zw`-c_f#-R<>3DHXg|bGEi2S6+G|hwge7<2A#=~qjJAeM97U?5@E5~uJ48wSE9OvrG z07Vj}<+^UY(P&KD?e_FX2|Jz6j_bPh1QrCrUbow=uM}mD65unlKbcI9bX|V}z_x8q z0dV5MU~tCFJ^(*Auv)F&EJK!U+x9d8=05Ubu~_?RPuKOA%3-BYy%$Nkl~!Qy2aD@f_YczrMfwJ-g*U zMk*}8BXH9y$ZS9lc&QNNESF2!YPDoOpJ&kkd;kxr5aevPTYuT__hq?UX3-<~23`T@ zl7b5mPEMEoelI7JiEK0)(fU{53ETnec?4mtrfBNlff2a3Dd>U?JxaBjqpkk{K7$vw zB;NulgfQEg>$egQ1T+zP^o&>+qnpaM|;C17G6|bB$3R0dTE5{`G9QdFEL_#{i5AQVO4(xd4 zsDg@Immk1~Ge|;2w0nx=NL@J^K_7@(t@dUu%!Z&T zT0xqcDoAHHK~DNBw*QgX5Hfa5$WL-rotmBh_&rJs`bQb|9j`dhp=E5-K%V!Dhi5tds#nlV43ut@!Za z!$m*~YAC@VGeBm+oBWgmM5l?07}04W7tpKQ2>|TvijgUv*)IS9002ovPDHLkV1f=r B86p4x delta 1061 zcmV+=1ls%m1i1*1BYyw{b3#c}2nYxWdI|$xNVR6{cg_f}1f=2DBMaP!~!Iv*_xj16fA~x(uP+NPiOC6oOK^nTfM$sZcO< zU7?#QF-$B%>0%%#I-1hBu><2ILsUFnG*8~d{CS%9bozq>?;h?w`R+OQ-rTE1gm+o4 z>jvngGeD)3G}tqx)I+6|`#J#;5$a`@7FGhj0(?f_tF&`~h6;s(L?RKWN~p(LZOhk{Lg_$fafXz z9|97IM4AGc)uj9fz&F4hCjs3+Nz*hbm&+X?MVglX82AaeZ#!Te@@qhn$)qJfL(R(X z6rc~N`2BvV)oK@lG-Nm6TmK{?@(=Li{{BAMY__`t)_*RYODWt1PD7zk(+u_X^@*lw z(%aiBZns-{dV0j=a*0yPyt|W*l-LBhOp7DO1kuWDgKG!)87+<+Y+hrR1ysQEW=GCd z12(;>h=?eqzB@WPdYs8*NF)+%*RfK{3rqnY0p82)hBF-kJHW3Za;WMVYxbiapyc=a zeY?B6Xn&e!_>D;@6Wk-l2=8nLz-h)E!_a6biWug@WNTCSYVR26)%j*4~VajNGu8sJ6=I z^KV8+M{fX!ZOb7de*r(Qudkz&I)ejJrfyz&0n#2XJaSevU;fZWEJDyIbC))LM6fl)a4Ti(va{vY$z}D8*2MY@e zAGV6&Sc!|pqGxDm=*vo_;?Z?|Woc>Yw?;Ta0|NuQo12^8H^g-oaCmrF-`Lm~G}^kZ zuK+Z{8OmfbKbY5|qkySYYA~5h>KBRAn14mbHc7Eq^rX}22NxaJYAxCh7>Pt4R4NtE zWyUt!(Y6C_Z*RYU*|7%)2k$ldYzK_T(Qn5li2>e~m6g|H zV`I0v3Rc(Z>gwz9@$p-9y0BW*4nQ;-m0T|O3OMP;a=F~AXf$eMZO4ubzV&FbQ63fG fN!Nhj?6dPT&K|pz0ZDoSB4)D>6ub?QxJy2GFpT44oyC8D6*Y0z95p*pCT+R6>Xk{p_SUY!x0knVG)tRaurQ41dEK*L8iZTXGF%Ch5048#}vr zaTtcXEXy8&dim_Pd%lqQzW+X76g53-A*Vu==XnX#^sI$NQ9PJJde%Y^LcAdYYNs7S zk|gykq;?jL<1#3NAb0_4XCbt0dk@q$!nmrcD_&TG8D>{aHox8%()PXEbsIwx00000 LNkvXXu0mjfP&|z5 delta 327 zcmV-N0l5Cu0^$OYB!4MML_t(|+O3l@YJ@-(KvOK(ZzDG8*8_N#1#1rw0w$f4))Zp5 zeI%upn zVHj%1ab9HZM%XSDo{){vwyjo5Y0vZC<=#Qq%@yuhnHgQz>3^aqbPxm|QgfUm+^|hn z_EXT7KMO(PHc67Hz(mazZs{4@w6Dl69Hj?(HWf--3Xz~JMAVwX9Us6DMpac^ORj!{ z8ftmUls-*+b{@a!`~EIX(?=km-lNvu6ND3)>$-2e5XhNZEM!%PvMeiroVmrqJkK9Y zA#;m`AV=#J5kQcy>LJ8&T#Z8V)xu#Il<)h`K)zZCP1D>1`4VANmgSZ0U{gb_ML7T0 Z`vk#}^}j!6bE*IU002ovPDHLkV1mQ#nT`Me diff --git a/dist/img/cursor-select-point2x.png b/dist/img/cursor-select-point2x.png index 99bf39fa4451e561ddf98a916169d9abe8d8d778..020df5b9cfbe3633b5bde1884692a3f98318955e 100644 GIT binary patch delta 653 zcmV;80&@MW1*HX$B!6s4L_t(|0o9iQgd0H=hP%lm;b?G(;0QrDK?KqQ04)MSI1&IH zfTr!Gl&k{>XhBOAA<}{Zv?v;}aRGo7KwSy+pqz-1>Hp)w+GL`e&Fnos#@q4sGjBaR z546^?=KcsGw2y0W22@-Hg&S}Ij$y`IkJ z^CG$iU%?aL98&Na@Z@w*ESF0?7z}i+RufS&1LxrA5Q1lbZPlg-X#Xv^0w+-lDsaP> zvaRL_Z2t;;0*@k@gNQEBuIp-J7}_6|;4!%4iSVWW6OjrM#CyOKiLKx%ShHP0k;!B< zztdDIrIk`TnSV^`L?WRb#}PT=MkYuQ-!_dL<_(Bkq=HXnG8(O^xJ;1Rf$k+VTis-Tv-4&f4Dv=J?F2AWz9J=a=LjYl3X0$P|mk zU&G<>1L0co++$6U-GQMz0000E1C+8LO`CN6oT~#iZMU+gyDLB}N;0ai@RTEzAzXccI zC`dsYT=S-Et7qujzW|@X<3Q#hq6L)WI2tv5`-2iZ1a~|U-t-?LP(hLW0C*yy6+8w@ zw#zFLiNxy15r2!tlx^E88jY$*B%&^Wv6FdS7jGT>v($?W{cz@JQ z39^+Ulgs6XXjr}AS91GPY$*Z00000NkvXXu0mjfHt9D2 diff --git a/dist/img/cursor-select-remove.png b/dist/img/cursor-select-remove.png index f5f012606ee45897fc99ec0da1c1090156cf67c9..f3f03dd1adb990274520db3cef8c50545d33f927 100644 GIT binary patch delta 249 zcmVse1!#0CS#1DrfDe8^9%Rve1rk6iE@*@iJh@uwpCR<3nbcC z7-43(=0i9?HD)G+OGYu;fx7jIBv^nDs;=wST+*LFkCnb;FJ@+6a^s%!&k55sJ<87s zwaLOP%MMbAn!oVxmZI9WUAbiFL9biq`RiQ)GXvM3z9jE800000NkvXXu0mjf2kLl^ delta 262 zcmV+h0r~!w0-^$tB!B5iL_t(|+U1im4uUWgh8;-Q*;w2mojD5$a}Qt~bZd{n0hnRb zBfu4mqX{=K>EiSK5fW0PrRZY(lb<$^KVM#7VMRn=_2a?I;Fg`UgO7nw*L74B1%+XF z;o6QJEd{oKjq3ZJwAK{I@s;0|?8FzCqcdB^7^ntPdn8~jJ(=$={!V8|fr0Q&!WcOjk+lHoF()&Kwi M07*qoM6N<$g6<%FNB{r; diff --git a/dist/img/cursor-select-split.png b/dist/img/cursor-select-split.png index 1d2b82ed2a1294629e866ffdd0b1e03dc253183c..2a6120ddb8ea3e3189025cf30ac6ba35072f4783 100644 GIT binary patch delta 254 zcmV-rF$A zr@|UCm$q%m7(;2AUin+aWTC(Z%>ffdJ#s2^CJ1Lt39y!g86H3omaEERWE_W$ngecz~fR z)Coe55N!i*5V+~}e)2&KG@}_oKYY%h!^g}&I3uF3@_g{nQ!^PepDaY0rlCB~DGb9a zzuPj=r@|UCN!zwmmL&O^GN~t@qIe&~1&T&la>|IdHP@zb7 zTI*MVO*vK=p)(xQwM zFn0=VCJQ~CXC`6+q%#OyNT-8@E2GXnA=ZfScSrt@Tegu-rL&1b|F8D|l|fA$NB{r; diff --git a/dist/img/cursor-select-split2x.png b/dist/img/cursor-select-split2x.png index 44f949bf77666f4b4c8fd9cc07fced2075d90d61..37a3d07e558652c1c0743f7cecfec2ab69dd72ce 100644 GIT binary patch delta 512 zcmV+b0{{KC1eyepB!A&aL_t(|0qvJHtQAoZhFQnmp~dT`4K5`eZWY#I)pP3$+}+)J zyiZ<>J9M}m{<+yfHfOP!CD;DsyDneOWd3Bkl%p7v;3k+0{CpK;?t}H9e_jZ3Zr!?N z7A#m`!Z2jf*I*MEmluMZ$B!SI`uch^bm&kP{Q@q5nZN=6Eq^yb?&NHF|Ngz%zkk1} ztgIwSrW33H-9hG=3vy#kP5Ss>f(|eeWELOXr$42!{x704tTfN5xGFn<&K z__IlW@S0A9{`6mxwIF3PpcBbk!ExXVjmwrOigL>l1cC8=-*}#9T-P;@7)6`Crs!!Lp#GCslh+y(jg1P9FV>CiMs|JHG;lGq^AuzXO#300004ZM?$u7=|Ti=|B)Gx!^n-!j7{VZA6#U(^KlRNmswFt zg_^%3h$u!Ilz|mCK~4{xf>bC3-E=w~RjE`|EEaP`hu{Kae}7ewr{C`@+qP9Yopwbh z;0cs~u}Hx-n4X+hMx&8xwOT5d%gv6z3#uTo2*EO#j#U${@ee=~WP%j5K#yKZWA%)F z{9|wfwgTxvK4mAE4%v02>T{eKY5YvdL!sAnlC64dvcJ&R6| z!+KIK$a^lfYMpz*1?N4-dr~aOdyZZ%f%l|T&g4BOh4-Xyf(Q5ccfSN_FD57-@kVLw zYX2_(cKotE_JT{ydye*?z1WETyCl+E%r8l(Yi9XRvK0Img1jer&q)P+?@8WsArO>* fGzkd)vljCU+sxdwOJHQD00000NkvXXu0mjfV^H$| diff --git a/dist/img/cursor-select-vertex.png b/dist/img/cursor-select-vertex.png index 781d8b4d797087d507f6a93c3f843082f600e340..bf6efeedbcd95486f38762fea2f4acefa98fd9eb 100644 GIT binary patch delta 265 zcmV+k0rvi}0;B?vB!BBkL_t(|+SQXW3c@fHh8+ssyLD*xUZ7_wbj|_9LAT}@?II4H z+fk3u-b3vTgf7PSQ;YJXh8Pt5;e$u=_()#J;#<*oS|TMpXCcycozAjM`@VmqwKWlZ zDr_N}()YbqO6f2RFSJ(>v8^!0$#{lg&{b9GBuTE+v$qj?xPK;2Hj{D2mf7Ta{w&}q zTVa5i;hGPjdkV~q2?ZeuWk8~r3u8P06UwG(RcRvEpb16Wwj0jnJ5YmKyroM|^O;TS zB2a6X$q$58RUM)zx&q|RLKa=rr-a;D7{~Eh36VPs_Z$!bRaiskArJX<0j*Kfb6NzguzwZqz)YpO5e$W>Whh1B z|KM-jf^E7h!BjXWdD2d4ns&$UL`MB}ENGW!B?e zoPs=4h=M$vf_Jgrtl?e7n}%7X98Y6MwBy~;twLyr9q}~EnMRr_8O2PBL?MKZ*DxN1 zahXhFG_Nt!VqAs(m7IVzno2pIL6LEiFjNFZcn0PAB!3Yr?{hUhQ<1e)5G%AR)+-_- zA+p3srMwEIye{}Odm_)N={VO?6dR54hMF#q%9@DWONuz?Yg>eumo*VOO7GDWu`7a8 zAr!JG@|D)q+uCjs=LJW^!KK*~iQ-s@8l1i~(V9pM91xrP{z2hPMLwpe!ml_1$J5o$ zGNrh?A%C(5o33BNx$*#dk1CY%-b*KF?1R;YCF;Y?T5cw?iD?POV)RK}#%OOMuY=z-jr3Kd4_2}o zJ?=%M1NbfIQxHCL6RXiC3^0rA#WF=u0O7(mcrV74+B)=J65hgN@_HPHBF`ctz{knu zW|5~^mM0+GkcY>wmG3CQ_aBHFnTspDEvtBk<^0wp(h4hBmhCKvsH~KyNnrvzvRq+w za(@@umStFnwiZM{dspEF|h+A{%PisH7Q&FXI4q{ZGk65(fsuA<{w@S*oP>bGDMF;UTQz(SwBR zDCrBXu039|wlB^_IKh1U%BuCU`%_Ou-G5Xv-WPZJ(q?sFv|EdC^4icNdYdF)S-3`h zl}z`=4TGJDFv{9tkyfqqy=!n4kNe_T6X9H>Rq6xp8eD}x;|o zF68^-_C@G9Rm5=|!B9kKKdtQjl8Rs$-%hqKf}2$l+MWbM5kWt;C7V+sXR0D{A1N3{ z5p&nNqaj4-bWNnRo`|_?83y~%h8gTq3sZ}GWH8u$n0{40RjykOk-_xq>w+jSPw6^8 zlBkEL1<~ga1tK&=8zIk1kqC2$;(tA8v?PL8HIYlDFspD4?_s<(5!#+rsxXr!9>3J;Ob&Dm2o(`v;8|A4 z)3!zE4fHg2;0y33-lLD`bNRLWp;G4|^RwT5_@)91EsFe1Taz$>!SV?_gBS5?oeu41 z+-FB8Y~XE@WsxxERtmg9r+;Gvgd0j3chmj!hR0;6Y8p2bH~BgoYFsIDydE zDjoSBY>sW{Un#$@h5p#&s$pFv&@t2t{V>=WPK7l(R6M4`7?BvBprBQG6WuEFWIi29 zv$b@qEt1zJ&@tFGu76Y3y-Xy7Cn%^Ip+O;0L$E8&}deB*M00000NkvXX Hu0mjfKO(Jg literal 3693 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 delta 278 zcmZqWZsV48_jI$cOcY@dVOYe%aQ*uA&dyFHC8d4)_HC35VhLnmHt^VW=bwR>M9bcY zmg&1|rPiX_Wf4-c$;Bg#>r z!~H(z@^%>&WK%eRrZ59d;e_gQK(PZP3${aI)15^?Q<+dqoxp%>639Kg43lG7`6ZF< QW#uW*;Ro5vqrzYf0H5nzLjV8( diff --git a/dist/img/pattern/cemetery.png b/dist/img/pattern/cemetery.png index 783d1b8be891cf9b6c69d656e16b332cca9cb89a..89ae70bbdca5b341938e96810e3c053a917abc67 100644 GIT binary patch delta 109 zcmV-z0FwWt0*V2UBxX@bL_t(|0qxcS2EafJM9~3Qu(zlJ6qE|N|E(Gn)e2w-{Kp8u z2Sg2E)Q(y_cgSq7S|Iv5xjI14-?iy0VruY)k7lg8`{prB-lYeY$Kep*R+ zVo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt&5ZT^vIqTHj7P$aTnor)|Fldtc+Dcbi`8 zRsRqF=z1i1PleXnEoZho`V{ZwtRTPef`7==X_oaSbKfx>Fbor!$QaQeSiw*pS{uc% z#LR#>eL?kn^X`Z98J0b$Tg!Wa{d;h3L)K4Q2Em<2q=LV$XJ*J=WFC57iby%UCZF< M>gTe~i7BB80EqcywEzGB diff --git a/dist/img/pattern/construction.png b/dist/img/pattern/construction.png index 4f70cdf7aaabfaaa27713f2039f4a702ebbe747e..e2d89f0e728ad7d4e5e32cd95dc57f22085fca8d 100644 GIT binary patch delta 91 zcmbQiR5?K<)WOrmF{FYqiGitFAuK_GUn5|ZybsR?Wrnxc6d4&9cv=p)M*g27&s@yw qr(nSW0v$3RRS)s6kY)mcL;O6i3*`?!$`snk00f?{elF{r5}E+8JsOn& delta 251 zcmb=N!8Adoo~78yGlT;OYB*9l7#J8h3p^r=85nr4gD|6$#_S59pk#?_L`iUdT1k0g zQ7S`udAVL@UUqSEVnM22eo^}DcQ#T$MN>Up977^n-(K6ud)R=-*C-%sjzvew;GCEwOd zsq%H8(8=4+Q`rukh<6;5d20@O=Th9Gp wy${xMU2cVKK=p!e4sRQ8F>hsG_P$YkX2qM2mjdH{0A0x7>FVdQ&MBb@0M*K3ivR!s diff --git a/dist/img/pattern/dots.png b/dist/img/pattern/dots.png index e57beaaa66305bed0dbbcf7dd92b4fe593698a5b..c69b99fd68854cddd31456ef8a91cc0d8abd9996 100644 GIT binary patch delta 79 zcmcb|m^(qm)5O!oF{Fa=?X^(G0|q>-2PC@ct7o?w-L0Me@u>ddxNXMeKJ>bB@^zi$~f6XZhLA8G; zPCjw=qVoI+JsXyI6|Gdft?HTo$M4d|x@D$Svepa?ehk~P_eZ(=|9Q-Lfti6}!@qx@ oC)e9BRsoH?!TbeC_PlSDK73m|HpL<|49I2hboFyt=akR{0Hw=FKL7v# diff --git a/dist/img/pattern/farmland.png b/dist/img/pattern/farmland.png index 4e3eb765da4f86050b55edfa4390cb5b30953099..5c0a8804feadb8dfdced3e50688bd76173c68d38 100644 GIT binary patch delta 68 zcmX@dm^4AfPSexHF{FYqNrERqgOr^F#fnFC-nqgX*s#Gdh| R#lgiOSx;9#mvv4FO#qvb6UP7m delta 177 zcmYc~$2dWyo~78yGlT;OYB*9l7#J8h3p^r=85nr4gD|6$#_S59pk#?_L`iUdT1k0g zQ7S`udAVL@UUqSEVnM22eo^}DcQ#T$Mc$q+jv*1PZ!bCWG8phMZ!9@-Og@zTaP<(v|IX{}~ND^;ows@@6pCF!6y2Z3Gj+dcbR=%Pu9T5qd!pXfA`NtDnm{r-UW| D_;WH$ diff --git a/dist/img/pattern/orchard.png b/dist/img/pattern/orchard.png index d0b751487906bd92946110108065337614c901a5..e45b368414f9bdf031d784e892042b1ecc26ef36 100644 GIT binary patch delta 124 zcmV-?0E7S20+|7jBz0g(L_t(|0qvFn2EafJ1oMXbK>rW`mHhu#4Gs|ku+SM+dk5JI z7+Zi-@ydI@M?E}elqI|kwf65OB9;w=NtiG1XA!yNKLwsjjMc}zmy@Q40s!~~K7mi* e6ZixLK+6YjfET$_&8i##0000(Fc1WH z5f!511^xhU$lG}XAMgt(X_qE0;+#-U_-qtqtIH*l$6lYZlz)VgIt^VNz}ae&ya7l6 zE&$#DvZPl80BZ~8#qY+q&j<+1f>a7g533&ya4iMN$?8V~u-bV!3HAc0cfNWK2k0pa zAOjGvxP+Sf&9xfC#Y=Lk??Y?-r3GE})q)-xegX%;Z~!w8{3=hLXg&qrJP~0*D#eyO z5dq-J6A=KeJTVb61)e-Hd<-K1G8}m#^k=jsPwdhHmySFz9N+`~SX$Mw7nfWB0000< KMNUMnLSTYis&qL3 diff --git a/dist/img/pattern/vineyard.png b/dist/img/pattern/vineyard.png index f8e17178e4d281c40ebab40829e29edf1e76b188..b1938c9e8990078c0c4273782e57813c6a428daa 100644 GIT binary patch delta 126 zcmaFFG@EgPN_mo}i(^Oy<@Ud4E+PnV#nLDa5 b=<|Sa(to~-W|fUB&j3(RZU3ZT6~Bl^fDynI zASO$AJJ6dYia?hj`$d$RB|HFmT-FwW3z;38%AY`F%J|6 Zcmt&gexbb)r7-{i002ovPDHLkV1lg1g6aSO diff --git a/dist/img/pattern/wetland.png b/dist/img/pattern/wetland.png index a91767fc584cfc9f152db2942f9108be45acc0fb..c9df1a23de5d8f38fcbb425305c837ac85539bd2 100644 GIT binary patch delta 108 zcmV-y0F(c%0*L{TBxO)ZL_t(|0qxcS2EafNL(!aJE;0uwa{pVkSg@=CO{xDF*hK<} zfI;hHR@n7i9SYR?e^qTIe0YzQa5{W1;beHP!0B2505%1if=$7uz@OZU2n}B$_h_yF O0000Y0j&a%B!2{RLP=Bz2nYy#2xN!=000SaNLh0L01ejw01ejxLMWSf0000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$Qs!2paR9J=W)yfN;P9 YiAP0A3%g%b01E&B07*qoM6N<$f>Y&ctpET3 diff --git a/dist/img/traffic-signs/traffic-signs.png b/dist/img/traffic-signs/traffic-signs.png index 20322183b4a849baba6b1a919185a8cc07d38b28..77f787a6fa874192244c45d48c83823b9c3eafa9 100644 GIT binary patch literal 242443 zcmYgXWmuD6+&&vMdVn;@Xpj_;hLK7MD5)T&NJ%Ktu@MRgk^&M^ic$*FDJh^Rjna*T z)T9QC?cM+V^1ffTUC*^$&)GTm`Q7((|LzlKYJ7v1ih~LOK&!8(a~l8>;ztM?MoxU= z_(X;RB-Nw(I-2Hz)7x(-Y%f{;CP;}_9nKdUGMRQHN^pc!jI2(ug?Qh(&v^gkTuGe% zHYQHUUnd2|_m$B(U=wjq_f`i~q^;rJZpct{=g!NuZwIXe!bRv{OqNQ(;E%yUy7s-c z^*l|&;BAgaEVnow;qRuV+g?MZ1&%L!b}@X*2pHV1M-NfV^Vdt%eat^A6wQ;-@~ii% zx6szqNlLl5!*dZ;tV%v*B~T>MB>r>bZ%PL92ko8d4hQxv2hQ4*KiU_FJ+hS>2`yb6 z4ZX#+AqgEcv&`?ql`bHumR}m(3%>|GtvPER7I0!tkn(ntKJs%+-}2CAn)vl9IMAU{(E~tcO)r)t5DaYEg@8p=IGND2^#glX7 zi@R))?Mt?+%ahH1e~aY3=ee5P#)RU?XNsqKUvl!}aJXa&A11US8_vOMiXQEm^inici$Gu)BZnI>n72DOtO`d?n5R zyLum&u!fFBX#N0bmA2x!F5&jp$NavD!g~%9p~N4 zWykhxOVeS4q$`N3E*}L}i}Ru8zHR)`?T2J+;%^D|q?IVfG3POZhnw#$evI~p@(Ul@ zTe^>>IQO&tD>v0f6C27k-m_B;JG8*!k(M=dtk$L ziuKd;dzkZV=F@|CKhZq-vg7<9ilz$t3X7(2(VDFhZi#^O^Q6&#w(YO)=vK&F zd$IWf&t!O~>NMvcoLc-_xSex+i;A*-tz#RvPbXQ8Q+PgN@U2Pn{oMH*#pLRlMm4V6 z?t~2<5#~p$`;l)M{vG(O%P-vLzj_v~{Mm$*=0Ak-dRBI;6G%acy>ZB}A4nFu41U?3 z+_GT}ejbY#g5$1pdS7#`pukAE50g(9r5DcY8BEoLoJb_hR8?UDZ6$FQJ;%FqzSR1n zh%M@yS(&l@>tAGkcaA31E-|zmcUjNeVsI??PiB3G*UqWfgF6(Y)T%u@Rya!jlL|W_ zadvjjYD^Q9l9Eb+;Yjqfl>E0RlVx27XU)d0?OS+l`xNK5 zJG=bveqMKFq9_db40Ck5K3$tyPw~w@YA}|tMDob%*LneKU6y+jB)q<}EE+vN)|*HY zmf)4Q@bJ{G!#|Fq`Sjr)Mm&^l3Yp3n?z(AvU-efo$JO@mez!USNP} z4}AYnTfGn7j;LRi{dpY?EM5=<^WCm7_i#8Wl56(|~73dv38U(}ebWxW2bj5lfb|^~f+%EqlqRdMmFx6Ww3_0S#sXv`qg=P=%OiM6h}(Bt^n**I9%}ia zQnXZETxbokOqGVrCcq@=&=jri&5ss00j#SnqQTxCD^;k|Z3xYe!ps-enuJO`rh zD2sadE$Oy=N?2w;FFtG%=KM4^^xC!DUzPTDBj3_0{;335r;D?+U}u#qd-s=;lxVI~ zz>>q}dk}IY(d4%aUT0;oqp{wB(RPdLu&7c-s4E8LRqpJ5wByBQln&R3N5S!)WI}8S zJWz8X{M#cH+<`Xw%2$-lT^^e2h=Szj#92q3;aZ?j1M!_3nKnvJRkv%r_>*5yS2i4l z&-Rf=rL2wJL*O_6jtRm$c08};tD~ThM_U19k+<_-JYq#fM&4^K?0GIX{_9m@RgCP5 ze5K2Cu0}ToiEFOdNBQ4~G;s9wV|4iNcg|WD54~yXjr{%_R>VT)6{k z)L{Hq^e*YuAu0Ud9Ge555d9yOi>{&Uc$OyMDJ}QN0Xo*?Q$zNV_M$qXLLFyvou+V%zthBdYIKOMXLk15$A{ z3>+Bp&uAnqAn=}?*W<&84y}z4-5x@0g!~e2*&aZHXY43o zrp4Ix7&K+nODPi4lG`|H4KPLSX)cQYs!0S#yCTfA5WB|+)6>*TJH)R)1?XqmX^ldQ&#=L^}-AD(b~|G{yTRuv?3sVc^TI7%ON^ zIPT8L3|yq-dD@qD{b?V??~vtcHdKWC=k?&FsWe;6;nh#r^SZpo7b}D$C^(#_jz?W% z{4=(Ph2bitpM)`u`&ckSqnt~kJcqB7LOU|cAc)-#BsCEDg}U6H+%U&-&$x%+D{ek& zZ_%sINeM{otAWFMA~yzs@3hT*lf%ieb)Z55$R1ATQ^y8TbK5psW?FC-+S{{~5mHOz z8sD*#b0X0x7OZY)N1Ja{_vmVwBhgJ=_`(yrJD7#xu8;`*Qm<7tuNd^{C=oJ2gSkq+ zxAhBkE?DhDQ~FmhTd^38MPXs#zSOVRC+mHdx^$qF6K3y?^sUGN%yre()pc=l(wgp` zm91@Vz0=nhI@77CsfyJA{YBlzsS)Gp>8bcRmUD&@W-U^<-p-*D+FI&%bF3wR-FmRg z(^KMSmg3bkZ#jp$+-06%{DIqu6fM+T7_ZA)aAme%M-;Pg;*GI~dzj9@_J}V24=hNo zzZkV{r*N2Q3O17#@;#m)8HH|Op)1$K9&kpJlvbS}UorkHcX9S@s5HE#E2Vt68-;BT z)?&SpJJx+Cf2LNMfSu37jv<_&O|7S25>?eQkv!uA&gjZ78OXKs%!7n=c{t# zBz{g*WpnTaTXOTvR%quj^uE%wH_%4QEayjGT( z{NTwW#h92y0+JaFdRM1h!H0w>E%&wCXxTgi1-zdX><*e#c<&LFChKv~O1Rn^%s=*B zXa>u;p%Az}Nk< z#c3j0Z8;Zg_`vK!qMW%~*Hwa*-Xwi{vVy82nLS-YFXaiXk7N#ImwiV89gzWD2im=d zB?f|DbKy`ANgZ}*>17HVG&8Ut42>V(RP_yW%@F{=-qo+_g8&G`DGJj?Bik7uIn)P` zR}l1v_x*{;ZHnOI@~A^ujny&#e}+QTm+7{)V667PL%P~Oo~7Ek7xGW#OL1*v@!Ah{ z&I?JwmTuj~ty9~!+_qCawfoC!Y{vl(H^tb|hI8gt9a%K8xd-|D^> zG-$S{g&h0Lw}pI=2Jl$de;AA?`md9N!|?FzEG|2;_3%)!y0zhGwc^(~_ zk{fE1v;_wmw!;wx?fG}vG|+s@Jkf0hiYc^^H_U{OLoY4pAeFR_ei}${UlAGETeGtG zvuQ&z@a|LXaDOMMUv=%-oy7O}n8Ux%gZ%1D0)O6oHXD&RJ9tvhp)sm@oUeAcK^7!a0=u~;6J*X&%U<<2qKOe#o}8_d)WS55?XgH{{?F_c*yZVw;? zZEbYqGE&rtC#30Ck!_FA%h8^jCNHlZ&Wlk&*i-Ia9(Z_bIUgEF$>aV)?K-`cU+yI# z5-5JsA>G%#?b8OJBtj zs6euQtCbtZt7_??nPX6xfv?!fHMY#?TZ_lHXD0vER)0~7nS8t8ba3akcEqpeWcpBa zJ{|Xqwx^qX19Lw=UhW|@EO_bh@trvO`AzUU1GEvg%_#l^YPcish@rRiHEbX3HTwAI z;zKs3O7hWz{6j56&)KEE1oj@*>3=y_dQfI!l^si@4VUV>1@5>3Q*-lI^$wkpmtc@c z26T3Iwy>X{Ul3wnTT9Ejita7+flXw!FG#$s_MI_M#3WmXJD=;E7ZpbQl^j41m-y~y zk=w7Ttvw0yX@ANAg_+JSQeT{A)1A9r5!DyIlc?xp*W25BXEpm;zZ&E4=s%Y0^wYd( ziJLeDbuF^d9zx55qr=WH&jn0g;aRhI-K=KVDv@+B$dV6n$^X^c6^apff$Jna?8(hv zsY9N$En$hZS<1BybasYEZ` zxZ&PD=C3q+Nqh#@C7G(rs2_+wevg;il}ElPZM||HjH=0K(t;<;S{lRj?zwu4-NZ@l z%R2gvxd_y(tE`Xt4N#IA9SkFF&R)hu6fF~agj!ZfJUmyvPM!2DD!hl0K3H&Rj$C{` zf6+8nr;Lxm29~Ul<-0qoaMmR@=eLhVoX13>ooifS$tJk=1cjpGi#Tk-g z#&QAGoOb`>a$*T99u;CszM}5?Z*YG72JSih_SRM!CTb7yiM}A z_JVPF+%f~b-2>?;Drf$7hr5VHjBd#m&K1>d4)Q^ z4*&dar+8tj8hafwoyQ69tZwLq2EVfq#djjK=@Ou^B!KTQzpl2nwY0JlMK>U2*Q!Uf zWLU&9Y!ieS59kIM7#OY&lmDR>Apyn3#aUZhMQyStyL0!M+P~ubr0l;KWsm}&u!0jF z^|Ufx5Vo)}I)83YTBL@WkvCXPhL?ms*)8_*x_M}q!e)RPSQ}3OOL21>$&4k5gHJTecJu;vcf_;|D`HBj*0;aqIN-5Ev6~6 zKWJ=ky)sa8hl^B%A0NMWT%mOKF>Lf5JQ4eAt|ylcNgCAK}~`PPaGQ z8A61EI9JJJ&wS3|;ep1sRl=KBH_&Y_*(!0}nA4rNVD`2w=a8{c?mgW&f}_`wstix8 zcWrrwO0$(x-Or)moL0O>M^tkAlkGMv1^-(;?6AB+1yRX396DVhY>lQ&ehD zd$pO`ibvE8eOMXJSF?RU9P+EbC5!zmuillvd~%_B>xTpClJ4k>Q!#%03dzU(G`WJS z8SmXor6pDlCC4u5!wV{~Qnu@MhA8375AR}3S(Uq&9^;^yk<4L6)^emGqX#@shn2X) zt;iVEork=GGxO)xUgx3)T2#dv`~K>h{j@&9gnJh8L#n@`bl)@l8a+F=r8txA_l@Py zEUE@m*0sl|}7cmUD9;z*g(p%T34v76rp;;*c&_{yjqv0Jcy3lEH7Y7r$~9TAY_(KK3=H-nz_gyg6MBO?>J8Qv!3Rug=8eB zq(DwYqe&;U)z~y*1b`_a;#}e)C>l|~c#!^%@A3^cs2u85p3o(sdo^&58-2UJoE*xZ zJnr7T3yDBC_=G=y{#=RF)txA)s>$ny$R;aGuoNMoISlJNUcX6)@)<}x<87YYx;k!1 zO<{1}{axQ2Cq@tXXN+yzkGJE9>g*_VIjq@eR?TqyHW1h?GX+Q3;Iv))%SofC7`<~A za6e+pT25oU=t8CX{5^y_n;*fF=ML!GQidJHX)4NHvTGbeC`f6Fcr}`_F85?R1Y8u= zKU+2Me+l~`O}n9M{w){8whKd%*;_je{#_sU48~M~8{-Wxrz!_ac1XO_DLs~x=2u%~ ze%0?X=NK2=x~951+_rI~c5~+yGr>Xlcw^B+_z0%TIS`Gu@U1KB$P9hU`fKWN<5~Zy zRjP}ly$#KbO{fI<09TWqwsC%frb27;TWrm_=~*m(WA}CE#%?3;#$`%O)48Vo)00tp z5$xJdy{_%*7s@~9{0CtCF6$66!BlqE?-87Y30?YG35|95_+#p@@7 zutc?>Cc0>ur{dvTR)5)%7Ze?evY%(Vr*GO>=M-i%IL8KYJz{+ZrW}#yzb1RvpM|7% zJei8J+y7B%LcfKfQhvUEQ$7qFeH3lGT45Lk?&8Lnp4518j{eppz3eCew%BP%|3cwa zINzVw_XYKF?FR7N{qpzMxk-ZYWT6+0M;HAX4{LeH{h~RGyAN(~0NbgDFE2uH+}UGq zTlfdtMeL#zsjK$%MuHr&B*H^(s)NQl`kwODVIIYYqmSWrWfUNGEXF6-q_6pQp^AQH z@RB!6plM%Q(D)5r08&tkh9>R{VIFFw&Grqq08mKKn;Zf5F6j^uD(v%S(KH59yg6&k`RGXju-HJW$4wvCoB$%1Wm_t=~Te%x>ex7Nl%gKr+1GyKX#-VA5qZizadIX^`g)$>P6CNrsu)?I}f^RgpZ!H#C&3U4&0UreG`8u zhdxc3tF<}ZYkE*E>S2ybt8zBG$)9O_HSV&)u)xDDpS1Rjn^#|w+Ne)#AFmb)on#uz z$C1OZuF2m7(IBY$V*73-69pJvFi9gR)Oet-!CN8Aw)O6J0!Dh*su@!pZRU5#_}s^chorAKNX=dQkBn%Y(v#I2h= z|3cLos#I51RaISIUvE*s8rJ#l!%o`<>lz~=)DelRcYV%6r&Ju1WklL#{1}$37JTdb zNo)7o+S<+4FhTuUo_0elr&Go4PkcSetJI@G;i^<~=pX75S+TC1PtU(en7{HNQ)@p_ z3C;~9YeOID^AF!sJ|-;w7E$Mgt&w4Q*Fz!t2H|$LN zd93gyEh@xDR!KVfc2#d1`7sl5TV5r|_GPPr2ovgy5lC=FFDc6XV(e;ffMd|{jb4VV z-@&ac+>~%;f*S*QqlpRmx386g@IAs3f)?$$b@|TK9DQ%5ESrBac9)))z~T6B;a1j-)|j@^AQGOWC+XCnAZ){tN40-}jDB|~ zvir1S$$o}Fj<)0llTF{5=y$||NEeg5Jr}3N9<;TQ^17dztKgO+5un2+?DTe+)^na> z2sn1$FNV>^Rf!NjKnlDFn#YQ%EA~i{l~To)(`p%;E1-h<lW;Kz@IXYx)&oy@YGE_~#q+0))!mjAIdV!D24Vi`uFp&vUxb~TKB zDyntDw}wys{hM zbIGvF+uQ+)f%^zf+{xYolKvolrop?WAg?t{@$#=?pwaYhNMQqNb%oUE%iutC^IK8d z`snla?5JT+_}?Ktc|P&Gi(dkDNj>#dNL58eMN=ptHy<35ghq}m=Nli1R)#5eUSZ8s z3OZq@tdgXJ$_!aI4=)oi&VT$C@&d8?kM&1)04ramtJRFk5|SoW%TCxW_<+Et7eir|b> zT_#wV4^eqa)U9{*mBemNfEglRysOGzpxa1oV&JegGaKfq=oUfCGcARGp)s1Lq0!Rj zg$2HV6HQrUaZg*6jaX&VDYMYCA2V*dGYwJ{89_I1KHJ;24Kn96j1i80RGXYzJoWo~ z4gmB$kLPOo^rxq%hrV%sxvy6Qr9RT^EX}x-4ld zzePhj{FZg?Rin#7TxY1Dw6wHm2O5%6@Yh#Xwz@GYH>Z%hRahexoBxlOYG*UiNfXC9 zuf0ZUpv1u;k{%tW_WVREwS6j^=2cN;jFaQ}Uy73D-p8-hoPd+kWPt#F$h{!`@=F>G z`cSozHby$C{v^34sY3Y9r?nG#iQGlp61&r3s<(y7r}ZMiV>QCzmxIuk)(c?{msy8z z#!QT*etRr8YV@wb?drH)a`WU+Sc22WMUN)Bg0h|1YnqMNZ~i@^p1yvfs7AU_d=mC| z!_$$pDr_$6s+<5!8?<9T=$^&`+LXTz4~xi8UeW;gGa|vZ8^1eFrv$pIZ0~#ByZT~$ zi-b?9wE!((Sg=__+to^2&9~ZeYj(twp;OBr>elobn4C5_L~?JJyMtu6mRJq?ecueC zK-^Z4JVvzb8Dsl$NhY-W*4Bx z3jLqrkgHe8|>paB*UXNNHGy0MDqF3wC>I}+>t zC`A(QMr6hZMcy>}LzFXXS7XmTix+qcU?3NXQhz=O6?k>+L*4_9qCX^hBmh5DG^s~S zJSe1nQc3M%qJ~5p-_|I})YZ{z9jd9Rv1ht!qeHv)ck55;{(E=v;@Z?EW;sB!;}UYm z7(@S=@KIn;ac?k4Xkcy%5_Ju!=`BzU+gbPUeb@zGDL~d+tG|mr=R2^bHoIR@ac|l& ztCxpPE~H{AWkkD9vXe8sm{LY6;Afyd0Pj0ZD+R8$(00M4!=rzFy`{~@`s^#pt;|t^ z{a$&hKeAb={HvkLhuQPzg8UTa_Bpciih8#&^pVtmfU8^Cn&GtYTJ?>kZOUFvoenEl zJnF6p8j*EX-)w8o{VeciE}J{TUjT&0=VLuinCDsuTm2Zi2*Ys0z{x7d6w*mfhc^7I zu4SJHy7)plXyLVC&jGi=B~**t%jo@Epz{5D%bW9*U3^17$ni>7XQOO3?G6PVw{7HD zU0u*;BGk6&%Lo+Z#dQyE+;U{iv2-Vj*`MWE-hv5sT!lBJHr83t)a;$ES;V$t!pD!E zRLtwUOALMSXR`0rUX_y0vm&-VPB;#8TKEkBhQ95*{gGDOs5*rkkBiH*RDB%E@z9Nw zz~df0(@|oHmI|)&r)yRYiQHwrGZlVZam^{DNoKi+i@tiW&GV;E$1=j<&kf~>w7Dax zv1NNUph#_NxBr{9@?-<-(sTQXE=he`eA#&r_L5F2*NH{I7-!`hYI9ssALsjd?8VW^ zc-%91OKJB@r;d}?fP|%%eZrnFm{}vCWO`$WY%vC1Joa-itSb;r zz9WYmTL8%0F6aP;(X z&yC-ci=z&=K);fw-SUpm1zTplb$}?)@V>x0&gnWGuHR&k8h&YjF``(4PsEB529@l2a zr((k|!$Mz^8fD}-YDp(R$8|P*zXel&wxj}*8^wAg=mf^g_N`@)FqPsUIRNmD<-}Esgu*qsbahE z)|)0#enSpYuK7YS_$Lx|N{5Owmk3IOy-@wqodI!y=nT;!5r5sbU>h&s+}U?WT3NsOVb|#=X?Uu z_?(w6xOq`Ye#`!shsIPy*!iSRZe|h>GH+sdc$ge*&}EZ4!`t${!e!y#F=eNP?%6LE z8R5Y*8{_w+k5M7GD+&rs(a5k*?YMu2s+(#Qoxk+L*G0##-o5)mIe6rvVm%ImZUA6c zaul+tnXFD`wCz9wx7nuyrNHN$j~1lfkP7ssN^?cWc#!`7^KWfnQ=p63UbqOkVn$A;$i*m=k-!@WZG33{c z<_LvE>jwsmgeY9yWG6C9tMOfri{B5W@(*3-&o0;XpKbHM5#xXJR9iCaQD&#qJa4Ou z^k?Dn+3$i75KX2}f)3*sXA*AOypTs#yTKD;DGBO-jO3h0zNAV9w{Gl|b{7`TYgk>3 zd}5Y=Z23On620(4)p51<&7%wyf#Sp5lT0I7r3Oc`8ZB$vs0)vF$%|7+b)hlw*{)== zG55~t4%Nenfxxc-Y>!cLJJ7E~{rHlrBe1MQBYZ!%X=PjI-@a6ilkhL~ZDB$czSyg>G{z_jm~vlBUv3$0ve* zauCa0-_U@%VL~cY6kQGj$T5fJlg@pDHzA8zTs^H9b!=s zrjSW^WK-*uct;s%h9yqRx-I9wBctVYWN$9b{P{?~#H2s2QX*A;@anqa6o(r0>fYL; z+~zGNvtMNNz6N4z7LVE0qaT6 zIc!N%_$+ZARL?I0o1|A(0~Itnb(Wbz4F_;$Z*H!^V-k4H4Z8jc3|`=w!}_hESG&!R zQ#Yv3lF2BZWDGDvb#8~`ZRwq7WpNw+`BkMcTOU)RCZnKW5))v(cs!b$Js5F@97dV+N6_}39ZGR6HiD24Z_RPf{ff>K0(>gko? zMkH-Xri9>vT*uF$1WmL)oUp8ob~ud8MalW$7sPj8UkY37fEYZ0HYQ^Ue~!;7$M}O^ zCe2(ntxI6T2|B7Zgw2(T zBd-l7W=2UTkit;Le34=#xLZ#HRC>bMqn>Nx2sgTGqcp3i;{)|hn*0;PEAlC#1Zne( zLtV1P#qpi%H6l#sE@C@vVL$5lNIv)tT$1{u3(=r0yy6CcH{Iojm7Fw7x^SpmdNjZg zzP#8ytk`|nsdwlz+WfXtD{A6&MtKS6OzM8Vn)Z??B(J!2Oqj&V;x+Y zuNPRrfeztW&kf4==6U!c1jZ@!3>Fgc>W%lOeg(?FpTeUdEd-Z$YT>N2K>)q2+I`*< zJHBxKQTV}X5Rd%II*sSrHz+B4bU~YSi{EUF`@!xPqz2d_+BTz6UGnKSq0c>bR{l&f z`1`rH{X`uKEN%zPVkIGH?v^|ER4B1QeMrWkwg9_fN=e`1-t=;Jl~WQPfzZrjEYE zpu2f9`BQ=1HKCHvy=)%iY%c|cdP_bF9nar?*>>^?&Cwaj$G2Vm)cl=D+ZA06jTh*} zu#*H^+l;w4bB?f~leY7)bzlF7$5kQsG6;L~X1O0PnaSgd_$FoU2}-la&|!`nSj6$S zloa=@jvRPFV1lkIS`H9hhAMuI_%pcJqbX<>({Rx3S|mH zi8J_v-Uj9X(2E+lRLzpUm)v4z>kBXwuC!Y_I@ z4xR@Ut;b=9PH+ON51xT)&f)9#M86frKiPlYewQNcV7Uj0F+l*1khpom$?ZD0?VwcS zOJ!#ILQNlIONoS$Zk?v_X2B*L;O~C))5iMd4$(5=X@hWZ>pg1F#%EeR7F_6}rNh7`OCY zBdKtiJ}7jZjhSLesYhdD`Axon)s3x)bkVOvt7aFmDEO9jl|9jY>Kpv7IYStw`Fi>= zYZN$4{P5TOZ&G=XV->Oy;11}xZYanG(E2!PLO25qy)3>EI+amb`BrDh*GlXf3hV0T zc15jx0b*9nxc|w9k?W+^dxx4JiN9ll5XT#86M2A;iU3`KtwSCipML-#s1t`}HI~U! zc&Pzo0lX!|n8Yqh2P0KSBVxXEdOVOMhNBO-CV4<<3T8U0sCMe6G(O1`NL6m7k~+oJ zd(<-+0tfljermDf(ttOne($Kwcz|Wb=1Mf9w^C7nBjZJsj|&;tM?nur(_iz^HQ2Hb zvrwRqaAeH(Vy466i4(n02~^$~$XxI^Dk?xs=-qlHY$+{$N+dS!$svYEoF8 z=glNp8yAgwTw)tH<+Wf-6lXjKA zU)o1$Ox4+W&8X0#hkQ?zuKl+%Xhhs4H)n(9&011M@4a5={o7l`Ojt%}9FOMzShlx= z^`naJD3>(Ip!SrHs+fIks9*P>NMIYE0`Fad{*o}KRgN79qucz@gJSyQ9m ze`*NaKCU5WJV4UMj!3~-Q%5W9k>SpEc5>l#Q)GdpUvw@qr#3kjnQ;w>NU?4xSydWP z*Xbx)B&KMVu3WiN>X+V%RpgRnPxMGziTdjgDVz5jt4U^s7HFlem&!jCZwTr;`)hji z><%t%j+!+}hr>aVD}s!F^6{mPL^3XtcP80#aZ;OMYaaxV&%z=5p`1x1;dl@C{f$rL^R!V{G=&MufY1AhQ~^wvHFK zQLCl7tLqGYoF+wp7zPCVVDWZA)Q^dv>R8k*SjUn&JNUhNGSF)-NZJ*`=smT@*!{EJ zpdg9j8%4+ZKZL$@E|%CxpsfkQ#;X88+59aT4nDg~qE@16=-fkXc9gF%5m-db{c6ftLlITef zf3)S4LJj2_c)(0Bg70G`CG7NX+$x->+(NMERU@LX!sUebD|#X(o6mpp>bV-_sb*PO zeX56|dW)*|X?v3FyVn^lcOJudK4HEHC8#2;h8`rm?wK;HMHAe7wwAPG1lAlh>Z%-Y zYPUe#eo9KpCZbA0LPDDt)A%Qe^06Ofr^2K;=~(GDBfNgQ;qr8r0HJR6`DlIiCN(0>k4zG?IFGzJsWthUpI&z?`<+JgUXD1V8xByjAo zTT0E(>~Osd4Xb-V4jNhWwDah{RGFL^9wNy=mDnx8kDsouQRj@VeXyv20QzUo8fKlL zfYMo`#q(s~lG=y;55L{^C8$Bgof>7D%QX{hD0{M+-SuGL6BB_-#Y61@1ju|Z_b{WO|9weDu1Oj4v8@*j(E5+2)Jn}35=FRYe<;NFdD;wzU){pVYIh(}?9W(! zrJs_*(W)fa5PqShOyczbl85%^$TS(ZmsSL%|H;mHQ?=!)?AGEUoRpwts}A$ErK{zz zY|fOh5kh}glY4Dx(H89a(Cp^<@XqV(>$lu{P!w6FoWQXcLLXw;R;vDCtCAX z$f9USNTT}SPCA3cFpaIL&E0=R;mmWlQ0U3(Y`5$;Fwz9>GMcO7v^4HzD?LAgRleMO za|@TLyz$p@#7-;zBo-0w;NZX*bZ_6T;NKAb;=J22{9W{DD~f}Kg*J?2i!qx}(39|p ztNFf%Cgy#jP+aE^dB00v8^|z2AJ{k(8DNcmrV1H`7%3`9QCz1(P`u~no{WnvfuK?@ zuS$*?0uX`O#3`J~9buU`lq2l5Y`O;e5lE(5MrFrhGocW+O9eAkKR`00hydQkCl(6W z4w;gvAhI`ds-S4GnVpe>O7RVMHInvPV!@sp-iXM6Cu#@a)!IhrKIV8D{@$@y{rMaM zvWJjCJovw*mbO_jH@cs=ctb_a8dT1hbvl?}jZgZ(v$FxO1@(KWl?~7E4g5*)VDa}AuM7P1m z0=5$i?Il*G}faFcEGE90s!iNGvFKCdGKw^oHii}Lfw61>mbeGvE6?N6z zNDxoVZPSPmD6Me|t^)Wh-o*v&Dy9z0|G;?@4ft>Nt+F*JK1PQ;HWa5~v9h+t-1hKiHp2QSX7%Z;Bj?o2 z48?DhW2bpe2gMKijPxQ(>nhxGQpnlsS!AbTd#7z-W7K9~?-95D?k(bKM|7w&?z zP~0bX>7VpODrsRo>-)B=D{=YDmoG>0w3e2ZhbNokrDj1!d(?zP-SPcUtX~Uw_SJu< zR^;l61!9823Pbr?`V~7goZ~vC#o82K9ZMirf`pk9-h7ZlU-VYQB3C|*RDBhk}Y8CBJ94?@0 z*jE`N7Q!!m3;=&y)Ye|tnu_egdXJ?~N;`_v6(EBk5WI5xfK9&2v zV|C{13SNO02h_NHu8_L}Cc$Q$R~|U(Kf6}@b#)>dj*;R9?%`zl)ld+NTEYV@C^tZ` zX+6(|f#G)|c|YjYiIKy8oKeI{Z!MD#vg!F=j^)6)Ykp#9aBii3x*XE_=#Z}GF0>~^ zZudok%JU2aJ4IeTeN(2?K^(R(d@y+e^$V`i(@sr97d1o&NB=9s5Qo~DFL#%uf%Lp~ z!cS?SRUMI!cnjV%J8?yK$;P4l;T?9kb&mkKu5{FQ*QNQnYbJL;(LF!@-S}h8%=TD@ z`m*+1$ZV^ab>qqP2;a)z#A%A$<8Zm4ti=*WD}=<9MCmdg{e-|%ADFUS+CDq_3%4<` zBJVopav&k!Z9Z>)Uui+MGdATQPZq@hos1`3xp7Ze{1>ugSJyLqm+7A!G5LFY@tW4U zeaSDf$N2rTtRGC@BNI0-s_C4L%^1n$Fi&cWabI|JFzzco@dTcj+qh4^ULj`<^ZEoy z(O8~{v>4s5$Pk!A;(zSF{S|rs1~kfN#-fz^sFBPzXuw$3XZ#;t(3+d3CCUPIP1ZdO zYE6*EWy_H9wsIxq=3j{w!)bpJ!-Y9g0-M!D#~NowSn8)OVqt{AuZrwZUL%I$OHDp6 z^Ms-+2_67wJ4XEOeGdg#U{AOPIy$<-I2kZKG7{r2F4Ntnm9{MCx+Z#sL#!@PR`80d zS93P1tjRrP<6?8VEJPqqo2$Mi0z-JIgb7f?rV@LPUVSe)S;@M1t{ggO^3e2sFn+VF zU7?P@pGWjd>O6i2S}U3>Fasa1e*>on>oJj?SDAp^ZycIlAOG3M-bg1j_LJA+!X*0q z)&Tt#wfU*o%Q6DSdbsmb>StE{01^P8lX0kHc-4bcf1)^aA%px_&Q~LqjwfCNe&1DU zEfOBW36FTu>DZVEZPZ|-gEt+?g0-sfu+vFj#OAe=w!qxUT822k@{M=KNG8%M27*99 zXWH|Zo%iCELM{fvQFl+yJVZqKV{U{kIo(j>`jxaytqr)6&NG%HutQ5`ZT%OI5Dp>{ z!1BNQZnM2({S~8$t3d-ISElz%-HA#Qxl#mM?XpqkWRG0in52+l8 zyjB%V&#OudIL7De05qI$QWx-4Lpx--1}<}Oa9P{gWqgMKI1Edx6{zuJz)N7$%EH#R z)O8|f6W+z&zF#R}HEX9mM9&1Oc(x%LPpgQU3W;sAtbUzOg`53mgfG033_O_lHu%NG zpHyFEvk(xDY420vA6{z^my{G(U)8tcqDzmAw&%s5dZLQhNL6HsVBOnsdisX=@1LW; zrqz+HP`Kwy?Xzr!erG0yV-}+HaWyf-V>h2@mh)*zrDIWa2n|V$2`G5a4k^eUzgVAl zh1@)=?I$B{>+WlfF_a)1bM*T*&5ED&+CN=|t%nz`>FT$S<-QpY+J46rZ zch`#L%pfPAB+DnfajaKPHIz(7g*7Jsm)95V7!QV601e&5r91f*-|CfbrO~F}nj`@s z_n|-r5zdnu__?Igy>3Gun#Q$F>n)4B{1{EKZFrArMgOr`g29HNL$doV{lCiCJ3Kyx=fL&>=>qi2DwLWqi>b4~!^`P%-Aj0j6A=<>z1v#%)r8{C~GgPj`B{$G88 z3*(idfl?2$6hDSx<@!`psZ^oSurf5P#H!s9ch}{@*OtSaxy)Z?L%%bb8@kF!kpAA{ zmbI84z!oml@X&`vScX1xlOU4(WP43-ZttNs+0l~%(#Bhp-P@oH-{wmO384Gi3xyFE z{ug{v{?q-#Po3nBpM=~MVzKK^Fa>HRVSLm7ko472Q9b|PcbBERLFw)gq+BGM89(%lHsU5a!_cf%43`|S7k{JH1cId|_lGxL7Wt0oK(3e@VA=VV>6 z_$~qkkjKxWP+#b8XB#>$st(#e+rCe$uVXx(4&om|R&V*fTXj6$+FiDrJhAaw4VtQ; zFE8=G1~@oo+w5!>y8%;O>6F@W>_x4PB39GZsSaLIHp)Iii=D%{8HH zJ8L!86Mw5b3%2?N6x9hCL@^u2f=utPG?V^YVb*rd0EfPI>WR2ok&p|ey z>@KsWE1}zfJ!>g(%`?+5+zDbifsa_$5`SUr>5O7Mx%pCO+zylxAw~)|Qz)`Ui97>5$_fNB25+9>AHq5SAjkBYt z;1lqd(N{rrPK^$FcouyTjwk@6X%ctq|G71zn=`0(40{bg_HpexfI z#vyij_WL)F4^V!b;(w!-b_~6@JI9^b0hc`nhWVe|B}c#lgeY47vOUrx&F2?@!sz!F zWFQm!#9V3hWG~*^J=TS!#&5MSPA zxz&rfD{8RUj9KB`N}46{X=$UljG;?hJT1S;V)=!KY@Kk8f04+>rIbMIZxMQm(izXB zE%ounD-tpaA+(lcs5mEVFG8%vO#{@q4h zUO-Ovr_uREbH~Hj=}-!>xp|E>LuCU0?=&+{&r3t!pQ~#vRqsAoMFn7>;kk_^$o<$; zaVi(1wrjK3PRkh$;s5^qGqbxZu(o#2`tNp{ z`Pl|Esjt5Gvt4PbcOXK&j%e_?$5etwG|kv^PX4>9%E_}J_)7<*z%iFf_wM>E&&-R~ zI*kW*uq;h(?pJ2|PWRKsRXEo!P^gRFZe95*J^?A@vUG6?q66T_f{rsd=7v<(k<M9WM%{2O{nK4V}LT}HT(i7|7Xnrifu{;(<`FLP~tri~`&!mT*j93}`y zyR2=lUZUdviXK6Sgc;t^c>4WW*=3`;vylZ9#&j)G;hZQM8n9*#4=;*B9l;uOG@Bh`yVkyH;`sIzM67*c zYv2too;;_e__&ew_{UP957sFd>-rDNo||B3q+De|woY5gY;grg#yOkDdrHhpx2h2Z zhPZL(M57Y%8@WR}odU?2);!2i_#Atm`vMkNt1;#GzWkCD=tCi+rR)S<7FdNOT!?T6 zpFg|jnV8Hc_FDoo89qPY2&tODaOR%;UP3hY;{X6@F0(r~U&^DbBEny5 zam(h$r6kkHu zbblg~CVW^JI`zVdlIeI$xLry2lMiN*&@JLC+L%}vuWi{eIN9CHw$ zR@InDzH#d0KzsPYp2p-wMdA2rE%rnbgAR37RIplMC^@i2{-f)1Yr{rHB(}qTv-^?M zd8?mC@r#=GRuAMBT3M7>*ATwDXQ-9b!u|9CYR_x=~60h z%w`JIIuDIIy8a`i(ntVB<3BJD1*oz??iOWw$E;}D4X64S0uuBIpByy?2Hi?PD!b-b zu;03XdXBl%)aOh;!M53guQ9eE+gRH;+ofCEksUXj7Z@a`-$lgzv>Sb~uTLzVw?mQS zZS7jhYfi2*@tS9h!J4e8qr{FlOzN%F1{zg^zn8}e*t34K=I1IG2)Gbf@5y_htU+Bn zc4r=81AB!Zqb8mL=))8R-{bS0=F}z%w2W(?$M?mrjTVoc2!-1ro}~&h$RnEAgxoB= zZjQ)Y=(Vn)30quN{eS~7N%U-?ePoYg@#I#yb3Mw;%2U^-z<3b)OjrBLfB> zZd!H<6}k$D`bU(*gVYk_1TFlRH&ZulRZ>$a?NWd8tMQL(`6188`GZRwQJz!xj9x;f z97CO}=UeisjSi`}ALSJFgasY1928#Ku_uel{rQ{Up2EqBgY$xm+b+U&PDuX=0G}IR zSD9jjAwy14tP3q3oZZZ_??%4x?@oW$#PQjDu`!UKigwW{Qwy3G5@IlANVv1$5fa)# z;D&-0`TUt;tP`2ydBf!BQMZIkHjV=_a(Z1TF|?bJo{&b!;>?^gpORDueTM0D`; z;#VLb@^W;jy4Hp5*h3{wr7x1GV0t9&*X~AEQo)mD>B_rt6~h@6uf4gCi)IJ&3f0d2rCa~9lNWL`yC6o^V)_ZS{Sgjky*RQBK9A#XtUp9n zQ=?xD=f}zm-&n8+x@ls;L1B3ZHGHtGa_R5%;D0n$g1<}6k+dl^+)S5fW*zQa5e3vv zKfL&@@;0V}%5w$ulJVPK=0ht@X5%5X0bpc1B1UC2qU%7u1NpO zNlB{8IC^QZ{h2aD9ZPX21JLEZ0_Icfi6WhYhe$VJty7(qG&kS0XrTf7&X9Rf?RsvT zhYrc1`QRj5DGO>dy~`hGQsgar<9Te+nXeTy4J1;Kc=?hZ`u2 zT}HT@r0!S4cLFN-!8oMd%NlzyS8Gs$k2i^nX_$kL-9(Bgz4YErwVb&Npc5Ng@S2BsKO({@@s3K)%ze^o=~mbCIf)MiE{vGta|yDLzz%nd`6d3b(;o9fJ zbkjFq;iXaY;7`LJZo=c#2P-L7c|!U?K*Gcb*qZ)T4$A)Sv%4%Z5cM2*6V~z#GsQWv z!>d?jcFAXf)$u}`X?QQfB=l!3^ugcc+cXKaN=VMbB(9{ln5xpf$@GM5b1nXdMiJEl zER$q^q$fsI&hltpj4MXK{&Cl?{CO$H!wT$n8xS(`>9s$NK(3-VReh_I5^bij?Oe-m)u)?qJ8A4`Z^;)FD#9AK(9@> zEz^l!<>ZBkY48i;hA~~;rkvfmzI!qdU~uDevO*t)Y4R)#$d-rY`0R|+OF`cC$I_CX z(ufxhf9%(bBA5pOy@8=$uJ!cvet8l8s1+3zUHRuR$;Fo)<;wwdG0W6NMG0=5-Kvf2 z?Yd{{e88~2e5s0ae?9Z3uB!&=dSLhva5ctL#ud!2eVS&NDkf!Ukd@1|yKV~2Nl*&W z2o${`vc7!ofFLwMm5$GU@}@QEHK~CR*92h125@f0YFji zeulT+^UV4QFrFh9`YQP~N$d=-Aq$dLY3Amk!lVXFNlBU4#LoT>dnLMg=ZFvyg9$|4 zQWM^DOZt%wNv)ax+xaLsh?}U2+&PtENsw)|bX#J>8T5Za$aqh9Wwkn-Q1-wOz+G5) zx#y#xm!v386xiN)C5ZR(iT2DUY zNGDc>?>W(EkE@tnaUNgYL{;^fQ$*=aZ`oo zqfi-N50ltNdv~u;Qv5E`CVApTf4x{{ksN7O{2oQ6$rJLGq*cQt$KBehC^@XRj7|nT zK%U@OyExBxBCqF0#1sEsAw&5yD_A7z)%jzg@FlN1jO$(2ryfJMfLmOXp@j9_2bg(^0{%+EB_^-~_l1nxGir4$r;{Z#j+$QW5JJAxqvp<{gE?{&`Up0Q^ zW3GY%@W_AGeZ;aj{dyCcJG6d6Rg4$d9*=4~sFwl6{dl5Ig!s|3VEH7+S zlg6_@aHOEAeV0#quryh6b^LDry+sYe3-uqZ)a+C=)weV)x=Csb>H=7`t2>~ZhJ1?~ zVR*gTJuFXkpH2dX@NT;iV9lO2D2f4VM@M7iSO5W?j$GgkTqTxegaaAN$zzP=KBHSkB5>lh_NdIEksApZTk zayrvt5JunzooQ?F4)vCPxGd32cemr5e`}k`TVAugrKFJ0ly-QBtvlrMYjrEAwO`U| z?J%$R?>p|$$#6P7cCt!t<-s_T*toN8-bZ+JLY7?~Sw5s}OASq>CA;)!pcU!bxs28e zBxYvD5FN_{Ef`G5y)2Ap@${0Phz=KZ(5W@6ZN!V_9|!;@VQe7TmpuxNDq6nxQl>hy zxcx&gcB6p7-E?=E9=4Ib@myE`bNUhqJS9MNP2~mSb(I6n`Nq#3atPh(-08xXaEgp) zA4`8RD?Q9b!K^QW{|2`@xBQ3W#|H+XKH?;M+2!~wNO7N+I=BA(GQHvd+rag_kGvziz%p zEh(5rEn=sM4mxsT?XX3eUh|@c5x{f+a+?AqBny1v|?-6)?*nlV!wFmC}Yd$Ps{gVKURJ?_7F zDF|F|^O?&B0F#{z^pwWBUwE9}T7URB4|M&-#;tz`!FgADW7z+)?ol6iyU_-epluQZ5hwafszTx>_V-4$%S{cG3Du0^5mRXWuLWFhoi=mBIq7wBF#5ULgWclozEXsD1{gAdU|n zF&Hd5wyC&rDA`&sZ&>t}j-d*FHki=t)K7YXmu6;WaovAr3KZ&hvL$~r*N0+6Z)4Q?f`kCRwQ*LW3`SpP%2XZ|Aq0NkG> zRBUu)n9*IHyTsZM>W&9_9dJad|Er_Ou!krj0)>+L`Zrn9b5_8+k3CrbpljqBVb3a% z2@ECXDC7FwIXtgtF8V0nCGq_aN04@cZz>;ez1vqS-EM&I zkEkF+_1D~(j6mTwSU8pxsM80+7$};`Y$tihHhU}!#sEs<-8iH{FACABK;QW4gqI!! zp~^6AN6K*9b3{x8K=n^$%eceG8h~mqzs$`r@p@r7F8eaKOVX*hg#<+$Z_J7ru2c0i zKIlvm3n$SSc~95i!bkE8M$X*D80o&|i+bnZw_4=LzLGxrBM2o|)m60E)@lZnyeb-f zwM14EA@zh?)c?V)lB-oVWzdcag_b(Wq0THMhtkM_6Z#1SK3VEUB1$1~AypwmuNJZi zOQN^`1%K_6#{jB7!WoFLY&!lne4?U4C1R}Ex*DuB)XfJ-FKRPNEgCVURnlwT!K^-O zAD=Df-)t8%OW9YH*Dnm!p2Msx4vHOk-ry-epOYMWD)J_}xVYl9usAfoOU)wWFO3vE zMZR0{xfU4o0o3J4w<90??a%bLM8Pf|?6uQUfjG26c<+~ex?1ySMtUQON)L}Z;&3}b zZbMf7)48iD|KujALA8TUE~+tsy|tyO%v8N=D^Fl|{<-R75~8e{_iMlmEV;I&}t*O-8^^*!9A};21FFz z&{kgg^+14Gu+8Mdz}Z!T{b5HOOY$>a(`{a%JKq~A@jH_f5R65>EvJ4hmPUwzQU#rn zl*7g}Vi8{r21s&AzJ#Wz<*xgmDj2by*VfhLqG=TzMwU+Wtj(~)VaCD0)6mes^Kf@p z55Hjg!2FBm9HS5fnAao}E5VQl;89~R(D4d6m}}95p9uED^!*;pO?qVY(D{;-@~Rpm zF(udR{mI%JBZJ%P4awqT+N#yfpXAt}Jd5iQrpGQs-&BG9OvPid0!>09NtK?iE))W& zMe8GJtj|K#^F?LiqoZ*vi7~sQ>)E*Hg8r23O`|*cy?^$jnc@jZt+^0VG9J7{icvg( zsWO+qXfM(fKKGRd@?G&{V-~b?ywnMCXd~`2*1b2cZa)EmjW2E9`@rb z*wO)a()P!P^14=5%pXJK)7CQOPS)3=Tvl7dd01JJss&HcF+~^SFjIZ!nNNzd*ZY5S zJKJ9u2RF#w)Pl&-43YeP0N*2V1*XEpxY&5{sUn_!Xy%hED>9T;KLmu<1JEDnB2v#w#=DGY!=J#Q+^k^bM!?zpplISa4#y_ZE`k%E+BNNhS<>aNHHv&e{_U zG>M4HiX>9AXiI`gV9(Ae0=N(9FAeH=Py8?TJsgi^*Mb%>g>rigmOlFB&O(Fy8x@s) zR>FwU*z4Mpr5>gaw7v4IKy@U5T-o_MF%h(?bK!9>pu@%NYoIwwoN{9i2E<4#T^%>~ z8x`5rOiLz~rsx&vk4A^xqo-szrBi%Z@Avzb=f6=11`==LkKUS(j4dshT4dbl5WGvn z=e?gxESX>A!a6wMk?9|p@huh$&Fb_oxe}4$?23lM(arKTvYz3?F-wQ&Za8H`7SL7G zP!D&he@1L2hU!^K>l*OvII(#3`Eyj_;7<*f3TQPICFn8 zaVV?s#0PK?)q zsiZ*N+2Y{$No*NhA*2KT_?hM7fmdc6KlXE*?Mc6Rr>ySr)B1}OHwGm(KWqUFT^_SU}KNaBrxp*z=lVrsYh~^<|xXASEfV z(|Gi3UNS8{o2-tV_WP=zZ&dK5DgU)mz1ruLT>W@Q+BCu2pOrYa`&+XWi@Cr7aRgB+ zyWkwjFdnH zct_W+I>V_*-j)=q;OXUs%kJnv4zPhm-roP7Xdj1N4X17%2&$%B?2Mo7SUMV18MI=+ zBh05~g5T8%KO*dA5_r$(B(NrTc!?XT8<{V5eIm!aa$nLN9Sz+zI1W*>s#w$Y*X=`{ zsMp$S!z>WOgtxa}CA6qd9B&LmpPbHa$GLKSrip!(+Y@>9&-{@aL^$@;W=VoyfFsDJ(^VpOktT0^7)?{8%E&x9~ct?HLLPi%xZHLVy=x5ZxG z7%L>m(dw5i-Trv<@rOWj>J|RIXIUrewxe}=_H(Ey)}vXR;Iq>zZjdD#05y(+6lQ*< znY`uhqO%kz^vMx6#H{S7D<%8L{&fT)F5kUo@fE<~#9Ca)m_N!gTvesIu`n)3k@K-l zfg2Eg5zMCNGmqV~_uV;6U<`+eG`}Z#%BlqBNsDt1>|g2bHqmQfTyW3g#@zH9+7#Ts zY4j*P66_F})J==&>-eAs7Xra^O_oi$L2fQq>MY*0Kc9ow-4$nMm$$x7j! zpt=983z$TT%aK#m+kmI*{FsNN)NAy-H`5zQX+pKR*(Q+Cy?bW6+G6$2p)}L5pPl{? zCOxvEL?Ek!+N9O);4L|P%Ul?wDcB3q(8zhw$$!Jx$jK$u@QrVjQ|v88svb?E@f!v` z-Md3`_1g>VWYzS?7H{q6WWo3YTAyBOja*Q(tMzhr{|>s)$W;+X{riw7gHEuzV%#+F zT<4XQd?|W`7tcOcss^t|oCs%Ty+7{47=2BDpZptjmpH#DnB+B}+$$&+Ew4Q~tbobn zg#!#r6lrBioDpHfxxIe-ZnOheG1P$2Gk#b zjr*Tjb-v$e)*g3O9|?3*fi7$3>|xRi7mpFW`e0atOQ#UGzzYTt91=AgOs3eQlrmk* zK-uQGdr30XRkt%n9+xSq9(Xe+pJ(W5+7WYxiHivRZVPQuC@L}s4(1n|B1ve=zS)M6 z0$;NDm4F++R{tx9xZ9EWHgN)BrP0y$O;TX@5{<>Yd}qJ*1OoTA=?@?wY{vv`tVV{1 z|9A-`LJm2p3VhHS_dueq)%)uo>cHVNt);4;P9T;6QUOSOv(#Y2smS|^lx9#t^UbZg zHpjJCBeD{M53T>McitL>{WsNk6xOHYWH%H1lVKD!^&M{Bd1rdAFJf&~u4FPl^WzJq z76DoIzt zFraT6(^6Tx#)uo=(UxHwo?FHHAFR4Kc%F}AsVv^&Kj=|)`bLII9NnZ0=>``mS7<05 zoB}TTrYfv4KpCuSrAm5Z|1&6EvXeYK6~>wAKm95j4~{ATPVtQS> zQNPyb-_8&sT})pK$BXj`;l8>I`bZ?rMnu5``u@IBDe+Jm));5jhDbJT%i)Up=JUyQh?Ul&Ip2mF(`( zfdsJPMTZuyE|S3GW;goYx^hP4Ef%lcAOA!<(+vLk+;T?m`b13z}}Wk<==WCPBs zu@ZTCHAg-6&arNap$#U@hq<3Q1%mEmrtV$7s4;+cTi1Ykl+13dmNsj_-z+xl%5WR@ z+)fu^TSDX6T4G{8!RK|%1#Ma!_}-?a+IZd<5^6-tQELgI8?WB51HfC+unIn45((-63Z)zV7&qs^_X z#l>oaA=cBUPZ+X$;j*kiPk#_^?T1@Yqoe?f4!?xu+_?^&eO|ET874ar2D%!c__ zRQly9v%0oMw>H>2Y4TmHJhoDP^)oP21xhszX4JXT;RhDFF01mLCl>ik)8|TzgJsSv zX&q5>ygL4ZV2>WYlSw6}ZMkOgi$@*@zLX8x?vR3M@#OQb&f!82Hye$+gg8rtN- zK%KI7il090h?|kJ0)p!;?LD1)pA>+`3YX1XMswc%+_BdD-nUW;s!h9}sISG<3!EZFdH%PgY66mPbrb8OXA~? zXr(8)=#Ti@Bp^&^<&NH8@S%qTAZLsEnyQltHkDzuu3qN5;>~S>K8cy{y!Y%G&z`xm3;xY_ zJ)jhFE8~ZcKn1K3ht~dz3^xc_a~)e(=d)J}Z;gye-h-K5fTbFQ=lh0)Wq5OFC*mb7 zFBEn-uswQLs9z#Euxy0VzWzoC%fG3u%M5|(<3Js;>o^4}Ml}m%(XN49u;iqRrshb( zPVA(7RB8a=!~GKG9{G2>j{w=^Uhn&9R@<5HJe!Vhhzfzl!VUotX`U{QcMotKFQUP} zw~_V5+Vld-L^py3x6d&puy!qOoXt9|9z0)w?B&%z8?t!1RV6&?#{f4@La#IcUCKdM z&AO!~W`NHMu~}77$cv#M7i#-f0qm9q_OuV+{jg*7v?Vus8U8DG;b-1du8iqdOBq}j z;(20Qx##_T7Vk!2J5K{l@PlASWN^Yx2Q9!!w(7qDTPn<2#Io2uN31N#laN3F73mku zE7*5erU~T8!jeGGgl{LarNd0D&^Kvd?iq*FuE}=Z)SNhfkWGR~+wMTEM&o}7u*2kC$Rub0O9DxDJ+^h<#8yx35P zwi?M*sNg^fsCfbsaj`e@WDufTV$95496l8=4`#{jISvrVt_4ug3@2#lV}1I}0W=%N zKf)@p>j<&S9SLca=+ z@&81R<=Wxa1jt^KeMrAX>8ZT>7aDeNd}!irZeZ+f{@?rHq)laXVkvk>gK>vb^9Xoz zC+_^|?g2PD$ASJN0Fji{VnEw4S5-%$($W@QI9-M6Dd@$ohzvtE)iPqwqt2s$>7RyUt2QmPTY{379v7?6eUKOrwgW`Qp@}F2V8SY?R ztql&()71#&)y6Z^Sq=4Q;Xyw9`}^x=F2zV7d?=uw*wq_$7RzCkY1ob>*_1GIfeC_Q ze*1W8GR4`r_bFLf>K7BhZJnLi5OWERVR7thP7sd@WEilk4TQ%#Yaw)y?Puz!2cqbG zQQyx?P8VM*mZ~ylWS}cwCt3MZREggOJ~`7HQeFAFDl__#1S2Q7uSGZe1b(xD_56z_ z@UCf9*=U~e`EaBE)#~3VncGc;w5ZO;dZOBTkrA7nJ({yJGob1HxwYT8=y>$qtUB%- z7VZ0Jd)*k|MUER=RLA+^wj}8Q{R}hU7FaZW78N~*$Fpd`Qqhe^SjoCTvZT^<3X0P zjviRXS_%^5JV)l0=xL*l8+6LFfLHG<;Ku?VgFq{2sXSV=`jcGy;9S$CiB+>$@^qut zr5T3|uJ>T^d{ye|ZJ9V7FCr>rIplkwA(5qA2M(-7g>aHk=F zc~Wyl?XO>=1mwuUlD-(;v0+Jr5^`k{FmBT79V{@A_FgB9nW=_!$!174I&-6I(W1+t z7+*YO4|o1}Tbe#u2^Th;6kgs9{)sGJUQ4yDt9VMxG4Zs4$>wfCnVpGY?jY_it_rKZ zN4j~z-sx<6qg=xGwH^`hMN3bQJ;$IpI?en{)kdgXtAw-j7&J46;I1ya)f zlc$6&SGT&fB-50fK>~tnVOz@9OmuyA0CF?Fh`ava6hzfHEV8l*vB{j(r|D4G%1y6K z=3hOSymZQWXm+WCDZbJmYLoxzIDtN87qUY!)!p-IA>Rtyqv%JDaJvRU7wcJ{s_D~YY0``<~- z#et#pt#PB!NYMagQj>J?bU-bB%A#1Xk_N@!Y2PWf9z{F0wUOYs85RIQ#k|+*{Rtai zf}DZoW|)8*t?z3v=D6s&tk|uL1%e*}_box#ygy<~ElK&V^OPcw-((lrc;Bk4heVX} zxC@I^>h};{I=<%v<)a<~M999yL)22RjL68#tPcG~9+8@(+acF|Euo*hPHhI_m8&lj z#9c4!H};l-i!gCXwl%yT(HqCOjs-{3s}O+gejoBrT&dqeBSD$3_l47-rZNF_VZ%8ptRr~)Kf1_`O6M{53c7M09lo-sJoa0tt@fn2g!Lxu3y*=!I?p5Bdr?-< z$o8L&hKIN(9}tDPlJix1439qLhLJIL7xjTIvM}Yf&N|H_{Kw+`#y9D}=##v5k<+k{ z|8@z=sX$P#9P@1F6^Yz{GJ2?JOq?)R6}Qp%Nd23=eQW+%!N-+AY}|wjHSoO>$gPrhx-$pQ!_bfdk30xW zpGp#~X=-y6mnlP^=%yh+b{Hva`UcnbcSKzK@v6-)1VqeknypmQIr?Ibdu?C}@AYsp zTmgOU65w|BZ=1&pTV;lU?f6l&b6dNssIRIXWkJ|~zb#e>nADH;1QML=4j`sR~b*ZM5vo2l7p!VMl7tm(^lZ_bJZ zqh8>Wn9+szORrCW*fy{9)SR$)K0`-2IEk9cZ|&~S%-Ay;o7Pt22utd3d=>W`y}FT* zNqZLG2!AifA@ou7bYguZ5l{d_$*ayjO&H)K2Ruw=c?_dB3{lyO@|EQ#r?>d$w&Jd$cW^aF@V0xpgsQre@_?s z@fJ8aC#JqrAS_*MBr1<#0l^S8xQQeX72=>7HMGuZg%~)C8_!?j#5l)j&5(i2*~g#f z2ECh~Sjm3L`0wU*E3Z(I#cv#M;tNXhC)qW1jw`W!U)Vw7=oYAW4TTjnZo0P<-!{W_ z|0_-?4=q&=?xr>;&R(9OMkzs4`vtQZyBSt68H_lkbOf6$Ss zgS7N_RilzlG<`^6jKHSf*SoWt0Fr=4{`$w#VAv5kydi@efZxrH<}*FmQEPsmn2@HW z3=}c%-T`bW<)fp9x$sWgkx+I?T_cAOSi^Sb%QW#Wd9vUihg@p{aq5P57!0;)kW~4A zB&|ZH$Gu%9KM25kr?#Fg5rBVoe4}vyo1RO$+?Py1=hE(94E-7iEI2hsdsw7lkL^+5 zA|@8g1vUWPIjuJ#-lgktJdm;hC3UgM*@3jWHJxfwq+jP>>aB&s*QBHE+XIi+Waw%s z{A?KSv8(^HRM)qIQVVx6tWC2=R_+`Ar!lQ5?Rk9O^~3A!bW7&qGAI-qyW^T!0Ym;N z*)^HA&_J-eEB4;gMtdaeOh5#zsT$f=%`zM`Ehwz8Um0F7xJBGOHsF9>##Nfup&w&i!kl{Vtg z5&|w(P$?OZ+9faY=R}nrCVG|pa=!ycTGdU2OLB+vEfV6?9ccIlaKCPm~ z1we`OAj`G(lw-;FZk4eRz8ohm6@q=8H@BnJtVHSrNM3>a`HpqO)p&^3y3OjaOpe1t zj1IjM^(|Ma+{n>q3?AKrEK3sztOwb{%b&$ z>rt};JfSd2bU_8GCqC3a(yS_wAVo%=*IbtfICA?xyj`fX*CBm)nK+1MoQf}f5LW{5 z8J1tRhF0*hXU&vMATR`KcRFE!qBfi$zJGhc0qTlxDKxAyU*ErN*^9ZgqW|0pW4vH} z2^M7s5}yozg#G93UGyKm>OpS)c{X18I!f%d;R{Dpnzxg)dDQGbS%MQ+4_CK}ih|qM zaF_|{u5p!iQG&{)6GP9Fj}OO{0l3n5d`0N$ZXLY5sM_>5LAUX3GVMaO@93lyOZI~4 zzN*wxXz;Sv3!kdMWDaa3J~>=kn(#-UvODf1mBE+I1r^pjIl#mR>zjPm%>pN&<9gpu z(KbOUn{)E-ZL4*v8a)_btX`I<%DCS$M}T#I?c^rD(Mv8Ay-Dd?nQ#k&$VO&^_1U3Z zTgJ)RPg(FEQ_8cf<*zQ|Jr?=mBYhV6O8*65BrAt4WdBiwEi11~Y>~qCcoUK}FTSK4 zV13!7B2z0KV^vX_t#j#`u~Vp;M#5Q}ScZJs0(IHdSiwwA=>N3qHo`-o{Nlw8J_*p` z2jEtAh$QO9rao-*w}mbG>_2U`y~66eNUL1V-aK|cYO`~!#EevCYw&(bSM59F-)ZM4 zb|>w*_cW^JlA+v}a=>dh<1IVNc!-=pmX&u;#WHy}3aS?Hc;n#+FYs7=g=p~z3aY$+ zF>;}4D4>jiL_C$?lHliUctJ+Rw~TYx(v*`Um*Exur-~7yE2lNErIP@}Wd(t!t~&lM zdZ`hLMVK>%C-!eibhdrawuK4Tj4*+2O#2&~PpY z4;PSg6nN0$O=(rT*2hKK)6UauXPQuB6jEJ3&H5HkGSANG=voHv}Gn z;+ap#zcFgbeO^A~&URXfD$2v*eW?Fuh|4DLa->yvH%$)=!nfn6iRos_{0R7;^5oNp zzJ@-z=D)cqDoA}#tz5G;6cQ%W*J<^5$9{!O?u|QNcX>XV3PPjKOcyUio(<~zkyppn zX$cuPgWdchMQoo1VulNc9;xk4iPfvRa;o6vNGa1J5XLE zOXvQF831J&2Wfz7K}&Ui%kcv#tIG5Jv7vM%JJb|kpcXb4_;@2M`8KbTU%m2}^AZ!g zD835OFGDH&5SXL#3a{=EB5TL9$zn(z!Qn24U?*fpY#sHu3Qsb?eCBf>e*|J8NYFfI zxXW0OPjvtr5VF1KiKy7f44GnU+u7O@{Ql@BleY{%`9_=JDfu^D#6ChoT3WuF*GwNa zSSc$g5KLvz87yNRjYVh@IadpTV*Gvrg0eHUBM=uhN~f-I9`EotB7y1`mTflEyokPl zYm(=Li0b?FM-*2~RTM-fp`J~rn|~;VYorMaHCo$iTIH_P{OO9}Ip{I9BQd)D?gX_u z_Pml=5ZF?%C|X{VBmYE9Qdq(~x1^3mI(c7)|7fS))#XAsaYtWmXhJ*K-K?!fE}PBu z<~#`-y>0-t{uTW%R#^U0NxK-Qjcc8v-|u&TtKXe9o&08d1JmO&ux(Flb3~`TV`idc z-Oa}E``1T7cDxYu3x$VYo5|~^LMT3&s`=?k8~?A{3Rj0Kg4Y^m;y+_H_Slz!AC1>f zEN1NZe~a|sXhi_JZkg(`N?(93bKC!xtq?nz3y1o7hu=xMD6yKl*`R2GGZbcU?ZJo& z-1aVH;k}RB!3KRxJ%3hWKSYMMchp}BiOG9b`gByG!|qQ8o)qDtP21=K{Pby1$53b{ zLs9gvgrw23!r=)`@4yd!*@=z(FC(jIOqfC4889nwbzuH^ZLZB-dco^z70BAIV1=56 z;nSZcI=Pi%n}1jS)*rR=Z$1mOUkS?5w%y{x{#p6hJ#-BQ9(rP`BtazJR^V?zC!$sd zN(-B1|25>s%UUlZq5}Kra9ZT9EqAZnvAZjOxyx)rcdx3hBbR781ULIF)*}r+4d)J+ zCyY?~+>VLsNga>FDoHy3W)Bf!;6GcmqY$R~8G?O6^xK>C0(bGoCdK`2^u}dpHGWqs z5>Ki>ly8s>9`{uIlirHQNI=eC& z;rb3Oar4hiLwA`|ot3@`i*vN12z>Ej|!R=TmHWK0LY6$&(2AK0Jj{Eu>wzUMi98KDg-_4=bKU z!>6(e9$a{_sl!X}s`^dYnc@cE#xNHm(>gk!YX4ty;FPiQJaNjSQDeckZ0zDb52~;f zal#ITWCj`EL|SU;x!VZ}R% z0iabnhQ~g2VU|M{0lh{FoZyI;1ViJ?)?aP{CI&w=wBLwdX>|g=_5v>R0`dpfgu-Ua zuu1}?CQA=SZ(~Kw_mhr1R~c=w$Cj-T)oB^{n;eLQ1VnK}=Zz>j1dGA^?sbz(H#czt zY1EHcKr34+b*UqO`UNmFn@D^1fhj9A?^<38d@@&qaaGZv0%+4oM|g0p;<9v!ADcAV zMtAc-N0XgRVuM}`JR_Odgic=ZJ~OqcW!#PmG2*K%VuRA4XAfNXGsMZXH))NWuEndm zC^CB;&6W6`TBLKYW7XV?vV*uDZhPn+5-B~dlqwm@1<3%E2@^;Wt;&EvT_9xNxNqzY zzHB!Fyod)ZqkGU`*@mY$@R;n+enmY;`>lov^GW2KLn07oEB|CLGc&Lh{1 z3%5Ddf8YLEGMGq+9;-k+m#<}mrf)NPMAc;78KfD2?=FUQq~H(a6tuX1*d&DhfE2@bVh@5R;q0g!q8fVO&!;@+w0^(eLs^wDxyNpmI zLJes4aY}q>=RGCfS*aOf1xh+Q-%aI1u?|6nQ>kejaae)3TWLv5z#B$^{N!)%oJoPf zD73?s8ZuDR3W2jjM92Ugw}Wi+Lys8*W`zUW)2fde@9`$G5Xu!Ty?l3-PO$G8BEC$T4wp zrCloN6pSt8gO9|+NFL2i+82XD0ki#tnr6<+jRbOSfB$hsK4!4chfTFNxBm=p1`-%` zf*)_~YhkG1pVUxKPtoYOxGmhStAp7g#44Hr5sEr2NYzX2-a@ zWPjU)1f{2wfGlx;)!C^7bg4nQE9B1~|4H;q&bv2L3meHiSA!e;lCR@~RZbX&HV?my zS^a}V-7&_;7R^2jYzc8{?`K=fA;3Y;n+!B9d|LIA3^-k_a#YH@(YlA>f9v2HilgA1 zy-fZ*OB5&11DT=>{&+T=)!!cdziEShUJ`c_&25%&1c?HBZKtN>nZk5hG@A~E?`N|h z=(72rZ-kGiJd?Ub`^2r@Uu9Yk4xGpEqXLEHSXf893a5TNq{K2R^URfwRpI}Ubk+e) zes3FpHbx`e-5?;LAV^CiBA}#nNq0$ZfPhGs2qN7nARQx=E2$k61tV{<#mk+2G{)b5&_<>ZQWM#EvZ_GVq8?D#qEA(YGb5;$TB*`ItX1uMW^377trJK4bmp{X z%OVJ)JcTX6u-868-=MXIFW-%4YhGz*5T&^%xpm$|VjR&wb@9@LQ>r}z=eFQe0F4w~ z8}fS+HgXqczhFvVAof(qCmQgjZgZ&JOgx6BZ5!6 zI)6f>2IF33Q3(x3*IgXp4!>R^E?d(TytqygZNi-L7=500d9d{S(KJI7b&N<-VjveAS;c14D0izJ95ohyK0TeK#YA4l*^Yf0qYb4`u0-ej;Xk{L^c6 z?boB!4-k;V>gJ~M^0XkvqLEbNY3Iz%`99mRzwuqVFOw|BkX$H>JUoO&y}eR0@o_(G zY}#+6(+ltq%BRI{{IYm&2)Ae~Ymcra+(`V(?i0JTzs zp8~Y3n#XX;KR6kGVLacg@v=&0C1PsUS^TwLB0tTdV+y1c3uTF!DH3u=$AKX>>M#H? zGi!gn^2?0h=P2(8eOH0tR5g! zlzcbD)!+Fijg9~cC(_W|N2(13sNXTLJ0T-9>b~i> zUJwi4z0OVyjnGxzl9dp@r%8#}rjV4RxqD|lbzHqeXXHemGvwhcG@5-V=;<-X^;G2a)NNjLVx@~!&BhIi zQW?*N24JYGUJH#bd`UE!UE3-eQPkCjwfRVwtQXw`)>c-n!+j-1#>W1r=Eu;>1UXrM zjqwt7?=gXDQZfw0MD#+z!2I@>G2S|>S8VQej+-L*=_ALi?+%vh5Js=JjiTn&B$|lP z+*UNBTKEqp7SE4IKYXAwSABQ1h?(M|+u8ZJyUNqS-&piHpO3mKG|7ekdEKY1NA2V! z$D`SjV1Mf~?E=Oev$+727&oZG?&QCv;N zm#9)$p$Ha3PNro0U~LqQvp_S+i1tlEeatSZ`taqob${qx&b`5CAa03V zIl4cvkEj}sz92SLbm`Z+sPib^I2uX)ry1X8UiW0m7x}^X^5E9@Zs%eG#KNR;vN_Vg zEceCf@|X6}pC6}-a`^B%rM?DzV<_+eA1w9sc{O?vGxje=*~D6S z`zs3<`qC`JL5rRI(S-VAXc}|>AcAR@kUvnV-^E%U8H`F?%tBj@%z>BaT0bUj9n+;- za4j&YRP@4ttjIBztFct%YBs-*JdS?K8ku4*Dl)x7PGNm4a}}1KZxwDCxl9Ln81`v0 ziMVIgf4gn0+tPv-Cvu~sVcEz@=t$;zanytM_`cJtvqStE+TP%OJNY@~Bd_a2l`JZ3 z#5Qm>CG~^r0bQSkz|l<;r{LM6#lAktp0OhV?AyP;udWK&3ap2C)g{O+Z8tCAwkX{x zHxI9!iOW1m$=^eqD&8-hG13kvd*_c2XG;4feI>J8E0u7qpHrj$j;lUHT=PBJd|k?A zZ0u#W^M(geQkTJ>IKH@aOe*J_h`OO>1(jY%KJD$<`t}(>V+DK-{QOCbJjuu2-MpTE zj~isgQ|;5xHn`_VlF~3fBGGW%#fmUrvpl1^XEN5vlFTfhlksI=Sbp+@F=%GOlhi8i z&jXZd$HLWsmw8N>iOzQNsbYgx*1~jkfn+yY-fyX5?R+Wc_Q2yKiz+;a6|@II3&v;8 zB%q5JTD+=W4M-hjX76!=2H8x;*^WI8)|3{{1Jhf6Mq4*~{qN!*3Qg(3c7pGhm0nH! z{uuKSJ~XP!gFySLL?z?#9f$pE=2DZ7kGRJme(p%#f{{~To8?4WoxoTtn@7*Vk4LNS zY%`264R*OJott!vj0fJKR-nBo21THU`Q69tcT^EVOFTr*GM+Sf{g%7Wl>fcaH%)jA zp!hLEO8keukt5;VkKdX@0U^5q-fHuIOLKYlgb`s{ndnX(p?r>+8X`mJ&9Ru15VLv7 zC#JKOIz$dTAfR?Jn8Nd6NO|CJp-J7ugfY)Q?&d|ULSCYhk`igCeAl*f$*(eZV#Q)w zdvwz4*OrOAP7Zxl?_?ZSic5)S4PHSAJZjqE&;S(K)2BJw+U6!S2mCx>?-GkGxD2!g z3%4)A=lJLi)`^%{J$ZjTmGnxhm;`!W%%l686uxMEqV~aoNs1{R^=!52N!hp@%Q*6f zcH&Vi^!Qwd7=`~2kEnmASIj32dS&8_PoC)F_yq5@@@;ZWfUDzD2UnLIA-h1_8#(+^ zU-2cCfDAHP?A^9!V&c)pCD_wZyZ5!m3Rl$p_@;A!q6h&ya>3P z&Oq27TXh&_;J^Noio)Gv2SxWhy&^&ylr-=NKg4g&S{pYiBSXri*myvSUy*Aw56?}p z2b+zVO6b^*?6aceLe|10X+4tgXPS*1A!vbtHf1#c2EVw`{^nr0KS{otBg5ie=}Mlc z5&XOIg^}oYNsg!?rnI>9@yRK6oT@wYo!bQbHQ3_ut~^^(qYqD5#7;$J<-cro`TYzJ=3Ae$Vd`$UB1w`|A#qu z5^o~EIZY(GH$I0y^E>+Sz0rl@{pw1&-hBN71~9*dhB+DbgNJHQt`7+bgZHaSnsKkW z{rxq=h0-Ry<8$N*e2=UgBt0q>GRLTqL8;<01Q#{0yU-s)q0h+OsW|1ot-`s~fcu4p zA(5s8%hMM>%6H>FgVC5-#kctKTe-~3iWR_n%0TFw)H5$fM20HbqbunSZo9(-Y{ie0r3)?|lDYGJpw0Bl3y#BtR?- zDwYi3plUAMSHZLhJC$|+uv!XIzqqee#Q(j+;A~LBdO5zPUWXrFtw@ASl=WG(3`?C+ z99Rrf^6^37=- zrJD?D<@i=uufXP1V_i>hA8}?g>`VnUN3!YL>~Nm z1l+tyaAuo|N2#kE8EIezm0(mL9KJPdQwjI##f-}eot^H97mEm)-KI;sQ#nnH;hTM{ zW+y2|D-@L&l48>89gVA-XkpUg8G+v2-BoXNUHU|Ry0O^eg_Qa63Z?*y_ zj=kZLSNgu1?0{v7DZ)F)OYT5{xWU+!3i(b@h8N?N!@M>No(>6|BE!4fZ1fa0w$Yd>;bnPWEutR zD_a?u-KCoFRZ*T6l9wm3C|?xiZeA;mNap}N>T){{XHo`U)WH3X-Gii7#4WGiTD3R} z(lt3f*nJ6g43W)#Dfc}Cel?oW;VgZW#sheilfoj2_))hSb}9O)w6sDw!`Ba%Y9GHM zb7!d+Up?wqRdjpW7t&1Wm4ic(E*1%hHi^KvYA`1nEI25BFp}Yr!rCLDlJO%pZqo%a zV=Jc`MI!U6R6WgxlmM1coIP$#>pv zYNXwFCab9xMyr3&C8lgWEy)qE6+>eV&U>(M=?@t&!5e|;-}!OyUy!AziJa8T%99FH zUyD*94I*1p274bMfBcXrOyqWR@Ysb1z2gJ3*$d(i9N0K17$6C6Xzo6WIL!GjaY^)j zGH35^&=EoyU>378VY*?gGuh9Dtv@)+S}QM-3bnQkb}Bp%FD&c*XiOx%i=+tjkjH8o z#7cj?2JzB^vNRSo4MYPkSGpz%VJj=Oe$1DqCPuo*iJ95Rc5cvTxEK{Op=4EVYP{}a zXz*Wk*xoA3XYaochevA<;}TTq@K5fYF%>=x)g;gVa5krI)m#LBXFJdTCaJWlp?np+ z_fYT^^+`#;XN14HNrdytzeAJR55E`v_0;73Dea`vs*!$8ftXwpA*sVb)8zHL((R5w z@aHTnhTMEp)`1;ipalF;0B2{+8U0@Bek@I47Mqj#WqsnjNS7e>Di$T@#)p8SO`n~t zgmJ=(bvu5BqsNGa8wuU>)FFU{?>sMVW#6BRs=L0Viz5gA!1%q!(d3C#?7&14ocRTB|74AjDJ_sc<4!O-@87tykRlS5kH!+V>w005%X6Wg{ zE1|W~ee;`1j3jO^1sC%Aq4tY%v6;qRzpX5k86d20K$5i=^Id zTO9pNSosk=;PwUR@~zoWn8)ZF`49##|BG{8gj|B%^J+Z<_J@KYhDW=bJRI1!dL66g z_na_6*Y}eL8+R@iOrMj$@jQWiARq3x)=mwA z`K#by%DlgH9*!48>R&bN4x#G8r3Qvla2@Gx-K+8fjf2rTZ-aA#*Ftlpyp_%KKmFO} z(K_vbh65It=1&($IAt_llouNR3=w}Yg?-MJ(?{FZ-=}{3m2cLuj6d;P1ok1)@i&}& zXOEuz9R<&;?szJ`ozIzH3}r3usi~iekchjUrO#m}D!nyc_;G=BpdWwr{BT|w{6p^k zunCBL_~?;lUch^{wvxg^&YO$fsgTmOSkne^bOK*}X;xnX-#6s$o-NlcDFtAjcR2rx znBnONG5@8&0!hlfXv5%8=qklSg|uMV#JivU{S?!rtc=vu`oo;$(N^GGS|k?20C~f+ zT~pGZHVF1|aj8B_H*W?4I@AVV!Cs%B6;|KA5;{dyjlPXyM2Rgcd z0{r+<-zn0@7D{>%ei!af=;pcg;lyzUF3-MQ_ z5FHzJnR|&F4T;t2`Fk_sv(zj%=C%?3BC(BOd?8Dh!kGqUa{J^aH1;wIjMN2!2SPRq zLxmu|)e+6UE4k-ldfn)b-ftMwhLxjf+~Y>FO4N}2hvR5)3hx}gHUY|d%m*6am($yu zP3-c)P0E4LXWmiTdFcfQ6$-a`7f%7ecgP$81J?2fWk5~cJC@$zkXFfb0|PzV7dujf z{W}FS`8v3z>d(81o-=daw)40AXyEbitK(Yu-1)mXVaHANUA#|MH9+F4+UcYvz1!SJ z4wJh3b`$vIxFscp!3oRzCqtKAbe73h`grSem8t(`0y@n_=7tKjTfpcpq=oZ&V(G)d z-H~P{1|~4DlagjYuUY8QJE;A8Ybvi3Ww@IVv=)37(o@y)HK^xZHJq;2J3*e(cXb4_ zNk_xu&F(hc<$*RK`1hC6!Et^ziV*okUT$mOYHmfe$=J2#oN73}o9Tuh&ISBVtqRhW zI27Qz)UNzfw@n~EF5(|;aC31iAYDy3-|=Z>&H)?{4OE2U`vNPcL{mlkC+DpNLoIC$Gmf9uhi4iJIyf7&(FtmN^W0# z8`@pUmTQk9BHG&8BA*sUV?5{H!k@rGe6r=B)$S@2d>9+ki> z!!9~ZDfNpH^zONUA&sox&b*~WwI7NH;}g@5d*bNC^Sm$oDaJ%23Pb2P@EXe}S;~L- zrdTN>GjmJFv_pPAX9?4)c=5YH6@%TAknWY)@KF?YCkQ%X5I=I-I7>HbiK@=I;gSF{Ph9LH#7_b+nQz4k>XwQ<;Jt>X-upo`EeQ-gkec1=yez$x-x)*zEV zw7{dD+CSxc1EG=jIr85CTZ{r_qKaOw>`%V|{F{n1RGbN_8_*ZFvd$oLE-Km_Wa<)! zsAFw17*YeU&>dM~HIGk7DgtbjF1(**Lw+v(hW6dQK|ZMaT~g8e%bMtx7IVg{dQPq; z-?0i6_KOIG&i*;gVwDQzx7;4IG>Jd(x57)m+!c5=@#PC}yVQ{VEVAvuViX&*tNjQB z$)uda8>3<(iV*Hbk2zUWdlpJ*g-Z(d7IIt4WmjVo+Js%yc-`L6f zU6ZTp>6wkTU0YhgM$Z3vdx@cM$mm5fx--cns$XoJtp)!8b4Htlg2`7OkWb9=O*=Qh zd+v(OM*}x*AIME><%Gs$Dgn7UxXsvKe(k}>&Fnhie2d}f^)H!r<&nfvDTyh98~y%E z2oD3l3tfU-&=9EI?eJg!G-xLfiVfQ`nB5=nUG`{j`EMr(m3nY>`09A2X);=A;!Ego zD(OYu2a7+ffe3vE)R_n{Jw>wpvuG1rp)dUWyfa!1b83A-)9t)?9WHxq$B)MAaTb4P zusKxlJRi~T|D3o!{@qhbtck6PXv5uYm%i@NpcRCvlYcOLf8Oomx?9fq<6M$Pw7%E) zfD8XuWne5zQuFEWST4VZ7Dg>=G@iRX$^o6V>X2NtIV!|0_&6=bTF+&$=u2B18(=76 z`l8zygX6`|gu~_X^xj8DM&kG%cU-@hr_zWfs^T5GzT8tbcx>KYN@J0iOM`VVaL@}w z)Y%R@cFkcdTLv-KP#;@bo(YEQ0)=amZiLhV7Oe5NhP-Wr?wVxsKaoEg8ps%j^jii? zbqWSB4!BMOAZ+$R&96@j^(yoSsNWnTbv9x^SCuI|*nNG)>cDv{0Ktta#!x2ZEeP;% zKkkSPgfLtEV(Cv{E_&x5U>4s~n~_l@;j%lay_GOcUh0QJNK5)1z0|KXd_F;X@afrF zy|Az_Ye-0l^eT(EDymSg>YLq7uFuvWXCk1dPh%mxIOvJ{^^y~{86`w$#J8i* zebrz6oT(yZ8DgfpB@EIatH1iq)~F1sZ^$!z=cb-WLeDNBCIzgpjW6?^ReT6HOLD+r zEQC30oHqNdrg7D`{H&}sth?(dwRdqZlagV*sG<&;jKB;uu z|0=`u14%vp``jFr(OFuM)aPQY7`JfSO78)nhSXrv2&j?|>MQkE-22*}j|YY-_3$_f z{+Klc!~_Z`3YR~Z2+5jK$8$(z|F0~+(C`#tchyb$2oz*GUqjJ*>&iS6r?_$#-T*mU ze-6fh_o~6HPDo-%RQtqvEN_P zP~>Dq7?jxXEcL@c{9IEe59qf}_F@qBs`*1uViQReeR(Sduscq2aHAbEP6BD0?s?rk z;&0_EvoPYDi^)cN1evmW72myCH(54Qa`^dAvXb@1dT2T4YILVd61HCgsEc5|>=o#amxH|fm^BtZM;bn?GUOg(T&r$C|0i?r5GRq)6UG$w z_Ey5CEkj~4?>X>5Tl(t@%g>K2ZV|0OFxssK zM&B`e_GLZiO&v8aVqG0+U(4KFF}8F-)hTz{*vhe>0>o5MX8zz@**D*StisjFYgBM@ zYN`@=_tSZ_b^pN9f}buA5K}|VMDprEAk+Y6@h?NI`_>pgR5gq_s+SnMFp`P1DDsd( zhG1zO&1;j6E?9Nx9PH-rVEMT9E%t<=R)cf)D4o%&`69qX5t94;JE;XrZe1im#3GwD zQC^D_!!Y6$Hrb^uSfqRfNJbvob3*Sg)7im^gMidzVE#Swe7r&5u0-=|bIQKQU?^b7bs+FKdG@uM!N9$>-eQg1S0b`6TQh7XNx8erAWcSL$Lw%Lx-_ z8<$}Fx4*?P6rWGAvF=#m#9F)v=r26j%L3LQ_6_;eppQ9w`%Td53a6h~F{!DlMz1GN z9%KHB&{!f~)esb-slMe2SUyzZ=61iPcD)C!iD6HIUPp=y1d=2U$M28G&Gz(Qnu@%x zk4T?t@m=C$gA$$8Y9AI_ka$J1gvP{Zl&6wzbwi&&2Ymz|6Uz1mT(*8J?}uu%`Q9?99)nl zyzj_*8*?ksMEwc%RI{_TW(o`Emf^o2E4Lo+m1oqipO;v$+cZT9z0Irb8mx}nnQ+{9 zSCknwyfRg0gmqTGW5nC*QSS?jG6=94ID*8cCBynfSDQ$%(fy5kkux+KQjQ-#vj}~i zGe`$k>BsgtK;gHJ0mV3twK@<~#^G!iHpx*xzIzt+AZDxVZY$APx2gbK%}FR@Iy^G# zvt+W*m6B@e)Q+g4-6%nc+7%y0b4G546Be2x37<@ETjdLR5pH%t>+xZp)fvczhs}Dp~oQhM-t0gHK)>h$FNZkHS-aP2Y+)n_YZ+@fjN}wBB+d*f@=> zht2}^-WP+$pKA0;t9z#fMTm4=cmPP>l~Ci5d0H~LlHahonjA?xE=QjtzC&3fA#AIlW)zl9F!MVy*mzBh`>YpyLy2^D4NzWf>gEg z^Vx7KkJ z{ekg|un@q6DL(8QlO>FaKf<`t`GL2uFG(^F0Aw;rWy<`Sa>|LeCP10f(s~C8ES>UN z)dDSSYzlPXlNTW<;O0w3ULG3)vL z0s9f`I-Xb%z(MSu6?BWKYu$Ss9UeZ?0=^ITQoz9NrUd&5`OHb1F+cDkrm z4U<}$-5qoZo*Q`Wj}zNC4Vz{>>)Qcip$!`6``LR*w*EGzseEei-(Mwu9DshM@-|7W zejrSsjH+a1FT-Hv$@Owb)CX*eg`86OTFt##V}L>07e@Cr#HsL$WvA>S{?CFGW|wE= zG&L)fh<6n$jm!DU!Apw<4D$R@$=bQ0BO*VZ4s)66~uGGttN(Hx@-*ocsS9Qxy#2+iAk zU2->Wu|q` zjPwPvr^dFUS^}=UK75N|NMW)+yOX@*CYiZT{fqqSJwXuD_UGQH+;2Qf`Asagg!y@d z5v(>(zwkoJC_X0<&C0y`M`fSa<~#juquHZ;0`ikViGp4Z+zy|A11!#)@Fd78goUB& zn0VEM4F8MtZBUBr4GCDD(|!>v?z+kjLY&r5!A&; z7|>&}x+P+@NP40w;G)9>a-&_)bv#&ytNU)aZ14FIi+8oH6Wo_`>A)GWURY7Rar14) zW*zyNxh}(pHRrjor`Nr>9ZJ|nO~FxXPIlm-*{BT>@@2<%O{=VyLrG00+Y*lq! zt*d7MXIGz7HfrMi?l#cFynV_#_P)hW031d5VyHrtCa_EiU`>1W{)9E~=4`bCW4~Z? ze|rgeaF&8`mUxO`>ijb^3cf<#oIBwG4@@@wXbhi-h;$RYFTe-hnwgnB0LfdQ+h7!U z#vz+5hlta4TEg7wSYX4Vz3pxxG!=swt<*W`kir9?R|i@UiT*u!XGm1ZWJ{_rSeulF zW)`D39UU0JgXHQH;e0X&Ee81elM(#6F{PgthF%PgoBzqf%7L@!g)p!Kva+&Zdz8cP zN{fe}lN2`K<}n25wDJdAShBs20APscC~D1h$;sDm1}o`UC~z5!&je&lA7MH_Q5Z*1 zZp;shh$T{rhBK3s=O+S&#$M@0Y36j{opSiAo$ZWLz-4%lpWlG+d-Vza8z(LW$sM0!7V!mM7#6#Gh;ZEw21TOq7tZvQdG^OEXrv7PJc{8Dqa z&f^V$34-J&9W~}Osu8M%>=uG06&fwN1Q!Ao*;F^O)zqpQzf3+M36W)L{N9&VSig_N z0yW6Bpb-RT3Ws8FHdu<&f=xUx5KR%MNmD=)KSJ&L#0sS1Hoz6ilmQe&@4A&N3z%@@Z1Mhnw^fA zVtN+Zi}>R0L8ew6;Bapq1Y?@dXOi9OXc`L=O=_dv?3Z!*2*@|;l7JFLm4KizuhaTs zkEqUXqyA$#JvP#N8~}=^S?Ps<0)}u^CHFSj^{I>F$WKI7WEhM=1JEW562`iWFb`(Q z!$TJQ&Yd^;iK}J}@_hZE^1A^7jTw1Af$8z2mS;sU9gAuJGE zyKDZ!Qko7-C`2NMI`wGSA3jvKA#|TKoyugKnf=xEWd_vUIK#jNx()F)V6G&Hmq=kx zl8P?z%pi%Hv&R00TSw=&lpDI;Z@c8xPg@+Qngtu;-`Q^b^I%e$ZxVIn+ukSJKl4rC z>q^|kj#c=|k_mb=Tdt0<#k-yjrTXpp7j5ZSEpbVdOrTn{ZWi1M>^@+8!1MJGw@j9% zd5pkfCMBn1HI!gVtch+;8Vr+w9pr=A7kroD#TWtyd=P^rG+6%-R+#m3$}*vV*@jZ~ zTw^HUy~v(}jiT>)x0gtt*~ga&t@P(FvvdsgbN7gWi|NwVPw!Mgr+sk@{&A?aUorS^ zF(S|ZMC2=K_=%oiz@Hd!x3FN{P$3%NPXfwR0QtwVw>unRjef^wvC6(#lIJC?GEI>{ zYU)WLg%J#sZCG0BaADt#TVT4|(sl}@Kt_l2berlRzhYgmt{x-PqhxjL%)hi?n8hw8 zf2U|w7{~3*w^WS`4w)6{61m;j)>6I~2c~lbjJcg*fH1x$=j|!FEbl)|n0UCZc9+$A zRWoqm7vPVJw{0f;mAT{)m;4YuEJ%?}*hDpA6^BcnveZ0<2c)Bug?D|m-_I2Wv9WPa z;!trX**UfL2eWDsm)6)IJ{th_V2c`TXC*FVQCvx^VoEOvfyrIPGl0|!eDK+KgTX~N#Eu+tb-k&`2-qHRUV398J z>0JZ4S`owM515I~=pC1cto$B4fAQB(eUH_eO_ItrH`|a9B8S|6E0Nz9aJ18+U`j`%(N$<)kZ_-usLtojT zVmeedkZ~=kN_AL>kv$)rHTMI+n+~u!5o4d#B0qJy zTsyuU=DvJ@5FdHBYTl@~cpiKnRI2*ITC)Q0+D}}Lgq)QNs43qOw20&KY}tXPA#dp! z6sunPG6p}T9127GnT(G2`Yq+#`dWYaQR2NIIESDYh~NBuZ4mFwQpZqxI#)bhkV+1d z=CjKXuhpn>aokyFG4rss{!RgleJVC{_j-3Eso|Ao`JerU4xXUDzvr-&o}d+PXW2U5 zdEHmoqF9MEw!D8;gO8MxM1#yq33LCa=-@Gm$g3-pmGjD>;0?TY{h9K1e)PH%PP?+m z1lZv4@$$1(j>>gb=|C({yGu3$@o7J;HWjRzwloT_H=twEC>rz2rs38a(2mYrdQgZf zi^z?w>~5{4h&i%i;nr=SQ1NT@vQ|CjzK!~O-@jIR9>kV*@$;{pIOT=hh(JJmV8p|g zXbe~Y&;ihB3=IeZB)P&M=Joq5bHB>MbFb#aGZX`3 zc-haQS>IJs_QF$AC}3{k&%1!*<|e=6&RAfTnKTUJk2zH`E;7+I9J)h`pC+D`OAS=N z2}?u;?dvC*kbZv+7PjnxOk#{I%@#uLZ+##j4h~XO@I-5`du*rV`StF+4+eIKOk@Mo zfl1jheg6;eL+&pPl0*@b1X4t-z<)rciSZ5mVLS+0SA{&`yfB*Le)YV)Xj8U@brlC6 zr~_9ScSL3t6%vz6(3CLS>~uY66($IWVU`j+0afkmdrU_Xe0U_|i3d|gVJbGLNm1F{ zh#b(CbD^i{4)-xV+RRrr!Hf6tZXRm$dj`e+uXXzE-%w0DjujxC`V;8Fl*;XmwtUZL zhb7-n^Ms9YZ=D+c_43)H3(LXxAjyu1h%AOd7CSd7aF?9bEVP4|AACuvKC30j#1K~~ z@>C{@ivq-xj~uc4R;GzwwwF8%c(2NTvOG8~t19laQYeJ*bY6dRl7o00I-I+$hoLo0 zq6ZZNwnE|%ua zv+IB_d;-;ao6`>9zT8AZpI=`ULNJbAv93$4V(6yANV}Zx#1`lv$98X;)u7-`w;gZc zf(rC6;8dL-71gm1`?Th`VDP|KIga;rD*II!Roq~@97YX2{e{+AR7KM&n*R5!bplsy zfePHdlGpHi467{-HMLp-`RfVKkh$1wwU4HGBS1~ zJ07@F_c*bt)YLA=0Q(MwZ>zo=@>SgJbN#k1&Qha`@dTzG1)fEF2#JY_@v8}H;q5(P z#hwXZFjhIVl-D#TpXm6OB&XIDcD#Sr)KJYmY#<61#6hLyXuSdpI@d?zd|~-h()n|` zE?{-qf9v^Pwql}D;_UDHSS}w&y^c;hhjUWBlkr2ITm2?1e0N_kzIFNsUE~UktTX0NFMK0_^q_Y6Wg2)pg z%@-A?ADO=@FV_T9^8mMDP~z(wlIRE&7w=Q|kZ=x#s7`Gu$6xi!H z9DU_Uo?9vKgNJ{kGU?~Kw&r+6lv4oCxAG&3pw?EuPd^+pnxP&iidol!|6&8W<;`{)1P`DFLx+R@);M;G!gO2^R~}P%Q7@9M(hca zqQu9uo`ri2>ETd90Q}+7qh8yQFCyL(xzDAOQqyB0vs>u!R?gKH#_#d)v_avZ$$@H9uVxv2EAOP@ zn*xG~p)`K7m4pxWNTH(n0#y=%o86KeL_$~}Bhlbu%Nt-?(P;K3;o^QB1o)c_&KOnT zypN|B;|p8Lv5&1!i+z7(dm9#^s=kfsRQ$MMaRG)sz{b+}zWeyyh%QD)qK6NZ3kQ$t zn;cY{KVwGqDtIe+bgI#5o8ki>A0APa%hgU6^@v=_MRS2Fl7USei(je<yWwsjk8vF_EU182K6hrfm2TFy&Pk%xe*z< z&Himc;`eiv5RdG?8wdU7e9!ckr1t8PpnteHGPq9?B8~0axd89!k1;Y)h9DS+eB?16 z5Q0JF_QyZ|%;FU%1E(uRglgwvYG8vo{VGE*+ApxR=EZ^@J)?inYsd&?A0wm3bdYR( zQcGQ42Va?PN1YVNp^*`_Ft$kV3_KLGqq-jGr~H zovkldb#?VW+BcsubP$twD^;D?en*j3o4`{;syv79W&HT^hDFeO@jfh4s%*8WqWqC@O2$+p9)%}qzd?53@On25IBNgwd}nD zWHUGE%@f_RR?*MO?>A^r#Zyrw!g{hUD5 z*jHyrk@Q^ zVG!Ym*-RBzED}2pjgCIz3qTvahj`M6jzMqEHlKDkIQ{~@%URTpan&MfV}&8sU(><1 zgTFi~%U@ai9+t*sCSe*NZ!a(ki3$ruKcUMFt;*f|OJS5;D3oIU`7M9wH z2>oQp3Z-&{M0S#uo={RzDYIo6RvXo;82+=gWCSePA@cnAt4g_erm#5=6?*lz@3^CT z5Z|OY1=vCdG`gVVSZKSnZa5x3DH|Xe4mG0)ltL%zSFXHoFlagoojCe-xH)o{-qF!+wJ2ozDLyVvQ*J=|&;B%ud7vFymcWf7ExO=XF<`(SXw%=su?kkcz@DLr z=E_E!jgC2%Bf}$&!4f$Vq9CrvwVsjNScA<1+gzC){SF8I?QyT6Mc6Px$s^lobj1nzeB>pn z*7M}ahV*pW_cNqUNV8)#n5Dg`o;^Df5fN!JI!HDdc3682*;_>`xkm(M-r2D}HyXsFiYP?@ARdQu90))2XKdzPMqc!9tr< z2iCf?w(+Gu!%u9UrpmtWiz{z$d_3`|@C9xBKSr{Xn$M7(DZH0NNH5E8L2!q~#1C#} zh-8R#47;dYETz|9YVgl)bc?A?cm;piRU|{`zq@~|=peZV56&6&L|tLz@nOQ^5or` zDTGO|JRg~2+n>rlB08Cx5vcBN7=m;~$n!x_16Z^Dp@EA7NzqOQRhJAB?jI?)F(`y5 zI~6sZpLzE&B~8!|x&h50#92I0BJte~u0Tea3Qmyg zfw^*WF8(vyTX1kNQY&7!MU(QxzPGGR1A-mVPFQIBAJ`Ug$=UW@5nrJC5c#2jwKs_{ znZT61UQN=Yzk$ac>3#ZvRz~bWlKNPCGc_zJUQ%M^Kl}}NQb=0v+kLr< z?Pak%E9IoLmpa&20M}s&5Zpe~ zy&n2(BpXV6Y^)I$0vfMrm>@#^QkS<+CXhYA^kF-Vu&mj{Z;WPM+Em?++@9g2 z;GbEq#`O}csn-AU!7g2Oz^fyB+t>Rpii!z7`N4s6czWKE*A2=Ngp%6?Y3?C+WewWb z%N|zzalp0t-TXl~aKO91gzh|V3KjU*WY{tW7u{>j;R6XX-LI(XDz~D&1&qwW-!Bd< z36i+_CgnLu}GBFzQ4yh6?K+;?H{9ZZhE*9#udbKr7Tt+cYF2$oly3UzL_G!v8I5 zOYpa{anVDb_io*XJU^Trx}~oYl+<8jt2uK4v~HGmDDI<#&uOs#Bk3&T zqWZorerFg7X+#9189)T2K^o}}Dd`evP`YR6?i7?px{>Zwy1S*j8|Inc|9Ls{YCdz$ zJ!jv&*ZMBU9}o*wiYrGYp_^9>pn{C$=|-fF|5oh&-l`o|!*dedt%*AOC^vAoB!?L* z2mRK%ygWm<+&V+o8n-W^obgVm9wA!a-N$RNbv(jN-ENqKM};X9g9d@Z@ir=R`SVmV zN#;rYy=RvWYKSrL!f&?$(#Tq%Xv__Bwf=KrQB2^b3`xk9xez5GGXq^zi|e-%=#jGv zN#`xpO2j%%3zC#@h_yM?l=9fd9@J}``t}?+sfOOG+p9S-G#;$b0;SOX0#} zw`yi{Ds=rMA}jl^J)j((wH=B@0n=pbh%QB!DGbRK$cRZO0SjIina&x!z#tyGro*WJ zXZ<9jR`UK16ygW_Mu6PcXuMyCRcovi>UTbXfvew)?XVe~z4o^E81G#JB$)iYr!Sb$ zDiQsro^^3CtikxNaGsoFZtdqQQ#*4aGuh%kz~#W3YkR6OJ8*iII^zsWl)!$7GQdq!h>5>zJx2L z+tsYGnhs2$QIR4&Ae32xKY0f8^q*3sdGCMpwTc2#4=tbu5HU*oD>$M=?cSpAvTZcd zz#IZTx$Iz>bej9TR{tm^&CLg(YJLO53BHHmqK%4$%Bc5$Xi$haZ9Elw5IG-IO&X+s zUh#36mvjUq$N)m${h$P=|1c;rytbObWb>^Fc^_caL_^%RNkzUWh^gAyk-d!dOGsF? z#=+6?bENDMAo5HvM+8%240{c?gCJD(VpDrl=toB zT0F&r7&_w(4OkjoS;?k87-2?s+ogTCJln|zsj#pk)maEtWyi>L7&_Au9|oKhyDnYC zJ5}j7=AH3p>f7YNAxN>n@Snq_bzz>sMR`Px>A$k(!r61Q>rU=D$z~CGo+PzHzm*^P zBhnX2tkfXb9alvJicuSn^OkixM0Q#R$xFLRXU1*!-z>WE{}eI{TVH9=lET24m8Q~> z0rv4@!tpYl9V1ZA35PO1jPQS#V7bj|MR<#xGa!2l@9Gw9b+24kp_$FAhCh%2su}|0 zF{_5m?4P*Tv>^W-+|mSpI-chFphla_H1el3+OyH`740f3GHy7PHgNGzSf#+o%`vPG z`>`N zvZlfMtieqe0wjK$b>J2(DEQ@9Z4(+VOZ+F#-M1=$cyO5sPZE6TDLB3l) z%8KeXy*+x@WXJ&WoaQ`PQGz_|%Yd_?8@1FOBFXPv&ottDB`WRSF@Vas_ON8d2N8v~ z8_M5KSe3w?-|bRN-xX{dx@50rU=D1%>uImxTD+H`@<5gYCnJG@`(B`S1CoB5=xG@M zZvjU#kZjX->R-VxHNv8X{-L(3-wSA<)m2L8Cu!C;yl=_eS06Qlcl%yU;lsnv(g-%s zX$X!7)G+{g!V*W?f5W@su^o)tv>SC;SryOH2D{WePuGMdg6;Jy8#$ahvh*jG2|(>} z@6Gb|0<1(!_!350W(EerIj|TLeg;%*Aj3X(o>i>2NTcJnHw%YZPr5&?Ts&y+4u6Y4 z-*6BumqVY7IIqZ%&f?)QUAcPD_jx##C&D4b5@oe0)xqFxefXHVyGI(^)f_K#)-ups z{5PInmhU7ui1>BzkMEq@m^3se%jaLIya|m(4(98=!n$RFxA(valRsi>sHeT{2`Z|5 zGJ+whnuiZKzIFwV#X@#4pQsC#aM|>c|ByLSaH|=56|Q}m!3pdqW>Nw27!qg%@UK*{ z0V`oKa84=^&FTs=m2GvURe$Q7X4TM~fDIlGpdg=cUco;pzak(H!rLz~LWH$IC#)1W zxlA|PE4a@RuOE#(Q$?MiAP+y-@&!}j89H2%<~wKWZah;{L-739=V||fnhkHty$`R< zoyq?7c8G{JQNM)1oBy4mVzm37Z;wobJ>Q$`A{t|E=7_;8$H`UvhBMs5y=T)Bd7Hz5 z7w7h!$N^sd?B*5c_*V&I(}@R|*^`odQq9-8x|I@($v1*2F|UA|JuZk&xk2~$Bo;)< zdn@(VNV?X4V4Y_E7@i)!_pfG}TkdIF6ytB1(h00yAfOosdM*4SW7}v?T z?2yg$UddK%vD=Wnw+z7l@V4h6ykE^Tei$nkksLTd#+FNSgs{x-)gP@7pL6A?@&0n2 zLE||=EgUd;!CtGkW^40pG$!n0X7hNAFjN%spp^iDhQbkN@$e*#cTGn{{BEU z;)j}{sq)!4VR)mS{pV!%BU5aatcJXbQXck ziqzn4iv3aM))PgKbs5m(di9^)SE^=KyAEIU^e8oxj@HKWX%drCFHc5#)ON8TP{E&dB3Nyx(?&r?mC4#P@u#oRo5P zbtQ&iTdid%Sg0udal`*w$??QqMiztiP-SR(%U5a&7GWF6>F6Z>Qvfj ze~`SW%NwZj^Y<6PBi|TJV!>H9?Jc?D;TC#jWK)7Cr%+|*L+!jTH840-uD3hqxKuV* zJ=VG)Ge{JEe>4P`)PevL9%KcR=mA@PybXT==q^a^5b1&M!ZT-kQ_w+f{@2oa4mmOt z-o<~94C&*%c^Chpn;6Mn(fn*9l~YotRF2v*WcU(POZh@v=i*p73YSzOs<#gXXwj{@ zOU*l6y;ZErn&k-?df5Lx$U(dRuED9I_VdJeDz4UG*)3U^ZNwV!Fg0q7^jL1}v2oS= z?nLGx)tKH5@_60l4Ylc;y_$d58>=X=@uktLb3dJwvY)nIX_ox8>|ZPZp{HupcPkv; zTEIp8>Qxd0kIvyD*9^1qfZ%z)wRvg_+~l=s{!`7ouVVk*an8EKRvo%Z;u2fKa;cv^u^&{j}Q*% zDh6EaKZT>}tBNSsXz%bbieTOP^o9f|vf~=#g~w-r&kmwRXZ zJNHfxinFCu0lRnXI398_F#5hmJ=pwotPe_16QwYR$?HYz$671om`BhuoG9S?V;nmz zI?-7d)bh8G6xxnnPsL-|E=NG3NF<9#bBfn%wqsp6*2MHQTQx;F$)l}RS8?SJ{My6ZDEt5j9~vWKtf zm2S{lY8V`0pkI{UMy`Hre3RE$NO@hdMd~wEv4Z>N??CG5kkQEYmy1m{uAAfK!oBYm z;m&F~<iHtdq8@23GoLKetGeXC-F!v38?s?6!GF6UP|3 za?P$x@qXYinY%5R7k42ter+Z2)GovhUVW*HB>dOPhE~|6y;iDk91rU+e8I4*&07~K z;jedd+IK8wH5r0ZFa6-|Hu1~Yav&LPqY710xw`sXH78wTRJQrA&Z)GH_On2|I0ihB zX6Ly1c&?d=Y<8X9QZ}<*Kvm;fg7aE#2`7~qb^wwODT0lOne(wweJ6du%FC28Opbkr zCL}J7G)@8=23x+o)%r+qGGl-7`0|yY*U&F-MWqy8x-h+G$mthlkq^}t@9y*4&Y0DV zWhz1|8G`nXwrbAMRoOu$r62~7EOTF=#<#a{lO~RK1oiwg9cqFYa*gdYXH07%yQfkj zZ-Ny7Zdkld_M^#1bx2Ha;Be>u;S(1vwVTgb*B?hFM}mj0i!gz8gsOG?6gWhb*)+BxaAEoN@Rg9;w7XM4p zdCYHiS#+HrHqCsJj2bjB{}JRk^JsI`X&PN>>fQlMZ8qS6Z6P-=;R5gXv%OoJy>Nmb zL8u6?r@I)y;90>(!pbA$T7LX%vY+ZTJ56^R^76v%Y;0@PRCYMYYVzSzl_TeNuIVpn z0)2%j`o>lm^i;yXi&tq%BxOfa+23yI)kZmX_cf{W`|Y}+kH?iF8K*0rTo>c6=kIQI zXPnKvZvHz&pgDw1CgW-Ha-C5HnRT}v5tLa@4td~9ym zDMw~k(1f&-fIEqbO?VQh^x>ZN-ECI)K_Ba1#_(Uz0B2-x_zn%@U!xU02A&LDfW%hj z#4rfrC8a0&-zsXzwmYMgaCBV;GaJr&$h(fQ+QWNF9t?BcXknAa>vD!pwL} zg7#_06aIwu5_LrD?>5%Mz$+zc4q;a%Fe*%447`z>2KsNLQ1Jd{d#|o-3R^rDaI4cE zZx$=`vV$nEPD?NH=-OM44TkjN)J(rFUL$4Vq}{9S@vwGpM|87Gji*k@(m36RrFH~C zK^7@}q6qKJ=Q_;3PvQLlLN7;Xe`yUWY7eg1oT=tToHBRbyi(C%V)CAEsp1 zd`3n_r$sG8)j|n5YQqRJ$xUB}n$=&rJhlYw(6Si_-VzZD=_@_(lj$dO1@ES@UsX|= zbkNngK-HWi3vdYFkCgD^lYXeg$#z1D?-HDGUjo!(GQ;UYOwEn#K%3bB(cZy~afKLK`3F^BaPg&$idGZ@+h?WC37_$MzGs=Z?XZR9&m-SOA8y`` z$A3NROd?NvANQlPTJys(LOW}wWANKp&%pK@IezMUjqZWe?)Emx7c_4>dgQk{+l z*qMit{{#Fz0go1cgzm14rp31GKX#DDd4HGYeWE!WRc;W0jAK!jpK*VXl z2?L5q$o{|MJo>wZ`_V&2-l<{pIo@zICU%8~Q%$cM3AXDl^!cdjD_FmUz_@?l9S&>!e{cUhZ7d0mm!;H%GMWq5r1g8q%U^EF;!{F>Yz zshBY)k24)mTNX-@)E8eSHuNLji~Fb6wvoyDy|kU)L@-eD?d)1r;uk}JLDLIdY?Z~Z zL!rH|!cpFAdtZraXdp%-fo~XDV#`GMR=Q_@4lc4ChpLPabtaSx*ZJ(Mp`nsF28a4);Pl3BL z7!)e7t;Qwj;Rp($hcTlf!8l})kUA9zIe+l@`*&B|8L0H5d7k;-_4as6yJg6Iu+3gP zP+q*Mw`pyR$p=bwhjq6jJ|~^bHqSAQ*yh}sVYKHMeT1J*Rm%VjAmseS1WLuKdHoe1 zb*D5z2=UuGzP{Er6qX^pQRI(udN3X7HdQL0eJdv#O|e0UWYDx^FlPxUBmzcQeOUNc z=L3AN=Q~@8ey*7yAu2yP_>Ck*836 zHq9o23g5Z$q!%XvvE`NGA-YV~1n8O3+n;w3_yF_PC@sN(Bf)6ZvslTg}Z^>;(2~xVNZ(=p=pG(_EXUhjNPt5;u}MrmXhriYmtU1M3xSB+^`lH z^$K4GjwS=o`mcjKO8KBggdtjIvvoQ`fFur#eB=;t8epUbz8Cfmz22+waLG%&JZ28) z%K+Ur{w}tn09%9Em9Z+kqK&l=H5Ekox+vo zSTmF-@=%{4*8dwteU@)hSs>E9s14pCF5wob`{26Z5V&(gx$|Z=TJW@g;Yf=ksI1{+ z8KoI$R_Eatmeo!;QiFO)kAy?{~w{Dmg$byyl8rIEjBeG)Z(weqppjmvmajQ z)80HitawAc?gjcVpU{-0p6!VN9z$PcAME^tO~z4`e^KOljM8p}!6pv}s;qaD=@Gjm zXP0{eYiRGJJ&l;D_#ek{)0+Km8|sO8$WmCm(c3o*6g+64{>8vu#>+PF-2S^?$lZOk z)Fka{vk*0F35Zi~r4AsSE)$2kbr{Cf3$-?8je+(kR8|rA*Ly246u76wP-^JN*;&{( z3hPm#wbj+HIR-5r%AfkCsjhlXV&48mLe6rLyoK*2UbFs7O|JKq6@@er(w{yBv?m!Z z)b_PgGQFnK{9n-@4K+ZHe0ecM?csGFfHT_Ap2_4@5eYtk)B1h>yHhlz-dg_TAdudo$s}jHi47*Q@{ruT8 zND^B!5HtHi{I*`$HpzQueB4uhVTuD*7@-{!k%SWXX{@MmoQF2DRDxR%B*vF(FFY4s zv^fg=in6@Y%bi zq~NRB7coDdG*zMp@#EWAvJ#62{=gfiU=-{f#ay8e;Lo|?t*ateKS)}3jg8p|0IKM8 zQs9bg135Spe#~69)YHW|M!W+(=+2L=-(PoOqJZ-nUBKNZ9R?T=#S8#P1c@Ic!DT(2TR1i8&v}6gETS^e_u(NblKBD+p|J=&;o6qI zq*ycHReW(1ZQKCdKNY+r9WZEeDR97niY5RO^)ATxhLV1#Dvg%YlZs=V@g&#gsc?Y# zzLJ}Kdgh9|TuAG7O$q!dnqQlT%)FCLfd3M+DQtem^GU#*cVK|uR*c(n=ZK!`D1&}> zTGw^RGO76aMjDx7SV1j93TK6K@7n?sOC8&OPxvdsx3VLO#Dj33@B3FvZv5+VsrM2Y z0^_~X1hk$R@|Whh9pV8%$Xj&LUjN15_$|W|WPa6-m;yGmW9Im7UmOV?Bzc-Y{Vu&O zFDq*Gr9)R9d^DERcmDzV_4A+RoL7gKJ$%T}7{=e$Gd{>*tC8-X0_3`) zpkZ9^YH4YSjqeCv5hEylI#-sL&v_o09U<)Va8o)+neJh57##e#^Olc~uOFfH{VUb1 zM5v1GHCkv(-zPI#T-@mAZEb=!rsEdtK`FKYwz=|u#BrQdKr$p`GztFx+2*QP%vC?& zU+AI4P*KAZSjr|LVPDJqNFy4d4kK$PE9SJOdujHy{^2dLRew6`&n{7Xhd_i|IB8^c(Z49Ru~iSH&yu1?50E0{;lUl(Bd16XZ(5;Cx$;3 z;nPL31SjUgE(P>0#RbV-+jmqoK1cBA0L1q9SbSL)IV;gbS-2+ntBWpL2a1TxS9#!@ zFV>*h^4Yy`xycTimyviI$$Xs4u@TFU^WETD=G$z4CCKVIqS_4C!J0a^Ai0J6u-9hr zHp$!A!2K_PTWZTNJE(?nt$inM9RSi8Mb_ghoHG}N{3kv$QvqcU%MtV1zcbssEDhd) zfrWn2)}yR$H$k%eI7;cWO7b!74&9t8KcCo@^R$;=mG`{Fn=`w+c-EYRWA;t%t z4d={uUd#k0++c}U(tV)?S1-<%JuO+o!VS|M_Y#1U^Yil;m9Uf556Eq+VWFz3ih5;h zYkQ1E_MRduQ*&s$=5h}IS9gp0fp~cV!V)|>1bSEA`^;$l-hX)5LkNJzotnCO_T0>uiyr&Eo zrgMFlXcRE{BPnk6ZGd2qkedU$CYhqezaXf|hfrxk>KDvTH1Frqu(Y(c4asj1o-C^E zTL?8*aw82r-D`9|DsUx86N3MmDz$srgez1k5}Vs4e)fzjwMfcTUSX2>g(>e9w3pa= z^3A7J9*^oQLeMh_$TOReY-9npy1F>fGT3w0mi*|w?a#;QNc<&eK*zJZ#g+D~WSMU$ z%ub@hle<`cEJ$q1p810>E)An`%eO!)-8E5uwv#J7R$U$@@+FfGHPs%vc3hWrpeb~Wsj z0IS=aANkaow-(KMM3`D`>8foaJzi}qRIhz%B7Dd&9$Mb(#8C}ZAYaDh z`%2HKQsAXXhC?z`OUJCE1jgegz9SM)!RsQF=ilP3E|;ZvGGPq7tG^4T^g%C0@>`hw z@DfJi&v(3PYN5}+9vckoVH0*BRC&-L$We;;2`(Jh4=hS|Pku!8mR{tSr@$|}W+H!|E^jDTX5L1feNsszzc12UJ}nO5;+3|W@WV+aRTRB}8J4_P&rOSe^WNW(tYIk6b;rlb-ZO+p97 zSyIN;k)b${iHuJc*Sejbta#sS|4WlY4C0iYeT3|k|90FqNRP~gtmIg?+@w?L$dMwV zN|)R}e0tsb#DoVhf>otlCd(2RILi!A_g8K#wZV9`^Pz21S)k$A-t=ehlqG?RTC#3k zTgAa;M@H6~sn!90_U*I2Jc|X}&_a`@-ty#OeAW6ldhbm;2-_PG7vEj9RR5f)=5=?)+Q@(OYY%67@_ zN}1Z(NBjYayyf-I`FCLjcp%a2f{GqP80~KRtHHFsVC>U>Xt-oCTSnnT%x`AI$tKH| zo@YJ2>cb-*U}a_=Y<~=nq!baZa@g!oNhZd8q#a<0c}*Qf$!;P+xFKqC-(RAwQ&M<- zv1kpZ@{>4ebl%Tahc@qwqb(rCXbkRQ#Tv!Ey1%WSkq~6?*rwKutgIM`%7R6SRK2 zv1bSx(+G=0JArsDG_g7((`z(qm2K^(vjNugk`m_sP}cI-=13i_@}(Db3veUtE`-IOesg&&Nig489g-fHN1q@+jjonlc!8=80v-`w=2 zkneO9&v=9XtUPsw^4gdU99oNnK37;;Dp>3`LdHla!uVo*Yuk!SkzzU_Bi6%kL7Q^k zWA$Q!HpeU*!qt;$tB2XBBHsvRwZ3Kp`;n*^EGedTm>n?_kQp3IU_{wKW1{FGLZdZo zY@EoVom$5*5o!Tyt+na&3%;Nsz#CX3B!FqjuEJ!JYkIC-YUdh=oITs>EFg%W&K z9P%2RdO#?;iIoU6N0YOLxNOcF>Jx5?_O^?Bortn0mGl>Fny$n_tW9`yZ2CS`!?=~x zc>hXjsS?C!%y|EZxm#TNt*cMpD2wmQ@G(>B@jJ%-Q+y*-<87~pE>Yu|;<^4UrTij# z@oyd}aD*SCxX(NHoQL)6X5S1iqlWkBF-1928K1({DQ9b#s9#ZM`pvqnHne@QItET- zxE&pqqn7R(Mj_nX5jmTa2N4UCwIW7OBv}=in&tk9#K`wVmFYK&hhT};LPdI^7;KQy zlZ$+c%PDiUv~cbVU=SF6gtHtveKa-(lMSb|Eydq}a-UNBu!nb; zl^(#wMsM##aCJ3|G`F5zrqKg4*OOZ!ilqZ-4NWF3$BU|63Z1p`pQ_fRN$cN~L#>9vJ)8wE zai8ULDqw}OWiarke4Cmv240-RZ&GZld`$Qo%kDaxWj$&*F;Wq059}9CYRMmKM3Qpbkq`i2FWzpKR;A`PAA%a*GTY|z;q)oa)NbASk6jWp8iKX2uK+GcYV&korR)mLCWvRK7VSq- ziGM;suwVZ5%dR+Plm%!+g5@&=B%_UxE!r&+ueKjuXK$X{V>al z46g)n{}8YUgAmp_*vV$@;u#;(oTmn|MuqP-a|{c|M>pQHU*&T4>CY*p7H4 z)>_UlX31dh^{u;jL+`o2HN_>s(4MlrGX3kLpG1w7u4L4qp%9hf!k#Z9c(v`<=`)Gv zqGW?~AjYUNRnGDXdJ*q&Q6|G&Plvdw-O`hID*V;dah!d42?Y zP%2{fH|Vj|6`OZBIYtr3J5I6DeF zuSiFB7c32?0jqzpxT1;X5JsA4GiM<%o7H5&8)OFL>#Ajd?-OUX&Tq#pXegL@UEG*o z_61dG$2C%Szg~e%+_LmU4!E8JcRh<4VFn`Y<#~B|>D@guGq0vRpO|J?XAn8PZCTjA zx>X*A+9r@fm9Du8yOx@tO72*l(`5#cd~OGoL4x2D(X}TynS->n^m2hJtvXB5$+>=8 zjBWPEj9Bo4DKHz7Yp4zuYmgE*3gF)vS_*GzJQ0rNy?C35%0hTALeW(NeaX+A;ItG} zmBE_N)&l$VB8Y=~Ycof~@z?g$Qd87&xi zU0?SfF7!OTkGj7N_gD*Zpeh-PAf~%6BV2y$bli5P_ndvG)TN7}?PQB5skDDmyRK~4 zb+*zy{khU`DoHuL*|kz+r;hU({plHKXKdPl-&LkO8Bexd5WVBy4F4xGymW+y;X;4_ ze+6gx-6xBC{8ef5JuP%W6lA)KyS*~zQhOb<#?8aIQ!ycjM@%Bu@p8q-+54{2NvER* zk(t@vFd5O6^rSS!ghxHvmJIPGL;4?T-2;``w6H?CY;~>bwCNgi)al~l&3C4&l#NfJ zgumZ}CM}bn)g~7GV~!S zJot-!AM7e_rb2t0Ge&tI#Uc9YBZbA$CP7BTzt-`)d>(hC7&WX7VeKy8()bjEc({-} zH`j0LoMA<8|8Dr>rrnM;2#ASbV5BRj65zQvAVqH<@(jFgjr@y~^?4Od4$^)s5%hec z1DQNMdX;ZDFw#2$`m^Hwepm$@aF#KrAN-WgoROpFD0R|-CZ)iE zYZ13k>d)Pjd-PP>3OF*;rnE9@U$AlA6}&FrHV)dL;h~ojj!Cf60dE`}u+jnc^PfNA zQ8>?mGDq8GBW+(m04iJvm9))DlN&pVwG=;pIwLNXnASTeRZKWQl}+DFhWr$L$Zpyz zs6oK8@#Ytn!B-ld=a5X3nT+J*zP`xUX!g8tei_hJ&er33tB>)B1mLsO`tu%}RKYBA zN!5=~71axMr-gHWx}<}wKVCBhP>FkgeRdXi)PZD>FgGjoC}BHtm`OCspv0E zks9e)e-wVWNx9-uCcTx7^l*jPBl?ToqCSd*dP)FCWc<)*@Q=O*q|I27e=c#^pR&9r zVQcxW-eq@@H$TmI*alo-=B|OFoJA)smi0hvQ+HZ5DPT8IRV0PcUK4u|?W4Y~h9UUR zJJXpW{E}ys^WE`HA?^1si-1dof{B^+whw`k)dE~*dP&~<{z_w_i3LRc0oZZOhC38Y zA`z;|oaK5-RIJvx(vv+LqGq<~#EjVkg^fRcp4^q|!882$x0Ts%LSD9!kBve>?WyPa@3$hJ zf!I_}8QeT4au@hlXuJ??RoEHa%ZwF2lMlyg4K#lLMji+Jv)VuG*9_>0>s~@YeSe#t zMSC|fgX%R$hJpp}qJcffM=8BkjwbK@X%zpFX#qY~*FnZm@Z#UHxlB8ENG6dau%+~M z4O_3IfI%(%IX--P$mVwNbas zU2XVsDOYLR%v^JPmG4ed#FF|6B2EO64#{tl{4@D&niOvqC9NpEONSb*hz{4S%R%k? zPC{KgFaBiT_`M4^OB@q%YA(^GJ6&<^+fkD*M)ppXi{7WXT^bJxU2Up(@zYL2>(}BE zC>R|y9HMzj+?V_6VeOSc+xdG3_RY(4CK<>u>Ir6(>_`><7pd-reABx6q&Zbl(8Rxj zyG)ztUJ9YVwKwwG@~riX7H~fum!glVF7?G*J+M9%khFb>4dj9u0`?Zyfi`H|x77b) z9q_9BbT9j0*5YueCMumQ0Nq8(1~%f(`i%*P5_#d&^mCIeJ!$pav$3(p%n4mXaHz6X-9wl|;=|4vDA1Msil-fI2NhmlS5-z;#S6YVxOFy+P#*BWr zwDLEhKf%7vc!5iIc{of{E{`uAXe}kLZ$N#)IZmBjWw-4H)p8`l1OOE<;WRF zqfaDB1TYlxJ{sekk*;C%@jzw1pzIWDm7lpgZk_Q6m*zrej(#?s#4{*;H3k|VJ+5Pq zBFpP|Ma#h;HpCq^i=ZG`Unb`fGQz#=G?JqHoHiK8(bz4$+!>hyB7uwD7AvhmUxHgw0Z^cVWZxiYMY;#UAulP1wB)o5qY(@+&kq&W@`51t%N9#tOEF|=|qJD_6Iy&9zGGxnjYxb=DYrorp4sKWTFMh zU773e-dg5IzRiHZpFGZH z8+Jft$aA@u9)C_%3a+(1oid6ftbbbWm<^3q3@g57zq}XkHxM}^4hW{C`xXnq{pjiD z%^pff?uU&=$5G6PpbmNa`L{CP-t5jl_N%&xSRf*;1N%l^0wPRmhI`n?m7HTOdXxV= z1i=4_R>uAZtzG96=hVs=HV1j!{sEeimfV?hnK6mR#2AOB4eZvp`iRamyqeZyMupap z>a+BOJoq6e6>snSwUik>*RxS2ZTBCxd)T z@p{1Z;ifEHkW@3a^&L|1s0!y;UCBzd#25|u&=Z%Het1|I_qqBbhRP0TpNM?^(*t&l z*J*+{ecYFAm>!+m1joV~_5Sa?IdUhg@-{hah&c)CrKp#+V=er;MF`Gmooe%zL+wEr z+oGJKh4s|=dtvSU80?dk>iEsF_b-c0q5RHb9wO$-Q5`}bCSNJBd5!$-Zjy~Exi`62 z75h=P@yN`4@@=|ldki$K$lt1GDIx=}d;|B=#e<(kb+orwNMA#)e_??Ds;AEp4EB2l zSayP>+%zq^FIrjw2H2^TBn1ebYbBuDW@qe@ZvY&YRh?(GDGN@@vEqWDq6f#z)8v~U zG6wGYXUdVjo*RG8hPBGO5S_dmEQ-)=n554_~8rj;aN0cikJJ2%kGg@A^0l+qQ z@<4N!LUvn|_FmzwTjP{4<4J4rC|A;YTIocH?Opwtda^=Bq=xaHg}KF^->9wd3a zOX}jd1^FfUx92Z}3cI7N{;63|lN`FbU#|V9ng9SjRaa|&|N79w?`$>3`8P2=+FZ>* zMk8l~$0cEdt^Hi|q6h-~?5JFK-!j2=lm%)Yl_E=TXMbPb4xo^^A1nXNy`6p}zxDg7 zy!^DZ=QS;hTOALN-4U?N<(5_k01vfs3M}|zZy8Y@L8eBy&9{;<=qeZX{&KzWgaV0O zDr9!9DjXP%c|xZ#I;hXfs8sP-j(ru)(N<+9qAwiZt`VJd8!h*oewDngy1Ho?Eng*;(-5%7LwA|;%3Rluuy61nJ^*GU8XlMIQa8q`JUl* z`sNW`+_~n%=t$%M90mof6``Q;w;#-} zYgScZTr=|EqZ%e$ij&%$WQF)|0A=^&h-ew_p9d+STYkN|^v%HiLMJ`}Pub7(q z3$bYh{iUYPQ)1i|w3blq42peQgz6d@2Fo2o4Ekluim%J%S|Nj#B*}}{jUym7_Z>W> z7*{cOv$GY@*VZn7=fm=-Fo+!s)@yw#6?557D62*q8w!=${m=of9E{|#$NCN#A|>JV z0ZNHl_BvcRu}p8z-6jv2_^uMy@mq9HpM567HV#mGeRDNW27f{8g>RdY*OGY|SlxU( zFC}2nuf&n}C{JrH)oqUOMw+uCW#5&xZ-x2K!L4$tj^>A*#;v`d0m4taR%#HVxjQ`P z>otKFh5zh34+Wm##y}Q*R-=M@1raMa4|fpXr{)LA6)Q&VzzMW>ZA}OxW^`Yx(S#g1 zWaQymm%4k(K*hgfP!VCb8PApgq5we$2K=>VV*oEM=eNhV^VScXa$gg9_XKm&RA%6ceG5C%aOYUoM57Y=>wNt%LjAeu**#{iq+$2 zz7qW`j?9xM1R4a&E&2l^8%a|7ReKrriKTTAOGqfR`}z$7uSUy~#I+ljywUsh3}V z3=*?kBH35|@+~FHN=IfgqJJ-y$#lFT-z7lb5hPVcR@H~dU=+S4NV$F*RI|GP zL4DeUtOjBMJFxq^ec>|4CP6&dx~DlsUEX?RdsSifC@B{>CrpUT4)idS6_?>l;=29; z=r4ZY{P437byk{0Wlp%n(Np>3@~-6ATt^HlaxxHMtcHuaz0#;9DnXULcmK+Z?Yv-& z-f-98u=89hQp>+14o6pU+z$dSDXN%rL}8@)dOx%#FpTVMUKSKZrzbrv`+x2-ZM_%L zV-KSK!s;zvLQK}i+W{48rWSPxwC($3V;7^!|zi~uC`SkIpK zN5BfwN>5V9P9Oe7i%9Lt$jGG^;eQfz-)y_N;FOh{sI(Pu%TSe51CMf`$aV^;Q2|?q zBEaq5RB0>r+A5U*1OG?TRR%QGzwNUzx=WPq?vxy;NQaHwcn!cjQ_O){@7pk2z)BT3qGxPeAM^i3hAVdPpd@AYs?h>x~ znrQ#U*c*|c92sn%T{X0m%x8Vdd z!c%x}U$T@jDa6s1RoB<67mRLdD$;R~5Gk0jJfn)`yYsE0FD^uT_S4}Tq(w^=9MNJE z9RFevcA6K6fp`@UiO#@)Ffk&^lhVkyfCNoN7P*S2AuxF`oboPyjXw2>S|_8|-3hU? z{|Se1!@*bU0HlVomhaeLU%+jgiST=12f2LdJyIr}PU$7Rd?rtWkm{S?^`y<#H@24u zzLLyE6MAcVf!;wI?{(kOas=Dr!ERE-DwxQbGk4ON^>o~R`CfQJJe@SMyX6nIu9t)) znNcu4w(LDfGLkocSv9>?Sn<=LFV|FwaLLh2>^8#9Rk}KaJEf2H(qrIz=1=dmi!92L zn9)Dn#Sc@9*lN-vBA_%?oPWqbDfOJ}(SzJP`#R5#5r2C6eprRmv#lPq!-1!iC~vfo zC?&YR`Q3%mTK5Cf(~Tw&hyv@v=oO}EwCDbG@l1tD1!61NWa^s-xAKVW5sCWzbtTGP zeD6;>?Pu{lJ9LkZ-CbviA2!$_g(dOtm9}qI;DwhYDNqnBm*eH0MQ#${YU-lS7j@?WESD=Y#K+yy`}7*cE4@1PFB-# z^mh{0PAa!+WXmMw?s&|FQL-IT7{o4%as|VC&!;AstJBf2@ z+u4gk-it|I|H&y5_BdeAq{cgm8?RJfdhUaudOj0#Znw6CDC zT=v@J6ytLxqhX>4E>d`=N*;!OUg6oA^!%@L*^-=d0v7Pg*icT%A~IoTH|=64WTAyL zIdIqR9mt_tm#$}hWa_2&ORsKQpz_Id_k8@(+XYt+xgA7!_JC$nJhfuM@#ymaab&<> z$It!dPS&#`JfKH~tu5^52a3(6iU8}7M8Rux`aN)fMjBNk6J5S6TcEEhpECS$jz>Sc zwbkKMY?@XkgLFM5T|LTAUwf2VVv&vxqf5aNS4UUWLupOz2jM>T5 z`uh)uB0a%y{X;=grOYCTISD;Va^X0Az*p=R7o(=d;H&O~e%QJ6E6!X+0tlZj`u^B4 zI$99u44 znl`3oBsUta&Vq_k=|9Pq{2Wf6!ABuPfY~2!Q0F(Qk)}I84PKOJ15?Jz8JJ9ik$QDDbTX3qBG{IEi(&EFoeA*o-@AEb0F@EC8TkW~o z`$+`>{H-*IiFnVlCBKCg)Ijnli>5H_b)H;ey@I6oQ8drXUhAPTO(rQC;%ecpKzaK% zu9-m`mC5Rv#XX@iv!lUcM{e3zvIK}Xpkn-BWQOT<61M;A|LARrN&q0O2p3@&^fMJ3VYNGiI%&pl>%Zg97hUK1j;==6-AjVRUL+)nu*Z?f6!XnlXSO$zCxAto&?CAkLj8&SLmXpgS zJR$(JCsgCK)pFef^-IVeeUhzZWwp{K?ywh3bo=nRyz9|@F)hF3`Zz9MnXCVXjp7+~ zTEf->?_HY4FGXg&bb6p@?`wxu{o!nr;2G_G+y1}~;~2vYEEDLUlCoT-R}5YSeaYk5 zcpaxx>Q-Ym&Uk!6DH6g$B5Mp^AWQpatq-cJk8_+w$rr=)^o{34yq)M!vy_kcT1?pN z7!Zg{q~Hn7w~I*er<+Vg<)O^;o12?BpdBlfqz?bsNJT$1k@N2>;Tag7$K#r~rz7GFpuT?E03=PGN0n{NnWOm8Ox0L38uK( z^=M)n)_L>zz4bu~zH6626Xz7^RGCF}ky9w6d<_dpc6N5+1bRjI)CW)Szaj-$VXTnZ zf@6z6gMO_=QGL>O!_&N9Q?OOEt7u<=Jzo5?R=t`mq|$C*OrRN^u6m#PgX1gQ1`|2J z+!1iXmj`tU0uFxPYq-^?gcm4qx1~|r?Gpc?WB&}6qSt#<{PA)&tv6f5qe=_-?;mxs zR zjA0!QqYh!t9{8I1{>D}|Jeq{$gef%fB{*WrCanbgaYc;)!KDfWJ=U|p<_2Rbas^X= zhw@&b${e5zQN+rVbW-)UA_gn~xQ|Q!EfS=C6;A1Mf6Ti;RI+<; zZO|Ohwg7j0KWWfH@@1)miOu;BmM7x=>pO8;9@2_mqH6xI*=8bbr4A7chepSg*}Gc| zwW6w5W*@i{q`SKo9DhxG3~>%5>*lklq|Cw6{;-DWy}EZSjvPkMK_Q9 zrvC(hfD`A#!!9xB`8*dG!n>R<>-s4#( zuJI*i%6HwE!$XzKS=bM_gVDA3SOCI~5%e5$+Z^AzK#ov@d39>6VIahI6I+u^3BMmd zH1(?7_*=)=7;Uk9A3;gh;L`=M@60&yJp)x!+6SJI>N^E*zWpY8$R%F>xeP(n9gwpg zi2ujBtZ)FXLLgH3H{oy4D!70HK2v%IT|Nqn6`Y2|m_7Z}{}vmt3PZ*@K?Tgn=|L8c zrBg*eUNY@&ql>QLteRw{yD2h$m2Pz#_PwS>e=zbILCVGlkOkfuJM`b*MsyA_gPxgP z`RyYXJrCXtsJDlEVAmF=0q)V<-Q^M#WNl&FW^%>qkl10L^W|YI+&3W%$buzpYw+u z3kQclG=d&n-OeazS&_H9Tw7Z^HZjpE=E2<3er|Y{q@w8eHQ}KOd3+rpvptzExtzf& z)_>vHg4HD5KbZ-+QKR&a1Hp`YB@VlrNZq(xQMJ-bz@$q&$8!wDeA28MiYO%x2 zjs7rM8fU|-9>&}(YmvXG;641PvJ>BRoQ+)(`BTwEZoG2wvZW>xof_a$h!+@AZzRG_5mGwY zT+NP510hDO?r=s=&WGf|o1L(~O7P-Uy4R_9Qn(}lRIZPoR2IGE8mILa6+QyDr8%lP z+g&gfCQg#`{)!0(qpe$gEPi6jiYiMxpbjJ5PrOH*ww}41i}z-nD1S}ZlWEf&juHGA zl-#lrM=ePas5yd^p$o(cTEu#P$M*24stlt7iEg??LI8FVA8>;J7P$J7t_QOyo+Gts zoc&nTr10hS3zo1ncy4y!Rj@{1EF0G5HrnRCYkcSg+$InDvOvwAvjY#U+lb9} zYrL-xrdSeMb<>yx3oL;>G-EuRs(t{qenxLdEeuYHExQJnSa1sw`iziNy6;J0IYrq&)nY23Qq> z46_GocK?cyxXsCA^Se`_!0i&fT6-#iwPt9@^mbgU9BcHA{}8S&O|pKlpO?pW;MrDL ztwEGJq&kR2yqniu!ehZ|i6%PXh}n=ROzTVaC{-u~{SJA}c#^%wbFtYstO&jcfz^D0 zuVlAjGn#VWY;z$K-rB_awjOR@T-RJ!I~|44zElIqPs4J)5;_x?jJo1&I~YxI>XzKX zs7Xw5ZorwNowRx6t!%-B|hhToi z$;Xq<?c*dK!pFm-HX{L#qQ2Nq zxGN~8TW*~I+8fMhiX>j6G!>)JBdJ(_AD_*HkA-w}Gu0IumvJVsSUJhiCl|j<+AbRK zVjWS%M(tg|*>OdS*}Lg-4O|=#_uE5*^I#YU_ERCl=fZa1PEc}@^sgwJBQA$5L3!Q2 zPMD`4fFL#z9u0;P+{`!a0@Z!cxc`g^mypneGq>yP3v7O{nzU2{Dm>`(?q)Pj&WBB0wUst1yAV912LM z9tW0*AI@*PGlR_!XIf`uXJ0qZixb*nP9SCfw%JnhQHU|=lVsp;(f9tEyoQuA)1-^N zAfzH_U2HHJDk^K(-0cHb z=h_E3M{(+fSsR=VmL)$raHF_2&?x?NaH2w^E)Ll~^qX(mH62=}PC&izj~2RCYf$Lg zMfrHStT+giemvJ`3X+^;AdPi&kAtxlg%38=Pz$ZjB35n)(^pLJ(^YA$&iC_X9D}YU z4M*jQjKlP{d(r$PX?9l@PE9RpS4*w`eQ`}C(b_rcTOasikNy#T?n%MMY>hKL#$Qoa3rU2Wg6$>2NvrMtGrpXPdVrW2gHl23S zC1cr7ZZ%-_2^+u2vzk1EG(h(sqN+t&=`$9##v#^f1>>kyNC&681Y3H5_`9DXK4+&Y z3&zcK{5tC)?s88MY-V?2Jw(q5XLn>D!XWOcfJ!$^_S}rqkbzjnm*M+ zWDy>3L3NK1L!g~Nof?Oam69{u1;6p&_Ttstb}cf~zb4wVeBKFy6qB#4TJ*^pGCIdOz{xKsL3asaxa8CM+Gqq43*NMJb{&TmaQ}r+ zxaPWR7FiJmAB2481Kk;D#aDQFs=XUcSwl4n%i8CU*I9c47BBuf&gbnC1@GsFjH!7` z)$}^wGR}B!MjBRSfpzNg<+ZvQ4fX$okDGg-xG7butER7c9(7;8#=ynG>ab{>-3`;Z zf2E?D%4j;+BJ&p-n+XRs1V6D&A21+^AI)x^IgMhn2gE zaiK0pIv2VJHW$b0Z~uLl^V59hj*QjRI6m}oU63>bV$Ly&p zhZ=w%YIK7;dE~%?)C)l;ruilfZKxM56{HdmA7WLbv=(nr8+G$i>#S$#fX109gSm-d z9}+j%ntHc6dFao*T}(M@7lXtvFGVdse1N4WIubn|9Olb9#nOV~ZSaa<$I2hZs8>8p zEJpGLqSRObg%@AR58GSg4Qa68b#-A+%HL49Hq>zOjW;+tSMZjam>6B5Y)JBtv#$;p zOlVLF-QE8M(|HwaVzCFuMLOTxP{+3JiFaUqZ`8^lRoUJ&;ByQI2Uqj^40++ z?kuxVYlfyTsDo3fIC0Jj@~y+#D=SU$yYqmlS^s-y-67o6M7*aVbDHZej?K=}KgPV9 zg0ZeZ=kMObxAHGRr+;{%HnpLt+beOw5X{|vIc;!&!vC#T#wBo38&u9frD}K!)icfA zUG6`-eD}n_SS#DPaTeX?;pTK`X68MHY&!C>3~@TR@L%pabD3dNIz?fhdZyn;of1(S zd;l0jaho>}y!PwICVCfFk?FUddYIRg2UABF5~%KJHTzeHL|ODEa|hlkog=~ffOSY; zJpnd9l}{3A9BK65M+_l!{QkUAVMK;f+oWF!K8m>Gp`~gOZ?4_uI{aM~^VfSAgiyHf zey;uG5qK~Nfh^WL&ZU@-Y@XUY|AlV)x`SlZ4LTeS}1SHjT zgY6TuLC^hXDRW8wUXrOSLx1>_*DVv2LqqLaHkQyLS z)*K)4*V@^V?B)^Wj#j204TRh&>!nJ3wc}xtcTaLIEJ*s9(*3*Z?{-GU)SL!N?RJOw zj!Hhf2!Hplwg}_NQb)Z~Y?UV{sUex--s={}ON2W*6Y6aYQ6Eg^u{b?Fb@;vDER_GE z-&7Y5Zy#cc53hqhGKUBlIs>Ml2SNtGgw^^XU3B>UO3UtOv~Wh0eJ!)BS`8N8sVfh4 z`@@U(!HL`+Z2#_l4L9%NI6b8Hce1QFPHcC@3Gfd*@4 z^+>wM1{=p1nR_Tqo1P@U{ubxQ*7c=pu0Q}R{PN(wZ z#M1+|yEUK3%NZ-0=68mqoBw)i8b6H%r@sK|U;pDwokqBGnV30&UATVo!{eZS;U=@~ zsQ|Z8$?1y>RJ2j%ngAQyPrj4GJZ7~XM6GZg1u@m{hz~F#Ol_srCduuK#U1@juKEI#~ zUKQTPIgc8C=XrfH&}|Vejw9;hDN7BFJ!DaEy5W`doAgHnv%~tt@A`@l5Nq{LOA@ZZ zjNgcf6f(_2uC28kB9z`_I7GV;_pT2snzu6N`5LT@5CcIdnB& z{wOtnocG+czZC_NJkIy+coWK{jLA&TvOD|B>Yly9|EW<{f7p*5LNm~c?@n~5Sl|M@+ z>}OhUEI2tAEqG7(E;ri$+AK* zYV-H_aJIKXzv=`kS#88MUs(;$B9u;cKcD|`j3|h~rfm&FgQmlfmO&`r#oej|I($Q~1RI7_i!dpL~%#h!A>IB#;rz+CA1 zwBIp+$dL3|;(Ufp^S@krl<5%9C+Do-;vL8oVjgqr))nRy=+RQH)%2*!K?^f8eSHZt z+?-mM7+LaH#s%@T&k|FX>a~YCXh%6umADi|@=B_9Wx{l!Bwvc_B?8)`&B@Djuw!T< zH=N8e_M5x|hvk61A!)CQ##*VQ-Ptr;fvjEaVj}7 zimp5T%Xb}yE)7fi!cx_*ZrOOY;8QUfb%pcwfAgp$(Z;OXsx7m#5e*&2oF_;p7RJD@_hd~8n;0oJq4pZQw$uNmKs4iW)_0hHwfNVsU-vpKqft+MPyOKBa+P%+4}Yd|zs9}2 zvM7}c0y|2G6;oqb{E#oAhVyc8bmBCuM>c4^{LXW6p3H0XyLHqX8qBCaxuKz|Y8f0H zOz0aFgdmMvsT{Xy@Kl^BR|bL<;RBITBG)^01Wt?3RTpP!?G#;gbdEW%b-dl|<$)c7 zju#_4uH)B7OBR(auB1%j5sL0!yN>E7e4e9FDnT1eF0aP~CvSS+6X^ERzpSq&_NDy2 z(gor^O8>zfCa7!P-k@qSeQB=rba-~fehDugxE;DJRy!)apA>c2jPg2YQoq#g%`Ydn z2o!JX30=ARRAwo-``0tT_r!$u-#~dL6(yNRK#|GnDMMR$172f*tqM{lNCEQ>la}g$ zBFNenF7d#DKT`HW4akF@-v$O&dmEbv`n}VCkKWH z+FOY?8IxNH9X2nrfRoC3xl{%}%rrsncXXeQ6ieJBvjNr29Tzt!9*4)nP7eX9J>+H| zK*a)^o10_#SnqqnrJS~Wea*KiqCeA~xIuD``#(MnIIYmH8wiKKpD8zLwN*vw3BOjz z@Pc%`ZwnH31%N&4D0T8bMs(TVYAr86;YgU}qObe?S}4cxKPz_oq0F9FBDIU^=amD1Xz_ zW(56f!S(O26^lR&EhES+6-lY{qM)kowWqy74`tSWH+}{%RaI|(-)7$xl(CQy^K3pM zhH@%`Mno38X(?pEFR6$cuZX#vmWir+D=qdAcQpB(}lCOq{spv7Yab z0!I3eSNQ^0$i}Zdbylm)+Mdt6C5c}i>IptN1b=xTcp7%sU5z8|@akKG<&zxt8YQm6 z5;#mH0d4@9W;mCNrswui<6MvXwbi%5mf$`CIf3bCA8dCu(6It9@5NbpAHR{pOTGfN zhFf!IzY0fmR=X2O3&{wpcN`1e(L4;20?$ZHJswyJN7y;Pks&kQ$V9AoHdBM1V^@Bv zkLG^~0m}BHg=+&h(K8DYG~h%pHK_ z-2Rxny^tHWz&OxSZPtnf9>~`-IfjCwlv;Z;s!FG~H&Xs)2$WteHdJZcCDUzho3RH}gK9v=Z010*{E<^9I07Y~}b5ql2 z%k{+f#%8$+an>fV$2vvs|MI2}y6}KMc|J#RP=qZBNcKBRL*hyR*IrS3!Q97&zG$ny zqD+pfPMtA#og}k-w&$E7m%K*nsoh}&G$k2=R*@tN2K5f7h1%nyf}cqNMu9Ahs1Qto z=!p^VgWc{;RZep4Lfq7gke9kMv6-)OR)S;Q{j>i(fkU&Lm$$Q{`fLIputSx8p_z#+ z4gkWQX~eiKpXoue?=7cL_FNq(?~K{w{HXZMp3SvXgNIRcPUSyc-J&k{HB04 zUnA3(vsW84byRC>eD|~SVQ8D$_Zmye&QpNTx~}Qrd_#q=uUgr_lq4qhr@{AkngSl| z%L)%YH=np*MS$E6kCXC0=-CgRp9b3qn}EIN_E#GuRP|oP`2K5iY3pqQ6;syx?e)a1 z8l(63Zxtvh9f(VC5kHktCftDU38BfgyvkKygX1jXc)oh%$a79iDDxEwf1s-NGx7MK z;ehoyUPzchrN#c@Z1uC)gIH%mJ)jKt$Its4x9aS8Qnbh7m&h zZ^EG!d5nnjspc6CU!NSY5s^d)k@c7APjAO|05MwAQ!_0u3k zl_mxZOTV7%_ITi30uMf6q5D|kCmKG!S$gPuo?bfD%oEMP^(vj?eYNzce27Z`>U(t1e@pP5FNUs2>biy3X%NRIdH z%a%IXZ#QpYee@G~>$eO)e%zSJh&}f(S=IZNxxdm5jhfuWg6v}GGcu~Q+lriXmtOLX2%`L8a}Z^?X@rY1Cyk!bK)H&BGZy~hNRfCKd`2^htJLK z@au5n+t-?^#Xm~8H1@V0JRT7cnv)TT4b_Cf1cz^z-^N8j@+yE??) z@A&wS3VCWA9KKWd>~!1R(X@fw($Y&i#rE7DuK-2Jb9Tz1(SD_=Af$Z}%Js0f&%?|5 zSGjkc-q_SrfP~Z%Y7%HTlNW26-SS@HSOOF#j1=kzEpBQ?>^U1W?7u920l-@NBB-V zpSM{V^@p1BLkC?08+)&SR)e0Z4@y07g`SE zuQ`z`0XQ}@XWYJah8Zg;&fkxsH96j(P&=cfqKR~|Ko%pkT%D9ewsUSdHJp9>}p1G1Wc! zY~wPBPYn0-clySfU(i=?H`yEKG0%CoKHA$Tb*~rqB%@RJLk#P$@#XYS1tf4ASPQiR z-I%{>Z^HQzWG0PE1E}}Uwh0x38OZ??IBs)(Jy1rFkLx4Jlfv35NY6*i6kn;<0C-!eU`SQ@dhT zy=0&TY40;Te8JeR9@Xl0;)6wgOG~J(Jt33*uFshhx*W)}6Y#2_dV}%Z(bk_*T%K*i zX`&OtdAHO0?T=+k$#(qaRoq1N=kR7EihFFI!X|K5Ih6W*L-kv#0SGIX2acG zW0W9(d{UNj{;aV;ta%$bMfibGq?Z5{>rv=;BJD7sNWL=Yt~O-1NhhI<-9%?&B z)0xs;m%RP`F~rm3*!Rb&%JB72s$R>2##B6mvR~ZS;@5+uuSA%cnX}@^q3#7*3p7RS zo2#8$z1{?_=>}gOp?-$nAMwbDt6&k#E7F1Louj$-7v;uMF#Swwqmyj%4+_v~5j95O z>vDCFEnf8Jsy=*skB<#^r9%q%_1Y&@*0Ih7!Ud9J;klH^Dz}1{1=Keh5;N${u(ZFG zBr|~RL=o$~g%wqjTief0dw$klgjbRU#%PAcKX{*yb(CcK^J)PD6(QUdd0mNNxjVnN zI62}G2?0KPjd!+8E|1a|%9Otw*I_uX@@6T3{no~0yhNXXVoJ+qyQpY|+fpBwQ(;+Y0 zUJ0xSB>^rZCk``7?UedrA$=MGj6n|tWT+C!;C5JS#b?s%bJZzs3!F4(&=5kuU(xP^ z(a=okg#RCGy7&%xC5RXV8CI2iWTO8-{xlA|nzL=%i62uQKveNfDl(K1_6v(aW8R5s(3T#~k-t{jksyyYT(xW2Ok zVTBTafSnmb8ws6;a{W*Xx2)`n&*mgAtN5Y4k`J1!P>6gxb)z$j>9N%Ine-pHXr_kd zV*u+>^=OO(OVj!xj~TIlOTxD(Wb|oQ6K0^+$k~1~uZ~sUI++hX@I^eU9S5qDH-U|Q&<4azQB{QM~fn?r_5k|m*zE4 zIp>x3bck_7GhkB01?rd0lzkToC&on-_HkCX^u0gJr^7Gk3nS`y@tqGR_|(ux9h@*z z^pBOMPts#&Rjsee$SjSN?G+eaHB8km1p>wb5OX$qeO?+hgUm+#KjzY#YPR8kDV3l5 zLuHQWDlwRdn#>XnTed9bo{{?vU9SiRcPc>86 z>~|tc{`N6!C)G;!1=D>`XaBq&y!t;T0SdJ0G0OspF0W9&G2jFFATN9G)t%jbSzChv zfKJNY@Tm9phjGXnoQx6HpqUF-5pQrosJ2EHFOtijH#SgzbTZ`K)lUkv4Y+_S; z^EFEu4N}eP75kD>St0N2WoJ(%U1%U3qkY%^!oL=>r_If=O~*TW8D% zeTa;*K(Re*mt%XyuW>&tAab2c+oUtEC={^7E_+-aU#K~E$LVDIIN*T(;8Zuyw`!}j z3K5bGa?nEm8udP91fH`}K(RV_;ANY2_FODL`~!V@4-GUD1J8|!U{&ja7)b7_+D%da zY6xypq=%KyPr1I>4wqfpI=;CH$LbhKVSEWOz3YqztV0sNC9+Lr`oGYA2AVzaO~apS zX$b+ipCd5ucUEAez&1_ceF}*YQ z8!9>zFM|7+Q|-cmkyXm0x55D^tB5<;HXV#Z@aK;O!s>_p5tgFLL&0O^XZ;}$G7J90 z+u36t^2#Gi^nYUv<(*vhHm7Kazgvigy*kojKJFwbhS7nJuRbXNZ3tCre~!V)DgpzKjrLcv^cOpQLz9rw$BlpFx26 zvrlhj7k78Bek46EogU{@zQd{Po{p@D@j;K```%-2B?R1><995#hHcsc0cH{5<`HAk zSO3zTIoS;i>6Z${-9C;2n{QcyN}o!e^d#rShP=sTmNjT_5V%1L(E~B^u3zbVW_I`& z9jE7iT^OANxTX@ydi?S_)XkLe)EtVLqfs1m!Rx7$B8}~ffAbDoHnf{wv@~guhlS-+ ztCWvo5Att?hKZLnr*atZl%hR0n0>=A{%uVU%yb2zu$&%O5M)XQ!kTMvChreY2KJo! z^z-IX4XqxlfQNk-Aqy-+DJ?Jqmr%dPI-TCa_E2y9mU*w44`=NQ0nt^K;K z#GrrFr1m1~`2=F(+sq-Kv%%s-GTi^o#N5anv4RA1BKn07h5Rq&_!x7mtWwkq@m!QUo!RX+auWNV$M1wt9kt!-CO6$hVV()bL>Xn z;)2npCDF)|8y+jQH}A74%*hcB?*;Ci9od8aoYPO{dcGc@P8W^|JqUN9v}P7c6RsRa z34Cj{-ZI_XaInVUg*duV&?0sqgr0Hxh{?}ZQt}rT6;=Avw1GYh6&m%5%FvCGD%Ax;u@3zFax@b5ovUCU8Krwu?SyPlsTMWN;#+^DrZORMY6Tx{^THL7XmI4*`-1(%c zI{b%v$0GU{xgRB8*_~KnKCm8b3F0U+)C$xrFKi04;|9<=^)pW4dM-Fd^U$>_U3C z^c(}`OsVeIeDJztp050Zxl+%Zo(mM9IxHGk%qFR&H|CnOypiwt6Iqcq7Q$`67IYzw&!~L z=jqTpRs#QR{v<@PZ}7jspIM|=V>3}k$(OZC%)D&(ccZwPY)P6pFL?{W(;KHaZZJhU zc-Ra=y&!Y(JU{-Tk0RTnog*NS%%_`i>d@M&*X+Z>cey}Hg6{H#ftGBxC%V}W{;f4o z92qE%_5(^8ZlW=hlt})mMy@k!2rG1x-G1z3frMlDLm+*#hIb(pw?bbY>O}0~RQc|s z%n9L36C}=A`JqIO)uc7_{tkbzh=4x1@1e_k#ecHRADE`B&PXMMK5y>V6`dI$5XlS*6cYdVP_qrN;b9srdfc! zv$KOzf~BZhElT6ToNS0;P4jmZKtkqk$q*Shp4^tax3k^wAwn$~7;Dv6Z0Ezi$&QYs zD|-T}AM>k{f+Ah9fdZN_k_5Cy-)4yEY-+c?YTsMVcidTMCRe7sV=}q?DZ8`XTpV(4 z5Ys}97UMFJi>et$MiOT>X3J+cIph+)8N;Gu7-Y|2H4?pf??!c8bFvciWBKVonl|Sa z0pom%@Qb>OZgZ1%E>h{L$C0EltRW1k%Y2))(|8Z`Jq(YLzGyj)VG@WtcKp#}XsJx~ z{muY5^>usDV>h{y*^U>upRhv=9(26i+A{~w%VP#uEam8$V9!B0RFwKYe}cN*IfOVu z*weD)jGUrtPWg6%lg_c zyTs99pcb-fpuG{^DrL!ju3MY(Mg{k3^z&Dr!;(b|va7$zxVn<>#q2O>Y6!^Zws(bV zUd}CY)`9*ej-3!_`NTx9%c&5?N9uI5f^6aUBZrdk6gZJ9fPYJglhiX4oQ@*qAPD0@ z&%pFl(6(^;ee-#p3Ug_o>>PgG!F}4*#*}~$KIz&Mp)aNn@i7($YjT-y4IE0PXS<(S ze$+|ox7TW1VY&?s!8xhO(N!Nx7{C4iWQOnmuo;n3+!mgisY#Ov|M*!JUfVVEh!)D( z|0i_Q3Vx$?ow$%vu#NtSowi`R*l|b|o>`XoTt`KLtKMfC?e@>O$-V`-sjL5zAl2zH z7usb7jza{bn|eP5uVV$7dN*)xfQ)P12cq`on(BkXYfO?8%ow7m@Jd!TWewrK;xo5NNkXVD`2Ad9p1^gr)MEAi>gT{gli(!-;J2DM&87^r`O<~v~T zm{(6IZG!%^Q{ph2p1z{eM|UCH1AKmxgZ-C(6O&4|NXqc|K4pHs$2hc{y=5h3_Mq}G-nwM$HGIsx*m6zC9*nW_4i7&V$m@#h#MCoK?q$!P|}iVR`*wj-^rVe#d&V~YEl>1wX70);!Zgo zAsx&60R(54XCJQqw%oSG?2C|r->njedWrqW{gFMMfw9#8uBGUOX=kUhys@z!_cpp4&qxZE z$a2NhfA(bZkCzpFdO|`9056nT2DO8Ef@Uktq=tDz0D5V5bAmi9KnT(de!%wqYj$tj z0|wqaz<^g9)I>C%@XM49381tqQPO*0PK5p8(>5hQF22qnYdEJIL4Cg#uSnz?`4e(Q z!8f4iPiA_a*7g|gxj*&n9x}E((Ua)BQowU@O9^6(^i(1TqcwIv>Im(OfE@5SA-%Gv zUzilSEwJdHxsjFf3WO93!DAz%$q?K9q^#yca=kr(@DbV(z5#J?aEmEjp78`kwi(&T z77^9ih4Jx8UYG5ojVGv*6VQ@yIw+*aNg&BNkn~>0XVv1|xizT8GTkKRNR`t`6|Mmd zpKXXJP4a4IOtavuA~UrZ!@3Em*}Li(F8I~rB5q#1obTY{tQ*}IyMITtq{U%JfCZNo ztas9m$djG)=*RNdGL=Sjd2{=;=U(1EP*u=R61pL9JpuLO;=VZKSV%j?l;+JZdrwFF zRTD|<6ya(C9l+eUuJp;NPTXCx-88i4@AB{Vz^F90QozGbdz;g$7@M&ptI?r4rrr94 zPYoP@y4`-ILILUA2uTU)kdTyCx;H@Slx`4^F6jo5 zk`$0m=|-th+q?g}&-<{rpL5QApX>Tvp4=aUy0>w`SL|RW5YlLIqOfx3(~E0aA@jGx zD#Hs``b`2o?3UinC$ulM5ARh!^LyH+M_}Uq#Ap4CcGfs9_CNs1u~l=+(|9S=UJ@p# z=k(178#TMj-5#yF;EeZ z7T4ViE#<5QnAQvHZ5D9CrxYdh1Gc*}#r+BkKCV{Z; zDw6@#75C;bBJBva)@+CpCIeo%{oHSsP}@aP%uC=-QoYJAPwz?WN`Zq$Es8Ig2);E~ zzs&v!&{|`Kia37laTBbuT^m?Vb7TeHdb>Z&VBE+&ASfPT z7q*GIoT+k*eOaN-Bhg=V50x^D1=43|wI+UQzbq$_kk$uSW}>pU?Nu>uZ%!P^CJ}4H z+=RVrtjv%8%~21Xe|VL&X}Dg66IB$IT(H$^$WEG9_~Cxf)p(GE6=2Fl?~;mbN~A!H z_)s{hDA0K(hzZwz#8OWh!dpl3sRs(wfHPx> zz+!171m^WiqCmf^R_m9OZE-_v>ft{$fPhf}blL19%*r+CJcEBw6-yjPAo%;{PRmT=-%+mqE6Gmlebwy@VMw$bdc+T zb|vxKBV4!AeVwoWgbu?jjS;+93xxGE{@1l6e*Spivp;teuM|4ShDMcR2ar0dzl|d| z2cA?9?diOsWX$Ugf`D!-GK)Fwr`7$=uxM;-r18I6Tt$t_+S&IX>;3JEhN|TPX2z{F zEG>y$@jjDZkRup=@$HpJ0%V9q?Nxz2)$JGEomJPvL~{^)UVe1ap~u)ArIrW}t)OQe zcXp4IRh_s{J7%cPblGgSug*b{m@nZ}W!db;&%+Y}YgWX&dd2;AE${fb&iI&dEK}f* zKna*AZKg$3N$PzwW*k?X?9fwP>I3E=zM>bOwWAO#a@r0pg;(wg#(g_?;y$69bv z8D7%9QWJxz+$Myu3$9M zt(&)@_6QEUF+m9@-9A+LKo8Go3ay!9*eWJ4r{J~MgLY~D6dPB01stFPDoS6K`IYMo z-NY2rd=~pbPUdq!Ta0~Kvi=xCWZo7~fq~b0fSG@7yJkpl-eq03cE8|`ro)Svu6`dD z2V=a>n(le#<2v8&maQ3_7&Vgiynl-_Rly+dri236x{voU!_zWe6r9^J(8DGC_k!@=mJ^g@3=R>77iAnt(v9P^=nx zx#2Mo;IvsWCLxkjYqrv8QF?lRP%sK7wPSL5Gflw#Bh?lX*J z_Qf=ye82G+xJF%XTW@cny!PhaONIWpdbcL~0eWuPfc{v7IH-&!;wSHR+TSQ=-SiW3 zq|HVHJq#L|bipE%`e8ZKhwn_>*r9ayO6ZGK6I4k(^6({K(W38&qN2Yh69>|PA3xpP zLHP-}ucuDQTkzdK^fnUq#42Q2g5R_37i7~s3JH(}m_9-A#T+;ZmJI2>R+47;Je?Hx zeoFfyhk^RFrfJrtGBbMQbJQBIib)jc*i2pUBeO7f5Y;@S7A#^*A4z;)kJpnU`ID5A z{%xEkYa2N{nNp9I=QVK&(>gsFh`-E0ILJe&lJ4CT2<4HH;wC7=JLZ6i@SO<-T#0zbstN%oZ;XIwyRL*3jv5r*sZsD}KO$KaoJ@xL(ukOJwmpimF&Nniyr`h&QP@Z{0RMSb+v zyM#%mdH1aYvo(uYj!*)bupYICeUp#>^OKN z!qg`~aMnC4ZR3>a*o>U^h$m{BOQYV)ga0F@awv?$+^q|LJ?nU$+>^#dexKRx2hS># zT6O7auJ6uh#^HR;3F1NaF|6pf$Cd0-SONgLZ?;@FFF`t1Jr0&(#n5?~INp8%=`YO- zbKQ_lfr!fuj5B zsYcTr{@QGaBTRgA4GfzY?;YKgBdEh{Zzc%F2}_$etKnpD)Cma*`+{0^om6+J5V5^1 ziWh7lAu0{xzeE%qbo~<2sbMpCw2<;&eTC_Q+Z;sdqdfAIMTZIVTdnShkHoeF)1Oq6 zGyNI)`lp4FTehR|GEmQu)}y#zZ}c{ehn4jqMPI-5NW#IY9T8pOiV`@F0Zf56UiT{n zeYIa+>!FOGXV#wNfRZg^(X~PxOsvVMiP7^cUSu+r5ymbAm~EV@v9u82=fef0c6uayK~j>CsxZ_Y z^W0hB{g*om-}+SCssL1CB1CEbUnq@%ir^Dd-&9QH;h^+iN3hh$0SNR0gZQiHe+4#5 z>fzLOS|fOulf;1zcZN}m-N^toT=dTF{DCUyYNNS^{m5H{jdp#8SVM^)8U0a=S9I~B zd`FHiQ(SEx-w;1^&yw5tj0u%6ZQbrF{n2Hu^m!_fF@$0UrjVR5d45~c!*{d`{$HG( zfoK(be#h$J{E~3`h@W|fZ|td3=<#~^-uCwzdNHX&k4j=9&UA{4KUF+!%$}OiEXWoU zFtoAH-~%JM*#~{g3_=6Ok*rV}y?{gp?OkMj3c!IgHOPEd;0S>}ZX*SBuZjcC<$8OE zlQ_>Ml@&i;)RhVb_nbs+8gBn1erp%B?b6S~u%APir4)jv>cUZO#(FaduDd1sli+o$X4y+GqXH?Ag|D|6;F(?Bj5GhyL~u zARh!syw}J&ZoTC3O|8~gm(f{KQA}p`LZ49?(T71i`0K$5f(9KyJd&EXY6$2gU>e0bV__Mh|~(C z7GGRG+@PjV(rbZpk{8RZHF6W#zlQrX^2}&8b}Rf#GdGvlG;`<_Np4n$7+vrunmp+T zdObKnVs{p&Y*S9$E9TR4n1_E%~H{P3IgtF4`{b#<_u0fr_cV=epl{^= z3k=Q5p}j|K-^B~X4E1XSMM=eWD9C~$E<_WNx$JrJE+d^xg2JG8VyIV%`*`qw1+A^z z6S^)A;InV>jJA~FQ?|o%X4f>Z2hY0TpgeHglH1fkNa$Q*i6ijPJnT(z2E+KA*KLUc z9VCu0Vs&c$PD7@mjdOuw1KNSAkEl`)WM%V6(03fV))6}S*BDdKE1}B=-~Bt3s33q` z*mT_a-oL(<&Sr5xG$2_Lcy@4YdFJ|xy!M{p(5Z#?{xOAuzh>QVh}9kXcM-X%_EVR6 zV&*-U{?_yQ#Tn|wBfx#oYpkiY*`+Bm7?n1huu?jGIM#JK-?V@RFPd{;;O*VF9bY@I zWIC^F4Q??C#wBV-`;WL?ko*a*SgAPHu0AZAS{B2F%e4tkWb%+b!q4jS~o+ryU*JzJr z-sxmPUn_UV&&{EqvVsvj;?ERiBj!q8Ww-_Pz(F({Gn_fu-}c|+qn};7V9i&!+m;aZ zGE7bUlWo0yGb)Yz9m?RWq(%C{4-D?*qybUf*m=Z6L|4Tk;Z-KhJ83oDW*(DE{tKWf zZG(M}6u*&p~R&!XF>^bKHOTn8w<{ zR#{S?m!n?@7`jW)?srM=!$yR`(9xGB5*QvdX;`H@CZL}q>+=IL*pucSs7F1fP1cdU zz?>r)Mhl-eD)#P%&Sf^)>wGMCma}wzEJ(L&3t3lkgp@P6GhcQ6gGQk~J{?^ko*i&O z4Qv_EuezGt^(L$K8Hj z#On@{+H{DBOZ)wcY*j?bOWI{RSFp>dGJU_nZ`N*1AIy|#c~6M4x<49hs#_wF851W7 zC|v9+cql){g^UObc-@IoWgoAv{th}=DqQ6A;X7d$ybroMejE6uJ^a{ACkFMgg4*T5 zUmqgT0J~h%2J(ZQ(CYix^kEsl1=8Gi@P~wRfDqi+LjH zH5^GX$m-jbE&79mex6aa^)OE*_&2&QzNAD)_&t87tMKe2n6wl9SL?a+IW4ycL^KS> z3yD*)htNdj;4@SGp__VD4$(Qo^gp{S;= z)w$ML*RM>VM@_`J?{(m?m`5==-yLoLN=q&>2yo!4cK+o9V7UpS1Yu)M)6JM;BMy(jN(<9q@+71igmMf%zomIA_ zU5`~4lp4r^(H$ME6)BRn=H%8Lx9^b3LQ zy{@8F2E7Owx9xx1kHeOel;ZLA)Y6{oM_jLTW@WE*yRPZzUL0z@{#B^(w=RiOb13=e zHyrFPI~FQz$?s*4K({Je+yX=K6-M><8YLQ$`+0%Xnd0uYOidKLyfcyT7vswTA-V}X z<&4vv+k9pnPcb*NGfmJHMTP$|=j5Lz>*A@= zRA0W4cAg>#bFD6%>U!I_uDN{3IG$_e>d1RWvVLWeNI)Wrg*SxO8OmVM+a{D)Ev2uc zVxN0)3fRsg1UT@NQ$AoQ5^m`_?rJZIqTV~j)BPy>7F$bRTUexCAwxlz^WbDxKiSzK zNrJMjFrCbrrpsG3o$93(tn$1nERLVl@Vn7VjR1z9wyGQ51w{u?fkEg;|B5m;!mRIj&KVjsva zHT>mk`M{boXPJK4Eo}ceyPC^l?nltS$PR8WR1ooYFz!h#o0hSep`lij&BzYCh>cQ! zhchADfSi(&HZScuU+l$;dtxYWoSk*iF6!U;1oN4CmI&fN9-tF(@>%KY!|0#-Gc`5! zPg_Ta(IPAA43i9zYR>|AoThy+Cj7>j`HPRKHQ|e9p3FaVSb5lZhMf(s#? zkg{Tb!xj^^i;D~B!dL^LrNw!sKxS4$g@8Xg z`wtq4uXZio%F0SDX$0mj0Z*RK;3rBo~t zjTLjamo%k@jHt0FD!I&Q-}+q(6XgiVLk7r_qD!gj50XkG!ScqID|<@Cm2ua5{HyL@Nzhi+j8p$hPzx2FU z`pQ2f3ur&<7MpWlk0;4IS@IKKtZq{D90_RT9;P%4tl|zMgX07RrC(0aSWDa5wlZOK z#OWuer;|oH8eMt0iGmnHNzqyrsUi#(jGnT`ewjg1vIPXi7p>=Pc8LyttQ z1_;e5FYTd$A|C;*#un>J7B~=7@|#TeF($~c(Ls-C5e(`%z!(Y^0rT$^#>dgh0kwV> zR?eoxVCePpXQJ0Z%vYRj%c_sj0#kf$Twv@Lax_zC#WDVAt;4r(jT8)}`ox0=t!%x4 z@dO849^8i>FKs_9|0@4!^(x_$a5P`drOB4Hqc?_r;+_YYF;1>AaS#Z;j$WfKodrlIU<2&*Jf%An@?*dhH^w2D!ebi>9rs zkxSZ?(e^zWR=#q_%r_VRU>)POUrFjj!OS0FZ9VqE>+n?jF1fw&Q%EqZu4K%e+q4W-$U9KYCBS~ zy#4RPg|{@TFk7;o;NbCJAqHjSdr|yw*ss$PG8F&=Rq_Ziw*_&ne5}E?u8_h8)L&{t zgZ})83^<&v`gDvYj-2;}5%uwAuz{dUzi0n-a6Q4yPgZqII@)alkYi(l=d3KBl_$)S zm3z!+21otu-xj=BPcf*jYk`OBmKjoj_Lj?ZEbRBKy6oZ^keFv!z+$KWH56PD0~Bf3 zG2Y-5D&F|{c~L}w#@l`VULOkD1#zL|!56Jvn1EoCtghHlnp+qT+NV$VsvQbcKavAR z_swKAFu~B?!Jx_8P=NG9k|22f&mVHqM~{5xpkSzlG)J*x+H=`l({}7%C_2R7bOE=c zlKgGb!JV;FV6wff$Iaf%)Ni^%d>X_>XR@PfQTtOHS_00hOiniiI!RIxN2SVL*4E6@_UnFbncf+{;!O+N%Z0JJS4@~sGJ_Cr>OZ;Dn~=YkIDUJFgTQ&3 zw_F_jCkqrC($B_Z)kU%P}E!&h7J`?_@3TP8CkoClO z@??*NFo>|D7fql@Ss|4&rx!(aa(unI^;7h@kKZh6Cj;_+aDGGcsw#Wc}4tW2`~Co}^|ZnJWr14voik&R8{~+aAqr=pLVm zoQVNa?E2=O(Yi`$%QP$ENze$J9{9GD+$mh|vyC81H_Ckc_E+ia!l$1z zhJKu&UxRVeeLRG7lmi1_Ux;g2On)U?#DxO~?H+hP2q8@9m;z9kXFY>SA-Vvm!I3V8DI?txpBZ0_eV&Chkxc zz&+y>1Z(N)7JY9jzyyjShh9r$b)qduO8k-{&Ih`Wu7^4ShkrlePzR$3tenYbiJj=Jbta@Jm*zRW(9|6$_@Wy{95_E}S8%P03bEk< z&pS%YE@_?RQP@)Fye~HHv8}-l+Ef&26?vE*cpKhb#p>@7+I}g;1EO4(wDy5j2b_Pm zvw>h0(4R_&Zgyw({9Q_uTIl|x7RM;h#-u*p$^7UnYpq~-udzu9CtyLL+J1Jex3CE) z4S)XapVi&1h6C^8`u?k-xQ^La4-g7<_x&v=21+|9$j-!9_M@E?D@ei~`NZ)_f4XwU zrXhaMoAx#%dh~$m%Niw40*<&Ak^6I%S1kLPtS$OVXE5@0$RDT9c4^6s5rOly#j)i) zV#qhAp_iTxcGd4)T&TBXVW6o%lDW>`74X;;3&v)zA=3 z3f> z;eiI1-`sA4BoNFm57%KN*PmQg`c|YPRN(Jy6p)u+UUnq_p8w8pCH${EE+(7Tt^zf{ zKJSlix=^NJ%8aU7)SHU=4qIr!4%D*G)3VOI@vLXlS zW*IfU<^9pCIMbTV0@$K)0XCYhvE$>B<1FFLCr{{;@2-!N_E|ySk5JFt&wpB&+t}NG z#m*q%OB(+3BaVuLXqSq!(KS!E4qr>rS@IAJeO;9XuFdVz;Ak4qV$eAC$p7bYYd~3q?QVPR0lP# zUs2+ARCe1;diQ01j08zU$oWT6?CrieWYZ@>7wbDzdx84*$8#d_J@qroF(WZqzdGQJ z_Jrg>NV3%-J^K)YaRbkQE2FQXMsySVe7Kd^u6Qq`N7E>L_UhAf;<%2iB#hJ5CZn#3 zLW~Ks!qOxew)Is#m%VmOWHT?g7B*Xg+O@xD=D=H>7DsLtWWP}By_}jwHg$NVGQu4F zTdsFwtqGUA&moR5CGdk}v>D&v;l@QdkJL-f&Py z*Sjt?gENvm@g^e+4XwF%m6)$+`<2lb19qD%PTvAKkW&c4UTF|n&wNy_CCogKUB!W& zX)op_!RY0=@t?diz2m&4L8i~K;q(%L@QXh!VNzy}oS><7 zMl;&!+U&)4tdQ4#7gDp=ObmSZd){5GW?w*ZL zUl)+xO<{~ZIEH8cA z=AAyF`SGJD3a_U?KAgojF){4=`bjr@2AI#kmLo8qD?c33gog z>Q@K|+QSTg1TZc$F3Si-c^SxXX= zH5?|@;^hD^XS%DiAM(U?rjH;e;ZXz9mTz6qdnzBp$>wI^-+JzgzlqWMpxHe+;9Yh( z%=>I*DiSSlYxl9GX*-pSjJ$_;J>-7an|!L? z?1~O0Gp4xhM(NBqM_Fa4TD@z7$_uD}lz|D{xozGVn6uKg8pe z2BbRRa845%IP)Pc?@C}W&2$qH&P?yRl)Q;^74R>|({mkBn3b2^?L;?-vZE~-z1Ys> zYG@X0w|SWG5|-S%DcIH%sP#TJ8=UK)OGC=bw!i4WCM%trmx>bHWayGUja0z>oIlP= zhd|SX0#KP3bHcHxMYAMS!ULs}r{>kdlK$05CbdDcU+bHde~r;jb8ZF;k*CHZF1g3F zxa;N&OG)MuE2}mC+119&cOGzUpcYZSYN~*p!8XyIR}EUaHRHweLIMN@Mz=p)(|+TBaDPF-^gS~)!(Twz z;Qp%yxTqI$PGr^?@}qmONqtPN&O8UxV>$CBt_@ov8z-;i)TY!|PsVcW?DO(w?*0ArBP$f*C}3e`URw3(Gj~F69d6b=W;;Ql=R~cTxC*Slt<>sdW;{RQ#dUz2b+VKSQ#dbv_jwPtKW1 za*oa$RHPE0xjY5IP5lp_DMvvuKgZ@^>nefa>wU^wTir?-QS(8S7EIXiKh)p&F*=j= zdDbcOY0LRQr7Wc>c3S{(5(_}{JiA-gjT7!i)zey7xaph#Qb$3S_>xRJ@z4PaC%+2h zOF6*&`B7BBXTuc$;qC7E?C0263Kpox^DL27@rPDcGdC_g26Xi; zJNrSx{;U7Fb$a_#RWz#;42dsC^vSc0(n^t|7d7*f-IM;TFZ*Va;_Ys$copR-D?A1$4kA7aDKUfQg9jUSvuNKBfgZWsL}obbGz6LX&b@ z3>yyr!j1xQd?< zLbAn~A3r;(xh8(hk_mO=o`ZpAyUW(|jNTS4{GKwbSGZ-MEFK;W4Z5Ft{+{6> zHw5>w2}Ms2sw>vBA{aHu73-^}_MGT+cqDg6HGn#!mnizZ(=D4CP2>J&dgduNsxj$pa20w>ny33MZpu?^W(6rx+n@>8(57foJSlSzv zg!|$}H;jVlK$>Va-#tms16>H%`L8nBm%9{-^meA(5?)xEXVyake3-jk?7Y)Q^ zm40YkGzCDbcAvJ9SGxwyfbabfweAmdj6piK#%U()@X z^Tl9o)T`)F1-~Dp1w+fV5DW!P*y{OOv<@D`5^Y^Cpg1>5bO}0Gd!eIjZsQxCw(fr( zNaIY!U<`bb^wNLA3F&{3uuevQuv_x_kn5A$br+tz6G6tBUqbSmUUm!{WB-LmTY^jk zX#Z75*m(~n5X)j*EC*j!m_d+YZ9INv~l_%KkeZTti4A`K+F}$ z*BA1{f;uMap;F-chffpUd8Hcb$6Pu-@zpD5Mh15Q6`?SDaIJSv)fd#r^VTyzIrvxFl-pXiGyC=s1J!A4_#oT^Ai^tI ziVyPDZdpgw&F;idkE-pTJvRPGA2`j7J=o6%xOe_>*iNb)>epdJgx6g#rkk)vuY2}o zhFQSW6X0@bB3T(}^-}D`#;B}+Tget)^t*HfNOghAJU$u`Vsub6+I!k^zKpqROW%FS zv%&>2U39yzQ>TZ0Fz@eLiYh^DLLNVjg2inn1>|Ec~?HICa5k zi~UxGjr_aV)^+1KYGdWd(B0h7{#C_&q?Vg><+rik;7?wvyNc@9{{M2qMb69v#+^~K zKbmHh7mPadw~4WlBb&F>%V+y!K0&TDzO0fX+D~3~XP)~@nD?$l_8r$48ylZJkDK)- z5A+X<80X4>jCoRwnJVGmM<35D#r;)gx4MoOj=p>sf%!47?x2(inelMr-Z?L$08SnM zrX7OYvuU0?6>+-Q`>M-1R{beqzL2_&NohQ$axly`L$>LY$LWn%)3Pwj;}4i&thFd{ zG}8tKvp&3g?cktX94cI#jA?^j5lAI9c3lzylphQdT{!mVM@=LyC3bFuHmwP5fZ$MD zBWEzGb1k~#hK1n1PekvrcfCZU{@7TEr)lU@5PHIa2dJpaEnqKcWfpiu7gl0J&ti;> zjDmr6+ADMzLtz>q<}{}eFKq-mKq=2CXv$Qjsx!&)ZzL-+c&P=ths7%*ZyD(p4!a$# z^WJFl)D)Guu8Uo%vk(k(Yu?Qpunx*}Af=#H|HKfyAZ4>!fH|8k5}-8gpsk4pvLUb& zZmNv1*UYsEOK7j0gpH+~oR~!nA7~jCi)OAE+5X`sMRaDc ze0UHZd%^=6=muY1Ye7f-VFd&E%rrtb9|-%qBZ%M4@mb`bfMR>lrkD$qETE-JXhHA? z?o0}Fcq_;tzl&EHH{!3<+i9ZF0v^Zg@?20gnHz@tx8Ap2{^zZTy6B0AUD@LJunJZtmemP8~OIe=9NxVehK>(ppyeu6Mrk zkdvN5#!$s2QK<0VT^fA(?cYMUt%iJR5Xcr4~&vygFktM8! zU&Lrf$Q&w{SKxm+H7xfVnUhT^gC=r{jm!C0f9iB1VGWc+uL%#gVe+FwBqpuVRpJ=o z@!m0w-IUVJFLSHU1!yQgruvIYA@t|4l`extP1Neeye7n8t30njLt^CoW$v9;5^Jzs z{U^iqW!NpPcdMh0dWY7#UJQ+FtJ4EHC`GQ8_Q4!Fdf)a!kQc}#I znb~u1ji(hY)L*{xpqp98hqrt6o<^yii2m>y7|kAWotk*sMWcgJ0U*Y;u{eqR0{@oQcL6W1@KMKl>wyOA-+Qm1TuIV%1 zCu-qNf%h@rJZ6i3Y+L8;1B=EWyjNS;(Gy|5QWx9)xZ(Lcag;QV6OozLz==Pnftow76!`zpKIS5+uV(1CqSeuCDp~H?cx5LT|FW{f2^~`5j zG4+nwGvD2E@iV`qLagcv^M0J@Th1Pt9$2HMUVdhJ3GkCf{q5U-04dLLK19AT1FM`R zoU^=qvN|xJ2%s=EeE-Q6YV=r;)z0zJZO`k_J!*14sW`P>)1jeBDI4)&RWz<^TW3h& zv_HL;&?2K^x|z@dE`Kc4QwhHW@P`kp(L-`32yH8JrdZ_c;d(VGai=@My~}A|yS2s@ zYe)$xStR?5*J(HINpI0Z4V}*dC#0WgeAAFY>GQ5 zuZ{zP=lXsWAOloce->AlsO*mCM6)Mo0~jEtb?TUtz67Mg&qTQbWmOdwF1Gc5hEYJz z5{mk_dcG{(0V{3*&F8-}mSP#f|7K>kmiF#P%mxPsZKU`>7B@)Vhh5}@zv#SU5d!+C zbWn|N`!x}i?6~h9jF?jaDyxX>9|}u_AH(d|B}t=$2>tM&gK-NSqyXg<>u=&Hfu}8l z!dg~-E@1c_Aqjyz8x#oP#7nLhO5p1@!~+BQJRHEh9h%%4POnJbCPnsgSum=jAcKzs zP`3H*c;7=ukPn*Iir^73eN6^9kUqi#TP!|ot_7cgzT^W3y0r0Ddw5z_*P3hH4ufTL zpMGHim-Gm!jo*w?7WvTCHjlj_POS~$FN9(o&so+Qt#Gbna~l?S?+(x!{>Icon~0&Zps88%3!D!t7O&xYreb*tf_5Vo(1*tosDiYx?nTMT z($3pYyrr8l4msoPGZ4s~OOC{NS1Pw$&*`Jwx#Kp1bdmu`-fl}o^92K#-nBN0A)){4vo|un}6xo zHGL1bQqiNE4Qo2F^jb|F?ay%c_s^?;3C~sVi8BV0P83UTUd9MT_xiO5%p1GBGd;c^ z(1<(_GIlJPVRI+xAFSo@_wtqo5{PS`W1q5`iZ4@OC|ul$b9G6^%86;`v%v#%G?XBL}n(v<$> z^Gvw5Ibybpp%E-?)|^z8z4B-6&zCjRij_|d4Dz;C&IPjWwNraC!$o z_Oi>KADW+5b_Nv@k#Py)gEv;~iH1FE7{d)&N(RF&MIn(P<{v_9IAU8X@+O+~P0t+@ zKrecfWl4kmlwmIS-z9!5^zx2=iVE#Ec6w4ukRP7soFL;@+b_ccpfRhDtu6BeL~Qdv zIjvobBx>&#b07axn(B0yzy{rR&)?1^r*g>Q)qU%_6!Bwv_NGNk#fa3c>Jlb9_lEL8 z;x+Ze%1rZs9%totv-~LQf+IIToW?S6bX{)}zLTX$SnBR}8die2K6G{ai)Y7>C!5fK`35FC7=&#Eh?2Z2>bc^$IYV@adQczB6LvJXNr;`!E*W{ z>w0;}aiO=c>v22k&g=AfT34%mA(p!Qr0n<$Dq3V1u+B z9IpBj2HFWM-ECr8Vy6TW=J29w98B zi5*SgXK>|8+3>}@5V}{2;-8Wsbjy3rHjPKjQq)1@LSH#?2WgU*HZo8eQB#S|F_+66 z*YeIviePz{=V;%%;*k&Yze~3zQ|6N^`1{!OV5DHfY+~w2g6DvKx+|A3cJRkKqx-<9 z{j!|WbmK4H#sZH+V)g?TT!eMs9qeqq7q=+W&)=U%d6|__+VaG8;j88Du6QF|v9!6) z!EgT3=5r&kY}pswUxgaZCdnixho8r${5=*HIz4R+~DrsqrJgcSD7P(2)!WNCuWvc-wYExSwQoZ%8+>Xvs^ zRVBxCxxYMIULHw}4|`3xJl-A!NPRf4plaF5HmR%@_j~m%sQ}@9d9UC82oG0!yDXUr zPSy?0+3LPR$;muS=`%io@xpI7RgUDXem@|&(p zUAzj_RlO5u;M>e*9sf{ecKkL-H4C$+4;G-bvd1o1mE1nN@X-c)iJHpP5wX4}lC?*G zlL1a}QF}eVEqf=k=Ut&8F^ftszwCA{`CKA9ul8z>G&nv-*@t-W$06g|ljEDANAJQf z(QK9MH3NetSl{$h8eGs2-$NL6ec<9a)z#gwHawvTV?FNr(Q1$>Hm^U=@`;9RgsFfw z{G0so$+~d;w~vZ?T+qONE@(napFAm4wh|fQd=xHl)+goi$GPqcp(LaG3-IK-3JxSI zW24hg#)A>*pw}Z`b6$_kmH(uYCN9?_C@nR}BSPo}-lWLWZL6Z^ayPE6Y7{P=DoL`! z7~eZ;N$qw=fP;dq#z_v~={<`gO;LP4)0TW9@h6c8+dwQzHokHmu$HQN-{cH>Ig-f~ z*TL2lMSlLN%FP1Ildv<9!W$iDpK={D(PP4sgZ0q?iADd`gJVO?A&~CF`S49lg{?Ei zX*Eg@8QJG3ND8prs&fx8(ZB2p!v%(tA~AtqT*V+TKuR5R{&R$JSA`UwUyg0DJ07W0 zG;ie}AC#^(q{dhB#*4~1?X@-AYtD4u=W!Imm^!K;EuXMo_Wpa51>diqGBe96Lmokb z?%ioX(-M?X{v=PNh8Q0%aU~|flq@W8R5XC?@8^f7Ds-A;$1q5oWL;8+<`6kHe~lQX z{P}F~nqgnn10NGytC3F_*1&TQOV0;bFcdNN*rOq`s}k^Mg1tKN!E3aXt;BnWv5VMn z*ai}|TCbFe<}X0HFvPGktWv3it+a^BBku;G%=|;?2r(I&!f3bwugUWn;66I}%hi3u zV|yr7e%==)#2D?~3Q2!2nAwou)r=jqkbixi!U96$4e0Kzw#3`VEG)XLM?~2DAqhx% zd+2cNwNZXyE^~_Iul9sAnR)~gzf>?kX*_@Nt7x~Kcy?ydI zAGt&J+p)CAlL}fSgQ*_M1~13UcyX(nyjX18HQXv)8L%fw;2xeq(E(4(tP{p1Fw|AH zGL#M`b`|jXuPf7zliPYwrB|0*Y7dY)Juc_f@b`YDrC_Y;4!47m2rr8yiCO%Lmpbh7cHD3dNFVA9KX zIuhi(e4Jf4K?<^1M7=^LIRO6_+kba99`)_W8ccK)k(3mY!@*jK3KUq;BM zUtO>2V|%l&BDSHi?4Ugk^_2=6rlkMzbk_(?el7%3jT zZY+Nm7u@%;D7OJa6Kjh7C-$!TWX$UI?#SQWX&{Dj`guuGbK7+{Gy|t%)ldSTGRk1~ z7e+%)U){WIbM(fP-38&5bA4o62uM6XIh!>~D?_*Z>8!Q=UQVb1usQf)wuHN7Hx#iP8ov(4}{sDvfDFTvQ2oK|FoJ=Cj zmi(U5dv8F-86rQE-oILes9{Q;_H6M z8eZAW4&L&O8E<35U)hFZgj83GVYgiO6{*c<@>{-h;Rr&&t4 z`U=iVE|Lbo4spEMmo3Mnlz=>V+JX%bt*c_Rm|&2T$(of-m}AuneLTImh!{9c4@Q0@dhqHJkI5DuiKX#=<; zM+0%9Zh9hEXOa;yYq|fr?E%u=s;_C+K)iHXb zz8}LBS@8WUP;(eF@JEw=hjE--wh<`W=i0 zZTvtM%v#?kbpSUePN2HtuW5Au;mLS!B~O{b{-+wJrQyfZ5HP~B&HnvJ2+#8Xy%*zl zRF`uz@p3=t{VsVg6R(iYVTn!9<8Yk`WP7(!W$*aSwDNePMpb9}_0el>KPtn?mO!!u z1ar*m#W0zQEo}aPaVY_2!71=pLm*HLDrY3NIA7;(_Q_bXB#i}OQf@|@*+gf2L;FWCK{W=zjEl*Q|#psCLk zVw2f|-oYRkVDQ2M=(#56h|v2ioNA!58uVayAi_(DnDQ%?s>PpMjet%D;4D%AiOq9Z z+t^rYIS9`O`7(wXOvevDKg*Y+!yh?!MInXTm;oP_ULm2nekQU8lih+moURI+pH4I7?x@}%e|FPDFo%?pc-rLxVC}{7l_s z&*UY{Np3bJ8b9#6d$c_qV!gwfR#}o@LzBhhE%f~mub`-8Tqx`_a?Lx=Er#IZXfZe7 z^*+({vz#)!2(h>O*O5HVAMWMO;By}UGjw*izHL0cSW%e3_6WBM<7u@|j*@D1pEuW+to8;!SqR9;~G}01Z_J3Bf;GBT}-D@%pqzi%TtHH$W^#;44${*ij zgZ@!*^>n?wQ{Pl{wN2Y%DhOPvI=>!nYZNz1oVSUrbZ0}H^G-AVNsJDj6{!2tcOpc9 z)#FAKf;sYpEknb|xVavFZ;Xso8g`c6RjI;`^4i|GkiNQmd0~xQYChAM_{)+2fDfl! zNOVa|xPLDj`n`;vg>H14d`m#wD|={fnn3cs6|YNlk%JY&(BDao>{3w!DyQa%$Sm&R zyV!=}waDR=4nchp6pANoBn-cafTs$QHM;59eq8AJ|k;iO?FJ6d?7$tl)6*!L~?rw3jsge!6 zATwG zW&C_f_&+5oQ}`kp+YCP63li*3z!v09m3@BCp(-Lo6ogaXFKTx{fMgUZeOXpPo`DD` z`JJi+pt3S0KFH{m7;sOsgDk!x$f*E-f|k?HqCAN|lpx9ijB%q(FU&7Ge@(66uXLO&R|aXZK+7dZ+xgD;tNG!S*eFHY{_l<#;V)a*__kkL9SABAP4{^u%Z@2@-ZP7UMOF>JSBw)+>CVsctqWFI zPH^{pN@17+{k5pic8@V^lhht8hjUd@7Ph&^{;*n27fz&i zPf-#_)@jnwYIVgsmkCYirA5%#wMPVquhVfTQ@s=UhJcG58<=42sy^&E(~IU{r&qK0 zG{#_k*$0G@k+O>TH`#^=?C1!~$g)^8;HbT8qT7_~v$uKN7!{W(z*+5l`Nl6Sq|H#c z0Gdd0s%XDy(gCpm6TuoR38@jB=K9^(%%-mwxk=TDyPLGp-pUS;=OyLChl)O1dmDfM z?b@WyT#Ni6Peq88?5%O~6tTBjmWZL~L%jHjaz%x$p*UweCGl3iGFbPe%=%M}mh+po z*}2dWooSuV0M_yLu+kX&s;O7G>zDnoeI8R_jPySgvr7b zlvw8-e&ThudJtdWp8`<>?V70cPe>jvx zfn>FHV8%waYa~OEK{XI0@n?Ph!$co!oh^qg4MLI)zNff|));!lCjBn<&2_yUJ#nN8 z?u<`7q5H_3S*+Y>%6xq@JHQkF-Usx>E`7b@Uuvw^lFy*?QJ%69|HSLFjnDVt>Qul3 zffkbdUUeS554ty`jM6}0Xc;9(4v`jj5JqCHI?>FLVNHrk1h;OoS4k#pkPXQEgW!BD zN*t&|q$RGz*gxb;3=}5vciy-b$_VQwBa9>U`E*ozfW`oSO!SY@A$|#O6pY{FRfQoK z<`!{?zOsRHnn;QmRS|3~cHUF(cT803B#EM>oo`LPE04{#^ivCs`{hkqh%-~I$Vsd1XySexqL0#U~i zL_9J2pm5?@+2Do!2^h-=nzwQTH^DbIrJS>u&EB32c4E}`Vc1OctO$%!x1eGbQKlVYcw90Gr{pfS~)zFHk3$+g>RwN zgY>%?7ib6`QEGfQaj8z-@D(LXQPl-({!L151@kL@D5`X5B4VEvm)m}n^^02>uCUtc zLmS#-iUiz$zizXzmx?GsKALT4AoMxNCaR4%p#x1rX^0iqQuW@wb-4uCS6YZ{^cp;# z*vQl3)`iqxFR63pGzqbeYy8bY`hzYzXBxmM`P@4&HYq%&yNeiNVf3Mi(8F=`Qw{kK zodO7X+MK~+tBonoIeF@o(&F2f0WHK-fY@GV`qD~*2sa`RpF-`xtqX^f(BPB@D{Wh= z*-(>=6b|JlawF?27lGC_Igent9W_c?4R+KJPNB0`>X%%2ZJQy2gw7TwZ~i*#x=cHx z=vRzB57&EO!mfuy9_ zI7ryy{mJ1|y9PUUK!zOfBv=f|c+&FXQ<7Wu4$VQ&Y1q*6{!s480Ue#3^#a`T`DeWF z)m9=vSw--9e$Mv>hgp833gZ$0xj)$%Ko&Hf^Si7|54;9%aV^x%iSAu`>d*<|XjU3# z>okBSfWWZt%MWoa<^(=(i{uZbDEw}k><-s+{e0Pl#6lXQC-3^)9qG}Vl1#0yz>C8f zzNV>F*$1+RqJ^jsYH!-;hcrBiI{*d{Vvo<&R$f5qE5d^s;bt?gq`%k{8=0G_1_MY6 zp5uX>p&DUe#_PShyU|RMK*2T#@DTLbpQ(dmatB<12mk|<@+AmCbzrys6cw^&G9nhUFMu~`s zfGG<(opW0jaboc5kH1+EhYK8vSMx`7_px7#MHm1&wxR^_T?wZhTV zmfAvt_`dQp;921R=ZpBe$ZhXmPj&i_l0{Jh)&f%<$gkyFO*jlE|B$4^N$CZ6f>tK2Q9b*+c z*ehw0)-S1QfG|^FM|HA1&Jz#yDg`hNOgm}XU|S<%MrSL_FOD*oDe({lgaM2V@qNwG z;Th#-J&RLRb(>6(Vro=~s|jr@;6H-MNT+WT`waWeryB16+%-@C?`5_V)ewtiqFf+? z9_*_QBwI);+Kj8anD^Iob%}_$(MSkxdVHsVmV=L;4Ik;`RgYVNYYAinruXTd<9V7A z`Gm64pns_X@8CB_JWtSI5P+m0Ce~JZg6LHVta}&0tx8kAKJw*C5u8K?=+PhLQ~v5t zq`e1#U{uu{xY~_uxnxX^5qXQ$n&aHhfKN7ZcvK*@1`e+zl7_q~VKUcT+Tl-(iojMn zOxXN-SCK+V67=T0+HeLhA;qK7XGhFNpdJqMh?h!1`<8t=N%qv$l6 z$WmB+ILx^D7p7k!ZkA1i6e^f0e~o^WCu|H{XZv8)$Q77={dt~`&%=8tSCywB+O$$NB(!4Hl7LmY?2|X7t_HYoKlW>|eF%!eg;V;=+7mUndwDh+{IZ zy=?6n0XyyeVDqiA3p-0U4xd~rBhNss1c0W8nFP)Us-6zNE76cPWXT{8wx_#K7@Cz=nFm@)P z^x-Cbwa7@YR`N&8)iAM+AmAOCSN!FieRSiz$}d3#`+eMgXOaHCM_DMQf;lxtP_eTfF}QAS7!$SG6W$02M;0(^K==b;ZeG}(FWSwu&(T?svA#jZCbq$ zUA6KUz{0u%eUNcqTf01|s)hj95;+TdArc`1q|YSj`afG#mB+UgDzr1{^k>xjtY9fi zPMf=OE1nJr>xgL3i}WYZDa>}Bc`ZQkCcnkrw95eYQ7RVLKWH1p6^sM=h{_%%iEppmk#8LzHC9=_BeKvMXHF}eFR)k|hSnXMs}uKK2i zh(eP0&)#pqM+l2YSaK5=tD`1Vho*Q~48)|LTu~eXI@DZhcTW z_34&SGSi?Y%;l=`zm)h}Jx`ngiapwU%kgfO$Ej`1YyG14`A>4F?<2D=aS}Yl5&0SK|k=$7)hlDr5Zt#Fz~+H)r%vUkxefOm?jT`Z7u7`sJV>z57fJxSLz5=e4II`D862`pr>n_8wdbv{+Dn~RP>)s1rLkWp$5dFhcsBFJh8Ph94NfX{w81o=*$A zFXQssujoaOdULeVyw+tql(F{LiIK zqS4wc*yRXvXC{HhS6!W2=hBA)Lo8CK{P*z})ZQ=3@D(b@WKPpPqWDZf*h2L zp=;QPWiZHDNGULhF{(6qbh9rnLN=<5}Xi%hYzhyQJ+eyMklESP$F9ZvekpitM?)wINC+!nvPRs6)` zZCm-AeKI_s%0hv;g7LHX#CysSFAm_22*~OFvTJcl%5G0O1iO-sc!XW4y?+R$FOeTG zyOA!Yb9sPK<$dGZa;r;z#hV_qutR>t2tJj%9%THX*>%_R=rXsr!u}MyPcJu8LdOnUPP`Zjnh?4}tCX(qi5&z(6rmIC&&u6?h z`F0Um%sSAQwvTU-`X{gM{HW;iYHwRB-gI6mcoGl&HZdFM$?;zIkvgO-g8QSgz=zz& zc3ZdBUwYz!H;E)b4bjf0s_f=;|2Eh4VW!B`-wYvAIhAlYxCT)`Z(!k)6vV}!;DmNYkpkl!lL;|%A-|Q4esQ~|8trZni2$u z?CWpPv3z)kJK*E_8(LMfGw!W z*WBBjUhtehD}x-Dfi6u0^sn~$z&F^1fAL+I*8NL|*=5$#pnhwggogf73!50jc5&eL zEUmvZ!Jd=AWYh@4fAf4&BD&_m{?5?;8r!|-lKYU&sPl@=Jx@}}K=a@xQ_>!Dr}p@a z3CU>Uf)J58bLZCa%n*l-y$=-OesV7vv}z9DOPqCkfU%E@tK>wpJW;QT`imyaQD0m% z?cl@bZhc)H9RWQdgcQ{;1;W?#8KafDH{CyQkd}6++jgkTQh2~jv6%CRLL!e|8&eH+ zQ93xptp01Pm>u${id6f^=)V?s^lE>hS2i$Z`4vpe!6+%_i7^l z0JMjGTiG)z)Z|>=;ACfdR+QIk>%pb>Squ4!G(sgAjD(O|w`)SA+aKT|#fn^#%HGsu z;Fl)D`{2?7+nsRb$f~jsy)*YI#XsRzrJ>lulX^3%3vx1oxl&q?WRLBs0QJ7jFX~Wn zOr)>?S$G4ebPv0XS8j1nQR;_7f=qGBZ!Jm??teYEPfWOE$sSYVk-HI|zi7kbgcS-t z>4;+M_$W`Ov=5?ZQrjsky{5s_b%DrkJ;eX_XVCW|Sw&j|wd<{;$e6? zlYr)PGGd>RCSlc|5uLW@P(9#JY{xksK3rH31RL{g*S|YIa#dS-$4pJ-Y6Li7exn32 zU}0_dJ};sLX4jDB(+(w+KavkLbZ)m?q)*Qts|qAfQ%;praZulK-`;ZWW(`D@`k19cAayVgzD7L^^_K+Cqk4z(bV30kNw_X9;uO=o-|C$bU@#Y$;P32Uz1yjB_-B9}iRHt;4krQZbt8Ua1&r{q1j1Mm&&313 zp0-KtxxXHP&n{DWPW;<{WnobRc**iD%pq`>>hzGQJkqtVZR z5fc*ZG>r0ew{-ii*CuKF;n5W?5Wpcpa0Z_j9t>I}Scgq4KDNq=k|2p5^dJ$e8hle#O@)|#B(Ykm8hO#S|i zK9~A&Z~Aj8lny1}G$=hrh;S|kfI3FM0M<_r=^iR}It$$B&xt##FKBibg~BBUStSX* z8?)dh_qqL4WV%0+X5H>zZY^`0wWK}0<1|Npa(MYhnQQy|1iYozcknh)@v<-14_wE1 zN9S`7bg7<)z^!KQK~@KP#@$%R2o0B6iF&wXfHbNaIieS3+4^vB?ne9g*sc(Q`O67( z^CxLQszIa{JELi$2}C5Hsx3dUkS8h6k?B&=lMQ_t^l2ftgKRS4VUM}6xHv81m441NsrYL*x9BY^(8Y;oIoXx*O`Hh-3JrC`P7X<47-p!& zFk{x00TaAgTy@Iu0j`Y}%4;=YuRHv@4hV6eTm#!eZlK?8$No3AxO>uK{<@6+zaId$ z0E2e?ze9S5Du?MZg&tH!0RK!>94Y@oqf7bV5%EomDhK0j21RGAUge(h^CPe4=UGqH z$T-;-D8_Ee!8v2%vr^RNm}iE>K=H`C`DCf=fYm|{r$`}qiOe6iqW}RZx`g|XHjZ%` zvL%`$B}_VL$VMk2mMM=O%8?y41tkGout9!jHU z-t{-9++NBv1&3i@k4dR(@$Dxw>Oeo=4)T}}M0_c`{o?j8iW^G*jU;G!(!Xc3B|QHJaR!$H?3= zLP|l=Ij;#bj%;Wchfk!G-Oh(0_MQO$OdLc7M#kO=G&R^gT1&UnGQ4|JrU}u#B&@!u z9WAOh&n9A+R{SOXcd(tJEq>xJ6qjTD1KrduC*fi=38trAC(n9CW5Oy5VaG;_O}@|j zXXyuktx+L#Hu)B!b1>648^5*O%}l_?13re>exD~+Q=vipwuun0tp%0c!F?J?5EZDB z9c(~=J?6}zzYBU04ELd$)V~cZ&UjHY&<#x?QbQ?MFhQ^ZzYlF<{-UZ(AY^PgA83?d zR!H+?PQV}2g3Nvmap{Ba((!-lg*I$xJ*RDf=%7iCEa96Ihe`;c^dof$EW%X2MQi4_ z5a2jy-uBn$*yHcN+g@AXR)qxEAz9Px!V|bmCiE+7kP!&D(fecNV9T*5Zr(R&z8^E1 zv#GitLD+ML9!tN>s})mmgtn57M7^QP~*nBztq4;&@t)s(P2iKigt$s%9nH9_Ta%L__ zL9~n)I=K(4uZ%L^c1AqJiEpj|tv`U1hD<=HP%Zd?dM^PYqOZ5N8_tZ2 zKK$Io%yK@*+zf7+@B7FGan6)#2d6Ku?!a!m8ncy7KNO)@m#WNvWDF1USsfH z5AzTiN2y!baNL43zH|H@I?tIyco#H}TEgDDndN?IrCbR$oT^xoR(VJ4y6@{6iO`vW z&ZDZHQNfm%6hJpd${c&XMEz;-pf><#w>SOs(y*Ut!23%t&*{MzW4}{d*PKohc*(Pf zhgS2KPk1@gZiQ%loAZLg&_2BAGC>xLCFSeK!lyv zyHdfwjUu9~u>m(PW25|K=z?0fC9OX1<9oi}^O~Efg?H8S-nvTyDoj8VN#lG8Jhl6DRn=itb2%-K3M) z%`6|#?OFM5K8W*||D<~|3F5_^Kj~6uK#Zy+2^&8RFk>a?!O3;*Jt@fTr*N_Lu z(JpQiThURAz1sS-XmV|a6Xf0>O;rImyF zj;Szd{yK1FG4U+=XixTF^eC-u-o@3E)y==}3MfR8y;Io+8^{~e^&+5QQoEm+>EFauJG_Qq&P$8 z0y`+X>r;#^|7tw2mutR_G$ayuHA9NUT*u@Xy;<=ssfN%Bw;mUdB@1d{~g9mS!n{)iXoNG8a#r=p3c#3~v zR8sP$`TfyKp?^RC&1fSIt2^uRer>2K^fWaq>w}?-@W&&(k(V7(={!JI3ui%L4xHUj z*x$wnZwc4g;AH(hye~`WqIX6MsJ-g=x7w7PoJxmFOI!}3(q;z2yWv7$tmJZd|LNfC zWKQ<<=Ht`t@@>5L&_wYJo8q$kV5-}C{186};tbmy$A~4(-XAvcUwD1@P-Rg{bk4Vn zn!qTNE)`1hI->PsH%EAEkmIjk!Id^aPHHBmFar8Mtd`x4DLPxq?_sYqxz#%^j)<(<)Zi{4mJ>9Q*+ zcJZOQyzU{i`u6_Ng%-i%>}x}&Acj4-nT!mF8%E(ihfUnX<%HcuO+3QQWcW+C$1=hU z{x>|kUMY?WH|?R;YuW7~cBD2>v^WnJ9sU@x|Mys&{(zHha&>tqIAam4TrEbmbdWE+TtXU+U}6V+ML1u$5Dy} z0+aH_G^wX1yspnaqyg5%&^oCV`iT~Wv+*P%_=RA(o@%%)Oz*pnuEI?@!duj7Vcf_{iQja zZ%M+VWS$9p`T5yLeNqyVYnJ_pDXb6eKQ_&@Puf)>Qvsx;W!7&f$jH0A?^K(scR#p) zUy=~lyK<~+KNbHf(*Xt^|gPrYqVyXCVSxKz#*snmYjWB5@MS!YJ2 zOBo(MnjLE0HVaJpXG&tmBN0uK9JYDXIB{Gbd{qf|Z(Oody^LLvH|<2*Eu@~H&kEwD z>wV;m&OQlAZ>cP~Psh1QS1@n-s0-QMQftA3$}n6htF1LZg2M4t8+SwNlwqs?+llnR zpSOQ_d!fCPtG*`P zDi|<5nsLuF+ku=$CwvkfPIgW%2Ce6~3U@ZOs*c3H2M4u${EOp3e5T9PkDl`aWbm`% zPe1IVMFxZwUMza(STu5iU@I39=T|cgu{gY0sDt?zLtd|R|J8kp*C8~w3U!cSNcXrX z)u($!oZNU_ZH8p%x%ddxW^@tp+B^bcU9k8%4R9eDBfh$_*Ha3R!?L;s5*uW3u}g$L z0<;H*ZnnjsuLttyjHurRzp!~5HhNxs&y@=cjShbN7VNv9!(3aRKlRiDoj^(YW~iRyh+E+J;+)4>>|cL8A+OU< z)SzyC$fgkmPn#0hziHf`qfK^Gh&`Le^{-~ z&E+)(`$D$GCqVGjQ~W=!e=>x6HO68){Jll43A7KONAY@p@`=kUvub$*D65MH-j zh6K~Y`!4aVttKm>Si$IJ=t`&j#(9G=sBOmKDto?!rX)AW)uaA-d78*d2m^xcDj>t1 z`;Mzo&L+(Zn^`GD z1%5igDWL=q-h?=r$M@2ns`ra4Qf3ns(=LLzJ{gJn;Haj}nbC!XJ_U*X?+-CJPu zi*~b>19GXAW9!v)*00mb>lCqX&B=dL&hspVnAN!^exbyC)aAzI(KU}R3A-?4St{Po za>8Fui3&u^|LD;+#{9rA<;J{AP4JXd>bql(+T8H*G(y}ftCmp4QDEl=91d?y0Sv&0E% z?;6HQrVgRGx*DXkylKyn(B{FbEE<{u43bgSXj2UsJ{5(Z$_)J#oKUM~dZa>!|J+wOMFb zBdMI6C@Ey7jPbd6zI7w|p(YxM{nuRB9{j0v%fxj*X|t*~$#tZ6=pRDUn9Z8(9Vw#j z!_z=i$tJ(wYBESy2OmbhwBx9i%XvxI#P+;V(?EO$o*(`QNG)&P<9=19bM;sbV;U$E zqVYiEFDD`hE`MTtNwNEnp1z1%WH6f&yYeU{Bz3n9>mCo5&=-Go^E!{Hdd%kDI4Z_B z)zv7I0gBor%^l<2D@9o=qmS$tczXNIsn>a9;~d1$C@y7>C%5M=dH(1Ut+@}R&R#3a zNm0R5h2ugQ7o6$yIn)r;;x%+V^RFN^8X>y?ny5CtIq zeqDY>CsC0P7zQc0O1rpCz#N@Wuyc;Gj?haKwZoh9Zl7r`m*Eyd7C^m}ifp%w1 z)+Zt^k6VW2*vCHt+sj>lmq0K&DK-~MPrvYvLmqWl)#rv2)boGGqW&}&w`9|m8VKgcu^q+(F zdqwXZ+f%yvpqD7~SuEs|#H&i2E@c0&g}@@Z>;r>US50FSt{bhX7E|e)b>d(IAz2{%dCVC*?AjMMjP$(}&moV(5J=wV zP|>;Df~S6neR|yWHo1{#-bGAs_D+Ytns~Gc*HDbG{}tMPe-ax|b|2xlsWVHP8W^-f zH#WVdn33_ROPZm9O+4@$BP2;KMSa)cWAP(}Db4PULfMM7=I@(@A52q^)8TUp=5oCw2Mg>4m(*?*L6X4xUWRG^kC4#U`!$|nL40q_oXAJ=1 zWEQMY0fRtte-y93SQ-qVIHm>`(f5dmvF8fjx^-G+J`4MJAyS8ThHB<_nBN{}7+p0d z<+l466;2rdFW;Z}C7K^U2>-CFKDs$aSP=PTF*fS+ySrg`pbs>2!2qn|q=5P90mv@6 zHhPxg%K=f;oSWdY%#(V9XYcT%QyeLxioiJ+0<*^zgZ+US@sS}bdL%x(6w%y@8%u!% zZ;&Z?d8pz7@Zt+q_3khEmYoYlOXb0>>OX}DW>QQvqt$;1QS8<~e+focBQMNO^)X4k z$B_Yx+x~})4}<@p;GSy~y_tDN&-p@Xm6X`IyJckq={tZU;S+DoGY3|2e z_vxr@hQjS*DEx%8-S!VBar@~^UJ7jGn3S?!Hujp#B=Yku^U3)_k8C8vhmFCh^Vyy* zo83z9n>;-0^S+D^ADG(DYj1ArZz*+T*YlULd4ib{VLj1GK&VQr0pw+ZFtHgYDQQeA zee_K#SX1#*`Q6gg6qTa7me$*IdO?#v?66Rmc;qlB>gy2L2sKBb7C~hj$<)UZ0?uYZ z{K+}TBeS=)tu{4b=jH(xZ0w-Y+bQLx4`@b`P20{x!N{2YPfz~f*qgj;=Os(K^VOLAaz_WYvgU9~$52GLdR8_|v1?VX1O5Pq=D+zx(RW(y( z<_=H9EPkczo@MsLD$OhDY<1|SB!ZsBa(Yym=b3U-VAFC3nmgj87&*kk1GMX$D&nP^ z^s%oab&Jt|4*4C%g1eA~Z{0#SwUxYorZk`-@u-Qln?x-*F~TQ_@?h!SGN*b4z#vT) z+KZ;F58&xVi|1@|PXw3wXJShUw}?-@6g9s@Kij@FzzI_kgwMv6}$?`_z>bHKFo3)R?Uz~*V!{O=OTidgWzZVAX%r?s}NmBy*PSf8zjn0yK_?CJN9z95Q ze%Vb2Sih71Q(j_xnyH@dPl<>8bSyl?uj8!&Jww|y%p!t_7@&Hq*Qr!H2gj&GxE8i& zzC`QhwQ;GkacW7wCi5IOqPc{pN4iw4S%>IzOf5DMv&MpK#uWXbKu$Pu1%#}0m=MRHlGSk;wuRcuyfH@Q%_1`mv9^19&mO%IQ zblr+tjFwz)iOu)UqR{R3f_CcXMWz^z^FWG@)_wB$of;v2T>e)-yWrP$6qwhXckO|r z#Yhl<+4HLfdK0sGEl7cCuGu$=*&W_@>)Z*2?wkuP1h5Z1;*ZI!8Rx^5M+4~d1Ee%v z2ZXIq`%+7)XhEebDYK6!pt&9X^9<$qfV$H_F_X4k%>s(Mz@r(|(Ma^H`U?k)F`55k ze*Hgh$SDplhKaPUS9QNmKm~3(B(7C4hR@?&V$fW~CVq;UtEz{)nh*#T!A~zR@)7>o zhl5(~mPFxK3yob{0heCwyuD|%Qh41wz`PQ1CQ66gLi#E8{vurCJHZw~AGG;4_O(}3 z*K&JTB!Kzli{D+ZIMIxWOO18>hiOg39?)RB7ZWLtlDlndw_f=i;1#3iTil3+AB+gr z+L!@nWb=fQH~3hmyFJjCIgDTKhF6y%y!R-jzg7`d|NQkUEu{p93#_iDrWWXt3v~#! zedGuWUDF!H1mlx3wX4;amy^}jKju0uSCGFm4oXn)`wV`gIEOu6*J!t$;(SR-ezau? zVH%eoy(DO2s~4K4aKbfEx+_a2XasaQhD@f+gJHZ6`(68I8m&IpeE21>vm$Eu)1VPx zcbTJr0Nu7zdy)=gS#v5)h%T*_BYDBi^;=O032FmG3<9 z1*4I?o*SdD_EuM8sw7SMZv8(;{U4&fGAyd^3-`=WLrE!(v>=UuG(!q1CEY3A-ONyu z0xAg72uPQJbf+jGlF}{GIRgwccYgo-JokP$U(PwtiM`j}d+oK}^}g~u2ccBxyh5@< z!St&XbLJl|Kmj8dP7m5P@Hoo-wb>8Z?pZMq?BVB@RaW}!NU;gGFvvh=Xm>mSp(?nE zFik=e^vkst%|JZbEMj0w@_uhp{O9lwZ3TQ+2cUA@(e~(#GQcXa?bPyVM2M9?!IdPQ zJb|g-Qq5Z%P~9<&UW@Ie<(gsvorx@-C?? z0o8dERfHpK0{WV`$c8Oyb3++w$LKjaOC`mn`hiJ|xpZU2_*(BNg4FEmyk8nuSqTXi zf0Yb@R}zNfFP!88X}zTOo8J7rXbmYFz=xJD1tBuxfGM-HLWnIcYdT1=R_t~{4$?SGdw+klw+w0#%huWu1Q5U?g z9|6f^oW%YZmP^Ik4#9n{e&Ni=z#L0#wbc5==cG|94RAH{KMny|ajxW9PmnNsw}Cuq zp$_e3zL*8o%CED>wpqx>A*J74BLRE&i~{l)I|@BOv7W*vjCy#XIIKk1K)w_WTUtf6;1? zVb-6!ilyApYn2}Vd#LF+E)}+k=unXCRmIJiZ6;ma{DH1cJ7gZaLf>uVzFz;`m*7Zy z8hdyC8p`(w(_{sBafgkl%;dWZy*%I1NU=Pni3jIKeeEF7+_mSC&sz z$Tx)}aV0;~oE~4XVDDclnCRb!qfyF}_Kh5r6g-2Is!cZS`a3E*602B0lCB-Ryvb&) zJV|9dQXMM>(yz5!NWg_Zp`kaWRnyyW_b)cr<`J`k^5kl_-u}~{`xe5YDH+{ z-YehxEr3^lw@0=+Mf>>eNe#ZT$~&Q)(D8++@>n9r+w>N?bw;w3HZfv_!{8@!7*XZ2 zM3#qtCPMQ+o-;mZ1K#}-#WLonlCry=v9bKElfw#((ci_qo-Txa<5$AwarDBA~YBGQK2j|1+~&<#=zoT|CED-Q1js zS<*Y2fxLCGmir%x8Sy7O1`YslZui@NwurPyE41!^^J{Y&c#+-;$QJgXvDCzP4Wn3D z7|Y1piHp4k+>802pL}R(3K+!AK3jDw#R|N8oe%eT{@?)G?)zMApPe`mh~=JJ z6!-H+(W`4Lw{$)ctT;>5Dbfif{MyCEG(gkTl;Pjje;aGe-(6x(3f3q--9t0@%+zM= z_o~Ruc!|c>dr$1~ZSUT!3Z-?(fIA%~)&S>0)gw}y%Yzp9RBY1<=q(=-ao4Gc4lLG=2yc5 zACj1ZIC)jIMiy_mWFsGyJ9g)a6t_Q(F~{QAztE(N6OpgVUIulD_{H^dX}w#HV2{S<{*$YOK?a zN-ZEVhd;rYRNfdrzq+_G@uZVn6O22RB$gX%TEuo2|LIo(7SKAI7|>%z{W-oQc%e19Gd?yAM#R|-uCu$7rhJR+j@rf_<2*CM4QA; zaXs8`lf~t5+0SKV++$#f#OgV7=WC;YRzB%B;=3Iak`vbc{yS1jc-MEwVWW-;%0{nj z3ML0;W}D1zsna!uD6B?a#S@+<3%!f1u{~M+{O)%+5yj&e@?7e-KM^=bMOx1lfzy+{ z?lHk2w4la9@klF>^@7!e(_Odvba!4)^dSN!;lJAnc{-Q$q4&e2aBe zJ{RR2>Kr+Dn|f6&cY}p4Pw?%T&b!K8qg+)!*=nTfhRm7kS~g8ag8asDASE5aY(`fm zGurK_$?>(n5Gs0&BIwUlr7=!JzdCN_KXo&0$nU~9U4y(|U6Blj^o*&AaJl7|Wp(U* z7G&tJ(G}oM`$FfRkNKXd^gW-cC~pV=cHwibI2r4zh<#6O5 z4?vBax+A_N!*ZdHbVkj=+a$}Yf{=YiqT7gO6PSibDaI!)fL`2vpVYu61{>f)H=5|BI zACKA{f~dZFq*V}{!nDz+vEIcYpy-%x5o3aJuzg7I1YRqxaf@4t$@a5B-@Q?n?i5~2 z#uUpMMm{XDQx21XUiim+m7^PYcwJ(%ZnQb8qhG)F{wcVAzY zxC=Sk)-BV#JffonI0Qs*^760OCb)LvGkX4!s*E}5cOeWP-g}2DzxaId9g2jaNSu(C z4bIcB^ez!-GU0D)m!d><*W5IW<09wq_y8%Z>nJig`4N0YXAb!OLIc+~1Zd0gBKm=wk5eRl;>oKZdLQ?CFv^&K^!4hGHDud)_%b6oRp(Y(iVPx zY7m8oG@0~AgJgG)3w@J!Jm24J|H#l0W6>iVT?|8_&iB7E!3Xg`zO@#eC!H@-hkg!B z&`1Mk#|+X&EtW6Pc5fbp+-$Pm+}^(2eum}ySKd~Csif>BXL)o^b9!!a$~-+#&*)kPZe}%5Y4ZIGfc;=`0T!O(HphhniJCmtV0`$~d|Wd$j6(h4i}! z(j>0^bEoe0li_bX%r-68zKiXJ`cwVnuBCK!cMJ~>Qaj0?Fl}~HmG%#3BY|c}I}upn z5aOU@tOS@v%W)`JvYEReEuNpFzkD%F=Tk}^SR?EoRVD9u^fwCjG(5OYs7Mk7js^g9 zUVbXtnqML6NqJ0e2oY&pVuG5^NdD^OfJPTg^UixVn{>LtB8 zxJ#pclpNH3#}_9lO!C?jg>X5*E=2P#*Fg}l#7e%bK|wwl>utm{$MK%+0#Cn#$uIKPd&D~*+N(qU$YLl+bpQOtPZOuOs<(mDg456k0Y&L5*; zJq|}#uAv+UY+i`nS3zuWe{RlS=mfJWQ;o^5`2l%AfgF7~WYzS^^Z7HOXWX_rblPbc znSjH>e`|vw5eG{N@cnYwY zF-kvd&LXb$^u(BZE!^%3wLOXKXLwFtQ15BTW5U3ME_#eos83%*GCuBz zAzEqw-mibN*R_oTT#~0w?!MDeW``jXrNfu$zfcivcjHXAFD=T|_20e;uH05H8CWIU z*GgQrKcehJI7!;cZ=XOBF^uSm;8|&C;P|)*a|+^@1j3T;{4k;D-|{qJAo7g8BAgge zDW$bo_=E)rx0|S~?LTf!s2%*lTAH;H$thj0s}O|q@?2jgIO|%kO3LxAsD8zw7SGv?F#@ z3h_@%_keYJfuD9;?`wt-HIqX`G&%OTb59;SexfdZp5$Q);|O zokvlXh#$bZeTv_kEv95|el9E+XJrRp{)@-b3_PPHvYEUj0$xlX4#V$;#8(GKhP}K_ zzcG@>lzq?-7mv+lHSc}Y$HQt%@~P%!NH$!2KR zP^?;$<1aAjUU9lF?ZCq!i#Ff#5fU)bZfIzzM7|*6IuUg}v}n@$Dku06%Vo^5*Sm#* z{73QeWDn!8HOo}7By{-mVt-v250sO$Wh3XE62CnQGOibqf6jWFlU}_k9Izx z;RKUj*NByTzUYC9m{NlNz4aN5#o0>SASV}n1|jOF&B|Y8Iv~o4^5~*VXze>9O#fj1 zJb%xC;%Z}B7y>MyPE>%^>j!XOZ2scT8lLLsSVHa-SmOEoNFw0%%xbva&U0s0(|eeX zCk2>2hij<|SNq4EY=A82%~jKV!UJV#Q;{v=`$qT|SH^{^f|MW^`}>_F+=}t|m-oH3 z_2b_Dpa3!cH=!g$gy_(u@c;*tu9_wgb6WN#rD1x5u@_DHg7!)kNpUz;_Kb|j%m0Gq z<>f0LVrK}Nm=eUkXK`T0@}~Pv_4t|;^XCb$+gy+W_6hJHEX%DN?+R0sM26Ol=RAbcmn8y z{nM+>iI)LE4ofqB)?n|nzmpCzc=iNapE!8V)#SGBN8GcTzm`85Y7ZP`i}`kAjBm3t zETiwK`}z0<6Gp(#>2?V^Q~NO)*xifYaQC)g=nFQMByTLhEA^a`2&Db?%%8=bR1Ew( z2DXL6pUdZ}nM7Un_85od2MEsY)iN8}9sK|;u6Mww2qS+|{2QWfu&!FK*<+k;QXR7D zza=a!dYIL6>rK0cg@HdOL*X3dcAdjic<)kjyU64})Mb31cp~`O5Qu`M#8>Q!J{yS} z6Mm-#2tYTg8sr=?MavzbGvSK=zOUtPc098(x?4TpZwvK1gQ4x(|6Y%Icqlv_g?%<5 zPc~#Enq5@;Q8Cw7arVsWYI&zqf+rT1(q?q6m0yQWYumrbt>{Ud^Uz+HD7#@7k9I{Q zCZ$@1R_4F4!ld6rb@R=*r`F=`HN(Ux!|*e?_Wp#P2sGb=GxTbSO2zl>(>9*TBR!hA*I^HC#t@o!d$!?sBU0w!SzDDZ7jER>Bugxc-rbT z=`U+ml|U`~O!jCptOGKBo_%snnR$d)@aS@n^@%MsMa|pK2LWEA{wr45mPoTINIJ3{ zC5#;e-=-Xr_D!$FvB>M}ogEsGBe1jWT&O`(g=%!z*Qu~|;T?K|-a}@f=$DibY&({b z1Yzesdv`iEZsKG|GA$u`{W;dVFY?HfT4NxoV`P@N+zX_c@jwe77kt0v&QMHc~IY@)!pw|5fp#p3Fb^`Dkx|xt_p%D{;|aYY25Ejg*HSS zE}LgUX={Pubdil(L~8AO%4$Ip?*yh zLx0~I644lW3uysM#P@aT&a}+yF;*uYjR0+neiu$pKob9*jo(7OsuM{54)0t2aRhFU z0Dx+7%jl;Pca<$7LtjcN#t5uDpIgxkrcTg@rGc61jy49xWr1R(wYk;mw0j;86h-#? z{sZ(nc){=-ah+o3XBN52+R2rO{#wV}<1=QxKd>MTK2vxCmqy(jcBG$o{(HGGO!e)> zFnf91y}^@w+jHCBE~oBcCn?dEr4z7D1tARhdAE*hI7UBXmXTD>(gE3~T^i17yNXq$ zmK__IwRXKe-|y>&UOvv;#fra?XGInk2`4k%)R0r<$-EKj34$=^%-y2e*x>*2R`KL< z(4Z_MFWdNDY&-TQkq)gv0IDRixVRss8G4;xCxO!ehH~#|vsBBY9k=1;QcF=4X zTj8Ep*4TK#*AY%nSKfQ~m9k*GMIax;yBJvH#7lk|xt-M0gom^cBe4NOz z`EB~rj-Piy+b{8lDb8sM7#19!PtlM~nWnkkw5Mq98e1 z6l>CXm0sw={UG=(;MQp1mf74?IJvXiP9X-;Hq4Cps&Fwj;pw1Sv;+2O&e%ykw6b;= z9(E0vU|ak0{zQ-lWc1yEw2KG_(_%n|@=*ck!!D0_wsCqW_ERW7=rODq_<9R{=!k!;-5&iwQtElV9dXl)&%@BLw!&fS5F{vHy)VD zo0`)VOdnHdAyf3L)4>RJ9QaKCRyCg7&2Y0Uvq%nt2y`j+NZ#Q2SPx4(q{mdKQWfU8~~B&uA`IUgqi^)~Bz9niX6=2Tv>){d?l)&?N&V;vKF3SKmWr zOLKwB5M^cCrr26W{CL9RI(Wa!~c4$vU`2W5Hp|$hsXyKu33Jh zb%mg7|Mo%2>d3_{;jG1Y>)b~CPl?F6G_pAEgggB9KaLz!)^@$$*!jd7&b;gZx_4%B zvG~pH1IXr72Bxl_bis#}kE8emviG|8Ai}CmaqaJ~qCn<}8pJhwg@IrCF?fkql=~^o zTO491!4L003r<&D>U>01UIzH_8#A7>iyypCq7_yQC$a&gq2!TmU_!zX401QooYLf7 zGJe_@^-nB)pNonH^E%~l2B^Q2&1Veq1l%8b$^kC>hGcyN4m{DCQT(R*@yxRg`Qv|u)l}B4x667PQCZv_-O-+P-v$%)G^bcd=7UWuM@{2V$OZKsUm~Gz)1>aMcPSw zd@lwn09YO6Hj^5>09yQ3o+?k)+wr4o1qsl^hgY^Jf;umaSXdVTpJ6&(gpEIx;dhq( zCxo0Zq=>c3>9jA%5p<$X_Rh+lP)?xT=ZAZiq2GpXGZS_{2o~&&Ne^F~poRvu_f2f* zQ9fLEr2TSh@kxt@%wdy07>zG$AJ1yIdA^JwRKQRN%Q3tZ6IvpLu z`4$Z#aDiv4Hq)O8lITOx5W~4~4zR`cA+GO1X6p5tLYm|J3E#qF)fD_^uL9F#E>!oA z+%3({aXuVwt?g<}3rFA7eXYu5|H-LXECj`xS;*qJvjqGi{BqQ0YAu6%op(FCr5nM2hWj`C0~x>s^M5qR?NjM(i#zm)C++Wn4fnRG+|k zkRjy*RRIKb{+|J2D;}n!Yz39!Iwun}Agn9#0$0>JzV}&AcO)B7;`=rRW*;UUtS8(^ z)nj~(y~u}@>xMY~*3)L4CfHUuz9H6vpf|Z+yR%2ZKH&BgR8y!>140Rl`EC_J4{anU zC?-AvdXQ#8R9AeU;F*&0Dr1>P#TC8>6*%F^1Oq6M}j4BclMeJlsf^hx6HNg@X^ zBE^kydlp2u?`{n(NHoM@U+k*FGWRn!fT7=y$F9OWBM(7OIcf~DmwS9Q-F^1UUdwe5P@=Es# z)`t&m_i&V_W5j2K@P}>?&~ED@@oMh)07iv7s)tC`_EuRo=9CaL;+h_VYUVL&VkKWz z>C&=Zjj6{oVpYLXMDr41yeU{9^rA=;;X#44HOzf7bfQBz^1mi~6c32vMv2$3J8qrS z7C^M`qd)y}cDR+xjaho!kLPs;!>#wAiG)>8e(bC*hOG5;e`fG$_JlGnhAm5v&G%<3g&rsOWVo3;+qKJIW`LdMBqE%YC6c}F9k0_D#@R31b}4<*>MZ?03wbmN z<1szdDw+db_;qPCTXstHbKju8#KHg5!qlaWo;5L`UQ2mrn#J*TN z2V*+($g$+xM5eHc4{YQE5sfbZ*O&nYImO0HLutNE@9bW*1_m2fXy zJ?ak=1vqDgk%sep`*UR|(+@Y}rYnQTb7g`qlH&}Eu6KRMS(v9CmSTe#SfVsf=uE+z z0v=VSa9IA>+NyE`bI=geSREvD=He2xMo0d3Q+)T?A1q?ZaEtblbnizg_T=Ija?&8S zYhGlwE&oct7~Wfj_;;FfM;uJV@vTL#rfQeMecx<++9$?asQqNI)4lUk)G}=!i+0I& zt~a{Bej!D=d-AY`BEg=w1-@b=aBh7W78<9p`%YO88TnKm27Z zjV8uQj@=bClV}=KTUC~pd@+~VpPN__4auhgM+ckuVNb6a+n%LN zfStHin0GkxbdsMz^4R%L!PFze2p+z>i4}0mc)rnr>s()`#|Y~WlNTu|`i>@_mhQaR zORJB;+CZ*bR`&7!N&Vn#qC<>g>?7@aqZa{timY$X%3Z(Q3z&c6Q@m-^d;QR zDZ@dlG==A|XsY)C-gb44WK7>X7f+N21LohvwtAq2+6M?N{e+}FbbLOLmL-o(2to3sgZLe^yu31Gvbd6a@y5U=U zSuso)gPCQG&?NUEh{wuu>{NTbwl3Ov(2h2?0>QP4JDh%5H;pWH-0}SCSRR#V@aM&l|KYnW7E&7fB(fjP-9`EK)U1ND{20{{ z*S7I$t$nST&_xqyF-VBlcyvM^2mRXKD*7YFvO7S2Pc6aY{ELrbX63LGGGdAN< zCT`fiQr|ij!IlV^%rL9T=UYT`{Ml9eyv?Pb{?~&X#ryF-6_3f@18__1(Va;^$9y)~ zxUi$)A0^wPXkw{nl{fv4ei+F$3mUYKx3}(yF7!{Hj|L)aDJldn`CaIdmOLg66fTqw z>A;d(26`+!IsIO!w6PgQFnFuSy5rm(ZsQn3Y4D0i)ffS zk_TP=h{PLCx(}!&C#h?Ohwkx%glND8f$z;cT0<_`%d}>2Ze>_gBSV6o*906bQ9L$N zu8^Z*U`QPAr1W(Wr5D{$OpexjM{rFUNUB;wt4F8!{JYI_?=Zv!+4?MV-Mb77WtmP5&)+~!!&K# zKCClOgoh^jx%SjdiDyEzb%0_HXwZ6t{l@pTo+#@fV(bReL0LNP1Z#7OVp*6Ujyk-2 zMdrl(ey2xYL{Sa{cXziX#SkmcaCnayBl-`SCrfAG&~87b;er0zXgq+AA+_j--rnh( z;Od=Y-GQ%}Y;h-B-O(>Oz|S5NVgQ(M+dGJ01q48)h~XmncVix1m_77L=fWj_^7_R3 zhpFZa9(ur?vq)#wn4pCDv5)v&;HRn!Dm(9~dq$R;#s((2$e{0@X6)UuLz$n8fx2Uz zKoC6jVNVAul4doNl>!*XZZUKT`^d7y<(Z!`DIe=fV-6Y{Ln~9t*eCdQ7es`ud%?of z(d^nTVbh2rd*EFlyG~GZAnQ=_?`ggKIKnX6~py-wK zE4Q1SvFzp2T=+#F5dhrJ5`7i)itr=;dnCP-Z&}%l^B|V^w5aj(^mM7iM4rU6-yCVZ z${L~a1`%MmV(_!&tBYXbBdU-qN?pTRiu|K_P)0IU$VKSB)Ka1_5m>orjm9#RHJMRT z2P<4#*n-8arp2U3m4vZUW7XL!2^aA=j@WA zh@{F&Q((MoY>JFRRsheg+Qe!K?$cziuzb0&;;*G-4`sNu0hT4M@m{e!g}dCs)n|4q z-OTS^ekqMrFz}z+{2RSq#BSFPGGwd2!)S$fp`OHX(V|wS^dVSfMM@}p6B2vTXqp6cjJH$>-p?p^+*iC^y813(0|>`LxW|&Y!*EZ?&^uO>m=xUQlQOswU*NKFpn*06!Dm9`Q2j_Y`BhCIB7_7f9KCQ`6_wFdxF`~-z;gJHtG`l1N~<(yDjSgm!+C)k=f8f-E+3E%YZ5-;JW z_JHHhmQe~Iz>}Z{XKPc&rF$gq?eBz`#-z%*NP&=rEXnR|7g3#Up?e}aH52<^?KAf%{0;>{q%_pzYcp<#eAe4@cb+4d^!n9;>QLHzlc6cqefT`DRx@AtU; zP^SUs=KP(g!Ht_KFCr4RM>s^QeBW*EOaEnGm|Y}nHFck@p%sQpdmo5f734lp6}7^P z!TIh3Chtxme+Yz%g2Jh*MgP%f-A$If*UEmXF)g-4wZ7i#56WXp0c?+#>e=ty6(h?U zt<{tGgkfB%iTTIl0ZrB7)Pk%cy?ssX~auDY8A$TeP`6XCwo@^}`wH>}a zy1mv10itzSLctmz{U@DKSepZ2Q!lQtn$7h%QR5YGHO8WGDFd^TKl@mo-8tfxxa&F6 z+vn^Q`bPatXCcDW-rx(+=lG%jZ&i@^-UffHK$}(41E1(=H7kwh-va$5qTgPKadP5~ zHF4C}`R?g-f`N4oTugZFdba^S;aTEmuQ$0}5=6wKK@C)EiNdSfsFO8I8aei4BWD@2 z$^KZetz+yQPmJlY4auef(j^u=;Dub@oBzDK8SM5UDKjX#5r4S(GA z2%AQtkqo_!=kN1=7g~JffY3{68ai)dqS|)U!tZ~#)c1Nqym^32i-);|@mAlQLbv<5 zNcmymQ`+r9jJNKOOWr2}dW1YYsD1*3Kw;k-;a1wvx}O^Ud0gP67+8xiTMxO6&zhw$ z#eXEkFD7D1B@)vy2X3&Oi7ShOL9f}gQ?Brvz0%QyUTlyvbwnBNDp#0T^Ebq-4#e`K0ZS|NV*N=fQTx^Nu!h40?3QR}w|T0X{I? zF5X*75w@$un1YTV+r7?RHP&J&0zZ62L`2?EzF)C;-VsDqsHBdIa;gI2y8T`zrKAYH z2MT6xqkzD?6q6mAp`pLhw}FijIdF2ldprq%nubQa(gCLUIWz`@stgK}U9GomPgv71 zr3Jz7)%Ye|r*BkJt^8#2yHAZpU=R-n`6u0L`5Q`{sT^zA2~Xs(xQAj81k1<-bot2Z zg@-4Y11w1nryGOwpdOzWsbu{%G0n~5jP;jo!;sqE^Zf^aaI!#Wi4ax_Qdop_y~9X3 zgqr?KpTvno$lL__)Af2k?1+@L(+OwyH3UEwQ*2NCVBOwRX{c0LCM-xt>$}cCdHKw8 z%YRka70SQVu)GV9;ps&O;0V@BjUKQb|b zAShmt`wZ;}jQ`pXLH=8Jre=$W)HfsJEqEcWsInJ);7@8l^8#?~C^PYkAu( zGNmd)GefzsB+r?UwO*JKA^JR4R-MVV1W!4wiNYo}TwgIgtifz0q@vT#Jry#^aPKvi zpkXc%fY~a;Es&U5YX&m3$L)futoEYilUKNzTm(+Db`lFR6J`4kFB90VEnb<&lV}a| ze$xE*-FU86P=^*xdW_rXCxb&_MW1ud+SxLk(T|x~NFN~n&2(;s*_uxX8YZKbOspWh z_bd@e<97Qsf-3kg+aRy|hY%akCP#0xu~4%W)SaxB54s@pMZW5g^B`w^8;ImuXW5Tx zJaV}RyZjz9o320He6{c-dL^Vj_(gghSOtDaYbhSoly6=b&vV+udcak7C8}|@yp`nX zKaM%G)o1+>>Eo)3G<@6KSH*bnV-Z5L*4C5Xwk*Zw7V8&{GW!$0 z{{x$LA1cm$(K}-Vf+r~K_F;lae;O~aHT)DG?snJTr2@D&%S{gnj#}k*yNuK-zsc?9 z9o^AV*%l>n@mvFcsJOov=3Co&pKX1|f;ABg3wHogYvEt@H|>JlN5) zbb&tbkw|_^1-Kbb^SD-F+%YZ@9ySF&224ph3~ic@ouAWLL2!L^W8<_$lSxUIT$ss7 z+T#y>zA^Hzm7~*ew6T!N*Z#?ZK$@2K;0sxv>yiHO%vYa`Df!AXi92meN=twAcb>)I zSgWT&_#xz=UF@p+>w-Gpl#zn|U}Ak%2a_VCow0Kq zL{k>rtu%f*!{XuY)X1jr%{jf^)rgSfiLRw#qhG%HWYG}Sg+?7r_VaaqSYhdn_#_xoh4P?nyhYL1m$7H^p|wBSx>lk=|l0q zl9t==Wt|qcXS2=WImJZj31(EXw^0eXz)dZ^bfVyI-I^(Z@j)!4GUs5fHmtb!+Wy12>!?37$erZfc-PFK15=BWJ`B$VR@?vF@diJv^ z9x((|14-?NiYZG6>JCQy2d{d7#wPDVkD-{j#Ow9>P?|P%ua>+P zmCxe>QX!$uUHURM7^h|yL$rlW#`{;WW3UnWbrpaNx|5{v-&LrP_;Wj-eSDgZy!;s! z#8za@#9Dh|t} z-^Y(1@uFlvoIC{9>KEkPRe+Jk^V|b66g?%y5Co2KIC{BO!QG7@fRHPAZAQW)Lq5k5 z?{sa~w0`;YrS*0DM}zP&>V_v8A}_~k?LXR=?-_o7^58*Qd);VqWF+|O=%aR)#B=CG zPvWKoV!U%>0=;`41pV0|g0Rb6U%8dpmDy!XyAk~eNK9O}7N9YsRy9C%tK}Pjyx?>$ z?(*)?%>4S`pek-y11Pw)$3K*s(Ng8W*P$jC`bqeeTu@LD{X?*On%MKz56gqr+A4y| z<65%?&+d?*i#6DCbH2mJ%uEQ|BgXyNa*^)q{o3n<1fs4p9SK1TVwZiKxW>}+f} zW@%~Zubkbv(1-=Oip}sN^-KVG42sj*LCcI@vhUIQY^)z2dr*P`k2?{8_Pl$>@_84C zRoMAO$pltP2sBL5BrgE40l|dwRl3q1_&+ONzO3EIk=_n)9!?Ja2(kyqx;I%?-J1QF zl?Xowe61>u*toGprGjt--%SI|az^YC)ik?n8zskR7BBE}?(|4l7-XKk{6srtb30^Sb6g;we zUhUrR;DQ5gZ)(dsEa%BP_;nd-JTykTviNEEw4$pb;!7kfsi@u6Mz8wk=c=lf*HR@H zcXL&~*-&TjglX%xt{IQ$rF54o+ek#38nFMAHvppmgyt;y9$;)reL}?8fl&^5I+U$r z@}Eb2*^W-%Oa9>~{IT_)BS3_t;{L_KNXvzwJ>Z!4SnyVFx0Y=CaiYWB9V{y}B2NDK zTEt_T6jwT*rzdme4jZBN&hl8-C4&oeBZJ`p5eak^k4~xrHTn86?b6NLKE4&aDT-jZ z+XIpFQD_QNIl)a-Hn%pZyrw-s>^d(5->v zkk$tt4sJuWxvmoqZrmIf1(o&1}bRrEi8W zHxDb*)d0%y^xp0#gxX*XaQ#v1Q^|WnOLk3^pMM=mbCd8(q=V`(FBX~ZVamT#&#wfQ z2f&eo1$PFoRDA99$Hw};R{XG`BL;mNy*XUuCF6|lybVE>EJ)i5NY_GySa8}r-^*N< z(pm{3Ys!ac!P<2tXgdA&o`4<%MKg5oI@#>Pl z=Di`YJVJIfH8yTNAhA<2Ry=XCg~*$^^1&bB6!%?iw@4Hb0()1sB|tc`9n=0TR8_vr zcg1de;(CZ2*rM`emkW9E0&sS&AP&Cz`|2kIp4cFQK_$@*@5=fTrx;cO{ZxP#} zBz!ork`J%aLwC^&O2gX-H;%gaThzVk)3GmOD3YwGxf-VYPoEwG#!`4JhH>2U3k#r39BrljWLw}HB^>$s zD5ZRkEaYmz;rboBYG3=Z5D^iPIvap&ADsJ79fWue>a(NH@m8GCvfd`97XqZC%y6|o zin{vtXS<$%(TE7NS0cDag1O8HE9?vjwipW6d%g7*OU+oJdBo)Yn_D9EWUZw91J^#T z@fZQdnnlT|vP<-@v^Rnv{yVM>vc|k!@hib+yR&nB0P~0n(0v)L(}~&5oGwMmCagWL zLgpg+7fzR+3Q%bX-tHljS?=gonyS9EwOQFsjEBz;Lk?$ouJd8&R-N{}BJu;>WO;5j z$uC&>$OOSfL$3X-UB5@=WNLsPy@0b)F(6;WJ&qQ5Sth0o2GFWxUS~7^4c@j!pG~Nj z7qQv?#+Uus@#;4efC^=gC?;=*>oNjHlA3`h!Y}qzqea=Qft6CIxOr*(%=)gIhMG zZH6@OAeo|$qs|`WF+yiFzU$T=T*Er0hr1_F(P+$&XQ;GkvY>@;K8tU|E;5Y$^{n9} z3RB-my4sbF2SYDQr9!J3#Gsf@UqYW!zix^c z)?Q(|q?nt5l`k3VviV{QI&X!&(qe|RIRHQOcE#QFmQQo{>WI@k(j5mI3j9_pIYzeX znU!lQL7HpG!3z4i#w;(l)$A^wy5ej4d;cEJ&26`5BDwTHTdOGnXYR$wcbT~ca^~1L z@W^}MJ?3?yf^-CCTKAVENRFaew1dLH^P&Gsd>YI^ouZhB>=b) zk*N}Kdi|VG{ySkigR5+n8xJV(ZoeCZuIJ|jl5l0nLGp%{VYmffE1r_BG2iNd;gZeE zVy!F?W#GxytUSWX_Y%)Y)eWYEUk-U#6%&J3`}&h<^AkGluaqEoqs>x75gpQlc2hMa zV$S#-K(6MYm~}^wzZAkR8+iV2ERr1mtg_PO%xPTd8kb;y0~I83%711AXs==B4GvG9+A_EOz~uvoKa z^N+}A$dsJa4mLd~aR#{jVCtRWMzQyp)(T^XALhXx8H>aN1zTLal|LXo$xPBG;+Zdi zE|Ad#+F2LJlkRDt8g1TsQ>EeQP`}UHUi6|zM>+bow!6rQp;$lBcF$=qXdd>(qnrEc z#?-W#z(#}Taj^Umnnh7rSMid~{_5%qwbmP@5#9ylZ|LM>r@{PX4Y5oSc`zl(JHT7a z^aBF=96%hl>*)R&5bwpNmg7L?k&zIh)lg``_sg#ZOIJ}S;iBa-Jky) zG?}}Sj1X$pnbA`%e*EQI1y6&$XKcky^cvnx4+g%nBj>%g+C@i@sx3ISHFeIGm0@r0 zY~Z?>_R{M7K4H)P#e4YG;bOBWE}9OMDfUaao^SksUZzi1Rhm--T%ZhQ(=rX>j=(I| zUp=TkXr*Nn(Rbr^?%g4M2QR$j=pjcAL$1S2VqpQrR_?+l< zrIrB~0ouc?5wcJ>Di=7VHk|##(*42R=^}rBUjEmRZvU$KxuQ=HHD{1kk&I%EyZf9r9;FpF9zq+y z>}ezY_A?28)xWFNqgMgr49oSF;`w5j^~-e1aL@@;cJ?_#X)`$-(--lrgW(-m86r=@ zf)ni1l50Up9yDG-j17^a5C@~LLvB>5c#m#EURL|^vF5GZmb)?i?Ar_TR(%1!h`{^- z*L>yqKO|jsSXABDy)z6kNOyO4D@Y6}Aq`4M2}m~xNX!6|QX+_ggaQ&GsesfBf>P2* z#{kmZL(Vtv@B4qweeN@7-*fg}d+oKd`^Eav86qMZmJf63)E6H!y)dL3$h|9`(atZM zpPzrXC2%t%anUsNm0tEMoa)!}EfE4NgYf#7K+)Xy-A{APfx0>wy{ubS?#pR+-w&z0 z@XH)ij)oE*0E+tlba<~$3K4AeajhkyOmsEn+jnK1j$V1^k5UjcThvJyNzI!NrB;bR z&1=~P9g?`f_J74TeAeV1x!SuQT7}!PqwvkI4_2xqcf@E?z@qZjE_?7U-Py099i+-NLOvw0HtrtSh!>PFn)+SQ+=Wu{ zXP!cknkI8*T30LZ9H&I6^Yiv+>>XaA~x|-ddoyS7N4`c~@`G*HgK~K*=KFdA|3O6ikSvcW}*bg-%HcJY*R(&)g3h}ec(}eR`x4W{vb{ADI!*@ z;w;d(pd#<5n*v!S)FdlD+M4`yHcW z$KO1PTvky9zxf_~8W#-J3}yyn84~$j2xD3E*Y=UYM?W&q7mV*>CRMJ71Cc#N(%(v- z8yxVW?cze^sScJ#2|M7C>02`se^aB}=*^5d0K&UpWIE!_6rNwd)e5@EdT%fi(Q==b z1MKUE)GcaM7?$eB`b$0XlXkW#@p$#2kE~)_wx?s%QMQEFoVH3-T6nh6V8Gzv6Vb*A z)WRUL7dI`=RyUDpC#QFPl1CTy_(ml94)?%Qa?je9gUK{~Sq%K1DoXe#xyj>MZgLvmi)eszvLijJ)7xFjnTn%9rd3P1YQ1|LadxEbPiF zOQ(|t?)jx=yX(YJH*5NTn9dg2+`8fS+T|NmiC;S2y?akZ16*@fY)l77x5Z&CO^HxP znvbkD6&LoGKOmsr-hOn20O^7BAF;@)5Ud30@$Ewxwt!C`qJwiS!TE69rTcxPN_ZE3CEfm8iiv`aBp!o?n|cLx_0hs`3PK%uqrihzO-Nxy zEu`=ybKXl5SNHZBW0@fcQhadXJqxe|tc8<%6V};jUKh^JP6sNJ!Br8TFGEk`7C!VE zNz|msvvktek3bM9Yo^c5SriKjFZl0SuGC`A0}mOlIu1jMpr{(rT_z&bBsmqLuP-UL zTEvoS;OsSxV&q&Cvj~$!P+z7;ni>E=K%OOd`R31nPe9@)Q1mkyP)P8!KbRm7L%NMz zPNTFByC}K%8KI(H7<>*7cCfa1GcA@x<{&04J%(c&GLFX&UU8p z8TpxMtSgwAzGyvpBAMlUtx1{qotfXqT^=cjow`C<3=92L7$< zsRG5_woiKDlHGls|& z2S9&RWyEPTsA1PEsUKLeu#Qh&G#>TO1@VG?xlvp%cRkW9JTi%3I+fFZBb98pF9@V3z?ekY3jvUUJ5|5cD$TtcSS4_o)$d@l?|Z4IcLLcV12Q ztK;$GWzxJ(ZB+iygM591q_$f3#PDAQFHI|qC=g>R#8ic&vz!&%9r3K=_f`DHxl|d@ z@J$i(;>*YJcU0q9#Hbt+y0&>P0P-8Si5=-s9et_YOBd|g#6aXp1chqBuh-+6_gPfj z>{ULnu>aJ)*@y{HE4IJzXx9*$FWwG4_nqfESN`E!lL{oWjmqKe^GD!8&>N}oP#EKp z*X56$Y`l%wJKF%#MK~3CsWv~?9U-8riMpPR3c8AXv#tHJbx>o1KGy&cdh2^#$A;oQ z*Xg=_&En&zIv7_qRsD*Hge!VDnFx0D>Rp%&IQ=T+&SKY*G6<7=1S~MmS2`?yd@m2b zxf2SO2)H(l2Thbf3iXA>K2(I}F^+fda1|?40XF)RZ+(2a@lSW2J&zkq`Pq6m>(Y6< zE6?Mtr1Kxs_}3@auWvX)x-pmtgKU<8*wg(^8$wVakr$(8mU{W)L0JtvoFGgIXSX@A zW}W&!oVhny74?r0=cP8|$3Uf;Q)+rr5XK8W}^wB3So0t3)tM?Sy=YDA2B!3QLRgvG^i zHzdrUiwO2s4FU`qSL$^G63*S3+yEZ(J7?Ril04v}LmBm80E9yS4qsfzlq&4f(Q_Hf zp&imjaZ>==s!na-vi2^|Q^GG(ZB+aQ%%UJBC4U-~u(jjmYqCnte|Tkh<3G;|y3^`i z5CN*c(KdH=!7oR1pH_<(t825d<46_NkG}kR@nZZJ{Ta^n+*t-xcsWTvm-|^i_vj?* zw=|wZv=(bOgEntk{LYQ!=_T*)f2teF9wH!w;+krj;Tt}%r9<3ymLmM*emXAz8BGH! z*Y~D+fi_r<9sE?5bo2TSXsDo`?j9;=L`I% z%MNsU`sK^!P1ZuCWjzMRP5e-@<{7EMu}?gt%w;u6f$!^z)Dx_Ihe8&hZ|sg=@QBwH zWS^f2%ioLc?zs%@k!>cF+_CU_s%8`+hMG^ZO=V@%=48$)6dMw@K{A*QOeKwjj|wCCk{7xSO^q1&3hTzOoJ!m zep@qfavCTqsR5)Hsh(qrcr5&GC!%ks0Vs^R-t35ht~zo|w=w)<)@Oa;PALwodc$PT z6%r}&s~x{3o-nvtDR^^O<~ygoU2<=>B@qpgNh;I{^^^jQ2o&X`Ph!8X9~2W|F<~ z0?x0ic|=f}OrBkVv+Z4?QA4ZnuC@x%6yBovvM#g5S#O@D1wX{B>ivyfY=2}^Sk__A zlvo~Fp+|BJzers%l%nD|24jz}v}fUsb;t+r{)N?Le2VL6?J{Ee_Ony8Vf06+PQxSa zbFAC+(AWhc6H;tKv%b=3{qjXnaQVjaf-T2*TfTR2>Eu`yEt}1Zxq|^l>=vbrNvd{E zr@1a#rhDPD@n*xRwd+tl@7_Wxs?pnhel9p>OB>a1vvr1-|Am`)-Wnm3fcg;)DLbMC zt`vrpbM1D`7mLaa^VYF_o~b@wqI{f3+v=a|!;8Om^2cZA0I>##seoGbwgK6|orc2FeJ8$? zo()ZNBm<`OeEd-OmW8MwlwEx9jwH0F>8GZQ+fVc9Dc|6$(>3pqP%4rQl(R!%U^TNr z>XWFxC}F4L;D9C)N{r#r3Hp&VltMQoNe9S)=dtD|m8IHO; zcs41lekFs5$Rr#fKM1XWXhxp)P^sDg_j02-@pO@6DCCWr&!z?-17_ki{r#1K%)?MMGi z`^(TCE$ky_%h~d)WZ;7g&S04xB%urqIXSx*!O>2sgPPvJw|~kG@IdLg=y8uS<_6N^ zY7VL04mWGk=d64nd$z0e$ky}>g`z1~L}<|)#N<~S;kk8ZpSEB7Qw@0qiVo2=hR&S$ z=_>vk5)1V$@i3ydrgfsJUbipajOd`!tA}YaoIx~8ZE;QnR|kJOt&_EEf7bdSZ|K&4 z26)nd5REMBoyTMsL`kDjZxQ+a-4L7s&;csPx^GE@emHyX(7l`bym zsWo0!$?UETSeNZ|^1w(=3Y3F{m}a$aY4cqkJqMk&U7dLKfVA`FwwWfnW^g-~!K-J~ zri~F9cK_bQXJ#$6dC~US8!3SV7O_DqftwtScCMW>m$v@2r;m|pw#X=dZN)vP~BGIzgg0_hlf~^Cj&BagcK<{tgRmCXJKC44S6QX1U=j^L;9|bSzbv@>7v^2_J4{!n8CWj*ARlQ^ z8Xt7UK{Pd#Po9C`v5`LzN8V2BSm5~=UFrPp5yUw3+$`3Q)*C!EYkxVgX}3rLy?5!( zypZS*$UUs5N8K)~2FU|{1r4h=*Db?6^|~26;mAJO;-Xh2;q&Z*nx`C=hQaswKf_$t_1^1far=i?7x>7d8~K zrmb?FC%OD@^690M48caL;(0$wCi#~Efk5cfG&SK*&!tT!7vt@nY2 zn?8sncxQ@o(g}Ay(2(YY`}p`|cGD;h;y2i4dlJU@7!dV{&d{`3Ij5$ z+4u3xh<-|H+e$3{2yoGkN#+6$2EUjIwc~iL*O#Z;Bj(mkx9j;~22Z^1P?Bh{Qjnr< zelC6$Cq!F*R4mea(EhnX$T~#)>ms60S!0K9GaZ;K@@V7{I=9qx;-)^uE*-|Nv6~~- z+7CVvthYBtE5mx-_Z9|V>b1=*z~s{99(hKg8xuA+!5+<4sFUk9^w_H0$#)iBrfOUP z2EptQ7{j;UNgS`H9s$_O9T!0ON{5u3x#AD2a`-#Yv$^Ab4Z0yJ&U@;;{_W$S`AL^< z^4k#o2(<(JN?se4Unw4H3b)(f1QkqCTsDJ0V9Pir=Q-&yFY{bqMCctP!P3jkPtouO zd~oS5-u?P_I$%cVFqz_CNTOZHMUh*YT4be;wo8OafbD+-J&_1@RY-HV*lpsV0314;07bzuFl#J}KDm{z8jFK4BcTQw67bo0oGQgUYZQvZd+8(iOuz zcJUND-34a&bg|{5cht?x8R^YO*5Q5!c!EuvrNpH~uz$^sEbuI0ysf1rhsS>C^%b@0 zp$lnQsn+$Nh>tvY z{`wvXdT3!1z;g4T?Qk7kLTDib-EtL)mf-+j>PB+8y(3b)R{`0?$C^+{pp~KN%(gaO z;QP%Mu}q{m1+GQ;MK=AGVhH;FqSJiW*Cido=sKDHNIfEY_B%R4!hAVKKmK*Cv`p7+B_MVnh8y_hUTF&gb=2%rXD+rY{7nd~1a}=aHCianv zf;VhSGQ^M(H2kGMzQkt=g@TjjBr8F|sFa1#ECtZxyV1bAaiTv&g2PHU63`K|9$;jf zK?W*3cxqkeOSxF0{y;US-hM$3CqO)&#S6Gjl$263z!+h<%4+eB2OBwaM9Gv|<4F%> znPoE6N55DotF3p&B=;%wxJfinGUPM2_M0Ro7xu=3Fpli3&o$wMYs24k-va`6Dk$X% zl;n8p1E|rP3LvUdyP7=HQZ(4;3R#p8-JjTPYKA&VtIH44K{6TGTo}`oWW$VJcAYEse zPVN)QunfoLmrDk2_v}|vVKl}CC@$NlhL*W5DWAmut&90}3@G@$ z$K9)*vMQcVCWQ=_JK?&Ckbe(mv$5J7%e&cMWi~FiM}8@~+WQ2ED#lk2)Q?}olmIF9 zTv|Z{T$2g_+qZj|IN^aX&pbJZ5LB3KUeLlhH|R^x3VZN`*!)DCUSX1!->?$0tw;BP zMhCk*iE>!ZZ?-9S>cjx!J2u3)7K#xU=;7^~>ild9e_!`P;lJzR!+%;TAh#tcsNvr1 zEiAhL(IZ~UG9(_V;EO45rdHWelA5`jakshEbysVdkWu8^B3VbEts)B9?u~MrtP=gQ zfqtjmi~J$085`W=wxn0!c1vS(KgKKLGrpKj^9j{!Kt;&NH%{T>)l;MKUA4f#lOH)d zl|P9yK<0ry?97!Ttx2+3+OU=XSOQx}~W+=ZpaC5f5sd4KO*V)&P$~)~?PyD<3V6^dJr$N{?GdDUkh2k*tRr zlOC>F`r*R|Cn&w*(K3%sHJg%Oz6eTxckZHQD!}ex9hWI-HRV^(4VF_Ln7?Pr2R!ty zi@19JuLMQ~sUaa%&=&f#z@16xOdy4jH!Cyd0#c-La|JSox7s==9mI}@rh0pCdtujGl#7>2z0s)^eqz3M zaC!*s4cfNity~%wd#~0_3M>25*^vkfD+d<1W1RaRlP`{p`$WojJGQ3x+PvllzW@Cz zFWafGNSUBv_t(Q>)JE zO@+=uqLThf@qeucqg2R4#=oL|+Q?MKAE1D0fhf2Z@J}0fgC|J(`Qk3*w)f-k(Ox(E zhq!a(i|yaA%ZJ*1{r#_sh7{~xt8=9!oMcs2R+ceQc8qTZx@^o@TrRc+ovZA-*Jy1{ z+U0*zERu`UMtP+pv|_NogSWGykNF$hrJxD7U5Vs&I054$!`6|wp~Yn(PyWb-x08|R zGWu)b*NA=&Pzr!e;Q%H5cjG5B+It9474BSQ=iF@5&zG~fLh<&8FNS6#7CVv4MrxRh zHb3JjoUMrGNmzV!tPZrZV5xE3liB0DRpdz4S37om0T*=MKc!kT$}%d{!n>$|`Zzfq z3UjPr%gCRKFE~NAck@2Rc+jae<#)l1=YP2$gO=@cg<2?}0`Mmgz{4+Bn5ms)s|Y9o z_9$ukkYU?z=i-H~q%!e^Li7Xo7yew?RjxIW5kp`d54nN4;S^Dw#)3r)Fw7&Ln4tBS?dPK!}rjlo5JW43lq7)EcNbsy=0W_ZX*+ z4F@e?`9tBwJoe)-I;g}P5y@;EN=0Px<2=(^TlMv^kF2#}2I$Zof(atFv3-H;Bk* z%98ER8Mhx<5h|;UNO33?PkTKd$TpZM5y^K9b=bW>p?ZqO!qUYjb-hK|K4(K(&jDy* z70S(Hk%fT;yIz@&$E@X%iBjPP{CVtmt%Ljvah8}C#-1mibzQDzX>IaW_WzC-7DnY1 z7bNni{9%@U_J_7lDe1v4x(v3@DmN!%n^Rh{^nGEvTtBQp5#2agiKDE!wY6ciO`lkk zQi?hT5BYN@g%{*nSqj|J!kWv`*Nb*`oRSvhhuKG$R@hrRiT06njXcQ5k0GSNK(rZr| zdO4peqV6+q+D^FrBJ}LcM8QXlTlyJkWGRqxUrSb>GjD97T!m} zmDFYZsQ2%=)vJO5?zY>EZY@C081e9_LTXqd0icLbl&SM)k7I~lH}_0n(g@soIf>i3 z+^>2}|DN!?*_*FluT2%rMK0CK@i#~=rttxGhh-3ilg9VCGOv{yGu){j5@Jzw3BXJ^ zWpt;%zshD}3ixVqOO_M#@iHyFre$ZKk>t@2oy{rdy@5d+h6ERX4%Nx(A>ZWQ$SD+) zg&q_pZrjRG#|RS0zaMPiI;=V1{w|YXAtdlvlS)+aM2i|YLVVmJr;0HCMBV#M%>d|? z=|VEkgkNja3w?|py%RXpb-u1+hud0#NnI#{BUrmwQ(Z!JS=xPEfK4kAp+@z!rRBa# zIL7xMV@*Ol8yJ-lHG7&6?B8++FoY>1o69zmM$pJgMM1aWvOg~l>=-6Tf6TvWQ|aRY zbdrEV;FI~|A1sa?aNF(Yga2;C=@DVb4tar=UgnzVdY3PPuc_?QPZb4<;(S$43mAis zu1I>mas#{lHD@+MauNHdLCc{&F70yrk22eXV${H&=l(+5dKrZ(&Ob{T?|RDA{oTqoM!1Dq%e>9KzM&5(DQeRZVQYd*gl@ZL$uv{h(HY7Il$t%A1!cQ zM8*T$Zw**dc_H5X{ck*QunfwBFWJu8Z&7`S({hjzDm)dRbNJFCTcmSu?7BWmw&ran zAmcAU1u$eh$0gzEW`8y%Gj=PTIM__`Pg0m;i*27pT%L5eYHx6-cew0Mfi@{TuJI3$ zYOQ>+d=G}RH`0nb7q0FR;vlaN`m&%qfT_PhjUx&Wp5D+^u*-C`Ol+wDxKtn}E#r0PTA0T1&fC*=u zYiL)gJ&K?H`-UpJGWI!J7M$ZFSSNk+&B4DayBs{~ zoy2c%`1GR{6L<}AO8+99@3dj%z`yyHNAyN-gmt$DM(YUOxR((HBLG~@P z%%p_*4?TVlNoJWk%QPc%62Zh%VipNew{S_<-J48In90Fy+NPz&%2oEvaG7Gz6Vn&V z=~|nuGv?JAf7iig0TR^O2r$Nn2kNSb$zFp<;JCTBSx|%&lml&NAbTsUN|1zSr~3$u zO$HdaK-&w?X9%e{2ya!m%hNdz$b}Vx*X~wansUqBT1i;n+#~P@xeg?Oy-?yTe|V@0 zNpAIV)cyY*iT?|dF&)$aXbm0>Q8YLZ|4J6f|4Pq|2J?6j+9XDJ%TMC{{6iGHC`IV} z5ALj>Cdi0g^OKgS}c&6oy{Bn65{6Q_!O+q38YA9f>F52g3PH8u@i6GzhIXHP|BXX z?jjygrqVPX9A8{yw`a963T4P}1%+pUmRFD}hL@L&AlH|IRDi{Ym{;_mi!Z>5h&V^Y zbW%_B3cn0Ct!*3d*t))?Pv>N&h5Xd|)ppJn^w-$>ekCimA$4NHz-!xm-s)SGmGu|V z!Df#<0WRT~Hcd(*isuN4pKKjhd2fz>_sjZHQ(+e;*DnT-Kk(lTX89R5xgR`XO-(CW zrt^@h*C2oGm0gJBtH7&^(v3+`+1?K4VL0~M-4Hy5E{FjH^0`5-1nH5a9hb*OHD3#1 zGQ6NUv|TV2iu5*!A4GKPVz@+reF?a#gPTSpr_}t28jj~$XGX|%5OVo&E_1?gykSSI z;y27>fwu|AOa=hKI$Gk^r&m$mo1AaoR3)OHI%|nR z^|R!3l#Z;Rl8?9_(H&-3M&CEt;efng+a@Z*dPuFNzv{RX-w0w%uK|$Y9@S4B$pxwE zUH0GjJ~w#HE~lYw*qfdEpTUCwdZpQB;u(9qCk_AqpgkC?;9ksC#s@4Ju-uz_*Jreu z*kB{JA^#k6oefv%gNhhUm=6=od{RiKIe4h%aPTaFpqRU9U%Pgee1mR>?_^O0Ir9ea zJ{a1&UAbf{-ew6mxFj=}!-w5S{M#uQuU5!+W!u7V;eR59q5-VJ8-VPfni`5)90c9U z69IRjO~>1F=m@*|4wbtgG#`je7nc?vlb5TqpbHo|*+-s;E`mgx8Ux%l8K-@ivp?x; z-(k{mV}r!zKh9*-Hu!8Gp)s%KKj6r9Q2@^YAgsv*Y8v zFXD(B{+i@MJA$nON0%d7I*MQ?yitca>0{?c>QQ3+OEW)POCV5|5f;RA-#s*aw4M=& zlyMadh_l16k+5O)A(&vTniT%CBf>VQ710bwaoID>pJ+q)aJ6b)IXnuT+%aBUpqPc< zZYt+-;~SHIY~A2J@6X(EwKlMLwZb3y_>1+-q<*g4g}O)AfaeujCnDl>>#yh(*o0n_ z+4a@bDi?UFpPm2Yr)9)aJ(M=vkJX#|tMU(s|0F-GF^3p~-3m1B3Hyo&rQuWFKfDmf zMrPIyZ$T)v>^eWA1A%d|FdUn$gJus;aJR?x${ezy42$8*GWKiUH zUJ$jGLIJb<%it$agIl|NPS86k>43Ts{0~cy7tbjFrLt}PyZbb~-)G42`ta^hu6N*z z!zV>W#*fSQa@Yt3U72OfLmvAm)WTQ!f1*9?++HOA=1KIITD;a7vXiUiL1XRsf5%+? z*kPAU5B?`VZ`UxqW{ybe$I4w1VUW2V=1F}J>?IHA*d_1>(F-=y7=fEt4l3+h$F{cP zLUn43Jm|cO26}8g>P#&aEz|xB7O(1sIZuf17a4!0yRpDqEUL7f zY3U3@G8*(}6FB=jV1L`0vlQ zoLd53X~4IvkIPb3onB38WDpd|-see9rW)3^>%tK=O#Oi%_%!Bpzi8dA`|zSU?~wAX zLfF?)=Wrtvfj$VoOmst>U36&xvk*{dp1xfIP4&O0n6f6Qgh17IK4ia~ITDMVI$VYY7&+LOl;s_7a@;R1iF!21A|B?A z$btQs{cOzUI4U@F@wD$|^+Bc!`{=JY_2m2E0<*?d6gO9Nd7#3Qd$)xwE7d=`QhlYe zlQ+NL3rilF*cpka(*BJpj$YH%y3*)a@79>u)YJByl*YOeKP{5rz(@7Y9 zp@Wpm(5$b|Ziam5U>Du{yzh2%iwjgU=I!{uDrP(GM3Tu6%iNKHC{C%w5MKT5Q;8f z!s;>W9F;zKW+>#^M>bcg{(^{K&>=rH)p1U_^V6U~=-4X(@-FHo$d|jOGZd z;Ew5{jQhCKNVzHdN^K^=Q`w=$#=m+hwh%-$47K?BXJiU4T(7+^mdS4fNK1xCI$438 z(2!}l?3R$R|5ghJoGI`H1a4Q?Hg-?{Xz6M>7YEKfWVM&denpr*dD86WjwR51kB7q2 znN_F~8{uuxDQfi}{wUnU0D>5swT*?eQ8fxQ-js??64zfriYSud0_{oaplBFtl4LEa z)<)@cCGv77C+Oq{Z9yR}l(rAv{Rmheb!|~Xzn>g95kdUnBQ+V{QZ-a{5&C{H+nvh# zrp#-XF&C!tq#=i_{``~r?%cSLci6XUQ!BP??Jv|kAonPj$N6`FYa8I~RV}Ue17fE_ zv8lI>cTt~8V;-RyQTKt{$G-^jIW6OCWvm?{XkE+R9bqJF`UCM38>_Pcc?s64!Su}ef4tD zVQs*#leC%}I?Rv3`j-1e7&MWJQce%Ew>dwlHl#wJ+4*iO`su93%9^efwGqkd$_-P~ zUf0I}R+?X7!Ara3$eoR$SiN}N2V!{%!PfuIy$xEaiRk;veJ1$d3RwA@bG=`ww$+N{ z2S{{me$>=W#U5uCzQ*S7V-Aps%eh}jYWX?`hD6NoaE7E=n3fBt8;hmZVz5nYb9*22 z#?yiLgR%~gdO9v?aMyQ7lGJ-t;KsIq=+^GTT1d5EicqD#q;|o*(F>srAR-!TNuB52 zd6V@@FuW-KV9=4cK)EQmh=BQt-kk<99%?do=2)K4_P0Oo2j3Fg-hydS`+tQ^Y9qp4 za&dA#Ft(YmOxImaLZQrlRoPIAdV7z+fP8dhl9!;md{!zBAxUpGH-8+D7Mm#nQQK(f^J?k=KED zBbi|(EFC3sNv9&{*O3KYU1{OB+*np8p3@6U6}r~A7CBoSBPeCVNXOcvsYIV6)9 zr}C**JL*>?+EM~(v2$-vRc<{g(~cOSXe=derHsqN0<~TN_Q7rB_=pEj2xjcQA3Qeu z-Vf6CKbCA;_iz>nY}EgR`Od4%J*}z7{P%(*``_E)6EB_`C&fCxvcUg(sNc!*+c+gIN zT|fKB$)~7rLpU3{AesCPWaHwRt|;U9i=p82!x_PVUCpAmO(6y2cQM^Rxbx{cq_q)j z9V(3fWoHoV@#p&lTp0ed_dGD1A;T0dS>r&ncYjERmujOv$Olw@iHNuXh9`wUZHYP! z%Ugd5KPXi?%skf|%0J{`G739DvkxneXo+I%n$E+5&tV)>83;eU5Lbv-) zcs4)Xx3$9Ajg&PdZ;!u5(0vt3|7dUjxwf_S?Rj^5ZEYcD`BzN>o08BH zgB0EYf!FU+&oxDzn>N@grcjBc=vg99#qITKO;Wa1E*F&OVV1mc}6@q>TN1u_pIzmB;BM_!1w znjv&jbO3$lRvqt%{?XR>XWdYD=O?WkS13wV%&_Dy5h@trtO8u^JNHHj9dpQa8Tec& z&OFOoUckLiILQ>D7<%-QZ$?B^U&LmgIp0mb@bylCYG~DdLgCZqztSuFo-;;ub5G1R zT_^>SP8YCgF3h{wGEBs=uaxvXkL$+oVc67-vAZtGhM~;%Djpx6L|!o=YdOTNjIG}+ zj7|x-WzhZVt+x3`-;S+#r;p>UZ}gw_eqX->4CgSM-x&=7YnX{mUQQ;lF~&(B5xuoF#4yeYf%yI7%Vf$cosHxU11%_Ljd9G0ZWXlO;}- z*wvK0UdXG$Z*_Qjq%lXI))9G;E>`Kt(B{x1ZB3;)(0{%YrkTu?P7+WPxb= z7&sYKp)h8h1EdgxUDpH;`_)?q>C1=hj`L%D!mnvQNT^b9f|_64zDF16fS(ykw0#nW zatxK2xa?~K*sl=O6-ePzJ|Sij4?2v!SQYC!Cm3E#Ko_{aezm@_j;oxs5rb$uA07k( z%b0pjgz=#?B{l3~;einzEM}<6O6mab+pG)F$a)@>#Cd7K+3U=Lw?6_dh~NDsTiA4_ zI3vaG)DL|sYz*cr7^2^qZA>HI&;2~nck6x~4mNEP4iD$D(t(|>%(t9>(r;KtDjBhV z$mE=QA*V6E-NxQ{v@38IS=r>sGpGR%TqS%<(ueD_gUQ2-Z_UW4ZC~cSPCk&U-T(`5gHvZgw4My9T*x%0M=opXNLX`ni*Dcz9x^I? zZj~41j_#LB<=mTHv&dif*g6_8ebIb;A9OwKrm7OC0Tg$DFJDwI>Dsd^o(Cyl*KAG> zzVPiwGcvl-yvuq$s1TM&mUAJs_o^FRyGsRpcv3~0zT-B-HS0WB-R@;M)c24CVMmb%oOwTEWA^N{uB4z}oBgV(+(d&ouw*FSD$0xSr;8+FJM-W<5|k66YBp^>YAf63J6Bp5Ggj`|obm z!4l(R&0vm{i%{c>>OnF45`0n9{iu@)<9TlHw#}S8m6yUyO#VwgXp&xY4*kl*>Z|rF>2HrZ=u&p_z$X&uD4?$HA-0IlnPHF_7C~|isAkqTd5C~(az4PG6<^? zMG^jq{-8ihr#Hkm9k?m5Q__JBT?s|s9`WugXTa-~39>n91y~9;aVd^UHTJ4xLiqZiK~x%?o7coT3PKk3e)$UUe1PE{y8nsy(7w@Xx?lCT>LB zmy?u?_cI3+k!>OSP>#E2a4;3;Tb}~+N4$jLt1Xp`EiX})d~?O`L#pk6JME^DMMyTBL%i2-K=^b5f}*tt7vA{gUPnqxYbyQG z)%N_izMc&~9=Q86BO{~YIqFGg=f&|G#vqXT40A!!W`I9JhQ>otd0>FoxqjWHoSB_# zc-5&f6fbS4748uSS>pQH$O;YOZ21yMo4R)ULyJ)QE`0T^x4;T z;}{NgwY)5TEeW}%j%f8Bu;E~dxQ~BZq~FE|%g6TK&>a$;+#g+Ohk@f5ZPlp?r7`P# zpyn9(%^M(a;fc8|Gfb%8CX7=2kk$r;{m_d=U?(Q3%8AUHv=L%x_S1tGEdpi{T3~;U zEgUvv0=cQf?YJIcT1KN5sPA~G?W@YckUsb%EK&*k>4Za5ao_O^a7}J3CRXy5hXXc`>4{4djKP}Y-+t%Nv8+>$ z*15L&kf)9Jbl+I)DzL zn)O34fL{uiQo_D_7L77t{^fWy_wWk?$B7gtV05528mT~fdq~X<;$bDa69WYSsK^XN zaJxsr<>#%Oz|VPk_k*=WEbIPNy?#yk)u7s@GAS-eZNh6O7571|6m z*K9^5H$A#kv?-*aFi58T?Z3>Wk2QL2QBkVXxSF48r%;_a`~epWNE-jR!_Vk*Gr5qk ziM9g8l%kqnLP<%=U80R4D@8+0NO~hfwrRu@J)b=J(|}SGmPqcuZ)gPpaZ3C% z_Z=TQ@V+518kzN$2Nrx#Kr~s*)&Iza3URUXFQ;r_li8MZ)2YHEWnKAu0DAFI?C=`? z?OWKV#umc1r4{cH+`BP#jj&FrdFcQkEYZe3OOR1CTnvmz()d`<11zYkP*%eO9E?5H zoxUN$2~BPTTu|8SO&ri11KBvd&d|0gZAp(hS7Gdk{JyXJ+Wqs{tL#o+R?mKMFuGC} z!|oRHe)nRreM06_W2q`;&dmnwQ&1B^6FA64ssrK#ITAsK?_gZsnCU*$Ml_%cHqNR& zxet_KHvvdZ3m2W5mXwy=J1cp6HPF*DS)nTm=!WhNHC4K<^H{Y*Lx1#sh6_2ruiJ>n>qUS zz2$G5pe(DYf)*@5VO{m^}QtuNw|1lXCmj@#xmW|$dM2bFC*4Pz2Nt#aY!=4R5&S{`}80ZyZiCg?crVPn5$-!#w-*jn*D z!x(W4F9(o=gCm4!@ZtSDfW?2`+VF824!Q^91XWxiDmYOs^9Kh#k`@e=T)^hM0R6K@ z#)ns`uxZ9$xcjVJ;Q4Pn1Ypn44%vNoY^W`p@~gwa!6ER`qqkaUc4U#gK2R0*ZP}C; zL{!_bj}JjZL3_U%uP;c30wzAH$A7{N#+xkQ)X~VGz+S<6uobF|u#8_+O=khVS2&$f znVejvUv;A{O{(a&+RUhDYJk18J{T!_aIwLG&;nn_5RxCos(l1zD(R$%fQ8_oX)#CV zVm81_Mf$d7;6ev!!LJpxFZ63a097mi$i_iWgh8rgT5VnO<_4o6+q0OxN)O+F_`^EaCm%zklnZ7+>R2BHo1_ui+zt zZ@iy9dsZ$q3T#>=U+E>CO8muReerZAb@U4E6x`JJk;CBCSJs(&{K@K#1@lc7z^lv9 z+Ip5SE-p@L_^GsXy@>D3_?P^lML3;aGu~>m5v!r{+Ipj`7vk|-s)KXCa!(P#xBWLh zJXC7ww`;rfk5Hmz$F*f!)=wm#&%%~JqVaqx@cJ1WQhT=Ln2V&25KfT|n zm2LPUI+ZzLPS-htK<=ADc?QM5&GfS(+~6P6ONvRQb|0ES(&(lR730uM4{jl`FWjI2 zKKBRUq);|>)EE}h(SCjWz4q(t1OC+jyFSkp@c$9@RZ(qqZMR7XT3m~}LxC6fK+)n* zid!jGT#7@2w@_S*Qz&l5T}y#d+=CZ)*8n;B{+n}=tG&k_D`Tzo=zQjEP@(O>*vEgq z)&gNc=C>a`e8?^yRIslQ_+|YZGR!9VOIw8nm;?yi z8-D)H#L|oM&(>%0bVx_#(R=%>APWbQ{{_W=Fhw-zJDr*MPv87#mO*CGv{AA+-A@U1 zJS4`-GZSmSB>oqZ69{qaMOb|CE6W$o|Dys3zZ-c;p-I*?vyTt%IQ5Dtu)<{0B|PY9CECGwv($h z6`bKfeQji<1G3&Ex0N6yzteHc1^g{TKi>kr+}uoFGbZeyjPcelldb8lT9GdMn|x(geypl(YH z`1drJ4F%|WNm&43!HLmemMGswE*us;Dig?niU_^Y4;0lQ0;m%F;0kb9F6Mh zKN!+M4_@1+cvx8ZD9nmlzk?61p!F_7bYPyQG-jxP>1fpRqM_p1KY;KZ7=bhE!0bSj(f(Zx+#+mpqx+=6@S4h_$ zU*UynpDh?L+jlqZtw`FxfU!P(3#s~?0K>#MagfIS%H=Mt2MpwbZDD<5$%o5^uTh~7 zDZ=_`kfuI*esG6FQvjFZiPUZA1l^8b%X31QGw%36=iwT=oW$J5xN2c_+LaMuxdHP0{-=o zgP!-_aju>zN)?i?GkDLwSD-&%TvWMHtdR{={+^ESkOCY@<9!i`%9GG6pUggINB$F8 zj{5f7K*V4EOEg%_uk$Ofl>RF6H%3xZIEz6;@I%WI1mFHGg?0bSjx=qeyMTZIWzhLZ z*w3%4^>$j}2d+ch^hq4B_oe+=Zzcb;{hQJ2kXO^D+|%W?OHTH4I75PsYTn8W(z51$ zWNY;u`)=@E9{bJH<~`rnpPUpgD(lgZLfz2ome$YE0WPpi^5#<&i`*_xSPjyOC>W_V zl7FRrSosf}^+sxE&*c&|kR<^^?)k~Kjbu0RBkiPC17^eHS{-JUtX+GrFNV^>z;0p4 z%(o^ICn9jCiaXJBR}&*$6>|wikQ*Jj2QP#8Tg8<8rl|9{hg!XL3uz#P|1CPCh-O}c zN_C11jwXk~HV_YSbCb2r)dFQJEAVeTRZw$aJ-7IPz#q-szv}6i#kEdjcc!L({Wrhb z;E`2tz<*L9c{eYM&4CWn9Ag&2SQqOyE>V)(sKJ#Bep-S2aCTef>TyVk8j0m3P^{8{ z`Fm|S;6A$=zJW7$UOR|f&HPld;$9Wnk@OP%-2Agx7vEJh=C^Y=_$w0&MEb6K7>vX! zO7FBq_S~9eVI4CAm&K7h39CYcx?X2(e9=N*H{V2Uf{;!cZO%OMOML2Hf9zZxr)ll^ zIdM-=`k+0A-ok~11XBkyL!Y?}udBZ>fTpZBIvTV6;LH-(#D!gHi?}sIgHX|31dq+cA8SSFbQ&jsD^z!FyE|=x zcU4)k)35YoGw;dz-!E~ZI9Hm=yoQ~(w*GQDxFZ;^21fnm7Mtvl|CSrKKV843rjj*D4RFZEScC6tk7Oh&#pNc)4o2H(t z(ldE!D(0CM4S*dB0;Zr!wRFRq!wZP{F9SL(#0)~h`nV@^c>PZ}+UlOeMN5f&Yr&hS z)bGDB*m^265^zvP=T2G8c-g^#d$pXci-Clb;^?F!`Gr+_3R>3 z0<%*4GYGQ|M4ue9P-uRpybUb}?gLX=S`X?{1XvH3m_?{VjPBC)SMs~6ztppzg=0xb z>S}4-@<=H)^=6N&y#DeFyOVIp+C(d*KZ;=U5lslED1-yb2h;W+%@qD)Lyh(tJ`N{} z@6~!--TB?+xr-0ib%{qlvFsd15%=V__8TbLTJ0>ze-6e5*3O5ZB%!nQ81+IPZGjM; zrLLd=v7%x9fXDNfcG31x`e+ z`7+3~-TT;VN1%~i^YYs`{m@f)75I?;mCGg1?@SQjzE5^n6Z`jZ9pjB~nDj~?!w)_1 zFKHUv6AcvDt`cBg>F)L<+Vo{A_<1aBjspS-&|s7wNBZG*JbSPLU(Rs9?){uHXD2lV zUCx>hU&_bfqZ%6ZaPE=)c!vHWWIcNJX^1)vyIIpP9Ib`0A+8(b@r-Uqka=0?YRrmV zW4uDpY0txKBqLGb{cF4uFS2ufZ^AZ;I?k!W!avJlb_*^i>1KYJ)YV zl%-2oXREWb*~J~JqwA-RuS{((b^L5LsvA)ttErjLqKBDWiIEZ`CZz3ap~W~)G`F2c zEuW5YP!tL!lrwgE=MX`&n_hTaatpLML2gmnw`0TW**mVL)C$(a*I&;Vy$MUVcD`l|TnfpH48MQmVC)T7CLA3Ld)d{31&h z8vGJgA-Olp46?enyI~o_)Xo=mWkFNcU0h>*Kv+tZ?QIk;B}#D2xUd3H zy?$0Cf%jGKG55R5mJ&Q577osvh%3(R1uiZwz0cAOPeZ*=FF*^9o5|q|*9sK8?Y zJPbKvmmBk?2?z>?Fyt+~UYfW>s(}yhFVm$N80fy6d$dG_Lm2j!O>R$1P8}~I}ONSae8Spl@@w4?;C@<`430zxfKwk)T!%rEgo12>>5U|TFjffbq z_7O}T8Z7j0&ZhtOM5t0@s=;N%S%{yHei9N|GEPtV?Pn}u2d>ID-0+4@29@-$19o6B z{evFPbF3jF{;yVqs}{~o(TY>Pzn@akR-c$y4Uw14c91c8=pzy4El;=0Q@J6ls-aLd zOaYc)30YBonGlz4_Z+3heqS}vbDu&LvfKOkHGTKu%dG{So8%W~W}ijL@?%cK?Q-}} zPkW!Fn#ss{A~_yPfJ{Tr>>yzS4bQnh>GIvMa$n z?SA`hSJugt(w41sSYe1e^1_OafV9f4k+^3 z+Q{}@C@xNXY9fGrTooRQY#?;pPeT9wm~KaTe(NF>gM(c9kNdgl$JU=3v*h&&F6}nV zqN2dFHi0}ER9|bowAMBZ+BBB)FM~TqSY;{+Y^wafT$R0%4^wn8yg6y@V9Kx`Tz#1L z;<02|fc*OO7(O%7pVJk%AoaC!J_TGla!+wt^+T))zDF^l4*obD@(}|MN1qsQ21nVM z1g6MzpW?a|_9#nb1^`u{sf!=NnH5-?DJ!dz+?2aQaq8$da(nvA{1mAhxz?y1s9J8k zCwIQW4890L+-zG9;u*fP988XQK@kaHY(dpER?kXHIfjRm*?*du|4&;Yth`|F9wjxF&a!f&)6ch#9#G0bv({_r+xc-uIlcEhy!@< z>Cmeka$F?T+F=34PGa(D5szrF*XxnyUN-aec6N5LDu9{72@ch@(|0F6E(0Is0dFG; zQ`33$2o-W4s!e#P*B##gYMBY)OjP&1gIII!p?u)eziZ*Ua`)H-HV-R`eD%HE9+FJ1-|VFk=B{tenT;MM)MnJ4|5{WHLO>K-#hjPMns|JLmGBjVa!GvsG=h$CC} zJLaU}*Hm9LDkF4OEOZ^D6iQi~oJ-4@MzY~Nsciha=zxUPeDL8UQ=@apIdbo#Z5o~A zg6daMEh;6c9E{^KOz+kcdsg)@ux<&~8I zN1Mi>2r0VtRKK}XpT^c-F*{zZuzEz@i+~6N-cuw&z#5QNKc`8SMLrx%Y|PL(Aty0K zs-r*-{#l7meZ&>ba8iwac-xxKP|870Xr!IE8la`}?J6N0;*V8EsH+NM#QxCtBs*>s ze7^HvvSf1j<=QFDn&)craL!s#a;tOhZq>YQj>~~hGeO`}gh;cZjd?&Ok)Coz_C>SE=KB;mt08JEn)zlnb!a478EQYX^Br=A^I(qqctma!qx(s~s?nPGLpdZbXlPaW`-bW6jWk_ZdH zY_G1rdITl^>J^{pu{IQNyfNCoZ|p-rGxECvZ>aG;OHzaK4^03NpFrxre)6NHi?ahG zeX%+)L%r!Cc4^D@-2By)^tIyD>K1{CFIeN~o)Kj%K$5}5BO1}=PlfM#PebP=29~D> zJ9n-r&BnSU+x3nlYrLbM=GP<#&9o-X>{*DDfm+WGs+**{^YVB~q+ek@66Cf|VT?5AHJ7ltq_QY`1sOe6Zxe&mU|n$Mv0OQ%}N z%YXy7D?S#+8zfrU`J>U;Bs@%j7or%ERZ@fnr}ww|KQy(1xU0m8tK!v1aW+ql5ovAr z(a%>$@+ongsShY05cB&gPpDYFXS0d`7grt4P%7f_p3rxb*odNsX&ptBn%AdGF3%Rq zpzzaB=^WkEE*cQn>Q&~&MrUTIy?%eGRq>SXW8&l}03CZ}Zfb8yF?K9}d7hP}=ziE4GQJlapZe z5k@~boehVb+b>Ux+X^UtopY-YqBT30+C~aODb}A#poB6WFb44M3ZDo-4${&l2H@ZS zNAC7!czBrD<`~{ct_WIpPvvMRU;+5$92fb6YF9RJG zR#%Ueu>)M6T}kH)T72EnK(*5>K*IYcgI96gl3xzxgO+}@v$=sIRXNV#*yzo0^*&T)BsE?Q7MXYu?R+)!XO8>2xi; zU7lBE%<~@D13)T#YD|FU+SHXWAzrD z`y3nc4@yDSnx@PTmVc7PxKlgjNf*Yl0rNHB#kLO-U8o8rYsR#FpEVQ+*j8QZ9cQ%XN9X?% z0_F<0!WWdZ=+>l_gDR2FUh@jEZ!5n}_L~ONiuO4N=-1V{wvJ_-WKS7N_iVSkv%|do zggoihsSZ$>QK@1NcI8g~MX*MAo3{ODuA~3d9l4+A-jt<9?>?kMBT0@lcLf0x9QniX za;G^rokjQGuxr3oYt66M!$NTPJsEqX_>%tfrE|TwO*i-Fe5Z@0YnRlLgU)IYg4UB05)3{_hZO%xmyn7d zTxd)AO1sZJdD?NQx#u}9y&Ls1;7YZUOc=OnW~Nm){levfsR%?vLKH&H%8DJ01^FqV zSnj;kv;c z|JKFK1jy_9M-xqRNqs_RPNudi9u;&R>ACPv{Ox_?axBKFnYFpZ{BuXXUc*tysy%(- zk#dbXkQin0E|b7#jZuZkTcVal9kw+FvJS7Ra}3P=A{-By!C0(nm;`iN-sFv08bGdD z@6bc zdi^(+wZ5wp0#-%$!FRs+%axj=UnT73OX3dsq#kY+0yo}fG69@e{VOnf0)TNkLC9cD z#I}G_IM{SVnTl|p?&LjmtbeqE6wIL4TI|#r)KH7*VGtpdV-K8j9C?`OE z^dfhR$^?)Zq~yR-E`{$Rocp8>b*3hHd2@53Sn%YSBj4IY(_;15h!Se^ zUt9raZ^m1KA7S`E$*irjw0x|=ZNaOtCqP3gg7 zCYgv6p!;@_t;YL7{%_!P^>PFhRGV% zLcaGfv+3NNEHdXr$E9)HNls~<9UO#R6L(2r2Y%4*2JFkDUOW$9R?W}7=zHP*dl83n zXk3laL>a#(cU79^Fqs7`CQ6~~a~iCx01C~|`s4pPo}431&KQ`E*VsP|O=s4Ybm^x?I8AUa{ z#E1T-I1l(YLQlmWPERDIbq7YpMl9Zr8;5tRTy)~vw3h5~JO|d{`>Qh!Iw(q#=K3*b z={z8TA-)V5h)k)C+IU~U0N^93wDXJS)((N1ua)RPvQ=POcEG8?H+mvYvbpX)^kM2C zIzNHM;hk#kHz3$yn-VF0Vb{6<4e}xL%Rgwt?8n|e`y;dWdM9za57uT!f+Ta^Dmq;j z7gqh7d4lER7{EF1*Ptuo^}Hp*ftf56FAUlCa5U4p?hN)US}heZf9hHAPLO(h$3i4L zQ}AlOF<;Lo7?bh5D7S$+8`kF7&sRC-Md<+AJA3K~5<|QJQ5a()d@ECr_*Uc&) z`J5%spA2ZBGQNd*2H;yfkR{dQ3j`N&z9Jyp81H!+SbCnr>{GC5DK_U>iUo++%@4n= zcE3?`Q0-<+{e8$9%P95QWzLTlAH2F+ z7FsF;qHtp~WVUsrPkzEL>@41pBgoqBR!f>jOkG&9?c>sZWndzux}}s4F4Y2i0@81} z>WK+QYqovbzFcONOLTwqIOl6U^I5Out_}Kz-fau;=iN=27CE#o!3K(@yX|4$Bd zQ>xnY6YpjiYVUZBQt>nT2so`(w*Ya%jw|)#0wKTm zynrmNVf&CF$I{mmxeCpqD^p?}jABY*jOU0TPZq#d(HjN63>lHr?XmNpnDB6qb`;qzkxye&=h(dEFOrt=uw-xG~CeY=y#v6ZVWB32L% z1;lMNL0it5&Jt|!U{Z>PI^f5|GLig4=#vJ#&OxvL)i@pe7q`uX_&2|e>-T7sajIOTT6C%#IOtgDf z8~wee@mPbZ)iIPp97`&IrgK3KcEDu^*O;|1z|zgj%d5DE7(^bbn2Pyx!2IV#EeV;#zp&jzvmgE1ZUfw=b5SArat{C4zV;GKrPzkLC#yB`rYdi3MkUO?mM5VM#M z@y{IN5=HkypBZXp2C@E(5QPkHtrgh$Zk%;JFPAvgdVXSWZ>Lg_b_;s@QYnD)L)Po| zpnO3bm8;I(ovwfEJ%Q($sYG|sC->E)^GBVMJ^nU-(tVCa45|7ttziD;1@eYhH_e|U zjg&2uz_@o|;3G3f=;PJoO)FwCo=x2u`U{dZA?_o2d~(9)?5)SZ zo?rrGu3LnG?Fj+AXEhitGN+$CwU{{M8n6IABp3|ksDf6T8U`ig#y^L+kbyb$*jqjT zGiHPt00182b)*RKne}U8!ny*Jwzg@4MyaXJHim_#=pXCdFLRgQ&(l$CdFAHbn(lV; z*SaG2H1TO!%G*7gg}j!^cLM2m<8nNI-IV0{>W;&EbjMed1jsldTTgsK!L=NQFevvJ z-?=;)(`u^)(VPq~jiN=!2yXWcJ@eDNs&nj;J z=IFsA{9>M#0Ps!&PH2_v8aZ8hIg@p6EH$~);56+yxAUX^ryNKq^;ojNAT<}tde;mC zPmJU-v|VYludGS)c|)@Zl_(l|y6Z?1D2cU)DFI;*{%^4nBqyGoLl5X`J>A&E2_x3S zZMbw$4wIULwd_w7L+MY*60L?=zNfPjtZGiB2H28DC=};43mLN#O{!eLcy8kFs}MIp z=ropS>?Lka$XHDA0L7H|mc#Uj zmQFIvA|bEqk=qNZswyCk#WON8f*mH)1}I%izznG}Bnn054Y( z7|PqxoaJXCbwc442GgyvIPC=QY1)*-_|Des1(>hMENp9Xm8fO|Xl z|FJfA~f{_ShckxY?i#$lwD0Q)-j{yX^(9#5mO zerB$Ss!Ag1DDqZce3D!6;2rfum}#X&hwr&6zNUh2o=&5-J(k1|)-W;jMBnc7-_*Ts zGT@kNFjoU}Lv2OCcqZctA|^1XKdlk(0H7d7PgJcURS}P^*tT?D&!--{C9@dTPDZT_ zGee5XYerw?Wz9!=dy_fK_BT1-^ERdj{7?r(UTbxH+0}M&sg{N4v%oo&Gxn6ozMf*q z62mgHkNQ$pU1pa>gRb&@=ZG?nR=>MW2kZf|`c0rtK5TALuL1DD2Um-gn{^VXLr~v* zy*`Ujv}{@F3$ZRojis;>{Ki}5_6Y`W9NjRe264UyKnNwxg{@5tvkgJ2tpw(veq5w+ zRAJx(_KZf37G;wA9Ls2c+wnGbvS%xw^F*3BanFg+8^T|VY8-DrRC{Jipns-Q!#k@{ z1kL1kNB)_A=ldLiB8olxH%}wRvnFUpn{$DE5#in73Joh?o|~Rl?xL@GWk&bvhA(t8 zTBK10a@pH`bHD95Pm%Fu9AkNK(#<^bOt{Bi=6m^KTCN4)cDC*o`ftX`DodW7F0(cK z?0V{l8nZn;B@O%foqFf!J-?%OA20EGd!C4}3cz#HQR34~P60)x-#!nI%?2NEFJkEC zhw=IvF7^Uyjg^O!H5#A{&0mK(vJT2l^B|-#3IyfELw$`qO?Q$z+}&u^+G+mc(J>Ja zqmTDIOWbYMA8@u{k){gp->N?(h@21a>Cc%{2^q!nU3l#VWS?=(66Vej5yRrK8A*HK z3%QAhUKbL#1aw{Xr;@mr^#)2it-@bC*&A1?k{_@ zNs7|QqVRCrQQ<+p(oLWFG$KbPj+qVWboX>PC}oNjHdGhcj_hvtu9K%cE#j7;ju8kB z=ZWH4f`;=L+=WD?5Y#wGYqB}2Uj|hGdZc*2oMliY?C(n<37dQtWV5>1QeeK*B16+o z>HKp~d8l$wNxCDNensPEwvl6Mf*e?yt&sc<*ycrlPHqoi{jV;c1#pBs6}4)^T`ycS zg%J0I*m`Jo=!%(92=cHLRSBzL!dI+0pi>ymvm^joaDQoV*{yuQf_`1{*T(fcfYA78 zwQ*vw2dwEHssHQuNWS#1`tG-MWYZtcpuEyyA}xH*f4~q-prM6@Ma$Aa@<7ke=o8cZ zj$HMvA9>c$hlfMKXLUn2JA!=z(E39_=k2@Q>l9qL$!*fdx(g~&G(l-?LO|dg)^>pK zZe1bp%5@g}Xk)AU>5bBdVrPOc-6i`Skyr=@faGE4&C1b%wn~sWs>LG?VBB;KdG1*C zj_}L%HkcXA3)O@ig6+HS9%q&_i|Pv&tua;7caXeBUSjp(fE1qltrVswcHISKxDu>| z?5sc`XTHB6;H^(H80p9AVz0ZeQ#kJ#Nrvd#fx%#MP z26LYbR=?mbT@E2v2hxDKZ|bWK1o|9!Sk*j(4(%8h+i!(|VU8Ei0?K?hT1HKG{6i%b zu7YsCqkP<=<*pxdWOJn&RJ2u3y1~SR&Mqj(HZ7ukNI>0~h}| zqb5k^Gy1*+2!^xN{=6LdGQ@x)4O(@)^%Wt3Y1Bpg6@LP2Cp{hbAA+@N1Gnq}QrQ z``bPVi2jsyPT?`{s6sKC(}oAN52pJw<7k(F&$?;jvE@H%4ee%y$&cG^N4OJa_{I~3 z6lKS3)CAYdrtL#wn!yoe(NM=DdJ_@I!Y+#>`6eejh`JKc`uLuO+rYQECXGV^gQczA zCv@;RDH<$9`M7&^l&Y20*CksWz~W-Y=B5>R^s}DDfSmGOGGJ@>f}KnNQPw9@2>7$9 zC*uC5=?ur12~10){#{IFe#Uv2I9uATS^ESz8t!6FFjbrc(0-LC!+m@zUJ1mWNGg8> z?L*cQm!lAWL^$4n5|(~mO9KjoK~lsj?~dxUnqEGh`V6&Bti7_(c?_Tx!NdVU#BV3% zK|Vz%cc`UB-BL522Apgv5-SqIHse+T6KX7Uv_NeLsy}^9S7~szI|5x86#iYq=A0HD z;v#|%uFxq40RgLk^}oGW+hWhvbMwyGOo}nuz-KE*pD=kHWl5B@mTLk|!?;YL0EoXf zZ*X6xQ!1&?K-`wJ%gu-7R`Am!N~WsKTS>sJ32>@Sb~n!kV7gYepBq}$dfb4W(f#;Z zr{5tWnhVQHhF&I=bT~{G>jeh~t2XotF%(@ypg~Ih(|-Z(t-<%$ra%47RTw|85~PfU zn8);{#E1{7QU~owXYoWPTkRQ$tyU``=J>s2U&t93(h&(rTX>o{QfFoVeKy0{e(HMU z_`~n2lr)KmPo8s5ne2Go2hY33I?ELg(tWa1QkW$0Pby2w#x8s-#_^aa;Y-t~{LM6A z^C0!m;i==*l+s7p)8$T+CY~SXN-8~x#}x`1Fu$juh|cVrWV-UbZ)@tr+Qj1_R&^g? zP-o%=;XJ3?}Kx-&I7a*4&*wlXAik{x;_~<*s*am zpwK1PO6AoF(q~3a4pfhh$uQ-~!My*w>>*Hr^IPAbrSS$&B3+Un4|`uMtuP&4jW~3- zvgF^T;66i{@0y<)0mBWy}*MEXa zz@)u!L1oZyE)_tG8hyaRyS0)Mjl1poIQ_IR=pi!@9@aYZJqN$}Jj(>Fhb`V`cxPR} z%7oObqPLrs#d7NDmGTTrK6%97Z1CT1vZj7bS1@uoqoeaR`m->K$^_|>1Ve#r7|-6} zRZ~enWF&%3Mb)#4MHxgjrU>6Yt74F5xzV2lIA85;+B=IuoYywaYj#TYeCYyDZ#}hm z;qGbE(Am@bj*hyc##4e{SIS2K`PHg@+%t6o0OXGJ){?M4@=Fff11>!Wncx(+2ahsoqCu=xI` z*sVtkJ`)G}=tcv5z?BC4Eg_&uE49xbkBkMD2xALDE=186R$+i)9#g}gBzoI*^ z;!{R5zM1OjBo04N74N8W$(j7~Qo1aEfs&~#md#l`yWea#bYA2Cd!Kh*2Jy^O1Ksm7 z%2_>ke^3(Zw$6yRBV@*0)+)6!Y>p3KnMDDpgWRY-D(>RcHJ-DCF zE{>=3FkTS9-El&GAz_c3_?Gy0LL}%VHUqZ30LmkP8a$t?*ny)LkC(035DK0=pHmsp zMO&kf-`$j6IKO0W2x(Y(OPqgv-z-C1>u$6wR!;mV`vCJh)7l`l0C{gb)$npfi{?A1 z=%wV|{*wu-u#X`^S0b-u0m9cU5RbXLo|7p!I)q3wQ!^+t;Bowr| zRJH{yAsHdZ-@`wfBLDvFYx|+re@OUe$GF_;Ps&q+)mT?Qi3O4X80a};^)R28*`!Il zj*xMU!+7ZV)!|4j681MG2YtC4X1?xsC#5QEAEcPnBV5k6MxbuOj=d-RS_4#ibku*7 zdvuNpSX}gKHoF?EeoLwLEP;M02Lw=m0Of4Lt)5O(Xnavl>^A)Cspp0=Pps;Ij%$1(SFsL~JAd zb=Sgf9;z(fOwTosGu~|kg2?gq$b(dV>|8f;b3EtgbUEb&v2;%D2|}yi*9YM?Z~HH$ zR?P2u)gdwoY{`K6Zkixf)Ysn2beqmNYTlXu9?WxhmcFau75yiTdJGn8?V_BStO8~b z$iLCb+OZ3u96GxAcm-^fMl{Wj7~ppkuTEVZUrz15^7uSW=@%^|_U=0ZuLY=FdCl3A@!V4d@bismmz z?SJivR|jJIp3KjN-Id*v?;I`o{wE_MqWB+g_Vc%#pe;zg)j#R&_p%FjihhA(Jm$U$ zu+AT;*WlhL{J@eh`vgF8BJ6sN>9{0*)JpiyRR((k13Ak6zvG_R^&m8k$kB#3@zeeb z9QmL7vc$V9af{{yB622}L=z8D#c9IzZi`I^S<`=?<>HxKUl=aX*kUZ|%EB)CNb z*Eyc*;N2gNFrr6SgHWVxGQjz)hL_{+;??tQ_xx-@ML6Jw1^n1KwkSRZ6L|RUn4pcO z(sRwK_O3u>*l0w?tEPV2N2HH4tl zN`T5P2>{5C9DNUAZPs(wj63y|-RF7sJVn*d%O4Zn4^gpYwop z@F`7ZmVNZ#xndgnz=B78yAZ%%S)9=Z(4!rTWI(Kl%?tAvD1*-*pEuC)T{1zH^=y}_ zTK|RfRFfv_XYk(-$ly>_#}u@x1fO7&b8A!6Y`EGWDILh4OY)(%iah|~*+Y?9(;9pF z%_(QhVqM*jyFjhlr|0-$cy-Pdy|Py=*qLD z&k=yo3d(2kxyZOU!o*lv7fJOfUHDJ<4pqeedWT%)VW9SM_1n)+v`Lo^_!dl0qB(2j zBaF?DyZ_uRI=Q0<@V|MgK|EicwOu-Fe2QTBZy^2O!BkS;VVBuUom=g0?)S7eR`Yqc zvs-&tHI6=3-)l^NE$RLNzAtDl-je$MzJ$}DbBOsemSE?)A0kxNIp zcYoe%5qhrf$6CLtLKjU0Ry_uH&y0>N=^}=!t8g^EQ0W2esfPNi zkvi%@sESQKt}Tc=2+mkep1WV(AM1*0(dUp67kWCRFRUDz6`|+I>(uPOUvn|3 zDKHUMppUM?%xEcEaR8dfi?pAQrLfO5xYn$j>8tg>WQ1m;fRfM7lC8iAzDROoz~hVj7|jM@{RRh_DNoH^ zLF#;&Z|hwG1DU>82zqm(yUpXpKAu_D|QEFlc zGIRP;ZQl9dEOSth*=J=H3buzKcai|8opvI&B)cnt@sIUiewsv?pEDc65&}#9H&+S1;nBi+sB>?&FvCEHroR6KEq7CtkX&Drx_OZYu z-r`k3lPc!V6fg^o&(JggiJE0Unkd3R@~VQw2CY6T!L>Y@fK=<j5N1|Kg7FG59T^yiBA!F$oa*mpEKA#SAD7ViMh zIQAS^eey+*SM&UZieQ<4wfv7f?-}t^Nkm#>IR(J|8ja)R1*jp~5cBMV7qu4hsNLHP zFr9vj;Mk(Yc0)>ERbo%%5v+U`jweYFzP{uC5j7Y(xOKC+d0EY%G@6(ZM@ySXB?Jt& zyjXmd+fO3d<{NpqykuO*=P?qMf9wG4yjEFsAo{@zFFIBlcO9HV^N?)3Cj|)V8Wly) zr=E!nZhfjl{MVU0)+s=}*R!sgKc)hh4w?BQ4*cl|P5!=$FpLhgq5D7c^KCh*$v(O1 zQ|u6t)Q5>tJB(=mX0)wAInUC-AjhncOVdKf$fCUtgyr{Bgwr859te9OJ!mzMLC)6?0`!q@%$UQMxG6dcmN6E3OlK(;?*LYZf@n72=k*}>!;Ui2N zX-!%^-Ij4?l=|4uCQ0B9*9N{GB$Aa8i%M{LTlDI+MHQGGwZ-PX4J&h$dT^KRE6Ww6 z0OLB1z|hmKT+p(?(E6EHYb^M28@N=JJh0POFeJk=JT_N zz?}MKpnrXJg#l1#YGT$im{KMqk`hm=VSF(Ao#SH?DWCyHA~Niz*j`<%!U)$39S)BB zK8tllRLv!~5dUX>Ir5gAOstUMr$Zl+Z_uHWbGjUJ{!gyh@Zd1vr_7Ie{n88dFVVE) z7)*_Dt0Lw$Zgn4LDB7+vEM^9#e|*_l3>w07czqhCLK9&thc|JkKsQB|sSdz$ zg7C8e_IN^0LX|d_G2{q5hIAOQ(UX|CH`+2BI!Aq){?Vw z^Q2?nm%0hCN-}s9eXbI{BeaCdc4$yEvv;TPNN6)=v^D+P$sZkUT|T9G%^{ry497 z(b3~=){bnZgUS+`5mv>6a!lhHcq?9V>B#j&gR+<7e<3_YazZKxUMLWkx~up_uHBCLra1U_oh*?&H%spChe% zz2_9!ZLL-NZ1 z{OoowByp~S=%j*i-BrC6BYfRXegDvz?5z3cc{2a~4DkT`^+HLr@GmR?l%PSAIi6^+ z1QUC77-Y8=G6$g7#EzUZN-+NbbAc4~4!*aH^ni#;>Qn8yj*H`3?u?a#lcj-Jl4ta=wXN zOZuL6=rxZ9zN-wVWl$`^Rj{=22r#o#JI0h~@d6GZfehVgW!kY0`N_(xpL>xs^Z$>i zvkq&*jo$t?MmI=zgMvs)gS4d5jg%-N-LcW#ND4zK3F$_v32AU(ucW=S#n@3xH+Us zT{o;PSbqDkFcEOPvNY1&3TZrinFLJ*BlE(SaS~lw5tM%r$>2vW$PnzJ=vRJy>6|s- z-cM+v0g7cJ;&$$%ATB+7>v&YN8WNQDnY{9I5JZ2qNdYkSIoJFs5=fEPM?p?Vr#&=x za9b50xZ=U{fI*X$adxCX7wju8KKRP2Z@(D|Xaxo*93&-m;mgW0VO%LFIbW$)5j^O8 zSQV)~qG*Ck5w4m43kfQu8F8G(xy{pCQvhU^g4X2c7ghIp+qq49%7Ui+AM%r0eG49S zOY>`YVQD|bJoP|7aP|Zi6g189GLTClmo)wLUoyA$HhMkCs;d4o%7@04EG%?#0!fsy zh#0X|l=q%vDW3*G-NhARJ+zC~1yno;CvYx)N`m8Y0`cE-t`3dc*#8H%L?4Vyxddn;7foa$>9{yTimQ2 zmgF_*z1D>%d*>ilDfYks3Qey~`P}4wBkl7aBK`4+e;E8@<9Qdf%>LHz_tXx3Uy2yo zEXq$RvK0a(4RB}CH=^v2(6lrqA;WD8`O`N9dZne;-O&e!!=E=uQVIlL=V>WoD3jNg z5TCV2q50GW%YEDFLdW)Z&A`r^4PyJ8nO=M{@#DL>5+B0B#XsT?icNRYYPi27VpTG3 zn)2C-G^I{uu=ATzylO!OPXubhOrKYrLEhHN%0Us$D{Jzlslm<7ahX|xWucnsyH5VO z-&Rb=i_tQB{>g`{y;j`7l;^=9rE#f)3(a<{@}zJOXZ#ELK1HxFyQ!vXRgW z9NTOgI_3YGS2#Q$JG0zZrkW)R#~++4Fb@09S|D04h&|=*!hjEG-CC(2k%38--m&je zPET8J(Ms%8?D6I5G|+UQ{&0#%$nSQ?hw|a=4utZq6nYJ2`!6T|jmuI30TElVv899^ ziR0nDPb?I0hu1#>S9}_ z7#uioT)}%u&0j6Eg4CmD@bMxZppbm%!e=H$2Rz1#*3JHTC;0Tw8jWP_sBXYuXH{mF zl}q(!wMCn;re52Jn(C^^R{76E&mqe%0$B&{X+$D4 zJGRkVYdaS*zro>^g+~6)e9=Bz#K(02t!IbZVdA`BS%4@TWa2upGASo4aB(hQkd8O} zm(JdbDl4!qG`odRDD@5#8edt(2e`rR4y!`h1X$HkQ61GQqV+p0g^3&QD`%4T>O9SE=;)Y5DNY`R zLNz#S^goy`woi|VVloO14JC_-kzz4iPqt-sC0W~?aIm#HBpkmx??)coCvWZQ5)Z(f z4h$FUhd7vGJw+Dt_r<++Csa6izj^UQ)x_daXE~hF!Otwn+Gs{cv42p3nL>l{Fz-It zZL~rmm#n#WYpajBFkeh0If(^dwBd*)zjmGbiOibxDxjz3x?G<@oQ+tfVlp9r5jOYlo|^XvDJ>7;$@~Z|?a*yo(kHMN_8uE2tq$pc4tQq;Fps z8cJrB5HbQFJJ2A3@SEcoGohhXWsw*g`8mQodK{P~r3HF0%PRgrqzl1X)r)t&Pm0M( zIi0`uNNOeM@I)(vN#(JnELkZa-XsdUX_2JHNkQ$`B|_)3u5AN*had5_0y-4b(1Dq6O)X1Xe3!#Y{&!e$&--owu=|UTIs1>85qo?SogB)Zgqyh$IR=RkK@A4h>26wTf%MvxT}jD;^=Y~((C%0Anfg_ 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≺h6@XCwms$2bH-!c zB7|p+Ywwcv(&3#+x1?vs^;1)M)9GVMT2q-b(Z|P(FG}1+U7K3pSA%u@^Tz1n`YZ2s zrX9EzA+YLag+?8&MOr^(^Bcnd`+c=#rBPdkoZ81e#CJRS?wArB|Ki(k-gl(Ms&X+w z0YAh3f0-=ldhGns`Tk^En7w0JKQ1}L4tlF9Kfx}83_Ubax>F$M<U%HaX9oyqPT5t?@CkPyh+YyYRh-|G^+@ zbmq;j!9)p<{(zP)xTC`QQ9px}>uKbSR-k3lXhEUF)Kz-XRAy{c#=le|L1T`4W+ZRN zT-pcPRJLDX?`GX;$Q-^;ct&z%GPcQrC7T^7x9`}rXfinq59092k@c-jU#WVk&HT(9 zbNp-U=tWjnh+k!fu~%B-zx~R4;t7^>^)Gfn+=TPGL0dy(TfNCwbnbl0#hqe3j*Uh< z#KI!?UoDetTodNjQ`bCbFQedXadB~5gC*8v%JBa1go}%m{p|e8aQ&CSf)@@eaA`TN z0`2C;g`;_8NqIY#mpZ>lYYr}Hz%-QmTuTJXu|?gr+$V??c+gLLHdAehramGfB8i(b z5!sdg;nQjXqs%Ov;-K@0gqd!plD+h^0pmZNZe)l*v)~Wd*;prM4iI{U->%&99i9*@ zGXtqQ1TDIr@mf7Am!^YqA%W(BSXn|>!G~+E9yN72I|cjhnC9j$zBlj+HByIvih*re zdCrL>B(x5VY(o{>w@Y)=rDsg8_XQ5{Ur5^5f9)%}qZU$M;x?Pe0*l$ ze;wvzSq+!*utAiMhQkF>9=f`MdE9@xiEEDsUResL0*ss;Bc4s>e3=a2+cKQegdJkV zt~JDg@@50K#`Y=AUfE|l&+W~wRX*yK$bWXlDQMJ>?bytctWKO31d|Ey>=_k74Nd!6 z@E2E%uo94qIdMDVUs-flTOH~atxWqbcEn23vis!B#Q{c=xPS%q(5<=t{eG4x$$PP> z)LQc;7=#dzwOALdYdhe9CYc;)+97q}*lXEeQeeH5U(|7X!ZE;U(vcRpv1b1V%xQVk zB=ttRUHJj4bshBDGjcc8m84wI*u(X0=znbcDmCaKVKO4SY5B4AiW-LWOH_1;X_J0q zvI)7Ea}f{);G?b8ed0bELswRbqd36Gg;jKXNH)Fg-aoz*3@uR~m@pfz?uC3wC8dYsesblx$(V7ZKW<)M` z_=kfNwxN*`g_fRP)CEIiL`31%Xu-FzXFQ6EERWRHA7jE5{ZC*h5<7eQV)aC32w-9R zy&GI`p$yNTyWk*mq&kvE_ZM(mYuT5+qZy2TWyVpW1y~KBb<{Ixoszc*xgYwVGcOKf z_*kLho+SlkOd!d-tzdi~ifX;%==yy=#H7 z3XoqK=w7lNCnujTq+dD%s~26T)G?u+ZiFQmFlS8i7?VJS znSWbn@&#NNHc(`Iye`SBUj&WX83M5pC#fKM&H`UOTxb@KSfs&Sh$3al*NE#IyC-hn z3rh4fdhT%w0$}&`anf|Q;`DTY|17w7LrQ{5WaHal4t0k$^Ivutg#F{cV%F6U33CDE z^`wW=t9O9~3rcp<&yLg6Ip?TY;eyOge^0#b40rgwR1L*VZVr~K1Xw`K9q;4v!bfju*iM2~ zaY>m~LD9S;sIJ*Q`8~7^9wm;uzdmdqc4O2sg)ED6VQ`7yYcDEtayHPh)`3X$Ib4i9 zSnMKxnm;xzs90h}!mJDip*Rke>pEhVJGY-s@P7^&He1{9{y0;(p`NIG^*9+wa&>5a zI62Z4*)sb6A$~fuVklp&MG+(OmQL2}OGQ7yUNUde@%aB`izuALj9Vq%hjrJwJu3;q zyoTzsXybXz1OJ7g2oh$A{-3{^?L~;=v2F|zK&!;%ai&A)Vo>~zH;KuQbR>_3wei3L z2A33exnyA6unW0g(FfwKi*||cRLx4yvtxW!wC(R_>fScf!l<&%4*T~XTiZ99(}*s# z2mdeQ1eFXcqJAv%Jg`BXc^m>P1~wY$6u8x0;`mu-K+m5ygo+|rFc!n`$i%pR1n~&d1k805r7;C(>7%yjG8gEf*a{NkW?)B!W z!xOsGtFzck0u!_XB)ZaOWp?NW~T$`e{L5TfKB6T##j1o z+{Xp5b(W@_AWy3O3j($7Wuo-=1?NO?2Vr^D?~{pmkKbhh^#}}_jO_Xd(_lArALLbR z7&O?3p)9-O-v&R`?|-c8iu+H==}AYNgad$WfU*WTeJs;A98=I}R9{?tpHI-GgA^PV zwQd>Anfm0>t+)un$Z7L%4OWON>NvbaIA|rzVAc9BEk!|r{d>|nX3~uT@ARBJH09vI zg>NGMXE*9EMjr|vc!Jh@(gPchI=&B|f266n<@?4 zq&J(V%AWg$4?+DbR~SVV>$;3kHUHLRN{%m+`+d|>bKfNGGV@HsG(WVJ=`(&!@UF+Z z`RPC4`3R=AykmvC|KSN&yt^2f5$RJrZ#So=z&(?&)YcF=8Ice`vmZE?dkVt19>74? z_P;m?{We!XB__!=E*TMJGu}!UaMeSYtkMr%i zJUz!fWp&$`50vxTaktaC2rzN3ntMlUeV&2&iK6xo(iX<_-@cq&Lx+4jGd7L9(fvn^ z&VlQ+SFEFL+MpK)1dmtjmS6o^8?svXE0ao6?0aBP0Qov5Ao5CQ~TBJR#+ ztc?oGlnKTn32DO)R=V}efZ-e|VS033P0esrWXX21wh_SE7u3kP4?62UP>X`eB@N)N z<+R!gdIIdM$%RP(ig-a9YjP{{-VM>d!iW4PCx6yjA;R$j{gXB~P7L#~-K=!Nz`Glw zpS9IOcPOsQkGp(kawgBrk|-wnY7FoIrs2Wc&+!q8WZDiRpA&vfC%_;DtE*%}m9(u* z)E|2s;b91#cJC34c*!03`n0O6lM5%6h7;dqxG{+kuxA|M@Q) zDwmaT^DGAft{6eGq`Ne_iz&SI$wLN)z?)7IN)4s8e-28|^Wjp7lCBFkl%ZWr>PMbo zu{|l@`_~J)e3X1*l&ON;7Q7pjIgdRwCCE7*z(7U_Orm0q>DQoRVMV?}vsxsq z+7v1oW(YjaVW^3pS>FG~g~tA%DmbS=T}o&MM}i@LX=JR5A;{z9{&p&Y)?P)Q6()jL zCGziHxa-8S{f7f~xfXd09OqRfQ>XxqdYHzQcS+$7E`oqr8n0Q6*8uXlJJ}9dI6mOL znW<8DFr8NaeN^c%*kM6$`>zl8Cn!_EO`y*gSFWaT^sXAy+Y4W*UCh#ujA!i#zmNj* z>t|7)Ur?({=@{I8=iw_10{};qxLxI4Cd$37NhGj?0D*VQM?XVCOn+tMBmR!r2pj#< zzap-Y-bnoJ)|tTN`cHLl-sYx!$BMPcS}d&#njNr~0K?4?2(7JPDZ#q5nj zffb27rgU~RjEZ$zG`fGaK5x-jmDU_Iv)0wQkttyT6c6(e*QfaLV2ENUS`G>ArN#zg znSOewzN^tvLTzC}1R``{0n1%1h}8?ludQ;@4+JY#Pv5V8mxdVs7QN2kdKgleu!AkI ztios+$IqwL0H3{4{HMQru*_ak$WbRGCb@3u+syoa$#SVNnEA4|8HpTBsV1vn#xCH- z&3R7tokigmY^3YzD#@xap#0(V=||&8Zca{o+T?Kj84x!iU>36-_y~rBMogIO*YNXx z2&E%?EA{$GJjE%1(8oW|eC&B1lzgV*YK~G5l zso7Bj^1!aFL?zcMSC5@h<)<<)3~35R;6uJ~QtepCW3ZMa!s5@e6O?4_xBdHle`&y1rj_8w z?acGwCBnbhOMm^s2_5UDLF85fQ@&ID0QJ7tq|HKOt zISBUK1begJ{4PCR#8qp7GgVOz(N5HB=RA62wOu|sf(eUEG89AMau1Bao_mRg5aLYe z&1B}t=RpOi;fvL2;R0Qt{Iu(({SY}aMmt{qFaGlIq&w@>pZ>aiPKxb+6_P8YYS^rQ z((guoVg8lRmZavi8zf#aemwQ)Tj^>MKaty9{M))RAB(hbODU*#a37k2bZ zzTH3ZorrL9HQ*$#n{>G-~Nd>%tbKH7cz`9P`~fN`hX9KDeym%l-Z>W zeQqC8c$?(QL*IFo{ic1gx@3DR1fw*1Dri{PMQye&iM^vM19#bgBAc>Gfu#5EHFtlF zS~;Gbo%y5D=wUT%6g3qUnLrXJ1@KPb0{JF7w#%R_X20XqdC6*EXYRfbW`EO)+~5vx z6kkKEsgw%~$4jCqOiRJEg|_n@X@4=g2=fiLbs+TUs?Yy{6%jK<;QsfstfZJEs*C*2 z$Fpj<1RFLgJ5!;z-Z}#Ea&kKCQ&W`i&s%qACXGQEpd3vhTJoXy?h~?G()9Og@92_$ z6{$p5foGoDhpH;cBt^5U(+pseP@6_A}R+@HY2U#&ij4T$v6PK4Dbf2xc{C0(bc zq)fcTAOa{vPJc~)yn}0zPHNyOgIsm>v2{df1lO*pJQLnaG3|(kGtf3!CDcLdB0y!x zE&gZ?^BBz%cnG2CJL^m&wdN*>A^2+q3O(>-H$6@DIu54Slg*b$FAOAKyBht`a1j_fFNtqAdIt<|#@{Kjg zBQP>CZ2;jj^fDd?Ryf$7{S&4E+tE29-4b#6YgO}GC?N0Lh3e(N&D$2NAKFl@RF}jF z81U?Dnt1HNgi_&ju=icjyJ`NDSqfbAO8#L26_r9WL(|H*-AM}IzKR)cJ&1=C$J~`C z0o-w~)4#1@Z;&Hw-p0*?o80{F?oY;z{NHDdKvG%tm+JFblpyhR5{Y_|;Z2c%qUlqi zB>v%jbw)@f=1!gHbBZt*aFBNpZm>wpm0>p~HKsmha`uTrX)GF(j!xb@XO9I2RG`#-|}gKZyh`EEU~Tl z89PS>PNZLGc`uMV=QeM*vX#^z4vLuGQvM|a^@+e&h$cO2|; zuStK~;4&0f^b6SD2UNA?T@1#)J>SL;W^SR&n|(Q5dM=d?Y%3D}6O#8G?<|a_h7KRT zcxs)Q%d$uX6}hR>hg;}^S{-?RWm<-mO$7uJ;MiDNRt(7&!BVfwA1TX3*GLzNP?{hlv_L=%mpNb2a?SYBLNxlG6 zv)>s{sHW1No$37?9O7|chvZ{Laf#VOBv-O!ydT|dBjj3+$%;b#;=`1e!VAa%jZXwO zN=ixxXE)3BEEE*$dLuVa9*1if9D%cVMv}ryc0fdnbjGyZN3fOaCrShv2PGk}kE@0O zx7V>K4aHt)L{tQ;2K6qy8Ef#lT(i1ocTPN3RBQ|dFz|bnv31nTLwT}7udk7ab*ApQ zO2!}gBXNh}!KXY@&92IEXv>!i2Cg=9gma3B1iqjkhM!QRiwBeB(V<6)>ys}}`3dCZ zrk|RI+&I#%Idpt=S4Vqr01 zh+z3vvqR~1H<=NoX-%j$T^F zO0<7|4O=ZFO8B7#?G448USw#fbbbov3AY($gUm55Yl&rB9-pKWUL_iLgzTO8)1ctx zg#nUp2(Nd)n>fB%F?RepQ*a1rDk4e{-P3}$HeB9n-v@NrAg7&mV~P_&=rVHPnFgGca-=ZOe4*u2>vi?}sy}l>7Ij`p52PjsE!u-ll3ZU1pYuHu z*@JhWcHLxFz+`gA&t&%~Z`GxJ2MgcE@g%RvIg;8u@{O-02s!n6x@Y|4K5utmTQFGy zetilYI*SK5UZ%Sa%VxQ$*o8{OnQ0`v+zZOD*c%PD~H zyF;y2-e*e`OPy{FbpaeL8ux+ul>+6up!*{D+vof47C6@E zb}JUby=s{=iX9#KcTHz>iMg+mer(Ydw`_15Jo7Iii{P@gD-vo<_@N7cE}r{Szkbo* z9y^Ncey?WdhXB3>LY8e*Vew#iH;$;w?EJi%@)bynM4*frAxK6vUHv5K!hCi%&Vh#i z6}DZRCDA_;7R4<#en_FqX0mA*N{G>hzO^7ej}@HkE>kr7^g!S$FY0B9(gLa)P3QnPoEwYs(`3we?RLR z`tu(bPe8a6`$oj`tDNx5pL7bdUQG=$>esQFfU=58a%-#feONeHqr?O^AOWWYnn=mQ zLqV|A5SyJc8LUBQXe^`58?u|L!=+A!U@1?UhQM>8%+S9p?ae*%Zz%xNvA6H{x4`M_ z@~XjM#x;ngo*2#|M(QoKTIB7upfp`;7XR~I{P>zm^w>MM^0feig7-{3J(cZD7Ah8~ z!>TzZcf`+v;zb_da>3nO9BZ%ZkmrHO!>Pz@89Uh7&O5wI(jcv(!NSp-ntnUl)1&Hx&_1FJo|SjUO4je_;3o^6jFvlq;K$qksF(BQ`YoJ_nrflDiQAj(C%4 z-J3_WAVs9ZDGQ&C0WmB88;<_S#pAyRPMl|*8%$udz7W&jsznrtL zW0M_oyr&6n223X}ai-|9wmD)c0I=-5@-8O+Y7Cx#>wX<(pZHY8v)`Ad>2B+a-f_*= zJ4h$vFFd8;uEj!BjgZS*jbY21a=t)Zk2qM}iZbEB16hOncNW8ICmte6OcHW=(nA_< zCVzj-Y;WW+Uq=Z(F0eABX<9jGXqXLfW~B|sgqjI+h9aKf0c@b)yet_> zMWUW}P$0Lc=w&71kY7}Hf4N#^)QP4R%R=Rk(S_a}8 zu43%FjRxmm%AJw>S5|7je9?dyq=VQjSTHs*FZjm0@sdp<*HEYaZ6I{+{0;S=o@!^ zCS)y*f6KnPO4Nsv_p_fyK!H(mC2W+Q{2_1M zuNgMEaF(>}!+c`{nj{mWd&W1Qb-x>z9bg%(0mxQj+vXPcT>S~K4!uZw{u5QH2zAZa8j z)nSC-?No{5V4X7?W52@{`Ft^%J=~5B9FU^@zgrqZ0SZ^ggc*Fi@n1Oy)!(VF_qX~V z1vHWaZ$KmNr0{(I3b&B7{HL)h-xX6loaddcOo)Rp>@ag*%(?%~nhV~q(YNUBzBgEd zCz~GokZOlqg(cQ~UJYVhH69!Ya@Dzt4T8Em1vzt^yG;M92H_FB(i#{2|EeCPk6G_~ z>nKG$z>5Q!RS$QXt%${0uE3{TzOb{MPfiEmWc456$Qcq=81NFPecpPX8zQ2`hGd!u z{QAJUmjw@iQIl>@(o)mVtb2wsW+`VBT>9Dm6z^>$X;BmtH>_i(xy;6{&=cPPj5zFW zu3Uqbv@eGOT?kK3;f=g zB7x?%yLl0US58K!o>|H!BwG3SvyD;8gcU{)?m=H8c`l=Y{xz(JJ7^yl*k)v>pZ$yh z;%2(`)j?br{~sUxY)Lh7oZWHNLMo~OND@?;{z#+J8w_|Ll3hnBj!!Ol9qCZLyUqDG zFJ|fe+OekNF)2D$OcTJml{&gY+~NwyR52Xav7Ns=TkyMmNIMEEWM_Dozdpa=Kg3~Q zO+{glBKPJ#?55VrM0k z!}Y1#`%`&uTSF4kIiW{XEY6aNVS#lVOT#;;gVu&-HR7Rc1Jc|dsO1?*r@kH10&F=U za~8|IFEAV&ezE8Jc3$terSpf@?#|rK5(QSRn4u^&=tGHn^UZ~mHijakU1)h-Z~mU& zxM^IFFP%TX@cWGHZD0QLt*T843nvx68)VkNHm@2Dn8|+~_mUIfJo-=xx0^Yf8H2Iz zo&PuwA#T9>lniLX0Ix~sT2%^>abw)F<;VIq^J$sD!`wzxlNckzH9QO>XS)ox#SlL? zOZ%{&L}%kaYV3)TT^vjLSf`=JDGqe3p5(Tdntm=*h0LW)k&@vI$sPNdsz9mc50-w5 z92Fp;E0H4CD}e^NqCniGQrp6P^nwcAVb0h+{C&%V5&*7iKS_s84DOoR%Q|Uk+jvx8 zOF=Ob27+APi|ZaRPU@$k!pak1{aT}<_GT|w;I`I5V%c37wl?$#OXB7?_odjI@w#$$ zk@}#i^l1Ats~E}LU``@}rX@eDrCTy&bLV|ZTQ0zh;jLbQ!mt}CXArzfRf^NQ{4X`( ztz$4Nu+Zc}*`C6m3Oq3}ae(@j)fo?J;`>YrPHVok<65Yq>;T2JTntup zSxTD%y2oAT4JpieaFONm+Sn>Ec9PbO>D$1SXt+AZ6gjYTPXa<#ekdR`qD`X?2wAjl z+l>!#QJ<5tTn$qvxXiajc86@}-}d|H-&#GK#Z`Lt!dOeh#$9A{x+aGoc^0JJuQA?5 z#R=r+=NH3Rqh7KB*drs!){~Zx`ch9Ra|p>w&r0cF)?j$L9}6IXR|)~OL6KVnS^%n3 z1GTkrTHyZa6OV!r$tVYyw!Rkmy^tuv7VrK<3?OogVe3~Ms9gId3d#Dn-#oh?jaN$7 zNBCd@hLw039f6mqwDeT58YM|54m|C~RMQIzO>y7*?LYzi`3a1_xSKD^w(e9Dhgjci zk3JbmNGFB_HOWRsotGI%osGhPi4dRtceH>C+vwgPGjqjQ-yK!koowXDeo?pY=&0oM zaLL$@yeAV$UAeNb+wf)d$MB&Q1m8b=NM%B?hwI%30RZ~uwHtS{1tPMrJCXOFO>Uap zA*0D3Ooz@A;u5a6TbJ`xZhKTBOOTbdvLJnW%AfM-p(YelC_=H)-_hxmY+lDlrxWHf zA=O>`+pj(ki^KZh;TQFP+*Ql}Rjt13S^%Z2{JZ(K@cow;&!;lJ?=Pv^z-Bd2x3RAi zXY-YcivG9^rns=%1mW85(Z9}&V+T$@6_*x5uV3 z=wpcl6dr;J7L?waJHS7nKDc*5x`bP*xZU+5LV-dddP^9;=CFW%dlFHCz%g|f(!#>% zK*uIk+ZU^%^~fLJ?Ju;%x#PA~R#eQm4okh3vfk|K(LgKpeO;FKCcwXJmYA$Tj&^0V zwf^A>*uJbH3DSfi6}l^}gb(y>x{TX|vbR_)0?nGsDY8aa0|cKM6duV^!ZD+YpWXAs zv|=clhOhdrA^=DH;((@;UOS%&G!b zPtyb*N}j&ZoNkZ3yFH_NCSneGY{ejXG9G<~S4#fQBO5?2khWZj>^+h{j9j=~GtzHe zSP_7}*-Yf31il5ki7QVM$PJ(iZG^@>Yj0q1Ii$IB!rp<&n(GM#a zcw`v@86^r5f5RIvK3p%PJuKCjjE)Gtyo~xsvi+`;mcH?h#D_Q~8bH1!0rZH8Z&OeR zkvAAf{m%9_4-)uAPo9}`of#qJqRj%rfLGO!ySaN&T66qc)fS>dG&;sTKF0N=w-EwP&r4v-W{<88TBn*E#M_Z zabwIO;^k|L5Y^LuFAo8B?oJ7I?i!9})^?d@k#?NXWvZ?3;`YGnr8cjgs~gDYx98ZW z!c$4W>bU+Zap3B3IT)71tfnSZT42it5Yh-Z!U6D3L^NYG!BOVEUDPQXsHDaYCtaqXqDw%uLyUhnoBgE53Q;o|g{_{0d?Z!adLB?08Vk)-*Jv7;T1 zyhtWqlf2t|Nr10`42in2$8$bJD~XG*=D)Xq0aUfT9~5R`3(gm5-$eZ))oZ=mOXeqx za`9P3MMaxIla*$T*%z&H&0vxch4c)yt?hf1Ru|2Irbg0nSS?R%j;1+~vZbUKO3xlr zuYjl?;Ch%pPpf)}dyw2U<4ZR?c|j5k1Vd2WpygfjGncZJ(lZxLOm-cV&=`s;f381&^k^?!cVRiV`^MZIQQCv}z=Om^k|Mh^Tc6J* zEieAM_w7L#{yn;v-!!rB!^3a+B#$uY!k2x;$Ge%Y{uasEXHC?=qw7+B1pAL!ccJs0 zy6=_r9#$)3^Ya-4#!;6 zing#-2ws@<19#E)_Rzf8*}>_v_XqsiOmxxOfGh(fOQFs6xJDgu?pP|~K`LqOvs!WW zoo8~Kp1SoJ;oW&GOE<^O8)l@x1~0)@NYFH4u=oU7J3VA9v-vIs4~g(`|7u%7M=L2$ zmGZ~XW78Ls3dm)K1Jxm9n_o5_(S2O$MlVY}lkg*T!!!oR%fSkZt7N1rO692Rp>abW z??Y}KF6v(a=t^YWw^`}%-Yw#oJN^-861 z9Q?b07riVrIN{{49+I?P=jG*L#~WBKg^vXeWeDn;;nOX~23#D(v)_1od9k*~i|~P1 z10cl&?1{2}=SphB*Zd*9*L3jhK=HaW$}iCGreChf7Y{1MQttC>|H`mPyv}2$u79z3 zgF@`bl_6GCxfmXD44X$-XhJ;=ph~BXv4jyVBJreI&9dH8^s)l4YAp_&{zAPDauXd9 z^<=<%3uMFLB0ek!%8=vmzg?vJ_JlBY4|M}Z*Yw|<`U=XagR_pS^y)I!XnI6|G9)E6 zHJnR7izmoFj8NYijy!6Spk*af27FvrLZgTp`uOp}Zv&3V#H1v9KB&i^5|7p7NbOy- z^AkQh`y0Cf>1_qTR@EH_{JP1fA%WTB;5N1bp*bWidvHJ)awx)H?}Za7!}oZ5I=Ss3 zFd9f@CK0b(FNx~lEx?D@;zmZD7L5(B@W9?iDM`0b>N05tYX#}+8k?9LJ`4g#(DBh0 z%aKY1EOku#JoVkbdVXIB@*O1I)6ZtH(9Egl)gI??c4ZKMXzsfLph6m$3cB zQLl&AR`mE}oWL7h%~g!UJl8BuXMuo_Td~Og)=uNsv_ap4MRJm#iyi)xiD{X+3WtMl zu(KDpuLQpLJu=rW3a$FcJD>xoS|YbsFocp6V^3&VH3_ZlJWnfxiku+sxEa{3f&HdilakJs(oayZM`i`OEruw+J&S-7^xo zz(U0BbAte^Kz;=-4(o;NrrGB1$Lf6V{6~*#^E_5THOvEQz3W#u^G&YnD1;(^-0=KCwGV)b$pulv$OWc18leMO()J&$_@RX4|jaYunP~+9S?8@n8a?0>cy<5 zG97kbLaa-f#ZK_7zMhIYz7;t4yqb1A{(L}uz=Vfe{dzI&T#6g7WpjpImkXE_4#d7g zD-5RZXX(GpU+9q{cST665n6XosmKgLfQ6&|_!Y=0+{*@=5W*h`Mg4XdsS zZBhvf`v#4yRpCu!X&1pm-H_VbZ$YZnNAnhV@Jy%afN{FGH|FMyu-k#fTcRCq5TdHS zB)nO@##(gR97uj>kaam54o)L-@^Wv^nGB&oPit^>^|8B#xQxr-6A8anR<@W-8W@o> z_=hLecM`m9$Juf}(h)X`n0vC=4^trsz>@ z#T}T(3T;msOqHfQy7?osf^qAg2@X3{{KZzQFcVT{@C?4x2A~spHv@8%lOEwU;42xk zy)4j#zF~w@rIUu-jgI)PieJ2F2UT2gI9Hmz@^}^@Z>&XhnXB%9c*05spx>iM;ZW9k zV`hrNLilf$m746b5eF=cd!4RM#Ccy5av0oJ-gm4Pyei1_SbsP2t#osZS#`MiQ#O)cB<{oOYXNWz7T>i8-KE4bj< z&zl6V-8Ay!qQ}{j^1t!cabSoGes$SP<-xH*N9rG|EUJujG)3Y{ z3G9`CH+7I1hNg{%a){mIql$=op)Hxlm4hZBHzI*#=+7qXRtW$94FQ!qFaRFxXBJv9 z-;~Mu^TeApyo0f%!JP;m@WLN%@H+ISYld8`73+%Y_gdl8zyI9ky2&r2kt<`Lp%-NH z_ND>JfvRfB4$th)9K2MAuKRoPone65DO-#$dUs>{QGtvVCfdy2adymG8BSVqO~x2B z!>Li89@<9^kjcu*DiCMUVmO+f|6HQ95Yy*xja?WrGI;0!LePHS$}59 z!4rZK@qC55v$)SmLJUX-y|iCU3;K9+zYXo%|DcW477O_Jenh`7OYi&gYL1t)^X4p3 zLGIbW~>C^KV2fv+9n_BYT<*yBSPZC{~O-ZX#JZ#QVv(*|pDbcHcv{ z?i8bdr>}OlqF8l+BOX4s|8DBjD@1-;p&o2?W8iJ8Nhe_W)WTxFrqBS8beo&k(!t`> z`p>jYme{WXk{Saj6u@HM733f8x#`Ze`kv2FsA{JZGRxPHFbp+r`@Gc2WG(+_=*Fm2@HJs zNi@GEIRHf;yQSIG8)i+XV6L9Ycx@Xf-083?r4!=;8rXM>cXEV<-Lb<>5=s1osPwcy zMl=+x@&AuIM8%{l3YCDvCC0Bqd{nI)aG-uM)L9e*^dC~Xm5fR0Bet3kn8YxOk` z0XmlMp8FR>e%blD~!GUW`=Ysps4Q1Sl8e6 zU5mZoF&UMD-GeqOyCtxvn!S!rLgwu)JY12UQ-Du6Yi8^Bf1OJ;|Cdhnq10IGNpEG3 z)@_oM6{j`~!|Dt}9a>2JDrvu@DqK1{8*48qFu`)wgtF>_;2fI&9Q??aYpG0VQnN-| zx3X>2;7JN%jeyLb&*l#=7u}jkJ)?;f5P{ss8x7hWUGula6bT5G%pRT4Y9V;iU?UIv zkU7At8E)pnuHEl$9kJb06k+mw@~G^x%?knWxIT~Vr=c2Pf^I!mI2 zB?(zZOK`E!)Z*w&gmn?eC^zRp#}l`hOdDZ8w18|rT~46>tKbh2Dl)QFt^fAtm2 z6_K2-fPZ{+C`{$2jgFMb)VPM=&Md;vr=13dhT(l}9ShB**r@!^!GYm7QBSi#L>+k= zn30iz58f%Hanx`jN<%VNUN^vukS zzU~+>hN>|4uX8U~5(IBIe4vetjtz1`20WvI4tbPxMNtR$UO8Z?q z(%;G&ruNQ(ti4X;$*u;U_VXisRq%9!Z@6r?Pp$a;*2cmp-+=5HGnAG1Hav}!IOIK( zbUh}yv0ofYKAmd3t~7ZP#nOUnlGmh&ZJ$)@L4l((321RmONThbzW zZ;dPrySotlY_u$Uah#HJSH1PESo`j$+Cl;RO)adJ1_3Y5`2QM!36$a@Ww2Wx-9TbK z-Kdv7Hu)A*^_tsl^O8fZQTamj^sIYaF+~F@0Y&y8Iu{Zj-iUZ~duVM1lA!|qG}RT} zoi3PeQ-uyC);y33wpG-Fwm@p~YX67^XW4JJdhcJ6+@w<=B`oH~M#gmt7OZkz$P9g1 zUuCaOi(VXMG}XF?=}9N+F*S08A;=7&Nj}~D^il>V_pQ}UJm|@Ap5deR8fj*Aam09j zGP^|t9herkQpS(*wf)^zdwhD@g6+{YLCGm&T4Zy-r?CMz#ZcdXi@fF#W)H!)uDbrV zO6EU_ta1*1)^w~H!wtJr2I{L16rAJ!-TF2=!q8L3%YqqRp!P$FE>s?0$IcSB@M2(i zJA9aoh!Hd0q>>z zR`=fkWX2N=*~h^jKk!3Wt%2OrV+%h#EHc(J7E|f7!UZGJpQfz3L6Leau#{^yhZ9Eo%$6_ zS!%|zlkxigeA(N0OI2~0k_9l!qfLMLWp*zn2^rKy&G+wf1}1)m4mPVFe^wbW0vQO#_fmD#~u~C!c%x zXZBgDGY+J~-q=B!RXP5fvElTWxIg}!)UMu4iYh2{U4KC++uY(t~m4R>z>oerOu zFUC$dhYx5&OWW>59;E@!1;Wz%TYn8@{K{6#$&j+$XK;4hlQ&KI81A)#t=u)6Ta>_0dpZLIY}w6MkmKQ=I?Mk|PEk74vP>B^Tp5#36) z@;61KyKRnNro2iO&hT&!xwJ>w^ZYB0BpnVkZJYi=^RZb!-fBIrB()8_)x(E83^=U> zCIUyY9}Ka;(bs2tpBTuhAxD?THnjA>iMW^;bZK!BMphcIIY6%T`gN7!<^gCz!Rr11 zE3B;K39CY&dYZPu078J{iHa}rGt|f4B^B@vTI;2~liENRW-U8_$5f@c=i7FkmQ;Q! zeRB-bHxXjRotZ&x8-s<84+|Y4nCOUlM`4d~H{PK6_7nQ4+pdowSeTkx&V$9-`LE$n z$^-Rmlyr}p+H6!sL&NCkP{xBdPeCvsslX})r33fyXc&_!&;V-$@A3w7@{el`O--Mr zf)a9Hdch7Ds;SN6t1S^`YeDHl5hVv#$@5FC>mk}H(C{2AbZlw6(YGy~!qiXD&I#eayBl7(I;5cU$a(0W95j=GZRJZ z9uD~T_kcgDd#o!0wfgeZZh8!`01w#s;f( z9jKLC&4_tO0YGY|lAmx*KG5Sj(qAFmDJW(^xT+?=w-sVzL1kUV4L9+1+!w_3?Y5Po z_6cw5$CbU6U6!V&sW0rw&UX~}ocJ!ep^%Q1_+6jhOG;%HnjaLD_AmG%&kp;ZaeQe)pgOd@$9N?_(A;fP-^sa-*~ReA92yaRYVTHV}IX9AIgg$ zqozFTSR7^G7^`|r89wqWPCKQQQ6DH0QA6APKO~)HRFrMoh3^@L?iP@gl$5aOl#ng~ zC8Q+;k*=Wxq+7Z}kdW>&=uT-6>CS;+X1@D*KYq?yuz)Mi^V<8^+RAg@H(P2SPmg>h z-mdBptT8(#t@0!RuRHzHrL6~(Wlm&qp@0KqT!y(8_}4oOkO3^PwG6P6-pMORh31C> z=v#{nA6gX|m#Z)}=sj6lT!P4McBQM9C@2Mjp(MX4ZKSi1z!L{@k_Xk@U;4OB3clNJ zJXBee79U@IV?JLO?|p`D;UKz#s}L3X0&!Zji3oGlJKK6*j#+8oq?7VLJhH6f|W{1c=;r&rMREvxa)R>_WN%T%mnmoTc;3u^c0jjN}PnFj4F~O7KAn zeh`A2h(8h_b#jbN>K$ULN9$+8u8sW7CUZwvT&XWUeNpH zpcznf*p)p6d^v_a{=ZU2*}nD==Uxl5*zazA$I-w?1R_}V0l`KP;|dF#JZGBj#)-f$ zJhfK1?+6fFY-;8;d~3`(nW8N2J!s@DXYRY9!M8iM8>J<7>h?zW=gY3$J+0LURTZc< zd$+%$4!;WzZDKbmoV=U|D$^3*Lcy)v9c8&TxRcvlaz%PkSrhnFqBO8Ba9$Z$?3cdC zmsrbXb?T%mcikF+6cf3wty*;HY>amow+3GI)f;a(qmSS6AQzf62|0 zOr-}Wf`X9dO9#^F#a6gCLjRGO>Qc)Y1xoeY9 zkOT?Q(Tt$T;fz{<>^nJg6_o&JGwwgdz>CF>NLLey7ve83hsqLOWy95=7w$$$O9}L+ggh~+#D^k1soR_r`|va zT{;v|gjy>KCY91W`0UCV%50Di;AR9IuT7pWD-Q%~d!nClhVJy{xFo98k%rSu~X1NrBRM@GrcIUwG`U0Ow6N&nqL|6%Lm~Ed|XKIFE6cd%K zBE|uk#LvP)!$Sm0P{GgC{DL zW6_jfvvHZwURo^)_fSy1aoMocebMC`U%<8{du|Nqx2`!?cl-Mh<430&tRWlm{$MC z&~cqxO)@ynnpqkSrs9aE!OF4czdeAyo_Sz&l;jhO8QB@WZknTv`o+_m=*Y-~W(px< zQ78M9%>RyFu6ru4lBOMG?{mGYN$Pnr6@Zi>>#* z{q9hu4AR-{&NbOD8f;n1`#q5`gU+!Ys$bR2xTttPS0yFK#-h{#mf2Tdp1Q80M>5;g zYE?q6_OGt4)S>@gdf%LJkiqv0t_}|mNJ4xy-Tw8UkUQXs@itJJWvz=;wte_Oh5{Za zHl4D0E~x&6J&&VDI)RGo9aZzK;~R~9{vmEymF%;l>9W+?F?I+)J~~oJMMf<+u*6>u zx`~a!U|S@@Q(+i|FJMJ{LYg?TUOBi$e}H5gT>n0*^qGKivyr`-qn90W1`h;ta|Gw5 zE3E8)NKZ(I!s>+(w1Z>}qc+H8Rg3s*OsP@%b#%1xs1z$ixcD}i{ZHJq*)z-^v3=C> zhS*lCkMUKZ0MCX#ih9bXm$xoqsMM4Hc&?6;>C~AA`{cm0&ua+(?sL78oL7lC@6}F0{$-#ho^4;R?GMH# zBr>Zs?fCrO+TFB!{b{rN?#6ma)zQF{$Bjr3BAHH0Nb?PJ^CZ9ADIX z(Di?;51e2+Rm5(ubM*^NDDEg#Jo1(98d6kIZiFfLRkHj}%uB2|*IRdz-Aena;PA4k zkbF{d<0_NN5>vW-v`ElCLd^m>=lm*p7f`TJC}@FEBLvVLykb*VmD4ZZtDI=U0L%(? z#%`OTUC96e8lwhM{IU@DN7p2%RbGhf^5`&(JG-+v*5da}@EH9#?XPRx+nAte0#GHA$ut0cdtbmq_0 z_(`N%R{+=OXlB#9weBFF+WEJXMB~K7O+D{AFZ0@40~DmN2R9)*7$r(}O+cmMtOHNo@|gF?;1)M-TnLdhSZm*sO;S?5=)Xn!%o z&X2b`AF>4x*?N;-iK(XHAV`6O(vSAx?DmqZUck0;?Tu#Rs-~G4sKRg4#6m5w$jh^< z>^`>^RcYR;u5dt`*<&=NQ9s@9N!`V3hLgxnzK-5`&U!RedMxd8!M(pB<*1X^IJHwX zEb#o}8+(E07%NN-9vrh>T&%}e`N+p-+N~U01%PA7!8he@|E(X2g>gxpM;9k*@o>J_ zo}!Ocoj-qhWUv8fC!|YG>ZgYava|X5SoH_S8L-d{U8i@IVplT@cK4NM3XJ`5aDp)o zj-s>Ub59N4uIO*Awtm}C&_2Ac-w+<4HG?)zef7W_){Q~*999)Sb0hq)^ij2h=zZXR zPh@p#W3oShk^h!*D9@b1(Ishn;VO(mI;v0rYpaubr~gL&4nj&vKb{=DuSC>ysK`V= zv3}$zWKFxJRQyb;u%JY}h^Zdrznw@sQC%)+g`XKq#B6x#7v4!P=&m+_Kl*Ne`yO3Dyj)z5?! z9Eo`=KBhX`jf#_SX+m=DP`6)yP^AmU)zw|`IG4Y`4;jeugoMbDI*8H*%-v-1K&Oq( z`!K*v`;o}IN%nw+@0Ojs`Mr;>oebyw=T z3}shIPZwoVJnU-|`+wf2u@FzCb$&%?!RtkOiW9TUak`+{B)IK&=s<{+a05mJp;>G=@~sz!Vebb=AB-Ws91C9{ zstU4J`(qs(c;*K`Oyz_;tFOFYC2K>HmX=dlwW7U6`OCV+9zP{naT{|m_a{vW5G^r# z$X@7)``)`n&PZS19p^wChaG>u8$&^V_d|*d{xfS>eEIQ+{PbrP{&I6l$DuQZ#hbN- zB5LH)9> zh|RD}g+ZkpNZ3~b=|R8jSy|OL!R)aZjjX3ZHX|8fx=Jgp?u5Kn3F(r)kIybHlJRQn z*19yP=1cd=^4r~|^J?d=%6f;ecpc^G?mH;J>=+yyF_BkOECEs6HKa$&Z9=GC?77J} z=H-goIxJqW!F0xW|MkWbr!(Tl+K1$oqyq9710*92|Lthgn>IY6JCi02Wl6vJ!t(lL zv3>@aPQ1MbVllRm|G$rZ>8>4;R zdrd6#Qz%+d87?_PMA40d?th9Rr}q0l@6ER-quI)#pwk_8voO3ed(^*E3uQRJ_2UWNy0nam0TaB1`L7SLS$?r4YR1U#Omx@A< zh69Pua7}S#j5K78xDRO443r|VFrmOxMOav)D1z&=(-6zzu^9?W2K~(;Fz>hu6ZSht z9KPUqR|SFG^Y@U>@c%0)dcMbOcUU;oztNOC-fg)khp~qO=6hfTmgzo;k zXp4kc38u?na1j4Drt!kh=6==I7pusWq^>`=X{>EcYws!AnoowI!**fz6hhy+X3w|4 z<<8bHoADkSq%GsDZSqbF9)4;t;17`q|1Zgzw7V0GOmt-$O8|ED*;vWlz|bbauw-1_cB8-C;%@STA#eX(AoYSGDdju`SQpbSkdO1UZpjps}SFQtpThdIL@2g8!ix)yNZk+eT zo?Z(T25#DSi9*-b7{|Ea`E#}6_*yjdX)&~4gY}a4R$p`5U}1=$WWQmDhqD?l+Hx^5 z?tey-njQE4U@80Vvx(je2NcN%KCH?LwlRDDIj*wJ)ASYdC^ai!QG53r4-#J_w6SVG zJc7^bwoMV7Wl$fD2=$oJ@Hb6b%!r3*vurSd>6PLT|h?@b;*d-z567tmC)q; z19v*j5tFz(b=m&h(*p}&mczPP7*uUJ3@HC93!$e+UmnRwb)n9pPKv>n!Rq*7>B%HV zx|94Ha?d>I#22{WA8Eeeo| zYh>)hg)ztp;Y;M^WMfpt=g$waXD+oF@yA!Ds4@X`>G+!T55+d+`-t}>_++?f*}}sS zk;<2g9XaBrF{E8%pcNm$%t}(3Eg{q-5Vnc%pvRxbHkK9!vZCSeK%}_dJxWk7qZQUN zp@&^}u%|NUxd+?JmtfD6h!_4M_Ni9nuRjhZ?;@YTc;au89vP2#OURjlVLnv;@M~D@ zf~^}8Z2a@fLUkIvTESgj*o$*hGo3oc$x7Skm>@a6e5T&f7C`qAr4pe{5@A+u#5v|C z)s}jt?sY(%)pH}NHRu}@2bCUoisZQ$Ow=pk?FDL$WY>hO6^LYET@{z2nx5F==*!Dv%nE4N|nPYbBMHs=< zd3Z?h?wAJoTkPpSv7KX5Ki3=oz6ehN*@0@=F}^>@$9ju33+GGAbDLTGX|E-Jk^?Ek ztE_2dWTI#DBvzfCVgmauf&4y{TXCl0w{K6X>)#R75?=i5^Eohy$zlshxa_%Xew_>u ziMRgav>lSORVlCYkF1y-Ep|RDKm2}J{YS=kG3IK3GknFj|M}pm#Z=UMP~Yp<7_eV1 z+pZ3}N?s|0mvOO9DX(GmWefNzyi8&XQ4?LPm=R7deiF<(CX8x&)7% zeu{(wN%nJ5??khR9A8MZ^<48ZE1f6Mj{dHUcVIkTqs52+-W%p0Tsii89d zee7Kv(|CgBOxIHSJEw(}m|@sUXEyvivrWTCh`HU^cV}nvgU3=X+|y@v;v8NV8)CDu(L03+<2b#t!PfL|1`X%xv|{2iwNX z4qCdp$abDHsBI(U{RM_Dyus@QUdn^jr}8)6UBw&e z)|tD{H9Ts^!0lb@b~Uy%C;grl6Lk>rasW37KJf8)@^9Hl>A!0Z2RVEz5um@54z-ny zt$I|>BM{3Mc)Jv~PEfCA>U#$N?H*TyMySONLg-yza2jA&!79byTQN zpjLfFxy8{@bWE3=$RV4LFKj)hTiT~1jQ$zW%dFN7Qt@XkFvk5BfwXQ{w$eqcy&zt8 z?WVTB89w^oA_(zK_Vz^K@S=p{h86?lfI;4JicSCYv=@C|pLQ~*lV2$K2n|(~mrsGe z>CYv;kBCcoi}c>XfqoGIXe9zEx&r#N#!Deg8?WKL;FUr^W3oR0sqQvDJ5)M;w3tTE zo!s+CWxEl*y9j$cE_Il=?ORMd=CJ8{dGpV{>~EJWuqT4Xt3$!nG_*e&iBEgA>NtsaT2b7ud4!F zHs8O1MH|6007*%d;4&Hv*YP;N+p7S8!vWu`X8G*N$;nrmnwo|mG*nbnhL_ts-j*bq(+%eke*;xZwx}Pv}!@TNF0=j1(*hvKkfAwEs2}r6_mxzlT9t7zFjF4 zFO=-RsyY2CNIR2C^MV3-!dzzb^ik^ywQ>&JHD98%{`oi{%>w*B5G80G2;5Y^e;6LZsPP2bOdFavqJ0u%SzW~& z{-cwR9gdHNEMeM>pF>#Otz2=TC(Y^#Sj4IZVz8<1sFd0W(l5pDS<$!44)Hwq~ z+v)LRzWLwQ_f5&ZVX;p{JO$qD*@px(UCC+28nHOIVSRi%WXpU#5#qIjR8jIW0J@Ln zdp_;(ywNm(o}k}q`Z<3p6l+D9$iqoaam?!!e!j8UCgq%uDQUUNTnuQVr11(3yz+YB zClDVLLl~o-n&h6epb5%9E(V7AiP=a8el+|_N}gZw=WqxU`%#fppJ z-$pohrX6(vCxTA{P`^eij*d3l+k0!r{~*nrpMI%x);PPpb@S{v#Y#y5 zx_8`NUBA0@wYT2~DYLy;1+v-E(a|{81pwiP8xgF4$T8`8H5C=|9NaloO-(@E(Qc*g&e}_!!5wx){wcLtSxXy=QK>E6Qt^OTLlu4vY9y408TwM) zA(UOlEU>Qms_)mY{OM`Eb*XytZa#HBDJ=Zf)t+j`WIx=3!!Aj;t+)5P7d!ngN_|)) ztoq}X6%`dH$I>t4o9w{cte}jHj26SH*Xwg>w&`EK6utZ+#QL+ppPPD=b?(w>PJqVI z^oxWy|K^!(>=I>eAOhX!^e0$}gdz6f!-p<^m|q0GuvCh6%o7LAxGS1raqmNnfExZ? zWY~e!1#7+Mv8hG+*RS>uSQM(pW~GV9u`wx>oLa0do#hYp@Aj*c_oqsehu(K-Lj}?X zgU$j_Wv^OI)4>@IirIXYL?c-bL-n2Wzx7ud>hp3uq#OKnWk3_m=dBF1BWhbDr0>|C z)Ruj#ET=&C^M=STOX0#8OjB$Ki=M4@@v!I37i21dB`zz@`U+HvB4Gg#ltuB$xJKI3 zw$RS@+ABJV_CAViMwB`{K;Ar)EhELng&F?&$iPzVPd|VBs}Qqyi?3Q(cW(`1NvwPk;)LId{Tx;!-%eW7UC zioerZFRTfY;5FCTIx61ZWH<;1lf|`|^GSGcDTIo0H^65tcn@a0RWBE|G?pQETE|vK zQOo>S&06HTu>I>W$2oT=-y_Jyd&6U7TNcUi_uWr6JQKy9dyy)xIuU1+{m2j+1~CJc@=BbhsS5PQbT&PDj)9{0oRza|{l8QkSEMEG7Dy!h~x?DU%a@q>%N=+ z9MZ<>fOcw%81NN#O`3F#rkgJs-6gq7nP!OmWA2%1WEm4bG?UYhY~)yIpNGxWNn5j0 z%V2TiuA#PGzj>n#4+t=1gwrsl<2GfZJBTuzx>^pUTV{yTC$`Pzonrs9o7sx8?!2H3 z27Rb+7tb1V>9F#iAm4eslB>dPKJ7-!Z*#Aw(Pt+fEAF8#E>$6PH{mS9)totB7yOr} z4lUnSl}@zp(*|H)j-HuA^v!#E7@N@EV<`Yy-J9 zN6RfyvG=8-rN-gb*Rk0<1BHDT==bVuKu9d%Yh%=fL@5uXiy;>l2x|JfBX()%+llW9 z0mpAsHg}ALKT^a z8J|-fV?E0Y!h5&a$Pc(J>3#a4#<3IFwS=zMC6=E!P?{)@&)zu z^x~tU2yyO`xHOf3&6MQilgG)Cjb`Q!zBJuF(?25-T?%tN#a-2}x3;V*8o@CM4 z*}3Yq0IdjTh95o{P2k$d-+G+1wjiVnM>_Yyq~`*v8@ZOA!dg^o78+AyfspIw}v?1rZN-dlrigK{jX`Yc1@aFH5Xmj?~hm!Q(@_Q z_QnJ$moC*5Lwlai15RaHX75PD`3@JGtJ69#mif$PIJR3C^ZJ(KtNplPVr43TIZK2a zJB&o#%NnDjHXFKck;fq}-iDa`6}2LE{`>cA5|FM;r2Foh=&U8ujNu6&{qpOx+L4Nt zPTFsjEER{O*&m4*_1zyrmijQ>t>mCR&Io7q`&7Z6CFCs!HcVtWfMq95KviEaZ(~Q( z%6{qgupi=dpD#N3^<%yr?s>F4S5wtHg5zm@>J@h#13b$Zd@@!@!J0IPu{!U^iQUd+ zXpnSoF!rSsR^2b1tt?a66X_`{Zm>HKcCK2ZXOD#eh~udWRs`2`=Pwi;f+>K>=ylOmJ-mJ?^SIB2 z(pxH7yj7HC{=}0P5#U-jPOUs-9>H$nxQ3ZXC%Nlj(32Eo-sLv;CE3J%7~11H9xM~) z;;ka1!*w|N?7pc0&TZolU0(3Z(b4g>{V-eJs^LHHkWZyExG-C;@}2TXF?Rka5=1rT z>DWCwhMhu$p~1aP=rcGSR0sFfBdfOb$Aijja2zd(KvmCr_dm86FL1y4e<}`S969@? zfYqOU4CsH`_3RKg478HZ5u-5K)fYdVaO7CuBRQ}kwwpAB;eo3NPP{Ksevg&|I{#QR z4|_;4KXj#*|L>T!m(>lzp+c^B`feUUBa8* z1D60FU;SwMt6N5GEjNExD3nt7_yn@G;!tY+A{VZE=O`-eSwad`B)wg&;?^TU)$HDnP4Q(`1$$&J|Zjs zI)IJD#>W1_4d<7r7;n3_d^M8>cqkvM{Ons~h(m)%pJ)aPQ3GRi)nw?_#XwU3)Q>uC z1_F(2o8OS48vm{u8X&#^q%c2W0ff|`$hm4W@HIeEE+8O4875v!4$OiC6#ud>t*cxq z-86S5`ij=|4lnc_?6q4QgL*>$qs#T5S%P)?%$C{C1>KQfr;sTJpQvd1@c~5w0|PDK3c0kGUH)Y~od82yOjKJL z{%SfEsDIAe2~l@5TzirR(=+z?j3I^iY%L5JgIfxH+XWJ{2V;*62IU(`h`6Gyno1YOCy>$G$chzJw zyid5?%YlP4mjq~^mHUx*#4AZCCN*w zeS42=`rp*dO@fEyB$yMGw5K9d;9&A2KorsC`tna4f4}FQ5C?6|H9`)I=4U6nVc>`m1IFFiLR+U?rh8%7fh?=54j$l2;ve-*Ql1SCF6{At*CL-K$XD?}x`q2=N{ABIMHKlsfx zIi|dhH}JW5=%&tgbVFVO_=!C&&3yN(Wzx>U!IMc0Z~KNe7&92Br|O9%d3V5UUy;&# zMHJy~aK?_Mfcv=Ir(c{he&o?p4W*k3OG`;zUEOn)!13dt;Jq)eG(SkB{XnW6=t;r%5SbL8}6kxiFT=LYz1j7KleiQpVk3M^(~z0SL1dhnyGc>Xk0j zTcb$4G>kChY2X!~ff+qjSa?`|)b>~*c!CY716wO6>*Ardp)1#F_*DMs%9OY5E>DlG zU$rVgWi~-63ONM;Aht)de=Ld)DYbbX|IUSZLDo#azg1jzr>6w+G18j|-25Q+9E-d? zkXX4Zlj9)=I665^gyK_%Izi;l{>Djf91>_=tFE8z0p zZELt^5sYl;b?@OQBZsV=h6c3>=^*-;`y_m>>aRe44j|g*G4uIg{<|BF$|Ucl1Q@>Hx7ee19!Z9AIPT^O`DNu%H8p8f-9d~R+WzRdSHO^Hz)t9N_- z7Z|}RE_($M#;5aefC%GL=3*d&I9Y9~?s;Y&@(4?dL(@rd10&Q5Y~X*1;zrpt`;Idisb3f`gO1d`&sSM1Jz#b65x_d?(Yk z&|nZT^SAzVulMBoxTJ&%u%}Up=cxR}^Pca+pPZIh+8DM}^?kpn!|c>wk0dmej>`+* zF1=rF-&ITUT(A4sms(kMHI^Gr!~A^X)Vq8Y?mkffnO$;lT$5hbop|zF`}B>IsQv(7 z_2(jC!jQ7KNoC+0rBKb2?Z%x;mjz7*Vp^hB&uZHd*2QWw>AC)XZAkWta2i&O&a?3p9wJGjab85fW!Pl3;;|aMrgG)G4Z^4+RUGh+(yi4- zoFS#7U)F`{w~oOF79G2^>F-v_rI>XlLowf(Q~CZ?c-wD9j;og-f3N_lq<$pJ5k-5uT)lu3|N#6Ru-^rLlDC$=QVh$PJrYpv5|z1IA0 zgEjVj5yAQe7cB2x~{naphw2N(xIhHm>k3giV=pPksJrx+_ zofl8@aWzWZZYaqCWcv{?*su{VaAx*C0;TQ=p4vItO`Qb#w-Z&ZjaQVPM;{LQ$z%Dd z>}7soAoVZmMCs$fNNAIj4SAit1ZW|EVfs*-U{abO&M^%Q&CYnfd^6FKCJn!FXcH*< zU~v)nbuwn!`tfT#Ky?2p*_Z&?#Q1pkgEf{~G9VtLuCqc|poi?BTD8e*lX-J%B(qtd znG+>_)rrOTdEXZa4Q3l5P)>-=ek=IMqwx32+i0=hAmVvN>}sXpdtuqUmNu21xy5eB zHJf?{bTaBX)9sIuP52*cTA`bNH|TBe(K_+N;brkUkz?Ouo=YDNEn@F_pQ1ELXQ+2XX)UMKM81c-LyKSb=J?FP8YA17KyS=+&XLu&G$w^2^$iaITfrY6j zHFZiED1JOQ06k+&3^eq{V%;^WWMmRi`;22$+$=a@Kg}_Tp|7O(yu0hZf5$IUdF$nc zz0rB3L{rlvD&TBD=qJ46&k`tm2I!q%(87xr{ z`$o9%aCP-MDbVLSOSR@DEH8%+7SC5P)z}q!cLJPfSw9CNl3M) zvvS89X51#G6sHuIy)uG<=Eb~MpI;$Bwpr=p-F1ymBVpw;jp;vG%weT0 zn@Bh|>j!Or{*UOb+gxqy9Q)ei$_UC8uGD_GCUJc1UfJo z;0jw?sBi&q99GC6z1%LN(bJ-)zS6)e@|CignO`G;b|9JjD68@Vz z6L9n;U+;+;itO0VrMRDN6n{jMMt%PDshDzNXY4RuxIZ&?F?JW8I_Vf6_duFE4schQ zzxOcW5q1QaiT2X(0t~fOn!sI{)p*`hWLfMA6)tF z>^+CR!qiwtjnf)s5o#$ZDUp2($0QZe!J`Xb;D2?opV_MfeVHF(j9_s7$5f}mhtp~= znlxjhkP?x$};?IUzkg5mttDLclL5e*dt7Y@t%V@}4h2CQvf~ zu_o-6c7>>VTfYNwzM7zPp6SCbwtymGSp!6zcNmP#iK& z$}A!h#S6BOch&k9>hoHEy8~4q%ScWj_9j@W$t1feKzk8r4nX@T6*C!& zaWZH#FA*ZrF43BDa3q}k`?v%Ko! zyK}4KEhQC5*-$@gzv+Garwz1>XOeOg8{L@b$ejRf;XSfL_?8?K z=3G3Ul;LM-OMxa+BX_JpPlv7`O#i-Y<&-BHSQs)IIL% zz5NlL+G%^`iHYpZn0MWQ6^@*U(&B>-UJ)l3MnifmtMRva4WsfIFfG`cgEi40#XG*i zuuHSQ4viB?E#uy$IG@KxG`Ei zDYzb+eSFVkTXP7f*;~S)-Q{z7zo;0ZuTP>v-2q<&5v`U6t*>#c)_IS1qdOT+1x+M$4DC1aFJle~k3Ute6^mo=fG9 z;ny?=!)3upfXz)SVL46dlaiO|a^24&>Senx$>B210BH5&{M)t-WEsO}{VkB{@_ktzX z&nDErp)_{9d&1D3V=OaIEdlo}w|4G;yD0OSk7WYhCRlHOb z8WsW|E?}~!w*MJqR$hsv#!O2~=FI80din;=W9GfxH#D@cmsO8I%aK7ImhbgCF4b2o z+NV)f%O^EGtCUdrC{fw&`Wk!ymMX8+1U8ym1pdR7{TUr*=itP9Mg8y=!~nx@a|7gp zT-rYqJT$9?$ztn${+a*T^EkfkDU=1ku+0Revx8h@pIJ&Q78S6O5YNZ>H|%0)!FJRy zr!!T9Dtgbz|vV`Od+Tcar|*g>C+!LDDT{EFyNL1 z9er^HFE9#oAqMX!mL!bNH~(#Kr@`jNK#I!)a7ca6w?>$#g76ya>o;wSN^SLGz7KNr zT}`iyG^(i;r);s;YMP;{XRI5-?wF(l?iUmlB`cfZ?)@?3a%pRovy!@s;a6v zaZR4z#`3fWeo`yTOJ4|MPk(7FW`%ULJ@f(a=kF?7U(i0l4)`9}w|CnueU2_tf&ZZU z>jIox;(TpO-{JMnUMbuE;m!3jLJ%xz=y`A0s1bel53=`MBH)hrRpC?+t|v zE(Gkt@yhy)fB&)93OwqOb~3w<5C6yXhP+F(QlLLP*qjWOMgRE>9HNDQc|uXrhqpPF z3GiPcWVR?05NV2o5fm(xZ}XgM{^pth{{#Xm&=@K&Q#EPk&+nHwkFn_Q!as#hLomVD zCe}wMkC~y@6}OW`XuAURN_`J< zjb~4-OR49De-f~F*7s7Qms&20FY{?j$$WvM7ebRO)Bjy;SfFb1`m|`6*7R513 zCp>Z8&|5iN^u$`DoHa4JyxNxEz+rK5YYm*FPkR_gG2IZfccZsZi;z7Au|BqZ;SAiEMz?b zZ*!)OOBHSnQd4L+@!_`2wlsM@cyRU;(sTjyjGXo|aT97VNN?+K$KruE&70Pndi|OH zkaR$rxeLZDcy~M_> zRt_y7usgLr#(5Z=l$fF=ntWA{j-6 zAfPz_^qj3Vy_n@>C~L~D3&_cFEds^<#dPTqAvfUh%GZ5C%f&PWC<|V*=M%-1 z8GolcSzix>kAwjQ*$;^kwkx@!_;5PF1sS9rsB&%Ds(U@=@ggSJ?G1m_&!9kKkd=Y= zDNKsgr!rNwI?7`LfwwO@t=)`=kY1SVA|<>dtQN$@|MHlrMYfR{9A8Q-t(6V$278&7 zZfSmU5<3m#EceO9tT6=(FXSXJIuRey6-qL-W;T!Eqma4e(Qw%jn8xCD-{Sy47W_1_ ze@2Xly)MK6C6$tvLe0s=W$P|1j88<2uWo^1mPt%XtQ8g!mNG0Uxp`!R&-kZN7O1(d zPRA#U#Nn3FG17vxj@d`Xf-jM~y%p!o zB`bgP^A0YBqGXw0B*4Yklo+ta_oseSz%k4RZshQuio>_6mVbdeL;1$sjoQy%S5iZo z9p~1jn?HxgI*CC-#MOD?BJbPnsyJRIe;Y1=>Tlhuyqs!^K=c*=15nD4xlOUQ>ahr2 zdN(AobUx3yw7d4svDuRja#1t(&4lZF&kBdvRt%*TDlQGfp3CTg=7gco9BkwNwc5+% z2DTh!%aKh*ocrZ$dGwjvPrJlX?pDA_a}$$iyZRAagh8_3t1vTi=43LNiHUOEUz@Lx z9tU>Ad@zI5g!R?xRhD%kc(Jvhpbe{#77KJ>fae(*u1qyn@S4ZQPm@oWz=o!(DpO0O zw77WYPk{&r3}~H*@lQ#40Mu;H&yzLb_HW6PnUr#VL`eG+g0NbuRH7-%-4vj*_Vxgs9YJduoS?abiuzJNbuYRx{zcb5B!RnWtE0n3v6FXJ_xg@-yYX z#m#gnJ^J<5Nwpphn;v*$I-~2LJ8~d*?FX)BH1kNdcp4cPiTxfY*d#tH>wcu~GymIq z(1O2r$GSkx{Ux3HUq^p>%D4bca&HK#(qJqy-59M|Zb$=V0&i{k?y3z`=Ixxp&{! zeO>4IIl-cFHyb<>6;EF?`J(t=LqV&rsjn!XB0$g^X425EMNaN%$d)Y30m4T`N+Xx7~t9Z>%p&jE3CFIt^bKR7#)YO`$tIlxeVFE#g44DxPYLG9W0c$RB!Z;ad8nf&RwooKZGlU znI~Q_x>rNiby@0CPG~WNi@c=0XK-V-;_vJ!COz|AVfWqv6AR!^7@Y9v371f5$w^U z8)sQ-D8RJvx0S=NqnKZ&q`nF71l`~-xAhqQMOkD~fa<_W9)cK?@n>c-L!47+w)#7t zre2)CCh|ou&XTS&3rpZE5Ib*_;8g6{-nVtQejmd;ypDCM-4jz)#4m$mUD++jiArV& zZ6J51m!G1&6W@;B6~&9OB1hu)fAsA;)3vyvC7I31R}Yt|-_N?<99roi=xq2%q2%||hI4u-dMEr4%#s~SZU&^wrV#<0AjzAHj{G+CWl-7pG@Ko%8{lv|U zpKk()UY4*%#_fGM32p}ggy3Y|_o5#q1LBsLO$7su*4y8)BU~ZhWIi|O$IB+D5maPq0=u~z@-=)Bb{`o!A0Uaz6<>awd|&XGN6l?a zxReS!rPsE2o=_b0>Xy4I$b9!eU0kteC5G@c$~Ggn_;Cu`!J3>Z4(VCu^CKIqJEAV*sDn9?5b zIbhYE(OE-doW6x2=9nx9GRx$Fz)bDM)?mv6z8!=B8=L}CK!&k#<7ZF^I@ems|Lymu zj|V9WVFGZj&W?SLHg%kRO-wj^udXjSTio1Ze6eSyY>L1m3zW2eb5oJpABrjx2?TXN zMORk@WNXm9_a1AD(L7z+F`5ovZC>DCFtPscyJZV?*0glR z8uT@oEqQb3^-E%#2A_EdLk2U?JfyE#&dt2}KyG@)ieYplfs8aoorzGXtSww*a-oxE zmfofOZTf#D_rd&xyXWj$kmtpvlxKQ}DP}HpS574BHoul)BI_@rjH3!5r*Yny6MXs> zn4wu{{ZuD0NnyYYzRD!#srSP6J9OMAnlU8fqsREd>9hu|kj%lJ)I%IwculPYo|-&h zVQG>8S2W^!_4{!p>=$kYg;7on4vdbDv^~hIa4_V* z=vABXCla*`C8JFmxPQZE8FP!+KHFcYXzx+h7{EvRD4?YG#;7YlA|DZPg&4m&Xb(Y! zhi`)iA<4VzA9;D+y?NG`Br*Kyo8&6zcs`=-xp{iH=6+@wV=EZ&()v=7mPE1Y6lmZGQg^V4Q}#gi-y*CV2r0*yWFr-8_fj1}o zF9}+({cZ-DtgWe(LpZkJ=PBSc_;^5=Yq3X3hXN@|0N~#00vH*o(3o-XkXvGbEEB-N zuYz?^0rms`rTKRHQqgQvoL}SF!RfP_9II`G^VQ@Gv(2 z?!Q{wqD8RV${3Us>e9eq5iXCoxGZ0!$Fbnl1JfTM{mqT!7ZNyh!AptviIMR z&RqF8lOqqVtN~3?nct-o19mF(NM|MhIBWmhz1-vN;OD?9{qHF7F%Bff_mm)<1nCAG zKrYJteM!zmn@Ab`Y_tg4&~=)xcQYb;+>3MQ*z}=}cHgm<4oFI~_1=mPO=ytZ^L* zx~uyR&{~FA_lK2Yj@W-{<`}+6`?^CnUT)5CJPF8mh${xSxLu>lj70_vWSL0-->f`q zZA0&$lTbwmZY-wZ*(>F4#+dI8xvgRdfAJargdbCA?mTN2ID?6ITeFnw>o9lVM*Qr3?A9EizB?~Sp)Uc~- zXUyi-zkl2l%FzFK^Tj;wtBkpSjO>{q8#vLAiu(FSwi{_EDJYJZF3!Q$UW>^L_lI;t zp`Q9EhVOj)LuH(%FH6KX-jYuUFfHyQz>(?C&;KURii`V-ImuLL;*cv(N>6ei6`{Ol zhWIJ)I3XBzZ?<9Na&st06U3Gt0&jF;Zz#z6ZVjOn&Kf4ILu`vV>GL$s5bJxy)eSPqxmP@lA1&#k#haNUBDTY@lP|*gpMc+i}vS*yn1J-yShCZ zCG&NP#&J$j#HmbO_BT5Asmt#*z{#~-itzdqxZVpfYQ zv4sbiV2r_Fl9j0Y0)bIka>CRH#UWARU}uh1dLlkP9%dmM_ap;Kr9jbkHJEq#h$Ai^ zCy2RqiR8%)R^ghP;sBqrCp0B(dD5`zTLdf1#h9KRIhz`6 zxR~10`)HZw$sL+0Mks=WL`+%pHvFvh_H+V70jyPpNyG)pb#W4%g!#M*gts}(uXHm* zc#XT_;t^h#{WCerCxD?oEWk|dQj`kVQIMk$r2DDS`7{}`(v-H5cmG)+qU$JVJ}9mi0^+ZEiFD@Lws zK3EGDRctQfR&0(MYejdN2jQOafZJzQcoj>Ih{L%p(dnMda!}S2WNU5<4h6q$!BJ_J z@-$=0?^Yte6CU4vdrl!LaCwBop5b9epln%@sk7Vo$y*7?zEJLig__s@D^WiE%&z`# zJt?#*$=KG)--eD)BmhS8yE>09Ff!6XF?~c}^`C%bdLCOc#=eC~PJIcM3d$4pi^fun zS&Lb@AHmQBaNWe2nCASe-qzIRvGPfK1qE7mv*MUTFEg6yEC0R3>&g5dQGfz8g~?}P zZ5!zW1wXdJ1ZozJuHC?%xw$uIgTOg)40^qa5N>Uq_uNFkD>0e5rI#{=AAa6x# zX6F2d^ntatM9uvvEU)YFZe$-w+T%yu`ZhT&NGFiIyF6OUHQEE^QT)Nos?(}*V2b=* z17btqUetULF&W+DL_T<~^=s|` zOaF zM!VxDD1n$O@iX&%MpB*Nerez$b+PqrcNcgd)vF+@!H3KOd|rqGHfdYS_Aw@Ga3c^a z)^Ht;#foVEalfYsWctfr>ph|MK6^&^&h9%wTg=r}EC-}N1sPI*6GjOktN=ZQc>uN= zye9!zebY7b|9_|!RFNQ}?;@Z5FX6!8HfVUm^XPc+rnQx3XnXtP#bolu*CCj>nCM{To`n;IG_-|q#Q-}oo6$ivepQ&ZSFKO`Q|9Xx8y)8?-2d4w$LS}QL zX*qAJB|lSlb7pCKC(ZmO&7E)gMOMX!H&guDEEtEURZR*31Tip_24y-im1AE?4O6`pu~%gMpt zovztF2Au%UX>&jj6y_lV!)-?Hf`Xa@U2gKQlI={W@PIj7&m1yYe$UqfDTzIWU=dX} zvUqrtSXQBi*@)4`l6zuD!2*_Fu2s}QD~r<_E_>&36s(B%>#$Gc~=0fs7Q6@QwfKP&bprPt=meF{s3{yBa@V`x~k<0D2EEZGs8Yf-K7JO)G zADFg?QvL5?q8w=ua0+}nS{69;>I`1SK_7p(PmQ+_AHP zXF+bLLakv&G=H+|v$>omq}`G($j+<_MhxR? z1BbelK&RIK%ByoUqWQ)|jsO|nt6y;MF>v!a@Gkb*D^6m_#rTab%9l{lXaWS~ZLjCp zyOa-E8pf7uQ7ka`p}KN7`!=!~f9t3eNyjU)u*9|Z#BbiF2y8m4tB>GhIq_b1oM?18 z4r5?M3+cbCU6Lv_9mBTH4C;)2W=sw(A7={j7RfG2lmxx6(9-?NBlEDvrABrJvojbY zhZtQ2u8jLa&o@JV3l1idw0<)dV<_;@o#8tY7?iG8VvQbly#S{#kZ0)2A7eNXost*j zz$V3l;}uyft(oW#GtRS7rMaUZ9=DdjUmmZ{FY1@XCiA)fu6;27ab3`U6x&UzQ%`wB zq$*SivcY6ydYmtSV0>2mKA98mY)g*Q03fsVb0l%pSM0bzE*vMtj0@@deS^xn?OMiMSL}3Znd9Krb*_dw6MKtR@2DtSx?wP@Fd8t8&DE{I&XSx?W$_6O?O{bL{A#xPNx?O8{ zW#5uCc*~^7SZvW_cu!j7b7NnN)0Ob3hs7x7z|7v!IX%1w3B{cQ`RA9$OG%}E?eR+IfKQEbyRRp-;x|QOLtn+|0~FRUU(%q4#O8E_C+seh|Atj`#jK1w060Y)qw& zFMyI+IALRIpR9iyQE15hPEP9ZNhJX#W}$0bfleMO9bAO@@J=nVGO;nqMOB@Ld6Oo; zf^5gf(?0U4sQ&oz(0QyG{wn^tmJ3sn@Tg)-D>_#Ni5R)eHaH)Z?kCW^moEKMA97G$ z9^E9&r^MjAZ=lR1=}54Ax)t&@JrKs zZ79KaKeC$~4h!r1Fhcc+JMu5$x4*6lo9df4$?x7CF&)M*Z{Bn^(#!6%Pi}oI*lPyS zxV41m)%%???+_yMWxE*{p`{MX48;o(h$0RpE%W2UIN0*FRt@*8Tf({j_#>ZK9uFKd z-pS2H7G6lbBh8K>Bjla*I>z9q8Dx}O8?yxMWhd!V-n(oR0Z|r`o3Y&}(xp+I?jYwn zdJtG| zp;1z5FP=V!hQ$b4mmDM}_Oa$%+u6kjpRRV|aceyPLntJ0c#k~f(Sq$r7W6$mqZ}<0 z^!``j_q1lU4iBVVH_4?zpq(l)p)Je)Y(o(Gs~C>rCzU@cbaZsz;uNjNOAIGxW*W_a zo6@Tdlp}V8Q!5Q~6`_G6?n3cb29YgH!gbo5Z3}PJ!#b);~x zojQ%ARjlxBM{lkU8`Frn)oH@ibJ48~@8&jCsq>wO#KO5!<}T#JH}A#0Ewh4rBca;V z8SHo}$RE;2h6?Y4d`ez7gEs{I-TtD|8lHDZTsN|;TiLg}c}d{H=(1Re-h!jLs zV*e|W7=clpPAxD#T79mMisJ$$BOgB@NBBD^b8h5U9k`EC_2l zwZ_3ji>*`?q4mH?q0G-k8UJ0jZ#K2AcOA(PZwzfD-d(&^D+Ih7%(dP){o<#TJoBM! z@-ei*95&Z%;x=0aY^d}99#KkPmbVvQ@g=j@M9!06S5~+FpedBrslOZB`aQE@Z~F;h zr<3$arj0%0md~0a`ND6W@Qob?#$m+KZc!c!z$y%O)!KKy29@KyHZ}CJdipq&bKO%Y z2{7?YesovVW<7anM3d3^oL>6rT|i5kk#Vw-4AfUx*l^lFF=u=8(TRzPhdU_$Uy^lc zZ@!G=tN)%io7WDcLy5ZtB2`7r9>RS=7p8+bLDf34wMN-lVF3+j7R5FA!XdQsA_9!e!IVHTuLF|5}Cly z0#_AgVur7lJf-!MoW*S=4fI<7rsE#q6lpVxL;z0jpJ@}kd1=UdApiY(VzeLD*^-n2 z19N^fWT7dG*mVsm&o!c>w~y*^z=x{B|CFwu<6}jcfN&}+)*kgBQQ9e|oQn;pOaSgT z;{&L@VrD2+M2_*@(l94>4Cx;s37|WW#MT=6{8!vh1Zt#zKNkqZS8x5qjW1_ z$CGevqM>NUK>=L<5^#P@9#;3FA4bsDiX(L-6q-9SHSfc(@xf5Os%;E7VWv4u6;Y)%_JdGpY2>md7A; zInY%-3o>9FmmA6nyz;z3OckY$h9U{@%ED5si{r`4tHD zT^(fJx!9tfLJ>2SrHPEhWrGRRD z-`rG?lIeeq+A3AJPVUJb3sshgWeldyA^cmTt1LqhUUuEh74wE!^Pq&D9+f5sntgdOwvZJ8Jh3lD(Y_Hp zq)#i555Q*hDJtJCm@4ZW&{0uoi%U`RdxK_UO%UN@+lF}iUu&tgPz89|_jgF3m$ePC z8r$12=R-|I0C$W~>K-4SRPlf7c(U;*qnv>%&fq;axDYJ@5u*1Tki_x1DS+?=Xlr{% z!C!xuEvx@qh8R^p>-pOkUp@5n#*&M4?xF1Vw06C>O`OA@Et=bb*q=d^=lEo28+pE1 z_<6f{MN!q{R_!UoH8x!;>?SU>CTDjq&`n#2Mrj|?v~OhObNF$t#KneE-q%fQLTM(s z=B8F++UdqV<7~n{U3@X`Wd&jFHV)SNoD$R3s=DUple9B7A|2eChU(RAen2-cUw#=q znIurIYtFL}p+-e|pGq@vt>9?*fIjww?i;FJXIt9tkU|HA* z{6pdx(MvwbW%a^DZ6`6srb7aakE@~ITa8?2r}j5)Vq`_=J2EUXY&@@u7qps=OXn7* z7#&V>9D3z|hw>i}CvDi zLCS);7QgiT;^Oq;{QTsP|AyJm!8zyiSBxe38~C-ejjj!$_kk4@ba3Gt;&yvClxaQ$ z9Ls_l2}<1=L?z-KH>s?5qXwRxiN6U+9BF zVT)MYkzHj)T*Xqe=y|8_ha8C)ex(a~T@2D}pPrUh(j}VD8KUlE|3VI;(h^TyH@OI#! zQfwf&FRO8)b`eI+>Ha9O&7$n%=Ma{ae>w4f29&F~tm`LI%WjOn$tvXb(0p0^90ehM z;yMbi&tf-iRYeoH-2=TzAL*ZuMle}y4eR)WGNz?GjdV$h*gcnQFc?St57C1%*J)Oi zDUU+C%%-x(O9DY!1V*2d44#P8!67f_ivy%9%h1wv7-i{+c2!Mp4W<8vNALgy(c}dF zZ7SPhXn>s-tsJz{O#__lmOF)jY|x-TlFgpO`ono^82x68=?(LH6m7V-ul)i-saq=a zWa73>fZJ=s@IVA9w9UrR{th9z{<4`A=U0C`gHXKDe&{QEYMS$Rth!y<;5hf3stvn4 z@<+D4Tu=9R05%L%iB80D<14&CNj3IKZGcXGfZo9-pfT-1#LG%656P$s^I5YMikIwp ze@aD>Egw}mC0*)OGjx26n%_Srctz&NwiP4j^zDI}L3QD$}b^0UPR zj+mBgZudsE=K9(W8sWH!rgZWWXQ{F{Glu=7vnQu&hVx)cN1(v?DtYn;)gX=7o{`Dr zsz_n^Mx*7y^jtXEg9FLmK`bPi!{mS}5sZmvqi-WP{h{az0jSF>A{U{}Am|i%G$MZw z%75jlow3Wa-$|effA09N^&V_CUkg<$U22^8r^;}m47W`h^q2O6bd1OQV88_?n3%>B z4E4Ku>UFfLJ>3P4_vaR6tKZKEqf3qJynlHV`8ihXsyRD9>V#hOf*hl%YFh$7h9}6B z%*+@@Nl!SO(M>b{J-G_e?Gl);9-4Az=?Wo1@G9*rKQHeM0)e>8%f)qJFs&8gFHi}B zw_>Ybyn4lT)R?jdw@6H7Nh(G#Rh)xvj>+EM!XZ#gt@N5kQ(mjxhHh4Pcy7>!b`y@r z)Cq)E^WY=DMQ9T}E>p;)pJp`&;~ySg)QN>ai@(_?x59FsU#oGMe1c78rCg~1pk(a* z0>kC*WWcP51AOoLj5+rGOk8M;CNJdOraC)&ZCV%qh|Kxwk~T?Uwvx<=WHaA6GxKBCR^td3&wm(D z8%`L>lWv5Lx#2>MEfO? zm7!BOw%5d!MdZ$>&4w;+R#tl1h?9pBByekI33?&tyB8z=Ovvs)UWHF-R5t&@{0eI3pHzI1Jh#J}oJ{J?ZFF zXnzdX3vur*OK^bGYW1wLiia7?{6}oGz4`c=^vT&CGqem;PzpmPn@ZgAkorWy?%dqLduSl!Wb(C*x<|>#NBzM3^CS^Z9sGxL8uJa6XX>q8u&eP$ z=xA#ct-8Nf@Hdv{h3fBueX)uBGLc9091`x09Re$p}-^LGZB7MppiCe{$O9tJ?uMG44Efxc6h$&mA)# zUJnr(ZzbTQuTpi=|j zQY**7*C#TIe3THN)yc?$?Y{5tj*egaxe2}+5P?@42N+OUHS(B(T#cBHNgDL(NLyYX z+K)dzwb#=dkd9@fM4FqJJS6J_$vMj)H)jdd*FSzGEFjQ(U&_1Mxzpm}U`Z!K-0gWz za*(UrO@Ov2>3ybtqE5W9Mb`Omio{EOCg$cSKN|WJgaQ+vlOaC~(GyDXv>uT|skF{oGOyc)Htbjse_Uimw)7DM7d+zwZL7@Vuk=1r{0|V5^jY?y?)5%nI13yWFA`gUW9n;gDA6;ornu(bN+y; zhPx1~dLw8#{&>t!WSIb@2&IVOO(o+ocU)Z+XH^-^Y-LUhl~GCB%!gBQHqF%7)2P3H zq@k(#w={-;>cYrAImy-DwA@Fhi8YM~cF($Ma*+{`Ca1EiBkFSE3N#d0mzKX~Hbd~7 zi1*POR_;cAyjJziiQK2RHxTS&jXgMHr>&3t!BQ(WtI0tDZ^O139qfDLe@rk`{ywq2 zUb~_uMahIi$P~~j-etzN9qW=@R8;wNiMU~Fr5m1dmpl&ORQ++^UHJ}LUR+D~EI|Rf zg@es1GZ+vUCCoyz5@J9-k0m=~$uynlTIEe%|NSt93AiLeUD$rP`tGYwdydKnlzyl8{Y z=zhxLQzT$YsePKospH(8dKd&Aw(~gG^EGYh_uN_ds%SQTP7n`1v|3eHI=$N|;o6&czNwdF^XjF3pdcT!=c$>ENDtSucheb< zT?Bwq4$~*3G3YbjuGkIPT2#*Y&D=jaY3Z9PvgU=(U375H+;=PL-iRFZih;Ch6LK=v z_mnXCxm7fTTp55S5QF=~+y*Bl1PRwMBHfdLW7^Jlrh^e_(l|0zb)4Jqv)w7yqi$;) zg$e%~&EXd8FMLZqJy|a=FYyzZ9?+w7lP+YBw@vsq+sqP|s^>K493|!B4%Fie^)c2u zFhkmXKOT3VcufNFEO%ciD~IMreA03Cthl+_F1O5mrKd-2Y-AKjM`2cDM?H16K0p@^ z92%d-mh9qZ6WnDGcjbC8mnX!>w{LDML-ilX3IeHP2C%KV3b>VohVJ{aR7#lF&;0uf zhUz05#H3vhn9P1&cpTk<`~rUUlfuRV8?NvjTsH?H=UZdMHdaSFOjQ3r)+aHf^AT4_o4JmlG$NT5o7vk3$Zv;=6#~=88nmv5rdt&(TKc=>< zah*~&)y0O>T*O7A2kU$YNm%~(U`+kl=Pxj}`wvp(^=#@j3#A@ATX~E3vebOI{9uy$ zMQNO{?6qRkj~|`t55X)m*WyTS$5LJ59t1|7(xduim))+t4X*z5gXeedgan$!ji3lE z+v-}sS8@fM)f%wQVCY8`#_ekpI}~-?Y#E((b`N6{xOHb#WdfT-lCo3J+7B3*~l3FigSy$;7(( zR^rnGC9hKUBmbnZS*SR5(y7EFVd5W~UaK|8;?wHISQp${~v zY&IsnGwRD_gc4}Wp_piKQvvAU9V&>*oC0j?b`33~H_#7c=zR=ExkcSAbRX}0 zWx=%xwMj-MeYx%O3TyUDLKSAwcbBGawHnQcuTgc`V!La&17K$Q5G?DWXn_rj`YFisr9j=6+f0hT*kD|UY(qu1|qti!ZOQ{sn1qLOb!e8 zu5V17{r3zGV?5lRDC>oh`<0gN1Fy8qs=DYus(^F`f~avvFq&!7;Qe$pw7tI}c+Ra4bF&{TlT>#tVtBuv(#L3^kgCEOl0QDiDttS5RYIt$s70u-! zBt5^5g|QQOX;a5)F3f+_5KD3Qt-?t+b4`0joS0%V3nWgJy%*Q;hw?4ou6&CM{2{E{ z09uh>XFjW2WmO|K91 zKCQ>xKYy<}&duHTy7+MG!us>)R}_GrU#emYoa}Z;4z^16Z$aG>oV^Yx)S~8$J?;Sx znX{@>?#f>l&Xr&LWY5xD@Yi? zogxX9qEv?d;jQ_plT}FDrmJI;RNmC&d+)nglyI{4D%gR<>J~UBjTPO%pBPhRXJn5t zT*@i&oJo;BzrkCu+0eP)uPtg?ifc%m&%{7JBFXo%Ka=;OjOGL5D5aS7&m70o0Bj`_ zj^v(?Rg-(B_@1?q{MnOTJ03T6V4|n>1F@JhNxS$i_05Ks!|uz)*M`h7KvRPS1+E}2 z{9!ITM3ok=^n+`36=Zhf>_L()=mw24gbG6W1)0Fstcn~SZ@ojtY?iU+O6gf?`ce>8 zi_x?1yk<|E={NrS|JX(z>w2xaFRPQx&3cC`ltQA1R95MPwq`m#39?erzbGAlVkgj1q0J zLW0+ecEO3LATxkDck79-i2c(yQjA9%e^R5TKYd*9fZHmo1lpl6Wtmc|QYl!2L57UA zOI3!ghGi9`oovc z^da|k_exrQHZCwGR9D|raFYRRjj279bb(py{iMNQekCMmp(2SxF_!6Vv%;QTb4fc* z-va;qc_e8+Ca5)e-uTaBc;xAE6^P$H{H0MYnad2s&EZ#K21TwL@@0R0#Rg6T=KtOo z|E<4x76K?(Q!QmB$$bmx4HlIyR#=Ta3pH)(hXH{Kb6%1O3{M4^1CS#3O@nnzoNJJ7 zOs;qjj3$Ahj-H;oZQgr1%FHHY5Tem8xFlRrF*uH@#&OQ*6VRV3$O$(#HdXY_=bH0*H2vmSP{w4o>Gw|=4~+=&X6q{$jZug z{{H>vPlVyRq!MRbYQqLm4#UovSqG0;c|9-Y2EU%ouHq>q{mBI&vV zSMp*_(1;inXawK3mB}V=xIVH!OImtZM6ZO?&`HPhbb&LeD9qd$pT|M4_R~oS# zmEUVP#X?WPhFePV;_V0nwx*F+)3Y>^SA2{dppKaQEw(kT25mbFJS=5!wz^jJ9Qxd! z8@-d?g~O6HWyJgrX{C1V*C*kLH|3@YQBOL{yWThq8vFXXwFXCOjdPp7ZuY z2*Vs7Su8o-wShPKZ>cbE!J+jNV|@Kh-|vU|p=S}3XK{Du>rC*`v?FOF^aL*THvr`R zyg~Fs3BQ*-PZNP{Zn*=uNx;j;dlfr-d#{Cdi>o>|xTzaPbRciFHBaS+xxrI1D%Z)7~@rOl8 z;Arv%oh z$}s3%F?;T_V4VXZ{bn3P0>I$<`1tq`jC1UHCjz)J;a1Rpm=|%oZcxw%T|nFSG6mdd zg$18-aI3uj0?CB*`>YQK6I;^fa)Ow1hq<5BATl)Lq#g8tTeh^!Ae2SAv@J3-QrCK? zXe(;}O-x5|I{5kKSu+CK{ZV{bwokaomT~f8lwv!~zrEz}M9JVbFypns4C1nD5ZV80d61ac};qw%y!n2lM19Qt+{_DzXd114qZ~P14hZ4|`EB0A?BoiIp(5jl}yurs$P__Guu5!W7`}Mee@}^*?f^c~s28t1rL%J(> z$CQD7yh4KO#nDhl%efS{-QaD~Pp<2dnhzoM{!Q%mx!MqUIP*uwS9?>YvX-sI%En+7 zs@Iz3Lm3h=FJnSk-Xri^Ws#uD$Z-_N9a{{?oC16@8aq7l$ie zqsqKVdTO%o;}+yyHFxS_@8)H~;4r84cntuMfU1J*OXPyt$hV$& z$vwxsF#0EUFIJWBp7R@Ynq$Nx*a3@==TD<&FX2F^CFZbcjQf^&p@^u(;Oe~7_@3R* zlkKvd$vPjkSoc!uz%jj5)}OQ@p&r`of%@q{6aHx2-+9-@Gp=FAeKpoOq*cOMrBsV&^ixVi4x9&$#Lxd$7EB`#ZZJkX|g50v{%z*o#-7mfgdSlPH|-#5+r z^i*askGH#h)BbtH+T$H(7Y7MxZ3}s>km>d00g-ytW?h#cs20!lB^xt#`LVmt5fX-T z>Vv70n(*-}f!s{I<)Kd?{xvhNL9hl&ob3qP+H5^4EnE?!v)9>hz)^Dh-L=X zK9AK`ZWZ@bI=z9Ixrr#PKX0pU>p5sLUys|qUhAV-x=QShonUrdy#B9=`ZFbMp5+Oc zffrs6=pZmpaX^%>%5iU|+!_-QpiYxD+Z`+4o|hgGf$zs44FBYsd~-LPpRj182NL`%GnhJAE(2AMnW7 zRa3k{5#MNwHK7-Axg1?-h8Y9jd(ct!nV@>*akuQaFc?x-!7f6#2ebH6pwgYOg@zgU z9`ds%^xyJF>@y-ewRrqaAjl!k5O%e5sm`HnOsUyCWjRKr>l8{i5vSJGu zpcU@CA3$coT>pTg+tUlSw6wD9a&)(0l?ux2a{Fl^&Ed6EYrH*il_Y$<#}6}7GQDl< zpr0R6_Us9q|Ehdaj+C!HS8LquszulseRMsWg9TGyl>9lj=09G)G_@e}#x_Ot_~(Tj z<-WQYDJhn zT8Fg-Tk#~hTx$un{)xchN-yIIVLJiAS_oc7hup3IhvC=WR}U{L3>5Wvdz|gwC71Uy1=w*LI9%W{>wf{y-}HSN5M{ zW;j3NDEsBN84H;A-VB-ld0lZ^XBe@^=U5$uyrGmD{Rm)UALcsC3~P)kYV%8+ewjrX zC*#SY+DiED1h#u@l3mUBqtSdh$;EG3F9WZunnvZ+a?v;$N&R?d2|j-mp%(X$4gGAu z@);z!WmEZ-@I(XLvXGu2iDb679&a{u!121sTNxGFQ`An^`X39lWs!u1kGWtZfEK`;F^fLA8I2r#=`kv&wKfAM6 z1V}``a(s`+Kp|p7ur8E+-E(**i?@{1^oiY{`+)6B3J^@~_M0_?v{)W!L($EO1EWLF z8&S@XPLUw|ecTF$@xsJ|^FT?zt0ZI=5{VSoEqEvZ1oSg4UZ4=}IO(Kwjpo_t4!prd zTId-#jZs6gynFG2!o?*%Ihj-X?7&&vWf?Yw);yT`4jEi*B@HMMu5)_3A)@KIy*}`X z0NF?wHQ1rD`N>6QnFftYT-1kpq9m7g{<~{^b_DSVF=X`O3TKU;hb&Y3V5?YT*gwut z(0Vy_B#(09p%HUMa`BCcY#X`7Y_QRM^G6!)XG)3Lb$|cDR&ic$4SnZfh81&tz?q3* zkd}-23_{_dQmZ0b>B7dB=dA=rchPL@r4;E_$iKU~_ok8`z`kz9grsdUpIcRRCIZw} zR3rec2_g5uFFUp*zBdn*LFU>NFSI-N{fOzIs`#LxP|zWx1}CiLX%1K|%lf#Go838t5ft77xG%z}Zif~dYRzTK{>p1V+g*QP%n zIPxJfl;B4VJd6xb9{i2gMEH%`RBox@k`Yx5tqC&$3DsQVDHW3kK5(b`^gEi?#Aykh z_gB${tX|@J8&UF%O@&&}G3z>(>5b=DV;bJ4Es(~2vNiQ9x2&?#g`)p$=bu0RwxAmK z+1VgRi5`!b#!}IFh@HTan~NqVnd3>IGc9aNvyr0O`qPR&Yc`DObv&ayu^vo!4l6v> zo=Jr95mVom4*&WU0?-3lkHQ?C?1JxqFS?|^^YpYA$m;LS%;l}#=LN*Sg5xXarZv?@-x@Yr8<-S z9&0$3OSef!P!g!5eW9rI##ZTWh7#l^1@eF)mJL53$U@ET~j%j{#THQ0-ptUMN1Y!@TZPZZM zz)fx@hrV}~K}%l^YU<@%V`uN^Eau#9F*3cK^)zZWFBFU%pBnFLGtExU(8PEHe+wXn zLMY}lmbaJlDkWdtv^HQuRpND70cDRh{?w|}boiA}9IlRpt)6^Nl1+b^1^2WLDg4A5 zQZT*&Q4Bb_zo%Il0eyCai)uaqqH?YlGSs9Anwe82<+Cq}sxmbwDPj4cK?PYz*L*yw zFnWzV1-bZV@&}(7Qx}NnBBEh`eOT<0F86&ZJ(86y-^50QE#gFnym*qG*LQb!`>z*# z2%Tj+uCob=i;e;pSHww-Gw19}^w_Vzt*ar|b_z0-Z?M+~>d7n{Be`;}y%u9X)SZu& zLN;FKgx_`1jH+;V(BiD;lUl>2_2i4E)U5h0^X|J~qAKcEaa0^*_Xzr_5X(?i+ht#_ zgS7y~r-|-D`_nOvTrk}BViG9*^>CI+Kf=zmN|5`>1K!ZIso@FLQFpr~i5%TZ*}`>x z0#`AE?~5b7+@J%nra88Q{RmD5?m#Gc=tK!PP?{*Gj`O=R1 zjgAt2^_3oMd#_A)iMt3L5|6MD)KwJS%R)UnC+6Vp8^5!%hxjlM{J7YYp?r+!`K6yV z%zc;J5^x5v1B0SRE+Ioild^!?)18Tu(QNtSh_7FBJ6Axn0Y3maLJXYY zAS?9r^wv?gSIJrvwdWhMX$0)wCQ(s9U!kwN;E4Fq)FS(uhkOjzC*a0Uc0L2CMtdGT z_vx~!DWXuP%?htD}0q~q6n$du_a7XhI4$}Q!Vsmm!?Ia@s;0wf&Jm{Nm zoB2X^i_yJ87;AK_ByIgfr@-JuG|I0E92kwVv|RAdV~;4a6JA|vB(9B zh*l%I5s_kGd@I@3e6>}V)VhCq{`h;M9M&_uf1bql; z-ISpI=ST*Vq(URiEXF_kvMB1ES86*L#iZ!1H+I-g29&KI;hi6BfXgWAmZ|hiK~Hn9 zj1p9TmNdRemyw48SL&BtgUz>YUzlrGuP+*ogyAqc`u@wW*&FVQL9YCUbq-`rh!6Nz z_8yF{HM;$j`Z#DT{5~fEpf&xLK-9VD{(#T=c6QV7A3(v^NdAULl64`5Mlmaw{Mjo0 zr<={T{M;=p!b$ZA2aInDNq0_(|McDcr=Rw|M;=;wUlYKMbpPn+=s4Zn+#DlkQ33L( z>=&A*`9wuUJG;7A)-jhSkW&LJb|~Zz3KV)`xKM>Tdr z8}*t(LhUmz-UK^kdEJo6{p!sOFlKQ#E2Y?EN+4zPtvFDx|vKL=DbA?Z=$*p3xfb zU+B+IANBBjbmP23{VCffsb$I7m<+jYwjygXBaZ~b?V*IhEp#yJRTcJ20FHG2g~;nS ztuYr32Oza9{rckIfFrKQSN!Hwlf~TpAM3G_tZ{e%2q;&SJ^uq&YMxZQ8qR^8pjVgm8k?=IFR!+Z7hL?-CMzRAJ-un2!`$b|L6ZXpH>T zBeW)aA+g{)t6Hb3H*peN28ECi$%g9QrV62Gtp@d7rBtTah1ISMuM2xth@a^ua97N6 z35l6BMkK(+eRVQ2Gs`%IWQ-h*zzNL-NU13S%?nj+ct|Ztd_PP^LLiSq%ha?51^GJ*sC~WaUCS3in%2=5fKFga+lAlCm2T5nRr6?B| z))3((dykg8{c5s0zPALJ2lAWQ+N$ExCxaE<+sH5;+#^!#qo;4e%ciMGOvAe+`XfTc zeeJh{O6=wW4ZG$i#^?FD!^r!Mmx8 zGOk!-BZvF!UD`h@XnROGEYOKS?&|1?!Tiwee+b5uTJAMb`U95(`Du>rk(`UKpb_jv z+)?isBdV&ZstJuogJUzR-r)OBww3(LlGUUG{*k^L`KeneDeZ44g?~8ceZH&9Ec-s8 zemXlqeZmy{Tgyt%$Y^1g=qJ$ww-*r3BW8yZ_77PO#)B$Z0@wN2Ql&={$kj$-5WilK zWwCMB@hrjTeMiQr!2M{t-~SR6nIg<_PN1g}5@D^+tBWs-ovlg?I^CS>?ECq;?}aq9 zi5YBSDIjy|1lg)(E~K@j9qBD8zTGqzb3iK$y|?aR-C}^LncAX=%rPrdM%vzb4gwNV zU@{DeYvO#aOkh2fzcfE2BPOB++PQMDDZIP;>pAP5$^3`NvHFJup02f~^s&B2wx1(u zbTtP-&Rj&CGqKrKpArv}pJEOtOT2;^<}WXTXNMgh zznzxKr)}gC`P*>QSCEw1K5~25nDV+#c4Nqek6hK6xo4yP&KI?*0Ocv!O_k4as`NT@ zxG}sVm4fe?Xrh(te`OK_{%>&||5$76gREkSAXkcZUeE{?*)L%PtyJs|ed-YFrNG6^ zB==k5$q^b^F4~Kn`p@ERRrmg0o9@>Q^p+3m-%kHYV0q52e{c9%*alN8HI|22F0Srv|K2lid4oTlDIPip; zOuBf6_KP706&4eB@Hd;``Pc5%Q5*Q^Gq#k{Ayf~7O$f37IDKnm6%klcavKt&o4^EF zYem^z_d9+)xA>r>eQ`!gNX<}f-*!ooC943W&=ABidX%n;ijYVnpRoeCdpj<4J`>Jz zu3)q@t*uvaINd1Slz{?RmZ)Wwom<%C5Cwn%P)>0q-kIDWq58=Te0|`=+0crpa=Rv; z@`wWyeVp{^-Bw-*3`uZoDET5Nz?@7r+*bkmb5?cORopPNZN?0n&nVH9aYO z9 zUr(E@#GBLCsIfM)IGAuI44dHM)YM|i6eR~;9iPy)Tu^Zt?aozNscK7i_a=mC?#>pu z#Z!{)wBM_&STg9S=OR{dTyFQJLL%NuZp*YHQfLGuN6$#!yq1@I4c;j;G)TZ3%vD<@ zK43pWadlWWp44mG(-ubIna_rOeC+QU?mj(CDdz7Kx5Wi~6d1RV3LStO84>rn>$fB} z|G-C2%0f-px4lK)C{K1B6gW{qGs+08pf3jiwL=LtUUYD@&lY~O#P^6uv$X*&I!Q0k z>mXT;gGd_r!YrzMzzW@HIY8~^pS6Njt}mij`|$4Kk8=JX3nOGQa)P)8F~ew(2HSNU zWW*dVU$p_avWp_8*JK!(D#&I&?4db@-(`3tg(QRS1A_Jq|7}IcOGWz(bjvYtqg7tE z^+q6`1RBk8=fHY3-vJI77BK^`F&5^Hyn(B8%jD?HwN$tu)Aw~tC0)m9!@315Lh~R` z*DWl@xPfA6ZH+Q0DJ?2h&egeW5)$|Mjb6 z@Df4<(rSI!K>#0CqkS1AZQU2HDxu{t33DX2pPQO5*5wsYgoa1tI^Tk3gi4^8*+N1U zh^%KPQu%R3x+l}q)gSvJ;zJ?ybhh|>Ig&>pE)`RT0vXYwUa_U0X?zT!uMx(ogsI zF*Kiphehw$VaX*gMl@&7Es&zp-XxP{3gyZV&t>{vlhJ_FEMxdDB&>>_(WK98>yCo! z>f)z2c<9C2ND)kbMDh2&0yRnKrc&!!1(S3!AvPIb0r{PUYHg)m%-wB`etu3d;lg-;-jA8o)H)!ML#z|9lGKHaD$ z-Xt(Fv4v&V3>6M66u9uE3rvL4sDN_t7yZhj$GAb7v?d4beWN1wN#n^glCR>7Sv*Ub zq2i2S(j1)kO<&n8>q#yyES>^KHb9+ak%~~TO%piAds_)~vaNH8ykA_fs%$E;*(3af zU?VfJd6!x%VO^;-c}5xsutBqk(OlaLIZ-C=y_sTG>S@^s9F|kFK*=fNrA;h(4lBuy zgQ@9q#PwK52V?*A^rh2$gBt_L5UYT7QL=Rrhik_m(^Cff;~(3B!zxzgq~j>HbQ zx_EAQ*)snVeQT%ThurYAJFv;#*f_#C-wQp}Zfhx}DJ;?e13)ofr0iT7rv(f^`fZSM zZ73KU9+O0zZ#al-E{neZ3wLTia|oA+A(_n2^!PwCTlF(^balEC<*Hb@cO}?aVZOV| zhBwE@1QDP?ywFaYx*CwOA})Mo8YHdDti3eWtXAIwZpFzu_@ntHiVP>;J;vB+i(Pt>EE2kF~*q>@k;a%F&YrOwC0Vd%>}F`K&*U6iu^m|vRedU{XG zq+VzqdSX0T93p*GLS=q``6S1p{0#3tof%Tlv>oQg^esvP`)#qxh8%%GJLwUNv$BQ| z6A)wrBMS=|f5LX4A?-WA+kHE>x739N1J&?JK+e&^yw9Or)Z-B^KkRd?`6}jLA$(-j zAhF|Xpdo*5_TDv*zmUGs%QMgs|W;ZV$isMFA`z)FB9#b4@=Ndi*(xgo3t#U zWDZw5gf|S8t}Geb850rwAVgcyQ{L}*3qK?dt+7GrVZFrSw-M>p8ewfUSnq$MFr5q_5ii?!7SoXks?yAsNg0kAc}cBS)C>Z;%NO%s zZpb)3clC$?_%iV}SvlDt9ObUFXU|e>NO#D^2mx?O?s|KFFRt(vT2B?K*M8)DhMgI= z6z}8{gQbX1s!{HH=l8Wre*0o;^TlhE^Yy!|Z#ye=Aw}1kg?n>mWF!aEFW3hwO$!$O zm$ERpKMf-kYPUFYe>=){RN|SCq21ZiA~1^5!ZwkvFeR)ON8Qgj)L+k5*s%}tfNx`d zPSSdGsb|hpUoIcX*W4tU=b^p30H%T2V+VkuiB(`LOBlRf5@CpAP%E%?Erg1)@J(tUTV{ z&v}A?V6QJw-ewo}J#|_k4{38wcK$@rcv)Fl`GdC0nC0KWmtd83QfWD`!evk=c_Bsi z9B_CIscH#$Z|Kw=-vV38Jcs|9+uWpn{!nakU4lG(;p^{Dr|N+>(dOT=nu}%3bc`lE z@~u&QMuRZXW@F)F#8PALXGFDMG_qxml8)d73_KUF!5pG1YQul@HkNMHr>6w0`(_&k zxn4t`fk}nQ=~Ft z6D|I!@k9}L_oej2+`TmDh#$sgrx(U zOuFOpfN1B&Z>83WpbDyb`;=mtFuty8s(aV<#a-PfoxJu>r{Eppj4&$tbFG=ZgVErH zc!QI=6;(Y6l#8S{tmzqH>ga-v5xQu0@S1W9_p znYOo(-^T|%uH4#e2_$n?Tb-|1^Shk-Wjv6~``zHiF`GoqV+BNdYMtZ2M+bzkbetDo zUo~xGiEbZV%db$r!}|+`z9}ygT*n=>h|j;9~o6#n&xua}cd1d#@~j3+`qu3dhW5*u@!HMZ%#b{b=q zZrad_`)oe7;-+eQ=H7XANrgt)BC31!>UK&(7Z<@UDnD=%NF0Jxrb7(CBaNm`>X-7V%?$tTJfP$FtR#X5K2E zMce%MZ%F@lxe!bJ<8ZRyu$0Sq)()ET+o+E@rDPPbz{s>-%bI zg41Oq^gP~=7abWkxN=W)sp;rUnShQ>{U8!TyezC#zm}6%P|!1E%HPd6Q+po42KgcP z9P#p0THE-z_S=W8V@g}{#48L7%GfZV^rx7xv&xTkXVa9a_2d_g1bWOfdpOF?(n`ILgG$uPW-rA(|* zoQs-Y8&2Xm>%UNOhy+*M>sFQlYyU|{@5c7KtIU2}J6nacS2v{BG?FafY~LBs#{5$#OLIGk4eU!6B$ z{2bH^{#3nVNnM^+@FJhA?0*D=X_0 zY{~K=uw>afvFPV#L%>Gw-x%K(_PQ_P; zCVTgqU=CkU z8?n)k8X+=($A(pC}Yz`Vjw%6p~uS%U3+ryU-$FpaVU1BeW}= zPH2Oe6~r~7p!REf9Xf!7(-KWvx$}h?vbmp1Uunc*du+i9S%ULT?aG?6UW8lsAAYhF zDEi#N*u#Ox+&6Qdr^*nC`^BKY$bSD{Y^KCY&cZ_z|7u}*q!fnb$CWv>+xd~CivagB zgZNE+)M9;{D#|xmwb3lkr2A&cU z5=NX!Cv0qNO|`WGH}Eh;0g%~R#aKWW_l@28zq9M6psud&fJpA2{qBErh{arV zINAu0Nbrqg4ihbiph==od@f*D)Xm4OPJyGrmvozx02g2hsl|Qk0)G5$EkfG4KfP0~ zw(m6h=fH+H6I@``<8i*O$+Tuu8>^C=9*UNu!-TCZ{zyU@)}$?7_i* zlj-z8tB4au`WbhSG`S`+JF(<|ooJTDY0abH zxWyo!U8^D|-`{EXwX?f~s$YuOX~f2~;hk>3j&ftW?KIl^aPl+oFf&B$K_aVp7-bk^ zTwF}h7iPe)cB(69cK2WW;~}tr@I&h>3m~QR{p_R zTZ^FVYbZtM;|qyjH{0jN=DFL0V4K8cveR zu3b8eO2TiOu6JQUT%ForMUQB@V6j6#i6pfr&%DNOCYdwN&v~0ZPDYx-T4%di8J4cj z5-5LVE90XPat8F#$dGZZUu=BGiz5Y9x@so{vKT7(qmvA6>bIb?;Njxp>W9{Pm7$l~ zY=xo(BvBZLOT7YrdpjfA;$tNw|Di2D$xYF$)e>$?O!v>~$l17Z&bJn^yhzP}T(43( zdC8*wb<29P^fZzJ%_Rf9`yw{O(!N=H7g5pQpqL#n(~8Pg04(7> zR;*?Kbzf-7>^qxt6&kd_OM>WQ_|7Rm68$mI1VG+C-5;Q0Vj4;69$M|>wx1JB53AF9 z{O_arZ&@c7QoK^}PfuY>lJW&J^5at90cJ2@&nPH*i?%?)>dKv({Bwj zyD3`5)`n**D`x&@y$QaSmdu%P>B=I|#RjjqeXiT(6@sN~Lh1p8mp$crHTb*us4{YeZ@3~ZxoFPg{LtkKE#}7Rf@+C^ERqHrEfqQ7gYG)J&ESRZf@>bl)tP?qMN40L=@ZR7Vir&yVhX}N}v}p z(VwG{&ywFNae8b@-csUq@9Y54pIZHlkG!=NF?>1rtD#px`wL7y=tiCt*&7SiyDnOi zU`RC8)zMF<+eGZN_Z!chj5YNu)OC zKl&v z~rz=hA2ZcI~)Ft#6#8(`UKW`+8=j1gi71cDSlT{ zmzS6K7-~&qhYeSJK>_*Z-9KxLjvZj<@V9L`-A2U%P3I{*WSMaPXB54l9bjy*j*6-_ znj81%5$!c)^x1aIs#Y#HqEPUr%&oK#z3BRjTw+D;fVJjH-$yR-a~%ZR zU%Sg>HLl9e6ar+yb#PCqVWahDdP6{A8#@vVV9@`fFanFdGHy%|@yN(X-!h}-XRm?o zo34ZD8={DTJLS?!0&&I{U^X*do%%&4(7=UJWwA}?`2s8+n4k6kQ$}2AWpmq>} z#QqR+StV$6|D`g~+xi*LW9Oq>Twe0*Pc!6q))(FRo9f?+y&p(gmU#T;VNPj9sg*tD zTlR4)?3pa?JNka{?QICGyc`a8L^Q1^2_*eo($AS%QT$Lfb+Xph%D$ufn2ZEFbTC!J zAq#)azpu^L@j^*n#WQaa*DZ!Y|D7rDjl~jTzBZop>P;L%2uRAT7_)MCA@UgIgy~mm zt#iLNTr3n66tUAM&Y)8xImv3+RD93-fwS80Hf*9(>qJ?oU8tMEF)5YsOGU@B8L=OFnG1j zdWxWrV>p8-iv{wd^0fCWCMT9m3dlUO)xh00X;x==E#+9g zBIS>LgV5BV;C#5u@}4%gPA3`ZwzZ{5?LkVOTi18aa7__o?x3g37I&5ov92{R^6Y&s z#aV6F{uDRd(I0?J+vp^H%@j5^$ev!Ae?IDtlLVQnD*v)O19Y~y&Ho&NQ+|$0BVU{~ zJ#g#J-6fDWG&J;$`|}r_F-CZz-Su)X+#18zkUuj$O{#I0vH;5}qQ9e4|9CPb2+O*+ zYhdhO#wJuyP|$LitDY;{M#X86)j=yEVGMo|@iu#AX2$ymYGb_EP*+@%x{I&K9%rM; zE>#T=Jl$l+myog*CN~u%u_b&H_yIZ`6ckkT`?>G};qB0xkW9qk5@g@+>_Yc3zU%ANvZnyDZm^Bn94K*>C4M9~8B^tk|W`tF5AjbE;wjmU<_;8#1tj3GQxuSlhk*9(voN}0S zSh!fn%L#i^O;rLM`zt8Edtm}|<^3E}-X{%IB+$g4teh%}JHsW>rE$7=W^lhf8|uqR z(0=F*^d&ko+@kqL?zy|L_iU4paxX<#H1O)xE0U#T&O*RTNwK2BdW~x8)jdydvga_9 z;j{0go`(+86`kqn#d1+kOFIgVn|+R?w3vX#$MkDWfq+`Afgi8j)VssrJ( zmM2BYZ>s({STfX(ziM8B zBrrz#+lx=k!i1E(P>1HT2gVv28kUHo8-~|__~j}&^|?$dHxpGz@tw^sev(g}U#U(| zH|I1cvrfVW;`2^!Gm#m5V5K10gpu;sL>n>un6=Y06%hN`=zm5HCVX#G9E%A|*aYnf zXl_8S$2|e>Q|tPe7?z@{R7>`d+L8r&0C&B6uj`CWm2U_x=~dZ#@IjQ=hbr$U(r+!5Guvi$YW~^H>W&Ok0CUm~nLL#s zpJ*_bK+<8MDcN5;kfRwR+URkzI@289<#%nDvP3vSB}ub=_4W^Ly3#7CkxGgTtAJz5 zlO4;J@oB36TZaSHJ!2OpHN_wEsJfb4uQuIwmOkc_1rXE;$w6MFp8Kj8V19$wLw9aY zPAsLaF5Q-$h??SZ*y`>b-F!infX1#+Y>cRr7ww(Ai}~-}Z43 zsd7~;aMX>s$H18|YVLSfueN4{+>jRnD)ksZ&{PCkQ-AhoHc9W0T#j#<<*q}!@!vRD z$ZtynRd5zYJr-ho>cs9pml|=Yw2`3)sp9-E;Y^~wByQntuMH7(;2u?ZNxYP{>4ISz zN)xJIB`|H{Q@@5&?p^YP_pCQ?>XT5SQB0KQCztURFq1KoN}a~CJ~AYz2Z=YZ z$X&ZFaPY&)Y`HpBg-dQ^c3`9{u?CENVB=gKIgD#htxf-iyDebfXME)#rd>?>@;!7) zT37ZLJ^`ROxy8b7 zdko?kY__~vpce|0MXYoW@w1B_^3HT5kgxyyOPI8iwd&rCC<0xsk&#}4-`}GyO7Zmi zH!&fVA9$*N zClo(Ff4oxD$)E@Z5ANHFxS02d*YQ2-q;h>?3E(H^UE43VG)u#P&_pGE1S<58I>O4T zOEp1RlT(=ZI`CC<__qa;e02rqhi#LhGdqgcM zaU_MnqunShRZoe+n<$9{?c>voT4e+zld5m8ET{}m^=ZznIz!jI!cluvmZIwb{(0E=cS6W)> zI!#Vgu<%H}d%k@727G!D^wT4%a~Am2Wv+>iDi7^AN%v6LH@w(-IfryWk37VGeD5RS^%07{ zpIuaR?gni2T->^KD;)=tcN$lP7>M!lqm3I}w~XGu&-;$Syby2_j234^A~(!;v7BDi z`lYmijt|0t=EbUMC>pVIZ?v&pBXe9CieJ81cz@o9VnuHdr|WWSJX^A0!u-G2z`3VR zYYM*Mgf#VG1Tsk3`~2(zx4_)*u*zw+z-E2I2Ixta`O?V{5O5i(8y+t8o9rz?bs??D zj4cF%5=cYh961$wzbhPU$^p-$p{{6S#zTpF*B@R6mi`3ve++Owpo4gV$BV7ojGBy0 z!ydtWB;sEFB9hgc>>kV{TdqP*PfxFejG%{Veetw6WpAp^SUkGNJ(yR90#G4E_)ce`y#Qm)?HTbpHizMA*W2e&4~+{F?qk-6!nJr*7ng6A*xQW^Cpjx`dG#Vh>eYh zXoNOPi@7OgW5WaQ!X*5P>YhBhiwWH0A1ZZR-?5;8!7uSElqjLrXA$y+io2s|+R8AaMi$q4+S_{pWeKKL=(q2=<+ z7gUT(J}*=fDBZEj^ke?7_HCNlvE8~{(@^Yo)fzlt_cJj~3@_s+S~ z(`T~fK7F8g$t``0c7)=*^0>Ic`;$w-iFgUaG>fEWKMvFLJWb;1=vb)D*FSu>zCAyA zSM3)#`>x-1FNcjq5}ZBz`Bt+d4kpiiEC29ap3MHd+~3`UJb?biVAG^@Vz6gBl9cLPIYoZI{^8U z9$E6T?Ikz4oe;3{%^*8#Iqn0jwyHk|2Kj+Fc2YMmJC1YToAClGk@{#ngm7iV$Pn1c z993i^%;#zDfydNSG65i#_*D#ilPE%^h*5l}KC|YIX*lrMy|F85>LNV_U|f5D+?Z~! z27Tdrp(p;5EmENNT3Q(}`>V;SU;;B)?#z8lb>kNP1qdaOv@g{#e8kKmNBWqixK7O1 zQ{hLctg&+Hvtu)}cn<Zh!A>{OR7~imy;vtFxQM*t+O}yRjM^y$=)b;1=7P)5swG`@%BVArJ|~ z*CU2E@w0rui_8~X3`X0G7L4cu{Oy;kJ>LWaS|7z>18FOy9hO2FwK1uVAvI zK5sgM6&IS9@FOKN`?a@&lxirsQbVR_LIFu!Q)=T0v%G-Hi4$uTV0;+LlfZxrP z+tm%JiS8ZA+$QGIo(wUcOWDJu2llfb z*Y=P7Xy3fKp(M} zPj97`H`{#DC8QDR>W7>ho%`!!<2+K2L{Pu7D)HT2l$grCQXnm9L2p+}wz7tsY52Ft zvHum6BqStDgwHuSRixRRR8>`}j(z-KzI3mFhXmh*+E(k({)WaWf^V#9HD=trv%3+c zzl_`$R7J)KjzCVx7vh(Vv@o15M7E84kWb8`D3i8IRCX!?0zK>y|=W5rN!5K@QFXu_=iNaPXg%(!OZAzeP zx^n%mxafPgWl%sc--5mR81I|EtTa6;L99Uv-1g>^pQh&PI1OVyBsP4RTMutf3K`-$ zWdg!sr#q%j^4n>LulFR5NLyk(6tOw4zpjD-qM1gQb8He3$>a!i4b88B(e9O@rtt0Q z#6n>Z!4t;W(59bZ-9%{<;T^0jaz|ucx9%#Z3v1o`w*P0nmt7hFHpwe9@T^_c7V_5gqWDqKIAn7x;sE6(j@tC zc)>^2(0wk_*%6V($+G>@0%3BfFe!MMLPVM|b@9`u{fWCl6d&gnx6M$q5>+t)@(L?; zDaAMk-Sr^_@X5;E_w-U2#a-5wsPV8Pa&YzX&x&H8Zf#k+%t%=QVo3muIl=J{;K~ZE zw4@=oSp-CHYuoyP(wc6!;x}!RiO=;}dn7ZE@%IcBS`Tk$7Se-l8m?|HRvi|udxbZ0 zWXPab#*EN^27)Y**r@-OZdxS4waEGI^Y_c#y&or8A)e}2LPg^UZU`{!TVgEH@+LU4 z>Gx+mU%d~{P_83pia>d|r%RJgG)-$DDIj5N+>8%cM!!(RRz4dv#LrUa%_IjWNW+~V zV(|RY4T?vh3K;Op!BF?X}Kp^`+vx9jYS#RxsoVPi)4 zZBO_G_*B}v4N;{ zLJZZ1w2$}TBouVqrqnwcqs7e$OlO+gI#au&^O%q^-Vk6#-}QZyosUs+Cj8S-s{#pN zVPqtD&ZhjMx`EE(qZ)jA3uD5m(Hs2YI>r7Fo-ZD>b4CZ)w8%;|H|WU^ijo-H^WZ4G zyv7i0P|(H+g9iz@GZm)Yj0~h_1n@80tRHADzftGF$5V&Y!Mw>xA?2bt#z&(z?dFk> zg;stKYBjp=JzVC0+qUH|#9VL}BKRN%Z&V}8Z(kST&;r%aF*vT;|NBwV4rY>h^4x#5 z<=zKq`O5YIhRTXq4T_BM54Sl`xTIXC)$NKw5WAZ>+8b$5O3WZ0= zLg(VQZ!3*gNW|tqYGDdp7t^>e?$%bZ#?!UZrQnr8 zg!5eWXP}*CqswibTyrYWwDfoC{>jh=A-_Ner$u-5;MqE=zVEu07;xVEHOQy@8W_7! z_4E{sXbT1o!Rj`1LBM6be|c|j?~?E1#38r|vvDxrDEGVD|8k8=uLRFjnxtc&q3V?< zZd3D4RYg%KKwING9!BXq8JTX)aowdUkrP^?1eB}kIqiP)us&gWXGTiTeM^$YlMRcO zF&CtU_RX$H{|r^P2o#jR=kvdo@)2Lr!ez>%Bxp9mkiZI5O5%zc}evVK%USN|X&#t{=m zRvsM&wT^y>{$gLRL`Fu2u9XdcizubLg?D6HG|lFRkL1U7LUY3Xbn`i6(1`W1E$77n zs!Gd`XPKe6LQVaq?mm(%?DY0HCs+g2F^Iy8s+V8)U{%HZgpqvsC-XIXS zfGD9CO-Ekb1l=w>`S_^6e01C1lkv7m89^c~zZ|bu=L?7}BR_6CIz|NHLH50zJR0)x zjCUVv@6I>gMZ?f69V-_c8~e(n1)m+Cu#u@PO{adT%IX~`eEu#TW^mp4g}8a{H48e4 z5F%W$5X($1qyBVM!?OQk|7}#QoqjOt-6xV1;2xcDS&m<(<~=-smKzsYJN5D7U2aa9Y4Vbhes2?$ zR`s;ZqTQ$-UL{Wm7sT%iU=Ed8=HTGizPJ7SIxYs;jmI~CfPFVq$V2_SOyS>lB_`tO z`HqwvE`ske>QFRrYwf)iRVtqYX;3-*ZVI^Dm-o_PnAPQPAo1pPY4`j|K8|O{nPKJ- zcP3u(RfBP9{g=0jr#laU<9I@41Elzuxtg1YtE1KYVGZK@=%u+Y-Eo6ROH`P`0e^GOF^?4%*FnP zPt&>1l)l3+)%S4we%n&7WdZyQXO=!fe)-RSRhPt2M)tf=u>-Gs-k5wS}6 zmI|!{@02%Ee`3O+9vw%M3`n@s&ApbJZw}}^7FRK>H0i&nJ=)uRNlH1hhlpIt%)fSj ziXH=|WR8{v$1%h3RhG>+02z6Lf4lh`#dtPpD6;NmR;mXaRQQ#A{E}SM5Y=fGOhs(& zGRM46fS=)n&R)#$QGJq>e&0>C|JflNo2z~5(}-yopWDHO1l^bN%c(H9nyP0h#s?#R zoBZl8qn?jf55Nx9P>VhXVuVIP7sQgnmiI}7 zA&s_gX^3e!%*Eo@NbvuyP4i&QL?X@qkFB=~i|UWNzV{4+bc+Z`r=Wm@lrTt0mlD!Q zcZcMRfPcCKqy?j&XM@RjIQmwGKbQA_hJ@ryo)zqmU7aF7U>6V`UqO`vjeUs+$RZ8 z>_9sw<>C6*d+6FHgLW@>kS=HTZ8uc(kFRo44YqJG=|RQphGEn}LTw@l%lOBr-@HO9 zPiLMwE7!^%qRpx*B4L-N^!x8s;L6I%5YXIZssxzU*nm#$)U|}=W~xs4cgH8LA620k zbDcIgI6IOB4sE>ulvU(RjUqVl#Z~Ar=R(i92jeYTfKi-)KEAa(wC^41b*B`CZev0~ zBLU3&c5=-`*V_h!%zaW7&u9mxNmk4l5cMTN8&+s9y zcMh?iwTtdRbIETED2MV#4AyzOt-m9|DD@i4*L0)s@zIlSZJsHFxUs5?!gdKlce1rJ zjMRX;92|e`vjf(PW$oELX(!lM5=SkcK(@x()vIQFong#_J=|JUmo%U=AT1{bNC*%~ zZ8iJ!N9gZ5T;(y;>GP>YWXU~|q<(TBIYeGri5hA2LX(vl$aC$Hres?E^XC}0+3|yM z0JmybiTK{ZMWkg&1s~LHKCs z$kUFv50QCG-h9Kli+95)=7tO@0z-piVJcyIG6Fw3U~JzST@#sOv<(JiI+!l=V}YV? zsBOcKhdz!|$83=#_!cEcE8+pyG5%)BtuUo9rDTYSB7w|mH#b}1w^X9)=n=fIPKumt zcdVkkJo_D7+%AuNw(mo05W^T#2v{~3Prg(b<$o5X3p0PEa2wt#;&B({az=;YyNYu$ zZu!>k^AfYegF|R=wMW<MihbG)5kDXecd^6=b822Ub+mnqSPQvij>oarR*POqU-(3Is zK?e8Q9?c79`><{<6#q=WtuI)N4}441Smpd@u}b`HGO*cuklrJ6Y1n#J%~{3 z(4l^p;PQma5z~ehDPUh|;U5GiWOJj^K&E_b$3MKlOKV|8GN+%2TWwXt7eaF1T4D*Ae@>Rc)Rq+B!--M4Uz>%Fm}Mr*ZWiUySlmvj^SoQfF0dcID4Igqx$|Lt4eT> zdX%{oKl7T2&gIZnLza4GU4)AzCsF$0(rZ5rpL&U(U)cFN6$Oa2vMgK{O`Xitp~7L~ zV9w#j0l*Rze9Z1^vQPa327V`XZO?bFyV^iC(b`7PWx4r`oaOnY@ugW}@>=*y6b~4@ z_B1A`3IcBcJB=AY@|GL`{uoLbO_P+~vua$nXED!Yo$!e7%P5X_!GM>C9m;%4_@?aE z^8*8Am=R31Drmgdh9+#A$gy4WZ=yn5)#M>;z-z{5Z!3vdg!|~wX2#t`Qa$N;e<{n? zSnalODJTIXf6Sc9LrT8%pDwfCJ3#pS>HKI?5xz|9GV9eY>w5`P1`{n18_o8lT3%Yl zLclL^CEw$4+z)U(+j?V(vumA8X0kikSZj>sUWwpXnhQy0l+1c;Byde8d z2aLrtNb2#`8;Z%s^A+GPraki$EWZz{{NJTt?yIBoyiC}MYD&En@0}C=I~q0s2n)JC z{SAg}I^yX?<3JiR9|yoq7L|o#0)}NNO^$MB%Lx-D&w7~dG84k_WQ5NlqZBx0tZ{Ox zf56PMVq6iT)()-k6uxPf0fYzQi?|0Jv|X%~obi*hK95L}cy8=>@F{DScdb!_`i$w= zABFK^kO@$vH)^+?b`h3lVm)UXZ1xg?;xyhphrS7E^kiu&QezXqmpK9_>66&iIm;=# zz7HH;K9Lk^^%Z;o!+mlY_(^M%*;oMS8)IUbRf(0kN?M9*aeTi{i7BVp$=2 z5raSe^n0WaF1vIUyrRWP zV91B~Kw#f|%d!GFVJ+x#W#xpB4Lt?P4Xy(%n8}1;zlkut>*s@r(|=%82;4T~3Df3m z8b+$Q{L|12b6Lv6$*&t}5PbX5+5+r+DE(4}Zc=oev*qqojU0ox4RFV+{9vZLww?>J ztGzrdv z>US`90ER@Ot&Szn*bg2UT7{yS-~s1OuE*$)Yy>j~3jY=uKBOH{^@%1bW`OzJD2VPv zxK7>C0RIQ48Yt@%scC5F;q2^Iq+Sy$b%+#u>b!@MA7a7d63<*ysG&-K*i>Gj6wkJf z0yxfk74B!tZ}R(bT2~tDI-CR2W{nV}TnU(+Szml33~5{-MzV&e_S7qdXD~V(F26c2 zJbwt6M$V4iAlEJQA-%AO7DBQzoL;PAzb{W zFSh0h?spKsR5P^#josCp8vIn|IxzEcO^0;8y7>{hkX0U@-&D4j95It$D!e_E-K*=kxN>f?;PDG%- zj`^M30q>XG$p$a2Wl&=0BTP>)qYwR-E(1m-m6z;Oo+-YHML3%Nj`~ArJWr;K73jcGfKH1{Mr-@7@9CccA9F zW>Dl;y@|Smpu)OUn(_DPBZWl#1>$71&uFGKvlO?zy!Chvl;|^qsxwV3_ABazLwIF`O{kHeX-#W5LV7bZmyyji#`Yn0Uo z&u5`h2_$IiFr0IWag`u#Zo#pZvp#JIb1eVwC?A|Dog1?x0ZO;?9v@7@IfzXAYWpSV zVwZ^~y=fmawXiqR{PYu?U&vR^1$j}dF`DXYh{tgC4UGAKIlWh6iinHiH!C}qjhT&Sdf~` zSKo&@ubA0L$!3c=HjLur-Qe7ixa}+zN9&K@AvwuEB2b*B!SsJ<9Y9O=;BdB;6M+=BRwC>)MR;}7E(^`lAD{Sqc_zum6urrMw_n`3kn@g5(DBiNdZj$N{mbk9n; zhJ^vb=-Zic`T^S~vx(mQ5yDiw?rv7W+lgWY8u%LW#5%(8CS>q1vdS z4H9}2eLifrU*C6yV^X~-Oh&M=mdENwuz*YJgPRJIwz>88wjd=#(>Do~kBSQTe`KyH>uo*NeC(X(Oa2>b7lL5P7N_`O4cHNyEqQ$c?G_6I)D@l58KY>d`b&*WqZ zG(eaNr&sa#A*_aAIr!!=1H&C=vqm?T#W(|kWaxW_d;fin1c3WB2?Y4xQ-EAB|2$#N zl$$_cu@&Hbpy5gU6}V>u>5Vkiq7<-E6WBS?qUd}QB^~ssr~^SzHLL!XH0U<rv`-YbS>%~C}?@C=@80X;# z%`>e2ZYb(`@z{B$E! zuC>r6KOYqz322#?sYYGTnTbSUSo;=A!V69!ZJ}OBEC3>U%COP>S7hM0rwF_DIu_I7 zw$LO05WpelW#Q)rxRY%s@`v#okL#*F_mlt&Uj@4fAdQqsCY&||%I(Ym{(Bh$F$*r- zUukr~VBTHOl+Y??>+tYU{_!&Vt z;jg&PAjgA`<5Y8k4-x(#)6;gt_}DD6l8n6$x)Lg!>-mq^emN|S34`*oTd+RBaX%zi z2edogqe1^o-i!C#xCGCdVQdBc7fVDhnTFj%6S?byX4rQ%R`p7ZV+CdKe(8n73WQUiUUC8Da$KIv-kj# zk=O&ZBK(w25zCa|I7V?r~BSuEE3*S+evyNX*sa$Nb6E6hoO6oH*>-LtLZx!7JPlG|JolC5n0x5 zy#ga$gCweZGbdN7l;(Bv<9=r>kme4!d|G47!uu~H0;1}MA*gs^$Is!ZHO#4n%$>E_ z-3JOxl>f*QBxcnxsWjYbIdn;z&5q<3xhqTmbmEau!9TQmKk?rrktBNgWOg_oc%HbdmW4X)b zv!j=hT&xT_YcIp30_?WJOWdhC<}HrG1tji$x{cM3y73Jz=2H`O7&*8d+cK-q$#yN_ z^1kbKQhn}-C%Q0L<3q!SA@d#zdc1tbXV=&9iMH%p(3R@F)t

    XZ-W-2W0_PU!xD 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%0D-`H#g+rHX@|$qi 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%0A7jr=Pt*jA%v%odaNU_Bwar1Pi> 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 B6Wag) From cce27c9643eb8f0e7c2edd160a53bfc2183e9e6c Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 1 Dec 2017 18:30:17 +0000 Subject: [PATCH 125/159] fix(package): update marked to version 0.3.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef8bddabc..e766b8d1c 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@mapbox/togeojson": "0.16.0", "diacritics": "1.3.0", "lodash-es": "4.17.4", - "marked": "0.3.6", + "marked": "0.3.7", "node-diff3": "bhousel/node-diff3.git#v0.1.0", "osm-auth": "1.0.2", "rbush": "2.0.1", From ac442d5a7f9a9f28ae53329230bac2b44c66957b Mon Sep 17 00:00:00 2001 From: abdeldjalil09 Date: Fri, 1 Dec 2017 21:13:20 +0100 Subject: [PATCH 126/159] preset for man_made=monitoring_station (#4581) Squashed: * Create monitoring_station * Update presets.yaml * Create monitoring_multi * Update fields.json * Update en.json * Update monitoring_multi * Update en.json --- data/presets.yaml | 8 ++++++++ data/presets/fields.json | 7 ++++++- data/presets/fields/monitoring_multi | 5 +++++ .../presets/man_made/monitoring_station | 20 +++++++++++++++++++ dist/locales/en.json | 9 ++++++++- 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 data/presets/fields/monitoring_multi create mode 100644 data/presets/presets/man_made/monitoring_station diff --git a/data/presets.yaml b/data/presets.yaml index d6757b63a..c7017c576 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -3802,6 +3802,11 @@ en: name: Mast # 'terms: antenna,broadcast tower,cell phone tower,cell tower,communication mast,communication tower,guyed tower,mobile phone tower,radio mast,radio tower,television tower,transmission mast,transmission tower,tv tower' terms: '' + man_made/monitoring_station: + # man_made=monitoring_station + name: Monitoring Station + # 'terms: weather,earthquake,sismology,air,gps' + terms: '' man_made/observation: # 'man_made=tower, tower:type=observation' name: Observation Tower @@ -3901,6 +3906,9 @@ en: name: Telecom Manhole # 'terms: cover,phone,hole,telecom,telephone,bt' terms: '' + monitoring_multi: + # 'monitoring:=*' + label: Monitoring natural: # natural=* name: Natural diff --git a/data/presets/fields.json b/data/presets/fields.json index fff751e4e..06c86a850 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -1141,6 +1141,11 @@ "placeholder": "Distance to one decimal (123.4)", "label": "Milestone Position" }, + "monitoring_multi": { + "key": "monitoring:", + "type": "multiCombo", + "label": "Monitoring" + }, "mtb/scale": { "key": "mtb:scale", "type": "combo", @@ -2196,4 +2201,4 @@ } } } -} \ No newline at end of file +} diff --git a/data/presets/fields/monitoring_multi b/data/presets/fields/monitoring_multi new file mode 100644 index 000000000..dd9630bf4 --- /dev/null +++ b/data/presets/fields/monitoring_multi @@ -0,0 +1,5 @@ +{ + "key": "monitoring:", + "type": "multiCombo", + "label": "Monitoring" +} diff --git a/data/presets/presets/man_made/monitoring_station b/data/presets/presets/man_made/monitoring_station new file mode 100644 index 000000000..7c241cef9 --- /dev/null +++ b/data/presets/presets/man_made/monitoring_station @@ -0,0 +1,20 @@ +{ + "geometry": [ + "point", + "area" + ], + "fields": [ + "monitoring_multi" + "operator" + ], + "terms": [ + "weather", + "earthquake", + "sismology", + "air", + "gps" + ], + "tags": { + "man_made": "monitoring_station" + }, +"name": "Monitoring Station" diff --git a/dist/locales/en.json b/dist/locales/en.json index 0cdefe708..e937cd34c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1953,6 +1953,9 @@ "label": "Milestone Position", "placeholder": "Distance to one decimal (123.4)" }, + "monitoring_multi": { + "label": "Monitoring" + }, "mtb/scale": { "label": "Mountain Biking Difficulty", "placeholder": "0, 1, 2, 3...", @@ -4577,6 +4580,10 @@ "name": "Mast", "terms": "antenna,broadcast tower,cell phone tower,cell tower,communication mast,communication tower,guyed tower,mobile phone tower,radio mast,radio tower,television tower,transmission mast,transmission tower,tv tower" }, + "man_made/monitoring_station": { + "name": "Monitoring Station", + "terms": "weather,earthquake,sismology,air,gps" + }, "man_made/observation": { "name": "Observation Tower", "terms": "lookout tower,fire tower" @@ -6252,4 +6259,4 @@ } } } -} \ No newline at end of file +} From 36f9ec85a4f8292d9c103a068ab88e0ddbaec415 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 1 Dec 2017 15:40:14 -0500 Subject: [PATCH 127/159] Fix misspellings and make sure files have a .json extension --- data/presets.yaml | 10 ++++----- data/presets/fields.json | 2 +- ...monitoring_multi => monitoring_multi.json} | 0 data/presets/presets.json | 21 +++++++++++++++++++ ...toring_station => monitoring_station.json} | 7 ++++--- data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++-- 7 files changed, 37 insertions(+), 11 deletions(-) rename data/presets/fields/{monitoring_multi => monitoring_multi.json} (100%) rename data/presets/presets/man_made/{monitoring_station => monitoring_station.json} (75%) diff --git a/data/presets.yaml b/data/presets.yaml index c7017c576..0cdef64b6 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -817,6 +817,9 @@ en: label: Milestone Position # milestone_position field placeholder placeholder: Distance to one decimal (123.4) + monitoring_multi: + # 'monitoring:=*' + label: Monitoring mtb/scale: # 'mtb:scale=*' label: Mountain Biking Difficulty @@ -3805,8 +3808,8 @@ en: man_made/monitoring_station: # man_made=monitoring_station name: Monitoring Station - # 'terms: weather,earthquake,sismology,air,gps' - terms: '' + # 'terms: weather,earthquake,seismology,air,gps' + terms: '' man_made/observation: # 'man_made=tower, tower:type=observation' name: Observation Tower @@ -3906,9 +3909,6 @@ en: name: Telecom Manhole # 'terms: cover,phone,hole,telecom,telephone,bt' terms: '' - monitoring_multi: - # 'monitoring:=*' - label: Monitoring natural: # natural=* name: Natural diff --git a/data/presets/fields.json b/data/presets/fields.json index 06c86a850..39ad76e68 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -2201,4 +2201,4 @@ } } } -} +} \ No newline at end of file diff --git a/data/presets/fields/monitoring_multi b/data/presets/fields/monitoring_multi.json similarity index 100% rename from data/presets/fields/monitoring_multi rename to data/presets/fields/monitoring_multi.json diff --git a/data/presets/presets.json b/data/presets/presets.json index 45a6e018d..480380f37 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -10555,6 +10555,27 @@ }, "name": "Mast" }, + "man_made/monitoring_station": { + "geometry": [ + "point", + "area" + ], + "fields": [ + "monitoring_multi", + "operator" + ], + "terms": [ + "weather", + "earthquake", + "seismology", + "air", + "gps" + ], + "tags": { + "man_made": "monitoring_station" + }, + "name": "Monitoring Station" + }, "man_made/observation": { "icon": "poi-tower", "geometry": [ diff --git a/data/presets/presets/man_made/monitoring_station b/data/presets/presets/man_made/monitoring_station.json similarity index 75% rename from data/presets/presets/man_made/monitoring_station rename to data/presets/presets/man_made/monitoring_station.json index 7c241cef9..d9024fb13 100644 --- a/data/presets/presets/man_made/monitoring_station +++ b/data/presets/presets/man_made/monitoring_station.json @@ -4,17 +4,18 @@ "area" ], "fields": [ - "monitoring_multi" + "monitoring_multi", "operator" ], "terms": [ "weather", "earthquake", - "sismology", + "seismology", "air", "gps" ], "tags": { "man_made": "monitoring_station" }, -"name": "Monitoring Station" + "name": "Monitoring Station" +} diff --git a/data/taginfo.json b/data/taginfo.json index e3e6ab678..1234b4ab0 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1964,6 +1964,10 @@ "key": "man_made", "value": "mast" }, + { + "key": "man_made", + "value": "monitoring_station" + }, { "key": "tower:type", "value": "observation" diff --git a/dist/locales/en.json b/dist/locales/en.json index e937cd34c..7926e3362 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4582,7 +4582,7 @@ }, "man_made/monitoring_station": { "name": "Monitoring Station", - "terms": "weather,earthquake,sismology,air,gps" + "terms": "weather,earthquake,seismology,air,gps" }, "man_made/observation": { "name": "Observation Tower", @@ -6259,4 +6259,4 @@ } } } -} +} \ No newline at end of file From e73ae29b02ae393d47301475b0d195cc4feabcc7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 1 Dec 2017 15:55:23 -0500 Subject: [PATCH 128/159] Add an antenna icon for monitoring station --- data/presets/presets.json | 1 + data/presets/presets/man_made/monitoring_station.json | 1 + 2 files changed, 2 insertions(+) diff --git a/data/presets/presets.json b/data/presets/presets.json index 480380f37..755d72566 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -10556,6 +10556,7 @@ "name": "Mast" }, "man_made/monitoring_station": { + "icon": "poi-mast", "geometry": [ "point", "area" diff --git a/data/presets/presets/man_made/monitoring_station.json b/data/presets/presets/man_made/monitoring_station.json index d9024fb13..3b24481bf 100644 --- a/data/presets/presets/man_made/monitoring_station.json +++ b/data/presets/presets/man_made/monitoring_station.json @@ -1,4 +1,5 @@ { + "icon": "poi-mast", "geometry": [ "point", "area" From efc4f6c88c96b78837721573838a66691de605d7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 1 Dec 2017 16:02:45 -0500 Subject: [PATCH 129/159] Mark office=administrative as non-searchable (closes #4578) --- data/presets.yaml | 1 - data/presets/presets.json | 37 ++++++++++--------- ...ministrative.json => _administrative.json} | 1 + data/taginfo.json | 8 ++-- dist/locales/en.json | 8 ++-- 5 files changed, 28 insertions(+), 27 deletions(-) rename data/presets/presets/office/{administrative.json => _administrative.json} (92%) diff --git a/data/presets.yaml b/data/presets.yaml index 0cdef64b6..94465b893 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4050,7 +4050,6 @@ en: office/administrative: # office=administrative name: Administrative Office - terms: '' office/adoption_agency: # office=adoption_agency name: Adoption Agency diff --git a/data/presets/presets.json b/data/presets/presets.json index 755d72566..76461fff5 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -11480,6 +11480,25 @@ "terms": [], "name": "Office" }, + "office/administrative": { + "icon": "commercial", + "fields": [ + "name", + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "area" + ], + "tags": { + "office": "administrative" + }, + "terms": [], + "searchable": false, + "name": "Administrative Office" + }, "office/physician": { "icon": "commercial", "fields": [ @@ -11539,24 +11558,6 @@ "terms": [], "name": "Accountant Office" }, - "office/administrative": { - "icon": "commercial", - "fields": [ - "name", - "address", - "building_area", - "opening_hours" - ], - "geometry": [ - "point", - "area" - ], - "tags": { - "office": "administrative" - }, - "terms": [], - "name": "Administrative Office" - }, "office/adoption_agency": { "icon": "commercial", "fields": [ diff --git a/data/presets/presets/office/administrative.json b/data/presets/presets/office/_administrative.json similarity index 92% rename from data/presets/presets/office/administrative.json rename to data/presets/presets/office/_administrative.json index b2a4f2029..9db4dbaf4 100644 --- a/data/presets/presets/office/administrative.json +++ b/data/presets/presets/office/_administrative.json @@ -14,5 +14,6 @@ "office": "administrative" }, "terms": [], + "searchable": false, "name": "Administrative Office" } diff --git a/data/taginfo.json b/data/taginfo.json index 1234b4ab0..a77e67f42 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2165,6 +2165,10 @@ { "key": "office" }, + { + "key": "office", + "value": "administrative" + }, { "key": "office", "value": "physician" @@ -2177,10 +2181,6 @@ "key": "office", "value": "accountant" }, - { - "key": "office", - "value": "administrative" - }, { "key": "office", "value": "adoption_agency" diff --git a/dist/locales/en.json b/dist/locales/en.json index 7926e3362..36b81d618 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4784,6 +4784,10 @@ "name": "Office", "terms": "" }, + "office/administrative": { + "name": "Administrative Office", + "terms": "" + }, "office/physician": { "name": "Physician", "terms": "" @@ -4796,10 +4800,6 @@ "name": "Accountant Office", "terms": "" }, - "office/administrative": { - "name": "Administrative Office", - "terms": "" - }, "office/adoption_agency": { "name": "Adoption Agency", "terms": "" From 997a6a2ae75b9f3e3b588e0aa507e9613274f6e8 Mon Sep 17 00:00:00 2001 From: Lucy King Date: Sat, 2 Dec 2017 12:29:52 +0000 Subject: [PATCH 130/159] Changed tourist attraction icon from monument to star --- data/presets/presets/tourism/attraction.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/presets/presets/tourism/attraction.json b/data/presets/presets/tourism/attraction.json index 431d22b50..742055550 100644 --- a/data/presets/presets/tourism/attraction.json +++ b/data/presets/presets/tourism/attraction.json @@ -1,5 +1,5 @@ { - "icon": "monument", + "icon": "star", "fields": [ "name", "operator", @@ -14,4 +14,4 @@ "tourism": "attraction" }, "name": "Tourist Attraction" -} \ No newline at end of file +} From c83eddff1083ecae1807c4a5409ac67847716c7d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sat, 2 Dec 2017 18:03:44 -0500 Subject: [PATCH 131/159] Update transit presets for Public Transport v2 schema (closes #3041) (closes #3508) (closes #4566) --- data/presets.yaml | 180 +- data/presets/presets.json | 1593 +++++++++++++++-- .../aerialway/{station.json => _station.json} | 3 +- .../{bus_station.json => _bus_station.json} | 3 +- ...rry_terminal.json => _ferry_terminal.json} | 3 +- .../highway/{bus_stop.json => _bus_stop.json} | 4 +- .../presets/public_transport/platform.json | 15 +- .../public_transport/platform_aerialway.json | 36 + .../public_transport/platform_bus.json | 45 + .../public_transport/platform_ferry.json | 38 + .../public_transport/platform_light_rail.json | 51 + .../public_transport/platform_monorail.json | 47 + .../public_transport/platform_subway.json | 50 + .../public_transport/platform_train.json | 48 + .../public_transport/platform_tram.json | 52 + .../public_transport/platform_trolleybus.json | 50 + .../presets/public_transport/station.json | 31 + .../public_transport/station_aerialway.json | 39 + .../presets/public_transport/station_bus.json | 46 + .../public_transport/station_ferry.json | 49 + .../public_transport/station_light_rail.json | 53 + .../public_transport/station_monorail.json | 47 + .../public_transport/station_subway.json | 52 + .../public_transport/station_train.json | 48 + .../public_transport/station_train_halt.json | 40 + .../public_transport/station_tram.json | 42 + .../public_transport/station_trolleybus.json | 51 + .../public_transport/stop_position.json | 9 +- .../stop_position_aerialway.json | 29 + .../public_transport/stop_position_bus.json | 28 + .../public_transport/stop_position_ferry.json | 31 + .../stop_position_light_rail.json | 43 + .../stop_position_monorail.json | 39 + .../stop_position_subway.json | 42 + .../public_transport/stop_position_train.json | 40 + .../public_transport/stop_position_tram.json | 44 + .../stop_position_trolleybus.json | 33 + .../presets/railway/{halt.json => _halt.json} | 5 +- .../railway/{platform.json => _platform.json} | 3 +- .../railway/{station.json => _station.json} | 3 +- .../{tram_stop.json => _tram_stop.json} | 3 +- data/taginfo.json | 176 +- dist/locales/en.json | 186 +- 43 files changed, 3168 insertions(+), 262 deletions(-) rename data/presets/presets/aerialway/{station.json => _station.json} (83%) rename data/presets/presets/amenity/{bus_station.json => _bus_station.json} (83%) rename data/presets/presets/amenity/{ferry_terminal.json => _ferry_terminal.json} (82%) rename data/presets/presets/highway/{bus_stop.json => _bus_stop.json} (80%) create mode 100644 data/presets/presets/public_transport/platform_aerialway.json create mode 100644 data/presets/presets/public_transport/platform_bus.json create mode 100644 data/presets/presets/public_transport/platform_ferry.json create mode 100644 data/presets/presets/public_transport/platform_light_rail.json create mode 100644 data/presets/presets/public_transport/platform_monorail.json create mode 100644 data/presets/presets/public_transport/platform_subway.json create mode 100644 data/presets/presets/public_transport/platform_train.json create mode 100644 data/presets/presets/public_transport/platform_tram.json create mode 100644 data/presets/presets/public_transport/platform_trolleybus.json create mode 100644 data/presets/presets/public_transport/station.json create mode 100644 data/presets/presets/public_transport/station_aerialway.json create mode 100644 data/presets/presets/public_transport/station_bus.json create mode 100644 data/presets/presets/public_transport/station_ferry.json create mode 100644 data/presets/presets/public_transport/station_light_rail.json create mode 100644 data/presets/presets/public_transport/station_monorail.json create mode 100644 data/presets/presets/public_transport/station_subway.json create mode 100644 data/presets/presets/public_transport/station_train.json create mode 100644 data/presets/presets/public_transport/station_train_halt.json create mode 100644 data/presets/presets/public_transport/station_tram.json create mode 100644 data/presets/presets/public_transport/station_trolleybus.json create mode 100644 data/presets/presets/public_transport/stop_position_aerialway.json create mode 100644 data/presets/presets/public_transport/stop_position_bus.json create mode 100644 data/presets/presets/public_transport/stop_position_ferry.json create mode 100644 data/presets/presets/public_transport/stop_position_light_rail.json create mode 100644 data/presets/presets/public_transport/stop_position_monorail.json create mode 100644 data/presets/presets/public_transport/stop_position_subway.json create mode 100644 data/presets/presets/public_transport/stop_position_train.json create mode 100644 data/presets/presets/public_transport/stop_position_tram.json create mode 100644 data/presets/presets/public_transport/stop_position_trolleybus.json rename data/presets/presets/railway/{halt.json => _halt.json} (75%) rename data/presets/presets/railway/{platform.json => _platform.json} (80%) rename data/presets/presets/railway/{station.json => _station.json} (88%) rename data/presets/presets/railway/{tram_stop.json => _tram_stop.json} (82%) diff --git a/data/presets.yaml b/data/presets.yaml index 94465b893..ed49710f8 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1671,7 +1671,6 @@ en: aerialway/station: # aerialway=station name: Aerialway Station - terms: '' aerialway/t-bar: # aerialway=t-bar name: T-bar Lift @@ -1795,8 +1794,7 @@ en: terms: '' amenity/bus_station: # amenity=bus_station - name: Bus Station - terms: '' + name: Bus Station / Terminal amenity/cafe: # amenity=cafe name: Cafe @@ -1913,8 +1911,7 @@ en: terms: '' amenity/ferry_terminal: # amenity=ferry_terminal - name: Ferry Terminal - terms: '' + name: Ferry Station / Terminal amenity/fire_station: # amenity=fire_station name: Fire Station @@ -3016,8 +3013,7 @@ en: terms: '' highway/bus_stop: # highway=bus_stop - name: Bus Stop - terms: '' + name: Bus Stop / Platform highway/corridor: # highway=corridor name: Indoor Corridor @@ -4403,12 +4399,159 @@ en: terms: '' public_transport/platform: # public_transport=platform - name: Platform - terms: '' + name: Transit Stop / Platform + # 'terms: platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/platform_aerialway: + # 'public_transport=platform, aerialway=yes' + name: Aerialway Stop / Platform + # 'terms: aerialway,cable car,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/platform_bus: + # 'public_transport=platform, bus=yes' + name: Bus Stop / Platform + # 'terms: bus,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/platform_ferry: + # 'public_transport=platform, ferry=yes' + name: Ferry Stop / Platform + # 'terms: boat,dock,ferry,pier,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/platform_light_rail: + # 'public_transport=platform, light_rail=yes' + name: Light Rail Stop / Platform + # 'terms: electric,light rail,platform,public transit,public transportation,rail,track,tram,trolley,transit,transportation' + terms: '' + public_transport/platform_monorail: + # 'public_transport=platform, monorail=yes' + name: Monorail Stop / Platform + # 'terms: monorail,platform,public transit,public transportation,rail,transit,transportation' + terms: '' + public_transport/platform_subway: + # 'public_transport=platform, train=yes' + name: Subway Stop / Platform + # 'terms: metro,platform,public transit,public transportation,rail,subway,track,transit,transportation,underground' + terms: '' + public_transport/platform_train: + # 'public_transport=platform, train=yes' + name: Train Stop / Platform + # 'terms: platform,public transit,public transportation,rail,track,train,transit,transportation' + terms: '' + public_transport/platform_tram: + # 'public_transport=platform, tram=yes' + name: Tram Stop / Platform + # 'terms: electric,light rail,platform,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation' + terms: '' + public_transport/platform_trolleybus: + # 'public_transport=platform, trolleybus=yes' + name: Trolleybus Stop / Platform + # 'terms: bus,electric,platform,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation' + terms: '' + public_transport/station: + # public_transport=station + name: Transit Station + # 'terms: public transit,public transportation,station,terminal,transit,transportation' + terms: '' + public_transport/station_aerialway: + # 'public_transport=station, aerialway=yes' + name: Aerialway Station + # 'terms: aerialway,cable car,public transit,public transportation,station,terminal,transit,transportation' + terms: '' + public_transport/station_bus: + # 'public_transport=station, bus=yes' + name: Bus Station / Terminal + # 'terms: bus,public transit,public transportation,station,terminal,transit,transportation' + terms: '' + public_transport/station_ferry: + # 'public_transport=station, ferry=yes' + name: Ferry Station / Terminal + # 'terms: boat,dock,ferry,pier,public transit,public transportation,station,terminal,transit,transportation' + terms: '' + public_transport/station_light_rail: + # 'public_transport=station, light_rail=yes' + name: Light Rail Station + # 'terms: electric,light rail,public transit,public transportation,rail,station,terminal,track,tram,trolley,transit,transportation' + terms: '' + public_transport/station_monorail: + # 'public_transport=station, monorail=yes' + name: Train Station + # 'terms: monorail,public transit,public transportation,rail,station,terminal,transit,transportation' + terms: '' + public_transport/station_subway: + # 'public_transport=station, subway=yes' + name: Subway Station + # 'terms: metro,public transit,public transportation,rail,station,subway,terminal,track,transit,transportation,underground' + terms: '' + public_transport/station_train: + # 'public_transport=station, train=yes' + name: Train Station + # 'terms: public transit,public transportation,rail,station,terminal,track,train,transit,transportation' + terms: '' + public_transport/station_train_halt: + # 'public_transport=station, train=yes, railway=halt' + name: Train Station (Halt / Request) + # 'terms: halt,public transit,public transportation,rail,station,track,train,transit,transportation,whistle stop' + terms: '' + public_transport/station_tram: + # 'public_transport=station, tram=yes' + name: Tram Station + # 'terms: electric,light rail,public transit,public transportation,rail,station,streetcar,terminal,track,tram,trolley,transit,transportation' + terms: '' + public_transport/station_trolleybus: + # 'public_transport=station, trolleybus=yes' + name: Trolleybus Station / Terminal + # 'terms: bus,electric,public transit,public transportation,station,streetcar,terminal,trackless,tram,trolley,transit,transportation' + terms: '' public_transport/stop_position: # public_transport=stop_position - name: Stop Position - terms: '' + name: Transit Stopping Location + # 'terms: public transit,public transportation,transit,transportation' + terms: '' + public_transport/stop_position_aerialway: + # 'public_transport=stop_position, aerialway=yes' + name: Aerialway Stopping Location + # 'terms: aerialway,cable car,public transit,public transportation,transit,transportation' + terms: '' + public_transport/stop_position_bus: + # 'public_transport=stop_position, bus=yes' + name: Bus Stopping Location + # 'terms: bus,public transit,public transportation,transit,transportation' + terms: '' + public_transport/stop_position_ferry: + # 'public_transport=stop_position, ferry=yes' + name: Ferry Stopping Location + # 'terms: boat,dock,ferry,pier,public transit,public transportation,transit,transportation' + terms: '' + public_transport/stop_position_light_rail: + # 'public_transport=stop_position, light_rail=yes' + name: Light Rail Stopping Location + # 'terms: electric,light rail,public transit,public transportation,rail,track,tram,trolley,transit,transportation' + terms: '' + public_transport/stop_position_monorail: + # 'public_transport=stop_position, monorail=yes' + name: Monorail Stopping Location + # 'terms: monorail,public transit,public transportation,rail,transit,transportation' + terms: '' + public_transport/stop_position_subway: + # 'public_transport=stop_position, subway=yes' + name: Subway Stopping Location + # 'terms: metro,public transit,public transportation,rail,subway,track,transit,transportation,underground' + terms: '' + public_transport/stop_position_train: + # 'public_transport=stop_position, train=yes' + name: Train Stopping Location + # 'terms: public transit,public transportation,rail,track,train,transit,transportation' + terms: '' + public_transport/stop_position_tram: + # 'public_transport=stop_position, tram=yes' + name: Tram Stopping Location + # 'terms: electric,light rail,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation' + terms: '' + public_transport/stop_position_trolleybus: + # 'public_transport=stop_position, trolleybus=yes' + name: Trolleybus Stopping Location + # 'terms: bus,electric,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation' + terms: '' railway: # railway=* name: Railway @@ -4442,9 +4585,7 @@ en: terms: '' railway/halt: # railway=halt - name: Railway Halt - # 'terms: break,interrupt,rest,wait,interruption' - terms: '' + name: Train Station (Halt / Request) railway/level_crossing: # railway=level_crossing name: Railway Crossing (Road) @@ -4476,8 +4617,7 @@ en: terms: '' railway/platform: # railway=platform - name: Railway Platform - terms: '' + name: Train Stop / Platform railway/rail: # railway=rail name: Rail @@ -4489,9 +4629,7 @@ en: terms: '' railway/station: # railway=station - name: Railway Station - # 'terms: train station,station' - terms: '' + name: Train Station railway/subway: # railway=subway name: Subway @@ -4519,9 +4657,7 @@ en: terms: '' railway/tram_stop: # railway=tram_stop - name: Tram Stop - # 'terms: light rail,streetcar,tram,trolley' - terms: '' + name: Tram Stopping Position relation: name: Relation terms: '' diff --git a/data/presets/presets.json b/data/presets/presets.json index 76461fff5..6722747c5 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -183,6 +183,25 @@ }, "name": "Billboard" }, + "aerialway/station": { + "icon": "aerialway", + "geometry": [ + "point", + "vertex", + "area" + ], + "fields": [ + "aerialway/access", + "aerialway/summer/access", + "elevation", + "building_area" + ], + "tags": { + "aerialway": "station" + }, + "name": "Aerialway Station", + "searchable": false + }, "aerialway/cable_car": { "geometry": [ "line" @@ -346,24 +365,6 @@ }, "name": "Rope Tow Lift" }, - "aerialway/station": { - "icon": "aerialway", - "geometry": [ - "point", - "vertex", - "area" - ], - "fields": [ - "aerialway/access", - "aerialway/summer/access", - "elevation", - "building_area" - ], - "tags": { - "aerialway": "station" - }, - "name": "Aerialway Station" - }, "aerialway/t-bar": { "geometry": [ "line" @@ -520,6 +521,26 @@ }, "name": "Airport Terminal" }, + "amenity/bus_station": { + "icon": "bus", + "fields": [ + "name", + "building_area", + "operator", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "area" + ], + "tags": { + "amenity": "bus_station" + }, + "name": "Bus Station / Terminal", + "searchable": false + }, "amenity/coworking_space": { "icon": "commercial", "fields": [ @@ -541,6 +562,27 @@ "name": "Coworking Space", "searchable": false }, + "amenity/ferry_terminal": { + "icon": "ferry", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "terms": [], + "tags": { + "amenity": "ferry_terminal" + }, + "name": "Ferry Station / Terminal", + "searchable": false + }, "amenity/nursing_home": { "icon": "wheelchair", "fields": [ @@ -987,25 +1029,6 @@ }, "name": "Currency Exchange" }, - "amenity/bus_station": { - "icon": "bus", - "fields": [ - "name", - "building_area", - "operator", - "internet_access", - "internet_access/fee", - "internet_access/ssid" - ], - "geometry": [ - "point", - "area" - ], - "tags": { - "amenity": "bus_station" - }, - "name": "Bus Station" - }, "amenity/cafe": { "icon": "cafe", "fields": [ @@ -1548,26 +1571,6 @@ ], "name": "Fast Food" }, - "amenity/ferry_terminal": { - "icon": "ferry", - "fields": [ - "name", - "network", - "operator", - "address", - "building_area" - ], - "geometry": [ - "point", - "vertex", - "area" - ], - "terms": [], - "tags": { - "amenity": "ferry_terminal" - }, - "name": "Ferry Terminal" - }, "amenity/fire_station": { "icon": "fire-station", "fields": [ @@ -6632,6 +6635,25 @@ }, "name": "Speech Therapist" }, + "highway/bus_stop": { + "icon": "bus", + "fields": [ + "name", + "network", + "operator", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex" + ], + "tags": { + "highway": "bus_stop" + }, + "name": "Bus Stop / Platform", + "searchable": false + }, "highway/bridleway": { "fields": [ "name", @@ -6654,25 +6676,6 @@ ], "name": "Bridle Path" }, - "highway/bus_stop": { - "icon": "bus", - "fields": [ - "name", - "network", - "operator", - "bench", - "shelter" - ], - "geometry": [ - "point", - "vertex" - ], - "tags": { - "highway": "bus_stop" - }, - "terms": [], - "name": "Bus Stop" - }, "highway/corridor": { "icon": "highway-footway", "fields": [ @@ -13017,13 +13020,433 @@ }, "name": "Transformer" }, - "public_transport/platform": { + "public_transport/platform_aerialway": { + "icon": "aerialway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "aerialway", + "cable car", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stop / Platform" + }, + "public_transport/platform_bus": { "icon": "bus", "fields": [ "name", "ref_platform", "network", "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "bus": "yes" + }, + "addTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stop / Platform" + }, + "public_transport/platform_ferry": { + "icon": "ferry", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stop / Platform" + }, + "public_transport/platform_light_rail": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stop / Platform" + }, + "public_transport/platform_monorail": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "monorail": "yes" + }, + "addTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "monorail", + "platform", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stop / Platform" + }, + "public_transport/platform_subway": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "metro", + "platform", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stop / Platform" + }, + "public_transport/platform_train": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stop / Platform" + }, + "public_transport/platform_tram": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "tram": "yes" + }, + "addTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stop / Platform" + }, + "public_transport/platform_trolleybus": { + "icon": "bus", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "electric", + "platform", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stop / Platform" + }, + "public_transport/platform": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", "shelter" ], "geometry": [ @@ -13035,7 +13458,842 @@ "tags": { "public_transport": "platform" }, - "name": "Platform" + "terms": [ + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stop / Platform", + "matchScore": 0.2 + }, + "public_transport/station_aerialway": { + "icon": "aerialway", + "fields": [ + "name", + "network", + "operator", + "aerialway/access", + "aerialway/summer/access", + "elevation", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "aerialway": "yes" + }, + "reference": { + "key": "aerialway", + "value": "station" + }, + "terms": [ + "aerialway", + "cable car", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Aerialway Station" + }, + "public_transport/station_bus": { + "icon": "bus", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "bus": "yes" + }, + "addTags": { + "public_transport": "station", + "bus": "yes", + "amenity": "bus_station" + }, + "removeTags": { + "public_transport": "station", + "bus": "yes", + "amenity": "bus_station" + }, + "reference": { + "key": "amenity", + "value": "bus_station" + }, + "terms": [ + "bus", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Bus Station / Terminal" + }, + "public_transport/station_ferry": { + "icon": "ferry", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "ferry": "yes" + }, + "addTags": { + "public_transport": "station", + "ferry": "yes", + "amenity": "ferry_terminal" + }, + "removeTags": { + "public_transport": "station", + "ferry": "yes", + "amenity": "ferry_terminal" + }, + "reference": { + "key": "amenity", + "value": "ferry_terminal" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Ferry Station / Terminal" + }, + "public_transport/station_light_rail": { + "icon": "rail-light", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "station", + "light_rail": "yes", + "railway": "station", + "station": "light_rail" + }, + "removeTags": { + "public_transport": "station", + "light_rail": "yes", + "railway": "station", + "station": "light_rail" + }, + "reference": { + "key": "station", + "value": "light_rail" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Station" + }, + "public_transport/station_monorail": { + "icon": "rail-metro", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "monorail": "yes" + }, + "addTags": { + "public_transport": "station", + "monorail": "yes", + "railway": "station" + }, + "removeTags": { + "public_transport": "station", + "monorail": "yes", + "railway": "station" + }, + "reference": { + "key": "railway", + "value": "station" + }, + "terms": [ + "monorail", + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Train Station" + }, + "public_transport/station_subway": { + "icon": "rail-metro", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "subway": "yes" + }, + "addTags": { + "public_transport": "station", + "subway": "yes", + "railway": "station", + "station": "subway" + }, + "removeTags": { + "public_transport": "station", + "subway": "yes", + "railway": "station", + "station": "subway" + }, + "reference": { + "key": "station", + "value": "subway" + }, + "terms": [ + "metro", + "public transit", + "public transportation", + "rail", + "station", + "subway", + "terminal", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Station" + }, + "public_transport/station_train_halt": { + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "train": "yes", + "railway": "halt" + }, + "reference": { + "key": "railway", + "value": "halt" + }, + "terms": [ + "halt", + "public transit", + "public transportation", + "rail", + "station", + "track", + "train", + "transit", + "transportation", + "whistle stop" + ], + "name": "Train Station (Halt / Request)" + }, + "public_transport/station_train": { + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "train": "yes" + }, + "addTags": { + "public_transport": "station", + "train": "yes", + "railway": "station" + }, + "removeTags": { + "public_transport": "station", + "train": "yes", + "railway": "station" + }, + "reference": { + "key": "railway", + "value": "station" + }, + "terms": [ + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Station" + }, + "public_transport/station_tram": { + "icon": "rail-light", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "tram": "yes" + }, + "reference": { + "key": "public_transport", + "value": "station" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "station", + "streetcar", + "terminal", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Station" + }, + "public_transport/station_trolleybus": { + "icon": "bus", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "station", + "trolleybus": "yes", + "amenity": "bus_station" + }, + "removeTags": { + "public_transport": "station", + "trolleybus": "yes", + "amenity": "bus_station" + }, + "reference": { + "key": "amenity", + "value": "bus_station" + }, + "terms": [ + "bus", + "electric", + "public transit", + "public transportation", + "station", + "streetcar", + "terminal", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Station / Terminal" + }, + "public_transport/station": { + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station" + }, + "terms": [ + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Transit Station", + "matchScore": 0.2 + }, + "public_transport/stop_position_aerialway": { + "icon": "aerialway", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "aerialway", + "cable car", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stopping Location" + }, + "public_transport/stop_position_bus": { + "icon": "bus", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "bus": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "bus", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stopping Location" + }, + "public_transport/stop_position_ferry": { + "icon": "ferry", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stopping Location" + }, + "public_transport/stop_position_light_rail": { + "icon": "rail-light", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "light_rail": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "light_rail": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stopping Location" + }, + "public_transport/stop_position_monorail": { + "icon": "rail-metro", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "monorail": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "monorail": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "monorail": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "monorail", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stopping Location" + }, + "public_transport/stop_position_subway": { + "icon": "rail-metro", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "subway": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "subway": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "subway": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "metro", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stopping Location" + }, + "public_transport/stop_position_train": { + "icon": "rail", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "train": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "train": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "train": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stopping Location" + }, + "public_transport/stop_position_tram": { + "icon": "rail-light", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "tram": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "tram": "yes", + "railway": "tram_stop" + }, + "removeTags": { + "public_transport": "stop_position", + "tram": "yes", + "railway": "tram_stop" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stopping Location" + }, + "public_transport/stop_position_trolleybus": { + "icon": "bus", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "trolleybus": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "bus", + "electric", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stopping Location" }, "public_transport/stop_position": { "icon": "bus", @@ -13051,7 +14309,101 @@ "tags": { "public_transport": "stop_position" }, - "name": "Stop Position" + "terms": [ + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stopping Location", + "matchScore": 0.2 + }, + "railway/halt": { + "icon": "rail", + "geometry": [ + "point", + "vertex" + ], + "tags": { + "railway": "halt" + }, + "terms": [ + "break", + "interrupt", + "rest", + "wait", + "interruption" + ], + "name": "Train Station (Halt / Request)", + "searchable": false + }, + "railway/platform": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "surface", + "lit", + "shelter" + ], + "geometry": [ + "line", + "area" + ], + "tags": { + "railway": "platform" + }, + "name": "Train Stop / Platform", + "searchable": false + }, + "railway/station": { + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "railway": "station" + }, + "terms": [ + "train station", + "station" + ], + "name": "Train Station", + "searchable": false + }, + "railway/tram_stop": { + "icon": "rail-light", + "fields": [ + "name", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "railway": "tram_stop" + }, + "terms": [ + "light rail", + "streetcar", + "tram", + "trolley" + ], + "name": "Tram Stopping Position", + "searchable": false }, "railway/abandoned": { "icon": "railway-abandoned", @@ -13153,24 +14505,6 @@ }, "name": "Funicular" }, - "railway/halt": { - "icon": "rail", - "geometry": [ - "point", - "vertex" - ], - "tags": { - "railway": "halt" - }, - "name": "Railway Halt", - "terms": [ - "break", - "interrupt", - "rest", - "wait", - "interruption" - ] - }, "railway/level_crossing": { "icon": "cross", "geometry": [ @@ -13289,24 +14623,6 @@ ], "name": "Narrow Gauge Rail" }, - "railway/platform": { - "icon": "highway-footway", - "fields": [ - "name", - "ref_platform", - "surface", - "lit", - "shelter" - ], - "geometry": [ - "line", - "area" - ], - "tags": { - "railway": "platform" - }, - "name": "Railway Platform" - }, "railway/rail": { "icon": "railway-rail", "geometry": [ @@ -13341,32 +14657,6 @@ ], "name": "Railway Signal" }, - "railway/station": { - "icon": "rail", - "fields": [ - "name", - "network", - "operator", - "address", - "building_area", - "internet_access", - "internet_access/fee", - "internet_access/ssid" - ], - "geometry": [ - "point", - "vertex", - "area" - ], - "tags": { - "railway": "station" - }, - "terms": [ - "train station", - "station" - ], - "name": "Railway Station" - }, "railway/subway_entrance": { "icon": "entrance", "geometry": [ @@ -13440,27 +14730,6 @@ ], "name": "Train Wash" }, - "railway/tram_stop": { - "icon": "rail-light", - "fields": [ - "name", - "network", - "operator" - ], - "geometry": [ - "vertex" - ], - "tags": { - "railway": "tram_stop" - }, - "terms": [ - "light rail", - "streetcar", - "tram", - "trolley" - ], - "name": "Tram Stop" - }, "railway/tram": { "icon": "railway-light-rail", "geometry": [ diff --git a/data/presets/presets/aerialway/station.json b/data/presets/presets/aerialway/_station.json similarity index 83% rename from data/presets/presets/aerialway/station.json rename to data/presets/presets/aerialway/_station.json index 690a357ae..c31df230b 100644 --- a/data/presets/presets/aerialway/station.json +++ b/data/presets/presets/aerialway/_station.json @@ -14,5 +14,6 @@ "tags": { "aerialway": "station" }, - "name": "Aerialway Station" + "name": "Aerialway Station", + "searchable": false } diff --git a/data/presets/presets/amenity/bus_station.json b/data/presets/presets/amenity/_bus_station.json similarity index 83% rename from data/presets/presets/amenity/bus_station.json rename to data/presets/presets/amenity/_bus_station.json index a533f4f6d..0111a1fb2 100644 --- a/data/presets/presets/amenity/bus_station.json +++ b/data/presets/presets/amenity/_bus_station.json @@ -15,5 +15,6 @@ "tags": { "amenity": "bus_station" }, - "name": "Bus Station" + "name": "Bus Station / Terminal", + "searchable": false } diff --git a/data/presets/presets/amenity/ferry_terminal.json b/data/presets/presets/amenity/_ferry_terminal.json similarity index 82% rename from data/presets/presets/amenity/ferry_terminal.json rename to data/presets/presets/amenity/_ferry_terminal.json index aad03b6cb..1bc720685 100644 --- a/data/presets/presets/amenity/ferry_terminal.json +++ b/data/presets/presets/amenity/_ferry_terminal.json @@ -16,5 +16,6 @@ "tags": { "amenity": "ferry_terminal" }, - "name": "Ferry Terminal" + "name": "Ferry Station / Terminal", + "searchable": false } diff --git a/data/presets/presets/highway/bus_stop.json b/data/presets/presets/highway/_bus_stop.json similarity index 80% rename from data/presets/presets/highway/bus_stop.json rename to data/presets/presets/highway/_bus_stop.json index 346e46853..87d0a5c01 100644 --- a/data/presets/presets/highway/bus_stop.json +++ b/data/presets/presets/highway/_bus_stop.json @@ -14,6 +14,6 @@ "tags": { "highway": "bus_stop" }, - "terms": [], - "name": "Bus Stop" + "name": "Bus Stop / Platform", + "searchable": false } diff --git a/data/presets/presets/public_transport/platform.json b/data/presets/presets/public_transport/platform.json index 5626b2557..ebe13be67 100644 --- a/data/presets/presets/public_transport/platform.json +++ b/data/presets/presets/public_transport/platform.json @@ -1,10 +1,13 @@ { - "icon": "bus", + "icon": "highway-footway", "fields": [ "name", "ref_platform", "network", "operator", + "surface", + "lit", + "bench", "shelter" ], "geometry": [ @@ -16,5 +19,13 @@ "tags": { "public_transport": "platform" }, - "name": "Platform" + "terms": [ + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stop / Platform", + "matchScore": 0.2 } diff --git a/data/presets/presets/public_transport/platform_aerialway.json b/data/presets/presets/public_transport/platform_aerialway.json new file mode 100644 index 000000000..034c841cc --- /dev/null +++ b/data/presets/presets/public_transport/platform_aerialway.json @@ -0,0 +1,36 @@ +{ + "icon": "aerialway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "aerialway", + "cable car", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_bus.json b/data/presets/presets/public_transport/platform_bus.json new file mode 100644 index 000000000..bf9cda26a --- /dev/null +++ b/data/presets/presets/public_transport/platform_bus.json @@ -0,0 +1,45 @@ +{ + "icon": "bus", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "bus": "yes" + }, + "addTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_ferry.json b/data/presets/presets/public_transport/platform_ferry.json new file mode 100644 index 000000000..3fb3d5255 --- /dev/null +++ b/data/presets/presets/public_transport/platform_ferry.json @@ -0,0 +1,38 @@ +{ + "icon": "ferry", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_light_rail.json b/data/presets/presets/public_transport/platform_light_rail.json new file mode 100644 index 000000000..0a2120e90 --- /dev/null +++ b/data/presets/presets/public_transport/platform_light_rail.json @@ -0,0 +1,51 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_monorail.json b/data/presets/presets/public_transport/platform_monorail.json new file mode 100644 index 000000000..c2d7ad15f --- /dev/null +++ b/data/presets/presets/public_transport/platform_monorail.json @@ -0,0 +1,47 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "monorail": "yes" + }, + "addTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "monorail", + "platform", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_subway.json b/data/presets/presets/public_transport/platform_subway.json new file mode 100644 index 000000000..0ad5fc628 --- /dev/null +++ b/data/presets/presets/public_transport/platform_subway.json @@ -0,0 +1,50 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "metro", + "platform", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_train.json b/data/presets/presets/public_transport/platform_train.json new file mode 100644 index 000000000..86dc71380 --- /dev/null +++ b/data/presets/presets/public_transport/platform_train.json @@ -0,0 +1,48 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_tram.json b/data/presets/presets/public_transport/platform_tram.json new file mode 100644 index 000000000..8a2cc772d --- /dev/null +++ b/data/presets/presets/public_transport/platform_tram.json @@ -0,0 +1,52 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "tram": "yes" + }, + "addTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform_trolleybus.json b/data/presets/presets/public_transport/platform_trolleybus.json new file mode 100644 index 000000000..7b6163714 --- /dev/null +++ b/data/presets/presets/public_transport/platform_trolleybus.json @@ -0,0 +1,50 @@ +{ + "icon": "bus", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "point", + "vertex", + "line", + "area" + ], + "tags": { + "public_transport": "platform", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "electric", + "platform", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stop / Platform" +} diff --git a/data/presets/presets/public_transport/station.json b/data/presets/presets/public_transport/station.json new file mode 100644 index 000000000..672712568 --- /dev/null +++ b/data/presets/presets/public_transport/station.json @@ -0,0 +1,31 @@ +{ + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station" + }, + "terms": [ + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Transit Station", + "matchScore": 0.2 +} diff --git a/data/presets/presets/public_transport/station_aerialway.json b/data/presets/presets/public_transport/station_aerialway.json new file mode 100644 index 000000000..97b953b0a --- /dev/null +++ b/data/presets/presets/public_transport/station_aerialway.json @@ -0,0 +1,39 @@ +{ + "icon": "aerialway", + "fields": [ + "name", + "network", + "operator", + "aerialway/access", + "aerialway/summer/access", + "elevation", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "aerialway": "yes" + }, + "reference": { + "key": "aerialway", + "value": "station" + }, + "terms": [ + "aerialway", + "cable car", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Aerialway Station" +} diff --git a/data/presets/presets/public_transport/station_bus.json b/data/presets/presets/public_transport/station_bus.json new file mode 100644 index 000000000..2ea27934b --- /dev/null +++ b/data/presets/presets/public_transport/station_bus.json @@ -0,0 +1,46 @@ +{ + "icon": "bus", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "bus": "yes" + }, + "addTags": { + "public_transport": "station", + "bus": "yes", + "amenity": "bus_station" + }, + "removeTags": { + "public_transport": "station", + "bus": "yes", + "amenity": "bus_station" + }, + "reference": { + "key": "amenity", + "value": "bus_station" + }, + "terms": [ + "bus", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Bus Station / Terminal" +} diff --git a/data/presets/presets/public_transport/station_ferry.json b/data/presets/presets/public_transport/station_ferry.json new file mode 100644 index 000000000..503c060a4 --- /dev/null +++ b/data/presets/presets/public_transport/station_ferry.json @@ -0,0 +1,49 @@ +{ + "icon": "ferry", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "ferry": "yes" + }, + "addTags": { + "public_transport": "station", + "ferry": "yes", + "amenity": "ferry_terminal" + }, + "removeTags": { + "public_transport": "station", + "ferry": "yes", + "amenity": "ferry_terminal" + }, + "reference": { + "key": "amenity", + "value": "ferry_terminal" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "public transit", + "public transportation", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Ferry Station / Terminal" +} diff --git a/data/presets/presets/public_transport/station_light_rail.json b/data/presets/presets/public_transport/station_light_rail.json new file mode 100644 index 000000000..081dd8023 --- /dev/null +++ b/data/presets/presets/public_transport/station_light_rail.json @@ -0,0 +1,53 @@ +{ + "icon": "rail-light", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "station", + "light_rail": "yes", + "railway": "station", + "station": "light_rail" + }, + "removeTags": { + "public_transport": "station", + "light_rail": "yes", + "railway": "station", + "station": "light_rail" + }, + "reference": { + "key": "station", + "value": "light_rail" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Station" +} diff --git a/data/presets/presets/public_transport/station_monorail.json b/data/presets/presets/public_transport/station_monorail.json new file mode 100644 index 000000000..356cdf5b2 --- /dev/null +++ b/data/presets/presets/public_transport/station_monorail.json @@ -0,0 +1,47 @@ +{ + "icon": "rail-metro", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "monorail": "yes" + }, + "addTags": { + "public_transport": "station", + "monorail": "yes", + "railway": "station" + }, + "removeTags": { + "public_transport": "station", + "monorail": "yes", + "railway": "station" + }, + "reference": { + "key": "railway", + "value": "station" + }, + "terms": [ + "monorail", + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "transit", + "transportation" + ], + "name": "Train Station" +} diff --git a/data/presets/presets/public_transport/station_subway.json b/data/presets/presets/public_transport/station_subway.json new file mode 100644 index 000000000..fc4c5447a --- /dev/null +++ b/data/presets/presets/public_transport/station_subway.json @@ -0,0 +1,52 @@ +{ + "icon": "rail-metro", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "subway": "yes" + }, + "addTags": { + "public_transport": "station", + "subway": "yes", + "railway": "station", + "station": "subway" + }, + "removeTags": { + "public_transport": "station", + "subway": "yes", + "railway": "station", + "station": "subway" + }, + "reference": { + "key": "station", + "value": "subway" + }, + "terms": [ + "metro", + "public transit", + "public transportation", + "rail", + "station", + "subway", + "terminal", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Station" +} diff --git a/data/presets/presets/public_transport/station_train.json b/data/presets/presets/public_transport/station_train.json new file mode 100644 index 000000000..6d3c1086b --- /dev/null +++ b/data/presets/presets/public_transport/station_train.json @@ -0,0 +1,48 @@ +{ + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "train": "yes" + }, + "addTags": { + "public_transport": "station", + "train": "yes", + "railway": "station" + }, + "removeTags": { + "public_transport": "station", + "train": "yes", + "railway": "station" + }, + "reference": { + "key": "railway", + "value": "station" + }, + "terms": [ + "public transit", + "public transportation", + "rail", + "station", + "terminal", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Station" +} diff --git a/data/presets/presets/public_transport/station_train_halt.json b/data/presets/presets/public_transport/station_train_halt.json new file mode 100644 index 000000000..313969b3d --- /dev/null +++ b/data/presets/presets/public_transport/station_train_halt.json @@ -0,0 +1,40 @@ +{ + "icon": "rail", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "train": "yes", + "railway": "halt" + }, + "reference": { + "key": "railway", + "value": "halt" + }, + "terms": [ + "halt", + "public transit", + "public transportation", + "rail", + "station", + "track", + "train", + "transit", + "transportation", + "whistle stop" + ], + "name": "Train Station (Halt / Request)" +} diff --git a/data/presets/presets/public_transport/station_tram.json b/data/presets/presets/public_transport/station_tram.json new file mode 100644 index 000000000..744a77479 --- /dev/null +++ b/data/presets/presets/public_transport/station_tram.json @@ -0,0 +1,42 @@ +{ + "icon": "rail-light", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "tram": "yes" + }, + "reference": { + "key": "public_transport", + "value": "station" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "station", + "streetcar", + "terminal", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Station" +} diff --git a/data/presets/presets/public_transport/station_trolleybus.json b/data/presets/presets/public_transport/station_trolleybus.json new file mode 100644 index 000000000..dd568bdb2 --- /dev/null +++ b/data/presets/presets/public_transport/station_trolleybus.json @@ -0,0 +1,51 @@ +{ + "icon": "bus", + "fields": [ + "name", + "network", + "operator", + "address", + "building_area", + "internet_access", + "internet_access/fee", + "internet_access/ssid" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "public_transport": "station", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "station", + "trolleybus": "yes", + "amenity": "bus_station" + }, + "removeTags": { + "public_transport": "station", + "trolleybus": "yes", + "amenity": "bus_station" + }, + "reference": { + "key": "amenity", + "value": "bus_station" + }, + "terms": [ + "bus", + "electric", + "public transit", + "public transportation", + "station", + "streetcar", + "terminal", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Station / Terminal" +} diff --git a/data/presets/presets/public_transport/stop_position.json b/data/presets/presets/public_transport/stop_position.json index cfb163244..b2e3f2bad 100644 --- a/data/presets/presets/public_transport/stop_position.json +++ b/data/presets/presets/public_transport/stop_position.json @@ -12,5 +12,12 @@ "tags": { "public_transport": "stop_position" }, - "name": "Stop Position" + "terms": [ + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stopping Location", + "matchScore": 0.2 } diff --git a/data/presets/presets/public_transport/stop_position_aerialway.json b/data/presets/presets/public_transport/stop_position_aerialway.json new file mode 100644 index 000000000..79b6e149d --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_aerialway.json @@ -0,0 +1,29 @@ +{ + "icon": "aerialway", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "aerialway", + "cable car", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_bus.json b/data/presets/presets/public_transport/stop_position_bus.json new file mode 100644 index 000000000..b1977c4ee --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_bus.json @@ -0,0 +1,28 @@ +{ + "icon": "bus", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "bus": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "bus", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_ferry.json b/data/presets/presets/public_transport/stop_position_ferry.json new file mode 100644 index 000000000..01e639ca7 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_ferry.json @@ -0,0 +1,31 @@ +{ + "icon": "ferry", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_light_rail.json b/data/presets/presets/public_transport/stop_position_light_rail.json new file mode 100644 index 000000000..e2bb0994f --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_light_rail.json @@ -0,0 +1,43 @@ +{ + "icon": "rail-light", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "light_rail": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "light_rail": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_monorail.json b/data/presets/presets/public_transport/stop_position_monorail.json new file mode 100644 index 000000000..3c59a4144 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_monorail.json @@ -0,0 +1,39 @@ +{ + "icon": "rail-metro", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "monorail": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "monorail": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "monorail": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "monorail", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_subway.json b/data/presets/presets/public_transport/stop_position_subway.json new file mode 100644 index 000000000..e797d7f08 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_subway.json @@ -0,0 +1,42 @@ +{ + "icon": "rail-metro", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "subway": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "subway": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "subway": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "metro", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_train.json b/data/presets/presets/public_transport/stop_position_train.json new file mode 100644 index 000000000..fb3b651d7 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_train.json @@ -0,0 +1,40 @@ +{ + "icon": "rail", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "train": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "train": "yes", + "railway": "stop" + }, + "removeTags": { + "public_transport": "stop_position", + "train": "yes", + "railway": "stop" + }, + "reference": { + "key": "railway", + "value": "stop" + }, + "terms": [ + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_tram.json b/data/presets/presets/public_transport/stop_position_tram.json new file mode 100644 index 000000000..7d4a24b52 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_tram.json @@ -0,0 +1,44 @@ +{ + "icon": "rail-light", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "tram": "yes" + }, + "addTags": { + "public_transport": "stop_position", + "tram": "yes", + "railway": "tram_stop" + }, + "removeTags": { + "public_transport": "stop_position", + "tram": "yes", + "railway": "tram_stop" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "electric", + "light rail", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stopping Location" +} diff --git a/data/presets/presets/public_transport/stop_position_trolleybus.json b/data/presets/presets/public_transport/stop_position_trolleybus.json new file mode 100644 index 000000000..5c597c7f2 --- /dev/null +++ b/data/presets/presets/public_transport/stop_position_trolleybus.json @@ -0,0 +1,33 @@ +{ + "icon": "bus", + "fields": [ + "name", + "ref_stop_position", + "network", + "operator" + ], + "geometry": [ + "vertex" + ], + "tags": { + "public_transport": "stop_position", + "trolleybus": "yes" + }, + "reference": { + "key": "public_transport", + "value": "stop_position" + }, + "terms": [ + "bus", + "electric", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stopping Location" +} diff --git a/data/presets/presets/railway/halt.json b/data/presets/presets/railway/_halt.json similarity index 75% rename from data/presets/presets/railway/halt.json rename to data/presets/presets/railway/_halt.json index 20d556396..ad3a5bb61 100644 --- a/data/presets/presets/railway/halt.json +++ b/data/presets/presets/railway/_halt.json @@ -7,12 +7,13 @@ "tags": { "railway": "halt" }, - "name": "Railway Halt", "terms": [ "break", "interrupt", "rest", "wait", "interruption" - ] + ], + "name": "Train Station (Halt / Request)", + "searchable": false } diff --git a/data/presets/presets/railway/platform.json b/data/presets/presets/railway/_platform.json similarity index 80% rename from data/presets/presets/railway/platform.json rename to data/presets/presets/railway/_platform.json index 449c221a0..77aae430a 100644 --- a/data/presets/presets/railway/platform.json +++ b/data/presets/presets/railway/_platform.json @@ -14,5 +14,6 @@ "tags": { "railway": "platform" }, - "name": "Railway Platform" + "name": "Train Stop / Platform", + "searchable": false } diff --git a/data/presets/presets/railway/station.json b/data/presets/presets/railway/_station.json similarity index 88% rename from data/presets/presets/railway/station.json rename to data/presets/presets/railway/_station.json index d6c868a02..3229fa4aa 100644 --- a/data/presets/presets/railway/station.json +++ b/data/presets/presets/railway/_station.json @@ -22,5 +22,6 @@ "train station", "station" ], - "name": "Railway Station" + "name": "Train Station", + "searchable": false } diff --git a/data/presets/presets/railway/tram_stop.json b/data/presets/presets/railway/_tram_stop.json similarity index 82% rename from data/presets/presets/railway/tram_stop.json rename to data/presets/presets/railway/_tram_stop.json index 636c6811b..fe334e72b 100644 --- a/data/presets/presets/railway/tram_stop.json +++ b/data/presets/presets/railway/_tram_stop.json @@ -17,5 +17,6 @@ "tram", "trolley" ], - "name": "Tram Stop" + "name": "Tram Stopping Position", + "searchable": false } diff --git a/data/taginfo.json b/data/taginfo.json index a77e67f42..2bb7f68d3 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -47,6 +47,10 @@ "key": "advertising", "value": "billboard" }, + { + "key": "aerialway", + "value": "station" + }, { "key": "aerialway", "value": "cable_car" @@ -87,10 +91,6 @@ "key": "aerialway", "value": "rope_tow" }, - { - "key": "aerialway", - "value": "station" - }, { "key": "aerialway", "value": "t-bar" @@ -127,10 +127,18 @@ "key": "aeroway", "value": "terminal" }, + { + "key": "amenity", + "value": "bus_station" + }, { "key": "amenity", "value": "coworking_space" }, + { + "key": "amenity", + "value": "ferry_terminal" + }, { "key": "amenity", "value": "nursing_home" @@ -207,10 +215,6 @@ "key": "amenity", "value": "bureau_de_change" }, - { - "key": "amenity", - "value": "bus_station" - }, { "key": "amenity", "value": "cafe" @@ -307,10 +311,6 @@ "key": "amenity", "value": "fast_food" }, - { - "key": "amenity", - "value": "ferry_terminal" - }, { "key": "amenity", "value": "fire_station" @@ -1274,11 +1274,11 @@ }, { "key": "highway", - "value": "bridleway" + "value": "bus_stop" }, { "key": "highway", - "value": "bus_stop" + "value": "bridleway" }, { "key": "highway", @@ -2484,14 +2484,146 @@ "key": "power", "value": "transformer" }, + { + "key": "aerialway", + "value": "yes" + }, + { + "key": "bus", + "value": "yes" + }, + { + "key": "ferry", + "value": "yes" + }, + { + "key": "light_rail", + "value": "yes" + }, + { + "key": "monorail", + "value": "yes" + }, + { + "key": "train", + "value": "yes" + }, + { + "key": "train", + "value": "yes" + }, + { + "key": "tram", + "value": "yes" + }, + { + "key": "trolleybus", + "value": "yes" + }, { "key": "public_transport", "value": "platform" }, + { + "key": "aerialway", + "value": "yes" + }, + { + "key": "bus", + "value": "yes" + }, + { + "key": "ferry", + "value": "yes" + }, + { + "key": "light_rail", + "value": "yes" + }, + { + "key": "monorail", + "value": "yes" + }, + { + "key": "subway", + "value": "yes" + }, + { + "key": "railway", + "value": "halt" + }, + { + "key": "train", + "value": "yes" + }, + { + "key": "tram", + "value": "yes" + }, + { + "key": "trolleybus", + "value": "yes" + }, + { + "key": "public_transport", + "value": "station" + }, + { + "key": "aerialway", + "value": "yes" + }, + { + "key": "bus", + "value": "yes" + }, + { + "key": "ferry", + "value": "yes" + }, + { + "key": "light_rail", + "value": "yes" + }, + { + "key": "monorail", + "value": "yes" + }, + { + "key": "subway", + "value": "yes" + }, + { + "key": "train", + "value": "yes" + }, + { + "key": "tram", + "value": "yes" + }, + { + "key": "trolleybus", + "value": "yes" + }, { "key": "public_transport", "value": "stop_position" }, + { + "key": "railway", + "value": "halt" + }, + { + "key": "railway", + "value": "platform" + }, + { + "key": "railway", + "value": "station" + }, + { + "key": "railway", + "value": "tram_stop" + }, { "key": "railway", "value": "abandoned" @@ -2516,10 +2648,6 @@ "key": "railway", "value": "funicular" }, - { - "key": "railway", - "value": "halt" - }, { "key": "railway", "value": "level_crossing" @@ -2544,10 +2672,6 @@ "key": "railway", "value": "narrow_gauge" }, - { - "key": "railway", - "value": "platform" - }, { "key": "railway", "value": "rail" @@ -2556,10 +2680,6 @@ "key": "railway", "value": "signal" }, - { - "key": "railway", - "value": "station" - }, { "key": "railway", "value": "subway_entrance" @@ -2576,10 +2696,6 @@ "key": "railway", "value": "wash" }, - { - "key": "railway", - "value": "tram_stop" - }, { "key": "railway", "value": "tram" diff --git a/dist/locales/en.json b/dist/locales/en.json index 36b81d618..e2608a9ed 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -2648,6 +2648,10 @@ "name": "Billboard", "terms": "" }, + "aerialway/station": { + "name": "Aerialway Station", + "terms": "" + }, "aerialway/cable_car": { "name": "Cable Car", "terms": "tramway,ropeway" @@ -2688,10 +2692,6 @@ "name": "Rope Tow Lift", "terms": "handle tow,bugel lift" }, - "aerialway/station": { - "name": "Aerialway Station", - "terms": "" - }, "aerialway/t-bar": { "name": "T-bar Lift", "terms": "tbar" @@ -2728,10 +2728,18 @@ "name": "Airport Terminal", "terms": "airport,aerodrome" }, + "amenity/bus_station": { + "name": "Bus Station / Terminal", + "terms": "" + }, "amenity/coworking_space": { "name": "Coworking Space", "terms": "" }, + "amenity/ferry_terminal": { + "name": "Ferry Station / Terminal", + "terms": "" + }, "amenity/nursing_home": { "name": "Nursing Home", "terms": "" @@ -2808,10 +2816,6 @@ "name": "Currency Exchange", "terms": "bureau de change,money changer" }, - "amenity/bus_station": { - "name": "Bus Station", - "terms": "" - }, "amenity/cafe": { "name": "Cafe", "terms": "bistro,coffee,tea" @@ -2908,10 +2912,6 @@ "name": "Fast Food", "terms": "restaurant,takeaway" }, - "amenity/ferry_terminal": { - "name": "Ferry Terminal", - "terms": "" - }, "amenity/fire_station": { "name": "Fire Station", "terms": "" @@ -3880,14 +3880,14 @@ "name": "Speech Therapist", "terms": "speech,therapist,therapy,voice" }, + "highway/bus_stop": { + "name": "Bus Stop / Platform", + "terms": "" + }, "highway/bridleway": { "name": "Bridle Path", "terms": "bridleway,equestrian,horse" }, - "highway/bus_stop": { - "name": "Bus Stop", - "terms": "" - }, "highway/corridor": { "name": "Indoor Corridor", "terms": "gallery,hall,hallway,indoor,passage,passageway" @@ -5108,14 +5108,146 @@ "name": "Transformer", "terms": "" }, + "public_transport/platform_aerialway": { + "name": "Aerialway Stop / Platform", + "terms": "aerialway,cable car,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/platform_bus": { + "name": "Bus Stop / Platform", + "terms": "bus,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/platform_ferry": { + "name": "Ferry Stop / Platform", + "terms": "boat,dock,ferry,pier,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/platform_light_rail": { + "name": "Light Rail Stop / Platform", + "terms": "electric,light rail,platform,public transit,public transportation,rail,track,tram,trolley,transit,transportation" + }, + "public_transport/platform_monorail": { + "name": "Monorail Stop / Platform", + "terms": "monorail,platform,public transit,public transportation,rail,transit,transportation" + }, + "public_transport/platform_subway": { + "name": "Subway Stop / Platform", + "terms": "metro,platform,public transit,public transportation,rail,subway,track,transit,transportation,underground" + }, + "public_transport/platform_train": { + "name": "Train Stop / Platform", + "terms": "platform,public transit,public transportation,rail,track,train,transit,transportation" + }, + "public_transport/platform_tram": { + "name": "Tram Stop / Platform", + "terms": "electric,light rail,platform,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation" + }, + "public_transport/platform_trolleybus": { + "name": "Trolleybus Stop / Platform", + "terms": "bus,electric,platform,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation" + }, "public_transport/platform": { - "name": "Platform", - "terms": "" + "name": "Transit Stop / Platform", + "terms": "platform,public transit,public transportation,transit,transportation" + }, + "public_transport/station_aerialway": { + "name": "Aerialway Station", + "terms": "aerialway,cable car,public transit,public transportation,station,terminal,transit,transportation" + }, + "public_transport/station_bus": { + "name": "Bus Station / Terminal", + "terms": "bus,public transit,public transportation,station,terminal,transit,transportation" + }, + "public_transport/station_ferry": { + "name": "Ferry Station / Terminal", + "terms": "boat,dock,ferry,pier,public transit,public transportation,station,terminal,transit,transportation" + }, + "public_transport/station_light_rail": { + "name": "Light Rail Station", + "terms": "electric,light rail,public transit,public transportation,rail,station,terminal,track,tram,trolley,transit,transportation" + }, + "public_transport/station_monorail": { + "name": "Train Station", + "terms": "monorail,public transit,public transportation,rail,station,terminal,transit,transportation" + }, + "public_transport/station_subway": { + "name": "Subway Station", + "terms": "metro,public transit,public transportation,rail,station,subway,terminal,track,transit,transportation,underground" + }, + "public_transport/station_train_halt": { + "name": "Train Station (Halt / Request)", + "terms": "halt,public transit,public transportation,rail,station,track,train,transit,transportation,whistle stop" + }, + "public_transport/station_train": { + "name": "Train Station", + "terms": "public transit,public transportation,rail,station,terminal,track,train,transit,transportation" + }, + "public_transport/station_tram": { + "name": "Tram Station", + "terms": "electric,light rail,public transit,public transportation,rail,station,streetcar,terminal,track,tram,trolley,transit,transportation" + }, + "public_transport/station_trolleybus": { + "name": "Trolleybus Station / Terminal", + "terms": "bus,electric,public transit,public transportation,station,streetcar,terminal,trackless,tram,trolley,transit,transportation" + }, + "public_transport/station": { + "name": "Transit Station", + "terms": "public transit,public transportation,station,terminal,transit,transportation" + }, + "public_transport/stop_position_aerialway": { + "name": "Aerialway Stopping Location", + "terms": "aerialway,cable car,public transit,public transportation,transit,transportation" + }, + "public_transport/stop_position_bus": { + "name": "Bus Stopping Location", + "terms": "bus,public transit,public transportation,transit,transportation" + }, + "public_transport/stop_position_ferry": { + "name": "Ferry Stopping Location", + "terms": "boat,dock,ferry,pier,public transit,public transportation,transit,transportation" + }, + "public_transport/stop_position_light_rail": { + "name": "Light Rail Stopping Location", + "terms": "electric,light rail,public transit,public transportation,rail,track,tram,trolley,transit,transportation" + }, + "public_transport/stop_position_monorail": { + "name": "Monorail Stopping Location", + "terms": "monorail,public transit,public transportation,rail,transit,transportation" + }, + "public_transport/stop_position_subway": { + "name": "Subway Stopping Location", + "terms": "metro,public transit,public transportation,rail,subway,track,transit,transportation,underground" + }, + "public_transport/stop_position_train": { + "name": "Train Stopping Location", + "terms": "public transit,public transportation,rail,track,train,transit,transportation" + }, + "public_transport/stop_position_tram": { + "name": "Tram Stopping Location", + "terms": "electric,light rail,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation" + }, + "public_transport/stop_position_trolleybus": { + "name": "Trolleybus Stopping Location", + "terms": "bus,electric,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation" }, "public_transport/stop_position": { - "name": "Stop Position", + "name": "Transit Stopping Location", + "terms": "public transit,public transportation,transit,transportation" + }, + "railway/halt": { + "name": "Train Station (Halt / Request)", + "terms": "break,interrupt,rest,wait,interruption" + }, + "railway/platform": { + "name": "Train Stop / Platform", "terms": "" }, + "railway/station": { + "name": "Train Station", + "terms": "train station,station" + }, + "railway/tram_stop": { + "name": "Tram Stopping Position", + "terms": "light rail,streetcar,tram,trolley" + }, "railway/abandoned": { "name": "Abandoned Railway", "terms": "" @@ -5140,10 +5272,6 @@ "name": "Funicular", "terms": "venicular,cliff railway,cable car,cable railway,funicular railway" }, - "railway/halt": { - "name": "Railway Halt", - "terms": "break,interrupt,rest,wait,interruption" - }, "railway/level_crossing": { "name": "Railway Crossing (Road)", "terms": "crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing" @@ -5168,10 +5296,6 @@ "name": "Narrow Gauge Rail", "terms": "narrow gauge railway,narrow gauge railroad" }, - "railway/platform": { - "name": "Railway Platform", - "terms": "" - }, "railway/rail": { "name": "Rail", "terms": "" @@ -5180,10 +5304,6 @@ "name": "Railway Signal", "terms": "signal,lights" }, - "railway/station": { - "name": "Railway Station", - "terms": "train station,station" - }, "railway/subway_entrance": { "name": "Subway Entrance", "terms": "metro,transit" @@ -5200,10 +5320,6 @@ "name": "Train Wash", "terms": "wash,clean" }, - "railway/tram_stop": { - "name": "Tram Stop", - "terms": "light rail,streetcar,tram,trolley" - }, "railway/tram": { "name": "Tram", "terms": "light rail,streetcar,tram,trolley" From 4caed1811890d97d7e34f8f1bfdc6f7e2f89d4cf Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 3 Dec 2017 14:04:50 -0500 Subject: [PATCH 132/159] Add public_transport=stop_area relation preset --- data/presets/defaults.json | 1 + .../presets/public_transport/stop_area.json | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 data/presets/presets/public_transport/stop_area.json diff --git a/data/presets/defaults.json b/data/presets/defaults.json index 14eab2d8e..92a8ff98d 100644 --- a/data/presets/defaults.json +++ b/data/presets/defaults.json @@ -50,6 +50,7 @@ "relation": [ "category-route", "category-restriction", + "public_transport/stop_area", "type/boundary", "type/waterway", "type/multipolygon", diff --git a/data/presets/presets/public_transport/stop_area.json b/data/presets/presets/public_transport/stop_area.json new file mode 100644 index 000000000..b95404e55 --- /dev/null +++ b/data/presets/presets/public_transport/stop_area.json @@ -0,0 +1,31 @@ +{ + "icon": "bus", + "fields": [ + "name", + "ref", + "network", + "operator" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "public_transport", + "public_transport": "stop_area" + }, + "addTags": { + "type": "public_transport", + "public_transport": "stop_area", + "public_transport:version": "2" + }, + "removeTags": { + "type": "public_transport", + "public_transport": "stop_area", + "public_transport:version": "2" + }, + "reference": { + "key": "public_transport", + "value": "stop_area" + }, + "name": "Transit Stop Area" +} From fef19bc954a0f1ae0c5b23aa4305282626f54c9c Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 3 Dec 2017 14:05:13 -0500 Subject: [PATCH 133/159] Split public_transport=platform presets for line vs area/point This is done so that the linear presets can have an icon that looks more like a footway/sidewalk, to encourage people to use them that way and connect them to the pedestrian network. --- data/presets.yaml | 58 +- data/presets/presets.json | 502 ++++++++++++++++-- .../public_transport/linear_platform.json | 28 + .../linear_platform_aerialway.json | 34 ++ .../public_transport/linear_platform_bus.json | 43 ++ .../linear_platform_ferry.json | 36 ++ .../linear_platform_light_rail.json | 48 ++ .../linear_platform_monorail.json | 44 ++ .../linear_platform_subway.json | 47 ++ .../linear_platform_train.json | 45 ++ .../linear_platform_tram.json | 49 ++ .../linear_platform_trolleybus.json | 48 ++ .../presets/public_transport/platform.json | 4 +- .../public_transport/platform_aerialway.json | 3 +- .../public_transport/platform_bus.json | 3 +- .../public_transport/platform_ferry.json | 3 +- .../public_transport/platform_light_rail.json | 4 +- .../public_transport/platform_monorail.json | 4 +- .../public_transport/platform_subway.json | 4 +- .../public_transport/platform_train.json | 4 +- .../public_transport/platform_tram.json | 4 +- .../public_transport/platform_trolleybus.json | 3 +- .../presets/public_transport/station.json | 1 - .../public_transport/station_aerialway.json | 1 - .../presets/public_transport/station_bus.json | 1 - .../public_transport/station_ferry.json | 1 - .../public_transport/station_light_rail.json | 1 - .../public_transport/station_monorail.json | 3 +- .../public_transport/station_subway.json | 1 - .../public_transport/station_train.json | 1 - .../public_transport/station_train_halt.json | 1 - .../public_transport/station_tram.json | 1 - .../public_transport/station_trolleybus.json | 1 - data/taginfo.json | 44 ++ dist/locales/en.json | 46 +- 35 files changed, 1042 insertions(+), 79 deletions(-) create mode 100644 data/presets/presets/public_transport/linear_platform.json create mode 100644 data/presets/presets/public_transport/linear_platform_aerialway.json create mode 100644 data/presets/presets/public_transport/linear_platform_bus.json create mode 100644 data/presets/presets/public_transport/linear_platform_ferry.json create mode 100644 data/presets/presets/public_transport/linear_platform_light_rail.json create mode 100644 data/presets/presets/public_transport/linear_platform_monorail.json create mode 100644 data/presets/presets/public_transport/linear_platform_subway.json create mode 100644 data/presets/presets/public_transport/linear_platform_train.json create mode 100644 data/presets/presets/public_transport/linear_platform_tram.json create mode 100644 data/presets/presets/public_transport/linear_platform_trolleybus.json diff --git a/data/presets.yaml b/data/presets.yaml index ed49710f8..a2b4e464d 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -4397,6 +4397,56 @@ en: # power=transformer name: Transformer terms: '' + public_transport/linear_platform: + # public_transport=platform + name: Transit Stop / Platform + # 'terms: platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/linear_platform_aerialway: + # 'public_transport=platform, aerialway=yes' + name: Aerialway Stop / Platform + # 'terms: aerialway,cable car,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/linear_platform_bus: + # 'public_transport=platform, bus=yes' + name: Bus Stop / Platform + # 'terms: bus,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/linear_platform_ferry: + # 'public_transport=platform, ferry=yes' + name: Ferry Stop / Platform + # 'terms: boat,dock,ferry,pier,platform,public transit,public transportation,transit,transportation' + terms: '' + public_transport/linear_platform_light_rail: + # 'public_transport=platform, light_rail=yes' + name: Light Rail Stop / Platform + # 'terms: electric,light rail,platform,public transit,public transportation,rail,track,tram,trolley,transit,transportation' + terms: '' + public_transport/linear_platform_monorail: + # 'public_transport=platform, monorail=yes' + name: Monorail Stop / Platform + # 'terms: monorail,platform,public transit,public transportation,rail,transit,transportation' + terms: '' + public_transport/linear_platform_subway: + # 'public_transport=platform, train=yes' + name: Subway Stop / Platform + # 'terms: metro,platform,public transit,public transportation,rail,subway,track,transit,transportation,underground' + terms: '' + public_transport/linear_platform_train: + # 'public_transport=platform, train=yes' + name: Train Stop / Platform + # 'terms: platform,public transit,public transportation,rail,track,train,transit,transportation' + terms: '' + public_transport/linear_platform_tram: + # 'public_transport=platform, tram=yes' + name: Tram Stop / Platform + # 'terms: electric,light rail,platform,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation' + terms: '' + public_transport/linear_platform_trolleybus: + # 'public_transport=platform, trolleybus=yes' + name: Trolleybus Stop / Platform + # 'terms: bus,electric,platform,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation' + terms: '' public_transport/platform: # public_transport=platform name: Transit Stop / Platform @@ -4474,9 +4524,9 @@ en: terms: '' public_transport/station_monorail: # 'public_transport=station, monorail=yes' - name: Train Station + name: Monorail Station # 'terms: monorail,public transit,public transportation,rail,station,terminal,transit,transportation' - terms: '' + terms: '' public_transport/station_subway: # 'public_transport=station, subway=yes' name: Subway Station @@ -4502,6 +4552,10 @@ en: name: Trolleybus Station / Terminal # 'terms: bus,electric,public transit,public transportation,station,streetcar,terminal,trackless,tram,trolley,transit,transportation' terms: '' + public_transport/stop_area: + # 'type=public_transport, public_transport=stop_area' + name: Transit Stop Area + terms: '' public_transport/stop_position: # public_transport=stop_position name: Transit Stopping Location diff --git a/data/presets/presets.json b/data/presets/presets.json index 6722747c5..9df76eb8d 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13020,6 +13020,428 @@ }, "name": "Transformer" }, + "public_transport/linear_platform_aerialway": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "aerialway", + "cable car", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stop / Platform" + }, + "public_transport/linear_platform_bus": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "bus": "yes" + }, + "addTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stop / Platform" + }, + "public_transport/linear_platform_ferry": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stop / Platform" + }, + "public_transport/linear_platform_light_rail": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stop / Platform" + }, + "public_transport/linear_platform_monorail": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "monorail": "yes" + }, + "addTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "monorail", + "platform", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stop / Platform" + }, + "public_transport/linear_platform_subway": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "metro", + "platform", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stop / Platform" + }, + "public_transport/linear_platform_train": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stop / Platform" + }, + "public_transport/linear_platform_tram": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "tram": "yes" + }, + "addTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stop / Platform" + }, + "public_transport/linear_platform_trolleybus": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "electric", + "platform", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stop / Platform" + }, + "public_transport/linear_platform": { + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stop / Platform", + "matchScore": 0.2 + }, "public_transport/platform_aerialway": { "icon": "aerialway", "fields": [ @@ -13027,14 +13449,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13063,14 +13484,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13108,14 +13528,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13140,7 +13559,7 @@ "name": "Ferry Stop / Platform" }, "public_transport/platform_light_rail": { - "icon": "highway-footway", + "icon": "rail-light", "fields": [ "name", "ref_platform", @@ -13153,8 +13572,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13191,7 +13608,7 @@ "name": "Light Rail Stop / Platform" }, "public_transport/platform_monorail": { - "icon": "highway-footway", + "icon": "rail-metro", "fields": [ "name", "ref_platform", @@ -13204,8 +13621,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13238,7 +13653,7 @@ "name": "Monorail Stop / Platform" }, "public_transport/platform_subway": { - "icon": "highway-footway", + "icon": "rail-metro", "fields": [ "name", "ref_platform", @@ -13251,8 +13666,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13288,7 +13701,7 @@ "name": "Subway Stop / Platform" }, "public_transport/platform_train": { - "icon": "highway-footway", + "icon": "rail", "fields": [ "name", "ref_platform", @@ -13301,8 +13714,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13336,7 +13747,7 @@ "name": "Train Stop / Platform" }, "public_transport/platform_tram": { - "icon": "highway-footway", + "icon": "rail-light", "fields": [ "name", "ref_platform", @@ -13349,8 +13760,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13394,14 +13803,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13438,7 +13846,7 @@ "name": "Trolleybus Stop / Platform" }, "public_transport/platform": { - "icon": "highway-footway", + "icon": "bus", "fields": [ "name", "ref_platform", @@ -13451,8 +13859,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { @@ -13484,7 +13890,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13521,7 +13926,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13567,7 +13971,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13616,7 +14019,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13669,7 +14071,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13700,7 +14101,7 @@ "transit", "transportation" ], - "name": "Train Station" + "name": "Monorail Station" }, "public_transport/station_subway": { "icon": "rail-metro", @@ -13716,7 +14117,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13768,7 +14168,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13808,7 +14207,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13856,7 +14254,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13898,7 +14295,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13949,7 +14345,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -13966,6 +14361,37 @@ "name": "Transit Station", "matchScore": 0.2 }, + "public_transport/stop_area": { + "icon": "bus", + "fields": [ + "name", + "ref", + "network", + "operator" + ], + "geometry": [ + "relation" + ], + "tags": { + "type": "public_transport", + "public_transport": "stop_area" + }, + "addTags": { + "type": "public_transport", + "public_transport": "stop_area", + "public_transport:version": "2" + }, + "removeTags": { + "type": "public_transport", + "public_transport": "stop_area", + "public_transport:version": "2" + }, + "reference": { + "key": "public_transport", + "value": "stop_area" + }, + "name": "Transit Stop Area" + }, "public_transport/stop_position_aerialway": { "icon": "aerialway", "fields": [ diff --git a/data/presets/presets/public_transport/linear_platform.json b/data/presets/presets/public_transport/linear_platform.json new file mode 100644 index 000000000..3c148919f --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform.json @@ -0,0 +1,28 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Transit Stop / Platform", + "matchScore": 0.2 +} diff --git a/data/presets/presets/public_transport/linear_platform_aerialway.json b/data/presets/presets/public_transport/linear_platform_aerialway.json new file mode 100644 index 000000000..cf2a7ffaa --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_aerialway.json @@ -0,0 +1,34 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "aerialway": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "aerialway", + "cable car", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Aerialway Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_bus.json b/data/presets/presets/public_transport/linear_platform_bus.json new file mode 100644 index 000000000..ab9db4a70 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_bus.json @@ -0,0 +1,43 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "bus": "yes" + }, + "addTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "bus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Bus Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_ferry.json b/data/presets/presets/public_transport/linear_platform_ferry.json new file mode 100644 index 000000000..c10fafb67 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_ferry.json @@ -0,0 +1,36 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "ferry": "yes" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "boat", + "dock", + "ferry", + "pier", + "platform", + "public transit", + "public transportation", + "transit", + "transportation" + ], + "name": "Ferry Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_light_rail.json b/data/presets/presets/public_transport/linear_platform_light_rail.json new file mode 100644 index 000000000..b131b51dd --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_light_rail.json @@ -0,0 +1,48 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "light_rail": "yes" + }, + "addTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "light_rail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Light Rail Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_monorail.json b/data/presets/presets/public_transport/linear_platform_monorail.json new file mode 100644 index 000000000..de25f2e75 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_monorail.json @@ -0,0 +1,44 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "monorail": "yes" + }, + "addTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "monorail": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "monorail", + "platform", + "public transit", + "public transportation", + "rail", + "transit", + "transportation" + ], + "name": "Monorail Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_subway.json b/data/presets/presets/public_transport/linear_platform_subway.json new file mode 100644 index 000000000..37691ebbf --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_subway.json @@ -0,0 +1,47 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "metro", + "platform", + "public transit", + "public transportation", + "rail", + "subway", + "track", + "transit", + "transportation", + "underground" + ], + "name": "Subway Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_train.json b/data/presets/presets/public_transport/linear_platform_train.json new file mode 100644 index 000000000..a88238117 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_train.json @@ -0,0 +1,45 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "train": "yes" + }, + "addTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "train": "yes", + "railway": "platform" + }, + "reference": { + "key": "railway", + "value": "platform" + }, + "terms": [ + "platform", + "public transit", + "public transportation", + "rail", + "track", + "train", + "transit", + "transportation" + ], + "name": "Train Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_tram.json b/data/presets/presets/public_transport/linear_platform_tram.json new file mode 100644 index 000000000..aa9bb7119 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_tram.json @@ -0,0 +1,49 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "tram": "yes" + }, + "addTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "removeTags": { + "public_transport": "platform", + "tram": "yes", + "railway": "platform" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "electric", + "light rail", + "platform", + "public transit", + "public transportation", + "rail", + "streetcar", + "track", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Tram Stop / Platform" +} diff --git a/data/presets/presets/public_transport/linear_platform_trolleybus.json b/data/presets/presets/public_transport/linear_platform_trolleybus.json new file mode 100644 index 000000000..4ecd1ca57 --- /dev/null +++ b/data/presets/presets/public_transport/linear_platform_trolleybus.json @@ -0,0 +1,48 @@ +{ + "icon": "highway-footway", + "fields": [ + "name", + "ref_platform", + "network", + "operator", + "surface", + "lit", + "bench", + "shelter" + ], + "geometry": [ + "line" + ], + "tags": { + "public_transport": "platform", + "trolleybus": "yes" + }, + "addTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "removeTags": { + "public_transport": "platform", + "trolleybus": "yes", + "highway": "bus_stop" + }, + "reference": { + "key": "public_transport", + "value": "platform" + }, + "terms": [ + "bus", + "electric", + "platform", + "public transit", + "public transportation", + "streetcar", + "trackless", + "tram", + "trolley", + "transit", + "transportation" + ], + "name": "Trolleybus Stop / Platform" +} diff --git a/data/presets/presets/public_transport/platform.json b/data/presets/presets/public_transport/platform.json index ebe13be67..048d2ecab 100644 --- a/data/presets/presets/public_transport/platform.json +++ b/data/presets/presets/public_transport/platform.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "bus", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_aerialway.json b/data/presets/presets/public_transport/platform_aerialway.json index 034c841cc..dcd1f76b1 100644 --- a/data/presets/presets/public_transport/platform_aerialway.json +++ b/data/presets/presets/public_transport/platform_aerialway.json @@ -5,14 +5,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_bus.json b/data/presets/presets/public_transport/platform_bus.json index bf9cda26a..1116ac209 100644 --- a/data/presets/presets/public_transport/platform_bus.json +++ b/data/presets/presets/public_transport/platform_bus.json @@ -5,14 +5,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_ferry.json b/data/presets/presets/public_transport/platform_ferry.json index 3fb3d5255..dec204e36 100644 --- a/data/presets/presets/public_transport/platform_ferry.json +++ b/data/presets/presets/public_transport/platform_ferry.json @@ -5,14 +5,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_light_rail.json b/data/presets/presets/public_transport/platform_light_rail.json index 0a2120e90..61fcfcaf8 100644 --- a/data/presets/presets/public_transport/platform_light_rail.json +++ b/data/presets/presets/public_transport/platform_light_rail.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "rail-light", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_monorail.json b/data/presets/presets/public_transport/platform_monorail.json index c2d7ad15f..611b247d8 100644 --- a/data/presets/presets/public_transport/platform_monorail.json +++ b/data/presets/presets/public_transport/platform_monorail.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "rail-metro", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_subway.json b/data/presets/presets/public_transport/platform_subway.json index 0ad5fc628..3656eed2c 100644 --- a/data/presets/presets/public_transport/platform_subway.json +++ b/data/presets/presets/public_transport/platform_subway.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "rail-metro", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_train.json b/data/presets/presets/public_transport/platform_train.json index 86dc71380..fc5b4f26a 100644 --- a/data/presets/presets/public_transport/platform_train.json +++ b/data/presets/presets/public_transport/platform_train.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "rail", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_tram.json b/data/presets/presets/public_transport/platform_tram.json index 8a2cc772d..51f190867 100644 --- a/data/presets/presets/public_transport/platform_tram.json +++ b/data/presets/presets/public_transport/platform_tram.json @@ -1,5 +1,5 @@ { - "icon": "highway-footway", + "icon": "rail-light", "fields": [ "name", "ref_platform", @@ -12,8 +12,6 @@ ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/platform_trolleybus.json b/data/presets/presets/public_transport/platform_trolleybus.json index 7b6163714..e4de6e627 100644 --- a/data/presets/presets/public_transport/platform_trolleybus.json +++ b/data/presets/presets/public_transport/platform_trolleybus.json @@ -5,14 +5,13 @@ "ref_platform", "network", "operator", + "surface", "lit", "bench", "shelter" ], "geometry": [ "point", - "vertex", - "line", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station.json b/data/presets/presets/public_transport/station.json index 672712568..19ef56308 100644 --- a/data/presets/presets/public_transport/station.json +++ b/data/presets/presets/public_transport/station.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_aerialway.json b/data/presets/presets/public_transport/station_aerialway.json index 97b953b0a..8d9e1ef21 100644 --- a/data/presets/presets/public_transport/station_aerialway.json +++ b/data/presets/presets/public_transport/station_aerialway.json @@ -14,7 +14,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_bus.json b/data/presets/presets/public_transport/station_bus.json index 2ea27934b..8f5ec99e2 100644 --- a/data/presets/presets/public_transport/station_bus.json +++ b/data/presets/presets/public_transport/station_bus.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_ferry.json b/data/presets/presets/public_transport/station_ferry.json index 503c060a4..e1050b96c 100644 --- a/data/presets/presets/public_transport/station_ferry.json +++ b/data/presets/presets/public_transport/station_ferry.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_light_rail.json b/data/presets/presets/public_transport/station_light_rail.json index 081dd8023..ff71e3af8 100644 --- a/data/presets/presets/public_transport/station_light_rail.json +++ b/data/presets/presets/public_transport/station_light_rail.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_monorail.json b/data/presets/presets/public_transport/station_monorail.json index 356cdf5b2..45b6c52eb 100644 --- a/data/presets/presets/public_transport/station_monorail.json +++ b/data/presets/presets/public_transport/station_monorail.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { @@ -43,5 +42,5 @@ "transit", "transportation" ], - "name": "Train Station" + "name": "Monorail Station" } diff --git a/data/presets/presets/public_transport/station_subway.json b/data/presets/presets/public_transport/station_subway.json index fc4c5447a..304b1bd4d 100644 --- a/data/presets/presets/public_transport/station_subway.json +++ b/data/presets/presets/public_transport/station_subway.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_train.json b/data/presets/presets/public_transport/station_train.json index 6d3c1086b..3f7a11b58 100644 --- a/data/presets/presets/public_transport/station_train.json +++ b/data/presets/presets/public_transport/station_train.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_train_halt.json b/data/presets/presets/public_transport/station_train_halt.json index 313969b3d..0cbad9602 100644 --- a/data/presets/presets/public_transport/station_train_halt.json +++ b/data/presets/presets/public_transport/station_train_halt.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_tram.json b/data/presets/presets/public_transport/station_tram.json index 744a77479..f336aa786 100644 --- a/data/presets/presets/public_transport/station_tram.json +++ b/data/presets/presets/public_transport/station_tram.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/presets/presets/public_transport/station_trolleybus.json b/data/presets/presets/public_transport/station_trolleybus.json index dd568bdb2..47c5c54ed 100644 --- a/data/presets/presets/public_transport/station_trolleybus.json +++ b/data/presets/presets/public_transport/station_trolleybus.json @@ -12,7 +12,6 @@ ], "geometry": [ "point", - "vertex", "area" ], "tags": { diff --git a/data/taginfo.json b/data/taginfo.json index 2bb7f68d3..716f2984f 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -2544,6 +2544,46 @@ "key": "monorail", "value": "yes" }, + { + "key": "train", + "value": "yes" + }, + { + "key": "train", + "value": "yes" + }, + { + "key": "tram", + "value": "yes" + }, + { + "key": "trolleybus", + "value": "yes" + }, + { + "key": "public_transport", + "value": "platform" + }, + { + "key": "aerialway", + "value": "yes" + }, + { + "key": "bus", + "value": "yes" + }, + { + "key": "ferry", + "value": "yes" + }, + { + "key": "light_rail", + "value": "yes" + }, + { + "key": "monorail", + "value": "yes" + }, { "key": "subway", "value": "yes" @@ -2568,6 +2608,10 @@ "key": "public_transport", "value": "station" }, + { + "key": "public_transport", + "value": "stop_area" + }, { "key": "aerialway", "value": "yes" diff --git a/dist/locales/en.json b/dist/locales/en.json index e2608a9ed..d29e3656f 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5108,6 +5108,46 @@ "name": "Transformer", "terms": "" }, + "public_transport/linear_platform_aerialway": { + "name": "Aerialway Stop / Platform", + "terms": "aerialway,cable car,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/linear_platform_bus": { + "name": "Bus Stop / Platform", + "terms": "bus,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/linear_platform_ferry": { + "name": "Ferry Stop / Platform", + "terms": "boat,dock,ferry,pier,platform,public transit,public transportation,transit,transportation" + }, + "public_transport/linear_platform_light_rail": { + "name": "Light Rail Stop / Platform", + "terms": "electric,light rail,platform,public transit,public transportation,rail,track,tram,trolley,transit,transportation" + }, + "public_transport/linear_platform_monorail": { + "name": "Monorail Stop / Platform", + "terms": "monorail,platform,public transit,public transportation,rail,transit,transportation" + }, + "public_transport/linear_platform_subway": { + "name": "Subway Stop / Platform", + "terms": "metro,platform,public transit,public transportation,rail,subway,track,transit,transportation,underground" + }, + "public_transport/linear_platform_train": { + "name": "Train Stop / Platform", + "terms": "platform,public transit,public transportation,rail,track,train,transit,transportation" + }, + "public_transport/linear_platform_tram": { + "name": "Tram Stop / Platform", + "terms": "electric,light rail,platform,public transit,public transportation,rail,streetcar,track,tram,trolley,transit,transportation" + }, + "public_transport/linear_platform_trolleybus": { + "name": "Trolleybus Stop / Platform", + "terms": "bus,electric,platform,public transit,public transportation,streetcar,trackless,tram,trolley,transit,transportation" + }, + "public_transport/linear_platform": { + "name": "Transit Stop / Platform", + "terms": "platform,public transit,public transportation,transit,transportation" + }, "public_transport/platform_aerialway": { "name": "Aerialway Stop / Platform", "terms": "aerialway,cable car,platform,public transit,public transportation,transit,transportation" @@ -5165,7 +5205,7 @@ "terms": "electric,light rail,public transit,public transportation,rail,station,terminal,track,tram,trolley,transit,transportation" }, "public_transport/station_monorail": { - "name": "Train Station", + "name": "Monorail Station", "terms": "monorail,public transit,public transportation,rail,station,terminal,transit,transportation" }, "public_transport/station_subway": { @@ -5192,6 +5232,10 @@ "name": "Transit Station", "terms": "public transit,public transportation,station,terminal,transit,transportation" }, + "public_transport/stop_area": { + "name": "Transit Stop Area", + "terms": "" + }, "public_transport/stop_position_aerialway": { "name": "Aerialway Stopping Location", "terms": "aerialway,cable car,public transit,public transportation,transit,transportation" From 8b1ddb7724d38af4cf63533d709262bc8d2540b3 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 4 Dec 2017 23:55:10 -0500 Subject: [PATCH 134/159] Update public transport icons --- svg/iD-sprite.json | 13 + svg/iD-sprite.src.idraw | Bin 348602 -> 361145 bytes svg/iD-sprite.src.svg | 760 ++++++++++++++++++++-------------------- 3 files changed, 386 insertions(+), 387 deletions(-) diff --git a/svg/iD-sprite.json b/svg/iD-sprite.json index 0cde5da81..e7a182af0 100644 --- a/svg/iD-sprite.json +++ b/svg/iD-sprite.json @@ -31,6 +31,7 @@ "icon-up": { "viewBox": "580 0 20 20" }, "icon-down": { "viewBox": "600 0 20 20" }, "icon-more": { "viewBox": "620 0 20 20" }, + "icon-no": { "viewBox": "640 0 20 20" }, "icon-alert-shape": { "fill": "currentColor" }, "icon-point-shape": { "fill": "currentColor" }, @@ -68,6 +69,7 @@ "icon-up-shape": { "fill": "currentColor" }, "icon-down-shape": { "fill": "currentColor" }, "icon-more-shape": { "fill": "currentColor" }, + "icon-no-shape": { "fill": "currentColor" }, "highway-motorway": { "viewBox": "0 20 60 60" }, "highway-trunk": { "viewBox": "60 20 60 60" }, @@ -244,6 +246,7 @@ "route-power": { "viewBox": "780 200 60 60" }, "route-water": { "viewBox": "840 200 60 60" }, "route-master": { "viewBox": "0 260 60 60" }, + "route-light-rail": { "viewBox": "600 260 60 60" }, "route-piste": { "viewBox": "660 260 60 60" }, "route-line": { "viewBox": "720 260 60 60" }, "route-subway": { "viewBox": "780 260 60 60" }, @@ -286,6 +289,11 @@ "poi-shintoist": { "viewBox": "640 320 15 15" }, "poi-buffer-stop": { "viewBox": "655 320 15 15" }, "poi-railway-signals": { "viewBox": "670 320 15 15" }, + "poi-monorail": { "viewBox": "685 320 15 15" }, + "poi-tram": { "viewBox": "700 320 15 15" }, + "poi-subway": { "viewBox": "715 320 15 15" }, + "poi-light-rail": { "viewBox": "730 320 15 15" }, + "poi-trolleybus": { "viewBox": "745 320 15 15" }, "poi-foot-shape": { "fill": "currentColor" }, "poi-traffic-signals-shape": { "fill": "currentColor" }, @@ -306,6 +314,11 @@ "poi-shintoist-shape": { "fill": "currentColor" }, "poi-buffer-stop-shape": { "fill": "currentColor" }, "poi-railway-signals-shape": { "fill": "currentColor" }, + "poi-monorail-shape": { "fill": "currentColor" }, + "poi-tram-shape": { "fill": "currentColor" }, + "poi-subway-shape": { "fill": "currentColor" }, + "poi-light-rail-shape": { "fill": "currentColor" }, + "poi-trolleybus-shape": { "fill": "currentColor" }, "poi-vending-machine": { "viewBox": "400 335 15 15" }, "poi-dice": { "viewBox": "415 335 15 15" }, diff --git a/svg/iD-sprite.src.idraw b/svg/iD-sprite.src.idraw index a43d8182f5d8a938a260114303dd0fdb30b81be9..d51f02054c492b2801844fafc5c398ffdc7c9da8 100644 GIT binary patch delta 278453 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�C^Th|T%CMpTNz4mbW&pUUcQzb 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 z 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 delta 265886 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

    J9Guf8lLlF?}H8HZDkc=Uk-h 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 + + + + + + + + + + + + + + + @@ -462,34 +477,26 @@ - - - - + + - - - - + + - - - - + + - - - - - + + + @@ -502,18 +509,17 @@ - - - - + + + + + - - - - - + + + @@ -530,11 +536,9 @@ - - - - - + + + @@ -549,87 +553,84 @@ + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + @@ -646,74 +647,66 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + @@ -740,215 +733,196 @@ + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - - - - + + + + - - - - + + + + + + + + + @@ -980,21 +954,21 @@ - - - - + + + + - - + + - + - - + + @@ -1004,63 +978,72 @@ - + - + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - - - - - - + + + + + + + + + + + + + + + + @@ -1068,10 +1051,9 @@ - - - - + + + @@ -1079,10 +1061,11 @@ - - - - + + + + + @@ -1385,6 +1368,9 @@ + + + @@ -1395,7 +1381,7 @@ - + @@ -1421,6 +1407,9 @@ + + + @@ -1448,9 +1437,6 @@ - - - @@ -1488,7 +1474,7 @@ - + From 8ac87f755e845ce6e8b08f4d92f1fd7b9bad4b21 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 00:25:35 -0500 Subject: [PATCH 135/159] Use new icons for the public_transport presets --- data/presets/presets.json | 34 +++++++++---------- .../presets/building/_train_station.json | 2 +- .../public_transport/platform_light_rail.json | 2 +- .../public_transport/platform_monorail.json | 2 +- .../public_transport/platform_subway.json | 2 +- .../public_transport/platform_tram.json | 2 +- .../public_transport/platform_trolleybus.json | 2 +- .../public_transport/station_light_rail.json | 2 +- .../public_transport/station_monorail.json | 2 +- .../public_transport/station_subway.json | 2 +- .../public_transport/station_tram.json | 2 +- .../public_transport/station_trolleybus.json | 2 +- .../stop_position_light_rail.json | 2 +- .../stop_position_monorail.json | 2 +- .../stop_position_subway.json | 2 +- .../public_transport/stop_position_tram.json | 2 +- .../stop_position_trolleybus.json | 2 +- data/presets/presets/railway/_tram_stop.json | 2 +- .../presets/type/route/light_rail.json | 2 +- 19 files changed, 35 insertions(+), 35 deletions(-) diff --git a/data/presets/presets.json b/data/presets/presets.json index 9df76eb8d..dd899b2b4 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -13559,7 +13559,7 @@ "name": "Ferry Stop / Platform" }, "public_transport/platform_light_rail": { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "ref_platform", @@ -13608,7 +13608,7 @@ "name": "Light Rail Stop / Platform" }, "public_transport/platform_monorail": { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "ref_platform", @@ -13653,7 +13653,7 @@ "name": "Monorail Stop / Platform" }, "public_transport/platform_subway": { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "ref_platform", @@ -13747,7 +13747,7 @@ "name": "Train Stop / Platform" }, "public_transport/platform_tram": { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "ref_platform", @@ -13797,7 +13797,7 @@ "name": "Tram Stop / Platform" }, "public_transport/platform_trolleybus": { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "ref_platform", @@ -14006,7 +14006,7 @@ "name": "Ferry Station / Terminal" }, "public_transport/station_light_rail": { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "network", @@ -14058,7 +14058,7 @@ "name": "Light Rail Station" }, "public_transport/station_monorail": { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "network", @@ -14104,7 +14104,7 @@ "name": "Monorail Station" }, "public_transport/station_subway": { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "network", @@ -14241,7 +14241,7 @@ "name": "Train Station" }, "public_transport/station_tram": { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "network", @@ -14282,7 +14282,7 @@ "name": "Tram Station" }, "public_transport/station_trolleybus": { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "network", @@ -14481,7 +14481,7 @@ "name": "Ferry Stopping Location" }, "public_transport/stop_position_light_rail": { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "ref_stop_position", @@ -14524,7 +14524,7 @@ "name": "Light Rail Stopping Location" }, "public_transport/stop_position_monorail": { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "ref_stop_position", @@ -14563,7 +14563,7 @@ "name": "Monorail Stopping Location" }, "public_transport/stop_position_subway": { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "ref_stop_position", @@ -14645,7 +14645,7 @@ "name": "Train Stopping Location" }, "public_transport/stop_position_tram": { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "ref_stop_position", @@ -14689,7 +14689,7 @@ "name": "Tram Stopping Location" }, "public_transport/stop_position_trolleybus": { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "ref_stop_position", @@ -14810,7 +14810,7 @@ "searchable": false }, "railway/tram_stop": { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "network", @@ -18802,7 +18802,7 @@ "name": "Riding Route" }, "type/route/light_rail": { - "icon": "route-tram", + "icon": "route-light-rail", "fields": [ "name", "ref_route", diff --git a/data/presets/presets/building/_train_station.json b/data/presets/presets/building/_train_station.json index f83e337a8..81d7eda0a 100644 --- a/data/presets/presets/building/_train_station.json +++ b/data/presets/presets/building/_train_station.json @@ -15,5 +15,5 @@ }, "matchScore": 0.5, "name": "Train Station", - "searchable":false + "searchable": false } diff --git a/data/presets/presets/public_transport/platform_light_rail.json b/data/presets/presets/public_transport/platform_light_rail.json index 61fcfcaf8..6b376861a 100644 --- a/data/presets/presets/public_transport/platform_light_rail.json +++ b/data/presets/presets/public_transport/platform_light_rail.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "ref_platform", diff --git a/data/presets/presets/public_transport/platform_monorail.json b/data/presets/presets/public_transport/platform_monorail.json index 611b247d8..3505e6c3d 100644 --- a/data/presets/presets/public_transport/platform_monorail.json +++ b/data/presets/presets/public_transport/platform_monorail.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "ref_platform", diff --git a/data/presets/presets/public_transport/platform_subway.json b/data/presets/presets/public_transport/platform_subway.json index 3656eed2c..716740982 100644 --- a/data/presets/presets/public_transport/platform_subway.json +++ b/data/presets/presets/public_transport/platform_subway.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "ref_platform", diff --git a/data/presets/presets/public_transport/platform_tram.json b/data/presets/presets/public_transport/platform_tram.json index 51f190867..2677ab543 100644 --- a/data/presets/presets/public_transport/platform_tram.json +++ b/data/presets/presets/public_transport/platform_tram.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "ref_platform", diff --git a/data/presets/presets/public_transport/platform_trolleybus.json b/data/presets/presets/public_transport/platform_trolleybus.json index e4de6e627..b897aba99 100644 --- a/data/presets/presets/public_transport/platform_trolleybus.json +++ b/data/presets/presets/public_transport/platform_trolleybus.json @@ -1,5 +1,5 @@ { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "ref_platform", diff --git a/data/presets/presets/public_transport/station_light_rail.json b/data/presets/presets/public_transport/station_light_rail.json index ff71e3af8..a1181aba9 100644 --- a/data/presets/presets/public_transport/station_light_rail.json +++ b/data/presets/presets/public_transport/station_light_rail.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "network", diff --git a/data/presets/presets/public_transport/station_monorail.json b/data/presets/presets/public_transport/station_monorail.json index 45b6c52eb..6b6d1aac6 100644 --- a/data/presets/presets/public_transport/station_monorail.json +++ b/data/presets/presets/public_transport/station_monorail.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "network", diff --git a/data/presets/presets/public_transport/station_subway.json b/data/presets/presets/public_transport/station_subway.json index 304b1bd4d..526c003d6 100644 --- a/data/presets/presets/public_transport/station_subway.json +++ b/data/presets/presets/public_transport/station_subway.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "network", diff --git a/data/presets/presets/public_transport/station_tram.json b/data/presets/presets/public_transport/station_tram.json index f336aa786..dc8efbce1 100644 --- a/data/presets/presets/public_transport/station_tram.json +++ b/data/presets/presets/public_transport/station_tram.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "network", diff --git a/data/presets/presets/public_transport/station_trolleybus.json b/data/presets/presets/public_transport/station_trolleybus.json index 47c5c54ed..519e2eeb6 100644 --- a/data/presets/presets/public_transport/station_trolleybus.json +++ b/data/presets/presets/public_transport/station_trolleybus.json @@ -1,5 +1,5 @@ { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "network", diff --git a/data/presets/presets/public_transport/stop_position_light_rail.json b/data/presets/presets/public_transport/stop_position_light_rail.json index e2bb0994f..c1e8a9eab 100644 --- a/data/presets/presets/public_transport/stop_position_light_rail.json +++ b/data/presets/presets/public_transport/stop_position_light_rail.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-light-rail", "fields": [ "name", "ref_stop_position", diff --git a/data/presets/presets/public_transport/stop_position_monorail.json b/data/presets/presets/public_transport/stop_position_monorail.json index 3c59a4144..8c23674a1 100644 --- a/data/presets/presets/public_transport/stop_position_monorail.json +++ b/data/presets/presets/public_transport/stop_position_monorail.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-monorail", "fields": [ "name", "ref_stop_position", diff --git a/data/presets/presets/public_transport/stop_position_subway.json b/data/presets/presets/public_transport/stop_position_subway.json index e797d7f08..046b412ef 100644 --- a/data/presets/presets/public_transport/stop_position_subway.json +++ b/data/presets/presets/public_transport/stop_position_subway.json @@ -1,5 +1,5 @@ { - "icon": "rail-metro", + "icon": "poi-subway", "fields": [ "name", "ref_stop_position", diff --git a/data/presets/presets/public_transport/stop_position_tram.json b/data/presets/presets/public_transport/stop_position_tram.json index 7d4a24b52..58fe6fbb6 100644 --- a/data/presets/presets/public_transport/stop_position_tram.json +++ b/data/presets/presets/public_transport/stop_position_tram.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "ref_stop_position", diff --git a/data/presets/presets/public_transport/stop_position_trolleybus.json b/data/presets/presets/public_transport/stop_position_trolleybus.json index 5c597c7f2..39b79dcb1 100644 --- a/data/presets/presets/public_transport/stop_position_trolleybus.json +++ b/data/presets/presets/public_transport/stop_position_trolleybus.json @@ -1,5 +1,5 @@ { - "icon": "bus", + "icon": "poi-trolleybus", "fields": [ "name", "ref_stop_position", diff --git a/data/presets/presets/railway/_tram_stop.json b/data/presets/presets/railway/_tram_stop.json index fe334e72b..e78912aa3 100644 --- a/data/presets/presets/railway/_tram_stop.json +++ b/data/presets/presets/railway/_tram_stop.json @@ -1,5 +1,5 @@ { - "icon": "rail-light", + "icon": "poi-tram", "fields": [ "name", "network", diff --git a/data/presets/presets/type/route/light_rail.json b/data/presets/presets/type/route/light_rail.json index fa26c5763..ba5bf2de0 100644 --- a/data/presets/presets/type/route/light_rail.json +++ b/data/presets/presets/type/route/light_rail.json @@ -1,5 +1,5 @@ { - "icon": "route-tram", + "icon": "route-light-rail", "fields": [ "name", "ref_route", From fa629956e5c134d12a5a1a49d3b820627be25801 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 5 Dec 2017 13:10:53 +0000 Subject: [PATCH 136/159] chore(package): update mapillary-js to version 2.10.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e766b8d1c..abf2698b9 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "js-yaml": "^3.9.0", "json-stable-stringify": "^1.0.1", "jsonschema": "^1.1.0", - "mapillary-js": "2.9.0", + "mapillary-js": "2.10.0", "minimist": "^1.2.0", "mocha": "^4.0.0", "mocha-phantomjs-core": "^2.1.0", From c05146d55ab3ea768b9bb6bdb24fde58dd660887 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Tue, 5 Dec 2017 07:30:06 +0000 Subject: [PATCH 137/159] chore(package): update rollup to version 0.52.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index abf2698b9..ea4b50cc9 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.52.0", + "rollup": "0.52.1", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From 5b6d645e6d52575dcdd333a1880042c9b76e7372 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 2 Dec 2017 01:29:56 +0000 Subject: [PATCH 138/159] chore(package): update @std/esm to version 0.18.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ea4b50cc9..f26844ac9 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@mapbox/maki": "^4.0.0", - "@std/esm": "^0.17.2", + "@std/esm": "^0.18.0", "brfs": "1.4.3", "chai": "^4.1.0", "colors": "^1.1.2", From b29cc88f3646a7940707d6e4dbe48575ff353cde Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 11:36:46 -0500 Subject: [PATCH 139/159] Add Retail Building to buildings, switch Commercial icon to suitcase (closes #4590) --- data/presets/categories.json | 1 + data/presets/categories/building.json | 1 + data/presets/presets.json | 44 +++++++++---------- data/presets/presets/building/commercial.json | 2 +- data/presets/presets/landuse/commercial.json | 2 +- data/presets/presets/landuse/retail.json | 2 +- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/data/presets/categories.json b/data/presets/categories.json index 0cae38795..074b44b0c 100644 --- a/data/presets/categories.json +++ b/data/presets/categories.json @@ -21,6 +21,7 @@ "building", "building/house", "building/apartments", + "building/retail", "building/commercial", "building/industrial", "building/residential" diff --git a/data/presets/categories/building.json b/data/presets/categories/building.json index 2c178a21c..d94ce516b 100644 --- a/data/presets/categories/building.json +++ b/data/presets/categories/building.json @@ -6,6 +6,7 @@ "building", "building/house", "building/apartments", + "building/retail", "building/commercial", "building/industrial", "building/residential" diff --git a/data/presets/presets.json b/data/presets/presets.json index dd899b2b4..283bef41d 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -4247,7 +4247,7 @@ "name": "College Building" }, "building/commercial": { - "icon": "commercial", + "icon": "suitcase", "fields": [ "name", "address", @@ -8054,7 +8054,7 @@ "name": "Churchyard" }, "landuse/commercial": { - "icon": "commercial", + "icon": "suitcase", "fields": [ "name" ], @@ -8846,7 +8846,7 @@ "name": "Residential Area" }, "landuse/retail": { - "icon": "shop", + "icon": "commercial", "geometry": [ "area" ], @@ -17857,7 +17857,7 @@ "name": "Artwork" }, "tourism/attraction": { - "icon": "monument", + "icon": "star", "fields": [ "name", "operator", @@ -90893,7 +90893,7 @@ "tourism": "attraction" }, "name": "Arch", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -90912,7 +90912,7 @@ "tourism": "attraction" }, "name": "Kursächsische Postmeilensäule", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -90931,7 +90931,7 @@ "tourism": "attraction" }, "name": "Lavoir", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -90950,7 +90950,7 @@ "tourism": "attraction" }, "name": "Maibaum", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -90969,7 +90969,7 @@ "tourism": "attraction" }, "name": "Moab trail", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -90988,7 +90988,7 @@ "tourism": "attraction" }, "name": "Moai", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91007,7 +91007,7 @@ "tourism": "attraction" }, "name": "OWŚ", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91026,7 +91026,7 @@ "tourism": "attraction" }, "name": "Sommerrodelbahn", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91045,7 +91045,7 @@ "tourism": "attraction" }, "name": "path continues", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91064,7 +91064,7 @@ "tourism": "attraction" }, "name": "path contiunes", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91083,7 +91083,7 @@ "tourism": "attraction" }, "name": "white blaze", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91102,7 +91102,7 @@ "tourism": "attraction" }, "name": "Кладбище еврейское", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91121,7 +91121,7 @@ "tourism": "attraction" }, "name": "Колесо обозрения", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91140,7 +91140,7 @@ "tourism": "attraction" }, "name": "Приусадебный парк", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91159,7 +91159,7 @@ "tourism": "attraction" }, "name": "Усадьба", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91178,7 +91178,7 @@ "tourism": "attraction" }, "name": "Хозяйственный двор", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91197,7 +91197,7 @@ "tourism": "attraction" }, "name": "Часовня", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", @@ -91216,7 +91216,7 @@ "tourism": "attraction" }, "name": "дольмен", - "icon": "monument", + "icon": "star", "geometry": [ "point", "vertex", diff --git a/data/presets/presets/building/commercial.json b/data/presets/presets/building/commercial.json index 2c548315a..2b115101b 100644 --- a/data/presets/presets/building/commercial.json +++ b/data/presets/presets/building/commercial.json @@ -1,5 +1,5 @@ { - "icon": "commercial", + "icon": "suitcase", "fields": [ "name", "address", diff --git a/data/presets/presets/landuse/commercial.json b/data/presets/presets/landuse/commercial.json index ab4d5ee56..0f4ca186e 100644 --- a/data/presets/presets/landuse/commercial.json +++ b/data/presets/presets/landuse/commercial.json @@ -1,5 +1,5 @@ { - "icon": "commercial", + "icon": "suitcase", "fields": [ "name" ], diff --git a/data/presets/presets/landuse/retail.json b/data/presets/presets/landuse/retail.json index 8af7e2fc5..fa3c22b9f 100644 --- a/data/presets/presets/landuse/retail.json +++ b/data/presets/presets/landuse/retail.json @@ -1,5 +1,5 @@ { - "icon": "shop", + "icon": "commercial", "geometry": [ "area" ], From 83f135f2bac8b6a1589f0b23526bfcad50c1d241 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 13:37:13 -0500 Subject: [PATCH 140/159] Recycling Center / Recycling Container preset cleanups (closes #4569) --- data/presets.yaml | 12 ++-------- data/presets/fields.json | 12 ---------- data/presets/fields/recycling_type.json | 12 ---------- data/presets/presets.json | 22 ++++++++++++++++--- data/presets/presets/amenity/recycling.json | 15 +++++++++++-- .../presets/amenity/recycling_centre.json | 7 +++++- dist/locales/en.json | 9 +------- 7 files changed, 41 insertions(+), 48 deletions(-) delete mode 100644 data/presets/fields/recycling_type.json diff --git a/data/presets.yaml b/data/presets.yaml index a2b4e464d..1802ed669 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -1114,14 +1114,6 @@ en: recycling_accepts: # 'recycling:=*' label: Accepts - recycling_type: - # recycling_type=* - label: Recycling Type - options: - # recycling_type=centre - centre: Recycling Center - # recycling_type=container - container: Container ref: # ref=* label: Reference Code @@ -2103,9 +2095,9 @@ en: terms: '' amenity/recycling: # amenity=recycling - name: Recycling + name: Recycling Container # 'terms: bin,can,bottle,glass,garbage,rubbish,scrap,trash' - terms: '' + terms: '' amenity/recycling_centre: # 'amenity=recycling, recycling_type=centre' name: Recycling Center diff --git a/data/presets/fields.json b/data/presets/fields.json index 39ad76e68..d3c833ac9 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -1489,18 +1489,6 @@ "type": "multiCombo", "label": "Accepts" }, - "recycling_type": { - "key": "recycling_type", - "default": "container", - "type": "combo", - "label": "Recycling Type", - "strings": { - "options": { - "container": "Container", - "centre": "Recycling Center" - } - } - }, "ref_aeroway_gate": { "key": "ref", "type": "text", diff --git a/data/presets/fields/recycling_type.json b/data/presets/fields/recycling_type.json deleted file mode 100644 index e8195f105..000000000 --- a/data/presets/fields/recycling_type.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "key": "recycling_type", - "default": "container", - "type": "combo", - "label": "Recycling Type", - "strings": { - "options": { - "container": "Container", - "centre": "Recycling Center" - } - } -} diff --git a/data/presets/presets.json b/data/presets/presets.json index 283bef41d..7a4beec6e 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -2541,11 +2541,12 @@ "name": "Ranger Station" }, "amenity/recycling_centre": { - "icon": "waste-basket", + "icon": "recycling", "fields": [ "name", "operator", "address", + "building", "opening_hours", "recycling_accepts" ], @@ -2567,12 +2568,15 @@ "amenity": "recycling", "recycling_type": "centre" }, + "reference": { + "key": "recycling_type", + "value": "*" + }, "name": "Recycling Center" }, "amenity/recycling": { "icon": "recycling", "fields": [ - "recycling_type", "recycling_accepts", "collection_times" ], @@ -2593,7 +2597,19 @@ "tags": { "amenity": "recycling" }, - "name": "Recycling" + "addTags": { + "amenity": "recycling", + "recycling_type": "container" + }, + "removeTags": { + "amenity": "recycling", + "recycling_type": "container" + }, + "reference": { + "key": "amenity", + "value": "recycling" + }, + "name": "Recycling Container" }, "amenity/restaurant": { "icon": "restaurant", diff --git a/data/presets/presets/amenity/recycling.json b/data/presets/presets/amenity/recycling.json index 4648e3b62..f2000bab7 100644 --- a/data/presets/presets/amenity/recycling.json +++ b/data/presets/presets/amenity/recycling.json @@ -1,7 +1,6 @@ { "icon": "recycling", "fields": [ - "recycling_type", "recycling_accepts", "collection_times" ], @@ -22,5 +21,17 @@ "tags": { "amenity": "recycling" }, - "name": "Recycling" + "addTags": { + "amenity": "recycling", + "recycling_type": "container" + }, + "removeTags": { + "amenity": "recycling", + "recycling_type": "container" + }, + "reference": { + "key": "amenity", + "value": "recycling" + }, + "name": "Recycling Container" } diff --git a/data/presets/presets/amenity/recycling_centre.json b/data/presets/presets/amenity/recycling_centre.json index 3ab57bd17..aa5abdc5c 100644 --- a/data/presets/presets/amenity/recycling_centre.json +++ b/data/presets/presets/amenity/recycling_centre.json @@ -1,9 +1,10 @@ { - "icon": "waste-basket", + "icon": "recycling", "fields": [ "name", "operator", "address", + "building", "opening_hours", "recycling_accepts" ], @@ -25,5 +26,9 @@ "amenity": "recycling", "recycling_type": "centre" }, + "reference": { + "key": "recycling_type", + "value": "*" + }, "name": "Recycling Center" } diff --git a/dist/locales/en.json b/dist/locales/en.json index d29e3656f..b60bed795 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -2184,13 +2184,6 @@ "recycling_accepts": { "label": "Accepts" }, - "recycling_type": { - "label": "Recycling Type", - "options": { - "container": "Container", - "centre": "Recycling Center" - } - }, "ref_aeroway_gate": { "label": "Gate Number" }, @@ -3073,7 +3066,7 @@ "terms": "bottle,can,dump,glass,garbage,rubbish,scrap,trash" }, "amenity/recycling": { - "name": "Recycling", + "name": "Recycling Container", "terms": "bin,can,bottle,glass,garbage,rubbish,scrap,trash" }, "amenity/restaurant": { From 6920e08737e6f9d147d43c53382ce56f0f12a481 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 13:46:40 -0500 Subject: [PATCH 141/159] Don't show building=mosque as house icon (closes #4586) --- data/presets.yaml | 4 ++++ data/presets/presets.json | 16 ++++++++++++++++ data/presets/presets/building/mosque.json | 16 ++++++++++++++++ data/taginfo.json | 4 ++++ dist/locales/en.json | 4 ++++ 5 files changed, 44 insertions(+) create mode 100644 data/presets/presets/building/mosque.json diff --git a/data/presets.yaml b/data/presets.yaml index 1802ed669..485528568 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -2527,6 +2527,10 @@ en: name: Preschool/Kindergarten Building # 'terms: kindergarden,pre-school' terms: '' + building/mosque: + # building=mosque + name: Mosque Building + terms: '' building/public: # building=public name: Public Building diff --git a/data/presets/presets.json b/data/presets/presets.json index 7a4beec6e..28f963a41 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -4485,6 +4485,22 @@ "matchScore": 0.5, "name": "Preschool/Kindergarten Building" }, + "building/mosque": { + "icon": "place-of-worship", + "fields": [ + "name", + "address", + "levels" + ], + "geometry": [ + "area" + ], + "tags": { + "building": "mosque" + }, + "matchScore": 0.5, + "name": "Mosque Building" + }, "building/public": { "icon": "building", "fields": [ diff --git a/data/presets/presets/building/mosque.json b/data/presets/presets/building/mosque.json new file mode 100644 index 000000000..5853f4c51 --- /dev/null +++ b/data/presets/presets/building/mosque.json @@ -0,0 +1,16 @@ +{ + "icon": "place-of-worship", + "fields": [ + "name", + "address", + "levels" + ], + "geometry": [ + "area" + ], + "tags": { + "building": "mosque" + }, + "matchScore": 0.5, + "name": "Mosque Building" +} diff --git a/data/taginfo.json b/data/taginfo.json index 716f2984f..8ff8e7622 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -848,6 +848,10 @@ "key": "building", "value": "kindergarten" }, + { + "key": "building", + "value": "mosque" + }, { "key": "building", "value": "public" diff --git a/dist/locales/en.json b/dist/locales/en.json index b60bed795..76fbbd9ff 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -3445,6 +3445,10 @@ "name": "Preschool/Kindergarten Building", "terms": "kindergarden,pre-school" }, + "building/mosque": { + "name": "Mosque Building", + "terms": "" + }, "building/public": { "name": "Public Building", "terms": "" From 41405354703dd67334ac191f4baa4ad71e5ffbbf Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 13:58:31 -0500 Subject: [PATCH 142/159] Add preset for `landuse=greenhouse_horticulture` (closes #4571) Also adjust matchScores so that odd or generic presets like this one sort lower --- data/presets.yaml | 5 ++++ data/presets/presets.json | 28 +++++++++++++++++++ data/presets/presets/landuse/brownfield.json | 1 + data/presets/presets/landuse/commercial.json | 1 + data/presets/presets/landuse/greenfield.json | 1 + .../landuse/greenhouse_horticulture.json | 22 +++++++++++++++ data/presets/presets/landuse/meadow.json | 1 + data/presets/presets/landuse/residential.json | 1 + data/presets/presets/landuse/retail.json | 1 + data/taginfo.json | 4 +++ dist/locales/en.json | 4 +++ 11 files changed, 69 insertions(+) create mode 100644 data/presets/presets/landuse/greenhouse_horticulture.json diff --git a/data/presets.yaml b/data/presets.yaml index 485528568..c7ee602ec 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -3334,6 +3334,11 @@ en: # landuse=greenfield name: Greenfield terms: '' + landuse/greenhouse_horticulture: + # landuse=greenhouse_horticulture + name: Greenhouse Horticulture + # 'terms: flower,greenhouse,horticulture,grow,vivero' + terms: '' landuse/harbour: # landuse=harbour name: Harbor diff --git a/data/presets/presets.json b/data/presets/presets.json index 28f963a41..8cc93e1d7 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -8052,6 +8052,7 @@ "landuse": "brownfield" }, "terms": [], + "matchScore": 0.9, "name": "Brownfield" }, "landuse/cemetery": { @@ -8097,6 +8098,7 @@ "landuse": "commercial" }, "terms": [], + "matchScore": 0.9, "name": "Commercial Area" }, "landuse/construction": { @@ -8208,8 +8210,31 @@ "landuse": "greenfield" }, "terms": [], + "matchScore": 0.9, "name": "Greenfield" }, + "landuse/greenhouse_horticulture": { + "icon": "garden", + "fields": [ + "name", + "operator" + ], + "geometry": [ + "area" + ], + "terms": [ + "flower", + "greenhouse", + "horticulture", + "grow", + "vivero" + ], + "tags": { + "landuse": "greenhouse_horticulture" + }, + "matchScore": 0.9, + "name": "Greenhouse Horticulture" + }, "landuse/harbour": { "icon": "harbor", "fields": [ @@ -8343,6 +8368,7 @@ "name": "Landfill" }, "landuse/meadow": { + "icon": "garden", "geometry": [ "area" ], @@ -8875,6 +8901,7 @@ "landuse": "residential" }, "terms": [], + "matchScore": 0.9, "name": "Residential Area" }, "landuse/retail": { @@ -8888,6 +8915,7 @@ "tags": { "landuse": "retail" }, + "matchScore": 0.9, "name": "Retail Area" }, "landuse/vineyard": { diff --git a/data/presets/presets/landuse/brownfield.json b/data/presets/presets/landuse/brownfield.json index b92907a93..9fb617e35 100644 --- a/data/presets/presets/landuse/brownfield.json +++ b/data/presets/presets/landuse/brownfield.json @@ -9,5 +9,6 @@ "landuse": "brownfield" }, "terms": [], + "matchScore": 0.9, "name": "Brownfield" } diff --git a/data/presets/presets/landuse/commercial.json b/data/presets/presets/landuse/commercial.json index 0f4ca186e..81ca39881 100644 --- a/data/presets/presets/landuse/commercial.json +++ b/data/presets/presets/landuse/commercial.json @@ -10,5 +10,6 @@ "landuse": "commercial" }, "terms": [], + "matchScore": 0.9, "name": "Commercial Area" } diff --git a/data/presets/presets/landuse/greenfield.json b/data/presets/presets/landuse/greenfield.json index 44940454f..1fee223ed 100644 --- a/data/presets/presets/landuse/greenfield.json +++ b/data/presets/presets/landuse/greenfield.json @@ -9,5 +9,6 @@ "landuse": "greenfield" }, "terms": [], + "matchScore": 0.9, "name": "Greenfield" } diff --git a/data/presets/presets/landuse/greenhouse_horticulture.json b/data/presets/presets/landuse/greenhouse_horticulture.json new file mode 100644 index 000000000..1a8a8b4bb --- /dev/null +++ b/data/presets/presets/landuse/greenhouse_horticulture.json @@ -0,0 +1,22 @@ +{ + "icon": "garden", + "fields": [ + "name", + "operator" + ], + "geometry": [ + "area" + ], + "terms": [ + "flower", + "greenhouse", + "horticulture", + "grow", + "vivero" + ], + "tags": { + "landuse": "greenhouse_horticulture" + }, + "matchScore": 0.9, + "name": "Greenhouse Horticulture" +} diff --git a/data/presets/presets/landuse/meadow.json b/data/presets/presets/landuse/meadow.json index b2f29cea1..780c4f5b1 100644 --- a/data/presets/presets/landuse/meadow.json +++ b/data/presets/presets/landuse/meadow.json @@ -1,4 +1,5 @@ { + "icon": "garden", "geometry": [ "area" ], diff --git a/data/presets/presets/landuse/residential.json b/data/presets/presets/landuse/residential.json index 4048c3200..564ebec4f 100644 --- a/data/presets/presets/landuse/residential.json +++ b/data/presets/presets/landuse/residential.json @@ -7,5 +7,6 @@ "landuse": "residential" }, "terms": [], + "matchScore": 0.9, "name": "Residential Area" } diff --git a/data/presets/presets/landuse/retail.json b/data/presets/presets/landuse/retail.json index fa3c22b9f..06ac3ee59 100644 --- a/data/presets/presets/landuse/retail.json +++ b/data/presets/presets/landuse/retail.json @@ -9,5 +9,6 @@ "tags": { "landuse": "retail" }, + "matchScore": 0.9, "name": "Retail Area" } diff --git a/data/taginfo.json b/data/taginfo.json index 8ff8e7622..64c92eeb2 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -1574,6 +1574,10 @@ "key": "landuse", "value": "greenfield" }, + { + "key": "landuse", + "value": "greenhouse_horticulture" + }, { "key": "landuse", "value": "harbour" diff --git a/dist/locales/en.json b/dist/locales/en.json index 76fbbd9ff..3606d5b92 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -4177,6 +4177,10 @@ "name": "Greenfield", "terms": "" }, + "landuse/greenhouse_horticulture": { + "name": "Greenhouse Horticulture", + "terms": "flower,greenhouse,horticulture,grow,vivero" + }, "landuse/harbour": { "name": "Harbor", "terms": "boat" From 5e19c936f0949d6a1e82ff122b661ba0b2512e8e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 14:36:12 -0500 Subject: [PATCH 143/159] Avoid deferred fetching of OSM tiles at low zooms or with layer disabled (closes #4572) --- modules/core/context.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/context.js b/modules/core/context.js index a3e618e46..ce0cf5787 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -129,7 +129,7 @@ export function coreContext() { if (!err) history.merge(result.data, result.extent); if (callback) callback(err, result); } - if (connection) { + if (connection && context.editable()) { cid = connection.getConnectionId(); connection.loadTiles(projection, dimensions, done); } From f247bd1e66e4c0145eb9c9d23a162b1c7ab6ec1a Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 5 Dec 2017 23:41:34 -0500 Subject: [PATCH 144/159] Move icon code into uiFlash, default flash icon to icon-no Previously it was up to the caller to draw whatever they want into the footer flash. With this change, uiFlash creates an icon and a text, so the caller doesn't need to do as much work. --- css/80_app.css | 35 ++++++++-- modules/behavior/operation.js | 69 +++++++------------ modules/renderer/map.js | 4 +- modules/ui/flash.js | 124 +++++++++++++++++++++++++++------- test/spec/ui/flash.js | 10 +-- 5 files changed, 159 insertions(+), 83 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index b8662d899..4f9be5651 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -3052,13 +3052,13 @@ img.tile-removing { margin: 0 3px; } - #footer { pointer-events: all; display: block; height: 30px; } +/* footer flash message */ #flash-wrap { display: flex; @@ -3071,7 +3071,7 @@ img.tile-removing { left: 0; } -#flash-wrap .content { +.flash-content { display: flex; flex: 1 0 auto; flex-flow: row nowrap; @@ -3080,15 +3080,38 @@ img.tile-removing { height: 30px; } - -#flash-wrap svg.operation-icon { +.flash-icon { flex: 0 0 auto; width: 20px; height: 20px; margin: 0 8px; } -#flash-wrap div.operation-tip { +.flash-icon circle { + fill: #eee; +} +.flash-icon.disabled circle { + cursor: auto; + fill: rgba(255,255,255,0.7); +} + +.flash-icon use { + color: #222; +} +.flash-icon.disabled use { + color: rgba(32,32,32,0.7); +} + +.flash-icon.operation use { + fill: #222; + color: #79f; +} +.flash-icon.operation.disabled use { + fill: rgba(32,32,32,0.7); + color: rgba(40,40,40,0.7); +} + +.flash-text { flex: 1 1 auto; } @@ -3118,6 +3141,8 @@ img.tile-removing { } +/* footer scale */ + #scale-block { vertical-align: bottom; width: 250px; diff --git a/modules/behavior/operation.js b/modules/behavior/operation.js index 9dfb8502d..88bc96e8b 100644 --- a/modules/behavior/operation.js +++ b/modules/behavior/operation.js @@ -9,61 +9,40 @@ import { uiFlash } from '../ui'; /* Creates a keybinding behavior for an operation */ export function behaviorOperation() { - var which, keybinding; - - - function drawIcon(selection) { - var button = selection - .append('svg') - .attr('class', 'operation-icon') - .append('g') - .attr('class', 'radial-menu-item radial-menu-item-' + which.id) - .attr('transform', 'translate(10,10)') - .classed('disabled', which.disabled()); - - button - .append('circle') - .attr('r', 9); - - button - .append('use') - .attr('transform', 'translate(-7,-7)') - .attr('width', '14') - .attr('height', '14') - .attr('xlink:href', '#operation-' + which.id); - - return selection; - } - + var _operation, keybinding; var behavior = function () { - if (which && which.available()) { - keybinding = d3_keybinding('behavior.key.' + which.id); - keybinding.on(which.keys, function() { + if (_operation && _operation.available()) { + keybinding = d3_keybinding('behavior.key.' + _operation.id); + keybinding.on(_operation.keys, function() { d3_event.preventDefault(); - var disabled = which.disabled(); + var disabled = _operation.disabled(); + var flash; if (disabled) { - uiFlash(3000) - .html('') - .call(drawIcon) - .append('div') - .attr('class', 'operation-tip') - .text(which.tooltip); + flash = uiFlash() + .duration(4000) + .iconName('#operation-' + _operation.id) + .iconClass('operation disabled') + .text(_operation.tooltip); + + flash(); } else { - uiFlash(1500) - .html('') - .call(drawIcon) - .append('div') - .attr('class', 'operation-tip') - .text(which.annotation() || which.title); + flash = uiFlash() + .duration(2000) + .iconName('#operation-' + _operation.id) + .iconClass('operation') + .text(_operation.annotation() || _operation.title); - which(); + flash(); + _operation(); } }); + d3_select(document).call(keybinding); } + return behavior; }; @@ -76,8 +55,8 @@ export function behaviorOperation() { behavior.which = function (_) { - if (!arguments.length) return which; - which = _; + if (!arguments.length) return _operation; + _operation = _; return behavior; }; diff --git a/modules/renderer/map.js b/modules/renderer/map.js index 93cc7bdd0..e53297ff4 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -359,7 +359,7 @@ export function rendererMap(context) { if (ktoz(eventTransform.k * 2 * Math.PI) < minzoom) { surface.interrupt(); - uiFlash().text(t('cannot_zoom')); + uiFlash().text(t('cannot_zoom'))(); setZoom(context.minEditableZoom(), true); scheduleRedraw(); dispatch.call('move', this, map); @@ -653,7 +653,7 @@ export function rendererMap(context) { if (z2 < minzoom) { surface.interrupt(); - uiFlash().text(t('cannot_zoom')); + uiFlash().text(t('cannot_zoom'))(); z2 = context.minEditableZoom(); } diff --git a/modules/ui/flash.js b/modules/ui/flash.js index 27a5d759e..8540c706a 100644 --- a/modules/ui/flash.js +++ b/modules/ui/flash.js @@ -1,37 +1,115 @@ import { select as d3_select } from 'd3-selection'; import { timeout as d3_timeout } from 'd3-timer'; -var timer; +var _flashTimer; -export function uiFlash(showDuration) { - showDuration = showDuration || 1500; +export function uiFlash() { + var _duration = 2000; + var _iconName = '#icon-no'; + var _iconClass = 'disabled'; + var _text = ''; + var _textClass; - if (timer) { - timer.stop(); + + function flash() { + if (_flashTimer) { + _flashTimer.stop(); + } + + d3_select('#footer-wrap') + .attr('class', 'footer-hide'); + d3_select('#flash-wrap') + .attr('class', 'footer-show'); + + var content = d3_select('#flash-wrap').selectAll('.flash-content') + .data([0]); + + // Enter + var contentEnter = content.enter() + .append('div') + .attr('class', 'flash-content'); + + var iconEnter = contentEnter + .append('svg') + .attr('class', 'flash-icon') + .append('g') + .attr('transform', 'translate(10,10)'); + + iconEnter + .append('circle') + .attr('r', 9); + + iconEnter + .append('use') + .attr('transform', 'translate(-7,-7)') + .attr('width', '14') + .attr('height', '14'); + + contentEnter + .append('div') + .attr('class', 'flash-text'); + + + // Update + content = content + .merge(contentEnter); + + content + .selectAll('.flash-icon') + .attr('class', 'flash-icon ' + (_iconClass || '')); + + content + .selectAll('.flash-icon use') + .attr('xlink:href', _iconName); + + content + .selectAll('.flash-text') + .attr('class', 'flash-text ' + (_textClass || '')) + .text(_text); + + + _flashTimer = d3_timeout(function() { + _flashTimer = null; + d3_select('#footer-wrap') + .attr('class', 'footer-show'); + d3_select('#flash-wrap') + .attr('class', 'footer-hide'); + }, _duration); + + return content; } - d3_select('#footer-wrap') - .attr('class', 'footer-hide'); - d3_select('#flash-wrap') - .attr('class', 'footer-show'); - var content = d3_select('#flash-wrap').selectAll('.content') - .data([0]); + flash.duration = function(_) { + if (!arguments.length) return _duration; + _duration = _; + return flash; + }; - content = content.enter() - .append('div') - .attr('class', 'content') - .merge(content); + flash.text = function(_) { + if (!arguments.length) return _text; + _text = _; + return flash; + }; - timer = d3_timeout(function() { - timer = null; - d3_select('#footer-wrap') - .attr('class', 'footer-show'); - d3_select('#flash-wrap') - .attr('class', 'footer-hide'); - }, showDuration); + flash.textClass = function(_) { + if (!arguments.length) return _textClass; + _textClass = _; + return flash; + }; + flash.iconName = function(_) { + if (!arguments.length) return _iconName; + _iconName = _; + return flash; + }; - return content; + flash.iconClass = function(_) { + if (!arguments.length) return _iconClass; + _iconClass = _; + return flash; + }; + + return flash; } diff --git a/test/spec/ui/flash.js b/test/spec/ui/flash.js index 3fa10b0d1..d19970396 100644 --- a/test/spec/ui/flash.js +++ b/test/spec/ui/flash.js @@ -13,14 +13,8 @@ describe('iD.uiFlash', function () { .remove(); }); - it('returns a selection', function () { - var content = iD.uiFlash(200); - expect(content.size()).to.eql(1); - expect(content.classed('content')).to.be.ok; - }); - it('flash is shown', function() { - iD.uiFlash(200); + iD.uiFlash().duration(200)(); var flashWrap = d3.selectAll('#flash-wrap'); var footerWrap = d3.selectAll('#footer-wrap'); expect(flashWrap.classed('footer-show')).to.be.ok; @@ -28,7 +22,7 @@ describe('iD.uiFlash', function () { }); it('flash goes away', function(done) { - iD.uiFlash(200); + iD.uiFlash().duration(200)(); window.setTimeout(function() { d3.timerFlush(); var flashWrap = d3.selectAll('#flash-wrap'); From c6ab9e593d22551f3d75caf87e2f8b04f544fd93 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 6 Dec 2017 00:11:42 -0500 Subject: [PATCH 145/159] Flash message if drag not allowed because of a hidden connection (closes #4493) --- data/core.yaml | 2 ++ dist/locales/en.json | 3 +++ modules/modes/drag_node.js | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index e40b52190..a0842b3ee 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -19,6 +19,8 @@ en: tail: Click to add nodes to your area. Click the first node to finish the area. draw_line: tail: "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line." + drag_node: + connected_to_hidden: This can't be edited because it is connected to a hidden feature. operations: add: annotation: diff --git a/dist/locales/en.json b/dist/locales/en.json index 3606d5b92..29d3b87e6 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -25,6 +25,9 @@ }, "draw_line": { "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line." + }, + "drag_node": { + "connected_to_hidden": "This can't be edited because it is connected to a hidden feature." } }, "operations": { diff --git a/modules/modes/drag_node.js b/modules/modes/drag_node.js index 4e4fd22a5..baed024ae 100644 --- a/modules/modes/drag_node.js +++ b/modules/modes/drag_node.js @@ -28,6 +28,7 @@ import { import { geoChooseEdge } from '../geo'; import { osmNode } from '../osm'; import { utilEntitySelector } from '../util'; +import { uiFlash } from '../ui'; export function modeDragNode(context) { @@ -106,11 +107,14 @@ export function modeDragNode(context) { function start(entity) { wasMidpoint = entity.type === 'midpoint'; + var hasHidden = context.features().hasHiddenConnections(entity, context.graph()); + isCancelled = d3_event.sourceEvent.shiftKey || hasHidden; - isCancelled = d3_event.sourceEvent.shiftKey || - context.features().hasHiddenConnections(entity, context.graph()); if (isCancelled) { + if (hasHidden) { + uiFlash().text(t('modes.drag_node.connected_to_hidden'))(); + } return behavior.cancel(); } From 3440b5523c857e2c71be7c7829283530fe4274c7 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 6 Dec 2017 01:19:02 -0500 Subject: [PATCH 146/159] =?UTF-8?q?Use=20=E2=8C=98F=20to=20focus=20the=20f?= =?UTF-8?q?eature=20search=20box=20(closes=20#4545)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/core.yaml | 1 + data/shortcuts.json | 5 ++- dist/locales/en.json | 3 +- modules/ui/feature_list.js | 80 +++++++++++++++++++++++++++----------- 4 files changed, 63 insertions(+), 26 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index a0842b3ee..851e7dd1f 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -996,6 +996,7 @@ en: select_one: "Select a single feature" select_multi: "Select multiple features" lasso: "Draw a selection lasso around features" + search: "Find features matching search text" with_selected: title: "With feature selected" edit_menu: "Toggle edit menu" diff --git a/data/shortcuts.json b/data/shortcuts.json index e1871dac3..2b562181c 100644 --- a/data/shortcuts.json +++ b/data/shortcuts.json @@ -82,8 +82,9 @@ "gesture": "shortcuts.gesture.drag", "text": "shortcuts.browsing.selecting.lasso" }, { - "shortcuts": [], - "text": "" + "modifiers": ["⌘"], + "shortcuts": ["F"], + "text": "shortcuts.browsing.selecting.search" }, { diff --git a/dist/locales/en.json b/dist/locales/en.json index 29d3b87e6..cf8eb15ba 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1150,7 +1150,8 @@ "title": "Selecting features", "select_one": "Select a single feature", "select_multi": "Select multiple features", - "lasso": "Draw a selection lasso around features" + "lasso": "Draw a selection lasso around features", + "search": "Find features matching search text" }, "with_selected": { "title": "With feature selected", diff --git a/modules/ui/feature_list.js b/modules/ui/feature_list.js index 378e2f9e3..d5ed9330b 100644 --- a/modules/ui/feature_list.js +++ b/modules/ui/feature_list.js @@ -3,24 +3,28 @@ import { select as d3_select } from 'd3-selection'; +import { d3keybinding as d3_keybinding } from '../lib/d3.keybinding.js'; + import * as sexagesimal from '@mapbox/sexagesimal'; import { t } from '../util/locale'; -import { geoExtent, geoChooseEdge } from '../geo/index'; -import { modeSelect } from '../modes/index'; -import { osmEntity } from '../osm/index'; -import { svgIcon } from '../svg/index'; -import { services } from '../services/index'; +import { geoExtent, geoChooseEdge } from '../geo'; +import { modeSelect } from '../modes'; +import { osmEntity } from '../osm'; +import { svgIcon } from '../svg'; +import { services } from '../services'; +import { uiCmd } from './cmd'; import { utilDisplayName, utilDisplayType, utilEntityOrMemberSelector, utilNoAuto -} from '../util/index'; +} from '../util'; export function uiFeatureList(context) { - var geocodeResults; + var keybinding = d3_keybinding('feature-list'); + var _geocodeResults; function featureList(selection) { @@ -28,7 +32,8 @@ export function uiFeatureList(context) { .append('div') .attr('class', 'header fillL cf'); - header.append('h3') + header + .append('h3') .text(t('inspector.feature_list')); var searchWrap = selection @@ -41,6 +46,7 @@ export function uiFeatureList(context) { .attr('type', 'search') .call(utilNoAuto) .on('keypress', keypress) + .on('keydown', keydown) .on('input', inputevent); searchWrap @@ -59,18 +65,40 @@ export function uiFeatureList(context) { context.map() .on('drawn.feature-list', mapDrawn); + keybinding + .on(uiCmd('⌘F'), focusSearch); + + d3_select(document) + .call(keybinding); + + + function focusSearch() { + var mode = context.mode() && context.mode().id; + if (mode !== 'browse') return; + + d3_event.preventDefault(); + search.node().focus(); + } + + + function keydown() { + if (d3_event.keyCode === 27) { // escape + search.node().blur(); + } + } + function keypress() { var q = search.property('value'), items = list.selectAll('.feature-list-item'); - if (d3_event.keyCode === 13 && q.length && items.size()) { + if (d3_event.keyCode === 13 && q.length && items.size()) { // return click(items.datum()); } } function inputevent() { - geocodeResults = undefined; + _geocodeResults = undefined; drawList(); } @@ -149,7 +177,7 @@ export function uiFeatureList(context) { addEntity(visible[i].__data__); } - (geocodeResults || []).forEach(function(d) { + (_geocodeResults || []).forEach(function(d) { // https://github.com/openstreetmap/iD/issues/1890 if (d.osm_type && d.osm_id) { result.push({ @@ -175,11 +203,12 @@ export function uiFeatureList(context) { list.classed('filtered', value.length); - var noResultsWorldwide = geocodeResults && geocodeResults.length === 0; + var noResultsWorldwide = _geocodeResults && _geocodeResults.length === 0; var resultsIndicator = list.selectAll('.no-results-item') .data([0]) - .enter().append('button') + .enter() + .append('button') .property('disabled', true) .attr('class', 'no-results-item') .call(svgIcon('#icon-alert', 'pre-text')); @@ -193,7 +222,8 @@ export function uiFeatureList(context) { if (services.geocoder) { list.selectAll('.geocode-item') .data([0]) - .enter().append('button') + .enter() + .append('button') .attr('class', 'geocode-item') .on('click', geocoderSearch) .append('div') @@ -207,7 +237,7 @@ export function uiFeatureList(context) { .style('display', (value.length && !results.length) ? 'block' : 'none'); list.selectAll('.geocode-item') - .style('display', (value && geocodeResults === undefined) ? 'block' : 'none'); + .style('display', (value && _geocodeResults === undefined) ? 'block' : 'none'); list.selectAll('.feature-list-item') .data([-1]) @@ -227,20 +257,24 @@ export function uiFeatureList(context) { .append('div') .attr('class', 'label'); - label.each(function(d) { - d3_select(this) - .call(svgIcon('#icon-' + d.geometry, 'pre-text')); - }); + label + .each(function(d) { + d3_select(this) + .call(svgIcon('#icon-' + d.geometry, 'pre-text')); + }); - label.append('span') + label + .append('span') .attr('class', 'entity-type') .text(function(d) { return d.type; }); - label.append('span') + label + .append('span') .attr('class', 'entity-name') .text(function(d) { return d.name; }); - enter.style('opacity', 0) + enter + .style('opacity', 0) .transition() .style('opacity', 1); @@ -287,7 +321,7 @@ export function uiFeatureList(context) { function geocoderSearch() { services.geocoder.search(search.property('value'), function (err, resp) { - geocodeResults = resp || []; + _geocodeResults = resp || []; drawList(); }); } From 18ab596f5826844502dc2a08054aabe747281b7e Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 6 Dec 2017 15:27:54 -0500 Subject: [PATCH 147/159] Improve int'l date/time strings on imagery and history tools (closes #4594) --- css/80_app.css | 12 ++++++-- modules/renderer/background_source.js | 17 ++++++----- modules/services/mapillary.js | 8 +++++- modules/services/openstreetcam.js | 6 +++- modules/ui/panels/background.js | 2 +- modules/ui/panels/history.js | 22 +++++++++----- modules/ui/panels/measurement.js | 41 ++++++++++++++++++--------- 7 files changed, 75 insertions(+), 33 deletions(-) diff --git a/css/80_app.css b/css/80_app.css index 4f9be5651..83205fb0b 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -2738,7 +2738,7 @@ img.tile { padding: 5px; border-radius: 3px; z-index: 2; - margin-left: -50px; + margin-left: -70px; margin-top: -20px; transform-origin:0 0; @@ -2959,6 +2959,12 @@ img.tile-removing { position: relative; } +.panel-content li span { + display: inline-block; + white-space: nowrap; + margin: 0 8px; +} + .panel-content .button { display: inline-block; background: #7092ff; @@ -2974,11 +2980,11 @@ img.tile-removing { } .panel-content-history .links a { - margin-left: 10px; + margin-left: 8px; } [dir='rtl'] .panel-content-history .links a { margin-left: auto; - margin-right: 10px; + margin-right: 8px; } .panel-content-history .view-history-on-osm { diff --git a/modules/renderer/background_source.js b/modules/renderer/background_source.js index ec02a94f7..3fd2951e1 100644 --- a/modules/renderer/background_source.js +++ b/modules/renderer/background_source.js @@ -6,13 +6,16 @@ import { geoArea as d3_geoArea } from 'd3-geo'; import { t } from '../util/locale'; import { geoExtent, geoPolygonIntersectsPolygon } from '../geo'; import { jsonpRequest } from '../util/jsonp_request'; +import { utilDetect } from '../util/detect'; function localeDateString(s) { if (!s) return null; + var detected = utilDetect(); + var options = { day: 'numeric', month: 'short', year: 'numeric' }; var d = new Date(s); if (isNaN(d.getTime())) return null; - return d.toLocaleDateString(); + return d.toLocaleDateString(detected.locale, options); } function vintageRange(vintage) { @@ -28,12 +31,12 @@ function vintageRange(vintage) { export function rendererBackgroundSource(data) { - var source = _clone(data), - offset = [0, 0], - name = source.name, - description = source.description, - best = !!source.best, - template = source.template; + var source = _clone(data); + var offset = [0, 0]; + var name = source.name; + var description = source.description; + var best = !!source.best; + var template = source.template; source.scaleExtent = data.scaleExtent || [0, 22]; source.overzoom = data.overzoom !== false; diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index cb06b4edd..23efc1573 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -73,9 +73,15 @@ function maxPageAtZoom(z) { function localeTimestamp(s) { if (!s) return null; + var detected = utilDetect(); + var options = { + day: 'numeric', month: 'short', year: 'numeric', + hour: 'numeric', minute: 'numeric', second: 'numeric', + timeZone: 'UTC' + }; var d = new Date(s); if (isNaN(d.getTime())) return null; - return d.toLocaleString(undefined, { timeZone: 'UTC' }); + return d.toLocaleString(detected.locale, options); } diff --git a/modules/services/openstreetcam.js b/modules/services/openstreetcam.js index 225ecf246..3579e658b 100644 --- a/modules/services/openstreetcam.js +++ b/modules/services/openstreetcam.js @@ -25,6 +25,8 @@ import rbush from 'rbush'; import { d3geoTile as d3_geoTile } from '../lib/d3.geo.tile'; import { geoExtent } from '../geo'; +import { utilDetect } from '../util/detect'; + import { utilQsString, utilRebind, @@ -150,9 +152,11 @@ function loadNextTilePage(which, currZoom, url, tile) { function localeDateString(s) { if (!s) return null; + var detected = utilDetect(); + var options = { day: 'numeric', month: 'short', year: 'numeric' }; var d = new Date(s); if (isNaN(d.getTime())) return null; - return d.toLocaleDateString(); + return d.toLocaleDateString(detected.locale, options); } var features = data.currentPageItems.map(function(item) { diff --git a/modules/ui/panels/background.js b/modules/ui/panels/background.js index dc1cc9ccf..5f869405a 100644 --- a/modules/ui/panels/background.js +++ b/modules/ui/panels/background.js @@ -46,7 +46,7 @@ export function uiPanelBackground(context) { .append('li') .attr('class', 'background-info-list-' + k) .classed('hide', !metadata[k]) - .text(t('info_panels.background.' + k) + ': ') + .text(t('info_panels.background.' + k) + ':') .append('span') .attr('class', 'background-info-span-' + k) .text(metadata[k]); diff --git a/modules/ui/panels/history.js b/modules/ui/panels/history.js index 99196b42d..b665fe5f9 100644 --- a/modules/ui/panels/history.js +++ b/modules/ui/panels/history.js @@ -2,6 +2,7 @@ import _filter from 'lodash-es/filter'; import { t } from '../../util/locale'; import { svgIcon } from '../../svg'; +import { utilDetect } from '../../util/detect'; export function uiPanelHistory(context) { @@ -9,11 +10,14 @@ export function uiPanelHistory(context) { function displayTimestamp(entity) { if (!entity.timestamp) return t('info_panels.history.unknown'); - + var detected = utilDetect(); + var options = { + day: 'numeric', month: 'short', year: 'numeric', + hour: 'numeric', minute: 'numeric', second: 'numeric' + }; var d = new Date(entity.timestamp); if (isNaN(d.getTime())) return t('info_panels.history.unknown'); - - return d.toLocaleString(); + return d.toLocaleString(detected.locale, options); } @@ -113,20 +117,24 @@ export function uiPanelHistory(context) { list .append('li') - .text(t('info_panels.history.version') + ': ' + entity.version); + .text(t('info_panels.history.version') + ':') + .append('span') + .text(entity.version); list .append('li') - .text(t('info_panels.history.last_edit') + ': ' + displayTimestamp(entity)); + .text(t('info_panels.history.last_edit') + ':') + .append('span') + .text(displayTimestamp(entity)); list .append('li') - .text(t('info_panels.history.edited_by') + ': ') + .text(t('info_panels.history.edited_by') + ':') .call(displayUser, entity); list .append('li') - .text(t('info_panels.history.changeset') + ': ') + .text(t('info_panels.history.changeset') + ':') .call(displayChangeset, entity); if (osm) { diff --git a/modules/ui/panels/measurement.js b/modules/ui/panels/measurement.js index 36737f4d4..7de2a601d 100644 --- a/modules/ui/panels/measurement.js +++ b/modules/ui/panels/measurement.js @@ -113,11 +113,11 @@ export function uiPanelMeasurement(context) { function redraw(selection) { - var resolver = context.graph(), - selected = _filter(context.selectedIDs(), function(e) { return context.hasEntity(e); }), - singular = selected.length === 1 ? selected[0] : null, - extent = geoExtent(), - entity; + var resolver = context.graph(); + var selected = _filter(context.selectedIDs(), function(e) { return context.hasEntity(e); }); + var singular = selected.length === 1 ? selected[0] : null; + var extent = geoExtent(); + var entity; selection.html(''); @@ -143,7 +143,9 @@ export function uiPanelMeasurement(context) { if (!singular) { list .append('li') - .text(t('info_panels.measurement.center') + ': ' + + .text(t('info_panels.measurement.center') + ':') + .append('span') + .text( center[1].toFixed(OSM_PRECISION) + ', ' + center[0].toFixed(OSM_PRECISION) ); return; @@ -162,23 +164,32 @@ export function uiPanelMeasurement(context) { list .append('li') - .text(t('info_panels.measurement.geometry') + ': ' + - (closed ? t('info_panels.measurement.closed') + ' ' : '') + t('geometry.' + geometry) ); + .text(t('info_panels.measurement.geometry') + ':') + .append('span') + .text( + (closed ? t('info_panels.measurement.closed') + ' ' : '') + t('geometry.' + geometry) + ); if (closed) { var area = steradiansToSqmeters(entity.area(resolver)); list .append('li') - .text(t('info_panels.measurement.area') + ': ' + displayArea(area)); + .text(t('info_panels.measurement.area') + ':') + .append('span') + .text(displayArea(area)); } list .append('li') - .text(lengthLabel + ': ' + displayLength(length)); + .text(lengthLabel + ':') + .append('span') + .text(displayLength(length)); list .append('li') - .text(t('info_panels.measurement.centroid') + ': ' + + .text(t('info_panels.measurement.centroid') + ':') + .append('span') + .text( centroid[1].toFixed(OSM_PRECISION) + ', ' + centroid[0].toFixed(OSM_PRECISION) ); @@ -201,11 +212,15 @@ export function uiPanelMeasurement(context) { list .append('li') - .text(t('info_panels.measurement.geometry') + ': ' + t('geometry.' + geometry)); + .text(t('info_panels.measurement.geometry') + ':') + .append('span') + .text(t('geometry.' + geometry)); list .append('li') - .text(centerLabel + ': ' + + .text(centerLabel + ':') + .append('span') + .text( center[1].toFixed(OSM_PRECISION) + ', ' + center[0].toFixed(OSM_PRECISION) ); } From 6cfe7a2e7195910e2ee9b8774402507bc4ebde3f Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 6 Dec 2017 20:48:21 -0500 Subject: [PATCH 148/159] When reversing a way, reverse `traffic_signals:direction` on child nodes (closes #4595) --- modules/actions/reverse.js | 6 ++-- test/spec/actions/reverse.js | 62 ++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/modules/actions/reverse.js b/modules/actions/reverse.js index ef1c63c29..051f3e64b 100644 --- a/modules/actions/reverse.js +++ b/modules/actions/reverse.js @@ -29,8 +29,8 @@ import _transform from 'lodash-es/transform'; in order to ensure associated nodes (eg a Stop Sign) is also reversed Node Keys: - direction=forward ⟺ direction=backward - direction=left ⟺ direction=right + *direction=forward ⟺ *direction=backward + *direction=left ⟺ *direction=right *:forward=* ⟺ *:backward=* *:left=* ⟺ *:right=* @@ -87,7 +87,7 @@ export function actionReverse(wayId, options) { // Update the direction based tags as appropriate then return an updated node return node.update({tags: _transform(node.tags, function(acc, tagValue, tagKey) { // See if this is a direction tag and reverse (or use existing value if not recognised) - if (tagKey === 'direction') { + if (tagKey.match(/direction$/) !== null) { acc[tagKey] = {forward: 'backward', backward: 'forward', left: 'right', right: 'left'}[tagValue] || tagValue; } else { // Use the reverseKey method to cater for situations such as traffic_sign:forward=stop diff --git a/test/spec/actions/reverse.js b/test/spec/actions/reverse.js index 8e6d4a204..7e99b9a44 100644 --- a/test/spec/actions/reverse.js +++ b/test/spec/actions/reverse.js @@ -310,4 +310,66 @@ describe('iD.actionReverse', function () { expect(target.tags['traffic_sign:left']).to.eql('stop'); }); + // For issue #4595 + it('reverses the direction of a forward facing traffic_signals on the way', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'traffic_signals:direction': 'forward', 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.eql('backward'); + }); + + it('reverses the direction of a backward facing traffic_signals on the way', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'traffic_signals:direction': 'backward', 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.eql('forward'); + }); + + it('reverses the direction of a left facing traffic_signals on the way', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'traffic_signals:direction': 'left', 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.eql('right'); + }); + + it('reverses the direction of a right facing traffic_signals on the way', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'traffic_signals:direction': 'right', 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.eql('left'); + }); + + it('does not assign a direction to a directionless traffic_signals on the way during a reverse', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.be.undefined; + }); + + it('ignores directions other than forward or backward on attached traffic_signals during a reverse', function () { + var node1 = iD.Node(); + var node2 = iD.Node({tags: { 'traffic_signals:direction': 'empty', 'highway': 'traffic_signals' }}); + var node3 = iD.Node(); + var way = iD.Way({nodes: [node1.id, node2.id, node3.id]}); + var graph = iD.actionReverse(way.id)(iD.Graph([node1, node2, node3, way])); + var target = graph.entity(node2.id); + expect(target.tags['traffic_signals:direction']).to.eql('empty'); + }); + + }); From 4a2fa07ebf51870c6c59da8474b17a3c21293c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mie?= Date: Wed, 6 Dec 2017 21:52:24 +0100 Subject: [PATCH 149/159] add a field preset for the brewery tag --- data/presets.yaml | 3 + data/presets/fields.json | 5 + data/presets/fields/brewery.json | 5 + data/presets/presets.json | 189 ++++++++++++------- data/presets/presets/amenity/bar.json | 3 +- data/presets/presets/amenity/biergarten.json | 3 +- data/presets/presets/amenity/pub.json | 3 +- dist/locales/en.json | 3 + 8 files changed, 148 insertions(+), 66 deletions(-) create mode 100644 data/presets/fields/brewery.json diff --git a/data/presets.yaml b/data/presets.yaml index c7ee602ec..774db7700 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -250,6 +250,9 @@ en: brand: # brand=* label: Brand + brewery: + # brewery=* + label: Draft Beers bridge: # bridge=* label: Type diff --git a/data/presets/fields.json b/data/presets/fields.json index d3c833ac9..803f6ca39 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -331,6 +331,11 @@ "type": "text", "label": "Brand" }, + "brewery": { + "key": "brewery", + "type": "semiCombo", + "label": "Draft Beers" + }, "bridge": { "key": "bridge", "type": "typeCombo", diff --git a/data/presets/fields/brewery.json b/data/presets/fields/brewery.json new file mode 100644 index 000000000..cb0dc53eb --- /dev/null +++ b/data/presets/fields/brewery.json @@ -0,0 +1,5 @@ +{ + "key": "brewery", + "type": "semiCombo", + "label": "Draft Beers" +} diff --git a/data/presets/presets.json b/data/presets/presets.json index 8cc93e1d7..139bfbd16 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -852,7 +852,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", @@ -979,7 +980,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", @@ -2449,7 +2451,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", @@ -30327,7 +30330,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -30349,7 +30353,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -30371,7 +30376,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -30393,7 +30399,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -47956,7 +47963,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -47977,7 +47985,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -47998,7 +48007,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48019,7 +48029,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48040,7 +48051,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48061,7 +48073,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48082,7 +48095,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48103,7 +48117,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48124,7 +48139,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48145,7 +48161,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48166,7 +48183,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48187,7 +48205,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48208,7 +48227,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48229,7 +48249,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48250,7 +48271,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48271,7 +48293,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48292,7 +48315,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48313,7 +48337,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48334,7 +48359,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48355,7 +48381,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48376,7 +48403,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48397,7 +48425,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48418,7 +48447,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48439,7 +48469,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48460,7 +48491,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48481,7 +48513,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48502,7 +48535,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48523,7 +48557,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48544,7 +48579,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48565,7 +48601,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48586,7 +48623,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48607,7 +48645,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48628,7 +48667,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48649,7 +48689,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48670,7 +48711,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48691,7 +48733,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48712,7 +48755,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48733,7 +48777,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48754,7 +48799,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48775,7 +48821,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48796,7 +48843,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48817,7 +48865,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48838,7 +48887,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48859,7 +48909,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48880,7 +48931,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48901,7 +48953,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48922,7 +48975,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48943,7 +48997,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48964,7 +49019,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -48985,7 +49041,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49006,7 +49063,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49027,7 +49085,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49048,7 +49107,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49069,7 +49129,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49090,7 +49151,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, @@ -49111,7 +49173,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "suggestion": true }, diff --git a/data/presets/presets/amenity/bar.json b/data/presets/presets/amenity/bar.json index 02ca5c24b..80911f2e5 100644 --- a/data/presets/presets/amenity/bar.json +++ b/data/presets/presets/amenity/bar.json @@ -7,7 +7,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", diff --git a/data/presets/presets/amenity/biergarten.json b/data/presets/presets/amenity/biergarten.json index 334edbaea..e50e8d318 100644 --- a/data/presets/presets/amenity/biergarten.json +++ b/data/presets/presets/amenity/biergarten.json @@ -6,7 +6,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", diff --git a/data/presets/presets/amenity/pub.json b/data/presets/presets/amenity/pub.json index 102409d68..935807ae1 100644 --- a/data/presets/presets/amenity/pub.json +++ b/data/presets/presets/amenity/pub.json @@ -6,7 +6,8 @@ "building_area", "opening_hours", "smoking", - "outdoor_seating" + "outdoor_seating", + "brewery" ], "geometry": [ "point", diff --git a/dist/locales/en.json b/dist/locales/en.json index cf8eb15ba..504250956 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1462,6 +1462,9 @@ "brand": { "label": "Brand" }, + "brewery": { + "label": "Draft Beers" + }, "bridge": { "label": "Type", "placeholder": "Default" From 4b08ceba90e67ae10f35d67d157c721e1d0a5799 Mon Sep 17 00:00:00 2001 From: Sean Date: Sun, 17 Dec 2017 08:29:59 -0600 Subject: [PATCH 150/159] Removed extra 'be' from en.json, en-GB.json, and core.yaml --- data/core.yaml | 2 +- dist/locales/en-GB.json | 4 ++-- dist/locales/en.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/core.yaml b/data/core.yaml index 851e7dd1f..9999cdc98 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -877,7 +877,7 @@ en: play: "Now that you know how to create and edit points, try creating a few more points for practice! **When you are ready to continue to the next chapter, click '{next}'.**" areas: title: "Areas" - add_playground: "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can be also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**" + add_playground: "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**" start_playground: "Let's add this playground to the map by drawing an area. Areas are drawn by placing *nodes* along the outer edge of the feature. **Click or press spacebar to place a starting node on one of the corners of the playground.**" continue_playground: "Continue drawing the area by placing more nodes along the playground's edge. It is OK to connect the area to the existing walking paths.{br}Tip: You can hold down the '{alt}' key to prevent nodes from connecting to other features. **Continue drawing an area for the playground.**" finish_playground: "Finish the area by pressing enter, or clicking again on either the first or last node. **Finish drawing an area for the playground.**" diff --git a/dist/locales/en-GB.json b/dist/locales/en-GB.json index 2b8370eb7..d74a64fdb 100644 --- a/dist/locales/en-GB.json +++ b/dist/locales/en-GB.json @@ -866,7 +866,7 @@ }, "areas": { "title": "Areas", - "add_playground": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can be also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**", + "add_playground": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**", "start_playground": "Let's add this playground to the map by drawing an area. Areas are drawn by placing *nodes* along the outer edge of the feature. **Click or press spacebar to place a starting node on one of the corners of the playground.**", "continue_playground": "Continue drawing the area by placing more nodes along the playground's edge. It is OK to connect the area to the existing walking paths.{br}Tip: You can hold down the '{alt}' key to prevent nodes from connecting to other features. **Continue drawing an area for the playground.**", "finish_playground": "Finish the area by pressing enter, or clicking again on either the first or last node. **Finish drawing an area for the playground.**", @@ -5232,4 +5232,4 @@ } } } -} \ No newline at end of file +} diff --git a/dist/locales/en.json b/dist/locales/en.json index cf8eb15ba..872c18270 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1021,7 +1021,7 @@ }, "areas": { "title": "Areas", - "add_playground": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can be also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**", + "add_playground": "*Areas* are used to show the boundaries of features like lakes, buildings, and residential areas.{br}They can also be used for more detailed mapping of many features you might normally map as points. **Click the {button} Area button to add a new area.**", "start_playground": "Let's add this playground to the map by drawing an area. Areas are drawn by placing *nodes* along the outer edge of the feature. **Click or press spacebar to place a starting node on one of the corners of the playground.**", "continue_playground": "Continue drawing the area by placing more nodes along the playground's edge. It is OK to connect the area to the existing walking paths.{br}Tip: You can hold down the '{alt}' key to prevent nodes from connecting to other features. **Continue drawing an area for the playground.**", "finish_playground": "Finish the area by pressing enter, or clicking again on either the first or last node. **Finish drawing an area for the playground.**", @@ -6424,4 +6424,4 @@ } } } -} \ No newline at end of file +} From 81910d4f276a4b4132d626ec5e29f10dfdda77c5 Mon Sep 17 00:00:00 2001 From: ajlomagno Date: Tue, 26 Dec 2017 15:12:11 -0500 Subject: [PATCH 151/159] Fixed click counter persisting --- modules/ui/curtain.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ui/curtain.js b/modules/ui/curtain.js index ba671bfdd..7e08341d2 100644 --- a/modules/ui/curtain.js +++ b/modules/ui/curtain.js @@ -221,6 +221,9 @@ export function uiCurtain() { } curtain.cut(box, options.duration); + + //remove any leftover .counter elements + tooltip.selectAll('.counter').remove(); return tooltip; }; From 4622b1d4894c35cfeab6dac565e1b5ce66c5a9ac Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 21 Dec 2017 09:37:40 +0000 Subject: [PATCH 152/159] fix(package): update rbush to version 2.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f26844ac9..75e0279de 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "marked": "0.3.7", "node-diff3": "bhousel/node-diff3.git#v0.1.0", "osm-auth": "1.0.2", - "rbush": "2.0.1", + "rbush": "2.0.2", "wmf-sitematrix": "0.1.4" }, "devDependencies": { From 052d2a39bbd7d980b2a08bb8246c012acb40219e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 23 Dec 2017 18:07:50 +0000 Subject: [PATCH 153/159] fix(package): update marked to version 0.3.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 75e0279de..6c7f0a2ad 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@mapbox/togeojson": "0.16.0", "diacritics": "1.3.0", "lodash-es": "4.17.4", - "marked": "0.3.7", + "marked": "0.3.9", "node-diff3": "bhousel/node-diff3.git#v0.1.0", "osm-auth": "1.0.2", "rbush": "2.0.2", From e430be407e419995aa1636d8f941e48a3e98a5d4 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 8 Dec 2017 12:04:01 +0000 Subject: [PATCH 154/159] chore(package): update mapillary-js to version 2.10.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6c7f0a2ad..cef9b68fb 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "js-yaml": "^3.9.0", "json-stable-stringify": "^1.0.1", "jsonschema": "^1.1.0", - "mapillary-js": "2.10.0", + "mapillary-js": "2.10.1", "minimist": "^1.2.0", "mocha": "^4.0.0", "mocha-phantomjs-core": "^2.1.0", From c1d1c6303339280633f3621a76feaf8bd6f3adf5 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 26 Dec 2017 22:40:59 -0500 Subject: [PATCH 155/159] Update d3 to v4.12.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cef9b68fb..223f808e8 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "chai": "^4.1.0", "colors": "^1.1.2", "concat-files": "^0.1.1", - "d3": "4.12.0", + "d3": "4.12.2", "ecstatic": "^3.0.0", "editor-layer-index": "osmlab/editor-layer-index.git#gh-pages", "eslint": "^4.3.0", From 6d9e028a562b230751e363cdabc69b45536ddf2d Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 26 Dec 2017 22:45:12 -0500 Subject: [PATCH 156/159] Update rollup to v0.53.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 223f808e8..7fbecbb29 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "npm-run-all": "^4.0.0", "phantomjs-prebuilt": "~2.1.11", "request": "^2.81.0", - "rollup": "0.52.1", + "rollup": "0.53.0", "rollup-plugin-commonjs": "8.2.6", "rollup-plugin-includepaths": "0.2.2", "rollup-plugin-json": "2.2.0", From 5d3df2596066fbfe60897589aa5ba24af0b30033 Mon Sep 17 00:00:00 2001 From: ajlomagno Date: Wed, 27 Dec 2017 13:19:22 -0500 Subject: [PATCH 157/159] Moved cleanuo code to exit function in welcome.js --- modules/ui/curtain.js | 3 --- modules/ui/intro/welcome.js | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/ui/curtain.js b/modules/ui/curtain.js index 7e08341d2..ba671bfdd 100644 --- a/modules/ui/curtain.js +++ b/modules/ui/curtain.js @@ -221,9 +221,6 @@ export function uiCurtain() { } curtain.cut(box, options.duration); - - //remove any leftover .counter elements - tooltip.selectAll('.counter').remove(); return tooltip; }; diff --git a/modules/ui/intro/welcome.js b/modules/ui/intro/welcome.js index f54c81bc4..8187998e7 100644 --- a/modules/ui/intro/welcome.js +++ b/modules/ui/intro/welcome.js @@ -137,7 +137,7 @@ export function uiIntroWelcome(context, reveal) { ); } - + chapter.enter = function() { welcome(); }; @@ -145,6 +145,9 @@ export function uiIntroWelcome(context, reveal) { chapter.exit = function() { listener.off(); + var tooltip = d3_select('.curtain-tooltip.intro-mouse') + .selectAll('.counter') + .remove(); }; From d02a880d8ad929eeefd9d8a14a48b4e25efbdef7 Mon Sep 17 00:00:00 2001 From: Brian Davidson Date: Fri, 29 Dec 2017 18:58:49 -0500 Subject: [PATCH 158/159] Lower the z-index --- css/60_photos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/60_photos.css b/css/60_photos.css index a71255e89..2bfc92709 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -14,7 +14,7 @@ position: absolute; right: 0; top: 0; - z-index: 500; + z-index: 10; } .photo-wrapper, From 012f0330957074eecbbac6da466681b1e8537472 Mon Sep 17 00:00:00 2001 From: Brian Davidson Date: Fri, 29 Dec 2017 19:02:29 -0500 Subject: [PATCH 159/159] Make z-index one smaller than .shaded class --- css/60_photos.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/60_photos.css b/css/60_photos.css index 2bfc92709..3d2d8670f 100644 --- a/css/60_photos.css +++ b/css/60_photos.css @@ -14,7 +14,7 @@ position: absolute; right: 0; top: 0; - z-index: 10; + z-index: 48; } .photo-wrapper,