Update to iD v1.2.1
authorJohn Firebaugh <john.firebaugh@gmail.com>
Tue, 1 Oct 2013 00:19:36 +0000 (17:19 -0700)
committerTom Hughes <tom@compton.nu>
Tue, 1 Oct 2013 18:35:12 +0000 (19:35 +0100)
16 files changed:
vendor/assets/iD/iD.js
vendor/assets/iD/iD/locales/bs.json
vendor/assets/iD/iD/locales/ca.json
vendor/assets/iD/iD/locales/cs.json
vendor/assets/iD/iD/locales/de.json
vendor/assets/iD/iD/locales/en.json
vendor/assets/iD/iD/locales/fi.json
vendor/assets/iD/iD/locales/fr.json
vendor/assets/iD/iD/locales/hr.json
vendor/assets/iD/iD/locales/lt.json
vendor/assets/iD/iD/locales/pl.json
vendor/assets/iD/iD/locales/ru.json
vendor/assets/iD/iD/locales/sk.json
vendor/assets/iD/iD/locales/uk.json
vendor/assets/iD/iD/locales/vi.json
vendor/assets/iD/iD/locales/zh-TW.json

index d4a8ffdef75391bbaeba92564382d6c41c6a17b2..6c0845b7ce7e703bc5fbb6006fd1bbea9cdf1330 100644 (file)
@@ -5665,7 +5665,7 @@ d3.combobox = function() {
 
     var fetcher = function(val, cb) {
         cb(data.filter(function(d) {
-            return d.title
+            return d.value
                 .toString()
                 .toLowerCase()
                 .indexOf(val.toLowerCase()) !== -1;
@@ -15199,11 +15199,6 @@ window.iD = function () {
 
     /* History */
     context.graph = history.graph;
-    context.perform = history.perform;
-    context.replace = history.replace;
-    context.pop = history.pop;
-    context.undo = history.undo;
-    context.redo = history.redo;
     context.changes = history.changes;
     context.intersects = history.intersects;
 
@@ -15227,6 +15222,23 @@ window.iD = function () {
         return context;
     };
 
+    // Debounce save, since it's a synchronous localStorage write,
+    // and history changes can happen frequently (e.g. when dragging).
+    var debouncedSave = _.debounce(context.save, 350);
+    function withDebouncedSave(fn) {
+        return function() {
+            var result = fn.apply(history, arguments);
+            debouncedSave();
+            return result;
+        }
+    }
+
+    context.perform = withDebouncedSave(history.perform);
+    context.replace = withDebouncedSave(history.replace);
+    context.pop = withDebouncedSave(history.pop);
+    context.undo = withDebouncedSave(history.undo);
+    context.redo = withDebouncedSave(history.redo);
+
     /* Graph */
     context.hasEntity = function(id) {
         return history.graph().hasEntity(id);
@@ -15376,7 +15388,7 @@ window.iD = function () {
     return d3.rebind(context, dispatch, 'on');
 };
 
-iD.version = '1.2.0';
+iD.version = '1.2.1';
 
 (function() {
     var detected = {};
@@ -15529,7 +15541,12 @@ iD.taginfo = function() {
     taginfo.docs = function(parameters, callback) {
         var debounce = parameters.debounce;
         parameters = clean(setSort(parameters));
-        request(endpoint + (parameters.value ? 'tag/wiki_pages?' : 'key/wiki_pages?') +
+
+        var path = 'key/wiki_pages?';
+        if (parameters.value) path = 'tag/wiki_pages?';
+        else if (parameters.rtype) path = 'relation/wiki_pages?';
+
+        request(endpoint + path +
             iD.util.qsString(parameters), debounce, callback);
     };
 
@@ -15750,6 +15767,13 @@ iD.util.asyncMap = function(inputs, func, callback) {
         });
     });
 };
+
+// wraps an index to an interval [0..length-1]
+iD.util.wrap = function(index, length) {
+    if (index < 0)
+        index += Math.ceil(-index/length)*length;
+    return index % length;
+};
 iD.geo = {};
 
 iD.geo.roundCoords = function(c) {
@@ -15762,17 +15786,23 @@ iD.geo.interp = function(p1, p2, t) {
 };
 
 // http://jsperf.com/id-dist-optimization
-iD.geo.dist = function(a, b) {
+iD.geo.euclideanDistance = function(a, b) {
     var x = a[0] - b[0], y = a[1] - b[1];
     return Math.sqrt((x * x) + (y * y));
 };
+// Equirectangular approximation of spherical distances on Earth
+iD.geo.sphericalDistance = function(a, b) {
+    var x = Math.cos(a[1]*Math.PI/180) * (a[0] - b[0]),
+        y = a[1] - b[1];
+    return 6.3710E6 * Math.sqrt((x * x) + (y * y)) * Math.PI/180;
+};
 
 // Choose the edge with the minimal distance from `point` to its orthogonal
 // projection onto that edge, if such a projection exists, or the distance to
 // the closest vertex on that edge. Returns an object with the `index` of the
 // chosen edge, the chosen `loc` on that edge, and the `distance` to to it.
 iD.geo.chooseEdge = function(nodes, point, projection) {
-    var dist = iD.geo.dist,
+    var dist = iD.geo.euclideanDistance,
         points = nodes.map(function(n) { return projection(n.loc); }),
         min = Infinity,
         idx, loc;
@@ -16215,63 +16245,105 @@ iD.actions.ChangeTags = function(entityId, tags) {
         return graph.replace(entity.update({tags: tags}));
     };
 };
-iD.actions.Circularize = function(wayId, projection, count) {
-    count = count || 12;
-
-    function closestIndex(nodes, loc) {
-        var idx, min = Infinity, dist;
-        for (var i = 0; i < nodes.length; i++) {
-            dist = iD.geo.dist(nodes[i].loc, loc);
-            if (dist < min) {
-                min = dist;
-                idx = i;
-            }
-        }
-        return idx;
-    }
+iD.actions.Circularize = function(wayId, projection, maxAngle) {
+    maxAngle = (maxAngle || 20) * Math.PI / 180;
 
     var action = function(graph) {
         var way = graph.entity(wayId),
             nodes = _.uniq(graph.childNodes(way)),
+            keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length != 1; }),
             points = nodes.map(function(n) { return projection(n.loc); }),
+            keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
             centroid = d3.geom.polygon(points).centroid(),
-            radius = d3.median(points, function(p) {
-                return iD.geo.dist(centroid, p);
-            }),
-            ids = [],
-            sign = d3.geom.polygon(points).area() > 0 ? -1 : 1;
-
-        for (var i = 0; i < count; i++) {
-            var node,
+            radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
+            sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
+            ids;
+
+        // we need atleast two key nodes for the algorithm to work
+        if (!keyNodes.length) {
+            keyNodes = [nodes[0]];
+            keyPoints = [points[0]];
+        }
+
+        if (keyNodes.length == 1) {
+            var index = nodes.indexOf(keyNodes[0]),
+                oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length);
+
+            keyNodes.push(nodes[oppositeIndex]);
+            keyPoints.push(points[oppositeIndex]);
+        }
+
+        // key points and nodes are those connected to the ways,
+        // they are projected onto the circle, inbetween nodes are moved
+        // to constant internals between key nodes, extra inbetween nodes are
+        // added if necessary.
+        for (var i = 0; i < keyPoints.length; i++) {
+            var nextKeyNodeIndex = (i + 1) % keyNodes.length,
+                startNodeIndex = nodes.indexOf(keyNodes[i]),
+                endNodeIndex = nodes.indexOf(keyNodes[nextKeyNodeIndex]),
+                numberNewPoints = -1,
+                indexRange = endNodeIndex - startNodeIndex,
+                distance, totalAngle, eachAngle, startAngle, endAngle,
+                angle, loc, node, j;
+
+            if (indexRange < 0) {
+                indexRange += nodes.length;
+            }
+
+            // position this key node
+            distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
+            keyPoints[i] = [
+                centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
+                centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
+            graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i])));
+
+            // figure out the between delta angle we want to match to
+            startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]);
+            endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
+            totalAngle = endAngle - startAngle;
+
+            // detects looping around -pi/pi
+            if (totalAngle*sign > 0) {
+                totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
+            }
+
+            do {
+                numberNewPoints++;
+                eachAngle = totalAngle / (indexRange + numberNewPoints);
+            } while (Math.abs(eachAngle) > maxAngle);
+
+            // move existing points
+            for (j = 1; j < indexRange; j++) {
+                angle = startAngle + j * eachAngle;
                 loc = projection.invert([
-                    centroid[0] + Math.cos(sign * (i / 12) * Math.PI * 2) * radius,
-                    centroid[1] + Math.sin(sign * (i / 12) * Math.PI * 2) * radius]);
+                    centroid[0] + Math.cos(angle)*radius,
+                    centroid[1] + Math.sin(angle)*radius]);
 
-            if (nodes.length) {
-                var idx = closestIndex(nodes, loc);
-                node = nodes[idx];
-                nodes.splice(idx, 1);
-            } else {
-                node = iD.Node();
+                node = nodes[(j + startNodeIndex) % nodes.length].move(loc);
+                graph = graph.replace(node);
             }
 
-            ids.push(node.id);
-            graph = graph.replace(node.move(loc));
+            // add new inbetween nodes if necessary
+            for (j = 0; j < numberNewPoints; j++) {
+                angle = startAngle + (indexRange + j) * eachAngle;
+                loc = projection.invert([
+                    centroid[0] + Math.cos(angle) * radius,
+                    centroid[1] + Math.sin(angle) * radius]);
+
+                node = iD.Node({loc: loc});
+                graph = graph.replace(node);
+
+                nodes.splice(endNodeIndex + j, 0, node);
+            }
         }
 
+        // update the way to have all the new nodes
+        ids = nodes.map(function(n) { return n.id; });
         ids.push(ids[0]);
+
         way = way.update({nodes: ids});
         graph = graph.replace(way);
 
-        for (i = 0; i < nodes.length; i++) {
-            graph.parentWays(nodes[i]).forEach(function(parent) {
-                graph = graph.replace(parent.replaceNode(nodes[i].id,
-                    ids[closestIndex(graph.childNodes(way), nodes[i].loc)]));
-            });
-
-            graph = iD.actions.DeleteNode(nodes[i].id)(graph);
-        }
-
         return graph;
     };
 
@@ -16865,20 +16937,24 @@ iD.actions.Noop = function() {
  */
 
 iD.actions.Orthogonalize = function(wayId, projection) {
+    var threshold = 7, // degrees within right or straight to alter
+        lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180),
+        upperThreshold = Math.cos(threshold * Math.PI / 180);
+
     var action = function(graph) {
         var way = graph.entity(wayId),
             nodes = graph.childNodes(way),
+            points = _.uniq(nodes).map(function(n) { return projection(n.loc); }),
             corner = {i: 0, dotp: 1},
-            points, i, j, score, motions;
+            epsilon = 1e-4,
+            i, j, score, motions;
 
         if (nodes.length === 4) {
-            points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
-
             for (i = 0; i < 1000; i++) {
                 motions = points.map(calcMotion);
                 points[corner.i] = addPoints(points[corner.i],motions[corner.i]);
                 score = corner.dotp;
-                if (score < 1.0e-8) {
+                if (score < epsilon) {
                     break;
                 }
             }
@@ -16886,21 +16962,21 @@ iD.actions.Orthogonalize = function(wayId, projection) {
             graph = graph.replace(graph.entity(nodes[corner.i].id)
                 .move(projection.invert(points[corner.i])));
         } else {
-            var best;
-            points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
-            score = squareness();
+            var best,
+                originalPoints = _.clone(points);
+            score = Infinity;
 
             for (i = 0; i < 1000; i++) {
                 motions = points.map(calcMotion);
                 for (j = 0; j < motions.length; j++) {
                     points[j] = addPoints(points[j],motions[j]);
                 }
-                var newScore = squareness();
+                var newScore = squareness(points);
                 if (newScore < score) {
                     best = _.clone(points);
                     score = newScore;
                 }
-                if (score < 1.0e-8) {
+                if (score < epsilon) {
                     break;
                 }
             }
@@ -16908,8 +16984,28 @@ iD.actions.Orthogonalize = function(wayId, projection) {
             points = best;
 
             for (i = 0; i < points.length; i++) {
-                graph = graph.replace(graph.entity(nodes[i].id)
-                    .move(projection.invert(points[i])));
+                // only move the points that actually moved
+                if (originalPoints[i][0] != points[i][0] || originalPoints[i][1] != points[i][1]) {
+                    graph = graph.replace(graph.entity(nodes[i].id)
+                        .move(projection.invert(points[i])));
+                }
+            }
+
+            // remove empty nodes on straight sections
+            for (i = 0; i < points.length; i++) {
+                var node = nodes[i];
+
+                if (graph.parentWays(node).length > 1 || 
+                    graph.parentRelations(node).length || 
+                    node.hasInterestingTags()) {
+
+                    continue;
+                }
+
+                var dotp = normalizedDotProduct(i, points);
+                if (dotp < -1 + epsilon) {
+                    graph = iD.actions.DeleteNode(nodes[i].id)(graph);
+                }
             }
         }
 
@@ -16919,78 +17015,91 @@ iD.actions.Orthogonalize = function(wayId, projection) {
             var a = array[(i - 1 + array.length) % array.length],
                 c = array[(i + 1) % array.length],
                 p = subtractPoints(a, b),
-                q = subtractPoints(c, b);
+                q = subtractPoints(c, b),
+                scale, dotp;
 
-            var scale = 2*Math.min(iD.geo.dist(p, [0, 0]), iD.geo.dist(q, [0, 0]));
+            scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0]));
             p = normalizePoint(p, 1.0);
             q = normalizePoint(q, 1.0);
 
-            var dotp = p[0] * q[0] + p[1] * q[1];
+            dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]);
 
             // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270).
             if (array.length > 3) {
                 if (dotp < -0.707106781186547) {
                     dotp += 1.0;
                 }
-            } else if (Math.abs(dotp) < corner.dotp) {
+            } else if (dotp && Math.abs(dotp) < corner.dotp) {
                 corner.i = i;
                 corner.dotp = Math.abs(dotp);
             }
 
             return normalizePoint(addPoints(p, q), 0.1 * dotp * scale);
         }
+    };
 
-        function squareness() {
-            var g = 0.0;
-            for (var i = 1; i < points.length - 1; i++) {
-                var score = scoreOfPoints(points[i - 1], points[i], points[i + 1]);
-                g += score;
-            }
-            var startScore = scoreOfPoints(points[points.length - 1], points[0], points[1]);
-            var endScore = scoreOfPoints(points[points.length - 2], points[points.length - 1], points[0]);
-            g += startScore;
-            g += endScore;
-            return g;
-        }
+    function squareness(points) {
+        return points.reduce(function(sum, val, i, array) {
+            var dotp = normalizedDotProduct(i, array);
 
-        function scoreOfPoints(a, b, c) {
-            var p = subtractPoints(a, b),
-                q = subtractPoints(c, b);
+            dotp = filterDotProduct(dotp);
+            return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
+        }, 0);
+    }
 
-            p = normalizePoint(p, 1.0);
-            q = normalizePoint(q, 1.0);
+    function normalizedDotProduct(i, points) {
+        var a = points[(i - 1 + points.length) % points.length],
+            b = points[i],
+            c = points[(i + 1) % points.length],
+            p = subtractPoints(a, b),
+            q = subtractPoints(c, b);
 
-            var dotp = p[0] * q[0] + p[1] * q[1];
-            // score is constructed so that +1, -1 and 0 are all scored 0, any other angle
-            // is scored higher.
-            return 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
-        }
+        p = normalizePoint(p, 1.0);
+        q = normalizePoint(q, 1.0);
 
-        function subtractPoints(a, b) {
-            return [a[0] - b[0], a[1] - b[1]];
-        }
+        return p[0] * q[0] + p[1] * q[1];
+    }
 
-        function addPoints(a, b) {
-            return [a[0] + b[0], a[1] + b[1]];
+    function subtractPoints(a, b) {
+        return [a[0] - b[0], a[1] - b[1]];
+    }
+
+    function addPoints(a, b) {
+        return [a[0] + b[0], a[1] + b[1]];
+    }
+
+    function normalizePoint(point, scale) {
+        var vector = [0, 0];
+        var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
+        if (length !== 0) {
+            vector[0] = point[0] / length;
+            vector[1] = point[1] / length;
         }
 
-        function normalizePoint(point, scale) {
-            var vector = [0, 0];
-            var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
-            if (length !== 0) {
-                vector[0] = point[0] / length;
-                vector[1] = point[1] / length;
-            }
+        vector[0] *= scale;
+        vector[1] *= scale;
 
-            vector[0] *= scale;
-            vector[1] *= scale;
+        return vector;
+    }
 
-            return vector;
+    function filterDotProduct(dotp) {
+        if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) {
+            return dotp;
         }
-    };
+
+        return 0;
+    }
 
     action.disabled = function(graph) {
-        return false;
+        var way = graph.entity(wayId),
+            nodes = graph.childNodes(way),
+            points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
+
+        if (squareness(points)) {
+            return false;
+        }
+
+        return 'not_squarish';
     };
 
     return action;
@@ -17114,19 +17223,70 @@ iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
 iD.actions.Split = function(nodeId, newWayIds) {
     var wayIds;
 
+    // if the way is closed, we need to search for a partner node
+    // to split the way at.
+    //
+    // The following looks for a node that is both far away from
+    // the initial node in terms of way segment length and nearby
+    // in terms of beeline-distance. This assures that areas get
+    // split on the most "natural" points (independent of the number
+    // of nodes).
+    // For example: bone-shaped areas get split across their waist
+    // line, circles across the diameter.
+    function splitArea(nodes, idxA, graph) {
+        var lengths = new Array(nodes.length),
+            length,
+            i,
+            best = 0,
+            idxB;
+
+        function wrap(index) {
+            return iD.util.wrap(index, nodes.length);
+        }
+
+        function dist(nA, nB) {
+            return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc);
+        }
+
+        // calculate lengths
+        length = 0;
+        for (i = wrap(idxA+1); i != idxA; i = wrap(i+1)) {
+            length += dist(nodes[i], nodes[wrap(i-1)]);
+            lengths[i] = length;
+        }
+
+        length = 0;
+        for (i = wrap(idxA-1); i != idxA; i = wrap(i-1)) {
+            length += dist(nodes[i], nodes[wrap(i+1)]);
+            if (length < lengths[i])
+                lengths[i] = length;
+        }
+
+        // determine best opposite node to split
+        for (i = 0; i < nodes.length; i++) {
+            var cost = lengths[i] / dist(nodes[idxA], nodes[i]);
+            if (cost > best) {
+                idxB = i;
+                best = cost;
+            }
+        }
+
+        return idxB;
+    }
+
     function split(graph, wayA, newWayId) {
         var wayB = iD.Way({id: newWayId, tags: wayA.tags}),
             nodesA,
             nodesB,
-            isArea = wayA.isArea();
+            isArea = wayA.isArea(),
+            isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph);
 
         if (wayA.isClosed()) {
             var nodes = wayA.nodes.slice(0, -1),
                 idxA = _.indexOf(nodes, nodeId),
-                idxB = idxA + Math.floor(nodes.length / 2);
+                idxB = splitArea(nodes, idxA, graph);
 
-            if (idxB >= nodes.length) {
-                idxB %= nodes.length;
+            if (idxB < idxA) {
                 nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1));
                 nodesB = nodes.slice(idxB, idxA + 1);
             } else {
@@ -17153,24 +17313,23 @@ iD.actions.Split = function(nodeId, newWayIds) {
                     graph = graph.replace(relation);
                 }
             } else {
-                var role = relation.memberById(wayA.id).role,
-                    last = wayB.last(),
-                    i = relation.memberById(wayA.id).index,
-                    j;
-
-                for (j = 0; j < relation.members.length; j++) {
-                    var entity = graph.hasEntity(relation.members[j].id);
-                    if (entity && entity.type === 'way' && entity.contains(last)) {
-                        break;
-                    }
+                if (relation === isOuter) {
+                    graph = graph.replace(relation.mergeTags(wayA.tags));
+                    graph = graph.replace(wayA.update({tags: {}}));
+                    graph = graph.replace(wayB.update({tags: {}}));
                 }
 
-                relation = relation.addMember({id: wayB.id, type: 'way', role: role}, i <= j ? i + 1 : i);
-                graph = graph.replace(relation);
+                var member = {
+                    id: wayB.id,
+                    type: 'way',
+                    role: relation.memberById(wayA.id).role
+                };
+
+                graph = iD.actions.AddMember(relation.id, member)(graph);
             }
         });
 
-        if (isArea) {
+        if (!isOuter && isArea) {
             var multipolygon = iD.Relation({
                 tags: _.extend({}, wayA.tags, {type: 'multipolygon'}),
                 members: [
@@ -17196,12 +17355,16 @@ iD.actions.Split = function(nodeId, newWayIds) {
 
     action.ways = function(graph) {
         var node = graph.entity(nodeId),
-            parents = graph.parentWays(node);
+            parents = graph.parentWays(node),
+            hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; });
 
         return parents.filter(function(parent) {
             if (wayIds && wayIds.indexOf(parent.id) === -1)
                 return false;
 
+            if (!wayIds && hasLines && parent.geometry(graph) !== 'line')
+                return false;
+
             if (parent.isClosed()) {
                 return true;
             }
@@ -17253,7 +17416,10 @@ iD.actions.Straighten = function(wayId, projection) {
             var node = nodes[i], 
                 point = points[i];
 
-            if (graph.parentWays(node).length > 1 || (node.tags && Object.keys(node.tags).length)) {
+            if (graph.parentWays(node).length > 1 || 
+                graph.parentRelations(node).length || 
+                node.hasInterestingTags()) {
+
                 var u = positionAlongWay(point, startPoint, endPoint),
                     p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
                     p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]),
@@ -17572,8 +17738,8 @@ iD.behavior.Draw = function(context) {
 
         d3.select(window).on('mouseup.draw', function() {
             element.on('mousemove.draw', mousemove);
-            if (iD.geo.dist(pos, point()) < closeTolerance ||
-                (iD.geo.dist(pos, point()) < tolerance &&
+            if (iD.geo.euclideanDistance(pos, point()) < closeTolerance ||
+                (iD.geo.euclideanDistance(pos, point()) < tolerance &&
                 (+new Date() - time) < 500)) {
 
                 // Prevent a quick second click
@@ -18501,8 +18667,6 @@ iD.modes.Browse = function(context) {
         iD.modes.DragNode(context).behavior];
 
     mode.enter = function() {
-        context.save();
-
         behaviors.forEach(function(behavior) {
             context.install(behavior);
         });
@@ -18578,8 +18742,8 @@ iD.modes.DragNode = function(context) {
         return t('operations.move.annotation.' + entity.geometry(context.graph()));
     }
 
-    function connectAnnotation(datum) {
-        return t('operations.connect.annotation.' + datum.geometry(context.graph()));
+    function connectAnnotation(entity) {
+        return t('operations.connect.annotation.' + entity.geometry(context.graph()));
     }
 
     function origin(entity) {
@@ -18648,7 +18812,7 @@ iD.modes.DragNode = function(context) {
 
         context.replace(
             iD.actions.MoveNode(entity.id, loc),
-            t('operations.move.annotation.' + entity.geometry(context.graph())));
+            moveAnnotation(entity));
     }
 
     function end(entity) {
@@ -19186,8 +19350,6 @@ iD.modes.Select = function(context, selectedIDs) {
     };
 
     mode.enter = function() {
-        context.save();
-
         behaviors.forEach(function(behavior) {
             context.install(behavior);
         });
@@ -19431,8 +19593,8 @@ iD.operations.Delete = function(selectedIDs, context) {
                 } else if (i === nodes.length - 1) {
                     i--;
                 } else {
-                    var a = iD.geo.dist(entity.loc, context.entity(nodes[i - 1]).loc),
-                        b = iD.geo.dist(entity.loc, context.entity(nodes[i + 1]).loc);
+                    var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc),
+                        b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc);
                     i = a < b ? i - 1 : i + 1;
                 }
 
@@ -21636,23 +21798,26 @@ _.extend(iD.Way.prototype, {
 // of the following keys, and the value is _not_ one of the associated
 // values for the respective key.
 iD.Way.areaKeys = {
+    aeroway: { taxiway: true},
+    amenity: {},
     area: {},
+    'area:highway': {},
     building: {},
-    leisure: {},
-    tourism: {},
-    ruins: {},
+    'building:part': {},
     historic: {},
     landuse: {},
+    leisure: {},
+    man_made: { cutline: true, embankment: true, pipeline: true},
     military: {},
     natural: { coastline: true },
-    amenity: {},
-    shop: {},
-    man_made: {},
-    public_transport: {},
+    office: {},
     place: {},
-    aeroway: {},
-    waterway: {},
-    power: {}
+    power: {},
+    public_transport: {},
+    ruins: {},
+    shop: {},
+    tourism: {},
+    waterway: {}
 };
 iD.Background = function(context) {
     var dispatch = d3.dispatch('change'),
@@ -22750,7 +22915,7 @@ iD.svg = {
                     b = [x, y];
 
                     if (a) {
-                        var span = iD.geo.dist(a, b) - offset;
+                        var span = iD.geo.euclideanDistance(a, b) - offset;
 
                         if (span >= 0) {
                             var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
@@ -23468,7 +23633,7 @@ iD.svg.Midpoints = function(projection, context) {
                 // If neither of the nodes changed, no need to redraw midpoint
                 if (!midpoints[id] && (filter(a) || filter(b))) {
                     var loc = iD.geo.interp(a.loc, b.loc, 0.5);
-                    if (extent.intersects(loc) && iD.geo.dist(projection(a.loc), projection(b.loc)) > 40) {
+                    if (extent.intersects(loc) && iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) {
                         midpoints[id] = {
                             type: 'midpoint',
                             id: id,
@@ -25097,7 +25262,7 @@ iD.ui.EntityEditor = function(context) {
         if (!arguments.length) return preset;
         if (_ !== preset) {
             preset = _;
-            reference = iD.ui.TagReference(preset.reference())
+            reference = iD.ui.TagReference(preset.reference(context.geometry(id)))
                 .showing(false);
         }
         return entityEditor;
@@ -26477,7 +26642,7 @@ iD.ui.PresetList = function(context) {
         };
 
         item.preset = preset;
-        item.reference = iD.ui.TagReference(preset.reference());
+        item.reference = iD.ui.TagReference(preset.reference(context.geometry(id)));
 
         return item;
     }
@@ -26787,7 +26952,7 @@ iD.ui.RawMembershipEditor = function(context) {
             graph = context.graph();
 
         context.intersects(context.extent()).forEach(function(entity) {
-            if (entity.type !== 'relation')
+            if (entity.type !== 'relation' || entity.id === id)
                 return;
 
             var presetName = context.presets().match(entity, graph).name(),
@@ -27175,12 +27340,12 @@ iD.ui.Restore = function(context) {
         introModal.append('div')
             .attr('class', 'modal-section')
             .append('h3')
-                .text(t('restore.heading'));
+            .text(t('restore.heading'));
 
         introModal.append('div')
             .attr('class','modal-section')
             .append('p')
-                .text(t('restore.description'));
+            .text(t('restore.description'));
 
         var buttonWrap = introModal.append('div')
             .attr('class', 'modal-actions cf');
@@ -27203,8 +27368,6 @@ iD.ui.Restore = function(context) {
 
         restore.node().focus();
     };
-        modal.select('button.close').attr('class','hide');
-
 };
 iD.ui.Save = function(context) {
     var history = context.history(),
@@ -27877,7 +28040,6 @@ iD.ui.preset.access = function(field, context) {
             .attr('class', 'col6 preset-input-access-wrap')
             .append('input')
             .attr('type', 'text')
-            .attr('placeholder', field.placeholder())
             .attr('class', 'preset-input-access')
             .attr('id', function(d) { return 'preset-input-access-' + d; })
             .each(function(d) {
@@ -27922,7 +28084,10 @@ iD.ui.preset.access = function(field, context) {
 
     access.tags = function(tags) {
         items.selectAll('.preset-input-access')
-            .value(function(d) { return tags[d] || ''; });
+            .value(function(d) { return tags[d] || ''; })
+            .attr('placeholder', function(d) {
+                return d !== 'access' && tags.access ? tags.access : field.placeholder();
+            });
     };
 
     access.focus = function() {
@@ -29651,14 +29816,17 @@ iD.presets.Preset = function(id, preset, fields) {
         return Object.keys(preset.tags).length === 0;
     };
 
-    preset.reference = function() {
-        var reference = {key: Object.keys(preset.tags)[0]};
+    preset.reference = function(geometry) {
+        var key = Object.keys(preset.tags)[0],
+            value = preset.tags[key];
 
-        if (preset.tags[reference.key] !== '*') {
-            reference.value = preset.tags[reference.key];
+        if (geometry === 'relation' && key === 'type') {
+            return { rtype: value };
+        } else if (value === '*') {
+            return { key: key };
+        } else {
+            return { key: key, value: value };
         }
-
-        return reference;
     };
 
     var removeTags = preset.removeTags || preset.tags;
@@ -58743,7 +58911,6 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
                 "icon": "shop",
                 "fields": [
                     "address",
-                    "building_area",
                     "opening_hours"
                 ],
                 "geometry": [
@@ -72767,7 +72934,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"
                 "annotation": {
                     "line": "Squared the corners of a line.",
                     "area": "Squared the corners of an area."
-                }
+                },
+                "not_squarish": "This can't be made square because it is not squarish."
             },
             "straighten": {
                 "title": "Straighten",
index 56f632497303697c2582a42f2257c0e776be578f..5ad6c8d481ad4968cd5bc0e1643f66d483eb725f 100644 (file)
             "not_closed": "Ovo se ne može napraviti kružnim jer to nije petlja."
         },
         "orthogonalize": {
+            "title": "Kvadrat",
+            "description": {
+                "line": "Oblikovati uglove ove linije u kvadrat.",
+                "area": "Oblikovati uglove ovo područje u kvadrat."
+            },
+            "key": "Oblikovati",
             "annotation": {
                 "line": "Ispravljeni uglovi linije.",
                 "area": "Ispravljeni uglovi područja."
             }
         },
+        "straighten": {
+            "title": "Ispraviti",
+            "description": "Ispraviti ovu liniju.",
+            "key": "Oblikovati",
+            "annotation": "Ispravljena linija.",
+            "too_bendy": "Ovo ne može biti ispralvjeno jer se previše savija."
+        },
         "delete": {
             "title": "Izbrišite",
             "description": "Uklonite ovo sa karte.",
             "atm": {
                 "label": "Bankomat"
             },
+            "backrest": {
+                "label": "Naslon za leđa"
+            },
             "barrier": {
                 "label": "Vrsta"
             },
                 "name": "Iznajmljivanje bicikala",
                 "terms": "iznajmljivanje bicikala,najam bicikla"
             },
+            "amenity/boat_rental": {
+                "name": "Iznajmljivanje plovila",
+                "terms": "iznajmljivanje čamaca,iznajmljivanje brodova,iznajmljivanje plovila"
+            },
             "amenity/cafe": {
                 "name": "Kafe",
                 "terms": "kafe,kafana,kafe-bar"
                 "name": "Stepenice",
                 "terms": "stepenice,stube"
             },
+            "highway/stop": {
+                "name": "Znak stop",
+                "terms": "znak stop,saobraćajni znak stop,saobraćajni znak zaustavljanja"
+            },
             "highway/tertiary": {
                 "name": "Tercijarna cesta",
                 "terms": "tercijarna cesta,cesta od tercijarnog značaja"
                 "name": "Košarkaški teren",
                 "terms": "košarkaški teren,igralište za košarku"
             },
+            "leisure/pitch/skateboard": {
+                "name": "Poligon za skateboard",
+                "terms": "poligon za skateboard,park za skateboard,poligon za klizanje"
+            },
             "leisure/pitch/soccer": {
                 "name": "Fudbalski teren",
                 "terms": "fudbalski teren,igralište za fudbal"
                 "name": "Navoz",
                 "terms": "navoz,navoz na šine"
             },
+            "leisure/sports_center": {
+                "name": "Sportski centar",
+                "terms": "sportski centar,centar za sport, centar za sportske aktivnosti"
+            },
             "leisure/stadium": {
                 "name": "Stadion",
                 "terms": "stadion,sportsko borilište"
                 "name": "Obala",
                 "terms": "obala,obalno područje"
             },
+            "natural/fell": {
+                "name": "Planinska golet",
+                "terms": "nekultivirana zemlja na visokim nadmorskim visinama,neobrađena zemlja,visoki pašnjak"
+            },
             "natural/glacier": {
                 "name": "Glečer",
                 "terms": "glečer,ledenjak"
                 "name": "Vrh",
                 "terms": "vrh,kota"
             },
+            "natural/scree": {
+                "name": "Osulina",
+                "terms": "sipar,sipina,osulina,nakupina osutog oštrobridnog materijala"
+            },
             "natural/scrub": {
                 "name": "Gustiš",
                 "terms": "gustiš,šipražje,nisko raslinje"
index 0adaf8404046ab69eadec70bb5fcc87d691ec4f6..1f9c727fc7ce98131a904a46332a66e30b4e6d51 100644 (file)
             "not_closed": "Això no es pot fer circular perquè no té els extrems units."
         },
         "orthogonalize": {
+            "title": "Quadrar",
+            "description": {
+                "line": "Quadrar les cantonades d'aquesta línia",
+                "area": "Quadrar les cantonades d'aquesta àrea"
+            },
+            "key": "Q",
             "annotation": {
                 "line": "Heu quadrat les cantonades d'una línia.",
                 "area": "Heu quadrat les cantonades d'una àrea."
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Fer recta",
             "description": "Fes aquesta línia recta",
-            "key": "S"
+            "key": "S",
+            "annotation": "Quadrar una línia",
+            "too_bendy": "Això no es pot quadrar perquè és massa sinuós."
         },
         "delete": {
             "title": "Suprimeix",
index d6e361b14b8852c9c521a30cc10021d2af77c1c9..f8dabd36b1caf87f38290f828785ecfa71366c4b 100644 (file)
             "not_closed": "Z objektu nelze udělat kruh, protože nejde o smyčku."
         },
         "orthogonalize": {
+            "title": "Zhranatit",
+            "description": {
+                "line": "Udělat rohy této cesty do hranata.",
+                "area": "Udělat rohy této plochy do hranata."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Úhly cesty do pravého úhle.",
                 "area": "Rohy plochy do pravého úhle."
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Narovnat",
             "description": "Narovnat tuto cestu.",
-            "key": "S"
+            "key": "S",
+            "annotation": "Narovnána cesta",
+            "too_bendy": "Objekt není možné narovnat, protože je příliš zakroucený."
         },
         "delete": {
             "title": "Smazat",
index 0feaea672a12e07778042b81316c31da74fcad10..64d08917f615e7f5c66f80c0d32d3b09f4550230 100644 (file)
             "not_closed": "Dieses Objekt kann nicht kreisförmig gemacht werden, da es keine geschlossene Linie ist."
         },
         "orthogonalize": {
+            "title": "Rechteck",
+            "description": {
+                "line": "Die Ecken dieser Linien rechteckig machen.",
+                "area": "Die Ecken dieser Fläche rechteckig machen."
+            },
+            "key": "R",
             "annotation": {
                 "line": "Die Ecken einer Linie rechtwinklig ausgerichtet.",
                 "area": "Die Ecken einer Fläche rechtwinklig ausgerichtet."
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Begradigen",
             "description": "Diese Linie begradigen.",
-            "key": "S"
+            "key": "S",
+            "annotation": "Linie begradigt.",
+            "too_bendy": "Dieses Objekt kann nicht begradigt werden, da es zu kurvig ist."
         },
         "delete": {
             "title": "Löschen",
             "description": "Vereinige diese Linien.",
             "key": "C",
             "annotation": "{n} Linien vereinigt.",
-            "not_eligible": "Diese Objekte können nicht vereint werden.",
-            "not_adjacent": "Diese Linien können nicht vereint werden, da sie nicht verbunden sind.",
+            "not_eligible": "Diese Objekte können nicht vereinigt werden.",
+            "not_adjacent": "Diese Linien können nicht vereinigt werden, da sie nicht verbunden sind.",
             "restriction": "Diese Linien können nicht vereinigt werden, da mindestens eine Linie ein Mitglied einer \"{relation}\" Relation ist."
         },
         "move": {
         "addresses": "# Adressen\n\nAdressen sind eine der wichtigsten Informationen einer Karte.\n\nObwohl Adressen oft als Teil einer Straße repräsentiert werden, werden sie in OpenStreetMap  als Attribute von Gebäuden oder Objekten neben der Straße eingetragen.\n\nDu kannst Adressinformationen sowohl zu Flächen die als Gebäudegrundriss gezeichnet sind, als auch zu einzelnen Punkten hinzufügen. Adressen musst du über eine Stadtbegehung oder dein eigenes Wissen herausfinden, da die Nutzung kommerzieller Quellen wie Google Maps strikt verboten ist.\n",
         "inspector": "# Den Inspektor benutzen\n \nDer Inspektor ist das Bedienelement, das rechts im Editor erscheint, wenn du ein Objekt auswählst. Mit dem Inspektor kannst du die Details des Objektes bearbeiten.\n\n ### Eine Eigenschaft auswählen\n \nNachdem du einen Punkt, eine Linie oder eine Fläche hinzugefügt hast kannst du auswählen, welche Eigenschaft das Objekt hat - ob es eine Autobahn oder eine Wohnstraße; ein Supermarkt oder ein Café ist.\nDer Inspektor wird Knöpfe für die am häufigsten verwendeten Eigenschaften zeigen. Andere Eigenschaften findest du, indem du im Suchfeld eingibst wonach du suchst. \n \nKlicke auf den 'i'-Knopf in der Ecke rechts unten in einem Eigenschaften-Knopf, um mehr darüber zu erfahren. \n\n ### Vorlagen verwenden und Tags editieren\n \nNachdem du ein Objekt mit einer Eigenschaft versehen oder ausgewählt hast, zeigt der Inspektor Felder mit Details zu der Eigenschaft wie Name und Adresse an.\n\nUnter diesen Feldern kannst du Icons anklicken, um weitere Details hinzuzufügen wie zum Beispiel einen [Wikipedia](http://www.wikipedia.org/)-Link, Zugänglichkeit für Rollstühle und anderes.\n\nGanz unten im Inspektor kannst du auf 'Weitere Merkmale' klicken, um das Objekt mit beliebigen anderen Tags zu versehen.\n[Taginfo](http://taginfo.openstreetmap.org/) ist eine gute Quelle, um oft genutzte Kombinationen von Eigenschaften zu finden.\n\nÄnderungen die du im Inspektor vornimmst, werden automatisch auf die ausgewählten Objekte angewendet. Durch Klicken auf den 'Rückgängig'-Knopf kannst du sie rückgängig machen.\n\n ### Den Inspektor schließen\n\nDu kannst den Inspektor schließen, indem du auf den Schließen-Knopf oben rechts klickst, den 'Escape'-Knopf auf der Tastatur drückst oder in die Karte klickst.\n",
         "buildings": "# Gebäude\n\nOpenStreetMap ist die weltgrößte Datenbank für Gebäude und du kannst helfen sie\nweiter zu verbessern.\n\n### Auswahl\n\nDu kannst ein Gebäude auswählen, indem du auf dessen Umrisslinie klickst. Der\nUmriss wird nun hervorgehoben. Außerdem wird ein Werkzeugmenü und eine\nSeitenleiste eingeblendet, welche Informationen zum Gebäude zeigt.\n\n### Bearbeitung\n\nManchmal sind Gebäude falsch platziert oder haben falsche Eigenschaften.\n\nUm ein Gebäude komplett zu verschieben wähle es aus und klicke auf das\n„Bewegen“-Werkzeug. Verschiebe nun das Gebäude mit der Maus und Klicke einmal\nwenn es an der richtigen Stelle ist.\n\nUm den Gebäudeumriss zu korrigieren, klicke und ziehe die Umrissknoten, bis\nsie an der richtigen Stelle sind.\n\n### Erstellen\n\nEine oft gestellte Frage bezieht sich auf das Erstellen von Gebäuden als\nGebäudefläche und/oder als Punkt. Hier gilt, wann immer es möglich ist, sollte\ndas Gebäude als Fläche eingetragen werden. Firmen, Geschäfte und ähnliches\nwerden zusätzlich als Punkte innerhalb des Gebäudeumrisses angelegt.\n\nUm ein Gebäude als Fläche zu zeichnen, klicke auf den „Fläche“-Knopf oben\nlinks und vollende das Gebäude, indem du entweder die \"Enter\"-taste drückst,\noder auf den ersten Knoten klickst.\n\n### Löschen\n\nWenn du siehst und weißt, dass ein Gebäude nicht existiert - zum Beispiel,\nweil du vor Ort warst - kannst du es löschen und es wird von der Karte\nentfernt. Sei vorsichtig mit der Löschfunktion! Das Ergebnis kann, wie\nbei jeder anderen Veränderung, von allen gesehen werden. Außerdem sind\nSatellitenbilder oft veraltet und ein Gebäude könnte einfach neu gebaut sein.\n\nDu kannst ein Gebäude löschen, indem du es auswählst und auf das\nPapierkorbsymbol klickst oder die „Entfernen“-Taste betätigst.\n",
-        "relations": "# Relationen ⏎\n⏎\nEine Relation ist ein besonderes Element in OpenStreetMap, welches andere Elemente⏎\ngruppiert. Es gibt zwei gängige Arten von Relationen: *Weg-Relationen*, die⏎\nzusammengehörende Abschnitte eines Weges gruppieren, die zu einer bestimmten Autobahn⏎\ngehören und *Multipolygone*, die mehrere Linien gruppieren, die ein komplexes⏎\nGebiet (eines mit mehreren Stücken oder Löcher in ihm wie ein Donut) beschreiben.⏎\n⏎\nDie Gruppe von Elemente in einer Relation werden *Mitglieder* genannt. In der Seitenleiste⏎\nist zu sehen, in welchen Relationen ein Element enthalten ist. Durch Klick kann eine Relation⏎\nausgewählt werden, dann werden alle Elemente der Relation in der Seitenleisten aufgeführt⏎\nund  auf der Karte markiert.⏎\n⏎\nIn vielen Fällen kümmert sich iD um die Pflege der Relationen automatisch⏎\nwährend der Bearbeitung. Wenn Sie einen Abschnitt einer Straße löschen um⏎\nihn genauer neu zu zeichnen, sollten Sie sicherstellen, dass der neuen Abschnitt⏎\nein Mitglied der gleichen Relationen wird wie das Original.⏎\n⏎\n## Bearbeiten von Relationen⏎\n⏎\nWenn Sie die Relationen bearbeiten möchten, hier sind die Grundlagen:⏎\n⏎\nUm ein Elemente einer Relation hinzuzufügen, wählen Sie das Element und klicken⏎\nSie auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\" in der Seitenleiste und⏎\nwählen Sie die Relation oder geben Sie den Namen der Relation ein.⏎\n⏎\nUm eine neue Relation erstellen, wählen Sie das erste zukünftige Mitglied,⏎\nklicken Sie auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\" in der Seitenleiste⏎\nund wählen Sie \"Neue Relation ...\".⏎\n⏎\nUm ein Element aus einer Relation zu entfernen, wählen Sie das Element und klicken⏎\nauf den Papierkorb neben der Relation aus der sie es entfernen wollen.⏎\n⏎\nSie können Multipolygone mit Löchern mit dem \"Merge\"-Tool zu erstellen. Zeichnen Sie zwei Bereichen⏎\n(äußeren und inneren Bereich), klicken auf den äußeren Bereich, halten die Umschalttaste gedrückt und⏎\nklicken auf den inneren Bereich, dann klicken Sie auf \"Merge\" (+)-Taste.⏎\n"
+        "relations": "# Relationen\n\nEine Relation ist ein besonderes Element in OpenStreetMap, welches andere Elemente\nzusammenfasst. Es gibt zwei gängige Arten von Relationen: *Weg-Relationen* fassen\nAbschnitte eines Weges zu einer Autobahn (oder zu einem anderen Weg) zusammenfassen.\n*Multipolygone* fassen mehrere Gebiete zu einem komplexen Gebiet zusammen, dabei\nkann auch ein Gebiet ein Loch in einem anderen Gebiet (wie in einem Donut) beschreiben.\n\nDie Elemente in einer Relation werden *Mitglieder* genannt. In der Seitenleiste kannst\nDu sehen, in welchen Relationen ein Element enthalten ist. Durch Klick auf eine Relation\nwerden alle Elemente der Relation in der Seitenleisten aufgezeigt und auf der Karte markiert.\n\nNormalerweise kümmert sich iD während der Bearbeitung automatisch um die Pflege der Relationen.\nWenn Du einen Abschnitt eines Weges löscht um ihn genauer neu zu zeichnen, solltest Du sicherstellen,\ndass der neuen Abschnitt Mitglied in den gleichen Relationen wie das Original wird.\n\n## Bearbeiten von Relationen\n\nUm ein Element einer Relation hinzuzufügen, wähle das zukünftige Mitglied aus und\nklicke in der Seitenleiste auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\".\nDu kannst dann die Relation auswählen oder den Namen der Relation eintippen.\n\nUm eine neue Relation erstellen, wähle das erste zukünftige Mitglied aus und\nklicke in der Seitenleiste auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\"\nund wähle \"Neue Relation ...\".\n\nUm ein Element aus einer Relation zu entfernen, wählen Sie das Mitglied aus und klicke\nauf den Papierkorb neben der Relation aus Du es entfernen willst.\n\nDu kannst Multipolygone mit Löchern mit dem \"Vereinigen\"-Werkzeug erstellen.\nZeichne zwei Bereiche (den äußeren und den inneren Bereich) und klicke auf den äußeren Bereich.\nDann halte die Umschalttaste gedrückt und klicke auf den inneren Bereich und klicke dann auf \"Vereinigen\" (+).\n"
     },
     "intro": {
         "navigation": {
index eaeba55f1ea3abf8af4688f6097050fc5c637dc8..60bdd77b286f320215084917611dcd0097e47f3c 100644 (file)
@@ -83,7 +83,8 @@
             "annotation": {
                 "line": "Squared the corners of a line.",
                 "area": "Squared the corners of an area."
-            }
+            },
+            "not_squarish": "This can't be made square because it is not squarish."
         },
         "straighten": {
             "title": "Straighten",
index f3e10438068208f24111170b5d8f27b40cbfcf9e..e4c7c196981d62e0a986d17f5359ff4ca510199b 100644 (file)
@@ -41,6 +41,9 @@
             }
         },
         "continue": {
+            "key": "A",
+            "title": "Pidennä",
+            "description": "Jatka ja pidennä tätä viivaa.",
             "annotation": {
                 "line": "Viivan muokkaaminen aloitettu.",
                 "area": "Alueen muokkaaminen aloitettu."
             "not_closed": "Tätä ei voi tehdä ympyränmuotoiseksi, sillä sitä ei ole suljettu."
         },
         "orthogonalize": {
+            "title": "Muuta suorakulmaiseksi",
+            "description": {
+                "line": "Muuta tämän viivan kulmat suorakulmiksi.",
+                "area": "Muuta tämän alueen kulmat suorakulmiksi."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Viiva muutettu suorakulmaiseksi.",
                 "area": "Alue muutettu suorakulmaiseksi."
             }
         },
+        "straighten": {
+            "title": "Suorista",
+            "description": "Suorista tämä viiva.",
+            "key": "S",
+            "annotation": "Viiva suoristettiin."
+        },
         "delete": {
             "title": "Poista",
             "description": "Poista tämä kohde kartalta.",
         },
         "rotate": {
             "title": "Käännä",
+            "description": "Käännä tätä kappaletta sen keskipisteen ympäri.",
             "key": "R",
             "annotation": {
                 "line": "Viiva käännetty.",
         "nothing": "Ei muokkaushistoriaa."
     },
     "tooltip_keyhint": "Pikanäppäin:",
-    "browser_notice": "Tämä kartanmuokkausohjelma toimii Firefox-, Chrome-, Safari- ja Opera-selaimissa sekä Internet Explorer 9 tai uudemmalla selaimella. Nykyinen verkkoselain ei ole tuettu, joten päivitä verkkoselain tai muokkaa karttaa Potlatch 2 -ohjelmalla.",
+    "browser_notice": "Tätä karttamuokkainta voi käyttää Firefox-, Chrome-, Safari- ja Opera-selaimilla sekä Internet Explorer 9 tai uudemmalla selaimella. Nykyinen verkkoselain ei ole tuettu, joten päivitä verkkoselain tai muokkaa karttaa Potlatch 2 -ohjelmalla.",
     "translate": {
         "translate": "Käännä",
         "localized_translation_label": "Monikielinen nimi",
         "localized_translation_language": "Valitse kieli",
         "localized_translation_name": "Nimi"
     },
-    "zoom_in_edit": "Muokkaa lähentämällä karttaa",
+    "zoom_in_edit": "Lähennä karttaa ennen muokkaamista",
     "logout": "kirjaudu ulos",
     "loading_auth": "Yhdistetään OpenStreetMap-palveluun...",
     "report_a_bug": "ilmoita ongelmasta",
         "description_placeholder": "Kuvaile lyhyesti karttaan tehtyjä muutoksia",
         "message_label": "Yhteenveto",
         "upload_explanation": "Palvelimelle lähetettävät muutokset tulevat pian näkyviin kaikkiin OpenStreetMap-kartta-aineistoa käyttäviin palveluihin.",
-        "upload_explanation_with_user": "Palvelimelle lähetettävät muutokset käyttäjänä {user} tulevat pian näkyviin kaikkiin OpenStreetMap-kartta-aineistoa käyttäviin palveluihin.",
+        "upload_explanation_with_user": "Palvelimelle lähetetään muutokset käyttäjätunnisteella {user}. Muutokset tulevat pian näkyviin kaikkiin OpenStreetMap-kartta-aineistoa käyttäviin palveluihin.",
         "save": "Tallenna",
         "cancel": "Peru",
         "warnings": "Varoitukset",
         "title": "Tausta",
         "description": "Taustan asetukset",
         "percent_brightness": "{opacity}% kirkkaus",
+        "custom": "Mukautettu",
         "fix_misalignment": "Korjaa ilmakuvavirhe",
         "reset": "palauta"
     },
         "view_on_osm": "Näytä OSM-kartalla",
         "facebook": "Jaa Facebookissa",
         "twitter": "Jaa Twitterissä",
-        "google": "Jaa Google+-palvelussa"
+        "google": "Jaa Google+-palvelussa",
+        "help_html": "Karttaan tehdyt muutokset ilmestyvät perinteiseen karttanäkymään muutaman minuutin kuluessa. Tiettyjen ominaisuuksien ilmestyminen kartalle ja muutokset tiettyihin karttanäkymiin voivat viedä kauemmin\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>lisätietoja</a>).\n"
     },
     "confirm": {
         "okay": "OK"
                 "label": "Kerrokset",
                 "placeholder": "2, 4, 6..."
             },
+            "lit": {
+                "label": "Valaistus"
+            },
             "location": {
                 "label": "Sijainti"
             },
             "amenity": {
                 "name": "Palvelu"
             },
+            "amenity/arts_centre": {
+                "name": "Taidekeskus"
+            },
             "amenity/atm": {
                 "name": "Pankkiautomaatti",
                 "terms": "otto, pankkiautomaatti, rahannostoautomaatti, pankki"
                 "name": "Pyörävuokraamo",
                 "terms": "pyörävuokraamo, kaupunkipyörä, pyöränvuokraus, pyörän vuokraus, polkupyörävuokraamo, polkupyörän vuokraus, polkupyöränvuokraus, polkupyörä, pyörä"
             },
+            "amenity/boat_rental": {
+                "name": "Venevuokraamo",
+                "terms": "vene, laiva, paatti, jolla, veneenvuokraus, venevuokra, vuokra, venevuokraus, venevuokraamo, veneenvuokraamo"
+            },
             "amenity/cafe": {
                 "name": "Kahvila"
             },
                 "terms": "leffa, leffateatteri, elokuva, elokuvateatteri"
             },
             "amenity/college": {
-                "name": "Ammattikorkeakoulu",
-                "terms": "college, ammattikorkeakoulu, amk"
+                "name": "Ammattiopisto",
+                "terms": "ammattiopisto, amis, ammattikoulu, koulu, koulutus, oppilaitos, toinen aste"
             },
             "amenity/courthouse": {
                 "name": "Käräjäoikeus",
             },
             "amenity/parking": {
                 "name": "Pysäköintialue",
-                "terms": "pysäköinti, parkkipaikka, pysäköintipaikka, parkki, pysäköintitalo, parkkitalo"
+                "terms": "pysäköinti, parkkipaikka, pysäköintipaikka, parkki, pysäköintitalo, parkkitalo, autoparkki, auto"
             },
             "amenity/pharmacy": {
                 "name": "Apteekki",
                 "name": "Ravintola"
             },
             "amenity/school": {
-                "name": "Koulu"
+                "name": "Koulu",
+                "terms": "koulu, alakoulu, ala-aste, yläaste, yläkoulu, lukio, yhteislukio, keskikoulu, koulutus, opiskelu, oppilaitos"
             },
             "amenity/swimming_pool": {
                 "name": "Uima-allas"
             },
             "amenity/taxi": {
-                "name": "Taksitolppa"
+                "name": "Taksitolppa",
+                "terms": "taksitolppa, taksiasema, taksipiste, taksi, taksikyltti, taxi"
             },
             "amenity/telephone": {
-                "name": "Puhelin"
+                "name": "Yleinen puhelin",
+                "terms": "puhelinkoppi, puhelin, puhelinkioski, yleinen puhelin, julkinen puhelin"
             },
             "amenity/theatre": {
                 "name": "Teatteri"
                 "terms": "kunnantalo, kaupungintalo, valtuusto,"
             },
             "amenity/university": {
-                "name": "Yliopisto"
+                "name": "Korkeakoulu",
+                "terms": "yliopisto, korkeakoulu, college, ammattikorkeakoulu, amk"
             },
             "amenity/waste_basket": {
                 "name": "Roskakori",
             "building/apartments": {
                 "name": "Asunnot"
             },
+            "building/commercial": {
+                "name": "Kaupallinen rakennus"
+            },
             "building/entrance": {
                 "name": "Sisäänkäynti"
             },
                 "name": "Mökki",
                 "terms": "maja, mökki, kesämökki, tönö, pikkutalo, pieni rakennus"
             },
+            "building/industrial": {
+                "name": "Teollisuusrakennus"
+            },
+            "building/residential": {
+                "name": "Asuinrakennus"
+            },
             "emergency/ambulance_station": {
                 "name": "Ambulanssiasema",
                 "terms": "ambulanssi, ambulanssit, hälytysajoneuvo, ambulanssihalli, ambulanssivarasto, ambulanssitalli, hälytysajoneuvohalli, hälytysajoneuvotalli, hälytysajoneuvovarasto"
             },
+            "emergency/fire_hydrant": {
+                "name": "Paloposti",
+                "terms": "paloposti, vedensyöttö, vesisyöttö, palokunta, vesiposti"
+            },
             "emergency/phone": {
                 "name": "Hätäpuhelin",
                 "terms": "hätänumero, hätäpuhelin, hätätilanne, poikkeuspuhelin, hätäkeskus, hätäilmoitus"
             "leisure/pitch/basketball": {
                 "name": "Koripallokenttä"
             },
+            "leisure/pitch/skateboard": {
+                "name": "Rullalautailupuisto",
+                "terms": "skeittipuisto, skeittaus, skeitti, rullalautailu, rullalauta, rullalautailupuisto, parkit, parkki, skeittiparkki, skeittiparkit"
+            },
             "leisure/pitch/soccer": {
                 "name": "Jalkapallokenttä"
             },
                 "name": "Lähde"
             },
             "natural/tree": {
-                "name": "Havupu"
+                "name": "Havupuu"
             },
             "natural/water": {
                 "name": "Vesi"
                 "name": "Lehtikoju"
             },
             "shop/optician": {
-                "name": "Optikko"
+                "name": "Optikko",
+                "terms": "optikko, optiikko, optometristi, optometri, optometria, silmälasi, silmälasit, aurinkolasi, aurinkolasit, silmälasiliike"
             },
             "shop/outdoor": {
                 "name": "Ulkoilmamyymälä"
index 1523279576ffa2b944382732bbb43d6262fd6d62..3765abcb2de2a5fc24d43fd8cc5672e26fc2cb53 100644 (file)
             "atm": {
                 "label": "Distributeur de billets"
             },
+            "backrest": {
+                "label": "Dossier"
+            },
             "barrier": {
                 "label": "Type"
             },
                 "name": "Escalier",
                 "terms": "Escalier"
             },
+            "highway/stop": {
+                "name": "Paneau Stop"
+            },
             "highway/tertiary": {
                 "name": "Route tertiaire",
                 "terms": "Route tertiaire"
                 "terms": "Point de vue"
             },
             "tourism/zoo": {
-                "name": "Zoo"
+                "name": "Zoo",
+                "terms": "Zoo"
             },
             "type/boundary": {
                 "name": "Frontière"
                 "name": "Canal d'évacuation d'eau pluviale"
             },
             "waterway/river": {
-                "name": "Rivière"
+                "name": "Rivière",
+                "terms": "Rivière"
             },
             "waterway/riverbank": {
                 "name": "Berge"
index 928576bf975b729feeef606d6e450e87699f0637..8b687b9b6ba5f26847e4360ee50661626c375490 100644 (file)
             "not_closed": "Ovo se ne može zaokružiti jer nije zatvoren objekt."
         },
         "orthogonalize": {
+            "title": "Stavi pod pravi kut",
+            "description": {
+                "line": "Stavi pod pravi kut uglove linije.",
+                "area": "Stavi pod pravi kut uglove područja."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Kutovi linije su pod pravim kutom.",
                 "area": "Kutovi područja su pod pravim kutom."
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Izravnaj",
             "description": "Izravnaj ovu liniju.",
-            "key": "S"
+            "key": "S",
+            "annotation": "Linija je izravnana.",
+            "too_bendy": "Ovo se ne može izravnati jer je previše krivudavo."
         },
         "delete": {
             "title": "Izbriši",
                 "terms": "svjetionik,svjetlosni signal,toranj za svjetlosnu navigaciju"
             },
             "man_made/pier": {
-                "name": "Pristanište",
+                "name": "Mol",
                 "terms": "pristanište,mol,lukobran,molo,mul,gat"
             },
             "man_made/pipeline": {
                 "terms": "hrpa gruha,sip,plazina,kršlje,krš,sitno kamenje na strmini,kamenje na strmini,kamenjar,kamen"
             },
             "natural/scrub": {
-                "name": "Šikara",
-                "terms": "šikara,zaraslo zemljište,gust šibljak,guštara,guštik,šiprag,šipražje,gustiš,šiblje, samoniklo šiblje,šibljar,šibljik"
+                "name": "Makija",
+                "terms": "šikara,zaraslo zemljište,gust šibljak,guštara,guštik,šiprag,šipražje,gustiš,šiblje, samoniklo šiblje,šibljar,šibljik,makija"
             },
             "natural/spring": {
                 "name": "Izvor",
index 80d1e5d48d6a664d4c122ce92d7da686cc2b75e0..4099b7ee5259c3a0e325cb7cd1822a4efb991966 100644 (file)
@@ -1,8 +1,8 @@
 {
     "modes": {
         "add_area": {
-            "title": "Teritorija",
-            "description": "Pridėti parkus, pastatus, ežerus ar kitas vietas į žemėlapį."
+            "title": "Plotas",
+            "description": "Pridėkite parkus, pastatus, ežerus ar kitas vietas į žemėlapį."
         },
         "add_line": {
             "title": "Linija",
index 3e64c98b1e336390cd425872363287e859230d8d..c6003fccd4be286a6a1a80bd53ab531afbba2cd1 100644 (file)
             }
         },
         "continue": {
+            "key": "A",
+            "title": "Kontynuuj",
+            "description": "Kontynuuj tą linię",
+            "not_eligible": "Żadna linia nie może być w tym miejscu kontyuowana",
+            "multiple": "Kilka linii może być tutaj kontynuowanych. Aby wybrać linię, kliknij w nią przytrzymując klawisz Shift.",
             "annotation": {
                 "line": "Kontynuowano rysowanie linii.",
                 "area": "Kontynuowano obszar."
             "not_closed": "Z tego nie można zrobić okręgu, bo nie jest pętlą."
         },
         "orthogonalize": {
+            "title": "Koryguj prostopadłość",
+            "description": {
+                "line": "Spraw, aby kąty tej linii były proste.",
+                "area": "Spraw, aby kąty tego obszaru były proste."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Stworzono kąty proste z narożników linii.",
                 "area": "Stworzono kąty proste obszaru."
             }
         },
+        "straighten": {
+            "title": "Prostowanie",
+            "description": "Wyprostuj tę linię.",
+            "key": "S",
+            "annotation": "Wyprostowano linię.",
+            "too_bendy": "Nie można wyprostować tej linii gdyż zakręca ona zbyt mocno."
+        },
         "delete": {
             "title": "Usuń",
             "description": "Usuń to z mapy.",
         },
         "rotate": {
             "title": "Obróć",
+            "description": "Obróć ten obiekt względem jego środka.",
             "key": "R",
             "annotation": {
                 "line": "Obrócono linię.",
         "description": "Ustawienia tła",
         "percent_brightness": "jasność {opacity}%",
         "custom": "Własne",
+        "custom_prompt": "Wpisz adres kafelków w formacie  {z}, {x}, {y} dla schematu Z/X/Y lub {u} dla schematu QuadTile.",
         "fix_misalignment": "Wyrównaj podkład",
         "reset": "resetuj"
     },
     "help": {
         "title": "Pomoc",
         "help": "# Pomoc\n\nTo jest edytor [OpenStreetMap](http://www.openstreetmap.org/),\nwolnej i edytowalnej mapy świata. Możesz  go używać do dodawania i\naktualizacji danych w twoim rejonie, czyniąc otwartą mapę świata lepszą\ndla każdego.\n\nModyfikacje wprowadzone na tej mapie będą widoczne dla wszystkich\nużywających OpenStreetMap. Aby wprowadzić modyfikacje, potrzebujesz\n[darmowego konta OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n[Edytor iD](http://ideditor.com/) jest projektem społecznościowym z\n[kodem dostępnym na GitHub](https://github.com/systemed/iD).\n",
+        "editing_saving": "# Edycja i zapis\n\nTen edytor został zaprojektowany do pracy w trybie online i już go używasz poprzez stronę\ninternetową.\n\n### Wybieranie obiektów\n\nAby wybrać obiekt na mapie, na przykład droga, czy POI, kliknij go na mapie.\nSpowoduje to podświetlenie wybranego obiektu, otworzenie panelu zawierającego szczegóły\no nim i wyświetlenie menu z poleceniami, które możesz wykonać na obiekcie.\n\nWiele obiektów może zostać wybranych przez przytrzymanie wciśniętego klawisza 'Shift' i lewego klawisza myszy, z jednoczesnym przeciągnięciem zaznaczając interesujący nas obszar mapy. Spowoduje to wybór wszystkich obiektów zawartych w narysowanym prostokącie, umożliwiając Tobie wykonywanie działań na kilku obiektach naraz.\n\n### Zapisywanie modyfikacji\n\nGdy wprowadzisz zmiany, na przykład przez modyfikacje dróg, budynków i miejsc, są one\nprzechowywane lokalnie aż zapiszesz je na serwerze. Nie martw się, gdy popełnisz błąd - możesz\ncofnąć zmiany przez kliknięcie na przycisk cofnij i powtórzyć je poprzez kliknięcie na przycisk powtórz.\n\nKliknij 'Zapisz' aby skończyć grupę modyfikacji - na przykład, gdy skończyłeś pewien obszar miasta i\nchcesz zacząć następny. Będziesz miał wtedy szansę przejrzeć, co zrobiłeś, a edytor dostarczy pomocne\nsugestie i ostrzeżenia w razie, gdyby coś było nie tak z twoimi zmianami.\n\nJeśli wszystko dobrze wygląda, możesz podać krótki komentarz opisujący zmianę, którą wprowadziłeś\ni kliknąć 'Zapisz' ponownie, aby wysłać zmiany do [OpenStreetMap.org](http://www.openstreetmap.org/),\ngdzie będą one widoczne dla wszystkich użytkowników i dostępne dla innych do bazowania na nich i\ndalszego ulepszania.\n\nJeżeli nie możesz skończyć swoich modyfikacji w czasie jednej sesji, możesz opuścić okno edytora i\nwrócić później (na tym samym komputerze i w tej samej przeglądarce), a edytor zaoferuje ci przywrócenie\ntwojej pracy.\n",
         "roads": "# Drogi\n\nMożesz tworzyć, poprawiać i usuwać drogi używając tego edytora. Drogi mogą być wszelkiego rodzaju:\nścieżki, ulice, szlaki, ścieżki rowerowe i tak dalej - każdy często uczęszczany odcinek powinien dać się\nprzedstawić.\n\n### Zaznaczanie\n\nKliknij drogę, aby ją zaznaczyć. Obwiednia powinna stać się widoczna, wraz z małym menu\nnarzędziowym na mapie oraz panelem bocznym pokazującym więcej informacji na temat drogi.\n\n### Modyfikowanie\n\nCzęsto będziesz widział drogi, które nie są wyrównane ze zdjęciami satelitarnymi lub śladami GPS.\nMożesz dopasować te drogi tak, aby były we właściwym miejscu.\n\nNajpierw kliknij drogę, którą chcesz zmienić. Podświetli ją to oraz pokaże punkty kontrolne, które\nmożesz przesunąć w lepsze miejsce. Jeżeli chcesz dodać nowe punkty kontrolne, aby droga\nbyła bardziej szczegółowa, dwukrotnie kliknij część drogi bez punktu, a w tym miejscu nowy się\npojawi.\n\nJeżeli droga łączy się z inną drogą, ale nie jest prawidłowo połączona z nią na mapie, możesz\nprzeciągnąć jeden z puntów kontrolnych na drugą drogę w celu ich połączenia. Prawidłowe połączenia\ndróg są ważne dla mapy i kluczowe dla wyznaczania tras.\n\nMożesz też kliknąć narzędzie 'Przesuń' lub nacisnąć klawisz `M` aby przesunąć jednocześnie całą\ndrogę, a następnie kliknąć ponownie, aby zachować to przesunięcie.\n\n### Usuwanie\n\nGdy droga jest całkiem błędna - widzisz, że nie istnieje na zdjęciach satelitarnych (a najlepiej sam\nsprawdziłeś w terenie, że jej nie ma) - możesz usunąć ją. Uważaj, gdy usuwasz obiekty - wyniki usunięcia,\ntak jak każdej modyfikacji, są widoczne dla wszystkich, a zdjęcie satelitarne często nie są aktualne,\nwięc droga może być po prostu nowo wybudowana.\n\nMożesz usunąć drogę przez zaznaczenie jej, a następnie kliknięcie ikony kosza lub wciśnięcie\nklawisza 'Delete'.\n\n### Tworzenie\n\nGdzieś tam powinna być droga, ale jej nie ma? Kliknij przycisk 'Linia' w górnym lewym rogu edytora\nlub naciśnij klawisz '2' na klawiaturze, aby zacząć rysować linię.\n\nKliknij początek drogi na mapie, aby zacząć rysować. Jeżeli droga odchodzi od już istniejącej, zacznij\nprzez kliknięcie w miejscu, w którym się łączą.\n\nNastępnie klikaj na punktach wzdłuż drogi tak, aby biegła ona odpowiednio według zdjęć satelitarnych\nlub GPS. Jeżeli droga, którą rysujesz, krzyżuje się z inną, połącz je, klikając na punkcie przecięcia. Gdy\nskończysz rysować, dwukrotnie kliknij ostatni punkt lub naciśnij klawisz 'Enter' na klawiaturze.\n",
+        "gps": "# GPS\n\nDane GPS są najbardziej zaufanym źródłem dla OpenStreetMap. Ten edytor obsługuje lokalne ślady -\npliki `.gpx` na twoim komputerze. Możesz zbierać tego rodzaju ślady GPS używając aplikacji na\nsmartfony lub sprzętu GPS.\n\nInformacje jak używać GPS-u do zbierania informacji o okolicy możesz znaleźć pod\n[Zbieranie informacji z GPS](http://learnosm.org/en/beginner/using-gps/).\n\nAby użyć śladu GPX do rysowania mapy, przeciągnij i upuść plik GPX na edytor. Jeżeli zostanie\nrozpoznany, zostanie dodany na mapę w postaci jaskrawej linii. Kliknij menu 'Ustawienia tła'\npo prawej stronie, aby włączyć, wyłączyć lub powiększyć do nowej warstwy GPX.\n\nŚlad GPX nie jest bezpośrednio wysyłany do OpenStreetMap - najlepiej użyć go do rysowania mapy,\nużywając go jako wzoru dla nowych obiektów, które dodasz. Aby wysłać ślad na serwer odwiedź stronę \n [Publiczne ślady GPS](http://www.openstreetmap.org/trace/create), będziesz mógł go udostępnić\ninnym użytkownikom.\n",
         "imagery": "# Zdjęcia\n\nZdjęcia lotnicze/satelitarne są ważnym zasobem w rysowaniu map. Kolekcja zdjęć lotniczych,\nsatelitarnych i innych wolnodostępnych źródeł jest dostępna w edytorze w menu 'Ustawienia tła' po\nlewej stronie.\n\nDomyślnie wyświetlana jest warstwa zdjęć satelitarnych z [Bing Maps](http://www.bing.com/maps/),\nale w miarę przybliżania i pojawiają się nowe źródła. Niektóre kraje, takie jak Stany Zjednoczone, Francja\nczy Dania mają w pewnych miejscach dostępne zdjęcia bardzo wysokiej jakości.\n\nZdjęcia są czasem przesunięte względem danych na mapie z powodu błędu dostawcy zdjęć. Jeżeli\nwidzisz dużo dróg przesuniętych względem tła, zastanów się, zanim je wszystkie wyrównasz względem\ntła. Zamiast tego może dostosować przesunięcie zdjęć tak, aby zgadzały się z istniejącymi danymi przez\nnaciśnięcie przycisku 'Wyrównaj podkład' na dole Ustawień tła.\n",
         "addresses": "# Adresy\n\nAdresy są jedną z najbardziej użytecznych informacji na mapie.\n\nMimo że adresy są często reprezentowane jako części ulic, w OpenStreetMap są one\nzapisywane jako atrybuty budynków i miejsc wzdłuż ulicy.\n\nMożesz dodać nową informację adresową do miejsc narysowanych w postaci\nobwiedni budynków jak również do tych narysowanych w postaci pojedynczych punktów.\nNajlepszym źródłem danych adresowych jest jak zwykle zwiedzanie okolicy\nlub własna wiedza - tak jak z każdym innym obiektem, kopiowanie danych z komercyjnych\nźródeł takich jak Google Maps jest zabronione.\n",
         "inspector": "# Używanie Inspektora\n\nInspektor jest elementem interfejsu po prawej stronie strony, który pojawia się po zaznaczeniu obiektu\ni który pozwala ci modyfikować jego szczegóły.\n\n### Zaznaczanie typu obiektu\n\nPo dodaniu punktu, linii lub obszaru, możesz wybrać, jakiego rodzaju to jest obiekt, na przykład czy jest\nto autostrada czy droga lokalna, kawiarnia czy supermarket. Inspektor wyświetli przyciski dla\npopularnych typów obiektów, a ty możesz znaleźć inne przez wpisanie tego, czego szukasz do pola\nszukania.\n\nKliknij 'i' w prawym dolnym rogu przycisku typu obiektu, aby dowiedzieć się o nim więcej.\nKliknij przycisk, aby wybrać ten typ.\n\n### Używanie formularzy i edycja tagów\n\nPo wybraniu typu obiektu lub gdy wybierzesz obiekt, który ma już nadany typ, inspektor wyświetli pola\nzawierające szczegóły na temat obiektu, takie jak nazwa i adres.\n\nPoniżej pól, które widzisz, możesz kliknąć ikony w celu dodania innych szczegółów, jak na przykład\ninformacja z [Wikipedii](http://www.wikipedia.org/), dostęp dla wózków inwalidzkich i innych.\n\nNa dole inspektora kliknij 'Dodatkowe tagi', aby dodać dowolne inne tagi do elementu.\n[Taginfo](http://taginfo.openstreetmap.org/) jest świetnym źródłem informacji o popularnych\nkombinacjach tagów.\n\nZmiany, które wprowadzisz w inspektorze, są automatycznie nanoszone na mapę. Możesz je cofnąć w\nkażdym momencie przez wciśnięcie przycisku 'Cofnij'.\n\n### Zamykanie Inspektora\n\nMożesz zamknąć inspektora przez kliknięcie na przycisk zamknij w górnym prawym rogu, wciśnięcie\nklawisza 'Escape' lub kliknięcie mapy.\n",
-        "buildings": "# Budynki\n\nOpenStreetMap jest największą na świecie bazą budynków. Możesz\nprzyczynić się do rozwoju owej bazy.\n\n### Zaznaczanie\n\nMożesz zaznaczyć budynek przez kliknięcie jego obwodu. Podświetli\nto obiekt i otworzy małe menu narzędziowe oraz pasek boczny zawierający\ninformacje o budynku.\n\n### Modyfikowanie\n\nZdarza się, że budynki są umieszczone w nieprawidłowych miejscach\nlub mają nieodpowiednie tagi.\n\nAby przesunąć cały budynek, zaznacz go, a następnie wybierz narzędzie\nprzesuwania. Przesuń kursor myszy, aby zmienić pozycję obiektu, a następnie\nkliknij, gdy już będzie w odpowiednim miejscu.\n\nAby poprawić kształt budynku, kliknij i przeciągnij węzły, które tworzą obwód\nobiektu, w lepiej usytuowane miejsce.\n\n### Tworzenie\n\nJednym z głównych problemów podczas tworzenia budynków jest to,\nże OpenStreetMap przechowuje budynki zarówno w postaci punktów\njak i obszarów. Przyjęło się rysowanie budynków w postaci obszarów, a rysowanie\nfirm, domów czy innej infrastruktury w postaci punktów w obszarze budynku.\n\nZacznij rysować budynek w postaci obszaru przez kliknięcie przycisku 'Obszar'\nw górnym lewym rogu edytora i zakończ go przez naciśnięcie klawisza 'Enter'\nna klawiaturze lub przez kliknięcie na pierwszym rysowanym punkcie w celu\nzamknięcia obszaru.\n\n### Usuwanie\n\nJeżeli budynek jest całkiem błędny - widzisz, że nie ma go na zdjęciach satelitarnych,\na najlepiej sprawdziłeś w terenie, że nie istnieje - możesz go usunąć. Bądź ostrożny\nusuwając obiekty - tak jak po każdej innej modyfikacji, rezultaty są widoczne dla wszystkich,\na zdjęcia satelitarne często nie są aktualne, więc budynek może być po prostu nowo\nwybudowany.\n\nMożesz usunąć budynek przez kliknięcie na nim, a następnie na ikonie\nśmietnika lub wciśnięcie klawisza 'Delete'. \n"
+        "buildings": "# Budynki\n\nOpenStreetMap jest największą na świecie bazą budynków. Możesz\nprzyczynić się do rozwoju owej bazy.\n\n### Zaznaczanie\n\nMożesz zaznaczyć budynek przez kliknięcie jego obwodu. Podświetli\nto obiekt i otworzy małe menu narzędziowe oraz pasek boczny zawierający\ninformacje o budynku.\n\n### Modyfikowanie\n\nZdarza się, że budynki są umieszczone w nieprawidłowych miejscach\nlub mają nieodpowiednie tagi.\n\nAby przesunąć cały budynek, zaznacz go, a następnie wybierz narzędzie\nprzesuwania. Przesuń kursor myszy, aby zmienić pozycję obiektu, a następnie\nkliknij, gdy już będzie w odpowiednim miejscu.\n\nAby poprawić kształt budynku, kliknij i przeciągnij węzły, które tworzą obwód\nobiektu, w lepiej usytuowane miejsce.\n\n### Tworzenie\n\nJednym z głównych problemów podczas tworzenia budynków jest to,\nże OpenStreetMap przechowuje budynki zarówno w postaci punktów\njak i obszarów. Przyjęło się rysowanie budynków w postaci obszarów, a rysowanie\nfirm, domów czy innej infrastruktury w postaci punktów w obszarze budynku.\n\nZacznij rysować budynek w postaci obszaru przez kliknięcie przycisku 'Obszar'\nw górnym lewym rogu edytora i zakończ go przez naciśnięcie klawisza 'Enter'\nna klawiaturze lub przez kliknięcie na pierwszym rysowanym punkcie w celu\nzamknięcia obszaru.\n\n### Usuwanie\n\nJeżeli budynek jest całkiem błędny - widzisz, że nie ma go na zdjęciach satelitarnych,\na najlepiej sprawdziłeś w terenie, że nie istnieje - możesz go usunąć. Bądź ostrożny\nusuwając obiekty - tak jak po każdej innej modyfikacji, rezultaty są widoczne dla wszystkich,\na zdjęcia satelitarne często nie są aktualne, więc budynek może być po prostu nowo\nwybudowany.\n\nMożesz usunąć budynek przez kliknięcie na nim, a następnie na ikonie\nśmietnika lub wciśnięcie klawisza 'Delete'. \n",
+        "relations": "# Relacje\n\nRelacja to specjalny rodzaj obiektu w OpenStreetMap, który grupuje razem\ninne obiekty. Na przykład dwa powszechne rodzaje relacji to *relacje trasy*\nktóre grupują odcinki drogi należące do konkretnej autostrady lub drogi oraz\n*wielokąty* łączące razem kilka linii, które definiują bardziej złożony obszar\n(na przykład las z polaną w środku).\n\nKażdy element relacji nazywany jest *członkiem*. W pasku bocznym możesz\nzobaczyć do której relacji należy obiekt i kliknąć aby ją zaznaczyć. Gdy relacja\njest zaznaczona, ukaże nam się lista jej członków, które jednocześnie zostaną \npodświetlone na mapie.\n\nPrzeważnie edytor iD automatycznie sprawdza relacje podczas twoich edycji.\nTrzeba pamiętać o ważnej rzeczy, gdy kasujesz jakiś fragment linii (np. aby\ndokładniej go narysować), sprawdź wcześniej do jakich relacji należy oraz\njakie pełni w nich role aby uzupełnić te dane po wyrysowaniu linii.\n\n## Edycja relacji\n\nJeśli chcesz edytować relacje, oto podstawy wiedzy.\n\nAby dodać obiekt do relacji, zaznacz obiekt i wciśnij \"+\" w sekcji \"Wszystkie relacje\"\ni wybierz relację lub wpisz jej nazwę.\n\nAby utworzyć nową relację, zaznacz pierwszy obiekt, który ma być członkiem\nrelacji i wciśnij \"+\" w sekcji \"Wszystkie relacje\" i wybierz \"Nowa relacja...\"\n\nAby usunąć obiekt z relacji, zaznacz obiekt i kliknij ikonkę kosza obok\nrelacji, z której chcesz go usunąć.\n\nMożesz stworzyć wielokąt złożony z otworem używając narzędzia Scalanie.\nNarysuj dwa obszary, gdzie jeden znajduje się wewnątrz drugiego, zaznacz\noba przytrzymując klawisz Shift i kliknij przycisk \"Scal te linie\" (+).\n"
     },
     "intro": {
         "navigation": {
         },
         "lines": {
             "title": "Linie",
+            "add": "Linie są używane do reprezentowania obiektów takich jak drogi, tory czy rzeki. **Naciśnij przycisk Linia, aby dodać nową linię.**",
             "start": "**Zacznij linię klikając na koniec drogi.**",
             "intersect": "Kliknij, aby dodać więcej punktów do linii. W razie potrzeby możesz przeciągać mapę podczas rysowania. Drogi i wiele innych typów linii są częścią większej sieci. Ważne jest ich prawidłowe połączenie, aby programy do wyznaczania tras działały poprawnie. **Kliknij na Flower Street, aby dodać skrzyżowanie łączące dwie linie.**",
             "finish": "Linie można zakończyć przez ponowne kliknięcie ostatniego punktu. **Zakończ rysowanie drogi.**",
             "road": "**Wybierz drogę z listy**",
             "residential": "Istnieje wiele rodzajów dróg, spośród których najpopularniejsze są drogi lokalne. **Wybierz typ drogi Lokalna**",
             "describe": "**Nazwij drogę i zamknij edytor obiektów.**",
-            "restart": "Droga musi się skrzyżować z Flower Street."
+            "restart": "Droga musi się skrzyżować z Flower Street.",
+            "wrong_preset": "Nie zaznaczyłeś drogi typu lokalnego. **Kliknij tutaj aby wybrać ponownie**"
         },
         "startediting": {
             "title": "Rozpocznij edytowanie",
                 "terms": "droga, rozbieg"
             },
             "aeroway/taxiway": {
-                "name": "Droga kołowania"
+                "name": "Droga kołowania",
+                "terms": "droga kołowania"
             },
             "aeroway/terminal": {
                 "name": "Terminal pasażerski",
                 "terms": "samolot,port lotniczy"
             },
             "amenity": {
-                "name": "Udogodnienie"
+                "name": "Usługa",
+                "terms": "usługi,usługa,udogodnienia,"
             },
             "amenity/arts_centre": {
                 "name": "Centrum artystyczne"
                 "terms": "kantor,towarzystwo kredytowe,depozyt,skarb państwa,fundusz,firma inwestycyjna,przedsiębiorstwo inwestycyjne,sejf,oszczędności,akcje,ekonomia,skarbiec,firma powiernicza"
             },
             "amenity/bar": {
-                "name": "Bar"
+                "name": "Bar",
+                "terms": "bar"
             },
             "amenity/bench": {
-                "name": "Ławka"
+                "name": "Ławka",
+                "terms": "ławka,siedzenie,siedzisko"
             },
             "amenity/bicycle_parking": {
-                "name": "Parking dla rowerów"
+                "name": "Parking dla rowerów",
+                "terms": "stojak,parking"
             },
             "amenity/bicycle_rental": {
-                "name": "Wypożyczalnia rowerów"
+                "name": "Wypożyczalnia rowerów",
+                "terms": "wypożyczalnia"
             },
             "amenity/cafe": {
                 "name": "Kawiarnia",
                 "terms": "kawa,herbata,kawiarnia"
             },
             "amenity/car_rental": {
-                "name": "Wypożyczalnia samochodów"
+                "name": "Wypożyczalnia samochodów",
+                "terms": "wypożyczalnia samochodów"
             },
             "amenity/car_sharing": {
                 "name": "Car-sharing"
             },
             "amenity/car_wash": {
-                "name": "Myjnia samochodowa"
+                "name": "Myjnia samochodowa",
+                "terms": "myjnia"
             },
             "amenity/childcare": {
-                "name": "Żłobek"
+                "name": "Żłobek",
+                "terms": "opieka,przedszkole"
             },
             "amenity/cinema": {
                 "name": "Kino",
                 "terms": "duży ekran,drive-in,film,ruchomy obraz,pokaz zdjęć,zdjęcia,pokaz,silver screen"
             },
             "amenity/college": {
-                "name": "Uczelnia"
+                "name": "Uczelnia",
+                "terms": "uczelnia"
             },
             "amenity/courthouse": {
-                "name": "Sąd"
+                "name": "Sąd",
+                "terms": "sąd,sprawiedliwość,trybunał"
             },
             "amenity/drinking_water": {
                 "name": "Woda pitna",
                 "terms": "wodotrysk,woda pitna"
             },
             "amenity/embassy": {
-                "name": "Ambasada"
+                "name": "Ambasada",
+                "terms": "ambasada"
             },
             "amenity/fast_food": {
                 "name": "Fast food"
             },
             "amenity/fire_station": {
-                "name": "Straż pożarna"
+                "name": "Straż pożarna",
+                "terms": "straż,osp"
             },
             "amenity/fountain": {
-                "name": "Fontanna"
+                "name": "Fontanna",
+                "terms": "fontanna,wodotrysk"
             },
             "amenity/fuel": {
-                "name": "Stacja benzynowa"
+                "name": "Stacja benzynowa",
+                "terms": "gaz,lpg"
             },
             "amenity/grave_yard": {
-                "name": "Cmentarz"
+                "name": "Cmentarz",
+                "terms": "cmentarz,pochówek"
             },
             "amenity/hospital": {
                 "name": "Szpital",
                 "terms": "zerówka,żłobek,opieka nad dzieckiem"
             },
             "amenity/library": {
-                "name": "Biblioteka"
+                "name": "Biblioteka",
+                "terms": "biblioteka,czytelnia"
             },
             "amenity/marketplace": {
-                "name": "Targowisko"
+                "name": "Targowisko",
+                "terms": "targowisko,targ,rynek,giełda"
             },
             "amenity/parking": {
-                "name": "Parking"
+                "name": "Parking",
+                "terms": "parking,postój"
             },
             "amenity/pharmacy": {
-                "name": "Apteka"
+                "name": "Apteka",
+                "terms": "apteka,leki"
             },
             "amenity/place_of_worship": {
                 "name": "Miejsce kultu religijnego",
                 "terms": "chrześcijaństwo,opactwo,bazylika,katedra,prezbiterium,kaplica,dom Boży,dom modlitwy,misja,oratorium,parafia,sanktuarium,świątynia,tabernakulum"
             },
             "amenity/place_of_worship/jewish": {
-                "name": "Synagoga"
+                "name": "Synagoga",
+                "terms": "synagoga"
             },
             "amenity/place_of_worship/muslim": {
-                "name": "Meczet"
+                "name": "Meczet",
+                "terms": "meczet"
             },
             "amenity/police": {
                 "name": "Policja",
                 "terms": "odznaka,niebiescy,gliniarz,detektyw,glina,żandarm,smerfy,psy,prawo,egzekucja prawa,funkcjonariusze"
             },
             "amenity/post_box": {
-                "name": "Skrzynka pocztowa"
+                "name": "Skrzynka pocztowa",
+                "terms": "skrzynka,pocztowa,listy"
             },
             "amenity/post_office": {
-                "name": "Poczta"
+                "name": "Poczta",
+                "terms": "poczta,urząd,pocztowy"
             },
             "amenity/pub": {
-                "name": "Pub"
+                "name": "Pub",
+                "terms": "pub,piwo,wino"
             },
             "amenity/restaurant": {
                 "name": "Restauracja",
                 "terms": "bar,kawiarnia,stołówka,jadalnia,drive-in,knajpa,jadłodajnia,fast food,grill,gospoda,klub nocny,pizzeria"
             },
             "amenity/school": {
-                "name": "Szkoła"
+                "name": "Szkoła",
+                "terms": "szkoła"
             },
             "amenity/swimming_pool": {
-                "name": "Basen"
+                "name": "Basen",
+                "terms": "basen,pływalnia"
             },
             "amenity/taxi": {
-                "name": "Postój taksówek"
+                "name": "Postój taksówek",
+                "terms": "postój,taksówek,taxi"
             },
             "amenity/telephone": {
-                "name": "Telefon"
+                "name": "Telefon",
+                "terms": "telefon,budka,telefoniczna"
             },
             "amenity/theatre": {
-                "name": "Teatr"
+                "name": "Teatr",
+                "terms": "teatr,sztuka,przedstawienie"
             },
             "amenity/toilets": {
-                "name": "Toalety"
+                "name": "Toalety",
+                "terms": "toaleta,wc"
             },
             "amenity/townhall": {
                 "name": "Ratusz",
                 "terms": "kosz,kubeł,śmietnik"
             },
             "area": {
-                "name": "Obszar"
+                "name": "Obszar",
+                "terms": "obszar,obręb,powierzchnia"
             },
             "barrier": {
-                "name": "Bariera"
+                "name": "Bariera",
+                "terms": "bariera,przeszkoda,ograniczenie,utrudnienie"
             },
             "barrier/block": {
-                "name": "Blok"
+                "name": "Blok",
+                "terms": "blok"
             },
             "barrier/bollard": {
-                "name": "Słupek"
+                "name": "Słupek",
+                "terms": "słupek,słup,pal"
             },
             "barrier/cattle_grid": {
-                "name": "Przeszkoda dla bydła"
+                "name": "Przeszkoda dla bydła",
+                "terms": "kratka,bydło"
             },
             "barrier/city_wall": {
-                "name": "Mur miejski"
+                "name": "Mur miejski",
+                "terms": "mur,ściana,miejski"
             },
             "barrier/cycle_barrier": {
                 "name": "Przegroda dla rowerzystów"
                 "name": "Budynek przymysłowy"
             },
             "building/residential": {
-                "name": "Budynek mieszklany"
+                "name": "Budynek mieszkalny",
+                "terms": "blok, kamienica, dom, czynszówka"
             },
             "emergency/ambulance_station": {
                 "name": "Stacja pogotowia ratunkowego"
                 "name": "Mini-rondo"
             },
             "highway/motorway": {
-                "name": "Autostrada"
+                "name": "Autostrada",
+                "terms": "autostrada"
             },
             "highway/motorway_junction": {
-                "name": "Węzeł autostradowy"
+                "name": "Węzeł autostradowy",
+                "terms": "węzeł, skrzyżowanie, autostrad"
             },
             "highway/motorway_link": {
                 "name": "Autostrada - wjazd/zjazd",
                 "name": "Deptak"
             },
             "highway/primary": {
-                "name": "Droga krajowa"
+                "name": "Droga pierwszorzędna",
+                "terms": "główna droga, droga krajowa, główna, pierwszorzędna, DK, ważna"
             },
             "highway/primary_link": {
-                "name": "Droga krajowa - wjazd/zjazd",
+                "name": "Droga pierwszorzędna - wjazd/zjazd",
                 "terms": "rampa,wjazd,wyjazd,zjazd"
             },
             "highway/residential": {
-                "name": "Droga lokalna"
+                "name": "Droga lokalna",
+                "terms": "lokalna, osiedlowa, zamieszkała"
             },
             "highway/road": {
                 "name": "Nieokreślona droga"
             },
             "highway/secondary": {
-                "name": "Droga wojewódzka"
+                "name": "Droga drugorzędna"
             },
             "highway/secondary_link": {
-                "name": "Droga wojewódzka - wjazd/zjazd",
+                "name": "Droga drugorzędna - wjazd/zjazd",
                 "terms": "rampa,wjazd,wyjazd,zjazd"
             },
             "highway/service": {
                 "name": "Schody"
             },
             "highway/tertiary": {
-                "name": "Droga powiatowa"
+                "name": "Droga trzeciorzędna"
             },
             "highway/tertiary_link": {
-                "name": "Droga powiatowa - wjazd/zjazd",
+                "name": "Droga trzeciorzędna - wjazd/zjazd",
                 "terms": "rampa,wjazd,wyjazd,zjazd"
             },
             "highway/track": {
-                "name": "Droga gruntowa"
+                "name": "Droga gruntowa",
+                "terms": "polna, leśna, gruntowa"
             },
             "highway/traffic_signals": {
                 "name": "Sygnalizacja świetlna",
                 "terms": "światła,sygnalizacja świetlna,sygnalizator"
             },
             "highway/trunk": {
-                "name": "Droga ekspresowa"
+                "name": "Droga ekspresowa",
+                "terms": "ekspresowa,szybkiego,ruchu"
             },
             "highway/trunk_link": {
                 "name": "Droga ekspresowa - zjazd/wjazd",
                 "name": "Użytkowanie gruntów"
             },
             "landuse/allotments": {
-                "name": "Działki"
+                "name": "Ogródki działkowe"
             },
             "landuse/basin": {
                 "name": "Zbiornik wodny"
                 "name": "Cmentarz"
             },
             "landuse/commercial": {
-                "name": "Biura i usługi"
+                "name": "Handlowy"
             },
             "landuse/construction": {
                 "name": "Budowa"
                 "name": "Kamieniołom"
             },
             "landuse/residential": {
-                "name": "Zabudowa mieszkaniowa"
+                "name": "Zabudowa mieszkaniowa",
+                "terms": "mieszkalny, zamieszkany, mieszkaniowy"
             },
             "landuse/retail": {
                 "name": "Obszar handlowy"
                 "name": "Basen"
             },
             "leisure/track": {
-                "name": "Tor wyścigowy"
+                "name": "Tor wyścigowy",
+                "terms": "tor wyścigowy"
             },
             "line": {
                 "name": "Linia"
index d278fa6118e4868863f65588ee2e1a88340284ab..2ff442a92cf0fd8d46a5e714872436df937578a0 100644 (file)
                 "name": "Питьевая вода"
             },
             "amenity/embassy": {
-                "name": "Посольство"
+                "name": "Посольство",
+                "terms": "посольство"
             },
             "amenity/fast_food": {
                 "name": "Фаст-фуд",
                 "name": "Детский сад"
             },
             "amenity/library": {
-                "name": "Библиотека"
+                "name": "Библиотека",
+                "terms": "библиотека"
             },
             "amenity/marketplace": {
                 "name": "Рынок"
                 "terms": "синагога"
             },
             "amenity/place_of_worship/muslim": {
-                "name": "Мечеть"
+                "name": "Мечеть",
+                "terms": "мечеть"
             },
             "amenity/police": {
                 "name": "Полиция",
                 "terms": "Школа, лицей, гимназия"
             },
             "amenity/swimming_pool": {
-                "name": "Бассейн"
+                "name": "Бассейн",
+                "terms": "плавательный бассейн, плавательный бассеин"
             },
             "amenity/taxi": {
                 "name": "Стоянка такси"
             "building/apartments": {
                 "name": "Многоквартирный дом"
             },
+            "building/commercial": {
+                "name": "Деловое здание,Коммерческое здание,Коммерческая недвижимость,Деловая недвижимость"
+            },
             "building/entrance": {
                 "name": "Вход"
             },
             "building/hut": {
                 "name": "Хижина"
             },
+            "building/industrial": {
+                "name": "Промышленное здание,Производственное здание,Индустриальное здание"
+            },
             "building/residential": {
                 "name": "Жилой Дом"
             },
                 "name": "Хранилище сточных вод"
             },
             "landuse/cemetery": {
-                "name": "Кладбище"
+                "name": "Кладбище",
+                "terms": "кладбище"
             },
             "landuse/commercial": {
                 "name": "Коммерческая застройка"
                 "name": "Башня"
             },
             "man_made/wastewater_plant": {
-                "name": "Станция водоочистки"
+                "name": "Станция водоочистки",
+                "terms": "станция водоочистки, станция очистки воды, очистные сооружения, водоочистные сооружения"
             },
             "man_made/water_tower": {
                 "name": "Водонапорная башня"
index a487ec0134d78bbac656c0a3f288fa172e0fa101..554ef59968c159f8be6f4eb2e37ea2b853f98f2f 100644 (file)
             "not_closed": "Tento objekt nemožno usporiadať do kruhu, pretože nie je uzavretý do slučky."
         },
         "orthogonalize": {
+            "title": "Usporiadaj do pravého uhla.",
+            "description": {
+                "line": "Sprav rohy tejto čiary do pravého uhla.",
+                "area": "Sprav rohy tejto plochy do pravého uhla."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Usporiadanie rohov čiary do pravého uhla.",
                 "area": "Usporiadanie rohov plochy do pravého uhla."
         },
         "straighten": {
             "title": "Vyrovnaj",
-            "description": "Vyrovná túto čiaru",
-            "key": "S"
+            "description": "Vyrovnaj túto čiaru.",
+            "key": "S",
+            "annotation": "Vyrovnanie čiary.",
+            "too_bendy": "Tento objekt nemožno vyrovnať, pretože je príliš nepravidelný."
         },
         "delete": {
             "title": "Vymaž",
index 78f63894103d0545458a4f862474cc9ab035077c..e126cd208debb289fac808ef6796866001315548 100644 (file)
             "not_closed": "Неможливо перетворити на коло — лінія не замкнена."
         },
         "orthogonalize": {
+            "title": "Випрямити кути",
+            "description": {
+                "line": "Зробити кути цієї лінії прямими.",
+                "area": "Зробити кути цього полігону прямими."
+            },
+            "key": "S",
             "annotation": {
                 "line": "Випрямлено кути лінії.",
                 "area": "Випрямлено кути полігону."
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Випрямити",
             "description": "Зробити цю лінію прямою.",
-            "key": "S"
+            "key": "S",
+            "annotation": "Лінія випрямлена.",
+            "too_bendy": "Цю лінію не вдалось випрямити, бо вона надто вигнута."
         },
         "delete": {
             "title": "Вилучити",
                 "name": "Землекористування"
             },
             "category-path": {
-                "name": "ТÑ\80опа"
+                "name": "СÑ\82ежки"
             },
             "category-rail": {
                 "name": "Рейки"
             },
             "category-road": {
-                "name": "Ð\94оÑ\80ога"
+                "name": "Ð\94оÑ\80оги"
             },
             "category-route": {
-                "name": "Маршрут"
+                "name": "Маршрути"
             },
             "category-water": {
                 "name": "Вода"
         "presets": {
             "address": {
                 "name": "Адреса",
-                "terms": "адреса,місце"
+                "terms": "Address, flhtcf, місце"
             },
             "aeroway": {
                 "name": "Аеропорт",
-                "terms": "повітряний транспорт,повітряне сполучення"
+                "terms": "Aeroway, fthjgjhn, повітряний транспорт,повітряне сполучення"
             },
             "aeroway/aerodrome": {
-                "name": "Аеропорт"
+                "name": "Аеропорт",
+                "terms": "Airport, fthjgjhn, аеродром, летовище"
             },
             "aeroway/apron": {
-                "name": "Перон"
+                "name": "Перон",
+                "terms": "Apron, gthjy"
             },
             "aeroway/gate": {
-                "name": "Вихід на посадку"
+                "name": "Вихід на посадку",
+                "terms": "Airport gate, dbsl yf gjcflre"
             },
             "aeroway/hangar": {
-                "name": "Ангар"
+                "name": "Ангар",
+                "terms": "Hangar, fyufh"
             },
             "aeroway/helipad": {
                 "name": "Вертолітний майданчик",
-                "terms": "вертоліт,вертолітний майданчик,вертодром"
+                "terms": "Helipad, dthnjksnybq vfqlfyxbr, вертоліт, вертодром"
             },
             "aeroway/runway": {
                 "name": "Злітно-посадкова смуга",
-                "terms": "посадкова смуга,злітна смуга"
+                "terms": "Runway, pksnyj-gjcflrjdf cveuf, посадкова смуга,злітна смуга"
             },
             "aeroway/taxiway": {
-                "name": "Руліжна доріжка"
+                "name": "Руліжна доріжка",
+                "terms": "Taxiway, heksyf ljhsrf"
             },
             "aeroway/terminal": {
-                "name": "Термінал"
+                "name": "Термінал",
+                "terms": "Airport terminal, nthvsyfk"
             },
             "amenity": {
                 "name": "Зручності",
-                "terms": "зручності,комфорт,комфортабельність,комунальні зручності"
+                "terms": "Amenity, phexyjcns, комфорт,комфортабельність,комунальні зручності"
             },
             "amenity/arts_centre": {
-                "name": "Мистецький центр"
+                "name": "Мистецький центр",
+                "terms": "Arts Center,vbcntwmrbq wtynh, галерея"
             },
             "amenity/atm": {
                 "name": "Банкомат",
-                "terms": "банкомат"
+                "terms": "ATM, fyrjvfn"
             },
             "amenity/bank": {
                 "name": "Банк",
-                "terms": "банк,каса,кредитна спілка,скарбниця,казначейство,відділення,кредит,депозит,платіж,готівка,переказ"
+                "terms": "Bank, fyr,каса,кредитна спілка,скарбниця,казначейство,відділення,кредит,депозит,платіж,готівка,переказ"
             },
             "amenity/bar": {
-                "name": "Бар"
+                "name": "Бар",
+                "terms": "Bar, fh"
             },
             "amenity/bench": {
-                "name": "Лавка"
+                "name": "Лавка",
+                "terms": "Bench, kfdrf"
             },
             "amenity/bicycle_parking": {
-                "name": "Вело-парковка"
+                "name": "Вело-парковка",
+                "terms": "Bicycle Parking, dtkj-gfhrjdrf"
             },
             "amenity/bicycle_rental": {
-                "name": "Прокат велосипедів"
+                "name": "Прокат велосипедів",
+                "terms": "Bicycle Rental, ghjrfn dtkjcbgtlsd"
             },
             "amenity/boat_rental": {
                 "name": "Прокат човнів",
-                "terms": "катамарани"
+                "terms": "Boat Rental,ghjrfn xjdysd, катамарани"
             },
             "amenity/cafe": {
-                "name": "Кафе"
+                "name": "Кафе",
+                "terms": "Cafe, rfat"
             },
             "amenity/car_rental": {
-                "name": "Прокат автомобілів"
+                "name": "Прокат автомобілів",
+                "terms": "Car Rental, ghjrfn fdnjvjsksd"
             },
             "amenity/car_sharing": {
-                "name": "Короткострокова оренда автомобіля"
+                "name": "Короткострокова оренда автомобіля",
+                "terms": "Car Sharing, rjhjnrjcnhjrjdf jhtylf fdnjvjskz"
             },
             "amenity/car_wash": {
-                "name": "Автомийка"
+                "name": "Автомийка",
+                "terms": "Car Wash, fdnjvbqrf, мийка"
             },
             "amenity/childcare": {
                 "name": "Дитяча кімната",
-                "terms": "догляд за дітьми, ігрова зона, ігрова кімната"
+                "terms": "Childcare, lbnzxf rsvyfnf, догляд за дітьми, ігрова зона, ігрова кімната"
             },
             "amenity/cinema": {
                 "name": "Кінотеатр",
-                "terms": "кіно,кінотеатр,кінематографія"
+                "terms": "Cinema, rsyjntfnh,кіно,кінематографія"
             },
             "amenity/college": {
                 "name": "Коледж",
-                "terms": "коледж,училище,технікум"
+                "terms": "College, rjktl,училище,технікум"
             },
             "amenity/courthouse": {
                 "name": "Суд",
-                "terms": "суд"
+                "terms": "Courthouse, cel, суд"
             },
             "amenity/drinking_water": {
                 "name": "Питна вода",
-                "terms": "питна вода"
+                "terms": "Drinking Water, gbnyf djlf"
             },
             "amenity/embassy": {
                 "name": "Амбасада",
-                "terms": "амбасада,посольство,місія"
+                "terms": "Embassy, fvfcflf,посольство,місія"
             },
             "amenity/fast_food": {
                 "name": "Фаст-Фуд",
-                "terms": "фаст-фуд,проста їжа,швидкі страви"
+                "terms": "Fast Food, afcn-ael,проста їжа,швидкі страви"
             },
             "amenity/fire_station": {
                 "name": "Пожежна станція",
-                "terms": "пожежне депо"
+                "terms": "Fire Station, gjtyf cnfywsz, пожежне депо"
             },
             "amenity/fountain": {
                 "name": "Фонтан",
-                "terms": "фонтан,вода"
+                "terms": "Fountain, ajynfy,вода"
             },
             "amenity/fuel": {
                 "name": "Заправка",
-                "terms": "азс,заправка,паливо,бензин,дизельне паливо"
+                "terms": "Gas Station, pfghfdrf,азс,паливо,бензин,дизельне паливо"
             },
             "amenity/grave_yard": {
                 "name": "Цвинтар",
-                "terms": "цвинтар,кладовище"
+                "terms": "Graveyard, wdbynfh,кладовище"
             },
             "amenity/hospital": {
                 "name": "Лікарня",
-                "terms": "шпиталь,лікарня,госпіталь,стаціонар,лазарет"
+                "terms": "Hospital, ksrfhyz,шпиталь,госпіталь,стаціонар,лазарет"
             },
             "amenity/kindergarten": {
                 "name": "Дитячий садок",
-                "terms": "дитячий садок,ясла"
+                "terms": "Kindergarten, lbnzxbq cfljr,ясла"
             },
             "amenity/library": {
                 "name": "Бібліотека",
-                "terms": "бібліотека"
+                "terms": "Library, sksjntrf"
             },
             "amenity/marketplace": {
                 "name": "Ринок",
-                "terms": "ринок,базар,базарна площа"
+                "terms": "Marketplace, hbyjr,базар,базарна площа"
             },
             "amenity/parking": {
                 "name": "Стоянка",
-                "terms": "парковка,паркування,стоянка"
+                "terms": "Parking, cnjzyrf,парковка,паркування"
             },
             "amenity/pharmacy": {
                 "name": "Аптека",
-                "terms": "аптека,ліки,фармація"
+                "terms": "Pharmacy, fgntrf,ліки,фармація"
             },
             "amenity/place_of_worship": {
                 "name": "Культове місце",
-                "terms": "культове місце,церква,собор,мечеть,синагога,молитовний дім"
+                "terms": "Place of Worship, rekmnjdt vscwt,церква,собор,мечеть,синагога,молитовний дім"
             },
             "amenity/place_of_worship/buddhist": {
                 "name": "Буддійський храм",
-                "terms": "буддійський храм"
+                "terms": "Buddhist Temple, ellsqcmrbq hfv"
             },
             "amenity/place_of_worship/christian": {
                 "name": "Церква",
-                "terms": "церква,храм,собор,костьол"
+                "terms": "Church, wthrdf,храм,собор,костьол"
             },
             "amenity/place_of_worship/jewish": {
                 "name": "Синагога",
-                "terms": "синагога"
+                "terms": "Synagogue, cbyfujuf"
             },
             "amenity/place_of_worship/muslim": {
                 "name": "Мечеть",
-                "terms": "мечеть"
+                "terms": "Mosque, vtxtnm"
             },
             "amenity/police": {
                 "name": "Міліція/Поліція",
-                "terms": "міліція,поліція,охорона порядку"
+                "terms": "Police, vskswsz,gjkswsz,міліція,поліція,охорона порядку"
             },
             "amenity/post_box": {
                 "name": "Поштова скриня",
-                "terms": "поштова скринька"
+                "terms": "Mailbox, gjinjdf crhbyz,поштова скринька"
             },
             "amenity/post_office": {
                 "name": "Пошта",
-                "terms": "пошта,поштамт"
+                "terms": "Post Office, gjinf,поштамт"
             },
             "amenity/pub": {
                 "name": "Паб",
-                "terms": "бар,пивна,шинок,пивниця,трактир"
+                "terms": "Pub, gf,бар,пивна,шинок,пивниця,трактир"
             },
             "amenity/ranger_station": {
-                "name": "Контора лісництва"
+                "name": "Контора лісництва",
+                "terms": "Ranger Station,rjynjhf kscybwndf, лісник, лісництво"
             },
             "amenity/restaurant": {
                 "name": "Ресторан",
-                "terms": "ресторан"
+                "terms": "Restaurant, htcnjhfy"
             },
             "amenity/school": {
                 "name": "Школа",
-                "terms": "школа,навчання,факультет"
+                "terms": "School, irjkf,навчання,факультет"
             },
             "amenity/swimming_pool": {
                 "name": "Басейн",
-                "terms": "басейн"
+                "terms": "Swimming Pool, fctqy"
             },
             "amenity/taxi": {
                 "name": "Стоянка таксі",
-                "terms": "стоянка таксі,таксі"
+                "terms": "Taxi Stand, cnjzyrf nfrcs,таксі"
             },
             "amenity/telephone": {
                 "name": "Телефон",
-                "terms": "телефон"
+                "terms": "Telephone, ntktajy"
             },
             "amenity/theatre": {
                 "name": "Театр",
-                "terms": "театр"
+                "terms": "Theater, ntfnh"
             },
             "amenity/toilets": {
                 "name": "Туалет",
-                "terms": "туалет"
+                "terms": "Toilets, nefktn"
             },
             "amenity/townhall": {
                 "name": "Міська державна адміністрація",
-                "terms": "мерія,ратуша,міськвиконком"
+                "terms": "Town Hall, vscmrf lthfdyf flvsyscnhfwsz, мерія,ратуша,міськвиконком"
             },
             "amenity/university": {
                 "name": "Університет",
-                "terms": "університет"
+                "terms": "University, eysdthcbntn"
             },
             "amenity/vending_machine": {
                 "name": "Торговельний автомат",
-                "terms": "торгівельний автомат, торговий автомат"
+                "terms": "Vending Machine,njhujdtkmybq fdnjvfn, торгівельний автомат, торговий автомат"
             },
             "amenity/waste_basket": {
                 "name": "Бак для сміття",
-                "terms": "кошик для сміття"
+                "terms": "Waste Basket, fr lkz cvsnnz, кошик для сміття"
             },
             "area": {
                 "name": "Полігон",
-                "terms": "район,область,площа,простір,ділянка,край,площина"
+                "terms": "Area, gjksujy,район,область,площа,простір,ділянка,край,площина"
             },
             "barrier": {
                 "name": "Перепони",
-                "terms": "бар’єр,шлагбаум,перешкода,рубіж,межа,застава,лінія поділу,огорожа,перемичка,поручні "
+                "terms": "Barrier, gthtgjyb, бар’єр,шлагбаум,перешкода,рубіж,межа,застава,лінія поділу,огорожа,перемичка,поручні "
             },
             "barrier/block": {
                 "name": "Блок",
-                "terms": "перешкода,кам’яна брила"
+                "terms": "Block, kjr, перешкода,кам’яна брила"
             },
             "barrier/bollard": {
                 "name": "Стовпчик",
-                "terms": "стовп,кнехт"
+                "terms": "Bollard, cnjdgxbr, стовп,кнехт"
             },
             "barrier/cattle_grid": {
                 "name": "Перешкода для худоби",
-                "terms": "перешкода для виходу худоби з пасовища на дорогу"
+                "terms": "Cattle Grid, gthtirjlf lkz eljb, перешкода для виходу худоби з пасовища на дорогу"
             },
             "barrier/city_wall": {
                 "name": "Міська стіна",
-                "terms": "міська стіна"
+                "terms": "City Wall, vscmrf cnsyf"
             },
             "barrier/cycle_barrier": {
                 "name": "Перешкода для велосипедистів",
-                "terms": "перешкода для велосипедів"
+                "terms": "Cycle Barrier, gthtirjlf lkz dtkjcbgtlbcnsd, перешкода для велосипедів"
             },
             "barrier/ditch": {
                 "name": "Канава",
-                "terms": "рів,кювет,канава,рівчак,канал,траншея"
+                "terms": "Ditch, rfyfdf,рів,кювет,рівчак,канал,траншея"
             },
             "barrier/entrance": {
                 "name": "Вхід",
-                "terms": "вхід,під’їзд,в’їзд,доступ,хід,двері"
+                "terms": "Entrance,dsl,під’їзд,в’їзд,доступ,хід,двері"
             },
             "barrier/fence": {
                 "name": "Огорожа",
-                "terms": "паркан, тин"
+                "terms": "Fence,jujhjf,паркан, тин"
             },
             "barrier/gate": {
-                "name": "Ворота"
+                "name": "Ворота",
+                "terms": "Gate,djhjnf"
             },
             "barrier/hedge": {
-                "name": "Жива огорожа"
+                "name": "Жива огорожа",
+                "terms": "Hedge,bdf jujhjf"
             },
             "barrier/kissing_gate": {
-                "name": "Вузька хвіртка"
+                "name": "Вузька хвіртка",
+                "terms": "Kissing Gate,depmrf dshnrf"
             },
             "barrier/lift_gate": {
-                "name": "Шлагбаум"
+                "name": "Шлагбаум",
+                "terms": "Lift Gate,ikfufev"
             },
             "barrier/retaining_wall": {
-                "name": "Підпірна стіна"
+                "name": "Підпірна стіна",
+                "terms": "Retaining Wall,gslgshyf cnsyf"
             },
             "barrier/stile": {
-                "name": "Перелаз/Турнікет"
+                "name": "Перелаз/Турнікет",
+                "terms": "Stile,gthtkfp, nehysrtn"
             },
             "barrier/toll_booth": {
-                "name": "Пункт сплати за проїзд"
+                "name": "Пункт сплати за проїзд",
+                "terms": "Toll Booth,geyrn cgkfnb pf ghjpl"
             },
             "barrier/wall": {
-                "name": "Стіна"
+                "name": "Стіна",
+                "terms": "Wall,cnsyf"
             },
             "boundary/administrative": {
-                "name": "Адміністративний кордон"
+                "name": "Адміністративний кордон",
+                "terms": "Administrative Boundary,flvsyscnhfnbdybq rjhljy"
             },
             "building": {
                 "name": "Будинок",
-                "terms": "будинок,будівля,споруда,нерухомість"
+                "terms": "Building,elbyjr,будівля,споруда,нерухомість"
             },
             "building/apartments": {
-                "name": "Житло"
+                "name": "Житло",
+                "terms": "Apartments,bnkj"
             },
             "building/commercial": {
                 "name": "Комерційна нерухомість",
-                "terms": "комерційна нерухомість"
+                "terms": "Commercial Building,rjvthwsqyf ythejvscnm"
             },
             "building/entrance": {
                 "name": "Вхід",
-                "terms": "вхід,двері,ворота,вихід,фіртка"
+                "terms": "Entrance,dsl,двері,ворота,вихід,фіртка"
             },
             "building/garage": {
                 "name": "Гараж",
-                "terms": "гараж"
+                "terms": "Garage,ufhf"
             },
             "building/house": {
                 "name": "Дім",
-                "terms": "житловий будинок"
+                "terms": "House,lsv,житловий будинок"
             },
             "building/hut": {
                 "name": "Сторожка",
-                "terms": "хатина,барак,сторожка"
+                "terms": "Hut,cnjhjrf,хатина,барак"
             },
             "building/industrial": {
-                "name": "Промислова будівля"
+                "name": "Промислова будівля",
+                "terms": "Industrial Building,ghjvbckjdf elsdkz"
             },
             "building/residential": {
-                "name": "Житлова будівля"
+                "name": "Житлова будівля",
+                "terms": "Residential Building,bnkjdf elsdkz"
             },
             "emergency/ambulance_station": {
                 "name": "Станція швидкої медичної допомоги",
-                "terms": "перша допомога"
+                "terms": "Ambulance Station,cnfywsz idblrj vtlbxyj ljgjvjub, швидка допомога, перша допомога"
             },
             "emergency/fire_hydrant": {
-                "name": "Пожежний гідрант"
+                "name": "Пожежний гідрант",
+                "terms": "Fire Hydrant,gjtybq uslhfyn"
             },
             "emergency/phone": {
-                "name": "Телефон виклику екстрених служб"
+                "name": "Телефон виклику екстрених служб",
+                "terms": "Emergency Phone,tekeajy dbrkbre trchtyb cke"
             },
             "entrance": {
                 "name": "Вхід",
-                "terms": "вхід,двері,ворота,вихід,фіртка"
+                "terms": "Entrance,dsl,двері,ворота,вихід,фіртка"
             },
             "highway": {
                 "name": "Дорога",
-                "terms": "дорога,шлях,автомагістраль,шосе,тротуар,стежка,тропа,путівець,напрямок,проїзд"
+                "terms": "Highway,ljhjuf,шлях,автомагістраль,шосе,тротуар,стежка,тропа,путівець,напрямок,проїзд"
             },
             "highway/bridleway": {
                 "name": "Доріжка для вершників ",
-                "terms": "доріжка для кінних прогулянок,доріжка для верхової їзди"
+                "terms": "Bridle Path,ljhsrf lkz dthiybrsd,доріжка для кінних прогулянок,доріжка для верхової їзди"
             },
             "highway/bus_stop": {
-                "name": "Автобусна зупинка"
+                "name": "Автобусна зупинка",
+                "terms": "Bus Stop,fdnjecyf pegbyrf"
             },
             "highway/crossing": {
                 "name": "Пішохідний перехід",
-                "terms": "пішохідний перехід,зебра"
+                "terms": "Crossing,gsijslybq gthtsl,зебра"
             },
             "highway/cycleway": {
-                "name": "Вело-доріжка"
+                "name": "Вело-доріжка",
+                "terms": "Cycle Path,dtkj-ljhsrf"
             },
             "highway/footway": {
                 "name": "Тротуар",
-                "terms": "стежка,маршрут,доріжка"
+                "terms": "Foot Path,nhjnefh,стежка,маршрут,доріжка"
             },
             "highway/living_street": {
-                "name": "Житлова зона"
+                "name": "Житлова зона",
+                "terms": "Living Street,bnkjdf pjyf"
             },
             "highway/mini_roundabout": {
-                "name": "Малий круговий рух "
+                "name": "Малий круговий рух ",
+                "terms": "Mini-Roundabout,vfkbq rheujdbq he"
             },
             "highway/motorway": {
                 "name": "Автомагістраль",
-                "terms": "автомагістраль"
+                "terms": "Motorway,fdnjvfuscnhfkm"
             },
             "highway/motorway_junction": {
                 "name": "З’єднання з автомагістраллю",
-                "terms": "розв’язка,естакада,з’їзд,заїзд"
+                "terms": "Motorway Junction,plyfyyz p fdnjvfuscnhfkk, розв’язка,естакада,з’їзд,заїзд"
             },
             "highway/motorway_link": {
                 "name": "З’їзд з/на автомагістраль",
-                "terms": "естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
+                "terms": "Motorway Link,ppl fdnjvfuscnhfkm,естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
             },
             "highway/path": {
-                "name": "Тропа"
+                "name": "Стежка",
+                "terms": "Path,cntrf, тропа"
             },
             "highway/pedestrian": {
-                "name": "Пішохідна доріжка"
+                "name": "Пішохідна доріжка",
+                "terms": "Pedestrian,gsijslyf ljhsrf"
             },
             "highway/primary": {
-                "name": "Головна дорога"
+                "name": "Головна дорога",
+                "terms": "Primary Road,ujkjdyf ljhjuf"
             },
             "highway/primary_link": {
                 "name": "З’їзд з/на головну дорогу",
-                "terms": "естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
+                "terms": "Primary Link,ppl ujkjdye ljhjue, естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
             },
             "highway/residential": {
-                "name": "Дорога місцевого значення"
+                "name": "Вулиця",
+                "terms": "Residential Road,dekbwz,дорога місцевого значення"
             },
             "highway/road": {
-                "name": "Тип невідомий"
+                "name": "Тип невідомий",
+                "terms": "Unknown Road,nbg ytdsljvbq"
             },
             "highway/secondary": {
-                "name": "Другорядна дорога"
+                "name": "Другорядна дорога",
+                "terms": "Secondary Road,lheujhzlyf ljhjuf"
             },
             "highway/secondary_link": {
                 "name": "З’їзд з/на другорядну дорогу",
-                "terms": "естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
+                "terms": "Secondary Link,ppl lheujhzlye ljhjue,естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
             },
             "highway/service": {
-                "name": "Службовий проїзд"
+                "name": "Службовий проїзд",
+                "terms": "Service Road,ckejdbq ghjpl"
             },
             "highway/service/alley": {
-                "name": "Провулок"
+                "name": "Провулок",
+                "terms": "Alley,ghjdekjr"
             },
             "highway/service/drive-through": {
-                "name": "Проїзд біля пункту обслуговування"
+                "name": "Проїзд біля пункту обслуговування",
+                "terms": "Drive-Through,ghjpl skz geyrne jckeujdedfyyz"
             },
             "highway/service/driveway": {
-                "name": "Проїзд"
+                "name": "Проїзд",
+                "terms": "Driveway,ghjpl"
             },
             "highway/service/emergency_access": {
-                "name": "Невідкладна допомога"
+                "name": "Невідкладна допомога",
+                "terms": "Emergency Access,ytdslrkflyf ljgjvjuf"
             },
             "highway/service/parking_aisle": {
-                "name": "Проїзд по стоянці"
+                "name": "Проїзд по стоянці",
+                "terms": "Parking Aisle,ghjpl gj cnjzyws"
             },
             "highway/steps": {
                 "name": "Сходи",
-                "terms": "сходи,драбина,сходова клітка"
+                "terms": "Steps,cjlb,драбина,сходова клітка"
             },
             "highway/stop": {
                 "name": "Знак СТОП",
-                "terms": "Проїзд без зупинки заборонено"
+                "terms": "Stop Sign,pyfr cnjg, Проїзд без зупинки заборонено"
             },
             "highway/tertiary": {
-                "name": "Третинна дорога"
+                "name": "Третинна дорога",
+                "terms": "Tertiary Road,nhtnbyyf ljhjuf"
             },
             "highway/tertiary_link": {
                 "name": "З’їзд з/на третинну дорогу",
-                "terms": "естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
+                "terms": "Tertiary Link,ppl nhtnbyye ljhjue,естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
             },
             "highway/track": {
-                "name": "Грунтовка"
+                "name": "Грунтовка",
+                "terms": "Track,uheynjdrf"
             },
             "highway/traffic_signals": {
                 "name": "Світлофор",
-                "terms": " світлофор"
+                "terms": "Traffic Signals,cdsnkjajh"
             },
             "highway/trunk": {
-                "name": "Шосе"
+                "name": "Шосе",
+                "terms": "Trunk Road,ijct"
             },
             "highway/trunk_link": {
                 "name": "З’їзд з/на шосе",
-                "terms": "естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
+                "terms": "Trunk Link,ppl ijct,естакада,виїзд з,виїзд на,з’їзд з,з’їзд на"
             },
             "highway/turning_circle": {
-                "name": "Місце для розвороту"
+                "name": "Місце для розвороту",
+                "terms": "Turning Circle,vscwt lkz hjdjhjne"
             },
             "highway/unclassified": {
-                "name": "Не має класифікації"
+                "name": "Не має класифікації",
+                "terms": "Unclassified Road,yt vf rkfcbasrfws"
             },
             "historic": {
-                "name": "Історичні місця"
+                "name": "Історичні місця",
+                "terms": "Historic Site,scnjhbxys vscwz"
             },
             "historic/archaeological_site": {
-                "name": "Археологічні пам’ятки"
+                "name": "Археологічні пам’ятки",
+                "terms": "Archaeological Site,fhtjkjusxys gfvznrb"
             },
             "historic/boundary_stone": {
-                "name": "Прикордонний камінь"
+                "name": "Прикордонний камінь",
+                "terms": "Boundary Stone,ghbrjhljyybq rfvsym"
             },
             "historic/castle": {
-                "name": "За́мок"
+                "name": "За́мок",
+                "terms": "Castle,pfvjr"
             },
             "historic/memorial": {
-                "name": "Пам’ятник"
+                "name": "Пам’ятник",
+                "terms": "Memorial,gfvznybr"
             },
             "historic/monument": {
-                "name": "Монумент"
+                "name": "Монумент",
+                "terms": "Monument,vjyevtyn"
             },
             "historic/ruins": {
-                "name": "Руїни"
+                "name": "Руїни",
+                "terms": "Ruins,heyb"
             },
             "historic/wayside_cross": {
-                "name": "Придорожній хрест"
+                "name": "Придорожній хрест",
+                "terms": "Wayside Cross,ghbljhjysq htcn"
             },
             "historic/wayside_shrine": {
-                "name": "Придорожня рака"
+                "name": "Придорожня рака",
+                "terms": "Wayside Shrine,ghbljhjyz hfrf, гробниця"
             },
             "landuse": {
-                "name": "Землекористування"
+                "name": "Землекористування",
+                "terms": "Landuse,ptvktrjhbcnedfyyz"
             },
             "landuse/allotments": {
                 "name": "Дачі/горо́ди",
-                "terms": "дача,город,ділянка"
+                "terms": "Allotments,lfxs ujhjlb,дача,город,ділянка"
             },
             "landuse/basin": {
-                "name": "Водойма"
+                "name": "Водойма",
+                "terms": "Basin,djljqvf"
             },
             "landuse/cemetery": {
-                "name": "Кладовище"
+                "name": "Кладовище",
+                "terms": "Cemetery,rkfljdbot, цвинтар"
             },
             "landuse/commercial": {
-                "name": "Діловий район"
+                "name": "Діловий район",
+                "terms": "Commercial,lskjdbq hfqjy"
             },
             "landuse/construction": {
-                "name": "Будівництво"
+                "name": "Будівництво",
+                "terms": "Construction,elsdybwndj"
             },
             "landuse/farm": {
-                "name": "Ферма"
+                "name": "Ферма",
+                "terms": "Farm,athvf"
             },
             "landuse/farmyard": {
-                "name": "Двір ферми"
+                "name": "Двір ферми",
+                "terms": "Farmyard,ldsh athvb"
             },
             "landuse/forest": {
-                "name": "Лісовий масив"
+                "name": "Лісовий масив",
+                "terms": "Forest,kscjdbq vfcbd, ліс"
             },
             "landuse/grass": {
-                "name": "Трава"
+                "name": "Трава",
+                "terms": "Grass,nhfdf"
             },
             "landuse/industrial": {
-                "name": "Промзона"
+                "name": "Промзона",
+                "terms": "Industrial,ghjvpjyf"
             },
             "landuse/meadow": {
-                "name": "Левада"
+                "name": "Левада",
+                "terms": "Meadow,ktdflf"
             },
             "landuse/orchard": {
-                "name": "Сад"
+                "name": "Сад",
+                "terms": "Orchard,cfl"
             },
             "landuse/quarry": {
-                "name": "Кар’єр"
+                "name": "Кар’єр",
+                "terms": "Quarry,rfhh"
             },
             "landuse/residential": {
-                "name": "Житлова зона"
+                "name": "Житлова зона",
+                "terms": "Residential,bnkjdf pjyf"
             },
             "landuse/retail": {
-                "name": "Роздрібна торгівля"
+                "name": "Роздрібна торгівля",
+                "terms": "Retail,hjplhsyf njhusdkz"
             },
             "landuse/vineyard": {
-                "name": "Виноградник"
+                "name": "Виноградник",
+                "terms": "Vineyard,dbyjuhflybr"
             },
             "leisure": {
-                "name": "Дозвілля"
+                "name": "Дозвілля",
+                "terms": "Leisure,ljpdskkz"
             },
             "leisure/dog_park": {
-                "name": "Парк для собак"
+                "name": "Парк для собак",
+                "terms": "Dog Park,gfhr lkz cjfr"
             },
             "leisure/garden": {
-                "name": "Сад"
+                "name": "Сад",
+                "terms": "Garden,cfl"
             },
             "leisure/golf_course": {
-                "name": "Поле для гольфу"
+                "name": "Поле для гольфу",
+                "terms": "Golf Course,gjkt lkz ujkmae"
             },
             "leisure/marina": {
-                "name": "Пристань для яхт"
+                "name": "Пристань для яхт",
+                "terms": "Marina,ghbcnfym lkz zn"
             },
             "leisure/park": {
-                "name": "Парк"
+                "name": "Парк",
+                "terms": "Park,gfhr"
             },
             "leisure/pitch": {
-                "name": "Спортивний майданчик"
+                "name": "Спортивний майданчик",
+                "terms": "Sport Pitch,cgjhnbdybq vfqlfyxbr"
             },
             "leisure/pitch/american_football": {
-                "name": "Поле для американського футболу"
+                "name": "Поле для американського футболу",
+                "terms": "American Football Field,gjkt lkz fvthbrfycmrjuj aenjke"
             },
             "leisure/pitch/baseball": {
-                "name": "Бейсбольний майданчик"
+                "name": "Бейсбольний майданчик",
+                "terms": "Baseball Diamond,tqcjkmybq vfqlfyxbr"
             },
             "leisure/pitch/basketball": {
-                "name": "Баскетбольний майданчик"
+                "name": "Баскетбольний майданчик",
+                "terms": "Basketball Court,fcrtnjkmybq vfqlfyxbr"
             },
             "leisure/pitch/skateboard": {
-                "name": "Скейт-парк"
+                "name": "Скейт-парк",
+                "terms": "Skate Park,crtqn-gfhr, екстрим"
             },
             "leisure/pitch/soccer": {
-                "name": "Футбольне поле"
+                "name": "Футбольне поле",
+                "terms": "Soccer Field,aenjkmyt gjkt"
             },
             "leisure/pitch/tennis": {
-                "name": "Тенісний майданчик"
+                "name": "Тенісний майданчик",
+                "terms": "Tennis Court,ntyscybq vfqlfyxbr"
             },
             "leisure/pitch/volleyball": {
-                "name": "Волейбольний майданчик"
+                "name": "Волейбольний майданчик",
+                "terms": "Volleyball Court,gjktqjkmybq vfqlfyxbr"
             },
             "leisure/playground": {
                 "name": "Ігровий майданчик",
-                "terms": "дитячий ігровий майданчик "
+                "terms": "Playground,suhjdbq vfqlfyxbr, дитячий ігровий майданчик "
             },
             "leisure/slipway": {
-                "name": "Стапель"
+                "name": "Стапель",
+                "terms": "Slipway,cnfgtkm"
             },
             "leisure/sports_center": {
-                "name": "Спортивний центр"
+                "name": "Спортивний центр",
+                "terms": "Sports Center,cgjhnbdybq wtynh"
             },
             "leisure/stadium": {
-                "name": "Стадіон"
+                "name": "Стадіон",
+                "terms": "Stadium,cnflsjy"
             },
             "leisure/swimming_pool": {
-                "name": "Басейн"
+                "name": "Басейн",
+                "terms": "Swimming Pool,fctqy"
             },
             "leisure/track": {
-                "name": "Гоночний трек"
+                "name": "Гоночний трек",
+                "terms": "Race Track,ujyjxybq nhtr, бігова доріжка"
             },
             "line": {
-                "name": "Лінія"
+                "name": "Лінія",
+                "terms": "Line,ksysz"
             },
             "man_made": {
                 "name": "Штучні споруди",
-                "terms": "штучні споруди"
+                "terms": "Man Made,inexys cgjhelb"
             },
             "man_made/breakwater": {
-                "name": "Хвилеріз"
+                "name": "Хвилеріз",
+                "terms": "Breakwater,dbkthsp"
             },
             "man_made/cutline": {
-                "name": "Просіка"
+                "name": "Просіка",
+                "terms": "Cut line,ghjcsrf"
             },
             "man_made/lighthouse": {
                 "name": "Маяк",
-                "terms": "маяк,сигнал,вогонь"
+                "terms": "Lighthouse,vfzr,сигнал,вогонь"
             },
             "man_made/pier": {
                 "name": "Пірс",
-                "terms": "пірс,причал"
+                "terms": "Pier,gshc,причал"
             },
             "man_made/pipeline": {
-                "name": "Трубопровід"
+                "name": "Трубопровід",
+                "terms": "Pipeline,nhejghjdsl"
             },
             "man_made/survey_point": {
-                "name": "Геодезичний пункт"
+                "name": "Геодезичний пункт",
+                "terms": "Survey Point,utjltpbxybq geyrn"
             },
             "man_made/tower": {
-                "name": "Вежа"
+                "name": "Вежа",
+                "terms": "Tower,dtf, башта"
             },
             "man_made/wastewater_plant": {
                 "name": "Очисні споруди",
-                "terms": "очисні споруди,дренаж,стічна канава"
+                "terms": "Wastewater Plant,jxbcys cgjhelb,дренаж"
             },
             "man_made/water_tower": {
-                "name": "Водонапірна вежа"
+                "name": "Водонапірна вежа",
+                "terms": "Water Tower,djljyfgshyf dtf"
             },
             "man_made/water_well": {
                 "name": "Колодязь",
-                "terms": "колодязь,вода"
+                "terms": "Water well,rjkjlzpm,вода"
             },
             "man_made/water_works": {
-                "name": "Водозабір"
+                "name": "Водозабір",
+                "terms": "Water Works,djljpfsh"
             },
             "natural": {
-                "name": "Природа"
+                "name": "Природа",
+                "terms": "Natural,ghbhjlf"
             },
             "natural/bay": {
-                "name": "Затока"
+                "name": "Затока",
+                "terms": "Bay,pfnjrf"
             },
             "natural/beach": {
-                "name": "Пляж"
+                "name": "Пляж",
+                "terms": "Beach,gkz"
             },
             "natural/cliff": {
-                "name": "Скеля/Яр"
+                "name": "Скеля/Яр",
+                "terms": "Cliff,crtkz zh"
             },
             "natural/coastline": {
-                "name": "Берегова лінія"
+                "name": "Берегова лінія",
+                "terms": "Coastline,thtujdf ksysz"
             },
             "natural/fell": {
-                "name": "Пасовище"
+                "name": "Пасовище",
+                "terms": "Fell,gfcjdbot"
             },
             "natural/glacier": {
                 "name": "Льодовик",
-                "terms": "льодовик"
+                "terms": "Glacier,kmjljdbr"
             },
             "natural/grassland": {
                 "name": "Трави",
-                "terms": "луг, вигін"
+                "terms": "Grassland,nhfdb, луг, вигін"
             },
             "natural/heath": {
-                "name": "Пустир/Вереск"
+                "name": "Пустир/Вереск",
+                "terms": "Heath,gecnbh, степ"
             },
             "natural/peak": {
                 "name": "Пік",
-                "terms": "пагорб,круча,вершина,гора,найвища точка,гребінь,узгір’я,скеля"
+                "terms": "Peak,gsr,пагорб,круча,вершина,гора,найвища точка,гребінь,узгір’я,скеля"
             },
             "natural/scree": {
                 "name": "Кам’яний обвал",
-                "terms": "щебінь, осип"
+                "terms": "Scree,rfvzybq jdfk, щебінь, осип"
             },
             "natural/scrub": {
-                "name": "Чагарник"
+                "name": "Чагарник",
+                "terms": "Scrub,xfufhybr, кущі"
             },
             "natural/spring": {
                 "name": "Джерело",
-                "terms": "вода,джерело"
+                "terms": "Spring,lthtkj, вода"
             },
             "natural/tree": {
-                "name": "Дерево"
+                "name": "Дерево",
+                "terms": "Tree,lthtdj"
             },
             "natural/water": {
-                "name": "Вода"
+                "name": "Вода",
+                "terms": "Water,djlf"
             },
             "natural/water/lake": {
-                "name": "Озеро"
+                "name": "Озеро",
+                "terms": "Lake,jpthj"
             },
             "natural/water/pond": {
-                "name": "Ставок"
+                "name": "Ставок",
+                "terms": "Pond,cnfdjr"
             },
             "natural/water/reservoir": {
-                "name": "Резервуар"
+                "name": "Резервуар",
+                "terms": "Reservoir,htpthdefh"
             },
             "natural/wetland": {
-                "name": "Заболочені землі"
+                "name": "Заболочені землі",
+                "terms": "Wetland,pfjkjxtys ptvks"
             },
             "natural/wood": {
-                "name": "Дерева"
+                "name": "Дерева",
+                "terms": "Wood,lthtdf"
             },
             "office": {
-                "name": "Офіс"
+                "name": "Офіс",
+                "terms": "Office,jasc"
             },
             "place": {
-                "name": "Місцевість"
+                "name": "Місцевість",
+                "terms": "Place,vscwtdscnm"
             },
             "place/city": {
-                "name": "Місто"
+                "name": "Місто",
+                "terms": "City,vscnj"
             },
             "place/hamlet": {
-                "name": "Хутір"
+                "name": "Хутір",
+                "terms": "Hamlet,ensh"
             },
             "place/island": {
                 "name": "Острів",
-                "terms": "архіпелаг,атол,мис,бар’єр,мілина,острів,острівець,риф,коса"
+                "terms": "Island,jcnhsd,архіпелаг,атол,мис,бар’єр,мілина,острівець,риф,коса"
             },
             "place/isolated_dwelling": {
-                "name": "Відокремлене житло"
+                "name": "Відокремлене житло",
+                "terms": "Isolated Dwelling,dsljrhtvktyt bnkj"
             },
             "place/locality": {
-                "name": "Місцевість"
+                "name": "Місцевість",
+                "terms": "Locality,vscwtdscnm"
             },
             "place/town": {
-                "name": "Місто"
+                "name": "Місто",
+                "terms": "Town,vscnj"
             },
             "place/village": {
-                "name": "Село"
+                "name": "Село",
+                "terms": "Village,ctkj"
             },
             "point": {
-                "name": "Точка"
+                "name": "Точка",
+                "terms": "Point,njxrf"
             },
             "power": {
-                "name": "Енергетика"
+                "name": "Енергетика",
+                "terms": "Power,tythutnbrf"
             },
             "power/generator": {
-                "name": "Електростанція"
+                "name": "Електростанція",
+                "terms": "Power Generator,tktrnhjcnfywsz"
             },
             "power/line": {
-                "name": "Лінія електропередач"
+                "name": "Лінія електропередач",
+                "terms": "Power Line,ksysz tktrnhjgthtlfx"
             },
             "power/pole": {
-                "name": "Опора"
+                "name": "Опора",
+                "terms": "Power Pole,jgjhf"
             },
             "power/sub_station": {
-                "name": "Підстанція"
+                "name": "Підстанція",
+                "terms": "Substation,gslcnfywsz"
             },
             "power/tower": {
-                "name": "Опора ЛЕП"
+                "name": "Опора ЛЕП",
+                "terms": "High-Voltage Tower,jgjhf KTG"
             },
             "power/transformer": {
-                "name": "Трансформатор"
+                "name": "Трансформатор",
+                "terms": "Transformer,nhfycajhvfnjh"
             },
             "railway": {
-                "name": "Залізниця"
+                "name": "Залізниця",
+                "terms": "Railway,pfkspybwz"
             },
             "railway/abandoned": {
-                "name": "Занедбані колії"
+                "name": "Занедбані колії",
+                "terms": "Abandoned Railway,pfytlfys gjks"
             },
             "railway/disused": {
-                "name": "Путі, що не використовуються"
+                "name": "Колії, що не використовуються",
+                "terms": "Disused Railway,rjks oj yt dbrjhbcnjdenmcz"
             },
             "railway/halt": {
-                "name": "Залізнична зупинка"
+                "name": "Залізнична зупинка",
+                "terms": "Railway Halt,pfkspybxyf pegbyrf"
             },
             "railway/level_crossing": {
                 "name": "Залізничний переїзд",
-                "terms": "залізничний переїзд"
+                "terms": "Level Crossing,pfkspybxybq gthtpl"
             },
             "railway/monorail": {
-                "name": "Монорейка"
+                "name": "Монорейка",
+                "terms": "Monorail,vjyjhtqrf"
             },
             "railway/platform": {
-                "name": "Залізнична платформа"
+                "name": "Залізнична платформа",
+                "terms": "Railway Platform,pfkspybxyf gkfanajhvf"
             },
             "railway/rail": {
-                "name": "Рейки"
+                "name": "Рейки",
+                "terms": "Rail,htqrb, колії"
             },
             "railway/station": {
-                "name": "Залізнична станція"
+                "name": "Залізнична станція",
+                "terms": "Railway Station,pfkspybxyf cnfywsz"
             },
             "railway/subway": {
-                "name": "Метрополітен"
+                "name": "Метрополітен",
+                "terms": "Subway,vtnhjgjksnty"
             },
             "railway/subway_entrance": {
-                "name": "Вхід до метро"
+                "name": "Вхід до метро",
+                "terms": "Subway Entrance,dsl lj vtnhj"
             },
             "railway/tram": {
                 "name": "Трамвай",
-                "terms": "трамвай"
+                "terms": "Tram,nhfvdfq"
             },
             "relation": {
-                "name": "Зв’язок"
+                "name": "Зв’язок",
+                "terms": "Relation,pdzpjr"
             },
             "route/ferry": {
                 "name": "Паром",
-                "terms": "паром"
+                "terms": "Ferry Route,gfhjv"
             },
             "shop": {
-                "name": "Магазини/Майстерні"
+                "name": "Магазини/Майстерні",
+                "terms": "Shop,vfufpbyb vfqcnthys, продаж, послуги, крамниці"
             },
             "shop/alcohol": {
                 "name": "Алкогольні напої",
-                "terms": "алкоголь"
+                "terms": "Liquor Store,fkrjujkmys yfgj, алкоголь"
             },
             "shop/bakery": {
-                "name": "Булочна"
+                "name": "Булочна",
+                "terms": "Bakery,ekjxyf, хліб"
             },
             "shop/beauty": {
-                "name": "Cалон краси"
+                "name": "Cалон краси",
+                "terms": "Beauty Shop,cfkjy rhfcb"
             },
             "shop/beverages": {
-                "name": "Напої"
+                "name": "Напої",
+                "terms": "Beverage Store,yfgj"
             },
             "shop/bicycle": {
-                "name": "Веломагазин"
+                "name": "Веломагазин",
+                "terms": "Bicycle Shop,dtkjvfufpby"
             },
             "shop/books": {
-                "name": "Книгарня"
+                "name": "Книгарня",
+                "terms": "Bookstore,rybufhyz"
             },
             "shop/boutique": {
-                "name": "Бутік"
+                "name": "Бутік",
+                "terms": "Boutique,ensr"
             },
             "shop/butcher": {
-                "name": "М’ясна лавка"
+                "name": "М’ясна лавка",
+                "terms": "Butcher,vzcyf kfdrf, м’ясо, м’ясний відділ"
             },
             "shop/car": {
-                "name": "Автосалон"
+                "name": "Автосалон",
+                "terms": "Car Dealership,fdnjcfkjy"
             },
             "shop/car_parts": {
-                "name": "Автозапчастини"
+                "name": "Автозапчастини",
+                "terms": "Car Parts Store,fdnjpfgxfcnbyb"
             },
             "shop/car_repair": {
-                "name": "Автомайстерня"
+                "name": "Автомайстерня",
+                "terms": "Car Repair Shop,fdnjvfqcnthyz"
             },
             "shop/chemist": {
-                "name": "Побутова хімія"
+                "name": "Побутова хімія",
+                "terms": "Chemist,gjenjdf svsz"
             },
             "shop/clothes": {
-                "name": "Одяг"
+                "name": "Одяг",
+                "terms": "Clothing Store,jlzu"
             },
             "shop/computer": {
-                "name": "Комп’ютери"
+                "name": "Комп’ютери",
+                "terms": "Computer Store,rjvgnthb"
             },
             "shop/confectionery": {
-                "name": "Кондитерська"
+                "name": "Кондитерська",
+                "terms": "Confectionery,rjylbnthcmrf, цукерки, солодощі"
             },
             "shop/convenience": {
-                "name": "міні-маркет"
+                "name": "Міні-маркет",
+                "terms": "Convenience Store,vsys-vfhrtn, ларьок, магазин"
             },
             "shop/deli": {
-                "name": "Делікатеси/Вишукана їжа"
+                "name": "Делікатеси/Вишукана їжа",
+                "terms": "Deli,ltksrfntcb"
             },
             "shop/department_store": {
-                "name": "Універмаг"
+                "name": "Універмаг",
+                "terms": "Department Store,eysdthvfu"
             },
             "shop/doityourself": {
-                "name": "Зроби сам"
+                "name": "Зроби сам",
+                "terms": "DIY Store,phjb cfv"
             },
             "shop/dry_cleaning": {
-                "name": "Хімчистка"
+                "name": "Хімчистка",
+                "terms": "Dry Cleaners,vsxbcnrf"
             },
             "shop/electronics": {
-                "name": "Електроніка"
+                "name": "Електроніка",
+                "terms": "Electronics Store,tktrnhjysrf"
             },
             "shop/farm": {
                 "name": "Стелаж з фермерськими товарами",
-                "terms": "фермерський магазин,стелаж"
+                "terms": "Produce Stand,cntkf p athvthcmrbvb njdfhfvb, фермерський магазин, стелаж"
             },
             "shop/fishmonger": {
-                "name": "Риба"
+                "name": "Риба",
+                "terms": "Fishmonger,hbf"
             },
             "shop/florist": {
-                "name": "Квіти"
+                "name": "Квіти",
+                "terms": "Florist,rdsnb"
             },
             "shop/furniture": {
-                "name": "Меблі"
+                "name": "Меблі",
+                "terms": "Furniture Store,vtks"
             },
             "shop/garden_centre": {
-                "name": "Садово-парковий центр"
+                "name": "Садово-парковий центр",
+                "terms": "Garden Center,cfljdj-gfhrjdbq wtynh"
             },
             "shop/gift": {
-                "name": "Подарунки"
+                "name": "Подарунки",
+                "terms": "Gift Shop,gjlfheyrb"
             },
             "shop/greengrocer": {
-                "name": "Овочевий"
+                "name": "Овочевий",
+                "terms": "Greengrocer,jdjxtdbq"
             },
             "shop/hairdresser": {
-                "name": "Перукарня"
+                "name": "Перукарня",
+                "terms": "Hairdresser,gtherfhyz"
             },
             "shop/hardware": {
-                "name": "Господарські товари"
+                "name": "Господарські товари",
+                "terms": "Hardware Store,ujcgjlfhcmrs njdfhb"
             },
             "shop/hifi": {
-                "name": "Аудіо апаратура"
+                "name": "Аудіо апаратура",
+                "terms": "Hifi Store,flesj jgfhfnehf"
             },
             "shop/jewelry": {
-                "name": "Ювелірні прикраси"
+                "name": "Ювелірні прикраси",
+                "terms": "Jeweler,dtkshys ghbrhfcb"
             },
             "shop/kiosk": {
                 "name": "Кіоск",
-                "terms": "МАФ, ларьок"
+                "terms": "Kiosk,rsjcr, МАФ, ларьок"
             },
             "shop/laundry": {
-                "name": "Пральня"
+                "name": "Пральня",
+                "terms": "Laundry,ghfkmyz"
             },
             "shop/mall": {
-                "name": "Торгівельний центр"
+                "name": "Торгівельний центр",
+                "terms": "Mall,njhusdtkmybq wtynh"
             },
             "shop/mobile_phone": {
-                "name": "Мобільні телефони"
+                "name": "Мобільні телефони",
+                "terms": "Mobile Phone Store,vjskmys ntktajyb"
             },
             "shop/motorcycle": {
-                "name": "Мотомагазин"
+                "name": "Мотомагазин",
+                "terms": "Motorcycle Dealership,vjnjvfufpby, мотоцикли"
             },
             "shop/music": {
-                "name": "Музичний магазин"
+                "name": "Музичний магазин",
+                "terms": "Music Store,vepbxybq vfufpby"
             },
             "shop/newsagent": {
-                "name": "Газетний кіоск"
+                "name": "Газетний кіоск",
+                "terms": "Newsagent,ufptnybq rsjcr"
             },
             "shop/optician": {
-                "name": "Оптика"
+                "name": "Оптика",
+                "terms": "Optician,jgnbrf"
             },
             "shop/outdoor": {
-                "name": "Товари для активного відпочинку"
+                "name": "Товари для активного відпочинку",
+                "terms": "Outdoor Store,njdfhb lkz frnbdyjuj dslgjxbyre, туризм, туристичне спорядження"
             },
             "shop/pet": {
-                "name": "Товари для тварин"
+                "name": "Товари для тварин",
+                "terms": "Pet Store,njdfhb lkz ndfhby"
             },
             "shop/shoes": {
-                "name": "Взуття"
+                "name": "Взуття",
+                "terms": "Shoe Store,dpennz"
             },
             "shop/sports": {
-                "name": "Спорттовари"
+                "name": "Спорттовари",
+                "terms": "Sporting Goods Store,cgjhnnjdfhb"
             },
             "shop/stationery": {
-                "name": "Канцтовари"
+                "name": "Канцтовари",
+                "terms": "Stationery Store,rfywnjdfhb"
             },
             "shop/supermarket": {
-                "name": "Супермаркет"
+                "name": "Супермаркет",
+                "terms": "Supermarket,cegthvfhrtn"
             },
             "shop/toys": {
-                "name": "Іграшки"
+                "name": "Іграшки",
+                "terms": "Toy Store,suhfirb"
             },
             "shop/travel_agency": {
-                "name": "Туристична агенція"
+                "name": "Туристична агенція",
+                "terms": "Travel Agency,nehbcnbxyf futywsz"
             },
             "shop/tyres": {
-                "name": "Колеса та шини"
+                "name": "Колеса та шини",
+                "terms": "Tire Store,ibyb"
             },
             "shop/vacant": {
-                "name": "Здається в оренду"
+                "name": "Здається в оренду",
+                "terms": "Vacant Shop,plfnmcz d jhtyle"
             },
             "shop/variety_store": {
-                "name": "Універсам"
+                "name": "Універсам",
+                "terms": "Variety Store,eysdthcfv"
             },
             "shop/video": {
-                "name": "Відео"
+                "name": "Відео",
+                "terms": "Video Store,dsltj, відеомагазин"
             },
             "tourism": {
-                "name": "Туризм"
+                "name": "Туризм",
+                "terms": "Tourism,nehbpv"
             },
             "tourism/alpine_hut": {
-                "name": "Гірський притулок"
+                "name": "Гірський притулок",
+                "terms": "Alpine Hut,ushcmrbq ghbnekjr, колиба"
             },
             "tourism/artwork": {
-                "name": "Витвори мистецтв"
+                "name": "Витвори мистецтв",
+                "terms": "Artwork,dbndjhb vbcntwnd"
             },
             "tourism/attraction": {
-                "name": "Визначне місце"
+                "name": "Визначне місце",
+                "terms": "Tourist Attraction,dbpyfxyt vscwt"
             },
             "tourism/camp_site": {
-                "name": "Кемпінг"
+                "name": "Кемпінг",
+                "terms": "Camp Site,rtvgsyu"
             },
             "tourism/caravan_site": {
-                "name": "Караван-парк"
+                "name": "Караван-парк",
+                "terms": "RV Park,rfhfdfy-gfhr"
             },
             "tourism/chalet": {
-                "name": "Шале"
+                "name": "Шале",
+                "terms": "Chalet,ifkt"
             },
             "tourism/guest_house": {
                 "name": "Гостьовий будинок",
-                "terms": "хостел,міні-готель,ліжко та сніданок"
+                "terms": "Guest House,ujcnmjdbq elbyjr,хостел,міні-готель,ліжко та сніданок"
             },
             "tourism/hostel": {
-                "name": "Хостел"
+                "name": "Хостел",
+                "terms": "Hostel,jcntk"
             },
             "tourism/hotel": {
-                "name": "Готель"
+                "name": "Готель",
+                "terms": "Hotel,ujntkm"
             },
             "tourism/information": {
-                "name": "Інформація"
+                "name": "Інформація",
+                "terms": "Information,syajhvfwsz"
             },
             "tourism/motel": {
-                "name": "Мотель"
+                "name": "Мотель",
+                "terms": "Motel,vjntkm"
             },
             "tourism/museum": {
-                "name": "Музей"
+                "name": "Музей",
+                "terms": "Museum,veptq"
             },
             "tourism/picnic_site": {
-                "name": "Місце для пікніка"
+                "name": "Місце для пікніка",
+                "terms": "Picnic Site,vscwt lkz gsrysrf"
             },
             "tourism/theme_park": {
-                "name": "Тематичний парк"
+                "name": "Тематичний парк",
+                "terms": "Theme Park,ntvfnbxybq gfhr"
             },
             "tourism/viewpoint": {
-                "name": "Оглядовий майданчик"
+                "name": "Оглядовий майданчик",
+                "terms": "Viewpoint,jukzljddbq vfqlfyxbr"
             },
             "tourism/zoo": {
-                "name": "Зоопарк"
+                "name": "Зоопарк",
+                "terms": "Zoo,pjjgfhr"
             },
             "type/boundary": {
-                "name": "Кордон"
+                "name": "Кордон",
+                "terms": "Boundary,rjhljy"
             },
             "type/boundary/administrative": {
-                "name": "Адміністративний кордон"
+                "name": "Адміністративний кордон",
+                "terms": "Administrative Boundary,flvsyscnhfnbdybq rjhljy"
             },
             "type/multipolygon": {
-                "name": "Мультиполігон"
+                "name": "Мультиполігон",
+                "terms": "Multipolygon,vekmnbgjksujy"
             },
             "type/restriction": {
-                "name": "Обмеження"
+                "name": "Обмеження",
+                "terms": "Restriction,jvttyyz"
             },
             "type/route": {
-                "name": "Маршрут"
+                "name": "Маршрут",
+                "terms": "Route,vfhihen"
             },
             "type/route/bicycle": {
-                "name": "Велосипедний маршрут"
+                "name": "Велосипедний маршрут",
+                "terms": "Cycle Route,dtkjcbgtlybq vfhihen"
             },
             "type/route/bus": {
-                "name": "Автобусний маршрут"
+                "name": "Автобусний маршрут",
+                "terms": "Bus Route,fdnjecybq vfhihen"
             },
             "type/route/detour": {
-                "name": "Об’їзд"
+                "name": "Об’їзд",
+                "terms": "Detour Route,jpl"
             },
             "type/route/ferry": {
-                "name": "Паром"
+                "name": "Паром",
+                "terms": "Ferry Route,gfhjv"
             },
             "type/route/foot": {
-                "name": "Пішохідний маршрут"
+                "name": "Пішохідний маршрут",
+                "terms": "Foot Route,gsijslybq vfhihen"
             },
             "type/route/hiking": {
                 "name": "Туристичний маршрут",
-                "terms": "пішохідний маршрут"
+                "terms": "Hiking Route,nehbcnbxybq vfhihen, пішохідний маршрут"
             },
             "type/route/pipeline": {
-                "name": "Трубопровід"
+                "name": "Трубопровід",
+                "terms": "Pipeline Route,nhejghjdsl"
             },
             "type/route/power": {
-                "name": "Лінія електропередач"
+                "name": "Лінія електропередач",
+                "terms": "Power Route,ksysz tktrnhjgthtlfx"
             },
             "type/route/road": {
-                "name": "Автомобільний маршрут"
+                "name": "Автомобільний маршрут",
+                "terms": "Road Route,fdnjvjskmybq vfhihen"
             },
             "type/route/train": {
-                "name": "Залізнийчни маршрут"
+                "name": "Залізничний маршрут",
+                "terms": "Train Route,pfkspybxybq vfhihen"
             },
             "type/route/tram": {
-                "name": "Трамвайний маршрут"
+                "name": "Трамвайний маршрут",
+                "terms": "Tram Route,nhfvdfqybq vfhihen"
             },
             "type/route_master": {
-                "name": "Майстер маршрут"
+                "name": "Транспортний маршрут",
+                "terms": "Route Master,nhfycgjhnybq vfhihen"
             },
             "vertex": {
-                "name": "Інше"
+                "name": "Інше",
+                "terms": "Other,syit"
             },
             "waterway": {
-                "name": "Водний шлях"
+                "name": "Водний шлях",
+                "terms": "Waterway,djlybq ikz"
             },
             "waterway/canal": {
-                "name": "Канал"
+                "name": "Канал",
+                "terms": "Canal,rfyfk"
             },
             "waterway/dam": {
-                "name": "Дамба"
+                "name": "Дамба",
+                "terms": "Dam,lfvf"
             },
             "waterway/ditch": {
-                "name": "Канава"
+                "name": "Канава",
+                "terms": "Ditch,rfyfdf"
             },
             "waterway/drain": {
-                "name": "Дренажний канал"
+                "name": "Дренажний канал",
+                "terms": "Drain,lhtyfybq rfyfk"
             },
             "waterway/river": {
-                "name": "Ріка"
+                "name": "Ріка",
+                "terms": "River,hsrf, річка"
             },
             "waterway/riverbank": {
-                "name": "Берег ріки"
+                "name": "Берег ріки",
+                "terms": "Riverbank,thtu hsrb"
             },
             "waterway/stream": {
-                "name": "Струмок"
+                "name": "Струмок",
+                "terms": "Stream,cnhevjr"
             },
             "waterway/weir": {
-                "name": "Водозлив"
+                "name": "Водозлив",
+                "terms": "Weir,djljpkbd"
             }
         }
     }
index 9b6208e233a8e19f115434db9e3586b85c48ee1a..8e33cc3548a59122245073cd81794feaa5a3a68c 100644 (file)
             "not_closed": "Không thể làm tròn một đối tượng không phải là đa giác kín."
         },
         "orthogonalize": {
+            "title": "Làm Vuông góc",
+            "description": {
+                "line": "Làm vuông góc đường kẻ này.",
+                "area": "Làm vuông góc vùng này."
+            },
+            "key": "L",
             "annotation": {
                 "line": "làm vuông góc một đường kẻ",
                 "area": "làm vuông góc một vùng"
@@ -82,7 +88,9 @@
         "straighten": {
             "title": "Làm thẳng",
             "description": "Làm thẳng đường kẻ này.",
-            "key": "L"
+            "key": "L",
+            "annotation": "làm thẳng một đường kẻ",
+            "too_bendy": "Không thể làm thẳng đường kẻ này vì nó ngoằn ngoèo quá mức."
         },
         "delete": {
             "title": "Xóa",
index b37f0b1d447cf18f7bc005fd0bf3b9b46f981879..c698e62f22e079b88546ee494bf8f29c1c1d2494 100644 (file)
                 "name": "機場相關設施"
             },
             "aeroway/aerodrome": {
-                "name": "機場"
+                "name": "機場",
+                "terms": "機場,飛機"
             },
             "aeroway/apron": {
                 "name": "停機坪"
                 "name": "戲院"
             },
             "amenity/college": {
-                "name": "書院"
+                "name": "書院",
+                "terms": "學院,大學,專校,大專"
             },
             "amenity/courthouse": {
                 "name": "法院"
                 "name": "墓地"
             },
             "amenity/hospital": {
-                "name": "醫院"
+                "name": "醫院",
+                "terms": "醫院,醫學中心"
             },
             "amenity/kindergarten": {
                 "name": "幼稚園"
                 "name": "宗教祟拜場所"
             },
             "amenity/place_of_worship/buddhist": {
-                "name": "佛寺"
+                "name": "佛寺",
+                "terms": "寺,廟,閣,寶殿"
             },
             "amenity/place_of_worship/christian": {
                 "name": "教堂"
                 "name": "餐廳"
             },
             "amenity/school": {
-                "name": "學校"
+                "name": "學校",
+                "terms": "學校,小學,中學,國小,國中,高中,校園,校區"
             },
             "amenity/swimming_pool": {
-                "name": "游泳池"
+                "name": "游泳池",
+                "terms": "游泳池,泳池"
             },
             "amenity/taxi": {
                 "name": "計程車站"
                 "name": "停車場通道"
             },
             "highway/steps": {
-                "name": "樓梯"
+                "name": "樓梯",
+                "terms": "樓梯,階梯,石階"
             },
             "highway/tertiary": {
                 "name": "三級道路"
                 "name": "建築工程"
             },
             "landuse/farm": {
-                "name": "農場"
+                "name": "農場",
+                "terms": "農田,稻田,農地,田"
             },
             "landuse/farmyard": {
                 "name": "農莊"
                 "name": "休閒設施"
             },
             "leisure/garden": {
-                "name": "花園"
+                "name": "花園",
+                "terms": "花園,果園,菜園,植物園,公園"
             },
             "leisure/golf_course": {
                 "name": "高爾夫球場"
                 "name": "棒球場"
             },
             "leisure/pitch/basketball": {
-                "name": "籃球場"
+                "name": "籃球場",
+                "terms": "籃球場,球場"
             },
             "leisure/pitch/soccer": {
                 "name": "足球場"
                 "name": "海岸線"
             },
             "natural/glacier": {
-                "name": "冰川"
+                "name": "冰川",
+                "terms": "冰川,冰河"
             },
             "natural/grassland": {
                 "name": "草原"
                 "name": "水塘"
             },
             "natural/wetland": {
-                "name": "濕地"
+                "name": "濕地",
+                "terms": "濕地,潮間帶"
             },
             "natural/wood": {
                 "name": "樹林"
                 "name": "商店"
             },
             "shop/alcohol": {
-                "name": "酒類商店"
+                "name": "酒類商店",
+                "terms": "酒店,酒莊"
             },
             "shop/bakery": {
                 "name": "麵包店"