From: Andy Allan Date: Wed, 27 Sep 2023 14:10:52 +0000 (+0100) Subject: Merge pull request #4184 from AntonKhorev/print X-Git-Tag: live~542 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/228ab23ce16338e281e609d9355c982cd4085c42?hp=00f5c756275c57fc234e28a6c38fb88b660908c7 Merge pull request #4184 from AntonKhorev/print Show sidebar in print media --- diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 74d03b31c..df617d4fb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Poke config run: | cp config/example.storage.yml config/storage.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e762df445..685937b03 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup ruby uses: ruby/setup-ruby@v1 with: @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup ruby uses: ruby/setup-ruby@v1 with: @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup ruby uses: ruby/setup-ruby@v1 with: @@ -64,7 +64,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup ruby uses: ruby/setup-ruby@v1 with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1d5c947e0..3ee6129e1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: OPENSTREETMAP_MEMCACHE_SERVERS: 127.0.0.1 steps: - name: Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup ruby uses: ruby/setup-ruby@v1 with: @@ -60,7 +60,7 @@ jobs: - name: Run tests run: bundle exec rails test:all - name: Report completion to Coveralls - uses: coverallsapp/github-action@v2.2.1 + uses: coverallsapp/github-action@v2.2.3 with: github-token: ${{ secrets.github_token }} flag-name: ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }} @@ -72,7 +72,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Report completion to Coveralls - uses: coverallsapp/github-action@v2.2.1 + uses: coverallsapp/github-action@v2.2.3 with: github-token: ${{ secrets.github_token }} parallel-finished: true diff --git a/FAQ.md b/FAQ.md index 4ed5df7c4..d4ac1fc9f 100644 --- a/FAQ.md +++ b/FAQ.md @@ -15,7 +15,7 @@ drive. This is a great way to reach a lot of people! * Edit [`config/banners.yml`](https://github.com/openstreetmap/openstreetmap-website/blob/master/config/banners.yml) to contain an entry for the event banner. It should contain the following: * `id` - a unique identifier (e.g. `donate2017`) * `alt` - alt name for the image (e.g. `OpenStreetMap Funding Drive 2017`) - * `link` - URL for your event page (e.g. `https://donate.openstreetmap.org/`) + * `link` - URL for your event page (e.g. `https://supporting.openstreetmap.org/`) * `img` - the filename for the banner image (e.g. `banners/donate-2017.jpg`) * `enddate` - the final date that the banner will be shown (e.g. `2017-oct-31`) * (optional) Feel free to cleanup the old images from the `app/assets/images/banners/` folder and old entries in the `config/banners.yml` file. diff --git a/Gemfile b/Gemfile index 39ffed860..f60a219e7 100644 --- a/Gemfile +++ b/Gemfile @@ -72,9 +72,9 @@ gem "omniauth-facebook" gem "omniauth-github" gem "omniauth-google-oauth2", ">= 0.6.0" gem "omniauth-mediawiki", ">= 0.0.4" +gem "omniauth-microsoft_graph" gem "omniauth-openid" gem "omniauth-rails_csrf_protection", "~> 1.0" -gem "omniauth-windowslive" # Doorkeeper for OAuth2 gem "doorkeeper" diff --git a/Gemfile.lock b/Gemfile.lock index b75e93606..d224d95ee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,73 +3,73 @@ GEM specs: aasm (5.5.0) concurrent-ruby (~> 1.0) - actioncable (7.0.7) - actionpack (= 7.0.7) - activesupport (= 7.0.7) + actioncable (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (7.0.7) - actionpack (= 7.0.7) - activejob (= 7.0.7) - activerecord (= 7.0.7) - activestorage (= 7.0.7) - activesupport (= 7.0.7) + actionmailbox (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.0.7) - actionpack (= 7.0.7) - actionview (= 7.0.7) - activejob (= 7.0.7) - activesupport (= 7.0.7) + actionmailer (7.0.8) + actionpack (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activesupport (= 7.0.8) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.0) - actionpack (7.0.7) - actionview (= 7.0.7) - activesupport (= 7.0.7) + actionpack (7.0.8) + actionview (= 7.0.8) + activesupport (= 7.0.8) 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.7) - actionpack (= 7.0.7) - activerecord (= 7.0.7) - activestorage (= 7.0.7) - activesupport (= 7.0.7) + actiontext (7.0.8) + actionpack (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.0.7) - activesupport (= 7.0.7) + actionview (7.0.8) + activesupport (= 7.0.8) 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.7) - activesupport (= 7.0.7) + activejob (7.0.8) + activesupport (= 7.0.8) globalid (>= 0.3.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) + activemodel (7.0.8) + activesupport (= 7.0.8) + activerecord (7.0.8) + activemodel (= 7.0.8) + activesupport (= 7.0.8) + activerecord-import (1.5.0) activerecord (>= 4.2) - activestorage (7.0.7) - actionpack (= 7.0.7) - activejob (= 7.0.7) - activerecord (= 7.0.7) - activesupport (= 7.0.7) + activestorage (7.0.8) + actionpack (= 7.0.8) + activejob (= 7.0.8) + activerecord (= 7.0.8) + activesupport (= 7.0.8) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (7.0.7) + activesupport (7.0.8) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -79,15 +79,15 @@ GEM annotate (3.2.0) activerecord (>= 3.2, < 8.0) rake (>= 10.4, < 14.0) - argon2 (2.2.0) + argon2 (2.3.0) ffi (~> 1.15) ffi-compiler (~> 1.0) ast (2.4.2) - autoprefixer-rails (10.4.13.0) + autoprefixer-rails (10.4.15.0) execjs (~> 2) aws-eventstream (1.2.0) - aws-partitions (1.804.0) - aws-sdk-core (3.180.3) + aws-partitions (1.828.0) + aws-sdk-core (3.183.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) @@ -95,8 +95,8 @@ GEM aws-sdk-kms (1.71.0) aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.132.1) - aws-sdk-core (~> 3, >= 3.179.0) + aws-sdk-s3 (1.135.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.6) aws-sigv4 (1.6.0) @@ -121,9 +121,9 @@ GEM autoprefixer-rails (>= 9.1.0) popper_js (>= 2.9.3, < 3) sassc-rails (>= 2.0.0) - bootstrap_form (5.2.3) - actionpack (>= 6.0) - activemodel (>= 6.0) + bootstrap_form (5.3.2) + actionpack (>= 6.1) + activemodel (>= 6.1) brakeman (6.0.1) brotli (0.4.0) browser (5.3.1) @@ -152,7 +152,7 @@ GEM crack (0.4.5) rexml crass (1.0.6) - dalli (3.2.5) + dalli (3.2.6) date (3.3.3) debug_inspector (1.1.0) deep_merge (1.2.2) @@ -178,7 +178,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.2) + dry-schema (1.13.3) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -198,7 +198,7 @@ GEM dry-initializer (~> 3.0) dry-schema (>= 1.12, < 2) zeitwerk (~> 2.6) - erb_lint (0.4.0) + erb_lint (0.5.0) activesupport better_html (>= 2.0.1) parser (>= 2.7.1.4) @@ -206,30 +206,31 @@ GEM rubocop smart_properties erubi (1.12.0) - execjs (2.8.1) + execjs (2.9.1) exifr (1.4.0) factory_bot (6.2.1) activesupport (>= 5.0.0) factory_bot_rails (6.2.0) factory_bot (~> 6.2.0) railties (>= 5.0.0) - faraday (2.7.10) + faraday (2.7.11) + base64 faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) - ffi (1.15.5) + ffi (1.16.2) ffi-compiler (1.0.1) ffi (>= 1.0.0) rake - ffi-libarchive (1.1.3) + ffi-libarchive (1.1.13) ffi (~> 1.0) frozen_record (0.27.0) activemodel fspath (3.1.2) gd2-ffij (0.4.0) ffi (>= 1.0.0) - globalid (1.1.0) - activesupport (>= 5.0) + globalid (1.2.1) + activesupport (>= 6.1) hashdiff (1.0.1) hashie (5.0.0) highline (2.1.0) @@ -301,7 +302,7 @@ GEM mini_magick (4.12.0) mini_mime (1.1.5) mini_portile2 (2.8.4) - minitest (5.19.0) + minitest (5.20.0) msgpack (1.7.2) multi_json (1.15.0) multi_xml (0.6.0) @@ -312,7 +313,7 @@ GEM net-protocol net-protocol (0.2.1) timeout - net-smtp (0.3.3) + net-smtp (0.4.0) net-protocol nio4r (2.5.9) nokogiri (1.15.4) @@ -348,6 +349,9 @@ GEM omniauth-mediawiki (0.0.4) jwt (~> 2.0) omniauth-oauth (~> 1.0) + omniauth-microsoft_graph (1.2.0) + omniauth (~> 2.0) + omniauth-oauth2 (~> 1.8.0) omniauth-oauth (1.2.0) oauth omniauth (>= 1.0, < 3) @@ -360,19 +364,16 @@ GEM omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) - omniauth-windowslive (0.0.12) - multi_json (~> 1.12) - omniauth-oauth2 (~> 1.4) openstreetmap-deadlock_retry (1.3.1) parallel (1.23.0) parser (3.2.2.3) ast (~> 2.4.1) racc - pg (1.5.3) + pg (1.5.4) popper_js (2.11.8) progress (3.6.0) public_suffix (5.0.3) - puma (5.6.6) + puma (5.6.7) nio4r (~> 2.0) quad_tile (1.0.1) r2 (0.2.8) @@ -388,20 +389,20 @@ GEM rack-test (2.1.0) rack (>= 1.3) rack-uri_sanitizer (0.0.2) - 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) + rails (7.0.8) + actioncable (= 7.0.8) + actionmailbox (= 7.0.8) + actionmailer (= 7.0.8) + actionpack (= 7.0.8) + actiontext (= 7.0.8) + actionview (= 7.0.8) + activejob (= 7.0.8) + activemodel (= 7.0.8) + activerecord (= 7.0.8) + activestorage (= 7.0.8) + activesupport (= 7.0.8) bundler (>= 1.15.0) - railties (= 7.0.7) + railties (= 7.0.8) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -416,9 +417,9 @@ GEM rails-i18n (7.0.8) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.0.7) - actionpack (= 7.0.7) - activesupport (= 7.0.7) + railties (7.0.8) + actionpack (= 7.0.8) + activesupport (= 7.0.8) method_source rake (>= 12.2) thor (~> 1.0) @@ -433,9 +434,9 @@ GEM rack (>= 1.4) rexml (3.2.6) rinku (2.0.6) - rotp (6.2.2) + rotp (6.3.0) rouge (4.1.3) - rubocop (1.56.0) + rubocop (1.56.3) base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) @@ -449,16 +450,16 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.29.0) parser (>= 3.2.1.0) - rubocop-capybara (2.18.0) + rubocop-capybara (2.19.0) rubocop (~> 1.41) - rubocop-factory_bot (2.23.1) + rubocop-factory_bot (2.24.0) rubocop (~> 1.33) - rubocop-minitest (0.31.0) + rubocop-minitest (0.32.1) rubocop (>= 1.39, < 2.0) - rubocop-performance (1.19.0) + rubocop-performance (1.19.1) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) - rubocop-rails (2.20.2) + rubocop-rails (2.21.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) @@ -470,7 +471,7 @@ GEM ffi (~> 1.12) ruby2_keywords (0.0.5) rubyzip (2.3.2) - sanitize (6.0.2) + sanitize (6.1.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) sassc (2.4.0) @@ -482,7 +483,7 @@ GEM sprockets-rails tilt secure_headers (6.5.0) - selenium-webdriver (4.11.0) + selenium-webdriver (4.13.1) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -497,7 +498,7 @@ GEM snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - sprockets (4.2.0) + sprockets (4.2.1) concurrent-ruby (~> 1.0) rack (>= 2.2.4, < 4) sprockets-exporters_pack (0.1.2) @@ -507,14 +508,14 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - strong_migrations (1.6.1) + strong_migrations (1.6.3) activerecord (>= 5.2) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - terser (1.1.17) + terser (1.1.18) execjs (>= 0.3.0, < 3) thor (1.2.2) - tilt (2.2.0) + tilt (2.3.0) timeout (0.4.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) @@ -523,17 +524,17 @@ GEM i18n vendorer (0.2.0) version_gem (1.1.3) - webmock (3.18.1) + webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - websocket (1.2.9) + websocket (1.2.10) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.11) + zeitwerk (2.6.12) PLATFORMS ruby @@ -595,9 +596,9 @@ DEPENDENCIES omniauth-github omniauth-google-oauth2 (>= 0.6.0) omniauth-mediawiki (>= 0.0.4) + omniauth-microsoft_graph omniauth-openid omniauth-rails_csrf_protection (~> 1.0) - omniauth-windowslive openstreetmap-deadlock_retry (>= 1.3.1) pg puma (~> 5.6) diff --git a/Vendorfile b/Vendorfile index 680ed2225..4c6a80839 100644 --- a/Vendorfile +++ b/Vendorfile @@ -15,7 +15,7 @@ folder 'vendor/assets' do folder 'img', 'src/img' end - from 'https://github.com/jfirebaugh/leaflet-osm.git' do + from 'https://github.com/openstreetmap/leaflet-osm.git' do file 'leaflet.osm.js', 'leaflet-osm.js' end diff --git a/app/abilities/api_ability.rb b/app/abilities/api_ability.rb index 9b274ec84..fe39f5eb5 100644 --- a/app/abilities/api_ability.rb +++ b/app/abilities/api_ability.rb @@ -21,6 +21,7 @@ class ApiAbility can [:history, :version], OldNode can [:history, :version], OldWay can [:history, :version], OldRelation + can [:show], UserBlock end if user&.active? diff --git a/app/assets/images/banners/StateoftheMapEurope_2023.png b/app/assets/images/banners/StateoftheMapEurope_2023.png new file mode 100644 index 000000000..33e9db907 Binary files /dev/null and b/app/assets/images/banners/StateoftheMapEurope_2023.png differ diff --git a/app/assets/images/windowslive.svg b/app/assets/images/microsoft.svg similarity index 100% rename from app/assets/images/windowslive.svg rename to app/assets/images/microsoft.svg diff --git a/app/assets/javascripts/index/changeset.js b/app/assets/javascripts/index/changeset.js index 9e38917af..a6213b9c4 100644 --- a/app/assets/javascripts/index/changeset.js +++ b/app/assets/javascripts/index/changeset.js @@ -29,6 +29,7 @@ OSM.Changeset = function (map) { function updateChangeset(form, method, url, include_data) { var data; + $(form).find("#comment-error").prop("hidden", true); $(form).find("input[type=submit]").prop("disabled", true); if (include_data) { @@ -44,6 +45,11 @@ OSM.Changeset = function (map) { data: data, success: function () { OSM.loadSidebarContent(window.location.pathname, page.load); + }, + error: function (xhr, xhr_status, http_status) { + $(form).find("#comment-error").text(http_status); + $(form).find("#comment-error").prop("hidden", false); + $(form).find("input[type=submit]").prop("disabled", false); } }); } diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index 7bd0891a3..c86c8ad02 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -268,7 +268,8 @@ OSM.Directions = function (map) { I18n.t("javascripts.directions.descend") + ": " + formatHeight(route.descend) + "."); } - var turnByTurnTable = $(""); + var turnByTurnTable = $("
") + .append($("")); var directionsCloseButton = $(""); - row.append(" "); - row.append(" "); + row.append(" <% @comments.each do |comment| -%> - "> - - - + + + + <% end -%>
" + instruction); + row.append("
" + instruction); row.append("" + dist); row.on("click", function () { diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index 020876c47..27311f7c1 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -8,11 +8,12 @@ L.OSM.layers = function (options) { .attr("class", "section base-layers") .appendTo($ui); - var baseLayers = $("
<%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %><%= time_ago_in_words(comment.created_at, :scope => :"datetime.distance_in_words_ago") %><%= comment.body.to_html %>
"><%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %>"><%= time_ago_in_words(comment.created_at, :scope => :"datetime.distance_in_words_ago") %>"><%= comment.body.to_html %>
-
- <%= link_to t(".older_comments"), :page => @comment_pages.current.next if @comment_pages.current.next %> - <%= link_to t(".newer_comments"), :page => @comment_pages.current.previous if @comment_pages.current.previous %> -
- + <%= render "shared/pagination", + :newer_key => "diary_entries.comments.newer_comments", + :older_key => "diary_entries.comments.older_comments", + :newer_id => @newer_comments_id, + :older_id => @older_comments_id %> <% end -%> diff --git a/app/views/diary_entries/index.html.erb b/app/views/diary_entries/index.html.erb index 4a8beab37..e464b99b4 100644 --- a/app/views/diary_entries/index.html.erb +++ b/app/views/diary_entries/index.html.erb @@ -36,29 +36,11 @@ <%= render @entries %> - + <%= render "shared/pagination", + :newer_key => "diary_entries.index.newer_entries", + :older_key => "diary_entries.index.older_entries", + :newer_id => @newer_entries_id, + :older_id => @older_entries_id %> <% end %> <% unless params[:friends] or params[:nearby] -%> diff --git a/app/views/friendships/make_friend.html.erb b/app/views/friendships/make_friend.html.erb index 3dcdd6d64..f5c2b9c0c 100644 --- a/app/views/friendships/make_friend.html.erb +++ b/app/views/friendships/make_friend.html.erb @@ -1,5 +1,5 @@ <% content_for :heading do %> -

<%= t ".heading", :user => @new_friend.display_name %>

+

<%= t ".heading", :user => @friend.display_name %>

<% end %> <%= bootstrap_form_tag do |f| %> diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index a66715a75..fd2ae0a4a 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -97,7 +97,7 @@ <%= link_to t("users.show.my_dashboard"), dashboard_path, :class => "dropdown-item" %> <%= link_to inbox_messages_path, :class => "dropdown-item" do %> <%= t("users.show.my messages") %> - <%= number_with_delimiter(current_user.new_messages.size) %> + <%= number_with_delimiter(current_user.new_messages.size) %> <% end %> <%= link_to t("users.show.my profile"), user_path(current_user), :class => "dropdown-item" %> <%= link_to t("users.show.my settings"), edit_account_path, :class => "dropdown-item" %> diff --git a/app/views/layouts/_inbox.html.erb b/app/views/layouts/_inbox.html.erb index 79a1db2da..2f5a63753 100644 --- a/app/views/layouts/_inbox.html.erb +++ b/app/views/layouts/_inbox.html.erb @@ -1,3 +1,3 @@ <% if current_user.new_messages.size > 0 %> -<%= current_user.new_messages.size %> +<%= current_user.new_messages.size %> <% end %> diff --git a/app/views/notes/show.html.erb b/app/views/notes/show.html.erb index 2378d8c2e..3bb97b484 100644 --- a/app/views/notes/show.html.erb +++ b/app/views/notes/show.html.erb @@ -34,7 +34,9 @@ <% @note_comments.drop(1).each do |comment| %>
  • <%= note_event(comment.event, comment.created_at, comment.author) %> - <%= comment.body.to_html %> +
    + <%= comment.body.to_html %> +
  • <% end %> diff --git a/app/views/profiles/edit.html.erb b/app/views/profiles/edit.html.erb index bf53832c8..b207e72e2 100644 --- a/app/views/profiles/edit.html.erb +++ b/app/views/profiles/edit.html.erb @@ -44,8 +44,8 @@ <%= t ".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" %> + <%= f.text_field :home_lat, :wrapper_class => "col-sm-4 d-flex flex-column", :class => "mt-auto", :id => "home_lat" %> + <%= f.text_field :home_lon, :wrapper_class => "col-sm-4 d-flex flex-column", :class => "mt-auto", :id => "home_lon" %>
    diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index bb43aefd5..03755730b 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -27,22 +27,12 @@
    -
      -
    • <%= link_to image_tag("openid.png", :alt => t(".auth_providers.openid.title")), "#", :id => "openid_open_url", :title => t(".auth_providers.openid.title") %>
    • - <% if Settings.key?(:google_auth_id) -%> -
    • <%= auth_button "google", "google" %>
    • - <% end -%> - <% if Settings.key?(:facebook_auth_id) -%> -
    • <%= auth_button "facebook", "facebook" %>
    • - <% end -%> - <% if Settings.key?(:windowslive_auth_id) -%> -
    • <%= auth_button "windowslive", "windowslive" %>
    • - <% end -%> - <% if Settings.key?(:github_auth_id) -%> -
    • <%= auth_button "github", "github" %>
    • - <% end -%> - <% if Settings.key?(:wikipedia_auth_id) -%> -
    • <%= auth_button "wikipedia", "wikipedia" %>
    • +
        +
      • <%= link_to image_tag("openid.png", :alt => t(".auth_providers.openid.title")), "#", :id => "openid_open_url", :title => t(".auth_providers.openid.title") %>
      • + <% %w[google facebook microsoft github wikipedia].each do |provider| %> + <% if Settings.key?("#{provider}_auth_id".to_sym) -%> +
      • <%= auth_button provider, provider %>
      • + <% end -%> <% end -%>
      diff --git a/app/views/shared/_pagination.html.erb b/app/views/shared/_pagination.html.erb new file mode 100644 index 000000000..fbb9dcf43 --- /dev/null +++ b/app/views/shared/_pagination.html.erb @@ -0,0 +1,23 @@ + diff --git a/app/views/site/export.html.erb b/app/views/site/export.html.erb index a314cb151..bb66c665a 100644 --- a/app/views/site/export.html.erb +++ b/app/views/site/export.html.erb @@ -9,8 +9,8 @@
      <%= text_field_tag("maxlat", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control mx-auto") %>
      - <%= text_field_tag("minlon", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control") %> - <%= text_field_tag("maxlon", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control") %> + <%= text_field_tag("minlon", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control my-2") %> + <%= text_field_tag("maxlon", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control my-2") %>
      <%= text_field_tag("minlat", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control mx-auto") %>
      diff --git a/app/views/site/key.html.erb b/app/views/site/key.html.erb index 370ae3b64..949121d96 100644 --- a/app/views/site/key.html.erb +++ b/app/views/site/key.html.erb @@ -1,5 +1,5 @@
      - +
      <% YAML.load_file(Rails.root.join("config/key.yml")).each do |name,data| %> <% data.each do |entry| %> " data-zoom-max="<%= entry["max_zoom"] %>"> diff --git a/app/views/traces/_trace_paging_nav.html.erb b/app/views/traces/_trace_paging_nav.html.erb deleted file mode 100644 index 29e0d37f6..000000000 --- a/app/views/traces/_trace_paging_nav.html.erb +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/app/views/traces/index.html.erb b/app/views/traces/index.html.erb index 26e52add7..ddbaa9e94 100644 --- a/app/views/traces/index.html.erb +++ b/app/views/traces/index.html.erb @@ -66,7 +66,11 @@ <% end %> <% if @traces.size > 0 %> - <%= render "trace_paging_nav", :older_traces => @older_traces, :newer_traces => @newer_traces, :traces => @traces, :params => @params %> + <%= render "shared/pagination", + :newer_key => "traces.trace_paging_nav.newer", + :older_key => "traces.trace_paging_nav.older", + :newer_id => @newer_traces && @traces.first.id, + :older_id => @older_traces && @traces.last.id %>
      @@ -74,7 +78,11 @@
      - <%= render "trace_paging_nav", :older_traces => @older_traces, :newer_traces => @newer_traces, :traces => @traces, :params => @params %> + <%= render "shared/pagination", + :newer_key => "traces.trace_paging_nav.newer", + :older_key => "traces.trace_paging_nav.older", + :newer_id => @newer_traces && @traces.first.id, + :older_id => @older_traces && @traces.last.id %> <% else %>

      <%= t ".empty_title" %>

      <%= t ".empty_upload_html", :upload_link => link_to(t(".upload_new"), new_trace_path), diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 81e33dddb..81fda926b 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -11,18 +11,18 @@

      • <%= link_to t(".my edits"), :controller => "changesets", :action => "index", :display_name => current_user.display_name %> - <%= number_with_delimiter(current_user.changesets.size) %> + <%= number_with_delimiter(current_user.changesets.size) %>
      • <%= link_to t(".my notes"), user_notes_path(@user) %>
      • <%= link_to t(".my traces"), :controller => "traces", :action => "mine" %> - <%= number_with_delimiter(current_user.traces.size) %> + <%= number_with_delimiter(current_user.traces.size) %>
      • <%= link_to t(".my diary"), :controller => "diary_entries", :action => "index", :display_name => current_user.display_name %> - <%= number_with_delimiter(current_user.diary_entries.size) %> + <%= number_with_delimiter(current_user.diary_entries.size) %>
      • <%= link_to t(".my comments"), diary_comments_path(current_user) %> @@ -34,14 +34,14 @@ <% if current_user.blocks.exists? %>
      • <%= link_to t(".blocks on me"), user_blocks_on_path(current_user) %> - <%= number_with_delimiter(current_user.blocks.active.size) %> + <%= number_with_delimiter(current_user.blocks.active.size) %>
      • <% end %> <% if can?(:create, UserBlock) and current_user.blocks_created.exists? %>
      • <%= link_to t(".blocks by me"), user_blocks_by_path(current_user) %> - <%= number_with_delimiter(current_user.blocks_created.active.size) %> + <%= number_with_delimiter(current_user.blocks_created.active.size) %>
      • <% end %> @@ -55,14 +55,14 @@
      • <%= link_to t(".edits"), :controller => "changesets", :action => "index", :display_name => @user.display_name %> - <%= number_with_delimiter(@user.changesets.size) %> + <%= number_with_delimiter(@user.changesets.size) %>
      • <%= link_to t(".notes"), user_notes_path(@user) %>
      • <%= link_to t(".traces"), :controller => "traces", :action => "index", :display_name => @user.display_name %> - <%= number_with_delimiter(@user.traces.size) %> + <%= number_with_delimiter(@user.traces.size) %>
      • @@ -72,7 +72,7 @@
      • <%= link_to t(".diary"), :controller => "diary_entries", :action => "index", :display_name => @user.display_name %> - <%= number_with_delimiter(@user.diary_entries.size) %> + <%= number_with_delimiter(@user.diary_entries.size) %>
      • <%= link_to t(".comments"), diary_comments_path(@user) %> @@ -90,14 +90,14 @@ <% if @user.blocks.exists? %>
      • <%= link_to t(".block_history"), user_blocks_on_path(@user) %> - <%= number_with_delimiter(@user.blocks.active.size) %> + <%= number_with_delimiter(@user.blocks.active.size) %>
      • <% end %> <% if @user.moderator? and @user.blocks_created.exists? %>
      • <%= link_to t(".moderator_history"), user_blocks_by_path(@user) %> - <%= number_with_delimiter(@user.blocks_created.active.size) %> + <%= number_with_delimiter(@user.blocks_created.active.size) %>
      • <% end %> @@ -131,6 +131,10 @@ <% end -%> <% end -%> + <% if current_user&.moderator? || current_user&.administrator? %> +
        <%= t ".uid" %>
        +
        <%= link_to @user.id, api_user_path(:id => @user.id) %>
        + <% end -%>
      diff --git a/config/banners.yml b/config/banners.yml index c2a4df07b..23256643d 100644 --- a/config/banners.yml +++ b/config/banners.yml @@ -8,3 +8,10 @@ donate_2023: - [banners/donate_2023_1@2x.jpg, 2x] dark: true enddate: 2023-dec-31 +sotmeu_2023: + id: sotmeu_2023 + alt: State of the Map Europe 2023 + link: https://stateofthemap.eu/ + img: banners/StateoftheMapEurope_2023.png + startdate: 2023-oct-05 + enddate: 2023-nov-05 diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 5ca4ccffa..bce82b3c9 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -23,8 +23,8 @@ end openid_options = { :name => "openid", :store => openid_store } google_options = { :name => "google", :scope => "email", :access_type => "online" } -facebook_options = { :name => "facebook", :scope => "email", :client_options => { :site => "https://graph.facebook.com/v4.0", :authorize_url => "https://www.facebook.com/v4.0/dialog/oauth" } } -windowslive_options = { :name => "windowslive", :scope => "wl.signin,wl.emails" } +facebook_options = { :name => "facebook", :scope => "email", :client_options => { :site => "https://graph.facebook.com/v17.0", :authorize_url => "https://www.facebook.com/v17.0/dialog/oauth" } } +microsoft_options = { :name => "microsoft", :scope => "openid User.Read" } github_options = { :name => "github", :scope => "user:email" } wikipedia_options = { :name => "wikipedia", :client_options => { :site => "https://meta.wikimedia.org" } } @@ -34,7 +34,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do provider :openid, openid_options provider :google_oauth2, Settings.google_auth_id, Settings.google_auth_secret, google_options if Settings.key?(:google_auth_id) provider :facebook, Settings.facebook_auth_id, Settings.facebook_auth_secret, facebook_options if Settings.key?(:facebook_auth_id) - provider :windowslive, Settings.windowslive_auth_id, Settings.windowslive_auth_secret, windowslive_options if Settings.key?(:windowslive_auth_id) + provider :microsoft_graph, Settings.microsoft_auth_id, Settings.microsoft_auth_secret, microsoft_options if Settings.key?(:microsoft_auth_id) provider :github, Settings.github_auth_id, Settings.github_auth_secret, github_options if Settings.key?(:github_auth_id) provider :mediawiki, Settings.wikipedia_auth_id, Settings.wikipedia_auth_secret, wikipedia_options if Settings.key?(:wikipedia_auth_id) end diff --git a/config/initializers/rate_limits.rb b/config/initializers/rate_limits.rb new file mode 100644 index 000000000..5caa3007f --- /dev/null +++ b/config/initializers/rate_limits.rb @@ -0,0 +1,15 @@ +require "rate_limiter" + +SIGNUP_IP_LIMITER = if Settings.memcache_servers && Settings.signup_ip_per_day && Settings.signup_ip_max_burst + RateLimiter.new( + Dalli::Client.new(Settings.memcache_servers, :namespace => "rails:signup:ip"), + 86400, Settings.signup_ip_per_day, Settings.signup_ip_max_burst + ) + end + +SIGNUP_EMAIL_LIMITER = if Settings.memcache_servers && Settings.signup_email_per_day && Settings.signup_email_max_burst + RateLimiter.new( + Dalli::Client.new(Settings.memcache_servers, :namespace => "rails:signup:email"), + 86400, Settings.signup_email_per_day, Settings.signup_email_max_burst + ) + end diff --git a/config/initializers/secure_headers.rb b/config/initializers/secure_headers.rb index 53ab76808..778b5b827 100644 --- a/config/initializers/secure_headers.rb +++ b/config/initializers/secure_headers.rb @@ -7,7 +7,7 @@ csp_policy = { :form_action => %w['self'], :frame_ancestors => %w['self'], :frame_src => %w['self'], - :img_src => %w['self' data: www.gravatar.com *.wp.com tile.openstreetmap.org *.tile.openstreetmap.org *.tile.thunderforest.com tileserver.memomaps.de *.openstreetmap.fr], + :img_src => %w['self' data: www.gravatar.com *.wp.com tile.openstreetmap.org *.tile.openstreetmap.org *.tile.thunderforest.com tileserver.memomaps.de tile.tracestrack.com *.openstreetmap.fr], :manifest_src => %w['self'], :media_src => %w['none'], :object_src => %w['self'], @@ -28,7 +28,7 @@ csp_policy[:img_src] << Settings.trace_image_storage_url if Settings.key?(:trace csp_policy[:report_uri] << Settings.csp_report_url if Settings.key?(:csp_report_url) cookie_policy = { - :httponly => { :only => ["_osm_session"] } + :httponly => { :only => %w[_osm_session _osm_totp_token] } } SecureHeaders::Configuration.default do |config| diff --git a/config/locales/af.yml b/config/locales/af.yml index 1db4fa18d..4a18cd9f2 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -1579,7 +1579,7 @@ af: facebook: title: Meld aan met Facebook alt: Meld aan met ’n Facebook-rekening - windowslive: + microsoft: title: Meld aan met Windows Live alt: Meld aan met ’n Windows Live-rekening github: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 508a21f7d..823be1ad6 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -308,7 +308,7 @@ ar: openid: هوية مفتوحة google: جوجل facebook: فيسبوك - windowslive: مايكروسوفت + microsoft: مايكروسوفت github: جيت هب wikipedia: ويكيبيديا api: @@ -1887,7 +1887,7 @@ ar: facebook: title: تسجيل الدخول باستخدام فيس بوك alt: تسجيل الدخول بحساب فيسبوك - windowslive: + microsoft: title: تسجيل الدخول مع مايكروسوفت alt: تسجيل الدخول بحساب مايكروسوفت github: @@ -2342,6 +2342,7 @@ ar: public_traces_from: آثار جي بي إس عمومية من %{user} description: تصفح أحدث مسارات GPS المرفوعة tagged_with: بالوسم %{tags} + wiki_page: صفحة ويكي upload_trace: حمل أثر my_traces: أثري في GPS destroy: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index bb821a040..bafcf785c 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -1491,7 +1491,7 @@ ast: facebook: title: Anicia sesión con Facebook alt: Anicia sesión con una cuenta de Facebook - windowslive: + microsoft: title: Anicia sesión con Windows Live alt: Anicia sesión con una cuenta de Windows Live github: diff --git a/config/locales/ba.yml b/config/locales/ba.yml index a943ecac5..d68b72030 100644 --- a/config/locales/ba.yml +++ b/config/locales/ba.yml @@ -63,8 +63,8 @@ ba: issue: бурыс language: Тел message: Хәбәр - node: Төйөн - node_tag: Төйөн тегы + node: Төп технологик элемент + node_tag: Төп технологик элемент тамғаһы old_node: Иҫке нөктә old_node_tag: Нөктәнең иҫке тегы old_relation: Иҫке сағыштырма @@ -224,7 +224,7 @@ ba: openid: OpenID google: Google facebook: Facebook - windowslive: Майкрософт + microsoft: Майкрософт github: GitHub wikipedia: Википедия api: diff --git a/config/locales/be.yml b/config/locales/be.yml index 5112e3988..fdf9d6f5a 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1498,7 +1498,7 @@ be: facebook: title: Увайсці праз Facebook alt: Увайсці праз уліковы запіс Facebook - windowslive: + microsoft: title: Увайсці праз Windows live alt: Увайсці праз уліковы запіс Windows Live github: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index e40ff79ff..3c75867fe 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -212,7 +212,7 @@ bg: openid: OpenID google: Google facebook: Facebook - windowslive: Майкрософт + microsoft: Майкрософт github: GitHub wikipedia: Уикипедия api: @@ -1088,8 +1088,8 @@ bg: level2: Държавна граница level4: Държавна граница level5: Граница на региона - level6: Държавна граница - level8: Граница на града + level6: Областна граница + level8: Граница на землище level9: Граница на селото level10: Граница на предградията types: @@ -1440,7 +1440,7 @@ bg: facebook: title: Влизане с Facebook alt: Влизане със сметка на Facebook - windowslive: + microsoft: title: Влизане с Майкрософт alt: Влизане със сметка на Майкрософт github: diff --git a/config/locales/bn.yml b/config/locales/bn.yml index ecc870fef..fdf69b13e 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -238,7 +238,7 @@ bn: openid: ওপেনআইডি google: গুগল facebook: ফেসবুক - windowslive: মাইক্রোসফট + microsoft: মাইক্রোসফট github: গিটহাব wikipedia: উইকিপিডিয়া api: @@ -1554,7 +1554,7 @@ bn: facebook: title: ফেসবুক দিয়ে প্রবেশ alt: ফেসবুক অ্যাকাউন্ট দিয়ে প্রবেশ করুন - windowslive: + microsoft: title: মাইক্রোসফট দিয়ে লগইন করুন alt: একটি মাইক্রোসফট অ্যাকাউন্ট দিয়ে লগইন করুন github: diff --git a/config/locales/br.yml b/config/locales/br.yml index 7ef4346e3..081c526a8 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -256,6 +256,7 @@ br: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -289,8 +290,14 @@ br: delete_account: Dilemel ar gont delete_introduction: 'Gallout a rit dilemel ho kont OpenStreetMap en ur glikañ war an afell a-is. Mar plij, taolit pled ouzh ar munudoù-mañ:' + delete_profile: Titouroù ho profil, en o zouez hoc'h avatar, ho teskrivadur + hag ho chomlec'h a vo lamet. + delete_display_name: Hoc'h anv diskwel a vo lamet hag a c'hallo bezañ perc'hennet + gant kontoù all. retain_caveats: 'Koulskoude, miret e vo un nebeut titouroù diwar ho penn e OpenStreetMap goude ma vefe bet dilamet ho kont:' + retain_edits: Ho kemmoù degaset d'ar gartenn, ma'z eus anezho, a vo dalc'het. + retain_traces: Ar roudoù ho peus enporzhiet, ma'z eus anezho, a vo dalc'het. retain_diary_entries: Hoc'h enmonedoù hag evezhiadennoù en deiz-levr, ma'z eus anezho, a vo miret met kuzhet e vint. retain_changeset_discussions: Ho kaozeadennoù, ma'z eus anezho, a vo miret. @@ -751,6 +758,7 @@ br: public_bath: Kibelldi foran public_bookcase: Levraoueg foran public_building: Savadur foran + ranger_station: Post gward-koad recycling: Lec'h adaozañ restaurant: Preti school: Skol @@ -1842,6 +1850,9 @@ br: no home location: N'hoc'h eus ket ebarzhet lec'hiadur ho kêr. update home location on click: Hizivaat lec'hiadur ho kêr pa glikit war ar gartenn ? + show: Diskouez + delete: Dilemel + undelete: Dizober al lamidigezh update: success: Profil hizivaet. failure: N'haller ket hizivaat ar profil. @@ -1871,7 +1882,7 @@ br: facebook: title: Kevreañ ouzh Facebook alt: Kevreañ ouzh ur gont facebook - windowslive: + microsoft: title: Kevreañ ouzh Microsoft alt: Kevreañ ouzh ur gont Microsoft github: @@ -1896,6 +1907,7 @@ br: support: skor shared: markdown_help: + heading_html: Analizet gant %{kramdown_link} headings: Titloù heading: Titl subheading: Istitl @@ -1970,12 +1982,15 @@ br: 2.0 credit_title_html: Penaos reiñ kred da OpenStreetMap credit_1_html: 'Pa implijit titouroù OpenStreetMap e rankit ober an daou dra-mañ:' + credit_3_attribution_guidelines: Sturiadoù dereiñ credit_4_1_this_copyright_page: ar bajenn gwirioù oberour-mañ attribution_example: alt: Skouer eus penaos deverkañ OpenStreetMap war ur bajenn web title: Skouer deverkadur more_title_html: Titouroù ouzhpenn more_1_1_osmf_licence_page: Pajenn aotre-implijout diazezadur OSM + more_2_1_api_usage_policy: Politikerezh implij an API + more_2_1_tile_usage_policy: Politikerezh implij an teol contributors_title_html: Hor c'henlabourerien contributors_intro_html: 'Miliadoù a hiniennoù a labour ganimp. Ebarzhiñ a reomp ivez roadennoù digor eus ajañsoù kartennañ hag eus mamennoù all, hag @@ -1984,6 +1999,7 @@ br: contributors_at_stadt_wien: Kêr Vienna contributors_at_cc_by: CC-BY contributors_at_land_vorarlberg: Stad Vorarlberg + contributors_at_cc_by_at_with_amendments: CC BY AT gant kemennadennoù contributors_au_australia: Aostralia contributors_au_geoscape_australia: Geoscape Aostralia contributors_au_cc_licence: Creative Commons Attribution 4.0 International @@ -2005,7 +2021,9 @@ br: contributors_nz_linz_data_service: Servij roadennoù LINZ contributors_nz_cc_by: CC BY 4.0 contributors_rs_serbia: Serbia + contributors_rs_rgz: Aotrouniezh Geodezek Serbia contributors_si_slovenia: Slovenia + contributors_si_mkgp: Ministrerezh al Labour-douar, ar C'hoadegi hag ar Boued contributors_es_spain: Spagn contributors_es_ign: IGN contributors_es_cc_by: CC BY 4.0 @@ -2020,6 +2038,7 @@ br: Degas a reomp da soñj da genlabourerien OSM ne zleont morse lakaat roadennoù a zeu eus mammennoù dindan wirioù (da sk. : Google Maps pe kartennoù moullet) hep aotre ezpleg ar re zo ar gwirioù-aozer ganto. + trademarks_1_1_trademark_policy: Politikerezh e-keñver ar merkoù index: js_1: Pe emaoc'h oc'h implijout ur merdeer ha ne skor ket JavaScript, pe hoc'h eus diweredekaet JavaScript. @@ -2051,6 +2070,8 @@ br: map_image: Skeudenn gartenn (diskouez ur gwiskad boutin) embeddable_html: HTML enkorfadus licence: Aotre-implijout + licence_details_html: Roadennoù OpenStreetMap a zo dindan an aotre-implijout + %{odbl_link} (ODbL). too_large: advice: 'Ma c''hwit an ezporzhiadur amañ a-us, implijit unan eus an elfennoù amañ dindan :' @@ -2138,6 +2159,7 @@ br: potlatch: desktop_application_html: Kendalc'hit da ober gant Potlatch dre %{download_link}. download: bellgargañ an arload-burev evit Mac ha Windows + change_preferences: Cheñchit ho penndibaboù amañ any_questions: title: Traoù da c'houlenn ? get_help_here: Kaout skoazell amañ @@ -2234,6 +2256,11 @@ br: whats_on_the_map: title: Petra zo war ar gartenn real_and_current: gwir hag a-vremañ + off_the_map_html: Ar pezh %{doesnt} avat eo ar roadennoù evit notennoù roet + gant an dud, elfennoù istorel pe martezeüs, hag ar roadennoù a zo dindan + gwirioù eilañ. Nemet hag un aotre ispisial ho pefe, na eilit ket kartennoù + enlinenn pe war baper. + doesnt: na gaver ket basic_terms: title: Geriaoueg diazez ar c'hartennaouiñ paragraph_1: E luc'haj dezhañ e-unan en deus OpenStreetMap. Setu amañ un nebeud @@ -2793,7 +2820,9 @@ br: index: title: Notennoù kaset pe addispleget gant %{user} heading: notennoù %{user} - subheading_html: Notennoù kaset pe addispleget gant %{user} + subheading_html: Notennoù %{submitted} pe %{commented} gant %{user} + subheading_submitted: kaset + subheading_commented: skrivet war no_notes: Notenn ebet id: Id creator: Krouer diff --git a/config/locales/ca.yml b/config/locales/ca.yml index fa2a7676d..7347dcee2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -257,6 +257,7 @@ ca: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Viquipèdia api: @@ -272,6 +273,7 @@ ca: reopened_at_by_html: Reactivat %{when} per %{user} rss: title: Notes d'OpenStreetMap + description_all: Una llista de notes denunciades, comentades o tancades description_area: Una llista de notes reportades, comentades o bé tancades a la teva àrea [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Un agregador RSS per a la nota %{id} @@ -1903,7 +1905,7 @@ ca: facebook: title: Inicieu la sessió amb Facebook alt: Inicieu la sessió amb un compte de Facebook - windowslive: + microsoft: title: Inicieu la sessió amb Windows alt: Inicieu de sessió amb un compte de Windows github: @@ -2007,6 +2009,7 @@ ca: OpenStreetMap%{registered_trademark_link} són %{open_data}, sota la llicència %{odc_odbl_link} (ODbL) per la %{osm_foundation_link} (OSMF). introduction_1_open_data: dades obertes + introduction_1_odc_odbl: Llicència de base de dades oberta d'Open Data Commons introduction_1_osm_foundation: Fundació OpenStreetMap introduction_2_html: "Sou lliure de copiar, distribuir, transmetre i adaptar les nostres dades, sempre que especifiqueu que són obra d'OpenStreetMap @@ -2053,10 +2056,14 @@ ca: També incloem dades amb llicència oberta de les agències públiques de cartografia i d''altres fonts, entre elles:' contributors_at_austria: Àustria + contributors_at_stadt_wien: Ciutat de Viena contributors_at_cc_by: CC BY + contributors_at_land_vorarlberg: Estat de Vorarlberg contributors_au_australia: Austràlia contributors_ca_canada: Canadà contributors_fi_finland: Finlàndia + contributors_fr_credit_html: '%{france}: Conté dades d''origen de la «Direction + Générale des Impôts».' contributors_fr_france: França contributors_nl_netherlands: Països Baixos contributors_nz_new_zealand: Nova Zelanda @@ -2064,10 +2071,22 @@ ca: contributors_rs_serbia: Sèrbia contributors_rs_rgz: Autoritat geodèsica sèrbia contributors_si_slovenia: Eslovènia + contributors_si_gu: Autoritat de topografia i cartografia + contributors_si_mkgp: Ministeri d'Agricultura, Forestal i Alimentació + contributors_es_credit_html: |- + %{spain}: conté dades procedents de + l'Institut Geogràfic Nacional d'Espanya (%{ign_link}) i el + Sistema Cartogràfic Nacional (%{scne_link}) amb llicència per a la reutilització sota %{cc_by_link}. contributors_es_spain: Espanya contributors_es_ign: IGN contributors_es_cc_by: CC BY 4.0 + contributors_za_credit_html: '%{south_africa}: conté dades procedents de %{ngi_link}, + drets d''autor reservats de l''estat.' contributors_za_south_africa: Sud-àfrica + contributors_za_ngi: 'Direcció General: Informació Geoespacial Nacional' + contributors_gb_credit_html: |- + %{united_kingdom}: conté dades d'Ordnance Survey © Drets d'autor i base de dades de la Corona + 2010-2023. contributors_gb_united_kingdom: Regne Unit contributors_2_html: Per a més detalls sobre aquestes i altres fonts que s'han usat per ajudar a millorar OpenStreetMap, vegeu %{contributors_page_link} @@ -2124,6 +2143,7 @@ ca: licence: Llicència licence_details_html: Les dades d'OpenStreetMap estan sota la llicència %{odbl_link} (ODbL). + odbl: Llicència de base de dades oberta d'Open Data Commons too_large: advice: 'Si l''exportació anterior falla, proveu-ho amb alguna de les fonts incloses a la llista següent:' @@ -2735,6 +2755,7 @@ ca: remove as friend: Deixa l'amistat add as friend: Afegeix com a amic mapper since: 'Cartografiant des de:' + uid: 'ID d''usuari:' ct status: 'Termes de col·laboració:' ct undecided: No decidit ct declined: Rebutjat @@ -2924,7 +2945,9 @@ ca: index: title: Notes enviades o comentades per %{user} heading: notes de %{user} - subheading_html: Notes enviades o comentades per %{user} + subheading_html: Notes %{submitted} o %{commented} per %{user} + subheading_submitted: enviades + subheading_commented: comentades no_notes: Sense notes id: Id creator: Creador diff --git a/config/locales/ce.yml b/config/locales/ce.yml index baa0c47f2..e6b897d58 100644 --- a/config/locales/ce.yml +++ b/config/locales/ce.yml @@ -760,7 +760,7 @@ ce: passwords: lost_password: title: Пароль меттахӀоттор - heading: Йицъелла пароль? + heading: Йицйелла пароль? email address: 'Электронан поштан адрес:' new password button: Керла пароль кхосса соьга reset_password: @@ -781,7 +781,7 @@ ce: password: 'Пароль:' openid_html: '%{logo} OpenID:' remember: Дагалаца со - lost password link: Йицъелла пароль? + lost password link: Йицйелла пароль? login_button: ЧугӀо register now: ДӀадазло destroy: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f1abd90c3..494e3db25 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -7,6 +7,7 @@ # Author: Bilykralik16 # Author: Chmee2 # Author: Cvanca +# Author: Decamexd # Author: DemonioCZ # Author: DoubyCz # Author: Dvorapa @@ -61,7 +62,7 @@ cs: prompt: Vyberte soubor submit: diary_comment: - create: Odeslat + create: Okomentovat diary_entry: create: Publikovat update: Aktualizovat @@ -70,11 +71,11 @@ cs: message: create: Odeslat client_application: - create: Zaregistrovat + create: Registrovat update: Aktualizovat oauth2_application: - create: Zaregistrovat - update: Uložit + create: Registrovat + update: Aktualizovat redaction: create: Vytvořit redakci update: Uložit redakci @@ -87,7 +88,7 @@ cs: activerecord: errors: messages: - invalid_email_address: nevypadá jako platná e-mailová adresa + invalid_email_address: není platná e-mailová adresa email_address_not_routable: není routovatelná models: acl: Seznam přístupových práv @@ -143,8 +144,8 @@ cs: user: Uživatel title: Nadpis body: Obsah - latitude: Šířka - longitude: Délka + latitude: Zeměpisná šířka + longitude: Zeměpisná délka language_code: Jazyk doorkeeper/application: name: Název @@ -159,8 +160,8 @@ cs: visible: Viditelný name: Název souboru size: Velikost - latitude: Šířka - longitude: Délka + latitude: Zeměpisná šířka + longitude: Zeměpisná délka public: Veřejná description: Popis gpx_file: Nahrát GPX soubor @@ -182,7 +183,7 @@ cs: auth_uid: Autentifikační UID email: E-mail email_confirmation: Potvrzení e-mailu - new_email: nová emailová adresa + new_email: Nová emailová adresa active: Aktivní display_name: Zobrazované jméno description: Popis profilu @@ -302,6 +303,7 @@ cs: reopened_at_by_html: Reaktivováno %{when} od %{user} rss: title: Poznámky OpenStreetMap + description_all: Seznam nahlášených, komentovaných nebo uzavřených poznámek description_area: Seznam poznámek hlášených, komentovaných nebo uzavřených ve vaší oblasti [(%{min_lat}|%{min_lon}) – (%{max_lat}|%{max_lon})] description_item: RSS kanál k poznámce %{id} @@ -1915,6 +1917,9 @@ cs: home location: Poloha domova no home location: Nezadali jste polohu svého bydliÅ¡tě. update home location on click: Upravit pozici domova při kliknutí na mapu? + show: Zobrazit + delete: Smazat + undelete: Vrátit smazání update: success: Profil nastaven. failure: Nepodařilo se nastavit profil. @@ -1943,7 +1948,7 @@ cs: facebook: title: Přihlásit se přes Facebook alt: Přihlášení pomocí účtu na Facebooku - windowslive: + microsoft: title: Přihlásit se přes Microsoft alt: Přihlášení pomocí účtu Microsoft github: @@ -1968,7 +1973,8 @@ cs: support: podporu shared: markdown_help: - heading_html: Analyzováno pomocí %{kramdown_link} + heading_html: Zpracovává se %{kramdown_link} + kramdown: kramdownem headings: Nadpisy heading: Nadpis subheading: Podnadpis @@ -2105,6 +2111,7 @@ cs: contributors_at_austria: Rakousko contributors_at_stadt_wien: města Vídně contributors_at_cc_by: CC BY + contributors_at_cc_by_url: https://creativecommons.org/licenses/by/3.0/at/deed.cs contributors_at_land_vorarlberg: země Vorarlbersko contributors_at_cc_by_at_with_amendments: CC BY AT s dodatky contributors_au_credit_html: '%{australia}: Zahrnuje nebo využívá Administrative @@ -2825,6 +2832,7 @@ cs: remove as friend: Odebrat z přátel add as friend: Přidat do přátel mapper since: 'Účastník projektu od:' + uid: 'ID uživatele:' ct status: 'Podmínky pro přispěvatele:' ct undecided: Nerozhodnuto ct declined: Odmítnuty @@ -3019,7 +3027,9 @@ cs: index: title: Poznámky vytvořené nebo okomentované uživatelem %{user} heading: Poznámky uživatele %{user} - subheading_html: Poznámky vytvořené nebo okomentované uživatelem %{user} + subheading_html: Poznámky %{submitted} nebo %{commented} uživatelem %{user} + subheading_submitted: vytvořené + subheading_commented: okomentované no_notes: Bez poznámek id: ID creator: Autor diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 19dc32de1..205b01f1a 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -43,11 +43,11 @@ cy: errors: messages: invalid_email_address: nid yw'n ymddangos ei fod yn gyfeiriad ebost dilys - email_address_not_routable: nid yw'n cyrchadwy + email_address_not_routable: nid yw'n gyrchadwy models: acl: Rhestr Rheoli Mynediad changeset: Grŵp newid - changeset_tag: Tag Grŵp newidiadau + changeset_tag: Tag Grŵp newid country: Gwlad diary_comment: Nodyn Dyddiadur diary_entry: Cofnod Dyddiadur @@ -82,7 +82,15 @@ cy: attributes: client_application: name: Enw (gofynnol) - allow_write_api: olygu'r map + url: URL y Prif Ap (Gofynnol) + callback_url: URL galw'n ôl + support_url: URL Cefnogaeth + allow_read_prefs: darllen eu dewisiadau defnyddiwr + allow_write_prefs: addasu eu dewisiadau defnyddiwr + allow_write_diary: creu cofnodion dyddiadur, sylwadau a gwneud ffrindiau + allow_write_api: golygu'r map + allow_read_gpx: darllen eu dargopiadau GPS + allow_write_gpx: uwchlwytho dargopiadau GPS allow_write_notes: addasu nodiadau diary_comment: body: Corff @@ -95,6 +103,8 @@ cy: language_code: Iaith doorkeeper/application: name: Enw + redirect_uri: Ailgyfeirio URIs + confidential: Ap cyfrinachol? scopes: Caniatâd friend: user: Defnyddiwr @@ -121,9 +131,12 @@ cy: description: Disgrifiad report: category: Dewiswch reswm dros eich adroddiad + details: Rhowch mwy o fanylion am y broblem (gofynnol). user: + auth_provider: Darparwr Ap + auth_uid: UID Dilysu email: E-bost - email_confirmation: Cadarnhau E-bost + email_confirmation: Cadarnhad e-bost new_email: Cyfeiriad e-bost newydd active: Gweithredol display_name: Enw defnyddiwr @@ -238,6 +251,7 @@ cy: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wicipedia api: @@ -297,6 +311,8 @@ cy: cyhoeddus all olygu data map. find_out_why: dyma pam make_edits_public_button: Gwneud fy holl olygiadau yn gyhoeddus + update: + success: Diweddarwyd gwybodaeth defnyddiwr yn llwyddiannus. destroy: success: Cyfrif wedi'i ddileu. browse: @@ -309,7 +325,7 @@ cy: deleted_ago_by_html: Wedi dileu %{time_ago} gan %{user} edited_ago_by_html: Golgwyd %{time_ago} gan %{user} version: Fersiwn - in_changeset: Grŵp Newid + in_changeset: Grŵp newid anonymous: dienw no_comment: (dim sylw) part_of: Rhan o @@ -327,6 +343,8 @@ cy: relation: Perthynas %{count} relation_paginated: Perthynas (%{x}-%{y} o %{count}) comment: Sylwadau (%{count}) + hidden_comment_by_html: Sylw cudd gan %{user} %{time_ago} + comment_by_html: Sylw gan %{user} %{time_ago} changesetxml: XML grŵp newid osmchangexml: XML osmChange feed: @@ -343,6 +361,13 @@ cy: title_html: 'Llwybr: %{name}' history_title_html: 'Hanes Llwybr: %{name}' nodes: Nodau + nodes_count: + zero: '%{count} nod' + one: '%{count} nod' + two: '%{count} nod' + few: '%{count} nod' + many: '%{count} nod' + other: '%{count} nod' also_part_of_html: one: rhan o'r ffordd %{related_ways} other: rhan o'r ffyrdd %{related_ways} @@ -350,6 +375,13 @@ cy: title_html: 'Perthynas: %{name}' history_title_html: 'Hanes y Perthynas: %{name}' members: Aelodau + members_count: + zero: '%{count} aelod' + one: '%{count} aelod' + two: '%{count} aelod' + few: '%{count} aelod' + many: '%{count} aelod' + other: '%{count} aelod' relation_member: entry_role_html: '%{type} %{name} fel %{role}' type: @@ -399,6 +431,7 @@ cy: wikipedia_link: Erthygl %{page} ar Wicipedia wikimedia_commons_link: Eitem %{page} ar Gomin Wicimedia telephone_link: Galw %{phone_number} + colour_preview: Rhagolwg lliw %{colour_value} email_link: E-bost %{email} query: title: Nodweddion Ymholiad @@ -500,6 +533,7 @@ cy: arni'n anghywir. diary_entry: posted_by_html: Postiwyd gan %{link_user} ar %{created} yn %{language_link} + updated_at_html: Diweddarwyd ddiwethaf ar %{updated}. comment_link: Sylw ar y cofnod hwn reply_link: Anfon neges at yr awdur comment_count: @@ -512,6 +546,7 @@ cy: no_comments: Dim sylwadau edit_link: Golygu'r cofnod hwn hide_link: Cuddio'r cofnod hwn + unhide_link: Datguddio'r cofnod hwn confirm: Cadarnhau report: Adrodd y cofnod hwn diary_comment: @@ -536,6 +571,9 @@ cy: title: Cofnodion dyddiadur OpenStreetMap description: Cofnodion dyddiadur diweddar gan ddefnyddwyr OpenStreetMap comments: + heading: Sylwadau Dyddiadur %{user} + subheading_html: Sylwadau Dyddiadur wedi'u hychwanegu gan %{user} + no_comments: Dim sylwadau dyddiadur post: Post when: Pryd comment: Sylw @@ -575,9 +613,11 @@ cy: drag_lift: Cadair lusg gondola: Lifft Gondola magic_carpet: Lifft Carped Hud + platter: Lifft Plater pylon: Peilon station: Gorsaf Awyr t-bar: Lifft T-Bar + "yes": Awyrffordd aeroway: aerodrome: Maesawyr airstrip: Llain Codi @@ -586,8 +626,10 @@ cy: hangar: Hangar helipad: Pad Hofrennydd holding_position: Man aros + navigationaid: Cymorth Cyfeiriadu Hedfan parking_position: Lle Parcio runway: Rhedfa Awyr + taxilane: Safle Tacsis taxiway: Safle tacsi terminal: Terfynell Maes Awyr windsock: Hosan wynt @@ -649,7 +691,9 @@ cy: loading_dock: Doc Llwytho love_hotel: Gwesty Cariad marketplace: Marchnad + mobile_money_agent: Asiant Arian Symudol monastery: Mynachdy + money_transfer: Trosglwyddo Arian motorcycle_parking: Man Parcio Beiciau Modur music_school: Ysgol Gerddoriaeth nightclub: Clwb Nôs @@ -657,6 +701,7 @@ cy: parking: Parcio parking_entrance: Mynedfa Man Parcio parking_space: Man Parcio + payment_terminal: Terfynell Talu pharmacy: Fferyllfa place_of_worship: Man addoli police: Heddlu @@ -664,9 +709,13 @@ cy: post_office: Swyddfa Bost prison: Carchar pub: Tafarn + public_bath: Bath Cyhoeddus + public_bookcase: Silff Lyfrau Gyhoeddus public_building: Adeilad Cyhoeddus + ranger_station: Gorsaf Ceidwad recycling: Pwynt Ailgylchu restaurant: Bwyty + sanitary_dump_station: Gorsaf Dympio Glanweithdra school: Ysgol shelter: Cysgod shower: Cawod @@ -679,14 +728,21 @@ cy: theatre: Theatr toilets: Toiledau townhall: Neuadd y Dref + training: Cyfleuster Hyfforddi university: Prifysgol + vehicle_inspection: Archwilio Cerbydau vending_machine: Peiriant Gwerthu veterinary: Milfeddygfa village_hall: Neuadd Bentref waste_basket: Bin Sbwriel waste_disposal: Gwaredu Sbwriel + waste_dump_site: Safle Dympio Gwastraff + watering_place: Lle Dyfrhau water_point: Cyflenwad Dŵr + weighbridge: Pont Bwyso + "yes": Amwynder boundary: + aboriginal_lands: Tiroedd Brodorol administrative: Ffin Gweinyddol census: Ffin Cyfrifiad national_park: Parc Cenedlaethol @@ -695,6 +751,7 @@ cy: "yes": Ffin bridge: aqueduct: Dyfrbont + boardwalk: Rhodfa Estyll suspension: Pont Grog swing: Pont Droelli viaduct: Pont Trenau @@ -710,6 +767,8 @@ cy: civic: Adeilad Dinesig college: Adeilad Coleg commercial: Adeilad Masnachol + construction: Adeilad yn cael ei Adeiladu + dormitory: Dorm farm: Ffermdy garage: Garej garages: Garejis @@ -1019,6 +1078,7 @@ cy: lawyer: Cyfreithiwr newspaper: Swyddfa Bapur Newydd ngo: Swyddfa NGO + notary: Notari religion: Swyddfa Grefyddol research: Swyddfa Ymchwil tax_advisor: Cynghorydd Treth @@ -1083,9 +1143,12 @@ cy: alcohol: Siop Drwyddedig antiques: Hynafolion art: Siop Gelf + baby_goods: Nwyddau Babanod bag: Siop Bagiau bakery: Becws + bathroom_furnishing: Dodrefn Ystafell Ymolchi beauty: Siop Harddwch + bed: Cynhyrchion Dillad Gwely beverages: Siop Ddiodau bicycle: Siop Feiciau bookmaker: Llyfrwerthwr @@ -1107,6 +1170,9 @@ cy: convenience: Siop Bob-peth copyshop: Siop Argraffu cosmetics: Siop Golur + craft: Storfa Cynnyrch Crefft + curtain: Siop Lenni + dairy: Siop Laeth deli: Deli department_store: Siop Adrannol discount: Siop Ddisgownt @@ -1116,6 +1182,7 @@ cy: electronics: Siop Electroneg erotic: Siop Erotig estate_agent: Gwerthwr Tai + fabric: Siop Ddeunydd farm: Siop Fferm fashion: Siop Ffasiwn florist: Siop Flodau @@ -1151,12 +1218,16 @@ cy: paint: Siop Baent pet: Siop Anifeiliaid Anwes photo: Siop Luniau + seafood: Bwyd Môr second_hand: Siop ail-law + sewing: Siop Gwnïo shoes: Siop Esgidiau sports: Siop Chwaraeon stationery: Siop Offer Swyddfa supermarket: Archfarchnad tailor: Teiliwr + tattoo: Siop Tatŵ + tea: Siop De ticket: Siop Docynau tobacco: Siop Dybaco toys: Siop Degannau @@ -1165,6 +1236,7 @@ cy: vacant: Siop Wag video: Siop Fideos video_games: Siop Gemau Fideo + wholesale: Siop Gyfanwerthu wine: Siop Win "yes": Siop tourism: @@ -1231,7 +1303,9 @@ cy: title: Materion select_status: Dewis statws select_type: Dewis math + not_updated: Heb ei Ddiweddaru search: Chwilio + search_guidance: 'Chwilio Gwallau:' user_not_found: Nid yw'r defnyddiwr yn bodoli issues_not_found: Ni chanfuwyd unrhyw faterion o'r fath status: Statws @@ -1252,27 +1326,50 @@ cy: open: Agor resolved: Datruswyd show: + title: '%{status} Gwall #%{issue_id}' no_reports: Dim adroddiadau report_created_at: Adroddwyd gyntaf am %{datetime} last_resolved_at: Datryswyd ddiwethaf am %{datetime} resolve: Datrys ignore: Anwybyddu reopen: Ailagor + read_reports: Darllen Adroddiadau + new_reports: Adroddiadau Newydd + reports: + reported_by_html: Adroddwyd fel %{category} gan %{user} ar %{updated_at} helper: reportable_title: + diary_comment: '%{entry_title}, sylw #%{comment_id}' note: 'Nodyn #%{note_id}' reports: new: title_html: Adrodd %{link} + missing_params: Ni ellir creu adroddiad newydd categories: diary_entry: + spam_label: Mae'r cofnod dyddiadur hwn yn / yn cynnwys sbam + offensive_label: Mae'r cofnod dyddiadur hwn yn anweddus / sarhaus + threat_label: Mae'r cofnod dyddiadur hwn yn cynnwys bygythiad other_label: Arall diary_comment: + spam_label: Mae'r sylw dyddiadur hwn yn/yn cynnwys sbam + offensive_label: Mae'r sylw dyddiadur hwn yn anweddus/sarhaus + threat_label: Mae'r sylw dyddiadur hwn yn cynnwys bygythiad other_label: Arall user: + spam_label: Mae'r proffil defnyddiwr hwn yn / yn cynnwys sbam + offensive_label: Mae'r proffil defnyddiwr hwn yn anweddus / sarhaus + threat_label: Mae'r proffil defnyddiwr hwn yn cynnwys bygythiad + vandal_label: Mae'r defnyddiwr hwn yn fandal other_label: Arall note: + spam_label: Mae'r nodyn hwn yn sbam + personal_label: Mae'r nodyn hwn yn cynnwys data personol + abusive_label: Mae'r nodyn hwn yn sarhaus other_label: Arall + create: + successful_report: Anfonwyd eich adroddiad yn llwyddiannus + provide_details: Rhowch y manylion gofynnol os gwelwch yn dda layouts: logo: alt_text: Logo OpenStreetMap @@ -1334,14 +1431,17 @@ cy: gpx_success: hi: Helo %{to_user}, signup_confirm: + subject: '[OpenStreetMap] Croeso i OpenStreetMap' greeting: Shwmae! created: Mae rhywun (chi gobeithio!) newydd greu cyfrif yn %{site_url}. email_confirm: + subject: '[OpenStreetMap] Cadarnhewch eich cyfeiriad e-bost' greeting: Helo, hopefully_you: Hoffai rhywun (chi, gobeithio) newid eu cyfeiriad e-bost ar %{server_url} i %{new_address}. click_the_link: Os mai chi yw hwn, cliciwch ar y ddolen isod i gadarnhau'r newid. lost_password: + subject: '[OpenStreetMap] Cais ailosod cyfrinair' greeting: Helo, note_comment_notification: anonymous: Defnyddiwr dienw @@ -1358,6 +1458,8 @@ cy: heading: Gwiriwch eich e-byst! button: Cadarnhau click_here: cliciwch yma + confirm_resend: + failure: Heb ganfod y defnyddiwr %{name}. confirm_email: heading: Cadarnhau newid cyfeiriad e-bost button: Cadarnhau @@ -1367,7 +1469,22 @@ cy: inbox: title: Mewnflwch my_inbox: Fy Mewnflwch + my_outbox: Fy Mlwch Allan messages: Mae gennych %{new_messages} a %{old_messages} + new_messages: + zero: '%{count} neges newydd' + one: '%{count} neges newydd' + two: '%{count} new messages' + few: '%{count} neges newydd' + many: '%{count} neges newydd' + other: '%{count} neges newydd' + old_messages: + zero: '%{count} hen neges' + one: '%{count} hen neges' + two: '%{count} hen neges' + few: '%{count} hen neges' + many: '%{count} hen neges' + other: '%{count} hen neges' from: Gan subject: Pwnc date: Dyddiad @@ -1437,6 +1554,8 @@ cy: cancel: Canslo update: failure: Ni ellir diweddaru'r dewisiadau. + update_success_flash: + message: Diweddarwyd eich dewisiadau. profiles: edit: title: Golygu proffil @@ -1453,6 +1572,12 @@ cy: image size hint: (delweddau sgwâr o leiaf 100x100 yw'r gorau) home location: Lleoliad Cartref no home location: Nid ydych wedi gosod eich lleoliad cartref. + show: Dangos + delete: Dileu + undelete: Dadwneud dileu + update: + success: Proffil wedi'i ddiweddaru. + failure: Ni ellir diweddaru'r proffil. sessions: new: title: Mewngofnodi @@ -1476,7 +1601,7 @@ cy: facebook: title: Mewngofnodi â Facebook alt: Mewngofnodi â Chyfrif Facebook - windowslive: + microsoft: title: Mewngofnodi gyda Microsoft alt: Mewngofnodi gyda Chyfrif Microsoft github: @@ -1502,6 +1627,8 @@ cy: headings: Penawdau heading: Pennawd subheading: Is-bennawd + first: Eitem gyntaf + second: Ail eitem link: Dolen text: Testun image: Delwedd @@ -1515,14 +1642,18 @@ cy: next: Nesaf heading_html: '%{copyright}Cyfranwyr %{br} OpenStreetMap' local_knowledge_title: Gwybodaeth Leol + community_driven_title: Gwaith y Gymuned community_driven_osm_blog: Blog OpenStreetMap community_driven_user_diaries: dyddiaduron defnyddwyr community_driven_community_blogs: blogiau cymunedol community_driven_osm_foundation: OSM Foundation open_data_title: Data Agored open_data_open_data: data agored + open_data_copyright_license: Tudalen Hawlfraint a Thrwydded legal_title: Cyfreithiol + legal_1_1_openstreetmap_foundation: OpenStreetMap Foundation legal_1_1_terms_of_use: Telerau Gwasanaeth + legal_1_1_aup: Polisïau Defnydd Derbyniol legal_1_1_privacy_policy: Polisi Preifatrwydd legal_2_1_contact_the_osmf: cysylltwch â'r OSMF partners_title: Partneriaid @@ -1539,12 +1670,34 @@ cy: legal_babble: title_html: Hawlfraint a Thrwydded introduction_1_open_data: data agored + introduction_1_osm_foundation: OpenStreetMap Foundation + introduction_2_html: |- + Rydych yn rhydd i gopïo, dosbarthu, trosglwyddo ac addasu ein data, cyn belled â'ch bod yn cydnabod OpenStreetMap a'i + gyfranwyr. Os ydych chi'n newid neu'n adeiladu ar ein data, dim ond o dan yr un drwydded y cewch chi ddosbarthu eich canlyniad. Mae'r %{legal_code_link} llawn yn esbonio eich hawliau a'ch cyfrifoldebau. introduction_2_legal_code: cod cyfreithiol + introduction_3_html: Mae ein dogfennaeth wedi'i thrwyddedu o dan drwydded + %{creative_commons_link} (CC BY-SA 2.0). + introduction_3_creative_commons: Creative Commons Attribution-ShareAlike 2.0 credit_title_html: Sut i gydnabod OpenStreetMap + credit_1_html: 'Pan fyddwch yn defnyddio data OpenStreetMap, mae rhaid i chi + wneud y ddau beth canlynol:' + credit_2_1: Rhoi cydnabyddiaeth i OpenStreetMap trwy arddangos ein hysbysiad + hawlfraint. + credit_2_2: Gwnewch yn glir bod y data ar gael o dan y Drwydded Cronfa Ddata + Agored. + credit_3_html: |- + Ar gyfer yr hysbysiad hawlfraint, mae gennym ofynion gwahanol o ran sut y dylid ei arddangos, yn dibynnu ar sut rydych yn defnyddio ein data. Er enghraifft, mae rheolau + gwahanol yn berthnasol ar sut i ddangos yr hysbysiad hawlfraint yn dibynnu a ydych wedi creu map pori, map printiedig neu ddelwedd statig. Ceir manylion llawn am y gofynion yn y %{attribution_guidelines_link}. + credit_3_attribution_guidelines: Canllawiau Priodoli credit_4_1_this_copyright_page: y dudalen hawlfraint hon attribution_example: + alt: Enghraifft o sut i briodoli OpenStreetMap ar dudalen we title: Enghraifft o gydnabyddiaeth more_title_html: Darganfod rhagor + more_1_1_osmf_licence_page: Tudalen Trwydded OSMF + more_2_1_api_usage_policy: Polisi Defnydd API + more_2_1_tile_usage_policy: Polisi Defnydd Teils + more_2_1_nominatim_usage_policy: Polisi Defnydd Nominatim contributors_title_html: Ein cyfranwyr contributors_at_austria: Awstria contributors_at_stadt_wien: Stadt Wien @@ -1559,19 +1712,24 @@ cy: contributors_fr_france: Ffrainc contributors_nl_netherlands: Iseldiroedd contributors_nz_new_zealand: Seland Newydd + contributors_nz_linz_data_service: Gwasanaeth Data LINZ contributors_nz_cc_by: CC BY 4.0 contributors_rs_serbia: Serbia contributors_si_slovenia: Slofenia + contributors_si_mkgp: Gweinyddiaeth Amaethyddiaeth, Coedwigaeth a Bwyd contributors_es_spain: Sbaen contributors_es_ign: IGN contributors_es_cc_by: CC BY 4.0 contributors_za_south_africa: De Affrica + contributors_gb_credit_html: '%{united_kingdom}: Yn cynnwys data Arolwg Ordnans + © Hawlfraint y Goron a chronfa ddata 2010-2023.' contributors_gb_united_kingdom: Deyrnas Unedig contributors_2_contributors_page: Tudalen gyfranwyr infringement_title_html: Torri hawlfraint trademarks_title: Nodau Masnach trademarks_1_1_trademark_policy: Polisi Nod Masnach index: + js_2: Mae OpenStreetMap yn defnyddio JavaScript ar gyfer ei fap llithrig. permalink: Dolen barhaol shortlink: Dolen fer createnote: Ychwanegu nodyn @@ -1594,6 +1752,8 @@ cy: advice: 'Os yw''r allforio''n methu, ystyriwch un o''r canlynol:' planet: title: Planet OSM + overpass: + title: Overpass API other: title: Ffynonellau eraill description: Ffynonellau ychwanegol a nodir ar wici OpenStreetMap @@ -1637,6 +1797,7 @@ cy: title: switch2osm wiki: title: Wici OpenStreetMap + description: Archwiliwch y wici am ddogfennau manwl OpenStreetMap. any_questions: title: Unrhyw gwestiynau? sidebar: @@ -1723,10 +1884,30 @@ cy: toilets: Toiledau welcome: title: Croeso! + introduction: Croeso i OpenStreetMap, map y byd rhydd ac agored. Nawr eich bod + wedi cofrestru, rydych chi'n barod i ddechrau mapio. Dyma ganllaw gyflym gyda'r + hyn pwysicaf i wybod cyn ichi ddechrau arni. whats_on_the_map: title: Beth sydd ar y Map + on_the_map_html: Mae OpenStreetMap yn addas i fapio pethau sy'n %{real_and_current} + - mae'n cynnwys miliynau o adeiladau, strydoedd, a manylion eraill am lefydd. + Gallwch chi fapio unrhyw beth sydd o ddiddordeb ichi. + real_and_current: bodoli'n go iawn ac yn gyfoes + off_the_map_html: '%{doesnt} cynnwys barn defnyddwyr fel sgoriau, nodweddion + hanesyddol neu dybiedig, a data o ffynonellau o dan hawlfraint. Oni bai + bod gennych chi ganiatâd arbennig, peidiwch â chopio o fapiau ar-lein neu + ar bapur.' + doesnt: Nad yw'n basic_terms: title: Termau syml mapio + paragraph_1: Mae gan OpenStreetMap rywfaint o dafodiaith ei hun. Dyma ychydig + o eiriau allweddol a fydd yn ddefnyddiol ichi. + an_editor_html: Mae %{editor} yn rhaglen neu wefan y gallwch chi ei defnyddio + i olygu'r map. + a_node_html: Mae %{node} yn bwynt ar y map, fel bwyty neu goeden. + a_way_html: Mae %{way} yn llinell neu ardal fel ffordd, nant, llyn neu adeilad. + a_tag_html: Mae %{tag} yn cynnwys data am nod neu ffordd, fel enw bwyty neu + derfyn cyflymder ffordd. editor: golygydd node: nod way: llwybr @@ -1753,6 +1934,7 @@ cy: trace_optionals: tags: Tagiau show: + pending: I DDOD filename: 'Enw ffeil:' download: lawrlwytho uploaded: 'Uwchlwythwyd:' @@ -1766,6 +1948,7 @@ cy: none: Dim visibility: 'Gwelededd:' trace: + pending: I DDOD count_points: zero: '%{count} pwynt' one: '%{count} pwynt' @@ -1810,6 +1993,9 @@ cy: invalid: Nid yw'r tocyn awdurdodiad yn ddilys. revoke: flash: Rydych wedi diddymu'r tocyn ar gyfer %{application}. + scopes: + write_api: Golygu'r map + write_notes: Addasu nodiadau oauth_clients: new: title: Cofrestru rhaglen newydd @@ -1836,6 +2022,7 @@ cy: delete: Dileu client_id: ID Cleient client_secret: Cyfrinach Cleient + permissions: Caniatadau oauth2_authorizations: new: authorize: Awdurdodi @@ -1844,6 +2031,8 @@ cy: new: title: Cofrestru support: cymorth + about: + header: Rhydd ac agored display name description: Eich enw defnyddiwr cyhoeddus. Gallwch newid hyn yn nes ymlaen yn eich dewisiadau. continue: Cofrestru @@ -1852,16 +2041,21 @@ cy: terms: title: Telerau heading: Telerau + heading_ct: Telerau Cyfranwyr consider_pd_why: beth yw hwn? + informal_translations: cyfieithiadau anffurfiol continue: Parhau decline: Gwrthod legale_names: france: Ffrainc italy: Yr Eidal rest_of_world: Gweddill y byd + terms_declined_flash: + terms_declined_link: y dudalen wici hon no_such_user: title: Dim defnyddiwr o'r fath heading: Nid yw'r defnyddiwr %{user} yn bodoli. + deleted: wedi'i ddileu show: my diary: Fy Nyddiadur my edits: Fy Ngolygiadau @@ -1871,6 +2065,8 @@ cy: my profile: Fy Mhroffil my settings: Fy Ngosodiadau my comments: Fy Sylwadau + my_preferences: Fy Newisiadau + my_dashboard: Fy Nashfwrdd blocks on me: Blociau arnaf i blocks by me: Blociau gennyf i edit_profile: Golygu Proffil @@ -1882,6 +2078,7 @@ cy: remove as friend: Dad-ffrindio add as friend: Ychwanegu ffrind mapper since: 'Yn mapio ers:' + uid: 'ID Defnyddiwr:' ct status: 'Telerau cyfrannwr:' ct undecided: Heb Benderfynu ct declined: Wedi Gwrthod @@ -1911,17 +2108,67 @@ cy: heading: Defnyddwyr suspended: support: cymorth + auth_failure: + no_authorization_code: Dim cod awdurdodi user_role: grant: confirm: Cadarnhau revoke: confirm: Cadarnhau user_blocks: + not_found: + back: Nôl i'r mynegai + new: + title: Wrthi'n creu bloc ar %{name} + heading_html: Wrthi'n creu bloc ar %{name} + edit: + title: Wrthi'n golygu bloc ar %{name} + heading_html: Wrthi'n golygu bloc ar %{name} helper: time_future_html: Yn dod i ben mewn %{time}. time_past_html: Wedi dod i ben %{time} yn ôl. + block_duration: + hours: + zero: '%{count} awr' + one: '%{count} awr' + two: '%{count} awr' + few: '%{count} awr' + many: '%{count} awr' + other: '%{count} hours' + days: + zero: '%{count} diwrnod' + one: '%{count} diwrnod' + two: '%{count} ddiwrnod' + few: '%{count} diwrnod' + many: '%{count} diwrnod' + other: '%{count} diwrnod' + weeks: + zero: '%{count} wythnos' + one: '%{count} wythnos' + two: '%{count} wythnos' + few: '%{count} wythnos' + many: '%{count} wythnos' + other: '%{count} wythnos' + months: + zero: '%{count} mis' + one: '%{count} mis' + two: '%{count} fis' + few: '%{count} mis' + many: '%{count} mis' + other: '%{count} mis' + years: + zero: '%{count} blynedd' + one: '%{count} blynedd' + two: '%{count} flynedd' + few: '%{count} blynedd' + many: '%{count} blynedd' + other: '%{count} blynedd' blocks_on: title: Blociau ar %{name} + heading_html: Rhestr Blociau ar %{name} + blocks_by: + title: Blociau gan %{name} + heading_html: Rhestr Blociau gan %{name} show: created: 'Crëwyd:' duration: 'Cyfnod:' @@ -1933,13 +2180,18 @@ cy: show: Dangos edit: Golygu blocks: + creator_name: Crëwr + reason: Rheswm dros flocio status: Statws showing_page: Tudalen %{page} next: Nesaf » previous: « Blaenorol notes: index: + heading: Nodiadau %{user} + no_notes: Dim nodiadau id: Id + creator: Crëwr description: Disgrifiad created_at: Crëwyd am last_changed: Newidiwyd ddiwethaf @@ -1953,7 +2205,12 @@ cy: event_opened_by_anonymous_html: Crëwyd gan berson ddienw %{time_ago} event_commented_by_html: Sylw gan %{user} %{time_ago} event_commented_by_anonymous_html: Sylw gan berson ddienw %{time_ago} + event_closed_by_html: Datryswyd gan %{user} %{time_ago} + event_closed_by_anonymous_html: Datryswyd gan berson ddienw %{time_ago} + event_hidden_by_html: Cuddiwyd gan %{user} %{time_ago} report: riportio'r nodyn hwn + anonymous_warning: Mae'r nodyn hwn yn cynnwys sylwadau gan ddefnyddwyr dienw + y dylid eu gwirio'n annibynnol. hide: Cuddio resolve: Datrys reactivate: Ail-ysgogi @@ -1977,6 +2234,7 @@ cy: scale: 'Graddfa:' download: Lawrlwytho short_url: URL Byr + include_marker: Cynnwys marciwr key: title: Allwedd Map tooltip: Allwedd Map @@ -1996,6 +2254,8 @@ cy: notes: Sylwadau Map data: Data Map title: Haenau + make_a_donation: Rhoi arian + website_and_api_terms: Telerau'r gwefan ac API site: edit_tooltip: Golygu'r map edit_disabled_tooltip: Chwyddwch mewn i olygu'r map @@ -2024,6 +2284,11 @@ cy: distance_m: '%{distance}m' distance_km: '%{distance}km' instructions: + continue_without_exit: Parhau ar %{name} + slight_right_without_exit: Ychydig i'r dde i %{name} + offramp_right: Cymerwch y ramp ar y dde + offramp_right_with_exit: Cymerwch allanfa %{exit} ar y dde + offramp_right_with_exit_name: Cymerwch allanfa %{exit} ar y dde i %{name} exit_counts: first: 1af second: 2il diff --git a/config/locales/da.yml b/config/locales/da.yml index 502577aff..426d6a7e6 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1884,7 +1884,7 @@ da: facebook: title: Log pÃ¥ med Facebook alt: Log pÃ¥ med en Facebook-konto - windowslive: + microsoft: title: Log pÃ¥ med Windows Live alt: Log pÃ¥ med en Windows Live-konto github: diff --git a/config/locales/de.yml b/config/locales/de.yml index 0990c3d6d..8eff4d806 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -316,6 +316,7 @@ de: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -331,6 +332,8 @@ de: reopened_at_by_html: '%{when} von %{user} reaktiviert' rss: title: OpenStreetMap-Hinweise + description_all: Eine Liste der gemeldeten, kommentierten oder geschlossenen + Notizen description_area: Übersicht der gemeldeten, kommentierten oder geschlossen Hinweise im Bereich [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]. description_item: Ein RSS-Feed für Hinweis %{id} @@ -1946,6 +1949,9 @@ de: home location: Heimatstandort no home location: Du hast noch keinen Standort angegeben. update home location on click: Standort beim Klick auf die Karte aktualisieren + show: Anzeigen + delete: Löschen + undelete: Löschen rückgängig machen update: success: Profil aktualisiert. failure: Profil konnte nicht aktualisiert werden. @@ -1974,7 +1980,7 @@ de: facebook: title: Mit Facebook anmelden alt: Mit einem Facebook-Konto anmelden - windowslive: + microsoft: title: Mit Microsoft anmelden alt: Mit einem Microsoft-Konto anmelden github: @@ -2448,6 +2454,7 @@ de: fehlt, dich einzuarbeiten, wie man in OSM Daten editiert, so gib einfach einen Hinweis/melde einen Fehler, dann kann sich ein anderer Mapper darum kümmern. + the_map: die Karte communities: title: Gemeinschaften lede_text: |- @@ -2459,13 +2466,14 @@ de: about_text: Lokale Verbände sind Gruppen auf Landesebene oder Regionsebene, die den formellen Schritt unternommen haben, einen gemeinnützigen Rechtskörper zu gründen. Sie repräsentieren die Karte und Kartographen der Region, wenn - Sie mit der örtlichen Regierung, Wirtschaft oder den Medien zu tun haben. + sie mit der örtlichen Regierung, Wirtschaft oder den Medien zu tun haben. Sie haben auch eine Zusammengehörigkeit mit der OpenStreetMap Foundation (OSMF) gebildet, was ihnen eine Verbindung zu der Rechts- und Urheberrechtsabteilung gibt. list_text: 'Folgende Gemeinschaften sind offiziell als lokale Verbände eingetragen:' other_groups: title: Andere Gruppen + communities_wiki: Community-Wiki-Seite traces: visibility: private: Privat (werden nur als anonyme, unsortierte Punkte ohne Zeitangaben @@ -2552,6 +2560,7 @@ de: empty_title: Noch nichts vorhanden empty_upload_html: '%{upload_link} oder erfahren Sie mehr über GPS-Tracks auf der %{wiki_link}.' + upload_new: Einen neuen Track hochladen wiki_page: Wiki-Seite upload_trace: Lade einen Track hoch all_traces: Alle Tracks @@ -2820,6 +2829,7 @@ de: remove as friend: Freund entfernen add as friend: Freund hinzufügen mapper since: 'Mapper seit:' + uid: 'Benutzer-ID:' ct status: 'Bedingungen für Mitwirkende:' ct undecided: Unentschlossen ct declined: Abgelehnt @@ -3020,7 +3030,9 @@ de: index: title: Hinweise/Fehler erstellt oder kommentiert von %{user} heading: Hinweise von %{user} - subheading_html: Hinweise/Fehler erstellt oder kommentiert von %{user} + subheading_html: Hinweise/Fehler %{submitted} oder %{commented} von %{user} + subheading_submitted: eingereicht + subheading_commented: kommentiert no_notes: Keine Hinweise id: ID creator: Ersteller diff --git a/config/locales/el.yml b/config/locales/el.yml index 4d9b62c59..7b2c93fde 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -172,7 +172,7 @@ el: user: auth_provider: Πάροχος αυθεντικοποίησης auth_uid: UID αυθεντικοποίησης - email: Ηλεκτρονικό ταχυδρομείο + email: Διεύθυνση ηλεκτρονικού ταχυδρομείου email_confirmation: Επιβεβαίωση διεύθυνσης email new_email: Νέα διεύθυνση email active: Ενεργό @@ -254,6 +254,7 @@ el: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Βικιπαίδεια api: @@ -269,6 +270,7 @@ el: reopened_at_by_html: Επανενεργοποιήθηκε %{when} από τον %{user} rss: title: Σημειώσεις OpenStreetMap + description_all: Μια λίστα με αναφερόμενες, σχολιασμένες ή κλειστές σημειώσεις description_area: Μια λίστα με σημειώσεις, που αναφέρθηκαν, σχολιάστηκαν ή επιλύθηκαν στην περιοχή σας [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Μια τροφοδοσία rss για τη σημείωση %{id} @@ -335,6 +337,10 @@ el: delete_account: Διαγραφή λογαριασμού... go_public: heading: Δημόσια επεξεργασία + currently_not_public: Προς το παρόν, οι αλλαγές σας είναι ανώνυμες και οι άνθρωποι + δεν μπορούν να σας στείλουν μηνύματα ή να δουν την τοποθεσία σας. Για να δείξετε + τι επεξεργαστήκατε και να επιτρέψετε στους άλλους να επικοινωνήσουν μαζί σας + μέσω του ιστότοπου, κάντε κλικ στο παρακάτω κουμπί. only_public_can_edit: Από την αλλαγή του API 0.6, μόνο οι δημόσιοι χρήστες μπορούν να επεξεργάζονται τα δεδομένα χάρτη. find_out_why: μάθετε γιατί @@ -577,9 +583,9 @@ el: comment_link: Σχολιάστε την καταχώρηση reply_link: Αποστολή μηνύματος στον συγγραφέα comment_count: - zero: Χωρίς σχόλια one: '%{count} σχόλιο' other: '%{count} σχόλια' + no_comments: Κανένα σχόλιο edit_link: Επεξεργασία καταχώρησης hide_link: Απόκρυψη καταχώρησης unhide_link: Επανεμφάνιση καταχώρησης @@ -941,7 +947,7 @@ el: street_lamp: Λάμπα δρόμου tertiary: Τριτεύων δρόμος tertiary_link: Τριτεύων δρόμος - track: Χωματόδρομος + track: Αγροτικός / Δασικός δρόμος traffic_mirror: Καθρέφτης κυκλοφορίας traffic_signals: Σήματα κυκλοφορίας trailhead: Άκρη μονοπατιού @@ -1463,9 +1469,9 @@ el: show: title: '%{status} Ζήτημα #%{issue_id}' reports: - zero: Καμία αναφορά - one: 1 αναφορά + one: '%{count} αναφορά' other: '%{count} αναφορές' + no_reports: Καμία αναφορά report_created_at: Αναφέρθηκε για πρώτη φορά στις %{datetime} last_resolved_at: Επιλύθηκε για τελευταία φορά στις %{datetime} last_updated_at: Ενημερώθηκε για τελευταία φορά στις %{datetime} από τον %{displayname} @@ -1537,7 +1543,7 @@ el: layouts: logo: alt_text: Λογότυπο OpenStreetMap - home: Μετάβαση στο Σπίτι + home: Δείξε το σπίτι μου logout: Αποσύνδεση log_in: Σύνδεση sign_up: Εγγραφή @@ -1873,10 +1879,13 @@ el: delete image: Αφαίρεση της τρέχουσας εικόνας replace image: Αντικατάσταση της τρέχουσας εικόνας image size hint: (τετράγωνες εικόνες τουλάχιστον 100 x 100 λειτουργούν καλύτερα) - home location: Τοποθεσία Σπιτιού + home location: Τοποθεσία σπιτιού no home location: Δεν έχετε εισάγει την τοποθεσία του σπιτιού σας. update home location on click: Ενημέρωση τοποθεσίας σπιτιού όταν κάνω κλικ στον χάρτη; + show: Εμφάνιση + delete: Διαγραφή + undelete: Αναίρεση διαγραφής update: success: Το προφίλ ενημερώθηκε. failure: Δεν μπόρεσε να ενημερωθεί το προφίλ. @@ -1905,7 +1914,7 @@ el: facebook: title: Σύνδεση με το Facebook alt: Σύνδεση με έναν Λογαριασμό Facebook - windowslive: + microsoft: title: Σύνδεση μέσω της Microsoft alt: Σύνδεση με ένα Λογαριασμό Microsoft github: @@ -1962,18 +1971,31 @@ el: χρησιμοποιούν αεροφωτογραφίες, συσκευές GPS και τοπικούς χάρτες χαμηλής τεχνολογίας για να σιγουρευτούν πως το OSM είναι ακριβής και ενημερωμένο. community_driven_title: Βασίζεται στην κοινότητα + community_driven_1_html: |- + Η κοινότητα του OpenStreetMap είναι ποικίλη, παθιασμένη και αυξάνεται καθημερινά. + Οι συνεισφέροντες μας, περιλαμβάνουν ενθουσιώδεις χαρτογράφους, επαγγελματίες GIS, μηχανικούς + που τρέχουν τους διακομιστές OSM, ανθρωπιστές που χαρτογραφούν περιοχές που έχουν πληγεί από καταστροφές, + και πολλά άλλα. + Για να μάθετε περισσότερα σχετικά με την κοινότητα, δείτε στον ιστότοπο %{osm_blog_link}, %{user_diaries_link}, %{community_blogs_link} και στο %{osm_foundation_link}. community_driven_osm_blog: Ιστολόγιο OpenStreetMap community_driven_user_diaries: ημερολόγια χρηστών community_driven_community_blogs: ιστολόγια κοινότητας community_driven_osm_foundation: Ίδρυμα OSM open_data_title: Ανοικτά Δεδομένα + open_data_1_html: 'Το OpenStreetMap είναι %{open_data}: είστε ελεύθεροι να την + χρησιμοποιήστε για οποιονδήποτε σκοπό, εφόσον μνημονεύετε το OpenStreetMap + και τους συνεισφέροντές του. Εάν προσαρμόσετε ή αξιοποιήσετε αυτά τα δεδομένα + με συγκεκριμένους τρόπους, πρέπει να διανείμετε το αποτέλεσμα μόνο υπό την + ίδια άδεια χρήσης. Δείτε τη σελίδα %{copyright_license_link} για λεπτομέρειες.' open_data_open_data: ανοιχτά δεδομένα + open_data_copyright_license: Σελίδα Πνευματικών Δικαιωμάτων και Άδειας Χρήσης legal_title: Νομικό legal_1_1_openstreetmap_foundation: Ίδρυμα OpenStreetMap legal_1_1_terms_of_use: Όροι Χρήσης legal_1_1_aup: Αποδεκτές Πολιτικές Χρήσης legal_1_1_privacy_policy: Πολιτική Απορρήτου legal_2_1_contact_the_osmf: επικοινωνήστε με το OSMF + legal_2_2_registered_trademarks: εγγεγραμμένα εμπορικά σήματα του OSMF partners_title: Συνεργάτες copyright: foreign: @@ -1993,13 +2015,18 @@ el: introduction_1_open_data: ανοιχτά δεδομένα introduction_1_osm_foundation: Ίδρυμα OpenStreetMap introduction_2_legal_code: νομικός κώδικας + introduction_3_creative_commons: Creative Commons Αναφορά Δημιουργού-Παρόμοια + Διανομή 2.0 credit_title_html: Πως να κάνετε αναφορά στο OpenStreetMap credit_1_html: 'Όπου χρησιμοποιήσετε δεδομένα του OpenStreetMap, χρειάζεται από σας να κάνετε τα παρακάτω πράγματα:' + credit_3_attribution_guidelines: Οδηγίες Αναφοράς + credit_4_1_this_copyright_page: αυτή τη σελίδα πνευματικών δικαιωμάτων attribution_example: alt: Παράδειγμα του πως αναφέρεται το OpenStreetMap σε μια ιστοσελίδα title: Παράδειγμα αναφοράς δημιουργού more_title_html: Μαθαίνοντας περισσότερα + more_1_1_osmf_licence_page: Σελίδα Άδειας Χρήσης OSMF more_2_1_api_usage_policy: Πολιτική Χρήσης API more_2_1_tile_usage_policy: Πολιτική Χρήσης Πλακιδίων more_2_1_nominatim_usage_policy: Πολιτική Χρήσης Nominatim @@ -2008,8 +2035,12 @@ el: έχουμε περιλάβει δεδομένα ανοικτής άδειας από εθνικές υπηρεσίες χαρτογράφησης και άλλες πηγές, μεταξύ αυτών:' contributors_at_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 με τροποποιήσεις contributors_au_australia: Αυστραλία + contributors_au_geoscape_australia: Geoscape Australia contributors_ca_canada: Καναδάς contributors_fi_finland: Φινλανδία contributors_fi_nlsfi_license: Άδεια NLSFI @@ -2024,7 +2055,11 @@ el: contributors_rs_serbia: Σερβία contributors_rs_rgz: Σερβική Γεωδαιτική Αρχή contributors_rs_open_data_portal: Εθνική Πύλη Ανοικτών Δεδομένων + contributors_si_credit_html: |- + %{slovenia}: Περιέχει δεδομένα από την %{gu_link} και το %{mkgp_link} + (δημόσιες πληροφορίες της Σλοβενίας). contributors_si_slovenia: Σλοβενία + contributors_si_gu: Αρχή Χωρομέτρησης και Χαρτογράφησης contributors_si_mkgp: Υπουργείο Γεωργίας, Δασών και Τροφίμων contributors_es_spain: Ισπανία contributors_es_ign: IGN @@ -2039,6 +2074,8 @@ el: infringement_1_html: Υπενθυμίζουμε στους συνεισφέροντες του OSM να μην προσθέτουν δεδομένα από πηγές με πνευματικά δικαιώματα (π.χ. Google Maps η έντυπους χάρτες) χωρίς την προηγούμενη άδεια από τους ιδιοκτήτες των δικαιωμάτων. + trademarks_title: Εμπορικά σήματα + trademarks_1_1_trademark_policy: Πολιτική Εμπορικών Σημάτων index: js_1: Είτε χρησιμοποιείτε πρόγραμμα περιήγησης που δεν υποστηρίζει JavaScript ή έχετε απενεργοποιήσει την JavaScript. @@ -2122,6 +2159,8 @@ el: στην αποθήκευση και άλλοι χαρτογράφοι θα το ερευνήσουν. other_concerns: title: Άλλες ανησυχίες + copyright: σελίδα πνευματικών δικαιωμάτων + working_group: Ομάδα εργασίας OSMF help: title: Βοήθεια introduction: Το OpenStreetMap έχει πολλαπλούς πόρους για να μάθετε για το εγχείρημα, @@ -2202,7 +2241,7 @@ el: primary: Κύρια Οδός secondary: Δευτερεύουσα Οδός unclassified: Αταξινόμητη Οδός - track: Χωματόδρομος + track: Αγροτικός / Δασικός δρόμος bridleway: Μονοπάτι για Άλογα cycleway: Ποδηλατόδρομος cycleway_national: Εθνικός ποδηλατόδρομος @@ -2679,7 +2718,7 @@ el: diary: Ημερολόγιο edits: Επεξεργασίες traces: Ίχνη - notes: Σημειώσεις Χάρτη + notes: Σημειώσεις χάρτη remove as friend: Αφαίρεση Φίλου add as friend: Προσθήκη Φίλου mapper since: 'Χαρτογράφος από:' @@ -2842,12 +2881,12 @@ el: heading_html: Κατάλογος φραγών στον %{name} empty: Ο %{name} δεν έχει φραχτεί ακόμα. blocks_by: - title: Φραγές από τον %{name} - heading_html: Κατάλογος φραγών από τον %{name} - empty: Ο %{name} δεν έχει κάνει φραγή ακόμα. + title: Φραγές από %{name} + heading_html: Κατάλογος φραγών από %{name} + empty: Ο/Η %{name} δεν έχει κάνει φραγή ακόμα. show: - title: Ο %{block_on} έχει φραχτεί από τον %{block_by} - heading_html: Ο %{block_on} έχει φραχτεί από τον %{block_by} + title: Ο/Η %{block_on} έχει φραχτεί από τον/την %{block_by} + heading_html: Ο/Η %{block_on} έχει φραχτεί από τον/την %{block_by} created: 'Δημιουργήθηκε:' duration: 'Διάρκεια:' status: 'Κατάσταση:' @@ -2877,7 +2916,7 @@ el: index: title: Σημειώσεις που υποβλήθηκαν ή σχολιάστηκαν από τον %{user} heading: σημειώσεις του %{user} - subheading_html: Σημειώσεις που υποβλήθηκαν ή σχολιάστηκαν από τον %{user} + subheading_html: Σημειώσεις που %{submitted} ή %{commented} από τον %{user} no_notes: Χωρίς σημειώσεις id: Αναγνωριστικό creator: Δημιουργός @@ -2956,7 +2995,7 @@ el: in: Μεγέθυνση out: Σμίκρυνση locate: - title: Προβολή της Τοποθεσίας μου + title: Προβολή της τοποθεσίας μου metersPopup: one: Είστε εντός %{count} μέτρου από το σημείο other: Είστε εντός %{count} μέτρων από το σημείο @@ -2965,18 +3004,18 @@ el: other: Είστε εντός %{count} ποδιών από το σημείο base: standard: Κανονικός - cyclosm: CyclOSM - cycle_map: Χάρτης Ποδηλασίας - transport_map: Συγκοινωνιακός Χάρτης + cyclosm: CyclOSM ποδηλασία + cycle_map: Ποδηλασία + transport_map: Συγκοινωνία hot: Ανθρωπιστικός - opnvkarte: ÖPNVKarte + opnvkarte: ÖPNVKarte συγκοινωνίες layers: - header: Στρώματα Χάρτη - notes: Σημειώσεις Χάρτη - data: Δεδομένα Χάρτη + header: Στρώματα + notes: Σημειώσεις χάρτη + data: Δεδομένα χάρτη gps: Δημόσια ίχνη GPS overlays: Ενεργοποίηση επικαλύψεων για την αντιμετώπιση προβλημάτων του χάρτη - title: Στρώματα + title: Στρώματα χάρτη openstreetmap_contributors: Συνεισφέροντες OpenStreetMap make_a_donation: Κάντε μια δωρεά website_and_api_terms: Όροι ιστότοπου και API diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index b192b0528..3fbb69c26 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1383,7 +1383,7 @@ en-GB: facebook: title: Login with Facebook alt: Login with a Facebook Account - windowslive: + microsoft: title: Login with Windows Live alt: Login with a Windows Live Account github: diff --git a/config/locales/en.yml b/config/locales/en.yml index 7635c483d..530dad207 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -212,7 +212,7 @@ en: openid: OpenID google: Google facebook: Facebook - windowslive: Microsoft + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -228,6 +228,7 @@ en: reopened_at_by_html: "Reactivated %{when} by %{user}" rss: title: "OpenStreetMap Notes" + description_all: "A list of reported, commented on or closed notes" description_area: "A list of notes, reported, commented on or closed in your area [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]" description_item: "An rss feed for note %{id}" opened: "new note (near %{place})" @@ -1785,7 +1786,7 @@ en: facebook: title: Login with Facebook alt: Login with a Facebook Account - windowslive: + microsoft: title: Login with Microsoft alt: Login with a Microsoft Account github: @@ -2696,6 +2697,7 @@ en: remove as friend: Unfriend add as friend: Add Friend mapper since: "Mapper since:" + uid: "User id:" ct status: "Contributor terms:" ct undecided: Undecided ct declined: Declined @@ -2964,6 +2966,7 @@ en: cyclosm: CyclOSM cycle_map: Cycle Map transport_map: Transport Map + tracestracktop_topo: Tracestrack Topo hot: Humanitarian opnvkarte: ÖPNVKarte layers: @@ -2984,6 +2987,8 @@ en: andy_allan: Andy Allan opnvkarte_credit: "Tiles courtesy of %{memomaps_link}" memomaps: MeMoMaps + tracestrack_credit: "Tiles courtesy of %{tracestrack_link}" + tracestrack: Tracestrack hotosm_credit: "Tiles style by %{hotosm_link} hosted by %{osm_france_link}" hotosm_name: Humanitarian OpenStreetMap Team site: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 88bf0a112..ed291ca35 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -235,6 +235,7 @@ eo: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Vikipedio api: @@ -250,6 +251,7 @@ eo: reopened_at_by_html: Remalfermita %{when} de %{user} rss: title: OpenStreetMap-rimarkoj + description_all: Listo de raportitaj, komentitaj aÅ­ fermitaj rimarkoj description_area: Listo de rimarkoj raportitaj, komentitaj aÅ­ fermitaj en via najbaraĵo [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: RSS-fluo por rimarko %{id} @@ -1830,6 +1832,9 @@ eo: no home location: Vi ne enigis vian hejmlokon. update home location on click: Ĉu freŝigi la hejmlokon kiam mi alklakas sur la mapo? + show: Montri + delete: Forigi + undelete: Malforigi update: success: Aktualigis profilon. failure: Ne povis aktualigi la profilon. @@ -1858,7 +1863,7 @@ eo: facebook: title: Ensaluti per Fejsbuko alt: Ensaluti per konto je Fejsbuko - windowslive: + microsoft: title: Ensaluti per Microsoft alt: Ensaluti per konto Microsoft github: @@ -2730,6 +2735,7 @@ eo: remove as friend: Eksamikigi add as friend: Aldoni kiel amikon mapper since: 'Mapigisto ekde:' + uid: 'Identigilo de uzanto:' ct status: 'Interkonsento pri kontribuado:' ct undecided: ne decidita ct declined: malakceptita @@ -2915,7 +2921,9 @@ eo: index: title: Rimarkoj kreitaj aÅ­ komentitaj de %{user} heading: Rimarkoj de %{user} - subheading_html: Rimarkoj kreitaj aÅ­ komentitaj de %{user} + subheading_html: Rimarkoj %{submitted} aÅ­ %{commented} de %{user} + subheading_submitted: kreitaj + subheading_commented: komentitaj no_notes: Neniu rimarko id: Identigilo creator: AÅ­toro diff --git a/config/locales/es.yml b/config/locales/es.yml index 966991f11..3fe57337b 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -11,6 +11,7 @@ # Author: Angoca # Author: AnupamM # Author: Armando-Martin +# Author: Atzerritik # Author: BnSrSa # Author: Carlosmg.dg # Author: Carlosz22 @@ -68,6 +69,7 @@ # Author: Nancystodd # Author: Nelthal # Author: Nemo bis +# Author: No se # Author: Nunte # Author: Ovruni # Author: Pantareje @@ -138,7 +140,7 @@ es: diary_comment: Comentario de diario diary_entry: Entrada de diario friend: Amigo - issue: Problema + issue: Incidencia language: Idioma message: Mensaje node: Nodo @@ -171,11 +173,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 tus preferencias de usuario - allow_write_prefs: modificar tus preferencias de usuario + allow_read_prefs: leer sus preferencias de usuario + allow_write_prefs: modificar sus preferencias de usuario allow_write_diary: crear entradas de diario, comentarios y hacer amigos allow_write_api: modificar el mapa - allow_read_gpx: leer tus trazas de GPS privadas + allow_read_gpx: leer sus trazas de GPS privadas allow_write_gpx: cargar trazas de GPS allow_write_notes: modificar notas diary_comment: @@ -216,7 +218,7 @@ es: title: Título description: Descripción report: - category: Seleccione el motivo de tu denuncia + category: Selecciona el motivo de tu denuncia details: Es necesario proporcionar más detalles sobre el problema (requerido). user: auth_provider: Proveedor de autentificación @@ -304,7 +306,7 @@ es: openid: OpenID google: Google facebook: Facebook - windowslive: Microsoft + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -320,6 +322,7 @@ es: reopened_at_by_html: Reactivado %{when} por %{user} rss: title: Notas de OpenStreetMap + description_all: Una lista de notas denunciadas, comentadas o cerradas. description_area: Una lista de notas, informadas, comentadas o cerradas en tu área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Un suministro RSS para notas %{id} @@ -354,7 +357,7 @@ es: retain_changeset_discussions: Tus discusiones sobre conjuntos de cambios, si las hay, se conservarán. retain_email: Tu dirección de correo electrónico se conservará. - confirm_delete: ¿Lo confirma? + confirm_delete: ¿Estás seguro? cancel: Cancelar accounts: edit: @@ -399,7 +402,7 @@ es: pública. not_reversible: Esta acción no se puede revertir y todos los nuevos usuarios son ahora públicos de forma predeterminada. - make_edits_public_button: Hacer todas mis ediciones públicas + make_edits_public_button: Hacer que todas mis ediciones sean públicas update: success_confirm_needed: La información del usuario se ha actualizado correctamente. Comprueba tu correo electrónico para ver un mensaje sobre cómo confirmar tu @@ -626,7 +629,7 @@ es: login: Iniciar sesión no_such_entry: title: No existe esta entrada de diario - heading: No hay ninguna entrada con el identificador %{id} + heading: No hay ninguna entrada con el identificador "%{id}" 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: @@ -683,8 +686,8 @@ es: 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 + contact: contactar + contact_the_community_html: Siéntete libre de %{contact_link} con la comunidad de OpenStreetMap si has encontrado un enlace roto o un error. Toma nota de la URL exacta de tu solicitud. forbidden: @@ -757,7 +760,7 @@ es: bar: Bar bbq: Parrilla bench: Banca - bicycle_parking: Aparcamiento de bibicletas + bicycle_parking: Estacionamiento de bicicletas bicycle_rental: Alquiler de bicicletas bicycle_repair_station: Estación de reparación de bicicletas biergarten: Patio cervecero @@ -1422,7 +1425,7 @@ es: tattoo: Estudio de tatuajes tea: Tienda de té ticket: Tienda de Tickets - tobacco: Tabaquería + tobacco: Tabaquería. Estanco toys: Juguetería travel_agency: Agencia de viajes tyres: Tienda de neumáticos @@ -1458,7 +1461,7 @@ es: zoo: Zoológico tunnel: building_passage: Pasaje de edificio - culvert: Drenaje + culvert: Alcantarilla "yes": Túnel waterway: artificial: Vía fluvial artificial @@ -1567,8 +1570,8 @@ es: 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 puedes corregir el problema tu mismo o con la ayuda de otros - miembros de la comunidad. + unable_to_fix: No puedes corregir el problema tú 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: @@ -1672,7 +1675,7 @@ es: hi: Hola %{to_user}, 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: Puedes ver su 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}. @@ -1714,8 +1717,8 @@ es: greeting: Hola, 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. + click_the_link: Si este eres tú, por favor, haz clic en el enlace siguiente + para restablecer tu contraseña. note_comment_notification: anonymous: Un usuario anónimo greeting: Hola, @@ -1740,7 +1743,7 @@ es: 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 - tu ha comentado. La nota está cerca de %{place}.' + tú has comentado. La nota está cerca de %{place}.' reopened: subject_own: '[OpenStreetMap] %{commenter} ha reactivado una de tus notas' subject_other: '[OpenStreetMap] %{commenter} ha reactivado una nota que te @@ -1780,7 +1783,7 @@ es: unsubscribe: Para cancelar la suscripción a las actualizaciones de este conjunto 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 "Cancelas subscripción". + de cambios, visita %{url} y haz clic en "Cancelar suscripción". confirmations: confirm: heading: ¡Revisa tu correo electrónico! @@ -1792,8 +1795,8 @@ es: 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}. - click_here: pulse aquí + resend_html: Si necesitas que te reenviemos el mensaje de confirmación, %{reconfirm_link}. + click_here: has clic aquí confirm_resend: failure: No se ha encontrado el usuario %{name} confirm_email: @@ -1884,10 +1887,12 @@ es: heading: ¿Contraseña olvidada? email address: 'Dirección de correo electrónico:' new password button: Restablecer contraseña - 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. + help_text: Escribe la dirección de correo electrónico con la que te registraste, + te enviaremos un enlace a esa dirección que podrás utilizar para restablecer + tu 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. + un mensaje de correo electrónico que te servirá para restablecer tu contraseña + enseguida. notice email cannot find: Lo sentimos, no se pudo encontrar esa dirección de correo electrónico. reset_password: @@ -1932,6 +1937,9 @@ es: 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? + show: Mostrar + delete: Eliminar + undelete: Deshacer eliminación update: success: Perfil actualizado. failure: No se pudo actualizar el perfil. @@ -1943,12 +1951,12 @@ es: password: 'Contraseña:' openid_html: '%{logo} OpenID:' remember: Recordarme - lost password link: ¿Has perdido su contraseña? + lost password link: ¿Has perdido tu contraseña? login_button: Iniciar sesión 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. + auth failure: Lo sentimos. No se pudo iniciar sesión con esos datos. openid_logo_alt: Inicia sesión con una OpenID auth_providers: openid: @@ -1960,7 +1968,7 @@ es: facebook: title: Iniciar sesión con Facebook alt: Iniciar sesión con una cuenta de Facebook - windowslive: + microsoft: title: Iniciar sesión con Microsoft alt: Iniciar sesión con una cuenta Microsoft github: @@ -2085,8 +2093,8 @@ es: 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ás hacer las dos - cosas siguientes:' + credit_1_html: 'Cuando utilices datos de OpenStreetMap, deberás hacer las + siguientes dos cosas:' credit_2_1: Proporciona crédito a OpenStreetMap mostrando nuestro aviso de derechos de autor. credit_2_2: Especifica que los datos están disponibles bajo la Licencia de @@ -2283,11 +2291,11 @@ es: how_to_help: title: Cómo ayudar join_the_community: - title: Unete a la comunidad + title: Únete 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 + por ejemplo, falta un camino o tu dirección, la mejor manera de proceder es unirse a la comunidad OpenStreetMap y agregar o corregir los datos - tu mismo. + tú mismo. add_a_note: instructions_1_html: |- Simplemente haz clic en %{note_icon} o en el mismo icono en la visualización del mapa. @@ -2356,7 +2364,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 la estera de bienvenida + welcome_mat: Echa un vistazo a la alfombra de bienvenida sidebar: search_results: Resultados de la búsqueda close: Cerrar @@ -2400,7 +2408,7 @@ es: apron: - Rampa aeroportuaria - terminal - admin: Límite administrativos + admin: Límite administrativo forest: Bosque wood: Bosque golf: Campo de golf @@ -2420,7 +2428,7 @@ es: farm: Granja brownfield: Sitio baldío cemetery: Cementerio - allotments: Parcelas + allotments: Huertos de ocio pitch: Campo de juego centre: Centro deportivo reserve: Reserva natural @@ -2439,13 +2447,13 @@ es: destination: Acceso a destino construction: Vías en construcción bicycle_shop: Tienda de bicicletas - bicycle_parking: Aparcamiento de bicicletas + bicycle_parking: Estacionamiento de bicicletas toilets: Baños welcome: title: ¡Bienvenido! 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 + a mapear. He aquí una guía rápida con las cosas más importantes que necesitas saber. whats_on_the_map: title: Qué hay en el mapa @@ -2486,12 +2494,12 @@ es: start_mapping: Comenzar a mapear add_a_note: 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_1: Si sólo deseas corregir algo pequeño y no tienes tiempo para registrarte + y aprender a editar, añadir una nota es fácil. para_2_html: |- Basta con ir a %{map_link} y pulsar en el icono de nota: %{note_icon}. Esto añadirá un marcador al mapa que se puede mover al arrastrarlo. - Escriba su mensaje y pulse en «Guardar». La comunidad cartógrafa investigará al respecto. + Escribe su mensaje y has clic en «Guardar» y otros mapeadores investigarán. the_map: el mapa communities: title: Comunidades @@ -2504,7 +2512,7 @@ es: 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 + de lucro. Representan al mapa y a los mapeadores 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. @@ -2665,7 +2673,7 @@ es: grant_access: Otorgar acceso authorize_success: title: Solicitud de autorización permitida - allowed_html: Has concedido acceso a tu cuenta a la aplicación %{app_name}. + allowed_html: Has otorgado 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 @@ -2677,10 +2685,10 @@ es: missing: No has permitido que la aplicación acceda a esta instalación. scopes: read_prefs: Leer preferiencias de usuario - write_prefs: modificar tus preferencias de usuario. - write_diary: Crea entradas diarias, comentarios y haz amigos + write_prefs: Modificar las preferencias de usuario + write_diary: Crear entradas del diario, comentarios y hacer amigos write_api: modificar el mapa. - read_gpx: Leer tus trazas de GPS privadas + read_gpx: Leer 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 @@ -2867,6 +2875,7 @@ es: remove as friend: Eliminar como amigo add as friend: Añadir como amigo mapper since: 'Mapeando desde:' + uid: 'Identificación de usuario:' ct status: 'Términos de Colaborador:' ct undecided: Indeciso ct declined: Rechazado @@ -2879,7 +2888,7 @@ es: administrator: Este usuario es un administrador moderator: Este usuario es un moderador grant: - administrator: Adjudicar acceso de administrador + administrator: Otorgar acceso de administrador moderator: Adjudicar acceso de moderador revoke: administrator: Revocar acceso de administrador @@ -2943,7 +2952,7 @@ es: not_revoke_admin_current_user: No se pudo revocar el rol de administrador del usuario actual. grant: - title: Confirmar adjudicación de rol + title: Confirmar otorgamiento de rol heading: Confirmar adjudicación de rol are_you_sure: ¿Estás seguro de que deseas otorgar el rol `%{role}' al usuario `%{name}'? @@ -2953,7 +2962,7 @@ es: revoke: title: Confirmar revocación de rol heading: Confirmar revocación de rol - are_you_sure: ¿Está seguro de que deseas revocar el rol `%{role}' del usuario + are_you_sure: ¿Estás 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 @@ -2997,7 +3006,7 @@ es: 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ás seguro de que desea revocar este bloqueo? + confirm: ¿Estás seguro de que deseas revocar este bloqueo? revoke: ¡Revocar! flash: Este bloqueo ha sido revocado. helper: @@ -3061,9 +3070,11 @@ es: previous: « Anterior notes: index: - title: Notas remitidas o comentadas por %{user} + title: Notas creadas o comentadas por %{user} heading: Notas de %{user} - subheading_html: Notas remitidas o comentadas por %{user} + subheading_html: Notas %{submitted} o %{commented} por %{user} + subheading_submitted: creadas + subheading_commented: comentada no_notes: Ninguna nota id: Identificador creator: Creador @@ -3213,7 +3224,7 @@ es: no_route: No se pudo encontrar una ruta entre esos dos lugares. no_place: No se pudo localizar «%{place}». instructions: - continue_without_exit: Continuar en %{name} + continue_without_exit: Continúa por %{name} 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 @@ -3272,7 +3283,7 @@ es: 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, toma la salida %{exit} hacia %{name} + roundabout_with_exit: En la rotonda, toma la %{exit} salida hacia %{name} roundabout_with_exit_ordinal: En la rotonda, toma la salida %{exit} hacia %{name} exit_roundabout: Sal de la rotonda hacia %{name} @@ -3334,7 +3345,7 @@ es: error: Se produjo un error al destruir esta censura. validations: leading_whitespace: tiene espacio en blanco delantero - trailing_whitespace: tiene espacio en blanco final + trailing_whitespace: tiene espacios en blanco al final invalid_characters: contiene caracteres no válidos url_characters: Contiene caracteres especiales de URL (%{characters}) ... diff --git a/config/locales/et.yml b/config/locales/et.yml index 263d70c8b..7bb68167c 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1399,7 +1399,7 @@ et: facebook: title: Logi sisse Facebooki kaudu alt: Logi sisse Facebooki kontoga - windowslive: + microsoft: title: Logi sisse Windows Live'i kaudu alt: Logi sisse Windows Live'i kontoga github: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index d17c5ca15..963dccd51 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -6,11 +6,13 @@ # Author: Amaia # Author: An13sa # Author: Asieriko +# Author: Atzerritik # Author: EukeneFL # Author: Garaolaza # Author: Gorkaazk # Author: Ibai # Author: Iñaki LL +# Author: Juele # Author: Maite # Author: McDutchie # Author: Mikel Ibaiba @@ -112,8 +114,8 @@ eu: user: Erabiltzailea title: Gaia body: Testua - latitude: Latitude - longitude: Longitude + latitude: Latitudea + longitude: Longitudea language_code: Hizkuntza doorkeeper/application: name: Izena @@ -122,14 +124,14 @@ eu: scopes: Baimenak friend: user: Erabiltzailea - friend: Lagun + friend: Laguna trace: user: Erabiltzailea visible: Ikusgai name: Fitxategi izena size: Tamaina - latitude: Latitude - longitude: Longitude + latitude: Latitudea + longitude: Longitudea public: Publikoa description: Deskribapena gpx_file: 'GPX fitxategia igo:' @@ -152,20 +154,20 @@ eu: email: Eposta email_confirmation: 'E-posta egiaztapena:' new_email: 'E-posta helbide berria:' - active: Aktibo + active: Aktiboa display_name: Erakusteko izena description: 'Profilaren deskribapena:' home_lat: Latitudea - home_lon: 'Longitudea:' + home_lon: Longitudea languages: Hizkuntza lehenetsiak preferred_editor: 'Lehenetsitako editorea:' pass_crypt: Pasahitza - pass_crypt_confirmation: 'Berretsi pasahitza:' + pass_crypt_confirmation: Pasahitza berretsi help: doorkeeper/application: - confidential: Bezeroaren sekretua isilpean manten daitekeenean erabiliko da - aplikazioa (telefono mugikorretako aplikazio natiboak eta orrialde bakarreko - aplikazioak ez dira isilpekoak) + confidential: Bezeroaren sekretua isilpean gorde daitekeenean erabiliko da + aplikazioa (jatorrizko aplikazio mugikorrak eta orri bakarreko aplikazioak + ez dira konfidentzialak) redirect_uri: Erabili lerro bat URI bakoitzeko trace: tagstring: koma mugatua @@ -230,6 +232,7 @@ eu: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -245,6 +248,7 @@ eu: reopened_at_by_html: '%{user}k %{when} berraktibatua' rss: title: OpenStreetMap oharrak + description_all: Jakinarazitako, iruzkindutako edo itxitako oharren zerrenda description_area: Iruzkinak dituzten, itxi diren edota iragarki diren oharren zerrenda [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Rss feed bat %{id} oharrarentzako @@ -306,13 +310,13 @@ eu: agreed_with_pd: Zure aldaketak domeinu publikoan egongo direla adierazi duzu. link text: zer da hau? save changes button: Aldaketak gorde - delete_account: Ezabatu kontua... + delete_account: Kontua ezabatu go_public: heading: Aldaketa publikoak currently_not_public: Une honetan, zure aldaketak anonimoak dira eta jendeak ezin dizu mezurik bidali edo zure kokapena ikusi. Editatu duzuna erakusteko eta jendeari webgunearen bidez zurekin harremanetan jarri izan ahal dadin - baimentzeko, egin klik beheko botoian. + baimentzeko, sakatu beheko botoia. only_public_can_edit: 0.6 APIa aldatu zenetik, erabiltzaile publikoek soilik edita ditzakete maparen datuak. find_out_why: jakin zergatik @@ -329,6 +333,12 @@ eu: browse: created: Sortua closed: Itxita + created_ago_html: Sortua orain dela %{time_ago} + closed_ago_html: Itxia orain dela %{time_ago} + created_ago_by_html: '%{user}-ek %{time_ago} sortua' + closed_ago_by_html: '%{user}-ek %{time_ago} itxia' + deleted_ago_by_html: '%{user}-ek %{time_ago} ezabatua' + edited_ago_by_html: '%{user}-ek %{time_ago} editatua' version: Bertsioa in_changeset: Aldaketak anonymous: anonimoa @@ -354,6 +364,8 @@ eu: relation: Erlazioak (%{count}) relation_paginated: Erlazioak (%{x}-%{y} %{count}-tik) comment: Iruzkinak (%{count}) + hidden_comment_by_html: '%{user} -ren ezkutuko iruzkina %{time_ago} tik' + comment_by_html: '%{user} -ren iruzkina orain dela %{time_ago}' changesetxml: Aldaketaren XML kodea osmchangexml: osmChange XML kodea feed: @@ -545,9 +557,9 @@ eu: comment_link: Sarrera honetan iruzkina utzi reply_link: Egileari mezua bidali comment_count: - one: iruzkin %{count} - zero: Iruzkinik ez - other: '%{count} iruzkin' + one: '%{count} iruzkin' + other: '%{count} comments' + no_comments: Iruzkin gabe edit_link: Sarrera hau editatu hide_link: Sarrera hau ezkutatu unhide_link: Erakutsi sarrera hau @@ -623,6 +635,9 @@ eu: success: '%{name} kendu duzu zure adiskide zerrendatik.' not_a_friend: '%{name} ez da zure laguna.' geocoder: + search: + title: + results_from_html: '%{results_link} ren emaitzak' search_osm_nominatim: prefix: aerialway: @@ -1427,9 +1442,9 @@ eu: show: title: '%{status} %{issue_id} arazoa' reports: - zero: Reporterik ez - one: Reporte 1 - other: '%{count} reporte' + one: '%{count} report' + other: '%{count} jakinarazpen' + no_reports: Ez dago txostenik report_created_at: Lehenengoz %{datetime} egunean berri emanda last_resolved_at: Azkenekoz %{datetime} egunean konponduta last_updated_at: Azkenekoz %{displayname}-(e)k %{datetime} egunean eguneratua @@ -1691,6 +1706,8 @@ eu: success: Zure kontua berretsi du, erregistratzeagatik milesker! already active: Kontu hau dagoeneko berretsi da. unknown token: Berrespen-kodea iraungi egin da edo ez da existitzen. + resend_html: Berrespen-mezua berriro bidaltzea behar baduzu, %{reconfirm_link}. + click_here: sakatu hemen confirm_resend: failure: '%{name} erabiltzailea ez da aurkitu.' confirm_email: @@ -1826,6 +1843,9 @@ eu: no home location: Zure etxe-helbidea ez duzu txertatu. update home location on click: Eguneratu etxeko kokalekua mapan klik egiten dudanean? + show: Erakutsi + delete: Ezabatu + undelete: Desegin ezabatzea update: success: Profila eguneratu da. failure: Ezin izan da profila eguneratu. @@ -1854,9 +1874,9 @@ eu: facebook: title: Saioa hasi Facebookekin alt: Saioa hasi Facebookekin - windowslive: - title: Saioa hasi Windows Livekin - alt: Windows Live kontu batekin saioa hasi + microsoft: + title: Saioa hasi Microsoftekin + alt: Microsoft kontu batekin saioa hasi github: title: GitHub-rekin saioa hasi alt: GitHub kontuarekin saioa hasi @@ -1880,6 +1900,7 @@ eu: support: laguntza shared: markdown_help: + heading_html: '%{kramdown_link}rekin aztertu da' headings: Goiburuak heading: Goiburua subheading: Azpi-goiburua @@ -1898,6 +1919,7 @@ eu: site: about: next: Hurrengoa + heading_html: '%{copyright}OpenStreetMap %{br} laguntzaileak' used_by_html: '%{name}-k mapa datuz hornitzen ditu milaka web gune, mugikorretako aplikazio eta hardware gailu.' lede_text: OpenStreetMap mundu osoan zehar errepideak, bideak, kafetegiak, tren @@ -1908,8 +1930,20 @@ eu: aireko irudiak erabiltzen dituzte, GPS gailuak eta teknologia baxuko eremuko mapak OSMrako egiaztapen zehatza eta eguneratua egiteko. community_driven_title: Komunitatearen Ahotsa + community_driven_osm_blog: OpenStreetMap bloga + community_driven_user_diaries: Erabiltzaileen egunerokoak + community_driven_community_blogs: Komunitateko blogak + community_driven_osm_foundation: OSM Fundazioa open_data_title: Datu Irekiak + open_data_open_data: Datu Irekiak + open_data_copyright_license: Copyright eta lizentzia orria legal_title: Legala + legal_1_1_openstreetmap_foundation: OpenStreetMap Fundazioa + legal_1_1_terms_of_use: Erabilera-baldintzak + legal_1_1_aup: Erabilera-politika onargarriak + legal_1_1_privacy_policy: Pribatutasun politika + legal_2_1_contact_the_osmf: OMSFrekin harremanetan jarri + legal_2_2_registered_trademarks: OSMFren marka erregistratuak partners_title: Parte-hartzaileak copyright: foreign: @@ -1926,17 +1960,74 @@ eu: mapping_link: kartografiarekin hasi legal_babble: title_html: Egile-eskubideak eta lizentzia + introduction_1_open_data: Datu Irekiak + introduction_1_odc_odbl: Open Data Commons Open Database Lizentzia + introduction_1_osm_foundation: OpenStreetMap Fundazioa + introduction_2_html: |- + Gure datuak kopiatzeko, banatzeko, transmititzeko eta egokitzeko libre zara, + betiere, OpenStreetMap eta bere + kolaboratzaileak kreditatzen badituzu. Gure datuak aldatzen edo eraikitzen badituzu, zuk + -ek emaitza lizentzia berarekin bakarrik banatu dezakezu. %{legal_code_link} + full-ek zure eskubideak eta betebeharrak azaltzen ditu. + introduction_2_legal_code: lege kodea + introduction_3_html: Gure dokumentazioa %{creative_commons_link} lizentziapean + dago (CC BY-SA 2.0). + introduction_3_creative_commons: Creative Commons Aitortu-PartekatuBerdin + 2.0 credit_title_html: OpenStreetMap nola kreditatu credit_1_html: 'OpenStreetMap datuak erabiltzen dituzun lekuetan, bi gauza hauek egin behar dituzu:' + credit_2_1: Eman kreditu OpenStreetMap-i gure copyright-oharra erakutsiz. + credit_2_2: Argi utzi datuak Open Database Lizentziapean eskuragarri daudela. + credit_3_attribution_guidelines: Esleipen-gidalerroak + credit_4_1_this_copyright_page: copyright orri hau attribution_example: alt: Web-orri batean OpenStreetMap nola esleitu erakusteko adibidea title: Eskuduntza adibidea more_title_html: Jakin ezazu gehiago + more_1_1_html: Irakurri informazio gehiago gure datuak erabiltzeari buruz + eta nola guri kreditatu, %{osmf_licence_page_link} helbidean. + more_1_1_osmf_licence_page: OSMF lizentzia orria + more_2_1_api_usage_policy: APIaren erabilera-politika contributors_title_html: Gure kolaboratzaileak contributors_intro_html: |- Gure laguntzaileen taldea milaka pertsonek osatzen dute. Horrez gain, nazio mailan aginte publikoko lizentziak dituzten mapak eta beste iturri batzuk eskeintzen ditugu, besteak beste: + contributors_at_credit_html: |- + %{austria}: %{stadt_wien_link} (%{cc_by_link} azpian), %{land_vorarlberg_link} + eta Land Tirol (%{cc_by_at_with_amendments_link} azpian) datuak ditu. + 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 zuzenketekin + contributors_au_australia: Australia + contributors_au_geoscape_australia: Geoscape Australia + contributors_au_cc_licence: Creative Commons Aitortu 4.0 Nazioarteko lizentzia + (CC BY 4.0) + contributors_ca_canada: Kanada + contributors_fi_finland: Finlandia + contributors_fi_nlsfi_license: NLSFI lizentzia + contributors_fr_france: Frantzia + contributors_nl_netherlands: Herbehereak + contributors_nz_new_zealand: Zelanda Berria + contributors_nz_linz_data_service: LINZ Datu Zerbitzua + contributors_nz_cc_by: CC BY 4.0 + contributors_rs_serbia: Serbia + contributors_rs_rgz: Serbiako Geodesiako Agintaritza + contributors_rs_open_data_portal: Datu Irekien Atari Nazionala + contributors_si_slovenia: Eslovenia + contributors_si_mkgp: Nekazaritza, Basogintza eta Elikadura Ministerioa + contributors_es_credit_html: |- + %{spain}: + Spanish National Geographic Institute (%{ign_link}) eta + National Cartographic System (%{scne_link}) + %{cc_by_link} pean berrerabiltzeko lizentziarekin jasotako datuak ditu. + contributors_es_spain: Espainia + contributors_es_cc_by: CC BY 4.0 + contributors_za_south_africa: Hego Afrika + contributors_gb_united_kingdom: Erresuma Batua + contributors_2_contributors_page: Kolaboratzaileen orria contributors_footer_2_html: |- OpenStreetMap-en datuak sartzeak ez du beharrez jatorrizko datu-hornitzaileak OpenStreetMap onartzea baieztatzen, edozein berme ematen, edota inolako erantzukizunik onartzen. @@ -1944,6 +2035,13 @@ eu: infringement_1_html: |- OSMren laguntzaileek ez dute inolako daturik gehitu behar copyright iturrietatik (adibidez, Google Maps edo inprimatutako mapak) copyright-jabeen baimen espliziturik gabe. + infringement_2_1_takedown_procedure: kentzeko prozedura + trademarks_title: Markak + trademarks_1_1_html: |- + OpenStreetMap, lupa logotipoa eta State of the Map + OpenStreetMap Foundation-en marka erregistratuak dira. Marken erabilerari buruzko galderarik baduzu, ikusi gure + %{trademark_policy_link}. + trademarks_1_1_trademark_policy: Marken politika index: js_1: Javascript onartzen ez duen arakatzailea erabiltzen ari zara edo JavaScript desgaitu duzu. @@ -1974,6 +2072,9 @@ eu: map_image: Maparen irudia (geruza estandarra erakusten du) embeddable_html: HTML kapsulagarria licence: Lizentzia + licence_details_html: OpenStreetMap datuak %{odbl_link} (ODbL) lizentziapean + daude. + odbl: Open Data Commons Open Database Lizentzia too_large: advice: 'Goiko esportazioak kale egiten badu, behean zerrendatutako iturrietako bat erabiltzea kontuan hartu mesedez:' @@ -2017,6 +2118,7 @@ eu: komunitatean sartzea da datuak berreskuratu edo konpontzeko. other_concerns: title: Bestelako kezkak + working_group: OSMF lan taldea help: title: Laguntza Lortu introduction: OpenStreetMap-ek proiektuari buruz ikasteko hainbat baliabide @@ -2060,8 +2162,18 @@ eu: removed: Zure OpenStreetMap editore lehenetsia gisa Potlatch dago ezarrita. Adobe Flash Player baztertu denez, Potlatch jada ez dago erabilgarri web-arakatzaile batean erabiltzeko. + desktop_application_html: Potlatch erabil dezakezu oraindik %{download_link}. + download: mahaigaineko aplikazioa deskargatuz Mac eta Windows-erako + id_editor_html: Bestela, iD ezar dezakezu zure editore lehenetsi gisa, zure + web arakatzailean exekutatzen dena Potlatch-ek lehen egiten zuen bezala. %{change_preferences_link} + change_preferences: Aldatu zure hobespenak hemen any_questions: title: Galderarik? + paragraph_1_html: |- + OpenStreetMap-ek hainbat baliabide ditu proiektuari buruz ikasteko, + galderak egiteko eta erantzuteko, eta elkarrekin eztabaidatzeko eta mapa-gaiak dokumentatzeko. + %{help_link}. Erakunderen batekin OpenStreetMap-erako planak egiten? %{welcome_mat_link}. + get_help_here: Lortu laguntza hemen sidebar: search_results: Bilaketaren emaitzak close: Itxi @@ -2153,17 +2265,46 @@ eu: gida laburra jakin behar dituzun gauzarik garrantzitsuenak dituena. whats_on_the_map: title: Mapan dagoena + real_and_current: benetakoa eta egungoa basic_terms: title: Kartografiarako Oinarrizko Terminoak paragraph_1: OpenStreetMap-ek bere parekatze propioa du. Hemen daude erabilgarriak diren zenbait hitz gako. + editor: editorea + node: nodoa + tag: etiketa rules: title: Arauak! + para_1_html: |- + OpenStreetMap-ek arau formal gutxi ditu, baina parte-hartzaile guztiek elkarlanean aritzea espero dugu + komunitatearekin eta harekin komunikatzea. Eskuz editatzeaz gain beste edozein jarduera kontuan hartzen ari bazara, irakurri eta jarraitu + %{imports_link} eta %{automated_edits_link} ataleko jarraibideak. + imports: Inportazioak + automated_edits: Aldaketa automatikoak start_mapping: Hasi mapeatzen add_a_note: title: Editatzeko denborarik ez? Gehitu ohar bat! para_1: Zerbait txiki eta finkoa bada eta ez baduzu denbora erregistratzeko eta nola editatzen ikasteko, ohar bat gehitzea erraza da. + the_map: mapa + communities: + title: Komunitateak + local_chapters: + title: Tokiko Kapituluak + about_text: |- + Tokiko Kapituluak herrialde-mailako edo eskualde-mailako taldeak dira + irabazi-asmorik gabeko erakunde juridikoak ezartzeko urrats formala eman dutenak. Inguruko mapa eta mapatzaileak irudikatzen dituzte + tokiko gobernuarekin, negozioekin eta komunikabideekin harremanetan daudenean. OpenStreetMap Foundation-ekin (OSMF) afiliazio bat ere sortu dute + rekin, eta lege eta copyright + gobernu organorako esteka emanez. + list_text: 'Honako erkidego hauek Tokiko Kapitulu gisa ezartzen dira formalki:' + other_groups: + title: Beste Taldeak + other_groups_html: |- + Ez dago talde bat formalki eratu behar Tokiko Kapituluen neurri berean. + Izan ere, talde asko arrakastaz existitzen dira jendearen bilkura informal gisa edo + komunitate talde gisa. Edonork konfiguratu edo batu daiteke hauetara. Irakurri gehiago %{communities_wiki_link} webgunean. + communities_wiki: Komunitateen wiki orria traces: visibility: private: Pribatua (puntu anonimo eta desordenatu gisa soilik partekatzen da) @@ -2244,6 +2385,11 @@ eu: public_traces_from: '%{user} erabiltzailearen GPS aztarna publikoak' description: Arakatu azkenaldian egin dire GPS ibilbide igoerak tagged_with: '%{tags}(r)ekin etiketatua' + empty_title: Hemen oraindik ez dago ezer + empty_upload_html: '%{upload_link} edo gehiago jakin GPS-en jarraipenari buruz + %{wiki_link}.' + upload_new: Aztarna bat igo + wiki_page: wiki orria upload_trace: Aztarna bat igo all_traces: Aztarna guztiak my_traces: Nire aztarnak @@ -2416,8 +2562,14 @@ eu: new: title: Eman izena no_auto_account_create: Zoritxarrez ezin dizugu automatikoki kontu bat sortu. + support: laguntza about: header: Doakoa eta editagarria + paragraph_1: Beste mapak ez bezala, OpenStreetMap zu bezalako pertsonek sortu + dute guztiz, eta edonork konpondu, eguneratu, deskargatu eta erabiltzeko + doan da. + paragraph_2: Eman izena ekarpenak egiten hasteko. Mezu elektroniko bat bidaliko + dizugu zure kontua berresteko. display name description: Zuk publikoki erakutsitako erabiltzaile izena. Hau geroago alda dezakezu hobespenetan. external auth: 'Hirugarrenen Autentifikazioa:' @@ -2427,6 +2579,11 @@ eu: gerta daiteke. continue: Eman izena terms accepted: Eskerrik asko laguntzaileen termino berriak onartzeagatik! + email_confirmation_help_html: Zure helbidea ez da publikoki bistaratzen, ikusi + gure %{privacy_policy_link} informazio gehiago lortzeko. + privacy_policy: pribatutasun politika + privacy_policy_title: OSMF pribatutasun-politika helbide elektronikoei buruzko + atala barne terms: title: Baldintzak heading: Baldintzak @@ -2443,6 +2600,9 @@ eu: consider_pd: Goikoaz gain, nire ekarpenak Domeinu Publikoan egon behar direla uste dut consider_pd_why: zer da hau? + guidance_info_html: 'Termino hauek ulertzen laguntzeko informazioa: %{readable_summary_link} + eta %{informal_translations_link}' + informal_translations: itzulpen informalak continue: Jarraitu decline: Ez onartu you need to accept or decline: Irakurri eta gero, onartu edo ezetsi Kolaboratzaileen @@ -2484,6 +2644,7 @@ eu: remove as friend: Kendu adiskidetzat add as friend: Gehitu adiskidetzat mapper since: 'Noiztik mapatzaile:' + uid: 'Erabiltzaile ID:' ct status: 'Kolaboratzaile terminoak:' ct undecided: Erabakigabea ct declined: Ez da onartu @@ -2532,6 +2693,11 @@ eu: title: Kontua bertan behera geratu da heading: Kontua bertan behera geratu da support: laguntza + automatically_suspended: Barkatu, zure kontua bertan behera utzi da jarduera + susmagarriengatik. + contact_support_html: Erabaki hau administratzaile batek berrikusiko du laster, + edo %{support_link} harremanetan jar zaitezke honi buruz eztabaidatu nahi + baduzu. auth_failure: connection_failed: Autentifikazioaren hornitzailearekin konexioa huts egin du invalid_credentials: Autentifikazio kredentzialak baliogabekoak dira @@ -2669,7 +2835,9 @@ eu: index: title: '%{user}k igotako edo iruzkinak utzitako oharrak' heading: '%{user} erabiltzailearen oharrak' - subheading_html: '%{user}k igotako edo iruzkinak utzitako oharrak' + subheading_html: '%{user}k %{submitted} edo%{commented} notak' + subheading_submitted: bidalita + subheading_commented: -en komentatu buen no_notes: Oharrik ez id: Id-a creator: Sortzailea @@ -2690,9 +2858,8 @@ eu: reactivate: Berriz aktibatu comment_and_resolve: Utzi iruzkina eta Konpondu comment: Iruzkina - report_link_html: 'Ohar honek ezabatu beharreko informazio sentikorra badu, - hau egin dezakezu: %{link}. Oharraren gainontzeko arazo guztientzat, mesedez - konpondu zuk zeuk iruzkin batekin.' + report_link_html: Ohar honek ezabatu beharreko informazio sentikorra badu, %{link} + dezakezu. new: title: Ohar berria intro: Akats bat edo zerbait falta zaizula ikusi duzu? Utzi beste mapa editatzaileek @@ -2757,6 +2924,13 @@ eu: gps: GPS aztarna publikoak overlays: Gaitu maparen konponketa egiteko gainjartzen direnak title: Geruzak + openstreetmap_contributors: OpenStreetMap laguntzaileak + make_a_donation: Dohaintza egin + website_and_api_terms: Webgunearen eta APIaren baldintzak + osm_france: OpenStreetMap Frantzia + andy_allan: Andy Allan + memomaps: MeMoMaps + hotosm_name: OpenStreetMap Talde humanitarioa site: edit_tooltip: Editatu mapa edit_disabled_tooltip: Handiagotu mapa aldatzeko @@ -2784,9 +2958,13 @@ eu: graphhopper_bicycle: Bizikletaz (GraphHopper) graphhopper_car: Autoz(GraphHopper) graphhopper_foot: Oinez (GraphHopper) + fossgis_valhalla_bicycle: Bizikleta (Valhalla) + fossgis_valhalla_car: Autoa (Valhalla) descend: Jaitsi directions: Norabideak distance: Distantzia + distance_m: '%{distance}m' + distance_km: '%{distance}' errors: no_route: Ezin izan da bi lekuen artean ibilbidea aurkitu. no_place: Barkatu - ezin izan da '%{place}' aurkitu. diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 6f51531b7..efa485f43 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -256,7 +256,7 @@ fa: openid: OpenID google: گوگل facebook: فیس‌بوک - windowslive: مایکروسافت + microsoft: مایکروسافت github: گیت‌هاب wikipedia: ویکی‌پدیا api: @@ -1837,7 +1837,7 @@ fa: facebook: title: ورود با فیسبوک alt: ورود با حساب فیسبوک - windowslive: + microsoft: title: ورود با مایکروسافت alt: ورود با حساب مایکروسافت github: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index a358fcd06..eb11333a9 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1166,7 +1166,7 @@ fi: financial: Rahoitusalan toimisto government: Virasto insurance: Vakuutusyhtiö - it: IT toimisto + it: IT-toimisto lawyer: Asianajotoimisto logistics: Logistiikkatoimisto newspaper: Sanomalehtitoimisto @@ -1821,6 +1821,9 @@ fi: home location: Kotipaikka no home location: Kotipaikkaa ei ole vielä määritetty. update home location on click: Päivitä kotipaikka karttaa napsauttaessa + show: Näytä + delete: Poista + undelete: Peruuta poistaminen update: success: Profiili päivitetty. failure: Profiilia ei voitu päivittää. @@ -1849,7 +1852,7 @@ fi: facebook: title: Kirjaudu Facebookin avulla alt: Kirjaudu käyttämällä Facebook-tunnustasi - windowslive: + microsoft: title: Kirjaudu Microsoft-tilin avulla alt: Kirjaudu sisään Microsoft-tililläsi github: @@ -2802,7 +2805,9 @@ fi: index: title: Käyttäjän %{user} kommentoimat ja luomat huomautukset heading: Käyttäjän %{user} karttailmoitukset - subheading_html: Käyttäjän %{user} kommentoimat ja luomat karttailmoitukset + subheading_html: Käyttäjän %{user} %{commented} ja %{submitted} karttailmoitukset + subheading_submitted: luomat + subheading_commented: kommentoimat no_notes: Ei muistiinpanoja id: Tunniste creator: Tekijä diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0aa7d67d6..553f83479 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -41,11 +41,13 @@ # Author: JenyxGym # Author: Jiremek # Author: Jlrb+ +# Author: Koreller # Author: Linedwell # Author: Litlok # Author: Ljubinka # Author: Ltrlg # Author: Lucky +# Author: Lulucmy # Author: Macofe # Author: Manaviko # Author: Mathieu @@ -309,12 +311,13 @@ fr: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipédia api: notes: comment: - opened_at_html: Créé le %{when} + opened_at_html: Créé %{when} opened_at_by_html: Créée %{when} par %{user} commented_at_html: Mis à jour le %{when} commented_at_by_html: Mis à jour le %{when} par %{user} @@ -324,6 +327,7 @@ fr: reopened_at_by_html: Réactivé à %{when} par %{user} rss: title: Notes OpenStreetMap + description_all: Une liste de notes rapportées, commentées ou fermées description_area: Une liste de notes, signalées, commentées ou fermées dans votre zone [(%{min_lat} ; %{min_lon}) – (%{max_lat} ; %{max_lon})] description_item: Un fil RSS pour la note %{id} @@ -339,12 +343,12 @@ fr: show: title: Supprimer mon compte warning: Avertissement ! Le processus de suppression de compte est définitif - et ne pourra pas être annulé. + et ne peut pas être annulé. delete_account: Supprimer un compte delete_introduction: 'Vous pouvez supprimer votre compte OpenStreetMap en utilisant le bouton ci-dessous. Veuillez prendre note des détails suivants :' - delete_profile: Vos informations de profil, y compris votre avatar, votre - description et votre emplacement de domicile seront retirés. + delete_profile: Les informations de votre profil, y compris votre avatar, + votre description et votre lieu de résidence seront supprimées. delete_display_name: Votre nom affiché sera supprimé et pourra être réutilisé pour d’autres comptes. retain_caveats: 'Cependant, quelques informations vous concernant seront conservées @@ -369,7 +373,7 @@ fr: external auth: Authentification externe openid: link: https://wiki.openstreetmap.org/wiki/FR:OpenID - link text: qu’est-ce que ceci ? + link text: qu’est-ce que cela ? public editing: heading: Modification publique enabled: Activée. Non anonyme et peut modifier les données. @@ -390,7 +394,7 @@ fr: link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms/FR link text: qu’est-ce que ceci ? save changes button: Enregistrer les modifications - delete_account: Suppression du compte... + delete_account: Supprimer le compte... go_public: heading: Modification publique currently_not_public: Actuellement, vos modifications sont anonymes et les utilisateurs @@ -1986,7 +1990,7 @@ fr: facebook: title: Connexion avec Facebook alt: Se connecter avec un compte de Facebook - windowslive: + microsoft: title: Connexion avec Microsoft alt: Se connecter avec un compte Microsoft github: @@ -2923,6 +2927,7 @@ fr: remove as friend: Supprimer en tant qu’ami add as friend: Ajouter en tant qu’ami mapper since: 'Cartographe depuis :' + uid: 'Identifiant utilisateur :' ct status: 'Conditions de contribution :' ct undecided: Indécis ct declined: Refusées @@ -3117,7 +3122,9 @@ fr: index: title: Notes soumises ou commentées par « %{user} » heading: Notes de « %{user} » - subheading_html: Notes soumises ou commentées par « %{user} » + subheading_html: Notes %{submitted} ou %{commented} par %{user} + subheading_submitted: soumis + subheading_commented: commenté no_notes: Aucune note id: Identifiant creator: Créateur diff --git a/config/locales/fur.yml b/config/locales/fur.yml index 219c282f7..fddcd757a 100644 --- a/config/locales/fur.yml +++ b/config/locales/fur.yml @@ -1123,7 +1123,7 @@ fur: facebook: title: Jentre cun Facebook alt: Jentre cuntun un cont Facebook - windowslive: + microsoft: title: Jentre cun Windows Live alt: Jentre cuntun cont di Windows Live github: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index fc81f938d..60d2efa81 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1800,7 +1800,7 @@ fy: facebook: title: Oanmelde mei Facebook alt: Meld jo oan mei in Facebook-akkount - windowslive: + microsoft: title: Oanmelde mei Windows Live alt: Meld jo oan mei in Windows Live-akkount github: diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 34d7bd4d6..81775a670 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1348,7 +1348,7 @@ ga: facebook: title: Logáil isteach le Facebook alt: Logáil isteach le Cuntas Facebook - windowslive: + microsoft: title: Logáil isteach le Windows Live alt: Logáil isteach le Cuntas Windows Live github: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index a2457bd6c..6a4f75c0c 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1189,7 +1189,7 @@ gd: facebook: title: Clàraich a-steach le Facebook alt: Clàraich a-steach le cunntas Facebook - windowslive: + microsoft: title: Clàraich a-steach le Windows Live alt: Clàraich a-steach le cunntas Windows Live github: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 460003de8..7446bf54b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -229,6 +229,7 @@ gl: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -244,7 +245,8 @@ gl: reopened_at_by_html: Reactivado %{when} por %{user} rss: title: Notas do OpenStreetMap - description_area: Unha listaxe das notas, denunciadas, comentadas ou pechadas + description_all: Unha lista das notas denunciadas, comentadas ou pechadas + description_area: Unha lista das notas denunciadas, comentadas ou pechadas na túa zona [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Unha fonte de novas RSS para a nota %{id} opened: nota nova (preto de %{place}) @@ -1848,6 +1850,9 @@ gl: no home location: Non inseriches o teu lugar de orixe. update home location on click: Desexas actualizar a túa localización ó premer sobre o mapa? + show: Amosar + delete: Borrar + undelete: Desfacer o borrado update: success: Perfil actualizado. failure: Non foi posíbel actualizar o perfil. @@ -1876,7 +1881,7 @@ gl: facebook: title: Iniciar a sesión co Facebook alt: Iniciar a sesión cunha conta do Facebook - windowslive: + microsoft: title: Iniciar a sesión con Microsoft alt: Iniciar a sesión cunha conta de Microsoft github: @@ -2779,6 +2784,7 @@ gl: remove as friend: Eliminar coma amizade add as friend: Engadir coma amizade mapper since: 'Cartógrafo dende:' + uid: 'Identificador de usuario:' ct status: 'Termos do colaborador:' ct undecided: Indeciso ct declined: Rexeitou @@ -2970,7 +2976,9 @@ gl: index: title: Notas enviadas ou comentadas por %{user} heading: Notas de %{user} - subheading_html: Notas enviadas ou comentadas por %{user} + subheading_html: Notas %{submitted} ou %{commented} por %{user} + subheading_submitted: enviadas + subheading_commented: comentadas no_notes: Sen notas id: ID creator: Creador @@ -3060,6 +3068,7 @@ gl: cyclosm: CyclOSM (Ciclista) cycle_map: Ciclista transport_map: Transporte + tracestracktop_topo: Tracestrack Topo hot: Humanitario opnvkarte: ÖPNVKarte (Transporte) layers: @@ -3078,6 +3087,8 @@ gl: andy_allan: Andy Allan opnvkarte_credit: Mosaicos cortesía de %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Mosaicos cortesía de %{tracestrack_link} + tracestrack: Tracestrack hotosm_credit: Estilo de mosaicos do %{hotosm_link} aloxado por %{osm_france_link} hotosm_name: equipo humanitario do OpenStreetMap site: diff --git a/config/locales/he.yml b/config/locales/he.yml index 36f7fab27..664f90fcb 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -51,7 +51,7 @@ he: prompt: בחירת קובץ submit: diary_comment: - create: הערה + create: פרסום הערה diary_entry: create: פרסום update: עדכון @@ -91,8 +91,8 @@ he: language: שפה message: הודעה node: נקודה - node_tag: תג צומת - old_node: צומת ישן + node_tag: תג נקודה + old_node: נקודה ישנה old_node_tag: תג צומת ישן old_relation: יחס ישן old_relation_member: איבר יחס ישן @@ -117,7 +117,7 @@ he: attributes: client_application: name: שם (נדרש) - url: כתובת יישום ראשית (נדרש) + url: כתובת יישום ראשית (נדרשת) callback_url: כתובת קריאה חוזרת (callback) support_url: כתובת לתמיכה allow_read_prefs: לקרוא את העדפות המשתמש שלהם @@ -273,7 +273,7 @@ he: openid: OpenID google: גוגל facebook: פייסבוק - windowslive: מיקרוסופט + microsoft: מיקרוסופט github: גיטהאב wikipedia: ויקיפדיה api: @@ -289,6 +289,7 @@ he: reopened_at_by_html: הופעלה מחדש %{when} על־ידי %{user} rss: title: הערות של OpenStreetMap + description_all: רשימה של הערות מדווחות, שהגיבו עליהן או שנסגרו description_area: רשימת הערות שהוספו, שהתקבלו עליהן הערות ושנפתרו באזור שלך [(%{min_lat}|%{min_lon}) – (%{max_lat}|%{max_lon})] description_item: הזנת rss עבור ההערה %{id} @@ -1898,7 +1899,7 @@ he: facebook: title: כניסה עם פייסבוק alt: כניסה עם חשבון פייסבוק - windowslive: + microsoft: title: כניסה עם מיקרוסופט alt: כניסה עם חשבון מיקרוסופט github: @@ -2764,6 +2765,7 @@ he: remove as friend: הסרה מרשימת חברים add as friend: הוספה כחבר mapper since: 'ממפה מאז:' + uid: 'מזהה משתמש:' ct status: 'תנאי תרומה:' ct undecided: עוד אין החלטה ct declined: נדחו @@ -2956,7 +2958,9 @@ he: index: title: הערות ותגובות של %{user} heading: הערות של %{user} - subheading_html: הערות ותגובות של %{user} + subheading_html: הערות ש%{submitted} על־ידי %{user} או %{commented} מאת %{user} + subheading_submitted: שנשלחו + subheading_commented: קיבלו תגובות no_notes: אין הערות id: מזהה creator: יוצר diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 692428839..36d0cfcb4 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -231,7 +231,7 @@ hi: openid: OpenID google: गूगल facebook: फेसबुक - windowslive: विन्डोज़ लाइव + microsoft: विन्डोज़ लाइव github: गिट्हब wikipedia: विकिपीडिया api: @@ -942,6 +942,8 @@ hi: delete image: इस तस्वीर को हटाएं replace image: इस तस्वीर की जगह दूसरी लगाएं home location: घर का स्थान + show: दिखाएँ + delete: हटाएँ site: about: legal_1_1_terms_of_use: उपयोग की शर्तें diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 17ef797bc..f916c38e9 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -852,7 +852,7 @@ hr: place: city: Grad country: Država - county: Županija/grofovija + county: Županija farm: Farma hamlet: Zaseok house: Kuća @@ -1251,7 +1251,7 @@ hr: facebook: title: Prijavi se sa Facebook-om alt: Prijavi se sa računom Facebook-a - windowslive: + microsoft: title: Prijavi se sa Windows Live-om alt: Prijavi se sa računom Windows Live-a github: @@ -1320,8 +1320,8 @@ hr: iz bilo kakvih izvora zaÅ¡tićenih autorskim pravima (npr. Google karte ili tiskane karte) bez izričitog dopuÅ¡tenja nositelja autorskih prava. index: - js_1: Koristite internet preglednik koji ne podržava JavaScript, ili vam je - isključen JavaScript. + js_1: Koristite preglednik koji ne podržava JavaScript ili Vam je JavaScript + isključen. js_2: OpenStreetMap koristi JavaScript za slippy kartu. permalink: Permalink shortlink: Kratki link diff --git a/config/locales/hsb.yml b/config/locales/hsb.yml index 79052ed54..9c28c2cad 100644 --- a/config/locales/hsb.yml +++ b/config/locales/hsb.yml @@ -1782,7 +1782,7 @@ hsb: facebook: title: Přizjewjenje z Facebook alt: Přizjewjenje z facebookowym kontom - windowslive: + microsoft: title: Přizjewjenje z Windows Live alt: Přizjewjenje z kontom Windows Live github: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 5df67b976..242aa3ae4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -33,6 +33,7 @@ # Author: Tacsipacsi # Author: Uno20001 # Author: Urbalazs +# Author: Zalán Hári # Author: Zizzerus --- hu: @@ -246,6 +247,7 @@ hu: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipédia api: @@ -261,6 +263,7 @@ hu: reopened_at_by_html: 'Újraaktiválta %{user} ekkor: %{when}' rss: title: OpenStreetMap jegyzetek + description_all: Jelentett, kommentált vagy lezárt feljegyzések listája description_area: Bejelentett, hozzászólással ellátott vagy lezárt jegyzetek a területeden [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: RSS hírcsatorna a %{id} jegyzethez @@ -1882,7 +1885,7 @@ hu: facebook: title: Bejelentkezés Facebook-kal alt: Bejelentkezés Facebook fiókkal - windowslive: + microsoft: title: Bejelentkezés Microsofttal. alt: Bejelentkezés Microsoft fiókkal github: @@ -1965,7 +1968,7 @@ hu: 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 + legal_2_2_registered_trademarks: az OSMF bejegyzett védjegyei partners_title: Partnerek copyright: foreign: @@ -2052,6 +2055,10 @@ hu: contributors_au_australia: Ausztrália contributors_au_geoscape_australia: Geoscape Australia contributors_ca_canada: Kanada + contributors_si_slovenia: Szlovénia + contributors_es_spain: Spanyolország + contributors_es_cc_by: CC BY 4.0 + contributors_gb_united_kingdom: Egyesült Királyság contributors_footer_2_html: Az adatok befoglalása az OpenStreetMapbe nem jelenti azt, hogy az eredeti adatszolgáltató támogatja az OpenStreetMapet, garanciát nyújt vagy felelősséget vállal rá. @@ -2851,7 +2858,9 @@ hu: index: title: '%{user} által beküldött vagy kommentált jegyzetek' heading: '%{user} jegyzetei' - subheading_html: '%{user} által beküldött vagy kommentált jegyzetek' + subheading_html: '%{user} által %{submitted} vagy %{commented} jegyzetek' + subheading_submitted: beküldött + subheading_commented: kommentált no_notes: Nincs jegyzet id: ID creator: Létrehozta diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 7a4063e4b..da1b37ba1 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -218,6 +218,7 @@ ia: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -233,6 +234,7 @@ ia: reopened_at_by_html: Reactivate %{when} per %{user} rss: title: Notas de OpenStreetMap + description_all: Un lista de notas reportate, commentate o claudite description_area: Un lista de notas reportate, commentate o claudite in tu area [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Syndication RSS pro le nota %{id} @@ -1870,7 +1872,7 @@ ia: facebook: title: Aperir session con Facebook alt: Aperir session con un conto de Facebook - windowslive: + microsoft: title: Aperir session con Microsoft alt: Aperir session con un conto Microsoft github: @@ -2761,6 +2763,7 @@ ia: remove as friend: Remover amico add as friend: Adder amico mapper since: 'Cartographo depost:' + uid: 'ID de usator:' ct status: 'Conditiones de contributor:' ct undecided: Indecise ct declined: Declinate @@ -2949,7 +2952,9 @@ ia: index: title: Notas submittite o commentate per %{user} heading: Notas de %{user} - subheading_html: Notas submittite o commentate per %{user} + subheading_html: Notas %{submitted} o %{commented} per %{user} + subheading_submitted: submittite + subheading_commented: commentate no_notes: Sin notas id: ID creator: Creator @@ -3040,6 +3045,7 @@ ia: cyclosm: CyclOSM cycle_map: Carta cyclista transport_map: Carta de transporto + tracestracktop_topo: Tracestrack Topo hot: Humanitario opnvkarte: ÖPNVKarte layers: @@ -3058,6 +3064,8 @@ ia: andy_allan: Andy Allan opnvkarte_credit: Tegulas fornite per %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Tegulas fornite per %{tracestrack_link} + tracestrack: Tracestrack hotosm_credit: Stilo de tegulas per %{hotosm_link} albergate per %{osm_france_link} hotosm_name: le Equipa Humanitari de OpenStreetMap site: diff --git a/config/locales/id.yml b/config/locales/id.yml index 00943412a..69501f68c 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1888,7 +1888,7 @@ id: facebook: title: Masuk dengan Facebook alt: Masuk dengan akun Facebook - windowslive: + microsoft: title: Masuk dengan Windows Live alt: Masuk dengan akun Windows Live github: diff --git a/config/locales/is.yml b/config/locales/is.yml index 297191f9d..efc567067 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1864,6 +1864,9 @@ is: home location: Upphafsstaðsetning no home location: Þú hefur ekki stillt staðsetningu þína. update home location on click: Uppfæra staðsetninguna þegar ég smelli á kortið + show: Birta + delete: Eyða + undelete: Afturkalla eyðingu update: success: Notandasíða uppfært. failure: Gat ekki uppfært kjörstillingar. @@ -1892,7 +1895,7 @@ is: facebook: title: Skrá inn með Facebook alt: Skrá inn með Facebook-aðgangi - windowslive: + microsoft: title: Skrá inn með Microsoft alt: Skrá inn með Microsoft-aðgangi github: diff --git a/config/locales/it.yml b/config/locales/it.yml index e000c5781..2600c31f3 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -272,6 +272,7 @@ it: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -287,6 +288,7 @@ it: reopened_at_by_html: Riaperta %{when} da %{user} rss: title: Note di OpenStreetMap + description_all: Un elenco di note segnalate, commentate o chiuse description_area: Una lista di note inserite, commentate o chiuse nella tua area [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Feed rss per la nota %{id} @@ -1898,6 +1900,7 @@ it: update home location on click: Aggiorna la posizione quando clicco sulla mappa? show: Mostra delete: Cancella + undelete: Annulla eliminazione update: success: Il profilo è stato aggiornato. failure: Impossibile aggiornare il profilo. @@ -1926,7 +1929,7 @@ it: facebook: title: Accedi con Facebook alt: Accedi con un account Facebook - windowslive: + microsoft: title: Accedi con Microsoft alt: Accedi con un account Microsoft github: @@ -2124,6 +2127,7 @@ it: (informazioni pubbliche della Serbia), 2018. contributors_rs_serbia: Serbia contributors_rs_rgz: Autorità geodetica serba + contributors_rs_open_data_portal: Portale nazionale degli open data contributors_si_credit_html: |- %{slovenia}: Contiene i dati provenienti dall'%{gu_link} e dal %{mkgp_link} (informazioni pubbliche della Slovenia). @@ -2818,6 +2822,7 @@ it: remove as friend: Rimuovi amico add as friend: Aggiungi amico mapper since: 'Mappatore dal:' + uid: 'ID utente:' ct status: 'Termini di collaborazione:' ct undecided: Indeciso ct declined: Non accetto @@ -3008,7 +3013,9 @@ it: index: title: Note inserite o commentate da %{user} heading: Note dell'utente %{user} - subheading_html: Note inserite o commentate da %{user} + subheading_html: Note %{submitted} o %{commented} da %{user} + subheading_submitted: inviate + subheading_commented: commentate no_notes: Nessuna nota id: Identificativo creator: Autore @@ -3116,6 +3123,7 @@ it: andy_allan: Andy Allan opnvkarte_credit: Tasselli per gentile concessione di %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Tasselli per gentile concessione di %{tracestrack_link} hotosm_credit: Stile tasselli di %{hotosm_link} ospitato da %{osm_france_link} hotosm_name: La squadra di OpenStreetMap Humanitarian site: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 9869ab108..13ec9bc9f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -269,7 +269,7 @@ ja: openid: OpenID google: Google facebook: Facebook - windowslive: マイクロソフト + microsoft: マイクロソフト github: GitHub wikipedia: ウィキペディア api: @@ -350,12 +350,12 @@ ja: browse: created: 作成 closed: クローズ - created_ago_html: '%{time_ago} に作成されました' + created_ago_html: '%{time_ago} に作成' closed_ago_html: '%{time_ago}に閉じられました' - created_ago_by_html: '%{user}によって%{time_ago}に作成されました' - closed_ago_by_html: '%{time_ago}に%{user}によって閉じられました' - deleted_ago_by_html: '%{time_ago}に%{user}によって削除されました' - edited_ago_by_html: '%{time_ago}に%{user}によって編集されました' + created_ago_by_html: '%{user}が%{time_ago}に作成' + closed_ago_by_html: '%{user}が%{time_ago}に閉じました' + deleted_ago_by_html: '%{user}が%{time_ago}に削除' + edited_ago_by_html: '%{user}が%{time_ago}に編集' version: バージョン in_changeset: 変更セット anonymous: 匿名 @@ -1795,7 +1795,7 @@ ja: facebook: title: Facebookでログイン alt: Facebook アカウントを使用してログイン - windowslive: + microsoft: title: Microsoftでログイン alt: Microsoftアカウントでログイン github: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index d2cb1a0d7..a5abc42d7 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -984,7 +984,7 @@ kab: facebook: title: Qqen s Facebook alt: Qqen s umidan Facebook - windowslive: + microsoft: title: Qqen s Windows Live alt: Qqen s umiḍan Windows Live github: diff --git a/config/locales/km.yml b/config/locales/km.yml index bd6415282..d32001d7b 100644 --- a/config/locales/km.yml +++ b/config/locales/km.yml @@ -673,7 +673,7 @@ km: title: កត់ឈ្មោះចូលដោយប្រើ Google facebook: title: កត់ឈ្មោះចូលដោយប្រើ Facebook - windowslive: + microsoft: title: កត់ឈ្មោះចូលដោយប្រើ Windows Live github: title: កត់ឈ្មោះចូលដោយប្រើ GitHub diff --git a/config/locales/kn.yml b/config/locales/kn.yml index 5925bc1a1..1a2964d20 100644 --- a/config/locales/kn.yml +++ b/config/locales/kn.yml @@ -170,7 +170,7 @@ kn: none: ಯಾವುದೂ ಇಲ್ಲ google: ಗೂಗಲ್ facebook: ಫೇಸ್‍ಬುಕ್ - windowslive: ವಿಂಡೋಸ್ ಲೈವ್ + microsoft: ವಿಂಡೋಸ್ ಲೈವ್ github: ಗಿಟ್‌ಹಬ್ wikipedia: ವಿಕಿಪೀಡಿಯ api: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 9fe8930a3..8783f551e 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1686,7 +1686,7 @@ ko: facebook: title: 페이스북으로 로그인 alt: 페이스북 계정으로 로그인하기 - windowslive: + microsoft: title: 윈도 라이브로 로그인하기 alt: 윈도 라이브 계정으로 로그인하기 github: diff --git a/config/locales/ksh.yml b/config/locales/ksh.yml index 3afc544cf..3cf67f7b5 100644 --- a/config/locales/ksh.yml +++ b/config/locales/ksh.yml @@ -228,7 +228,7 @@ ksh: facebook: title: Donn övver ene Zohjang op Facebook ennlogge alt: Donn övver ene Zohjang op Facebook ennlogge - windowslive: + microsoft: title: Donn medd enem Zohjang op Windows Live ennlogge alt: Donn medd enem Zohjang op Windows Live ennlogge github: diff --git a/config/locales/ku-Latn.yml b/config/locales/ku-Latn.yml index 5f245f4f8..fa8204752 100644 --- a/config/locales/ku-Latn.yml +++ b/config/locales/ku-Latn.yml @@ -171,41 +171,41 @@ ku-Latn: datetime: distance_in_words_ago: about_x_hours: - one: teqrîben berî saetekê + one: teqrîben berî %{count} saetê other: teqrîben berî %{count} saetan about_x_months: - one: teqrîben berî mehekê + one: teqrîben berî %{count} mehê other: teqrîben berî %{count} mehan about_x_years: - one: teqrîben berî salekê + one: teqrîben berî %{count} salê other: teqrîben berî %{count} salan almost_x_years: - one: hema bêje berî salekê - other: hema bêja berî %{count} salan + one: hema bêje berî %{count} salê + other: hema bêje berî %{count} salan half_a_minute: berî nîv deqeyê less_than_x_seconds: - one: kêmtirî saniyeyekê - other: kêmtirî berî %{count} saniyeyan + one: Berî kêmtirî %{count} saniyeyê + other: Berî kêmtirî %{count} saniyeyan less_than_x_minutes: - one: berî kêmtir deqeyekê + one: berî kêmtir %{count} deqeyê other: berî kêmtir ji %{count} deqeyan over_x_years: - one: berî zêdetirî salekê + one: berî zêdetirî %{count} salê other: berî zêdetirî %{count} salan x_seconds: - one: berî saniyeyekê + one: berî %{count} saniyeyê other: Berî %{count} saniyeyan x_minutes: - one: Berî deqeyekê + one: Berî %{count} deqeyê other: Berî %{count} deqeyan x_days: - one: berî rojekê + one: berî %{count} rojê other: berî %{count} rojan x_months: - one: berî mehekê - other: beî %{count} mehan + one: berî %{count} mehê + other: berî %{count} mehan x_years: - one: berî salekê + one: berî %{count} salê other: berî %{count} salan editor: default: Standard (vêga %{name}) @@ -221,6 +221,7 @@ ku-Latn: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wîkîpediya api: @@ -316,10 +317,10 @@ ku-Latn: no_comment: (bêşirove) part_of: Perçeyek ji part_of_relations: - one: 1 pêwendî + one: '%{count} pêwendî' other: '%{count} pêwendî' part_of_ways: - one: 1 rê + one: '%{count} rê' other: '%{count} rê' download_xml: XMLê daxe view_history: Dîrokê Bibîne @@ -335,6 +336,8 @@ ku-Latn: relation: Eleqe (%{count}) relation_paginated: Eleqe (%{x}-%{y} bi tevahî %{count}) comment: Şîrove (%{count}) + hidden_comment_by_html: Şîroveya veşartî ji %{user} %{time_ago} + comment_by_html: Şîroveya ji %{user} %{time_ago} changesetxml: Desteya guhartinan a XML osmchangexml: osmChange XML feed: @@ -361,7 +364,7 @@ ku-Latn: history_title_html: Dîroka Eleqeyêː %{name} members: Endam members_count: - one: 1 endam + one: '%{count} endam' other: '%{count} endam' relation_member: entry_role_html: '%{type} %{name} bi rola %{role}' @@ -529,9 +532,9 @@ ku-Latn: comment_link: Vê nivîsê şîrove bike reply_link: Peyamekî bişînê nivîserê comment_count: - zero: Bêşîrove one: '%{count} şîrove' other: '%{count} şîrove' + no_comments: Ti şîrove tine edit_link: Vê nivîsê biguherîne hide_link: Vê nivîsê veşêre unhide_link: Veşartina vê nivîsê rake @@ -607,6 +610,10 @@ ku-Latn: success: '%{name} ji hevalên te hate derxistin.' not_a_friend: '%{name} ne hevalekî/eke te ye.' geocoder: + search: + title: + results_from_html: Netîceyên ji %{results_link} + latlon: Daxilî search_osm_nominatim: prefix: aerialway: @@ -987,7 +994,7 @@ ku-Latn: fitness_station: Navenda Sporê garden: Baxçe golf_course: Cihê Golfê - horse_riding: Ajotina Hespê + horse_riding: Merkeza Ajotina Hespê ice_rink: Şemitandina li ser cemedê marina: Marîna miniature_golf: Golfa Mînyatûr @@ -1399,10 +1406,11 @@ ku-Latn: status: Rewş reports: Rapor last_updated: Rojanekirina dawî + last_updated_time_ago_user_html: '%{time_ago} ji aliyê %{user} ve' link_to_reports: Raporan Bibîne reports_count: - one: 1 Rapor - other: '%{count} Raporan' + one: '%{count} Rapor' + other: '%{count} Rapor' reported_item: Hêmanê Raporkirî states: ignored: Guh nedê @@ -1411,9 +1419,9 @@ ku-Latn: show: title: '%{status} Pirsgirêk #%{issue_id}' reports: - zero: Rapor tune ye - one: 1 rapor + one: '%{count} rapor' other: '%{count} raporan' + no_reports: Ti raporekî tine report_created_at: Pêşî di %{datetime} de hatiye raporkirin last_resolved_at: Herî dawî di %{datetime} de hat çareserkirin last_updated_at: Ji aliyê %{displayname} ve herî dawî di %{datetime} de hat @@ -1824,6 +1832,9 @@ ku-Latn: no home location: Te cihê malê xwe diyar nekir. update home location on click: Gava ku tu bitikînî ser nexşeyê bila cihê malê te were rojanekirin? + show: Nîşan bide + delete: Jê bibe + undelete: Jêbirinê vegerîne update: success: Profîl hate rojanekirin. failure: Profîlê nikare rojane bike. @@ -1852,9 +1863,9 @@ ku-Latn: facebook: title: Bi Facebookê têkeve alt: Bi hesabekî Facebookê têkeve - windowslive: - title: Bi Windows Live'ê têkeve - alt: Bi hesabê xwe yê Windows Liveê têkeve + microsoft: + title: Bi Microsoftê têkeve + alt: Bi hesabê xwe yê Microsoftê têkeve github: title: Bi GitHub'ê têkeve alt: Bi hesabekî GitHubê têbikeve @@ -1936,6 +1947,7 @@ ku-Latn: contributors_intro_html: 'Bi hezaran beşdarên me hene. Herwiha em ji ajansên nexşekirinê yên netewî û çavkaniyên din jî daneyên bi lîsansa-vekirî îhtîwa dikin, hinek ji wan ev in:' + contributors_2_contributors_page: Rûpela beşdaran contributors_footer_2_html: Daxilbûna daneyan a di OpenStreetMapê de nayê maneya ku peydakera daneyan yê eslî OpenStreetMapê teswîb dike, garantiyekî temîn dike an jî berpirsîyariyekê qebûl dike. @@ -2470,6 +2482,8 @@ ku-Latn: consider_pd: Tevî evên li jorê, tu dikarî bibijêrî ku beşdariyên te wek Malê Giştî (malê ku ne aîdî şexsekî ye) were qebûlkirin. consider_pd_why: Ev çi ye? + readable_summary: kurteya xwendinbar ê li gor însanan + informal_translations: tercimeyên nefermî continue: Dewam bike decline: Red bike you need to accept or decline: Ji bo ku dewam bikî, xêra xwe şertên beşdariyê @@ -2650,19 +2664,19 @@ ku-Latn: time_past_html: '%{time} qediya.' block_duration: hours: - one: 1 saetê + one: '%{count} saet' other: '%{count} saetan' days: - one: 1 roj + one: '%{count} roj' other: '%{count} rojan' weeks: - one: 1 heftî + one: '%{count} heftî' other: '%{count} heftiyan' months: - one: 1 meh + one: '%{count} meh' other: '%{count} mehan' years: - one: 1 sal + one: '%{count} sal' other: '%{count} salan' blocks_on: title: Astengiyên ser %{name} @@ -2704,7 +2718,9 @@ ku-Latn: index: title: Notên ku ji aliyê %{user} ve hatine şandin an jî şirovekirin heading: Notên %{user} - subheading_html: Notên ku ji aliyê %{user} ve hatine şandin an jî şirovekirin + subheading_html: Notên ku ji aliyê %{user} ve %{submitted} an %{commented} + subheading_submitted: hatiye şandin + subheading_commented: şîrovekirî li ser no_notes: Not tine id: Id creator: Çêker @@ -2717,6 +2733,16 @@ ku-Latn: open_title: 'Nota ku nehatiye çarekirin #%{note_name}' closed_title: 'Nota ku hatiye çarekirin #%{note_name}' hidden_title: 'Notê veşartî #%{note_name}' + event_opened_by_html: Ji aliyê %{user} ve %{time_ago} hatiye çêkirin + event_opened_by_anonymous_html: Ji aliyê anonîmekî ve %{time_ago} hatiye çêkirin + event_commented_by_html: Şîrove ji %{user} %{time_ago} + event_commented_by_anonymous_html: Şîroveya ji anonîm %{time_ago} + event_closed_by_html: Ji aliyê %{user} ve %{time_ago} hate çareserkirin + event_closed_by_anonymous_html: Ji aliyê anonîmekî ve %{time_ago} hatiye çareserkirin + event_reopened_by_html: Ji aliyê %{user} ve %{time_ago} cardin hatiye aktîvkirin + event_reopened_by_anonymous_html: Ji aliyê anonîmekî ve %{time_ago} cardin hatiye + aktîvkirin + event_hidden_by_html: Hatiye veşartin ji aliyê %{user} ve %{time_ago} report: vê nîşeyê gilî bike anonymous_warning: Ji ber ku di vê notê de ji bikarhênerên anonîm şirove hene, divê bi awayekî serbixwe were teyîdkirin. @@ -2776,11 +2802,11 @@ ku-Latn: locate: title: Cihê min nîşan bide metersPopup: - one: Tu di nava 1 metreya vê nuqteyê de yî + one: Tu di nava %{count} metreya vê nuqteyê de yî other: Tu di nava %{count} metreyên vê nuqteyê de yî feetPopup: - one: Tu 1 gav di nava vê nuqteyê de yî - other: Tu d nava %{count} gavên vê nuqteyê de yî + one: Tu %{count} gav di nava vê nuqteyê de yî + other: Tu di nava %{count} gavên vê nuqteyê de yî base: standard: Standard cyclosm: CyclOSM @@ -2795,6 +2821,10 @@ ku-Latn: gps: Şopên GPSê yên giştî overlays: Ji bo ku pirsgirêkan çareser bikî tebeqeyan bide aktîvkirin title: Tebeqeyên nexşeyê + openstreetmap_contributors: Beşdarên OpenStreetMapê + make_a_donation: Bexş bike + website_and_api_terms: Malper û şertên APIyê + osm_france: OpenStreetMap Fransa site: edit_tooltip: Nexşeyê sererast bike edit_disabled_tooltip: Ji bo sererastkirina nexşeyê nêzîk bike diff --git a/config/locales/lb.yml b/config/locales/lb.yml index 7d92e3a5a..824f8fce1 100644 --- a/config/locales/lb.yml +++ b/config/locales/lb.yml @@ -48,7 +48,7 @@ lb: errors: messages: invalid_email_address: schéngt keng valabel E-Mail-Adress ze sinn - email_address_not_routable: ass net routingfäheg + email_address_not_routable: ass net routingfäeg models: acl: Zougrëffssteierlëscht changeset: Set vun Ännerungen @@ -96,7 +96,7 @@ lb: allow_write_api: d'Kaart änneren allow_read_gpx: Zougrëff op hir privat GPS-Spueren allow_write_gpx: GPS-Spueren eroplueden - allow_write_notes: Notizë beaarbechten + allow_write_notes: Notize beaarbechten diary_comment: body: Text diary_entry: @@ -108,7 +108,7 @@ lb: language_code: Sprooch doorkeeper/application: name: Numm - redirect_uri: Weiderleedungs-URIën + redirect_uri: Weiderleedungs-URIen confidential: Confidentiel Applikatioun? scopes: Autorisatiounen friend: @@ -155,14 +155,14 @@ lb: help: doorkeeper/application: confidential: Et gëtt eng Applikatioun verwent, bei där d'Clientsgeheimnis - vertraulech behandelt ka ginn (nativ- an eesäiteg Appë sinn net vertraulech) + vertraulech behandelt ka ginn (nativ- an eesäiteg Appe sinn net vertraulech) redirect_uri: Pro URI eng Zeil benotzen trace: tagstring: Mat Komma getrennt user_block: reason: De Grond, firwat de Benotzer / d'Benotzerin gespaart ass. Sief wannechgelift esou roueg a sachlech wéi méiglech. Beschreif d'Lag méiglechst detailléiert - an denk dorun, datt déng Noriicht ëffentlech siichtbar ass. Denk och dorun, + an denk dorun, datt deng Noriicht ëffentlech siichtbar ass. Denk och dorun, datt net all d'Benotzer de Jargon vum Gemeinschaftsprojet verstinn a benotz wannechgelift Formuléierungen, déi fir Laie verständlech sinn. needs_view: Muss sech de Benotzer umellen, ier dës Spär opgehuewe gëtt? @@ -1840,7 +1840,7 @@ lb: facebook: title: Mat Facebook aloggen alt: Mat engem Facebook Benotzerkont aloggen - windowslive: + microsoft: title: Mat Microsoft aloggen alt: Mat engem Microsoft-Benotzerkont aloggen github: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index b09bc0c78..7447cf521 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -1775,6 +1775,9 @@ lt: home location: Pradinė lokacija no home location: JÅ«s neįvedėte savo namų pozicijos update home location on click: Atnaujinti namų poziciją paspaudus ant žemėlapio? + show: Rodyti + delete: Trinti + undelete: Anuliuoti trynimą update: success: Profilis atnaujintas. failure: Nepavyko atnaujinti profilio. @@ -1803,7 +1806,7 @@ lt: facebook: title: Prisijungti su Facebook alt: Prisijungti su Facebook paskyra - windowslive: + microsoft: title: Prisijungti su Windows Live alt: Prisijungti su Windows Live paskyra github: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 3c78c0c8a..3edc42d98 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -7,6 +7,7 @@ # Author: Cuu508 # Author: Danieldegroot2 # Author: Edgars2007 +# Author: Edgarsdna # Author: GreenZeb # Author: Jmg.cmdi # Author: Karlis @@ -156,6 +157,10 @@ lv: datetime: distance_in_words_ago: half_a_minute: pirms pusminÅ«tes + less_than_x_minutes: + zero: pirms mazāk nekā %{count} minÅ«tēm + one: pirms mazāk nekā %{count} minÅ«tes + other: pirms mazāk nekā %{count} minÅ«tēm editor: default: Noklusējuma (paÅ¡laik %{name}) id: @@ -253,6 +258,10 @@ lv: anonymous: anonÄ«ms no_comment: (nav komentāru) part_of: Daļa no + part_of_relations: + zero: '%{count} attiecÄ«bas' + one: '%{count} attiecÄ«ba' + other: '%{count} attiecÄ«bas' download_xml: Lejupielādēt XML view_history: SkatÄ«t vēsturi view_details: SkatÄ«t detaļas @@ -385,6 +394,9 @@ lv: nearby mapper: Kartētājs tuvējā apkārtnē friend: Draugs show: + title: Mans vadÄ«bas panelis + no_home_location_html: '%{edit_profile_link} un iestatiet savu atraÅ¡anās vietu, + lai redzētu tuvumā esoÅ¡os lietotājus.' my friends: Mani draugi no friends: Tu vēl neesi pievienojis draugus. nearby users: Citi tuvumā esoÅ¡i lietotāji @@ -1195,6 +1207,7 @@ lv: help: PalÄ«dzÄ«ba about: Par copyright: AutortiesÄ«bas + communities: Kopienas community: Kopiena community_blogs: Kopienas emuāri community_blogs_title: OpenStreetMap kopienas locekļu emuāri @@ -1462,7 +1475,7 @@ lv: facebook: title: Pieslēgties ar Facebook alt: Pieslēgties ar Facebook kontu - windowslive: + microsoft: title: Pieslēgties ar Microsoft alt: Pieslēgties ar Microsoft kontu github: @@ -1489,6 +1502,7 @@ lv: site: about: next: Tālāk + heading_html: '%{copyright}OpenStreetMap %{br} datu sniedzēji' used_by_html: '%{name} darbina kartes datus simtiem mājaslapu, mobilajās aplikācijās un aparatÅ«ras ierÄ«cēs' lede_text: OpenStreetMap bÅ«vē kartētāju kopiena, kuri iegulda un uztur datus @@ -1676,6 +1690,7 @@ lv: where_am_i: Kur tas ir? where_am_i_title: Aprakstiet paÅ¡reizējo atraÅ¡anās vietu izmantojot meklētāju submit_text: OK + reverse_directions_text: Apgriezt virzienu key: table: entry: @@ -1769,6 +1784,20 @@ lv: para_1: Ja tu vēlies labot ko mazu un nav laika lai piereÄ£istrētos vai iemācÄ«tos kā rediģēt, ir iespējams vienkārÅ¡i atstāt piezÄ«mi. the_map: karte + communities: + title: Kopienas + lede_text: |- + OpenStreetMap veido vai izmanto cilvēki no visas pasaules. + Daudzi piedalās individuāli, bet citi ir izveidojuÅ¡i kopienas. + Å Ä«s grupas ir dažāda lieluma un pārstāv dažādas Ä£eogrāfiskās teritorijas - no mazām pilsētām lÄ«dz lieliem daudzvalstu reÄ£ioniem. + Tās var bÅ«t arÄ« formālas vai neformālas. + local_chapters: + list_text: 'Šādas kopienas ir oficiāli izveidotas kā vietējās nodaļas:' + other_groups: + other_groups_html: |- + Nav nepiecieÅ¡ams formāli izveidot grupu tādā pašā apjomā kā vietējās nodaļas. + Patiešām, daudzas grupas ļoti veiksmÄ«gi pastāv kā neformāla cilvēku pulcēšanās vai kā + kopienas grupa. Tās var izveidot vai pievienoties ikviens. Vairāk lasiet %{communities_wiki_link}. traces: visibility: private: Privāts (kopÄ«gots kā anonÄ«ms, nesakārtoti punkti) @@ -1981,6 +2010,8 @@ lv: my profile: Mans profils my settings: Mani iestatÄ«jumi my comments: Mani komentāri + my_preferences: Mani iestatÄ«jumi + my_dashboard: Mans vadÄ«bas panelis blocks on me: Bloki uz mani blocks by me: Manis pieÅ¡Ä·irtie Bloki send message: NosÅ«tÄ«t ziņojumu @@ -2166,6 +2197,7 @@ lv: open_title: 'Neatrisināta piezÄ«me: #%{note_name}' closed_title: 'Atrisināta piezÄ«me: #%{note_name}' hidden_title: 'Paslēpta piezÄ«me #%{note_name}' + event_opened_by_html: Izveidoja %{user} %{time_ago} report: Ziņot par Å¡o piezÄ«mi anonymous_warning: Å Ä« piezÄ«me ietver komentārus no anonÄ«miem lietotājiem, kurus nepiecieÅ¡ams pārbaudÄ«t neatkarÄ«gi. @@ -2174,6 +2206,10 @@ lv: reactivate: Atkal aktivizēt comment_and_resolve: Komentēt un atrisināt comment: Komentēt + report_link_html: Ja Å¡ajā piezÄ«mē ir konfidenciāla informācija, kas jādzēš, + varat %{link}. + other_problems_resolve: Visas pārējās problēmas, kas saistÄ«tas ar piezÄ«mi, lÅ«dzu, + atrisiniet paÅ¡i, pievienojot komentāru. new: title: Jauna piezÄ«me intro: PiezÄ«mes domātas, lai norādÄ«tu uz kartes kļūdām. Ja vēlies pamēģināt @@ -2182,6 +2218,9 @@ lv: precÄ«zāk un detalizētāk visu izklāsti, kā arÄ« marÄ·ieri novieto pēc iespējas pareizākajā pozÄ«cijā. (LÅ«dzu neizmantojiet personÄ«go informāciju vai arÄ« informāciju no citām ar autortiesÄ«bām aizsargātām kartēm.) + advice: JÅ«su piezÄ«me ir publiska, un to var izmantot kartes atjaunināšanai, + tāpēc neievadiet personisku informāciju vai informāciju no kartēm vai direktoriju + sarakstiem, uz kuriem attiecas autortiesÄ«bas. add: Pievienot piezÄ«mi javascripts: close: Aizvērt @@ -2197,6 +2236,7 @@ lv: custom_dimensions: UzstādÄ«t pielāgotus izmērus format: 'Formāts:' scale: 'Mērogs:' + image_dimensions: Attēlā bÅ«s redzams standarta slānis %{width} x %{height} download: Lejupielādēt short_url: Īsais URL include_marker: Iekļaut marÄ·ieri @@ -2228,6 +2268,8 @@ lv: data: Kartes dati overlays: Iespējot pārklājumus, lai novērstu trÅ«kumus kartei title: Slāņi + make_a_donation: Veikt ziedojumu + website_and_api_terms: TÄ«mekļa vietnes un API noteikumi site: edit_tooltip: Rediģēt karti edit_disabled_tooltip: Pietuvini, lai rediģētu karti @@ -2246,10 +2288,12 @@ lv: unhide_comment: parādÄ«t edit_help: Pārvieto karti un pietuvini vietai, kuru vēlies labot, tad spied Å¡eit. directions: + ascend: Kāpums engines: fossgis_osrm_car: Ar maÅ¡Ä«nu (OSRM) graphhopper_bicycle: Ar velosipēdu (GraphHopper) graphhopper_foot: Ar kājām (GraphHopper) + descend: Kritums directions: Norādes distance: Attālums errors: @@ -2285,7 +2329,7 @@ lv: end_oneway_without_exit: Vienvirziena ceļa beigas pie %{name} roundabout_with_exit: Pēc apkārtceļa nogriezieties uz izejas %{exit} pie %{name} unnamed: nenosaukts ceļš - courtesy: Virzienos, pieklājÄ«gi no %{link} + courtesy: Norādes no %{link} exit_counts: first: "1." second: "2." diff --git a/config/locales/mk.yml b/config/locales/mk.yml index 720b34c6b..f6045106f 100644 --- a/config/locales/mk.yml +++ b/config/locales/mk.yml @@ -220,6 +220,7 @@ mk: openid: OpenID google: Google facebook: Фејсбук + microsoft: Microsoft github: GitHub wikipedia: Википедија api: @@ -235,6 +236,7 @@ mk: reopened_at_by_html: Повторно отворено %{when} од %{user} rss: title: Белешки на OpenStreetMap + description_all: Список на пријавени, коментирани или затворени белешки description_area: Список на белешки, создадени, искометирани или затворени, во вашата околина [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: RSS-тековник за белешката %{id} @@ -1859,7 +1861,7 @@ mk: facebook: title: Најава со Фејсбук alt: Најава со профил на Фејсбук - windowslive: + microsoft: title: Најава со Microsoft alt: Најава со сметка на Microsoft github: @@ -2747,6 +2749,7 @@ mk: remove as friend: Отстрани од пријатели add as friend: Додај во пријатели mapper since: 'Картограф од:' + uid: 'Корисничка назнака:' ct status: 'Услови за учество:' ct undecided: Неодлучено ct declined: Одбиен @@ -2937,7 +2940,9 @@ mk: index: title: Белешки создадени или коментирани од %{user} heading: Белешки на %{user} - subheading_html: Белешки создадени или коментирани од %{user} + subheading_html: Белешки %{submitted} или %{commented} од %{user} + subheading_submitted: создадени + subheading_commented: коментирани no_notes: Нема белешки id: Назнака creator: Создавач @@ -3027,6 +3032,7 @@ mk: cyclosm: CyclOSM cycle_map: Велосипедска transport_map: Сообраќајна + tracestracktop_topo: Tracestrack Топо hot: Хуманитарна opnvkarte: ÖPNVKarte layers: @@ -3045,6 +3051,8 @@ mk: andy_allan: Енди Алан opnvkarte_credit: Полињата се доставени од %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Полињата се доставени од %{tracestrack_link} + tracestrack: Tracestrack hotosm_credit: Стилот на полињата е од %{hotosm_link} вдомен од %{osm_france_link} hotosm_name: Екипа на Хуманитарната OpenStreetMap site: diff --git a/config/locales/mo.yml b/config/locales/mo.yml index 1fe000ae9..b8183b232 100644 --- a/config/locales/mo.yml +++ b/config/locales/mo.yml @@ -580,7 +580,7 @@ mo: facebook: title: Ынтраря ку ажуторул Facebook alt: Ынтраря ку ажуторул контулуй де Facebook - windowslive: + microsoft: title: Ынтраря ку ажуторул Windows Live alt: Ынтраря ку ажуторул контулуй де Windows Live github: diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 129e0d1a1..176c877d4 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -5,6 +5,7 @@ # Author: Anakmalaysia # Author: Hakimi97 # Author: Izing +# Author: Izington # Author: Jeluang Terluang # Author: Karmadunya9- # Author: Macofe @@ -200,6 +201,7 @@ ms: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -1464,7 +1466,7 @@ ms: facebook: title: Log masuk dengan Facebook alt: Log masuk dengan Akuan Facebook - windowslive: + microsoft: title: Log masuk dengan Window Live alt: Log masuk dengan Akaun Windows Live github: diff --git a/config/locales/nb.yml b/config/locales/nb.yml index 34e08cea6..6d8323aab 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -1616,7 +1616,7 @@ nb: facebook: title: Logg inn med Facebook alt: Logg inn med en Facebook-konto - windowslive: + microsoft: title: Logg inn med Microsoft alt: Logg inn med en Microsoft-konto github: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 95794336a..02843f1ed 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -272,6 +272,7 @@ nl: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -287,6 +288,8 @@ nl: reopened_at_by_html: '%{when} opnieuw geactiveerd door %{user}' rss: title: OpenStreetMap-opmerkingen + description_all: Een lijst met gerapporteerde, becommentarieerde of gesloten + opmerkingen description_area: Een lijst met opmerkingen en reacties in uw gebied [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Een RSS-feed voor opmerking %{id} @@ -1931,7 +1934,7 @@ nl: facebook: title: Aanmelden met Facebook alt: Aanmelden met een Facebookaccount - windowslive: + microsoft: title: Aanmelden met Microsoft alt: Aanmelden met een Microsoft-account github: @@ -2832,6 +2835,7 @@ nl: remove as friend: Vriend verwijderen add as friend: Vriend toevoegen mapper since: 'Mapper sinds:' + uid: 'Gebruikers-ID:' ct status: 'Voorwaarden voor bijdragen:' ct undecided: Onbeslist ct declined: Afgewezen @@ -3024,7 +3028,9 @@ nl: index: title: Opmerkingen gemaakt door %{user} heading: Opmerkingen van %{user} - subheading_html: Opmerkingen gemaakt door %{user} + subheading_html: Opmerkingen %{submitted} of %{commented} door %{user} + subheading_submitted: verzonden + subheading_commented: gereageerd op no_notes: Geen opmerkingen id: Id creator: Auteur diff --git a/config/locales/nn.yml b/config/locales/nn.yml index e5cda0b9c..2b594f0bb 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -11,6 +11,7 @@ # Author: Gunnernett # Author: Harald Khan # Author: Macofe +# Author: Maddy from Celeste # Author: McDutchie # Author: Nemo bis # Author: Nghtwlkr @@ -26,9 +27,11 @@ nn: formats: friendly: '%e %B %Y kl. %H:%M' helpers: + file: + prompt: Vel fil submit: diary_comment: - create: Lagre + create: Kommenter diary_entry: create: Publiser update: Oppdater @@ -39,6 +42,9 @@ nn: client_application: create: Registrer update: Oppdater + oauth2_application: + create: Registrer + update: Oppdater redaction: create: Lag maskering update: Lagre markering @@ -127,26 +133,32 @@ nn: description: Skildring user: email: E-post - new_email: 'Ny e-postadresse:' + email_confirmation: Stadfesting av e-post + new_email: Ny e-postadresse active: Aktive display_name: Visningsnamn - description: Skildring - home_lat: 'Breiddegrad:' - home_lon: 'Lengdegrad:' - languages: SprÃ¥k + description: Skildring profilen + home_lat: Breiddegrad + home_lon: Lengdegrad + languages: Føretrekte sprÃ¥k + preferred_editor: Føretrekt redigeringsprogram pass_crypt: Passord pass_crypt_confirmation: Stadfest passord help: trace: tagstring: kommaseparert user_block: + reason: Årsaka for at brukaren vert blokkert. Ver venleg og ver so sindig + og fornuftig som mogleg, gje so mykje opplysingar om situasjonen som du + kan med tanke pÃ¥ at meldinga vil vera synleg for Ã¥lmenta. Hugs pÃ¥ at ikkje + alle brukarar har kjennskap til sjargongen, so prøv Ã¥ bruka Ã¥lmenne omgrep. needs_view: MÃ¥ brukaren logge inn før denne blokkeringa vert fjerna? user: new_email: ' (vis aldri offentleg)' datetime: distance_in_words_ago: about_x_hours: - one: omkring 1 time sidan + one: omkring %{count} time sidan other: omkring %{count} timar sidan about_x_months: one: omkring 1 mÃ¥nad sidan @@ -157,6 +169,7 @@ nn: almost_x_years: one: nesten 1 Ã¥r sidan other: nesten %{count} Ã¥r sidan + half_a_minute: for eit halvminutt sidan less_than_x_seconds: one: mindre enn 1 sekund sidan other: mindre enn %{count} sekund sidan @@ -188,16 +201,18 @@ nn: description: Lokalt installert program (JOSM eller Merkaartor) auth: providers: + none: Ingen openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: notes: comment: - opened_at_html: Oppretta for %{when} sidan - opened_at_by_html: Oppretta for %{when} sidan av %{user} + opened_at_html: Oppretta %{when} + opened_at_by_html: Oppretta %{when} av %{user} commented_at_html: Oppdatert %{when} commented_at_by_html: Oppdatert %{when} av %{user} closed_at_html: Løyst %{when} @@ -210,11 +225,37 @@ nn: entry: comment: Kommentar full: Fullstendig merknad + account: + deletions: + show: + title: Slett kontoen min + warning: Åtvaring! Sletting av konto er endeleg, og kan ikkje gjerast om. + delete_account: Slett konto + delete_introduction: 'Du kan sletta kontoen din hjÃ¥ OpenStreetMap med knappen + under. Merk fylgjande:' + delete_profile: Profilinformasjonen din, medrekna profilbilde, skildring og + heimestad vil fjernast. + delete_display_name: Det viste namnet ditt vil fjernast, og kan brukast av + andre kontoar. + retain_caveats: Somme opplysingar vil verte tatt vare pÃ¥, til og med etter + at kontoen din er sletta. + retain_edits: Eventuelle redigeringer av kartdatabasen vil behaldast. + retain_traces: Spor du har lasta opp vil behaldast. + retain_diary_entries: Innlegg og kommentarar frÃ¥ deg i brukardagboken vil + verte tekne vare pÃ¥, men skylte frÃ¥ Ã¥lmenta. + retain_notes: Merknadane og kommentarane dine vil verte tekne vare pÃ¥, men + skylt frÃ¥ Ã¥lmenta. + retain_changeset_discussions: Tilskota dine til diskusjonar om endringssett + vil behaldast. + retain_email: E-postadressa di vil behaldast. + confirm_delete: Er du sikker? + cancel: Bryt av accounts: edit: title: Rediger konto my settings: Innstellingane mine - current email address: 'Noverande e-postadresse:' + current email address: Noverande e-postadresse + external auth: Ekstern autentisering openid: link text: kva er dette? public editing: @@ -225,7 +266,7 @@ nn: er anonyme. disabled link text: kvifor can eg ikkje redigere? contributor terms: - heading: 'BidragsytervilkÃ¥r:' + heading: VilkÃ¥r for bidragsytarar agreed: Du har godkjent dei nye bidragsytervilkÃ¥ra not yet agreed: Du har endÃ¥ ikkje godkjent dei nye bidragsytervilkÃ¥ra. review link text: Vennligst følg denne lenkja nÃ¥r det passar deg, for Ã¥ sjÃ¥ @@ -234,20 +275,46 @@ nn: offentleg eigedom (Public Domain). link text: kva er dette? save changes button: Lagre endringar + delete_account: Slett konto... go_public: - heading: 'Offentleg redigering:' + heading: Offentleg redigering + currently_not_public: Nett no er redigeringane dine anonyme, og folk kan ikkje + senda deg meldingar eller sjÃ¥ kor du er. For Ã¥ visa kva du har redigert og + la folk kontakta deg gjennom nettstaden, klikk pÃ¥ knappen nedanfor. + only_public_can_edit: Sidan overgangen til 0.6-API-et, kan berre offentlege + brukarar redigera kartdata. + find_out_why: finn ut kvifor + email_not_revealed: E-postadressa di vil ikkje verte synleg for Ã¥lmenta nÃ¥r + kontoen din vert offentleg. + not_reversible: Denne handlinga kan ikkje omgjerast, og alle nye brukarar er + no offentlege frÃ¥ byrjinga. make_edits_public_button: Gjer alle redigeringane mine offentleg update: success_confirm_needed: Brukerinformasjon oppdatert. Sjekk eposten din for Ã¥ stadfeste din epostadresse. success: Brukerinformasjon oppdatert. + destroy: + success: Kontoen er sletta. browse: created: Oppretta closed: Attlaten + created_ago_html: Oppretta %{time_ago} + closed_ago_html: Lukka %{time_ago} + created_ago_by_html: Oppretta %{time_ago} av %{user} + closed_ago_by_html: Lukka %{time_ago} av %{user} + deleted_ago_by_html: Sletta %{time_ago} av %{user} + edited_ago_by_html: Redigert %{time_ago} av %{user} version: 'Versjon:' + in_changeset: Endringssett anonymous: anonym no_comment: (ingen kommentar) part_of: Del av + part_of_relations: + one: '%{count} samhøve' + other: '%{count} samhøve' + part_of_ways: + one: 1 line + other: '%{count} liner' download_xml: Last ned XML view_history: Vis historikk view_details: Vis detaljar @@ -259,7 +326,11 @@ nn: node_paginated: Punkt (%{x}-%{y} av %{count}) way: Strekningar (%{count}) way_paginated: Strekningar (%{x}-%{y} av %{count}) + relation: Samhøve (%{count}) + relation_paginated: Samhøve (%{x}–%{y} av %{count}) comment: Kommentarar (%{count}) + hidden_comment_by_html: Skylt kommentar frÃ¥ %{user} %{time_ago} + comment_by_html: Kommentar frÃ¥ %{user} %{time_ago} changesetxml: XML for endringssett osmchangexml: osmChange XML feed: @@ -267,6 +338,8 @@ nn: title_comment: 'Endringssett: %{id} - %{comment}' join_discussion: Logg inn for Ã¥ vere med i diskusjonen discussion: Ordskifte + still_open: Endringssettet er framleis ope – det vert opna for diskusjon nÃ¥r + endringssettet vert lukka. node: title_html: 'Punkt: %{name}' history_title_html: 'Punkthistorikk: %{name}' @@ -274,11 +347,19 @@ nn: title_html: 'Strekning: %{name}' history_title_html: 'Strekningshistorikk: %{name}' nodes: Punkt + nodes_count: + one: '%{count} punkt' + other: '%{count} punkt' also_part_of_html: one: delstrekning %{related_ways} other: delstrekningar %{related_ways} relation: + title_html: 'Samhøve: %{name}' + history_title_html: 'Samhøvehistorikk: %{name}' members: Medlemmar + members_count: + one: '%{count} medlem' + other: '%{count} medlemar' relation_member: entry_role_html: '%{type} %{name} som %{role}' type: @@ -289,6 +370,7 @@ nn: entry_html: Relasjon %{relation_name} entry_role_html: Relasjon %{relation_name} (som %{relation_role}) not_found: + title: Ikkje funne sorry: Beklagar, klarte ikkje Ã¥ finne %{type}-en med ID %{id}. type: node: node @@ -297,6 +379,7 @@ nn: changeset: endringssett note: merknad timeout: + title: Tida gjekk ut sorry: Beklagar, data for %{type} med id %{id} tok for lang tid Ã¥ hente. type: node: punkt @@ -313,6 +396,8 @@ nn: way: vegen relation: relasjonen start_rjs: + feature_warning: Hentar %{num_features} kartobjekt, noe som kan gjera at nettlesaren + vert treg eller stoppar heilt. Er du sikker pÃ¥ at du vil visa desse datuma? load_data: Last inn data loading: Lastar... tag_details: @@ -322,10 +407,14 @@ nn: tag: Wiki-beskrivelsessiden for %{key}=%{value}-elementet wikidata_link: Elementet %{page} pÃ¥ Wikidata wikipedia_link: Artikkelen %{page} pÃ¥ Wikipedia + wikimedia_commons_link: Sida %{page} pÃ¥ Wikimedia Commons telephone_link: Ring %{phone_number} + colour_preview: Førehandsvising av farga %{colour_value} query: - title: Førespurnadsfunksjonar - nearby: Nærliggjande funksjonar + title: Finn objekt + introduction: Klikk pÃ¥ kartet for Ã¥ visa objekt i nærleiken. + nearby: Nærliggjande objekt + enclosing: Omgjevande objekt changesets: changeset_paging_nav: showing_page: Side %{page} @@ -344,6 +433,7 @@ nn: index: title: Endringssett title_user: Endringssett av %{user} + title_user_link_html: Endringssett av %{user_link} title_friend: Endringssett av venene dine title_nearby: Endringssett av brukarar i nærleiken empty: Fann ingen endringssett. @@ -354,10 +444,18 @@ nn: no_more_user: Ingen fleire endringssett av denne brukaren. load_more: Last inn meir timeout: - sorry: Lista over endringssett tok for lang tid Ã¥ hente. + sorry: Lista over endringssett du ba om tok for lang tid Ã¥ hente. changeset_comments: comment: - commented_at_by_html: Oppdatert for %{when} sidan av %{user} + comment: 'Ny kommentar til endringssett #%{changeset_id} av %{author}' + commented_at_by_html: Oppdatert %{when} av %{user} + comments: + comment: 'Ny kommentar til endringssett #%{changeset_id} av %{author}' + index: + title_all: Endringssettdiskusjon hjÃ¥ OpenStreetMap + title_particular: Diskusjon om endringssett %{changeset_id} hjÃ¥ OpenStreetMap + timeout: + sorry: Lista over kommentarar til endringssett tok for lang tid Ã¥ henta. dashboards: contact: km away: '%{count}km unna' @@ -367,6 +465,10 @@ nn: nearby mapper: Brukarar i nærleiken friend: Ven show: + title: Kontrollpanelet mitt + no_home_location_html: '%{edit_profile_link} og set heimestaden din for Ã¥ sjÃ¥ + brukarar i nærleiken.' + edit_your_profile: Endra profilen din my friends: Mine vener no friends: Du har ikkje lagt til nokon venner enno. nearby users: Andre brukarar i nærleiken @@ -380,66 +482,75 @@ nn: new: title: Ny dagbokoppføring form: - location: 'Posisjon:' - use_map_link: bruk kart + location: Stad + use_map_link: Bruk kart index: - title: Brukarane sine dagbøker - title_friends: Dagbøkene til venene dine - title_nearby: Dagbøkene til naboar + title: Brukardagbøker + title_friends: Dagbøkene til venane dine + title_nearby: Dagbøkene til brukarar i nærleiken user_title: '%{user} si dagbok' in_language_title: Dagbokoppføringar pÃ¥ %{language} new: Ny dagbokoppføring new_title: Skriv ei ny oppføring i dagboka di + my_diary: Dagboka mi no_entries: Ingen oppføringar i dagboka recent_entries: Nye oppføringer i dagboka older_entries: Eldre oppføringar newer_entries: Nyare oppføringar edit: - title: Rediger oppføring i dagboka - marker_text: Lokasjon for dagbokoppføring + title: Rediger dagbokoppføring + marker_text: Stad for dagbokoppføring show: - title: '%{user} sin dagbok | %{title}' + title: '%{user} si dagbok | %{title}' user_title: '%{user} si dagbok' leave_a_comment: Legg igjen ein kommentar login_to_leave_a_comment_html: '%{login_link} for Ã¥ legge igjen ein kommentar' login: Logg inn no_such_entry: title: Inga slik dagbokoppføring - heading: Inga oppføring med %{id} - body: Det er ingen dagbokinnlegg eller kommentar med ID %{id}. Sjekk om du har - skrive feil eller om lenkja er riktig. + heading: 'Inga oppføring med ID: %{id}' + body: Det finst inkje dagbokinnlegg eller kommentar med ID %{id}. Sjekk om du + har skrive feil eller om lenkja er feil. diary_entry: posted_by_html: Skrive av %{link_user} %{created} pÃ¥ %{language_link} + updated_at_html: Sist oppdatert %{updated}. comment_link: Kommenter denne oppføringa - reply_link: Svar pÃ¥ denne oppføringa + reply_link: Send ei melding til forfattaren comment_count: one: '%{count} kommentar' - zero: Ingen kommentarar other: '%{count} kommentarar' + no_comments: Ingen kommentarar edit_link: Rediger denne oppføringa hide_link: Skjul denne oppføringa + unhide_link: Slutta Ã¥ skjule denne oppføringa confirm: Stadfest + report: Melda denne oppføringa diary_comment: comment_from_html: Kommentar frÃ¥ %{link_user}, %{comment_created_at} hide_link: Skjul denne kommentaren + unhide_link: Slutta Ã¥ skjula denne kommentaren confirm: Stadfest report: Rapporter denne kommentaren location: - location: 'Posisjon:' + location: 'Stad:' view: Vis - edit: Rediger + edit: Endra feed: user: - title: Oppføringar i OpenStreetMap-dagboka for %{user} + title: Oppføringar i OpenStreetMap-dagboka frÃ¥ %{user} description: Nye oppføringar i OpenStreetMap-dagboka til %{user} language: title: Oppføringar i OpenStreetMap-dagbøker pÃ¥ %{language_name} description: Nye oppføringar i dagbøkene til OpenStreetMap-brukarar pÃ¥ %{language_name} all: title: Oppføringar OpenStreetMap-dagboka - description: Nye oppføringar i dagbøkene til OpenStreetMap-brukarar + description: Nylege oppføringar i dagbøkene til OpenStreetMap-brukarar comments: - post: Post + title: Kommentarar i dagboka frÃ¥ %{user} + heading: '%{user} sine kommentarar til dagboksoppføringar' + subheading_html: Kommentarar i dagboka frÃ¥ %{user} + no_comments: Ingen kommentarar i dagboka + post: Oppføring when: NÃ¥r comment: Kommentar newer_comments: Nyare kommentarar @@ -451,12 +562,18 @@ nn: success: '%{name} er no venen din!' failed: Klarte ikkje leggje til %{name} som ven. already_a_friend: Du er allereie venner med %{name}. + limit_exceeded: Du har lagt til mange venar i det siste. Ver venleg og vent + litt før du legg til fleire. remove_friend: heading: Fjern %{user} som ein ven? button: Fjern som ein ven success: '%{name} vart fjerna frÃ¥ venene dine' not_a_friend: '%{name} er ikkje ein av venene dine.' geocoder: + search: + title: + results_from_html: Resultata frÃ¥ %{results_link} + latlon: Intern search_osm_nominatim: prefix: aerialway: @@ -464,16 +581,29 @@ nn: chair_lift: Stolheis drag_lift: Skitrekk gondola: Gondolheis + magic_carpet: skiband + platter: Tallerkenheis + pylon: Mast station: Fjellheisstasjon + t-bar: Ankerheis + "yes": Taubane aeroway: aerodrome: Flyplass + airstrip: Landingsstripe apron: Flyrampe gate: Gate + hangar: Hangar helipad: Helikopterplass + holding_position: Venteposisjon + navigationaid: Luftnavigasjonshjelp + parking_position: Parkeringsposisjon runway: Rullebane + taxilane: Taxifelt taxiway: Taksebane - terminal: Terminal + terminal: Flyplassterminal + windsock: Vindpose amenity: + animal_boarding: Dyrepensjonat animal_shelter: Dyrehospits arts_centre: Kunstsenter atm: Minibank @@ -483,7 +613,9 @@ nn: bench: Benk bicycle_parking: Sykkelparkering bicycle_rental: Sykkelutleige + bicycle_repair_station: Sjølvbetent sykkelreparasjonsstad biergarten: Uteservering + blood_bank: Blodbank boat_rental: BÃ¥tutleige brothel: Bordell bureau_de_change: Vekslingskontor @@ -500,6 +632,7 @@ nn: clock: Klokke college: Høgskule community_centre: Samfunnshus + conference_centre: Konferansesenter courthouse: Rettsbygning crematorium: Krematorium dentist: Tannlege @@ -507,26 +640,37 @@ nn: drinking_water: Drikkevatn driving_school: Køyreskule embassy: Ambassade + events_venue: Samlingslokale fast_food: Hurtigmat ferry_terminal: Ferjeterminal fire_station: Brannstasjon food_court: Serveringsstadar fountain: Fontene - fuel: Drivstoff + fuel: Bensinstation gambling: Gambling grave_yard: Gravlund + grit_bin: Strøsandkasse hospital: Sjukehus hunting_stand: Jaktbod ice_cream: Iskrem + internet_cafe: Internettkafe kindergarten: Barnehage + language_school: SprÃ¥kskule library: Bibliotek + loading_dock: Lastekai + love_hotel: Kjærleikshotell marketplace: Marknadsplass + mobile_money_agent: Mobil pengeagent monastery: Kloster + money_transfer: Valutaoverføring motorcycle_parking: Motorsykkelparkering + music_school: Musikkskule nightclub: Nattklubb nursing_home: Pleieheim parking: Parkeringsplass parking_entrance: Innkøyring til parkeringsgarasje + parking_space: Parkeingsplass + payment_terminal: Betalingsterminal pharmacy: Apotek place_of_worship: Religiøst hus police: Politi @@ -534,9 +678,13 @@ nn: post_office: Postkontor prison: Fengsel pub: Pub + public_bath: Badehus + public_bookcase: Offentleg bokkasse public_building: Offentleg bygning + ranger_station: Skogvaktarpost recycling: Resirkuleringspunkt restaurant: Restaurant + sanitary_dump_station: Toalettømmingsstasjon school: Skule shelter: Tilfluktsrom shower: Dusj @@ -549,76 +697,145 @@ nn: theatre: Teater toilets: Toalett townhall: RÃ¥dhus + training: Treningsanlegg university: Universitet + vehicle_inspection: Køyretøykontroll vending_machine: Vareautomat veterinary: Veterinærklinikk village_hall: Forsamlingshus waste_basket: Søppelkasse waste_disposal: Avfallshandtering + waste_dump_site: Avfallsdeponi + watering_place: Vatntrau + water_point: Vatnpunkt + weighbridge: Køyretøyvekt + "yes": Fasilitet boundary: + aboriginal_lands: UrfolksomrÃ¥de administrative: Administrativ grense census: Folketeljingsgrense national_park: Nationalpark + political: Valdistriktsgrense protected_area: Verna omrÃ¥de + "yes": Grense bridge: aqueduct: Akvadukt + boardwalk: Strandpromenade suspension: Hengebru swing: Svingbru viaduct: Viadukt "yes": Bru building: - apartments: Bustadblokk + apartment: Leilegheit + apartments: Leilegheiter + barn: LÃ¥ve + bungalow: Bungalow + cabin: Hytte chapel: Kapell - church: Kyrkje + church: Kyrkjebygg + civic: Offentleg bygnad + college: Universitetsbygnad commercial: Kommersiell bygning + construction: Bygning under bygging + detached: FrittstÃ¥ande hus dormitory: Sovesal - farm: GÃ¥rdsbygg + duplex: Tomannshus + farm: Gardshus + farm_auxiliary: Ytterleg gardsbygg garage: Garasje + garages: Garasjar + greenhouse: Drivhus + hangar: Hangar hospital: Sykehusbygg - hotel: Hotell + hotel: Hotellbygg house: Hus + houseboat: HusbÃ¥t + hut: Hytte industrial: Industribygg + kindergarten: Barnehagebygnad + manufacture: Fabrikkbygnad office: Kontorbygg public: Offentleg bygg residential: Boligbygg retail: Detaljsalgbygg + roof: Halvtak + ruins: Bygnadsruin school: Skulebygg - terrace: Terrasse - train_station: Jernbanestasjon + semidetached_house: Rekkjehus + service: Tenestebygg + shed: Skur + stable: Stall + static_caravan: Husvogn + temple: Tempelbygg + terrace: Terrassebygning + train_station: Stasjonsbygg university: Universitetsbygg + warehouse: Lagerhall "yes": Bygning + club: + scout: Speidarklubbhus + sport: Idrettslag + "yes": Samskipnad craft: + beekeeper: Bierøktar + blacksmith: Smed brewery: Bryggeri carpenter: Tømrar + caterer: Catering + confectionery: Godtebutikk + dressmaker: Syar electrician: Elektrikar + electronics_repair: Elektronikkreparatør gardener: Gartnar + glaziery: Glasmeister + handicraft: Kunsthandverkar + hvac: Klimakontrollverksemd + metal_construction: Metallverkstad painter: MÃ¥lar photographer: Fotograf plumber: Røyrleggjar + roofer: Taktekkjar + sawmill: Sagbruk shoemaker: Skomakar + stonemason: Steinhoggar tailor: Skreddar + window_construction: Vindaugsnikkar + winery: Vingard "yes": Handverkbutikk emergency: + access_point: Tilgjengepunkt ambulance_station: Ambulansestasjon + assembly_point: Samlingsplass defibrillator: Hjartestartar + fire_extinguisher: Brannsløkkjar + fire_water_pond: Branndam landing_site: Nødlandingsplass + life_ring: Livbøye phone: Nødtelefon + siren: Varselsiren + suction_point: Naudsugepunkt for brannslange + water_tank: Naudvasstank for brannslange highway: abandoned: Forlaten motorveg bridleway: Rideveg bus_guideway: Leidde bussfelt bus_stop: Busstopp construction: Motorveg under konstruksjon + corridor: Korridor + crossing: Fotgjengarfelt cycleway: Sykkelsti elevator: Heis emergency_access_point: Nødtilgangspunkt + emergency_bay: Naudstoppestad footway: Gangsti ford: Vadestad + give_way: Vikeskilt living_street: Gatetun milestone: Milestolpe motorway: Motorveg motorway_junction: Motorvegkryss motorway_link: Veg til motorveg + passing_place: Møteplass path: Sti pedestrian: Gangveg platform: Perrong @@ -635,50 +852,67 @@ nn: services: Motorveitjenester speed_camera: Fotoboks steps: Trapper + stop: Stoppskilt street_lamp: Gatelykt tertiary: Tertiær veg tertiary_link: Kommunal veg track: Sti + traffic_mirror: Trafikkspeil traffic_signals: Trafikklys + trailhead: Ende pÃ¥ sti trunk: Hovedveg trunk_link: Hovedveg + turning_circle: Snuplass + turning_loop: Vendesløyfe unclassified: Uklassifisert veg "yes": Veg historic: + aircraft: Historisk fly archaeological_site: Arkeologisk plass + bomb_crater: Historisk bombekrater battlefield: Slagmark boundary_stone: Grensestein building: Historisk bygning bunker: Bunker + cannon: Historisk kanon castle: Slott + charcoal_pile: Historisk kolmile church: Kyrkje city_gate: Byport citywalls: Bymurar fort: Fort heritage: Verdsarvsstad + hollow_way: Hol veg house: Hus manor: Herregard memorial: Minne + milestone: Historisk milepæl mine: Gruve + mine_shaft: Gruvesjakt monument: Monument + railway: Historisk jarnveg roman_road: Romersk veg ruins: Ruinar + rune_stone: Runestein stone: Stein tomb: Grav tower: TÃ¥rn + wayside_chapel: Vegkyrkje wayside_cross: Vegkant kross wayside_shrine: Vegkant alter wreck: Vrak + "yes": Historisk stad junction: "yes": Kryss landuse: allotments: Kolonihagar + aquaculture: Akvakultur basin: ElveomrÃ¥de brownfield: Tidlegare industriomrÃ¥de cemetery: Gravplass commercial: Kommersielt omrÃ¥de - conservation: Freda - construction: Kontruksjon + conservation: Freda omrÃ¥de + construction: Byggjeplass farmland: Jordbruksland farmyard: Gardstun forest: Skog @@ -691,32 +925,43 @@ nn: military: Militært omrÃ¥de mine: Gruve orchard: Frukthage + plant_nursery: Planteskule quarry: Steinbrot railway: Jernbane recreation_ground: Idrettsplass + religious: Religiøs mark reservoir: Reservoar reservoir_watershed: Nedbørfelt residential: BoligomrÃ¥de - retail: Detaljsalg + retail: DetaljsalomrÃ¥de village_green: Landsbypark vineyard: VingÃ¥rd "yes": Arealbruk leisure: + adult_gaming_centre: Vaksenspelehall + amusement_arcade: Spillehall + bandstand: Musikkpaviljong beach_resort: Badestrand bird_hide: FugletÃ¥rn + bleachers: Tilskodarplassar + bowling_alley: Bowlinghall common: Allmenning + dance: Dansesal dog_park: Hundepark + firepit: BÃ¥lgrop fishing: FiskeomrÃ¥de fitness_centre: Treningssenter fitness_station: Trenings studio garden: Hage golf_course: Golfbane - horse_riding: Riding + horse_riding: Ridesenter ice_rink: Skøytebane marina: BÃ¥thavn miniature_golf: Minigolf nature_reserve: Naturreservat + outdoor_seating: Utandørs sitjeplass park: Park + picnic_table: Piknikbord pitch: Sportsarena playground: Leikeplass recreation_ground: Idrettsplass @@ -730,24 +975,76 @@ nn: water_park: Vannpark "yes": Fritid man_made: + adit: Stoll + advertising: Reklame + antenna: Antenne + avalanche_protection: Skredvern + beacon: Fyr + beam: Bjelke + beehive: Bikube + breakwater: Molo + bridge: Bru + bunker_silo: Bunker + cairn: Varde + chimney: Skorstein + clearcut: Snauhogst + communications_tower: KommunikasjonstÃ¥rn + crane: Kran + cross: Kors + dolphin: FortøyingspÃ¥le + dyke: Dike + embankment: Voll + flagpole: Flaggstong + gasometer: Gassklokke + groyne: Høfde + kiln: Omn lighthouse: Fyr + manhole: Kum + mast: Mast + mine: Gruve + mineshaft: Gruvesjakt + monitoring_station: Overvakingsstasjon + petroleum_well: Oljebrønn + pier: Pir pipeline: Røyrleidning + pumping_station: Pumpestasjon + reservoir_covered: Overdekt reservoar + silo: Silo + snow_cannon: Snøkanon + snow_fence: Snøskjerm + storage_tank: Lagringstank + street_cabinet: Gatekabinett + surveillance: Overvaking + telescope: Teleskop tower: TÃ¥rn + utility_pole: Straummast + wastewater_plant: Kloakkanlegg + watermill: Vassmylne + water_tap: Vasskran + water_tower: VasstÃ¥rn + water_well: Brønn + water_works: Vassverk + windmill: Vindmylne works: Fabrikk "yes": Menneskeskapt military: airfield: Militær flyplass barracks: Kaserner bunker: Bunker + checkpoint: Kontrollpost + trench: Skyttargrav + "yes": Militær mountain_pass: "yes": Fjellovergang natural: + atoll: Atoll + bare_rock: Klippe bay: Bukt beach: Strand cape: Nes cave_entrance: Holeinngang cliff: Klippe - coastline: Kystlinje + coastline: Kystline crater: Krater dune: Sanddyne fell: Fjellskrent @@ -758,12 +1055,15 @@ nn: grassland: Grasslette heath: Vidde hill: Ås + hot_spring: Varm kjelde island: Øy + isthmus: Eid land: Land marsh: Sump moor: Myr mud: Gjørme peak: Topp + peninsula: Halvøy point: Punkt reef: Rev ridge: Rygg @@ -772,32 +1072,51 @@ nn: sand: Sand scree: Ur scrub: Kratt + shingle: Steinstrand spring: Kjelde stone: Stein strait: Stred tree: Tre + tree_row: Trerekkje + tundra: Tundra valley: Dal volcano: Vulkan water: Vatn wetland: VÃ¥tmark wood: Skog + "yes": Naturelement office: accountant: Revisor administrative: Administrasjon + advertising_agency: ReklamebyrÃ¥ architect: Arkitekt + association: Samband company: Bedrift + diplomatic: Diplomatkontor + educational_institution: Utdanningsinstitusjon employment_agency: Bemanningsbedrift + energy_supplier: Kontor til energiselskap estate_agent: Eiendomsmeglar + financial: Finanskontor government: Statlig kontor insurance: Forsikringskontor + it: IKT-kontor lawyer: Advokat + logistics: Logistikkontor + newspaper: Avisredaksjon ngo: Ikkje-statlig kontor + notary: Notarus publicus + religion: Religiøst kontor + research: Forskingskontor + tax_advisor: SkatterÃ¥dgjevar telecommunication: Telefonkontor travel_agent: ReisebyrÃ¥ "yes": Kontor place: allotments: Kolonihagar + archipelago: Arkipel city: By + city_block: Byblokk country: Land county: Fylke farm: Gard @@ -810,9 +1129,12 @@ nn: locality: Plass municipality: Kommune neighbourhood: Nabolag + plot: Tomt postcode: Postnummer + quarter: Kvartal region: OmrÃ¥de sea: Hav + square: Torg state: Delstat subdivision: Underavdeling suburb: Forstad @@ -821,6 +1143,7 @@ nn: "yes": Stad railway: abandoned: Forlatt jernbane + buffer_stop: Sporstoppar construction: Jernbane under konstruksjon disused: Nedlagt jernbane funicular: Kabelbane @@ -834,6 +1157,7 @@ nn: platform: Jernbaneperrong preserved: Verna jernbane proposed: FøreslÃ¥tt jernbane + rail: Jarnveg spur: Jernbaneforgrening station: Jernbanestasjon stop: Jernbanestopp @@ -842,15 +1166,23 @@ nn: switch: Sporveksel tram: Sporveg tram_stop: Trikkestopp + turntable: Dreieskive yard: Skiftetomt shop: + agrarian: Landbruksbutikk alcohol: Utanfor lisens antiques: Antikviteter + appliance: Kvitvareforretning art: Kunstbutikk + baby_goods: Babybutikk + bag: Veskebutikk bakery: Bakeri + bathroom_furnishing: Badmøbelforretning beauty: Skjønnheitssalong + bed: Sengetøyforretning beverages: Drikkevarebutikk bicycle: Sykkelbutikk + bookmaker: Bookmaker books: Bokhandel boutique: Luksusforretning butcher: Slaktar @@ -859,65 +1191,109 @@ nn: car_repair: Bilverkstad carpet: Teppebutikk charity: Veldedighetsbutikk + cheese: Ostbutikk chemist: Kjemiker + chocolate: Sjokolade clothes: Klesbutikk + coffee: Kaffebutikk computer: Databutikk confectionery: Konditori convenience: Nærbutikk copyshop: Kopieringsbutikk cosmetics: Kosmetikkforretning + craft: Hobbybutikk + curtain: Gardinebutikk + dairy: Meieributikk deli: Delikatessebutikk department_store: Varehus discount: Tilbudsbutikk - doityourself: Gjer-det-sjølv + doityourself: Gjer-det-sjølv-butikk dry_cleaning: Renseri + e-cigarette: E-sigarettbutikk electronics: Elektronikkforretning + erotic: Sexbutikk estate_agent: Eiendomsmegler + fabric: Stoffbutikk farm: Gardsbutikk fashion: Motebutikk + fishing: Fiskebutikk florist: Blomsterbutikk food: Matbutikk + frame: Rammeverkstad funeral_directors: Begravelsesforretning furniture: Møbler garden_centre: Hagesenter + gas: Gassbutikk general: Landhandel gift: GÃ¥vebutikk greengrocer: Grønsakshandel grocery: Daglegvarebutikk hairdresser: Frisør hardware: Jernvarehandel - hifi: Hi-fi + health_food: Helsekostforretning + hearing_aids: Høyreapparat + herbalist: Urtehandel + hifi: Hi-fi-butikk + houseware: Kjøkkenutstyrsbutikk + ice_cream: Iskrembutikk + interior_decoration: Innreiingsbutikk jewelry: Gullsmed kiosk: Kiosk + kitchen: Kjøkkenbutikk laundry: Vaskeri + locksmith: LÃ¥sesmed + lottery: Lotteri mall: Kjøpesenter + massage: Massasje + medical_supply: Forhandlar av medisinsk utstyr mobile_phone: Mobiltelefonbutikk + money_lender: PengeutlÃ¥nar motorcycle: Motorsykkelbutikk + motorcycle_repair: Motorsykkelverkstad music: Musikkbutikk + musical_instrument: Musikkinstrument newsagent: NyhetsbyrÃ¥ + nutrition_supplements: Kosttilskot optician: Optikar organic: Organisk matbutikk outdoor: Utandørs butikk + paint: Fargehandel + pastry: Bakeri + pawnbroker: PantelÃ¥nar + perfumery: Parfymeri pet: Dyrebutikk + pet_grooming: Kjæledyrfrisør photo: Fotobutikk + seafood: Sjømat second_hand: Bruktbutikk + sewing: Saumforretning shoes: Skobutikk sports: Sportsbutikk stationery: Papirbutikk + storage_rental: Lagerhotell supermarket: Supermarked tailor: Skreddar + tattoo: Tatoveringsstudio + tea: Tehandel + ticket: Billettformidlar + tobacco: Tobakksbutikk toys: Leikebutikk travel_agency: ReisebyrÃ¥ + tyres: Dekkforhandlar + vacant: Ledig forretningslokale video: Videobutikk - wine: Utanfor lisens + video_games: Videospelbutikk + wholesale: Grosserar + wine: Vinforretning "yes": Butikk tourism: alpine_hut: Fjellhytte - apartment: Leilegheit + apartment: Feriehusvære artwork: Kunstverk attraction: Attraksjon bed_and_breakfast: Bed and breakfast - cabin: Hytte + cabin: Turisthytte + camp_pitch: Teltplass camp_site: Teltplass caravan_site: Campingplass chalet: Fjellhytte @@ -931,8 +1307,10 @@ nn: picnic_site: Piknikplass theme_park: Fornøyelsespark viewpoint: Utsiktspunkt + wilderness_hut: Villmarksstove zoo: Dyrepark tunnel: + building_passage: Bygnadspassasje culvert: Stikkrenne "yes": Tunnel waterway: @@ -956,11 +1334,15 @@ nn: "yes": Vassveg admin_levels: level2: Riksgrense + level3: Regiongrense level4: Statsgrense level5: Regiongrense + level6: Fylkesgrense + level7: Kommunegrense level8: Bygrense level9: Landsbygrense level10: Forstadsgrense + level11: Grannelagsgrense types: cities: Byar towns: SmÃ¥byar @@ -968,16 +1350,106 @@ nn: results: no_results: Ingen resultat funne more_results: Fleire resultat + issues: + index: + title: Saker + select_status: Vel stode + select_type: Vel type + select_last_updated_by: Vel Sist oppdatert av + reported_user: Meld brukar + not_updated: Ikkje oppdatert + search: Søk + search_guidance: 'Søk blant saker:' + user_not_found: Brukaren finst ikkje + issues_not_found: Ingen slike saker funne + status: Stode + reports: Meldingar + last_updated: Sist oppdatert + last_updated_time_ago_user_html: '%{time_ago} av %{user}' + link_to_reports: SjÃ¥ meldingar + reports_count: + one: '%{count} melding' + other: '%{count} meldingar' + reported_item: Meld objekt + states: + ignored: Sett bort frÃ¥ + open: Open + resolved: Løyst + show: + title: '%{status} Sak #%{issue_id}' + reports: + one: '%{count} melding' + other: '%{count} meldingar' + no_reports: Ingen meldingar + report_created_at: Fyrst meld %{datetime} + last_resolved_at: Sist løyst %{datetime} + last_updated_at: Sis oppdatert %{datetime} av %{displayname} + resolve: Løys + ignore: SjÃ¥ bort frÃ¥ + reopen: Opna att + reports_of_this_issue: Meldingar om denne saka + read_reports: Les meldingar + new_reports: Nye meldingar + other_issues_against_this_user: Andre saker mot denne brukaren + no_other_issues: Ingen andre saker mot denne brukaren. + comments_on_this_issue: Kommentarar om denne saka + resolve: + resolved: Stoda pÃ¥ saka har vorte sett til «Løyst» + ignore: + ignored: Stoda pÃ¥ saka har vorte sett til «Sett bort frå» + reopen: + reopened: Stoda pÃ¥ saka har vorte sett til «Open» + comments: + comment_from_html: Kommentar frÃ¥ %{user_link}, skriven %{comment_created_at} + reassign_param: Omdeleger saka? + reports: + reported_by_html: Meld som %{category} av %{user}, %{updated_at} + helper: + reportable_title: + diary_comment: '%{entry_title}, kommentar #%{comment_id}' + note: 'Merknad #%{note_id}' + issue_comments: + create: + comment_created: Kommentaren din vart oppretta + issue_reassigned: Kommentaren din vart oppretta og saka vart delegert om reports: new: + title_html: Meld %{link} + missing_params: Kan ikkje oppretta ei ny melding + disclaimer: + intro: 'Før du sender inn meldinga til moderatorane, pass pÃ¥ at:' + not_just_mistake: Du er sikker pÃ¥ at problemet ikkje berre er eit uhell + unable_to_fix: Du ikkje kan fikse problemet sjølv eller med hjelp av andre + resolve_with_user: Du alt har prød Ã¥ løyse problemet med brukaren categories: + diary_entry: + spam_label: Dette dagbokinnlegget inneheld spam + offensive_label: Dette dagbokinnlegget er usømeleg + threat_label: Dette dagbokinnlegget inneheld ein trugsel + other_label: Anna + diary_comment: + spam_label: Denne dagbokskommentaren er eller inneheld spam + offensive_label: Denne dagbokskommentaren er usømeleg + threat_label: Denne dagbokskommentaren inneheld ein trugsel + other_label: Anna + user: + spam_label: Denne brukarprofilen er eller inneheld spam + offensive_label: Denne brukarprofilen er usømeleg + threat_label: Denne brukarprofilen inneheld ein trugsel + vandal_label: Denne brukaren er ein vandal + other_label: Anna note: spam_label: Denne merknaden er søppel + personal_label: Denne merknaden inneheld personopplysingar abusive_label: Denne merknaden er støytande + other_label: Anna + create: + successful_report: Meldinga di har vorte registrert + provide_details: Du mÃ¥ oppgje dei pÃ¥kravde opplysingane layouts: logo: alt_text: OpenStreetMap-logo - home: heim + home: GÃ¥ til heimstaden din logout: Logg ut log_in: Logg inn sign_up: Registrer deg @@ -985,6 +1457,7 @@ nn: edit: Rediger history: Historikk export: Eksporter + issues: Problem data: Data export_data: Eksportar data gps_traces: GPS-spor @@ -997,10 +1470,13 @@ nn: intro_text: OpenStreetMap er eit verdskart, laga av folk som deg. Kartet er gratis Ã¥ bruke under ein open lisens. intro_2_create_account: Opprett ein brukarkonto - hosting_partners_html: Drifta er støtta av %{ucl}, %{bytemark} og andre %{partners}. - partners_ucl: UCL VR-senteret + hosting_partners_html: Drifta er støtta av %{ucl}, %{fastly}, %{bytemark} og andre + %{partners}. + partners_ucl: UCL + partners_fastly: Fastly partners_bytemark: Bytemark Hosting partners_partners: partnarar + tou: BruksvilkÃ¥r osm_offline: OpenStreetMap databasen er for augneblunken utilgjengelig medan essensielt vedlikeholdsarbeid vert utført. osm_read_only: OpenStreetMap kan ikkje redigerast akkurat no, pÃ¥ grunn av nødvendig @@ -1010,6 +1486,7 @@ nn: help: Hjelp about: Om copyright: Opphavsrett + communities: Fellesskap community: Samfunnet community_blogs: Bloggar community_blogs_title: Bloggar frÃ¥ medlemmane i OpenStreetMap-felleskapet @@ -1024,22 +1501,39 @@ nn: hi: Hei %{to_user}, header: '%{from_user} har kommentert pÃ¥ ditt siste OpenStreetMap-dagbokinnlegg med emnet %{subject}:' + header_html: '%{from_user} har kommentert pÃ¥ OpenStreetMap-dagboksinnlegget + med emnet %{subject}:' footer: Du kan òg lese kommentaren pÃ¥ %{readurl} og du kan kommentere pÃ¥ %{commenturl} eller svare pÃ¥ %{replyurl} + footer_html: Du kan òg lesa kommentaren pÃ¥ %{readurl}, og du kan kommentera + pÃ¥ %{commenturl}, eller senda ei melding til forfattaren pÃ¥ %{replyurl} message_notification: + subject: '[OpenStreetMap] %{message_title}' hi: Hei %{to_user}, header: '%{from_user} har sendt deg ei melding gjennom OpenStreetMap med emnet %{subject}:' + header_html: '%{from_user} har sendt deg ei melding via OpenStreetMap med emnet + %{subject}:' + footer: Du kan òg lesa meldinga pÃ¥ %{readurl}, og du kan senda ei melding til + forfattaren pÃ¥ %{replyurl} + footer_html: Du kan òg lesa meldinga pÃ¥ %{readurl}, og du kan senda ei melding + til forfattaren pÃ¥ %{replyurl} friendship_notification: hi: Hei %{to_user}, subject: '[OpenStreetMap] %{user} la deg til som ein ven' had_added_you: '%{user} har lagt deg til som ven pÃ¥ OpenStreetMap.' see_their_profile: Du kan sjÃ¥ profilen deira pÃ¥ %{userurl}. + see_their_profile_html: Du kan sjÃ¥ profilen hens pÃ¥ %{userurl}. befriend_them: Du kan òg leggje dei til som ven pÃ¥ %{befriendurl}. + befriend_them_html: Du kan òg legga hen til som ein ven pÃ¥ %{befriendurl}. gpx_failure: + hi: Hei, %{to_user} failed_to_import: 'klarte ikkje importere. Her er feilen:' + more_info_html: Du kan finna meir informasjon om feil ved GPX-importering, og + korleis du kan unngÃ¥ dei, pÃ¥ %{url}. subject: '[OpenStreetMap] Feil under import av GPX' gpx_success: + hi: Hei, %{to_user} subject: '[OpenStreetMap] Vellukka import av GPX' signup_confirm: subject: '[OpenStreetMap] Velkommen til OpenStreetMap' @@ -1053,31 +1547,97 @@ nn: email_confirm: subject: '[OpenStreetMap] Stadfest di e-postadresse' greeting: Hei, + hopefully_you: Nokon (forhÃ¥pentleg du) ynskjer Ã¥ endra e-postadressa si hjÃ¥ + %{server_url} til %{new_address}. click_the_link: Viss det er deg, klikk lenkja nedanfor for Ã¥ stadfeste endringa. lost_password: subject: '[OpenStreetMap] Førespurnad om nullstilling av passord' greeting: Hei, + hopefully_you: Nokon (kanskje du) har bede om Ã¥ nullstilla passordet for OpenStreetMap-brukarkontoen + som er knytt til denne e-postadressa. click_the_link: Om dette er deg, vennligst klikk pÃ¥ lenkja under for Ã¥ tilbakestille passordet. note_comment_notification: anonymous: Ein anonym brukar greeting: Hei, + commented: + subject_own: '[OpenStreetMap] %{commenter} har kommentert ein av merknadane + dine' + subject_other: '[OpenStreetMap] %{commenter} har kommentert ein merknad som + du er interessert i' + your_note: '%{commenter} har kommentert ein av kartmerknadane dine i nærleiken + av %{place}.' + your_note_html: '%{commenter} har lagt att ein kommentar til ein av kartmerknadane + dine i nærleiken av %{place}.' + commented_note: '%{commenter} har lagt att ein kommentar til ein kartmerkad + som du har kommentert. Merknaden ligg i nærleiken av %{place}.' + commented_note_html: '%{commenter} har lagt att ein kommentar til ein kartmerknad + som du har kommentert. Merknaden ligg i nærleiken av %{place}.' + closed: + subject_own: '[OpenStreetMap] %{commenter} har løyst ein av merknadane dine' + subject_other: '[OpenStreetMap] %{commenter} har løyst ein merknad du er interessert + i' + your_note: '%{commenter} har løyst ein av kartmerknadane dine i nærleiken + av %{place}.' + your_note_html: '%{commenter} har løyst ein av kartmerknadane dine i nærleiken + av %{place}.' + commented_note: '%{commenter} har løyst ein kartmerknad som du har kommentert. + Merknaden ligg i nærleiken av %{place}.' + commented_note_html: '%{commenter} har løyst ein kartmerknad som du har kommentert. + Merknaden ligg i nærleiken av %{place}.' + reopened: + subject_own: '[OpenStreetMap] %{commenter} har atteraktivert ein av merknadane + dine' + subject_other: '[OpenStreetMap] %{commenter} har atteraktivert ein merknad + som du er interessert i' + your_note: '%{commenter} har atteraktivert ein av kartmerknadane dine i nærleiken + av %{place}.' + your_note_html: '%{commenter} har atteraktivert ein av kartmerknadane dine + i nærleiken av %{place}.' + commented_note: '%{commenter} har atteraktivert ein kartmerknad som du har + kommentert. Merknaden ligg i nærleiken av %{place}.' + commented_note_html: '%{commenter} har atteraktivert ein kartmerknad som du + har kommentert. Merknaden ligg i nærleiken av %{place}.' details: Meir detaljar om notisen kan du finne pÃ¥ %{url}. + details_html: Fleire detaljar om merknaden finst pÃ¥ %{url}. changeset_comment_notification: hi: Hei %{to_user}, greeting: Hei, commented: + subject_own: '[OpenStreetMap] %{commenter} har kommentert eitt av endringssetta + dine' + subject_other: '[OpenStreetMap] %{commenter} har kommentert eit endringssett + som du er interessert i' + your_changeset: '%{commenter} la att ein kommentar til eitt av endringssetta + dine %{time}' + your_changeset_html: '%{commenter} la att ein kommentar til eitt av endringssetta + dine %{time}' + commented_changeset: '%{commenter} la att ein kommentar til eit endringssett + som du overvaker og som er oppretta av %{changeset_author}, %{time}' + commented_changeset_html: '%{commenter} la att ein kommentar til eit endringssett + som du overvaker og som er oppretta av %{changeset_author}, %{time}' partial_changeset_with_comment: med kommentaren '%{changeset_comment}' + partial_changeset_with_comment_html: med kommentaren «%{changeset_comment}» partial_changeset_without_comment: utan kommentar + details: Fleire detaljar om endringssettet finst pÃ¥ %{url}. + details_html: Fleire detaljar om endringssettet finst pÃ¥ %{url}. + unsubscribe: For Ã¥ avslutta tinginga pÃ¥ oppdateringar til dette endringssettet, + vitja %{url} og klikka "Avslutta tinging". + unsubscribe_html: For Ã¥ avslutta tinginga pÃ¥ oppdateringar til dette endringssettet, + vitja %{url} og klikka "Avslutta tinging". confirmations: confirm: heading: Sjekk e-posten din! introduction_1: Vi har sendt deg ei e-poststadfesting. + introduction_2: Stadfest brukarkontoen din ved Ã¥ klikka pÃ¥ lenkja i e-posten, + so kan du byrja Ã¥ kartleggja. press confirm button: Klikk bekreftknappen nedanfor for Ã¥ aktivare kontoen din. button: Stadfest success: Kontoen din er stadfesta - takk for at du registrerte deg. already active: Denne kontoen har allereie stadfesta. unknown token: Den koda ser ikkje ut til Ã¥ eksistere. + resend_html: Viss du treng at vi sender stadfestings-e-posten pÃ¥ nytt, %{reconfirm_link} + click_here: klikka her confirm_resend: failure: Fann ikkje brukaren %{name}. confirm_email: @@ -1087,10 +1647,18 @@ nn: button: Stadfest success: E-postadressen din er stadfesta - takk for at du registrerte deg. failure: Ei e-postadresse er allereie stadfesta med denne nøkkelen. + unknown_token: Denne stadfestingskoden er utgÃ¥tt eller finst ikkje. + resend_success_flash: + confirmation_sent: Vi har sendt ein ny stadfestings-e-post til %{email}, og + du vil kunna byrja Ã¥ kartleggja med ein gong etter at du stadfestar kontoen. + whitelist: Viss du bruker eit spamførebyggjingssystem som sender førespurnadar + om stadfesting, ver sikker pÃ¥ at %{sender} stÃ¥r pÃ¥ kvitlista, sidan vi ikkje + kan svara pÃ¥ slike førespurnadar. messages: inbox: - title: Innboks - my_inbox: Min innboks + title: Mottekne + my_inbox: Mottekne + my_outbox: Sende messages: Du har %{new_messages} og %{old_messages} new_messages: one: '%{count} ny melding' @@ -1122,7 +1690,9 @@ nn: heading: Inga melding funne body: Det er inga melding med den ID-en. outbox: - title: Utboks + title: Sende + my_inbox: Mottekne + my_outbox: Sende messages: one: Du har %{count} send melding other: Du har %{count} sende meldingar @@ -1168,22 +1738,44 @@ nn: flash changed: Passordet ditt er endra. flash token bad: Kunne ikkje finne den nøkkelen. Sjekke URLen kanskje? preferences: + show: + title: Innstillingar + preferred_editor: Føretrekt redigeringsprogram + preferred_languages: Føretrekte sprÃ¥k + edit_preferences: Endra innstillingane edit: + title: Endra innstillingane + save: Oppdater innstillingane cancel: Avbryt + update: + failure: Kunne ikkje oppdatera innstillingane. + update_success_flash: + message: Innstillingane vart oppdaterte. profiles: edit: + title: Endra profil. + save: Oppdater profil cancel: Avbryt - image: 'Bilete:' + image: Bilete gravatar: gravatar: Bruk Gravatar + what_is_gravatar: Kva er Gravatar? + disabled: Gravatar er avslegen. + enabled: Vising av Gravataren din er slege pÃ¥. new image: Legg til eit bilete keep image: Hald pÃ¥ gjeldande bilete delete image: Fjern gjeldande bilete replace image: Erstatt gjeldande bilete image size hint: (kvadratiske bilete som er minst 100x100 fungerer best) - home location: 'Heimeposisjon:' + home location: Heimstad no home location: Du har ikkje skrive inn din heimelokasjon. update home location on click: Oppdatere heimeplassering nÃ¥r eg klikkar pÃ¥ kartet? + show: Vis + delete: Sletta + undelete: Angra sletting + update: + success: Profilen vart oppdatert. + failure: Kunne ikkje oppdatera profilen. sessions: new: title: Logg inn @@ -1209,9 +1801,9 @@ nn: facebook: title: Logg inn med Facebook alt: Logg inn med ein Facebook-konto - windowslive: - title: Logg inn med Windows Live - alt: Logg inn med ein Windows Live-konto + microsoft: + title: Logg inn med Microsoft + alt: Logg inn med ein Microsoft-konto github: title: Logg inn med GitHub alt: Logg inn med ein GitHub-konto @@ -1228,19 +1820,77 @@ nn: title: Logg ut heading: Logg ut frÃ¥ OpenStreetMap logout_button: Logg ut + suspended_flash: + suspended: Orsak, kontoen din har vorte suspendert pÃ¥ grunn av tvilsamt Ã¥tferd. + contact_support_html: Tak kontakt med %{support_link} om du ynskjar Ã¥ diskutera + dette. + support: brukarstøtten + shared: + markdown_help: + heading_html: Parsa med %{kramdown_link} + headings: Overskrifter + heading: Overskrift + subheading: Underoverskrift + unordered: Usortert liste + ordered: Sortert liste + first: Fyrste post + second: Andre post + link: Lenkje + text: Tekst + image: Bilete + alt: Alt-tekst + url: URL + richtext_field: + edit: Endra + preview: Førehandsvising site: about: next: Neste + heading_html: '%{copyright}OpenStreetMap-%{br}bidragsytarane' + used_by_html: '%{name} leverer kartdata til tusenvis av nettstadar, mobilappar + og maskinvare-einingar' + lede_text: OpenStreetMap er bygd av eit fellesskap av kartleggjarar som bidreg + og held ved like data om vegar, stigar, kafear, jarnbanestasjonar og mykje + meir kring verda. local_knowledge_title: Lokalkunnskap + local_knowledge_html: OpenStreetMap framhevar lokalkunnskap. Bidragsytarar bruker + flyfotografi, GPS-apparat og lÃ¥gteknologiske feltkart for Ã¥ stadfesta at OSM + er noggrann og a jour. community_driven_title: Fellesskapsdrive + community_driven_1_html: |- + OpenStreetMap-fellesskapet er mangfaldig, ihuga og stadig veksande. Bidragsytarane vÃ¥re omfattar eldhuga kartleggjarar, GIS-fagfolk, ingeniørar som held i gang sørvarane, humanitære arbeidarar som kartlegg omrÃ¥de ramma av katastrofar og mange meir. + For Ã¥ læra meir om fellesskapet, sjÃ¥ %{osm_blog_link}, %{user_diaries_link}, %{community_blogs_link} og nettstaden til %{osm_foundation_link}. + community_driven_osm_blog: OpenStreetMap sin blogg + community_driven_user_diaries: brukardagbøker + community_driven_community_blogs: fellesskapsbloggar + community_driven_osm_foundation: OSM Foundation open_data_title: Opne Data + open_data_1_html: 'Openstreetmap er %{open_data}: du kan bruka det fritt til + kva som helst føremÃ¥l, so lenge du siterer OpenStreetMap og bidragsytarane. + Viss du endrar eller byggjer pÃ¥ dataen pÃ¥ visse sett, kan du berre publisere + resultata under den same lisensen. SjÃ¥ %{copyright_license_link} for detaljar.' + open_data_open_data: ope data + open_data_copyright_license: sida om opphavsrett og lisensar legal_title: Juridisk + legal_1_1_html: Denne nettstaden og fleira andre tilknytte tenester er formelt + drivne av %{openstreetmap_foundation_link} (OSMF) pÃ¥ vegner av fellesskapet. + Bruk av alle tenester som OSMF driv er underlagd %{terms_of_use_link}, %{aup_link} + og %{privacy_policy_link}. + legal_1_1_openstreetmap_foundation: OpenStreetMap Foundation + legal_1_1_terms_of_use: bruksvilkÃ¥ra + legal_1_1_aup: vilkÃ¥ra for akseptabel bruk + legal_1_1_privacy_policy: personvernspolitikken + legal_2_1_html: Kontakt %{contact_the_osmf_link} om du har spørsmÃ¥l knytte til + lisens, opphavsrett eller andre juridiske emne. + legal_2_1_contact_the_osmf: tak kontakt med OSMF + legal_2_2_html: OpenStreetMap, aukeglas-logoen og State of the Map er %{registered_trademarks_link}. + legal_2_2_registered_trademarks: regristrerte varemerke til OSMF partners_title: Partnarar copyright: foreign: title: Om denne omsetjinga - html: I tilfelle konflikt mellom denne omsette sida og %{english_original_link} - har den engelske versjonen presedens + html: Om denne omsetjinga kjem i motsetjing med %{english_original_link}, + gjeld den engelske teksten. english_link: den engelske originalen native: title: Om denne sida @@ -1251,16 +1901,119 @@ nn: mapping_link: start kartlegging legal_babble: title_html: Opphavsrett og lisensar + introduction_1_html: OpenStreetMap%{registered_trademark_link} er %{open_data}, + med lisens %{odc_odbl_link} (ODbL) av %{osm_foundation_link} (OSMF). + introduction_1_open_data: ope data + introduction_1_odc_odbl: Open Data Commons Open Database License + introduction_1_osm_foundation: OpenStreetMap Foundation + introduction_2_html: Du har rett til Ã¥ kopiera, spreia, overføra og tilpassa + dataen vÃ¥r, so lengje du siterer OpenStreetMap og bidragsytarane. Dersom + du endrar eller byggjer pÃ¥ dataen, kan du berre publisera resultatet under + den same lisensen. Den fulle %{legal_code_link} forklÃ¥rar rettane og skyldnadene + dine. + introduction_2_legal_code: juridiske teksten + introduction_3_html: Dokumentasjonen vÃ¥r er publisert under lisensen %{creative_commons_link} + (CC BY-SA 2.0). + introduction_3_creative_commons: Creative Commons Navngiving-DelPÃ¥SameVilkÃ¥r + 2.0 credit_title_html: Korleis kreditere OpenStreetMap - credit_1_html: Me krev at du brukar godskrivinga «© OpenStreetMap-bidragsytarane». + credit_1_html: 'NÃ¥r du bruker data frÃ¥ OpenStreetMap, krevst to ting av deg:' + credit_2_1: Godskriv OpenStreetMap ved Ã¥ visa opphavsrettsfrÃ¥segna vÃ¥r. + credit_2_2: Gjer det tydeleg at dataen er tilgjengeleg under vilkÃ¥ra av Open + Database License. + credit_3_html: Me har ulike krav til korleis opphavsrettsfrÃ¥segna skal visast, + avhengig av korleis du bruker dataen vÃ¥r. Til dømes finst det ulike reglar + for vising av frÃ¥segna avhengig av om du har skapt eit interaktivt kart + pÃ¥ nett, eit trykt kart eller eit statisk bilete. Utdjupande detaljar om + krava finn du i %{attribution_guidelines_link}. + credit_3_attribution_guidelines: Retningslinene for kjeldetilvising + credit_4_1_html: For Ã¥ gjera det tydeleg at dataen er tilgjengeleg under vilkÃ¥ra + til Open Database License, kan du lenkja til %{this_copyright_page_link}. + Du kan òg – og mÃ¥, dersom du distribuerer OSM i dataform – namngje og lenkja + direkte til lisensane. I medium der lenkjer ikkje er moglege (t.d. trykksaker), + rÃ¥r vi til Ã¥ visa til openstreetmap.org (kan henda ved Ã¥ utvida «OpenStreetMap» + til den fulle adressa) og til opendatacommons.org. I dette dømet er kjeldetilvisinga + i hjørnet pÃ¥ kartet. + credit_4_1_this_copyright_page: denne sida om opphavsrett attribution_example: alt: Døme pÃ¥ korleis ein syner OpenStreetMap som kjelde pÃ¥ ei vevside title: Døme pÃ¥ kjeldehenvising more_title_html: Finn ut meir + more_1_1_html: Les meir om Ã¥ bruke dataen vÃ¥r, og korleis Ã¥ godskriva oss, + pÃ¥ %{osmf_licence_page_link}. + more_1_1_osmf_licence_page: OSMF si side om lisens. + more_2_1_html: |- + Enda OpenStreetMap er ope data, kan vi ikkje levera eit gratis kart-API til tredje partar. + SjÃ¥ %{api_usage_policy_link}, %{tile_usage_policy_link} og %{nominatim_usage_policy_link}. + more_2_1_api_usage_policy: Retningslina for bruk av API + more_2_1_tile_usage_policy: Retningslina for bruk av kartfliser + more_2_1_nominatim_usage_policy: REtningslina for bruk av Nominatim contributors_title_html: Bidragsytarane vÃ¥re contributors_intro_html: 'Me har tusenvis av individuelle bidragsytarar. Me inkluderer óg Ã¥pne datasett frÃ¥ nasjonale karttjenester og andre kjelder, bland anna frÃ¥:' + contributors_at_credit_html: '%{austria}: Inneheld data frÃ¥ %{stadt_wien_link} + (under %{cc_by_link}), %{land_vorarlberg_link} og Land Tirol (under %{cc_by_at_with_amendments_link}).' + contributors_at_austria: Austerrike + contributors_at_stadt_wien: Byen Wien + contributors_at_cc_by: CC BY + contributors_at_land_vorarlberg: Land Vorarlberg + contributors_at_cc_by_at_with_amendments: CC BY AT med tillegg + contributors_au_credit_html: '%{australia}: Inneheld eller er utvikla med + administrative grenser («Administrative Boundaries») © %{geoscape_australia_link} + lisensert av Australia under %{cc_licence_link}.' + contributors_au_australia: Australia + contributors_au_geoscape_australia: Geoscape Australia + contributors_au_cc_licence: Creative Commons Namngiving 4.0 Internasjonal + lisens (CC BY 4.0) + contributors_ca_credit_html: |- + %{canada}: Inneheld data frÃ¥ + GeoBase®, GeoGratis (© Department of Natural + Resources Canada), CanVec (© Department of Natural + Resources Canada) og StatCan (Geography Division, + Statistics Canada). + contributors_ca_canada: Canada + contributors_fi_credit_html: '%{finland}: Inneheld data frÃ¥ Lantmäteriverket + sin topografisk database og andre datasett, under %{nlsfi_license_link}.' + contributors_fi_finland: Finland + contributors_fi_nlsfi_license: Lantmäteriverket sin lisens + contributors_fr_credit_html: '%{france}: Inneheld data frÃ¥ Direction Générale + des Impôts.' + contributors_fr_france: Frankrike + contributors_nl_credit_html: '%{netherlands}: Inneheld © AND data, 2007 + (%{and_link})' + contributors_nl_netherlands: Nederland + contributors_nz_credit_html: '%{new_zealand}: Inneheld data frÃ¥ %{linz_data_service_link} + som er lisensert for ombruk under %{cc_by_link}.' + contributors_nz_new_zealand: Ny-Zealand + contributors_nz_linz_data_service: LINZ Data Service + contributors_nz_cc_by: CC BY 4.0 + contributors_rs_credit_html: '%{serbia}: Inneheld data frÃ¥ %{rgz_link} og + %{open_data_portal} (offentleg informasjon Serbia), 2018.' + contributors_rs_serbia: Serbia + contributors_rs_rgz: Serbian Geodetic Authority + contributors_rs_open_data_portal: National Open Data Portal + contributors_si_credit_html: '%{slovenia}: Inneheld data frÃ¥ %{gu_link} og + %{mkgp_link} (offentleg informasjon Slovenia)' + contributors_si_slovenia: Slovenia + contributors_si_gu: OppmÃ¥lings- og kartleggjingsmyndigheita + contributors_si_mkgp: Ministeriet for jordbruk, skogbruk og mat + contributors_es_credit_html: '%{spain}: Inneheld data frÃ¥ National Geographic + Institute (%{ign_link}) og National Cartographic System (%{scne_link}), + lisensert for ombruk under %{cc_by_link}.' + contributors_es_spain: Spania + contributors_es_cc_by: CC BY 4.0 + contributors_za_credit_html: '%{%{south_africa}: Inneheld data frÃ¥ %{ngi_link}, + statleg opphavsrett reservert.' + contributors_za_south_africa: Sør-Afrika + contributors_za_ngi: 'Chief Directorate: National Geo-Spatial Information' + contributors_gb_credit_html: '%{united_kingdom}: Inneheld data frÃ¥ Ordnance + Survey © Crown copyright og database right 2010–2023.' + contributors_gb_united_kingdom: Storbritannia + contributors_2_html: For fleire detaljar om desse og andre kjelder som har + vorte brukte for Ã¥ forbetre OpenStreetMap, sjÃ¥ %{contributors_page_link} + pÃ¥ OpenStreetMap sin wiki. + contributors_2_contributors_page: Bidragsytarar-sida contributors_footer_2_html: |2- Inkludering av data i OpenStreetMap inneber ikkje at den opphavlege dataleverandøren støttar OpenStreetMap, gjev nokon garanti eller @@ -1269,6 +2022,17 @@ nn: infringement_1_html: |- OSM-bidragsytarar vert minna pÃ¥ Ã¥ aldri leggje til data frÃ¥ opphavsrettsbeskytta kjelder (t.d. Google Maps eller utskrivne kart) utan uttrykkeleg løyve frÃ¥ rettighetshavere. + infringement_2_1_html: Dersom du trur at innhald som er verna av opphavsrett + har vorte føydd til urettkomment i OpenStreetMap sin database eller nettstad, + ver venleg og fylg %{takedown_procedure_link}, eller klaga direkte gjennom + %{online_filing_page_link}. + infringement_2_1_takedown_procedure: prosedyren for fjerning av materiale + infringement_2_1_online_filing_page: klageformularet + trademarks_title: Varemerke + trademarks_1_1_html: OpenStreetMap, lupe-logoen og «State of the Map» er registrerte + varemerke av OpenStreetMap Foundation. Viss du har spørsmÃ¥l om bruken av + varemerka, sjÃ¥ %{trademark_policy_link}. + trademarks_1_1_trademark_policy: Varemerkeretningslinene index: js_1: Du har ein nettleser som ikkje støttar JavaScript eller sÃ¥ har du slÃ¥tt av JavaScript. @@ -1298,13 +2062,26 @@ nn: map_image: Kartblad (viser standard laget) embeddable_html: HTML som kan byggjast inn licence: Lisens + licence_details_html: Data frÃ¥ OpenStreetMap er lisensert under %{odbl_link} + (ODbL). + odbl: Open Data Commons Open Database License too_large: + advice: 'Viss eksporten ovafor slÃ¥r feil, kan du bruka ein av kjeldene nedafor:' body: Dette omrÃ¥det er for stort for Ã¥ eksporterast som OpenStreetMap XML-data. Zoom inn eller vel eit mindre omrÃ¥de. planet: title: Planet OSM + description: Jamleg oppdaterte kopiar av heile databasen til OpenStreetMap + overpass: + title: Overpass-API + description: Last ned denne avgrensingsramma frÃ¥ ein spegel av OpenStreetMap + sin database + geofabrik: + title: Geofabrik-nedlastingar + description: Jamleg oppdaterte utdrag av kontinent, land og utvalde byar other: title: Andre kjelder + description: Yttarlegare kjelder hjÃ¥ OpenStreetMap sin wiki options: Val format: Format scale: Skala @@ -1323,23 +2100,45 @@ nn: title: Korleis hjelpe til join_the_community: title: Ver med i fellesskapen + explanation_html: Viss du har merka eit problem med dataen vÃ¥r, til dømes + at det manglar ein veg eller adresse, er det beste Ã¥ bli med i OpenStreetMap-fellesskapet + og føya til eller vøla opplysinga sjølv. + add_a_note: + instructions_1_html: |- + Berre klikk pÃ¥ %{note_icon}, eller det tilsvarande ikonet pÃ¥ kartvisinga. + Dette vil legga til ein markør pÃ¥ kartet, som du kan flytta ved Ã¥ dra i han. Legg til meldinga di og klikk «Lagra», og andre brukarar vil undersøka saka. other_concerns: title: Andre problemstillingar + concerns_html: Dersom du har bekymringar om korleis dataen vÃ¥r vert brukt + eller om innhaldet, sjÃ¥ %{copyright_link} for meir juridisk informasjon, + eller tak kontakt med den relevante %{working_group_link}. + copyright: sida om opphavsrett + working_group: OSMF-arbeidsgruppa help: title: FÃ¥ hjelp + introduction: OpenStreetMap har fleire resursar for Ã¥ læra om prosjektet, stilla + og svara pÃ¥ spørsmÃ¥l og Ã¥ diskutera og dokumentera kartleggjingsrelaterte + tema i lag. welcome: url: /velkommen - title: Velkomen til OSM + title: Velkomen til OpenStreetMap + description: Byrja med denne snøgge rettleiinga om det grunnleggjande hjÃ¥ + OpenStreetMap. beginners_guide: url: http://wiki.openstreetmap.org/wiki/Nn:Beginners%27_guide title: Hjelp for nybegynnarar description: Dugnadsbasert guide for nybegynnarar. help: - title: help.openstreetmap.org - description: Still spørsmÃ¥l eller finn eit svar pÃ¥ spørsmÃ¥l- og svar-sidene - til OSM. + title: Hjelpeforum + description: Still spørsmÃ¥l eller finn eit svar pÃ¥ spørsmÃ¥l-og-svar-sidene + til OpenStreetMap. mailing_lists: title: E-postlister + description: Spør eit spørsmÃ¥l eller diskuter interessante tema pÃ¥ ei rekke + av temabaserte eller regionale e-postlister. + community: + title: Fellesskapsforum + description: Ein stad for samtaler om OpenStreetMap. irc: title: IRC switch2osm: @@ -1882,7 +2681,8 @@ nn: createnote_disabled_tooltip: Zoom inn for Ã¥ leggje til ein merknad pÃ¥ kartet map_notes_zoom_in_tooltip: Zoom inn for Ã¥ sjÃ¥ kartmerknadar map_data_zoom_in_tooltip: Zoom inn for Ã¥ sjÃ¥ kartdata - queryfeature_tooltip: Førespurnadsfunksjonar + queryfeature_tooltip: Finn objekt + queryfeature_disabled_tooltip: Forstørra for Ã¥ finna objekt changesets: show: comment: Kommenter @@ -1949,7 +2749,7 @@ nn: directions_to: Vegskildring hit add_note: Legg til ein merknad her show_address: Vis adresse - query_features: Søkjefunksjonar + query_features: Finn objekt centre_map: Sentrer kartet her redactions: edit: diff --git a/config/locales/nqo.yml b/config/locales/nqo.yml index d40120227..846b4375e 100644 --- a/config/locales/nqo.yml +++ b/config/locales/nqo.yml @@ -178,7 +178,7 @@ nqo: openid: ߏߔߌ߲ ID google: ߜ߭ߎߜ߭ߏߟ facebook: ߝߋߛߑߓߎߞ - windowslive: ߡߌߞߙߏߛߐߝߕ + microsoft: ߡߌߞߙߏߛߐߝߕ github: GitHub wikipedia: ߥߞߌߔߋߘߌߦߊ api: @@ -1369,7 +1369,7 @@ nqo: facebook: title: ߌ ߜߊ߲߬ߞߎ߲߫ ߝߋߛߑߓߎߞ ߟߊ߫ alt: ߌ ߜߊ߲߬ߞߎ߲߫ ߝߋߛߑߓߎߞ ߖߊ߬ߕߋ߬ߘߊ ߘߏ߫ ߟߊ߫ - windowslive: + microsoft: title: ߌ ߜ߭ߊ߲߬ߞߎ߲߫ ߥߌ߲ߘߏߥߛ ߟߊߌߝ߭ ߟߊ߫ alt: ߌ ߜߊ߲߬ߞߎ߲߫ ߥߌ߲ߘߏߥߛ ߟߊߌߝ߭ ߖߊ߬ߕߋ߬ߘߊ ߟߊ߫ github: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 2e98de102..6d2b120ac 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -1806,7 +1806,7 @@ oc: facebook: title: Se connectar amb Facebook alt: Se connectar amb un commpte Facebook - windowslive: + microsoft: title: Se connectar amb Windows Live alt: Se connectar amb un compte Windows Live github: diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 50a2e90cf..6d71349c5 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -129,7 +129,7 @@ pa: none: ਕੋਈ ਨਹੀਂ google: ਗੂਗਲ facebook: ਫੇਸਬੁੱਕ - windowslive: ਵਿੰਡੋਜ਼ ਲਾਈਵ + microsoft: ਵਿੰਡੋਜ਼ ਲਾਈਵ github: ਗਿੱਟਹੱਬ wikipedia: ਵਿਕੀਪੀਡੀਆ api: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index f248db1c1..f622399e8 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -303,6 +303,7 @@ pl: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -1929,6 +1930,9 @@ pl: home location: 'Położenie domu:' no home location: Nie wpisałeś swojej lokalizacji domowej. update home location on click: Uaktualnianie położenia kliknięciem na mapie + show: Pokaż + delete: Usuń + undelete: Cofnij usunięcie update: success: Zaktualizowano profil użytkownika. failure: Nie udało się zaktualizować profilu. @@ -1957,7 +1961,7 @@ pl: facebook: title: Zaloguj się przez Facebooka alt: Zaloguj się przez konto Facebook - windowslive: + microsoft: title: Zaloguj się przez Microsoft alt: Zaloguj się kontem Microsoft github: @@ -2017,6 +2021,7 @@ pl: legal_title: Pytania prawne legal_1_1_openstreetmap_foundation: Fundacja OpenStreetMap legal_1_1_terms_of_use: Warunki użytkowania + legal_1_1_aup: Zasady dozwolonego użytku legal_1_1_privacy_policy: Polityka prywatności legal_2_1_contact_the_osmf: skontaktuj się z OSM partners_title: Partnerzy @@ -2963,6 +2968,7 @@ pl: title: Uwagi utworzone lub skomentowane przez %{user} heading: Uwagi użytkownika %{user} subheading_html: Uwagi utworzone lub skomentowane przez %{user} + subheading_commented: skomentował no_notes: Brak uwag id: Identyfikator creator: Autor @@ -3061,7 +3067,7 @@ pl: hot: Humanitarna opnvkarte: ÖPNVKarte layers: - header: Warstwy mapy + header: Warstwy notes: Uwagi data: Dane mapy gps: Publiczne ślady GPS diff --git a/config/locales/pnb.yml b/config/locales/pnb.yml index 1ce103fea..d085b897b 100644 --- a/config/locales/pnb.yml +++ b/config/locales/pnb.yml @@ -210,7 +210,7 @@ pnb: openid: اوپن آئی ڈی google: گوگل facebook: فیسبوک - windowslive: وِنڈوز لائیو + microsoft: وِنڈوز لائیو github: گِٹ ہب wikipedia: وِکیپیدیا api: @@ -1463,7 +1463,7 @@ pnb: facebook: title: فیس‌بوک نال لوگ‌این کرو alt: فیسبوک ورتو - windowslive: + microsoft: title: وینڈوز لائیو نال لوگ‌این کرو alt: وینڈوز لائیو ورتو github: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 5b3c3bdd5..ffe0f4ff8 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -252,6 +252,7 @@ pt-PT: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipédia api: @@ -403,7 +404,7 @@ pt-PT: history_title_html: 'Histórico da Linha: %{name}' nodes: Nós nodes_count: - one: 1 nó + one: '%{count} nó' other: '%{count} nós' also_part_of_html: one: parte da linha %{related_ways} @@ -583,8 +584,8 @@ pt-PT: reply_link: Enviar mensagem ao autor comment_count: one: '%{count} comentário' - zero: Sem comentários other: '%{count} comentários' + no_comments: Sem comentários edit_link: Editar hide_link: Ocultar unhide_link: Mostrar @@ -859,7 +860,7 @@ pt-PT: stable: Estábulo static_caravan: Caravana temple: Edíficio de templo - terrace: Edifício terraçado + terrace: Edifício geminado train_station: Edifício de estação dos comboios university: Edifício universitário warehouse: Armazém @@ -1130,13 +1131,13 @@ pt-PT: "yes": Desfiladeiro natural: atoll: Atol - bare_rock: Rocha visível + bare_rock: Rocha exposta bay: Baía beach: Praia cape: Cabo cave_entrance: Entrada de gruta cliff: Precipício - coastline: Litoral + coastline: Linha costeira crater: Cratera dune: Duna fell: Encosta desflorestada @@ -1471,9 +1472,9 @@ pt-PT: show: title: '%{status} Denúncia #%{issue_id}' reports: - zero: Sem denúncias - one: 1 denúncia + one: '%{count} denúncia' other: '%{count} denúncias' + no_reports: Sem denúncias report_created_at: Denunciado pela primeira vez em %{datetime} last_resolved_at: Resolvido pela última vez em %{datetime} last_updated_at: Atualizado pela última vez em %{datetime} por %{displayname} @@ -1875,6 +1876,9 @@ pt-PT: home location: Localização principal no home location: Não definiste a tua localização principal. update home location on click: Atualizar a localização ao clicar no mapa? + show: Mostrar + delete: Eliminar + undelete: Desfazer eliminação update: success: Perfil atualizado. failure: Não foi possível atualizar o perfil. @@ -1903,7 +1907,7 @@ pt-PT: facebook: title: Iniciar sessão com o Facebook alt: Iniciar sessão com uma conta do Facebook - windowslive: + microsoft: title: Iniciar sessão com Microsoft alt: Iniciar sessão com uma conta Microsoft github: @@ -2978,7 +2982,9 @@ pt-PT: index: title: Notas submetidas ou comentadas por %{user} heading: Notas de %{user} - subheading_html: Notas submetidas ou comentadas por %{user} + subheading_html: Notas %{submitted} ou %{commented} por %{user} + subheading_submitted: enviada + subheading_commented: comentada em no_notes: Sem notas id: Id creator: Criador @@ -3004,7 +3010,7 @@ pt-PT: anonymous_warning: Esta nota inclui comentários de utilizadores anónimos que devem ser confirmados por fonte independente. hide: Esconder - resolve: Marcar como resolvido + resolve: Marcar como resolvida reactivate: Reabrir comment_and_resolve: Comentar e resolver comment: Comentar diff --git a/config/locales/pt.yml b/config/locales/pt.yml index fe8160327..f290f65e4 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -14,6 +14,7 @@ # Author: Duke of Wikipädia # Author: EVinente # Author: Eduardoaddad +# Author: Felipe L. Ewald # Author: Fmca # Author: FranciscoDS # Author: Ftrebien @@ -270,6 +271,7 @@ pt: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipédia api: @@ -285,6 +287,7 @@ pt: reopened_at_by_html: Reativado %{when} por %{user} rss: title: Notas do OpenStreetMap + description_all: Uma lista de notas relatadas, comentadas ou fechadas description_area: Uma lista de notas relatadas, comentadas ou encerradas na sua área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Um feed RSS para a nota %{id} @@ -421,7 +424,7 @@ pt: history_title_html: 'Histórico da linha: %{name}' nodes: Pontos nodes_count: - one: 1 nó + one: '%{count} nó' other: '%{count} nós' also_part_of_html: one: parte da linha %{related_ways} @@ -593,8 +596,8 @@ pt: reply_link: Enviar uma mensagem ao autor comment_count: one: '%{count} comentário' - zero: Nenhum comentário other: '%{count} comentários' + no_comments: Sem comentários edit_link: Editar esta postagem hide_link: Ocultar essa postagem unhide_link: Mostrar esta entrada @@ -1482,9 +1485,9 @@ pt: show: title: '%{status} Problema #%{issue_id}' reports: - zero: Sem denúncias - one: '%{count} denúncia' - other: '%{count} denúncias' + one: '%{count} relatório' + other: '%{count} relatórios' + no_reports: Sem relatórios report_created_at: Primeiro relatado em %{datetime} last_resolved_at: Resolvido pela última vez em %{datetime} last_updated_at: Última atualização em %{datetime} por %{displayname} @@ -1885,6 +1888,9 @@ pt: home location: Local principal no home location: Você ainda não definiu o seu local principal. update home location on click: Atualizar local principal ao clicar no mapa? + show: Exibir + delete: Excluir + undelete: Desfazer eliminação update: success: Perfil atualizado. failure: Não foi possível atualizar o perfil. @@ -1913,9 +1919,9 @@ pt: facebook: title: Entrar com o Facebook alt: Entrar com uma conta do Facebook - windowslive: - title: Entrar com o Windows Live - alt: Entrar com uma conta do Windows Live + microsoft: + title: Entrar com o Microsoft + alt: Entrar com uma conta do Microsoft github: title: Entrar com o GitHub alt: Entrar com conta do GitHub @@ -2107,6 +2113,11 @@ pt: contributors_nz_new_zealand: Nova Zelândia contributors_nz_linz_data_service: LINZ Data Service contributors_nz_cc_by: CC BY 4.0 + contributors_rs_credit_html: '%{serbia}%{open_data_portal}: Contém dados de + %{rgz_link} e %{open_data_portal} (informações públicas da Sérvia), 2018.' + contributors_rs_serbia: Sérvia + contributors_rs_rgz: Autoridade Geodésica da Sérvia + contributors_rs_open_data_portal: Portal Nacional de Dados Abertos contributors_si_credit_html: |- %{slovenia}: Contém dados da %{gu_link} e %{mkgp_link} (informação pública da Eslovénia). @@ -2799,6 +2810,7 @@ pt: remove as friend: Desfazer amizade add as friend: Adicionar como amigo mapper since: 'Mapeador desde:' + uid: 'ID do usário:' ct status: 'Termos do contribuidor:' ct undecided: Não decidido ct declined: Discordo @@ -2989,7 +3001,9 @@ pt: index: title: Notas postadas ou comentadas por %{user} heading: Notas de %{user} - subheading_html: Notas postadas ou comentadas por %{user} + subheading_html: Notas %{submitted} or %{commented} por %{user} + subheading_submitted: submetido + subheading_commented: comentado no_notes: Sem notas id: ID creator: Criador @@ -3079,6 +3093,7 @@ pt: cyclosm: CyclOSM cycle_map: Ciclístico transport_map: Transporte Público + tracestracktop_topo: Tracestrack Topo hot: Humanitário opnvkarte: ÖPNVKarte layers: @@ -3097,6 +3112,8 @@ pt: andy_allan: Andy Allan opnvkarte_credit: Mosaico cortesia de %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Mosaico cortesia de %{tracestrack_link} + tracestrack: Tracestrack hotosm_credit: Estilo de mosaico por %{hotosm_link} hospedado por %{osm_france_link} hotosm_name: Humanitarian OpenStreetMap Team site: diff --git a/config/locales/ro.yml b/config/locales/ro.yml index ae2b93da1..f9007390f 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -185,40 +185,50 @@ ro: few: aproximativ %{count} ore în urmă}} other: …}} about_x_months: - one: aproximativ 1 lună în urmă - other: aproximativ %{count} luni în urmă + one: aproximativ o lună în urmă + few: aproximativ %{count} luni în urmă + other: aproximativ %{count} de luni în urmă about_x_years: - one: aproximativ 1 an în urmă - other: aproximativ %{count} ani în urmă + one: aproximativ un an în urmă + few: aproximativ %{count} ani în urmă + other: aproximativ %{count} de ani în urmă almost_x_years: - one: aproape 1 an în urmă - few: acum câțiva ani - other: aproape %{count} ani în urmă + one: aproape un an în urmă + few: aproape %{count} ani în urmă + other: aproape %{count} de ani în urmă half_a_minute: o jumătate de minut în urmă less_than_x_seconds: - one: mai puțin de 1 secundă în urmă - other: aproximativ acum %{count} luni în urmă + one: mai puțin de o secundă în urmă + few: mai puțin de %{count} secunde în urmă + other: mai puțin de %{count} de secunde în urmă less_than_x_minutes: one: mai puțin de un minut în urmă - other: mai puțin de %{count} minute în urmă + few: mai puțin de %{count} minute în urmă + other: mai puțin de %{count} de minute în urmă over_x_years: - one: acum peste 1 an - other: peste %{count} ani în urmă + one: mai mult de un an în urmă + few: mai mult de %{count} ani în urmă + other: mai mult de %{count} de ani în urmă x_seconds: - one: acum 1 secundă - other: cu %{count} secunde în urmă + one: acum o secundă + few: cu %{count} secunde în urmă + other: cu %{count} de secunde în urmă x_minutes: - one: acum 1 minut - other: cu %{count} minute în urmă + one: acum un minut + few: cu %{count} minute în urmă + other: cu %{count} de minute în urmă x_days: - one: acum 1 zi - other: cu %{count} zile în urmă + one: acum o zi + few: cu %{count} zile în urmă + other: cu %{count} de zile în urmă x_months: - one: acum 1 lună - other: cu %{count} luni în urmă + one: acum o lună + few: cu %{count} luni în urmă + other: cu %{count} de luni în urmă x_years: - one: acum 1 an - other: cu %{count} ani în urmă + one: acum un an + few: cu %{count} ani în urmă + other: cu %{count} de ani în urmă editor: default: Implicit (în prezent %{name}) id: @@ -233,6 +243,7 @@ ro: openid: OpenID google: OpenID facebook: OpenID + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -273,6 +284,15 @@ 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_edits: Editările dvs. la baza de date a hărții, dacă există, vor fi + păstrate. + retain_traces: Înregistrările încărcate, dacă există, vor fi păstrate. + retain_diary_entries: Înregistrările și comentariile din jurnal, dacă există, + vor fi păstrate, dar ascunse. + retain_notes: Notele dvs. de hartă și comentariile notelor, dacă există, vor + fi reținute, dar ascunse pentru vedere. + retain_changeset_discussions: Discuțiile dvs. privind setul de modificări, + dacă există, vor fi păstrate. retain_email: Adresa dvs. de e-mail va fi păstrată. confirm_delete: Sunteți sigur(ă)? cancel: Anulează @@ -357,6 +377,8 @@ ro: relation: Comunicații (%{count}) relation_paginated: Comunicații (%{x}-%{y} din %{count}) comment: Comentarii (%{count}) + hidden_comment_by_html: Comentariu ascuns de la %{user} %{time_ago} + comment_by_html: Comentariu de la %{user} %{time_ago} changesetxml: Set de modificări XML osmchangexml: XML osmChange feed: @@ -374,9 +396,9 @@ ro: history_title_html: 'Istoricul căii: %{name}' nodes: Noduri nodes_count: - one: 1 nod + one: un nod few: '%{count} noduri' - other: "" + other: '%{count} de noduri' also_part_of_html: one: parte a liniei de %{related_ways} other: parte din liniile de %{related_ways} @@ -385,9 +407,9 @@ ro: history_title_html: 'Istoricul relației: %{name}' members: Membri members_count: - one: 1 membru + one: un membru few: '%{count} membri' - other: "" + other: '%{count} de membri' relation_member: entry_role_html: '%{type} %{name} ca %{role}' type: @@ -499,6 +521,8 @@ ro: friend: Prieten show: title: Dashboardul meu + no_home_location_html: '%{edit_profile_link} și setați locația de acasă pentru + a vedea utilizatorii din apropiere.' edit_your_profile: Editați-vă profilul my friends: Prietenii mei no friends: Nu ați adăugat încă niciun prieten. @@ -549,9 +573,9 @@ ro: comment_link: Comentează la această înregistrare reply_link: Trimite un mesaj autorului comment_count: - zero: Niciun comentariu - one: '%{count} comentariu' - other: '%{count} comentarii' + one: Un comentariu + few: '%{count} comentarii' + other: '%{count} de comentarii' no_comments: Fără comentarii edit_link: Editează această înregistrare hide_link: Ascunde această înregistrare @@ -580,6 +604,9 @@ ro: title: Înregistrări în jurnalul OpenStreetMap description: Înregistrări recente în jurnale de la utilizatorii OpenStreetMap comments: + title: Comentarii din jurnal adăugate de %{user} + heading: Comentariile la jurnal a lui %{user} + subheading_html: Comentarii din jurnal adăugate de %{user} no_comments: Fără comentarii din jurnal post: Postează when: Când @@ -592,8 +619,16 @@ ro: create: notice: Aplicație înregistrată. errors: + contact: + contact_url_title: Diferite metode de contact explicate + contact: contact + contact_the_community_html: Simțiți-vă liber să %{contact_link} comunitatea + OpenStreetMap dacă ați găsit un link invalid/o eroare. Notați adresa URL exactă + a solicitării dvs. forbidden: title: Interzis + description: Operația pe care ați solicitat-o pe serverul OpenStreetMap este + disponibilă numai pentru administratori (HTTP 403) internal_server_error: title: Eroare aplicație description: Serverul OpenStreetMap a întâlnit o condiție neașteptată care l-a @@ -1829,6 +1864,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ă? + show: Arată + delete: Șterge + undelete: Anulează ștergerea update: success: Profil actualizat. failure: Nu s-a putut actualiza profilul. @@ -1857,7 +1895,7 @@ ro: facebook: title: Autentificare cu Facebook alt: Conectați-vă cu un cont Facebook - windowslive: + microsoft: title: Conectare cu Microsoft alt: Conectare cu un Cont Microsoft github: @@ -2057,6 +2095,12 @@ ro: %{france}: Conține date provenite din Direction Générale des Impôts. contributors_fr_france: Franța + contributors_nl_credit_html: '%{netherlands}: Conține © AND data, 2007 + (%{and_link})' + contributors_nl_netherlands: Țările de Jos + contributors_nz_credit_html: |- + %{new_zealand}: Conține date provenite din %{linz_data_service_link} + și licențiate pentru reutilizare sub %{cc_by_link}. contributors_nz_new_zealand: Noua Zeelandă contributors_nz_linz_data_service: Serviciul de date LINZ contributors_nz_cc_by: CC BY 4.0 @@ -2243,8 +2287,19 @@ ro: 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. + desktop_application_html: Puteți utiliza în continuare Potlatch %{download_link}. + download: descărcând aplicația desktop pentru Mac și Windows + id_editor_html: Alternativ, puteți seta editorul implicit la iD, care rulează + în browserul dvs. web așa cum a făcut anterior Potlatch. %{change_preferences_link}. + change_preferences: Schimbați-vă preferințele aici any_questions: title: Întrebări? + paragraph_1_html: |- + OpenStreetMap vă pune la dispoziție resurse pentru a afla despre proiect, pentru a pune și a răspunde la + întrebări și pentru a discuta și a documenta colaborativ despre cartografiere. + %{help_link}. Ești o organizație care are planuri pentru OpenStreetMap? %{welcome_mat_link}. + get_help_here: Obțineți ajutor aici + welcome_mat: Consultați Pagina de Bun Venit sidebar: search_results: Rezultatele căutării close: Închide @@ -2297,6 +2352,7 @@ ro: common: - Comun - luncă + - grădină retail: Spațiul de retail industrial: Zonă industrială commercial: Zonă comercială @@ -2336,18 +2392,71 @@ ro: lucruri pe care trebuie să le cunoașteți. whats_on_the_map: title: Ce este pe Hartă + on_the_map_html: |- + OpenStreetMap este un loc pentru cartografierea lucrurilor care sunt %{real_and_current} - + include milioane de clădiri, drumuri și alte detalii despre locații. Puteți pune pe hartă orice caracteristici ale limii reale de care sunteți interesați. + real_and_current: reale și curente + off_the_map_html: Ce %{doesnt} include sunt date subiective cum ar fi recenzii, + date istorice sau ipotetice și date provenite din surse protejate prin drepturi + de autor. Dacă nu aveți permisiune, nu copiați de pe hărți online sau hărți + clasice. + doesnt: nu basic_terms: title: Termeni de bază pentru cartografiere paragraph_1: OpenStreetMap are propriul jargon. Iată câteva cuvinte cheie care vă vor veni în ajutor. + an_editor_html: Un %{editor} este un program sau un website pe care îl puteți + utiliza pentru a edita harta. + a_node_html: Un %{node} este un punct de pe hartă, de exemplu un singur restaurant + sau copac. + a_way_html: O %{way} este o linie sau o zonă, cum ar fi un drum, un curs de + apă, un lac sau o clădire. + a_tag_html: O %{tag} este un atribut al unui nod sau a unei căi, de exemplu + numele restaurantului sau limita de viteză a unui drum. + editor: editor + node: nod + way: cale + tag: etichetă rules: title: Reguli! + para_1_html: |- + OpenStreetMap are puține reguli formale, dar ne așteptăm ca toți participanții să colaboreze și să comunice cu comunitatea. Dacă vă gândiți la + orice activități, altele decât editarea manuală, vă rugăm să citiți și să urmați instrucțiunile de pe + %{imports_link} și %{automated_edits_link}. + imports: Importurile + automated_edits: Editări automate start_mapping: Începeți să cartografiați add_a_note: title: Nu aveți timp pentru editare? Adaugați o notă! para_1: |- Dacă doriți doar ceva îndreptați o eroare minoră și nu aveți timp să vă înscrieți și să învățați cum să editați, este ușor să adăugați o notă. + para_2_html: |- + Accesați %{map_link} și faceți clic pe pictograma notă: %{note_icon}. + Acest lucru va adăuga un marcator pe hartă, pe care îl puteți muta prin glisare. + Adăugați mesajul dvs., apoi faceți clic pe Salvare și alți cartografi vor investiga. + the_map: harta + communities: + title: Comunitățile + lede_text: "Oameni din întreaga lume contribuie sau folosesc OpenStreetMap.\nÎn + timp ce mulți participă ca indivizi, alții au format comunități.\nAceste grupuri + au o gamă largă de dimensiuni și reprezintă zone geografice de la orașe mici + până la regiuni mari cu mai multe țări. \nDe asemenea, pot fi formale sau + informale." + local_chapters: + title: Capitolele locale + about_text: |- + Capitolele locale sunt grupuri la nivel de țară sau la nivel de regiune care au făcut pasul oficial de + înființarea de entități juridice non-profit. Ele reprezintă harta și cartografii zonei atunci când au de-a face cu administrația locală, firme și mass-media. Ei și-au format, de asemenea, o afiliere + cu Fundația OpenStreetMap (OSMF), oferindu-le o legăturăa către organismul de conducere legal și de drepturi de autor. + list_text: 'Următoarele comunități sunt înființate oficial drept capitole + locale:' + other_groups: + title: Alte Grupuri + other_groups_html: |- + Nu este nevoie să se înființeze în mod oficial un grup în aceeași măsură ca și Capitolele locale. + Într-adevăr, multe grupuri există cu mare succes ca o adunare informală de oameni sau ca un grup comunitar. Oricine le poate configura sau se poate alătura. Citiți mai multe pe %{communities_wiki_link}. + communities_wiki: Pagina wiki comunități traces: visibility: private: Privat (partajat ca puncte anonime, neordonate) @@ -2411,9 +2520,9 @@ ro: trace: pending: ÎN AȘTEPTARE count_points: - one: 1 punct + one: un punct few: '%{count} puncte' - other: "" + other: '%{count} de puncte' more: mai multe trace_details: Vezi detaliile urmei view_map: Vezi hartă @@ -2426,11 +2535,20 @@ ro: in: în index: public_traces: Trasee GPS publice + my_gps_traces: Track-uri GPS public_traces_from: Traseele GPS publice de la %{user} description: Căutați încărcări recente din traseul GPS tagged_with: etichetat cu %{tags} + empty_title: Nimic aici încă + empty_upload_html: '%{upload_link} sau aflați mai multe despre înregistrările + GPS pe %{wiki_link}.' + upload_new: Încărcați un track nou + wiki_page: pagina wiki upload_trace: Încărcați urma + all_traces: Toate track-urile my_traces: Înregistrările mele GPS + traces_from: Traseele GPS publice de la %{user} + remove_tag_filter: Eliminați filtrul de etichete destroy: scheduled_for_deletion: Traseul este programat pentru ștergere make_public: @@ -2465,6 +2583,9 @@ ro: de acord, dar trebuie să le vizualizați. settings_menu: account_settings: Setările contului + oauth1_settings: Setări OAuth 1 + oauth2_applications: Aplicații OAuth 2 + oauth2_authorizations: Autorizări OAuth 2 oauth: authorize: title: Autorizați accesul la contul dvs. @@ -2492,6 +2613,16 @@ ro: flash: Ați revocat tokenul pentru %{application} permissions: missing: Nu ați permis accesul aplicației la această facilitate + scopes: + read_prefs: Citiți preferințele utilizatorului + write_prefs: Modificați preferințele utilizatorului + write_diary: Creează înregistrări în jurnal, comentarii și fă-ți prieteni + write_api: Modificați harta + read_gpx: Citiți track-urile GPS private + write_gpx: Încărcați track-uri GPS + write_notes: Modificați notele + read_email: Citiți adresa de e-mail a utilizatorului + skip_authorization: Aprobare automată a cererii oauth_clients: new: title: Înregistrare aplicație nouă @@ -2534,8 +2665,40 @@ ro: flash: Actualizarea informațiilor despre client cu succes destroy: flash: A distrus înregistrarea aplicației clientului + oauth2_applications: + index: + title: Aplicațiile mele client + no_applications_html: Aveți o aplicație pe care doriți să o înregistrați pentru + a fi utilizată la noi folosind standardul %{oauth2}? Trebuie să vă înregistrați + aplicația înainte ca aceasta să poată face solicitări OAuth către acest serviciu. + new: Înregistrați o nouă aplicație + name: Nume + permissions: Permisiuni + application: + edit: Editați + delete: Șterge + confirm_delete: Ștergeți această aplicație? + new: + title: Înregistrați o nouă aplicație + edit: + title: Editați-vă aplicația + show: + edit: Editați + delete: Șterge + confirm_delete: Ștergeți această aplicație? + client_id: ID client + client_secret: Secretul clientului + client_secret_warning: Asigurați-vă că salvați acest secret - nu va fi accesibil + din nou + permissions: Permisiuni + redirect_uris: Redirecționați URI-uri + not_found: + sorry: Ne pare rău, acea aplicație nu a putut fi găsită. oauth2_authorizations: new: + title: Este necesară autorizarea + introduction: Autorizați %{application} să vă acceseze contul cu următoarele + permisiuni? authorize: Autorizează deny: Respinge error: @@ -2544,8 +2707,10 @@ ro: title: Code de autorizare oauth2_authorized_applications: index: + title: Aplicațiile mele autorizate application: Aplicație permissions: Permisiuni + no_applications_html: Nu ați autorizat încă nicio aplicație %{oauth2}. application: revoke: Revocă accesul confirm_revoke: Revocați accesul acestei aplicații? @@ -2554,8 +2719,17 @@ ro: title: Înregistrare no_auto_account_create: Din păcate, în prezent nu putem crea automat un cont pentru dvs. + please_contact_support_html: Vă rugăm să contactați %{support_link} pentru a + aranja crearea unui cont - vom încerca să rezolvăm solicitarea cât mai repede + posibil. + support: suport about: header: Liberă și editabilă + paragraph_1: Spre deosebire de alte hărți, OpenStreetMap este creat complet + de oameni ca tine și este gratuit pentru oricine să repare, să actualizeze, + să descarce și să folosească. + paragraph_2: Înscrie-te pentru a începe să contribui. Vă vom trimite un e-mail + pentru a vă confirma contul. display name description: Numele dvs. de utilizator afișat public. Puteți schimba acest lucru mai târziu în preferințe. external auth: 'Verificarea terță parte:' @@ -2564,6 +2738,11 @@ ro: dar unele instrumente suplimentare sau serverul pot avea nevoie de una. continue: Înregistrare terms accepted: Vă mulțumim pentru acceptarea noilor termeni de contribuire! + email_confirmation_help_html: Adresa dvs. nu este afișată public, consultați + %{privacy_policy_link} pentru mai multe informații. + privacy_policy: Politica de confidențialitate + privacy_policy_title: Politica de confidențialitate OSMF, inclusiv secțiunea + privind adresele de e-mail terms: title: Termeni heading: Termeni @@ -2582,6 +2761,10 @@ ro: în Domeniul Public consider_pd_why: Ce este aceasta? consider_pd_why_url: https://www.osmfoundation.org/wiki/License/Why_would_I_want_my_contributions_to_be_public_domain + guidance_info_html: 'Informații pentru a ajuta la înțelegerea acestor termeni: + un %{readable_summary_link} și câteva %{informal_translations_link}' + readable_summary: rezumat care poate fi citit de om + informal_translations: traduceri informale continue: Continuă decline: Declină you need to accept or decline: Citiți și apoi acceptați sau refuzați continuarea @@ -2614,6 +2797,7 @@ ro: my_dashboard: Dashboardul meu blocks on me: Blochează pe mine blocks by me: Blochează de mine + edit_profile: Editează profilul send message: Trimite mesajul diary: Jurnal edits: Modificare @@ -2645,6 +2829,8 @@ ro: create_block: Blochează acest utilizator activate_user: Activează acest utilizator confirm_user: Confirmă acest utilizator + unconfirm_user: Deconfirmați acest utilizator + unsuspend_user: Anulați suspendarea acestui utilizator hide_user: Ascunde acest utilizator unhide_user: Descoperă acest utilizator delete_user: Șterge acest utilizator @@ -2667,12 +2853,19 @@ ro: suspended: title: Cont Suspendat heading: Cont Suspendat + support: suport + automatically_suspended: Ne pare rău, contul dvs. a fost suspendat automat din + cauza activității suspecte. + contact_support_html: Această decizie va fi examinată de un administrator în + curând sau puteți contacta %{support_link} dacă doriți să discutați despre + acest lucru. auth_failure: connection_failed: Conectarea la furnizorul de autentificare a eșuat invalid_credentials: Autentificări nevalide de autentificare no_authorization_code: Nu există cod de autorizare unknown_signature_algorithm: Algoritm de semnătură necunoscut invalid_scope: Domeniu nevalid + unknown_error: Autentificare eșuată auth_association: heading: ID-ul dvs. nu este încă asociat cu un cont OpenStreetMap. option_1: |- @@ -2753,20 +2946,25 @@ ro: time_past_html: Terminat în urmă cu %{time}. block_duration: hours: - one: 1 oră - other: '%{count} ore' + one: o oră + few: '%{count} ore' + other: '%{count} de ore' days: - one: 1 zi - other: '%{count} zile' + one: o zi + few: '%{count} zile' + other: '%{count} de zile' weeks: - one: 1 săptămână - other: '%{count} săptămâni' + one: o săptămână + few: '%{count} săptămâni' + other: '%{count} de săptămâni' months: - one: 1 lună - other: '%{count} luni' + one: o lună + few: '%{count} luni' + other: '%{count} de luni' years: - one: 1 an - other: '%{count} ani' + one: un an + few: '%{count} ani' + other: '%{count} de ani' blocks_on: title: Blocări pe %{name} heading_html: Lista blocărilor pe %{name} @@ -2808,7 +3006,9 @@ ro: index: title: Notele trimise sau comentate de %{user} heading: Notele %{user} - subheading_html: Notele trimise sau comentate de %{user} + subheading_html: Note %{submitted} sau %{commented} de %{user} + subheading_submitted: trimise + subheading_commented: comentate no_notes: Nicio notă id: Id creator: Creator @@ -2821,6 +3021,15 @@ ro: open_title: 'Notă nerezolvată #%{note_name}' closed_title: 'Notă rezolvată #%{note_name}' hidden_title: 'Notă ascunsă #%{note_name}' + event_opened_by_html: Creat de %{user} %{time_ago} + event_opened_by_anonymous_html: Creat anonim %{time_ago} + event_commented_by_html: Comentariu de la %{user} %{time_ago} + event_commented_by_anonymous_html: Comentariu anonim %{time_ago} + event_closed_by_html: Rezolvată de %{user} %{time_ago} + event_closed_by_anonymous_html: Rezolvată anonim %{time_ago} + event_reopened_by_html: Reactivată de %{user} %{time_ago} + event_reopened_by_anonymous_html: Reactivată anonim %{time_ago} + event_hidden_by_html: Ascunsă de %{user} %{time_ago} report: Raportează această notă anonymous_warning: Această notă include comentarii de la utilizatori anonimi, care ar trebui verificați independent. @@ -2829,6 +3038,12 @@ ro: reactivate: Reactivează comment_and_resolve: Comentariu & Rezolvare comment: Comentariu + report_link_html: Dacă această notă conține informații sensibile care trebuie + eliminate, puteți %{link}. + other_problems_resolve: Pentru toate celelalte probleme legate de notă, vă rugăm + să o rezolvați singur printr-un comentariu. + other_problems_resolved: Pentru toate celelalte probleme, rezolvarea este suficientă. + disappear_date_html: Această notă rezolvată va dispărea de pe hartă în %{disappear_in}. new: title: Notă nouă intro: A apărut o greșeală sau lipsește ceva? Lăsați alți cartografi să știe @@ -2875,11 +3090,11 @@ ro: metersPopup: one: Sunteți la un metru de acest punct few: Sunteți la %{count} metri de acest punct - other: "" + other: Sunteți la %{count} de metri de acest punct feetPopup: - one: Sunteți la un picior unitate de măsură de acest punct - few: Sunteți la %{count} picioare unitate de măsură de acest punct - other: "" + one: Sunteți la un picior de acest punct + few: Sunteți la %{count} picioare de acest punct + other: Sunteți la %{count} de picioare de acest punct base: standard: Standard cyclosm: CyclOSM @@ -2901,6 +3116,9 @@ ro: osm_france: OpenStreetMap Franța thunderforest_credit: Plăci prin amabilitatea lui %{thunderforest_link} andy_allan: Andy Allan + opnvkarte_credit: Tile-uri prin amabilitatea lui %{memomaps_link} + memomaps: MeMoMaps + hotosm_credit: Stilul tile-urilor creat de %{hotosm_link} găzduit de %{osm_france_link} hotosm_name: Echipa Umanitară OpenStreetMap site: edit_tooltip: Modifică harta diff --git a/config/locales/ru.yml b/config/locales/ru.yml index f83b663a5..b3626cb15 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -79,6 +79,7 @@ # Author: Putnik # Author: Pvwww # Author: Redredsonia +# Author: Rich Flight22 # Author: Riliam # Author: Rivka Silinsky # Author: Ruila @@ -425,6 +426,7 @@ ru: closed: Закрыто created_ago_html: Создано %{time_ago} closed_ago_html: Закрыто %{time_ago} + created_ago_by_html: Создал %{time_ago} %{user} edited_ago_by_html: Редактировал %{time_ago} %{user} version: Версия in_changeset: Пакет правок @@ -455,6 +457,7 @@ ru: relation: Отношения (%{count}) relation_paginated: Отношения (%{x}-%{y} из %{count}) comment: Комментарии (%{count}) + comment_by_html: Комментарий от %{user} %{time_ago} changesetxml: XML пакета правок osmchangexml: osmChange XML feed: @@ -653,6 +656,7 @@ ru: one: '%{count} комментарий' zero: Нет комментариев other: '%{count} комментариев' + no_comments: Нет комментариев edit_link: Изменить запись hide_link: Скрыть эту запись unhide_link: Отобразить эту запись @@ -730,6 +734,7 @@ ru: search: title: results_from_html: Результаты из %{results_link} + latlon: Внутренний search_osm_nominatim: prefix: aerialway: @@ -960,6 +965,8 @@ ru: ambulance_station: Станция скорой медицинской помощи assembly_point: Место сбора defibrillator: Дефибриллятор + fire_extinguisher: Огнетушитель + fire_water_pond: Пожарный водоём landing_site: Место аварийной посадки phone: Телефон экстренной связи water_tank: Пожарный водоём/резервуар @@ -1009,10 +1016,12 @@ ru: trailhead: Тропа trunk: Трасса trunk_link: Развязка + turning_circle: Разворотное кольцо turning_loop: Дорога для разворота unclassified: Дорога местного значения "yes": Дорога historic: + aircraft: Историческое воздушное судно archaeological_site: Раскопки battlefield: Поле боя boundary_stone: Пограничный камень @@ -1146,6 +1155,7 @@ ru: pier: Пирс pipeline: Трубопровод pumping_station: Насосная станция + reservoir_covered: Крытый резервуар silo: Силос snow_cannon: Снежная пушка snow_fence: Снегозащитное заграждение @@ -1154,6 +1164,7 @@ ru: surveillance: Камера наблюдения telescope: Телескоп tower: Башня + utility_pole: Электрический столб wastewater_plant: Станция очистки сточных вод watermill: Водяная мельница water_tap: Водопроводный кран @@ -1220,6 +1231,7 @@ ru: water: Водоём wetland: Заболоченная территория wood: Лес + "yes": Природный объект office: accountant: Бухгалтер administrative: Администрация @@ -1358,6 +1370,7 @@ ru: funeral_directors: Похоронное бюро furniture: Мебель garden_centre: Садовый центр + gas: Магазин газового оборудования general: Магазин gift: Магазин подарков greengrocer: Овощной магазин @@ -1500,6 +1513,7 @@ ru: status: Статус reports: Сообщения last_updated: Последнее изменение + last_updated_time_ago_user_html: '%{time_ago} %{user}' link_to_reports: Просмотр сообщений reports_count: one: 1 сообщение @@ -1924,6 +1938,9 @@ ru: no home location: Вы не обозначили свое домашнее местоположение. update home location on click: Обновлять моё местоположение, когда я нажимаю на карту? + show: Показать + delete: Удалить + undelete: Отменить удаление update: success: Профиль обновлён. failure: Не удалось обновить профиль. @@ -1952,9 +1969,9 @@ ru: facebook: title: Войти с помощью Facebook alt: Войти с помощью учётной записи в Facebook - windowslive: - title: Войти с помощью Windows Live - alt: Войти с помощью учётной записи Windows Live + microsoft: + title: Войти с помощью Microsoft + alt: Войти с помощью учётной записи Microsoft github: title: Войти с GitHub alt: Войти с учётной записи на GitHub @@ -2054,10 +2071,29 @@ ru: legal_babble: title_html: Авторские права и лицензирование introduction_1_open_data: открытые данные + introduction_2_html: Вы можете свободно копировать, распространять, передавать + и дорабатывать наши данные до тех пор, пока вы ссылаетесь на OpenStreetMap + и его участников. Если вы изменяете или берёте наши данные за основу, то + вы должны распространять результат только по такой же лицензии. Полный %{legal_code_link} + юридический текст лицензии разъясняет ваши права и обязанности. credit_title_html: Как сослаться на OpenStreetMap credit_1_html: 'Если вы используете данные OpenStreetMap, вы должны выполнить следующие два условия:' + credit_2_1: Отдайте должное OpenStreetMap, поместив наше уведомление об авторских + правах. + credit_2_2: Дайте понять, что данные доступны по лицензии открытой базы данных. + credit_3_html: 'У нас есть различные требования к тому, как должно отображаться + наше уведомление об авторских правах: всё зависит от того, как вы используете + наши данные. Например, действуют разные правила при отображении уведомления + об авторских правах в разных случаях: создали ли вы просматриваемую карту, + печатную карту или статичное изображение. Полную информацию о требованиях + можно найти в %{attribution_guidelines_link}.' credit_3_attribution_guidelines: Руководство по атрибуции + credit_4_1_html: |- + Чтобы явно указать, что данные доступны по лицензии Open Database License, вы можете сослаться на %{this_copyright_page_link}. + В качестве альтернативы, а также в качестве требования, если вы распространяете OSM в виде набора данных, вы можете назвать лицензию(и) и дать на неё(них) прямую ссылку. + В СМИ, где ссылки физически невозможны (например, в печатных изданиях), мы предлагаем вам направлять читателей на сайт openstreetmap.org (возможно, расширив написание «OpenStreetMap» до полного веб-адреса) и на opendatacommons.org. + В этом примере, упоминание находится в углу карты. attribution_example: alt: Пример того, как сослаться на OpenStreetMap с веб-страницы title: Пример указания авторства @@ -2076,6 +2112,7 @@ ru: contributors_nl_netherlands: Нидерланды contributors_nz_new_zealand: Новая Зеландия contributors_nz_cc_by: CC BY 4.0 + contributors_rs_serbia: Сербия contributors_si_slovenia: Словения contributors_es_spain: Испания contributors_es_ign: IGN @@ -2085,6 +2122,7 @@ ru: contributors_2_html: |- Для получения дополнительной информации об этих и других источниках, которые использовались для улучшения OpenStreetMap, см. %{contributors_page_link} на OpenStreetMap Wiki. + contributors_2_contributors_page: Страница авторов contributors_footer_2_html: Включение данных в OpenStreetMap не означает, что поставщик первичных данных каким-либо образом поддерживает OpenStreetMap, предоставляет гарантии или принимает на себя какую-любую ответственность. @@ -2333,6 +2371,7 @@ ru: с сообществом и общаться с ним. Если вы планируете какие-либо действия, кроме редактирования вручную, прочтите и следуйте инструкциям: %{imports_link} и %{automated_edits_link}. + imports: Импорты automated_edits: Автоматические правки start_mapping: Начать картографировать add_a_note: diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 5660a99aa..8cdab4e5c 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -221,6 +221,7 @@ sc: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Wikipedia api: @@ -236,6 +237,7 @@ sc: reopened_at_by_html: Torrada a ativare %{when} dae %{user} rss: title: Notas de OpenStreetMap + description_all: Una lista de notas sinnaladas, cummentadas o tancadas description_area: Una lista de notas, cummentadas o tancadas in s'àrea tua [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: Unu flussu de informatziones rss pro sa nota %{id} @@ -375,7 +377,7 @@ sc: history_title_html: 'Istòria de sa lìnia: %{name}' nodes: Nodos nodes_count: - one: 1 nodu + one: '%{count} nodu' other: '%{count} nodos' also_part_of_html: one: parte de sa lìnia %{related_ways} @@ -552,6 +554,7 @@ sc: comment_count: one: '%{count} cummentu' other: '%{count} cummentos' + no_comments: Perunu cummentu edit_link: Modìfica custa intrada hide_link: Cua custa intrada unhide_link: Ammustra custa intrada @@ -1443,6 +1446,7 @@ sc: reports: one: '%{count} sinnalatzione' other: '%{count} sinnalatziones' + no_reports: Perunu informe report_created_at: Sinnaladu pro sa prima borta su %{datetime} last_resolved_at: Risoltu pro s'ùrtima borta su %{datetime} last_updated_at: Ùrtima atualizatzione de %{displayname} su %{datetime} @@ -1853,6 +1857,9 @@ sc: no home location: No as insertadu sa positzione de incumintzu tua. update home location on click: Atualizare sa positzione de incumintzu incarchende in sa mapa? + show: Ammustra + delete: Iscantzella + undelete: Annulla s'iscantzellamentu update: success: Profilu atualizadu. failure: Non s'est pòdidu atualizare su profilu. @@ -1881,7 +1888,7 @@ sc: facebook: title: Intra cun Facebook alt: Intra cun unu contu de Facebook - windowslive: + microsoft: title: Intra cun Microsoft alt: Intra cun unu contu de Microsoft github: @@ -2800,6 +2807,7 @@ sc: remove as friend: Boga dae sos amigos add as friend: Annanghe comente amigu mapper since: 'Mapadore dae su:' + uid: 'ID utente:' ct status: 'Tèrmines de collaboratzione:' ct undecided: Indetzisu ct declined: Refudados @@ -2994,7 +3002,9 @@ sc: index: title: Notas insertadas o cummentadas dae %{user} heading: Notas de %{user} - subheading_html: Notas imbiadas o cummentadas dae %{user} + subheading_html: Notas %{submitted} o %{commented} dae %{user} + subheading_submitted: imbiadas + subheading_commented: cummentadas no_notes: Peruna nota id: Id creator: Creadore diff --git a/config/locales/scn.yml b/config/locales/scn.yml index cb4aa3f5b..bf4cf06d1 100644 --- a/config/locales/scn.yml +++ b/config/locales/scn.yml @@ -1297,7 +1297,7 @@ scn: facebook: title: Trasi cu Facebook alt: Trasi cûn cuntu di Facebook - windowslive: + microsoft: title: Trasi cu Windows Live alt: Trasi cûn cuntu di Windows Live github: diff --git a/config/locales/sco.yml b/config/locales/sco.yml index cc0b3b486..4e3fa8fa7 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -808,7 +808,7 @@ sco: facebook: title: Login wi Facebook alt: Login wi a Facebook Accoont - windowslive: + microsoft: title: Login wi Windows Live alt: Login wi a Windows Live Accoont github: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 7bd8b6e87..69551cb83 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -1781,7 +1781,7 @@ sk: facebook: title: Prihlásenie sa pomocou Facebooku alt: Prihlásenie sa pomocou účtu na Facebooku - windowslive: + microsoft: title: Prihlásenie sa pomocou Windows Live alt: Prihlásenie sa pomocou účtu Windows Live github: diff --git a/config/locales/skr-arab.yml b/config/locales/skr-arab.yml index b33dcc7b7..ebf024269 100644 --- a/config/locales/skr-arab.yml +++ b/config/locales/skr-arab.yml @@ -148,7 +148,7 @@ skr-arab: openid: کھلی آئی ڈی google: گوگل facebook: فیسبوک - windowslive: مائیکروسافٹ + microsoft: مائیکروسافٹ github: گِٹ ہب wikipedia: وکیپیڈیا api: @@ -1111,7 +1111,7 @@ skr-arab: alt: گوگل اوپن آئی ڈی نال لاگ ان تھیوو facebook: title: فیس بک نال لاگ ان تھیوو - windowslive: + microsoft: title: مائیکروسافٹ نال لاگ ان تھیوو alt: مائیکروسافٹ کھاتے نال لاگ ان تھیوو github: @@ -1320,6 +1320,8 @@ skr-arab: show: ݙِکھاؤ edit: تبدیلی کرو notes: + index: + subheading_submitted: جمع تھی ڳیا show: title: نوٹ:%{id} description: تفصیل diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 3bbe874dd..6a81b5d2a 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -270,6 +270,7 @@ sl: reopened_at_by_html: Znova aktiviral_a %{user} %{when} rss: title: OpenStreetMap opombe + description_all: Seznam sporočenih, komentiranih ali zaprtih opomb description_area: Seznam opomb, prijavljenih, komentiranih ali zaprtih na vaÅ¡em območju [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] description_item: RSS vir za opombo %{id} @@ -1926,7 +1927,7 @@ sl: facebook: title: Prijavi se s Facebookom alt: Prijavi se z računom Facebook - windowslive: + microsoft: title: Prijava z Microsoftom alt: Prijava z računom Microsoft github: @@ -2823,6 +2824,7 @@ sl: remove as friend: Odstrani prijatelja add as friend: Dodaj med prijatelje mapper since: 'Kartograf od:' + uid: 'ID uporabnika:' ct status: 'Pogoji sodelovanja:' ct undecided: Neodločen ct declined: Zavrnjeni @@ -3017,7 +3019,9 @@ sl: index: title: Opombe, ki jih je posredoval_a ali komentiral_a %{user} heading: Opombe uporabnika %{user} - subheading_html: Opombe, ki jih je posredoval_a ali komentiral_a %{user} + subheading_html: Opombe, ki jih je %{submitted} ali %{commented} %{user} + subheading_submitted: posredoval_a + subheading_commented: komentiral_a no_notes: Ni opomb id: Id creator: Ustvarjalec @@ -3111,6 +3115,7 @@ sl: cyclosm: CyclOSM cycle_map: Kolesarska karta transport_map: Prometna karta + tracestracktop_topo: Tracestrack Topo hot: Humanitarno opnvkarte: ÖPNVKarte layers: @@ -3129,6 +3134,8 @@ sl: andy_allan: Andy Allan opnvkarte_credit: Ploščice z dovoljenjem %{memomaps_link} memomaps: MeMoMaps + tracestrack_credit: Ploščice z dovoljenjem %{tracestrack_link} + tracestrack: Tracestrack hotosm_credit: Slog ploščic %{hotosm_link}, gosti jih %{osm_france_link} hotosm_name: Humanitarna ekipa OpenStreetMap site: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index f980de83b..d015c9baf 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1457,7 +1457,7 @@ sr: facebook: title: Пријавити се са Facebook-ом alt: Пријава преко Facebook налога - windowslive: + microsoft: title: Пријава преко Microsoft-а alt: Пријава преко Microsoft налога github: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 847d18f50..b6f09dd73 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -49,6 +49,7 @@ # Author: VickyC # Author: Westis # Author: WikiPhoenix +# Author: Yupik # Author: Zvenzzon --- sv: @@ -1844,6 +1845,7 @@ sv: home location: Hemposition no home location: Du har inte angivit nÃ¥gon hemposition. update home location on click: Uppdatera hemposition när jag klickar pÃ¥ kartan? + show: Visa update: success: Profil uppdaterad. failure: Kunde inte uppdatera profilen. @@ -1872,7 +1874,7 @@ sv: facebook: title: Logga in med Facebook alt: Logga in med ett Facebook-konto - windowslive: + microsoft: title: Logga in med Microsoft alt: Logga in med ett Microsoft-konto github: diff --git a/config/locales/te.yml b/config/locales/te.yml index 095c11d2f..fc7874b99 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -1781,7 +1781,7 @@ te: facebook: title: Facebook తో లాగినవండి alt: Facebook ఖాతాతో లాగినవండి - windowslive: + microsoft: title: Windows Live తో లాగినవండి alt: Windows Live ఖాతాతో లాగినవండి github: diff --git a/config/locales/th.yml b/config/locales/th.yml index c11f31ee2..64e1da4e9 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1468,7 +1468,7 @@ th: facebook: title: เข้าใช้งานด้วย Facebook alt: เข้าใช้งานด้วยบัญชี Facebook - windowslive: + microsoft: title: เข้าใช้งานด้วย Windows Live alt: เข้าใช้งานด้วยบัญชี Windows Live github: diff --git a/config/locales/tl.yml b/config/locales/tl.yml index 41a18baf6..78226dcaf 100644 --- a/config/locales/tl.yml +++ b/config/locales/tl.yml @@ -1494,7 +1494,7 @@ tl: facebook: title: Lumagda gamit ang Facebook alt: Lumagda gamit ang isang akawnt sa Facebook - windowslive: + microsoft: title: Lumagda gamit ang Windows Live alt: Lumagda gamit ang isang akawnt sa Windows Live github: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 5c325292f..301b5d8cd 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -262,6 +262,7 @@ tr: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Vikipedi api: @@ -277,6 +278,7 @@ tr: reopened_at_by_html: '%{user} tarafından %{when} yeniden etkinleştirildi' rss: title: OpenStreetMap Notları + description_all: Bildirilen, yorum yapılan veya kapatılan notların listesi description_area: '[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] bölgenizde raporlanan, yorumlanan veya kapatılan notların bir listesi' description_item: Not %{id} için bir rss beslemesi @@ -410,6 +412,7 @@ tr: history_title_html: 'Yol geçmişi: %{name}' nodes: Noktalar nodes_count: + one: '%{count} düğüm' other: '%{count} düğüm' also_part_of_html: one: yol parçası %{related_ways} @@ -583,7 +586,6 @@ tr: comment_link: Bu girdiyi yorumla reply_link: Yazara mesaj gönder comment_count: - zero: Yorum yok one: '%{count} yorum' other: '%{count} yorum' no_comments: Yorum yok @@ -1474,8 +1476,7 @@ tr: show: title: '%{status} Sorun #%{issue_id}' reports: - zero: Rapor yok - one: 1 rapor + one: '%{count} rapor' other: '%{count} rapor' no_reports: Rapor yok report_created_at: Ä°lk defa %{datetime} tarihinde bildirildi @@ -1553,7 +1554,7 @@ tr: logout: Oturumu Kapat log_in: Oturum Aç sign_up: Kaydol - start_mapping: Harita Çizmeye Başla + start_mapping: Haritacılığa Başla edit: Düzenle history: Geçmiş export: Dışa aktar @@ -1567,15 +1568,15 @@ tr: edit_with: '%{editor} kullanarak düzenle' tag_line: Özgür Viki Dünya Haritası intro_header: OpenStreetMap'e hoş geldiniz! - intro_text: OpenStreetMap, sizin gibi kişiler tarafından oluşturulan ve açık bir - lisans altında kullanımı ücretsiz olan bir dünya haritasıdır. + intro_text: OpenStreetMap, sizler tarafından oluşturulan ve açık lisans altında + ücretsiz olarak kullanılabilen bir dünya haritasıdır. intro_2_create_account: Bir kullanıcı hesabı oluşturun hosting_partners_html: Barındırma hizmeti; %{ucl}, %{fastly}, %{bytemark} ve diğer - %{partners} tarafından desteklenmektedir. + %{partners} tarafından sağlanmaktadır. partners_ucl: UCL partners_fastly: Fastly partners_bytemark: Bytemark Hosting - partners_partners: ortaklar + partners_partners: işbirlikçiler tou: Kullanım Şartları osm_offline: OpenStreetMap veritabanı bakım çalışmaları yürütüldüğü için veritabanı şu anda çevrimdışıdır. @@ -1638,6 +1639,9 @@ tr: subject: '[OpenStreetMap] GPX dosyası maalesef alınamadı' gpx_success: hi: Merhaba %{to_user}, + loaded: + one: olası %{count} puan üzerinden %{trace_points} ile başarıyla yüklendi. + other: olası %{count} puan üzerinden %{trace_points} ile başarıyla yüklendi. subject: '[OpenStreetMap] GPX dosyası başarıyla alındı' signup_confirm: subject: '[OpenStreetMap]''e hoş geldin' @@ -1794,7 +1798,7 @@ tr: no_such_message: title: Böyle bir mesaj yok heading: Böyle bir mesaj yok - body: Üzgünüz, bu id ile bir mesaj yok. + body: Üzgünüz, bu kimlik ile bir mesaj yok. outbox: title: Giden kutusu my_inbox: Gelen Kutum @@ -1911,7 +1915,7 @@ tr: facebook: title: Facebook ile giriş alt: Facebook Hesabı ile giriş - windowslive: + microsoft: title: Microsoft ile giriş alt: Microsoft Hesabı ile giriş github: @@ -1967,14 +1971,29 @@ tr: OpenStreetMap, piyasa bilgisi üzerinde durmaktadır. Katkıda bulunanlar, OSM'nin doğru ve güncel olduğunu doğrulamak için havadan görüntüler, GPS cihazları ve düşük teknoloji alan haritaları kullanmaktadır. community_driven_title: Katılım Kaynaklı + community_driven_1_html: "OpenStreetMap topluluğu çeşitlidir, tutkuludur ve + her geçen gün büyümektedir.\nKatkıda bulunanlarımız arasında meraklı haritacılar, + GIS uzmanları, OSM sunucularını çalıştıran mühendisler, felaketten etkilenen + alanların haritasını çıkaran insani yardım görevlileri ve çok daha fazlası + yer alıyor.\nTopluluk hakkında daha fazla bilgi edinmek için %{osm_blog_link},\n%{user_diaries_link}, + %{community_blogs_link} ve \n%{osm_foundation_link} web sayfalarına göz atın." community_driven_osm_blog: OpenStreetMap Blogu community_driven_user_diaries: kullanıcı günlükleri community_driven_community_blogs: topluluk blogları community_driven_osm_foundation: OSM Vakfı open_data_title: Açık Veri + open_data_1_html: 'OpenStreetMap, bir %{open_data}dir: OpenStreetMap''e ve katkıda + bulunanlara atıf yaptığınız sürece onu herhangi bir amaç için kullanmakta + özgürsünüz. Verileri belirli şekillerde değiştirir veya verilerden yararlanırsanız + sonucu yalnızca aynı lisans kapsamında dağıtabilirsiniz. Ayrıntılar için %{copyright_license_link}na + bakınız.' open_data_open_data: açık veri open_data_copyright_license: Telif Hakkı ve Lisans sayfası legal_title: Yasal + legal_1_1_html: Bu site ve diğer birçok ilgili hizmet, topluluk adına %{openstreetmap_foundation_link} + (OSMF) tarafından resmî olarak işletilmektedir. OSMF tarafından işletilen + tüm hizmetlerin kullanımı %{terms_of_use_link}, %{aup_link} ve %{privacy_policy_link}na + tabidir. legal_1_1_openstreetmap_foundation: OpenStreetMap Vakfı legal_1_1_terms_of_use: Kullanım Şartları legal_1_1_aup: Kabul Edilebilir Kullanım Politikaları @@ -1985,7 +2004,7 @@ tr: legal_2_2_html: OpenStreetMap, büyüteç logosu ve Harita Durumu %{registered_trademarks_link} sayılmaktadır. legal_2_2_registered_trademarks: OSMF'nin tescilli ticari markaları - partners_title: Ortaklar + partners_title: İşbirlikçiler copyright: foreign: title: Bu çeviri hakkında @@ -1999,7 +2018,7 @@ tr: %{native_link} sayfasına geri gidebilir ya da telif hakkı ve %{mapping_link} hakkında bilgi edinmek için sayfada kalabilirsiniz. native_link: Türkçe sürümü - mapping_link: harita çizmeye başla + mapping_link: haritacılığa başla legal_babble: title_html: Telif Hakkı ve Lisans introduction_1_html: OpenStreetMap%{registered_trademark_link} %{odc_odbl_link} @@ -2019,46 +2038,109 @@ tr: credit_title_html: OpenStreetMap'e nasıl atıfta bulunulur credit_1_html: 'OpenStreetMap verilerini kullandığınız yerde aşağıdaki iki şeyi yapmanız gerekiyor:' + credit_2_1: Telif hakkı bildirimimizi görüntüleyerek OpenStreetMap'e atıfta + bulunun. credit_2_2: Verilerin Açık Veritabanı Lisansı kapsamında mevcut olduğunu açıkça belirtin. + credit_3_html: Telif hakkı bildirimi açısından, verilerimizi nasıl kullandığınıza + bağlı olarak bunun nasıl görüntülenmesi gerektiği konusunda farklı gereksinimlerimiz + vardır. Örneğin, göz atılabilir bir harita, basılı bir harita veya statik + bir resim oluşturmanıza bağlı olarak telif hakkı bildiriminin nasıl gösterileceği + konusunda farklı kurallar geçerlidir. Gereksinimlere ilişkin tüm ayrıntıları %{attribution_guidelines_link} + kısmında bulabilirsiniz. + credit_3_attribution_guidelines: Ä°lişkilendirme Kuralları + credit_4_1_html: Verilerin Açık Veritabanı Lisansı kapsamında mevcut olduğunu + açıkça belirtmek için %{this_copyright_page_link}na bağlantı verebilirsiniz. + Alternatif olarak ve OSM'yi bir veri formunda dağıtıyorsanız bir gereklilik + olarak lisansları doğrudan adlandırabilir ve bunlara bağlantı verebilirsiniz. + Bağlantıların mümkün olmadığı ortamlarda (örneğin basılı eserlerde), okuyucularınızı + openstreetmap.org'a (belki 'OpenStreetMap'i bu tam adrese genişleterek) + ve opendatacommons.org'a yönlendirmenizi öneririz. Bu örnekte atıf haritanın + köşesinde görünür. credit_4_1_this_copyright_page: bu telif hakkı sayfası attribution_example: alt: Web sayfasıında OpenStreetMap atıf etmek için bir örnek title: Atıf örneği more_title_html: Daha fazlasını öğrenin + more_1_1_html: Verilerimizin kullanımı ve bize nasıl atıfta bulunacağınız + hakkında daha fazla bilgiyi %{osmf_licence_page_link}nda bulabilirsiniz. more_1_1_osmf_licence_page: OSMF Lisans sayfası + more_2_1_html: OpenStreetMap açık veri olmasına rağmen üçüncü taraflara ücretsiz + bir harita API'si sağlayamıyoruz. %{api_usage_policy_link}, %{tile_usage_policy_link} + ve %{nominatim_usage_policy_link} sayfalarına bakınız. more_2_1_api_usage_policy: API Kullanım Politikası more_2_1_tile_usage_policy: Karo Kullanım Politikası + more_2_1_nominatim_usage_policy: Ä°smen Kullanım Politikası contributors_title_html: Katkıda Bulunanlar contributors_intro_html: |- Binlerce kişi projemize katkıda bulunmaktadır. Ulusal haritalama ajanslarından ve diğer kaynaklardan açık-lisanslı veriler de içeriyoruz: + contributors_at_credit_html: '%{austria}: %{stadt_wien_link} (%{cc_by_link} + kapsamında), %{land_vorarlberg_link} ve Land Tirol''den (%{cc_by_at_with_amendments_link} + kapsamında) verileri içerir.' contributors_at_austria: Avusturya 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: değişikliklerle birlikte CC BY AT + contributors_au_credit_html: '%{australia}: Ä°dari Sınırlar © %{geoscape_australia_link} + kullanılarak birleştirilmiş veya geliştirilmiştir. Commonwealth of Australia + tarafından %{cc_licence_link} kapsamında lisanslanmıştır.' contributors_au_australia: Avustralya contributors_au_geoscape_australia: Geoscape Australia contributors_au_cc_licence: Creative Commons Atıf 4.0 Uluslararası lisansı (CC BY 4.0) + contributors_ca_credit_html: '%{canada}: GeoBase®, GeoGratis (© Department + of Natural Resources Canada), CanVec (© Department of Natural Resources + Canada), and StatCan (Geography Division, Statistics Canada) verileri içerir.' contributors_ca_canada: Kanada + contributors_fi_credit_html: '%{finland}: Finlandiya Topografik Veritabanı + Ulusal Arazi Araştırması''ndan ve diğer veri kümelerinden veriler içerir + ve %{nlsfi_license_link} ile lisanslanmıştır.' contributors_fi_finland: Finlandiya contributors_fi_nlsfi_license: NLSFI Lisansı + contributors_fr_credit_html: '%{france}: Direction Générale des Impôts''tan + alınan verileri içerir.' contributors_fr_france: Fransa + contributors_nl_credit_html: '%{netherlands}: © AND verilerini içerir, + 2007 (%{and_link})' contributors_nl_netherlands: Hollanda + contributors_nz_credit_html: '%{new_zealand}: %{linz_data_service_link}''nden + alınan ve %{cc_by_link} kapsamında yeniden kullanım için lisanslanan verileri + içerir.' contributors_nz_new_zealand: Yeni Zelanda contributors_nz_linz_data_service: LINZ Veri Hizmeti contributors_nz_cc_by: CC BY 4.0 + contributors_rs_credit_html: '%{serbia}: %{rgz_link} ile %{open_data_portal}''ndan + alınan verileri içerir (Sırbistan''ın kamuya açık bilgileri), 2018.' + contributors_rs_serbia: Sırbistan + contributors_rs_rgz: Sırp Jeodezi Kurumu + contributors_rs_open_data_portal: Ulusal Açık Veri Portalı + contributors_si_credit_html: |- + %{slovenia}: %{gu_link} ve %{mkgp_link} + (Slovenya'nın kamuya açık bilgileri) verilerini içerir. contributors_si_slovenia: Slovenya + contributors_si_gu: Etüt ve Harita Kurumu contributors_si_mkgp: Tarım, Orman ve Gıda Bakanlığı + contributors_es_credit_html: '%{spain}: %{cc_by_link} kapsamında yeniden kullanım + için lisanslanan Ä°spanyol National Geographic Institute (%{ign_link}) ve + National Cartographic System''den (%{scne_link}) alınan verileri içerir.' contributors_es_spain: Ä°spanya contributors_es_ign: IGN contributors_es_cc_by: CC BY 4.0 + contributors_za_credit_html: '%{south_africa}: %{ngi_link} kaynaklı verileri + içerir, Devlet telif hakkı saklıdır.' contributors_za_south_africa: Güney Afrika + contributors_za_ngi: 'Baş Müdürlük: Ulusal Jeo-Uzamsal Bilgi' + contributors_gb_credit_html: '%{united_kingdom}: Ordnance Survey verilerini + içerir © Crown telif hakkı ve veritabanı hakkı, 2010-2023.' contributors_gb_united_kingdom: Birleşik Krallık + contributors_2_html: Bu ve OpenStreetMap'i geliştirmeye yardımcı olmak için + kullanılan diğer kaynaklar hakkında daha fazla ayrıntı için lütfen OpenStreetMap + Wiki'deki %{contributors_page_link}na bakın. contributors_2_contributors_page: Katkıda bulunanlar sayfası contributors_footer_2_html: |- Verilerin OpenStreetMap'e dahil edilmesi, orijinal @@ -2071,7 +2153,15 @@ tr: açık izni olmadan telif hakkıyla korunan kaynaklardan (ör. Google Haritalar veya basılı haritalar) hiçbir zaman veri eklememeleri hatırlatılır. + infringement_2_1_html: Telif hakkıyla korunan materyalin OpenStreetMap veritabanına + veya bu siteye uygunsuz bir şekilde eklendiğine inanıyorsanız lütfen %{takedown_procedure_link} + sayfasına bakın veya doğrudan %{online_filing_page_link} sayfamızda dosyalayın. + infringement_2_1_takedown_procedure: kaldırma prosedürü + infringement_2_1_online_filing_page: çevrimiçi dosyalama sayfası trademarks_title: Ticari markalar + trademarks_1_1_html: OpenStreetMap, büyüteç logosu ve State of the Map; OpenStreetMap + Vakfı'nın tescilli ticari markalarıdır. Markaların kullanımıyla ilgili sorularınız + varsa lütfen %{trademark_policy_link} sayfasına bakın. trademarks_1_1_trademark_policy: Ticari Marka Politikası index: js_1: JavaScript desteklemeyen bir tarayıcı kullanıyorsunuz ya da JavaScript @@ -2145,8 +2235,15 @@ tr: explanation_html: |- Harita verilerinde bir sorun fark ettiyseniz, örneğin bir yol veya adresinizin eksik olması gibi, devam etmenin en iyi yolu OpenStreetMap topluluğuna katılmak ve verileri kendiniz eklemeniz veya düzeltmenizdir. + add_a_note: + instructions_1_html: |- + Harita ekranında %{note_icon} veya aynı simgeye tıklamanız yeterlidir. + Bu, haritaya sürükleyerek taşıyabileceğiniz bir işaretçi ekleyecektir. Mesajınızı ekleyin, ardından kaydet'i tıklayın; diğer haritacılar araştıracaktır. other_concerns: title: Diğer sorunlar + concerns_html: Verilerimizin nasıl kullanıldığına veya içeriğine ilişkin endişeleriniz + varsa daha fazla yasal bilgi için lütfen %{copyright_link}na bakın veya + uygun %{working_group_link}yla iletişime geçin. copyright: telif hakkı sayfası working_group: OSMF çalışma grubu help: @@ -2195,10 +2292,17 @@ tr: kullanılamaz. desktop_application_html: Potlatch'ı %{download_link} ile kullanmaya devam edebilirsiniz. download: Mac ve Windows için masaüstü uygulamasını indirme + id_editor_html: Alternatif olarak varsayılan düzenleyicinizi, daha önce Potlatch'in + yaptığı gibi web tarayıcınızda çalışan iD'ye ayarlayabilirsiniz. %{change_preferences_link}. change_preferences: Tercihlerinizi buradan değiştirin any_questions: title: Sorularınız var mı? + paragraph_1_html: OpenStreetMap'in; proje hakkında bilgi edinmek, soru sormak + ve yanıtlamak ve haritalama konularını iş birliği içinde tartışmak ve belgelemek + için çeşitli kaynakları vardır. %{help_link}. OpenStreetMap için planlar yapan + bir kuruluşla mısınız? %{welcome_mat_link}. get_help_here: Buradan yardım alın + welcome_mat: Sıcak Karşılamaya göz atın sidebar: search_results: Arama Sonuçları close: Kapat @@ -2294,6 +2398,11 @@ tr: bir yerdir. Bu milyonlarca binaları, yolları ve yerler hakkında diğer ayrıntıları içerir. Ä°lginizi çeken her türlü gerçek dünya özelliklerini haritalayabilirsiniz. real_and_current: gerçek ve güncel + off_the_map_html: Derecelendirmeler, geçmiş veya varsayımsal özellikler ve + telif hakkıyla korunan kaynaklardan alınan veriler gibi üzerinde düşünülmüş + veriler %{doesnt}. Özel izniniz olmadığı sürece çevrimiçi veya kağıt haritalardan + kopyalamayın. + doesnt: yok basic_terms: title: Haritacılığın temel terimleri paragraph_1: OpenStreetMap'in kendine ait bazı argoları vardır. İşte kullanışlı @@ -2311,15 +2420,23 @@ tr: tag: etiket rules: title: Kuralları! + para_1_html: OpenStreetMap'in birkaç resmî kuralı olmasına rağmen tüm katılımcıların + toplulukla iş birliği yapmasını ve iletişim kurmasını bekliyoruz. Elle düzenleme + dışında herhangi bir işlem yapmayı düşünüyorsanız lütfen%{imports_link} + ve %{automated_edits_link} kılavuzlarını okuyup uygulayın. imports: Aktarımlar automated_edits: Otomatik Düzenlemeler - start_mapping: Harita Çizmeye Başla + start_mapping: Haritacılığa Başla add_a_note: title: Düzenlemek için vaktin yok mu? O zaman bir not ekle! para_1: |- Küçük bir değişikliğin sabit kalmasını istiyor fakat üye olacak ve nasıl düzenleneceğini öğrenecek zamanınız yoksa not eklemeniz yeterlidir. + para_2_html: |- + %{map_link} kısmına gidip not simgesine tıklamanız yeterli: %{note_icon}. + Bu, haritaya sürükleyerek taşıyabileceğiniz bir işaretçi ekleyecektir. + Mesajınızı ekleyin, ardından kaydet'i tıklayın; diğer haritacılar araştıracaktır. the_map: harita communities: title: Topluluklar @@ -2407,7 +2524,7 @@ tr: trace: pending: BEKLEMEDE count_points: - one: 1 puan + one: '%{count} puan' other: '%{count} puan' more: daha fazla trace_details: Ä°z Ayrıntılarını Görüntüle @@ -2614,7 +2731,7 @@ tr: paragraph_2: Katkıda bulunmaya başlamak için kaydolun. Hesabınızı onaylamak için bir e-posta göndereceğiz. display name description: Herkes tarafından görünecek bir kullanıcı adı. Bu - adı istediğin zaman 'tercihlerim' bölümünde değiştirebilirsin. + adı istediğiniz zaman ayarlar bölümünde değiştirebilirsiniz. external auth: 'Üçüncü Taraf Kimlik Doğrulaması:' use external auth: 'Alternatif olarak bir üçüncü parti uygulaması kullanarak oturum aç:' @@ -2622,7 +2739,11 @@ tr: ancak bazı ek araçlar veya sunucu için yine de bir parola gerekebilir. continue: Kaydol terms accepted: Yeni katılımcı şartları kabul ettiğin için teşekkür ederiz! + email_confirmation_help_html: Adresiniz herkese açık olarak görüntülenmiyor, + daha fazla bilgi için %{privacy_policy_link} sayfasına bakın. privacy_policy: gizlilik politikası + privacy_policy_title: E-posta adresleriyle ilgili bölümü içeren OSMF gizlilik + politikası terms: title: Koşullar heading: Koşullar @@ -2687,6 +2808,7 @@ tr: remove as friend: Arkadaşlıktan çıkar add as friend: Arkadaş Olarak Ekle mapper since: 'Haritacılığa başlama tarihi:' + uid: 'Kullanıcı kimliği:' ct status: 'Katılımcının şartları:' ct undecided: Kararsız ct declined: Reddetti @@ -2824,19 +2946,19 @@ tr: time_past_html: '%{time} bitti.' block_duration: hours: - one: 1 saat + one: '%{count} saat' other: '%{count} saat' days: - one: 1 gün + one: '%{count} gün' other: '%{count} gün' weeks: - one: 1 hafta + one: '%{count} hafta' other: '%{count} hafta' months: - one: 1 ay + one: '%{count} ay' other: '%{count} ay' years: - one: 1 yıl + one: '%{count} yıl' other: '%{count} yıl' blocks_on: title: '%{name} kişisinin engelleri' @@ -2878,7 +3000,9 @@ tr: index: title: '%{user} tarafından gönderilen veya yorumlanan notlar' heading: '%{user} kullanıcıya ait notlar' - subheading_html: '%{user} tarafından gönderilen veya yorumlanan notlar' + subheading_html: '%{user} tarafından %{submitted}} veya %{commented} notlar' + subheading_submitted: gönderilen + subheading_commented: yorumlanan no_notes: Not yok id: Kimlik creator: Oluşturan @@ -2982,9 +3106,16 @@ tr: openstreetmap_contributors: OpenStreetMap'e katkıda bulunanlar make_a_donation: Bağış Yapın website_and_api_terms: Web sitesi ve API koşulları + cyclosm_credit: '%{osm_france_link} tarafından barındırılan %{cyclosm_link} + döşeme tarzı' osm_france: OpenStreetMap Fransa + thunderforest_credit: Döşemeler, %{thunderforest_link} katkılarıyla andy_allan: Andy Allan + opnvkarte_credit: Döşemeler, %{memomaps_link} katkılarıyla memomaps: MeMo Haritaları + hotosm_credit: '%{osm_france_link} tarafından barındırılan %{hotosm_link} döşeme + tarzı' + hotosm_name: Ä°nsani OpenStreetMap Ekibi site: edit_tooltip: Haritayı düzenle edit_disabled_tooltip: Haritayı düzenlemek için yakınlaştırın diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0b51488b7..d6837960e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -283,6 +283,7 @@ uk: openid: OpenID google: Google facebook: Facebook + microsoft: Microsoft github: GitHub wikipedia: Вікіпедія api: @@ -298,6 +299,8 @@ uk: reopened_at_by_html: Відновлено %{when} %{user} rss: title: Нотатки OpenStreetMap + description_all: Перелік нотаток, до яких було надіслано коментарі, які було + закрито та на які були скарги. description_area: Перелік нотаток, створених, прокоментованих чи закритих біля вас [(%{min_lat}|%{min_lon}) — (%{max_lat}|%{max_lon})] description_item: Rss-канал нотаток %{id} @@ -1921,6 +1924,9 @@ uk: no home location: Ви не позначили своє основне місце розташування. update home location on click: Оновлювати моє місце розташування, коли я клацаю на мапу? + show: Показати + delete: Вилучити + undelete: Скасувати вилучення update: success: Профіль збережено. failure: Неможливо зберегти оновлення профілю. @@ -1949,7 +1955,7 @@ uk: facebook: title: Увійти з Facebook alt: Увійти з облікового запису Facebook - windowslive: + microsoft: title: Увійти з Microsoft alt: Увійти з облікового запису Microsoft github: @@ -2847,6 +2853,7 @@ uk: remove as friend: Вилучити зі списку друзів add as friend: Додати до списку друзів mapper since: 'Зареєстрований:' + uid: 'id учасника:' ct status: 'Умови співпраці:' ct undecided: Не визначились ct declined: Відхилили @@ -3048,7 +3055,9 @@ uk: index: title: Нотатки створені чи прокоментовані %{user} heading: Нотатки %{user} - subheading_html: Нотатки, створені чи прокоментовані %{user} + subheading_html: Нотатки, %{submitted} чи %{commented} %{user} + subheading_submitted: створені + subheading_commented: прокоментовані no_notes: Нотаток немає id: Номер creator: Автор diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 530ebb705..4144a3f01 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1738,9 +1738,9 @@ vi: facebook: title: Đăng nhập qua Facebook alt: Đăng nhập dùng tài khoản Facebook - windowslive: - title: Đăng nhập qua Windows Live - alt: Đăng nhập dùng tài khoản Windows Live + microsoft: + title: Đăng nhập qua Microsoft + alt: Đăng nhập dùng Tài khoản Microsoft github: title: Đăng nhập qua GitHub alt: Đăng nhập dùng tài khoản GitHub diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d07cacfeb..f29d9382e 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -39,6 +39,7 @@ # Author: LaoShuBaby # Author: Lepus # Author: Liangent +# Author: LittlePaw365 # Author: Liuxinyu970226 # Author: Mmyangfl # Author: Mywood @@ -54,6 +55,7 @@ # Author: StarrySky # Author: StephDC # Author: TianyinLee +# Author: Tntchn # Author: TsuyaMarisa # Author: Vikarna # Author: VulpesVulpes825 @@ -287,6 +289,7 @@ zh-CN: openid: 开放式身份验证 google: 谷歌 facebook: 脸书 + microsoft: 微软 github: GitHub wikipedia: 维基百科 api: @@ -302,6 +305,7 @@ zh-CN: reopened_at_by_html: '%{user}于%{when}重新激活' rss: title: OpenStreetMap 注记 + description_all: 已报告、评论或关闭的注记列表 description_area: 在您的区域 [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})] 报告、评论或关闭的注记列表 description_item: 注记 %{id} 的简易信息聚合馈送 @@ -418,7 +422,7 @@ zh-CN: history_title_html: 路径历史:%{name} nodes: 节点 nodes_count: - other: '%{count} 个节点' + other: '%{count}个节点' also_part_of_html: one: 属于路径 %{related_ways} other: 属于路径 %{related_ways} @@ -584,6 +588,7 @@ zh-CN: comment_count: one: '%{count} 个评论' other: '%{count} 个评论' + no_comments: 没有评论 edit_link: 编辑该文章 hide_link: 隐藏该文章 unhide_link: 取消隐藏此项目 @@ -1276,7 +1281,7 @@ zh-CN: carpet: 地毯店 charity: 慈善商店 cheese: 奶酪店 - chemist: 化学品店 + chemist: 药妆店 chocolate: 巧克力店 clothes: 服装店 coffee: 咖啡店 @@ -1465,6 +1470,7 @@ zh-CN: reports: one: '%{count}个举报' other: '%{count}个举报' + no_reports: 没有报告 report_created_at: 首次报告于%{datetime} last_resolved_at: 上次解决于%{datetime} last_updated_at: 上次由%{displayname}于%{datetime}更新 @@ -1798,6 +1804,9 @@ zh-CN: home location: 住所位置 no home location: 您还没有输入您的住所位置。 update home location on click: 点击地图时更新所在位置? + show: 显示 + delete: 删除 + undelete: 撤销删除 update: success: 个人资料已更新。 failure: 无法更新个人资料。 @@ -1826,7 +1835,7 @@ zh-CN: facebook: title: 使用脸书登录 alt: 使用Facebook账户登录 - windowslive: + microsoft: title: 使用Microsoft登录 alt: 使用Microsoft账户登录 github: @@ -1982,6 +1991,11 @@ zh-CN: contributors_nz_new_zealand: 新西兰 contributors_nz_linz_data_service: LINZ 数据服务 contributors_nz_cc_by: CC BY 4.0 + contributors_rs_credit_html: '%{serbia}:包含来自%{rgz_link}和%{open_data_portal}(塞尔维亚的公共信息)的数据,2018 + 年。' + contributors_rs_serbia: 塞尔维亚 + contributors_rs_rgz: 塞尔维亚大地测量局 + contributors_rs_open_data_portal: 国家开放数据门户 contributors_si_credit_html: |- %{slovenia}:包含来自%{gu_link}和%{mkgp_link} (斯洛文尼亚公共信息)的数据。 @@ -2566,6 +2580,7 @@ zh-CN: remove as friend: 删除朋友 add as friend: 添加朋友 mapper since: 绘图者注册于: + uid: 用户ID: ct status: 贡献者条款: ct undecided: 未决定 ct declined: 已拒绝 @@ -2743,7 +2758,9 @@ zh-CN: index: title: '%{user} 提交或评论的注记' heading: '%{user} 的注记' - subheading_html: '%{user} 提交或评论的注记' + subheading_html: 由%{user}%{submitted}或%{commented}的注记 + subheading_submitted: 已提交 + subheading_commented: 已评论 no_notes: 没有笔记 id: ID creator: 创建者 @@ -2826,6 +2843,7 @@ zh-CN: cyclosm: 自行车地图 cycle_map: 骑行运动地图 transport_map: 交通运输地图 + tracestracktop_topo: 地形地貌地图 hot: 人道救援地图 opnvkarte: 公共交通地图 layers: @@ -2841,7 +2859,11 @@ zh-CN: cyclosm_credit: 由%{osm_france_link}托管的%{cyclosm_link}的图块风格 osm_france: OpenStreetMap 法国 thunderforest_credit: '%{thunderforest_link}提供的图块' + andy_allan: Andy Allan opnvkarte_credit: '%{memomaps_link}提供的图块' + memomaps: MeMoMaps + tracestrack_credit: '%{tracestrack_link}提供的图块' + tracestrack: 踪迹地图 hotosm_credit: 由%{osm_france_link}托管的%{hotosm_link}图块风格 hotosm_name: 人道主义开放街图团队 site: @@ -2990,8 +3012,8 @@ zh-CN: flash: 修订已销毁。 error: 销毁该修订时出错。 validations: - leading_whitespace: 具有领先的空白 - trailing_whitespace: 具有尾随空白 + leading_whitespace: 有前导空格 + trailing_whitespace: 有尾随空格 invalid_characters: 包含无效字符 url_characters: 包含特殊URL字符 (%{characters}) ... diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 085c06003..b61dd8fa6 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -37,6 +37,7 @@ # Author: StarrySky # Author: StephDC # Author: SupaplexTW +# Author: Tntchn # Author: TongcyDai # Author: Wehwei # Author: Winston Sung @@ -255,6 +256,7 @@ zh-TW: openid: OpenID google: Google facebook: 臉書 + microsoft: 微軟 github: GitHub wikipedia: 維基百科 api: @@ -270,6 +272,7 @@ zh-TW: reopened_at_by_html: 於%{when}由%{user}重新開啟 rss: title: OpenStreetMap 註記 + description_all: 已報告、評論、或是關閉註記的清單 description_area: 在你的區域[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]所報告、評論或關閉的註記的清單 description_item: 註記 %{id} 的 RSS feed opened: 新的註記 (在 %{place} 附近) @@ -1247,7 +1250,7 @@ zh-TW: carpet: 地毯店 charity: 慈善商店 cheese: 起士店鋪 - chemist: 化學材料行 + chemist: 藥妝店 chocolate: 巧克力店鋪 clothes: 服飾店 coffee: 咖啡店 @@ -1809,7 +1812,7 @@ zh-TW: facebook: title: 使用臉書登入 alt: 使用臉書帳號登入 - windowslive: + microsoft: title: 使用 Microsoft 帳號登入 alt: 使用 Microsoft 帳號登入 github: @@ -1929,7 +1932,7 @@ zh-TW: 儘管 OpenStreetMap 是開放資料,我們不對第三方提供免費的地圖 API。 請參閱我們的%{api_usage_policy_link}、%{tile_usage_policy_link}、和%{nominatim_usage_policy_link}。 more_2_1_api_usage_policy: API 使用方針 - more_2_1_tile_usage_policy: 影像塊使用方針 + more_2_1_tile_usage_policy: 圖磚使用方針 more_2_1_nominatim_usage_policy: 提名使用方針 contributors_title_html: 我們的貢獻者 contributors_intro_html: 我們的貢獻者為成千上萬的人。我們也收納了從國家測繪機構及其他來源等取得的開放版權資料,其中包括: @@ -2558,6 +2561,7 @@ zh-TW: remove as friend: 移除好友 add as friend: 加入為好友 mapper since: 註冊為製圖者日期: + uid: 使用者 ID: ct status: 貢獻者條款: ct undecided: 未決定 ct declined: 已拒絕 @@ -2735,7 +2739,9 @@ zh-TW: index: title: 由 %{user} 送出或評論的註記 heading: '%{user} 的註記' - subheading_html: '%{user} 送出或評論的註記' + subheading_html: 由%{user}%{submitted}或%{commented}的註記 + subheading_submitted: 已提交 + subheading_commented: 已評論 no_notes: 沒有註記 id: ID creator: 建立者 @@ -2818,6 +2824,7 @@ zh-TW: cyclosm: CyclOSM cycle_map: 自行車地圖 transport_map: 交通運輸地圖 + tracestracktop_topo: 蹤跡地圖地形 hot: 人道救援 opnvkarte: 公共交通地圖 layers: @@ -2830,13 +2837,15 @@ zh-TW: openstreetmap_contributors: OpenStreetMap 貢獻者 make_a_donation: 捐款 website_and_api_terms: 網站和 API 條款 - cyclosm_credit: 由 %{osm_france_link} 代管的 %{cyclosm_link} 所提供影像塊樣式 + cyclosm_credit: 由 %{osm_france_link} 代管的 %{cyclosm_link} 所提供圖磚樣式 osm_france: OpenStreetMap 法國 - thunderforest_credit: '%{thunderforest_link} 提供的影像塊' + thunderforest_credit: '%{thunderforest_link} 提供的圖磚' andy_allan: Andy Allan - opnvkarte_credit: '%{memomaps_link} 提供的影像塊' + opnvkarte_credit: '%{memomaps_link} 提供的圖磚' memomaps: MeMoMaps - hotosm_credit: 由 %{osm_france_link} 代管的 %{hotosm_link} 所提供影像塊樣式 + tracestrack_credit: '%{tracestrack_link} 提供的圖磚' + tracestrack: 蹤跡地圖 + hotosm_credit: 由 %{osm_france_link} 代管的 %{hotosm_link} 所提供圖磚樣式 hotosm_name: OpenStreetMap 人道主義團隊 site: edit_tooltip: 編輯地圖 diff --git a/config/routes.rb b/config/routes.rb index 415f8a01b..404e7b0a3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -102,6 +102,8 @@ OpenStreetMap::Application.routes.draw do post "notes/editPOIexec" => "api/notes#comment" get "notes/getGPX" => "api/notes#index", :format => "gpx" get "notes/getRSSfeed" => "api/notes#feed", :format => "rss" + + resources :user_blocks, :only => [:show], :constraints => { :id => /\d+/ }, :controller => "api/user_blocks", :as => :api_user_blocks end # Data browsing diff --git a/config/settings.yml b/config/settings.yml index 49b4531ad..e228247e0 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -39,6 +39,10 @@ max_number_of_way_nodes: 2000 max_number_of_relation_members: 32000 # The maximum area you're allowed to request notes from, in square degrees max_note_request_area: 25 +# Default limit on the number of notes returned by the note search api method +default_note_query_limit: 100 +# Maximum limit on the number of notes returned by the note search api method +max_note_query_limit: 10000 # Zoom level to use for postcode results from the geocoder postcode_zoom: 15 # Timeout for API calls in seconds @@ -51,6 +55,11 @@ user_block_periods: [0, 1, 3, 6, 12, 24, 48, 96, 168, 336, 731, 4383, 8766, 8766 max_messages_per_hour: 60 # Rate limit for friending max_friends_per_hour: 60 +# Rate limit for changeset comments +min_changeset_comments_per_hour: 1 +initial_changeset_comments_per_hour: 6 +max_changeset_comments_per_hour: 60 +moderator_changeset_comments_per_hour: 36000 # Domain for handling message replies #messages_domain: "messages.openstreetmap.org" # MaxMind GeoIPv2 database @@ -100,14 +109,16 @@ fossgis_valhalla_url: "https://valhalla1.openstreetmap.de/route" #google_openid_realm: "" #facebook_auth_id: "" #facebook_auth_secret: "" -#windowslive_auth_id: "" -#windowslive_auth_secret: "" #github_auth_id: "" #github_auth_secret: "" +#microsoft_auth_id: "" +#microsoft_auth_secret: "" #wikipedia_auth_id: "" #wikipedia_auth_secret: "" # Thunderforest authentication details #thunderforest_key: "" +# Tracestrack authentication details +#tracestrack_key: "" # Key for generating TOTP tokens #totp_key: "" # Enforce Content-Security-Policy @@ -136,3 +147,8 @@ smtp_user_name: null smtp_password: null # Matomo settings for analytics #matomo: +# Signup rate limits +#signup_ip_per_day: +#signup_ip_max_burst: +#signup_email_per_day: +#signup_email_max_burst: diff --git a/config/settings/test.yml b/config/settings/test.yml index 1f951e872..5f0025925 100644 --- a/config/settings/test.yml +++ b/config/settings/test.yml @@ -6,8 +6,8 @@ google_auth_secret: "dummy" google_openid_realm: "https://www.openstreetmap.org" facebook_auth_id: "dummy" facebook_auth_secret: "dummy" -windowslive_auth_id: "dummy" -windowslive_auth_secret: "dummy" +microsoft_auth_id: "dummy" +microsoft_auth_secret: "dummy" github_auth_id: "dummy" github_auth_secret: "dummy" wikipedia_auth_id: "dummy" @@ -19,3 +19,6 @@ avatar_storage: "test" trace_file_storage: "test" trace_image_storage: "test" trace_icon_storage: "test" +# Lower some rate limits for testing +max_changeset_comments_per_hour: 30 +moderator_changeset_comments_per_hour: 60 diff --git a/db/migrate/20230816135800_use_microsoft_graph.rb b/db/migrate/20230816135800_use_microsoft_graph.rb new file mode 100644 index 000000000..6c37a238b --- /dev/null +++ b/db/migrate/20230816135800_use_microsoft_graph.rb @@ -0,0 +1,9 @@ +class UseMicrosoftGraph < ActiveRecord::Migration[7.0] + def self.up + User.where(:auth_provider => "windowslive").update_all(:auth_provider => "microsoft") + end + + def self.down + User.where(:auth_provider => "microsoft").update_all(:auth_provider => "windowslive") + end +end diff --git a/db/migrate/20230825162137_restore_author_index_to_changeset_comments.rb b/db/migrate/20230825162137_restore_author_index_to_changeset_comments.rb new file mode 100644 index 000000000..81741322e --- /dev/null +++ b/db/migrate/20230825162137_restore_author_index_to_changeset_comments.rb @@ -0,0 +1,7 @@ +class RestoreAuthorIndexToChangesetComments < ActiveRecord::Migration[7.0] + disable_ddl_transaction! + + def change + add_index :changeset_comments, [:author_id, :created_at], :algorithm => :concurrently + end +end diff --git a/db/structure.sql b/db/structure.sql index 89874d779..1874e6461 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2370,6 +2370,13 @@ CREATE UNIQUE INDEX index_active_storage_blobs_on_key ON public.active_storage_b CREATE UNIQUE INDEX index_active_storage_variant_records_uniqueness ON public.active_storage_variant_records USING btree (blob_id, variation_digest); +-- +-- Name: index_changeset_comments_on_author_id_and_created_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_changeset_comments_on_author_id_and_created_at ON public.changeset_comments USING btree (author_id, created_at); + + -- -- Name: index_changeset_comments_on_changeset_id_and_created_at; Type: INDEX; Schema: public; Owner: - -- @@ -3395,6 +3402,8 @@ INSERT INTO "schema_migrations" (version) VALUES ('20211216185316'), ('20220201183346'), ('20220223140543'), +('20230816135800'), +('20230825162137'), ('21'), ('22'), ('23'), diff --git a/lib/auth.rb b/lib/auth.rb index bc1ee8ec6..01167fb1d 100644 --- a/lib/auth.rb +++ b/lib/auth.rb @@ -8,7 +8,7 @@ module Auth }.tap do |providers| providers[I18n.t("auth.providers.google")] = "google" if Settings.key?(:google_auth_id) providers[I18n.t("auth.providers.facebook")] = "facebook" if Settings.key?(:facebook_auth_id) - providers[I18n.t("auth.providers.windowslive")] = "windowslive" if Settings.key?(:windowslive_auth_id) + providers[I18n.t("auth.providers.microsoft")] = "microsoft" if Settings.key?(:microsoft_auth_id) providers[I18n.t("auth.providers.github")] = "github" if Settings.key?(:github_auth_id) providers[I18n.t("auth.providers.wikipedia")] = "wikipedia" if Settings.key?(:wikipedia_auth_id) end.freeze diff --git a/lib/bounding_box.rb b/lib/bounding_box.rb index 9eba0a831..0cc4c5fd4 100644 --- a/lib/bounding_box.rb +++ b/lib/bounding_box.rb @@ -157,7 +157,7 @@ class BoundingBox private def from_bbox_array(bbox_array) - raise OSM::APIBadUserInput, "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat" unless bbox_array + raise OSM::APIBadUserInput, "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat" unless bbox_array # Take an array of length 4, create a bounding box with min_lon, min_lat, max_lon and # max_lat within their respective boundaries. diff --git a/lib/osm.rb b/lib/osm.rb index 4241ad700..6d945c4fe 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -353,6 +353,13 @@ module OSM end end + # Raised when a rate limit is exceeded + class APIRateLimitExceeded < APIError + def status + :too_many_requests + end + end + # Helper methods for going to/from mercator and lat/lng. class Mercator include Math diff --git a/lib/rate_limiter.rb b/lib/rate_limiter.rb new file mode 100644 index 000000000..438f5a1e2 --- /dev/null +++ b/lib/rate_limiter.rb @@ -0,0 +1,38 @@ +class RateLimiter + def initialize(cache, interval, limit, max_burst) + @cache = cache + @requests_per_second = limit.to_f / interval + @burst_limit = max_burst + end + + def allow?(key) + last_update, requests = @cache.get(key) + + if last_update + elapsed = Time.now.to_i - last_update + + requests -= elapsed * @requests_per_second + else + requests = 0.0 + end + + requests < @burst_limit + end + + def update(key) + now = Time.now.to_i + + last_update, requests = @cache.get(key) + + if last_update + elapsed = now - last_update + + requests -= elapsed * @requests_per_second + requests += 1.0 + else + requests = 1.0 + end + + @cache.set(key, [now, [requests, 1.0].max]) + end +end diff --git a/test/controllers/api/capabilities_controller_test.rb b/test/controllers/api/capabilities_controller_test.rb index aa8e21938..46ebb6a37 100644 --- a/test/controllers/api/capabilities_controller_test.rb +++ b/test/controllers/api/capabilities_controller_test.rb @@ -32,8 +32,14 @@ module Api assert_select "area[maximum='#{Settings.max_request_area}']", :count => 1 assert_select "note_area[maximum='#{Settings.max_note_request_area}']", :count => 1 assert_select "tracepoints[per_page='#{Settings.tracepoints_per_page}']", :count => 1 - assert_select "changesets[maximum_elements='#{Changeset::MAX_ELEMENTS}']", :count => 1 + assert_select "changesets" \ + "[maximum_elements='#{Changeset::MAX_ELEMENTS}']" \ + "[default_query_limit='#{Settings.default_changeset_query_limit}']" \ + "[maximum_query_limit='#{Settings.max_changeset_query_limit}']", :count => 1 assert_select "relationmembers[maximum='#{Settings.max_number_of_relation_members}']", :count => 1 + assert_select "notes" \ + "[default_query_limit='#{Settings.default_note_query_limit}']" \ + "[maximum_query_limit='#{Settings.max_note_query_limit}']", :count => 1 assert_select "status[database='online']", :count => 1 assert_select "status[api='online']", :count => 1 assert_select "status[gpx='online']", :count => 1 @@ -58,6 +64,8 @@ module Api 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 Settings.default_note_query_limit, js["api"]["notes"]["default_query_limit"] + assert_equal Settings.max_note_query_limit, js["api"]["notes"]["maximum_query_limit"] assert_equal "online", js["api"]["status"]["database"] assert_equal "online", js["api"]["status"]["api"] assert_equal "online", js["api"]["status"]["gpx"] diff --git a/test/controllers/api/changeset_comments_controller_test.rb b/test/controllers/api/changeset_comments_controller_test.rb index 26500babd..e25926c78 100644 --- a/test/controllers/api/changeset_comments_controller_test.rb +++ b/test/controllers/api/changeset_comments_controller_test.rb @@ -132,6 +132,92 @@ module Api assert_response :bad_request end + ## + # create comment rate limit for new users + def test_create_comment_new_user_rate_limit + changeset = create(:changeset, :closed) + user = create(:user) + + auth_header = basic_authorization_header user.email, "test" + + assert_difference "ChangesetComment.count", Settings.initial_changeset_comments_per_hour do + 1.upto(Settings.initial_changeset_comments_per_hour) do |count| + post changeset_comment_path(:id => changeset, :text => "Comment #{count}"), :headers => auth_header + assert_response :success + end + end + + assert_no_difference "ChangesetComment.count" do + post changeset_comment_path(:id => changeset, :text => "One comment too many"), :headers => auth_header + assert_response :too_many_requests + end + end + + ## + # create comment rate limit for experienced users + def test_create_comment_experienced_user_rate_limit + changeset = create(:changeset, :closed) + user = create(:user) + create_list(:changeset_comment, 200, :author_id => user.id, :created_at => Time.now.utc - 1.day) + + auth_header = basic_authorization_header user.email, "test" + + assert_difference "ChangesetComment.count", Settings.max_changeset_comments_per_hour do + 1.upto(Settings.max_changeset_comments_per_hour) do |count| + post changeset_comment_path(:id => changeset, :text => "Comment #{count}"), :headers => auth_header + assert_response :success + end + end + + assert_no_difference "ChangesetComment.count" do + post changeset_comment_path(:id => changeset, :text => "One comment too many"), :headers => auth_header + assert_response :too_many_requests + end + end + + ## + # create comment rate limit for reported users + def test_create_comment_reported_user_rate_limit + changeset = create(:changeset, :closed) + user = create(:user) + create(:issue_with_reports, :reportable => user, :reported_user => user) + + auth_header = basic_authorization_header user.email, "test" + + assert_difference "ChangesetComment.count", Settings.initial_changeset_comments_per_hour / 2 do + 1.upto(Settings.initial_changeset_comments_per_hour / 2) do |count| + post changeset_comment_path(:id => changeset, :text => "Comment #{count}"), :headers => auth_header + assert_response :success + end + end + + assert_no_difference "ChangesetComment.count" do + post changeset_comment_path(:id => changeset, :text => "One comment too many"), :headers => auth_header + assert_response :too_many_requests + end + end + + ## + # create comment rate limit for moderator users + def test_create_comment_moderator_user_rate_limit + changeset = create(:changeset, :closed) + user = create(:moderator_user) + + auth_header = basic_authorization_header user.email, "test" + + assert_difference "ChangesetComment.count", Settings.moderator_changeset_comments_per_hour do + 1.upto(Settings.moderator_changeset_comments_per_hour) do |count| + post changeset_comment_path(:id => changeset, :text => "Comment #{count}"), :headers => auth_header + assert_response :success + end + end + + assert_no_difference "ChangesetComment.count" do + post changeset_comment_path(:id => changeset, :text => "One comment too many"), :headers => auth_header + assert_response :too_many_requests + end + end + ## # test hide comment fail def test_destroy_comment_fail diff --git a/test/controllers/api/changesets_controller_test.rb b/test/controllers/api/changesets_controller_test.rb index fd1940d6b..b4bc4a5ab 100644 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@ -170,7 +170,7 @@ module Api assert_select "osm>changeset>discussion>comment", 0 changeset = create(:changeset, :closed) - create_list(:changeset_comment, 3, :changeset_id => changeset.id) + comment1, comment2, comment3 = create_list(:changeset_comment, 3, :changeset_id => changeset.id) get changeset_show_path(changeset), :params => { :include_discussion => true } assert_response :success, "cannot get closed changeset with comments" @@ -182,6 +182,9 @@ module Api assert_select "osm>changeset>@closed_at", changeset.closed_at.xmlschema assert_select "osm>changeset>discussion", 1 assert_select "osm>changeset>discussion>comment", 3 + assert_select "osm>changeset>discussion>comment:nth-child(1)>@id", comment1.id.to_s + assert_select "osm>changeset>discussion>comment:nth-child(2)>@id", comment2.id.to_s + assert_select "osm>changeset>discussion>comment:nth-child(3)>@id", comment3.id.to_s end def test_show_json @@ -196,7 +199,7 @@ module Api assert_equal Settings.api_version, js["version"] assert_equal Settings.generator, js["generator"] assert_equal changeset.id, js["changeset"]["id"] - assert js["changeset"]["open"] + assert_operator js["changeset"], :[], "open" assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"] assert_nil js["changeset"]["closed_at"] assert_nil js["changeset"]["tags"] @@ -212,7 +215,7 @@ module Api assert_equal Settings.api_version, js["version"] assert_equal Settings.generator, js["generator"] assert_equal changeset.id, js["changeset"]["id"] - assert js["changeset"]["open"] + assert_operator js["changeset"], :[], "open" assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"] assert_nil js["changeset"]["closed_at"] assert_nil js["changeset"]["tags"] @@ -221,6 +224,25 @@ module Api assert_nil js["changeset"]["max_lat"] assert_nil js["changeset"]["max_lon"] assert_equal 0, js["changeset"]["comments"].count + + changeset = create(:changeset, :closed) + comment0, comment1, comment2 = create_list(:changeset_comment, 3, :changeset_id => changeset.id) + + get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true } + assert_response :success, "cannot get closed changeset with comments" + + 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 changeset.id, js["changeset"]["id"] + assert_not js["changeset"]["open"] + assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"] + assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"] + assert_equal 3, js["changeset"]["comments"].count + assert_equal comment0.id, js["changeset"]["comments"][0]["id"] + assert_equal comment1.id, js["changeset"]["comments"][1]["id"] + assert_equal comment2.id, js["changeset"]["comments"][2]["id"] end def test_show_tag_and_discussion_json @@ -675,10 +697,10 @@ module Api # check that the changeset bbox is within bounds cs = Changeset.find(changeset_id) - assert cs.min_lon >= -180 * GeoRecord::SCALE, "Minimum longitude (#{cs.min_lon / GeoRecord::SCALE}) should be >= -180 to be valid." - assert cs.max_lon <= 180 * GeoRecord::SCALE, "Maximum longitude (#{cs.max_lon / GeoRecord::SCALE}) should be <= 180 to be valid." - assert cs.min_lat >= -90 * GeoRecord::SCALE, "Minimum latitude (#{cs.min_lat / GeoRecord::SCALE}) should be >= -90 to be valid." - assert cs.max_lat <= 90 * GeoRecord::SCALE, "Maximum latitude (#{cs.max_lat / GeoRecord::SCALE}) should be <= 90 to be valid." + assert_operator cs.min_lon, :>=, -180 * GeoRecord::SCALE, "Minimum longitude (#{cs.min_lon / GeoRecord::SCALE}) should be >= -180 to be valid." + assert_operator cs.max_lon, :<=, 180 * GeoRecord::SCALE, "Maximum longitude (#{cs.max_lon / GeoRecord::SCALE}) should be <= 180 to be valid." + assert_operator cs.min_lat, :>=, -90 * GeoRecord::SCALE, "Minimum latitude (#{cs.min_lat / GeoRecord::SCALE}) should be >= -90 to be valid." + assert_operator cs.max_lat, :<=, 90 * GeoRecord::SCALE, "Maximum latitude (#{cs.max_lat / GeoRecord::SCALE}) should be <= 90 to be valid." end ## @@ -1863,8 +1885,10 @@ module Api # not found when looking for changesets of non-existing users get changesets_path(:user => User.maximum(:id) + 1) assert_response :not_found + assert_equal "text/plain", @response.media_type get changesets_path(:display_name => " ") assert_response :not_found + assert_equal "text/plain", @response.media_type # can't get changesets of user 1 without authenticating get changesets_path(:user => private_user.id) diff --git a/test/controllers/api/map_controller_test.rb b/test/controllers/api/map_controller_test.rb index 1e96e353c..c050100ae 100644 --- a/test/controllers/api/map_controller_test.rb +++ b/test/controllers/api/map_controller_test.rb @@ -278,7 +278,7 @@ module Api def test_map_without_bbox get map_path assert_response :bad_request - assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "A bbox param was expected" + assert_equal "The parameter bbox is required", @response.body, "A bbox param was expected" end def test_bbox_too_big @@ -293,7 +293,7 @@ module Api @badmalformedbbox.each do |bbox| get map_path(:bbox => bbox) assert_response :bad_request, "The bbox:#{bbox} was expected to be malformed" - assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}" + assert_equal "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}" end end diff --git a/test/controllers/api/nodes_controller_test.rb b/test/controllers/api/nodes_controller_test.rb index 95658842b..9e680dd06 100644 --- a/test/controllers/api/nodes_controller_test.rb +++ b/test/controllers/api/nodes_controller_test.rb @@ -258,8 +258,7 @@ module Api # valid delete should return the new version number, which should # be greater than the old version number - assert @response.body.to_i > node.version, - "delete request should return a new version number for node" + assert_operator @response.body.to_i, :>, node.version, "delete request should return a new version number for node" # deleting the same node twice doesn't work xml = xml_for_node(node) diff --git a/test/controllers/api/notes_controller_test.rb b/test/controllers/api/notes_controller_test.rb index da2478169..874ac3ccd 100644 --- a/test/controllers/api/notes_controller_test.rb +++ b/test/controllers/api/notes_controller_test.rb @@ -695,6 +695,9 @@ module Api assert_select "gpx", :count => 1 do assert_select "wpt", :count => 1 end + + get api_notes_path(:bbox => "1,1,1.2,1.2", :limit => Settings.max_note_query_limit, :format => "rss") + assert_response :success end def test_index_empty_area @@ -783,6 +786,10 @@ module Api end def test_index_bad_params + get api_notes_path + assert_response :bad_request + assert_equal "The parameter bbox is required", @response.body + get api_notes_path(:bbox => "-2.5,-2.5,2.5") assert_response :bad_request @@ -804,7 +811,7 @@ module Api get api_notes_path(:bbox => "1,1,1.7,1.7", :limit => "0", :format => "json") assert_response :bad_request - get api_notes_path(:bbox => "1,1,1.7,1.7", :limit => "10001", :format => "json") + get api_notes_path(:bbox => "1,1,1.7,1.7", :limit => Settings.max_note_query_limit + 1, :format => "json") assert_response :bad_request end @@ -841,6 +848,9 @@ module Api assert_select "gpx", :count => 1 do assert_select "wpt", :count => 1 end + + get search_api_notes_path(:q => "note comment", :limit => Settings.max_note_query_limit, :format => "xml") + assert_response :success end def test_search_by_display_name_success @@ -921,6 +931,28 @@ module Api end end + def test_search_by_bbox_success + notes = Array.new(5) do |i| + position = ((1.0 + (i * 0.1)) * GeoRecord::SCALE).to_i + create(:note_with_comments, :created_at => Time.parse("2020-01-01T00:00:00Z") + i.day, :latitude => position, :longitude => position) + end + + get search_api_notes_path(:bbox => "1.0,1.0,1.6,1.6", :sort => "created_at", :order => "oldest", :format => "xml") + assert_response :success + assert_equal "application/xml", @response.media_type + assert_notes_in_order notes + + get search_api_notes_path(:bbox => "1.25,1.25,1.45,1.45", :sort => "created_at", :order => "oldest", :format => "xml") + assert_response :success + assert_equal "application/xml", @response.media_type + assert_notes_in_order [notes[3], notes[4]] + + get search_api_notes_path(:bbox => "2.0,2.0,2.5,2.5", :sort => "created_at", :order => "oldest", :format => "xml") + assert_response :success + assert_equal "application/xml", @response.media_type + assert_notes_in_order [] + end + def test_search_no_match create(:note_with_comments) @@ -995,7 +1027,7 @@ module Api get search_api_notes_path(:q => "no match", :limit => "0", :format => "json") assert_response :bad_request - get search_api_notes_path(:q => "no match", :limit => "10001", :format => "json") + get search_api_notes_path(:q => "no match", :limit => Settings.max_note_query_limit + 1, :format => "json") assert_response :bad_request get search_api_notes_path(:display_name => "non-existent") @@ -1037,6 +1069,9 @@ module Api assert_select "item", :count => 2 end end + + get feed_api_notes_path(:bbox => "1,1,1.2,1.2", :limit => Settings.max_note_query_limit, :format => "rss") + assert_response :success end def test_feed_fail @@ -1049,8 +1084,17 @@ module Api get feed_api_notes_path(:bbox => "1,1,1.2,1.2", :limit => "0", :format => "rss") assert_response :bad_request - get feed_api_notes_path(:bbox => "1,1,1.2,1.2", :limit => "10001", :format => "rss") + get feed_api_notes_path(:bbox => "1,1,1.2,1.2", :limit => Settings.max_note_query_limit + 1, :format => "rss") assert_response :bad_request end + + private + + def assert_notes_in_order(notes) + assert_select "osm>note", notes.size + notes.each_with_index do |note, index| + assert_select "osm>note:nth-child(#{index + 1})>id", :text => note.id.to_s, :count => 1 + end + end end end diff --git a/test/controllers/api/relations_controller_test.rb b/test/controllers/api/relations_controller_test.rb index 7f2c19665..7d011c17f 100644 --- a/test/controllers/api/relations_controller_test.rb +++ b/test/controllers/api/relations_controller_test.rb @@ -612,8 +612,7 @@ module Api # valid delete should return the new version number, which should # be greater than the old version number - assert @response.body.to_i > multi_tag_relation.version, - "delete request should return a new version number for relation" + assert_operator @response.body.to_i, :>, multi_tag_relation.version, "delete request should return a new version number for relation" # this won't work since the relation is already deleted xml = update_changeset(xml_for_relation(deleted_relation), changeset.id) diff --git a/test/controllers/api/tracepoints_controller_test.rb b/test/controllers/api/tracepoints_controller_test.rb index 7d561522c..aeea3f4f4 100644 --- a/test/controllers/api/tracepoints_controller_test.rb +++ b/test/controllers/api/tracepoints_controller_test.rb @@ -102,7 +102,7 @@ module Api def test_index_without_bbox get trackpoints_path assert_response :bad_request - assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "A bbox param was expected" + assert_equal "The parameter bbox is required", @response.body, "A bbox param was expected" end def test_traces_page_less_than_zero @@ -129,7 +129,7 @@ module Api @badmalformedbbox.each do |bbox| get trackpoints_path(:bbox => bbox) assert_response :bad_request, "The bbox:#{bbox} was expected to be malformed" - assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}" + assert_equal "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}" end end diff --git a/test/controllers/api/traces_controller_test.rb b/test/controllers/api/traces_controller_test.rb index d85e5e1a4..468af852b 100644 --- a/test/controllers/api/traces_controller_test.rb +++ b/test/controllers/api/traces_controller_test.rb @@ -52,6 +52,7 @@ module Api auth_header = basic_authorization_header public_trace_file.user.display_name, "test" get api_trace_path(public_trace_file), :headers => auth_header assert_response :success + assert_select "gpx_file[id='#{public_trace_file.id}'][uid='#{public_trace_file.user.id}']", 1 end # Check an anonymous trace can't be specifically fetched by another user diff --git a/test/controllers/api/user_blocks_controller_test.rb b/test/controllers/api/user_blocks_controller_test.rb new file mode 100644 index 000000000..c8bdc1d57 --- /dev/null +++ b/test/controllers/api/user_blocks_controller_test.rb @@ -0,0 +1,36 @@ +require "test_helper" + +module Api + class UserBlocksControllerTest < ActionDispatch::IntegrationTest + def test_routes + assert_routing( + { :path => "/api/0.6/user_blocks/1", :method => :get }, + { :controller => "api/user_blocks", :action => "show", :id => "1" } + ) + assert_routing( + { :path => "/api/0.6/user_blocks/1.json", :method => :get }, + { :controller => "api/user_blocks", :action => "show", :id => "1", :format => "json" } + ) + end + + def test_show + block = create(:user_block) + + get api_user_block_path(:id => block) + assert_response :success + assert_select "user_block[id='#{block.id}']", 1 + + get api_user_block_path(:id => block, :format => "json") + assert_response :success + js = ActiveSupport::JSON.decode(@response.body) + assert_not_nil js + assert_equal block.id, js["user_block"]["id"] + end + + def test_show_not_found + get api_user_block_path(:id => 123) + assert_response :not_found + assert_equal "text/plain", @response.media_type + end + end +end diff --git a/test/controllers/api/users_controller_test.rb b/test/controllers/api/users_controller_test.rb index cb2c75205..8e7079b85 100644 --- a/test/controllers/api/users_controller_test.rb +++ b/test/controllers/api/users_controller_test.rb @@ -419,13 +419,19 @@ module Api check_json_details(js["users"][1], user3, false, false) get api_users_path, :params => { :users => create(:user, :suspended).id } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 get api_users_path, :params => { :users => create(:user, :deleted).id } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 get api_users_path, :params => { :users => 0 } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 end def test_index_oauth1 @@ -506,13 +512,19 @@ module Api check_json_details(js["users"][1], user3, false, false) signed_get api_users_path, :params => { :users => create(:user, :suspended).id }, :oauth => { :token => good_token } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 signed_get api_users_path, :params => { :users => create(:user, :deleted).id }, :oauth => { :token => good_token } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 signed_get api_users_path, :params => { :users => 0 }, :oauth => { :token => good_token } - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 end def test_index_oauth2 @@ -593,13 +605,19 @@ module Api check_json_details(js["users"][1], user3, false, false) get api_users_path, :params => { :users => create(:user, :suspended).id }, :headers => bearer_authorization_header(good_token.token) - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 get api_users_path, :params => { :users => create(:user, :deleted).id }, :headers => bearer_authorization_header(good_token.token) - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 get api_users_path, :params => { :users => 0 }, :headers => bearer_authorization_header(good_token.token) - assert_response :not_found + assert_response :success + assert_equal "application/xml", response.media_type + assert_select "user", :count => 0 end def test_gpx_files @@ -713,7 +731,7 @@ module Api def check_json_details(js, user, include_private, include_email) assert_equal user.id, js["user"]["id"] assert_equal user.description, js["user"]["description"] - assert js["user"]["contributor_terms"]["agreed"] + assert_operator js["user"]["contributor_terms"], :[], "agreed" if include_private assert_not js["user"]["contributor_terms"]["pd"] diff --git a/test/controllers/api/versions_controller_test.rb b/test/controllers/api/versions_controller_test.rb index a1a616ad1..1c70831c9 100644 --- a/test/controllers/api/versions_controller_test.rb +++ b/test/controllers/api/versions_controller_test.rb @@ -9,10 +9,18 @@ module Api { :path => "/api/versions", :method => :get }, { :controller => "api/versions", :action => "show" } ) + assert_routing( + { :path => "/api/versions.json", :method => :get }, + { :controller => "api/versions", :action => "show", :format => "json" } + ) assert_recognizes( { :controller => "api/versions", :action => "show" }, { :path => "/api/versions", :method => :get } ) + assert_recognizes( + { :controller => "api/versions", :action => "show", :format => "json" }, + { :path => "/api/versions.json", :method => :get } + ) end def test_versions @@ -25,6 +33,14 @@ module Api end end + def test_versions_json + get api_versions_path, :params => { :format => "json" } + assert_response :success + js = ActiveSupport::JSON.decode(@response.body) + assert_not_nil js + assert_equal [Settings.api_version], js["api"]["versions"] + end + def test_no_version_in_root_element get api_versions_path assert_response :success diff --git a/test/controllers/api/ways_controller_test.rb b/test/controllers/api/ways_controller_test.rb index 0cf30e4ff..2bed0e5d6 100644 --- a/test/controllers/api/ways_controller_test.rb +++ b/test/controllers/api/ways_controller_test.rb @@ -379,8 +379,7 @@ module Api # check the returned value - should be the new version number # valid delete should return the new version number, which should # be greater than the old version number - assert @response.body.to_i > way.version, - "delete request should return a new version number for way" + assert_operator @response.body.to_i, :>, way.version, "delete request should return a new version number for way" # this won't work since the way is already deleted xml = xml_for_way(deleted_way) diff --git a/test/controllers/changesets_controller_test.rb b/test/controllers/changesets_controller_test.rb index a71b5e8fe..79fd7a571 100644 --- a/test/controllers/changesets_controller_test.rb +++ b/test/controllers/changesets_controller_test.rb @@ -321,7 +321,7 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # check the result of a feed def check_feed_result(changesets) - assert changesets.size <= 20 + assert_operator changesets.size, :<=, 20 assert_select "feed", :count => [changesets.size, 1].min do assert_select "> title", :count => 1, :text => /^Changesets/ diff --git a/test/controllers/diary_entries_controller_test.rb b/test/controllers/diary_entries_controller_test.rb index 6365d46e5..b505d9cdb 100644 --- a/test/controllers/diary_entries_controller_test.rb +++ b/test/controllers/diary_entries_controller_test.rb @@ -164,7 +164,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template :new - assert_nil UserPreference.where(:user_id => user.id, :k => "diary.default_language").first + assert_nil UserPreference.where(:user => user, :k => "diary.default_language").first end def test_create @@ -189,7 +189,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest # checks if user was subscribed assert_equal 1, entry.subscribers.length - assert_equal "en", UserPreference.where(:user_id => user.id, :k => "diary.default_language").first.v + assert_equal "en", UserPreference.where(:user => user, :k => "diary.default_language").first.v end def test_create_german @@ -216,7 +216,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest # checks if user was subscribed assert_equal 1, entry.subscribers.length - assert_equal "de", UserPreference.where(:user_id => user.id, :k => "diary.default_language").first.v + assert_equal "de", UserPreference.where(:user => user, :k => "diary.default_language").first.v end def test_new_spammy @@ -568,28 +568,28 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest 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"] + get css_select("li.page-item .page-link").last["href"] assert_response :success 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"] + get css_select("li.page-item .page-link").last["href"] assert_response :success 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"] + get css_select("li.page-item .page-link").first["href"] assert_response :success 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"] + get css_select("li.page-item .page-link").first["href"] assert_response :success assert_select "article.diary_post", :count => 20 assert_select "li.page-item a.page-link", :text => "Older Entries", :count => 1 diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index 16a77624c..27022c973 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -356,7 +356,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_response :success assert_template "revoke" b = UserBlock.find(active_block.id) - assert b.ends_at - Time.now.utc > 100 + assert_operator b.ends_at - Time.now.utc, :>, 100 # Check that revoking a block works using POST post revoke_user_block_path(:id => active_block, :confirm => true) diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 9358a5948..402129d32 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -495,6 +495,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks']", 0 assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks_by']", 0 assert_select "a[href='/blocks/new/#{ERB::Util.u(user.display_name)}']", 0 + assert_select "a[href='/api/0.6/user/#{ERB::Util.u(user.id)}']", 0 end # Login as a moderator @@ -512,6 +513,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks']", 0 assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks_by']", 0 assert_select "a[href='/blocks/new/#{ERB::Util.u(user.display_name)}']", 1 + assert_select "a[href='/api/0.6/user/#{ERB::Util.u(user.id)}']", 1 end end diff --git a/test/factories/changeset_comments.rb b/test/factories/changeset_comments.rb index 673a0a9d6..911e7c1b5 100644 --- a/test/factories/changeset_comments.rb +++ b/test/factories/changeset_comments.rb @@ -5,6 +5,6 @@ FactoryBot.define do changeset - association :author, :factory => :user + author :factory => :user end end diff --git a/test/factories/friendships.rb b/test/factories/friendships.rb index 4879373a8..12df2a945 100644 --- a/test/factories/friendships.rb +++ b/test/factories/friendships.rb @@ -1,6 +1,6 @@ FactoryBot.define do factory :friendship do - association :befriender, :factory => :user - association :befriendee, :factory => :user + befriender :factory => :user + befriendee :factory => :user end end diff --git a/test/factories/issues.rb b/test/factories/issues.rb index c575c3398..cc6b4c367 100644 --- a/test/factories/issues.rb +++ b/test/factories/issues.rb @@ -1,10 +1,21 @@ FactoryBot.define do factory :issue do # Default to reporting users - association :reportable, :factory => :user - association :reported_user, :factory => :user + reportable :factory => :user + reported_user :factory => :user # Default to assigning to an administrator assigned_role { "administrator" } + + # Optionally create some reports for this issue + factory :issue_with_reports do + transient do + reports_count { 1 } + end + + after(:create) do |issue, evaluator| + create_list(:report, evaluator.reports_count, :issue => issue) + end + end end end diff --git a/test/factories/messages.rb b/test/factories/messages.rb index cd148c789..4f8ee5437 100644 --- a/test/factories/messages.rb +++ b/test/factories/messages.rb @@ -4,8 +4,8 @@ FactoryBot.define do sequence(:body) { |n| "Body text for message #{n}" } sent_on { Time.now.utc } - association :sender, :factory => :user - association :recipient, :factory => :user + sender :factory => :user + recipient :factory => :user trait :unread do message_read { false } diff --git a/test/factories/oauth_access_grant.rb b/test/factories/oauth_access_grant.rb index caddea815..b9f53890b 100644 --- a/test/factories/oauth_access_grant.rb +++ b/test/factories/oauth_access_grant.rb @@ -1,7 +1,7 @@ FactoryBot.define do factory :oauth_access_grant, :class => "Doorkeeper::AccessGrant" do - association :resource_owner_id, :factory => :user - association :application, :factory => :oauth_application + resource_owner_id :factory => :user + application :factory => :oauth_application expires_in { 86400 } redirect_uri { application.redirect_uri } diff --git a/test/factories/oauth_access_token.rb b/test/factories/oauth_access_token.rb index 5b39cb400..3f862fbca 100644 --- a/test/factories/oauth_access_token.rb +++ b/test/factories/oauth_access_token.rb @@ -1,5 +1,5 @@ FactoryBot.define do factory :oauth_access_token, :class => "Doorkeeper::AccessToken" do - association :application, :factory => :oauth_application + application :factory => :oauth_application end end diff --git a/test/factories/oauth_applications.rb b/test/factories/oauth_applications.rb index 1e62d2c97..c865e0237 100644 --- a/test/factories/oauth_applications.rb +++ b/test/factories/oauth_applications.rb @@ -3,6 +3,6 @@ FactoryBot.define do sequence(:name) { |n| "OAuth application #{n}" } sequence(:redirect_uri) { |n| "https://example.com/app/#{n}" } - association :owner, :factory => :user + owner :factory => :user end end diff --git a/test/factories/old_node.rb b/test/factories/old_node.rb index a2ca0a2ee..985093fad 100644 --- a/test/factories/old_node.rb +++ b/test/factories/old_node.rb @@ -4,7 +4,7 @@ FactoryBot.define do longitude { 1 * GeoRecord::SCALE } changeset - association :current_node, :factory => :node + current_node :factory => :node visible { true } timestamp { Time.now.utc } diff --git a/test/factories/old_relation.rb b/test/factories/old_relation.rb index 1bc1b36cf..facf06dc0 100644 --- a/test/factories/old_relation.rb +++ b/test/factories/old_relation.rb @@ -5,6 +5,6 @@ FactoryBot.define do version { 1 } changeset - association :current_relation, :factory => :relation + current_relation :factory => :relation end end diff --git a/test/factories/old_relation_member.rb b/test/factories/old_relation_member.rb index 17495d7ea..99305cd98 100644 --- a/test/factories/old_relation_member.rb +++ b/test/factories/old_relation_member.rb @@ -4,6 +4,6 @@ FactoryBot.define do old_relation # Default to creating nodes, but could be ways or relations as members - association :member, :factory => :node + member :factory => :node end end diff --git a/test/factories/old_way.rb b/test/factories/old_way.rb index 265a477d3..b91bf8bf5 100644 --- a/test/factories/old_way.rb +++ b/test/factories/old_way.rb @@ -5,6 +5,6 @@ FactoryBot.define do version { 1 } changeset - association :current_way, :factory => :way + current_way :factory => :way end end diff --git a/test/factories/relation_member.rb b/test/factories/relation_member.rb index b4498a28d..bba2e7633 100644 --- a/test/factories/relation_member.rb +++ b/test/factories/relation_member.rb @@ -4,6 +4,6 @@ FactoryBot.define do relation # Default to creating nodes, but could be ways or relations as members - association :member, :factory => :node + member :factory => :node end end diff --git a/test/factories/user_blocks.rb b/test/factories/user_blocks.rb index fefbba45a..2f68dc8dc 100644 --- a/test/factories/user_blocks.rb +++ b/test/factories/user_blocks.rb @@ -4,7 +4,7 @@ FactoryBot.define do ends_at { Time.now.utc + 1.day } user - association :creator, :factory => :moderator_user + creator :factory => :moderator_user trait :needs_view do needs_view { true } @@ -15,7 +15,7 @@ FactoryBot.define do end trait :revoked do - association :revoker, :factory => :moderator_user + revoker :factory => :moderator_user end end end diff --git a/test/factories/user_role.rb b/test/factories/user_role.rb index 6523342f7..1916d9b2e 100644 --- a/test/factories/user_role.rb +++ b/test/factories/user_role.rb @@ -1,6 +1,6 @@ FactoryBot.define do factory :user_role do user - association :granter, :factory => :user + granter :factory => :user end end diff --git a/test/integration/oauth2_test.rb b/test/integration/oauth2_test.rb index 5750a30b2..81f12f7cb 100644 --- a/test/integration/oauth2_test.rb +++ b/test/integration/oauth2_test.rb @@ -2,22 +2,24 @@ require "test_helper" class OAuth2Test < ActionDispatch::IntegrationTest def test_oauth2 + user = create(:user) client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx") state = SecureRandom.urlsafe_base64(16) - authorize_client(client, :state => state) + authorize_client(user, client, :state => state) assert_response :redirect code = validate_redirect(client, state) token = request_token(client, code) - test_token(token, client) + test_token(token, user, client) end def test_oauth2_oob + user = create(:user) client = create(:oauth_application, :redirect_uri => "urn:ietf:wg:oauth:2.0:oob", :scopes => "read_prefs write_api read_gpx") - authorize_client(client) + authorize_client(user, client) assert_response :redirect follow_redirect! assert_response :success @@ -28,42 +30,44 @@ class OAuth2Test < ActionDispatch::IntegrationTest token = request_token(client, code) - test_token(token, client) + test_token(token, user, client) end def test_oauth2_pkce_plain + user = create(:user) client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx") state = SecureRandom.urlsafe_base64(16) verifier = SecureRandom.urlsafe_base64(48) challenge = verifier - authorize_client(client, :state => state, :code_challenge => challenge, :code_challenge_method => "plain") + authorize_client(user, client, :state => state, :code_challenge => challenge, :code_challenge_method => "plain") assert_response :redirect code = validate_redirect(client, state) token = request_token(client, code, verifier) - test_token(token, client) + test_token(token, user, client) end def test_oauth2_pkce_s256 + user = create(:user) client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx") state = SecureRandom.urlsafe_base64(16) verifier = SecureRandom.urlsafe_base64(48) challenge = Base64.urlsafe_encode64(Digest::SHA256.digest(verifier), :padding => false) - authorize_client(client, :state => state, :code_challenge => challenge, :code_challenge_method => "S256") + authorize_client(user, client, :state => state, :code_challenge => challenge, :code_challenge_method => "S256") assert_response :redirect code = validate_redirect(client, state) token = request_token(client, code, verifier) - test_token(token, client) + test_token(token, user, client) end private - def authorize_client(client, options = {}) + def authorize_client(user, client, options = {}) options = options.merge(:client_id => client.uid, :redirect_uri => client.redirect_uri, :response_type => "code", @@ -73,8 +77,6 @@ class OAuth2Test < ActionDispatch::IntegrationTest assert_response :redirect assert_redirected_to login_path(:referer => request.fullpath) - user = create(:user) - post login_path(:username => user.email, :password => "test") follow_redirect! assert_response :success @@ -138,7 +140,7 @@ class OAuth2Test < ActionDispatch::IntegrationTest token["access_token"] end - def test_token(token, client) + def test_token(token, user, client) get user_preferences_path assert_response :unauthorized @@ -156,6 +158,21 @@ class OAuth2Test < ActionDispatch::IntegrationTest get api_trace_path(:id => 2), :headers => auth_header assert_response :forbidden + user.suspend! + + get user_preferences_path, :headers => auth_header + assert_response :forbidden + + user.hide! + + get user_preferences_path, :headers => auth_header + assert_response :forbidden + + user.unhide! + + get user_preferences_path, :headers => auth_header + assert_response :success + post oauth_revoke_path(:token => token) assert_response :forbidden diff --git a/test/integration/oauth_test.rb b/test/integration/oauth_test.rb index 2c473aac5..70f161fc9 100644 --- a/test/integration/oauth_test.rb +++ b/test/integration/oauth_test.rb @@ -5,12 +5,9 @@ class OAuthTest < ActionDispatch::IntegrationTest def test_oauth10_web_app client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true) + user = create(:user) - get "/login" - follow_redirect! - post "/login", :params => { :username => client.user.email, :password => "test" } - follow_redirect! - assert_response :success + session_for(user) oauth10_without_callback(client) oauth10_with_callback(client, "http://another.web.app.example.org/callback") @@ -19,12 +16,9 @@ class OAuthTest < ActionDispatch::IntegrationTest def test_oauth10_desktop_app client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true) + user = create(:user) - get "/login" - follow_redirect! - post "/login", :params => { :username => client.user.email, :password => "test" } - follow_redirect! - assert_response :success + session_for(user) oauth10_without_callback(client) oauth10_refused(client) @@ -32,12 +26,9 @@ class OAuthTest < ActionDispatch::IntegrationTest def test_oauth10a_web_app client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true) + user = create(:user) - get "/login" - follow_redirect! - post "/login", :params => { :username => client.user.email, :password => "test" } - follow_redirect! - assert_response :success + session_for(user) oauth10a_without_callback(client) oauth10a_with_callback(client, "http://another.web.app.example.org/callback") @@ -46,12 +37,9 @@ class OAuthTest < ActionDispatch::IntegrationTest def test_oauth10a_desktop_app client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true) + user = create(:user) - get "/login" - follow_redirect! - post "/login", :params => { :username => client.user.email, :password => "test" } - follow_redirect! - assert_response :success + session_for(user) oauth10a_without_callback(client) oauth10a_refused(client) @@ -95,12 +83,28 @@ class OAuthTest < ActionDispatch::IntegrationTest assert_nil token.invalidated_at assert_allowed token, [:allow_read_prefs] + post logout_path + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } assert_response :success signed_get "/api/0.6/gpx/2", :oauth => { :token => token } assert_response :forbidden + token.user.suspend! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :forbidden + + token.user.hide! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :forbidden + + token.user.unhide! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :success + + session_for(token.user) + post "/oauth/revoke", :params => { :token => token.token } assert_redirected_to oauth_clients_url(token.user.display_name) token = OauthToken.find_by(:token => token.token) @@ -173,13 +177,29 @@ class OAuthTest < ActionDispatch::IntegrationTest assert_nil token.invalidated_at assert_allowed token, [:allow_write_api, :allow_read_gpx] - trace = create(:trace, :user => client.user) + post logout_path + + trace = create(:trace, :user => token.user) signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } assert_response :success signed_get "/api/0.6/user/details", :oauth => { :token => token } assert_response :forbidden + token.user.suspend! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :forbidden + + token.user.hide! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :forbidden + + token.user.unhide! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :success + + session_for(token.user) + post "/oauth/revoke", :params => { :token => token.token } assert_redirected_to oauth_clients_url(token.user.display_name) token = OauthToken.find_by(:token => token.token) @@ -232,13 +252,29 @@ class OAuthTest < ActionDispatch::IntegrationTest assert_nil token.invalidated_at assert_allowed token, [:allow_read_prefs] + post logout_path + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } assert_response :success - trace = create(:trace, :user => client.user) + trace = create(:trace, :user => token.user) signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } assert_response :forbidden + token.user.suspend! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :forbidden + + token.user.hide! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :forbidden + + token.user.unhide! + signed_get "/api/0.6/user/preferences", :oauth => { :token => token } + assert_response :success + + session_for(token.user) + post "/oauth/revoke", :params => { :token => token.token } assert_redirected_to oauth_clients_url(token.user.display_name) token = OauthToken.find_by(:token => token.token) @@ -283,13 +319,29 @@ class OAuthTest < ActionDispatch::IntegrationTest assert_nil token.invalidated_at assert_allowed token, [:allow_write_api, :allow_read_gpx] - trace = create(:trace, :user => client.user) + post logout_path + + trace = create(:trace, :user => token.user) signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } assert_response :success signed_get "/api/0.6/user/details", :oauth => { :token => token } assert_response :forbidden + token.user.suspend! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :forbidden + + token.user.hide! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :forbidden + + token.user.unhide! + signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token } + assert_response :success + + session_for(token.user) + post "/oauth/revoke", :params => { :token => token.token } assert_redirected_to oauth_clients_url(token.user.display_name) token = OauthToken.find_by(:token => token.token) diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index d7f6f5200..2baa6f776 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -11,7 +11,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest OmniAuth.config.mock_auth[:openid] = nil OmniAuth.config.mock_auth[:google] = nil OmniAuth.config.mock_auth[:facebook] = nil - OmniAuth.config.mock_auth[:windowslive] = nil + OmniAuth.config.mock_auth[:microsoft] = nil OmniAuth.config.mock_auth[:github] = nil OmniAuth.config.mock_auth[:wikipedia] = nil OmniAuth.config.test_mode = false @@ -689,28 +689,28 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_template "site/welcome" end - def test_user_create_windowslive_success - new_email = "newtester-windowslive@osm.org" - display_name = "new_tester-windowslive" + def test_user_create_microsoft_success + new_email = "newtester-microsoft@osm.org" + display_name = "new_tester-microsoft" password = "testtest" - OmniAuth.config.add_mock(:windowslive, :uid => "123454321", :info => { "email" => new_email }) + OmniAuth.config.add_mock(:microsoft, :uid => "123454321", :info => { "email" => new_email }) assert_difference("User.count") do - assert_difference("ActionMailer::Base.deliveries.size", 1) 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 => "windowslive", + :auth_provider => "microsoft", :pass_crypt => "", :pass_crypt_confirmation => "" } } assert_response :redirect - assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new") + assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") post response.location assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect assert_redirected_to "/user/terms" @@ -718,13 +718,13 @@ class UserCreationTest < ActionDispatch::IntegrationTest :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, - :auth_provider => "windowslive", + :auth_provider => "microsoft", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password }, :read_ct => 1, :read_tou => 1 } assert_response :redirect - assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name + assert_redirected_to welcome_path follow_redirect! end end @@ -732,16 +732,16 @@ class UserCreationTest < ActionDispatch::IntegrationTest # Check the page assert_response :success - assert_template "confirmations/confirm" + assert_template "site/welcome" ActionMailer::Base.deliveries.clear end - def test_user_create_windowslive_failure - OmniAuth.config.mock_auth[:windowslive] = :connection_failed + def test_user_create_microsoft_failure + OmniAuth.config.mock_auth[:microsoft] = :connection_failed - new_email = "newtester-windowslive2@osm.org" - display_name = "new_tester-windowslive2" + 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 @@ -749,17 +749,17 @@ class UserCreationTest < ActionDispatch::IntegrationTest :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, - :auth_provider => "windowslive", + :auth_provider => "microsoft", :pass_crypt => "", :pass_crypt_confirmation => "" } } assert_response :redirect - assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new") + assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") post response.location assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect - assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/user/new") + assert_redirected_to auth_failure_path(:strategy => "microsoft", :message => "connection_failed", :origin => "/user/new") follow_redirect! assert_response :redirect follow_redirect! @@ -772,11 +772,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest ActionMailer::Base.deliveries.clear end - def test_user_create_windowslive_redirect - OmniAuth.config.add_mock(:windowslive, :uid => "123454321") + def test_user_create_microsoft_redirect + OmniAuth.config.add_mock(:microsoft, :uid => "123454321") - new_email = "redirect_tester_windowslive@osm.org" - display_name = "redirect_tester_windowslive" + new_email = "redirect_tester_microsoft@osm.org" + display_name = "redirect_tester_microsoft" # nothing special about this page, just need a protected page to redirect back to. referer = "/traces/mine" assert_difference("User.count") do @@ -786,15 +786,15 @@ class UserCreationTest < ActionDispatch::IntegrationTest :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, - :auth_provider => "windowslive", + :auth_provider => "microsoft", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer } assert_response :redirect - assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new") + assert_redirected_to auth_path(:provider => "microsoft", :origin => "/user/new") post response.location assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect assert_redirected_to "/user/terms" @@ -802,7 +802,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, - :auth_provider => "windowslive", + :auth_provider => "microsoft", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }, @@ -817,7 +817,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest assert_equal register_email.to.first, new_email # Check that the confirm account url is correct - confirm_regex = Regexp.new("/user/redirect_tester_windowslive/confirm\\?confirm_string=([a-zA-Z0-9]*)") + confirm_regex = Regexp.new("/user/redirect_tester_microsoft/confirm\\?confirm_string=([a-zA-Z0-9]*)") email_text_parts(register_email).each do |part| assert_match confirm_regex, part.body.to_s end diff --git a/test/integration/user_login_test.rb b/test/integration/user_login_test.rb index 5610f9b6e..a9c64bea4 100644 --- a/test/integration/user_login_test.rb +++ b/test/integration/user_login_test.rb @@ -9,7 +9,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest OmniAuth.config.mock_auth[:openid] = nil OmniAuth.config.mock_auth[:google] = nil OmniAuth.config.mock_auth[:facebook] = nil - OmniAuth.config.mock_auth[:windowslive] = nil + OmniAuth.config.mock_auth[:microsoft] = nil OmniAuth.config.mock_auth[:github] = nil OmniAuth.config.mock_auth[:wikipedia] = nil OmniAuth.config.test_mode = false @@ -853,9 +853,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", false end - def test_login_windowslive_success - user = create(:user, :auth_provider => "windowslive", :auth_uid => "1234567890") - OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + def test_login_microsoft_success + user = create(:user, :auth_provider => "microsoft", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:microsoft, :uid => user.auth_uid) get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -863,9 +863,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect follow_redirect! @@ -874,9 +874,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end - def test_login_windowslive_pending - user = create(:user, :pending, :auth_provider => "windowslive", :auth_uid => "1234567890") - OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + def test_login_microsoft_pending + user = create(:user, :pending, :auth_provider => "microsoft", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:microsoft, :uid => user.auth_uid) get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -884,9 +884,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect follow_redirect! @@ -894,9 +894,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_template "confirm" end - def test_login_windowslive_suspended - user = create(:user, :suspended, :auth_provider => "windowslive", :auth_uid => "1234567890") - OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + def test_login_microsoft_suspended + user = create(:user, :suspended, :auth_provider => "microsoft", :auth_uid => "1234567890") + OmniAuth.config.add_mock(:microsoft, :uid => user.auth_uid) get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -904,9 +904,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect follow_redirect! @@ -918,10 +918,10 @@ class UserLoginTest < ActionDispatch::IntegrationTest end end - def test_login_windowslive_blocked - user = create(:user, :auth_provider => "windowslive", :auth_uid => "1234567890") + def test_login_microsoft_blocked + user = create(:user, :auth_provider => "microsoft", :auth_uid => "1234567890") create(:user_block, :needs_view, :user => user) - OmniAuth.config.add_mock(:windowslive, :uid => user.auth_uid) + OmniAuth.config.add_mock(:microsoft, :uid => user.auth_uid) get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -929,9 +929,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect follow_redirect! @@ -940,8 +940,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", user.display_name end - def test_login_windowslive_connection_failed - OmniAuth.config.mock_auth[:windowslive] = :connection_failed + def test_login_microsoft_connection_failed + OmniAuth.config.mock_auth[:microsoft] = :connection_failed get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -949,12 +949,12 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect - assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/login?referer=%2Fhistory") + assert_redirected_to auth_failure_path(:strategy => "microsoft", :message => "connection_failed", :origin => "/login?referer=%2Fhistory") follow_redirect! assert_response :redirect follow_redirect! @@ -964,8 +964,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", false end - def test_login_windowslive_invalid_credentials - OmniAuth.config.mock_auth[:windowslive] = :invalid_credentials + def test_login_microsoft_invalid_credentials + OmniAuth.config.mock_auth[:microsoft] = :invalid_credentials get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -973,12 +973,12 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect - assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "invalid_credentials", :origin => "/login?referer=%2Fhistory") + assert_redirected_to auth_failure_path(:strategy => "microsoft", :message => "invalid_credentials", :origin => "/login?referer=%2Fhistory") follow_redirect! assert_response :redirect follow_redirect! @@ -988,8 +988,8 @@ class UserLoginTest < ActionDispatch::IntegrationTest assert_select "span.username", false end - def test_login_windowslive_unknown - OmniAuth.config.add_mock(:windowslive, :uid => "987654321") + def test_login_microsoft_unknown + OmniAuth.config.add_mock(:microsoft, :uid => "987654321") get "/login", :params => { :referer => "/history" } assert_response :redirect @@ -997,9 +997,9 @@ class UserLoginTest < ActionDispatch::IntegrationTest follow_redirect! assert_response :success assert_template "sessions/new" - post auth_path(:provider => "windowslive", :origin => "/login?referer=%2Fhistory", :referer => "/history") + post auth_path(:provider => "microsoft", :origin => "/login?referer=%2Fhistory", :referer => "/history") assert_response :redirect - assert_redirected_to auth_success_path(:provider => "windowslive") + assert_redirected_to auth_success_path(:provider => "microsoft") follow_redirect! assert_response :redirect follow_redirect! diff --git a/test/lib/bounding_box_test.rb b/test/lib/bounding_box_test.rb index d82e2c9ae..d176e0fa7 100644 --- a/test/lib/bounding_box_test.rb +++ b/test/lib/bounding_box_test.rb @@ -3,7 +3,7 @@ require "test_helper" class BoundingBoxTest < ActiveSupport::TestCase def setup @size_error_message = "The maximum bbox size is 0.25, and your request was too large. Either request a smaller area, or use planet.osm" - @malformed_error_message = "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat" + @malformed_error_message = "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat" @lon_order_error_message = "The minimum longitude must be less than the maximum longitude, but it wasn't" @lat_order_error_message = "The minimum latitude must be less than the maximum latitude, but it wasn't" @bbox_out_of_limits_error_message = "The latitudes must be between -90.0 and 90.0, and longitudes between -180.0 and 180.0" diff --git a/test/lib/locale_test.rb b/test/lib/locale_test.rb index d84239038..9aec035d1 100644 --- a/test/lib/locale_test.rb +++ b/test/lib/locale_test.rb @@ -80,7 +80,7 @@ class LocaleTest < ActiveSupport::TestCase end def test_available - assert Locale.available.count <= I18n.available_locales.count + assert_operator Locale.available.count, :<=, I18n.available_locales.count end def test_preferred diff --git a/test/lib/password_hash_test.rb b/test/lib/password_hash_test.rb index 54450b186..9bfd73496 100644 --- a/test/lib/password_hash_test.rb +++ b/test/lib/password_hash_test.rb @@ -28,16 +28,18 @@ class PasswordHashTest < ActiveSupport::TestCase assert PasswordHash.upgrade?("3wYbPiOxk/tU0eeIDjUhdvi8aDP3AbFtwYKKxF1IhGg=", "sha512!10000!OUQLgtM7eD8huvanFT5/WtWaCwdOdrir8QOtFwxhO0A=") end - def test_argon2_upgradeable - assert PasswordHash.check("$argon2id$v=19$m=65536,t=1,p=1$KXGHWfWMf5H5kY4uU3ua8A$YroVvX6cpJpljTio62k19C6UpuIPtW7me2sxyU2dyYg", nil, "password") - assert_not PasswordHash.check("$argon2id$v=19$m=65536,t=1,p=1$KXGHWfWMf5H5kY4uU3ua8A$YroVvX6cpJpljTio62k19C6UpuIPtW7me2sxyU2dyYg", nil, "wrong") - assert PasswordHash.upgrade?("$argon2id$v=19$m=65536,t=1,p=1$KXGHWfWMf5H5kY4uU3ua8A$YroVvX6cpJpljTio62k19C6UpuIPtW7me2sxyU2dyYg", nil) - end - - def test_argon2 + def test_argon2_t2_m16_p1 assert PasswordHash.check("$argon2id$v=19$m=65536,t=2,p=1$b2E7zSvjT6TC5DXrqvfxwg$P4hly807ckgYc+kfvaf3rqmJcmKStzw+kV14oMaz8PQ", nil, "password") assert_not PasswordHash.check("$argon2id$v=19$m=65536,t=2,p=1$b2E7zSvjT6TC5DXrqvfxwg$P4hly807ckgYc+kfvaf3rqmJcmKStzw+kV14oMaz8PQ", nil, "wrong") - assert_not PasswordHash.upgrade?("$argon2id$v=19$m=65536,t=2,p=1$b2E7zSvjT6TC5DXrqvfxwg$P4hly807ckgYc+kfvaf3rqmJcmKStzw+kV14oMaz8PQ", nil) + assert_not PasswordHash.check("$argon2id$v=19$m=65536,t=2,p=1$b2E7zSvwrong5DXrqvfxwg$P4hly807ckgYc+kfvaf3rqmJcmKStzw+kV14oMaz8PQ", nil, "password") + assert PasswordHash.upgrade?("$argon2id$v=19$m=65536,t=2,p=1$b2E7zSvjT6TC5DXrqvfxwg$P4hly807ckgYc+kfvaf3rqmJcmKStzw+kV14oMaz8PQ", nil) + end + + def test_argon2_t3_m16_p4 + assert PasswordHash.check("$argon2id$v=19$m=65536,t=3,p=4$uxzL4aYTEDTRr2+KNA1qNQ$yuNOtH+IsCwWUbE4OGu+hIC0e4iyZ2wGhaCsQY1mJpI", nil, "password") + assert_not PasswordHash.check("$argon2id$v=19$m=65536,t=3,p=4$uxzL4aYTEDTRr2+KNA1qNQ$yuNOtH+IsCwWUbE4OGu+hIC0e4iyZ2wGhaCsQY1mJpI", nil, "wrong") + assert_not PasswordHash.check("$argon2id$v=19$m=65536,t=3,p=4$uxzL4aYwrongr2+KNA1qNQ$yuNOtH+IsCwWUbE4OGu+hIC0e4iyZ2wGhaCsQY1mJpI", nil, "password") + assert_not PasswordHash.upgrade?("$argon2id$v=19$m=65536,t=3,p=4$uxzL4aYTEDTRr2+KNA1qNQ$yuNOtH+IsCwWUbE4OGu+hIC0e4iyZ2wGhaCsQY1mJpI", nil) end def test_default @@ -59,6 +61,6 @@ class PasswordHashTest < ActiveSupport::TestCase format = Argon2::HashFormat.new(hash) assert_equal "argon2id", format.variant - assert format.version <= 19 + assert_operator format.version, :<=, 19 end end diff --git a/test/lib/short_link_test.rb b/test/lib/short_link_test.rb index a0a1023bb..a32e1ac20 100644 --- a/test/lib/short_link_test.rb +++ b/test/lib/short_link_test.rb @@ -20,7 +20,7 @@ class ShortLinkTest < ActiveSupport::TestCase # smaller range. distance = Math.sqrt(((lat - lat2)**2) + ((lon - lon2)**2)) max_distance = 360.0 / (1 << (zoom + 8)) * 0.5 * Math.sqrt(5) - assert max_distance > distance, "Maximum expected error exceeded: #{max_distance} <= #{distance} for (#{lat}, #{lon}, #{zoom})." + assert_operator max_distance, :>, distance, "Maximum expected error exceeded: #{max_distance} <= #{distance} for (#{lat}, #{lon}, #{zoom})." end end diff --git a/test/models/trace_test.rb b/test/models/trace_test.rb index 762df6648..66107771a 100644 --- a/test/models/trace_test.rb +++ b/test/models/trace_test.rb @@ -193,16 +193,16 @@ class TraceTest < ActiveSupport::TestCase def test_import_creates_tracepoints trace = create(:trace, :fixture => "a") - assert_equal 0, Tracepoint.where(:gpx_id => trace.id).count + assert_equal 0, Tracepoint.where(:trace => trace).count trace.import trace.reload - assert_equal 1, Tracepoint.where(:gpx_id => trace.id).count + assert_equal 1, Tracepoint.where(:trace => trace).count # Check that the tile has been set prior to the bulk import # i.e. that the callbacks have been run correctly - assert_equal 3221331576, Tracepoint.where(:gpx_id => trace.id).first.tile + assert_equal 3221331576, Tracepoint.where(:trace => trace).first.tile end def test_import_creates_icon diff --git a/test/system/account_deletion_test.rb b/test/system/account_deletion_test.rb index 5a55c5838..87e981c64 100644 --- a/test/system/account_deletion_test.rb +++ b/test/system/account_deletion_test.rb @@ -9,9 +9,9 @@ class AccountDeletionTest < ApplicationSystemTestCase test "the status is deleted and the personal data removed" do visit edit_account_path - click_on "Delete Account..." + click_link "Delete Account..." accept_confirm do - click_on "Delete Account" + click_link "Delete Account" end assert_current_path root_path @@ -23,9 +23,9 @@ class AccountDeletionTest < ApplicationSystemTestCase test "the user is signed out after deletion" do visit edit_account_path - click_on "Delete Account..." + click_link "Delete Account..." accept_confirm do - click_on "Delete Account" + click_link "Delete Account" end assert_content "Log In" @@ -34,9 +34,9 @@ class AccountDeletionTest < ApplicationSystemTestCase test "the user is shown a confirmation flash message" do visit edit_account_path - click_on "Delete Account..." + click_link "Delete Account..." accept_confirm do - click_on "Delete Account" + click_link "Delete Account" end assert_content "Account Deleted" diff --git a/test/system/diary_entry_test.rb b/test/system/diary_entry_test.rb index 31e6d7b07..554b89a6d 100644 --- a/test/system/diary_entry_test.rb +++ b/test/system/diary_entry_test.rb @@ -10,7 +10,7 @@ class DiaryEntrySystemTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit diary_entries_path - click_on "Send a message to the author" + click_link "Send a message to the author" assert_content "Send a new message" assert_equal "Re: #{@diary_entry.title}", page.find_field("Subject").value diff --git a/test/system/issues_test.rb b/test/system/issues_test.rb index b9b989c07..a40306e3c 100644 --- a/test/system/issues_test.rb +++ b/test/system/issues_test.rb @@ -80,21 +80,21 @@ class IssuesTest < ApplicationSystemTestCase # No issues against the user visit issues_path fill_in "search_by_user", :with => good_user.display_name - click_on "Search" + click_button "Search" assert_no_content I18n.t("issues.index.user_not_found") assert_content I18n.t("issues.index.issues_not_found") # User doesn't exist visit issues_path fill_in "search_by_user", :with => "Nonexistent User" - click_on "Search" + click_button "Search" assert_content I18n.t("issues.index.user_not_found") assert_content I18n.t("issues.index.issues_not_found") # Find Issue against bad_user visit issues_path fill_in "search_by_user", :with => bad_user.display_name - click_on "Search" + click_button "Search" assert_no_content I18n.t("issues.index.user_not_found") assert_no_content I18n.t("issues.index.issues_not_found") end @@ -106,7 +106,7 @@ class IssuesTest < ApplicationSystemTestCase visit issue_path(issue) fill_in :issue_comment_body, :with => "test comment" - click_on "Add Comment" + click_button "Add Comment" assert_content I18n.t("issue_comments.create.comment_created") assert_content "test comment" @@ -123,7 +123,7 @@ class IssuesTest < ApplicationSystemTestCase fill_in :issue_comment_body, :with => "reassigning to moderators" check :reassign - click_on "Add Comment" + click_button "Add Comment" assert_content "and the issue was reassigned" assert_current_path issues_path(:status => "open") @@ -140,7 +140,7 @@ class IssuesTest < ApplicationSystemTestCase fill_in :issue_comment_body, :with => "reassigning to moderators" check :reassign - click_on "Add Comment" + click_button "Add Comment" assert_content "and the issue was reassigned" assert_current_path issue_path(issue) diff --git a/test/system/preferences_test.rb b/test/system/preferences_test.rb index 59a7209f5..b071b1f73 100644 --- a/test/system/preferences_test.rb +++ b/test/system/preferences_test.rb @@ -5,7 +5,7 @@ class PreferencesTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit edit_preferences_path - click_on "Update Preferences" + click_button "Update Preferences" assert_content "Preferences updated" end @@ -15,7 +15,7 @@ class PreferencesTest < ApplicationSystemTestCase visit edit_preferences_path fill_in "Preferred Languages", :with => "fr" - click_on "Update Preferences" + click_button "Update Preferences" assert_content "Préférences mises à jour" end diff --git a/test/system/report_diary_comment_test.rb b/test/system/report_diary_comment_test.rb index 3504ab061..15ef1ad3c 100644 --- a/test/system/report_diary_comment_test.rb +++ b/test/system/report_diary_comment_test.rb @@ -19,14 +19,14 @@ class ReportDiaryCommentTest < ApplicationSystemTestCase visit diary_entry_path(@diary_entry.user.display_name, @diary_entry) assert_content @diary_entry.title - click_on I18n.t("diary_entries.diary_comment.report") + click_link I18n.t("diary_entries.diary_comment.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.diary_comment.spam_label") fill_in "report_details", :with => "This comment is spam" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" diff --git a/test/system/report_diary_entry_test.rb b/test/system/report_diary_entry_test.rb index efb107065..d4e49b714 100644 --- a/test/system/report_diary_entry_test.rb +++ b/test/system/report_diary_entry_test.rb @@ -18,14 +18,14 @@ class ReportDiaryEntryTest < ApplicationSystemTestCase visit diary_entry_path(@diary_entry.user.display_name, @diary_entry) assert_content @diary_entry.title - click_on I18n.t("diary_entries.diary_entry.report") + click_link I18n.t("diary_entries.diary_entry.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.diary_entry.spam_label") fill_in "report_details", :with => "This is advertising" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" @@ -42,14 +42,14 @@ class ReportDiaryEntryTest < ApplicationSystemTestCase visit diary_entry_path(@diary_entry.user.display_name, @diary_entry) assert_content @diary_entry.title - click_on I18n.t("diary_entries.diary_entry.report") + click_link I18n.t("diary_entries.diary_entry.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.diary_entry.spam_label") fill_in "report_details", :with => "This is advertising" assert_no_difference "Issue.count" do - click_on "Create Report" + click_button "Create Report" end issue.reload diff --git a/test/system/report_note_test.rb b/test/system/report_note_test.rb index 79894eb89..b7e1bfc9e 100644 --- a/test/system/report_note_test.rb +++ b/test/system/report_note_test.rb @@ -14,14 +14,14 @@ class ReportNoteTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit note_path(note) - click_on I18n.t("notes.show.report") + click_link I18n.t("notes.show.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.note.spam_label") fill_in "report_details", :with => "This is spam" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" @@ -35,14 +35,14 @@ class ReportNoteTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit note_path(note) - click_on I18n.t("notes.show.report") + click_link I18n.t("notes.show.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.note.spam_label") fill_in "report_details", :with => "This is spam" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" diff --git a/test/system/report_user_test.rb b/test/system/report_user_test.rb index 7a9e800c8..9a0abe9ea 100644 --- a/test/system/report_user_test.rb +++ b/test/system/report_user_test.rb @@ -14,14 +14,14 @@ class ReportUserTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit user_path(user) - click_on I18n.t("users.show.report") + click_link I18n.t("users.show.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.user.vandal_label") fill_in "report_details", :with => "This user is a vandal" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" @@ -35,14 +35,14 @@ class ReportUserTest < ApplicationSystemTestCase sign_in_as(create(:user)) visit user_path(user) - click_on I18n.t("users.show.report") + click_link I18n.t("users.show.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.user.vandal_label") fill_in "report_details", :with => "This user is a vandal" assert_difference "Issue.count", 1 do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" @@ -52,14 +52,14 @@ class ReportUserTest < ApplicationSystemTestCase visit user_path(user) - click_on I18n.t("users.show.report") + click_link I18n.t("users.show.report") assert_content "Report" assert_content I18n.t("reports.new.disclaimer.intro") choose I18n.t("reports.new.categories.user.spam_label") fill_in "report_details", :with => "This user is a spammer" assert_no_difference "Issue.count" do - click_on "Create Report" + click_button "Create Report" end assert_content "Your report has been registered successfully" diff --git a/test/system/user_logout_test.rb b/test/system/user_logout_test.rb index a097b6374..fc27b7c18 100644 --- a/test/system/user_logout_test.rb +++ b/test/system/user_logout_test.rb @@ -6,8 +6,8 @@ class UserLogoutTest < ApplicationSystemTestCase sign_in_as(user) assert_no_content "Log In" - click_on user.display_name - click_on "Log Out" + click_button user.display_name + click_link "Log Out" assert_content "Log In" end @@ -17,8 +17,8 @@ class UserLogoutTest < ApplicationSystemTestCase visit traces_path assert_no_content "Log In" - click_on user.display_name - click_on "Log Out" + click_button user.display_name + click_link "Log Out" assert_content "Log In" assert_content "Public GPS Traces" end diff --git a/test/system/user_signup_test.rb b/test/system/user_signup_test.rb index 5bd88f5a4..88899d710 100644 --- a/test/system/user_signup_test.rb +++ b/test/system/user_signup_test.rb @@ -4,7 +4,7 @@ class UserSignupTest < ApplicationSystemTestCase test "Sign up from login page" do visit login_path - click_on "Register now" + click_link "Register now" assert_content "Confirm Password" end @@ -13,7 +13,7 @@ class UserSignupTest < ApplicationSystemTestCase user = build(:user) visit root_path - click_on "Sign Up" + click_link "Sign Up" fill_in "Email", :with => user.email fill_in "Email Confirmation", :with => user.email fill_in "Display Name", :with => user.display_name @@ -22,7 +22,7 @@ class UserSignupTest < ApplicationSystemTestCase click_button "Sign Up" assert_content "Contributor terms" - click_on "Cancel" + click_button "Cancel" assert_current_path "https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined" end diff --git a/test/system/user_status_change_test.rb b/test/system/user_status_change_test.rb index 30b923732..e4cca1eab 100644 --- a/test/system/user_status_change_test.rb +++ b/test/system/user_status_change_test.rb @@ -10,7 +10,7 @@ class UserStatusChangeTest < ApplicationSystemTestCase user = create(:user, :suspended) visit user_path(user) accept_confirm do - click_on "Unsuspend" + click_link "Unsuspend" end assert_no_content "Unsuspend" @@ -22,7 +22,7 @@ class UserStatusChangeTest < ApplicationSystemTestCase user = create(:user, :suspended) visit user_path(user) accept_confirm do - click_on "Confirm" + click_link "Confirm" end assert_no_content "Unsuspend" diff --git a/test/system/view_communities_test.rb b/test/system/view_communities_test.rb index 349d0a5bf..539daaa30 100644 --- a/test/system/view_communities_test.rb +++ b/test/system/view_communities_test.rb @@ -13,7 +13,7 @@ class ViewCommunitiesTest < ApplicationSystemTestCase visit edit_preferences_path fill_in "Preferred Languages", :with => "fr" - click_on "Update Preferences" + click_button "Update Preferences" visit "/communities" assert_link "OpenStreetMap États-Unis", :href => "https://www.openstreetmap.us/" diff --git a/test/test_helper.rb b/test/test_helper.rb index 7157abf5a..68749c0f7 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -245,7 +245,7 @@ module ActiveSupport visit login_path fill_in "username", :with => user.email fill_in "password", :with => "test" - click_on "Login", :match => :first + click_button "Login", :match => :first end def session_for(user) diff --git a/vendor/assets/iD/iD.css.erb b/vendor/assets/iD/iD.css.erb index 851b8cf1c..b1a0176ee 100644 --- a/vendor/assets/iD/iD.css.erb +++ b/vendor/assets/iD/iD.css.erb @@ -2749,9 +2749,11 @@ background-position: center; background-repeat: no-repeat; } + .ideditor #ideditor-viewer-mapilio-simple-wrap { height: 100%; } + .ideditor #ideditor-viewer-mapilio-simple { width: 100%; height: 100%; @@ -2760,6 +2762,14 @@ transform-origin: 0 0; } +.ideditor #ideditor-viewer-mapilio-simple img { + width: 100%; + height: 100%; + -o-object-fit: cover; + object-fit: cover; + overflow: hidden +} + /* Streetside Viewer (pannellum) */ .ideditor .ms-wrapper .photo-attribution .image-link { display: block; diff --git a/vendor/assets/iD/iD.js b/vendor/assets/iD/iD.js index d89cd30da..0401484a0 100644 --- a/vendor/assets/iD/iD.js +++ b/vendor/assets/iD/iD.js @@ -22820,7 +22820,7 @@ // package.json var package_default = { name: "iD", - version: "2.27.0", + version: "2.27.1", description: "A friendly editor for OpenStreetMap", main: "dist/iD.min.js", repository: "github:openstreetmap/iD", @@ -22897,7 +22897,7 @@ "@fortawesome/free-regular-svg-icons": "~6.4.2", "@fortawesome/free-solid-svg-icons": "~6.4.2", "@mapbox/maki": "^8.0.1", - "@openstreetmap/id-tagging-schema": "^6.3.0", + "@openstreetmap/id-tagging-schema": "^6.4.1", "@rapideditor/temaki": "~5.4.0", "@transifex/api": "^5.4.0", autoprefixer: "^10.4.15", @@ -22931,7 +22931,7 @@ "node-fetch": "^2.6.12", "npm-run-all": "^4.0.0", "osm-community-index": "~5.5.4", - postcss: "^8.4.27", + postcss: "^8.4.28", "postcss-selector-prepend": "^0.5.0", shelljs: "^0.8.0", shx: "^0.3.0", @@ -25869,24 +25869,13 @@ } return value2 === null || value2 === void 0 ? valueNull : typeof value2 === "function" ? valueFunction : valueConstant; } - function stickyCursor(func) { - const supportedTypes = ["text", "search", "url", "tel", "password"]; - if (!supportedTypes.includes(selection2.node()?.type)) { - return func; - } - return function() { - const cursor = { start: this.selectionStart, end: this.selectionEnd }; - func.apply(this, arguments); - this.setSelectionRange(cursor.start, cursor.end); - }; - } if (arguments.length === 1) { return selection2.property("value"); } if (shouldUpdate === void 0) { shouldUpdate = (a2, b2) => a2 !== b2; } - return selection2.each(stickyCursor(setValue(value, shouldUpdate))); + return selection2.each(setValue(value, shouldUpdate)); } // modules/util/keybinding.js diff --git a/vendor/assets/iD/iD/img/fa-sprite.svg b/vendor/assets/iD/iD/img/fa-sprite.svg index 7b4442c91..941c5c649 100644 --- a/vendor/assets/iD/iD/img/fa-sprite.svg +++ b/vendor/assets/iD/iD/img/fa-sprite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/vendor/assets/leaflet/leaflet.osm.js b/vendor/assets/leaflet/leaflet.osm.js index 6e8e20ba6..0e51f3408 100644 --- a/vendor/assets/leaflet/leaflet.osm.js +++ b/vendor/assets/leaflet/leaflet.osm.js @@ -61,6 +61,14 @@ L.OSM.HOT = L.OSM.TileLayer.extend({ } }); +L.OSM.TracestrackTopo = L.OSM.TileLayer.extend({ + options: { + url: 'https://tile.tracestrack.com/topo__/{z}/{x}/{y}.png?key={apikey}', + maxZoom: 19, + attribution: '© OpenStreetMap contributors. Tiles courtesy of Tracestrack Maps' + } +}); + L.OSM.GPS = L.OSM.TileLayer.extend({ options: { url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png', diff --git a/yarn.lock b/yarn.lock index 5ff60cd30..bde99b23e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,15 +34,15 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@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== +"@eslint/js@8.50.0": + version "8.50.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" + integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -224,15 +224,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.0.0: - version "8.47.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806" - integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q== + version "8.50.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" + integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "^8.47.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/js" "8.50.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.12.4" @@ -568,9 +568,9 @@ optionator@^0.9.3: type-check "^0.4.0" osm-community-index@^5.2.0: - version "5.5.4" - resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.5.4.tgz#8e5ed12eed07206b507bfee594e264500f2d7cd3" - integrity sha512-n53euxtwFlJHaTkMCyRxPK+OZJnqkI4zwp9rmEbuzIV57kgkci7qaLDDjt44tszLcXfi8eCTLhKtykU0xIRpVQ== + version "5.6.0" + resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.0.tgz#b2361fce7ded723844b0ed68d47bddfc4a8cb240" + integrity sha512-C5AqEWidBIgKeaJKQwuPWvDqSzm9CpZgDbHDi+k4+ZCHBazRQjnl7TpWVv2/fQWMqsJL3I5qzh19rXBTWMWL1A== dependencies: diacritics "^1.3.0"