From: Andy Allan Date: Wed, 16 Aug 2023 10:35:33 +0000 (+0100) Subject: Merge pull request #4148 from tomhughes/avatar-image X-Git-Tag: live~641 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/9173dd3192e518671d419cdfac5c51fa5d4f5094?hp=473d7cd179b2be697c8f1d9104fd3c556d14483e Merge pull request #4148 from tomhughes/avatar-image Use correct extension and type for avatar images attached to mails --- diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 527c79354..db94a610b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -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: diff --git a/Gemfile.lock b/Gemfile.lock index dc2bb6080..b75e93606 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,73 +3,73 @@ 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) @@ -86,8 +86,8 @@ GEM autoprefixer-rails (10.4.13.0) execjs (~> 2) aws-eventstream (1.2.0) - aws-partitions (1.799.0) - aws-sdk-core (3.180.2) + 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) @@ -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) @@ -387,20 +388,20 @@ GEM 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) @@ -412,12 +413,12 @@ GEM 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) diff --git a/app/assets/images/banners/donate_2023_1.jpg b/app/assets/images/banners/donate_2023_1.jpg new file mode 100644 index 000000000..0a445b5e2 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 index 000000000..8f519b63a 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 index e6cc0cd79..000000000 Binary files a/app/assets/images/banners/sotm_2022.png and /dev/null differ diff --git a/app/assets/javascripts/messages.js b/app/assets/javascripts/messages.js index 0cae79a58..5accc1a60 100644 --- a/app/assets/javascripts/messages.js +++ b/app/assets/javascripts/messages.js @@ -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); + } }); diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index 964f187f9..146d876f7 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -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 + } - $("#home_message").hide(); - $("#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(); diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index efd0ac265..5f89453c6 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -304,7 +304,7 @@ body.small-nav { } nav.secondary { - .user-menu { + .user-menu, .login-menu { width: 100%; } } @@ -460,6 +460,11 @@ body.small-nav { display: block; width: $sidebarWidth; } + + button.btn-close { + background-color: rgba(255, 255, 255, 0.5); + opacity: 1.0; + } } #map { @@ -1047,49 +1052,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,11 +1112,6 @@ tr.turn:hover { /* Rules for messages pages */ .messages { - button[type="submit"] { - margin: auto; - white-space: nowrap; - } - .inbox-row { background: $offwhite; } @@ -1144,42 +1119,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; } .search_form { @@ -1216,15 +1155,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; @@ -1251,24 +1183,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, diff --git a/app/controllers/api/capabilities_controller.rb b/app/controllers/api/capabilities_controller.rb index 7f91557f8..80222c40b 100644 --- a/app/controllers/api/capabilities_controller.rb +++ b/app/controllers/api/capabilities_controller.rb @@ -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 diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 0dffd4de2..0a49a95f4 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -170,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) diff --git a/app/controllers/diary_entries_controller.rb b/app/controllers/diary_entries_controller.rb index ea9aacb21..6981ed797 100644 --- a/app/controllers/diary_entries_controller.rb +++ b/app/controllers/diary_entries_controller.rb @@ -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 diff --git a/app/controllers/issue_comments_controller.rb b/app/controllers/issue_comments_controller.rb index 7edef184e..5bf4d0237 100644 --- a/app/controllers/issue_comments_controller.rb +++ b/app/controllers/issue_comments_controller.rb @@ -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") diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 44c19e322..c381119f0 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -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 diff --git a/app/controllers/user_roles_controller.rb b/app/controllers/user_roles_controller.rb index fe4c855e3..cf5b4de9e 100644 --- a/app/controllers/user_roles_controller.rb +++ b/app/controllers/user_roles_controller.rb @@ -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 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index abd998030..fc9a6afc0 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -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 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bb09f3a49..28c97e485 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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] diff --git a/app/helpers/user_helper.rb b/app/helpers/user_helper.rb index 1064e95c7..c8a80588c 100644 --- a/app/helpers/user_helper.rb +++ b/app/helpers/user_helper.rb @@ -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 = {}) diff --git a/app/helpers/user_roles_helper.rb b/app/helpers/user_roles_helper.rb index a8bc06b6e..c9f8e2e65 100644 --- a/app/helpers/user_roles_helper.rb +++ b/app/helpers/user_roles_helper.rb @@ -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}") diff --git a/app/models/user.rb b/app/models/user.rb index c809b6192..5c21736b0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 diff --git a/app/views/api/capabilities/show.json.jbuilder b/app/views/api/capabilities/show.json.jbuilder new file mode 100644 index 000000000..ceffa8b0e --- /dev/null +++ b/app/views/api/capabilities/show.json.jbuilder @@ -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 diff --git a/app/views/api/users/_user.json.jbuilder b/app/views/api/users/_user.json.jbuilder index 15f0685ac..1a339f628 100644 --- a/app/views/api/users/_user.json.jbuilder +++ b/app/views/api/users/_user.json.jbuilder @@ -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 diff --git a/app/views/api/users/_user.xml.builder b/app/views/api/users/_user.xml.builder index 1791c60ef..9fb74826a 100644 --- a/app/views/api/users/_user.xml.builder +++ b/app/views/api/users/_user.xml.builder @@ -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 diff --git a/app/views/dashboards/_contact.html.erb b/app/views/dashboards/_contact.html.erb index 7785c0552..0c012cec9 100644 --- a/app/views/dashboards/_contact.html.erb +++ b/app/views/dashboards/_contact.html.erb @@ -11,7 +11,7 @@

<%= 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 %>) diff --git a/app/views/dashboards/show.html.erb b/app/views/dashboards/show.html.erb index d0344ce79..744661dfd 100644 --- a/app/views/dashboards/show.html.erb +++ b/app/views/dashboards/show.html.erb @@ -5,7 +5,7 @@

<% if current_user and @user.id == current_user.id %>
- <% if @user.home_lat.nil? or @user.home_lon.nil? %> + <% if !@user.home_location? %>

<%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %>

diff --git a/app/views/diary_entries/_diary_comment.html.erb b/app/views/diary_entries/_diary_comment.html.erb index 403d30742..238f4d43c 100644 --- a/app/views/diary_entries/_diary_comment.html.erb +++ b/app/views/diary_entries/_diary_comment.html.erb @@ -1,9 +1,9 @@ -
"> +
">
<%= user_thumbnail diary_comment.user %>
-

<%= 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}")) %> +

<%= 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 %> diff --git a/app/views/diary_entries/_diary_entry.html.erb b/app/views/diary_entries/_diary_entry.html.erb index 37420cdf1..f69c7e552 100644 --- a/app/views/diary_entries/_diary_entry.html.erb +++ b/app/views/diary_entries/_diary_entry.html.erb @@ -1,4 +1,4 @@ -

+
<% if @user %>

<%= link_to diary_entry.title, diary_entry_path(diary_entry.user, diary_entry) %>

@@ -65,4 +65,4 @@ <% end %> -
+
diff --git a/app/views/diary_entries/_form.html.erb b/app/views/diary_entries/_form.html.erb index e07971089..bfb1c1823 100644 --- a/app/views/diary_entries/_form.html.erb +++ b/app/views/diary_entries/_form.html.erb @@ -5,13 +5,13 @@
<%= t ".location" -%> - <%= 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 } %>
<%= f.text_field :latitude, :wrapper_class => "col-sm-4", :id => "latitude" %> <%= f.text_field :longitude, :wrapper_class => "col-sm-4", :id => "longitude" %> -
- +
+
diff --git a/app/views/diary_entries/show.html.erb b/app/views/diary_entries/show.html.erb index 879207495..5bfdfa17b 100644 --- a/app/views/diary_entries/show.html.erb +++ b/app/views/diary_entries/show.html.erb @@ -12,8 +12,7 @@ <%= render @entry %> - -
+
<%= render :partial => "diary_comment", :collection => @comments %>
diff --git a/app/views/layouts/_banner.html.erb b/app/views/layouts/_banner.html.erb index f806201eb..4f24f538d 100644 --- a/app/views/layouts/_banner.html.erb +++ b/app/views/layouts/_banner.html.erb @@ -1,4 +1,4 @@ <% unless (banner = next_banner()).nil? %> -<%= link_to (image_tag banner[:img], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %> - +<%= link_to (image_tag banner[:img], :srcset => banner[:srcset], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %> + <% end %> diff --git a/app/views/layouts/map.html.erb b/app/views/layouts/map.html.erb index 6d983d30e..377f96149 100644 --- a/app/views/layouts/map.html.erb +++ b/app/views/layouts/map.html.erb @@ -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"), "#", diff --git a/app/views/messages/_message_summary.html.erb b/app/views/messages/_message_summary.html.erb index 1a4445eae..b2a1bc268 100644 --- a/app/views/messages/_message_summary.html.erb +++ b/app/views/messages/_message_summary.html.erb @@ -1,8 +1,10 @@ "> - <%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %> - <%= link_to message_summary.title, message_path(message_summary) %> - <%= l message_summary.sent_on, :format => :friendly %> - <%= button_to t(".unread_button"), message_mark_path(message_summary, :mark => "unread"), :remote => true, :class => "btn btn-sm btn-primary" %> - <%= button_to t(".read_button"), message_mark_path(message_summary, :mark => "read"), :remote => true, :class => "btn btn-sm btn-primary" %> - <%= button_to t(".destroy_button"), message_path(message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %> + <%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %> + <%= link_to message_summary.title, message_path(message_summary) %> + <%= l message_summary.sent_on, :format => :friendly %> + + <%= 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" %> + diff --git a/app/views/messages/_sent_message_summary.html.erb b/app/views/messages/_sent_message_summary.html.erb index 4d1b361b1..24caba5ab 100644 --- a/app/views/messages/_sent_message_summary.html.erb +++ b/app/views/messages/_sent_message_summary.html.erb @@ -1,6 +1,8 @@ - <%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %> - <%= link_to sent_message_summary.title, message_path(sent_message_summary) %> - <%= l sent_message_summary.sent_on, :format => :friendly %> - <%= button_to t(".destroy_button"), message_path(sent_message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %> + <%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %> + <%= link_to sent_message_summary.title, message_path(sent_message_summary) %> + <%= l sent_message_summary.sent_on, :format => :friendly %> + + <%= 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" %> + diff --git a/app/views/messages/inbox.html.erb b/app/views/messages/inbox.html.erb index 4f2925b14..54089c34a 100644 --- a/app/views/messages/inbox.html.erb +++ b/app/views/messages/inbox.html.erb @@ -19,14 +19,12 @@

<%= render :partial => "message_count" %>

<% if current_user.messages.size > 0 %> - +
- - diff --git a/app/views/messages/outbox.html.erb b/app/views/messages/outbox.html.erb index 0099b573d..e246f9292 100644 --- a/app/views/messages/outbox.html.erb +++ b/app/views/messages/outbox.html.erb @@ -20,13 +20,12 @@

<%= t ".messages", :count => current_user.sent_messages.size %>

<% if current_user.sent_messages.size > 0 %> -
<%= t ".from" %> <%= t ".subject" %> <%= t ".date" %>
+
- diff --git a/app/views/messages/show.html.erb b/app/views/messages/show.html.erb index 9ade68121..4761aac60 100644 --- a/app/views/messages/show.html.erb +++ b/app/views/messages/show.html.erb @@ -2,36 +2,29 @@

<%= @message.title %>

<% end %> -<% if current_user == @message.recipient %> -
+
+ <% if current_user == @message.recipient %> <%= user_thumbnail_tiny @message.sender %> - <%= link_to @message.sender.display_name, user_path(@message.sender) %> -
- <%= l @message.sent_on, :format => :friendly %> -
-
+ <%= 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 %> + + <%= l @message.sent_on, :format => :friendly %> + +
-
<%= @message.body.to_html %>
+
<%= @message.body.to_html %>
-
+
+ <% 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" %> -
-<% else %> -
- <%= user_thumbnail_tiny @message.recipient %> - <%= link_to @message.recipient.display_name, user_path(@message.recipient) %> -
- <%= l @message.sent_on, :format => :friendly %> -
-
- -
<%= @message.body.to_html %>
- -
+ <% 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" %> -
-<% end %> + <% end %> +
diff --git a/app/views/profiles/edit.html.erb b/app/views/profiles/edit.html.erb index 5bf7426f2..bf53832c8 100644 --- a/app/views/profiles/edit.html.erb +++ b/app/views/profiles/edit.html.erb @@ -42,13 +42,18 @@
<%= t ".home location" -%> -

hidden<% end %>><%= t ".no home location" %>

+

<%= t ".no home location" %>

<%= 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" %> +
+ + + +
- checked="checked" <% end %> id="updatehome" /> + checked <% end %> id="updatehome" />
<%= tag.div "", :id => "map", :class => "content_map set_location border border-grey rounded" %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 4dcc9ab05..81e33dddb 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -118,12 +118,12 @@
-
-
<%= t ".mapper since" %>
-
<%= l @user.created_at.to_date, :format => :long %>
+
+
<%= t ".mapper since" %>
+
<%= l @user.created_at.to_date, :format => :long %>
<% unless @user.terms_agreed %> -
<%= t ".ct status" %>
-
+
<%= t ".ct status" %>
+
<% if @user.terms_seen? -%> <%= t ".ct declined" %> <% else -%> @@ -188,17 +188,17 @@ <% if current_user and current_user.administrator? -%>
-
-
<%= t ".email address" %>
-
<%= @user.email %>
+
+
<%= t ".email address" %>
+
<%= @user.email %>
<% unless @user.creation_ip.nil? -%> -
<%= t ".created from" %>
-
<%= @user.creation_ip %>
+
<%= t ".created from" %>
+
<%= @user.creation_ip %>
<% end -%> -
<%= t ".status" %>
-
<%= @user.status.capitalize %>
-
<%= t ".spam score" %>
-
<%= @user.spam_score %>
+
<%= t ".status" %>
+
<%= @user.status.capitalize %>
+
<%= t ".spam score" %>
+
<%= @user.spam_score %>
diff --git a/config/banners.yml b/config/banners.yml index affe6b144..c2a4df07b 100644 --- a/config/banners.yml +++ b/config/banners.yml @@ -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 diff --git a/config/locales/af.yml b/config/locales/af.yml index 73eebb406..1db4fa18d 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -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. diff --git a/config/locales/bg.yml b/config/locales/bg.yml index b16e1e0ce..25fdb18d6 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -202,9 +202,9 @@ bg: default: По подразбиране (в момента %{name}) id: name: iD - description: iD (редактиране в браузър) + description: iD (редактиране в браузъра) remote: - name: Дистанционно управление + name: дистанционно управление description: Дистанционно управление (JOSM, Potlatch или Merkaartor) auth: providers: @@ -560,7 +560,7 @@ bg: boat_rental: Наем на лодки brothel: Бордел bureau_de_change: Обменно бюро - bus_station: Автобусна спирка + bus_station: Автогара cafe: Кафене car_rental: Коли под наем car_sharing: Съвместно пътуване @@ -1573,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: @@ -1718,6 +1734,27 @@ bg: 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 @@ -1997,6 +2034,12 @@ bg: comment: Коментиране new: title: Нова бележка + intro: Забелязали сте грешка или нещо липсващо? Уведомете другите картографи, + за да можем да го поправим. Преместете маркера на правилната позиция и напишете + бележка, за да обясните проблема. + advice: Бележката ви е публична и може да бъде използвана за актуализиране на + картата, така че не въвеждайте лична информация или информация от карти или + списъци с указатели, защитени с авторски права. add: Добавяне на бележка javascripts: close: Затваряне @@ -2026,7 +2069,7 @@ bg: tooltip_disabled: Легендата не е достъпна за този слой map: zoom: - in: Увеличаване + in: Приближаване out: Отдалечаване locate: title: Моето местоположение @@ -2049,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: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 1974366ea..19dc32de1 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -43,6 +43,7 @@ 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 newid @@ -122,6 +123,7 @@ cy: 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 @@ -452,6 +454,7 @@ 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. @@ -510,9 +513,11 @@ cy: 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: @@ -543,6 +548,8 @@ cy: title: Gwaharddedig internal_server_error: title: Gwall ap + not_found: + title: Heb ganfod ffeil friendships: make_friend: heading: Ychwanegu %{user} fel ffrind? @@ -710,6 +717,7 @@ cy: hospital: Adeilad Ysbyty hotel: Adeilad Gwesty house: TÅ· + houseboat: Cwch preswyl hut: Cwt industrial: Adeilad Diwydiannol kindergarten: Adeilad Meithrinfa @@ -720,11 +728,13 @@ cy: 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 @@ -734,22 +744,30 @@ cy: 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 @@ -794,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 @@ -988,6 +1012,7 @@ cy: educational_institution: Sefydliad Addysgol employment_agency: Asiantaeth Cyflogi estate_agent: Gwerthwr Tai + financial: Swyddfa Gyllid government: Swyddfa Llywodraeth insurance: Swyddfa Yswiriant it: Swyddfa TG @@ -1016,6 +1041,7 @@ cy: locality: Ardal municipality: Bwrdeistref neighbourhood: Cymdogaeth + plot: Plot postcode: Cod Post quarter: Maestref region: Rhanbarth @@ -1232,6 +1258,9 @@ cy: resolve: Datrys ignore: Anwybyddu reopen: Ailagor + helper: + reportable_title: + note: 'Nodyn #%{note_id}' reports: new: title_html: Adrodd %{link} @@ -1268,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 @@ -1368,6 +1399,7 @@ cy: to: I subject: Pwnc date: Dyddiad + people_mapping_nearby: pobl yn mapio gerllaw show: title: Darllen neges reply_button: Ateb @@ -1396,6 +1428,8 @@ cy: preferences: show: title: Dewisiadau + preferred_editor: Hoff Olygydd + preferred_languages: Ieithoedd edit_preferences: Dewisiadau Golygu edit: title: Dewisiadau Golygu @@ -1505,7 +1539,9 @@ cy: 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 @@ -1580,6 +1616,7 @@ cy: title: Ymunwch â'r gymuned other_concerns: title: Gofidion eraill + copyright: tudalen hawlfraint help: title: Cael Cymorth welcome: @@ -1701,6 +1738,7 @@ cy: start_mapping: Dechrau Mapio add_a_note: title: Dim amser i olygu? Ychwanegwch nodyn! + the_map: map communities: title: Cymunedau other_groups: @@ -1798,6 +1836,10 @@ cy: delete: Dileu client_id: ID Cleient client_secret: Cyfrinach Cleient + oauth2_authorizations: + new: + authorize: Awdurdodi + deny: Gwrthod users: new: title: Cofrestru @@ -1898,6 +1940,7 @@ cy: notes: index: id: Id + description: Disgrifiad created_at: Crëwyd am last_changed: Newidiwyd ddiwethaf show: @@ -1969,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: diff --git a/config/locales/en.yml b/config/locales/en.yml index c05b92d44..e14c5806c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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. diff --git a/config/locales/es.yml b/config/locales/es.yml index 82403522c..48167044f 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -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: Ví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: Ví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: Ví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 © %{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®, GeoGratis + (© Departmento de recursos naturales de Canadá), CanVec (© 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 © 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 © 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 deberán - 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: Vía principal + trunk: Vía troncal + primary: Vía primaria + secondary: Ví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: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4022ba877..0aa7d67d6 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index e931f9877..5df67b976 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1852,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. @@ -1962,6 +1964,8 @@ hu: 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: diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 3ac1f4a33..7a4063e4b 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -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. diff --git a/config/locales/it.yml b/config/locales/it.yml index f19773d34..e000c5781 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -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. diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 9c945b806..9869ab108 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1766,6 +1766,7 @@ ja: home location: ホーム地点 no home location: あなたはまだホーム地点を登録していません。 update home location on click: ホーム地点を、地図上のクリックした地点に変更 + delete: 削除 update: success: プロフィール更新済み。 failure: プロファイルを更新できませんでした。 diff --git a/config/locales/lb.yml b/config/locales/lb.yml index 18f7b6bc3..7d92e3a5a 100644 --- a/config/locales/lb.yml +++ b/config/locales/lb.yml @@ -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. diff --git a/config/locales/mk.yml b/config/locales/mk.yml index 84c971af5..720b34c6b 100644 --- a/config/locales/mk.yml +++ b/config/locales/mk.yml @@ -1828,6 +1828,9 @@ mk: no home location: Немате внесено матична местоположба. update home location on click: Подновувај ја матичната местоположба кога ќе стиснам на картата + show: Прикажи + delete: Избриши + undelete: Откажи бришење update: success: Профилот е подновен. failure: Не можев да го подновам профилот. diff --git a/config/locales/nb.yml b/config/locales/nb.yml index 9a5fb3a94..34e08cea6 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -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 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 058ada96c..95794336a 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -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. diff --git a/config/locales/ro.yml b/config/locales/ro.yml index f60c4cffb..eae6cf76c 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -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© 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 © %{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®, GeoGratis (© Departamentul de Natură + Resources Canada), CanVec (© 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 © 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}'. diff --git a/config/locales/skr-arab.yml b/config/locales/skr-arab.yml index 72474027f..b33dcc7b7 100644 --- a/config/locales/skr-arab.yml +++ b/config/locales/skr-arab.yml @@ -1089,6 +1089,9 @@ skr-arab: save: پروفائل اپ ڈیٹ کرو cancel: منسوخ image: تصویر + show: ݙِکھاؤ + delete: مٹاؤ + undelete: بحال sessions: new: title: لاگ ان diff --git a/config/locales/sl.yml b/config/locales/sl.yml index bc4c08c21..3bbe874dd 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -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. diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 4d74ecd41..085c06003 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1778,6 +1778,9 @@ zh-TW: home location: 家的位置 no home location: 您尚未輸入家的位置。 update home location on click: 當我點選地圖時更新家的位置? + show: 顯示 + delete: 刪除 + undelete: 還原刪除 update: success: 已更新基本資料。 failure: 無法更新個人資料。 diff --git a/test/controllers/api/capabilities_controller_test.rb b/test/controllers/api/capabilities_controller_test.rb index 9d6de4a6f..aa8e21938 100644 --- a/test/controllers/api/capabilities_controller_test.rb +++ b/test/controllers/api/capabilities_controller_test.rb @@ -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 diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb index 7f2cd0abb..4f96e3ecb 100644 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@ -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,23 +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 => Settings.max_changeset_query_limit) assert_response :success - assert_changesets [changeset5, changeset4, changeset3, changeset2, changeset1] + 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 @@ -2247,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| @@ -2256,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) diff --git a/test/controllers/api/relations_controller_test.rb b/test/controllers/api/relations_controller_test.rb index eb8f8e022..7f2c19665 100644 --- a/test/controllers/api/relations_controller_test.rb +++ b/test/controllers/api/relations_controller_test.rb @@ -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 diff --git a/test/controllers/diary_entries_controller_test.rb b/test/controllers/diary_entries_controller_test.rb index c9464ffed..6365d46e5 100644 --- a/test/controllers/diary_entries_controller_test.rb +++ b/test/controllers/diary_entries_controller_test.rb @@ -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}" diff --git a/test/helpers/user_helper_test.rb b/test/helpers/user_helper_test.rb index cb7125cca..044f71681 100644 --- a/test/helpers/user_helper_test.rb +++ b/test/helpers/user_helper_test.rb @@ -111,7 +111,7 @@ class UserHelperTest < ActionView::TestCase def test_openid_logo logo = openid_logo - assert_match %r{^$}, logo + assert_match %r{^$}, logo end def test_auth_button diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 8329b1962..a4ed07e09 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -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 diff --git a/yarn.lock b/yarn.lock index 2be69e654..5ff60cd30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,10 +19,10 @@ 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" @@ -34,10 +34,10 @@ 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"
<%= t ".to" %> <%= t ".subject" %> <%= t ".date" %>