]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #4133 from AntonKhorev/flex-leaflet-controls
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 16 Aug 2023 12:43:42 +0000 (13:43 +0100)
committerGitHub <noreply@github.com>
Wed, 16 Aug 2023 12:43:42 +0000 (13:43 +0100)
Use multiple columns for map controls if they don't fit vertically

77 files changed:
.rubocop_todo.yml
Gemfile.lock
app/assets/images/banners/donate_2023_1.jpg [new file with mode: 0644]
app/assets/images/banners/donate_2023_1@2x.jpg [new file with mode: 0644]
app/assets/images/banners/sotm_2022.png [deleted file]
app/assets/javascripts/messages.js
app/assets/javascripts/user.js
app/assets/stylesheets/common.scss
app/controllers/api/capabilities_controller.rb
app/controllers/api/changesets_controller.rb
app/controllers/application_controller.rb
app/controllers/diary_entries_controller.rb
app/controllers/geocoder_controller.rb
app/controllers/issue_comments_controller.rb
app/controllers/issues_controller.rb
app/controllers/user_roles_controller.rb
app/controllers/users_controller.rb
app/helpers/application_helper.rb
app/helpers/user_helper.rb
app/helpers/user_roles_helper.rb
app/mailers/user_mailer.rb
app/models/trace.rb
app/models/user.rb
app/views/api/capabilities/show.builder
app/views/api/capabilities/show.json.jbuilder [new file with mode: 0644]
app/views/api/users/_user.json.jbuilder
app/views/api/users/_user.xml.builder
app/views/dashboards/_contact.html.erb
app/views/dashboards/show.html.erb
app/views/diary_entries/_diary_comment.html.erb
app/views/diary_entries/_diary_entry.html.erb
app/views/diary_entries/_form.html.erb
app/views/diary_entries/show.html.erb
app/views/layouts/_banner.html.erb
app/views/layouts/map.html.erb
app/views/messages/_message_summary.html.erb
app/views/messages/_sent_message_summary.html.erb
app/views/messages/inbox.html.erb
app/views/messages/outbox.html.erb
app/views/messages/show.html.erb
app/views/notes/index.html.erb
app/views/profiles/edit.html.erb
app/views/user_mailer/_message_body.html.erb
app/views/users/show.html.erb
config/banners.yml
config/locales/af.yml
config/locales/bg.yml
config/locales/bn.yml
config/locales/cs.yml
config/locales/cy.yml
config/locales/en.yml
config/locales/es.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/hr.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/mk.yml
config/locales/nb.yml
config/locales/nl.yml
config/locales/ro.yml
config/locales/skr-arab.yml
config/locales/sl.yml
config/locales/zh-TW.yml
config/settings.yml
test/controllers/api/capabilities_controller_test.rb
test/controllers/api/changesets_controller_test.rb
test/controllers/api/relations_controller_test.rb
test/controllers/diary_entries_controller_test.rb
test/helpers/user_helper_test.rb
test/models/user_test.rb
yarn.lock

index 527c793545f61d6307aedff2f35df3f69cf307cc..db94a610b8fe20aecc9ebc4851cba172c0afc05f 100644 (file)
@@ -92,16 +92,6 @@ Minitest/EmptyLineBeforeAssertionMethods:
 Minitest/MultipleAssertions:
   Max: 54
 
-# Offense count: 1
-# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
-# NamePrefix: is_, has_, have_
-# ForbiddenPrefixes: is_, has_, have_
-# AllowedMethods: is_a?
-# MethodDefinitionMacros: define_method, define_singleton_method
-Naming/PredicateName:
-  Exclude:
-    - 'app/models/user.rb'
-
 # Offense count: 1
 # This cop supports unsafe autocorrection (--autocorrect-all).
 Rails/ActionControllerFlashBeforeRender:
index 2cb6bf177758cb8adbe099714caab49485d379f8..b75e9360678aa89124b6ee8d7f5ce5558c77a796 100644 (file)
@@ -3,78 +3,78 @@ GEM
   specs:
     aasm (5.5.0)
       concurrent-ruby (~> 1.0)
-    actioncable (7.0.6)
-      actionpack (= 7.0.6)
-      activesupport (= 7.0.6)
+    actioncable (7.0.7)
+      actionpack (= 7.0.7)
+      activesupport (= 7.0.7)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailbox (7.0.6)
-      actionpack (= 7.0.6)
-      activejob (= 7.0.6)
-      activerecord (= 7.0.6)
-      activestorage (= 7.0.6)
-      activesupport (= 7.0.6)
+    actionmailbox (7.0.7)
+      actionpack (= 7.0.7)
+      activejob (= 7.0.7)
+      activerecord (= 7.0.7)
+      activestorage (= 7.0.7)
+      activesupport (= 7.0.7)
       mail (>= 2.7.1)
       net-imap
       net-pop
       net-smtp
-    actionmailer (7.0.6)
-      actionpack (= 7.0.6)
-      actionview (= 7.0.6)
-      activejob (= 7.0.6)
-      activesupport (= 7.0.6)
+    actionmailer (7.0.7)
+      actionpack (= 7.0.7)
+      actionview (= 7.0.7)
+      activejob (= 7.0.7)
+      activesupport (= 7.0.7)
       mail (~> 2.5, >= 2.5.4)
       net-imap
       net-pop
       net-smtp
       rails-dom-testing (~> 2.0)
-    actionpack (7.0.6)
-      actionview (= 7.0.6)
-      activesupport (= 7.0.6)
+    actionpack (7.0.7)
+      actionview (= 7.0.7)
+      activesupport (= 7.0.7)
       rack (~> 2.0, >= 2.2.4)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.2.0)
     actionpack-page_caching (1.2.4)
       actionpack (>= 4.0.0)
-    actiontext (7.0.6)
-      actionpack (= 7.0.6)
-      activerecord (= 7.0.6)
-      activestorage (= 7.0.6)
-      activesupport (= 7.0.6)
+    actiontext (7.0.7)
+      actionpack (= 7.0.7)
+      activerecord (= 7.0.7)
+      activestorage (= 7.0.7)
+      activesupport (= 7.0.7)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.0.6)
-      activesupport (= 7.0.6)
+    actionview (7.0.7)
+      activesupport (= 7.0.7)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.1, >= 1.2.0)
     active_record_union (1.3.0)
       activerecord (>= 4.0)
-    activejob (7.0.6)
-      activesupport (= 7.0.6)
+    activejob (7.0.7)
+      activesupport (= 7.0.7)
       globalid (>= 0.3.6)
-    activemodel (7.0.6)
-      activesupport (= 7.0.6)
-    activerecord (7.0.6)
-      activemodel (= 7.0.6)
-      activesupport (= 7.0.6)
+    activemodel (7.0.7)
+      activesupport (= 7.0.7)
+    activerecord (7.0.7)
+      activemodel (= 7.0.7)
+      activesupport (= 7.0.7)
     activerecord-import (1.4.1)
       activerecord (>= 4.2)
-    activestorage (7.0.6)
-      actionpack (= 7.0.6)
-      activejob (= 7.0.6)
-      activerecord (= 7.0.6)
-      activesupport (= 7.0.6)
+    activestorage (7.0.7)
+      actionpack (= 7.0.7)
+      activejob (= 7.0.7)
+      activerecord (= 7.0.7)
+      activesupport (= 7.0.7)
       marcel (~> 1.0)
       mini_mime (>= 1.1.0)
-    activesupport (7.0.6)
+    activesupport (7.0.7)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
       tzinfo (~> 2.0)
-    addressable (2.8.4)
+    addressable (2.8.5)
       public_suffix (>= 2.0.2, < 6.0)
     annotate (3.2.0)
       activerecord (>= 3.2, < 8.0)
@@ -86,8 +86,8 @@ GEM
     autoprefixer-rails (10.4.13.0)
       execjs (~> 2)
     aws-eventstream (1.2.0)
-    aws-partitions (1.795.0)
-    aws-sdk-core (3.180.1)
+    aws-partitions (1.804.0)
+    aws-sdk-core (3.180.3)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.651.0)
       aws-sigv4 (~> 1.5)
@@ -95,12 +95,13 @@ GEM
     aws-sdk-kms (1.71.0)
       aws-sdk-core (~> 3, >= 3.177.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.132.0)
+    aws-sdk-s3 (1.132.1)
       aws-sdk-core (~> 3, >= 3.179.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.6)
     aws-sigv4 (1.6.0)
       aws-eventstream (~> 1, >= 1.0.2)
+    base64 (0.1.1)
     better_errors (2.10.1)
       erubi (>= 1.0.0)
       rack (>= 0.9.0)
@@ -168,7 +169,7 @@ GEM
     dry-configurable (1.1.0)
       dry-core (~> 1.0, < 2)
       zeitwerk (~> 2.6)
-    dry-core (1.0.0)
+    dry-core (1.0.1)
       concurrent-ruby (~> 1.0)
       zeitwerk (~> 2.6)
     dry-inflector (1.0.0)
@@ -298,7 +299,7 @@ GEM
     maxminddb (0.1.22)
     method_source (1.0.0)
     mini_magick (4.12.0)
-    mini_mime (1.1.2)
+    mini_mime (1.1.5)
     mini_portile2 (2.8.4)
     minitest (5.19.0)
     msgpack (1.7.2)
@@ -314,7 +315,7 @@ GEM
     net-smtp (0.3.3)
       net-protocol
     nio4r (2.5.9)
-    nokogiri (1.15.3)
+    nokogiri (1.15.4)
       mini_portile2 (~> 2.8.2)
       racc (~> 1.4)
     oauth (0.4.7)
@@ -368,7 +369,7 @@ GEM
       ast (~> 2.4.1)
       racc
     pg (1.5.3)
-    popper_js (2.11.7)
+    popper_js (2.11.8)
     progress (3.6.0)
     public_suffix (5.0.3)
     puma (5.6.6)
@@ -382,42 +383,42 @@ GEM
     rack-openid (1.4.2)
       rack (>= 1.1.0)
       ruby-openid (>= 2.1.8)
-    rack-protection (3.0.6)
-      rack
+    rack-protection (3.1.0)
+      rack (~> 2.2, >= 2.2.4)
     rack-test (2.1.0)
       rack (>= 1.3)
     rack-uri_sanitizer (0.0.2)
-    rails (7.0.6)
-      actioncable (= 7.0.6)
-      actionmailbox (= 7.0.6)
-      actionmailer (= 7.0.6)
-      actionpack (= 7.0.6)
-      actiontext (= 7.0.6)
-      actionview (= 7.0.6)
-      activejob (= 7.0.6)
-      activemodel (= 7.0.6)
-      activerecord (= 7.0.6)
-      activestorage (= 7.0.6)
-      activesupport (= 7.0.6)
+    rails (7.0.7)
+      actioncable (= 7.0.7)
+      actionmailbox (= 7.0.7)
+      actionmailer (= 7.0.7)
+      actionpack (= 7.0.7)
+      actiontext (= 7.0.7)
+      actionview (= 7.0.7)
+      activejob (= 7.0.7)
+      activemodel (= 7.0.7)
+      activerecord (= 7.0.7)
+      activestorage (= 7.0.7)
+      activesupport (= 7.0.7)
       bundler (>= 1.15.0)
-      railties (= 7.0.6)
+      railties (= 7.0.7)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
       activesupport (>= 5.0.1.rc1)
-    rails-dom-testing (2.1.1)
+    rails-dom-testing (2.2.0)
       activesupport (>= 5.0.0)
       minitest
       nokogiri (>= 1.6)
     rails-html-sanitizer (1.6.0)
       loofah (~> 2.21)
       nokogiri (~> 1.14)
-    rails-i18n (7.0.6)
+    rails-i18n (7.0.8)
       i18n (>= 0.7, < 2)
       railties (>= 6.0.0, < 8)
-    railties (7.0.6)
-      actionpack (= 7.0.6)
-      activesupport (= 7.0.6)
+    railties (7.0.7)
+      actionpack (= 7.0.7)
+      activesupport (= 7.0.7)
       method_source
       rake (>= 12.2)
       thor (~> 1.0)
@@ -434,7 +435,8 @@ GEM
     rinku (2.0.6)
     rotp (6.2.2)
     rouge (4.1.3)
-    rubocop (1.55.1)
+    rubocop (1.56.0)
+      base64 (~> 0.1.1)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
@@ -453,7 +455,7 @@ GEM
       rubocop (~> 1.33)
     rubocop-minitest (0.31.0)
       rubocop (>= 1.39, < 2.0)
-    rubocop-performance (1.18.0)
+    rubocop-performance (1.19.0)
       rubocop (>= 1.7.0, < 2.0)
       rubocop-ast (>= 0.4.0)
     rubocop-rails (2.20.2)
@@ -505,7 +507,7 @@ GEM
       actionpack (>= 5.2)
       activesupport (>= 5.2)
       sprockets (>= 3.0.0)
-    strong_migrations (1.6.0)
+    strong_migrations (1.6.1)
       activerecord (>= 5.2)
     terminal-table (3.0.2)
       unicode-display_width (>= 1.1.1, < 3)
@@ -531,7 +533,7 @@ GEM
     websocket-extensions (0.1.5)
     xpath (3.2.0)
       nokogiri (~> 1.8)
-    zeitwerk (2.6.10)
+    zeitwerk (2.6.11)
 
 PLATFORMS
   ruby
diff --git a/app/assets/images/banners/donate_2023_1.jpg b/app/assets/images/banners/donate_2023_1.jpg
new file mode 100644 (file)
index 0000000..0a445b5
Binary files /dev/null and b/app/assets/images/banners/donate_2023_1.jpg differ
diff --git a/app/assets/images/banners/donate_2023_1@2x.jpg b/app/assets/images/banners/donate_2023_1@2x.jpg
new file mode 100644 (file)
index 0000000..8f519b6
Binary files /dev/null and b/app/assets/images/banners/donate_2023_1@2x.jpg differ
diff --git a/app/assets/images/banners/sotm_2022.png b/app/assets/images/banners/sotm_2022.png
deleted file mode 100644 (file)
index e6cc0cd..0000000
Binary files a/app/assets/images/banners/sotm_2022.png and /dev/null differ
index 0cae79a58cd2924255f0daead205e9bf7effb033..5accc1a6036fb94ec958eaf8f5c803832ecf3c09 100644 (file)
@@ -1,30 +1,34 @@
 $(document).ready(function () {
   $(".inbox-mark-unread").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
-
-    $("#inbox-count").replaceWith(data.inbox_count);
-
-    $(this).parents(".inbox-row").removeClass("inbox-row").addClass("inbox-row-unread");
+    updateHtml(data);
+    updateReadState(this, false);
   });
 
   $(".inbox-mark-read").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
+    updateHtml(data);
+    updateReadState(this, true);
+  });
 
-    $("#inbox-count").replaceWith(data.inbox_count);
+  $(".inbox-destroy").on("ajax:success", function (event, data) {
+    updateHtml(data);
 
-    $(this).parents(".inbox-row-unread").removeClass("inbox-row-unread").addClass("inbox-row");
+    $(this).closest("tr").fadeOut(800, "linear", function () {
+      $(this).remove();
+    });
   });
 
-  $(".inbox-destroy").on("ajax:success", function (event, data) {
+  function updateHtml(data) {
     $("#inboxanchor").remove();
     $(".user-button").before(data.inboxanchor);
 
     $("#inbox-count").replaceWith(data.inbox_count);
-
-    $(this).parents(".inbox-row, .inbox-row-unread").fadeOut(800, "linear", function () {
-      $(this).remove();
-    });
-  });
+  }
+
+  function updateReadState(target, isRead) {
+    $(target).closest("tr")
+      .toggleClass("inbox-row", isRead)
+      .toggleClass("inbox-row-unread", !isRead)
+      .find(".inbox-mark-unread").prop("hidden", !isRead).end()
+      .find(".inbox-mark-read").prop("hidden", isRead);
+  }
 });
index 14da8f300497cc8fd0497616a0ef1d21923b95ae..146d876f789643d20abfed4043cbf44989c8af59 100644 (file)
@@ -1,8 +1,11 @@
 //= require leaflet.locatecontrol/src/L.Control.Locate
 
 $(document).ready(function () {
+  var defaultHomeZoom = 12;
+  var map, marker, deleted_lat, deleted_lon;
+
   if ($("#map").length) {
-    var map = L.map("map", {
+    map = L.map("map", {
       attributionControl: false,
       zoomControl: false
     }).addLayer(new L.OSM.Mapnik());
@@ -35,13 +38,17 @@ $(document).ready(function () {
       .addClass("control-button");
 
     if (OSM.home) {
-      map.setView([OSM.home.lat, OSM.home.lon], 12);
+      map.setView([OSM.home.lat, OSM.home.lon], defaultHomeZoom);
     } else {
       map.setView([0, 0], 0);
     }
 
     if ($("#map").hasClass("set_location")) {
-      var marker = L.marker([0, 0], { icon: OSM.getUserIcon() });
+      marker = L.marker([0, 0], {
+        icon: OSM.getUserIcon(),
+        keyboard: false,
+        interactive: false
+      });
 
       if (OSM.home) {
         marker.setLatLng([OSM.home.lat, OSM.home.lon]);
@@ -49,18 +56,65 @@ $(document).ready(function () {
       }
 
       map.on("click", function (e) {
-        if ($("#updatehome").is(":checked")) {
-          var zoom = map.getZoom(),
-              precision = OSM.zoomPrecision(zoom),
-              location = e.latlng.wrap();
+        if (!$("#updatehome").is(":checked")) return;
+
+        var zoom = map.getZoom(),
+            precision = OSM.zoomPrecision(zoom),
+            location = e.latlng.wrap();
+
+        $("#home_lat").val(location.lat.toFixed(precision));
+        $("#home_lon").val(location.lng.toFixed(precision));
+
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+      }).on("moveend", function () {
+        var lat = $("#home_lat").val().trim(),
+            lon = $("#home_lon").val().trim(),
+            location;
+
+        try {
+          if (lat && lon) {
+            location = L.latLng(lat, lon);
+          }
+        } catch (error) {
+          // keep location undefined
+        }
 
-          $("#homerow").removeClass();
-          $("#home_lat").val(location.lat.toFixed(precision));
-          $("#home_lon").val(location.lng.toFixed(precision));
+        $("#home_show").prop("disabled", !location || isCloseEnoughToMapCenter(location));
+      });
 
-          marker.setLatLng(e.latlng);
-          marker.addTo(map);
-        }
+      $("#home_lat, #home_lon").on("input", function () {
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+      });
+
+      $("#home_show").click(function () {
+        var lat = $("#home_lat").val(),
+            lon = $("#home_lon").val();
+
+        map.setView([lat, lon], defaultHomeZoom);
+      });
+
+      $("#home_delete").click(function () {
+        var lat = $("#home_lat").val(),
+            lon = $("#home_lon").val();
+
+        $("#home_lat, #home_lon").val("");
+        deleted_lat = lat;
+        deleted_lon = lon;
+        respondToHomeUpdate();
+        $("#home_undelete").trigger("focus");
+      });
+
+      $("#home_undelete").click(function () {
+        $("#home_lat").val(deleted_lat);
+        $("#home_lon").val(deleted_lon);
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+        $("#home_delete").trigger("focus");
       });
     } else {
       $("[data-user]").each(function () {
@@ -73,6 +127,41 @@ $(document).ready(function () {
     }
   }
 
+  function respondToHomeUpdate() {
+    var lat = $("#home_lat").val().trim(),
+        lon = $("#home_lon").val().trim(),
+        location;
+
+    try {
+      if (lat && lon) {
+        location = L.latLng(lat, lon);
+      }
+      $("#home_lat, #home_lon").removeClass("is-invalid");
+    } catch (error) {
+      if (lat && isNaN(lat)) $("#home_lat").addClass("is-invalid");
+      if (lon && isNaN(lon)) $("#home_lon").addClass("is-invalid");
+    }
+
+    $("#home_message").toggleClass("invisible", Boolean(location));
+    $("#home_show").prop("hidden", !location);
+    $("#home_delete").prop("hidden", !location);
+    $("#home_undelete").prop("hidden", !(!location && deleted_lat && deleted_lon));
+    if (location) {
+      marker.setLatLng([lat, lon]);
+      marker.addTo(map);
+      map.panTo([lat, lon]);
+    } else {
+      marker.removeFrom(map);
+    }
+  }
+
+  function isCloseEnoughToMapCenter(location) {
+    var inputPt = map.latLngToContainerPoint(location),
+        centerPt = map.latLngToContainerPoint(map.getCenter());
+
+    return centerPt.distanceTo(inputPt) < 10;
+  }
+
   function updateAuthUID() {
     var provider = $("select#user_auth_provider").val();
 
index 5f4c9777dacf20759d96a054b8e7b3b48af4204d..2386fed824850ef3c5a457c0751a1cd609c9a7f9 100644 (file)
@@ -304,7 +304,7 @@ body.small-nav {
   }
 
   nav.secondary {
-    .user-menu {
+    .user-menu, .login-menu {
       width: 100%;
     }
   }
@@ -469,6 +469,11 @@ body.small-nav {
       display: block;
       width: $sidebarWidth;
     }
+
+    button.btn-close {
+      background-color: rgba(255, 255, 255, 0.5);
+      opacity: 1.0;
+    }
   }
 
   #map {
@@ -1056,49 +1061,24 @@ tr.turn:hover {
   width: 100%;
 }
 
-/* Rules for the diary list page */
-
-.diary_post {
-  position: relative;
-  padding-top: $lineheight;
-  padding-bottom: $lineheight/2;
-  border-top: 1px solid $grey;
-
-  &.deleted {
-    background-color: #fee;
-  }
-}
-
 /* Rules for the diary entry page */
 
 .diary_entries {
   #map {
     height: 400px;
     display: none;
-    margin-bottom: $lineheight;
   }
   .comments {
     max-width: 740px;
   }
   .diary-comment {
     border-top: 1px dashed $grey;
-    padding-top: $lineheight/2;
-    padding-bottom: $lineheight/2;
     &:first-child {
-      margin-top: $lineheight/2;
-      padding-top: $lineheight;
       border-top: 1px solid $grey;
     }
-    &.deleted {
-      background-color: #fee;
-    }
     p {
       margin-bottom: $lineheight/2;
     }
-    .comment-heading {
-      margin-bottom: 0;
-      margin-top: 0;
-    }
   }
 }
 
@@ -1132,32 +1112,6 @@ tr.turn:hover {
   }
 }
 
-/* Rules for the account settings page */
-
-#accountForm .user_image {
-  margin-bottom: 0;
-}
-
-#accountForm #user_image {
-  margin-left: 20px;
-}
-
-#accountForm ul.accountImage-options {
-  margin-left: 120px;
-}
-
-.nohome .location {
-  display: none;
-}
-
-#homerow .message {
-  display: none;
-}
-
-.nohome .message {
-  display: inline !important;
-}
-
 /* Rules for the oauth authorization page */
 
 .oauth-authorize ul {
@@ -1167,11 +1121,6 @@ tr.turn:hover {
 /* Rules for messages pages */
 
 .messages {
-  button[type="submit"] {
-    margin: auto;
-    white-space: nowrap;
-  }
-
   .inbox-row {
     background: $offwhite;
   }
@@ -1179,80 +1128,6 @@ tr.turn:hover {
   .inbox-row-unread {
     background: #CBEEA7;
   }
-
-  .right {
-    float: right;
-  }
-}
-
-.inbox-row .inbox-mark-read {
-  display: none;
-}
-
-.info-line {
-  margin-bottom: $lineheight;
-  padding: $lineheight/4 0px 4px 0px;
-  border-bottom: 1px solid $grey;
-
-  form, form div {
-    display: inline;
-  }
-}
-
-.info-line .user_thumbnail_tiny {
-  vertical-align: middle;
-}
-
-.inbox-sent {
-  white-space: nowrap;
-}
-
-.inbox-mark-unread,
-.inbox-mark-read,
-.inbox-delete {
-  width: 1%;
-}
-
-.inbox-row-unread .inbox-mark-unread {
-  display: none;
-}
-
-/* Rules for highlighting fields with rails validation errors */
-
-.formError {
-  display: inline-block;
-  padding: 5px 10px;
-  margin-top: 5px;
-  border-radius: 4px;
-  font-size: 12px;
-  color: #fff;
-  background-color: #ff7070;
-}
-
-/* Rules for rails validation error boxes */
-
-#errorExplanation {
-  width: 400px;
-  border: 2px solid #ff7070;
-  padding: 0 $lineheight/2;
-  margin-bottom: $lineheight;
-  background-color: #f0f0f0;
-
-  h2 {
-    margin: 0 -10px 10px -10px;
-    padding: $lineheight/4 $lineheight/4 $lineheight/4 15px;
-    font-weight: bold;
-    font-size: 12px;
-    background-color: #c00;
-    color: #fff;
-    text-align: left;
-  }
-
-  p {
-    color: #333;
-    margin-bottom: 0px;
-    padding: $lineheight/4;
-  }
 }
 
 .search_form {
@@ -1289,15 +1164,8 @@ img.user_thumbnail_tiny {
   max-height: 25px;
 }
 
-/* Rules for geo microformats */
-
-abbr.geo {
-  border-bottom: none;
-}
-
 /* General styles for action lists / subnavs */
 
-
 nav.secondary-actions {
   margin-left: -11px;
   overflow: hidden;
@@ -1324,24 +1192,6 @@ div.secondary-actions {
   text-align: center;
 }
 
-/* Create a single-line dl */
-
-dl.dl-inline {
-  dt, dd {
-    display: inline-block;
-  }
-  dd {
-    margin-right: 1em;
-  }
-}
-
-/* Rules for OpenID logo */
-
-.openid_logo {
-  vertical-align: text-bottom;
-  border: 0;
-}
-
 /* Rules for rich text */
 
 .richtext,
@@ -1349,6 +1199,8 @@ dl.dl-inline {
   code {
     background: $lightgrey;
     padding: 2px 3px;
+    direction: inherit; /* fix for Bootstrap < 5.2 */
+    unicode-bidi: unset; /* fix for Bootstrap < 5.2 */
   }
 
   pre {
@@ -1377,14 +1229,6 @@ dl.dl-inline {
   }
 }
 
-/* Rules for the user notes list */
-
-.note_list {
-  tr.creator {
-    background-color: $offwhite;
-  }
-}
-
 /* Rules for the iD editor */
 
 .id-embed {
index 7f91557f85849b74bf749daf590dbe77aa3f582d..80222c40bd93fb622753a5d672841cbe1fa2d12d 100644 (file)
@@ -2,6 +2,7 @@ module Api
   class CapabilitiesController < ApiController
     authorize_resource :class => false
 
+    before_action :set_request_formats
     around_action :api_call_handle_error, :api_call_timeout
 
     # External apps that use the api are able to query the api to find out some
index a08edff53cd46f3f3f3404eb49cb7c9b28a1a8d7..0a49a95f4e01e98a99c07566f6da92282448e09b 100644 (file)
@@ -19,9 +19,6 @@ module Api
     # Helper methods for checking consistency
     include ConsistencyValidations
 
-    DEFAULT_QUERY_LIMIT = 100
-    MAX_QUERY_LIMIT = 100
-
     ##
     # Return XML giving the basic info about the changeset. Does not
     # return anything about the nodes, ways and relations in the changeset.
@@ -173,8 +170,15 @@ module Api
       changesets = conditions_closed(changesets, params["closed"])
       changesets = conditions_ids(changesets, params["changesets"])
 
-      # sort and limit the changesets
-      changesets = changesets.order("created_at DESC").limit(result_limit)
+      # sort the changesets
+      changesets = if params[:order] == "oldest"
+                     changesets.order(:closed_at => :asc)
+                   else
+                     changesets.order(:closed_at => :desc)
+                   end
+
+      # limit the result
+      changesets = changesets.limit(result_limit)
 
       # preload users, tags and comments, and render result
       @changesets = changesets.preload(:user, :changeset_tags, :comments)
@@ -391,13 +395,13 @@ module Api
     # Get the maximum number of results to return
     def result_limit
       if params[:limit]
-        if params[:limit].to_i.positive? && params[:limit].to_i <= MAX_QUERY_LIMIT
+        if params[:limit].to_i.positive? && params[:limit].to_i <= Settings.max_changeset_query_limit
           params[:limit].to_i
         else
-          raise OSM::APIBadUserInput, "Changeset limit must be between 1 and #{MAX_QUERY_LIMIT}"
+          raise OSM::APIBadUserInput, "Changeset limit must be between 1 and #{Settings.max_changeset_query_limit}"
         end
       else
-        DEFAULT_QUERY_LIMIT
+        Settings.default_changeset_query_limit
       end
     end
   end
index d22a031d4bcbbc5707b5cf6e85f687ea7d490204..5dcfee07ca03cc9aaeb84549513305af4c658133 100644 (file)
@@ -22,7 +22,7 @@ class ApplicationController < ActionController::Base
 
   def authorize_web
     if session[:user]
-      self.current_user = User.where(:id => session[:user]).where("status IN ('active', 'confirmed', 'suspended')").first
+      self.current_user = User.where(:id => session[:user], :status => %w[active confirmed suspended]).first
 
       if session[:fingerprint] &&
          session[:fingerprint] != current_user.fingerprint
index ea9aacb21d97f5e72b18e95fc3e28635cf89d903..6981ed797f92112956e2097bf7a11a1e54d9465b 100644 (file)
@@ -280,7 +280,7 @@ class DiaryEntriesController < ApplicationController
       @lon = @diary_entry.longitude
       @lat = @diary_entry.latitude
       @zoom = 12
-    elsif current_user.home_lat.nil? || current_user.home_lon.nil?
+    elsif !current_user.home_location?
       @lon = params[:lon] || -0.1
       @lat = params[:lat] || 51.5
       @zoom = params[:zoom] || 4
index fc8b3a60bab0d068170a01e600ed771564569fe8..912247c9c15d622a88af5ac96a40886d045a3ac0 100644 (file)
@@ -88,10 +88,7 @@ class GeocoderController < ApplicationController
     response = fetch_xml("#{Settings.nominatim_url}search?format=xml&extratags=1&q=#{escape_query(query)}#{viewbox}#{exclude}&accept-language=#{http_accept_language.user_preferred_languages.join(',')}")
 
     # extract the results from the response
-    results =  response.elements["searchresults"]
-
-    # extract parameters from more_url
-    more_url_params = CGI.parse(URI.parse(results.attributes["more_url"]).query)
+    results = response.elements["searchresults"]
 
     # create result array
     @results = []
@@ -99,7 +96,7 @@ class GeocoderController < ApplicationController
     # create parameter hash for "more results" link
     @more_params = params
                    .permit(:query, :minlon, :minlat, :maxlon, :maxlat, :exclude)
-                   .merge(:exclude => more_url_params["exclude_place_ids"].first)
+                   .merge(:exclude => results.attributes["exclude_place_ids"])
 
     # parse the response
     results.elements.each("place") do |place|
index 7edef184e782cf560a5c31d5a68b9c1550f1b88c..5bf4d023784a587613645f03891f5e2f22ae2cae 100644 (file)
@@ -19,7 +19,7 @@ class IssueCommentsController < ApplicationController
       reassign_issue(@issue)
       flash[:notice] = t ".issue_reassigned"
 
-      if current_user.has_role? @issue.assigned_role
+      if current_user.role? @issue.assigned_role
         redirect_to @issue
       else
         redirect_to issues_path(:status => "open")
index 44c19e322708a8b07c6ca75854988dbaba0782ca..c381119f0d44472b6633fe9e050923b604effd2f 100644 (file)
@@ -42,6 +42,7 @@ class IssuesController < ApplicationController
   end
 
   def show
+    @title = t ".title", :status => @issue.status.humanize, :issue_id => @issue.id
     @read_reports = @issue.read_reports
     @unread_reports = @issue.unread_reports
     @comments = @issue.comments
index fe4c855e3d827e9696e4233b2f86c57ccd4c7b16..cf5b4de9e35e2c8771673e4bd09ac7d011aeeb73 100644 (file)
@@ -41,7 +41,7 @@ class UserRolesController < ApplicationController
   ##
   # checks that the user doesn't already have this role
   def not_in_role
-    if @user.has_role? @role
+    if @user.role? @role
       flash[:error] = t("user_role.filter.already_has_role", :role => @role)
       redirect_to user_path(@user)
     end
@@ -50,7 +50,7 @@ class UserRolesController < ApplicationController
   ##
   # checks that the user already has this role
   def in_role
-    unless @user.has_role? @role
+    unless @user.role? @role
       flash[:error] = t("user_role.filter.doesnt_have_role", :role => @role)
       redirect_to user_path(@user)
     end
index abd998030eda898c28d439f82d6156c219c701c9..fc9a6afc09a17926d49db044df1333008277b3c4 100644 (file)
@@ -357,7 +357,7 @@ class UsersController < ApplicationController
   # get list of MX servers for a domains
   def domain_mx_servers(domain)
     Resolv::DNS.open do |dns|
-      dns.getresources(domain, Resolv::DNS::Resource::IN::MX).collect(&:exchange).collect(&:to_s)
+      dns.getresources(domain, Resolv::DNS::Resource::IN::MX).collect { |mx| mx.exchange.to_s }
     end
   end
 end
index bb09f3a49953bd66ec26fcb8734befb800c767e1..28c97e485f372242369c444f12057aa405c64926 100644 (file)
@@ -54,7 +54,7 @@ module ApplicationHelper
     if current_user
       data[:user] = current_user.id.to_json
 
-      data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } unless current_user.home_lon.nil? || current_user.home_lat.nil?
+      data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } if current_user.home_location?
     end
 
     data[:location] = session[:location] if session[:location]
index 1064e95c7dd7b4bed74a6075b002be28223451aa..c8a80588ca6a830ddb9b1b9c48c6cfc4b02461f0 100644 (file)
@@ -53,7 +53,7 @@ module UserHelper
   # External authentication support
 
   def openid_logo
-    image_tag "openid_small.png", :alt => t("sessions.new.openid_logo_alt"), :class => "openid_logo"
+    image_tag "openid_small.png", :alt => t("sessions.new.openid_logo_alt"), :class => "align-text-bottom"
   end
 
   def auth_button(name, provider, options = {})
index a8bc06b6e699c286eed1ae5a29ddd6953e296403..c9f8e2e6549e06429b23b024fd45717c927cac10 100644 (file)
@@ -5,7 +5,7 @@ module UserRolesHelper
 
   def role_icon(user, role)
     if current_user&.administrator?
-      if user.has_role?(role)
+      if user.role?(role)
         image = "roles/#{role}"
         alt = t("users.show.role.revoke.#{role}")
         title = t("users.show.role.revoke.#{role}")
@@ -18,7 +18,7 @@ module UserRolesHelper
         url = grant_role_path(:display_name => user.display_name, :role => role)
         confirm = t("user_role.grant.are_you_sure", :name => user.display_name, :role => role)
       end
-    elsif user.has_role?(role)
+    elsif user.role?(role)
       image = "roles/#{role}"
       alt = t("users.show.role.#{role}")
       title = t("users.show.role.#{role}")
index c5c0118e6f8b395da0569c7f12b040bd341f5ffc..a9c6b70f91eeb29d8538aa1c18859e199a38b8ad 100644 (file)
@@ -187,7 +187,25 @@ class UserMailer < ApplicationMailer
   end
 
   def attach_user_avatar(user)
-    attachments.inline["avatar.png"] = user_avatar_file(user)
+    @avatar = user_avatar_filename(user)
+    attachments.inline[@avatar] = user_avatar_file(user)
+  end
+
+  def user_avatar_filename(user)
+    avatar = user&.avatar
+    if avatar&.attached?
+      case avatar.content_type
+      when "image/png" then "avatar.png"
+      when "image/jpeg" then "avatar.jpg"
+      when "image/gif" then "avatar.gif"
+      when "image/bmp" then "avatar.bmp"
+      when "image/tiff" then "avatar.tif"
+      when "image/svg+xml" then "avatar.svg"
+      else "avatar"
+      end
+    else
+      "avatar.png"
+    end
   end
 
   def user_avatar_file(user)
index 0b9877225b889c11d942aa1eb6f9b13feae8caec..35fee0bf4f800d7fd22f906d1b9cc3040ea5727f 100644 (file)
@@ -35,7 +35,7 @@ class Trace < ApplicationRecord
   has_many :points, :class_name => "Tracepoint", :foreign_key => "gpx_id", :dependent => :delete_all, :inverse_of => :trace
 
   scope :visible, -> { where(:visible => true) }
-  scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
+  scope :visible_to, ->(u) { visible.where(:visibility => %w[public identifiable]).or(visible.where(:user => u)) }
   scope :visible_to_all, -> { where(:visibility => %w[public identifiable]) }
   scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
 
index c809b619294732038c97558423b349fe2050212c..5c21736b0f6a9cbe031056cf4ef3ebaeae297cc1 100644 (file)
@@ -238,8 +238,12 @@ class User < ApplicationRecord
     @preferred_languages ||= Locale.list(languages)
   end
 
+  def home_location?
+    home_lat && home_lon
+  end
+
   def nearby(radius = Settings.nearby_radius, num = Settings.nearby_users)
-    if home_lon && home_lat
+    if home_location?
       gc = OSM::GreatCircle.new(home_lat, home_lon)
       sql_for_area = QuadTile.sql_for_area(gc.bounds(radius), "home_")
       sql_for_distance = gc.sql_for_distance("home_lat", "home_lon")
@@ -278,18 +282,18 @@ class User < ApplicationRecord
   ##
   # returns true if the user has the moderator role, false otherwise
   def moderator?
-    has_role? "moderator"
+    role? "moderator"
   end
 
   ##
   # returns true if the user has the administrator role, false otherwise
   def administrator?
-    has_role? "administrator"
+    role? "administrator"
   end
 
   ##
   # returns true if the user has the requested role
-  def has_role?(role)
+  def role?(role)
     roles.any? { |r| r.role == role }
   end
 
@@ -401,6 +405,6 @@ class User < ApplicationRecord
   end
 
   def update_tile
-    self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if home_lat && home_lon
+    self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if home_location?
   end
 end
index b6a38723db2d37870c702d6d0119d5313df94c40..1258601bb9abb14e8dded8ca844e037b9fb7d0a1 100644 (file)
@@ -7,7 +7,9 @@ xml.osm(OSM::API.new.xml_root_attributes) do |osm|
     api.tracepoints(:per_page => Settings.tracepoints_per_page)
     api.waynodes(:maximum => Settings.max_number_of_way_nodes)
     api.relationmembers(:maximum => Settings.max_number_of_relation_members)
-    api.changesets(:maximum_elements => Changeset::MAX_ELEMENTS)
+    api.changesets(:maximum_elements => Changeset::MAX_ELEMENTS,
+                   :default_query_limit => Settings.default_changeset_query_limit,
+                   :maximum_query_limit => Settings.max_changeset_query_limit)
     api.timeout(:seconds => Settings.api_timeout)
     api.status(:database => @database_status,
                :api => @api_status,
diff --git a/app/views/api/capabilities/show.json.jbuilder b/app/views/api/capabilities/show.json.jbuilder
new file mode 100644 (file)
index 0000000..ceffa8b
--- /dev/null
@@ -0,0 +1,44 @@
+json.partial! "api/root_attributes"
+
+json.api do
+  json.version do
+    json.minimum Settings.api_version
+    json.maximum Settings.api_version
+  end
+  json.area do
+    json.maximum Settings.max_request_area
+  end
+  json.note_area do
+    json.maximum Settings.max_note_request_area
+  end
+  json.tracepoints do
+    json.per_page Settings.tracepoints_per_page
+  end
+  json.waynodes do
+    json.maximum Settings.max_number_of_way_nodes
+  end
+  json.relationmembers do
+    json.maximum Settings.max_number_of_relation_members
+  end
+  json.changesets do
+    json.maximum_elements Changeset::MAX_ELEMENTS
+    json.default_query_limit Settings.default_changeset_query_limit
+    json.maximum_query_limit Settings.max_changeset_query_limit
+  end
+  json.timeout do
+    json.seconds Settings.api_timeout
+  end
+  json.status do
+    json.database @database_status
+    json.api @api_status
+    json.gpx @gpx_status
+  end
+end
+
+json.policy do
+  json.imagery do
+    json.blacklist(Settings.imagery_blacklist) do |url_regex|
+      json.regex url_regex.to_s
+    end
+  end
+end
index 15f0685ac9e24b9131b75ab2389a73c04157e008..1a339f62805137307cdadc8a1db45a8bba0a6e80 100644 (file)
@@ -46,7 +46,7 @@ json.user do
   end
 
   if current_user && current_user == user && can?(:details, User)
-    if user.home_lat && user.home_lon
+    if user.home_location?
       json.home do
         json.lat user.home_lat
         json.lon user.home_lon
index 1791c60ef96fb0cf78d876106ed07c2b836b7135..9fb74826a017b87170ca3f0f0ac771bb433e0d97 100644 (file)
@@ -25,7 +25,7 @@ xml.tag! "user", :id => user.id,
     end
   end
   if current_user && current_user == user && can?(:details, User)
-    if user.home_lat && user.home_lon
+    if user.home_location?
       xml.tag! "home", :lat => user.home_lat,
                        :lon => user.home_lon,
                        :zoom => user.home_zoom
index 7785c05523fb287cc3a239b430b65392b3c15953..0c012cec90040c9921abb64cb9805ea990c12dae 100644 (file)
@@ -11,7 +11,7 @@
   <div class="col">
     <p class='text-muted mb-0'>
       <%= link_to contact.display_name, user_path(contact) %>
-      <% if @user.home_lon and @user.home_lat and contact.home_lon and contact.home_lat %>
+      <% if @user.home_location? and contact.home_location? %>
         <% distance = @user.distance(contact) %>
         <% if distance < 1 %>
           (<%= t ".m away", :count => (distance * 1000).round %>)
index d0344ce79bd61a7c773994328dcc915bf3cc8656..744661dfdbeb7bbd53a5ff812bfcf2a81b209030 100644 (file)
@@ -5,7 +5,7 @@
 <div class="row">
   <% if current_user and @user.id == current_user.id %>
     <div class="col-md order-md-last">
-      <% if @user.home_lat.nil? or @user.home_lon.nil? %>
+      <% if !@user.home_location? %>
         <div id="map" class="content_map border border-grey">
           <p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
         </div>
index 403d30742d982a45d1b08ba237621f2a1fa30581..238f4d43c8549a02e4e7a8f2fcbbe4d08f66e733 100644 (file)
@@ -1,9 +1,9 @@
-<div class="row diary-comment<%= " text-muted deleted" unless diary_comment.visible? %>">
+<div class="row diary-comment py-3<%= " text-muted bg-danger bg-opacity-10" unless diary_comment.visible? %>">
   <div class="col-auto">
     <%= user_thumbnail diary_comment.user %>
   </div>
   <div class="col">
-    <p class="text-muted comment-heading" id="comment<%= diary_comment.id %>"><%= t(".comment_from_html", :link_user => (link_to diary_comment.user.display_name, user_path(diary_comment.user)), :comment_created_at => link_to(l(diary_comment.created_at, :format => :friendly), :anchor => "comment#{diary_comment.id}")) %>
+    <p class="text-muted m-0" id="comment<%= diary_comment.id %>"><%= t(".comment_from_html", :link_user => (link_to diary_comment.user.display_name, user_path(diary_comment.user)), :comment_created_at => link_to(l(diary_comment.created_at, :format => :friendly), :anchor => "comment#{diary_comment.id}")) %>
       <% if current_user and diary_comment.user.id != current_user.id %>
         | <%= report_link(t(".report"), diary_comment) %>
       <% end %>
index 37420cdf1dfa41bc58abbb37fdca786057d1c1a8..f69c7e552c3bf80f0adff79febae210093eb2a47 100644 (file)
@@ -1,4 +1,4 @@
-<div class='diary_post<%= " text-muted px-3 deleted" unless diary_entry.visible %> user_<%= diary_entry.user.id %>'>
+<article class='diary_post border-top border-grey py-3<%= " text-muted px-3 bg-danger bg-opacity-10" unless diary_entry.visible %> user_<%= diary_entry.user.id %>'>
   <div class='mb-3'>
     <% if @user %>
       <h2><%= link_to diary_entry.title, diary_entry_path(diary_entry.user, diary_entry) %></h2>
@@ -65,4 +65,4 @@
       <% end %>
     </ul>
   </nav>
-</div>
+</article>
index e07971089f620101ea75fc40e7d4d7f5c1d7f849..bfb1c1823dfa2c8a2cc567dfb975db7a413e2731 100644 (file)
@@ -5,13 +5,13 @@
 <fieldset>
   <legend><%= t ".location" -%></legend>
 
-  <%= tag.div "", :id => "map", :class => "border border-grey rounded", :data => { :lat => @lat, :lon => @lon, :zoom => @zoom } %>
+  <%= tag.div "", :id => "map", :class => "border border-grey rounded mb-3", :data => { :lat => @lat, :lon => @lon, :zoom => @zoom } %>
 
   <div class="row mb-3">
     <%= f.text_field :latitude, :wrapper_class => "col-sm-4", :id => "latitude" %>
     <%= f.text_field :longitude, :wrapper_class => "col-sm-4", :id => "longitude" %>
-    <div class="col-sm-4">
-      <label><a href="#" id="usemap"><%= t ".use_map_link" -%></a></label>
+    <div class="col-sm-4 align-self-end pt-2">
+      <button type="button" id="usemap" class="btn btn-outline-primary"><%= t ".use_map_link" -%></button>
     </div>
   </div>
 </fieldset>
index 8792074951ce6efd1d9ca64bec76ede8137162fe..5bfdfa17b3205dfd49648ace8b04d78ab388b81b 100644 (file)
@@ -12,8 +12,7 @@
 
 <%= render @entry %>
 
-<a id="comments"></a>
-<div class='comments'>
+<div id="comments" class="comments">
 <%= render :partial => "diary_comment", :collection => @comments %>
 </div>
 
index f806201eb8ff929eedc11585370ff904c42c3ecf..4f24f538d6889eb0ad6729713234c3175e743479 100644 (file)
@@ -1,4 +1,4 @@
 <% unless (banner = next_banner()).nil? %>
-<%= link_to (image_tag banner[:img], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
-<button type="button" class="btn-close position-absolute top-0 end-0 p-4" id="<%= banner_cookie(banner[:id]) %>" aria-label="<%= t("javascripts.close") %>"></button>
+<%= link_to (image_tag banner[:img], :srcset => banner[:srcset], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
+<button type="button" class="btn-close <%= "btn-close-white" if banner[:dark] %> position-absolute top-0 end-0 m-4" id="<%= banner_cookie(banner[:id]) %>" aria-label="<%= t("javascripts.close") %>"></button>
 <% end %>
index 6d983d30ea153454ed225068d3baa97f79cd5c66..377f961499cb7154f07a712701330ad867268cf3 100644 (file)
@@ -4,7 +4,7 @@
 
 <% content_for(:body_class) { "map-layout" } %>
 
-<% if current_user and !current_user.home_lon.nil? and !current_user.home_lat.nil? %>
+<% if current_user&.home_location? %>
   <% content_for :greeting do %>
     <%= link_to t("layouts.home"),
                 "#",
index 1a4445eae9edad0b4d6aedb110f3c7e9b84ee663..b2a1bc26868e82de84ee3cac44a0357c313a36b2 100644 (file)
@@ -1,8 +1,10 @@
 <tr id="inbox-<%= message_summary.id %>" class="inbox-row<%= "-unread" unless message_summary.message_read? %>">
-  <td class="inbox-sender"><%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %></td>
-  <td class="inbox-subject"><%= link_to message_summary.title, message_path(message_summary) %></td>
-  <td class="inbox-sent"><%= l message_summary.sent_on, :format => :friendly %></td>
-  <td class="inbox-mark-unread"><%= button_to t(".unread_button"), message_mark_path(message_summary, :mark => "unread"), :remote => true, :class => "btn btn-sm btn-primary" %></td>
-  <td class="inbox-mark-read"><%= button_to t(".read_button"), message_mark_path(message_summary, :mark => "read"), :remote => true, :class => "btn btn-sm btn-primary" %></td>
-  <td class="inbox-destroy"><%= button_to t(".destroy_button"), message_path(message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %></td>
+  <td><%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %></td>
+  <td><%= link_to message_summary.title, message_path(message_summary) %></td>
+  <td class="text-nowrap"><%= l message_summary.sent_on, :format => :friendly %></td>
+  <td class="text-nowrap d-flex justify-content-end gap-1">
+    <%= button_to t(".unread_button"), message_mark_path(message_summary, :mark => "unread"), :remote => true, :class => "btn btn-sm btn-primary", :form => { :class => "inbox-mark-unread", :hidden => !message_summary.message_read? } %>
+    <%= button_to t(".read_button"), message_mark_path(message_summary, :mark => "read"), :remote => true, :class => "btn btn-sm btn-primary", :form => { :class => "inbox-mark-read", :hidden => message_summary.message_read? } %>
+    <%= button_to t(".destroy_button"), message_path(message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger", :form_class => "inbox-destroy" %>
+  </td>
 </tr>
index 4d1b361b1822dd8f2cf3d8ad0171a1ddca522c21..24caba5ab0a495d1b74d6255b5983602cb9ed3e8 100644 (file)
@@ -1,6 +1,8 @@
 <tr class="inbox-row">
-  <td class="inbox-sender"><%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %></td>
-  <td class="inbox-subject"><%= link_to sent_message_summary.title, message_path(sent_message_summary) %></td>
-  <td class="inbox-sent"><%= l sent_message_summary.sent_on, :format => :friendly %></td>
-  <td class="inbox-destroy"><%= button_to t(".destroy_button"), message_path(sent_message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %></td>
+  <td><%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %></td>
+  <td><%= link_to sent_message_summary.title, message_path(sent_message_summary) %></td>
+  <td class="text-nowrap"><%= l sent_message_summary.sent_on, :format => :friendly %></td>
+  <td class="text-nowrap d-flex justify-content-end gap-1">
+    <%= button_to t(".destroy_button"), message_path(sent_message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger", :form_class => "inbox-destroy" %>
+  </td>
 </tr>
index 4f2925b149e386f86fa4e07c372c8ec5152797fd..54089c34a65ba6cea80c625b0ed7b362b0e7cdcd 100644 (file)
   <h4><%= render :partial => "message_count" %></h4>
 
 <% if current_user.messages.size > 0 %>
-  <table class="table table-sm">
+  <table class="table table-sm align-middle">
     <thead>
       <tr>
         <th><%= t ".from" %></th>
         <th><%= t ".subject" %></th>
         <th><%= t ".date" %></th>
-        <th></th>
-        <th></th>
       </tr>
     </thead>
     <tbody>
index 0099b573d816a0d289ca4e65cf17ee52bc400ad5..e246f9292ebb8afaf0161e306b55fb812176f379 100644 (file)
 <h4><%= t ".messages", :count => current_user.sent_messages.size %></h4>
 
 <% if current_user.sent_messages.size > 0 %>
-  <table class="table table-sm">
+  <table class="table table-sm align-middle">
     <thead>
       <tr>
         <th><%= t ".to" %></th>
         <th><%= t ".subject" %></th>
         <th><%= t ".date" %></th>
-        <th></th>
       </tr>
     </thead>
     <tbody>
index 9ade68121aab29d9e7bac8f9bdcde705c87ac81c..4761aac60d95d4cd5de4dfa4f1481f85248e5a7f 100644 (file)
@@ -2,36 +2,29 @@
   <h1><%= @message.title %></h1>
 <% end %>
 
-<% if current_user == @message.recipient %>
-  <div class='info-line clearfix'>
+<div class='mb-3 border-bottom border-grey py-1 d-flex gap-1 flex-wrap'>
+  <% if current_user == @message.recipient %>
     <%= user_thumbnail_tiny @message.sender %>
-    <%= link_to @message.sender.display_name, user_path(@message.sender) %></td>
-    <div class='right'>
-      <%= l @message.sent_on, :format => :friendly %>
-    </div>
-  </div>
+    <%= link_to @message.sender.display_name, user_path(@message.sender) %>
+  <% else %>
+    <%= user_thumbnail_tiny @message.recipient %>
+    <%= link_to @message.recipient.display_name, user_path(@message.recipient) %>
+  <% end %>
+  <span class="ms-auto">
+    <%= l @message.sent_on, :format => :friendly %>
+  </span>
+</div>
 
-  <div class="richtext text-break"><%= @message.body.to_html %></div>
+<div class="richtext text-break"><%= @message.body.to_html %></div>
 
-  <div>
+<div>
+  <% if current_user == @message.recipient %>
     <%= link_to t(".reply_button"), message_reply_path(@message), :class => "btn btn-primary" %>
     <%= link_to t(".unread_button"), message_mark_path(@message, :mark => "unread"), :method => "post", :class => "btn btn-primary" %>
     <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
     <%= link_to t(".back"), inbox_messages_path, :class => "btn btn-link" %>
-  </div>
-<% else %>
-  <div class='info-line clearfix'>
-    <%= user_thumbnail_tiny @message.recipient %>
-    <%= link_to @message.recipient.display_name, user_path(@message.recipient) %></td>
-    <div class='right'>
-      <%= l @message.sent_on, :format => :friendly %>
-    </div>
-  </div>
-
-  <div class="richtext text-break"><%= @message.body.to_html %></div>
-
-  <div>
+  <% else %>
     <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
     <%= link_to t(".back"), outbox_messages_path, :class => "btn btn-link" %>
-  </div>
-<% end %>
+  <% end %>
+</div>
index 2eb99b8124e810ca755797c0196a83de007275e5..dd0cb26082f64a0a64e26731ef391063abede125 100644 (file)
@@ -21,7 +21,7 @@
       </tr>
     </thead>
   <% @notes.each do |note| -%>
-    <tr<% if note.author == @user %> class="creator"<% end %>>
+    <tr<% if note.author == @user %> class="table-primary"<% end %>>
       <td>
         <% if note.closed? %>
           <%= image_tag("closed_note_marker.png", :alt => "closed", :size => "25x40") %>
index 2af64b84fae10f462db46b194ea0ac7652c3c83d..bf53832c8802b6709bd15348ce0ec30d3b0685f7 100644 (file)
 
   <fieldset>
     <legend><%= t ".home location" -%></legend>
-    <div id="homerow" <% unless current_user.home_lat and current_user.home_lon %> class="nohome"<% end %>>
-      <p class="message text-muted"><%= t ".no home location" %></p>
-      <div class="row">
-        <%= f.text_field :home_lat, :wrapper_class => "col-sm-4", :id => "home_lat" %>
-        <%= f.text_field :home_lon, :wrapper_class => "col-sm-4", :id => "home_lon" %>
+    <p id="home_message" class="text-muted m-0<% if current_user.home_location? %> invisible<% end %>"><%= t ".no home location" %></p>
+    <div class="row">
+      <%= f.text_field :home_lat, :wrapper_class => "col-sm-4", :id => "home_lat" %>
+      <%= f.text_field :home_lon, :wrapper_class => "col-sm-4", :id => "home_lon" %>
+      <div class="col-sm-4 pt-2 align-self-end">
+        <button type="button" id="home_show" class="btn btn-outline-primary"<% unless current_user.home_location? %> hidden<% end %> disabled><%= t ".show" %></button>
+        <button type="button" id="home_delete" class="btn btn-outline-primary"<% unless current_user.home_location? %> hidden<% end %>><%= t ".delete" %></button>
+        <button type="button" id="home_undelete" class="btn btn-outline-primary" hidden><%= t ".undelete" %></button>
       </div>
     </div>
     <div class="form-check">
-      <input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.home_lat and current_user.home_lon %> checked="checked" <% end %> id="updatehome" />
+      <input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.home_location? %> checked <% end %> id="updatehome" />
       <label class="form-check-label" for="updatehome"><%= t ".update home location on click" %></label>
     </div>
     <%= tag.div "", :id => "map", :class => "content_map set_location border border-grey rounded" %>
index d572fb9d0a79e92e7486b56218d63792295b0116..851f153a2a9a2a1938d0130b97098d5b42a687b6 100644 (file)
@@ -3,7 +3,7 @@
     <td style="width: 50px; min-width: 50px; vertical-align: top; padding: 15px">
       <%= link_to(
             image_tag(
-              attachments["avatar.png"].url,
+              attachments[@avatar].url,
               :alt => @author,
               :title => @author,
               :width => 50,
index 4dcc9ab0546188c5a3bbed7b0128dcca7d347bf1..81e33dddb87877070c5192f3b3f4b8bb97ca1ca0 100644 (file)
 
       <div class='text-muted'>
         <small>
-          <dl class="dl-inline">
-            <dt><%= t ".mapper since" %></dt>
-            <dd><%= l @user.created_at.to_date, :format => :long %></dd>
+          <dl class="list-inline">
+            <dt class="list-inline-item m-0"><%= t ".mapper since" %></dt>
+            <dd class="list-inline-item"><%= l @user.created_at.to_date, :format => :long %></dd>
             <% unless @user.terms_agreed %>
-              <dt><%= t ".ct status" %></dt>
-              <dd>
+              <dt class="list-inline-item m-0"><%= t ".ct status" %></dt>
+              <dd class="list-inline-item">
                 <% if @user.terms_seen? -%>
                   <%= t ".ct declined" %>
                 <% else -%>
       <% if current_user and current_user.administrator? -%>
         <div class='text-muted'>
           <small>
-            <dl class='dl-inline'>
-              <dt><%= t ".email address" %></dt>
-              <dd><%= @user.email %></dd>
+            <dl class="list-inline">
+              <dt class="list-inline-item m-0"><%= t ".email address" %></dt>
+              <dd class="list-inline-item"><%= @user.email %></dd>
               <% unless @user.creation_ip.nil? -%>
-                <dt><%= t ".created from" %></dt>
-                <dd><%= @user.creation_ip %></dd>
+                <dt class="list-inline-item m-0"><%= t ".created from" %></dt>
+                <dd class="list-inline-item"><%= @user.creation_ip %></dd>
               <% end -%>
-              <dt><%= t ".status" %></dt>
-              <dd><%= @user.status.capitalize %></dd>
-              <dt><%= t ".spam score" %></dt>
-              <dd><%= @user.spam_score %></dd>
+              <dt class="list-inline-item m-0"><%= t ".status" %></dt>
+              <dd class="list-inline-item"><%= @user.status.capitalize %></dd>
+              <dt class="list-inline-item m-0"><%= t ".spam score" %></dt>
+              <dd class="list-inline-item"><%= @user.spam_score %></dd>
             </dl>
           </small>
         </div>
index affe6b144a124f0d64c030ec9e7ed0dff8f55bc0..c2a4df07b2ae4440186053193d6acb59c20a6cef 100644 (file)
@@ -1,6 +1,10 @@
-sotm_2022:
-  id: sotm_2022
-  alt: State of the Map 2022
-  link: https://2022.stateofthemap.org/
-  img: banners/sotm_2022.png
-  enddate: 2022-aug-21
+donate_2023:
+  id: donate_2023
+  alt: OpenStreetMap Funding Drive 2023
+  link: https://supporting.openstreetmap.org/
+  img: banners/donate_2023_1.jpg
+  srcset:
+    - [banners/donate_2023_1.jpg, 1x]
+    - [banners/donate_2023_1@2x.jpg, 2x]
+  dark: true
+  enddate: 2023-dec-31
index 73eebb406c381245534a70db74fe3bced43ec0cf..1db4fa18da2bf218191616412ab5eeefa983c8b4 100644 (file)
@@ -6,20 +6,23 @@
 # Author: Danieldegroot2
 # Author: Firefishy
 # Author: Fwolff
+# Author: Hentie
 # Author: Joris Darlington Quarshie
 # Author: Naudefj
 # Author: Nroets
 ---
 af:
+  html:
+    dir: ltr
   time:
     formats:
       friendly: '%e %B %Y om %H:%M'
   helpers:
     file:
-      prompt: Lêer kies
+      prompt: Kies leer
     submit:
       diary_comment:
-        create: Stoor
+        create: Voeg opmerking by
       diary_entry:
         create: Publiseer
         update: Opdateer
@@ -105,6 +108,7 @@ af:
         language_code: Taal
       doorkeeper/application:
         name: Naam
+        confidential: Vertroulike aansoek
         scopes: Regte
       friend:
         user: Gebruiker
@@ -148,6 +152,11 @@ af:
         pass_crypt: Wagwoord
         pass_crypt_confirmation: Bevestig wagwoord
     help:
+      doorkeeper/application:
+        confidential: Die toepassing sal gebruik word as die klient se geheime vertroulik
+          gehou kan word (inheemse mobiele toepassings en enkelbladsy-toepassings
+          is nie vertroilik nie.
+        redirect_uri: Gebruik een reel per URI
       trace:
         tagstring: komma afgebaken
       user_block:
@@ -236,11 +245,25 @@ af:
       entry:
         comment: Kommentaar
         full: Volle nota
+  account:
+    deletions:
+      show:
+        title: Skrap my rekening
+        delete_account: Skrap my rekening
+        delete_introduction: 'U kan jou OpenStreetMap-rekening skrap deur die knoppie
+          hieronder te druk. Let sseblief op na die volgende besonderhede:'
+        delete_profile: Jou profielinligting sowel as jou avatar en tuisligging sal
+          geskrap word.
+        retain_caveats: Sommige inligting oor jou sal egter behou word op OpenStreetMap
+          behou word, selfs nadat jou rekening geskrap is.
+        retain_diary_entries: Jou dagboekinskrywings en dagboekopmerkings, indien
+          enige, sl behou word, maar versteek word,
   accounts:
     edit:
       title: Redigeer rekening
       my settings: My instellings
       current email address: Huidige e-posadres
+      external auth: Ekserne veriviering.
       public editing:
         heading: Openbare redigerings
         enabled: Geaktiveer. Nie anoniem nie en kan data redigeer.
index 1e305763eda7b10f251dff416b0a1402e743b55c..25fdb18d6c182be6b4af34327d26ba63157a824d 100644 (file)
@@ -202,9 +202,9 @@ bg:
     default: По подразбиране (в момента %{name})
     id:
       name: iD
-      description: iD (редактиране в браузър)
+      description: iD (редактиране в браузъра)
     remote:
-      name: Ð\94истанционно управление
+      name: Ð´истанционно управление
       description: Дистанционно управление (JOSM, Potlatch или Merkaartor)
   auth:
     providers:
@@ -560,7 +560,7 @@ bg:
           boat_rental: Наем на лодки
           brothel: Бордел
           bureau_de_change: Обменно бюро
-          bus_station: Ð\90вÑ\82обÑ\83Ñ\81на Ñ\81пиÑ\80ка
+          bus_station: Ð\90вÑ\82огаÑ\80а
           cafe: Кафене
           car_rental: Коли под наем
           car_sharing: Съвместно пътуване
@@ -1482,9 +1482,26 @@ bg:
         и поддържат данни за пътища, пътеки, кафенета, железопътни гари и много други
         по целия свят.
       local_knowledge_title: Местно познание
+      local_knowledge_html: OpenStreetMap набляга на местните познания. Сътрудниците
+        използват въздушни снимки, GPS устройства и нискотехнологични полеви карти,
+        за да проверят дали OSM е точна и актуална.
       open_data_title: Отворени данни
+      open_data_1_html: 'OpenStreetMap е %{open_data}: Вие сте свободни да я използвате
+        за всякакви цели стига да посочите OpenStreetMap и нейните сътрудници. Ако
+        промените или надграждате данните по определен начин, можете да разпространявате
+        резултата само под същия лиценз. За подробности вижте %{copyright_license_link}.'
       open_data_open_data: отворени данни
       legal_title: Правни въпроси
+      legal_1_1_html: |-
+        Този сайт и много други свързани с него услуги се управляват официално от
+        %{openstreetmap_foundation_link} (OSMF)
+        от името на общността. Използването на всички услуги, управлявани от OSMF, е предмет на
+        на нашите %{terms_of_use_link}, %{aup_link} и нашата %{privacy_policy_link}.
+      legal_2_1_html: Моля, %{contact_the_osmf_link} ако имате въпроси, свързани с
+        лицензирането, авторските права или други правни въпроси.
+      legal_2_1_contact_the_osmf: свържете се с OSMF
+      legal_2_2_html: OpenStreetMap, логото с лупа и State of the Map са %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: регистрирани търговски марки на OSMF
       partners_title: Партньори
     copyright:
       foreign:
@@ -1556,25 +1573,41 @@ bg:
         title: Други съображения
     help:
       title: Получаване на помощ
+      introduction: OpenStreetMap разполага с няколко ресурса за запознаване с проекта,
+        задаване и отговаряне на въпроси, както и за съвместно обсъждане и документиране
+        на теми, свързани с картографирането.
       welcome:
         url: /welcome
         title: Добре дошли в OpenStreetMap
+        description: Започнете с това кратко ръководство, обхващащо основите на OpenStreetMap.
       beginners_guide:
         title: Наръчник за начинаещи
+        description: Ръководство за начинаещи, поддържано от общността.
       help:
         title: Форум за поддръжка
+        description: Задайте въпрос или потърсете отговори в сайта за въпроси и отговори
+          на OpenStreetMap.
       mailing_lists:
         title: Пощенски списъци
+        description: Задайте въпрос или дискутирайте интересни теми в широк спектър
+          от тематични и регионални пощенски списъци.
+      community:
+        title: Форум на общността
+        description: Споделено място за разговори за OpenStreetMap.
       irc:
         title: IRC
+        description: Интерактивен чат на много различни езици и по много теми.
       switch2osm:
         title: switch2osm
+        description: Помощ за компании и организации, които преминават към карти и
+          други услуги, базирани на OpenStreetMap.
       welcomemat:
         title: За организации
         description: Вие сте от организация, която иска да работи с OpenStreetMap?
           Ще получите необходимата информация на началната страница.
       wiki:
         title: Уики на OpenStreetMap
+        description: Разгледайте уикито за подробна документация за OpenStreetMap.
     any_questions:
       title: Въпроси?
     sidebar:
@@ -1662,15 +1695,66 @@ bg:
           toilets: Тоалетни
     welcome:
       title: Добре дошли!
+      introduction: Добре дошли в OpenStreetMap, безплатната и редактируема карта
+        на света. Сега, след като сте се регистрирали, сте готови да започнете да
+        картографирате. Предлагаме ви кратко ръководство с най-важните неща, които
+        трябва да знаете.
       whats_on_the_map:
         title: Какво има на картата
+        on_the_map_html: OpenStreetMap е място за картографиране на неща, които са
+          едновременно %{real_and_current} - тя включва милиони сгради, пътища и други
+          подробности за местата. Можете да картографирате каквито реални характеристики
+          са ви интересни.
+        real_and_current: реални и актуални
+        off_the_map_html: Това, което %{doesnt}, са данни, основани на мнения, като
+          рейтинги, исторически или хипотетични характеристики и данни от източници,
+          защитени с авторски права. Освен ако не разполагате със специални разрешение,
+          не копирайте от онлайн или хартиени карти.
+        doesnt: не включва
       basic_terms:
         title: Основни картографски термини
+        paragraph_1: OpenStreetMap има свой собствен жаргон. Ето няколко ключови думи,
+          които ще Ви бъдат полезни.
+        an_editor_html: '%{editor} е програма или уебсайт, който можете да използвате,
+          за да редактирате картата.'
+        a_node_html: '%{node} е точка на картата, например ресторант или дърво.'
+        a_way_html: '%{way} е линия или площ, например автомобилен път, поток, езеро
+          или сграда.'
+        node: Възел
+        way: Път
       rules:
         title: Правилата!
+        para_1_html: OpenStreetMap има малко официални правила, но очакваме всички
+          участници да си сътрудничат и да комуникират с общността. Ако обмисляте
+          някакви дейности, различни от ръчно редактиране, моля, прочетете и следвайте
+          указанията на %{imports_link} и %{automated_edits_link}.
+        automated_edits: автоматизирани редакции
       start_mapping: Картографиране
       add_a_note:
         title: Нямате време да правите промени? Добавете бележка!
+        para_1: Ако искате само да поправите нещо малко и нямате време да се регистрирате
+          и да се научите да редактирате, можете да добавите бележка.
+    communities:
+      title: Общности
+      lede_text: Хора от цял свят допринасят за OpenStreetMap или я използват. Много
+        от тях участват индивидуално, а други са създали общности. Тези групи са с
+        различна големина и представляват географски райони от малки градове до големи
+        региони с много държави. Те също така могат да бъдат официални или неофициални.
+      local_chapters:
+        title: Местни клонове
+        about_text: Местните клонове са групи на национално или регионално ниво, които
+          са предприели формалните стъпки за създаване на юридически лица с нестопанска
+          цел. Те представляват картата и картографите на района в отношенията с местните
+          власти, бизнеса и медиите. Те също така са създали връзка с фондацията OpenStreetMap
+          (OSMF), което им дава възможност да се свържат с юридическия орган, управляващ
+          авторските права.
+        list_text: 'Следните общности са официално създадени като местни клонове:'
+      other_groups:
+        title: Други групи
+        other_groups_html: Не е необходимо да се създава официална група в същата
+          степен като местните клонове. Всъщност много групи съществуват много успешно
+          като неформално събиране на хора или като общностна група. Всеки може да
+          ги създаде или да се присъедини към тях. Прочетете повече на %{communities_wiki_link}.
   traces:
     new:
       upload_trace: Качване на следи от GPS
@@ -1950,6 +2034,12 @@ bg:
       comment: Коментиране
     new:
       title: Нова бележка
+      intro: Забелязали сте грешка или нещо липсващо? Уведомете другите картографи,
+        за да можем да го поправим. Преместете маркера на правилната позиция и напишете
+        бележка, за да обясните проблема.
+      advice: Бележката ви е публична и може да бъде използвана за актуализиране на
+        картата, така че не въвеждайте лична информация или информация от карти или
+        списъци с указатели, защитени с авторски права.
       add: Добавяне на бележка
   javascripts:
     close: Затваряне
@@ -1979,7 +2069,7 @@ bg:
       tooltip_disabled: Легендата не е достъпна за този слой
     map:
       zoom:
-        in: Ð£Ð²ÐµÐ»Ð¸Ñ\87аване
+        in: Ð\9fÑ\80иближаване
         out: Отдалечаване
       locate:
         title: Моето местоположение
@@ -2002,7 +2092,7 @@ bg:
       createnote_disabled_tooltip: Увеличете за добавяне на бележка
       map_notes_zoom_in_tooltip: Увеличете за преглед на бележките
       map_data_zoom_in_tooltip: Увеличете за подробности
-      queryfeature_tooltip: Търсене на особености
+      queryfeature_tooltip: Търсене на обекти
       queryfeature_disabled_tooltip: Увеличете за търсене на обекти
     changesets:
       show:
index 513a25091a5a723fecf1d3aa6c6ac354b19b2344..ecc870fef505f80997a8759d8c7b657471727d93 100644 (file)
@@ -2,6 +2,7 @@
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: Aftabuzzaman
+# Author: Aishik Rehman
 # Author: Al Riaz Uddin Ripon
 # Author: Anupamdutta73
 # Author: Bellayet
@@ -35,7 +36,7 @@ bn:
       friendly: '%e %B %Y %H:%M-এ'
   helpers:
     file:
-      prompt: à¦«à¦¾à¦\87ল à¦ªà¦\9bনà§\8dদ করুন
+      prompt: à¦«à¦¾à¦\87ল à¦¨à¦¿à¦°à§\8dবাà¦\9aন করুন
     submit:
       diary_comment:
         create: মন্তব্য
index 57d64139670174f5933070ea9c3254400d3e1d5f..f1abd90c371cba7ce3ec7d6981d9b341d242687e 100644 (file)
@@ -36,6 +36,7 @@
 # Author: MrJaroslavik
 # Author: Nemo bis
 # Author: Patriccck
+# Author: Pavreh
 # Author: Paxt
 # Author: Reaperman
 # Author: Robins7
@@ -438,9 +439,9 @@ cs:
       history_title_html: 'Historie cesty: %{name}'
       nodes: Uzly
       nodes_count:
-        one: 1 uzel
+        one: '%{count} uzel'
         few: '%{count} uzly'
-        many: '%{count} uzlů'
+        many: '%{count} uzlu'
         other: '%{count} uzlů'
       also_part_of_html:
         one: patří do cesty %{related_ways}
@@ -613,10 +614,11 @@ cs:
       comment_link: Okomentovat tento záznam
       reply_link: Pošlete zprávu autorovi
       comment_count:
+        one: '%{count} komentář'
         few: '%{count} komentáře'
-        one: 1 komentář
-        zero: Bez komentářů
+        many: '%{count} komentáře'
         other: '%{count} komentářů'
+      no_comments: Bez komentářů
       edit_link: Upravit tento záznam
       hide_link: Skrýt tento záznam
       unhide_link: Zviditelnit tento záznam
@@ -1508,6 +1510,7 @@ cs:
         few: '%{count} hlášení'
         many: '%{count} hlášení'
         other: '%{count} hlášení'
+      no_reports: Žádná hlášení
       report_created_at: První hlášení v %{datetime}
       last_resolved_at: Naposledy vyřešeno v %{datetime}
       last_updated_at: Poslední aktualizace v %{datetime} od %{displayname}
@@ -1941,8 +1944,8 @@ cs:
           title: Přihlásit se přes Facebook
           alt: Přihlášení pomocí účtu na Facebooku
         windowslive:
-          title: Přihlásit se přes Windows Live
-          alt: Přihlášení pomocí účtu služeb Windows Live
+          title: Přihlásit se přes Microsoft
+          alt: Přihlášení pomocí účtu Microsoft
         github:
           title: Přihlásit se přes GitHub
           alt: Přihlásit se pomocí GitHub účtu
@@ -2133,6 +2136,11 @@ cs:
         contributors_nz_linz_data_service: datové služby LINZ
         contributors_nz_cc_by: CC BY 4.0
         contributors_nz_cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.cs
+        contributors_rs_credit_html: '%{serbia}: Obsahuje data %{rgz_link} a %{open_data_portal}
+          (srbská otevřená data), 2018.'
+        contributors_rs_serbia: Srbsko
+        contributors_rs_rgz: Srbského geodetického úřadu
+        contributors_rs_open_data_portal: Národního portálu otevřených dat
         contributors_si_credit_html: '%{slovenia}: Obsahuje data ze %{gu_link} a %{mkgp_link}
           (veřejné informace Slovinska).'
         contributors_si_slovenia: Slovinsko
index be23906681a2145956302452b452600f7b2c5b4e..19dc32de18450c4cb136d592e83f921161c44504 100644 (file)
@@ -43,9 +43,10 @@ cy:
     errors:
       messages:
         invalid_email_address: nid yw'n ymddangos ei fod yn gyfeiriad ebost dilys
+        email_address_not_routable: nid yw'n cyrchadwy
     models:
       acl: Rhestr Rheoli Mynediad
-      changeset: Grŵp newidiadau
+      changeset: Grŵp newid
       changeset_tag: Tag Grŵp newidiadau
       country: Gwlad
       diary_comment: Nodyn Dyddiadur
@@ -76,11 +77,11 @@ cy:
       user_preference: Dewis Defnyddiwr
       user_token: Tocyn Defnyddiwr
       way: Llwybr
-      way_node: Cwgn Llwybr
+      way_node: Nod Llwybr
       way_tag: Tag Llwybr
     attributes:
       client_application:
-        name: Enw (Angenrheidiol)
+        name: Enw (gofynnol)
         allow_write_api: olygu'r map
         allow_write_notes: addasu nodiadau
       diary_comment:
@@ -118,8 +119,11 @@ cy:
       redaction:
         title: Teitl
         description: Disgrifiad
+      report:
+        category: Dewiswch reswm dros eich adroddiad
       user:
         email: E-bost
+        email_confirmation: Cadarnhau E-bost
         new_email: Cyfeiriad e-bost newydd
         active: Gweithredol
         display_name: Enw defnyddiwr
@@ -127,6 +131,7 @@ cy:
         home_lat: Lledred
         home_lon: Hydred
         languages: Ieithoedd
+        preferred_editor: Hoff Olygydd
         pass_crypt: Cyfrinair
         pass_crypt_confirmation: Cadarnhau cyfrinair
     help:
@@ -149,23 +154,84 @@ cy:
         many: tua %{count} mis yn ôl
         other: tua %{count} mis yn ôl
       about_x_years:
-        one: tuag un blynedd yn ôl
-        other: tua %{count} blynedd yn ôl ago
+        zero: tua %{count} blynedd yn ôl
+        one: tuag %{count} blynedd yn ôl
+        two: tua %{count} flynedd yn ôl
+        few: tua %{count} blynedd yn ôl
+        many: tua %{count} blynedd yn ôl
+        other: tua %{count} blynedd yn ôl
       almost_x_years:
-        one: oddeutu un mlynedd yn ôl
-        other: bron i %{count} blynedd yn ôl
+        zero: bron %{count} blynedd yn ôl
+        one: bron %{count} blynedd yn ôl
+        two: bron %{count} flynedd yn ôl
+        few: bron %{count} blynedd yn ôl
+        many: bron %{count} blynedd yn ôl
+        other: bron %{count} blynedd yn ôl
       half_a_minute: hanner munud yn ôl
       less_than_x_seconds:
-        one: llai nag eiliad yn ôl
-        other: llai nag %{count} eiliad yn ôl
+        zero: llai nag eiliad yn ôl.
+        one: llai nag %{count} eiliad yn ôl.
+        two: llai na %{count} eiliad yn ôl.
+        few: llai na %{count} eiliad yn ôl.
+        many: llai na %{count} eiliad yn ôl.
+        other: llai na %{count} eiliad yn ôl.
+      less_than_x_minutes:
+        zero: llai na munud yn ôl.
+        one: llai nag %{count} munud yn ôl.
+        two: llai na %{count} funud yn ôl.
+        few: llai na %{count} munud yn ôl.
+        many: llai na %{count} munud yn ôl.
+        other: llai na %{count} munud yn ôl.
+      over_x_years:
+        zero: dros %{count} blynedd yn ôl
+        one: dros %{count} blynedd yn ôl
+        two: dros %{count} flynedd yn ôl
+        few: dros %{count} blynedd yn ôl
+        many: dros %{count} blynedd yn ôl
+        other: dros %{count} blynedd yn ôl
+      x_seconds:
+        zero: '%{count} eiliad yn ôl'
+        one: '%{count} eiliad yn ôl'
+        two: '%{count} eiliad yn ôl'
+        few: '%{count} eiliad yn ôl'
+        many: '%{count} eiliad yn ôl'
+        other: '%{count} eiliad yn ôl'
+      x_minutes:
+        zero: '%{count} munud yn ôl'
+        one: '%{count} munud yn ôl'
+        two: '%{count} funud yn ôl'
+        few: '%{count} munud yn ôl'
+        many: '%{count} munud yn ôl'
+        other: '%{count} munud yn ôl'
+      x_days:
+        zero: '%{count} diwrnod yn ôl.'
+        one: '%{count} diwrnod yn ôl.'
+        two: '%{count} ddiwrnod yn ôl.'
+        few: '%{count} diwrnod yn ôl.'
+        many: '%{count} diwrnod yn ôl.'
+        other: '%{count} diwrnod yn ôl.'
+      x_months:
+        zero: '%{count} mis yn ôl'
+        one: '%{count} mis yn ôl'
+        two: '%{count} fis yn ôl'
+        few: '%{count} mis yn ôl'
+        many: '%{count} mis yn ôl'
+        other: '%{count} mis yn ôl'
+      x_years:
+        zero: '%{count} blynedd yn ôl'
+        one: '%{count} blynedd yn ôl'
+        two: '%{count} flynedd yn ôl'
+        few: '%{count} blynedd yn ôl'
+        many: '%{count} blynedd yn ôl'
+        other: '%{count} blynedd yn ôl'
   editor:
-    default: (currently %{name}) diofyn
+    default: (%{name} yn gyfredol) diofyn
     id:
       name: iD
       description: iD (golygydd y porwr)
     remote:
-      name: Rheolaeth o bell
-      description: Pellreolwr (JOSM neu Merkaartor)
+      name: Allanol
+      description: Allanol (JOSM, Potlatch, Merkaartor)
   auth:
     providers:
       none: Dim
@@ -181,8 +247,16 @@ cy:
         opened_at_by_html: Crëwyd %{when} gan %{user}
         commented_at_html: Diweddarwyd %{when}
         commented_at_by_html: Diweddarwyd %{when} gan %{user}
+        closed_at_html: Wedi datrys %{when}
+        closed_at_by_html: Wedi datrys %{when} gan %{user}
+        reopened_at_html: Wedi ail-gychwyn %{when}
+        reopened_at_by_html: Wedi ailgychwyn %{when} gan %{user}
       rss:
         title: Nodiadau OpenStreetMap
+        description_item: Ffrwd RSS ar gyfer nodyn %{id}
+        opened: Nodyn newydd (ger %{place})
+        commented: Sylw newydd (ger %{place})
+        closed: nodyn wedi'i gau (ger %{place})
       entry:
         comment: Sylw
         full: Nodyn llawn
@@ -191,7 +265,7 @@ cy:
       show:
         title: Dileu fy nghyfrif
         delete_account: Dileu cyfrif
-        retain_changeset_discussions: Bydd eich trafodaethau grŵp newidiadau, os ydynt
+        retain_changeset_discussions: Bydd eich trafodaethau grwpiau newid, os ydynt
           yn bodoli, yn cael eu cadw.
         confirm_delete: Ydych chi'n siŵr?
         cancel: Canslo
@@ -200,6 +274,7 @@ cy:
       title: Golygu cyfrif
       my settings: Fy ngosodiadau
       current email address: Cyfeiriad e-bost cyfredol
+      external auth: Dilysu Allanol
       openid:
         link text: beth yw hwn?
       public editing:
@@ -225,10 +300,16 @@ cy:
     destroy:
       success: Cyfrif wedi'i ddileu.
   browse:
-    created: Crëwyd
+    created: Wedi creu
     closed: Wedi cau
+    created_ago_html: Wedi creu %{time_ago}
+    closed_ago_html: Wedi cau %{time_ago}
+    created_ago_by_html: Wedi creu %{time_ago} gan %{user}
+    closed_ago_by_html: Wedi cau %{time_ago} gan %{user}
+    deleted_ago_by_html: Wedi dileu %{time_ago} gan %{user}
+    edited_ago_by_html: Golgwyd %{time_ago} gan %{user}
     version: Fersiwn
-    in_changeset: Grŵp newidiadau
+    in_changeset: Grŵp Newid
     anonymous: dienw
     no_comment: (dim sylw)
     part_of: Rhan o
@@ -237,7 +318,7 @@ cy:
     view_details: Gweld manylion
     location: Lleoliadː
     changeset:
-      title: 'Grŵp newidiadau: %{id}'
+      title: 'Grŵp newid: %{id}'
       belongs_to: Awdur
       node: Nodau (%{count})
       node_paginated: Nodau (%{x}-%{y} o %{count})
@@ -246,15 +327,15 @@ cy:
       relation: Perthynas %{count}
       relation_paginated: Perthynas (%{x}-%{y} o %{count})
       comment: Sylwadau (%{count})
-      changesetxml: XML grŵp newidiadau
+      changesetxml: XML grŵp newid
       osmchangexml: XML osmChange
       feed:
-        title: Grŵp newidiadau %{id}
-        title_comment: Grŵp newidiadau %{id} - %{comment}
+        title: Grŵp newid %{id}
+        title_comment: Grŵp newid %{id} - %{comment}
       join_discussion: Mewngofnodwch i ymuno â'r sgwrs
       discussion: Sgwrs
-      still_open: Mae'r grŵp newidiadau dal ar agor - bydd trafodaeth yn cychwyn unwaith
-        y bydd y grŵp newidiadau wedi cau.
+      still_open: Mae'r grŵp newid dal ar agor - bydd trafodaeth yn cychwyn unwaith
+        y bydd y grŵp newid wedi cau.
     node:
       title_html: 'Nod: %{name}'
       history_title_html: 'Hanes y nod: %{name}'
@@ -279,20 +360,22 @@ cy:
       entry_html: Perthynas %{relation_name}
       entry_role_html: Perthynas %{relation_name} (fel %{relation_role})
     not_found:
+      title: Heb ei Ganfod
       sorry: 'Ymddiheurwn, ni ellir canfod %{type} #%{id}.'
       type:
         node: nod
         way: llwybr
         relation: perthynas
-        changeset: grŵp newidiadau
+        changeset: grŵp newid
         note: nod
     timeout:
+      title: Gwall Goramser
       sorry: Cymerodd yn rhy hir i adalw data math %{type} (gydag ID %{id})!
       type:
         node: nod
         way: llwybr
         relation: perthynas
-        changeset: grŵp newidiadau
+        changeset: grŵp newid
         note: nodyn
     redacted:
       redaction: Golygiad %{id}
@@ -303,8 +386,8 @@ cy:
         way: llwybr
         relation: perthynas
     start_rjs:
-      feature_warning: Wrthi'n llwytho nodweddio %{num_features}, a all arafu eich
-        porwr. Wyt ti'n sicr dy fod am weld y data?
+      feature_warning: Wrthi'n llwytho %{num_features} nodwedd, a all arafu eich porwr.
+        Ydych chi wir eisiau gweld y data?
       load_data: Llwytho data
       loading: Wrthi'n llwytho...
     tag_details:
@@ -314,6 +397,7 @@ cy:
         tag: Tudalen disgrifiad wici ar gyfer y tag %{key}=%{value}
       wikidata_link: Eitem %{page} ar Wicidata
       wikipedia_link: Erthygl %{page} ar Wicipedia
+      wikimedia_commons_link: Eitem %{page} ar Gomin Wicimedia
       telephone_link: Galw %{phone_number}
       email_link: E-bost %{email}
     query:
@@ -329,7 +413,7 @@ cy:
     changeset:
       anonymous: Dienw
       no_edits: (dim golygiadau)
-      view_changeset_details: Gweld manylion y grŵp newidiadau
+      view_changeset_details: Gweld manylion y grŵp newid
     changesets:
       id: ID
       saved_at: Cadwyd am
@@ -337,31 +421,30 @@ cy:
       comment: Sylw
       area: Ardal
     index:
-      title: Grwpiau newidiadau
-      title_user: Grwpiau newidiadau gan %{user}
-      title_user_link_html: Grwpiau newidiadau gan %{user_link}
-      title_friend: Grwpiau newidiadau gan fy ffrindiau
-      title_nearby: Grwpiau newidiadau gan ddefnyddwyr cyfagos
-      empty: Ni chanfuwyd setiau-newid.
-      empty_area: Dim grwpiau newidiadau yn yr ardal yma.
-      empty_user: Dim setiau-newid gan y defnyddiwr hwn.
-      no_more: Ni chanfuwyd unrhyw grwpiau newidiadau ychwanegol.
-      no_more_area: Dim rhagor o setiau-newid yn yr ardal yma.
-      no_more_user: Ni chanfuwyd unrhyw grwpiau newidiadau ychwanegol gan y defnyddiwr
-        hwn.
+      title: Grwpiau newid
+      title_user: Grwpiau newid gan %{user}
+      title_user_link_html: Grwpiau newid gan %{user_link}
+      title_friend: Grwpiau newid gan fy ffrindiau
+      title_nearby: Grwpiau newid gan ddefnyddwyr cyfagos
+      empty: Heb ganfod grwpiau newid.
+      empty_area: Heb ganfod grwpiau newid yn yr ardal hon.
+      empty_user: Heb ganfod grwpiau newid gan y defnyddiwr hwn.
+      no_more: Heb ganfod mwy o grwpiau newid.
+      no_more_area: Heb ganfod mwy o grwpiau newid yn yr ardal hon.
+      no_more_user: Heb ganfod mwy o grwpiau newid gan y defnyddiwr hwn.
       load_more: Llwytho mwy
     timeout:
-      sorry: Mae'n ddrwg gennym, cymerodd y rhestr o grwpiau newidiadau y gwnaethoch
-        gais amdanynt ormod o amser i'w hadalw.
+      sorry: Mae'n ddrwg gennym, cymerodd y rhestr o grwpiau newid y gofynnoch amdanynt
+        rhy hir i'w hadalw.
   changeset_comments:
     comment:
-      comment: Sylw newydd ar grwp newidiadau %{changeset_id} gan %{author}
-      commented_at_by_html: Diweddarwyd %{when} yn ôl gan %{user}
+      comment: Sylw newydd ar grŵp newid %{changeset_id} gan %{author}
+      commented_at_by_html: Diweddarwyd %{when} gan %{user}
     comments:
-      comment: Sylw newydd ar grwp newidiadau %{changeset_id} gan %{author}
+      comment: Sylw newydd ar grŵp newid %{changeset_id} gan %{author}
     index:
-      title_all: Trafodaeth OpenStreetMa o'r setiau-newid
-      title_particular: Trafodaeth grwp newidiadau OpenStreetMap %{changeset_id}
+      title_all: Trafodaeth Grŵp Newid OpenStreetMap
+      title_particular: Trafodaeth grŵp newid OpenStreetMap %{changeset_id}
   dashboards:
     contact:
       km away: '%{count}km i ffwrdd'
@@ -371,14 +454,15 @@ cy:
       nearby mapper: Mapiwr gerllaw
       friend: Ffrind
     show:
+      title: Fy Nashfwrdd
       edit_your_profile: Golygu eich proffil
       my friends: Fy ffrindiau
       no friends: Nid ydych wedi ychwanegu unrhyw ffrindiau eto.
       nearby users: Defnyddwyr eraill gerllaw
       no nearby users: Nid oes defnyddwyr gerllaw sy'n datgelu eu bod yn mapio eto.
-      friends_changesets: Grwpiau newidiadau eich ffrindiau
+      friends_changesets: Grwpiau newid eich ffrindiau
       friends_diaries: cofnodion dyddiaduron cyfeillion
-      nearby_changesets: grwp newidiadau defnyddwyr gerllaw
+      nearby_changesets: grwpiau newid defnyddwyr gerllaw
       nearby_diaries: cofnodion dyddiaduron defnyddwyr gerllaw
   diary_entries:
     new:
@@ -387,46 +471,53 @@ cy:
       location: Lleoliad
       use_map_link: Defnyddio Map
     index:
-      title: Dyddiaduron defnyddwyr
-      title_friends: Dyddiaduron ffrindiau
-      title_nearby: Dyddiaduron defnyddwyr gerllaw
+      title: Dyddiaduron Defnyddwyr
+      title_friends: Dyddiaduron Ffrindiau
+      title_nearby: Dyddiaduron Defnyddwyr Gerllaw
       user_title: Dyddiadur %{user}
-      in_language_title: Cofnodion Dyddiadur yn %{language}
+      in_language_title: Cofnodion Dyddiadur %{language}
       new: Cofnod Dyddiadur Newydd
-      new_title: Ysgrifennu cofnod newydd yn eich dyddiadur defnyddiwr
+      new_title: Creu cofnod newydd yn fy nyddiadur defnyddiwr
+      my_diary: Fy Nyddiadur
       no_entries: Dim cofnodion dyddiadur
       recent_entries: Cofnodion dyddiadur diweddar
       older_entries: Cofnodion Hŷn
-      newer_entries: Confodion Mwy Diweddar
+      newer_entries: Confodion Diweddarach
     edit:
-      title: Golygu cofnod dyddiadur
-      marker_text: Lleoliad cofnod dyddiadur
+      title: Golygu Cofnod Dyddiadur
+      marker_text: Lleoliad cofnod dyddiadur
     show:
-      title: yddiadur %{user} | %{title}
-      user_title: dyddiadur %{user}
-      leave_a_comment: Gadael sylw
+      title: Dyddiadur %{user} | %{title}
+      user_title: Dyddiadur %{user}
+      leave_a_comment: Sylw
       login_to_leave_a_comment_html: '%{login_link} i adael sylw'
       login: Mewngofnodi
     no_such_entry:
-      title: Dim cofnod o'r fath yn y dyddiadur
-      heading: 'Dim cofnod efo''r id: %{id}'
-      body: Ymddiheurwn, ond nid oes cofnod o sylw gyda'r id %{id}. Gwirwch eich sillafu,
-        neu a ydych wedi clicio dolen anghywir?
+      title: Dim cofnod dyddiadur
+      heading: 'Dim cofnod gyda''r id: %{id}'
+      body: Mae'n ddrwg gennym, nid oes cofnod dyddiadur neu sylw gyda'r id %{id}.
+        Gwiriwch eich sillafu, neu efallai bod y ddolen rydych chi wedi ei chlicio
+        arni'n anghywir.
     diary_entry:
-      posted_by_html: Postiwyd gan %{link_user} ar %{created} mewn %{language_link}
+      posted_by_html: Postiwyd gan %{link_user} ar %{created} yn %{language_link}
       comment_link: Sylw ar y cofnod hwn
-      reply_link: Ymateb i'r cofnod hwn
+      reply_link: Anfon neges at yr awdur
       comment_count:
         zero: Dim sylwadau
         one: '%{count} sylw'
+        two: '%{count} sylw'
+        few: '%{count} sylw'
+        many: '%{count} sylw'
         other: '%{count} sylw'
       no_comments: Dim sylwadau
       edit_link: Golygu'r cofnod hwn
       hide_link: Cuddio'r cofnod hwn
       confirm: Cadarnhau
+      report: Adrodd y cofnod hwn
     diary_comment:
       comment_from_html: Sylwadau gan %{link_user} ar %{comment_created_at}
       hide_link: Cuddio'r sylw hwn
+      unhide_link: Datguddio'r sylw hwn
       confirm: Cadarnhau
       report: Riportio'r sylw hwn
     location:
@@ -435,12 +526,12 @@ cy:
       edit: Golygu
     feed:
       user:
-        title: Cofnodion OpenStreetMap ar gyfer %{user}
-        description: Cofnodion dyddiadur diweddar OpenStreetMap gan %{user}
+        title: Cofnodion dyddiadur OpenStreetMap ar gyfer %{user}
+        description: Cofnodion dyddiadur OpenStreetMap diweddar gan %{user}
       language:
-        title: Cofnodion dyddiadur OpenStreetMap mewn %{language_name}
-        description: Cofnodion dyddiadur diweddar gan ddefnyddwyr OpenStreetMap in
-          %{language_name} mewn %{language_name}
+        title: Cofnodion dyddiadur %{language_name} ar OpenStreetMap
+        description: Cofnodion dyddiadur diweddar %{language_name} gan ddefnyddwyr
+          OpenStreetMap
       all:
         title: Cofnodion dyddiadur OpenStreetMap
         description: Cofnodion dyddiadur diweddar gan ddefnyddwyr OpenStreetMap
@@ -448,8 +539,17 @@ cy:
       post: Post
       when: Pryd
       comment: Sylw
-      newer_comments: Sylwadau mwy diweddar
-      older_comments: Hen Sylwadau
+      newer_comments: Sylwadau Diweddarach
+      older_comments: Sylwadau Hŷn
+  errors:
+    contact:
+      contact: cysylltu
+    forbidden:
+      title: Gwaharddedig
+    internal_server_error:
+      title: Gwall ap
+    not_found:
+      title: Heb ganfod ffeil
   friendships:
     make_friend:
       heading: Ychwanegu %{user} fel ffrind?
@@ -463,6 +563,10 @@ cy:
       success: Tynnwyd %{name} o'ch ffrindiau.
       not_a_friend: Nid yw %{name} yn un o'ch ffrindiau.
   geocoder:
+    search:
+      title:
+        results_from_html: Canlyniadau o %{results_link}
+        latlon: Mewnol
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -470,6 +574,7 @@ cy:
           chair_lift: Cadair godi
           drag_lift: Cadair lusg
           gondola: Lifft Gondola
+          magic_carpet: Lifft Carped Hud
           pylon: Peilon
           station: Gorsaf Awyr
           t-bar: Lifft T-Bar
@@ -484,7 +589,7 @@ cy:
           parking_position: Lle Parcio
           runway: Rhedfa Awyr
           taxiway: Safle tacsi
-          terminal: Terfynell
+          terminal: Terfynell Maes Awyr
           windsock: Hosan wynt
         amenity:
           animal_boarding: Lletya Anifeiliaid
@@ -585,7 +690,9 @@ cy:
           administrative: Ffin Gweinyddol
           census: Ffin Cyfrifiad
           national_park: Parc Cenedlaethol
+          political: Ffin Etholiadol
           protected_area: Ardal Warchodol
+          "yes": Ffin
         bridge:
           aqueduct: Dyfrbont
           suspension: Pont Grog
@@ -593,9 +700,16 @@ cy:
           viaduct: Pont Trenau
           "yes": Pont
         building:
+          apartment: Fflat
+          apartments: Fflatiau
+          barn: Ysgubor
+          bungalow: Bynglo
+          cabin: Caban
           chapel: Capel
           church: Adeilad Eglwys
+          civic: Adeilad Dinesig
           college: Adeilad Coleg
+          commercial: Adeilad Masnachol
           farm: Ffermdy
           garage: Garej
           garages: Garejis
@@ -603,27 +717,57 @@ cy:
           hospital: Adeilad Ysbyty
           hotel: Adeilad Gwesty
           house: Tŷ
+          houseboat: Cwch preswyl
+          hut: Cwt
+          industrial: Adeilad Diwydiannol
+          kindergarten: Adeilad Meithrinfa
           office: Adeilad Swyddfa
+          public: Adeilad Cyhoeddus
+          residential: Adeilad Preswyl
+          retail: Adeilad Adwerthu
           roof: To
           school: Adeilad Ysgol
+          shed: Sied
+          stable: Stabl
+          static_caravan: Carafan
+          temple: Adeilad Teml
+          terrace: Adeilad Teras
+          train_station: Adeilad Gorsaf Drenau
+          university: Adeilad Prifysgol
+          warehouse: Warws
           "yes": Adeilad
         club:
+          sport: Clwb Chwaraeon
           "yes": Clwb
         craft:
+          beekeeper: Gwenynwr
+          blacksmith: Gof
           brewery: Bragdy
           carpenter: Saer
+          caterer: Arlwywr
+          confectionery: Melysion
+          dressmaker: Gwneuthurwr Ffrog
           electrician: Trydanydd
+          electronics_repair: Atgyweirio Electroneg
           gardener: Garddwr
+          glaziery: Glysiwr
+          handicraft: Gwaith Llaw
+          hvac: Crefft HVAC
+          metal_construction: Adeiladwr Metel
           painter: Peintiwr
           photographer: Ffotograffydd
           plumber: Plymar
+          roofer: Towr
           shoemaker: Crydd
           tailor: Teiliwr
+          winery: Gwindy
           "yes": Siop Grefft
         emergency:
+          access_point: Pwynt Mynediad
           ambulance_station: Gorsaf Ambiwlans
           assembly_point: Man Ymgynull
           defibrillator: Diffibriliwr
+          fire_extinguisher: Diffoddwr Tân
           landing_site: Man Glanio Argyfwng
           phone: Ffôn Argyfwng
           water_tank: Tanc Dŵr Argyfwng
@@ -634,6 +778,7 @@ cy:
           bus_stop: Stop Bysiau
           construction: Priffordd yn cael ei Adeiladu
           corridor: Coridor
+          crossing: Croesfan
           cycleway: Llwybr Beicio
           elevator: Lifft
           emergency_access_point: Pwynt Mynediad Argyfwng
@@ -667,18 +812,24 @@ cy:
           tertiary: Ffordd Trydyddol
           tertiary_link: Ffordd Trydyddol
           track: Trac
+          traffic_mirror: Drych Traffig
           traffic_signals: Goleuadau Traffig
+          trailhead: Pen Llwybr
           trunk: Cefnffordd
           trunk_link: Cefnffordd
+          turning_circle: Cylch Troi
           turning_loop: Lle Troi
           unclassified: Ffordd Diddosbarth
           "yes": Ffordd
         historic:
+          aircraft: Awyrennau Hanesyddol
           archaeological_site: Safle Archaeolegol
+          bomb_crater: Crater Bom Hanesyddol
           battlefield: Maes Brwydr
           boundary_stone: Maen Terfyn
           building: Adeilad Hanesyddol
           bunker: Byncar
+          cannon: Cannon Hanesyddol
           castle: Castell
           church: Eglwys
           city_gate: Gat y Ddinas
@@ -708,8 +859,8 @@ cy:
           brownfield: Browndir
           cemetery: Mynwent
           commercial: Ardal Fasnachol
-          conservation: Cadwraeth
-          construction: Adeiladwaith
+          conservation: Ardal Gadwraeth
+          construction: Ardal Adeiladu
           farmland: Tir Ffermio
           farmyard: Buarth Fferm
           forest: Coedwig
@@ -728,7 +879,7 @@ cy:
           reservoir: Cronfa Ddŵr
           reservoir_watershed: Gwahanfa Ddŵr
           residential: Ardal Breswyl
-          retail: Adwerthu
+          retail: Parc Adwerthu
           village_green: Llain Pentref
           vineyard: Gwinllan
           "yes": Defnydd Tir
@@ -743,7 +894,7 @@ cy:
           fitness_station: Gorsaf Hamdden
           garden: Gardd
           golf_course: Cwrs Golff
-          horse_riding: Llain Marchogaeth
+          horse_riding: Canolfan Marchogaeth
           ice_rink: Llawr Sglefrio
           marina: Marina
           miniature_golf: Golff Pitw
@@ -762,6 +913,8 @@ cy:
           water_park: Parc Dŵr
           "yes": Hamdden
         man_made:
+          advertising: Hysbysebu
+          antenna: Antena
           beacon: Goleufa
           beehive: Cwch Gwenyn
           breakwater: Morglawdd
@@ -812,6 +965,7 @@ cy:
           cape: Penrhyn
           cave_entrance: Mynediad Ogof
           cliff: Clogwyn
+          coastline: Arfordir
           crater: Crater
           dune: Twyn
           fell: Rhostir
@@ -840,25 +994,34 @@ cy:
           stone: Carreg
           strait: Culfor
           tree: Coeden
+          tree_row: Rhes o Goed
+          tundra: Twndra
           valley: Dyffryn
           volcano: Llosgfynydd
           water: Dŵr
           wetland: Gwlyptir
           wood: Coed
+          "yes": Nodwedd Naturiol
         office:
           accountant: Cyfrifydd
           administrative: Gweinyddu
+          advertising_agency: Asiantaeth Hysbysebu
           architect: Pensaer
           association: Cymdeithas
           company: Cwmni
           educational_institution: Sefydliad Addysgol
           employment_agency: Asiantaeth Cyflogi
           estate_agent: Gwerthwr Tai
+          financial: Swyddfa Gyllid
           government: Swyddfa Llywodraeth
           insurance: Swyddfa Yswiriant
           it: Swyddfa TG
           lawyer: Cyfreithiwr
+          newspaper: Swyddfa Bapur Newydd
           ngo: Swyddfa NGO
+          religion: Swyddfa Grefyddol
+          research: Swyddfa Ymchwil
+          tax_advisor: Cynghorydd Treth
           telecommunication: Swyddfa Telegyfathrebu
           travel_agent: Asiantaeth Deithio
           "yes": Swyddfa
@@ -878,6 +1041,7 @@ cy:
           locality: Ardal
           municipality: Bwrdeistref
           neighbourhood: Cymdogaeth
+          plot: Plot
           postcode: Cod Post
           quarter: Maestref
           region: Rhanbarth
@@ -904,6 +1068,7 @@ cy:
           platform: Platfform Drenau
           preserved: Rheilffordd ar Gadw
           proposed: Rheilfford Arfaethedig
+          rail: Rheilffordd
           spur: Cainc Rheilffordd
           station: Gorsaf Drenau
           stop: Siop Reilffordd
@@ -912,6 +1077,7 @@ cy:
           switch: Pwyntiau Atal (Rheilffyrdd)
           tram: Tramffordd
           tram_stop: Stop Tramiau
+          turntable: Trofwrdd
           yard: Buarth Drenau
         shop:
           alcohol: Siop Drwyddedig
@@ -944,7 +1110,7 @@ cy:
           deli: Deli
           department_store: Siop Adrannol
           discount: Siop Ddisgownt
-          doityourself: DIY
+          doityourself: Siop DIY
           dry_cleaning: Sychlanhau
           e-cigarette: Siop E-Sigaréts
           electronics: Siop Electroneg
@@ -1007,7 +1173,7 @@ cy:
           artwork: Gwaith Celf
           attraction: Atyniad
           bed_and_breakfast: Gweldy a Brecwast
-          cabin: Caban
+          cabin: Caban Twristiaeth
           camp_pitch: Gwersyll
           camp_site: Man Gwersylla
           caravan_site: Parc Carafanau
@@ -1074,17 +1240,39 @@ cy:
       last_updated_time_ago_user_html: '%{time_ago} gan %{user}'
       link_to_reports: Gweld adroddiadau
       reports_count:
-        one: 1 Report
-        other: '%{count} Adroddiadau'
+        zero: '%{count} Adroddiad'
+        one: '%{count} Adroddiad'
+        two: '%{count} Adroddiad'
+        few: '%{count} Adroddiad'
+        many: '%{count} Adroddiad'
+        other: '%{count} Adroddiad'
       reported_item: Eitem ag adroddwyd
       states:
+        ignored: Anwybyddwyd
         open: Agor
         resolved: Datruswyd
+    show:
+      no_reports: Dim adroddiadau
+      report_created_at: Adroddwyd gyntaf am %{datetime}
+      last_resolved_at: Datryswyd ddiwethaf am %{datetime}
+      resolve: Datrys
+      ignore: Anwybyddu
+      reopen: Ailagor
+    helper:
+      reportable_title:
+        note: 'Nodyn #%{note_id}'
   reports:
     new:
+      title_html: Adrodd %{link}
       categories:
+        diary_entry:
+          other_label: Arall
+        diary_comment:
+          other_label: Arall
         user:
           other_label: Arall
+        note:
+          other_label: Arall
   layouts:
     logo:
       alt_text: Logo OpenStreetMap
@@ -1096,6 +1284,7 @@ cy:
     edit: Golygu
     history: Hanes
     export: Allforio
+    issues: Problemau
     data: Data
     export_data: Allforio data
     gps_traces: Dargopiadau GPS
@@ -1108,6 +1297,8 @@ cy:
     intro_text: Mae OpenStreetMap yn fap o'r byd, wedi'i greu gan bobl fel chi ac
       sydd ar gael i'w ddefnyddio am ddim a dan drwydded rydd.
     intro_2_create_account: Creu cyfrif defnyddiwr
+    partners_ucl: UCL
+    partners_fastly: Fastly
     partners_bytemark: Bytemark Hosting
     partners_partners: partneriaid
     tou: Telerau Gwasanaeth
@@ -1129,14 +1320,19 @@ cy:
     learn_more: Dysgu Mwy
     more: Mwy
   user_mailer:
+    diary_comment_notification:
+      hi: Helo %{to_user},
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Helo %{to_user},
     friendship_notification:
       hi: Helo %{to_user},
     gpx_failure:
+      hi: Helo %{to_user},
       failed_to_import: 'methwyd a mewnforio. Dyma''r gwall:'
       subject: Methwyd mewnforio GPX [OpenStreetMap]
+    gpx_success:
+      hi: Helo %{to_user},
     signup_confirm:
       greeting: Shwmae!
       created: Mae rhywun (chi gobeithio!) newydd greu cyfrif yn %{site_url}.
@@ -1151,12 +1347,17 @@ cy:
       anonymous: Defnyddiwr dienw
       greeting: Helo,
     changeset_comment_notification:
+      hi: Helo %{to_user},
       greeting: Helo,
       commented:
+        partial_changeset_with_comment: gyda sylw '%{changeset_comment}'
         partial_changeset_with_comment_html: gyda sylw '%{changeset_comment}'
+        partial_changeset_without_comment: dim sylw
   confirmations:
     confirm:
+      heading: Gwiriwch eich e-byst!
       button: Cadarnhau
+      click_here: cliciwch yma
     confirm_email:
       heading: Cadarnhau newid cyfeiriad e-bost
       button: Cadarnhau
@@ -1198,6 +1399,7 @@ cy:
       to: I
       subject: Pwnc
       date: Dyddiad
+      people_mapping_nearby: pobl yn mapio gerllaw
     show:
       title: Darllen neges
       reply_button: Ateb
@@ -1226,8 +1428,15 @@ cy:
   preferences:
     show:
       title: Dewisiadau
+      preferred_editor: Hoff Olygydd
+      preferred_languages: Ieithoedd
+      edit_preferences: Dewisiadau Golygu
     edit:
+      title: Dewisiadau Golygu
+      save: Diweddaru Dewisiadau
       cancel: Canslo
+    update:
+      failure: Ni ellir diweddaru'r dewisiadau.
   profiles:
     edit:
       title: Golygu proffil
@@ -1258,13 +1467,36 @@ cy:
       no account: Dim cyfrif gennych?
       openid_logo_alt: Mewngofnodi gydag OpenID
       auth_providers:
+        openid:
+          title: Mewngofnodi ag OpenID
+          alt: Mewngofnodi ag URL OpenID
+        google:
+          title: Mewngofnodi â Google
+          alt: Mewngofnodi â Google OpenID
+        facebook:
+          title: Mewngofnodi â Facebook
+          alt: Mewngofnodi â Chyfrif Facebook
         windowslive:
           title: Mewngofnodi gyda Microsoft
           alt: Mewngofnodi gyda Chyfrif Microsoft
+        github:
+          title: Mewngofnodi â GitHub
+          alt: Mewngofnodi â Chyfrif GitHub
+        wikipedia:
+          title: Mewngofnodi ag Wicipedia
+          alt: Mewngofnodi â Chyfrif Wicipedia
+        wordpress:
+          title: Mewngofnodi ag Wordpress
+          alt: Mewngofnodi ag Wordpress OpenID
+        aol:
+          title: Mewngofnodi ag AOL
+          alt: Mewngofnodi ag AOL OpenID
     destroy:
       title: Allgofnodi
       heading: Allgofnodi o OpenStreetMap
       logout_button: Allgofnodi
+    suspended_flash:
+      support: cymorth
   shared:
     markdown_help:
       headings: Penawdau
@@ -1273,6 +1505,7 @@ cy:
       link: Dolen
       text: Testun
       image: Delwedd
+      alt: Testun amgen
       url: URL
     richtext_field:
       edit: Golygu
@@ -1280,9 +1513,18 @@ cy:
   site:
     about:
       next: Nesaf
+      heading_html: '%{copyright}Cyfranwyr %{br} OpenStreetMap'
       local_knowledge_title: Gwybodaeth Leol
+      community_driven_osm_blog: Blog OpenStreetMap
+      community_driven_user_diaries: dyddiaduron defnyddwyr
+      community_driven_community_blogs: blogiau cymunedol
+      community_driven_osm_foundation: OSM Foundation
       open_data_title: Data Agored
+      open_data_open_data: data agored
       legal_title: Cyfreithiol
+      legal_1_1_terms_of_use: Telerau Gwasanaeth
+      legal_1_1_privacy_policy: Polisi Preifatrwydd
+      legal_2_1_contact_the_osmf: cysylltwch â'r OSMF
       partners_title: Partneriaid
     copyright:
       foreign:
@@ -1296,12 +1538,19 @@ cy:
         mapping_link: dechrau mapio
       legal_babble:
         title_html: Hawlfraint a Thrwydded
+        introduction_1_open_data: data agored
+        introduction_2_legal_code: cod cyfreithiol
         credit_title_html: Sut i gydnabod OpenStreetMap
+        credit_4_1_this_copyright_page: y dudalen hawlfraint hon
         attribution_example:
           title: Enghraifft o gydnabyddiaeth
         more_title_html: Darganfod rhagor
         contributors_title_html: Ein cyfranwyr
+        contributors_at_austria: Awstria
+        contributors_at_stadt_wien: Stadt Wien
         contributors_at_cc_by: CC BY
+        contributors_at_land_vorarlberg: Land Vorarlberg
+        contributors_at_cc_by_at_with_amendments: CC BY AT gyda diwygiadau
         contributors_au_australia: Awstralia
         contributors_au_geoscape_australia: Geoscape Australia
         contributors_ca_canada: Canada
@@ -1310,6 +1559,7 @@ cy:
         contributors_fr_france: Ffrainc
         contributors_nl_netherlands: Iseldiroedd
         contributors_nz_new_zealand: Seland Newydd
+        contributors_nz_cc_by: CC BY 4.0
         contributors_rs_serbia: Serbia
         contributors_si_slovenia: Slofenia
         contributors_es_spain: Sbaen
@@ -1319,6 +1569,8 @@ cy:
         contributors_gb_united_kingdom: Deyrnas Unedig
         contributors_2_contributors_page: Tudalen gyfranwyr
         infringement_title_html: Torri hawlfraint
+        trademarks_title: Nodau Masnach
+        trademarks_1_1_trademark_policy: Polisi Nod Masnach
     index:
       permalink: Dolen barhaol
       shortlink: Dolen fer
@@ -1364,6 +1616,7 @@ cy:
           title: Ymunwch â'r gymuned
       other_concerns:
         title: Gofidion eraill
+        copyright: tudalen hawlfraint
     help:
       title: Cael Cymorth
       welcome:
@@ -1376,10 +1629,14 @@ cy:
         title: Fforwm Cymorth
       mailing_lists:
         title: Rhestr Gohebiaeth
+      community:
+        title: Fforwm Cymunedol
       irc:
         title: IRC
       switch2osm:
         title: switch2osm
+      wiki:
+        title: Wici OpenStreetMap
     any_questions:
       title: Unrhyw gwestiynau?
     sidebar:
@@ -1435,6 +1692,7 @@ cy:
           common:
           - Comin
           - dôl
+          - gardd
           retail: Ardal adwerthu
           industrial: Ardal diwydiannol
           commercial: Ardal masnachol
@@ -1469,11 +1727,18 @@ cy:
         title: Beth sydd ar y Map
       basic_terms:
         title: Termau syml mapio
+        editor: golygydd
+        node: nod
+        way: llwybr
+        tag: tag
       rules:
         title: Rheolau!
+        imports: Mewnforion
+        automated_edits: Golygiadau Awtomatig
       start_mapping: Dechrau Mapio
       add_a_note:
         title: Dim amser i olygu? Ychwanegwch nodyn!
+        the_map: map
     communities:
       title: Cymunedau
       other_groups:
@@ -1519,9 +1784,12 @@ cy:
       in: mewn
     index:
       tagged_with: tagiwyd gyda %{tags}
+      wiki_page: tudalen wici
   application:
     settings_menu:
       account_settings: Gosodiadau Cyfrif
+      oauth1_settings: Gosodiadau OAuth 1
+      oauth2_applications: Ceisiadau OAuth 2
   oauth:
     authorize:
       allow_to: 'Caniatáu''r rhaglen cleient i:'
@@ -1557,19 +1825,30 @@ cy:
     index:
       oauth: OAuth
   oauth2_applications:
+    index:
+      name: Enw
+      permissions: Caniatâd
     application:
       edit: Golygu
       delete: Dileu
     show:
       edit: Golygu
       delete: Dileu
+      client_id: ID Cleient
+      client_secret: Cyfrinach Cleient
+  oauth2_authorizations:
+    new:
+      authorize: Awdurdodi
+      deny: Gwrthod
   users:
     new:
       title: Cofrestru
+      support: cymorth
       display name description: Eich enw defnyddiwr cyhoeddus. Gallwch newid hyn yn
         nes ymlaen yn eich dewisiadau.
       continue: Cofrestru
       terms accepted: Diolch am dderbyn telerau newydd cyfranwyr!
+      privacy_policy: polisi preifatrwydd
     terms:
       title: Telerau
       heading: Telerau
@@ -1606,12 +1885,16 @@ cy:
       ct status: 'Telerau cyfrannwr:'
       ct undecided: Heb Benderfynu
       ct declined: Wedi Gwrthod
+      latest edit: 'Golygiad diweddaraf (%{ago}):'
       email address: 'Cyfeiriad ebost:'
       created from: 'Crëwyd o:'
       status: 'Statws:'
+      spam score: 'Sgôr Sbam:'
       role:
         administrator: Mae'r defnyddiwr hwn yn weinyddwr.
         moderator: Mae'r defnyddiwr hwn yn gymedrolwr.
+      block_history: Blociau Gweithredol
+      moderator_history: Blociau a roddwyd
       comments: Sylwadau
       create_block: Rhwystro'r Defnyddiwr hwn
       activate_user: Gwneud y cyfri'n fyw
@@ -1626,6 +1909,8 @@ cy:
     index:
       title: Defnyddwyr
       heading: Defnyddwyr
+    suspended:
+      support: cymorth
   user_role:
     grant:
       confirm: Cadarnhau
@@ -1635,7 +1920,11 @@ cy:
     helper:
       time_future_html: Yn dod i ben mewn %{time}.
       time_past_html: Wedi dod i ben %{time} yn ôl.
+    blocks_on:
+      title: Blociau ar %{name}
     show:
+      created: 'Crëwyd:'
+      duration: 'Cyfnod:'
       status: 'Statws:'
       show: Dangos
       edit: Golygu
@@ -1651,19 +1940,25 @@ cy:
   notes:
     index:
       id: Id
+      description: Disgrifiad
+      created_at: Crëwyd am
       last_changed: Newidiwyd ddiwethaf
     show:
       title: 'Nodyn: %{id}'
       description: Disgrifiad
-      open_title: '#%{note_name} heb ei ddatrus'
-      closed_title: '#%{note_name} wedi''i ddatrus'
+      open_title: '#%{note_name} heb ei ddatrys'
+      closed_title: '#%{note_name} wedi''i ddatrys'
       hidden_title: Nodyn cudd %{note_name}
+      event_opened_by_html: Crëwyd gan %{user} %{time_ago}
+      event_opened_by_anonymous_html: Crëwyd gan berson ddienw %{time_ago}
+      event_commented_by_html: Sylw gan %{user} %{time_ago}
+      event_commented_by_anonymous_html: Sylw gan berson ddienw %{time_ago}
       report: riportio'r nodyn hwn
       hide: Cuddio
       resolve: Datrys
-      reactivate: Ail roi ar waith
+      reactivate: Ail-ysgogi
       comment_and_resolve: Sylw a Datrys
-      comment: Adweithio
+      comment: Sylw
     new:
       title: Nodyn Newydd
       add: Ychwanegu Nodyn
@@ -1676,6 +1971,7 @@ cy:
       link: Dolen neu HTML
       long_link: Dolen
       short_link: Dolen Fer
+      geo_uri: URI Geo
       embed: HTML
       format: 'Fformat:'
       scale: 'Graddfa:'
@@ -1697,7 +1993,7 @@ cy:
         hot: Dyngarol
       layers:
         header: Haenau Mapiau
-        notes: Nodiadau Map
+        notes: Sylwadau Map
         data: Data Map
         title: Haenau
     site:
@@ -1716,15 +2012,34 @@ cy:
         unhide_comment: datguddio
     directions:
       engines:
+        fossgis_osrm_bike: Beic (OSRM)
+        fossgis_osrm_car: Car (OSRM)
+        fossgis_osrm_foot: Troed (OSRM)
+        graphhopper_bicycle: Beic (GraphHopper)
+        graphhopper_car: Car (GraphHopper)
+        graphhopper_foot: Troed (GraphHopper)
         fossgis_valhalla_bicycle: Beic (Valhalla)
         fossgis_valhalla_car: Car (Valhalla)
+        fossgis_valhalla_foot: Troed (Valhalla)
+      distance_m: '%{distance}m'
+      distance_km: '%{distance}km'
       instructions:
         exit_counts:
           first: 1af
           second: 2il
           third: 3ydd
+          fourth: 4ydd
+          fifth: 5ed
+          sixth: 6fed
+          seventh: 7fed
+          eighth: 8fed
+          ninth: 9fed
+          tenth: 10fed
+      time: Amser
     query:
+      node: Nod
       way: Llwybr
+      relation: Perthynas
       nothing_found: Ni ddarganfuwyd nodweddion
       error: 'Gwall cysyltlu gyda %{server}: %{error}'
   redactions:
index c05b92d44e23df1de3861f522f9c64a7b6e98ffd..e14c5806ccfb3df5955041d517a2ec10244d5fe9 100644 (file)
@@ -1754,6 +1754,9 @@ en:
       home location: "Home Location"
       no home location: "You have not entered your home location."
       update home location on click: "Update home location when I click on the map?"
+      show: "Show"
+      delete: "Delete"
+      undelete: "Undo delete"
     update:
       success: Profile updated.
       failure: Couldn't update profile.
index 82403522c72a6c50dad35fe8d83ed5b61ed9fcf9..48167044fa94d1f7dfeef00344f29b1abe434936 100644 (file)
@@ -118,7 +118,7 @@ es:
         update: Actualizar
       redaction:
         create: Crear censura
-        update: Guardar redacción
+        update: Guardar censura
       trace:
         create: Subir
         update: Guardar cambios
@@ -161,7 +161,7 @@ es:
       tracetag: Etiqueta de la traza
       user: Usuario
       user_preference: Preferencia de usuario
-      user_token: Ficha de usuario
+      user_token: Token de usuario
       way: Vía
       way_node: Nodo de la vía
       way_tag: Etiqueta de la vía
@@ -171,11 +171,11 @@ es:
         url: URL de la aplicación principal (obligatorio)
         callback_url: URL de devolución de llamada
         support_url: URL de asistencia
-        allow_read_prefs: leer sus preferencias de usuario
-        allow_write_prefs: modificar sus preferencias de usuario
+        allow_read_prefs: leer tus preferencias de usuario
+        allow_write_prefs: modificar tus preferencias de usuario
         allow_write_diary: crear entradas de diario, comentarios y hacer amigos
         allow_write_api: modificar el mapa
-        allow_read_gpx: leer sus trazas de GPS privadas
+        allow_read_gpx: leer tus trazas de GPS privadas
         allow_write_gpx: cargar trazas de GPS
         allow_write_notes: modificar notas
       diary_comment:
@@ -189,7 +189,7 @@ es:
         language_code: Idioma
       doorkeeper/application:
         name: Nombre
-        redirect_uri: Redirigir URI
+        redirect_uri: Redirigir URIs
         confidential: ¿Solicitud confidencial?
         scopes: Permisos
       friend:
@@ -216,14 +216,14 @@ es:
         title: Título
         description: Descripción
       report:
-        category: Seleccione el motivo de su informe
-        details: Es necesario proporcionar más detalles sobre el problema.
+        category: Seleccione el motivo de tu denuncia
+        details: Es necesario proporcionar más detalles sobre el problema (requerido).
       user:
         auth_provider: Proveedor de autentificación
         auth_uid: UID de autentificación
         email: Correo electrónico
         email_confirmation: Confirmación de correo electrónico
-        new_email: Nuevo correo electrónico
+        new_email: Nueva dirección de correo electrónico
         active: Activo
         display_name: Nombre para mostrar
         description: Descripción del perfil
@@ -242,11 +242,11 @@ es:
       trace:
         tagstring: delimitado por comas
       user_block:
-        reason: El motivo por el que el usuario está siendo bloqueado. Manténgase
-          lo más tranquilo y razonable posible, dando tantos detalles como pueda sobre
-          la situación, recordando que el mensaje será visible públicamente. Tenga
-          en cuenta que no todos los usuarios comprenden la jerga de la comunidad,
-          así que intente utilizar términos simples.
+        reason: El motivo por el que el usuario está siendo bloqueado. Manténte lo
+          más tranquilo y razonable posible, dando tantos detalles como puedas sobre
+          la situación, recordando que el mensaje será visible públicamente. Ten en
+          cuenta que no todos los usuarios comprenden la jerga de la comunidad, así
+          que intenta utilizar términos simples.
         needs_view: ¿Tiene que iniciar sesión el usuario antes de que este bloqueo
           sea eliminado?
       user:
@@ -296,7 +296,7 @@ es:
       name: iD
       description: iD (editor en el navegador)
     remote:
-      name: Control Remoto
+      name: Control remoto
       description: Control remoto (JOSM, Potlatch o Merkaartor)
   auth:
     providers:
@@ -304,6 +304,7 @@ es:
       openid: OpenID
       google: Google
       facebook: Facebook
+      windowslive: Microsoft
       github: GitHub
       wikipedia: Wikipedia
   api:
@@ -320,8 +321,8 @@ es:
       rss:
         title: Notas de OpenStreetMap
         description_area: Una lista de notas, informadas, comentadas o cerradas en
-          su área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
-        description_item: Un suministro RSS para la nota %{id}
+          tu área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+        description_item: Un suministro RSS para notas %{id}
         opened: nueva nota (cerca de %{place})
         commented: nuevo comentario (cerca de %{place})
         closed: nota cerrada (cerca de %{place})
@@ -336,49 +337,51 @@ es:
         warning: ¡Advertencia! El proceso de eliminación de la cuenta es definitivo
           y no puede ser revertido.
         delete_account: Eliminar cuenta
-        delete_introduction: 'Puede eliminar su cuenta de OpenStreetMap utilizando
-          el botón que aparece a continuación. Tenga en cuenta los siguientes detalles:'
-        delete_profile: Se eliminará la información de su perfil, incluido su avatar,
+        delete_introduction: 'Puedes eliminar tu cuenta de OpenStreetMap utilizando
+          el botón que aparece a continuación. Ten en cuenta los siguientes detalles:'
+        delete_profile: Se eliminará la información de tu perfil, incluido tu avatar,
           descripción y ubicación de inicio.
-        delete_display_name: Su nombre para mostrar será eliminado, y puede ser reutilizado
+        delete_display_name: Tu nombre para mostrar será eliminado, y podrá ser reutilizado
           por otras cuentas.
-        retain_caveats: 'Sin embargo, algunos datos sobre usted se conservarán en
-          OpenStreetMap, incluso después de que se elimine su cuenta:'
-        retain_edits: Sus ediciones en la base de datos de mapas, si las hay, se conservarán.
-        retain_traces: Sus trazas subidas, si las hay, se conservarán.
+        retain_caveats: 'Sin embargo, algunos datos sobre ti se conservarán en OpenStreetMap,
+          incluso después de que se elimine tu cuenta:'
+        retain_edits: Tus ediciones en la base de datos de mapas, si las hay, se conservarán.
+        retain_traces: Tus trazas subidas, si las hay, se conservarán.
         retain_diary_entries: Las entradas y los comentarios de tu diario, si los
           hay, se conservarán pero estarán ocultos.
         retain_notes: Las notas del mapa y los comentarios de las notas, si los hay,
           se conservarán pero estarán ocultos.
-        retain_changeset_discussions: Sus discusiones sobre el conjunto de cambios,
+        retain_changeset_discussions: Tus discusiones sobre conjuntos de cambios,
           si las hay, se conservarán.
-        retain_email: Su dirección de correo electrónico se conservará.
+        retain_email: Tu dirección de correo electrónico se conservará.
         confirm_delete: ¿Lo confirma?
         cancel: Cancelar
   accounts:
     edit:
       title: Editar cuenta
-      my settings: Mi configuración
-      current email address: Correo electrónico actual
-      external auth: Autenticación externa
+      my settings: Mis configuraciones
+      current email address: Dirección de correo electrónico actual
+      external auth: Autentificación externa
       openid:
+        link: https://wiki.openstreetmap.org/wiki/ES:OpenID
         link text: ¿Qué es esto?
       public editing:
         heading: Edición pública
-        enabled: Activadas. No es anónimo y puede editar datos.
+        enabled: Activadas. No es anónimo y puedes editar datos.
         enabled link: https://wiki.openstreetmap.org/wiki/ES:Ediciones_an%C3%B3nimas
         enabled link text: ¿Qué es esto?
-        disabled: Desactivadas y no puede editar datos; todas las ediciones anteriores
+        disabled: Desactivadas y no puedes editar datos; todas las ediciones anteriores
           son anónimas.
         disabled link text: ¿Por qué no puedo editar?
       contributor terms:
-        heading: Términos de colaborador
-        agreed: Ha aceptado los nuevos Términos de colaborador.
-        not yet agreed: Aún no ha aceptado los nuevos Términos de Colaborador.
-        review link text: Siga este enlace cuando le resulte conveniente para revisar
-          y aceptar los nuevos Términos de colaborador.
-        agreed_with_pd: También ha declarado que considera que sus ediciones son de
-          Dominio Público.
+        heading: Términos de Colaborador
+        agreed: Has aceptado los nuevos Términos de Colaborador.
+        not yet agreed: Aún no has aceptado los nuevos Términos de Colaborador.
+        review link text: Sigue este enlace cuando te resulte conveniente para revisar
+          y aceptar los nuevos Términos de Colaborador.
+        agreed_with_pd: También has declarado que consideras que tus ediciones son
+          de Dominio Público.
+        link: https://wiki.openstreetmap.org/wiki/ES:Licencia_Abierta_de_Base_de_Datos/T%C3%A9rminos_del_colaborador
         link text: ¿Qué es esto?
       save changes button: Guardar cambios
       delete_account: Eliminar cuenta...
@@ -391,6 +394,7 @@ es:
       only_public_can_edit: Desde el cambio de API 0.6, solo los usuarios públicos
         pueden editar los datos de los mapas.
       find_out_why: averiguar por qué
+      find_out_why_url: https://wiki.openstreetmap.org/wiki/ES:Ediciones_an%C3%B3nimas
       email_not_revealed: Tu dirección de correo electrónico no será revelada al hacerse
         pública.
       not_reversible: Esta acción no se puede revertir y todos los nuevos usuarios
@@ -398,7 +402,7 @@ es:
       make_edits_public_button: Hacer todas mis ediciones públicas
     update:
       success_confirm_needed: La información del usuario se ha actualizado correctamente.
-        Compruebe su correo electrónico para ver una nota sobre cómo confirmar su
+        Comprueba tu correo electrónico para ver un mensaje sobre cómo confirmar tu
         nueva dirección de correo electrónico.
       success: La información del usuario se ha actualizado correctamente.
     destroy:
@@ -437,12 +441,14 @@ es:
       relation: Relaciones (%{count})
       relation_paginated: Relaciones (%{x}-%{y} de %{count})
       comment: Comentarios (%{count})
+      hidden_comment_by_html: Comentario ocultado por %{user} %{time_ago}
+      comment_by_html: Comentario de %{user} %{time_ago}
       changesetxml: XML del conjunto de cambios
       osmchangexml: XML en formato osmChange
       feed:
         title: Conjunto de cambios %{id}
         title_comment: Conjunto de cambios %{id} - %{comment}
-      join_discussion: Inicie sesión para unirse a la discusión
+      join_discussion: Inicia sesión para unirte a la discusión
       discussion: Discusión
       still_open: El conjunto de cambios sigue abierto; la discusión se abrirá cuando
         se cierre el conjunto de cambios.
@@ -454,7 +460,7 @@ es:
       history_title_html: 'Historial de vía: %{name}'
       nodes: Nodos
       nodes_count:
-        one: 1 nodo
+        one: '%{count} nodo'
         other: '%{count} nodos'
       also_part_of_html:
         one: parte de la vía %{related_ways}
@@ -464,7 +470,7 @@ es:
       history_title_html: 'Historial de relación: %{name}'
       members: Miembros
       members_count:
-        one: 1 miembro
+        one: '%{count} miembro'
         other: '%{count} miembros'
     relation_member:
       entry_role_html: '%{type} %{name} como %{role}'
@@ -504,7 +510,7 @@ es:
         relation: relación
     start_rjs:
       feature_warning: Cargando %{num_features} elementos, lo que puede hacer que
-        su navegador se ralentice o que no responda. ¿Está seguro de que desea mostrar
+        tu navegador se ralentice o no responda. ¿Estás seguro de que deseas mostrar
         estos datos?
       load_data: Cargar datos
       loading: Cargando…
@@ -521,7 +527,7 @@ es:
       email_link: Correo electrónico %{email}
     query:
       title: Consultar elementos
-      introduction: Pulse en el mapa para encontrar elementos cercanos.
+      introduction: Haz clic en el mapa para encontrar elementos cercanos.
       nearby: Elementos cercanos
       enclosing: Elementos delimitantes
   changesets:
@@ -554,7 +560,7 @@ es:
       load_more: Cargar más
     timeout:
       sorry: Lo sentimos, la lista de conjuntos de cambios que solicitó tardó demasiado
-        en recuperarse.
+        en obtenerse.
   changeset_comments:
     comment:
       comment: 'Comentario nuevo sobre el conjunto de cambios #%{changeset_id} de
@@ -568,13 +574,13 @@ es:
       title_particular: 'Discusión del conjunto de cambios #%{changeset_id} de OpenStreetMap'
     timeout:
       sorry: Lo sentimos, la lista de comentarios del conjunto de cambios que solicitó
-        tardó demasiado en recuperarse.
+        tardó demasiado en obtenerse.
   dashboards:
     contact:
-      km away: '%{count} km de distancia'
-      m away: '%{count} m de distancia'
+      km away: '%{count} km. de distancia'
+      m away: '%{count} m. de distancia'
     popup:
-      your location: Su ubicación
+      your location: Tu ubicación
       nearby mapper: Mapeadores cercanos
       friend: Amigo
     show:
@@ -583,9 +589,9 @@ es:
         para ver los usuarios cercanos.'
       edit_your_profile: Edita tu perfil
       my friends: Mis amigos
-      no friends: No has añadido ningún amigo aún.
+      no friends: No has añadido amigos aún.
       nearby users: Otros usuarios cercanos
-      no nearby users: Todavía no hay usuarios que se hayan ubicado en su proximidad.
+      no nearby users: Todavía no hay usuarios que admitan mapear cerca.
       friends_changesets: conjuntos de cambios realizados por amigos
       friends_diaries: entradas de diarios de amigos
       nearby_changesets: conjuntos de cambios de los usuarios cercanos
@@ -611,7 +617,7 @@ es:
       newer_entries: Entradas más recientes
     edit:
       title: Editar entrada del diario
-      marker_text: Lugar de la entrada del diario
+      marker_text: Ubicación de la entrada del diario
     show:
       title: Diario de %{user} | %{title}
       user_title: Diario de %{user}
@@ -619,19 +625,19 @@ es:
       login_to_leave_a_comment_html: '%{login_link} para dejar un comentario'
       login: Iniciar sesión
     no_such_entry:
-      title: No existe esa entrada de diario
+      title: No existe esta entrada de diario
       heading: No hay ninguna entrada con el identificador %{id}
-      body: No hay ninguna entrada de diario o comentario con el identificador %{id}.
-        Revise su ortografía, o tal vez el enlace en el que hizo clic es incorrecto.
+      body: No hay alguna entrada de diario o comentario con el identificador %{id}.
+        Revisa la ortografía, o tal vez el enlace en el que hiciste clic es incorrecto.
     diary_entry:
       posted_by_html: Publicado por %{link_user} el %{created} en %{language_link}.
       updated_at_html: Última actualización en %{updated}.
       comment_link: Comentar esta entrada
       reply_link: Enviar un mensaje al autor
       comment_count:
-        zero: No hay comentarios
         one: '%{count} comentario'
         other: '%{count} comentarios'
+      no_comments: Sin comentarios
       edit_link: Editar esta entrada
       hide_link: Ocultar esta entrada
       unhide_link: Mostrar esta entrada
@@ -672,15 +678,15 @@ es:
     flash:
       applications:
         create:
-          notice: Solicitud registrada.
+          notice: Aplicación registrada.
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/ES:Canales_de_contacto
       contact_url_title: Varios canales de contacto explicados
       contact: contacto
       contact_the_community_html: Siéntete libre de %{contact_link} a la comunidad
-        de OpenStreetMap si ha encontrado un enlace roto o un error. Toma nota de
-        la URL exacta de su solicitud.
+        de OpenStreetMap si has encontrado un enlace roto o un error. Toma nota de
+        la URL exacta de tu solicitud.
     forbidden:
       title: Prohibido
       description: La operación que se solicitó al servidor de OpenStreetMap solo
@@ -697,21 +703,21 @@ es:
     make_friend:
       heading: ¿Añadir a %{user} como un amigo?
       button: Añadir como amigo
-      success: ¡%{name} ahora es su amigo!
+      success: ¡%{name} ahora es tu amigo!
       failed: Lo sentimos, no se ha podido añadir a %{name} como un amigo.
       already_a_friend: Ya eres amigo de %{name}.
-      limit_exceeded: Ha agregado a muchos amigos recientemente. Por favor espere
+      limit_exceeded: Has agregado a muchos amigos recientemente. Por favor espera
         un poco antes de intentar agregar más amigos.
     remove_friend:
-      heading: ¿Quitar a %{user} de los amigos?
-      button: Quitar amistad
-      success: Ha quitado a %{name} de sus amigos.
-      not_a_friend: '%{name} no es uno de sus amigos.'
+      heading: ¿Quitar a %{user} de tus amigos?
+      button: Quitar como amigo
+      success: Has quitado a %{name} de tus amigos.
+      not_a_friend: '%{name} no es uno de tus amigos.'
   geocoder:
     search:
       title:
         results_from_html: Resultados de %{results_link}
-        latlon: Fuentes internas
+        latlon: Interno
         osm_nominatim: Nominatim de OpenStreetMap
         osm_nominatim_reverse: Nominatim de OpenStreetMap
     search_osm_nominatim:
@@ -722,15 +728,15 @@ es:
           drag_lift: Telearrastre
           gondola: Telecabina
           magic_carpet: Ascensor de alfombra mágica
-          platter: Telesquí
-          pylon: Pilón
+          platter: Cable de remolque con platillo
+          pylon: Torre de tendido
           station: Estación de remonte
-          t-bar: Telesquí
+          t-bar: Ascensor de barra en T
           "yes": Vía aérea
         aeroway:
           aerodrome: Aeródromo
-          airstrip: Aeródromo
-          apron: Pista
+          airstrip: Pista de aterrizaje
+          apron: Plataforma
           gate: Puerta de aeropuerto
           hangar: Hangar
           helipad: Helipuerto
@@ -750,11 +756,11 @@ es:
           bank: Banco
           bar: Bar
           bbq: Parrilla
-          bench: Banco
+          bench: Banca
           bicycle_parking: Aparcamiento de bibicletas
           bicycle_rental: Alquiler de bicicletas
           bicycle_repair_station: Estación de reparación de bicicletas
-          biergarten: Terraza
+          biergarten: Patio cervecero
           blood_bank: Banco de sangre
           boat_rental: Alquiler de botes
           brothel: Burdel
@@ -766,7 +772,7 @@ es:
           car_wash: Autolavado
           casino: Casino
           charging_station: Estación de carga
-          childcare: Guardería
+          childcare: Puricultura
           cinema: Cine
           clinic: Clínica
           clock: Reloj
@@ -778,12 +784,12 @@ es:
           dentist: Dentista
           doctors: Consultorio médico
           drinking_water: Agua potable
-          driving_school: Autoescuela
+          driving_school: Escuela de automovilismo
           embassy: Embajada
           events_venue: Lugar de eventos
           fast_food: Comida rápida
-          ferry_terminal: Terminal de ferrys
-          fire_station: Parque de bomberos
+          ferry_terminal: Terminal de transbordador
+          fire_station: Estación de bomberos
           food_court: Zona de restaurantes
           fountain: Fuente
           fuel: Estación de servicio
@@ -794,7 +800,7 @@ es:
           hunting_stand: Apostadero de caza
           ice_cream: Heladería
           internet_cafe: Cibercafé
-          kindergarten: Escuela infantil/guardería
+          kindergarten: Guardería
           language_school: Escuela de idiomas
           library: Biblioteca
           loading_dock: Muelle de carga
@@ -807,17 +813,17 @@ es:
           music_school: Escuela de música
           nightclub: Club nocturno
           nursing_home: Residencia para la tercera edad
-          parking: Aparcamiento
+          parking: Estacionamiento
           parking_entrance: Entrada de estacionamiento
-          parking_space: Estacionamiento
+          parking_space: Plaza de estacionamiento
           payment_terminal: Terminal de pago
           pharmacy: Farmacia
-          place_of_worship: Templo
+          place_of_worship: Lugar de culto
           police: Policía
           post_box: Buzón
           post_office: Oficina de correos
           prison: Prisión
-          pub: Pub
+          pub: Taberna
           public_bath: Baño público
           public_bookcase: Biblioteca libre
           public_building: Edificio público
@@ -854,7 +860,7 @@ es:
           aboriginal_lands: Tierras aborígenes
           administrative: Frontera administrativa
           census: Límite de censo
-          national_park: Parque Nacional
+          national_park: Parque nacional
           political: Límite electoral
           protected_area: Área protegida
           "yes": Límite
@@ -872,10 +878,10 @@ es:
           bungalow: Bungaló
           cabin: Cabaña
           chapel: Capilla
-          church: Edificio de la iglesia
+          church: Edificio de iglesia
           civic: Edificio cívico
-          college: Edificio educativo superior no universitario
-          commercial: Edificio de oficinas
+          college: Edificio de institución educativa
+          commercial: Edificio de comercios
           construction: Edificio en construcción
           detached: Casa independiente
           dormitory: Residencia de estudiantes
@@ -887,12 +893,12 @@ es:
           greenhouse: Invernadero
           hangar: Hangar
           hospital: Edificio hospitalario
-          hotel: Edificio del hotel
+          hotel: Edificio de hotel
           house: Casa
           houseboat: Casa flotante
           hut: Choza
           industrial: Edificio industrial
-          kindergarten: Edificio de jardín de infantes
+          kindergarten: Edificio de guardería
           manufacture: Edificio de manufactura
           office: Edificio de oficinas
           public: Edificio público
@@ -904,13 +910,13 @@ es:
           semidetached_house: Casa adosada
           service: Edificio de servicios
           shed: Cobertizo
-          stable: Establo para caballos
+          stable: Establo
           static_caravan: Caravana
-          temple: Edificio del templo
+          temple: Edificio de templo
           terrace: Edificio terraza
-          train_station: Edificio de la estación de tren
-          university: Edificio universitario
-          warehouse: Almacén
+          train_station: Edificio de estación de tren
+          university: Edificio de universidad
+          warehouse: Depósito
           "yes": Edificio
         club:
           scout: Base del grupo de exploradores
@@ -934,7 +940,7 @@ es:
           painter: Pintor
           photographer: Fotógrafo
           plumber: Plomero/fontanero
-          roofer: Techador/Techista
+          roofer: Techador
           sawmill: Aserradero
           shoemaker: Zapatero
           stonemason: Albañil
@@ -956,21 +962,21 @@ es:
           suction_point: Punto de succión de emergencia
           water_tank: Tanque de agua de emergencia
         highway:
-          abandoned: Calle o carretera abandonada
-          bridleway: Camino prioritario para peatones y caballos
+          abandoned: Carretera abandonada
+          bridleway: Vía ecuestre
           bus_guideway: Canal guiado de autobuses
           bus_stop: Parada de autobuses
-          construction: Calle o carretera en construcción
+          construction: Carretera en construcción
           corridor: Corredor
           crossing: Cruce
-          cycleway: Bicisenda
+          cycleway: Ciclovía
           elevator: Ascensor
           emergency_access_point: Acceso de emergencia
-          emergency_bay: Apartadero de emergencia
+          emergency_bay: Bahía de emergencia
           footway: Sendero
           ford: Vado
           give_way: Señal de ceda el paso
-          living_street: Calle residencial
+          living_street: Calle viva
           milestone: Hito
           motorway: Autovía
           motorway_junction: Cruce de autovías
@@ -978,34 +984,34 @@ es:
           passing_place: Lugar de paso
           path: Camino
           pedestrian: Vía peatonal
-          platform: Plataforma
-          primary: Carretera primaria
-          primary_link: Carretera primaria
+          platform: Apeadero
+          primary: a primaria
+          primary_link: Enlace a vía primaria
           proposed: Vía en proyecto
           raceway: Circuito de carreras
-          residential: Calle
+          residential: Calle residencial
           rest_area: Área de descanso
-          road: Carretera
-          secondary: Carretera secundaria
-          secondary_link: Carretera secundaria
+          road: Vía (genérico)
+          secondary: a secundaria
+          secondary_link: Enlace a vía secundaria
           service: Vía de servicio
           services: Servicios carreteros
-          speed_camera: Radar
+          speed_camera: Cámara de tráfico
           steps: Escaleras
           stop: Señal de alto
           street_lamp: Farola
-          tertiary: Carretera terciaria
-          tertiary_link: Carretera terciaria
+          tertiary: a terciaria
+          tertiary_link: Enlace a vía terciaria
           track: Pista
           traffic_mirror: Espejo de tráfico
           traffic_signals: Señales de tráfico
           trailhead: Inicio del sendero
           trunk: Vía troncal
-          trunk_link: Enlace de vía rápida
-          turning_circle: Radio de giro
+          trunk_link: Enlace a vía troncal
+          turning_circle: Rotonda
           turning_loop: Bucle de giro
-          unclassified: Carretera sin clasificar
-          "yes": Camino
+          unclassified: Vía de menor nivel
+          "yes": Vía (genérico)
         historic:
           aircraft: Avión histórico
           archaeological_site: Yacimiento arqueológico
@@ -1031,27 +1037,27 @@ es:
           mine_shaft: Pozo minero
           monument: Monumento
           railway: Ferrocarril histórico
-          roman_road: Calzada romana
+          roman_road: Calle romana
           ruins: Ruinas
           rune_stone: Piedra rúnica
           stone: Piedra
           tomb: Tumba
           tower: Torre
           wayside_chapel: Capilla al borde del camino
-          wayside_cross: Crucero
-          wayside_shrine: Sepulcro
+          wayside_cross: Cruz al borde del camino
+          wayside_shrine: Santuario al borde de camino
           wreck: Pecio
           "yes": Sitio histórico
         junction:
           "yes": Intersección
         landuse:
-          allotments: Huertos
+          allotments: Parcelas
           aquaculture: Acuicultura
           basin: Cuenca
-          brownfield: Solar vacante
+          brownfield: Terreno baldío
           cemetery: Cementerio
           commercial: Área comercial
-          conservation: Espacio natural protegido
+          conservation: Área de conservación
           construction: Área de construcción
           farmland: Tierra de labranza
           farmyard: Corral
@@ -1065,7 +1071,7 @@ es:
           military: Zona militar
           mine: Mina
           orchard: Huerto
-          plant_nursery: Vivero de plantas
+          plant_nursery: Vivero
           quarry: Cantera
           railway: Ferrocarril
           recreation_ground: Área recreacional
@@ -1081,7 +1087,7 @@ es:
           adult_gaming_centre: Centro de juegos para adultos
           amusement_arcade: Sala recreativa de videojuegos
           bandstand: Quiosco de música
-          beach_resort: Complejo en la playa
+          beach_resort: Complejo turístico en playa
           bird_hide: Observatorio de aves
           bleachers: Gradas
           bowling_alley: Pista de bolos
@@ -1091,7 +1097,7 @@ es:
           firepit: Foso de fuego
           fishing: Área de pesca
           fitness_centre: Gimnasio (fitness)
-          fitness_station: Gimnasio
+          fitness_station: Estación de fitness
           garden: Jardín
           golf_course: Campo de golf
           horse_riding: Centro ecuestre
@@ -1102,10 +1108,10 @@ es:
           outdoor_seating: Asientos al aire libre
           park: Parque
           picnic_table: Mesa de picnic
-          pitch: Cancha deportiva
+          pitch: Cancha de deportes
           playground: Área de juegos
-          recreation_ground: Área recreativa
-          resort: Centro turístico
+          recreation_ground: Terreno recreativo
+          resort: Complejo turístico
           sauna: Sauna
           slipway: Grada
           sports_centre: Centro deportivo
@@ -1115,7 +1121,7 @@ es:
           water_park: Parque acuático
           "yes": Ocio
         man_made:
-          adit: Entrada a galería
+          adit: Entrada a mina
           advertising: Publicidad
           antenna: Antena
           avalanche_protection: Protección contra avalanchas
@@ -1134,7 +1140,7 @@ es:
           dolphin: Poste de amarre
           dyke: Dique
           embankment: Terraplén
-          flagpole: Asta de bandera
+          flagpole: Asta
           gasometer: Depósito de gas
           groyne: Espigón
           kiln: Horno
@@ -1143,12 +1149,12 @@ es:
           mast: Mástil
           mine: Mina
           mineshaft: Pozo minero
-          monitoring_station: Estación de monitorización
+          monitoring_station: Estación de monitoreo
           petroleum_well: Pozo petrolífero
           pier: Muelle
           pipeline: Tubería
           pumping_station: Estación de bombeo
-          reservoir_covered: Depósito cubierto
+          reservoir_covered: Embalse cubierto
           silo: Silo
           snow_cannon: Cañón de nieve
           snow_fence: Barrera anti avalanchas de nieve
@@ -1187,7 +1193,7 @@ es:
           coastline: Costa
           crater: Cráter
           dune: Duna
-          fell: Monte
+          fell: Braña
           fjord: Fiordo
           forest: Bosque
           geyser: Géiser
@@ -1200,7 +1206,7 @@ es:
           isthmus: Istmo
           land: Tierra
           marsh: Marisma
-          moor: Páramo
+          moor: Landa
           mud: Lodo
           peak: Pico
           peninsula: Península
@@ -1288,7 +1294,7 @@ es:
           disused: Ferrocarril en desuso
           funicular: Vía de funicular
           halt: Apeadero
-          junction: Encrucijada de vías ferroviarias
+          junction: Cruce de vías ferroviarias
           level_crossing: Paso a nivel
           light_rail: Metro ligero
           miniature: Ferrocarril en miniatura
@@ -1302,7 +1308,7 @@ es:
           station: Estación de trenes
           stop: Parada de tren
           subway: Metro
-          subway_entrance: Boca de metro
+          subway_entrance: Entrada de metro
           switch: Aguja de ferrocarril
           tram: Ruta de tranvía
           tram_stop: Parada de tranvía
@@ -1328,7 +1334,7 @@ es:
           butcher: Carnicería
           car: Concesionario
           car_parts: Repuestos de automóvil
-          car_repair: Taller mecánico
+          car_repair: Taller automotriz
           carpet: Tienda de alfombras
           charity: Tienda benéfica
           cheese: Tienda de quesos
@@ -1339,13 +1345,13 @@ es:
           computer: Tienda de informática
           confectionery: Confitería
           convenience: Pequeño supermercado
-          copyshop: Copistería
+          copyshop: Centro de copiado
           cosmetics: Tienda de cosméticos
           craft: Tienda de suministros de artesanía
           curtain: Tienda de cortinas
           dairy: Tienda de lácteos
           deli: Delicatessen
-          department_store: Grandes almacenes
+          department_store: Tienda por departamentos
           discount: Tienda de descuento
           doityourself: Tienda de bricolaje
           dry_cleaning: Tintorería
@@ -1410,13 +1416,13 @@ es:
           shoes: Zapatería
           sports: Tienda de deportes
           stationery: Papelería
-          storage_rental: Trasteros de alquiler
+          storage_rental: Alquiler de almacenamiento
           supermarket: Supermercado
           tailor: Sastre
           tattoo: Estudio de tatuajes
           tea: Tienda de té
           ticket: Tienda de Tickets
-          tobacco: Tabaquería. Estanco
+          tobacco: Tabaquería
           toys: Juguetería
           travel_agency: Agencia de viajes
           tyres: Tienda de neumáticos
@@ -1435,8 +1441,8 @@ es:
           bed_and_breakfast: Alojamiento y desayuno (B&B)
           cabin: Cabaña Turística
           camp_pitch: Lugar para acampar
-          camp_site: Campamento/camping
-          caravan_site: Camping para caravanas
+          camp_site: Área de acampada, camping
+          caravan_site: Sitio para caravanas
           chalet: Chalet
           gallery: Galería
           guest_house: Pensión
@@ -1452,7 +1458,7 @@ es:
           zoo: Zoológico
         tunnel:
           building_passage: Pasaje de edificio
-          culvert: Alcantarilla
+          culvert: Drenaje
           "yes": Túnel
         waterway:
           artificial: Vía fluvial artificial
@@ -1460,7 +1466,7 @@ es:
           canal: Canal
           dam: Presa
           derelict_canal: Canal abandonado
-          ditch: Acequia
+          ditch: Zanja
           dock: Muelle
           drain: Desagüe
           lock: Esclusa
@@ -1478,7 +1484,7 @@ es:
         level3: Límite regional
         level4: Límite de estado o provincia
         level5: Límite de región
-        level6: Límite de provincia
+        level6: Límite de condado
         level7: Límite municipal
         level8: Límite de ciudad
         level9: Límite de pueblo
@@ -1486,7 +1492,7 @@ es:
         level11: Límite vecinal
       types:
         cities: Ciudades
-        towns: Municipios
+        towns: Pueblos
         places: Lugares
     results:
       no_results: No se han encontrado resultados
@@ -1504,76 +1510,77 @@ es:
       user_not_found: El usuario no existe
       issues_not_found: No se encontraron incidencias de este tipo
       status: Estado
-      reports: Reportes
+      reports: Denuncias
       last_updated: Última actualización
-      link_to_reports: Ver informes
+      last_updated_time_ago_user_html: '%{time_ago} por %{user}'
+      link_to_reports: Ver denuncias
       reports_count:
-        one: 1 informe
-        other: '%{count} informes'
+        one: '%{count} reporte'
+        other: '%{count} reportes'
       reported_item: Elemento denunciado
       states:
         ignored: Ignorado
         open: Abierto
         resolved: Resuelto
     show:
-      title: '%{status} Informe n.º %{issue_id}'
+      title: '%{status} Incidencia n.º %{issue_id}'
       reports:
-        zero: Sin informes
-        one: 1 informe
-        other: '%{count} informes'
-      report_created_at: Reportado por primera vez el %{datetime}
+        one: '%{count} reporte'
+        other: '%{count} reportes'
+      no_reports: Sin reportes
+      report_created_at: Denunciado por primera vez el %{datetime}
       last_resolved_at: Resuelto por última vez el %{datetime}
       last_updated_at: Actualizado por última vez el %{datetime} por %{displayname}
       resolve: Resolver
       ignore: Ignorar
       reopen: Reabrir
-      reports_of_this_issue: Informes de este problema
-      read_reports: Leer informes
-      new_reports: Informes nuevos
+      reports_of_this_issue: Denuncias de esta incidencia
+      read_reports: Leer denuncias
+      new_reports: Denuncias nuevas
       other_issues_against_this_user: Otras incidencias en contra de este usuario
       no_other_issues: No hay otras incidencias en contra de este usuario.
-      comments_on_this_issue: Comentarios sobre este informe
+      comments_on_this_issue: Comentarios sobre esta incidencia
     resolve:
-      resolved: El estado de la incidencia se ha establecido en 'Resuelto'
+      resolved: El estado de la incidencia se ha establecido a 'Resuelto'
     ignore:
-      ignored: El estado de la incidencia se ha establecido en 'Ignorado'
+      ignored: El estado de la incidencia se ha establecido a 'Ignorado'
     reopen:
-      reopened: El estado de la incidencia se ha establecido en 'Abierto'.
+      reopened: El estado de la incidencia se ha establecido a 'Abierto'.
     comments:
       comment_from_html: Comentario de %{user_link} en %{comment_created_at}
-      reassign_param: ¿Quiere reasignar el informe?
+      reassign_param: ¿Quiere reasignar la incidencia?
     reports:
-      reported_by_html: Reportado como %{category} por %{user} en %{updated_at}
+      reported_by_html: Denunciado como %{category} por %{user} en %{updated_at}
     helper:
       reportable_title:
         diary_comment: '%{entry_title}, comentario #%{comment_id}'
         note: Nota n.º %{note_id}
   issue_comments:
     create:
-      comment_created: Su comentario ha sido creado con éxito
-      issue_reassigned: Su comentario fue creado y el tema fue reasignado
+      comment_created: Tu comentario ha sido creado con éxito
+      issue_reassigned: Tu comentario fue creado y la incidencia fue reasignada
   reports:
     new:
-      title_html: Reportar %{link}
-      missing_params: No se puede crear un informe nuevo
+      title_html: Denunciar %{link}
+      missing_params: No se puede crear una denuncia nueva
       disclaimer:
-        intro: 'Antes de enviar su denuncia a los moderadores del sitio, asegúrese
+        intro: 'Antes de enviar tu denuncia a los moderadores del sitio, asegúrate
           de que:'
         not_just_mistake: Está seguro de que el problema no es sólo un error
-        unable_to_fix: No puede solucionar el problema usted mismo o con la ayuda
-          de otros miembros de la comunidad.
-        resolve_with_user: Ya ha intentado resolver el problema con el usuario en
+        unable_to_fix: No puedes corregir el problema tu mismo o con la ayuda de otros
+          miembros de la comunidad.
+        resolve_with_user: Ya has intentado resolver el problema con el usuario en
           cuestión.
       categories:
         diary_entry:
-          spam_label: Esta entrada del diario es/contiene spam
-          offensive_label: Esta entrada del diario es obscena/ofensiva
-          threat_label: Esta entrada del diario contiene una amenaza
+          spam_label: Esta entrada de diario es/contiene spam
+          offensive_label: Esta entrada de diario es obscena/ofensiva
+          threat_label: Esta entrada de diario contiene una amenaza
           other_label: Otro
         diary_comment:
-          spam_label: Este comentario del diario es/contiene spam
-          offensive_label: Este comentario del diario es obsceno/ofensivo
-          threat_label: Este comentario del diario contiene una amenaza
+          spam_label: Este comentario de diario es/contiene spam
+          offensive_label: Este comentario de diario es obsceno/ofensivo
+          threat_label: Este comentario de diario contiene una amenaza
           other_label: Otro
         user:
           spam_label: Este perfil de usuario es/contiene spam
@@ -1587,16 +1594,19 @@ es:
           abusive_label: Esta nota es abusiva
           other_label: Otro
     create:
-      successful_report: Su denuncia ha sido registrada con éxito
+      successful_report: Tu denuncia ha sido registrada con éxito
       provide_details: Proporcione los detalles requeridos
   layouts:
+    project_name:
+      title: OpenStreetMap
+      h1: OpenStreetMap
     logo:
       alt_text: Logo de OpenStreetMap
     home: Inicio
     logout: Cerrar sesión
     log_in: Iniciar sesión
     sign_up: Registrarse
-    start_mapping: Comenzar a cartografiar
+    start_mapping: Comenzar a mapear
     edit: Editar
     history: Historial
     export: Exportar
@@ -1619,7 +1629,7 @@ es:
     partners_fastly: Fastly
     partners_bytemark: Bytemark Hosting
     partners_partners: socios
-    tou: Términos de uso
+    tou: Términos de Uso
     osm_offline: La base de datos de OpenStreetMap no está disponible en estos momentos
       debido a trabajos de mantenimiento.
     osm_read_only: La base de datos de OpenStreetMap se encuentra en modo de sólo
@@ -1633,7 +1643,7 @@ es:
     community_blogs: Blogs de la comunidad
     community_blogs_title: Blogs de miembros de la comunidad de OpenStreetMap
     make_a_donation:
-      title: Apoye a OpenStreetMap con una donación monetaria
+      title: Apoya a OpenStreetMap con una donación monetaria
       text: Hacer una donación
     learn_more: Más información
     more: Más
@@ -1641,36 +1651,35 @@ es:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user} ha comentado en una entrada de diario'
       hi: 'Hola, %{to_user}:'
-      header: '%{from_user} ha comentado sobre en la entrada de diario con el asunto
-        %{subject}:'
-      header_html: '%{from_user} ha comentado la entrada de diario con el asunto %{subject}:'
-      footer: También puede leer el comentario en %{readurl} y puede comentar en %{commenturl}
-        o responder en %{replyurl}
-      footer_html: También puede leer el comentario en %{readurl} y puede comentar
+      header: '%{from_user} ha comentado en la entrada de diario con asunto %{subject}:'
+      header_html: '%{from_user} ha comentado la entrada de diario con asunto %{subject}:'
+      footer: También puedes leer el comentario en %{readurl} y puedes comentar en
+        %{commenturl} o responder en %{replyurl}
+      footer_html: También puedes leer el comentario en %{readurl} y puedes comentar
         en %{commenturl} o responder en %{replyurl}
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Hola %{to_user},
-      header: '%{from_user} le ha enviado un mensaje a través de OpenStreetMap con
+      header: '%{from_user} te ha enviado un mensaje a través de OpenStreetMap con
         el asunto %{subject}:'
       header_html: '%{from_user} te ha enviado un mensaje a través de OpenStreetMap
-        con el asunto %{subject}:'
-      footer: También puede leer el mensaje en %{readurl} y enviar un mensaje al autor
+        con asunto %{subject}:'
+      footer: También puedes leer el mensaje en %{readurl} y enviar un mensaje al
+        autor en %{replyurl}
+      footer_html: También puedes leer el mensaje en %{readurl} y puede responder
         en %{replyurl}
-      footer_html: También puede leer el mensaje en %{readurl} y puede responder en
-        %{replyurl}
     friendship_notification:
       hi: Hola %{to_user},
-      subject: '[OpenStreetMap] %{user} le ha añadido como amigo'
-      had_added_you: '%{user} le ha añadido como amigo en OpenStreetMap'
-      see_their_profile: Puede ver su perfil en %{userurl}.
-      see_their_profile_html: Puede ver su perfil en %{userurl}.
-      befriend_them: También puede añadirle como amigo en %{befriendurl}.
-      befriend_them_html: También puede añadirle como amigo en %{befriendurl}.
+      subject: '[OpenStreetMap] %{user} te ha añadido como amigo'
+      had_added_you: '%{user} te ha añadido como amigo en OpenStreetMap'
+      see_their_profile: Puedes ver tu perfil en %{userurl}.
+      see_their_profile_html: Puedes ver su perfil en %{userurl}.
+      befriend_them: También puedes añadirlo como amigo en %{befriendurl}.
+      befriend_them_html: También puedes añadirlo como amigo en %{befriendurl}.
     gpx_description:
-      description_with_tags_html: 'Parece que el archivo GPX %{trace_name} con la
+      description_with_tags_html: 'Parece que tu archivo GPX %{trace_name} con la
         descripción %{trace_description} y las etiquetas siguientes: %{tags}'
-      description_with_no_tags_html: Parece que el archivo GPX %{trace_name} con la
+      description_with_no_tags_html: Parece que tu archivo GPX %{trace_name} con la
         descripción %{trace_description} sin etiquetas
     gpx_failure:
       hi: Hola %{to_user},
@@ -1685,102 +1694,102 @@ es:
         other: se cargaron correctamente, con %{trace_points} de %{count} puntos posibles.
       subject: '[OpenStreetMap] Éxito al importar GPX'
     signup_confirm:
-      subject: '[OpenStreetMap] OpenStreetMap le da la bienvenida'
+      subject: '[OpenStreetMap] OpenStreetMap te da la bienvenida'
       greeting: ¡Hola!
       created: Alguien (probablemente tú) acaba de crear una cuenta en %{site_url}.
       confirm: 'Antes de hacer cualquier otra cosa, debemos confirmar que esta solicitud
-        proviene de usted, por lo que si así fue, haga clic en el enlace a continuación
-        para confirmar su cuenta:'
-      welcome: Después de confirmar su cuenta, nosotros le proporcionaremos alguna
-        información adicional para ayudarle a empezar.
+        proviene de ti, por lo que si así fue, haz clic en el enlace a continuación
+        para confirmar tu cuenta:'
+      welcome: Después de confirmar tu cuenta, nosotros te proporcionaremos alguna
+        información adicional para ayudarte a empezar.
     email_confirm:
-      subject: '[OpenStreetMap] Confirme su dirección de correo electrónico'
+      subject: '[OpenStreetMap] Confirma tu dirección de correo electrónico'
       greeting: Hola,
-      hopefully_you: Alguien (esperemos que usted) desea cambiar su dirección de correo
-        electrónico a través de %{server_url} a %{new_address}.
-      click_the_link: Si es usted, haga clic en el enlace de abajo para confirmar
-        el cambio.
+      hopefully_you: Alguien (esperemos que seas tu) desea cambiar tu dirección de
+        correo electrónico a través de %{server_url} a %{new_address}.
+      click_the_link: Si eres tú, haz clic en el enlace de abajo para confirmar el
+        cambio.
     lost_password:
       subject: '[OpenStreetMap] Petición para restablecer la contraseña'
       greeting: Hola,
-      hopefully_you: Alguien (posiblemente usted) ha solicitado que se restablezca
-        la contraseña en la cuenta de openstreetmap.org de esta dirección de correo
-        electrónico.
-      click_the_link: Si es usted, haga clic en el enlace a continuación para restablecer
-        su contraseña.
+      hopefully_you: Alguien (posiblemente tu) ha solicitado que se restablezca la
+        contraseña de la cuenta en openstreetmap.org de esta dirección de correo electrónico.
+      click_the_link: Si eres tú, haga clic en el enlace a continuación para restablecer
+        tu contraseña.
     note_comment_notification:
       anonymous: Un usuario anónimo
       greeting: Hola,
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} ha comentado en una de sus notas'
+        subject_own: '[OpenStreetMap] %{commenter} ha comentado en una de tus notas'
         subject_other: '[OpenStreetMap] %{commenter} ha comentado en una nota que
-          le interesa'
-        your_note: '%{commenter} ha dejado un comentario en una de sus notas del mapa
+          te interesa'
+        your_note: '%{commenter} ha dejado un comentario en una de tus notas del mapa
           cerca de %{place}.'
-        your_note_html: '%{commenter} ha dejado un comentario en una de sus notas
+        your_note_html: '%{commenter} ha dejado un comentario en una de tus notas
           de mapa cerca de %{place}'
         commented_note: '%{commenter} ha dejado un comentario en una nota del mapa
-          que ha comentado. La nota está cerca de %{place}.'
+          que has comentado. La nota está cerca de %{place}.'
         commented_note_html: '%{commenter} ha dejado un comentario en una nota del
-          mapa que usted ha comentado. La nota está cerca de %{place}.'
+          mapa que has comentado. La nota está cerca de %{place}.'
       closed:
-        subject_own: '[OpenStreetMap] %{commenter} ha resuelto una de sus notas'
-        subject_other: '[OpenStreetMap] %{commenter} ha resuelto una nota que le interesa'
-        your_note: '%{commenter} ha resuelto una de sus notas del mapa cerca de %{place}.'
-        your_note_html: '%{commenter} ha resuelto una de sus notas del mapa cerca
+        subject_own: '[OpenStreetMap] %{commenter} ha resuelto una de tus notas'
+        subject_other: '[OpenStreetMap] %{commenter} ha resuelto una nota que te interesa'
+        your_note: '%{commenter} ha resuelto una de tus notas del mapa cerca de %{place}.'
+        your_note_html: '%{commenter} ha resuelto una de tus notas del mapa cerca
           de %{place}.'
-        commented_note: '%{commenter} ha resuelto una nota de mapa que ha comentado.
+        commented_note: '%{commenter} ha resuelto una nota de mapa que has comentado.
           La nota está cerca de %{place}.'
         commented_note_html: '%{commenter} ha resuelto una nota del mapa en la que
-          usted ha comentado. La nota está cerca de %{place}.'
+          tu ha comentado. La nota está cerca de %{place}.'
       reopened:
-        subject_own: '[OpenStreetMap] %{commenter} ha reactivado una de sus notas'
+        subject_own: '[OpenStreetMap] %{commenter} ha reactivado una de tus notas'
         subject_other: '[OpenStreetMap] %{commenter} ha reactivado una nota que te
           interesa'
-        your_note: '%{commenter} ha reactivado una de sus notas del mapa cerca de
+        your_note: '%{commenter} ha reactivado una de tus notas del mapa cerca de
           %{place}.'
-        your_note_html: '%{commenter} ha reactivado una de sus notas del mapa cerca
+        your_note_html: '%{commenter} ha reactivado una de tus notas del mapa cerca
           de %{place}.'
-        commented_note: '%{commenter} ha reactivado una nota de mapa que ha comentado.
+        commented_note: '%{commenter} ha reactivado una nota de mapa que has comentado.
           La nota está cerca de %{place}.'
         commented_note_html: '%{commenter} ha reactivado un nota del mapa en la que
-          usted ha comentado. La nota está cerca de %{place}.'
+          has comentado. La nota está cerca de %{place}.'
       details: Más detalles acerca de la nota pueden encontrarse en %{url}.
-      details_html: Puede encontrar más detalles acerca de la nota en %{url}.
+      details_html: Puedes encontrar más detalles acerca de la nota en %{url}.
     changeset_comment_notification:
       hi: Hola %{to_user},
       greeting: Hola,
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} ha comentado uno de sus conjuntos
+        subject_own: '[OpenStreetMap] %{commenter} ha comentado uno de tus conjuntos
           de cambios'
         subject_other: '[OpenStreetMap] %{commenter} ha comentado un conjunto de cambios
-          que le interesa'
-        your_changeset: '%{commenter} dejó un comentario el %{time} en uno de sus
+          que te interesa'
+        your_changeset: '%{commenter} dejó un comentario el %{time} en uno de tus
           conjuntos de cambios'
         your_changeset_html: '%{commenter} dejó un comentario el %{time} en uno de
-          sus conjuntos de cambios'
+          tus conjuntos de cambios'
         commented_changeset: '%{commenter} dejó un comentario el %{time} en un conjunto
-          de cambios que está siguiendo, creado por %{changeset_author}'
+          de cambios que estás siguiendo, creado por %{changeset_author}'
         commented_changeset_html: '%{commenter} dejó un comentario el %{time} en un
-          conjunto de cambios que está siguiendo, creado por %{changeset_author}'
+          conjunto de cambios que estás siguiendo, creado por %{changeset_author}'
         partial_changeset_with_comment: con el comentario '%{changeset_comment}'
         partial_changeset_with_comment_html: con el comentario '%{changeset_comment}'
         partial_changeset_without_comment: sin comentarios
-      details: Puede encontrar más detalles sobre el conjunto de cambios en %{url}.
-      details_html: Puede encontrar más detalles sobre el conjunto de cambios en %{url}.
+      details: Puedes encontrar más detalles sobre el conjunto de cambios en %{url}.
+      details_html: Puedes encontrar más detalles sobre el conjunto de cambios en
+        %{url}.
       unsubscribe: Para cancelar la suscripción a las actualizaciones de este conjunto
-        de cambios, visite %{url} y haga clic en "Cancelar suscripción".
+        de cambios, visita %{url} y haz clic en "Cancelar suscripción".
       unsubscribe_html: Para darte de baja de las actualizaciones de este conjunto
-        de cambios, visita %{url} y haz clic en "darse de baja".
+        de cambios, visita %{url} y haz clic en "Cancelas subscripción".
   confirmations:
     confirm:
-      heading: Revise su correo electrónico!
-      introduction_1: Le hemos enviado un correo electrónico de confirmación.
-      introduction_2: Confirme su cuenta haciendo clic en el enlace del correo electrónico
-        y podrá comenzar a mapear.
-      press confirm button: Pulse botón de confirmación de abajo para activar su cuenta.
+      heading: ¡Revisa tu correo electrónico!
+      introduction_1: Te hemos enviado un correo electrónico de confirmación.
+      introduction_2: Confirma tu cuenta haciendo clic en el enlace del correo electrónico
+        y podrás comenzar a mapear.
+      press confirm button: Pulsa botón de confirmación de abajo para activar tu cuenta.
       button: Confirmar
-      success: ¡Cuenta confirmada, gracias por registrarse!
+      success: Cuenta confirmada, !gracias por registrarte!
       already active: Esta cuenta ya ha sido confirmada.
       unknown token: Ese código de confirmación ha caducado o no existe.
       resend_html: Si necesita que le reenviemos el mensaje de confirmación, %{reconfirm_link}.
@@ -1789,25 +1798,24 @@ es:
       failure: No se ha encontrado el usuario %{name}
     confirm_email:
       heading: Confirmar el cambio de dirección de correo electrónico
-      press confirm button: Pulse el botón de confirmación de debajo para confirmar
-        su nueva dirección de correo electrónico.
+      press confirm button: Pulsa el botón de confirmación de debajo para confirmar
+        tu nueva dirección de correo electrónico.
       button: Confirmar
-      success: Se confirmó el cambio de dirección de correo electrónico.
-      failure: Ya se ha confirmado una dirección de correo electrónico con esta credencial
-        de autenticación.
+      success: ¡Se confirmó el cambio de dirección de correo electrónico!
+      failure: Ya se ha confirmado una dirección de correo electrónico con este token.
       unknown_token: Ese código de confirmación ha caducado o no existe.
     resend_success_flash:
-      confirmation_sent: Hemos enviado una nueva nota a %{email} y tan pronto como
-        confirmes tu cuenta podrás obtener mapeo.
+      confirmation_sent: Hemos enviado un nuevo mensaje a %{email} y tan pronto como
+        confirmes tu cuenta podrás comenzar a mapear.
       whitelist: Si usas un sistema antispam que envía solicitudes de confirmación
         entonces por favor asegúrate de incluir en la lista blanca %{sender}, ya que
-        no podemos responder ninguna solicitud de confirmación.
+        no podemos responder solicitud de confirmación alguna.
   messages:
     inbox:
       title: Buzón de entrada
       my_inbox: Mi buzón
       my_outbox: Mi buzón de salida
-      messages: Tiene %{new_messages} y %{old_messages}
+      messages: Tienes %{new_messages} y %{old_messages}
       new_messages:
         one: '%{count} nuevo mensaje'
         other: '%{count} nuevos mensajes'
@@ -1817,8 +1825,8 @@ es:
       from: De
       subject: Asunto
       date: Fecha
-      no_messages_yet_html: Aún no tiene mensajes. ¿Por qué no ponerse en contacto
-        con algunos de los %{people_mapping_nearby_link}?
+      no_messages_yet_html: Aún no tienes mensajes. ¿Por qué no ponerte en contacto
+        con algunas de las %{people_mapping_nearby_link}?
       people_mapping_nearby: gente mapeando cerca
     message_summary:
       unread_button: Marcar como no leído
@@ -1831,12 +1839,12 @@ es:
       back_to_inbox: Regresar a la bandeja de entrada
     create:
       message_sent: Mensaje enviado
-      limit_exceeded: Ha enviado muchos mensajes recientemente. Espere un poco antes
+      limit_exceeded: Has enviado muchos mensajes recientemente. Espera un poco antes
         de intentar enviar más.
     no_such_message:
       title: Este mensaje no existe.
       heading: Este mensaje no existe.
-      body: Lo sentimos, no hay ningún mensaje con este identificador.
+      body: Lo sentimos, no hay mensaje alguno con este identificador.
     outbox:
       title: Bandeja de salida
       my_inbox: Mi Bandeja de entrada
@@ -1844,53 +1852,51 @@ es:
       messages:
         one: Tiene %{count} mensaje enviado
         other: Tiene %{count} mensajes enviados
-      to: A
+      to: Para
       subject: Asunto
       date: Fecha
-      no_sent_messages_html: Aún no tiene mensajes enviados. ¿Por qué no ponerse en
-        contacto con algunos de los %{people_mapping_nearby_link}?
-      people_mapping_nearby: gente mapeando cerca
+      no_sent_messages_html: Aún no tienes mensajes enviados. ¿Por qué no ponerte
+        en contacto con algunas de las %{people_mapping_nearby_link}?
+      people_mapping_nearby: personas mapeando cerca
     reply:
-      wrong_user: |-
-        Está conectado como `%{user}' pero el mensaje que quiere responder no se ha enviado a dicho usuario. Por favor, ingrese con el usuario correcto para responder.
-
-        Ha iniciado sesión como `%{user}' pero el mensaje que quiere responder no se envió a ese usuario. Inicie sesión con el usuario correcto para responder.
+      wrong_user: Estás conectado como `%{user}' pero el mensaje que quieres responder
+        no se ha enviado a dicho usuario. Por favor, inicia sesión con el usuario
+        correcto para responder.
     show:
       title: Leer mensaje
       reply_button: Responder
       unread_button: Marcar como no leído
       destroy_button: Eliminar
       back: Volver
-      wrong_user: |-
-        Está conectado como `%{user}' pero el mensaje que quiere leer no se ha enviado por o a dicho usuario. Por favor, ingrese con el usuario correcto para ver el mensaje.
-
-        Ha iniciado sesión como `%{user}' pero el mensaje que quiere leer no fue enviado por o a ese usuario. Inicie sesión con el usuario correcto para poder leerlo.
+      wrong_user: Estás conectado como `%{user}' pero el mensaje que quieres leer
+        no se ha enviado por o a dicho usuario. Por favor, inicia sesión con el usuario
+        correcto para leer el mensaje.
     sent_message_summary:
       destroy_button: Eliminar
     mark:
       as_read: Mensaje marcado como leído
       as_unread: Mensaje marcado como no leído
     destroy:
-      destroyed: Mensaje borrado
+      destroyed: Mensaje eliminado
   passwords:
     lost_password:
       title: Contraseña perdida
       heading: ¿Contraseña olvidada?
       email address: 'Dirección de correo electrónico:'
       new password button: Restablecer contraseña
-      help_text: Escriba el correo electrónico con el que se registró. Le enviaremos
-        un vínculo a esa dirección, que podrá utilizar para restablecer su contraseña.
-      notice email on way: Sentimos que la haya perdido :-( pero ya va de camino un
-        correo electrónico que le servirá para restablecer su contraseña enseguida.
+      help_text: Escribe el correo electrónico con el que se registró. Te enviaremos
+        un enlace a esa dirección, que podrás utilizar para restablecer su contraseña.
+      notice email on way: Sentimos que la hayas perdido :-( pero ya va de camino
+        un correo electrónico que te servirá para restablecer su contraseña enseguida.
       notice email cannot find: Lo sentimos, no se pudo encontrar esa dirección de
         correo electrónico.
     reset_password:
       title: Restablecer contraseña
       heading: Restablecer contraseña para %{user}
       reset: Restablecer contraseña
-      flash changed: Su contraseña ha sido cambiada.
-      flash token bad: No se ha encontrado este elemento, ¿Quizá debería comprobar
-        la URL?
+      flash changed: Tu contraseña ha sido cambiada.
+      flash token bad: No se ha encontrado este token, ¿Quizá deberías comprobar la
+        URL?
   preferences:
     show:
       title: Mis preferencias
@@ -1913,17 +1919,18 @@ es:
       image: Imagen
       gravatar:
         gravatar: Usa Gravatar
+        link: https://wiki.openstreetmap.org/wiki/ES:Gravatar
         what_is_gravatar: ¿Qué es Gravatar?
         disabled: Gravatar se ha deshabilitado.
-        enabled: Se ha habilitado la visualización de su Gravatar.
+        enabled: Se ha habilitado la visualización de tu Gravatar.
       new image: Añadir una imagen
       keep image: Mantener la imagen actual
       delete image: Eliminar la imagen actual
       replace image: Reemplazar la imagen actual
       image size hint: (las imágenes cuadradas de al menos 100x100 funcionan mejor)
-      home location: Lugar de origen
-      no home location: No ha introducido su lugar de origen.
-      update home location on click: ¿Actualizar su lugar de origen cuando pulses
+      home location: Ubicación de casa
+      no home location: No has introducido tu ubicación de casa.
+      update home location on click: ¿Actualizar tu lugar de origen cuando hagas clic
         sobre el mapa?
     update:
       success: Perfil actualizado.
@@ -1936,12 +1943,12 @@ es:
       password: 'Contraseña:'
       openid_html: '%{logo} OpenID:'
       remember: Recordarme
-      lost password link: ¿Ha perdido su contraseña?
+      lost password link: ¿Has perdido su contraseña?
       login_button: Iniciar sesión
-      register now: Regístrese ahora
-      with external: 'O bien, utilice un servicio de terceros para acceder:'
-      no account: ¿No está registrado?
-      auth failure: Lo sentimos. No pude iniciar sesión con esos datos.
+      register now: Registrarse ahora
+      with external: 'O bien, utiliza un servicio de terceros para acceder:'
+      no account: ¿No estás registrado?
+      auth failure: Lo sentimos. No puede iniciar sesión con esos datos.
       openid_logo_alt: Inicia sesión con una OpenID
       auth_providers:
         openid:
@@ -1951,11 +1958,11 @@ es:
           title: Iniciar sesión con Google
           alt: Iniciar sesión con una OpenID de Google
         facebook:
-          title: Inicia sesión con Facebook
-          alt: Inicia sesión con una cuenta de Facebook
+          title: Iniciar sesión con Facebook
+          alt: Iniciar sesión con una cuenta de Facebook
         windowslive:
-          title: Inicia sesión con Windows Live
-          alt: Iniciar sesión con una cuenta de Windows Live
+          title: Iniciar sesión con Microsoft
+          alt: Iniciar sesión con una cuenta Microsoft
         github:
           title: Iniciar sesión con GitHub
           alt: Iniciar sesión con una cuenta de GitHub
@@ -1973,13 +1980,14 @@ es:
       heading: Cerrar sesión de OpenStreetMap
       logout_button: Cerrar sesión
     suspended_flash:
-      suspended: Lo sentimos, su cuenta ha sido suspendida debido a actividad sospechosa.
-      contact_support_html: Póngase en contacto con %{support_link} si desea discutir
+      suspended: Lo sentimos, tu cuenta ha sido suspendida debido a actividad sospechosa.
+      contact_support_html: Ponte en contacto con %{support_link} si deseas discutir
         sobre esto.
       support: el servicio técnico
   shared:
     markdown_help:
       heading_html: Procesado con %{kramdown_link}
+      kramdown: kramdown
       headings: Títulos
       heading: Título
       subheading: Subtítulo
@@ -1998,32 +2006,51 @@ es:
   site:
     about:
       next: Siguiente
+      heading_html: Contribuidores %{copyright}OpenStreetMap %{br}
       used_by_html: '%{name} proporciona datos de mapas para miles de sitios web,
         aplicaciones móviles y dispositivos de hardware'
-      lede_text: OpenStreetMap lo crea una gran comunidad de colaboradores que aportan
+      lede_text: OpenStreetMap lo crea una gran comunidad de mapeadores que aportan
         y mantienen datos sobre caminos, senderos, cafeterías, estaciones de ferrocarril
         y muchas cosas más a lo largo de todo el mundo.
       local_knowledge_title: Conocimiento local
       local_knowledge_html: OpenStreetMap valora mucho el conocimiento local. Los
-        colaboradores utilizan imágenes aéreas, dispositivos GPS, mapas y otras fuentes
-        de datos libres para verificar que los datos de OSM sean precisos y estén
-        actualizados.
+        colaboradores utilizan imágenes aéreas, dispositivos GPS y otras fuentes de
+        datos libres para verificar que los datos de OSM sean precisos y estén actualizados.
       community_driven_title: Impulsado por la comunidad
+      community_driven_1_html: "La comunidad de OpenStreetMap es diversa, apasionada
+        y crece cada día. \nNuestros colaboradores incluyen mapeadores entusiastas,
+        profesionales de los SIG, ingenieros asegurando \nel funcionamiento de los
+        servidores de OSM, personal humanitario que mapean las zonas afectadas por
+        desastres, \ny muchos más. \nPara obtener más información sobre la comunidad,
+        mira el %{osm_blog_link}, \n%{user_diaries_link}, %{community_blogs_link}
+        y el sitio web de %{osm_foundation_link}."
       community_driven_osm_blog: Blog de OpenStreetMap
+      community_driven_user_diaries: diarios de usuario
       community_driven_community_blogs: blogs comunitarios
       community_driven_osm_foundation: OSM Foundation
       open_data_title: Datos abiertos
-      open_data_1_html: 'OpenStreetMap es %{open_data}: puede usarlo libremente para
-        cualquier propósito siempre que dé crédito a OpenStreetMap y a sus colaboradores.
-        Si lo altera o se basa en sus datos de alguna manera, solo puede distribuir
-        el resultado con la misma licencia. Consulte la %{copyright_license_link}
+      open_data_1_html: 'OpenStreetMap es %{open_data}: puedes usarlo libremente para
+        cualquier propósito siempre que des crédito a OpenStreetMap y a sus colaboradores.
+        Si lo alteras o te basa en sus datos de alguna manera, solo puedes distribuir
+        el resultado con la misma licencia. Consulta la %{copyright_license_link}
         para obtener más detalles.'
       open_data_open_data: datos abiertos
       open_data_copyright_license: Página de derechos de autor y licencia
       legal_title: Legal
+      legal_1_1_html: "Este sitio y muchos otros servicios relacionados son operados
+        formalmente por la \n%{openstreetmap_foundation_link} (OSMF)  \nen nombre
+        de la comunidad. El uso de todos los servicios operados por el OSMF está sujeto
+        a nuestors %{terms_of_use_link}, %{aup_link} y nuestra %{privacy_policy_link}."
       legal_1_1_openstreetmap_foundation: Fundación OpenStreetMap
+      legal_1_1_terms_of_use: Términos de Uso
       legal_1_1_aup: Normativas de uso aceptable
       legal_1_1_privacy_policy: Normativa de privacidad
+      legal_2_1_html: Sí tienes alguna pregunta sobre licencias, derechos de autor
+        u otras cuestiones legales, por favor %{contact_the_osmf_link}.
+      legal_2_1_contact_the_osmf: contacta la OSMF
+      legal_2_2_html: OpenStreetMap, el logotipo de la lupa y el estado del mapa son
+        %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: marcas registradas de la OSMF
       partners_title: Socios
     copyright:
       foreign:
@@ -2033,100 +2060,196 @@ es:
         english_link: el original en Inglés
       native:
         title: Acerca de esta página
-        html: Está viendo la versión en inglés de la página de derechos de autor.
-          Puede ir a la %{native_link} de esta página o puede dejar de leer acerca
+        html: Estás viendo la versión en inglés de la página de derechos de autor.
+          Puedes ir a la %{native_link} de esta página o puedes dejar de leer acerca
           de derechos de autor y %{mapping_link}.
         native_link: versión en español
-        mapping_link: comenzar a cartografiar
+        mapping_link: comenzar a mapear
       legal_babble:
         title_html: Derechos de autor y licencia
+        introduction_1_html: "OpenStreetMap%{registered_trademark_link} es %{open_data},
+          licenciada bajo los términos de \n%{odc_odbl_link} (ODbL) por la %{osm_foundation_link}"
         introduction_1_open_data: datos abiertos
         introduction_1_odc_odbl: Licencia de bases de datos abiertas de Open Data
           Commons
+        introduction_1_osm_foundation: Fundación OpenStreetMap
+        introduction_2_html: Eres libre de copiar, distribuir, transmitir y adaptar
+          nuestros datos libremente siempre y cuando des reconocimiento a OpenStreetMap
+          y sus colaboradores. Si modificas o te basas en nuestros datos, sólo podrás
+          distribuir el resultado bajo la misma licencia. El %{legal_code_link} completo
+          explica tus derechos y responsabilidades.
         introduction_2_legal_code: código legal
-        introduction_3_html: Nuestra documentación tiene la licencia %{creative_commons_link}
-          (CC BY-SA 2.0).
-        introduction_3_creative_commons: Creative Commons - Atribución - Compartir
-          Igual 2.0
+        introduction_3_html: Nuestra documentación está licenciada bajo los términos
+          de %{creative_commons_link} (CC BY-SA 2.0).
+        introduction_3_creative_commons: Creative Commons Atribución-CompartirIgual
+          2.0
+        introduction_3_creative_commons_url: https://creativecommons.org/licenses/by-sa/2.0/deed.es
         credit_title_html: Cómo dar reconocimiento a OpenStreetMap
-        credit_1_html: 'Cuando utilice datos de OpenStreetMap, deberá hacer las dos
+        credit_1_html: 'Cuando utilice datos de OpenStreetMap, deberás hacer las dos
           cosas siguientes:'
-        credit_2_1: Proporcione crédito a OpenStreetMap mostrando nuestro aviso de
+        credit_2_1: Proporciona crédito a OpenStreetMap mostrando nuestro aviso de
           derechos de autor.
-        credit_2_2: Especifique que los datos están disponibles bajo la Licencia de
+        credit_2_2: Especifica que los datos están disponibles bajo la Licencia de
           base de datos abierta.
+        credit_3_html: Para el aviso de derechos de autor, tenemos diferentes requisitos
+          sobre cómo se debe mostrar en función del uso que se haga de nuestros datos.
+          Por ejemplo, se aplican diferentes normas sobre cómo mostrar el aviso de
+          derechos de autor (copyright) dependiendo de si ha creado un mapa navegable,
+          un mapa impreso o una imagen estática. Encontrarás todos los detalles sobre
+          los requisitos en la %{attribution_guidelines_link}.
         credit_3_attribution_guidelines: Directrices de atribución
+        credit_4_1_html: |-
+          Para dejar claro que los datos están disponibles bajo la licencia Open
+          Database License, puedes enlazar hacia %{this_copyright_page_link}.
+          Alternativamente, y como requisito si estás distribuyendo OSM en forma de datos, puedes nombrar y enlazar directamente a la(s) licencia(s). En los medios donde los enlaces no son posibles (por ejemplo, obras impresas), te sugerimos que dirijas a tus lectores a openstreetmap.org (quizás ampliando 'OpenStreetMap' a esta dirección completa) y a opendatacommons.org.
+          En este ejemplo, el crédito aparece en la esquina del mapa.
+        credit_4_1_this_copyright_page: esta página de derechos de autor
         attribution_example:
-          alt: Ejemplo de como dar reconocimiento a OpenStreetMap en una página web
+          alt: Ejemplo de cómo dar reconocimiento a OpenStreetMap en una página web
           title: Ejemplo de atribución
-        more_title_html: Para saber más...
+        more_title_html: Para saber más
+        more_1_1_html: Lee más sobre el uso de nuestros datos y cómo acreditarnos
+          en el %{osmf_licence_page_link}.
+        more_1_1_osmf_licence_page: página de licencia de la OSMF
+        more_2_1_html: "Aunque OpenStreetMap es un sistema de datos abiertos, no podemos
+          proporcionar una \nAPI de mapas gratuita para terceros. \nMira nuestra %{api_usage_policy_link},
+          %{tile_usage_policy_link} y %{nominatim_usage_policy_link}."
         more_2_1_api_usage_policy: Normativa de uso de la API
+        more_2_1_tile_usage_policy: Política de uso de teselas
         more_2_1_nominatim_usage_policy: Normativa de uso de Nominatim
         contributors_title_html: Nuestros colaboradores
         contributors_intro_html: 'Nuestros colaboradores son miles de personas. Incluimos
           también datos con licencia abierta de organismos cartográficos nacionales
           y otras fuentes, entre ellas:'
+        contributors_at_credit_html: "%{austria}: Contiene datos de %{stadt_wien_link}
+          (en el apartado %{cc_by_link}), %{land_vorarlberg_link} \ny Land Tirol (en
+          el %{cc_by_at_with_amendments_link})."
         contributors_at_austria: Austria
+        contributors_at_stadt_wien: Ciudad de Viena
+        contributors_at_cc_by: CC BY
+        contributors_at_land_vorarlberg: El territorio de Vorarlberg
+        contributors_at_cc_by_at_with_amendments: CC BY-AT con modificaciones
+        contributors_au_credit_html: "%{australia}: Incorpora o desarrolla usando
+          Fronteras Administrativas &copy; %{geoscape_australia_link} \nlicenciadas
+          por la Mancomunidad de Australia bajo el %{cc_licence_link}."
         contributors_au_australia: Australia
+        contributors_au_geoscape_australia: Geoscape Australia
+        contributors_au_cc_licence: Licencia internacional Creative Commons Attribution
+          4.0 (CC BY 4.0)
+        contributors_au_cc_licence_url: https://creativecommons.org/licenses/by/4.0/deed.es
+        contributors_ca_credit_html: '%{canada}: Contiene datos de GeoBase&reg;, GeoGratis
+          (&copy; Departmento de recursos naturales de Canadá), CanVec (&copy; Departmento
+          de recursos naturales de Canadá) y StatCan (División Geográfica, Estadísticas
+          de Canadá).'
         contributors_ca_canada: Canadá
+        contributors_fi_credit_html: "%{finland}: Contiene datos de la \nBase de datos
+          topográficos del Estudio Nacional de Tierras de Finlandia \ny otros conjuntos
+          de datos, bajo el enlace %{nlsfi_license_link}."
         contributors_fi_finland: Finlandia
         contributors_fi_nlsfi_license: Licencia NLSFI
+        contributors_fr_credit_html: |-
+          %{france}: Contiene datos de la
+          Dirección General de Impuestos.
         contributors_fr_france: Francia
+        contributors_nl_credit_html: '%{netherlands}: Contiene &copy; y datos, 2007
+          (%{and_link})'
         contributors_nl_netherlands: Países Bajos
+        contributors_nz_credit_html: "%{new_zealand}: Contiene datos del %{linz_data_service_link}
+          \ny licenciados para su reutilización bajo %{cc_by_link}."
         contributors_nz_new_zealand: Nueva Zelanda
         contributors_nz_linz_data_service: Servicio de datos de LINZ
+        contributors_nz_cc_by: CC BY 4.0
+        contributors_nz_cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.es
+        contributors_rs_credit_html: "%{serbia}: Contiene datos del %{rgz_link} y
+          %{open_data_portal} \n (información pública de Serbia), 2018."
+        contributors_rs_serbia: Serbia
+        contributors_rs_rgz: Autoridad geodética serbia
+        contributors_rs_open_data_portal: Portal Nacional de Datos Abiertos
+        contributors_si_credit_html: |-
+          %{slovenia}: Contiene datos de %{gu_link} y %{mkgp_link}
+          (información pública de Eslovenia).
         contributors_si_slovenia: Eslovenia
+        contributors_si_gu: Autoridad de Topografía y Cartografía
         contributors_si_mkgp: Ministerio de Agricultura, Silvicultura y Alimentación
+        contributors_es_credit_html: |-
+          %{spain}: Contiene datos del
+          Instituto Geográfico Nacional de España (%{ign_link}) y
+          Sistema Cartográfico Nacional (%{scne_link})
+          con licencia para su reutilización bajo %{cc_by_link}.
         contributors_es_spain: España
         contributors_es_ign: IGN
+        contributors_es_scne: SCNE
+        contributors_es_cc_by: CC BY 4.0
+        contributors_es_cc_by_url: https://creativecommons.org/licenses/by/4.0/deed.es
+        contributors_za_credit_html: '%{south_africa}: Contiene datos de %{ngi_link},
+          derechos de autor reservados por del Estado.'
         contributors_za_south_africa: Sudáfrica
+        contributors_za_ngi: 'Dirección General: Información Geoespacial Nacional'
+        contributors_gb_credit_html: |-
+          %{united_kingdom}: contiene datos de Ordnance Survey &copy; Crown copyright and database right
+          2010-2023.
         contributors_gb_united_kingdom: Reino Unido
+        contributors_2_html: Para obtener más detalles de estas y otras fuentes que
+          se han utilizado para ayudar a mejorar OpenStreetMap, consultq el %{contributors_page_link}
+          en el Wiki de OpenStreemMap.
+        contributors_2_contributors_page: Página de colaboradores
+        contributors_2_contributors_page_url: https://wiki.openstreetmap.org/wiki/ES:Colaboradores
         contributors_footer_2_html: La inclusión de datos en OpenStreetMap no implica
           que el proveedor de la información original apoya a OpenStreetMap, proporciona
           alguna garantía, o acepta cualquier responsabilidad.
         infringement_title_html: Violación de derechos de autor
-        infringement_1_html: Se le recuerda a los colaboradores de OSM que no deben
-          añadir información procedente de ninguna fuente con derechos de autor reservados
+        infringement_1_html: Se le recuerda a los colaboradores de OSM que no deben
+          añadir información procedente de alguna fuente con derechos de autor reservados
           (p. ej. Google Maps o mapas impresos) sin el consentimiento explícito de
           los poseedores de los derechos de autor.
+        infringement_2_1_html: |-
+          Si crees que material protegido por derechos de autor se ha agregado de manera inapropiada a la base de datos de OpenStreetMap o a este sitio, consulta nuestro %{takedown_procedure_link} o presenta tu queja directamente en nuestro
+          %{online_filing_page_link}.
+        infringement_2_1_takedown_procedure: procedimiento de eliminación
+        infringement_2_1_online_filing_page: página de presentación en línea
         trademarks_title: Marcas
+        trademarks_1_1_html: |-
+          OpenStreetMap, el logotipo de la lupa y State of the Map son marcas registradas de la Fundación
+          OpenStreetMap. Si tienes preguntas sobre el uso de las marcas, consulta nuestra
+          %{trademark_policy_link}.
         trademarks_1_1_trademark_policy: Normativa de marcas
     index:
-      js_1: Está usando un navegador que no soporta o tiene desactivado JavaScript
-      js_2: OpenStreetMap utiliza JavaScript para mostrar su mapa
+      js_1: Estás usando un navegador que no soporta o tiene desactivado JavaScript
+      js_2: OpenStreetMap utiliza JavaScript para mostrar su mapa deslizable.
       permalink: Enlace permanente
-      shortlink: Atajo
+      shortlink: Enlace corto
       createnote: Añadir una nota
       license:
-        copyright: Copyright OpenStreetMap y colaboradores, bajo una licencia abierta
-      remote_failed: 'Error de edición: Asegúrese de que JOSM o Merkaartor están cargados
-        y con la opción de control remoto activada'
+        copyright: Derechos de autor de OpenStreetMap y colaboradores, bajo una licencia
+          abierta
+      remote_failed: Error de edición - Asegúrate de que JOSM o Merkaartor están cargados
+        y con la opción de control remoto activada
     edit:
-      not_public: No ha configurado sus ediciones para que sean públicas.
-      not_public_description_html: No puede seguir editando el mapa a menos que lo
-        haga. Puede marcar sus ediciones como públicas desde su %{user_page}.
+      not_public: No has configurado tus ediciones para que sean públicas.
+      not_public_description_html: No puedes seguir editando el mapa a menos que lo
+        hagas. Puedes marcar tus ediciones como públicas desde tu %{user_page}.
       user_page_link: página de usuario
-      anon_edits_link_text: Descubra a que se debe
+      anon_edits_link_text: Descubre a qué se debe.
       id_not_configured: iD no ha sido configurado
-      no_iframe_support: Su navegador no soporta iframes HTML, que son necesarios
+      no_iframe_support: Tu navegador no soporta iframes HTML, que son necesarios
         para esta funcionalidad.
     export:
       title: Exportar
       area_to_export: Área a exportar
       manually_select: Seleccionar manualmente un área diferente
       format_to_export: Formato de exportación
-      osm_xml_data: Datos OpenStreetMap en formato XML
+      osm_xml_data: Datos de OpenStreetMap en formato XML
       map_image: Imagen de mapa (muestra la capa estándar)
       embeddable_html: HTML integrable
       licence: Licencia
-      licence_details_html: Los datos de OpenStreetMap está registrada por %{odbl_link}
+      licence_details_html: Los datos de OpenStreetMap están registrados bajo %{odbl_link}
         (ODbL).
-      odbl: Licencia de base de datos abierta de Open Data Commons
+      odbl: Licencia de Base de datos Abierta de Open Data Commons
       too_large:
-        advice: 'Si la exportación anterior falla, considere utilizar una de las fuentes
+        advice: 'Si la exportación anterior falla, considera utilizar una de las fuentes
           que se enumeran a continuación:'
         body: Esta área es demasiado grande para exportarla como datos XML de OpenStreetMap.
-          Acerque o seleccione un área más pequeña, o use una de las fuentes que se
+          Acerca o selecciona un área más pequeña, o usa una de las fuentes que se
           enumeran a continuación para descargas de datos masivas.
         planet:
           title: Planeta OSM
@@ -2146,9 +2269,9 @@ es:
       options: Opciones
       format: Formato
       scale: Escala
-      max: máx.
+      max: máximo
       image_size: Tamaño de la imagen
-      zoom: Zum
+      zoom: Acercar
       add_marker: Añadir un marcador al mapa
       latitude: 'Lat:'
       longitude: 'Lon:'
@@ -2160,34 +2283,42 @@ es:
       how_to_help:
         title: Cómo ayudar
         join_the_community:
-          title: Unirse a la comunidad
-          explanation_html: Si ha notado un problema con nuestros datos del mapa,
+          title: Unete a la comunidad
+          explanation_html: Si has notado un problema con nuestros datos del mapa,
             por ejemplo, falta un camino o su dirección, la mejor manera de proceder
             es unirse a la comunidad OpenStreetMap y agregar o corregir los datos
-            usted mismo.
+            tu mismo.
+        add_a_note:
+          instructions_1_html: |-
+            Simplemente haz clic en %{note_icon} o en el mismo icono en la visualización del mapa.
+            Esto agregará un marcador al mapa que puedes mover arrastrándolo. Agrega tu mensaje, luego haz clic en guardar, y otros mapeadores lo investigarán.
       other_concerns:
         title: Otras preocupaciones
-        copyright: página de derechos de copia
+        concerns_html: |-
+          Si tienes inquietudes sobre cómo se utilizan nuestros datos o sobre el contenido, consulta nuestro
+          %{copyright_link} para obtener más información legal, o comunícate con el %{working_group_link} correspondiente.
+        copyright: página de derechos de autor
+        working_group: grupo de trabajo OSMF
     help:
       title: Cómo obtener ayuda
       introduction: OpenStreetMap tiene varios recursos para aprender sobre el proyecto,
         preguntando y contestando preguntas, y colaborativamente discutir y documentar
-        temas de cartografía.
+        temas de mapeo.
       welcome:
         url: /welcome
-        title: Bienvenida a OpenStreetMap
-        description: Comience con esta guía rápida que cubre lo básico de OpenStreetMap.
+        title: Bienvenido a OpenStreetMap
+        description: Comienza con esta guía rápida que cubre lo básico de OpenStreetMap.
       beginners_guide:
-        url: https://wiki.openstreetmap.org/wiki/ES:Beginners%27_guide
+        url: https://wiki.openstreetmap.org/wiki/ES:Gu%C3%ADa_de_principiantes
         title: Guía para principiantes
         description: Guía para principiantes, mantenida por la comunidad.
       help:
         title: Foro de ayuda
-        description: Haga una pregunta o busque respuestas en el sitio de preguntas
+        description: Haz una pregunta o busca respuestas en el sitio de preguntas
           y respuestas de OpenStreetMap.
       mailing_lists:
         title: Listas de correo
-        description: Haga una pregunta o discuta asuntos interesantes en una amplia
+        description: Haz una pregunta o discute asuntos interesantes en una amplia
           gama de listas de correo regionales o temáticas.
       community:
         title: Foro de la Comunidad
@@ -2205,13 +2336,18 @@ es:
         description: ¿Con una organización que hace planes para OpenStreetMap? Encuentra
           lo que debes saber en nuestra Estera de Bienvenida.
       wiki:
-        url: https://wiki.openstreetmap.org/wiki/ES:Main_Page
+        url: https://wiki.openstreetmap.org/wiki/ES:Página_principal
         title: Wiki de OpenStreetMap
         description: Explora la wiki para obtener documentación detallada de OpenStreetMap.
     potlatch:
-      removed: El editor de OpenStreetMap predeterminado se establece como Potlatch.
+      removed: El editor de OpenStreetMap predeterminado está establecido como Potlatch.
         Dado que Adobe Flash Player se ha retirado, Potlatch ya no está disponible
         para su uso en un navegador web.
+      desktop_application_html: Todavía puedes usar Potlatch en %{download_link}.
+      download: descargando la aplicación de escritorio para Mac y Windows
+      id_editor_html: Alternativamente, puedes establecer tu editor predeterminado
+        a iD, el cual se ejecuta en tu navegador como hacía Potlatch anteriormente.
+        %{change_preferences_link}.
       change_preferences: Cambia tus preferencias aquí
     any_questions:
       title: ¿Alguna pregunta?
@@ -2220,7 +2356,7 @@ es:
         preguntas sobre él, así como debatir y documentar de forma conjunta sobre temas de mapeo.
         %{help_link}. ¿Con una organización que hace planes para OpenStreetMap? %{welcome_mat_link}.
       get_help_here: Obtén ayuda aquí
-      welcome_mat: Echa un vistazo a Welcome Mat
+      welcome_mat: Echa un vistazo a la estera de bienvenida
     sidebar:
       search_results: Resultados de la búsqueda
       close: Cerrar
@@ -2238,14 +2374,14 @@ es:
       table:
         entry:
           motorway: Autopista
-          main_road: Carretera principal
-          trunk: Carretera troncal
-          primary: Carretera primaria
-          secondary: Carretera secundaria
-          unclassified: Carretera sin clasificar
+          main_road: a principal
+          trunk: a troncal
+          primary: a primaria
+          secondary: a secundaria
+          unclassified: Vía de menos nivel
           track: Pista
           bridleway: Vía ecuestre
-          cycleway: Bicisenda
+          cycleway: Ciclovía
           cycleway_national: Ciclovía nacional
           cycleway_regional: Ciclovía regional
           cycleway_local: Ciclovía local
@@ -2254,7 +2390,7 @@ es:
           subway: Metro
           tram:
           - Metro ligero
-          - Tranvía
+          - tranvía
           cable:
           - Telecabina
           - Telesilla
@@ -2264,27 +2400,27 @@ es:
           apron:
           - Rampa aeroportuaria
           - terminal
-          admin: Límites administrativos
+          admin: Límite administrativos
           forest: Bosque
-          wood: Madera
+          wood: Bosque
           golf: Campo de golf
           park: Parque
           resident: Zona residencial
           common:
           - Común
           - pradera
-          - Jardín
+          - jardín
           retail: Zona de comercios
           industrial: Zona industrial
-          commercial: Zona de oficinas
-          heathland: Landa, brezal
+          commercial: Zona comercial
+          heathland: Brezal
           lake:
           - Lago
           - embalse
-          farm: Campiña
-          brownfield: Baldío
+          farm: Granja
+          brownfield: Sitio baldío
           cemetery: Cementerio
-          allotments: Huertos de ocio
+          allotments: Parcelas
           pitch: Campo de juego
           centre: Centro deportivo
           reserve: Reserva natural
@@ -2307,16 +2443,20 @@ es:
           toilets: Baños
     welcome:
       title: ¡Bienvenido!
-      introduction: Le damos la bienvenida a OpenStreetMap, el mapa libre y editable
-        del mundo. Ahora que se ha registrado, ha hecho lo necesario para empezar
-        a cartografiar. He aquí una guía rápida con las cosas más importantes que
-        necesita saber.
+      introduction: Te damos la bienvenida a OpenStreetMap, el mapa libre y editable
+        del mundo. Ahora que te has registrado, has hecho lo necesario para empezar
+        a mapear. He aquí una guía rápida con las cosas más importantes que necesita
+        saber.
       whats_on_the_map:
         title: Qué hay en el mapa
         on_the_map_html: |-
-          OpenStreetMap es un sitio para cartografiar objetos %{real_and_current}:
-          esto incluye millones de edificios, carreteras y otros datos de destinos. Es posible cartografiar cualquier rasgo del mundo real que le interese.
+          OpenStreetMap es un sitio para mapear objetos %{real_and_current}:
+          esto incluye millones de edificios, carreteras y otros datos de destinos. Es posible mapear cualquier rasgo del mundo real que le interese.
         real_and_current: reales y actuales
+        off_the_map_html: Lo que %{doesnt} incluye son datos de opinión como calificaciones,
+          elementos históricos o hipotéticas, ni datos provenientes de fuentes protegidas
+          por derechos de autor. A menos que tengas un permiso especial, no copies
+          mapas en línea o en papel.
         doesnt: "no"
       basic_terms:
         title: Términos básicos para mapear
@@ -2334,17 +2474,19 @@ es:
         way: vía
         tag: etiqueta
       rules:
-        title: Reglas
+        title: ¡Reglas!
         para_1_html: OpenStreetMap tiene pocas reglas, pero esperamos que todos los
           participantes colaboren y se comuniquen entre ellos. Si estás pensando en
           realizar otras actividades diferentes a la edición a mano, por favor, lee
           y sigue las instrucciones en %{imports_link} y %{automated_edits_link}.
         imports: Importaciones
+        imports_url: https://wiki.openstreetmap.org/wiki/ES:Importaci%C3%B3n/Directrices
         automated_edits: Ediciones automatizadas
-      start_mapping: Comenzar a cartografiar
+        automated_edits_url: https://wiki.openstreetmap.org/wiki/ES:C%C3%B3digo_de_conducta_de_ediciones_automatizadas
+      start_mapping: Comenzar a mapear
       add_a_note:
-        title: ¿No tiene tiempo para editar? ¡Añada una nota!
-        para_1: Si sólo desea corregir algo pequeño y no tiene tiempo para registrarse
+        title: ¿No tienes tiempo para editar? ¡Añade una nota!
+        para_1: Si sólo deseas corregir algo pequeño y no tienes tiempo para registrarse
           y aprender a editar, es fácil añadir una nota.
         para_2_html: |-
           Basta con ir a %{map_link} y pulsar en el icono de nota: %{note_icon}.
@@ -2359,17 +2501,23 @@ es:
         Estos grupos son de distintos tamaños y representan geografías que van desde pequeñas ciudades a grandes regiones multinacionales.
         También pueden ser formales o informales.
       local_chapters:
-        title: Delegaciones locales
+        title: Capítulos locales
         about_text: Las delegaciones locales son grupos nacionales o regionales que
           han dado el paso formal de constituirse como entidades jurídicas sin ánimo
           de lucro. Representan al mapa y a los cartógrafos de la zona ante la administración
           local, las empresas y los medios de comunicación. También se han afiliado
           a la OpenStreetMap Foundation (OSMF), lo que les proporciona un vínculo
           con el órgano de gobierno legal y de derechos de autor.
-        list_text: 'Estas comunidades se han constituido formalmente como delegaciones
-          locales:'
+        list_text: 'Estas comunidades se han constituido formalmente como Capítulos
+          Locales:'
       other_groups:
         title: Otros grupos
+        other_groups_html: |-
+          No hay necesidad de establecer formalmente un grupo en la misma medida que los Capítulos Locales.
+          De hecho, muchos grupos existen con mucho éxito como una reunión informal de personas o como un grupo
+          comunitario. Cualquiera puede crearlos o unirse a estos. Obten más información en %{communities_wiki_link}.
+        communities_wiki: Página wiki de comunidades
+        communities_wiki_url: https://wiki.openstreetmap.org/wiki/ES:Grupo_de_usuarios
   traces:
     visibility:
       private: Privado (solo compartido como anónimo, puntos no ordenados)
@@ -2386,21 +2534,22 @@ es:
       help_url: https://wiki.openstreetmap.org/wiki/ES:Subir
     create:
       upload_trace: Subir traza GPS
-      trace_uploaded: Su archivo GPX se ha cargado y está esperando su inserción en
-        la base de datos. Por lo general, esto sucederá en media hora y se le enviará
+      trace_uploaded: Tu archivo GPX se ha cargado y está esperando su inserción en
+        la base de datos. Por lo general, esto sucederá en media hora y se te enviará
         un correo electrónico al finalizar.
       upload_failed: Lo sentimos, no se ha podido subir el GPX. Un administrador ha
-        sido alertado del error. Inténtelo de nuevo.
+        sido alertado del error. Inténtalo de nuevo.
       traces_waiting:
-        one: Tiene %{count} traza esperando por subir. Considere esperar a que termine
+        one: Tienes %{count} traza esperando por subir. Considera esperar a que termine
           antes de cargar más, para no bloquear la cola para otros usuarios.
-        other: Tiene %{count} trazas esperando por subir. Considere esperar a que
+        other: Tienes %{count} trazas esperando por subir. Considera esperar a que
           terminen antes de cargar más, para no bloquear la cola para otros usuarios.
     edit:
       cancel: Cancelar
       title: Editando traza %{name}
       heading: Editando traza %{name}
       visibility_help: ¿Qué significa esto?
+      visibility_help_url: https://wiki.openstreetmap.org/wiki/ES:Visibilidad_de_trazas_GPS
     update:
       updated: Traza actualizada
     trace_optionals:
@@ -2425,7 +2574,7 @@ es:
       delete_trace: Eliminar esta traza
       trace_not_found: ¡No se ha encontrado la traza!
       visibility: 'Visibilidad:'
-      confirm_delete: ¿Quiere eliminar esta traza?
+      confirm_delete: ¿Quieres eliminar esta traza?
     trace_paging_nav:
       older: Trazas más antiguas
       newer: Trazas más recientes
@@ -2451,10 +2600,11 @@ es:
       description: Explorar las trazas GPS recién subidas
       tagged_with: etiquetado con %{tags}
       empty_title: Todavía no hay nada
-      empty_upload_html: '%{upload_link} o conozca más sobre el trazado GPS en la
-        %{wiki_link} correspondiente.'
-      upload_new: Cargue una traza nueva
+      empty_upload_html: '%{upload_link} o conoce más sobre el trazado GPS en la %{wiki_link}
+        correspondiente.'
+      upload_new: Carga una traza nueva
       wiki_page: página del wiki
+      wiki_page_url: https://wiki.openstreetmap.org/wiki/ES:Gu%C3%ADa_del_principiante_1.2
       upload_trace: Subir una traza
       all_traces: Todas las trazas
       my_traces: Mis trazas
@@ -2479,20 +2629,20 @@ es:
         other: Archivo GPX con %{count} puntos de %{user}
       description_without_count: Archivo GPX de %{user}
   application:
-    permission_denied: No tiene permisos para realizar esa acción
+    permission_denied: No tienes permisos para realizar esa acción
     require_cookies:
-      cookies_needed: Parece que tiene las cookies deshabilitadas. Habilite las cookies
-        en su navegador antes de continuar.
+      cookies_needed: Parece que tienes las cookies deshabilitadas. Habilita las cookies
+        en tu navegador antes de continuar.
     require_admin:
       not_an_admin: Necesitas ser un administrador para realizar esa acción.
     setup_user_auth:
-      blocked_zero_hour: Tiene un mensaje urgente en el sitio web de OpenStreetMap.
-        Debe leer el mensaje para poder guardar sus ediciones.
-      blocked: Su acceso a la API ha sido bloqueado. Inicie sesión en la interfaz
+      blocked_zero_hour: Tienes un mensaje urgente en el sitio web de OpenStreetMap.
+        Debes leer el mensaje para poder guardar tus ediciones.
+      blocked: Tu acceso a la API ha sido bloqueado. Inicia sesión en la interfaz
         web para obtener más información.
-      need_to_see_terms: Su acceso a la API está temporalmente suspendido. Inicie
-        sesión en la web para ver los Términos de colaborador. No es necesario aceptarlos,
-        pero debe conocerlos.
+      need_to_see_terms: Tu acceso a la API está temporalmente suspendido. Inicia
+        sesión en la web para ver los Términos de Colaborador. No es necesario aceptarlos,
+        pero debes conocerlos.
     settings_menu:
       account_settings: Configuración de la cuenta
       oauth1_settings: Otras configuraciones
@@ -2500,37 +2650,37 @@ es:
       oauth2_authorizations: Autorizaciones de OAuth 2
   oauth:
     authorize:
-      title: Autorizar el acceso a su cuenta
-      request_access_html: La aplicación %{app_name} solicita acceso a su cuenta,
-        %{user}. Compruebe si desea que la aplicación tenga las siguientes capacidades.
-        Puede elegir tantas o tan pocas como quiera.
+      title: Autorizar el acceso a tu cuenta
+      request_access_html: La aplicación %{app_name} solicita acceso a tu cuenta,
+        %{user}. Comprueba si deseas que la aplicación tenga las siguientes capacidades.
+        Puedes elegir tantas o tan pocas como quieras.
       allow_to: 'Permitir a la aplicación cliente:'
-      allow_read_prefs: leer sus preferencias de usuario.
-      allow_write_prefs: modificar sus preferencias de usuario.
+      allow_read_prefs: leer tus preferencias de usuario.
+      allow_write_prefs: modificar tus preferencias de usuario.
       allow_write_diary: crear entradas en el diario, comentarios y hacer amigos.
       allow_write_api: modificar el mapa.
-      allow_read_gpx: leer sus trazas GPS privadas.
+      allow_read_gpx: leer tus trazas GPS privadas.
       allow_write_gpx: subir trazas GPS.
       allow_write_notes: cambiar notas.
       grant_access: Otorgar acceso
     authorize_success:
       title: Solicitud de autorización permitida
-      allowed_html: Ha concedido acceso a su cuenta a la aplicación %{app_name}.
+      allowed_html: Has concedido acceso a tu cuenta a la aplicación %{app_name}.
       verification: El código de verificación es %{code}.
     authorize_failure:
       title: Falló la solicitud de autorización
-      denied: Ha denegado a la aplicación %{app_name} el acceso a su cuenta.
+      denied: Has denegado a la aplicación %{app_name} el acceso a tu cuenta.
       invalid: El token de autorización no es válido.
     revoke:
-      flash: Revocó el token para %{application}
+      flash: Revocaste el token para %{application}
     permissions:
-      missing: No ha permitido que la aplicación acceda a esta instalación.
+      missing: No has permitido que la aplicación acceda a esta instalación.
     scopes:
       read_prefs: Leer preferiencias de usuario
-      write_prefs: modificar sus preferencias de usuario.
+      write_prefs: modificar tus preferencias de usuario.
       write_diary: Crea entradas diarias, comentarios y haz amigos
       write_api: modificar el mapa.
-      read_gpx: Leer sus trazas de GPS privadas
+      read_gpx: Leer tus trazas de GPS privadas
       write_gpx: Subir trazas de GPS
       write_notes: Modifica notas
       read_email: Leer dirección de correo electrónico del usuario
@@ -2539,56 +2689,57 @@ es:
     new:
       title: Registrar una nueva aplicación
     edit:
-      title: Editar su aplicación
+      title: Editar tu aplicación
     show:
       title: Detalles de OAuth de %{app_name}
       key: 'Clave de Consumidor:'
-      secret: 'Secreto de Consumidor:'
-      url: 'URL de Token de Solicitud:'
-      access_url: 'URL de Token de Acceso:'
+      secret: 'Secreto de consumidor:'
+      url: 'URL de token de solicitud:'
+      access_url: 'URL de token de acceso:'
       authorize_url: 'URL de autorización:'
       support_notice: Soportamos HMAC-SHA1 (recomendado) y firmas RSA-SHA1.
       edit: Editar detalles
       delete: Eliminar cliente
-      confirm: ¿Está seguro?
+      confirm: ¿Estás seguro?
       requests: 'Solicitando los siguientes permisos del usuario:'
     index:
       title: Mis datos OAuth
       my_tokens: Mis aplicaciones autorizadas
-      list_tokens: 'Se han emitido los siguientes tokens para aplicaciones en su nombre:'
+      list_tokens: 'Se han emitido los siguientes tokens para aplicaciones en tu nombre:'
       application: Nombre de la aplicación
       issued_at: Emitido el
       revoke: ¡Revocar!
       my_apps: Mis aplicaciones cliente
-      no_apps_html: ¿Tiene una aplicación que le gustaría registrar para usar con
-        nosotros utilizando el estándar %{oauth}? Debe registrar su aplicación web
-        antes de que pueda hacer solicitudes OAuth a este servicio.
+      no_apps_html: ¿Tienes una aplicación que te gustaría registrar para usar con
+        nosotros utilizando el estándar %{oauth}? Debes registrar tu aplicación web
+        antes de que puedas hacer solicitudes OAuth a este servicio.
       oauth: OAuth
-      registered_apps: 'Tiene las siguientes aplicaciones cliente registradas:'
-      register_new: Registre su aplicación
+      registered_apps: 'Tienes las siguientes aplicaciones cliente registradas:'
+      register_new: Registra tu aplicación
     form:
       requests: 'Solicita los siguientes permisos del usuario:'
     not_found:
       sorry: Lo sentimos, ese %{type} no puede ser encontrado.
     create:
-      flash: Registrada la información exitosamente
+      flash: Información registrada exitosamente
     update:
       flash: Actualizada la información del cliente exitosamente
     destroy:
       flash: Destruido el registro de aplicación del cliente
   oauth2_applications:
     index:
-      title: Mis Aplicaciones de Cliente
-      no_applications_html: ¿Tiene una aplicación que le gustaría registrar para usar
-        con nosotros utilizando el estándar %{oauth2}? Debe registrar su aplicación
+      title: Mis aplicaciones de cliente
+      no_applications_html: ¿Tienes una aplicación que te gustaría registrar para
+        usar con nosotros utilizando el estándar %{oauth2}? Debes registrar tu aplicación
         antes de que pueda hacer solicitudes OAuth a este servicio.
-      new: Registre su aplicación
+      oauth_2: OAuth 2
+      new: Registra tu aplicación
       name: Nombre
       permissions: Permisos
     application:
       edit: Ediciones
       delete: Eliminar
-      confirm_delete: Ver esta aplicación
+      confirm_delete: ¿Eliminar esta aplicación?
     new:
       title: Registrar una nueva aplicación
     edit:
@@ -2599,7 +2750,7 @@ es:
       confirm_delete: ¿Eliminar esta aplicación?
       client_id: Identificador de cliente
       client_secret: Secreto del cliente
-      client_secret_warning: Asegúrese de guardar este secreto - no será accesible
+      client_secret_warning: Asegúrese de guardar este secreto - no estará disponible
         de nuevo
       permissions: 'Permisos:'
       redirect_uris: Redirigir URI
@@ -2608,68 +2759,76 @@ es:
   oauth2_authorizations:
     new:
       title: Se necesita autorización
-      introduction: ¿Autorizar a %{application} a acceder a su cuenta con los siguientes
+      introduction: ¿Autorizar a %{application} a acceder a tu cuenta con los siguientes
         permisos?
-      authorize: Autorizar →
+      authorize: Autorizar
       deny: Denegar
     error:
-      title: Se produjo un error.
+      title: Se produjo un error
     show:
       title: Sin código de autorización
   oauth2_authorized_applications:
     index:
       title: Mis aplicaciones autorizadas
       application: Solicitudes
-      permissions: 'Permisos:'
-      no_applications_html: Aún no ha autorizado ninguna aplicación %{oauth2}.
+      permissions: Permisos
+      no_applications_html: Aún no has autorizado aplicaciones a %{oauth2}.
     application:
       revoke: Revocar el acceso
       confirm_revoke: ¿Revocar el acceso a esta aplicación?
   users:
     new:
       title: Registrarse
-      no_auto_account_create: Lamentablemente, ahora no podemos crear su cuenta automáticamente.
-      please_contact_support_html: 'Póngase en contacto con %{support_link} para organizar
+      no_auto_account_create: Lamentablemente, ahora no podemos crear tu cuenta automáticamente.
+      please_contact_support_html: 'Pónte en contacto con %{support_link} para organizar
         la creación de una cuenta: intentaremos atender la solicitud lo antes posible.'
       support: asistencia
       about:
         header: Libre y editable
         paragraph_1: A diferencia de otros mapas, OpenStreetMap está completamente
-          creado por personas como tú, y cualquiera puede repararlo, actualizarlo,
+          creado por personas como tú, y cualquiera puede corregirlo, actualizarlo,
           descargarlo y usarlo de forma gratuita.
         paragraph_2: Regístrate para comenzar a contribuir. Te enviaremos un email
           para confirmar tu cuenta.
-      display name description: Su nombre de usuario público. Puede cambiarlo más
+      display name description: Tu nombre de usuario público. Puedes cambiarlo más
         tarde en las preferencias.
-      external auth: 'Autenticación de terceros:'
-      use external auth: O bien, utilice un servicio de terceros para acceder
+      external auth: 'Autentificación de terceros:'
+      use external auth: O bien, utiliza un servicio de terceros para acceder
       auth no password: Con la autenticación de terceros no se necesita una contraseña,
-        aunque hay algunas herramientas y servidores que aún la solicitan.
+        aunque habrá algunas herramientas y servidores que aún la soliciten.
       continue: Registrarse
-      terms accepted: ¡Gracias por aceptar los nuevos términos de colaborador!
+      terms accepted: ¡Gracias por aceptar los nuevos Términos de Colaborador!
+      email_confirmation_help_html: Tu dirección no se muestra públicamente, consulta
+        nuestra %{privacy_policy_link} para obtener más información.
       privacy_policy: normativa de privacidad
+      privacy_policy_title: Política de privacidad de la OSMF, incluida la sección
+        sobre direcciones de correo electrónico
     terms:
       title: Términos
       heading: Términos
-      heading_ct: Términos de colaborador
-      read and accept with tou: Lea el acuerdo de colaborador y los términos de uso,
+      heading_ct: Términos de Colaborador
+      read and accept with tou: Lea el acuerdo de colaborador y los Términos de Uso,
         marque ambas casillas de verificación cuando haya terminado y luego presione
         el botón Continuar.
-      contributor_terms_explain: Este acuerdo gobierna los términos de sus contribuciones
+      contributor_terms_explain: Este acuerdo gobierna los términos de tus contribuciones
         actuales y futuras.
-      read_ct: He leído y estoy de acuerdo con los términos de colaborador arriba
+      read_ct: He leído y estoy de acuerdo con los Términos de Colaborador arriba
         descritos
       tou_explain_html: Estos %{tou_link} rigen el uso del sitio web y de la infraestructura
-        provista por OSMF. Haga clic en el enlace, lea y acepte el texto.
+        provista por OSMF. Haz clic en el enlace, lee y acepta el texto.
       read_tou: He leído y estoy de acuerdo con los Términos de Uso
       consider_pd: Además del acuerdo anterior, considero que mis contribuciones se
         encuentran en Dominio Público.
       consider_pd_why: ¿Qué es esto?
+      guidance_info_html: 'Información para ayudar a comprender estos términos: un
+        %{readable_summary_link} y algunas %{informal_translations_link}'
+      readable_summary: resumen legible por humanos
+      informal_translations: traducciones informales
       continue: Continuar
-      declined: https://wiki.openstreetmap.org/wiki/ES:Contributor_Terms_Declined
+      declined: https://wiki.openstreetmap.org/wiki/ES:Términos_de_contribuidor_rechazados
       decline: Declinar
-      you need to accept or decline: Lea y luego acepte o rechace los nuevos Términos
-        de colaborador para continuar.
+      you need to accept or decline: Lee y luego acepta o rechaza los nuevos Términos
+        de Colaborador para continuar.
       legale_select: 'País de residencia:'
       legale_names:
         france: Francia
@@ -2677,14 +2836,14 @@ es:
         rest_of_world: Resto del mundo
     terms_declined_flash:
       terms_declined_html: Lamentamos que haya decidido no aceptar los nuevos Términos
-        de colaborador. Para obtener más información, consulte %{terms_declined_link}.
+        de Colaborador. Para obtener más información, consulte %{terms_declined_link}.
       terms_declined_link: esta página wiki
-      terms_declined_url: https://wiki.openstreetmap.org/wiki/ES:Contributor_Terms_Declined
+      terms_declined_url: https://wiki.openstreetmap.org/wiki/ES:Términos_de_contribuidor_rechazados
     no_such_user:
       title: Este usuario no existe
       heading: El usuario %{user} no existe
-      body: Lo sentimos, no existe ningún usuario con el nombre %{user}. Revise  las
-        letras, o tal vez el enlace en el que hizo clic sea incorrecto.
+      body: Lo sentimos, no existe algún usuario con el nombre %{user}. Revisa las
+        letras, o tal vez el enlace en el que hiciste clic sea incorrecto.
       deleted: eliminado
     show:
       my diary: Mi diario
@@ -2693,7 +2852,7 @@ es:
       my notes: Mis notas
       my messages: Mis mensajes
       my profile: Mi perfil
-      my settings: Mi configuración
+      my settings: Mis configuraciones
       my comments: Mis comentarios
       my_preferences: Mis preferencias
       my_dashboard: Mi tablero
@@ -2708,7 +2867,7 @@ es:
       remove as friend: Eliminar como amigo
       add as friend: Añadir como amigo
       mapper since: 'Mapeando desde:'
-      ct status: 'Términos de colaborador:'
+      ct status: 'Términos de Colaborador:'
       ct undecided: Indeciso
       ct declined: Rechazado
       latest edit: 'Última edición (%{ago}):'
@@ -2739,8 +2898,8 @@ es:
       confirm: Confirmar
       report: Denunciar a este usuario
     go_public:
-      flash success: Todas sus ediciones ahora son públicas y ya está autorizado para
-        editar.
+      flash success: Todas tus ediciones ahora son públicas y ya estás autorizado
+        para editar.
     index:
       title: Usuarios
       heading: Usuarios
@@ -2755,26 +2914,27 @@ es:
     suspended:
       title: Cuenta suspendida
       heading: Cuenta suspendida
-      support: A favor
-      automatically_suspended: Lo sentimos, su cuenta ha sido suspendida automáticamente
+      support: a favor
+      automatically_suspended: Lo sentimos, tu cuenta ha sido suspendida automáticamente
         debido a actividad sospechosa.
       contact_support_html: Esta decisión será revisada por un administrador en breve,
-        o puede ponerse en contacto con %{support_link} si desea discutir sobre esto.
+        o puedes ponerte en contacto con %{support_link} si deseas discutir sobre
+        esto.
     auth_failure:
-      connection_failed: Falló la conexión con el proveedor de autenticación
-      invalid_credentials: Datos de autenticación no válidos
+      connection_failed: Falló la conexión con el proveedor de autentificación
+      invalid_credentials: Datos de autentificación no válidos
       no_authorization_code: Sin código de autorización
       unknown_signature_algorithm: Algoritmo de firma desconocido
       invalid_scope: Ámbito no válido
       unknown_error: Autentificación fallida
     auth_association:
-      heading: Su identificador aún no está asociado con una cuenta de OpenStreetMap.
-      option_1: Si eres nuevo en OpenStreetMap, crea  cuenta nueva usando el formulario
+      heading: Tu identificador aún no está asociado con una cuenta de OpenStreetMap.
+      option_1: Si eres nuevo en OpenStreetMap, crea una cuenta nueva usando el formulario
         a continuación.
       option_2: |-
-        Si ya tiene una cuenta, puede iniciar sesión en su cuenta
-        usando su nombre de usuario y contraseña y luego asociar la cuenta
-        con su identificador en sus preferencias de usuario.
+        Si ya tienes una cuenta, puedes iniciar sesión a tu cuenta
+        usando tu nombre de usuario y contraseña y luego asociar la cuenta
+        con tu identificador en tus configuraciones de usuario.
   user_role:
     filter:
       not_a_role: La cadena `%{role}' no es un rol válido.
@@ -2785,7 +2945,7 @@ es:
     grant:
       title: Confirmar adjudicación de rol
       heading: Confirmar adjudicación de rol
-      are_you_sure: ¿Está seguro de que desea otorgar el rol `%{role}' al usuario
+      are_you_sure: ¿Estás seguro de que deseas otorgar el rol `%{role}' al usuario
         `%{name}'?
       confirm: Confirmar
       fail: No pudo otorgarse el rol `%{role}' al usuario `%{name}'. Comprueba que
@@ -2793,7 +2953,7 @@ es:
     revoke:
       title: Confirmar revocación de rol
       heading: Confirmar revocación de rol
-      are_you_sure: ¿Está seguro de que desea revocar el rol `%{role}' del usuario
+      are_you_sure: ¿Está seguro de que deseas revocar el rol `%{role}' del usuario
         `%{name}'?
       confirm: Confirmar
       fail: No se pudo revocar el rol `%{role}' del usuario `%{name}'. Comprueba que
@@ -2809,14 +2969,14 @@ es:
     new:
       title: Creando un bloqueo para %{name}
       heading_html: Creando un bloqueo para %{name}
-      period: ¿Por cuánto tiempo, empezando ahora, el usuario tendrá bloqueado el
-        uso de la API?
+      period: ¿Por cuánto tiempo, empezando desde ahora, el usuario tendrá bloqueado
+        el uso de la API?
       back: Ver todos los bloqueos
     edit:
       title: Editando el bloqueo sobre %{name}
       heading_html: Editando el bloqueo sobre %{name}
-      period: ¿Por cuánto tiempo, empezando ahora, el usuario tendrá bloqueado el
-        uso de la API?
+      period: ¿Por cuánto tiempo, empezando desde ahora, el usuario tendrá bloqueado
+        el uso de la API?
       show: Ver este bloqueo
       back: Ver todos los bloqueos
     filter:
@@ -2824,21 +2984,21 @@ es:
       block_period: El periodo de bloqueo debe de ser uno de los valores seleccionables
         de la lista desplegable.
     create:
-      flash: Ha creado un bloqueo en el usuario %{name}.
+      flash: Has creado un bloqueo en el usuario %{name}.
     update:
       only_creator_can_edit: Sólo el moderador que ha creado este bloqueo puede editarlo.
       success: Bloqueo actualizado.
     index:
       title: Bloqueos de usuario
       heading: Listado de bloqueos de usuario
-      empty: Todavía no se ha hecho ningún bloqueo.
+      empty: Todavía no se ha hecho algún bloqueo.
     revoke:
       title: Revocando el bloqueo sobre %{block_on}
       heading_html: Revocando el bloqueo sobre %{block_on} por %{block_by}
       time_future: Este bloqueo finalizará en %{time}.
       past: Este bloqueo terminó %{time} y no puede ser revocado ahora.
-      confirm: ¿Está seguro de que desea revocar este bloqueo?
-      revoke: Revocar
+      confirm: ¿Estás seguro de que desea revocar este bloqueo?
+      revoke: ¡Revocar!
       flash: Este bloqueo ha sido revocado.
     helper:
       time_future_html: Termina en %{time}.
@@ -2869,7 +3029,7 @@ es:
     blocks_by:
       title: Bloqueos por %{name}
       heading_html: Listado de bloqueos por %{name}
-      empty: '%{name} todavía no ha creado ningún bloqueo.'
+      empty: '%{name} todavía no ha creado algún bloqueo.'
     show:
       title: '%{block_on} bloqueado por %{block_by}'
       heading_html: '%{block_on} bloqueado por %{block_by}'
@@ -2878,8 +3038,8 @@ es:
       status: 'Estado:'
       show: Mostrar
       edit: Editar
-      revoke: Revocar
-      confirm: ¿Está seguro?
+      revoke: ¡Revocar!
+      confirm: ¿Estás seguro?
       reason: 'Razón del bloqueo:'
       back: Ver todos los bloqueos
       revoker: 'Revocador:'
@@ -2889,7 +3049,7 @@ es:
       not_revoked: (no revocado)
       show: Mostrar
       edit: Editar
-      revoke: Revocar
+      revoke: ¡Revocar!
     blocks:
       display_name: Usuario bloqueado
       creator_name: Creador
@@ -2916,6 +3076,15 @@ es:
       open_title: 'Nota sin resolver #%{note_name}'
       closed_title: 'Nota resuelta #%{note_name}'
       hidden_title: 'Nota oculta #%{note_name}'
+      event_opened_by_html: Creado por %{user} %{time_ago}
+      event_opened_by_anonymous_html: Creado por anónimo %{time_ago}
+      event_commented_by_html: Comentario de %{user} %{time_ago}
+      event_commented_by_anonymous_html: Comentario de un anónimo %{time_ago}
+      event_closed_by_html: Resuelta por %{user} %{time_ago}
+      event_closed_by_anonymous_html: Resuelto por anónimo %{time_ago}
+      event_reopened_by_html: Reactivada por %{user} %{time_ago}
+      event_reopened_by_anonymous_html: Reactivado por anónimo %{time_ago}
+      event_hidden_by_html: Ocultado por %{user} %{time_ago}
       report: denunciar esta nota
       anonymous_warning: Esta nota incluye comentarios de usuarios anónimos que deben
         ser verificados de forma independiente.
@@ -2924,18 +3093,18 @@ es:
       reactivate: Reactivar
       comment_and_resolve: Comentar y resolver
       comment: Comentar
-      report_link_html: Si esta nota contiene información delicada que debe eliminarse,
-        puede %{link}.
-      other_problems_resolve: Para todos los demás problemas con la nota, resuélvalo
+      report_link_html: Si esta nota contiene información sensible que debe eliminarse,
+        puedes %{link}.
+      other_problems_resolve: Para todos los demás problemas con la nota, resuélvelo
         con un comentario.
       other_problems_resolved: Para todos los demás problemas, la resolución es suficiente.
       disappear_date_html: Esta nota resuelta desaparecerá del mapa en %{disappear_in}.
     new:
       title: Nota nueva
-      intro: ¿Detectó un error o falta algo? Informe a otros mapeadores para que podamos
-        solucionarlo. Mueva el marcador a la posición correcta y escriba una nota
-        para explicar el problema.
-      advice: La nota será pública y podría utilizarse para actualizar el mapa, así
+      intro: ¿Detectaste un error o falta algo? Informa a otros mapeadores para que
+        podamos corregirlo. Mueve el marcador a la posición correcta y escribe una
+        nota para explicar el problema.
+      advice: Tu nota será pública y podría utilizarse para actualizar el mapa, así
         que no des información personal ni datos provenientes de mapas o catálogos
         protegidos por derechos de autor.
       add: Añadir nota
@@ -2959,10 +3128,10 @@ es:
       include_marker: Incluir marcador
       center_marker: Centrar mapa en el marcador
       paste_html: Pegar código HTML para incrustar en el sitio web
-      view_larger_map: Ver mapa más grande
+      view_larger_map: Ver el mapa más grande
       only_standard_layer: Sólo la capa estándar se puede exportar como una imagen
     embed:
-      report_problem: Reportar problemas
+      report_problem: Reportar un problema
     key:
       title: Leyenda del mapa
       tooltip: Leyenda del mapa
@@ -2974,11 +3143,11 @@ es:
       locate:
         title: Mostrar mi ubicación
         metersPopup:
-          one: Estás a un metro de este punto
+          one: Estás a %{count} metro de este punto
           other: Estás a %{count} metros de este punto
         feetPopup:
-          one: Estás dentro de una distancia de un pie desde este punto
-          other: Estás dentro de una distancia de %{count} pies desde este punto
+          one: Estás a %{count} pie desde este punto
+          other: Estás a %{count} pies desde este punto
       base:
         standard: Estándar
         cyclosm: CyclOSM
@@ -2993,10 +3162,17 @@ es:
         gps: Trazas GPS públicas
         overlays: Activar superposiciones para solucionar problemas en el mapa
         title: Capas
-      make_a_donation: Hacer un donativo
+      openstreetmap_contributors: Colaboradores de OpenStreetMap
+      make_a_donation: Hacer una donación
       website_and_api_terms: Términos del sitio web y de la API
+      cyclosm_credit: Estilo de teselas por %{cyclosm_link} alojados por %{osm_france_link}
+      cyclosm_name: CyclOSM
       osm_france: OpenStreetMap Francia
+      thunderforest_credit: Teselas cortesía de %{thunderforest_link}
       andy_allan: Andy Allan
+      opnvkarte_credit: Teselas cortesía de %{memomaps_link}
+      memomaps: MeMoMaps
+      hotosm_credit: Estilo de teselas por %{hotosm_link} alojados por %{osm_france_link}
       hotosm_name: Equipo humanitario de OpenStreetMap
     site:
       edit_tooltip: Editar el mapa
@@ -3014,8 +3190,8 @@ es:
         unsubscribe: Cancelar suscripción
         hide_comment: ocultar
         unhide_comment: mostrar
-    edit_help: Mueva el mapa el mapa y acerca a una ubicación que desees editar, luego
-      haga clic aquí.
+    edit_help: Mueve el mapa el mapa y acerca a una ubicación que desees editar, luego
+      haz clic aquí.
     directions:
       ascend: Ascender
       engines:
@@ -3038,81 +3214,81 @@ es:
         no_place: No se pudo localizar «%{place}».
       instructions:
         continue_without_exit: Continuar en %{name}
-        slight_right_without_exit: Gire un poco a la derecha hacia %{name}
-        offramp_right: Tome la rampa de la derecha
-        offramp_right_with_exit: Tome la salida %{exit} a la derecha
-        offramp_right_with_exit_name: Tome la salida %{exit} a la derecha hacia %{name}
-        offramp_right_with_exit_directions: Tome la salida %{exit} a la derecha hacia
+        slight_right_without_exit: Gira un poco a la derecha hacia %{name}
+        offramp_right: Toma la rampa de la derecha
+        offramp_right_with_exit: Toma la salida %{exit} a la derecha
+        offramp_right_with_exit_name: Toma la salida %{exit} a la derecha hacia %{name}
+        offramp_right_with_exit_directions: Toma la salida %{exit} a la derecha hacia
           %{directions}
-        offramp_right_with_exit_name_directions: Tome la salida %{exit} a la derecha
+        offramp_right_with_exit_name_directions: Toma la salida %{exit} a la derecha
           hacia %{name}, en dirección %{directions}
-        offramp_right_with_name: Tome la rampa a la derecha hacia %{name}
-        offramp_right_with_directions: Tome la salida a la derecha hacia %{directions}
-        offramp_right_with_name_directions: Tome la rampa a la derecha hacia %{name},
+        offramp_right_with_name: Toma la rampa a la derecha hacia %{name}
+        offramp_right_with_directions: Toma la salida a la derecha hacia %{directions}
+        offramp_right_with_name_directions: Toma la rampa a la derecha hacia %{name},
           en dirección %{directions}
-        onramp_right_without_exit: Gire a la derecha en la rampa hacia %{name}
-        onramp_right_with_directions: Gire a la derecha en la rampa hacia %{directions}
-        onramp_right_with_name_directions: Gire a la derecha en la rampa hacia %{name},
+        onramp_right_without_exit: Gira a la derecha en la rampa hacia %{name}
+        onramp_right_with_directions: Gira a la derecha en la rampa hacia %{directions}
+        onramp_right_with_name_directions: Gira a la derecha en la rampa hacia %{name},
           en dirección %{directions}
-        onramp_right_without_directions: Gire a la derecha en la rampa
-        onramp_right: Gire a la derecha en la rampa
-        endofroad_right_without_exit: Al final de la calle gire a la derecha hacia
+        onramp_right_without_directions: Gira a la derecha en la rampa
+        onramp_right: Gira a la derecha en la rampa
+        endofroad_right_without_exit: Al final de la calle gira a la derecha hacia
           %{name}
-        merge_right_without_exit: Incorpórese a la derecha hacia %{name}
-        fork_right_without_exit: En la bifurcación, gire a la derecha hacia %{name}
-        turn_right_without_exit: Gire a la derecha hacia %{name}
-        sharp_right_without_exit: Gire cerrado a la derecha hacia %{name}
-        uturn_without_exit: Gire en U a lo largo de %{name}
-        sharp_left_without_exit: Gire cerrado a la izquierda hacia %{name}
-        turn_left_without_exit: Gire a la izquierda hacia %{name}
-        offramp_left: Tome la rampa de la izquierda
-        offramp_left_with_exit: Tome la salida %{exit} de la izquierda
-        offramp_left_with_exit_name: Tome la salida %{exit} a la izquierda hacia %{name}
-        offramp_left_with_exit_directions: Tome la salida %{exit} a la izquierda hacia
+        merge_right_without_exit: Incorpórate a la derecha hacia %{name}
+        fork_right_without_exit: En la bifurcación, gira a la derecha hacia %{name}
+        turn_right_without_exit: Gira a la derecha hacia %{name}
+        sharp_right_without_exit: Gira cerrado a la derecha hacia %{name}
+        uturn_without_exit: Gira en U a lo largo de %{name}
+        sharp_left_without_exit: Gira cerrado a la izquierda hacia %{name}
+        turn_left_without_exit: Gira a la izquierda hacia %{name}
+        offramp_left: Toma la rampa de la izquierda
+        offramp_left_with_exit: Toma la salida %{exit} de la izquierda
+        offramp_left_with_exit_name: Toma la salida %{exit} a la izquierda hacia %{name}
+        offramp_left_with_exit_directions: Toma la salida %{exit} a la izquierda hacia
           %{directions}
-        offramp_left_with_exit_name_directions: Tome la salida %{exit} a la izquierda
+        offramp_left_with_exit_name_directions: Toma la salida %{exit} a la izquierda
           hacia %{name}, en dirección %{directions}
-        offramp_left_with_name: Tome la salida a la izquierda hacia %{name}
-        offramp_left_with_directions: Tome la rampa a la izquierda hacia %{directions}
-        offramp_left_with_name_directions: Tome la rampa a la izquierda hacia %{name},
+        offramp_left_with_name: Toma la salida a la izquierda hacia %{name}
+        offramp_left_with_directions: Toma la rampa a la izquierda hacia %{directions}
+        offramp_left_with_name_directions: Toma la rampa a la izquierda hacia %{name},
           en dirección %{directions}
-        onramp_left_without_exit: Gire a la izquierda en la rampa hacia %{name}
-        onramp_left_with_directions: Gire a la izquierda en la rampa hacia %{directions}
-        onramp_left_with_name_directions: Gire a la izquierda en la rampa hacia %{name},
+        onramp_left_without_exit: Gira a la izquierda en la rampa hacia %{name}
+        onramp_left_with_directions: Gira a la izquierda en la rampa hacia %{directions}
+        onramp_left_with_name_directions: Gira a la izquierda en la rampa hacia %{name},
           en dirección %{directions}
-        onramp_left_without_directions: Gire a la izquierda en la rampa
-        onramp_left: Gire a la izquierda en la rampa
-        endofroad_left_without_exit: Al final de la calle gire a la izquierda hacia
+        onramp_left_without_directions: Gira a la izquierda en la rampa
+        onramp_left: Gira a la izquierda en la rampa
+        endofroad_left_without_exit: Al final de la calle gira a la izquierda hacia
           %{name}
-        merge_left_without_exit: Incorpórese a la izquierda hacia %{name}
-        fork_left_without_exit: En la bifurcación, gire a la izquierda hacia %{name}
-        slight_left_without_exit: Gire un poco a la izquierda hacia %{name}
+        merge_left_without_exit: Incorpórate a la izquierda hacia %{name}
+        fork_left_without_exit: En la bifurcación, gira a la izquierda hacia %{name}
+        slight_left_without_exit: Gira un poco a la izquierda hacia %{name}
         via_point_without_exit: (punto intermedio)
-        follow_without_exit: Siga a %{name}
-        roundabout_without_exit: En la rotonda, tome la salida hacia %{name}
-        leave_roundabout_without_exit: Salga de la rotonda - %{name}
-        stay_roundabout_without_exit: Permanezca en la rotonda - %{name}
+        follow_without_exit: Sigue a %{name}
+        roundabout_without_exit: En la rotonda, toma la salida hacia %{name}
+        leave_roundabout_without_exit: Sal de la rotonda - %{name}
+        stay_roundabout_without_exit: Permanece en la rotonda - %{name}
         start_without_exit: Comenzar en %{name}
-        destination_without_exit: Llegue a su destino
+        destination_without_exit: Llegaste a tu destino
         against_oneway_without_exit: Ir en contra del sentido único en %{name}
         end_oneway_without_exit: Final de sentido único en %{name}
-        roundabout_with_exit: En la rotonda, tome la salida %{exit} hacia %{name}
-        roundabout_with_exit_ordinal: En la rotonda, tome la salida %{exit} hacia
+        roundabout_with_exit: En la rotonda, toma la salida %{exit} hacia %{name}
+        roundabout_with_exit_ordinal: En la rotonda, toma la salida %{exit} hacia
           %{name}
-        exit_roundabout: Salga de la rotonda hacia %{name}
-        unnamed: sin nombre
+        exit_roundabout: Sal de la rotonda hacia %{name}
+        unnamed: vía genérica sin nombre
         courtesy: Indicaciones cortesía de %{link}
         exit_counts:
-          first: 1
-          second: 2
-          third: 3
-          fourth: 4
-          fifth: 5
-          sixth: 6
-          seventh: 7
-          eighth: 8
-          ninth: 9
-          tenth: 10
+          first: 1ª.
+          second: 2ª.
+          third: 3ª.
+          fourth: 4ª.
+          fifth: 5ª.
+          sixth: 6ª.
+          seventh: 7ª.
+          eighth: 8ª.
+          ninth: 9ª.
+          tenth: 10ª.
       time: Hora
     query:
       node: Nodo
@@ -3131,29 +3307,29 @@ es:
   redactions:
     edit:
       heading: Editar censura
-      title: Editar redacción
+      title: Editar censura
     index:
-      empty: No hay ninguna censura que mostrar.
-      heading: Lista de redacciones
+      empty: No hay ninguna censura para mostrar.
+      heading: Lista de censuras
       title: Lista de censuras
     new:
-      heading: Introduzca la información de la censura nueva
-      title: Creando nueva redacción
+      heading: Introduzca la información de la nueva censura
+      title: Creando nueva censura
     show:
       description: 'Descripción:'
-      heading: Mostrando redacción "%{title}"
-      title: Mostrando redacción
+      heading: Mostrando censura "%{title}"
+      title: Mostrando censura
       user: 'Creador:'
       edit: Editar esta censura
-      destroy: Eliminar esta redacción
+      destroy: Eliminar esta censura
       confirm: ¿Está seguro?
     create:
       flash: Se creó la censura.
     update:
       flash: Cambios guardados.
     destroy:
-      not_empty: La redacción no está vacía. Elimine todas las versiones previas pertenecientes
-        a esta redacción antes de destruirla.
+      not_empty: La censura no está vacía. Elimina todas las versiones previas pertenecientes
+        a esta censura antes de destruirla.
       flash: Redacción destruida.
       error: Se produjo un error al destruir esta censura.
   validations:
index dcc183107f0ec52c769c53a951f93b74d4363f35..a358fcd065a2228d5157ecb144a0292bf757d7ff 100644 (file)
@@ -1850,7 +1850,7 @@ fi:
           title: Kirjaudu Facebookin avulla
           alt: Kirjaudu käyttämällä Facebook-tunnustasi
         windowslive:
-          title: Kirjaudu Windows Liven avulla
+          title: Kirjaudu Microsoft-tilin avulla
           alt: Kirjaudu sisään Microsoft-tililläsi
         github:
           title: Kirjaudu GitHubin avulla
index 4022ba8773bfe44913bee43c151f37c39c0d857d..0aa7d67d63e6d9e6b2bbf9bee0e6262e3696c27f 100644 (file)
@@ -1954,6 +1954,9 @@ fr:
       no home location: Vous n’avez pas indiqué votre lieu de domicile.
       update home location on click: Mettre à jour mon lieu de domicile quand je clique
         sur la carte ?
+      show: Afficher
+      delete: Supprimer
+      undelete: Annuler la suppression
     update:
       success: Profil mis à jour.
       failure: Impossible de mettre à jour le profil.
index a397b32b7830957ffd097d41415c92c55a0d93bd..17ef797bc01923855638b7ba6f2f465adcf41186 100644 (file)
@@ -706,7 +706,7 @@ hr:
           street_lamp: Ulična rasvjeta
           tertiary: Lokalna cesta
           tertiary_link: Lokalna cesta
-          track: Makadam
+          track: Poljski ili šumski put
           traffic_signals: Semafori
           trunk: Cesta rezervirana za motorna vozila
           trunk_link: Cesta rezrevirana za mot. voz. - prilazna cesta
@@ -1413,7 +1413,7 @@ hr:
           primary: Primarna cesta
           secondary: Sekundarna cesta
           unclassified: Nerazvrstana cesta
-          track: Neasfaltirani put
+          track: Poljski ili šumski put
           bridleway: Staza za konje
           cycleway: Biciklistička staza
           cycleway_national: Državna biciklistička staza
index 5e3ac71abe8c9b35b98a1d72d86a85090de324d6..5df67b97683e2fbf412bdb853abac493f8194f31 100644 (file)
@@ -118,7 +118,7 @@ hu:
         allow_write_diary: naplóbejegyzések és hozzászólások készítése és ismerősök
           hozzáadása
         allow_write_api: a térkép módosítása
-        allow_read_gpx: magán GPS-nyomvonalaik olvasása
+        allow_read_gpx: magán GPS-nyomvonalaik megtekintése
         allow_write_gpx: GPS-nyomvonalak feltöltése
         allow_write_notes: jegyzetek módosítása
       diary_comment:
@@ -165,7 +165,7 @@ hu:
         auth_provider: Hitelesítésszolgáltató
         auth_uid: Hitelesítési felhasználóazonosító
         email: E-mail
-        email_confirmation: E-mail cím megerősítése
+        email_confirmation: E-mail-cím megerősítése
         new_email: Új e-mail-cím
         active: Aktív
         display_name: Megjelenítendő név
@@ -190,7 +190,7 @@ hu:
           hogy az üzenet nyilvánosan látható lesz. Gondolj arra, hogy nem minden felhasználó
           érti a közösségi szakzsargont, ezért kérjük, próbálj laikus kifejezéseket
           használni.
-        needs_view: Be kell jelentkeznie a felhasználónak, mielőtt a blokkolás feloldódik?
+        needs_view: Be kell-e jelentkeznie a felhasználónak, mielőtt a blokkolás feloldódik?
       user:
         new_email: (soha nem jelenik meg nyilvánosan)
   datetime:
@@ -291,9 +291,9 @@ hu:
           megmaradnak, de nem lesznek láthatóak.
         retain_notes: Térképjegyzeteid és jegyzethozzászólásaid (ha vannak) megmaradnak,
           de nem lesznek láthatóak.
-        retain_changeset_discussions: A módosításkészletekhez fűzött hozzászólásaid
+        retain_changeset_discussions: A módosításcsomagokhoz fűzött hozzászólásaid
           (ha vannak) megőrződnek.
-        retain_email: Az e-mail címed is megmarad.
+        retain_email: Az e-mail-címed is megmarad.
         confirm_delete: Biztos vagy benne?
         cancel: Mégsem
   accounts:
@@ -313,8 +313,8 @@ hu:
         disabled link text: miért nem tudok szerkeszteni?
       contributor terms:
         heading: Hozzájárulási feltételek
-        agreed: Elfogadtad az új hozzájárulási feltételeket.
-        not yet agreed: Még nem fogadtad el az új hozzájárulási feltételeket.
+        agreed: Elfogadtad az új közreműködési feltételeket.
+        not yet agreed: Még nem fogadtad el az új közreműködési feltételeket.
         review link text: Kérjük, kövesd ezt a hivatkozást az új közreműködési feltételek
           áttekintéséhez és elfogadásához.
         agreed_with_pd: Azt is kijelentetted, hogy a szerkesztéseid közkincsnek tekinthetők.
@@ -336,7 +336,7 @@ hu:
       make_edits_public_button: Az összes szerkesztésem nyilvánossá tétele
     update:
       success_confirm_needed: Felhasználói információk sikeresen frissítve. Nézd meg
-        az e-mailjeidet az új e-mail címedet megerősítő levélhez.
+        az e-mailjeidet az új e-mail-címedet megerősítő levélhez.
       success: Felhasználói információk sikeresen frissítve.
     destroy:
       success: Fiók törölve.
@@ -346,7 +346,7 @@ hu:
     created_ago_html: Létrehozva %{time_ago}
     closed_ago_html: Lezárva %{time_ago}
     created_ago_by_html: Létrehozta %{user} %{time_ago}
-    closed_ago_by_html: Lezárva %{time_ago}, %{user} által
+    closed_ago_by_html: Lezárta %{user} %{time_ago}
     deleted_ago_by_html: Törölte %{user} %{time_ago}
     edited_ago_by_html: Szerkesztette %{user} %{time_ago}
     version: Verzió
@@ -374,8 +374,10 @@ hu:
       relation: Kapcsolatok (%{count})
       relation_paginated: 'Kapcsolatok (%{x}-%{y} ennyiből: %{count})'
       comment: Hozzászólások (%{count})
-      changesetxml: Changeset XML
-      osmchangexml: osmChange XML
+      hidden_comment_by_html: Rejtett hozzászólás %{user} felhasználótól %{time_ago}
+      comment_by_html: Hozzászólt %{user} %{time_ago}
+      changesetxml: Módosításcsomag adatai (XML)
+      osmchangexml: Módosításcsomag tartalma (osmChange XML)
       feed:
         title: '%{id} módosításcsomag'
         title_comment: '%{id} módosításcsomag - %{comment}'
@@ -391,6 +393,7 @@ hu:
       history_title_html: '%{name} vonal előzményei'
       nodes: Pontok
       nodes_count:
+        one: '%{count} pont'
         other: '%{count} pont'
       also_part_of_html:
         one: '%{related_ways} vonal része'
@@ -453,7 +456,7 @@ hu:
       wikimedia_commons_link: A(z) %{page} elem a Wikimédia Commons-on
       telephone_link: '%{phone_number} felhívása'
       colour_preview: '%{colour_value} szín előnézete'
-      email_link: Email %{email}
+      email_link: E-mail %{email}
     query:
       title: Objektumok lekérdezése
       introduction: Kattints a térképre a közeli objektumok megtalálásához.
@@ -565,9 +568,9 @@ hu:
       comment_link: Hozzászólás ehhez a bejegyzéshez
       reply_link: Üzenet küldése a szerzőnek
       comment_count:
-        zero: Nincs hozzászólás
         one: '%{count} hozzászólás'
         other: '%{count} hozzászólás'
+      no_comments: Nincs hozzászólás
       edit_link: Bejegyzés szerkesztése
       hide_link: Bejegyzés elrejtése
       unhide_link: Bejegyzés megjelenítése
@@ -613,8 +616,8 @@ hu:
     contact:
       contact_url_title: A különféle kapcsolatfelvételi csatornák magyarázata
       contact: kapcsolat
-      contact_the_community_html: Nyugodtan keresse fel az OpenStreetMap közösséget
-        (%{contact_link}), ha hibás linket vagy más hibát talál. Kérjük, ne felejtse
+      contact_the_community_html: Nyugodtan keresd fel az OpenStreetMap közösséget
+        (%{contact_link}), ha hibás linket vagy más hibát találtál. Kérjük, ne felejtsd
         el feljegyezni a hibás oldal pontos URL-jét.
     forbidden:
       title: Tiltott
@@ -643,6 +646,10 @@ hu:
       success: '%{name} eltávolítva az ismerőseid közül.'
       not_a_friend: '%{name} nem tartozik az ismerőseid közé.'
   geocoder:
+    search:
+      title:
+        results_from_html: 'Találatok innen: %{results_link}'
+        latlon: Belső
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -1418,7 +1425,7 @@ hu:
         towns: Kisvárosok
         places: Helyek
     results:
-      no_results: Nem található eredmény
+      no_results: Nincs találat
       more_results: További eredmények
   issues:
     index:
@@ -1435,29 +1442,30 @@ hu:
       status: Állapot
       reports: Bejelentések
       last_updated: Utoljára frissítve
+      last_updated_time_ago_user_html: '%{time_ago} %{user} felhasználó által'
       link_to_reports: Bejelentések megtekintése
       reports_count:
         one: '%{count} bejelentés'
         other: '%{count} bejelentés'
       reported_item: Jelentett elem
       states:
-        ignored: Mellőzve
+        ignored: Figyelmen kívül hagyva
         open: Nyitva
         resolved: Megoldva
     show:
       title: '#%{issue_id} probléma %{status}'
       reports:
-        zero: Nincs bejelentés
-        one: 1 bejelentés
+        one: '%{count} bejelentés'
         other: '%{count} bejelentés'
+      no_reports: Nincs bejelentés
       report_created_at: Először bejelentve %{datetime} időpontban
       last_resolved_at: Utoljára megoldva %{datetime} időpontban
       last_updated_at: Utoljára frissítve %{displayname} által %{datetime} időpontban
       resolve: Megoldás
-      ignore: Mellőz
+      ignore: Figyelmen kívül hagyás
       reopen: Újramegnyitás
       reports_of_this_issue: Ezen probléma bejelentései
-      read_reports: Bejelentések olvasása
+      read_reports: Bejelentések elolvasása
       new_reports: Új bejelentések
       other_issues_against_this_user: Más problémák ezzel a felhasználóval
       no_other_issues: Nincsenek további problémák ezzel a felhasználóval kapcsolatban
@@ -1465,7 +1473,7 @@ hu:
     resolve:
       resolved: 'A probléma állapota átállítva a következőre: „megoldva”'
     ignore:
-      ignored: 'A probléma állapota átállítva a következőre: „mellőzve”'
+      ignored: 'A probléma állapota átállítva a következőre: „figyelmen kívül hagyva”'
     reopen:
       reopened: 'A probléma állapota átállítva a következőre: „nyitott”'
     comments:
@@ -1623,7 +1631,7 @@ hu:
     email_confirm:
       subject: '[OpenStreetMap] E-mail-cím megerősítése'
       greeting: Szia!
-      hopefully_you: 'Valaki (remélhetőleg te) szeretné megváltoztatni az e-mail címét
+      hopefully_you: 'Valaki (remélhetőleg te) szeretné megváltoztatni az e-mail-címét
         a %{server_url} címen, erre: %{new_address}.'
       click_the_link: Ha ez Te vagy, akkor a módosítás megerősítéséhez kattints az
         alábbi hivatkozásra.
@@ -1631,7 +1639,7 @@ hu:
       subject: '[OpenStreetMap] Jelszó alaphelyzetbe állításának kérése'
       greeting: Szia!
       hopefully_you: Valaki (remélhetőleg te) jelszó visszaállítást kért, ehhez az
-        e-mail címhez tartozó openstreetmap.org felhasználónak.
+        e-mail-címhez tartozó openstreetmap.org felhasználónak.
       click_the_link: Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints
         az alábbi hivatkozásra.
     note_comment_notification:
@@ -1712,11 +1720,11 @@ hu:
     confirm_resend:
       failure: '%{name} felhasználó nem található.'
     confirm_email:
-      heading: E-mail cím módosításának megerősítése
-      press confirm button: Új e-mail címed megerősítéséhez nyomd meg az alábbi megerősítés
+      heading: E-mail-cím módosításának megerősítése
+      press confirm button: Új e-mail-címed megerősítéséhez nyomd meg az alábbi megerősítés
         gombot.
       button: Megerősítés
-      success: Az e-mail címed módosítása megerősítve!
+      success: Az e-mail-címed módosítása megerősítve!
       failure: Ezzel a tokennel már meg lett erősítve egy e-mail cím.
       unknown_token: Ez a megerősítő kód lejárt, vagy nem létezik.
     resend_success_flash:
@@ -1778,7 +1786,7 @@ hu:
         szeretnél, nem ez a felhasználó kapta. A válaszadáshoz jelentkezz be a helyes
         felhasználónévvel.
     show:
-      title: Üzenet olvasása
+      title: Üzenet elolvasása
       reply_button: Válasz
       unread_button: Jelölés olvasatlanként
       destroy_button: Törlés
@@ -1797,9 +1805,9 @@ hu:
     lost_password:
       title: Elvesztett jelszó
       heading: Elfelejtetted jelszavad?
-      email address: 'E-mail cím:'
+      email address: 'E-mail-cím:'
       new password button: Jelszó alaphelyzetbe állítása
-      help_text: Add meg az e-mail címed, amellyel regisztráltál. Küldeni fogunk egy
+      help_text: Add meg az e-mail-címed, amellyel regisztráltál. Küldeni fogunk egy
         hivatkozást, amellyel visszaállíthatod a jelszavad.
       notice email on way: Sajnáljuk, hogy elvesztetted :-( de már úton van egy e-mail,
         így nemsokára alaphelyzetbe állíthatod.
@@ -1844,6 +1852,8 @@ hu:
       no home location: Nem adtad meg az otthonod helyét.
       update home location on click: Frissüljön-e az otthonom helye, amikor a térképre
         kattintok?
+      delete: Törlés
+      undelete: Törlés visszavonása
     update:
       success: Profil frissítve.
       failure: Nem sikerült frissíteni a profilt.
@@ -1851,7 +1861,7 @@ hu:
     new:
       title: Bejelentkezés
       heading: Bejelentkezés
-      email or username: 'E-mail cím vagy felhasználónév:'
+      email or username: 'E-mail-cím vagy felhasználónév:'
       password: 'Jelszó:'
       openid_html: '%{logo} OpenID:'
       remember: Emlékezz rám
@@ -1873,8 +1883,8 @@ hu:
           title: Bejelentkezés Facebook-kal
           alt: Bejelentkezés Facebook fiókkal
         windowslive:
-          title: Bejelentkezés Windows Live-val.
-          alt: Bejelentkezés Windows Live fiókkal
+          title: Bejelentkezés Microsofttal.
+          alt: Bejelentkezés Microsoft fiókkal
         github:
           title: Bejelentkezés GitHub-bal
           alt: Bejelentkezés GitHub fiókkal
@@ -1892,7 +1902,7 @@ hu:
       heading: Kijelentkezés az OpenStreetMapból
       logout_button: Kijelentkezés
     suspended_flash:
-      suspended: Sajnáljuk, fiókja gyanús tevékenység miatt fel lett függesztve.
+      suspended: Sajnáljuk, fiókod gyanús tevékenység miatt fel lett függesztve.
       contact_support_html: Kérjük vedd fel a kapcsolatot a %{support_link}-sal, ha
         meg akarod vitatni ezt.
       support: támogatás
@@ -1917,6 +1927,7 @@ hu:
   site:
     about:
       next: Következő
+      heading_html: '%{copyright}OpenStreetMap %{br} közreműködők'
       used_by_html: '%{name} több ezer weboldalnak, mobilalkalmazásnak és hardvereszköznek
         biztosít térképadatokat'
       lede_text: Az OpenStreetMapet egy térképszerkesztő-közösség építi, akik hozzáadnak
@@ -1927,8 +1938,34 @@ hu:
         A közreműködők műholdképeket, GPS-eszközöket és hagyományos térképeket használnak,
         hogy ellenőrizzék az OSM pontosságát és naprakészségét.
       community_driven_title: Közösség által vezérelt
+      community_driven_1_html: |-
+        Az OpenStreetMap közössége sokszínű, szenvedélyes és napról napra növekszik. Közreműködőink között vannak lelkes térképészek, térinformatikai szakemberek, az OSM szervereit üzemeltető mérnökök, katasztrófa sújtotta területeket feltérképező humanitárius szakemberek és önkéntesek és még nagyon sokan mások.
+        A közösségről többet megtudhat a következő oldalakon: %{osm_blog_link}, %{user_diaries_link}, %{community_blogs_link} és %{osm_foundation_link}.
+      community_driven_osm_blog: OpenStreetMap blog
+      community_driven_user_diaries: felhasználók naplói
+      community_driven_community_blogs: közösségi blogok
+      community_driven_osm_foundation: OSM Alapítvány
       open_data_title: Nyílt adat
+      open_data_1_html: 'Az OpenStreetMap %{open_data}: szabadon felhasználhatja bármilyen
+        célra, amennyiben az OpenStreetMap és a közreműködők nevét megemlíti. Ha az
+        adatokat bizonyos módon módosítja vagy felhasználja, az eredményt csak ugyanezen
+        licenc alapján terjesztheti. További részletek: %{copyright_license_link}.'
+      open_data_open_data: nyílt adat
+      open_data_copyright_license: szerzői jogok (copyright) és licenc
       legal_title: Jogi segítség
+      legal_1_1_html: 'Ezt a webhelyet és sok más kapcsolódó szolgáltatást hivatalosan
+        az %{openstreetmap_foundation_link} (OSMF) üzemelteti a közösség nevében.
+        Az összes OSMF által üzemeltetett szolgáltatás igénybevételére irányadók a
+        következők: %{terms_of_use_link}, %{aup_link} és %{privacy_policy_link}.'
+      legal_1_1_openstreetmap_foundation: OpenStreetMap Alapítvány
+      legal_1_1_terms_of_use: Felhasználási Feltételek
+      legal_1_1_aup: Elfogadható felhasználási szabályzat
+      legal_1_1_privacy_policy: Adatvédelmi irányelvek
+      legal_2_1_html: Kérjük, %{contact_the_osmf_link}, ha licencekkel kapcsolatos,
+        szerzői jogi vagy egyéb jogi kérdései vannak.
+      legal_2_1_contact_the_osmf: lépj kapcsolatba az OSM Alapítvánnyal
+      legal_2_2_html: Az OpenStreetMap, a nagyító logó és a State of the Map %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: az OSMF bejegyzett védjegye
       partners_title: Partnerek
     copyright:
       foreign:
@@ -1956,15 +1993,42 @@ hu:
           azonos licenccel terjesztheted. Jogaid és kötelességeid a teljes %{legal_code_link}
           ismerteti.
         introduction_2_legal_code: jogi kódex
+        introduction_3_html: Dokumentációnkra a %{creative_commons_link} (CC BY-SA
+          2.0) licenc vonatkozik.
+        introduction_3_creative_commons: Creative Commons „Nevezd meg! – Így add tovább!”
+          2.0
         introduction_3_creative_commons_url: https://creativecommons.org/licenses/by-sa/2.0/deed.hu
         credit_title_html: Hogyan kell feltüntetned az OpenStreetMapet?
-        credit_1_html: 'Ahol az OpenStreetMap adatait használja, ott kérjük tüntesse
+        credit_1_html: 'Ahol az OpenStreetMap adatait használod, ott kérjük, tüntesd
           fel az alább felsoroltakat:'
+        credit_2_1: Úgy nevezd meg az OpenStreetMapet, hogy feltünteted a szerzői
+          jogi (copyright) jegyzetünket.
+        credit_2_2: Tedd egyértelművé, hogy az adatok az Open Database Licenc szerint
+          állnak rendelkezésre.
+        credit_3_html: A szerzői jogi megjegyzés esetében különböző követelményeink
+          vannak arra, hogy hogyan kell megjeleníteni, attól függően, hogy hogyan
+          használod az adatainkat. Például eltérő szabályok vonatkoznak a szerzői
+          jogi megjegyzés megjelenítésére attól függően, hogy böngészhető térképet,
+          nyomtatott térképet vagy statikus képet készítettél. A követelmények részletekeit
+          a %{attribution_guidelines_link} oldalon találod.
+        credit_3_attribution_guidelines: megnevezési iránymutatások
+        credit_4_1_html: Annak egyértelművé tétele érdekében, hogy az adatok az Open
+          Database License (nyílt adatbázis licenc) alatt érhetőek el, hivatkozz %{this_copyright_page_link}.
+          Alternatív megoldásként – és ha az OSM-et adat formájában terjeszted akkor
+          követelményként – a licenc(ek)et közvetlenül is megnevezheted és belinkelheted.
+          Ha nem lehet linkelni (pl. nyomtatott munkák), javasoljuk, hogy az olvasóidat
+          közvetlenül irányítsd hozzánk az openstreetmap.org (vagy csak "OpenStreetMap")
+          megjelöléssel és az opendatacommons.org-ra. Ebben a példában a megjelölés
+          a térkép sarkán jelenik meg.
+        credit_4_1_this_copyright_page: erre a szerzői jogi oldalra
         attribution_example:
           alt: Példa arra, hogyan jelenjen meg az OpenStreetMap-re való hivatkozás
             egy weboldalon
           title: Példa egy hivatkozásra
         more_title_html: Tudj meg többet!
+        more_1_1_html: További információ az adataink felhasználásáról és a jóváírásról
+          %{osmf_licence_page_link}.
+        more_1_1_osmf_licence_page: az OSMF licencekkel foglalkozó oldalán
         more_2_1_html: 'Bár az OpenStreetMap nyílt adat, harmadik feleknek nem tudunk
           ingyenes térkép-API-t biztosítani. A részleteket megtekintheted a következő
           oldalakon: %{api_usage_policy_link}, %{tile_usage_policy_link} és %{nominatim_usage_policy_link}.'
@@ -1975,8 +2039,19 @@ hu:
         contributors_intro_html: 'Több ezer egyéni közreműködőnk van. További, szabadon
           elérhető adatokat is felhasználunk nemzeti térkép intézetektől és más forrásokból,
           többek között:'
+        contributors_at_credit_html: '%{austria} adatai: %{stadt_wien_link} (%{cc_by_link}
+          licenc szerint), valamint %{land_vorarlberg_link} és Tirol tartomány (%{cc_by_at_with_amendments_link}
+          licenc szerint).'
+        contributors_at_austria: Ausztria
+        contributors_at_stadt_wien: Stadt Wien (Bécs)
+        contributors_at_cc_by: CC BY
         contributors_at_cc_by_url: https://creativecommons.org/licenses/by/3.0/at/deed.hu
+        contributors_at_land_vorarlberg: Vorarlberg tartomány
         contributors_at_land_vorarlberg_url: https://vorarlberg.at/-/wms-dienste
+        contributors_at_cc_by_at_with_amendments: módosított CC BY AT
+        contributors_au_australia: Ausztrália
+        contributors_au_geoscape_australia: Geoscape Australia
+        contributors_ca_canada: Kanada
         contributors_footer_2_html: Az adatok befoglalása az OpenStreetMapbe nem jelenti
           azt, hogy az eredeti adatszolgáltató támogatja az OpenStreetMapet, garanciát
           nyújt vagy felelősséget vállal rá.
@@ -2010,7 +2085,7 @@ hu:
       area_to_export: Exportálandó terület
       manually_select: Más terület kézi kijelölése
       format_to_export: Exportálás formátuma
-      osm_xml_data: OpenStreetMap XML adat
+      osm_xml_data: OpenStreetMap XML adatok
       map_image: Térkép képe (az alapréteget jeleníti meg)
       embeddable_html: Beágyazható HTML
       licence: Licenc
@@ -2020,9 +2095,9 @@ hu:
       too_large:
         advice: Ha a fenti exportálás sikertelen lenne, próbáld meg az alábbi listából
           valamelyik lehetőséget.
-        body: Ez a terület túl nagy ahhoz, hogy exportálásra kerüljön OpenStreetMap
-          XML adatként. Közelíts, vagy jelölj ki kisebb területet. Esetleg használd
-          az alábbi listából valamelyik nagy adatmennyiségek letöltését támogató módszert.
+        body: Ez a terület túl nagy ahhoz, hogy OpenStreetMap XML adatként exportálni
+          lehessen. Közelíts, vagy jelölj ki kisebb területet. Esetleg az alábbi listából
+          használd valamelyik nagy adatmennyiség letöltését támogató módszert.
         planet:
           title: Planet OSM
           description: A teljes OpenStreetMap adatbázis rendszeresen frissített másolatai
@@ -2111,7 +2186,7 @@ hu:
       get_help_here: Itt kaphatsz segítséget
       welcome_mat: Nézd meg az előszobát
     sidebar:
-      search_results: Keresés eredményei
+      search_results: Keresés eredménye
       close: Bezár
     search:
       search: Keresés
@@ -2338,6 +2413,10 @@ hu:
       description: Böngészés a legutóbb feltöltött GPS-nyomvonalak között
       tagged_with: ' %{tags} címkével'
       empty_title: Itt még nincs semmi
+      empty_upload_html: '%{upload_link} vagy nézzen utána a GPS nyomvonalkövetésnek
+        a  %{wiki_link}.'
+      upload_new: Töltsön fel új nyomvonalat
+      wiki_page: wiki-oldalon
       upload_trace: Nyomvonal feltöltése
       all_traces: Minden nyomvonal
       my_traces: Saját nyomvonalak
@@ -2366,8 +2445,8 @@ hu:
       not_an_admin: Ennek a műveletnek az elvégzéséhez adminisztrátori jogosultsággal
         kell rendelkezned.
     setup_user_auth:
-      blocked_zero_hour: Sürgős üzeneted van az OpenStreetMap weboldalon. El kell
-        olvasnod az üzenetet, mielőtt elmentheted a változtatásokat.
+      blocked_zero_hour: Sürgős üzeneted van az OpenStreetMap weboldalon. A szerkesztésed
+        elmentése előtt el kell olvasnod.
       blocked: Az API-hoz való hozzáférésed blokkolva lett. A részletek megtekintéséhez
         jelentkezz be a webes felületen.
       need_to_see_terms: Az API-hoz való hozzáférésed ideiglenesen felfüggesztésre
@@ -2385,12 +2464,12 @@ hu:
         kér a felhasználói fiókodhoz. Kérlek, jelöld, ha azt szeretnéd, hogy az alkalmazás
         képes legyen az alábbiakra. Annyit választasz ki, amennyit szeretnél.
       allow_to: 'Az alábbiak engedélyezése a kliensalkalmazásnak:'
-      allow_read_prefs: felhasználói beállítások olvasása.
+      allow_read_prefs: felhasználói beállítások elolvasása.
       allow_write_prefs: felhasználói beállítások módosítása.
       allow_write_diary: naplóbejegyzések, hozzászólások létrehozása és ismerősök
         hozzáadása.
       allow_write_api: a térkép módosítása.
-      allow_read_gpx: magán GPS-nyomvonalaid olvasása.
+      allow_read_gpx: magán GPS-nyomvonalaid megtekintése.
       allow_write_gpx: GPS-nyomvonalak feltöltése.
       allow_write_notes: jegyzet módosítása
       grant_access: Hozzáférés megadása
@@ -2407,11 +2486,11 @@ hu:
     permissions:
       missing: Nem engedted meg az alkalmazás számára, hogy hozzáférjen ehhez a létesítményhez
     scopes:
-      read_prefs: Felhasználói beállítások olvasása
+      read_prefs: Felhasználói beállítások elolvasása
       write_prefs: Felhasználói beállítások módosítása
       write_diary: Naplóbejegyzések és hozzászólások készítése, és ismerősök hozzáadása
       write_api: A térkép módosítása
-      read_gpx: Magán nyomvonalak olvasása
+      read_gpx: Magán nyomvonalak megtekintése
       write_gpx: GPS-nyomvonalak feltöltése
       write_notes: Jegyzetek módosítása
       read_email: Felhasználó e-mail-címének elolvasása
@@ -2511,12 +2590,14 @@ hu:
       title: Felhasználói fiók létrehozása
       no_auto_account_create: Sajnos jelenleg nem tudunk neked létrehozni automatikusan
         egy felhasználói fiókot.
-      please_contact_support_html: Kérjük, lépjen kapcsolatba velünk (%{support_link}),
-        hogy elrendezhessük a fiók létrehozását. Kérését igyekszünk a lehető leggyorsabban
+      please_contact_support_html: Kérjük, lépj kapcsolatba velünk (%{support_link}),
+        hogy elrendezhessük a fiók létrehozását. Kérésedet igyekszünk a lehető leggyorsabban
         feldolgozni.
       support: támogatás
       about:
         header: Szabad és szerkeszthető
+        paragraph_2: Regisztrálj a közreműködés megkezdéséhez. A fiókod megerősítéséhez
+          küldeni fogunk egy e-mailt.
       display name description: A nyilvánosan megjelenített felhasználóneved. A beállításaidban
         később megváltoztathatod.
       external auth: 'Harmadik fél általi hitelesítés:'
@@ -2524,7 +2605,7 @@ hu:
       auth no password: Harmadik féltől származó hitelesítés esetén a jelszó nem kötelező,
         de néhány extra eszköz vagy szerver igényelhet egyet.
       continue: Regisztráció
-      terms accepted: Köszönjük, hogy elfogadtad az új hozzájárulási feltételeket!
+      terms accepted: Köszönjük, hogy elfogadtad az új közreműködési feltételeket!
     terms:
       title: Feltételek
       heading: Feltételek
@@ -2586,7 +2667,7 @@ hu:
       ct undecided: Nem eldöntött
       ct declined: Elutasítva
       latest edit: 'Utolsó szerkesztés (%{ago}):'
-      email address: 'E-mail cím:'
+      email address: 'E-mail-cím:'
       created from: 'Készítve innen:'
       status: 'Állapot:'
       spam score: 'Spam pontszám:'
@@ -2783,6 +2864,11 @@ hu:
       open_title: '%{note_name} megoldatlan jegyzet'
       closed_title: '%{note_name} megoldott jegyzet'
       hidden_title: '%{note_name} rejtett jegyzet'
+      event_opened_by_html: Létrehozta %{user} %{time_ago}
+      event_commented_by_html: Hozzászólt %{user} %{time_ago}
+      event_closed_by_html: Megoldotta %{user} %{time_ago}
+      event_reopened_by_html: Újraaktiválta %{user} %{time_ago}
+      event_hidden_by_html: Elrejtette %{user} %{time_ago}
       report: jegyzet bejelentése
       anonymous_warning: Ez a jegyzet névtelen felhasználók hozzászólásait is tartalmazza,
         amelyeket független módon kell ellenőrizni.
@@ -2862,6 +2948,7 @@ hu:
         gps: Nyilvános GPS-nyomvonalak
         overlays: További rétegek engedélyezése a térkép hibáinak javítása érdekében
         title: Rétegek
+      openstreetmap_contributors: OpenStreetMap közreműködők
     site:
       edit_tooltip: Térkép szerkesztése
       edit_disabled_tooltip: Közelíts a térkép szerkesztéséhez
index 3ac1f4a335a6cf4f78d5c59f83ed93f6b89f84f0..7a4063e4b5105769974c4b7493e1cb951ebef58c 100644 (file)
@@ -1839,6 +1839,9 @@ ia:
       no home location: Tu non ha entrate tu position de origine.
       update home location on click: Actualisar le position de origine quando io clicca
         sur le carta?
+      show: Monstrar
+      delete: Deler
+      undelete: Disfacer deletion
     update:
       success: Profilo actualisate.
       failure: Non poteva actualisar le profilo.
index f19773d34bdfaca1fc0852781d79a74afd670895..e000c57818703ff1e3764576fb9d6637fa0c9324 100644 (file)
@@ -1896,6 +1896,8 @@ it:
       home location: Posizione
       no home location: Non si è inserita la propria posizione.
       update home location on click: Aggiorna la posizione quando clicco sulla mappa?
+      show: Mostra
+      delete: Cancella
     update:
       success: Il profilo è stato aggiornato.
       failure: Impossibile aggiornare il profilo.
index 9c945b80611f8dd1cafc0a8a7a62119ab910cb47..9869ab108cd800af603d1e21a1598e756c999c3f 100644 (file)
@@ -1766,6 +1766,7 @@ ja:
       home location: ホーム地点
       no home location: あなたはまだホーム地点を登録していません。
       update home location on click: ホーム地点を、地図上のクリックした地点に変更
+      delete: 削除
     update:
       success: プロフィール更新済み。
       failure: プロファイルを更新できませんでした。
index 457735b7fc7c2b61442419caf2ed36dde29e2624..9fe8930a379baa515a8adc7079d50948627071a2 100644 (file)
@@ -659,7 +659,7 @@ ko:
           fountain: 분수대
           fuel: 주유소
           gambling: 도박장
-          grave_yard: 묘지
+          grave_yard: (종교)묘역
           grit_bin: 모래상자
           hospital: 병원
           hunting_stand: 사냥장
@@ -889,7 +889,7 @@ ko:
           aquaculture: 수경 재배
           basin: 유역
           brownfield: 재개발지역
-          cemetery: ë¬\98ì§\80
+          cemetery: ë¬\98ì\97­
           commercial: 상업/관공서 지역
           conservation: 보존 지역
           construction: 공사 지역
@@ -1954,7 +1954,7 @@ ko:
           - 저수지
           farm: 농장
           brownfield: 재개발지역
-          cemetery: ë¬\98ì§\80
+          cemetery: ë¬\98ì\97­
           allotments: 텃밭
           pitch: 운동장
           centre: 스포츠 센터
index 18f7b6bc3697098c6b9c1f37d0fa878408fa7cdc..7d92e3a5ac69ca722c0e2c0615dbabfb3f2ceeeb 100644 (file)
@@ -1809,6 +1809,9 @@ lb:
       home location: Heemecht
       no home location: Du hues nach keng Heemecht aginn.
       update home location on click: Heemecht beim Klick op d'Kaart aktualiséieren
+      show: Weisen
+      delete: Läschen
+      undelete: Läsche réckgängeg maachen
     update:
       success: Profil aktualiséiert.
       failure: De Profil konnt net aktualiséiert ginn.
index 6a9af30963553dc8c9a4bfff7f8e3ce202cd33ba..b09bc0c78c35b859923db04eec83b0adfcb4dffb 100644 (file)
@@ -22,6 +22,7 @@
 # Author: Techwebpd
 # Author: Tomasdd
 # Author: UndefinedCarp
+# Author: Vac31.
 # Author: Zygimantus
 ---
 lt:
@@ -415,7 +416,7 @@ lt:
       nodes_count:
         one: '{%count} taškas'
         few: '%{count} taškai'
-        many: '{%count} taškas'
+        many: '{%count} taškus'
         other: '%{count} taškų'
       also_part_of_html:
         one: dalis kelio %{related_ways}
@@ -592,6 +593,7 @@ lt:
         one: '%{count} komentaras'
         zero: Nėra komentarų
         other: '%{count} komentarai (-ų)'
+      no_comments: Jokių komentarų
       edit_link: Keisti šį įrašą
       hide_link: Slėpti šį įrašą
       unhide_link: Nebeslėpti šio įrašo
@@ -1352,6 +1354,7 @@ lt:
       title: Problemos
       select_status: Parinkite būseną
       select_type: Pasirinkite tipą
+      not_updated: Neatnaujinta
       search: Ieškoti
       search_guidance: 'Problemų paieška:'
       user_not_found: Naudotojo nėra
@@ -1377,6 +1380,7 @@ lt:
         few: '%{count} pranešimai'
         many: '{%count} pranešimas'
         other: '%{count} pranešimų'
+      no_reports: Jokių ataskaitų
       report_created_at: Pirmą kartą pranešta %{datetime}
       last_resolved_at: Paskutinį kartą išspręsta %{datetime}
       last_updated_at: Paskutinį kartą atnaujinta %{datetime} naudotojo %{displayname}
@@ -1852,8 +1856,19 @@ lt:
         orotofoto nuotraukas, GPS įrenginius ir paprastus lauko žemėlapius, tikrindami,
         kad OSM duomenys yra teisingi ir aktualūs.
       community_driven_title: Bendruomenės vystomas
+      community_driven_community_blogs: bendruomenių tinklaraščiai
+      community_driven_osm_foundation: OSM fondas
       open_data_title: Atviri duomenys
+      open_data_1_html: 'OpenStreetMap yra %{open_data}: gali laisvai jį naudoti bet
+        kokiais tikslais, jei tik nurodysi OpenStreetMap ir jo bendradarbius. Jei
+        pakeisi duomenis arba juos tam tikrais būdais papildysi, gali platinti rezultatą
+        tik pagal tą pačią licenciją. Išsamesnės informacijos rasi %{copyright_license_link}.'
+      open_data_open_data: atviri duomenys
+      open_data_copyright_license: Autorių teisių ir licencijos puslapis
       legal_title: Teisės
+      legal_1_1_openstreetmap_foundation: OpenStreetMap fondas
+      legal_1_1_terms_of_use: Naudojimo sąlygos
+      legal_2_1_contact_the_osmf: susisiekti su OSMF
       partners_title: Partneriai
     copyright:
       foreign:
@@ -2122,12 +2137,15 @@ lt:
         title: Pagrindiniai žymėjimo terminai
         paragraph_1: OpenStreetMap turi savo žodyną. Čia keli pagrindiniai naudojami
           terminai/žodžiai.
+        a_way_html: '%{way} – tai linija arba teritorija, kaip kelias, upelis, ežeras
+          ar pastatas.'
         editor: redaktorius
         node: taškas
         way: kelias
         tag: žyma
       rules:
         title: Taisyklės!
+        imports: Importai
         automated_edits: Automatizuoti pakeitimai
       start_mapping: Pradėti žymėti
       add_a_note:
@@ -2137,6 +2155,13 @@ lt:
         the_map: žemėlapis
     communities:
       title: Bendruomenės
+      lede_text: |-
+        Žmonės iš viso pasaulio prisideda prie OpenStreetMap arba naudojasi juo.
+        Daugelis dalyvauja kaip individualūs asmenys, kiti yra sukūrę bendruomenes.
+        Šios grupės yra įvairaus dydžio ir atstovauja įvairioms geografinėms teritorijoms – nuo mažų miestelių iki didelių daugiašalių regionų.
+        Jos taip pat gali būti formalios arba neformalios.
+      local_chapters:
+        title: Vietiniai skyriai
   traces:
     visibility:
       private: Privatus (dalinamas tik kaip anonimiškas, taškai nesurikiuoti)
@@ -2398,6 +2423,11 @@ lt:
       no_auto_account_create: Deja šiuo metu negalime jums automatiškai sukurti paskyros.
       about:
         header: Laisvas ir redaguojamas
+        paragraph_1: Skirtingai nuo kitų žemėlapių, OpenStreetMap žemėlapį visiškai
+          sukūrė žmonės, tokie kaip tu, ir jį nemokamai gali taisyti, atnaujinti,
+          atsisiųsti ir naudoti kiekvienas.
+        paragraph_2: Užsiregistruok ir pradėk prisidėti. Atsiųsime el. laišką, kad
+          patvirtintume tavo paskyrą.
       display name description: Jūsų viešai rodomas naudotojo vardas. Jei norėsite,
         galėsite jį vėliau pakeisti savo nustatymuose.
       external auth: 'Trečios šalies autentikacija:'
@@ -2406,6 +2436,7 @@ lt:
         bet kai kuriems papildomiems įrankiams arba serveriui gali jo prireikti.
       continue: Užsiregistruoti
       terms accepted: Ačiū, kad patvirtinote naująsias talkininkų sąlygas!
+      privacy_policy: privatumo politika
     terms:
       title: Sąlygos
       heading: Sąlygos
@@ -2426,6 +2457,8 @@ lt:
         france: Prancūzija
         italy: Italija
         rest_of_world: Likęs pasaulis
+    terms_declined_flash:
+      terms_declined_link: šis viki puslapis
     no_such_user:
       title: Nėra tokio naudotojo
       heading: Naudotojas %{user} neegzistuoja
index 84c971af52a35f32a75e91ee4c05b67279da7640..720b34c6bcea61ebbaa033481395aeb25a4494a4 100644 (file)
@@ -1828,6 +1828,9 @@ mk:
       no home location: Немате внесено матична местоположба.
       update home location on click: Подновувај ја матичната местоположба кога ќе
         стиснам на картата
+      show: Прикажи
+      delete: Избриши
+      undelete: Откажи бришење
     update:
       success: Профилот е подновен.
       failure: Не можев да го подновам профилот.
index 9a5fb3a94aab6f9c1476ed37b634b9a04618afb0..34e08cea6eef47f80e9c17397b291ac64ef11337 100644 (file)
@@ -1588,6 +1588,9 @@ nb:
       home location: Hjemmeposisjon
       no home location: Du har ikke angitt din hjemmeposisjon.
       update home location on click: Oppdater hjemmeposisjon når jeg klikker på kartet?
+      show: Vis
+      delete: Slett
+      undelete: Angre sletting
   sessions:
     new:
       title: Logg inn
index 058ada96cc9ec8aa15eb0d45d07ba845eb9eb1a0..95794336a795d482c951f3622cc58f09fbc78195 100644 (file)
@@ -1900,6 +1900,9 @@ nl:
       home location: Thuislocatie
       no home location: Er is geen thuislocatie ingevoerd.
       update home location on click: Thuislocatie aanpassen bij klikken op de kaart
+      show: Weergeven
+      delete: Verwijderen
+      undelete: Verwijderen ongedaan maken
     update:
       success: Profiel bijgewerkt.
       failure: Kon het profiel niet bijwerken.
index f60c4cffb08c81256624a6a6dee717646ef64cfb..eae6cf76c949d09d5340dd9ac1dab5cec67f40b8 100644 (file)
@@ -181,8 +181,9 @@ ro:
   datetime:
     distance_in_words_ago:
       about_x_hours:
-        one: aproximativ 1 oră în urmă
-        other: aproximativ %{count} ore în urmă
+        one: aproximativ 1 oră în urmă}}
+        few: aproximativ %{count} ore în urmă}}
+        other: …}}
       about_x_months:
         one: aproximativ 1 lună în urmă
         other: aproximativ %{count} luni în urmă
@@ -272,6 +273,9 @@ ro:
           de alte conturi.
         retain_caveats: 'Cu toate acestea, unele informații despre dvs. vor fi păstrate
           pe OpenStreetMap, chiar și după ștergerea contului:'
+        retain_email: Adresa dvs. de e-mail va fi păstrată.
+        confirm_delete: Sunteți sigur(ă)?
+        cancel: Anulează
   accounts:
     edit:
       title: Modificare cont
@@ -297,16 +301,35 @@ ro:
           sunt în Domeniul Public.
         link text: Ce este aceasta?
       save changes button: Salvează modificările
+      delete_account: Șterge Cont...
     go_public:
       heading: Editare publică
+      currently_not_public: Momentan, editările dvs. sunt anonime și oamenii nu vă
+        pot trimite mesaje sau vă pot vedea locația. Pentru a afișa ceea ce ați editat
+        și pentru a le permite oamenilor să vă contacteze prin intermediul site-ului
+        web, faceți clic pe butonul de mai jos.
+      only_public_can_edit: De la trecerea la 0.6 API, numai utilizatorii publici
+        pot edita datele hărții.
+      find_out_why: află de ce
+      email_not_revealed: Adresa ta de e-mail nu va fi dezvăluită devenind public.
+      not_reversible: Această acțiune nu poate fi anulată și toți utilizatorii noi
+        sunt acum publici în mod implicit.
       make_edits_public_button: Faceți toate editările mele publice
     update:
       success_confirm_needed: Informațiile despre utilizator s-au actualizat cu succes.
         Verificați e-mailul pentru o notă pentru a confirma noua adresă de e-mail.
       success: Informațiile despre utilizator s-au actualizat cu succes.
+    destroy:
+      success: Contul Este Șters.
   browse:
     created: Creat
     closed: Închis
+    created_ago_html: Creat %{time_ago}
+    closed_ago_html: Închis %{time_ago}
+    created_ago_by_html: Creat %{time_ago} de %{user}
+    closed_ago_by_html: Închis %{time_ago} de către %{user}
+    deleted_ago_by_html: Șters %{time_ago} de %{user}
+    edited_ago_by_html: Editat %{time_ago} de %{user}
     version: Versiune
     in_changeset: Set de modificări
     anonymous: anonim
@@ -317,9 +340,9 @@ ro:
       few: '%{count} relații'
       other: ""
     part_of_ways:
-      one: 1 relație
-      few: '%{count} relații'
-      other: ""
+      one: '%{count} cale}}'
+      few: '%{count} căi}}'
+      other: '}}'
     download_xml: Descarcă XML
     view_history: Vezi istoric
     view_details: Vezi detalii
@@ -417,6 +440,7 @@ ro:
       wikimedia_commons_link: Item-ul %{page} pe Wikimedia Commons
       telephone_link: Sună %{phone_number}
       colour_preview: Previzualizează %{colour_value} culoare
+      email_link: Email %{email}
     query:
       title: Interogări ale funcțiilor
       introduction: Dați clic pe hartă pentru a găsi obiectivele din apropiere.
@@ -440,6 +464,7 @@ ro:
     index:
       title: Set de modificări
       title_user: Seturi de modificări făcute de %{user}
+      title_user_link_html: Seturi de modificări făcute de %{user_link}
       title_friend: Seturi de modificări făcute de prietenii mei
       title_nearby: Modificări făcute de utilizatori din apropiere
       empty: Niciun set de modificări găsit.
@@ -566,6 +591,17 @@ ro:
       applications:
         create:
           notice: Aplicație înregistrată.
+  errors:
+    forbidden:
+      title: Interzis
+    internal_server_error:
+      title: Eroare aplicație
+      description: Serverul OpenStreetMap a întâlnit o condiție neașteptată care l-a
+        împiedicat să îndeplinească cererea (HTTP 500)
+    not_found:
+      title: Fișierul nu a fost găsit
+      description: Nu s-a putut găsi o operație de file/directory/API operation cu
+        acest nume pe serverul OpenStreetMap (HTTP 404)
   friendships:
     make_friend:
       heading: Adăugați %{user} ca prieten?
@@ -581,6 +617,10 @@ ro:
       success: '%{name} a fost scos de la lista de prieteni.'
       not_a_friend: '%{name} nu este unul din prietenii tăi.'
   geocoder:
+    search:
+      title:
+        results_from_html: Rezultate de la %{results_link}
+        latlon: Intern
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -597,12 +637,12 @@ ro:
         aeroway:
           aerodrome: Aerodrom
           airstrip: Pistă de aterizare
-          apron: Peron de aeroport
-          gate: Poartă de aeroport
+          apron: Peron Aeroport
+          gate: Poartă Aeroport
           hangar: Hangar
           helipad: Helipad
           holding_position: Păstrează poziția
-          navigationaid: Ajutor de navigație aeriană
+          navigationaid: Ajutor Navigație Aviație
           parking_position: Poziția de parcare
           runway: Pistă
           taxilane: Banda de taxi
@@ -662,7 +702,7 @@ ro:
           ice_cream: Înghețată
           internet_cafe: Internet Cafe
           kindergarten: Grădiniță
-          language_school: Școală de limbi
+          language_school: Școală Lingvistică
           library: Bibliotecă
           loading_dock: Doc de încărcare
           love_hotel: Hotel de dragoste
@@ -900,6 +940,7 @@ ro:
           railway: Cale ferată istorică
           roman_road: Drumul roman
           ruins: Ruine
+          rune_stone: Piatra Rune
           stone: Piatră
           tomb: Mormânt
           tower: Turn
@@ -917,8 +958,8 @@ ro:
           brownfield: Teren brun
           cemetery: Cimitir
           commercial: Zonă comercială
-          conservation: Conservare
-          construction: Construcție
+          conservation: Zonă Conservare
+          construction: Șantier în lucru
           farmland: Teren agricol
           farmyard: Curte țărănească
           forest: Pădure
@@ -939,7 +980,7 @@ ro:
           reservoir: Rezervor
           reservoir_watershed: Cumpăna apelor
           residential: Zonă rezidențială
-          retail: Amănuntul
+          retail: Vânzare cu amănuntul
           village_green: Village Green
           vineyard: Podgorie
           "yes": Utilizarea terenului
@@ -960,7 +1001,7 @@ ro:
           fitness_station: Stație de fitness
           garden: Grădină
           golf_course: Teren de golf
-          horse_riding: Călărie de cai
+          horse_riding: Centru de echitație
           ice_rink: Patinoar
           marina: Marina
           miniature_golf: Minigolf
@@ -991,7 +1032,9 @@ ro:
           breakwater: Dig
           bridge: Pod
           bunker_silo: Buncăr
+          cairn: Movilă
           chimney: Șemineu
+          clearcut: Cioturi de copac
           communications_tower: Turn de Comunicații
           crane: Macara
           cross: Cruce
@@ -1014,12 +1057,14 @@ ro:
           pumping_station: Stație de Pompare
           reservoir_covered: Rezervor Acoperit
           silo: Siloz
+          snow_cannon: Tun de Zăpadă
           snow_fence: Gard zăpadă
           storage_tank: Rezervor de depozitare
           street_cabinet: Cabinet stradal
           surveillance: Supraveghere
           telescope: Telescop
           tower: Turn
+          utility_pole: Stâlp Utilitar
           wastewater_plant: Stație de epurare a apei
           watermill: Fântână de apă
           water_tap: Robinet de apă
@@ -1040,6 +1085,7 @@ ro:
           "yes": Trecătoare prin munți
         natural:
           atoll: Atol
+          bare_rock: Stânci
           bay: Golf
           beach: Plajă
           cape: Cap
@@ -1073,6 +1119,7 @@ ro:
           sand: Nisip
           scree: Grohotiș
           scrub: Tufăriș
+          shingle: Plajă cu scoici și pietre
           spring: Izvor
           stone: Piatră
           strait: Strâmtoare
@@ -1143,6 +1190,7 @@ ro:
           "yes": Loc
         railway:
           abandoned: Cale ferată abandonată
+          buffer_stop: Tampon tren
           construction: Cale ferată în construcție
           disused: Cale ferată dezafectată
           funicular: Cale Ferată Funicular
@@ -1156,6 +1204,7 @@ ro:
           platform: Platformă feroviară
           preserved: Cale ferată rezervată
           proposed: Cale ferată propusă
+          rail: Șină
           spur: Cale ferată privată
           station: Gară
           stop: Stop la calea ferată
@@ -1164,6 +1213,7 @@ ro:
           switch: Macazul de cale ferată
           tram: Tramvai
           tram_stop: Stație de tramvai
+          turntable: Placă turnantă
           yard: Depou
         shop:
           agrarian: Magazin agricol
@@ -1204,7 +1254,7 @@ ro:
           deli: Deli
           department_store: Magazin specializat
           discount: Magazin cu itemuri la discount
-          doityourself: Bricolaj
+          doityourself: Magazin de bricolaj
           dry_cleaning: Curățătorie chimică
           e-cigarette: Magazin de țigări electronice
           electronics: Magazin de electronice
@@ -1230,7 +1280,7 @@ ro:
           health_food: Magazin de produse naturiste
           hearing_aids: Aparate Auditive
           herbalist: Herbalist
-          hifi: Hi-Fi
+          hifi: Magazin Hi-Fi
           houseware: Magazinul de electrocasnice
           ice_cream: Magazin de înghețate
           interior_decoration: Decoeațiuni interioare
@@ -1290,7 +1340,7 @@ ro:
           artwork: Operă de artă
           attraction: Atracție
           bed_and_breakfast: Cazare și mic dejun
-          cabin: Cabină
+          cabin: Cabană Turistică
           camp_pitch: Teren pentru camping
           camp_site: Loc de campare
           caravan_site: Parc de rulote
@@ -1363,10 +1413,12 @@ ro:
       status: Stare
       reports: Rapoarte
       last_updated: Ultima actualizare
+      last_updated_time_ago_user_html: '%{time_ago} de %{user}'
       link_to_reports: Vizualizați rapoartele
       reports_count:
-        one: 1 Report
-        other: '%{count} Rapoarte'
+        one: '%{count} Raport'
+        few: '%{count} Raporturi'
+        other: ""
       reported_item: Articol raportat
       states:
         ignored: Ignorat
@@ -1375,9 +1427,9 @@ ro:
     show:
       title: '%{status} Problema #%{issue_id}'
       reports:
-        zero: Nu există rapoarte
-        one: 1 report
-        other: '%{count} rapoarte'
+        one: '%{count} raport'
+        few: '%{count} raporturi'
+        other: ""
       no_reports: Fara rapoarte
       report_created_at: Prima dată raportată la %{datetime}
       last_resolved_at: Ultima rezolvată la %{datetime}
@@ -1409,6 +1461,7 @@ ro:
   issue_comments:
     create:
       comment_created: Comentariul dvs. a fost creat cu succes
+      issue_reassigned: Comentariul dvs. a fost creat și problema a fost reatribuită
   reports:
     new:
       title_html: '%{link} raport'
@@ -1484,6 +1537,7 @@ ro:
     help: Ajutor
     about: Despre
     copyright: Drepturi de autor
+    communities: Comunități
     community: Comunitate
     community_blogs: Bloguri ale comunității
     community_blogs_title: Bloguri ale membrilor comunității OpenStreetMap
@@ -1521,12 +1575,23 @@ ro:
       see_their_profile_html: Puteți vedea profilul respectiv la %{userurl}.
       befriend_them: De asemenea, îi puteți adăuga ca prieten la %{befriendurl}
       befriend_them_html: Le puteți adăuga și ca prieten la %{befriendurl}.
+    gpx_description:
+      description_with_tags_html: 'Se pare că fișierul dvs. GPX %{trace_name} cu descrierea
+        %{trace_description} și următoarele etichete: %{tags}'
+      description_with_no_tags_html: Se pare că fișierul dvs. GPX %{trace_name} cu
+        descrierea %{trace_description} și fără etichete
     gpx_failure:
       hi: Salut %{to_user},
       failed_to_import: 'nu a reușit să importe. Iată eroarea:'
+      more_info_html: Mai multe informații despre eșecurile de import GPX și despre
+        cum să le evitați pot fi găsite la %{url}.
       subject: '[OpenStreetMap] eșec import fișier GPX'
     gpx_success:
       hi: Salut %{to_user},
+      loaded:
+        one: încărcat cu succes cu %{trace_points} dintr-un posibil %{count} punct.
+        few: încărcat cu succes cu %{trace_points} dintr-un posibil %{count} puncte.
+        other: ""
       subject: '[OpenStreetMap] succes import fișier GPX'
     signup_confirm:
       subject: '[OpenStreetMap] Bun venit la OpenStreetMap'
@@ -1559,22 +1624,35 @@ ro:
         subject_other: '[OpenStreetMap] %{commenter} a comentat o notă care vă interesează'
         your_note: '%{commenter} a lăsat un comentariu pe o notă de pe hartă lângă
           %{place}.'
+        your_note_html: '%{commenter} a lăsat un comentariu la una dintre notele dvs.
+          de hartă lângă %{place}.'
         commented_note: '%{commenter} a lăsat un comentariu pe o notă de hartă pe
           care ați comentat-o. Nota este aproape de %{place}.'
+        commented_note_html: '%{commenter} a lăsat un comentariu pe o notă de hartă
+          pe care ați comentat-o. Nota este aproape de %{place}.'
       closed:
         subject_own: '[OpenStreetMap] %{commenter}a rezolvat una dintre notele tale'
         subject_other: '[OpenStreetMap] %{commenter} a rezolvat o notă care vă interesează'
         your_note: '%{commenter} a rezolvat una dintre notele dvs. de hartă lângă
           %{place}.'
+        your_note_html: '%{commenter} a rezolvat una dintre notele dvs. de hartă lângă
+          %{place}.'
         commented_note: '%{commenter} a rezolvat o notă de hartă pe care ați comentat-o.
           Nota este aproape de %{place}.'
+        commented_note_html: '%{commenter} a rezolvat o notă de hartă pe care ați
+          comentat-o. Nota este aproape de %{place}.'
       reopened:
         subject_own: '[OpenStreetMap] %{commenter} a reactivat una dintre notele tale'
         subject_other: '[OpenStreetMap] %{commenter} a reactivat o notă care vă interesează'
         your_note: '%{commenter} a reactivat una din notele dvs. de hartă lângă %{place}.'
+        your_note_html: '%{commenter} a reactivat una dintre notele dvs. de hartă
+          lângă %{place}.'
         commented_note: '%{commenter} a reactivat o notă de hartă pe care ați comentat-o.
           Nota este aproape de %{place}.'
+        commented_note_html: '%{commenter} a reactivat o notă de hartă pe care ați
+          comentat-o. Nota este aproape de %{place}.'
       details: Mai multe detalii despre notă pot fi găsite la adresa %{url}.
+      details_html: Mai multe detalii despre notă pot fi găsite la %{url}.
     changeset_comment_notification:
       hi: Salut %{to_user},
       greeting: Salut,
@@ -1585,8 +1663,12 @@ ro:
           care vă interesează'
         your_changeset: '%{commenter} a lăsat un comentariu la %{time} asupra unui
           set de modificări ale dvs.'
+        your_changeset_html: '%{commenter} a lăsat un comentariu la %{time} la unul
+          dintre seturile dvs. de modificări'
         commented_changeset: '%{commenter} a lăsat un comentariu %{time} cu privire
           la un set de modificări pe care îl urmăriți creat de %{changeset_author}'
+        commented_changeset_html: '%{commenter} a lăsat un comentariu la %{time} la
+          un set de modificări pe care îl vizionați, creat de %{changeset_author}'
         partial_changeset_with_comment: cu comentariul '%{changeset_comment}'
         partial_changeset_with_comment_html: cu comentariul '%{changeset_comment}'
         partial_changeset_without_comment: fără comentarii
@@ -1610,6 +1692,8 @@ ro:
       success: Confirmat contul dvs., vă mulțumim pentru înscrierea!
       already active: Acest cont a fost deja confirmat.
       unknown token: Codul de confirmare a expirat sau nu există.
+      resend_html: Dacă aveți nevoie să retrimitem e-mailul de confirmare, %{reconfirm_link}.
+      click_here: click aici
     confirm_resend:
       failure: Utilizatorul %{name} nu a fost găsit.
     confirm_email:
@@ -1620,6 +1704,12 @@ ro:
       success: Ați confirmat schimbarea adresei de e-mail!
       failure: O adresă de e-mail a fost deja confirmată cu acest token.
       unknown_token: Codul de confirmare a expirat sau nu există.
+    resend_success_flash:
+      confirmation_sent: Am trimis o nouă notă de confirmare către %{email} și, de
+        îndată ce vă confirmați contul, veți putea obține cartografierea.
+      whitelist: Dacă utilizați un sistem antispam care trimite cereri de confirmare,
+        vă rugăm să vă asigurați că ați plasat pe lista albă %{sender}, deoarece nu
+        putem răspunde la nicio solicitare de confirmare.
   messages:
     inbox:
       title: Mesaje primite
@@ -1713,6 +1803,7 @@ ro:
       edit_preferences: Editare preferințe
     edit:
       title: Editare preferințe
+      save: Actualizare Preferințe
       cancel: Revocare
     update:
       failure: Nu se pot salva preferințele.
@@ -1720,6 +1811,8 @@ ro:
       message: Preferințele au fost salvate.
   profiles:
     edit:
+      title: Editare Profil
+      save: Actualizează Profil
       cancel: Revocare
       image: Imagine
       gravatar:
@@ -1736,6 +1829,9 @@ ro:
       no home location: Nu ați introdus locația dvs. de domiciliu.
       update home location on click: Actualizați locația locuinței dvs. când faceți
         click pe hartă?
+    update:
+      success: Profil actualizat.
+      failure: Nu s-a putut actualiza profilul.
   sessions:
     new:
       title: Autentificare
@@ -1762,8 +1858,8 @@ ro:
           title: Autentificare cu Facebook
           alt: Conectați-vă cu un cont Facebook
         windowslive:
-          title: Conectați-vă cu Windows Live
-          alt: Conectați-vă cu un cont Windows Live
+          title: Conectare cu Microsoft
+          alt: Conectare cu un Cont Microsoft
         github:
           title: Conectați-vă cu GitHub
           alt: Conectați-vă cu un cont GitHub
@@ -1780,8 +1876,14 @@ ro:
       title: Ieșire
       heading: Deconectare din OpenStreetMap
       logout_button: Ieșire
+    suspended_flash:
+      suspended: Ne pare rău, contul dvs. a fost suspendat din cauza activității suspecte.
+      contact_support_html: Vă rugăm să contactați %{support_link} dacă doriți să
+        discutați acest lucru.
+      support: suport
   shared:
     markdown_help:
+      heading_html: Parsează cu %{kramdown_link}
       headings: Titluri
       heading: Titlu
       subheading: Subtitlu
@@ -1800,8 +1902,9 @@ ro:
   site:
     about:
       next: Înainte
-      used_by_html: '%{name} oferă datele hărților pe mii de site-uri web, aplicații
-        mobile și dispozitive hardware'
+      heading_html: '%{copyright}OpenStreetMap %{br} contributori'
+      used_by_html: '%{name} furnizează date de hărți pentru mii de site-uri web,
+        aplicații mobile și dispozitive hardware'
       lede_text: |-
         OpenStreetMap este construit de o comunitate de cartografi care contribuie și întrețin datele
         despre drumuri, trasee, cafenele, stații de cale ferată și multe altele din întreaga lume.
@@ -1810,8 +1913,43 @@ ro:
         OpenStreetMap îndrăgește cunoștințele locale. Colaboratorii folosesc imaginile aeriene, dispozitivele GPS și hărțile câmpurilor de joasă tehnologie pentru a verifica faptul că OSM
         este exactă și actualizată.
       community_driven_title: Condusă de comunitate
+      community_driven_1_html: |-
+        Comunitatea OpenStreetMap este diversă, pasionată și în creștere în fiecare zi.
+        Contribuitorii noștri includ cartografii entuziaști, profesioniști GIS, ingineri
+        rulează serverele OSM, umanitarii cartografiază zonele afectate de dezastre,
+        si multe altele.
+        Pentru a afla mai multe despre comunitate, consultați %{osm_blog_link},
+        %{user_diaries_link}, %{community_blogs_link} și
+        site-ul web %{osm_foundation_link}.
+      community_driven_osm_blog: OpenStreetMap Blog
+      community_driven_user_diaries: jurnale utilizatori
+      community_driven_community_blogs: blogurile comunității
+      community_driven_osm_foundation: Fundația OSM
       open_data_title: Deschideți datele
+      open_data_1_html: |-
+        OpenStreetMap este %{open_data}: sunteți liber să îl utilizați în orice scop
+        atâta timp cât creditați OpenStreetMap și colaboratorii săi. Dacă modificați sau
+        construiți pe date în anumite moduri, puteți distribui numai rezultatul
+        sub aceeași licență. Consultați %{copyright_license_link} pentru detalii.
+      open_data_open_data: date deschise
+      open_data_copyright_license: Pagina Drepturi de autor și licență
       legal_title: Legal
+      legal_1_1_html: |-
+        Acest site și multe alte servicii conexe sunt operate oficial de către
+        %{openstreetmap_foundation_link} (OSMF)
+        în numele comunității. Utilizarea tuturor serviciilor operate de OSMF este supusă
+        la %{terms_of_use_link}, %{aup_link} și %{privacy_policy_link}.
+        ​Căutați detalii
+      legal_1_1_openstreetmap_foundation: Fundația OpenStreetMap
+      legal_1_1_terms_of_use: Termeni de Utilizare
+      legal_1_1_aup: Politica de Utilizare Acceptabilă
+      legal_1_1_privacy_policy: Politica de Confidențialitate
+      legal_2_1_html: |-
+        Vă rugăm %{contact_the_osmf_link}
+        dacă aveți întrebări legate de licență, drepturi de autor sau alte întrebări legale.
+      legal_2_1_contact_the_osmf: contactați OSMF
+      legal_2_2_html: OpenStreetMap, logo-ul lupei și starea hărții sunt %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: mărci înregistrate ale OSMF
       partners_title: Parteneri
     copyright:
       foreign:
@@ -1828,18 +1966,132 @@ ro:
         mapping_link: Începeți să cartografiați
       legal_babble:
         title_html: Drepturi de autor și licență
+        introduction_1_html: |-
+          OpenStreetMap%{registered_trademark_link} este %{open_data}, licențiat în conformitate cu
+          %{odc_odbl_link} (ODbL) de către %{osm_foundation_link} (OSMF).
+        introduction_1_open_data: date deschise
+        introduction_1_odc_odbl: Open Data Commons Licență pentru baze de date deschise
+        introduction_1_osm_foundation: Fundația OpenStreetMap
+        introduction_2_html: |-
+          Sunteți liber să copiați, să distribuiți, să transmiteți și să adaptați datele noastre,
+          atâta timp cât creditați OpenStreetMap și a acestuia
+          contribuabili. Dacă modificați sau construiți pe baza datelor noastre, dvs
+          poate distribui rezultatul numai sub aceeași licență. The
+          %{legal_code_link} complet explică drepturile și responsabilitățile dvs.
+        introduction_2_legal_code: cod juridic
+        introduction_3_html: Documentația noastră este licențiată sub licența %{creative_commons_link}
+          (CC BY-SA 2.0).
+        introduction_3_creative_commons: Creative Commons Attribution-ShareAlike 2.0
         credit_title_html: Cum se creditează OpenStreetMap
-        credit_1_html: Noi cerem să utilizați creditul&copy; contribuitori OpenStreetMap&
-          rdquo;.
+        credit_1_html: 'Acolo unde utilizați datele OpenStreetMap, vi se cere să faceți
+          următoarele două lucruri:'
+        credit_2_1: Oferiți credit OpenStreetMap afișând notificarea noastră privind
+          drepturile de autor.
+        credit_2_2: Asigurați-vă că datele sunt disponibile în baza licenței pentru
+          baze de date deschise.
+        credit_3_html: |-
+          Pentru notificarea privind drepturile de autor, avem cerințe diferite despre cum ar trebui să fie
+          afișate, în funcție de modul în care utilizați datele noastre. De exemplu, diferit
+          se aplică reguli cu privire la modul de afișare a notificării privind drepturile de autor, în funcție de faptul că aveți
+          a creat o hartă navigabilă, o hartă tipărită sau o imagine statică. Detalii complete pe
+          cerințele pot fi găsite în %{attribution_guidelines_link}.
+        credit_3_attribution_guidelines: Orientări Privind Atribuirea
+        credit_4_1_html: |-
+          Pentru a clarifica faptul că datele sunt disponibile în cadrul Open
+          Licență pentru baze de date, puteți face link la %{this_copyright_page_link}.
+          Alternativ, și ca o cerință dacă distribuiți OSM într-un
+          formular de date, puteți numi și conecta direct la licență(e). În media
+          unde link-urile nu sunt posibile (de exemplu, lucrări tipărite), vă sugerăm
+          direcționați-vă cititorii către openstreetmap.org (poate prin extinderea
+          „OpenStreetMap” la această adresă completă) și la opendatacommons.org.
+          În acest exemplu, creditul apare în colțul hărții.
+        credit_4_1_this_copyright_page: această pagină de drepturi de autor
         attribution_example:
           alt: Exemplu de atribuire a OpenStreetMap pe o pagină Web
           title: Exemplul de atribuire
         more_title_html: Aflați mai multe.
+        more_1_1_html: Citiți mai multe despre utilizarea datelor noastre și despre
+          cum să ne creditați, la %{osmf_licence_page_link}.
+        more_1_1_osmf_licence_page: Pagina de licență OSMF
+        more_2_1_html: |-
+          Deși OpenStreetMap este date deschise, nu putem oferi o
+          API gratuit pentru hărți pentru terți.
+          Consultați %{api_usage_policy_link}, %{tile_usage_policy_link} și %{nominatim_usage_policy_link}.
+        more_2_1_api_usage_policy: Politica de utilizare API
+        more_2_1_tile_usage_policy: Politica de Utilizare a Plăcilor
+        more_2_1_nominatim_usage_policy: Politica Utilizare Nominatim
         contributors_title_html: Contribuitorii noștri
         contributors_intro_html: |-
           Contribuitorii noștri sunt mii de indivizi. De asemenea, includem
           date cu licență de la agențiile naționale de cartografiere
           și alte surse, printre care:
+        contributors_at_credit_html: |-
+          %{austria}: conține date de la %{stadt_wien_link} (sub %{cc_by_link}), %{land_vorarlberg_link}
+          și Land Tirol (sub %{cc_by_at_with_amendments_link}).
+        contributors_at_austria: Austria
+        contributors_at_stadt_wien: Stadt Wien
+        contributors_at_cc_by: CC BY
+        contributors_at_land_vorarlberg: Land Vorarlberg
+        contributors_at_cc_by_at_with_amendments: CC BY AT cu amendamente
+        contributors_au_credit_html: |-
+          %{australia}: Încorporează sau dezvoltat folosind limite administrative &copy; %{geoscape_australia_link}
+          licențiat de Commonwealth of Australia sub %{cc_licence_link}.
+        contributors_au_australia: Australia
+        contributors_au_geoscape_australia: Geoscape Australia
+        contributors_au_cc_licence: Creative Commons Attribution 4.0 International
+          licence (CC BY 4.0)
+        contributors_ca_credit_html: |-
+          %{canada}: Conține date de la
+          GeoBase&reg;, GeoGratis (&copy; Departamentul de Natură
+          Resources Canada), CanVec (&copy; Department of Natural
+          Resources Canada) și StatCan (Divizia de Geografie,
+          Statistics Canada).
+        contributors_ca_canada: Canada
+        contributors_fi_credit_html: |-
+          %{finland}: Conține date din
+          National Land Survey of Finland's Topographic Database
+          și alte seturi de date, sub %{nlsfi_license_link}.
+        contributors_fi_finland: Finlanda
+        contributors_fi_nlsfi_license: Licența NLSFI
+        contributors_fr_credit_html: |-
+          %{france}: Conține date provenite din
+          Direction Générale des Impôts.
+        contributors_fr_france: Franța
+        contributors_nz_new_zealand: Noua Zeelandă
+        contributors_nz_linz_data_service: Serviciul de date LINZ
+        contributors_nz_cc_by: CC BY 4.0
+        contributors_rs_credit_html: |-
+          %{serbia}: conține date din %{rgz_link} și %{open_data_portal}
+          (informații publice din Serbia), 2018.
+        contributors_rs_serbia: Serbia
+        contributors_rs_rgz: Autoritatea Geodetică a Serbiei
+        contributors_rs_open_data_portal: Portalul Național de Date Deschise
+        contributors_si_credit_html: |-
+          %{slovenia}: conține date din %{gu_link} și %{mkgp_link}
+          (informații publice din Slovenia).
+        contributors_si_slovenia: Slovenia
+        contributors_si_gu: Autoritatea de Topografie și Cartografiere
+        contributors_si_mkgp: Ministerul Agriculturii, Pădurilor și Alimentației
+        contributors_es_credit_html: |-
+          %{spain}: Conține date provenite din
+          Institutul Geografic Național Spaniol (%{ign_link}) și
+          Sistemul Cartografic Național (%{scne_link})
+          licențiat pentru reutilizare sub %{cc_by_link}.
+        contributors_es_spain: Spania
+        contributors_es_cc_by: CC BY 4.0
+        contributors_za_credit_html: '%{south_africa}: Conține date provenite de la
+          %{ngi_link}, drepturi de autor de stat rezervate.'
+        contributors_za_south_africa: Africa de Sud
+        contributors_za_ngi: 'Directoratul Șef: Informații Geo-Spațiale Naționale'
+        contributors_gb_credit_html: |-
+          %{united_kingdom}: Contains Ordnance
+          Datele sondajului &copy; Dreptul de autor al coroanei și dreptul de bază de date
+          2010-2023.
+        contributors_gb_united_kingdom: Regatul Unit
+        contributors_2_html: |-
+          Pentru mai multe detalii despre acestea și despre alte surse care au fost folosite
+          pentru a ajuta la îmbunătățirea OpenStreetMap, vă rugăm să consultați %{contributors_page_link} de pe Wiki OpenStreetMap.
+        contributors_2_contributors_page: Pagina contribuitorilor
         contributors_footer_2_html: |-
           Includerea datelor în OpenStreetMap nu implică faptul că originalul
           furnizor de date acceptă OpenStreetMap, oferă orice garanție sau
@@ -1849,6 +2101,19 @@ ro:
           date de la nici una dintre sursele protejate de drepturi de autor (de ex.,
           Hărți Google sau hărți tipărite) fără permisiunea explicită din partea deținătorilor
           drepturilor de autor.
+        infringement_2_1_html: |-
+          Dacă credeți că materialul protejat prin drepturi de autor a fost inadecvat
+          adăugat la baza de date OpenStreetMap sau la acest site, vă rugăm să consultați
+          la %{takedown_procedure_link} sau un fișier direct la nostru
+          %{online_filing_page_link}.
+        infringement_2_1_takedown_procedure: procedura de eliminare
+        infringement_2_1_online_filing_page: pagina de depunere online
+        trademarks_title: Mărci înregistrate
+        trademarks_1_1_html: |-
+          OpenStreetMap, logo-ul lupei și State of the Map sunt mărci comerciale înregistrate ale
+          Fundația OpenStreetMap. Dacă aveți întrebări despre utilizarea mărcilor, vă rugăm să consultați
+          %{trademark_policy_link}.
+        trademarks_1_1_trademark_policy: Politica Mărcilor Înregistrate
     index:
       js_1: Utilizați fie un browser care nu acceptă JavaScript, fie aveți JavaScript
         dezactivat.
@@ -1878,6 +2143,9 @@ ro:
       map_image: Imagine hartă (arată stratul standard)
       embeddable_html: HTML încorporabil
       licence: Licență
+      licence_details_html: Datele OpenStreetMap sunt licențiate sub %{odbl_link}
+        (ODbL).
+      odbl: Open Data Commons Open Database License
       too_large:
         advice: 'Dacă exportul de mai sus nu reușește, vă recomandăm să utilizați
           una dintre sursele de mai jos:'
@@ -1920,8 +2188,18 @@ ro:
             de exemplu un drum care lipsește sau adresa dvs., cel mai bun mod de a
             rezolva această problemă este să vă alăturați comunității OpenStreetMap
             și să adăugați sau să reparați singuri datele.
+        add_a_note:
+          instructions_1_html: |-
+            Doar faceți clic pe %{note_icon} sau pe aceeași pictogramă de pe afișajul hărții.
+            Aceasta va adăuga un marcator pe hartă, pe care îl puteți muta
+            prin tragere. Adăugați mesajul dvs., apoi faceți clic pe Salvați, iar alți cartografi vor investiga.
       other_concerns:
         title: Alte preocupări
+        concerns_html: |-
+          Dacă aveți nelămuriri cu privire la modul în care sunt utilizate datele noastre sau cu privire la conținut, vă rugăm să consultați
+          %{copyright_link} pentru mai multe informații legale sau contactați %{working_group_link} corespunzător.
+        copyright: Pagina de drepturi de autor
+        working_group: Grup de lucru al OSMF
     help:
       title: Obținerea de ajutor
       introduction: OpenStreetMap are mai multe resurse pentru a învăța despre proiect,
@@ -1944,6 +2222,9 @@ ro:
         title: Lista de e-mail-uri
         description: Adresați o întrebare sau discutați despre probleme interesante
           pe o gamă largă de liste de discuții de actualitate sau regionale.
+      community:
+        title: Forumul Comunității
+        description: Un loc comun pentru discuții despre OpenStreetMap.
       irc:
         title: IRC
         description: Chat interactiv în multe limbi diferite și pe mai multe subiecte.
@@ -1958,6 +2239,10 @@ ro:
       wiki:
         title: OpenStreetMap Wiki
         description: Caută pe wiki pentru o documentație OpenStreetMap detaliată.
+    potlatch:
+      removed: Editorul dvs. implicit OpenStreetMap este setat ca Potlatch. Deoarece
+        Adobe Flash Player a fost retras, Potlatch nu mai este disponibil pentru utilizare
+        într-un browser web.
     any_questions:
       title: Întrebări?
     sidebar:
@@ -2171,8 +2456,8 @@ ro:
     require_admin:
       not_an_admin: Trebuie să fii administrator pentru a efectua acea acțiune.
     setup_user_auth:
-      blocked_zero_hour: Aveți un mesaj urgent pe site-ul web OpenStreetMap. Trebuie
-        să citiți mesajul înainte de a vă putea salva modificările.
+      blocked_zero_hour: Aveți un mesaj urgent pe site-ul OpenStreetMap. Trebuie să
+        citiți mesajul înainte de a putea salva editările.
       blocked: Accesul la API a fost blocat. Conectați-vă la interfața web pentru
         a afla mai multe.
       need_to_see_terms: Accesul dvs. la API este suspendat temporar. Conectați-vă
@@ -2607,6 +2892,14 @@ ro:
         gps: Urmele GPS publice
         overlays: Activați suprapuneri pentru depanarea hărții
         title: Straturi
+      openstreetmap_contributors: OpenStreetMap contribuitori
+      make_a_donation: Faceți o Donație
+      website_and_api_terms: Termenii site-ului web și API
+      cyclosm_credit: Stil de plăci de %{cyclosm_link} găzduit de %{osm_france_link}
+      osm_france: OpenStreetMap Franța
+      thunderforest_credit: Plăci prin amabilitatea lui %{thunderforest_link}
+      andy_allan: Andy Allan
+      hotosm_name: Echipa Umanitară OpenStreetMap
     site:
       edit_tooltip: Modifică harta
       edit_disabled_tooltip: Măriți pentru a edita harta
@@ -2634,9 +2927,14 @@ ro:
         graphhopper_bicycle: Bicicletă (GraphHopper)
         graphhopper_car: Mașină (GraphHopper)
         graphhopper_foot: Mers (GraphHopper)
+        fossgis_valhalla_bicycle: Bicicletă (Valhalla)
+        fossgis_valhalla_car: Maşina (Valhalla)
+        fossgis_valhalla_foot: Mers (Valhalla)
       descend: Coborâre
       directions: Direcții
       distance: Distanță
+      distance_m: '%{distance}m'
+      distance_km: '%{distance}km'
       errors:
         no_route: Nu s-a putut găsi un traseu între cele două locuri.
         no_place: Scuze - nu am găsit '%{place}'.
index 72474027fdea5203c8f5df6c5c0d69c06aa8274e..b33dcc7b700a8542d58bcddb177ae2acba219c25 100644 (file)
@@ -1089,6 +1089,9 @@ skr-arab:
       save: پروفائل اپ ڈیٹ کرو
       cancel: منسوخ
       image: تصویر
+      show: ݙِکھاؤ
+      delete: مٹاؤ
+      undelete: بحال
   sessions:
     new:
       title: لاگ ان
index bc4c08c21beacb5f67ca02b51a53dd51c023a265..3bbe874dd46e962cb39778282813bd82cf592ab4 100644 (file)
@@ -59,7 +59,7 @@ sl:
         email_address_not_routable: ni preusmerljiv
     models:
       acl: Seznam nadzora dostopa
-      changeset: Sklop sprememb
+      changeset: Nabor sprememb
       changeset_tag: Oznaka množice sprememb
       country: Država
       diary_comment: Dnevniški komentar
@@ -301,7 +301,7 @@ sl:
           obstajajo, vendar si jih ne bo mogoče ogledati.
         retain_notes: Ohranjeni bodo morebitne opombe na zemljevidu in komentarji
           k opombam, vendar si jih ne bo mogoče ogledati.
-        retain_changeset_discussions: Ohranjeni bodo vaši pogovori o sklopih sprememb,
+        retain_changeset_discussions: Ohranjeni bodo vaši pogovori o naborih sprememb,
           če obstajajo.
         retain_email: Ohranjen bo vaš e-poštni naslov.
         confirm_delete: Ali ste prepričani?
@@ -361,7 +361,7 @@ sl:
     deleted_ago_by_html: Izbrisal %{user} %{time_ago}
     edited_ago_by_html: Uredil_a %{user} %{time_ago}
     version: Različica
-    in_changeset: Sklop sprememb
+    in_changeset: Nabor sprememb
     anonymous: anonimni
     no_comment: (brez komentarja)
     part_of: Del
@@ -380,7 +380,7 @@ sl:
     view_details: Prikaz podrobnosti
     location: 'Lokacija:'
     changeset:
-      title: 'Sklop sprememb: %{id}'
+      title: 'Nabor sprememb: %{id}'
       belongs_to: Avtor
       node: Vozlišč (%{count})
       node_paginated: Vozlišča (%{x}-%{y} od %{count})
@@ -391,15 +391,15 @@ sl:
       comment: Komentarji (%{count})
       hidden_comment_by_html: Skrit komentar %{user} %{time_ago}
       comment_by_html: Komentar %{user} %{time_ago}
-      changesetxml: Sklop sprememb XML
+      changesetxml: Nabor sprememb XML
       osmchangexml: osmChange XML
       feed:
-        title: Sklop sprememb %{id}
-        title_comment: Sklop sprememb %{id} – %{comment}
+        title: Nabor sprememb %{id}
+        title_comment: Nabor sprememb %{id} – %{comment}
       join_discussion: Prijavite se za pridružitev pogovoru
       discussion: Pogovor
-      still_open: Sklop sprememb je še vedno odprt – pogovor se bo začel, ko bo sklop
-        sprememb zaključen.
+      still_open: Nabor sprememb je še vedno odprt – pogovor se bo začel, ko bo nabor
+        sprememb zaprt.
     node:
       title_html: 'Vozlišče: %{name}'
       history_title_html: 'Zgodovina vozlišča: %{name}'
@@ -440,7 +440,7 @@ sl:
         node: vozlišče
         way: pot
         relation: relacija
-        changeset: sklop sprememb
+        changeset: nabor sprememb
         note: opomba
     timeout:
       title: Napaka časovne omejitve
@@ -449,7 +449,7 @@ sl:
         node: vozlišče
         way: pot
         relation: relacija
-        changeset: sklop sprememb
+        changeset: nabor sprememb
         note: opomba
     redacted:
       redaction: Redakcija %{id}
@@ -488,7 +488,7 @@ sl:
     changeset:
       anonymous: Anonimen
       no_edits: (brez urejanj)
-      view_changeset_details: Ogled podrobnosti sklopa sprememb
+      view_changeset_details: Ogled podrobnosti nabora sprememb
     changesets:
       id: ID
       saved_at: Shranjeno ob
@@ -502,26 +502,26 @@ sl:
       title_friend: Množice sprememb mojih prijateljev
       title_nearby: Sklopi sprememb bližnjih uporabnikov
       empty: Ni najdenih množic sprememb.
-      empty_area: Na tem območju ni sklopov sprememb.
+      empty_area: Na tem območju ni naborov sprememb.
       empty_user: Ni množic sprememb tega uporabnika.
-      no_more: Ni drugih najdenih sklopov sprememb.
+      no_more: Ni drugih najdenih naborov sprememb.
       no_more_area: Na tem območju ni drugih množic sprememb.
-      no_more_user: Ni drugih sklopov sprememb tega uporabnika.
+      no_more_user: Ni drugih naborov sprememb tega uporabnika.
       load_more: Naloži več
     timeout:
-      sorry: Žal je trajalo pridobivanje zahtevanega sklopa sprememb predolgo.
+      sorry: Žal je trajalo pridobivanje zahtevanega nabora sprememb predolgo.
   changeset_comments:
     comment:
-      comment: 'Nov komentar o sklopu sprememb #%{changeset_id} uporabnika %{author}'
+      comment: 'Nov komentar o naboru sprememb #%{changeset_id} uporabnika %{author}'
       commented_at_by_html: Posodobil_a %{user} %{when}
     comments:
-      comment: 'Nov komentar o sklopu sprememb #%{changeset_id} uporabnika %{author}'
+      comment: 'Nov komentar o naboru sprememb #%{changeset_id} uporabnika %{author}'
     index:
-      title_all: Razprava o sklopu sprememb OpenStreetMap
-      title_particular: 'Razprava o sklopu sprememb OpenStreetMap #%{changeset_id}'
+      title_all: Razprava o naboru sprememb OpenStreetMap
+      title_particular: 'Razprava o naboru sprememb OpenStreetMap #%{changeset_id}'
     timeout:
-      sorry: Žal je trajalo pridobivanje seznama zahtevanih komentarjev sklopov sprememb
-        predolgo.
+      sorry: Žal je trajalo pridobivanje seznama komentarjev nabora sprememb, ki ste
+        ga zahtevali, predolgo.
   dashboards:
     contact:
       km away: oddaljen %{count} km
@@ -1720,26 +1720,26 @@ sl:
       hi: Pozdravljeni, %{to_user},
       greeting: Pozdravljeni,
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} je komentiral enega od vaših sklopov
+        subject_own: '[OpenStreetMap] %{commenter} je komentiral enega od vaših naborov
           sprememb'
         subject_other: '[OpenStreetMap] %{commenter} je komentiral množico sprememb,
           ki vas zanima'
-        your_changeset: '%{commenter} je %{time} komentiral enega od vaših sklopov
+        your_changeset: '%{commenter} je %{time} komentiral enega od vaših naborov
           sprememb'
         your_changeset_html: '%{commenter} je %{time} podal komentar na enega od vaših
-          sklopov sprememb'
-        commented_changeset: '%{commenter} je %{time} komentiral sklop sprememb, ki
+          naborov sprememb'
+        commented_changeset: '%{commenter} je %{time} komentiral nabor sprememb, ki
           ga spremljate in ga je ustvaril %{changeset_author}'
-        commented_changeset_html: '%{commenter} je podal komentar na sklop sprememb,
+        commented_changeset_html: '%{commenter} je podal komentar na nabor sprememb,
           ki ga opazujete in ki ga je %{time} ustvaril %{changeset_author}'
         partial_changeset_with_comment: s komentarjem »%{changeset_comment}«
         partial_changeset_with_comment_html: s komentarjem »%{changeset_comment}«
         partial_changeset_without_comment: brez komentarja
-      details: Več podrobnosti o tem sklopu sprememb lahko najdete na %{url}.
-      details_html: Več podrobnosti o tem sklopu sprememb lahko najdete na %{url}.
-      unsubscribe: Če se želite odnaročiti od obveščanja o tem sklopu sprememb, obiščite
+      details: Več podrobnosti o tem naboru sprememb lahko najdete na %{url}.
+      details_html: Več podrobnosti o tem naboru sprememb lahko najdete na %{url}.
+      unsubscribe: Če se želite odnaročiti od obveščanja o tem naboru sprememb, obiščite
         %{url} in kliknite »Odnaroči«.
-      unsubscribe_html: Če se želite odnaročiti od obveščanja o tem sklopu sprememb,
+      unsubscribe_html: Če se želite odnaročiti od obveščanja o tem naboru sprememb,
         obiščite %{url} in kliknite »Odnaroči«.
   confirmations:
     confirm:
@@ -1895,6 +1895,9 @@ sl:
       home location: Domača lokacija
       no home location: Niste nastavili vaše domače lokacije.
       update home location on click: Posodobim domačo lokacijo ob kliku zemljevida?
+      show: Prikaži
+      delete: Izbriši
+      undelete: Razvljavi izbris
     update:
       success: Profil posodobljen.
       failure: Profila ni bilo mogoče posodobiti.
index 4d74ecd4176952ce5c98de18938e0ada872d2f5e..085c06003f11b4f25125c722e40d19132c6e17ca 100644 (file)
@@ -1778,6 +1778,9 @@ zh-TW:
       home location: 家的位置
       no home location: 您尚未輸入家的位置。
       update home location on click: 當我點選地圖時更新家的位置?
+      show: 顯示
+      delete: 刪除
+      undelete: 還原刪除
     update:
       success: 已更新基本資料。
       failure: 無法更新個人資料。
index ec6cedb5ac903b945b78a967ed04d3ef0f5396a2..49b4531ada4ecd64fec8458a8840924953d9b35c 100644 (file)
@@ -27,6 +27,10 @@ status: "online"
 max_request_area: 0.25
 # Number of GPS trace/trackpoints returned per-page
 tracepoints_per_page: 5000
+# Default limit on the number of changesets returned by the changeset query api method
+default_changeset_query_limit: 100
+# Maximum limit on the number of changesets returned by the changeset query api method
+max_changeset_query_limit: 100
 # Maximum number of nodes that will be returned by the api in a map request
 max_number_of_nodes: 50000
 # Maximum number of nodes that can be in a way (checked on save)
index 9d6de4a6fafbc7ec6eb35a1adbd0700ecabf2b34..aa8e21938b149ffe13ca0f0a7e03fb107c3786d1 100644 (file)
@@ -9,10 +9,18 @@ module Api
         { :path => "/api/capabilities", :method => :get },
         { :controller => "api/capabilities", :action => "show" }
       )
+      assert_routing(
+        { :path => "/api/capabilities.json", :method => :get },
+        { :controller => "api/capabilities", :action => "show", :format => "json" }
+      )
       assert_recognizes(
         { :controller => "api/capabilities", :action => "show" },
         { :path => "/api/0.6/capabilities", :method => :get }
       )
+      assert_recognizes(
+        { :controller => "api/capabilities", :action => "show", :format => "json" },
+        { :path => "/api/0.6/capabilities.json", :method => :get }
+      )
     end
 
     def test_capabilities
@@ -32,5 +40,28 @@ module Api
         end
       end
     end
+
+    def test_capabilities_json
+      get api_capabilities_path, :params => { :format => "json" }
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+
+      assert_equal Settings.api_version, js["version"]
+      assert_equal Settings.generator, js["generator"]
+      assert_equal Settings.api_version, js["api"]["version"]["minimum"]
+      assert_equal Settings.api_version, js["api"]["version"]["maximum"]
+      assert_equal Settings.max_request_area, js["api"]["area"]["maximum"]
+      assert_equal Settings.max_note_request_area, js["api"]["note_area"]["maximum"]
+      assert_equal Settings.tracepoints_per_page, js["api"]["tracepoints"]["per_page"]
+      assert_equal Changeset::MAX_ELEMENTS, js["api"]["changesets"]["maximum_elements"]
+      assert_equal Settings.default_changeset_query_limit, js["api"]["changesets"]["default_query_limit"]
+      assert_equal Settings.max_changeset_query_limit, js["api"]["changesets"]["maximum_query_limit"]
+      assert_equal Settings.max_number_of_relation_members, js["api"]["relationmembers"]["maximum"]
+      assert_equal "online", js["api"]["status"]["database"]
+      assert_equal "online", js["api"]["status"]["api"]
+      assert_equal "online", js["api"]["status"]["gpx"]
+      assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length
+    end
   end
 end
index 40b8bc9f280e72ba4f0110d136dd56e6eb99adea..4f96e3ecb0d713b78f70988adb8f2f301d9c35e9 100644 (file)
@@ -151,7 +151,7 @@ module Api
       get changeset_show_path(changeset)
       assert_response :success, "cannot get first changeset"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "true"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -161,7 +161,7 @@ module Api
       get changeset_show_path(changeset), :params => { :include_discussion => true }
       assert_response :success, "cannot get first changeset with comments"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "true"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -175,7 +175,7 @@ module Api
       get changeset_show_path(changeset), :params => { :include_discussion => true }
       assert_response :success, "cannot get closed changeset with comments"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "false"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -194,7 +194,7 @@ module Api
       assert_not_nil js
 
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -210,7 +210,7 @@ module Api
       js = ActiveSupport::JSON.decode(@response.body)
       assert_not_nil js
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -247,7 +247,7 @@ module Api
 
       assert_not_nil js
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert_not js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -521,7 +521,7 @@ module Api
                       "can't upload a simple valid creation to changeset: #{@response.body}"
 
       # check the returned payload
-      assert_select "diffResult[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "diffResult[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "diffResult>node", 1
       assert_select "diffResult>way", 1
       assert_select "diffResult>relation", 1
@@ -759,7 +759,7 @@ module Api
                       "can't do a conditional delete of in use objects: #{@response.body}"
 
       # check the returned payload
-      assert_select "diffResult[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "diffResult[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "diffResult>node", 1
       assert_select "diffResult>way", 1
       assert_select "diffResult>relation", 1
@@ -1430,7 +1430,7 @@ module Api
                       "failed to return error in XML format"
 
       # check the returned payload
-      assert_select "osmError[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osmError[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osmError>status", 1
       assert_select "osmError>message", 1
     end
@@ -1890,7 +1890,7 @@ module Api
       assert_not_nil js
 
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal 2, js["changesets"].count
 
       # check that the correct error is given when we provide both UID and name
@@ -1950,19 +1950,58 @@ module Api
 
       get changesets_path
       assert_response :success
-      assert_changesets [changeset5, changeset4, changeset3, changeset2, changeset1]
+      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
 
       get changesets_path(:limit => "3")
       assert_response :success
-      assert_changesets [changeset5, changeset4, changeset3]
+      assert_changesets_in_order [changeset5, changeset4, changeset3]
 
       get changesets_path(:limit => "0")
       assert_response :bad_request
 
-      get changesets_path(:limit => "101")
+      get changesets_path(:limit => Settings.max_changeset_query_limit)
+      assert_response :success
+      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
+
+      get changesets_path(:limit => Settings.max_changeset_query_limit + 1)
       assert_response :bad_request
     end
 
+    ##
+    # test the query functionality of changesets with the order parameter
+    def test_query_order
+      user = create(:user)
+      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 2, 1, 0, 0, 0), :closed_at => Time.utc(2008, 2, 2, 0, 0, 0))
+      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 3, 1, 0, 0, 0), :closed_at => Time.utc(2008, 3, 2, 0, 0, 0))
+      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 4, 1, 0, 0, 0), :closed_at => Time.utc(2008, 4, 2, 0, 0, 0))
+      changeset5 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 5, 1, 0, 0, 0), :closed_at => Time.utc(2008, 5, 2, 0, 0, 0))
+
+      get changesets_path(:order => "oldest")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4, changeset5]
+
+      get changesets_path(:order => "oldest", :time => "2008-01-01T00:00Z,2018-01-01T00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4, changeset5]
+
+      get changesets_path(:order => "oldest", :time => "2008-01-02T00:00Z,2018-01-01T00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4, changeset5]
+
+      get changesets_path(:order => "oldest", :time => "2008-01-02T00:01Z,2018-01-01T00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset2, changeset3, changeset4, changeset5]
+
+      get changesets_path(:order => "oldest", :time => "2008-04-01T00:00Z,2018-01-01T00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset4, changeset5]
+
+      get changesets_path(:order => "oldest", :time => "2008-06-01T00:00Z,2018-01-01T00:00Z")
+      assert_response :success
+      assert_changesets_in_order []
+    end
+
     ##
     # check that errors are returned if garbage is inserted
     # into query strings
@@ -2243,8 +2282,7 @@ module Api
     private
 
     ##
-    # boilerplate for checking that certain changesets exist in the
-    # output.
+    # check that certain changesets exist in the output
     def assert_changesets(changesets)
       assert_select "osm>changeset", changesets.size
       changesets.each do |changeset|
@@ -2252,6 +2290,15 @@ module Api
       end
     end
 
+    ##
+    # check that certain changesets exist in the output in the specified order
+    def assert_changesets_in_order(changesets)
+      assert_select "osm>changeset", changesets.size
+      changesets.each_with_index do |changeset, index|
+        assert_select "osm>changeset:nth-child(#{index + 1})[id='#{changeset.id}']", 1
+      end
+    end
+
     ##
     # update the changeset_id of a way element
     def update_changeset(xml, changeset_id)
index eb8f8e02256eb5c3d8e97341a2f2758316199ba6..7f2c196654476c6499f058728952e0e2a17348aa 100644 (file)
@@ -915,7 +915,7 @@ module Api
       assert_response :success
 
       # count one osm element
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 
       # we should have only the expected number of relations
       assert_select "osm>relation", expected_relations.size
index c9464ffeddd0bc36eec82d4480b696aac71ddef2..6365d46e5de0aba5210c181131194d15dde78ca7 100644 (file)
@@ -563,35 +563,35 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     # Try and get the index
     get diary_entries_path
     assert_response :success
-    assert_select "div.diary_post", :count => 20
+    assert_select "article.diary_post", :count => 20
     assert_select "li.page-item a.page-link", :text => "Older Entries", :count => 1
     assert_select "li.page-item.disabled span.page-link", :text => "Newer Entries", :count => 1
 
     # Try and get the second page
     get css_select("li.page-item a.page-link").first["href"]
     assert_response :success
-    assert_select "div.diary_post", :count => 20
+    assert_select "article.diary_post", :count => 20
     assert_select "li.page-item a.page-link", :text => "Older Entries", :count => 1
     assert_select "li.page-item a.page-link", :text => "Newer Entries", :count => 1
 
     # Try and get the third page
     get css_select("li.page-item a.page-link").first["href"]
     assert_response :success
-    assert_select "div.diary_post", :count => 10
+    assert_select "article.diary_post", :count => 10
     assert_select "li.page-item.disabled span.page-link", :text => "Older Entries", :count => 1
     assert_select "li.page-item a.page-link", :text => "Newer Entries", :count => 1
 
     # Go back to the second page
     get css_select("li.page-item a.page-link").last["href"]
     assert_response :success
-    assert_select "div.diary_post", :count => 20
+    assert_select "article.diary_post", :count => 20
     assert_select "li.page-item a.page-link", :text => "Older Entries", :count => 1
     assert_select "li.page-item a.page-link", :text => "Newer Entries", :count => 1
 
     # Go back to the first page
     get css_select("li.page-item a.page-link").last["href"]
     assert_response :success
-    assert_select "div.diary_post", :count => 20
+    assert_select "article.diary_post", :count => 20
     assert_select "li.page-item a.page-link", :text => "Older Entries", :count => 1
     assert_select "li.page-item.disabled span.page-link", :text => "Newer Entries", :count => 1
   end
@@ -997,7 +997,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "index"
     assert_no_missing_translations
-    assert_select "div.diary_post", entries.count
+    assert_select "article.diary_post", entries.count
 
     entries.each do |entry|
       assert_select "a[href=?]", "/user/#{ERB::Util.u(entry.user.display_name)}/diary/#{entry.id}"
index cb7125cca157cc3ed96e9f7e0dfaeab78690c60a..044f71681f2ec9ef2432bcc98c25dd00ecb3acfc 100644 (file)
@@ -111,7 +111,7 @@ class UserHelperTest < ActionView::TestCase
 
   def test_openid_logo
     logo = openid_logo
-    assert_match %r{^<img .* class="openid_logo" src="/images/openid_small.png" />$}, logo
+    assert_match %r{^<img .* src="/images/openid_small.png" />$}, logo
   end
 
   def test_auth_button
index 8329b19627942a57e2e251c3ba13c584062ae957..a4ed07e09eac0079a610f8e03762b0b89aeda105 100644 (file)
@@ -239,11 +239,11 @@ class UserTest < ActiveSupport::TestCase
     assert_predicate create(:administrator_user), :administrator?
   end
 
-  def test_has_role?
-    assert_not create(:user).has_role?("administrator")
-    assert_not create(:user).has_role?("moderator")
-    assert create(:administrator_user).has_role?("administrator")
-    assert create(:moderator_user).has_role?("moderator")
+  def test_role?
+    assert_not create(:user).role?("administrator")
+    assert_not create(:user).role?("moderator")
+    assert create(:administrator_user).role?("administrator")
+    assert create(:moderator_user).role?("moderator")
   end
 
   def test_soft_destroy
index 2be69e654412d3d4eaef79bf29672638e387fa71..5ff60cd309f263db36b99d2d5011f7e4814e684a 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
   resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
   integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
 
-"@eslint/eslintrc@^2.1.1":
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.1.tgz#18d635e24ad35f7276e8a49d135c7d3ca6a46f93"
-  integrity sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==
+"@eslint/eslintrc@^2.1.2":
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
+  integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
   dependencies:
     ajv "^6.12.4"
     debug "^4.3.2"
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@^8.46.0":
-  version "8.46.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6"
-  integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==
+"@eslint/js@^8.47.0":
+  version "8.47.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d"
+  integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==
 
 "@humanwhocodes/config-array@^0.11.10":
   version "0.11.10"
@@ -218,20 +218,20 @@ eslint-scope@^7.2.2:
     esrecurse "^4.3.0"
     estraverse "^5.2.0"
 
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2:
-  version "3.4.2"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f"
-  integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+  version "3.4.3"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
 eslint@^8.0.0:
-  version "8.46.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552"
-  integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==
+  version "8.47.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806"
+  integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.6.1"
-    "@eslint/eslintrc" "^2.1.1"
-    "@eslint/js" "^8.46.0"
+    "@eslint/eslintrc" "^2.1.2"
+    "@eslint/js" "^8.47.0"
     "@humanwhocodes/config-array" "^0.11.10"
     "@humanwhocodes/module-importer" "^1.0.1"
     "@nodelib/fs.walk" "^1.2.8"
@@ -242,7 +242,7 @@ eslint@^8.0.0:
     doctrine "^3.0.0"
     escape-string-regexp "^4.0.0"
     eslint-scope "^7.2.2"
-    eslint-visitor-keys "^3.4.2"
+    eslint-visitor-keys "^3.4.3"
     espree "^9.6.1"
     esquery "^1.4.2"
     esutils "^2.0.2"