From: Tom Hughes Date: Thu, 30 May 2024 15:33:59 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/pull/4843' X-Git-Tag: live~464 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/c36f09b28db7244066df53b9e52c7ab32a1693da?hp=1cf4bf5d983c65ac0bb3868f0bd962b016433265 Merge remote-tracking branch 'upstream/pull/4843' --- diff --git a/Gemfile.lock b/Gemfile.lock index bf78a3d3d..4c7bba388 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,13 +95,13 @@ GEM autoprefixer-rails (10.4.16.0) execjs (~> 2) aws-eventstream (1.3.0) - aws-partitions (1.931.0) + aws-partitions (1.934.0) aws-sdk-core (3.196.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.81.0) + aws-sdk-kms (1.82.0) aws-sdk-core (~> 3, >= 3.193.0) aws-sigv4 (~> 1.1) aws-sdk-s3 (1.151.0) @@ -140,7 +140,7 @@ GEM builder (3.2.4) bzip2-ffi (1.1.1) ffi (~> 1.0) - cancancan (3.5.0) + cancancan (3.6.1) canonical-rails (0.2.15) actionview (>= 4.1, <= 7.2) capybara (3.40.0) @@ -153,7 +153,7 @@ GEM regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) concurrent-ruby (1.2.3) - config (5.4.0) + config (5.5.0) deep_merge (~> 1.2, >= 1.2.1) connection_pool (2.4.1) crack (1.0.0) @@ -198,7 +198,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.3) + dry-schema (1.13.4) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -330,7 +330,7 @@ GEM mini_portile2 (2.8.6) mini_racer (0.9.0) libv8-node (~> 18.19.0.0) - minitest (5.23.0) + minitest (5.23.1) minitest-focus (1.4.0) minitest (>= 4, < 6) msgpack (1.7.2) @@ -369,8 +369,9 @@ GEM hashie (>= 3.4.6) rack (>= 1.6.2, < 3) rack-protection - omniauth-facebook (9.0.0) - omniauth-oauth2 (~> 1.2) + omniauth-facebook (10.0.0) + bigdecimal + omniauth-oauth2 (>= 1.2, < 3) omniauth-github (2.0.1) omniauth (~> 2.0) omniauth-oauth2 (~> 1.8) @@ -474,7 +475,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rdoc (6.6.3.1) + rdoc (6.7.0) psych (>= 4.0.0) regexp_parser (2.9.2) reline (0.5.7) @@ -488,7 +489,7 @@ GEM rouge (4.2.1) rtlcss (0.2.1) mini_racer (>= 0.6.3) - rubocop (1.63.5) + rubocop (1.64.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -541,8 +542,7 @@ GEM simplecov-html (0.12.3) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) - simpleidn (0.2.2) - unf (~> 0.1.4) + simpleidn (0.2.3) smart_properties (1.17.0) snaky_hash (2.0.1) hashie @@ -574,9 +574,6 @@ GEM railties (>= 6.0.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) unicode-display_width (2.5.0) uri (0.13.0) validates_email_format_of (1.8.2) @@ -584,7 +581,7 @@ GEM simpleidn vendorer (0.2.0) version_gem (1.1.4) - webmock (3.23.0) + webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -595,7 +592,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.14) + zeitwerk (2.6.15) PLATFORMS ruby diff --git a/app/assets/images/directions.png b/app/assets/images/directions.png deleted file mode 100644 index 197244f4a..000000000 Binary files a/app/assets/images/directions.png and /dev/null differ diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 20976d15a..054742126 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -106,6 +106,7 @@ $(document).ready(function () { $("body").removeClass("compact-nav"); $("header").removeClass("text-nowrap"); + $("header nav.secondary > ul").removeClass("flex-nowrap"); updateHeader(); diff --git a/app/assets/javascripts/index/browse.js b/app/assets/javascripts/index/browse.js index 69d625eca..7a761b500 100644 --- a/app/assets/javascripts/index/browse.js +++ b/app/assets/javascripts/index/browse.js @@ -58,7 +58,7 @@ OSM.initializeBrowse = function (map) { .click(cancel))), $("

") .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })), - $("") + $("") .val(I18n.t("browse.start_rjs.load_data")) .click(add))); } diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 7c216ad4b..4b7380ffc 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -16,8 +16,6 @@ time[title] { text-decoration: underline dotted; } -#container { position: relative; } - /* Rules for icons */ .icon { @@ -98,10 +96,6 @@ header { position: relative; font-size: 14px; - h1, nav, nav > ul, nav > ul > li { - display: inline-block; - } - > * { padding: $lineheight * 0.5; } @@ -118,6 +112,10 @@ header { nav.primary { margin-right: auto; } + + .username { + max-width: 12em; + } } nav.primary { @@ -154,7 +152,7 @@ nav.primary { nav.secondary { .nav-link { - padding: 0.2rem; + padding: 0.3rem; } } @@ -191,7 +189,7 @@ body.small-nav { min-height: $headerHeight; &.closed nav { - display: none; + display: none !important; } .search_forms { @@ -216,6 +214,8 @@ body.small-nav { } nav.secondary { + flex-direction: column; + .user-menu, .login-menu { width: 100%; } @@ -489,16 +489,6 @@ body.small-nav { .donate-attr { color: darken($green, 10%) !important; } -/* Rules for the sidebar */ - -#browse_status { - input { - display: block; - margin-left: auto; - margin-right: auto; - } -} - /* Temporary label size override until we remove site-wide font customisation */ form { @@ -580,10 +570,6 @@ tr.turn { .routing_marker { width: 15px; cursor: move; } -.browse_status { - display: none; -} - /* Rules for the history sidebar */ #sidebar .changesets { @@ -637,16 +623,6 @@ tr.turn { } } -/* Bootstrap buttons don't have any vertical margin, so - they touch when adjacent buttons wrap onto a new line - e.g. wide form buttons on a narrow sidebar */ - -.btn-wrapper { - > .btn { - margin-bottom: $spacer * 0.25; - } -} - /* Force LTR/RTL alignment for placeholder text */ .form-control::placeholder { diff --git a/app/controllers/api/capabilities_controller.rb b/app/controllers/api/capabilities_controller.rb index 80222c40b..cbdcace0c 100644 --- a/app/controllers/api/capabilities_controller.rb +++ b/app/controllers/api/capabilities_controller.rb @@ -1,5 +1,7 @@ module Api class CapabilitiesController < ApiController + skip_before_action :check_api_readable + authorize_resource :class => false before_action :set_request_formats diff --git a/app/controllers/api/changeset_comments_controller.rb b/app/controllers/api/changeset_comments_controller.rb index e8d3f4c3a..4a96ec3bb 100644 --- a/app/controllers/api/changeset_comments_controller.rb +++ b/app/controllers/api/changeset_comments_controller.rb @@ -1,7 +1,6 @@ module Api class ChangesetCommentsController < ApiController before_action :check_api_writable - before_action :check_api_readable, :except => [:create] before_action :authorize authorize_resource diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 2e21f0c75..3d59eeb17 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -3,7 +3,6 @@ module Api class ChangesetsController < ApiController before_action :check_api_writable, :only => [:create, :update, :upload, :subscribe, :unsubscribe] - before_action :check_api_readable, :except => [:index, :create, :update, :upload, :download, :subscribe, :unsubscribe] before_action :setup_user_auth, :only => [:show] before_action :authorize, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe] diff --git a/app/controllers/api/map_controller.rb b/app/controllers/api/map_controller.rb index 5a05f6de2..6d4a9feb6 100644 --- a/app/controllers/api/map_controller.rb +++ b/app/controllers/api/map_controller.rb @@ -1,7 +1,5 @@ module Api class MapController < ApiController - before_action :check_api_readable - authorize_resource :class => false around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/nodes_controller.rb b/app/controllers/api/nodes_controller.rb index dc7d04dc5..5aad78dbf 100644 --- a/app/controllers/api/nodes_controller.rb +++ b/app/controllers/api/nodes_controller.rb @@ -3,7 +3,6 @@ module Api class NodesController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api/notes_controller.rb b/app/controllers/api/notes_controller.rb index 8a0a82c40..d53059a94 100644 --- a/app/controllers/api/notes_controller.rb +++ b/app/controllers/api/notes_controller.rb @@ -1,6 +1,5 @@ module Api class NotesController < ApiController - before_action :check_api_readable before_action :check_api_writable, :only => [:create, :comment, :close, :reopen, :destroy] before_action :setup_user_auth, :only => [:create, :show] before_action :authorize, :only => [:close, :reopen, :destroy, :comment] diff --git a/app/controllers/api/old_elements_controller.rb b/app/controllers/api/old_elements_controller.rb index 6a468a900..2343252db 100644 --- a/app/controllers/api/old_elements_controller.rb +++ b/app/controllers/api/old_elements_controller.rb @@ -3,7 +3,6 @@ # nodes, ways and relations are basically identical. module Api class OldElementsController < ApiController - before_action :check_api_readable before_action :check_api_writable, :only => [:redact] before_action :setup_user_auth, :only => [:history, :show] before_action :authorize, :only => [:redact] diff --git a/app/controllers/api/permissions_controller.rb b/app/controllers/api/permissions_controller.rb index 8c0c949dc..717bbfa6f 100644 --- a/app/controllers/api/permissions_controller.rb +++ b/app/controllers/api/permissions_controller.rb @@ -1,7 +1,5 @@ module Api class PermissionsController < ApiController - before_action :check_api_readable - authorize_resource :class => false before_action :setup_user_auth diff --git a/app/controllers/api/relations_controller.rb b/app/controllers/api/relations_controller.rb index e82ac6368..5fb99dbd1 100644 --- a/app/controllers/api/relations_controller.rb +++ b/app/controllers/api/relations_controller.rb @@ -1,7 +1,6 @@ module Api class RelationsController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api/tracepoints_controller.rb b/app/controllers/api/tracepoints_controller.rb index f38351de9..d8d9da98b 100644 --- a/app/controllers/api/tracepoints_controller.rb +++ b/app/controllers/api/tracepoints_controller.rb @@ -1,7 +1,5 @@ module Api class TracepointsController < ApiController - before_action :check_api_readable - authorize_resource around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/traces_controller.rb b/app/controllers/api/traces_controller.rb index 956bcde6e..738642fff 100644 --- a/app/controllers/api/traces_controller.rb +++ b/app/controllers/api/traces_controller.rb @@ -1,14 +1,11 @@ module Api class TracesController < ApiController - before_action :check_database_readable, :except => [:show, :data] - before_action :check_database_writable, :only => [:create, :update, :destroy] + before_action :check_api_writable, :only => [:create, :update, :destroy] before_action :set_locale before_action :authorize authorize_resource - before_action :check_api_readable, :only => [:show, :data] - before_action :check_api_writable, :only => [:create, :update, :destroy] before_action :offline_error, :only => [:create, :destroy, :data] around_action :api_call_handle_error diff --git a/app/controllers/api/user_blocks_controller.rb b/app/controllers/api/user_blocks_controller.rb index 19fd4b400..6c285e14a 100644 --- a/app/controllers/api/user_blocks_controller.rb +++ b/app/controllers/api/user_blocks_controller.rb @@ -1,7 +1,5 @@ module Api class UserBlocksController < ApiController - before_action :check_api_readable - authorize_resource around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/user_preferences_controller.rb b/app/controllers/api/user_preferences_controller.rb index 99d224c51..cb852ce88 100644 --- a/app/controllers/api/user_preferences_controller.rb +++ b/app/controllers/api/user_preferences_controller.rb @@ -1,6 +1,7 @@ # Update and read user preferences, which are arbitrary key/val pairs module Api class UserPreferencesController < ApiController + before_action :check_api_writable, :only => [:update_all, :update, :destroy] before_action :authorize authorize_resource diff --git a/app/controllers/api/users_controller.rb b/app/controllers/api/users_controller.rb index 6fa47095a..5ff275ee9 100644 --- a/app/controllers/api/users_controller.rb +++ b/app/controllers/api/users_controller.rb @@ -1,6 +1,5 @@ module Api class UsersController < ApiController - before_action :check_api_readable before_action :disable_terms_redirect, :only => [:details] before_action :setup_user_auth, :only => [:show, :index] before_action :authorize, :only => [:details, :gpx_files] diff --git a/app/controllers/api/versions_controller.rb b/app/controllers/api/versions_controller.rb index d5c9c5f87..d311a18d2 100644 --- a/app/controllers/api/versions_controller.rb +++ b/app/controllers/api/versions_controller.rb @@ -1,5 +1,6 @@ module Api class VersionsController < ApiController + skip_before_action :check_api_readable authorize_resource :class => false before_action :set_request_formats diff --git a/app/controllers/api/ways_controller.rb b/app/controllers/api/ways_controller.rb index f8254d802..4099e1676 100644 --- a/app/controllers/api/ways_controller.rb +++ b/app/controllers/api/ways_controller.rb @@ -1,7 +1,6 @@ module Api class WaysController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index edafac7cc..ff7f694c5 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,6 +1,8 @@ class ApiController < ApplicationController skip_before_action :verify_authenticity_token + before_action :check_api_readable + private ## diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 172be5653..15ffe58a2 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -18,8 +18,8 @@ class SiteController < ApplicationController content_security_policy(:only => :id) do |policy| policy.connect_src("*") - policy.img_src("*", :blob) - policy.script_src(*policy.script_src, "dev.virtualearth.net", :unsafe_eval) + policy.img_src(*policy.img_src, "*", :blob) + policy.script_src(*policy.script_src, :unsafe_eval) policy.style_src(*policy.style_src, :unsafe_inline) end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 186e06120..b7c156bd9 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -98,13 +98,8 @@ class UsersController < ApplicationController if current_user.invalid? # Something is wrong with a new user, so rerender the form render :action => "new" - elsif current_user.auth_provider.present? - # Verify external authenticator before moving on - session[:new_user] = current_user.slice("email", "display_name", "pass_crypt", "pass_crypt_confirmation") - redirect_to auth_url(current_user.auth_provider, current_user.auth_uid), :status => :temporary_redirect else # Save the user record - session[:new_user] = current_user.slice("email", "display_name", "pass_crypt", "pass_crypt_confirmation") save_new_user params[:email_hmac], params[:referer] end end @@ -219,12 +214,6 @@ class UsersController < ApplicationController session[:user_errors] = current_user.errors.as_json redirect_to edit_account_path - elsif session[:new_user] - session[:new_user]["auth_provider"] = provider - session[:new_user]["auth_uid"] = uid - - email_hmac = UsersController.message_hmac(email) if email_verified && email - save_new_user email_hmac, referer else user = User.find_by(:auth_provider => provider, :auth_uid => uid) @@ -248,7 +237,7 @@ class UsersController < ApplicationController else email_hmac = UsersController.message_hmac(email) if email_verified && email redirect_to :action => "new", :nickname => name, :email => email, :email_hmac => email_hmac, - :auth_provider => provider, :auth_uid => uid + :auth_provider => provider, :auth_uid => uid, :referer => referer end end end @@ -273,8 +262,6 @@ class UsersController < ApplicationController private def save_new_user(email_hmac, referer = nil) - new_user = session.delete(:new_user) - self.current_user = User.new(new_user) if check_signup_allowed(current_user.email) current_user.data_public = true current_user.description = "" if current_user.description.nil? diff --git a/app/models/trace.rb b/app/models/trace.rb index d1f917571..20723b98d 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -81,7 +81,7 @@ class Trace < ApplicationRecord :content_type => content_type(attachable.path), :identify => false) else - super(attachable) + super end end diff --git a/app/views/accounts/edit.html.erb b/app/views/accounts/edit.html.erb index dc649cbf4..f15bc195c 100644 --- a/app/views/accounts/edit.html.erb +++ b/app/views/accounts/edit.html.erb @@ -54,11 +54,11 @@ -

-
+
+
<%= f.primary t(".save changes button") %>
-
+
<%= link_to t(".delete_account"), account_deletion_path, :class => "btn btn-outline-danger" %>
diff --git a/app/views/application/_auth_providers.html.erb b/app/views/application/_auth_providers.html.erb index 554ec8dda..0cbb529a5 100644 --- a/app/views/application/_auth_providers.html.erb +++ b/app/views/application/_auth_providers.html.erb @@ -1,29 +1,42 @@
-
+
+ <% prefered_auth_button_available = false %> <% %w[google facebook microsoft github wikipedia].each do |provider| %> <% if Settings.key?("#{provider}_auth_id".to_sym) -%> <% if @preferred_auth_provider == provider %> -
<%= auth_button_preferred provider, provider %>
+ <% prefered_auth_button_available = true %> <% end %> <% end -%> <% end -%> -
-
- <%= link_to image_tag("openid.png", - :alt => t("application.auth_providers.openid.title"), - :size => "24"), - "#", - :id => "openid_open_url", - :title => t("application.auth_providers.openid.title"), - :class => "p-2 d-block" %> + <% if prefered_auth_button_available %> +
+ <% %w[google facebook microsoft github wikipedia].each do |provider| %> + <% if Settings.key?("#{provider}_auth_id".to_sym) -%> + <% if @preferred_auth_provider == provider %> + <%= auth_button_preferred provider, provider %> + <% end %> + <% end -%> + <% end -%>
+
+ <% else %> +
+ <% end %> + + <%= link_to image_tag("openid.png", + :alt => t("application.auth_providers.openid.title"), + :size => "24"), + "#", + :id => "openid_open_url", + :title => t("application.auth_providers.openid.title"), + :class => "p-2 d-block" %> <% %w[google facebook microsoft github wikipedia].each do |provider| %> <% unless @preferred_auth_provider == provider %> <% if Settings.key?("#{provider}_auth_id".to_sym) -%> -
<%= auth_button provider, provider %>
+ <%= auth_button provider, provider %> <% end -%> <% end %> <% end -%> diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 7f2880a1c..77ef647a0 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -31,8 +31,8 @@ <%= link_to t("layouts.export"), export_path, :class => "btn btn-outline-primary geolink", :id => "export_tab" %>
-
- <%= link_to image_tag("directions.png", :width => "20", :height => "20", :class => "align-bottom"), directions_path, :class => "btn btn-sm btn-primary switch_link", :title => t("site.search.get_directions_title") %> + <%= link_to directions_path, :class => "btn btn-sm btn-primary px-1 switch_link", :title => t("site.search.get_directions_title") do %> + + + + + <% end %>
diff --git a/app/views/notes/new.html.erb b/app/views/notes/new.html.erb index 6728b32ff..c9b1275b9 100644 --- a/app/views/notes/new.html.erb +++ b/app/views/notes/new.html.erb @@ -15,7 +15,7 @@
-
+
" disabled="1" class="btn btn-primary">
diff --git a/app/views/notes/show.html.erb b/app/views/notes/show.html.erb index b3f124433..a04cbf9d9 100644 --- a/app/views/notes/show.html.erb +++ b/app/views/notes/show.html.erb @@ -51,7 +51,7 @@
-
+
<% if current_user.moderator? -%> <%= submit_tag t(".hide"), :name => "hide", :class => "btn btn-light", :data => { :method => "DELETE", @@ -77,7 +77,7 @@ -
+
<% if @note.status != "hidden" and current_user and current_user.moderator? -%> " class="btn btn-light" data-method="DELETE" data-url="<%= api_note_url(@note, "json") %>"> <% end -%> diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index acbf8dab0..70839d160 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -25,7 +25,7 @@
<% if @preferred_auth_provider %> <%= render :partial => "auth_providers" %> -
+
<%= t ".or" %>
@@ -39,13 +39,13 @@
- <%= f.label :password, :class => "form-label" %> + <%= f.label :password, t(".password"), :class => "form-label" %>
<%= link_to(t(".lost password link"), user_forgot_password_path) %>
- + <%= f.form_group do %> <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %> diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index b1a85d60d..b618f3811 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -31,7 +31,7 @@ <% unless @preferred_auth_provider.nil? %> <%= render :partial => "auth_providers" %> -
+
<%= t ".or" %>
diff --git a/config/initializers/abstract_adapter.rb b/config/initializers/abstract_adapter.rb index 2bc4f5e59..9d59656c7 100644 --- a/config/initializers/abstract_adapter.rb +++ b/config/initializers/abstract_adapter.rb @@ -6,7 +6,7 @@ if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter) if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError) e else - super(e, sql) + super end end end diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 5ce53e863..9ddaf70f9 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -6,7 +6,7 @@ Rails.application.configure do connect_src = [:self] - img_src = [:self, :data, "www.gravatar.com", "*.wp.com", "tile.openstreetmap.org", "*.tile.thunderforest.com", "tile.tracestrack.com", "*.openstreetmap.fr"] + img_src = [:self, :data, "www.gravatar.com", "*.wp.com", "tile.openstreetmap.org", "gps.tile.openstreetmap.org", "*.tile.thunderforest.com", "tile.tracestrack.com", "*.openstreetmap.fr"] script_src = [:self] connect_src << Settings.matomo["location"] if defined?(Settings.matomo) diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb index fdbf11a2c..e7b813b73 100644 --- a/config/initializers/cors.rb +++ b/config/initializers/cors.rb @@ -6,7 +6,7 @@ module OpenStreetMap class Cors < Rack::Cors def call(env) - status, headers, body = super(env) + status, headers, body = super headers["Cache-Control"] = "no-cache" if headers["Access-Control-Allow-Origin"] [status, headers, body] end diff --git a/config/initializers/i18n.rb b/config/initializers/i18n.rb index 266e41cbb..8f74c3cd3 100644 --- a/config/initializers/i18n.rb +++ b/config/initializers/i18n.rb @@ -18,7 +18,7 @@ module OpenStreetMap def store_translations(locale, data, options = {}) locale = ::I18n::Locale::Tag::Rfc4646.tag(locale).to_s - super(locale, data, options) + super end end diff --git a/config/initializers/mail_delivery_job.rb b/config/initializers/mail_delivery_job.rb index 4bab2000b..30b23d2dd 100644 --- a/config/initializers/mail_delivery_job.rb +++ b/config/initializers/mail_delivery_job.rb @@ -4,7 +4,7 @@ module OpenStreetMap def perform(mailer, mail_method, delivery_method, *args, **kwargs) kwargs = args.pop if kwargs.empty? && args.last.is_a?(Hash) - super(mailer, mail_method, delivery_method, *args, **kwargs) + super end end end diff --git a/config/initializers/oauth.rb b/config/initializers/oauth.rb index fbe4ad219..812e6610d 100644 --- a/config/initializers/oauth.rb +++ b/config/initializers/oauth.rb @@ -45,7 +45,7 @@ module OpenStreetMap status = options.delete(:status) || :ok head status, options else - super(options) + super end end @@ -61,7 +61,7 @@ module OpenStreetMap end end - super(controller) + super end end end diff --git a/config/initializers/router.rb b/config/initializers/router.rb index 4357a87f2..849aba2ad 100644 --- a/config/initializers/router.rb +++ b/config/initializers/router.rb @@ -5,7 +5,7 @@ module OpenStreetMap module Router module ForceEncoding def normalize_path(path) - super(path).force_encoding("UTF-8") + super.force_encoding("UTF-8") end end end diff --git a/config/initializers/rtlcss.rb b/config/initializers/rtlcss.rb index 11e4e0d5c..793c484fc 100644 --- a/config/initializers/rtlcss.rb +++ b/config/initializers/rtlcss.rb @@ -2,7 +2,7 @@ require "rtlcss" class RtlcssSCSSProcessor < SassC::Rails::ScssTemplate def self.call(input) - output = super(input) + output = super data = Rtlcss.flip_css(output[:data]) output.delete(:map) output.merge(:data => data) diff --git a/config/locales/bn.yml b/config/locales/bn.yml index a9f60ec4e..0c1cf6f6f 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -19,6 +19,7 @@ # Author: R4356th # Author: R4bb1 # Author: Rasal Lia +# Author: RiazACU # Author: Sayma Jahan # Author: Tahmid # Author: Tauhid16 diff --git a/config/locales/br.yml b/config/locales/br.yml index b3202260d..d91b60e3b 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -2198,7 +2198,7 @@ br: close: Serriñ search: search: Klask - get_directions: Kaout an tuioù + get_directions: Kaout an durc'hadurioù get_directions_title: Kavit an hentoù etre an daou boent from: Eus to: Da @@ -3097,7 +3097,7 @@ br: fossgis_valhalla_car: Karr (Valhalla) fossgis_valhalla_foot: War droad (Valhalla) descend: Diskenn - directions: Tuioù + directions: Durc'hadurioù distance: Hed distance_m: '%{distance}m' distance_km: '%{distance}km' diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f609f4850..c84032e2d 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -2876,8 +2876,8 @@ cs: continue: Zaregistrovat se terms accepted: Děkujeme za odsouhlasení nových podmínek pro přispěvatele! email_help_html: VaÅ¡e adresa se nezobrazuje veřejně, více informací získáte - v naÅ¡ich %{privacy_policy_link}. - privacy_policy: pravidlech ochrany osobních údajů + na stránce s naÅ¡imi %{privacy_policy_link}. + privacy_policy: pravidly ochrany osobních údajů privacy_policy_title: Pravidla ochrany osobních údajů OSMF, včetně části o e-mailových adresách consider_pd_html: Své příspěvky považuji za %{consider_pd_link}. diff --git a/config/locales/diq.yml b/config/locales/diq.yml index de3966bf3..4a018f7d7 100644 --- a/config/locales/diq.yml +++ b/config/locales/diq.yml @@ -149,7 +149,7 @@ diq: new_email: E-postay adresiyo neweh active: Aktiv display_name: Nameyo ke Aseno - description: Şınasiya weci + description: Şınasiya Profili home_lat: 'Verıniye:' home_lon: Derganiye languages: Zıwanê tercihi diff --git a/config/locales/et.yml b/config/locales/et.yml index 0c3b1427c..3ab6a2a2d 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -108,7 +108,7 @@ et: diary_entry: user: Kasutaja title: Teema - body: Päevikusissekanne + body: Kehatekst latitude: Laius longitude: Pikkus language_code: Keel @@ -1662,8 +1662,8 @@ et: Märkus on koha %{place} lähedal.' commented_note_html: '%{commenter} on taasaktiveerinud märkuse, mida oled kommenteerinud. Märkus on koha %{place} lähedal.' - details: Üksikasjad märkuse kohta leiad aadressilt %{url}. - details_html: Üksikasjad märkuse kohta leiad aadressilt %{url}. + details: Vasta või loe veel märkuse kohta aadressil %{url}. + details_html: Vasta või loe veel märkuse kohta aadressil %{url}. changeset_comment_notification: description: 'OpenStreetMapi muudatuskogum #%{id}' hi: Tere, %{to_user} @@ -1682,8 +1682,8 @@ et: partial_changeset_with_comment: kommentaariga '%{changeset_comment}'. partial_changeset_with_comment_html: kommentaariga '%{changeset_comment}'. partial_changeset_without_comment: ilma kommentaarita. - details: Üksikasjad muudatuskogumi kohta leiad aadressilt %{url}. - details_html: Üksikasjad muudatuskogumi kohta leiad aadressilt %{url}. + details: Vasta või loe muudatuskogumi kohta veel aadressil %{url}. + details_html: Vasta või loe muudatuskogumi kohta veel aadressil %{url}. unsubscribe: Saad muudatuskogumi uuendusteadetest ära ütelda aadressil %{url}. unsubscribe_html: Saad muudatuskogumi uuendusteadetest ära ütelda aadressil %{url}. @@ -1859,7 +1859,7 @@ et: lost password link: Kas unustasid parooli? login_button: Logi sisse register now: Registreeru nüüd - with external: 'Teise võimalusena võid sisse logida kolmanda osapoole kaudu:' + with external: või logi sisse kolmanda osapoole kaudu auth failure: Kahjuks ei õnnestu nende andmetega sisse logida. destroy: title: Logi välja @@ -2653,6 +2653,7 @@ et: title: Minu volitatud rakendused application: Rakendus permissions: Õigused + last_authorized: Viimati volitatud no_applications_html: Sa pole volitanud veel ühtegi %{oauth2} rakendust. application: revoke: Eemalda juurdepääs @@ -2660,27 +2661,33 @@ et: users: new: title: Registreerumine + tab_title: Registreeru no_auto_account_create: Kahjuks ei ole meil võimalik luua hetkel sinu jaoks automaatselt kontot. please_contact_support_html: Palun võta ühendust %{support_link}, et kasutajakonto luua. Üritame tegeleda selle taotlusega nii kiiresti kui võimalik. support: toega about: - header: Vaba ja muudetav + header: Vaba ja muudetav. paragraph_1: Erinevalt teistest kaartidest on kogu OpenStreetMapi loonud sinusugused inimesed ja igaüks võib seda parandada, täiendada, alla laadida ja kasutada. - paragraph_2: Registreeru, et alustada kaardi täiendamist. Saadame sulle e-kirja, - et saaksid kinnitada enda kasutajakonto. + paragraph_2: Registreeru, et alustada kaardi täiendamist. display name description: Avalikult kuvatud kasutajanimi. Seda saate muuta hiljem eelistustes. + by_signing_up_html: Registreerudes nõustud meie %{tou_link}, %{privacy_policy_link} + ja %{contributor_terms_link}. + tou: kasutustingimustega + contributor_terms: kaastöötingimustega external auth: 'Kolmanda osapoole autentimine:' continue: Registreeru terms accepted: Täname, et nõustusid uute kaastöötingimustega! - email_help_html: Sinu aadressi ei kuvata avalikult, loe täpsemalt meie %{privacy_policy_link}. - privacy_policy: andmekaitsereeglitest + email_help_html: Sinu aadressi ei kuvata avalikult, tutvu meie %{privacy_policy_link}. + privacy_policy: andmekaitsereeglitega privacy_policy_title: OSMF-i andmekaitsereeglid, milles on alaosa e-posti aadresside kohta - use external auth: Teise võimalusena võid sisse logida kolmanda osapoole kaudu + consider_pd_html: Pean enda kaastööd %{consider_pd_link} kuuluvaks. + consider_pd: avalikku omandisse + use external auth: või registreeru kolmanda osapoole kaudu terms: title: Tingimused heading: Tingimused @@ -2856,8 +2863,8 @@ et: andis. success: Blokeering uuendatud. index: - title: Kasutaja blokeeringud - heading: Kasutaja blokeeringute loetelu + title: Kasutajate blokeeringud + heading: Kasutajate blokeeringute loetelu empty: Ühtegi blokeeringut pole veel antud. revoke: title: Kasutaja %{block_on} blokeeringu eemaldamine @@ -3001,6 +3008,10 @@ et: intro: Kas märkasid viga või midagi, mis vajab täiendamist? Anna sellest teistele kaardistajatele teada, et nad saaksid seda parandada. Lohista marker õigele kohale ja kirjuta märkus, et probleemi selgitada. + anonymous_warning_html: Sa pole sisse logitud. Palun %{log_in} või %{sign_up}, + kui soovid saada enda märkuse kohta uuendusi. + anonymous_warning_log_in: logi sisse + anonymous_warning_sign_up: registreeru advice: Märkus on avalik ja seda võidakse kasutada kaardi uuendamiseks. Seega palun ära kirjuta siia isiklikku teavet ega teavet autoriõigustega kaitstud kaartidelt ega kataloogiloenditest. @@ -3105,24 +3116,24 @@ et: continue_without_exit: 'Liigu edasi teele: %{name}' slight_right_without_exit: 'Pööra kergelt paremal pool asuvale teele: %{name}' offramp_right: Sõida paremal asuvale kaldteele - offramp_right_with_exit: Lahku teelt paremal asuva ärapöörde %{exit} kaudu - offramp_right_with_exit_name: 'Lahku teelt paremal asuva ärapöörde %{exit} - kaudu sõites teele: %{name}' - offramp_right_with_exit_directions: 'Lahku teelt paremal asuva ärapöörde %{exit} - kaudu võttes suunaks: %{directions}' - offramp_right_with_exit_name_directions: 'Lahku teelt paremal asuva ärapöörde - %{exit} kaudu sõites teele: %{name} suunaga %{directions} poole' + offramp_right_with_exit: Lahku teelt %{exit}. väljumise kaudu paremal + offramp_right_with_exit_name: 'Lahku paremalt %{exit}. väljumise kaudu sõites + teele: %{name}' + offramp_right_with_exit_directions: Lahku paremalt %{exit}. väljumise kaudu, + sõites tee %{directions} suunas + offramp_right_with_exit_name_directions: Lahku paremalt %{exit}. väljumise + kaudu sõites teele %{name} tee %{directions} suunas offramp_right_with_name: 'Pööra paremal asuvalt kaldteelt teele: %{name}' - offramp_right_with_directions: Pööra paremal asuvale kaldteele suunaga %{directions} - poole + offramp_right_with_directions: Pööra paremal asuvale kaldteele, liikudes tee + %{directions} suunas offramp_right_with_name_directions: 'Pööra paremal asuvale kaldteele: uus tee on %{name} ja suunaks %{directions}' onramp_right_without_exit: 'Pööra paremale ja sõida kaldteed mööda teele: %{name}' - onramp_right_with_directions: Pööra paremale ja sõida kaldteelt %{directions} + onramp_right_with_directions: Pööra paremale ja sõida kaldteelt tee %{directions} suunas - onramp_right_with_name_directions: Pööra paremal asuvale kaldteele %{name} - poole, suunaks %{directions} + onramp_right_with_name_directions: Pööra paremal asuvalt kaldteelt teele %{name}, + sõites tee %{directions} suunas onramp_right_without_directions: Sõida paremal asuvale kaldteele onramp_right: Sõida paremal asuvale kaldteele endofroad_right_without_exit: 'Tee lõpus pööra paremale teele: %{name}' @@ -3134,20 +3145,20 @@ et: sharp_left_without_exit: 'Pööra järsult vasakul pool asuvale teele: %{name}' turn_left_without_exit: 'Pööra vasakul pool asuvale teele: %{name}' offramp_left: Sõida vasakul asuvale kaldteele - offramp_left_with_exit: Lahku teelt vasakul asuva ärapöörde %{exit} kaudu - offramp_left_with_exit_name: 'Lahku teelt vasakul asuva ärapöörde %{exit} - kaudu sõites teele: %{name}' - offramp_left_with_exit_directions: 'Lahku teelt vasakul asuva ärapöörde %{exit} - kaudu võttes suunaks: %{directions}' - offramp_left_with_exit_name_directions: 'Lahku teelt vasakul asuva ärapöörde - %{exit} kaudu sõites teele: %{name} suunaga %{directions} poole' + offramp_left_with_exit: Lahku vasakult %{exit}. väljumise kaudu + offramp_left_with_exit_name: 'Lahku vasakult %{exit}. väljumise kaudu sõites + teele: %{name}' + offramp_left_with_exit_directions: Lahku vasakult %{exit}. väljumise kaudu, + sõites tee %{directions} suunas + offramp_left_with_exit_name_directions: Lahku vasakult %{exit}. väljumise + kaudu sõites teele %{name} tee %{directions} suunas offramp_left_with_name: 'Pööra vasakul asuvalt kaldteelt teele: %{name}' - offramp_left_with_directions: Pööra vasakul asuvale kaldteele suunaga %{directions} - poole + offramp_left_with_directions: Pööra vasakul asuvale kaldteele, liikudes tee + %{directions} suunas offramp_left_with_name_directions: 'Pööra vasakul asuvale kaldteele: uus tee on %{name} ja suunaks %{directions}' onramp_left_without_exit: 'Pööra vasakule ja sõida kaldteed mööda teele: %{name}' - onramp_left_with_directions: Pööra vasakule ja sõida kaldteelt %{directions} + onramp_left_with_directions: Pööra vasakule ja sõida kaldteelt tee %{directions} suunas onramp_left_with_name_directions: 'Pööra vaskul asuvale kaldteele: uus tee on %{name} ja suunaks %{directions}' @@ -3159,7 +3170,7 @@ et: slight_left_without_exit: 'Pööra kergelt vasakule teele: %{name}' via_point_without_exit: (teekonnapunkti kaudu) follow_without_exit: 'Sõida edasi mööda teed: %{name}' - roundabout_without_exit: 'Pööra ringteelt järgnevale teele: %{name}' + roundabout_without_exit: 'Pööra ringteelt järgmisele teele: %{name}' leave_roundabout_without_exit: Pööra ära ringteelt - %{name} stay_roundabout_without_exit: Jätka sõitmist ringteel - %{name} start_without_exit: 'Alusta teelt: %{name}' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index da9281e0d..1bb90b062 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -38,6 +38,7 @@ # Author: GeorgeKaplan # Author: Gileri # Author: Gomoko +# Author: Graineahumus # Author: Gravitystorm # Author: Guilhelma # Author: Hashar @@ -75,6 +76,7 @@ # Author: Orikrin1998 # Author: Otourly # Author: Oupsa +# Author: Overflorian # Author: Peter17 # Author: Phoenamandre # Author: Pipo @@ -457,6 +459,7 @@ fr: view_unredacted_history: Voir l'historique non censuré view_details: Afficher les détails view_redacted_data: Afficher les données censurées + view_redaction_message: Afficher le message de rédaction location: 'Emplacement :' common_details: coordinates_html: '%{latitude} ; %{longitude}' @@ -583,6 +586,7 @@ fr: closed: Fermé belongs_to: Auteur subscribe: + heading: S'abonner à la discussion sur l'ensemble de modifications suivante ? button: S'abonner à la discussion unsubscribe: heading: Se désabonner de la discussion du groupe de modifications suivant ? @@ -591,6 +595,7 @@ fr: title: Groupe de modifications %{id} created_by_html: Créé par %{link_user} le %{created}. no_such_entry: + title: Aucun ensemble de modifications de ce type heading: 'Aucune entrée avec l’identifiant : %{id}' body: Désolé, il n’y a aucun groupe de modifications avec l'identifiant %{id}. Veuillez vérifier l'orthographe ou la validité du lien sur lequel vous avez @@ -740,8 +745,10 @@ fr: newer_comments: Commentaires plus récents older_comments: Commentaires plus anciens subscribe: + heading: S'abonner à la discussion suivante sur les entrées de journal ? button: S'abonner à la discussion unsubscribe: + heading: Se désinscrire de la discussion suivante sur les entrées du journal ? button: Se désinscrire de la discussion doorkeeper: errors: @@ -785,6 +792,10 @@ fr: contact_the_community_html: N’hésitez pas à %{contact_link} la communauté OpenStreetMap si vous avez trouvé un lien cassé ou une anomalie. Notez l’URL exacte de votre demande. + bad_request: + title: Mauvaise requête + description: L'opération que vous avez demandée sur le serveur OpenStreetMap + n'est pas valide (HTTP 400) forbidden: title: Interdit description: L’opération que vous avez demandée sur le serveur OpenStreetMap @@ -1725,6 +1736,7 @@ fr: hosting_partners_2024_html: L’hébergement est pris en charge par %{fastly}, %{corpmembers}, et d’autres %{partners}. partners_fastly: Fastly + partners_corpmembers: Membres d'entreprise de l'OSMF partners_partners: partenaires tou: Conditions d’utilisation osm_offline: La base de données OpenStreetMap est actuellement hors ligne ; une @@ -1860,8 +1872,8 @@ fr: La note se trouve près de %{place}.' commented_note_html: '%{commenter} a réactivé une note de carte que vous avez commentée. La note est près de %{place}.' - details: Plus de détails concernant la note se trouvent à %{url}. - details_html: Plus de détails concernant la note se trouvent à %{url}. + details: Répondez ou apprenez-en plus sur la note sur %{url}. + details_html: Répondez ou en savoir plus sur la note sur %{url}. changeset_comment_notification: description: 'Groupe de modifications OpenStreetMap #%{id}' hi: Bonjour %{to_user}, @@ -1882,9 +1894,8 @@ fr: partial_changeset_with_comment: avec le commentaire « %{changeset_comment} » partial_changeset_with_comment_html: avec le commentaire « %{changeset_comment} » partial_changeset_without_comment: sans commentaire - details: Plus de détails sur l’ensemble de modifications à %{url}. - details_html: Vous pouvez trouver plus de détails sur l’ensemble de modifications - sur %{url}. + details: Répondez ou en savoir plus sur l'ensemble de changements sur %{url}. + details_html: Répondre ou en savoir plus sur l'ensemble de changements sur %{url}. unsubscribe: Vous pouvez vous désabonner des mises à jour de cet ensemble de modifications depuis %{url}. unsubscribe_html: Vous pouvez vous désabonner des mises à jour de cet ensemble @@ -1983,9 +1994,9 @@ fr: unread_button: Marque comme non lu destroy_button: Supprimer back: Retour - wrong_user: Vous êtes identifié comme « %{user} » mais le message que vous essayez - de lire n’a pas été envoyé par cet utilisateur, ni ne lui a été destiné. Veuillez - vous connecter avec l’identifiant correct pour pouvoir le lire. + wrong_user: Vous êtes identifié comme « %{user} » mais le message que vous avez + demandé de lire n’a pas été envoyé par cet utilisateur, ni ne lui a été destiné. + Veuillez vous connecter avec le bon identifiant pour pouvoir le lire. sent_message_summary: destroy_button: Supprimer heading: @@ -2067,6 +2078,7 @@ fr: new: title: Se connecter tab_title: Se connecter + login_to_authorize_html: Connectez-vous à OpenStreetMap pour accéder à %{client_app_name}. email or username: 'Adresse de courriel ou nom d’utilisateur :' password: 'Mot de passe :' remember: Se souvenir de moi @@ -2266,7 +2278,12 @@ fr: générale des finances publiques (anciennement la Direction générale des impôts).' contributors_fr_france: France + contributors_hr_credit_html: |- + %{croatia} : contient des données de %{dgu_link} et %{open_data_portal} + (informations publiques de Croatie). contributors_hr_croatia: Croatie + contributors_hr_dgu: Administration géodésique de l'État de Croatie + contributors_hr_open_data_portal: Portail national des données ouvertes contributors_nl_credit_html: '%{netherlands} : contient des données © AND, 2007 (%{and_link})' contributors_nl_netherlands: Pays-Bas @@ -2719,6 +2736,8 @@ fr: identifiable: IDENTIFIABLE private: PRIVÉE trackable: PISTABLE + details_with_tags_html: '%{time_ago} par %{user} dans %{tags}' + details_without_tags_html: '%{time_ago} par %{user}' index: public_traces: Traces GPS publiques my_gps_traces: Mes traces GPS @@ -2776,17 +2795,18 @@ fr: muted_users: Utilisateurs silencieux auth_providers: openid_logo_alt: Se connecter avec OpenID + openid_login_button: Continuer openid: title: Connexion avec OpenID alt: Se connecter avec une URL OpenID google: - title: Connexion avec Google + title: Se connecter avec Google alt: Se connecter avec un OpenID de Google facebook: title: Connexion avec Facebook alt: Se connecter avec un compte de Facebook microsoft: - title: Connexion avec Microsoft + title: Se connecter avec Microsoft alt: Se connecter avec un compte Microsoft github: title: Connexion avec GitHub @@ -2798,7 +2818,7 @@ fr: title: Connexion avec Wordpress alt: Se connecter avec un OpenID de Wordpress aol: - title: Connexion avec AOL + title: Se connecter avec AOL alt: Se connecter avec un OpenID d’AOL oauth: authorize: @@ -2843,6 +2863,9 @@ fr: write_redactions: Caviarder les données cartographiques read_email: Lire l’adresse courriel de l’utilisateur skip_authorization: Demande d’approbation automatique + for_roles: + moderator: Cette autorisation concerne les actions disponibles uniquement pour + les modérateurs oauth_clients: new: title: Inscrire une nouvelle application @@ -2939,6 +2962,7 @@ fr: users: new: title: S’inscrire + tab_title: Créer un compte no_auto_account_create: Malheureusement, nous ne sommes actuellement pas en mesure de vous créer un compte automatiquement. please_contact_support_html: Veuillez contacter %{support_link} pour organiser @@ -2952,8 +2976,15 @@ fr: la réparer, la mettre à jour, la télécharger et l’utiliser. paragraph_2: Inscrivez-vous pour commencer à contribuer. Nous vous enverrons un courriel pour confirmer votre compte. + duplicate_social_email: Si vous possédez déjà un compte OpenStreetMap et souhaitez + utiliser un fournisseur d'identité tiers, veuillez vous connecter en utilisant + votre mot de passe et modifier les paramètres de votre compte. display name description: Votre nom d’utilisateur affiché publiquement. Vous pouvez changer ceci ultérieurement dans les préférences. + by_signing_up_html: En vous inscrivant, vous acceptez nos %{tou_link}, %{privacy_policy_link} + et %{contributor_terms_link}. + tou: conditions d'utilisation + contributor_terms: Conditions de contribution external auth: 'Authentification tierce :' continue: S’inscrire terms accepted: Merci d’avoir accepté les nouveaux termes du contributeur ! @@ -2962,8 +2993,10 @@ fr: privacy_policy: politique de confidentialité privacy_policy_title: Politique de confidentialité de l’OSMF, qui comprend une section sur les adresses de courriel - use external auth: Vous pouvez également utiliser un service tiers pour vous - connecter. + consider_pd_html: Je considère que mes contributions se situent dans le %{consider_pd_link}. + consider_pd: domaine public + or: ou + use external auth: ou vous pouvez vous connecter avec un service tiers. terms: title: Conditions heading: Conditions @@ -3074,6 +3107,9 @@ fr: heading: Utilisateurs older: Utilisateurs plus anciens newer: Utilisateurs plus récents + found_users: + one: '%{count} utilisateur trouvé' + other: '%{count} utilisateurs trouvés' summary_html: '%{name} créé depuis %{ip_address} le %{date}' summary_no_ip_html: '%{name} créé le %{date}' confirm: Confirmer les utilisateurs sélectionnés @@ -3098,9 +3134,9 @@ fr: heading: Votre identifiant n’est pas encore associé à un compte OpenStreetMap. option_1: Si vous êtes nouveau sur OpenStreetMap, veuillez créer un nouveau compte à l’aide du formulaire ci-dessous. - option_2: Si vous avez déjà un compte, vous pouvez vous connecter avec en utilisant - votre nom d’utilisateur et votre mot de passe, puis associer le compte avec - votre ID dans vos préférences utilisateur. + option_2: Si vous avez déjà un compte, vous pouvez vous y connecter avec en + utilisant votre nom d’utilisateur et votre mot de passe, puis associer le + compte avec votre ID dans vos préférences utilisateur. user_role: filter: not_a_role: La chaîne « %{role} » n’est pas un rôle valide. @@ -3231,6 +3267,8 @@ fr: reason: Motif du blocage status: État revoker_name: Révoqué par + older: Blocs plus anciens + newer: Blocs plus récents navigation: all_blocks: Tous les blocages blocks_on_me: Blocages me concernant @@ -3312,6 +3350,10 @@ fr: intro: Vous avez repéré une erreur ou un manque ? Faites-le savoir aux autres cartographes afin qu’ils puissent y remédier. Déplacez le marqueur à la position exacte et écrivez une note pour expliquer le problème. + anonymous_warning_html: Vous n'êtes pas connecté. Veuillez %{log_in} ou %{sign_up} + si vous souhaitez recevoir des mises à jour pour votre note. + anonymous_warning_log_in: se connecter + anonymous_warning_sign_up: créer un compte advice: Votre note est publique et peut être utilisée pour mettre à jour la carte, aussi n’entrez aucune information personnelle, ni aucune information venant de cartes protégées, ni aucune entrée de répertoire ou d’annuaire. diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 15f2dbade..444c0b841 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -632,6 +632,8 @@ ko: contact: 여러 연락 수단 contact_the_community_html: 끊어진 링크나 버그를 발견했다면 언제든지 오픈스트리트맵 커뮤니티에 %{contact_link}으로 알려주십시오. 요청의 정확한 URL을 기록해 두십시오. + bad_request: + title: 잘못된 요청 forbidden: title: 접근 거부됨 description: 오픈스트리트맵 서버에 요청한 이 작업은 관리자만 사용할 수 있습니다(HTTP 403). diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 1439d1c1e..07edc2883 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -4,6 +4,7 @@ # Author: Aalam # Author: Babanwalia # Author: Bgo eiu +# Author: Cabal # Author: Jimidar # Author: Kuldeepburjbhalaike # Author: Satnam S Virdi @@ -18,7 +19,7 @@ pa: diary_comment: create: ਸਾਂਭੋ diary_entry: - create: ਛਾਪੋ + create: ਸਾਂਭੋ update: ਅੱਪਡੇਟ ਕਰੋ issue_comment: create: ਟਿੱਪਣੀ ਕਰੋ @@ -166,7 +167,7 @@ pa: download_xml: XML ਲਾਹੋ view_history: ਅਤੀਤ ਵੇਖੋ view_details: ਵੇਰਵੇ ਵੇਖੋ - location: 'ਸਥਿਤੀ:' + location: 'ਟਿਕਾਣਾ:' relation: members: ਜੀਅ relation_member: @@ -196,7 +197,7 @@ pa: relation: ਸਬੰਧ start_rjs: load_data: ਡਾਟਾ ਲੋਡ ਕਰੋ - loading: ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ… + loading: ਲੱਦ ਰਿਹਾ ਹੈ... tag_details: tags: ਟੈਗ wikipedia_link: '%{page} ਲੇਖ ਵਿਕਿਪੀਡਿਆ ਉੱਤੇ' @@ -369,7 +370,7 @@ pa: waste_basket: ਕੂੜਾਦਾਨ waste_disposal: ਕੂੜੇਦਾਨ boundary: - administrative: ਪ੍ਰਸ਼ਾਸਕੀ ਸਰਹੱਦ + administrative: ਪ੍ਰਬੰਧਕੀ ਸਰਹੱਦ census: ਮਰਦਮਸ਼ੁਮਾਰੀ ਸਰਹੱਦ national_park: ਕੌਮੀ ਬਾਗ਼ protected_area: ਸੁਰੱਖਿਅਤ ਖੇਤਰ @@ -730,7 +731,7 @@ pa: sign_up: ਭਰਤੀ ਹੋਵੋ start_mapping: ਨਕਸ਼ਾਬੰਦੀ ਸ਼ੁਰੂ ਕਰੋ edit: ਸੋਧੋ - history: ਅਤੀਤ + history: ਪੁਰਾਣਾ export: ਬਰਾਮਦ data: ਸਮੱਗਰੀ export_data: ਸਮੱਗਰੀ ਬਰਾਮਦ ਕਰੋ @@ -783,7 +784,7 @@ pa: date: ਮਿਤੀ message_summary: reply_button: ਜੁਆਬ - destroy_button: ਮਿਟਾਉ + destroy_button: ਮਿਟਾਓ new: title: ਸੁਨੇਹਾ ਘੱਲੋ create: @@ -799,7 +800,7 @@ pa: unread_button: ਅਣ-ਪੜ੍ਹਿਆ ਨਿਸ਼ਾਨ ਲਾਉ back: ਪਿੱਛੇ sent_message_summary: - destroy_button: ਮਿਟਾਉ + destroy_button: ਮਿਟਾਓ heading: my_inbox: ਮੇਰਾ ਇਨਬਾਕਸ destroy: @@ -869,7 +870,7 @@ pa: export: title: ਬਰਾਮਦ manually_select: ਆਪਣੇ ਆਪ ਇੱਕ ਵੱਖਰਾ ਖੇਤਰ ਚੁਣੋ - licence: ਲਾਇਸੰਸ + licence: ਲਸੰਸ too_large: other: title: ਹੋਰ ਸਰੋਤ @@ -879,7 +880,7 @@ pa: how_to_help: title: ਮਦਦ ਕਿਵੇਂ ਕਰਨੀ ਹੈ join_the_community: - title: ਭਾਈਚਾਰੇ ਨਾਲ਼ ਜੁੜੋ + title: ਭਾਈਚਾਰੇ ਨਾਲ ਜੁੜੋ other_concerns: title: ਹੋਰ ਫ਼ਿਕਰ help: @@ -923,7 +924,7 @@ pa: runway: ਹਵਾਈ ਅੱਡੇ ਦੀ ਉਡਾਣ ਪੱਟੀ taxiway: ਟੈਕਸੀਵੇਅ apron: ਹਵਾਈ ਅੱਡੇ ਦਾ ਐਪਰਨ - admin: ਪ੍ਰਸ਼ਾਸਕੀ ਸਰਹੱਦ + admin: ਪ੍ਰਬੰਧਕੀ ਸਰਹੱਦ forest: ਜੰਗਲ wood: ਜੰਗਲ golf: ਗੋਲਫ਼ ਮੈਦਾਨ @@ -1059,10 +1060,10 @@ pa: created from: 'ਕਿੱਥੋਂ ਉਸਾਰਿਆ:' status: 'ਦਰਜਾ:' role: - administrator: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਪ੍ਰਸ਼ਾਸਕ ਹੈ। + administrator: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਪ੍ਰਬੰਧਕ ਹੈ। moderator: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਵਿਚੋਲਾ ਹੈ। grant: - administrator: ਪ੍ਰਸ਼ਾਸਕੀ ਹੱਕ ਦਿਉ + administrator: ਪ੍ਰਬੰਧਕੀ ਹੱਕ ਦਿਓ moderator: ਵਿਚੋਲਗੀ ਦੇ ਹੱਕ ਦਿਉ comments: ਟਿੱਪਣੀਆਂ create_block: ਇਸ ਵਰਤੋਂਕਾਰ 'ਤੇ ਰੋਕ ਲਾਉ diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 1dc5c537a..638a310b0 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -710,6 +710,10 @@ pt-PT: contact_the_community_html: Fique à vontade para %{contact_link} a comunidade OpenStreetMap caso tenha encontrado uma ligação inativa ou um erro. Deixe uma nota da URL exata da sua solicitação. + bad_request: + title: Pedido inválido + description: A operação solicitada no servidor OpenStreetMap não é válida (HTTP + 400) forbidden: title: Proibido description: A operação solicitada no servidor do OpenStreetMap só está disponível @@ -1778,8 +1782,8 @@ pt-PT: perto de %{place}.' commented_note_html: '%{commenter} reabriu uma nota comentada por ti. A nota fica perto de %{place}.' - details: Podes ver mais detalhes sobre a nota em %{url}. - details_html: Podes ver mais detalhes sobre a nota em %{url}. + details: Responde ou descobre mais sobre a nota em %{url}. + details_html: Responde ou descobre mais sobre a nota em %{url}. changeset_comment_notification: description: Conjunto de alterações n.º %{id} hi: Olá, %{to_user}. @@ -1800,10 +1804,8 @@ pt-PT: partial_changeset_with_comment: com o comentário '%{changeset_comment}' partial_changeset_with_comment_html: com o comentário '%{changeset_comment}' partial_changeset_without_comment: sem comentários - details: Podes encontrar mais informações sobre o conjunto de alterações em - %{url}. - details_html: Podes encontrar mais informações sobre o conjunto de alterações - em %{url}. + details: Responde ou descobre mais sobre o conjunto de alterações em %{url}. + details_html: Responde ou descobre mais sobre o conjunto de alterações em %{url}. unsubscribe: Podes deixar de acompanhar as atualizações deste conjunto de alterações em %{url}. unsubscribe_html: Podes deixar de acompanhar as atualizações deste conjunto @@ -1980,13 +1982,15 @@ pt-PT: new: title: Entrar tab_title: Iniciar sessão + login_to_authorize_html: Inicia sessão no OpenStreetMap para acederes a %{client_app_name}. email or username: 'E-mail ou Nome de utilizador:' password: Palavra-passe remember: Ficar autenticado entre sessões lost password link: Perdeste a tua palavra-passe? login_button: Iniciar sessão register now: Regista-te agora - with external: 'Em alternativa, usa um serviço externo para iniciares sessão:' + with external: ou inicia sessão com uma aplicação de terceiros + or: ou auth failure: Lamentamos, mas não foi possível iniciar sessão com os dados fornecidos. destroy: title: Sair @@ -2157,6 +2161,12 @@ pt-PT: contributors_fr_credit_html: '%{france}: contém dados provenientes da Direção Geral de Impostos.' contributors_fr_france: França + contributors_hr_credit_html: |- + %{croatia}: Contém dados de %{dgu_link} e %{open_data_portal} + (informação pública da Croácia). + contributors_hr_croatia: Croácia + contributors_hr_dgu: Administração Geodésica Estatal da Croácia + contributors_hr_open_data_portal: Portal Nacional de Dados Abertos contributors_nl_credit_html: '%{netherlands}: Contém © e dados, 2007 (%{and_link})' contributors_nl_netherlands: Países Baixos @@ -2617,6 +2627,9 @@ pt-PT: other: Ficheiro GPX com %{count} pontos de %{user} description_without_count: Ficheiro GPX de %{user} application: + basic_auth_disabled: 'A Autenticação Básica HTTP está desativada: %{link}' + oauth_10a_disabled: 'OAuth 1.0 e 1.0a estão desativados: %{link}' + auth_disabled_link: https://wiki.openstreetmap.org/wiki/2024_authentication_update permission_denied: Não tens permissões para realizar essa operação require_cookies: cookies_needed: Parece que tens os "cookies" desativados - por favor, ativa-os @@ -2639,6 +2652,7 @@ pt-PT: muted_users: Utilizadores Silenciados auth_providers: openid_logo_alt: Iniciar sessão com um OpenID + openid_login_button: Continuar openid: title: Iniciar sessão com OpenID alt: Iniciar sessão com um URL do OpenID @@ -2703,6 +2717,8 @@ pt-PT: write_redactions: Rever dados do mapa read_email: ‎Ler e-mail de utilizador skip_authorization: Aprovar a aplicação automaticamente + for_roles: + moderator: Esta permissão é para ações disponíveis apenas para moderadores oauth_clients: new: title: Registar uma nova aplicação @@ -2798,20 +2814,29 @@ pt-PT: users: new: title: Criar conta + tab_title: Registar + signup_to_authorize_html: Inicia sessão no OpenStreetMap para acederes a %{client_app_name}. no_auto_account_create: Infelizmente, e de momento, não é possível criar uma conta automaticamente. please_contact_support_html: Por favor, contacta %{support_link} para pedir a criação de uma conta - tentaremos tratar do pedido o mais rapidamente possível. support: apoio about: - header: Livre e editável + header: Gratuito e editável. paragraph_1: Ao contrário de outros mapas, o OpenStreetMap é completamente criado por pessoas como tu, e qualquer pessoa o pode corrigir, transferir e usar de forma gratuita. - paragraph_2: Regista-te para começares a contribuir. Iremos enviar um e-mail - para confirmar a tua conta. + paragraph_2: Regista-te para começares a contribuir. + welcome: Bem-vind@ ao OpenStreetMap + duplicate_social_email: Se já tens uma conta OpenStreetMap e desejas utilizar + um provedor de identidade externo, inicia sessão com a tua palavra-passe e + modifica as definições da tua conta. display name description: O nome de utilizador ficará visível publicamente. Poderás alterar o nome posteriormente nas configurações do teu perfil. + by_signing_up_html: Ao registares-te, aceitas os nossos %{tou_link}, %{privacy_policy_link} + e %{contributor_terms_link}. + tou: Termos de Utilização + contributor_terms: Termos de Contribuidor external auth: 'Autenticação por terceiros:' continue: Criar conta terms accepted: Obrigado por aceitares os novos termos de contribuidor! @@ -2820,7 +2845,10 @@ pt-PT: privacy_policy: política de privacidade privacy_policy_title: Política de privacidade da OSMF incluindo secção sobre endereços de correio eletrónico - use external auth: Em alternativa, usa um serviço externo para iniciares sessão + consider_pd_html: Considero que as minhas contribuições estão no %{consider_pd_link}. + consider_pd: domínio público + or: ou + use external auth: ou regista-te com um serviço externo terms: title: Termos heading: Termos @@ -3091,6 +3119,13 @@ pt-PT: revoker_name: Revogado por older: Blocos mais antigos newer: Blocos mais recentes + navigation: + all_blocks: Todos os bloqueios + blocks_on_me: Quem me bloqueou + blocks_on_user: Bloqueios a %{user} + blocks_by_me: Os meus bloqueios + blocks_by_user: Bloqueios de %{user} + block: 'Bloqueio #%{id}' user_mutes: index: title: Utilizadores Silenciados @@ -3166,6 +3201,10 @@ pt-PT: o mais pormenorizada possível sobre o que pretendes ver alterado no mapa, para que outros mapeadores te possam ajudar. Posiciona o marcador no local correto e escreve uma nota que explique o problema. + anonymous_warning_html: Não tens sessão iniciada. Por favor, %{log_in} ou %{sign_up} + se quiseres receber atualizações sobre a tua nota. + anonymous_warning_log_in: inicia sessão + anonymous_warning_sign_up: regista-te advice: 'Lembra-te: a tua nota é pública e poderá ser usada para atualizar o mapa, portanto, não introduzas informações pessoais, dados de mapas ou catálogos protegidos por direitos de autor.' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 83a1f5f28..0023f649b 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1834,8 +1834,8 @@ ru: заметок недалеко от %{place}.' commented_note_html: '%{commenter} открыл заново одну из вами прокомментированных заметок недалеко от %{place}.' - details: Подробнее о заметке %{url}. - details_html: 'Подробнее о заметке: %{url}.' + details: Ответить или узнать больше о заметке %{url}. + details_html: 'Ответить или узнать больше о заметке: %{url}.' changeset_comment_notification: hi: Здравствуйте, %{to_user}, greeting: Здравствуйте, @@ -1855,8 +1855,8 @@ ru: partial_changeset_with_comment: с комментарием '%{changeset_comment}' partial_changeset_with_comment_html: с комментарием '%{changeset_comment}' partial_changeset_without_comment: без комментария - details: Дополнительные сведения о пакете правок можно найти на %{url}. - details_html: Дополнительные сведения о пакете правок можно найти на %{url}. + details: 'Ответить или узнать больше о пакете правок: %{url}.' + details_html: Ответить или узнать больше о пакете правок можно на %{url}. unsubscribe: Чтобы отказаться от новых сообщений для этого пакета правок, перейдите по ссылке %{url} и нажмите кнопку "Отписаться". unsubscribe_html: Чтобы отказаться от подписки на обновления этого набора изменений, diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 184082f24..b25c1466a 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -369,6 +369,7 @@ sv: deleted_ago_by_html: Raderades %{time_ago} av %{user} edited_ago_by_html: Redigerades %{time_ago} av %{user} version: Version + redacted_version: Redigerad version in_changeset: Ändringsuppsättning anonymous: anonym no_comment: (inga kommentarer) @@ -381,7 +382,10 @@ sv: other: '%{count} sträckor' download_xml: Ladda ner XML view_history: Visa historik + view_unredacted_history: Visa oredigerad historik view_details: Visa detaljer + view_redacted_data: Visa redigerad data + view_redaction_message: Visa redigeringsmeddelande location: 'Plats:' node: title_html: 'Nod: %{name}' @@ -503,8 +507,12 @@ sv: created: Skapad closed: Stängd belongs_to: Författare + subscribe: + button: Prenumerera pÃ¥ diskussion show: title: 'Ändringsuppsättning: %{id}' + created: 'Skapades: %{when}' + closed: 'Stängdes: %{when}' created_ago_html: Skapades %{time_ago} closed_ago_html: Stängdes %{time_ago} created_ago_by_html: Skapades %{time_ago} av %{user} @@ -588,6 +596,7 @@ sv: show: title: '%{user}s dagbok | %{title}' user_title: '%{user}s dagbok' + discussion: Diskussion leave_a_comment: Lämna en kommentar login_to_leave_a_comment_html: '%{login_link} för att lämna en kommentar' login: Logga in @@ -640,6 +649,8 @@ sv: comment: Kommentar newer_comments: Nyare kommentarer older_comments: Äldre kommentarer + subscribe: + button: Prenumerera pÃ¥ diskussion doorkeeper: errors: messages: @@ -1928,13 +1939,15 @@ sv: new: title: Logga in tab_title: Logga in + login_to_authorize_html: Logga in pÃ¥ OpenStreetMap för att komma Ã¥t %{client_app_name}. email or username: E-postadress eller Användarnamn password: Lösenord remember: Kom ihÃ¥g mig lost password link: Glömt ditt lösenord? login_button: Logga in register now: Registrera dig nu - with external: 'Alternativt kan du använda en tredje part för att logga in:' + with external: eller logga in med en tredje part + or: eller auth failure: Kunde inte logga in med de uppgifterna. destroy: title: Logga ut @@ -2110,6 +2123,7 @@ sv: %{france}: InnehÃ¥ller data hämtade frÃ¥n Direction Générale des Impôts. contributors_fr_france: Frankrike + contributors_hr_croatia: Kroatien contributors_nl_credit_html: '%{netherlands}: InnehÃ¥ller © AND data, 2007 (%{and_link}).' contributors_nl_netherlands: Nederländerna @@ -2581,6 +2595,7 @@ sv: muted_users: Tystade användare auth_providers: openid_logo_alt: Logga in med ett OpenID + openid_login_button: Fortsätt openid: title: Logga in med OpenID alt: Logga in med en OpenID-URL @@ -2646,6 +2661,9 @@ sv: write_redactions: Omarbeta kartdata read_email: Läs användarens e-postadress skip_authorization: Godkänn applikation automatiskt + for_roles: + moderator: Denna behörighet är till för Ã¥tgärder som endast är tillgängliga + för moderatorer oauth_clients: new: title: Registrera en ny applikation @@ -2741,20 +2759,25 @@ sv: users: new: title: Registrera + tab_title: Registrera + signup_to_authorize_html: Registrera dig pÃ¥ OpenStreetMap för att fÃ¥ Ã¥tkomst + till %{client_app_name} no_auto_account_create: Tyvärr kan vi för närvarande inte kan skapa ett konto Ã¥t dig automatiskt. please_contact_support_html: Kontakta %{support_link} för att ordna att ett konto ska skapas - vi kommer att försöka ta itu med begäran sÃ¥ fort som möjligt. support: support about: - header: Fri och redigerbar + header: Fri och redigerbar. paragraph_1: Till skillnad frÃ¥n andra kartor är OpenStreetMap helt skapad av människor som du, och det är gratis för alla att fixa, uppdatera, ladda ner och använda. - paragraph_2: Registrera dig för att börja bidra. Vi skickar ett e-postmeddelande - för att bekräfta ditt konto. + paragraph_2: Registrera dig för att börja bidra. + welcome: Välkommen till OpenStreetMap display name description: Ditt offentligt visade användarnamn. Du kan ändra detta senare i alternativ. + tou: användarvillkor + contributor_terms: bidragsvillkor external auth: 'Tredjepartsautentisering:' continue: Registrera terms accepted: Tack för att du accepterat de nya villkoren för bidrag till @@ -2763,7 +2786,9 @@ sv: för mer information. privacy_policy: integritetspolicy privacy_policy_title: OSMFs integritetspolicy inklusive avsnitt om e-postadresser - use external auth: Alternativt kan du använda en tredje part för att logga in + consider_pd: public domain + or: eller + use external auth: eller registrera med en tredje part terms: title: Villkor för deltagare heading: Villkor för deltagare @@ -2868,6 +2893,8 @@ sv: index: title: Användare heading: Användare + older: Äldre användare + newer: Nyare användare summary_html: '%{name} skapades frÃ¥n %{ip_address} den %{date}' summary_no_ip_html: '%{name} skapad den %{date}' confirm: Bekräfta valda användare @@ -3024,6 +3051,15 @@ sv: reason: Orsak till blockering status: Status revoker_name: Återkallad av + older: Äldre blockeringar + newer: Nya blockeringar + navigation: + all_blocks: Alla blockeringar + blocks_on_me: Blockeringar pÃ¥ mig + blocks_on_user: Blockeringar pÃ¥ %{user} + blocks_by_me: Blockeringar av mig + blocks_by_user: Blockeringar av %{user} + block: 'Blockering #%{id}' user_mutes: index: title: Tystade användare @@ -3096,6 +3132,10 @@ sv: intro: Upptäckt ett misstag eller nÃ¥got som saknas? LÃ¥t andra karterare veta sÃ¥ att vi kan fixa det. Flytta markören till rätt position och skriv in en kommentar som förklarar problemet. + anonymous_warning_html: Du är inte inloggad. %{log_in} eller %{sign_up} om du + vill fÃ¥ uppdateringar för din anteckning. + anonymous_warning_log_in: logga in + anonymous_warning_sign_up: registrera dig advice: Din anteckning är offentlig och kan användas för att uppdatera kartan, sÃ¥ skriv inte personuppgifter eller information frÃ¥n upphovsrättsligt skyddade kartor eller kataloger. @@ -3144,6 +3184,7 @@ sv: standard: Standard cycle_map: Cykelkarta transport_map: Transportkarta + tracestracktop_topo: Tracetrack Topo hot: Humanitärt layers: header: Kartskikt diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 9bb102184..1ecfa3182 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1729,8 +1729,8 @@ zh-CN: your_note_html: '%{commenter} 重新激活了您在 %{place} 附近的一个注记。' commented_note: '%{commenter} 重新激活了您感兴趣的一个地图注记。该注记位于 %{place} 附近。' commented_note_html: '%{commenter} 重新激活了您感兴趣的一个地图注记。该注记位于 %{place} 附近。' - details: 更多关于笔记的详细信息可以在%{url}找到。 - details_html: 更多关于笔记的详细信息可以在%{url}找到。 + details: 在 %{url} 回复或了解更多有关注记的信息。 + details_html: 在 %{url} 回复或了解更多有关注记的信息。 changeset_comment_notification: description: 'OpenStreetMap 变更集 #%{id}' hi: 您好,%{to_user}: @@ -1745,8 +1745,8 @@ zh-CN: partial_changeset_with_comment: 带评论“%{changeset_comment}” partial_changeset_with_comment_html: 带有评论“%{changeset_comment}” partial_changeset_without_comment: 没有评论 - details: 更多关于变更集的详细信息可以在 %{url} 找到。 - details_html: 更多有关变更集的详细信息,请参见 %{url}。 + details: 在 %{url} 回复或了解更多有关变更集的信息。 + details_html: 在 %{url} 回复或了解更多有关变更集的信息。 unsubscribe: 您可访问%{url}以从该变更集中退订。 unsubscribe_html: 您可访问%{url}以从该变更集中退订。 confirmations: diff --git a/lib/osm.rb b/lib/osm.rb index 65eab6907..a0fcef8b9 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -8,7 +8,7 @@ module OSM # The base class for API Errors. class APIError < RuntimeError def initialize(message = "Generic API Error") - super(message) + super end def status diff --git a/test/controllers/api/capabilities_controller_test.rb b/test/controllers/api/capabilities_controller_test.rb index 46ebb6a37..7d2feed29 100644 --- a/test/controllers/api/capabilities_controller_test.rb +++ b/test/controllers/api/capabilities_controller_test.rb @@ -71,5 +71,75 @@ module Api assert_equal "online", js["api"]["status"]["gpx"] assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length end + + def test_capabilities_api_readonly + with_settings(:status => "api_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_api_offline + with_settings(:status => "api_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_database_readonly + with_settings(:status => "database_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='readonly']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='readonly']", :count => 1 + end + end + end + end + + def test_capabilities_database_offline + with_settings(:status => "database_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='offline']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end + + def test_capabilities_gpx_offline + with_settings(:status => "gpx_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='online']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end end end diff --git a/test/controllers/api/versions_controller_test.rb b/test/controllers/api/versions_controller_test.rb index 1c70831c9..d2b353a8e 100644 --- a/test/controllers/api/versions_controller_test.rb +++ b/test/controllers/api/versions_controller_test.rb @@ -46,5 +46,17 @@ module Api assert_response :success assert_select "osm[version]", :count => 0 end + + def test_versions_available_while_offline + with_settings(:status => "api_offline") do + get api_versions_path + assert_response :success + assert_select "osm[generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "version", Settings.api_version + end + end + end + end end end diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 4611860d0..1b0933d32 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -45,47 +45,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_select "form > div > input.is-invalid#user_email" end - def test_user_create_association_bad_auth_provider - assert_difference("User.count", 0) do - assert_no_difference("ActionMailer::Base.deliveries.size") do - perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => "test@example.com", - :display_name => "new_tester", - :pass_crypt => "testtest", - :pass_crypt_confirmation => "testtest", - :auth_provider => "noprovider", - :auth_uid => "123454321", - :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "noprovider", :origin => "/user/new") - post response.location - end - end - end - assert_response :not_found - end - - def test_user_create_association_no_auth_uid - OmniAuth.config.mock_auth[:google] = :invalid_credentials - assert_difference("User.count", 0) do - assert_no_difference("ActionMailer::Base.deliveries.size") do - perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => "test@example.com", - :display_name => "new_tester", - :pass_crypt => "testtest", - :pass_crypt_confirmation => "testtest", - :auth_provider => "google", - :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "google", :origin => "/user/new") - post response.location - end - end - end - follow_redirect! - assert_redirected_to auth_failure_path(:strategy => "google", :message => "invalid_credentials", :origin => "/user/new") - end - def test_user_create_association_submit_duplicate_email dup_email = create(:user).email display_name = "new_tester" @@ -275,6 +234,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_openid_success new_email = "newtester-openid@osm.org" display_name = "new_tester-openid" + openid_url = "http://localhost:1000/new.tester" auth_uid = "http://localhost:1123/new.tester" OmniAuth.config.add_mock(:openid, @@ -284,8 +244,8 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_difference("User.count") do assert_difference("ActionMailer::Base.deliveries.size", 1) do perform_enqueued_jobs do - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") + post auth_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") follow_redirect! assert_redirected_to :controller => :users, :action => "new", :nickname => display_name, :email => new_email, :auth_provider => "openid", :auth_uid => auth_uid @@ -294,11 +254,8 @@ class UserCreationTest < ActionDispatch::IntegrationTest :params => { :user => { :email => new_email, :display_name => display_name, :auth_provider => "openid", - :auth_uid => "http://localhost:1123/new.tester", + :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - post response.location - follow_redirect! end end end @@ -335,22 +292,10 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_openid_failure OmniAuth.config.mock_auth[:openid] = :connection_failed - new_email = "newtester-openid2@osm.org" - display_name = "new_tester-openid2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "openid", - :auth_uid => "http://localhost:1123/new.tester", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") + post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") follow_redirect! assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -363,6 +308,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest end def test_user_create_openid_redirect + openid_url = "http://localhost:1000/new.tester" auth_uid = "http://localhost:1123/new.tester" new_email = "redirect_tester_openid@osm.org" display_name = "redirect_tester_openid" @@ -374,8 +320,8 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_difference("User.count") do assert_difference("ActionMailer::Base.deliveries.size", 1) do perform_enqueued_jobs do - post auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") + post auth_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") + assert_redirected_to auth_success_path(:provider => "openid", :openid_url => openid_url, :origin => "/user/new") follow_redirect! assert_redirected_to :controller => :users, :action => "new", :nickname => display_name, :email => new_email, :auth_provider => "openid", :auth_uid => auth_uid @@ -386,11 +332,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "openid", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name follow_redirect! end end @@ -454,10 +395,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_uid => auth_uid, :consider_pd => "1" }, :email_hmac => email_hmac } - assert_redirected_to auth_path(:provider => "google", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "google") - follow_redirect! assert_redirected_to welcome_path follow_redirect! end @@ -499,22 +436,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_google_failure OmniAuth.config.mock_auth[:google] = :connection_failed - new_email = "newtester-google2@osm.org" - display_name = "new_tester-google2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "google", - :auth_uid => "123454321", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "google", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "google") + post auth_path(:provider => "google", :origin => "/user/new") + assert_response :redirect follow_redirect! assert_redirected_to auth_failure_path(:strategy => "google", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -555,11 +481,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "google", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "google", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "google") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name + assert_response :redirect follow_redirect! end end @@ -622,10 +544,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_uid => auth_uid, :consider_pd => "1" }, :email_hmac => email_hmac } - assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "facebook") - follow_redirect! assert_redirected_to welcome_path follow_redirect! end @@ -666,22 +584,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_facebook_failure OmniAuth.config.mock_auth[:facebook] = :connection_failed - new_email = "newtester-facebook2@osm.org" - display_name = "new_tester-facebook2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "facebook", - :auth_uid => "123454321", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "facebook") + post auth_path(:provider => "facebook", :origin => "/user/new") + assert_response :redirect follow_redirect! assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -723,11 +630,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "facebook", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "facebook") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name assert_response :redirect follow_redirect! end @@ -790,10 +692,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_uid => auth_uid, :consider_pd => "1" }, :email_hmac => email_hmac } - assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "microsoft") - follow_redirect! assert_redirected_to welcome_path follow_redirect! end @@ -834,22 +732,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_microsoft_failure OmniAuth.config.mock_auth[:microsoft] = :connection_failed - new_email = "newtester-microsoft2@osm.org" - display_name = "new_tester-microsoft2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "microsoft", - :auth_uid => "123454321", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "microsoft") + post auth_path(:provider => "microsoft", :origin => "/user/new") + assert_response :redirect follow_redirect! assert_redirected_to auth_failure_path(:strategy => "microsoft", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -890,11 +777,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "microsoft", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "microsoft") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name assert_response :redirect follow_redirect! end @@ -962,10 +844,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :read_ct => 1, :read_tou => 1, :email_hmac => email_hmac } - assert_redirected_to auth_path(:provider => "github", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "github") - follow_redirect! assert_redirected_to welcome_path follow_redirect! end @@ -1007,22 +885,10 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_github_failure OmniAuth.config.mock_auth[:github] = :connection_failed - new_email = "newtester-github2@osm.org" - display_name = "new_tester-github2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "github", - :auth_uid => "123454321", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "github", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "github") + post auth_path(:provider => "github", :origin => "/user/new") follow_redirect! assert_redirected_to auth_failure_path(:strategy => "github", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -1062,11 +928,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "github", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "github", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "github") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name assert_response :redirect follow_redirect! end @@ -1133,10 +994,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :read_ct => 1, :read_tou => 1, :email_hmac => email_hmac } - assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new") - follow_redirect! assert_redirected_to welcome_path follow_redirect! end @@ -1175,22 +1032,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest def test_user_create_wikipedia_failure OmniAuth.config.mock_auth[:wikipedia] = :connection_failed - new_email = "newtester-wikipedia2@osm.org" - display_name = "new_tester-wikipedia2" assert_difference("User.count", 0) do assert_difference("ActionMailer::Base.deliveries.size", 0) do perform_enqueued_jobs do - post "/user/new", - :params => { :user => { :email => new_email, - :email_confirmation => new_email, - :display_name => display_name, - :auth_provider => "wikipedia", - :auth_uid => "123454321", - :pass_crypt => "", - :pass_crypt_confirmation => "" } } - assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new") + post auth_path(:provider => "wikipedia", :origin => "/user/new") + assert_response :redirect follow_redirect! assert_redirected_to auth_failure_path(:strategy => "wikipedia", :message => "connection_failed", :origin => "/user/new") follow_redirect! @@ -1232,11 +1078,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest :auth_provider => "wikipedia", :auth_uid => auth_uid, :consider_pd => "1" } } - assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new") - post response.location - assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new") - follow_redirect! - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name assert_response :redirect follow_redirect! end diff --git a/yarn.lock b/yarn.lock index 230c1c716..dec04559d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -576,9 +576,9 @@ optionator@^0.9.3: type-check "^0.4.0" osm-community-index@^5.2.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.7.0.tgz#1c1a785fd13a2e00535da8db132c4e49780f0b28" - integrity sha512-r5h58L9mGh2Wu4XcJoGKLdw3oBY41jWAMUVBNE9tBS9sZINwSZccrImhxuOS5DmpslTjZ6w1cn7x9sE8tnFGpQ== + version "5.7.1" + resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.7.1.tgz#2341666c83d14c00ef3d9a90298c96d5e791b56c" + integrity sha512-E+Xib5m//WliNq2iqeUXyKqZk7yhZu/vSJbwwyxDAPzcNWxgIMoO0B7cUMeFNckhMQsKM2UuC2BAjWuVfbYf1Q== dependencies: diacritics "^1.3.0"