]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #4201 from AntonKhorev/issues-limit-settings
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 27 Sep 2023 14:47:44 +0000 (15:47 +0100)
committerGitHub <noreply@github.com>
Wed, 27 Sep 2023 14:47:44 +0000 (15:47 +0100)
Move max value of issues counter to settings

136 files changed:
.github/workflows/docker.yml
.github/workflows/lint.yml
.github/workflows/tests.yml
Gemfile.lock
Vendorfile
app/abilities/api_ability.rb
app/assets/images/banners/StateoftheMapEurope_2023.png [new file with mode: 0644]
app/assets/javascripts/index/directions.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/leaflet.sidebar-pane.js
app/assets/javascripts/osm.js.erb
app/assets/stylesheets/common.scss
app/assets/stylesheets/print.scss
app/controllers/api/map_controller.rb
app/controllers/api/notes_controller.rb
app/controllers/api/tracepoints_controller.rb
app/controllers/api/traces_controller.rb
app/controllers/api/user_blocks_controller.rb [new file with mode: 0644]
app/controllers/api_controller.rb
app/controllers/concerns/email_methods.rb [new file with mode: 0644]
app/controllers/diary_entries_controller.rb
app/controllers/users_controller.rb
app/helpers/banner_helper.rb
app/views/api/changesets/_changeset.json.jbuilder
app/views/api/changesets/_changeset.xml.builder
app/views/api/notes/feed.rss.builder
app/views/api/traces/_trace.builder
app/views/api/user_blocks/_user_block.json.jbuilder [new file with mode: 0644]
app/views/api/user_blocks/_user_block.xml.builder [new file with mode: 0644]
app/views/api/user_blocks/show.json.jbuilder [new file with mode: 0644]
app/views/api/user_blocks/show.xml.builder [new file with mode: 0644]
app/views/browse/changeset.html.erb
app/views/changesets/_user.atom.builder [deleted file]
app/views/changesets/index.html.erb
app/views/diary_entries/_form.html.erb
app/views/diary_entries/comments.html.erb
app/views/diary_entries/index.html.erb
app/views/notes/show.html.erb
app/views/profiles/edit.html.erb
app/views/sessions/new.html.erb
app/views/shared/_pagination.html.erb [new file with mode: 0644]
app/views/site/export.html.erb
app/views/site/key.html.erb
app/views/traces/_trace_paging_nav.html.erb [deleted file]
app/views/traces/index.html.erb
app/views/users/show.html.erb
config/banners.yml
config/initializers/secure_headers.rb
config/locales/ar.yml
config/locales/bg.yml
config/locales/br.yml
config/locales/ca.yml
config/locales/ce.yml
config/locales/cs.yml
config/locales/cy.yml
config/locales/de.yml
config/locales/el.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/eu.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hr.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/it.yml
config/locales/lb.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/ms.yml
config/locales/nl.yml
config/locales/nn.yml
config/locales/pl.yml
config/locales/pt.yml
config/locales/ru.yml
config/locales/sc.yml
config/locales/sl.yml
config/locales/sv.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/routes.rb
config/settings.yml
lib/bounding_box.rb
test/controllers/api/changesets_controller_test.rb
test/controllers/api/map_controller_test.rb
test/controllers/api/nodes_controller_test.rb
test/controllers/api/notes_controller_test.rb
test/controllers/api/relations_controller_test.rb
test/controllers/api/tracepoints_controller_test.rb
test/controllers/api/traces_controller_test.rb
test/controllers/api/user_blocks_controller_test.rb [new file with mode: 0644]
test/controllers/api/users_controller_test.rb
test/controllers/api/ways_controller_test.rb
test/controllers/changesets_controller_test.rb
test/controllers/diary_entries_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/controllers/users_controller_test.rb
test/factories/changeset_comments.rb
test/factories/friendships.rb
test/factories/issues.rb
test/factories/messages.rb
test/factories/oauth_access_grant.rb
test/factories/oauth_access_token.rb
test/factories/oauth_applications.rb
test/factories/old_node.rb
test/factories/old_relation.rb
test/factories/old_relation_member.rb
test/factories/old_way.rb
test/factories/relation_member.rb
test/factories/user_blocks.rb
test/factories/user_role.rb
test/lib/bounding_box_test.rb
test/lib/locale_test.rb
test/lib/password_hash_test.rb
test/lib/short_link_test.rb
test/system/account_deletion_test.rb
test/system/diary_entry_test.rb
test/system/issues_test.rb
test/system/preferences_test.rb
test/system/report_diary_comment_test.rb
test/system/report_diary_entry_test.rb
test/system/report_note_test.rb
test/system/report_user_test.rb
test/system/user_logout_test.rb
test/system/user_signup_test.rb
test/system/user_status_change_test.rb
test/system/view_communities_test.rb
test/test_helper.rb
vendor/assets/leaflet/leaflet.osm.js
yarn.lock

index 74d03b31c982c3e90ff2bb1d55c3aa05209312e0..df617d4fbf2cd992db2842f9b7118b8a25df0714 100644 (file)
@@ -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
index e762df4454263d928e570ce04cb108f137cf2019..685937b034ea026708e29bb1edc2ebcb5b02ec4f 100644 (file)
@@ -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:
index 1d5c947e0ff2154bdfd1a9dc8987a0b959265bcb..3ee6129e113799a8818f455694e55266df9c6792 100644 (file)
@@ -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
index e58f26e1a2e09683d4526d521feb79ce8b887744..d224d95eec5eda5c5918e9f9edf0965d24931a61 100644 (file)
@@ -3,73 +3,73 @@ GEM
   specs:
     aasm (5.5.0)
       concurrent-ruby (~> 1.0)
-    actioncable (7.0.7.2)
-      actionpack (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    actioncable (7.0.8)
+      actionpack (= 7.0.8)
+      activesupport (= 7.0.8)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailbox (7.0.7.2)
-      actionpack (= 7.0.7.2)
-      activejob (= 7.0.7.2)
-      activerecord (= 7.0.7.2)
-      activestorage (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      actionpack (= 7.0.7.2)
-      actionview (= 7.0.7.2)
-      activejob (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      actionview (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      actionpack (= 7.0.7.2)
-      activerecord (= 7.0.7.2)
-      activestorage (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      activesupport (= 7.0.7.2)
+    activejob (7.0.8)
+      activesupport (= 7.0.8)
       globalid (>= 0.3.6)
-    activemodel (7.0.7.2)
-      activesupport (= 7.0.7.2)
-    activerecord (7.0.7.2)
-      activemodel (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
-      actionpack (= 7.0.7.2)
-      activejob (= 7.0.7.2)
-      activerecord (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
+    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.813.0)
-    aws-sdk-core (3.181.0)
+    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,7 +95,7 @@ GEM
     aws-sdk-kms (1.71.0)
       aws-sdk-core (~> 3, >= 3.177.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.134.0)
+    aws-sdk-s3 (1.135.0)
       aws-sdk-core (~> 3, >= 3.181.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.6)
@@ -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)
@@ -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)
@@ -368,7 +369,7 @@ GEM
     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)
@@ -388,20 +389,20 @@ GEM
     rack-test (2.1.0)
       rack (>= 1.3)
     rack-uri_sanitizer (0.0.2)
-    rails (7.0.7.2)
-      actioncable (= 7.0.7.2)
-      actionmailbox (= 7.0.7.2)
-      actionmailer (= 7.0.7.2)
-      actionpack (= 7.0.7.2)
-      actiontext (= 7.0.7.2)
-      actionview (= 7.0.7.2)
-      activejob (= 7.0.7.2)
-      activemodel (= 7.0.7.2)
-      activerecord (= 7.0.7.2)
-      activestorage (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
+      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.2)
-      actionpack (= 7.0.7.2)
-      activesupport (= 7.0.7.2)
+    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.2)
+    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.19.0)
+    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
index 680ed2225cc529bd167d03fe22bc9bd14f34185c..4c6a80839d9264fd60cfa760bdb4f12d0bf7b0ed 100644 (file)
@@ -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
 
index 9b274ec845d299f2ee6af894e80cb0f3ac0dac3a..fe39f5eb5aa2475a4d1c56fa9456e9a8842d117a 100644 (file)
@@ -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 (file)
index 0000000..33e9db9
Binary files /dev/null and b/app/assets/images/banners/StateoftheMapEurope_2023.png differ
index 7bd0891a34e920956f0e80c3ed12a0f59e4bd9f7..c86c8ad02ccde0813d9ae03c6011505bd6933536 100644 (file)
@@ -268,7 +268,8 @@ OSM.Directions = function (map) {
           I18n.t("javascripts.directions.descend") + ": " + formatHeight(route.descend) + ".");
       }
 
-      var turnByTurnTable = $("<table class='mb-3'>");
+      var turnByTurnTable = $("<table class='table table-sm mb-3'>")
+        .append($("<tbody>"));
       var directionsCloseButton = $("<button type='button' class='btn-close'>")
         .attr("aria-label", I18n.t("javascripts.close"));
 
@@ -304,8 +305,8 @@ OSM.Directions = function (map) {
         }
 
         var row = $("<tr class='turn'/>");
-        row.append("<td><div class='direction i" + direction + "'/></td> ");
-        row.append("<td class='instruction'>" + instruction);
+        row.append("<td class='border-0'><div class='direction i" + direction + "'/></td> ");
+        row.append("<td>" + instruction);
         row.append("<td class='distance'>" + dist);
 
         row.on("click", function () {
index 020876c470c71f134ab5e2543e29a73be8c7b7b8..27311f7c1441c3d22acde08cbcc526702b0e7e4e 100644 (file)
@@ -8,11 +8,12 @@ L.OSM.layers = function (options) {
       .attr("class", "section base-layers")
       .appendTo($ui);
 
-    var baseLayers = $("<ul class='list-unstyled'>")
+    var baseLayers = $("<ul class='list-unstyled mb-0'>")
       .appendTo(baseSection);
 
     layers.forEach(function (layer) {
       var item = $("<li>")
+        .attr("class", "rounded-3")
         .appendTo(baseLayers);
 
       if (map.hasLayer(layer)) {
index 6e61100f2effb01dbfdc7c255a1d51245c1f6741..e1e0e64fde0b58433a7cd204d570e50410c3ba27 100644 (file)
@@ -51,6 +51,13 @@ L.OSM.Map = L.Map.extend({
     }).prop("outerHTML");
     var thunderforest = I18n.t("javascripts.map.thunderforest_credit", { thunderforest_link: thunderforest_link });
 
+    var tracestrack_link = $("<a>", {
+      href: "https://www.tracestrack.com/",
+      target: "_blank",
+      text: I18n.t("javascripts.map.tracestrack")
+    }).prop("outerHTML");
+    var tracestrack = I18n.t("javascripts.map.tracestrack_credit", { tracestrack_link: tracestrack_link });
+
     var memomaps_link = $("<a>", {
       href: "https://memomaps.de/",
       target: "_blank",
@@ -99,6 +106,16 @@ L.OSM.Map = L.Map.extend({
       }));
     }
 
+    if (OSM.TRACESTRACK_KEY) {
+      this.baseLayers.push(new L.OSM.TracestrackTopo({
+        attribution: copyright + ". " + tracestrack + ". " + terms,
+        apikey: OSM.TRACESTRACK_KEY,
+        code: "P",
+        keyid: "tracestracktopo",
+        name: I18n.t("javascripts.map.base.tracestracktop_topo")
+      }));
+    }
+
     this.baseLayers.push(new L.OSM.OPNVKarte({
       attribution: copyright + ". " + memomaps + ". " + terms,
       code: "O",
index 7b1c995c2d1a45fe03cc6fe9e6fe3dffcd13f620..c096a92fcf725b4d2ce3e2d144416cfcdfe726fc 100644 (file)
@@ -23,17 +23,15 @@ L.OSM.share = function (options) {
     $("<div>")
       .attr("class", "form-check mb-3")
       .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "link_marker")
-          .attr("class", "form-check-label")
-          .append(
-            $("<input>")
-              .attr("id", "link_marker")
-              .attr("type", "checkbox")
-              .attr("class", "form-check-input")
-              .bind("change", toggleMarker))
-          .append(I18n.t("javascripts.share.include_marker")));
+      .append($("<label>")
+        .attr("for", "link_marker")
+        .attr("class", "form-check-label")
+        .text(I18n.t("javascripts.share.include_marker")))
+      .append($("<input>")
+        .attr("id", "link_marker")
+        .attr("type", "checkbox")
+        .attr("class", "form-check-input")
+        .bind("change", toggleMarker));
 
     $("<div class='btn-group btn-group-sm mb-2'>")
       .appendTo($form)
@@ -70,6 +68,8 @@ L.OSM.share = function (options) {
       .append($("<input>")
         .attr("id", "long_input")
         .attr("type", "text")
+        .attr("class", "form-control form-control-sm font-monospace")
+        .attr("readonly", true)
         .on("click", select));
 
     $("<div>")
@@ -79,6 +79,8 @@ L.OSM.share = function (options) {
       .append($("<input>")
         .attr("id", "short_input")
         .attr("type", "text")
+        .attr("class", "form-control form-control-sm font-monospace")
+        .attr("readonly", true)
         .on("click", select));
 
     $("<div>")
@@ -88,6 +90,8 @@ L.OSM.share = function (options) {
       .append(
         $("<textarea>")
           .attr("id", "embed_html")
+          .attr("class", "form-control form-control-sm font-monospace")
+          .attr("readonly", true)
           .on("click", select))
       .append(
         $("<p>")
@@ -131,46 +135,61 @@ L.OSM.share = function (options) {
       .attr("method", "post")
       .appendTo($imageSection);
 
-    $("<div>")
-      .attr("class", "mb-3 form-check")
-      .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "image_filter")
-          .attr("class", "form-check-label")
-          .append(
-            $("<input>")
-              .attr("id", "image_filter")
-              .attr("type", "checkbox")
-              .attr("class", "form-check-input")
-              .bind("change", toggleFilter))
-          .append(I18n.t("javascripts.share.custom_dimensions")));
-
     $("<div>")
       .appendTo($form)
-      .append(
-        $("<label>")
-          .attr("for", "mapnik_format")
-          .text(I18n.t("javascripts.share.format")))
-      .append($("<select>")
-        .attr("name", "mapnik_format")
-        .attr("id", "mapnik_format")
-        .append($("<option>").val("png").text("PNG").prop("selected", true))
-        .append($("<option>").val("jpeg").text("JPEG"))
-        .append($("<option>").val("svg").text("SVG"))
-        .append($("<option>").val("pdf").text("PDF")));
+      .attr("class", "row mb-3")
+      .append($("<label>")
+        .attr("for", "mapnik_format")
+        .attr("class", "col-auto col-form-label")
+        .text(I18n.t("javascripts.share.format")))
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<select>")
+          .attr("name", "mapnik_format")
+          .attr("id", "mapnik_format")
+          .attr("class", "form-select w-auto")
+          .append($("<option>").val("png").text("PNG").prop("selected", true))
+          .append($("<option>").val("jpeg").text("JPEG"))
+          .append($("<option>").val("svg").text("SVG"))
+          .append($("<option>").val("pdf").text("PDF"))));
 
     $("<div>")
       .appendTo($form)
+      .attr("class", "row mb-3")
       .append($("<label>")
         .attr("for", "mapnik_scale")
+        .attr("class", "col-auto col-form-label")
         .text(I18n.t("javascripts.share.scale")))
-      .append("1 : ")
-      .append($("<input>")
-        .attr("name", "mapnik_scale")
-        .attr("id", "mapnik_scale")
-        .attr("type", "text")
-        .on("change", update));
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<div>")
+          .attr("class", "input-group flex-nowrap")
+          .append($("<span>")
+            .attr("class", "input-group-text")
+            .text("1 : "))
+          .append($("<input>")
+            .attr("name", "mapnik_scale")
+            .attr("id", "mapnik_scale")
+            .attr("type", "text")
+            .attr("class", "form-control")
+            .on("change", update))));
+
+    $("<div>")
+      .attr("class", "row mb-3")
+      .appendTo($form)
+      .append($("<div>")
+        .attr("class", "col-auto")
+        .append($("<div>")
+          .attr("class", "form-check")
+          .append($("<label>")
+            .attr("for", "image_filter")
+            .attr("class", "form-check-label")
+            .text(I18n.t("javascripts.share.custom_dimensions")))
+          .append($("<input>")
+            .attr("id", "image_filter")
+            .attr("type", "checkbox")
+            .attr("class", "form-check-input")
+            .bind("change", toggleFilter))));
 
     ["minlon", "minlat", "maxlon", "maxlat"].forEach(function (name) {
       $("<input>")
index d8213a3767a948aee2c0a9cdadc5498cbf1d4208..516a446c38811994cf4343b8b507340f3b709efa 100644 (file)
@@ -20,9 +20,9 @@ L.OSM.sidebarPane = function (options, uiClass, buttonTitle, paneTitle) {
     var $ui = $("<div>")
       .attr("class", uiClass + "-ui");
 
-    $("<div class='sidebar_heading d-flex'>")
+    $("<div class='d-flex p-3 pb-0'>")
       .appendTo($ui)
-      .append($("<h4 class='flex-grow-1 text-break'>")
+      .append($("<h2 class='flex-grow-1 text-break'>")
         .text(I18n.t(paneTitle)))
       .append($("<div>")
         .append($("<button type='button' class='btn-close'>")
index 0ffd35e2ceabfc922889ce572b727e8db3e272a2..0a0f5c67a7c5a9df678e3cb1e7168f46f90434ee 100644 (file)
@@ -25,6 +25,10 @@ OSM = {
   THUNDERFOREST_KEY:       <%= Settings.thunderforest_key.to_json %>,
 <% end %>
 
+<% if Settings.key?(:tracestrack_key) %>
+  TRACESTRACK_KEY:         <%= Settings.tracestrack_key.to_json %>,
+<% end %>
+
   MARKER_GREEN:            <%= image_path("marker-green.png").to_json %>,
   MARKER_RED:              <%= image_path("marker-red.png").to_json %>,
 
index 60a4bd59c331b94abaa4d737b039bc6c1f8708a3..b95d1fcd60202c5072d962d0520a45ac2f3e9106 100644 (file)
@@ -23,7 +23,7 @@ small, aside {
 
 .small_icon {
   vertical-align: middle;
-  margin-right: $lineheight/4;
+  margin-right: $lineheight * 0.25;
 }
 
 [dir=rtl] { /* no-r2 */ text-align: right; }
@@ -102,7 +102,7 @@ header {
 
   > * {
     height: 100%;
-    padding: $lineheight/2;
+    padding: $lineheight * 0.5;
   }
 
   h1, nav.primary {
@@ -486,7 +486,7 @@ body.small-nav {
 
     .section {
       border-bottom: 1px solid $grey;
-      padding: 10px 20px;
+      padding: $spacer;
     }
   }
 }
@@ -573,29 +573,13 @@ body.small-nav {
 }
 
 .share-ui {
-  .share-link {
-    input[type=text],
-    textarea {
-      width: 100%;
-      font-family: monospace;
-      font-size: small;
-      line-height: 1.3;
-    }
-  }
-
-  .share-image {
-    label {
-      margin-right: 10px;
-    }
-  }
-
   #mapnik_scale {
     width: 100px;
   }
 }
 
 .leaflet-top {
-  top: $lineheight/2 !important;
+  top: 10px !important;
   .leaflet-control {
     margin-right: 0px !important;
     margin-top: 0px !important;
@@ -622,13 +606,6 @@ body.small-nav {
 
 /* Rules for the sidebar */
 
-.sidebar_heading {
-  position: relative;
-  padding: $lineheight/2 $lineheight;
-  // background: $offwhite;
-  // border-bottom: 1px solid $grey;
-}
-
 #browse_status {
   input {
     display: block;
@@ -647,6 +624,9 @@ form {
   label {
     font-size: 16px;
   }
+  .col-form-label {
+    font-size: 16px;
+  }
 }
 
 /* Stop bootstrap 5 from floating legends when they don't need to be */
@@ -718,11 +698,6 @@ div.direction {
 div.direction.i#{$i} { background-position: #{($i)*-20}px 0px; }
 }
 
-td.instruction, td.distance {
-    padding-top: $lineheight/5;
-    padding-bottom: $lineheight/5;
-    border-bottom: 1px solid $grey;
-}
 td.distance {
     color: $darkgrey;
     text-align: right;
@@ -829,15 +804,6 @@ tr.turn:hover {
     }
   }
 
-  .note-comments li, .changeset-comments li {
-    margin: $lineheight/2 0;
-
-    p {
-      margin: 10px 6px 0 6px;
-      line-height: 1.5;
-    }
-  }
-
   .subscribe-buttons input {
     font-size: 90%;
     line-height: 15px;
@@ -911,18 +877,6 @@ tr.turn:hover {
     }
     #minlat { margin-bottom: -1px; }
   }
-
-  .export_bound {
-    margin: $lineheight/4;
-  }
-
-  dl {
-    padding-left: $lineheight/2;
-    dd {
-      margin-left: 0;
-      margin-bottom: 10px;
-    }
-  }
 }
 
 /* Rules for edit pages */
@@ -1022,7 +976,7 @@ tr.turn:hover {
 /* Rules for the user map */
 
 .content_map .leaflet-popup-content {
-  margin: $lineheight/2;
+  margin: $spacer;
   min-height: 50px;
 }
 
@@ -1058,20 +1012,6 @@ tr.turn:hover {
     &:first-child {
       border-top: 1px solid $grey;
     }
-    p {
-      margin-bottom: $lineheight/2;
-    }
-  }
-}
-
-/* Rules for the log in page */
-
-#login_auth_buttons {
-  margin-bottom: 0;
-
-  li {
-    float: left;
-    padding: $lineheight/4 $lineheight/2;
   }
 }
 
@@ -1162,9 +1102,9 @@ nav.secondary-actions {
       flex-basis: auto;
       list-style: none;
       border-left: 1px solid $grey;
-      padding-left: $lineheight/2;
-      margin-right: $lineheight/2;
-      margin-bottom: $lineheight/8;
+      padding-left: $lineheight * 0.5;
+      margin-right: $lineheight * 0.5;
+      margin-bottom: $lineheight * 0.125;
     }
   }
 }
index 71fdf3978086dab10841e66ca4cb40615ed05810..a4afdf576e7e7261956fcd00345ac491bd432db2 100644 (file)
@@ -1,30 +1,58 @@
+html {
+  height: 100%;
+}
+
+body {
+  height: 100%;
+  margin: 0;
+}
+
+#content {
+  height: 100%;
+}
+
 header,
-#sidebar,
-#permalink,
 .leaflet-control {
   display: none;
 }
 
-html {
-  height: 100%;
+.map-layout .overlay-sidebar #sidebar {
+  display: none;
+}
+
+.map-layout #sidebar {
+  page-break-after: always;
+
+  & > * {
+    display: none;
+  }
+  #sidebar_content {
+    display: unset;
+  }
+
+  button,
+  input,
+  textarea,
+  .secondary-actions {
+    display: none;
+  }
+}
+
+#map-ui {
+  display: none !important;
 }
 
 #map {
-  position: absolute !important;
-  top: 0;
-  bottom: 40px;
-  left: 0;
-  right: 0;
+  position: relative;
+  height: calc(100% - 40px);
+  box-sizing: border-box;
   border: 1px solid black;
 }
 
 /* Rules for attribution text under the main map shown on printouts */
 
 #attribution {
-  position: absolute !important;
-  bottom: 0;
-  left: 0;
-  right: 0;
+  page-break-inside: avoid;
   height: 40px;
   font-size: 12px;
   text-align: center;
index 0d123fc3e7851f2d0eae4748d4cacf38575e8e47..5a05f6de2b527e6c236b665007ab8a5cd309b534 100644 (file)
@@ -22,6 +22,8 @@ module Api
       # check boundary is sane and area within defined
       # see /config/application.yml
       begin
+        raise OSM::APIBadUserInput, "The parameter bbox is required" unless params[:bbox]
+
         @bounds = BoundingBox.from_bbox_params(params)
         @bounds.check_boundaries
         @bounds.check_size
index e6f391ede96e3767e7c5c08f9c210e3a744a9f8c..95466781f84c8bd97a8fef6c6bea1332d26f6388 100644 (file)
@@ -18,13 +18,10 @@ module Api
       # support the old, deprecated, method with four arguments
       if params[:bbox]
         bbox = BoundingBox.from_bbox_params(params)
-      else
-        raise OSM::APIBadUserInput, "No l was given" unless params[:l]
-        raise OSM::APIBadUserInput, "No r was given" unless params[:r]
-        raise OSM::APIBadUserInput, "No b was given" unless params[:b]
-        raise OSM::APIBadUserInput, "No t was given" unless params[:t]
-
+      elsif params[:l] && params[:r] && params[:b] && params[:t]
         bbox = BoundingBox.from_lrbt_params(params)
+      else
+        raise OSM::APIBadUserInput, "The parameter bbox is required"
       end
 
       # Get any conditions that need to be applied
@@ -235,23 +232,12 @@ module Api
     def feed
       # Get any conditions that need to be applied
       notes = closed_condition(Note.all)
-
-      # Process any bbox
-      if params[:bbox]
-        bbox = BoundingBox.from_bbox_params(params)
-
-        bbox.check_boundaries
-        bbox.check_size(Settings.max_note_request_area)
-
-        notes = notes.bbox(bbox)
-        @min_lon = bbox.min_lon
-        @min_lat = bbox.min_lat
-        @max_lon = bbox.max_lon
-        @max_lat = bbox.max_lat
-      end
+      notes = bbox_condition(notes)
 
       # Find the comments we want to return
-      @comments = NoteComment.where(:note => notes).order("created_at DESC").limit(result_limit).preload(:note)
+      @comments = NoteComment.where(:note => notes)
+                             .order(:created_at => :desc).limit(result_limit)
+                             .preload(:author, :note => { :comments => :author })
 
       # Render the result
       respond_to do |format|
@@ -264,6 +250,7 @@ module Api
     def search
       # Get the initial set of notes
       @notes = closed_condition(Note.all)
+      @notes = bbox_condition(@notes)
 
       # Add any user filter
       if params[:display_name] || params[:user]
@@ -376,6 +363,27 @@ module Api
       end
     end
 
+    ##
+    # Generate a condition to choose which notes we want based
+    # on the user's bounding box request parameters
+    def bbox_condition(notes)
+      if params[:bbox]
+        bbox = BoundingBox.from_bbox_params(params)
+
+        bbox.check_boundaries
+        bbox.check_size(Settings.max_note_request_area)
+
+        @min_lon = bbox.min_lon
+        @min_lat = bbox.min_lat
+        @max_lon = bbox.max_lon
+        @max_lat = bbox.max_lat
+
+        notes.bbox(bbox)
+      else
+        notes
+      end
+    end
+
     ##
     # Add a comment to a note
     def add_comment(note, text, event, notify: true)
index e8bd97b64196503f9d3279dd9e749496880cf38c..f38351de96f0884e0a69aecebbb430871ad2c231 100644 (file)
@@ -23,6 +23,8 @@ module Api
       # check boundary is sane and area within defined
       # see /config/application.yml
       begin
+        raise OSM::APIBadUserInput, "The parameter bbox is required" unless params[:bbox]
+
         bbox = BoundingBox.from_bbox_params(params)
         bbox.check_boundaries
         bbox.check_size
index 07b6208af40deef2018a8beb14d33a558b5de2ef..629617f0b127c01685ed460f7a7ed0d688da89e6 100644 (file)
@@ -2,7 +2,6 @@ module Api
   class TracesController < ApiController
     before_action :check_database_readable, :except => [:show, :data]
     before_action :check_database_writable, :only => [:create, :update, :destroy]
-    before_action :authorize_web
     before_action :set_locale
     before_action :authorize
 
diff --git a/app/controllers/api/user_blocks_controller.rb b/app/controllers/api/user_blocks_controller.rb
new file mode 100644 (file)
index 0000000..19fd4b4
--- /dev/null
@@ -0,0 +1,18 @@
+module Api
+  class UserBlocksController < ApiController
+    before_action :check_api_readable
+
+    authorize_resource
+
+    around_action :api_call_handle_error, :api_call_timeout
+    before_action :set_request_formats
+
+    def show
+      raise OSM::APIBadUserInput, "No id was given" unless params[:id]
+
+      @user_block = UserBlock.find(params[:id])
+    rescue ActiveRecord::RecordNotFound
+      raise OSM::APINotFoundError
+    end
+  end
+end
index a2d016c8c7fcd10c43b9f473819b30af9a8212e1..89388c0bbf044db798f9c2f2258a61ca1cd25258 100644 (file)
@@ -178,6 +178,16 @@ class ApiController < ApplicationController
   # wrap an api call in a timeout
   def api_call_timeout(&block)
     Timeout.timeout(Settings.api_timeout, Timeout::Error, &block)
+  rescue ActionView::Template::Error => e
+    e = e.cause
+
+    if e.is_a?(Timeout::Error) ||
+       (e.is_a?(ActiveRecord::StatementInvalid) && e.message.include?("execution expired"))
+      ActiveRecord::Base.connection.raw_connection.cancel
+      raise OSM::APITimeoutError
+    else
+      raise
+    end
   rescue Timeout::Error
     ActiveRecord::Base.connection.raw_connection.cancel
     raise OSM::APITimeoutError
diff --git a/app/controllers/concerns/email_methods.rb b/app/controllers/concerns/email_methods.rb
new file mode 100644 (file)
index 0000000..f25b791
--- /dev/null
@@ -0,0 +1,23 @@
+module EmailMethods
+  extend ActiveSupport::Concern
+
+  private
+
+  def canonical_email(email)
+    local_part, domain = email.split("@")
+
+    local_part.sub!(/\+.*$/, "")
+
+    local_part.delete!(".") if %w[gmail.com googlemail.com].include?(domain)
+
+    "#{local_part}@#{domain}"
+  end
+
+  ##
+  # get list of MX servers for a domains
+  def domain_mx_servers(domain)
+    Resolv::DNS.open do |dns|
+      dns.getresources(domain, Resolv::DNS::Resource::IN::MX).collect { |mx| mx.exchange.to_s }
+    end
+  end
+end
index dcb625d836932a9746e2aac99bc5d2952577ae92..a1cd6ab0ed2d9023a4f3a0e4f0da64ea4cd95d8f 100644 (file)
@@ -55,20 +55,7 @@ class DiaryEntriesController < ApplicationController
 
     @params = params.permit(:display_name, :friends, :nearby, :language)
 
-    @entries = if params[:before]
-                 entries.where("diary_entries.id < ?", params[:before]).order(:id => :desc)
-               elsif params[:after]
-                 entries.where("diary_entries.id > ?", params[:after]).order(:id => :asc)
-               else
-                 entries.order(:id => :desc)
-               end
-
-    @entries = @entries.limit(20)
-    @entries = @entries.includes(:user, :language)
-    @entries = @entries.sort.reverse
-
-    @newer_entries = @entries.count.positive? && entries.exists?(["diary_entries.id > ?", @entries.first.id])
-    @older_entries = @entries.count.positive? && entries.exists?(["diary_entries.id < ?", @entries.last.id])
+    @entries, @newer_entries_id, @older_entries_id = get_page_items(entries, [:user, :language])
   end
 
   def show
@@ -248,15 +235,12 @@ class DiaryEntriesController < ApplicationController
   def comments
     @title = t ".title", :user => @user.display_name
 
-    conditions = { :user_id => @user }
+    comments = DiaryComment.where(:users => @user)
+    comments = comments.visible unless can? :unhidecomment, DiaryEntry
 
-    conditions[:visible] = true unless can? :unhidecomment, DiaryEntry
+    @params = params.permit(:display_name, :before, :after)
 
-    @comment_pages, @comments = paginate(:diary_comments,
-                                         :conditions => conditions,
-                                         :order => "created_at DESC",
-                                         :per_page => 20)
-    @page = (params[:page] || 1).to_i
+    @comments, @newer_comments_id, @older_comments_id = get_page_items(comments, [:user])
   end
 
   private
@@ -292,4 +276,24 @@ class DiaryEntriesController < ApplicationController
       @zoom = 12
     end
   end
+
+  def get_page_items(items, includes)
+    id_column = "#{items.table_name}.id"
+    page_items = if params[:before]
+                   items.where("#{id_column} < ?", params[:before]).order(:id => :desc)
+                 elsif params[:after]
+                   items.where("#{id_column} > ?", params[:after]).order(:id => :asc)
+                 else
+                   items.order(:id => :desc)
+                 end
+
+    page_items = page_items.limit(20)
+    page_items = page_items.includes(includes)
+    page_items = page_items.sort.reverse
+
+    newer_items_id = page_items.first.id if page_items.count.positive? && items.exists?(["#{id_column} > ?", page_items.first.id])
+    older_items_id = page_items.last.id if page_items.count.positive? && items.exists?(["#{id_column} < ?", page_items.last.id])
+
+    [page_items, newer_items_id, older_items_id]
+  end
 end
index 9d4b3d258cce6c098d288a39c7ae13d2743eaab0..5ba1b702bf9f2bc84d55c44d220fbcd59d62e46e 100644 (file)
@@ -1,4 +1,5 @@
 class UsersController < ApplicationController
+  include EmailMethods
   include SessionMethods
   include UserMethods
 
@@ -361,26 +362,4 @@ class UsersController < ApplicationController
 
     !blocked
   end
-
-  def canonical_email(email)
-    local_part, domain = if email.nil?
-                           nil
-                         else
-                           email.split("@")
-                         end
-
-    local_part.sub!(/\+.*$/, "")
-
-    local_part.delete!(".") if %w[gmail.com googlemail.com].include?(domain)
-
-    "#{local_part}@#{domain}"
-  end
-
-  ##
-  # get list of MX servers for a domains
-  def domain_mx_servers(domain)
-    Resolv::DNS.open do |dns|
-      dns.getresources(domain, Resolv::DNS::Resource::IN::MX).collect { |mx| mx.exchange.to_s }
-    end
-  end
 end
index 17c6eace3d4eb2cf4c4f24e5d208ab07925acdd7..9048d484001d2d5c12ef23591798bac65532302e 100644 (file)
@@ -1,13 +1,19 @@
 module BannerHelper
   def active_banners
     BANNERS.reject do |_k, v|
-      enddate = v[:enddate]
       begin
-        parsed = enddate && Date.parse(enddate)
+        startdate = v[:startdate] && Date.parse(v[:startdate])
       rescue StandardError
-        parsed = nil
+        startdate = nil
       end
-      !parsed.is_a?(Date) || (parsed.is_a?(Date) && parsed.past?)
+
+      begin
+        enddate = v[:enddate] && Date.parse(v[:enddate])
+      rescue StandardError
+        enddate = nil
+      end
+
+      startdate&.future? || enddate&.past?
     end
   end
 
index 25b366011ce77db5ec66f36bc9ffc9bc0e8620b8..0d76ed90c61eaccaf257b6d0bf0ac306dc314b9d 100644 (file)
@@ -23,6 +23,7 @@ json.tags changeset.tags unless changeset.tags.empty?
 
 if @include_discussion
   json.comments(changeset.comments) do |comment|
+    json.id comment.id
     json.date comment.created_at.xmlschema
     if comment.author.data_public?
       json.uid comment.author.id
index e0188a10e0914b5e9dd66fbd756c8a426df38e2f..bc4365eb6c7f049f2060d737995d2bf782ecb94a 100644 (file)
@@ -28,6 +28,7 @@ xml.changeset(attrs) do |changeset_xml_node|
     changeset_xml_node.discussion do |discussion_xml_node|
       changeset.comments.includes(:author).each do |comment|
         cattrs = {
+          "id" => comment.id,
           "date" => comment.created_at.xmlschema
         }
         if comment.author.data_public?
index cf380be31ff8a20729a0ae35ec346052d2cce4ef..4103a20924e9ea6567162af5a8ff28077e1b00e3 100644 (file)
@@ -6,7 +6,11 @@ xml.rss("version" => "2.0",
         "xmlns:georss" => "http://www.georss.org/georss") do
   xml.channel do
     xml.title t("api.notes.rss.title")
-    xml.description t("api.notes.rss.description_area", :min_lat => @min_lat, :min_lon => @min_lon, :max_lat => @max_lat, :max_lon => @max_lon)
+    if @min_lat.nil? && @min_lon.nil? && @max_lat.nil? && @max_lon.nil?
+      xml.description t("api.notes.rss.description_all")
+    else
+      xml.description t("api.notes.rss.description_area", :min_lat => @min_lat, :min_lon => @min_lon, :max_lat => @max_lat, :max_lon => @max_lon)
+    end
     xml.link url_for(:controller => "/site", :action => "index", :only_path => false)
 
     @comments.each do |comment|
index 7efd640f5b132c483f6c76b855b8faf45616fc44..b56c902cd8ff8970a299d261cd96e86edded155f 100644 (file)
@@ -3,6 +3,7 @@
 attrs = {
   "id" => trace.id,
   "name" => trace.name,
+  "uid" => trace.user_id,
   "user" => trace.user.display_name,
   "visibility" => trace.visibility,
   "pending" => trace.inserted ? "false" : "true",
diff --git a/app/views/api/user_blocks/_user_block.json.jbuilder b/app/views/api/user_blocks/_user_block.json.jbuilder
new file mode 100644 (file)
index 0000000..3288dd6
--- /dev/null
@@ -0,0 +1,13 @@
+json.user_block do
+  json.id user_block.id
+  json.created_at user_block.created_at.xmlschema
+  json.updated_at user_block.updated_at.xmlschema
+  json.ends_at user_block.ends_at.xmlschema
+  json.needs_view user_block.needs_view
+
+  json.user :uid => user_block.user_id, :user => user_block.user.display_name
+  json.creator :uid => user_block.creator_id, :user => user_block.creator.display_name
+  json.revoker :uid => user_block.revoker_id, :user => user_block.revoker.display_name if user_block.revoker
+
+  json.reason user_block.reason
+end
diff --git a/app/views/api/user_blocks/_user_block.xml.builder b/app/views/api/user_blocks/_user_block.xml.builder
new file mode 100644 (file)
index 0000000..a41dc56
--- /dev/null
@@ -0,0 +1,14 @@
+attrs = {
+  "id" => user_block.id,
+  "created_at" => user_block.created_at.xmlschema,
+  "updated_at" => user_block.updated_at.xmlschema,
+  "ends_at" => user_block.ends_at.xmlschema,
+  "needs_view" => user_block.needs_view
+}
+
+xml.user_block(attrs) do
+  xml.user :uid => user_block.user_id, :user => user_block.user.display_name
+  xml.creator :uid => user_block.creator_id, :user => user_block.creator.display_name
+  xml.revoker :uid => user_block.revoker_id, :user => user_block.revoker.display_name if user_block.revoker
+  xml.reason user_block.reason
+end
diff --git a/app/views/api/user_blocks/show.json.jbuilder b/app/views/api/user_blocks/show.json.jbuilder
new file mode 100644 (file)
index 0000000..6cfc0de
--- /dev/null
@@ -0,0 +1,3 @@
+json.partial! "api/root_attributes"
+
+json.partial! @user_block
diff --git a/app/views/api/user_blocks/show.xml.builder b/app/views/api/user_blocks/show.xml.builder
new file mode 100644 (file)
index 0000000..eff666b
--- /dev/null
@@ -0,0 +1,5 @@
+xml.instruct!
+
+xml.osm(OSM::API.new.xml_root_attributes) do |osm|
+  osm << (render(@user_block) || "")
+end
index b5c360a03db4c15fa80cc1db03fd176a40d856c7..9acbd05ae03992fc923f82f03420cf8c7b4ce8d1 100644 (file)
@@ -46,7 +46,9 @@
                     — <span class="action-button" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_hide_url(comment.id) %>"><%= t("javascripts.changesets.show.hide_comment") %></span>
                   <% end %>
                 </small>
-                <%= comment.body.to_html %>
+                <div class="mx-2">
+                  <%= comment.body.to_html %>
+                </div>
               </li>
             <% elsif current_user and current_user.moderator? %>
               <li id="c<%= comment.id %>">
@@ -57,7 +59,9 @@
                         :user => link_to(comment.author.display_name, user_path(comment.author))) %>
                   — <span class="action-button text-muted" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_unhide_url(comment.id) %>"><%= t("javascripts.changesets.show.unhide_comment") %></span>
                  </small>
-                <%= comment.body.to_html %>
+                <div class="mx-2">
+                  <%= comment.body.to_html %>
+                </div>
               </li>
             <% end %>
           <% end %>
diff --git a/app/views/changesets/_user.atom.builder b/app/views/changesets/_user.atom.builder
deleted file mode 100644 (file)
index 7aa65d2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-xml.a(user.display_name, :href => url_for(:controller => "users", :action => "view", :display_name => user.display_name))
index 43f194522e1c3426ac1de750a85c3efddf67e90a..97e6351a0a108561ac495534a8e30c75ab13cb11 100644 (file)
@@ -13,9 +13,9 @@
   </div>
 <% end -%>
 <% elsif params[:bbox] %>
-  <p><%= t(params[:max_id] ? ".no_more_area" : ".empty_area") %></p>
+  <p class="mx-3"><%= t(params[:max_id] ? ".no_more_area" : ".empty_area") %></p>
 <% elsif params[:display_name] %>
-  <p><%= t(params[:max_id] ? ".no_more_user" : ".empty_user") %></p>
+  <p class="mx-3"><%= t(params[:max_id] ? ".no_more_user" : ".empty_user") %></p>
 <% else %>
-  <p><%= t(params[:max_id] ? ".no_more" : ".empty") %></p>
+  <p class="mx-3"><%= t(params[:max_id] ? ".no_more" : ".empty") %></p>
 <% end %>
index bfb1c1823dfa2c8a2cc567dfb975db7a413e2731..0b38e3ea6b5b373008aca9c6bb015f394e98b464 100644 (file)
@@ -8,8 +8,8 @@
   <%= tag.div "", :id => "map", :class => "border border-grey rounded mb-3", :data => { :lat => @lat, :lon => @lon, :zoom => @zoom } %>
 
   <div class="row mb-3">
-    <%= f.text_field :latitude, :wrapper_class => "col-sm-4", :id => "latitude" %>
-    <%= f.text_field :longitude, :wrapper_class => "col-sm-4", :id => "longitude" %>
+    <%= f.text_field :latitude, :wrapper_class => "col-sm-4 d-flex flex-column", :class => "mt-auto", :id => "latitude" %>
+    <%= f.text_field :longitude, :wrapper_class => "col-sm-4 d-flex flex-column", :class => "mt-auto", :id => "longitude" %>
     <div class="col-sm-4 align-self-end pt-2">
       <button type="button" id="usemap" class="btn btn-outline-primary"><%= t ".use_map_link" -%></button>
     </div>
index e3a7ff23e12f8f8f5baf7012874d8745ff4d2724..f82373af0c5558d7678ec0df78e7f90aa7b959f3 100644 (file)
       </tr>
     </thead>
     <% @comments.each do |comment| -%>
-    <tr class="<%= "text-muted" unless comment.visible? %>">
-      <td width="25%"><%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %></td>
-      <td width="25%"><span title="<%= l comment.created_at, :format => :friendly %>"><%= time_ago_in_words(comment.created_at, :scope => :"datetime.distance_in_words_ago") %></span></td>
-      <td width="50%" class="richtext text-break"><%= comment.body.to_html %></td>
+    <tr>
+      <td width="25%" class="<%= "text-muted" unless comment.visible? %>"><%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %></td>
+      <td width="25%" class="<%= "text-muted" unless comment.visible? %>"><span title="<%= l comment.created_at, :format => :friendly %>"><%= time_ago_in_words(comment.created_at, :scope => :"datetime.distance_in_words_ago") %></span></td>
+      <td width="50%" class="richtext text-break<%= " text-muted" unless comment.visible? %>"><%= comment.body.to_html %></td>
     </tr>
     <% end -%>
   </table>
 
-  <div class='secondary-actions clearfix'>
-    <span><%= 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 %></span>
-  </div>
-
+  <%= 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 -%>
index 4a8beab37eb4be8a9c383e1435da0c304b9ab96f..e464b99b4829d40758fcd7912d1b805c8393de64 100644 (file)
 
   <%= render @entries %>
 
-  <nav>
-    <ul class="pagination">
-      <% if @older_entries -%>
-        <li class="page-item">
-          <%= link_to t(".older_entries"), @params.merge(:before => @entries.last.id), :class => "page-link" %>
-        </li>
-      <% else -%>
-        <li class="page-item disabled">
-          <span class="page-link"><%= t(".older_entries") %></span>
-        </li>
-      <% end -%>
-
-      <% if @newer_entries -%>
-        <li class="page-item">
-          <%= link_to t(".newer_entries"), @params.merge(:after => @entries.first.id), :class => "page-link" %>
-        </li>
-      <% else -%>
-        <li class="page-item disabled">
-          <span class="page-link"><%= t(".newer_entries") %></span>
-        </li>
-      <% end -%>
-    </ul>
-  </nav>
+  <%= 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] -%>
index 2378d8c2ec973fcab1bc8ed6ea48c62a56b5e9ea..3bb97b484289396ffeec14167cff936401c52ad0 100644 (file)
@@ -34,7 +34,9 @@
         <% @note_comments.drop(1).each do |comment| %>
           <li id="c<%= comment.id %>">
             <small class='text-muted'><%= note_event(comment.event, comment.created_at, comment.author) %></small>
-            <%= comment.body.to_html %>
+            <div class="mx-2">
+              <%= comment.body.to_html %>
+            </div>
           </li>
         <% end %>
       </ul>
index bf53832c8802b6709bd15348ce0ec30d3b0685f7..b207e72e2e6f979df549e0987aa0b73957e63731 100644 (file)
@@ -44,8 +44,8 @@
     <legend><%= t ".home location" -%></legend>
     <p id="home_message" class="text-muted m-0<% if current_user.home_location? %> invisible<% end %>"><%= t ".no home location" %></p>
     <div class="row">
-      <%= f.text_field :home_lat, :wrapper_class => "col-sm-4", :id => "home_lat" %>
-      <%= f.text_field :home_lon, :wrapper_class => "col-sm-4", :id => "home_lon" %>
+      <%= 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" %>
       <div class="col-sm-4 pt-2 align-self-end">
         <button type="button" id="home_show" class="btn btn-outline-primary"<% unless current_user.home_location? %> hidden<% end %> disabled><%= t ".show" %></button>
         <button type="button" id="home_delete" class="btn btn-outline-primary"<% unless current_user.home_location? %> hidden<% end %>><%= t ".delete" %></button>
index dea65f768985860104b27651a7ff6bb600702b41..03755730bdd411fd7c3f027041d0855917b46776 100644 (file)
     <div class="mb-3">
       <label class="form-label"><%= t ".with external" %></label>
 
-      <ul class='list-unstyled' id="login_auth_buttons">
-        <li><%= link_to image_tag("openid.png", :alt => t(".auth_providers.openid.title")), "#", :id => "openid_open_url", :title => t(".auth_providers.openid.title") %></li>
-        <% if Settings.key?(:google_auth_id) -%>
-        <li><%= auth_button "google", "google" %></li>
-        <% end -%>
-        <% if Settings.key?(:facebook_auth_id) -%>
-        <li><%= auth_button "facebook", "facebook" %></li>
-        <% end -%>
-        <% if Settings.key?(:microsoft_auth_id) -%>
-        <li><%= auth_button "microsoft", "microsoft" %></li>
-        <% end -%>
-        <% if Settings.key?(:github_auth_id) -%>
-        <li><%= auth_button "github", "github" %></li>
-        <% end -%>
-        <% if Settings.key?(:wikipedia_auth_id) -%>
-        <li><%= auth_button "wikipedia", "wikipedia" %></li>
+      <ul class='list-inline' id="login_auth_buttons">
+        <li class="list-inline-item me-3"><%= link_to image_tag("openid.png", :alt => t(".auth_providers.openid.title")), "#", :id => "openid_open_url", :title => t(".auth_providers.openid.title") %></li>
+        <% %w[google facebook microsoft github wikipedia].each do |provider| %>
+          <% if Settings.key?("#{provider}_auth_id".to_sym) -%>
+            <li class="list-inline-item me-3"><%= auth_button provider, provider %></li>
+          <% end -%>
         <% end -%>
       </ul>
 
diff --git a/app/views/shared/_pagination.html.erb b/app/views/shared/_pagination.html.erb
new file mode 100644 (file)
index 0000000..fbb9dcf
--- /dev/null
@@ -0,0 +1,23 @@
+<nav>
+  <ul class="pagination">
+    <% if newer_id -%>
+      <li class="page-item">
+        <%= link_to t(newer_key), @params.merge(:before => nil, :after => newer_id), :class => "page-link" %>
+      </li>
+    <% else -%>
+      <li class="page-item disabled">
+        <span class="page-link"><%= t(newer_key) %></span>
+      </li>
+    <% end -%>
+
+    <% if older_id -%>
+      <li class="page-item">
+        <%= link_to t(older_key), @params.merge(:before => older_id, :after => nil), :class => "page-link" %>
+      </li>
+    <% else -%>
+      <li class="page-item disabled">
+        <span class="page-link"><%= t(older_key) %></span>
+      </li>
+    <% end -%>
+  </ul>
+</nav>
index a314cb151416c836a7bfa6e5d79f1c889f6906ce..bb66c665ad147445d2b337c6795997efb3301d40 100644 (file)
@@ -9,8 +9,8 @@
     <div class='export_boxy border border-grey rounded'>
       <%= text_field_tag("maxlat", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control mx-auto") %>
       <div class="clearfix">
-        <%= 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") %>
       </div>
       <%= text_field_tag("minlat", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control mx-auto") %>
       </div>
index 370ae3b645b3ee68e069f365a225f8ef302892cc..949121d96f2f64aae1b325d473bbde2f59baa6db 100644 (file)
@@ -1,5 +1,5 @@
 <div id="mapkey">
-  <table class="table table-sm table-borderless mapkey-table">
+  <table class="table table-sm table-borderless mapkey-table mb-0">
     <% YAML.load_file(Rails.root.join("config/key.yml")).each do |name,data| %>
       <% data.each do |entry| %>
         <tr class="mapkey-table-entry" data-layer="<%= name %>" data-zoom-min="<%= entry["min_zoom"] %>" 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 (file)
index 29e0d37..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<nav>
-  <ul class="pagination">
-    <% if newer_traces %>
-      <li class="page-item">
-        <%= link_to t(".newer"), params.merge(:before => nil, :after => traces.first.id), :class => "page-link" %>
-      </li>
-    <% else %>
-      <li class="page-item disabled">
-        <span class="page-link"><%= t(".newer") %></span>
-      </li>
-    <% end %>
-
-    <% if older_traces %>
-      <li class="page-item">
-        <%= link_to t(".older"), params.merge(:before => traces.last.id, :after => nil), :class => "page-link" %>
-      </li>
-    <% else %>
-      <li class="page-item disabled">
-        <span class="page-link"><%= t(".older") %></span>
-      </li>
-    <% end %>
-  </ul>
-</nav>
index 26e52add72998f06b224f6c9b3de939a56290548..63ade87d7dd6eb9445789d141d404c60da672dfa 100644 (file)
       </li>
     <% end %>
 
-    <li class="nav-item flex-sm-grow-1"></li>
-    <li class="nav-item">
-      <div class="px-3 py-2 py-sm-0">
-        <%= link_to({ :action => :georss, :display_name => @target_user&.display_name, :tag => params[:tag] }, { :class => "btn btn-secondary btn-sm" }) do %>
-          <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="white" viewBox="0 0 16 16">
-            <path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z" />
-          </svg>
-        <% end -%>
-        <%= link_to t(".upload_trace"), new_trace_path, :class => "btn btn-secondary btn-sm" %>
+    <li class="nav-item ms-auto">
+      <div class="nav-link pe-0">
+        <%= link_to({ :action => :georss, :display_name => @target_user&.display_name, :tag => params[:tag] }, { :class => "btn btn-secondary btn-sm my-n2 align-baseline border-0" }) do %>
+          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class="align-text-bottom">
+            <circle cx="2" cy="14" r="2" fill="white" />
+            <path d="M 8 14 a 6 6 0 0 0 -6 -6 M 14 14 a 12 12 0 0 0 -12 -12" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" />
+          </svg><% end -%>
+        <%= link_to t(".upload_trace"), new_trace_path, :class => "btn btn-secondary btn-sm my-n2 align-baseline border-0" %>
       </div>
     </li>
   </ul>
 <% 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 %>
 
   <table id="trace_list" class="table table-borderless table-striped">
     <tbody>
     </tbody>
   </table>
 
-  <%= 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 %>
   <h2><%= t ".empty_title" %></h2>
   <p><%= t ".empty_upload_html", :upload_link => link_to(t(".upload_new"), new_trace_path),
index 6335b06d9895371bb4479105f5447495528c3992..81fda926b7a081b333add6d07f6d3aaa87989668 100644 (file)
                 <% end -%>
               </dd>
             <% end -%>
+            <% if current_user&.moderator? || current_user&.administrator? %>
+              <dt class="list-inline-item m-0"><%= t ".uid" %></dt>
+              <dd class="list-inline-item"><%= link_to @user.id, api_user_path(:id => @user.id) %></dd>
+            <% end -%>
           </dl>
         </small>
       </div>
index c2a4df07b2ae4440186053193d6acb59c20a6cef..23256643d67965a158fccaf85bb24b2abbfc7bc1 100644 (file)
@@ -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
index e710019da30b70fcc7e8b98e870b63573ccfb3cd..778b5b827aff877439565a0a322ddc1809f28678 100644 (file)
@@ -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'],
index 7ba39bd48af77be5c59b5de9b57387396208731f..823be1ad61ce91b5dbb4d197ed6e318d40d9452d 100644 (file)
@@ -2342,6 +2342,7 @@ ar:
       public_traces_from: آثار جي بي إس عمومية من %{user}
       description: تصفح أحدث مسارات GPS المرفوعة
       tagged_with: بالوسم %{tags}
+      wiki_page: صفحة ويكي
       upload_trace: حمل أثر
       my_traces: أثري في GPS
     destroy:
index 384fb420225dba57839238efbf9e700747477f36..3c75867fe10ceaaae21fe2bd55db02b60963513b 100644 (file)
@@ -1088,8 +1088,8 @@ bg:
         level2: Държавна граница
         level4: Държавна граница
         level5: Граница на региона
-        level6: Ð\94Ñ\8aÑ\80жавна граница
-        level8: Ð\93Ñ\80аниÑ\86а Ð½Ð° Ð³Ñ\80ада
+        level6: Ð\9eблаÑ\81Ñ\82на граница
+        level8: Ð\93Ñ\80аниÑ\86а Ð½Ð° Ð·ÐµÐ¼Ð»Ð¸Ñ\89е
         level9: Граница на селото
         level10: Граница на предградията
       types:
index 21cd87eb61a4fe7612f6727f65bca31a16ce1099..081c526a84e5e579fb0f2a643d0476fc2a9d4856 100644 (file)
@@ -297,6 +297,7 @@ br:
         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.
@@ -757,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
@@ -1987,6 +1989,8 @@ br:
           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
@@ -2816,7 +2820,7 @@ 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
index 4f61e799e40760d5e361846dca30dfbb5de9a572..7347dcee2c901cac97d195ee8e45cb391921847d 100644 (file)
@@ -273,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}
@@ -2008,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
@@ -2054,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
@@ -2065,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 &copy; 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}
@@ -2125,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:'
@@ -2736,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
index baa0c47f21d860c6cb6e4c5677e5b6938687b481..e6b897d585a2277ae3e8eaa2b878c3c7dee458f8 100644 (file)
@@ -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:
index 010f23ec95bcc11bf7025163ed77732fef225b7f..494e3db258aa1e5345084fdda0601ea8df325b94 100644 (file)
@@ -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: ne 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.
@@ -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
index 58351acf1ba31ede504d86f7582a5811de4966c6..205b01f1a696fe00bd293f22cae53e5135bc7d6e 100644 (file)
@@ -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
@@ -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
+          &copy; 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
index b4b1b24aa99a663ac359b4cc255a240a281d4f98..8eff4d8060cf3ff18d94a714780295941082870a 100644 (file)
@@ -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.
@@ -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
index fea612abb2e792e45d9f69fd2423e87d53f4d9ec..7b2c93fde5e92824a2430eaebbd6df25ad7b74bd 100644 (file)
@@ -270,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}
@@ -336,6 +337,10 @@ el:
       delete_account: Διαγραφή λογαριασμού...
     go_public:
       heading: Δημόσια επεξεργασία
+      currently_not_public: Προς το παρόν, οι αλλαγές σας είναι ανώνυμες και οι άνθρωποι
+        δεν μπορούν να σας στείλουν μηνύματα ή να δουν την τοποθεσία σας. Για να δείξετε
+        τι επεξεργαστήκατε και να επιτρέψετε στους άλλους να επικοινωνήσουν μαζί σας
+        μέσω του ιστότοπου, κάντε κλικ στο παρακάτω κουμπί.
       only_public_can_edit: Από την αλλαγή του API 0.6, μόνο οι δημόσιοι χρήστες μπορούν
         να επεξεργάζονται τα δεδομένα χάρτη.
       find_out_why: μάθετε γιατί
@@ -578,7 +583,6 @@ el:
       comment_link: Σχολιάστε την καταχώρηση
       reply_link: Αποστολή μηνύματος στον συγγραφέα
       comment_count:
-        zero: Χωρίς σχόλια
         one: '%{count} σχόλιο'
         other: '%{count} σχόλια'
       no_comments: Κανένα σχόλιο
@@ -1465,8 +1469,7 @@ el:
     show:
       title: '%{status} Ζήτημα #%{issue_id}'
       reports:
-        zero: Καμία αναφορά
-        one: 1 αναφορά
+        one: '%{count} αναφορά'
         other: '%{count} αναφορές'
       no_reports: Καμία αναφορά
       report_created_at: Αναφέρθηκε για πρώτη φορά στις %{datetime}
@@ -1540,7 +1543,7 @@ el:
   layouts:
     logo:
       alt_text: Λογότυπο OpenStreetMap
-    home: Î\9cεÏ\84άβαÏ\83η Ï\83Ï\84ο Î£Ï\80ίÏ\84ι
+    home: Î\94είξε Ï\84ο Ï\83Ï\80ίÏ\84ι Î¼Î¿Ï\85
     logout: Αποσύνδεση
     log_in: Σύνδεση
     sign_up: Εγγραφή
@@ -1876,7 +1879,7 @@ el:
       delete image: Αφαίρεση της τρέχουσας εικόνας
       replace image: Αντικατάσταση της τρέχουσας εικόνας
       image size hint: (τετράγωνες εικόνες τουλάχιστον 100 x 100 λειτουργούν καλύτερα)
-      home location: Τοποθεσία Σπιτιού
+      home location: Τοποθεσία σπιτιού
       no home location: Δεν έχετε εισάγει την τοποθεσία του σπιτιού σας.
       update home location on click: Ενημέρωση τοποθεσίας σπιτιού όταν κάνω κλικ στον
         χάρτη;
@@ -1968,11 +1971,22 @@ 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: Νομικό
@@ -2704,7 +2718,7 @@ el:
       diary: Ημερολόγιο
       edits: Επεξεργασίες
       traces: Ίχνη
-      notes: Σημειώσεις Χάρτη
+      notes: Σημειώσεις χάρτη
       remove as friend: Αφαίρεση Φίλου
       add as friend: Προσθήκη Φίλου
       mapper since: 'Χαρτογράφος από:'
@@ -2902,7 +2916,7 @@ el:
     index:
       title: Σημειώσεις που υποβλήθηκαν ή σχολιάστηκαν από τον %{user}
       heading: σημειώσεις του %{user}
-      subheading_html: Σημειώσεις που υποβλήθηκαν ή σχολιάστηκαν από τον %{user}
+      subheading_html: Σημειώσεις που %{submitted} ή %{commented} από τον %{user}
       no_notes: Χωρίς σημειώσεις
       id: Αναγνωριστικό
       creator: Δημιουργός
@@ -2981,7 +2995,7 @@ el:
         in: Μεγέθυνση
         out: Σμίκρυνση
       locate:
-        title: Προβολή της Τοποθεσίας μου
+        title: Προβολή της τοποθεσίας μου
         metersPopup:
           one: Είστε εντός %{count} μέτρου από το σημείο
           other: Είστε εντός %{count} μέτρων από το σημείο
@@ -2990,18 +3004,18 @@ el:
           other: Είστε εντός %{count} ποδιών από το σημείο
       base:
         standard: Κανονικός
-        cyclosm: CyclOSM
-        cycle_map: Î§Î¬Ï\81Ï\84ηÏ\82 Î Î¿Î´Î·Î»Î±Ï\83ίαÏ\82
-        transport_map: Î£Ï\85γκοινÏ\89νιακÏ\8cÏ\82 Î§Î¬Ï\81Ï\84ηÏ\82
+        cyclosm: CyclOSM ποδηλασία
+        cycle_map: Î Î¿Î´Î·Î»Î±Ï\83ία
+        transport_map: Î£Ï\85γκοινÏ\89νία
         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
index 98ecbe8a7adc3f4ba8cba9ae994d3e1eba2a78bf..da346e8e89abb15497867e4e8fd30db39824d1a1 100644 (file)
@@ -230,6 +230,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})"
@@ -2698,6 +2699,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
@@ -2966,6 +2968,7 @@ en:
         cyclosm: CyclOSM
         cycle_map: Cycle Map
         transport_map: Transport Map
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitarian
         opnvkarte: ÖPNVKarte
       layers:
@@ -2986,6 +2989,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:
index 4d112cdf4ae8e892ac3ffd46b7b9bf44b95f8e4e..ed291ca35ab114fdc1e7c1fd822752f3dbf6475d 100644 (file)
@@ -251,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}
@@ -2734,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
index 1e08e1fbfe8017147b270bfd64ad7bcd2ea930c3..3fe57337bcaf4fe1d63a3c7974be86c037660dcb 100644 (file)
@@ -11,6 +11,7 @@
 # Author: Angoca
 # Author: AnupamM
 # Author: Armando-Martin
+# Author: Atzerritik
 # Author: BnSrSa
 # Author: Carlosmg.dg
 # Author: Carlosz22
@@ -139,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
@@ -172,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:
@@ -217,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
@@ -321,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}
@@ -355,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:
@@ -400,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
@@ -684,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:
@@ -758,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
@@ -1423,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
@@ -1459,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
@@ -1568,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:
@@ -1673,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}.
@@ -1715,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,
@@ -1741,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
@@ -1781,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!
@@ -1793,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:
@@ -1885,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:
@@ -1933,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.
@@ -1944,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:
@@ -2086,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
@@ -2284,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.
@@ -2357,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
@@ -2401,7 +2408,7 @@ es:
           apron:
           - Rampa aeroportuaria
           - terminal
-          admin: Límite administrativos
+          admin: Límite administrativo
           forest: Bosque
           wood: Bosque
           golf: Campo de golf
@@ -2421,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
@@ -2440,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
@@ -2487,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
@@ -2505,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.
@@ -2666,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
@@ -2678,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
@@ -2868,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
@@ -2880,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
@@ -2944,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}'?
@@ -2954,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
@@ -2998,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:
@@ -3062,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
@@ -3214,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
@@ -3273,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}
@@ -3335,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})
 ...
index 058e8464d98692536f8fcdebe5dabd82c679bced..963dccd51ce148843fc9426744b4ce2c604b98c6 100644 (file)
@@ -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.
@@ -1855,8 +1875,8 @@ eu:
           title: Saioa hasi Facebookekin
           alt: Saioa hasi Facebookekin
         microsoft:
-          title: Saioa hasi Windows Livekin
-          alt: Windows Live kontu batekin saioa hasi
+          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.
index ce8569c48a0e70fa129ea5b941e09d8f11645cda..553f83479e77a62148b339d2708335fa9f9a19ab 100644 (file)
@@ -327,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}
@@ -2926,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
index e241bf3878c4a1ccb78bd5d55b6edef16d274b52..7446bf54b83cfee34f77bd42b9b5a6444bf22e51 100644 (file)
@@ -245,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})
@@ -2783,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
@@ -3066,6 +3068,7 @@ gl:
         cyclosm: CyclOSM (Ciclista)
         cycle_map: Ciclista
         transport_map: Transporte
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitario
         opnvkarte: ÖPNVKarte (Transporte)
       layers:
@@ -3084,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:
index d059fcec69b29f69efc9309df28356407aa4b768..664f90fcbac110ae5dac3b5adc5caa1f724da68f 100644 (file)
@@ -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}
@@ -2764,6 +2765,7 @@ he:
       remove as friend: הסרה מרשימת חברים
       add as friend: הוספה כחבר
       mapper since: 'ממפה מאז:'
+      uid: 'מזהה משתמש:'
       ct status: 'תנאי תרומה:'
       ct undecided: עוד אין החלטה
       ct declined: נדחו
index b7605977e3136486cc442e021d7ddb6613307547..f916c38e921658199cfac3b93f21a5d5d65fc5c8 100644 (file)
@@ -852,7 +852,7 @@ hr:
         place:
           city: Grad
           country: Država
-          county: Županija/grofovija
+          county: Županija
           farm: Farma
           hamlet: Zaseok
           house: Kuća
index 7bc4abbc7c38debcf61ff010d37a5a4b796c3879..242aa3ae4d59872cdf913255cf720d8f3de969c7 100644 (file)
@@ -263,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
index 8bc1c60869f661c600b1e0206e57727a70314d0e..da1b37ba13b67647d016fb93e0aafc813edfb143 100644 (file)
@@ -234,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}
@@ -2762,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
@@ -3043,6 +3045,7 @@ ia:
         cyclosm: CyclOSM
         cycle_map: Carta cyclista
         transport_map: Carta de transporto
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitario
         opnvkarte: ÖPNVKarte
       layers:
@@ -3061,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:
index 449fa5ebcba95f77d16d43a4e9839cf7d5d9de8e..2600c31f361a2b5c5024148759edd51012f796d2 100644 (file)
@@ -288,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}
@@ -2126,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).
@@ -2820,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
@@ -3120,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:
index 7d04b25fb7840b32ad0ab00f3e367040070a8f9d..824f8fce1f80bb9cd4469d4cc496decb0ddf92c5 100644 (file)
@@ -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?
index 4133eec391f12f7233f178329d0151d87d394c5e..3edc42d98c4a4b0e4cc727df3d7b01dcf4bc44e3 100644 (file)
@@ -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
@@ -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."
index 7fbd32b4fdb5dc83f904bd9b38e0984287296681..f6045106faf0271f872ba376c330914d2ac31510 100644 (file)
@@ -236,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}
@@ -2748,6 +2749,7 @@ mk:
       remove as friend: Отстрани од пријатели
       add as friend: Додај во пријатели
       mapper since: 'Картограф од:'
+      uid: 'Корисничка назнака:'
       ct status: 'Услови за учество:'
       ct undecided: Неодлучено
       ct declined: Одбиен
@@ -3030,6 +3032,7 @@ mk:
         cyclosm: CyclOSM
         cycle_map: Велосипедска
         transport_map: Сообраќајна
+        tracestracktop_topo: Tracestrack Топо
         hot: Хуманитарна
         opnvkarte: ÖPNVKarte
       layers:
@@ -3048,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:
index 09186db88da59b3602f975210b53533fb3c2f31c..176c877d400329d89ec47b9278eadf0449475a69 100644 (file)
@@ -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:
index aa9395bee3689bfb8a2680ee8e1a6a3df56118af..02843f1ed06f10ae9fceb039637074c44f4d1a1e 100644 (file)
@@ -288,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}
@@ -2833,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
index b6c0ba2c8a199cad84c898beab18c6cd9c1f4a1c..2b594f0bbf5565b08c7d083cfd77b5be512b67d7 100644 (file)
@@ -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 f %{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
@@ -1210,8 +1802,8 @@ nn:
           title: Logg inn med Facebook
           alt: Logg inn med ein Facebook-konto
         microsoft:
-          title: Logg inn med Windows Live
-          alt: Logg inn med ein Windows Live-konto
+          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») &copy; %{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&reg;, GeoGratis (&copy; Department of Natural
+          Resources Canada), CanVec (&copy; 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 &copy; 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 &copy; 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:
index 51285dae14400fdcf6bb20fc87db83f68b4ecf24..f622399e82307066e16d60e2941c2995e2b408bf 100644 (file)
@@ -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.
@@ -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
index 5247428bbf746e18b87e3c0564b742c3f3154747..f290f65e46d93903bda685c7aea57bc1aa7d5555 100644 (file)
@@ -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.
@@ -1914,8 +1920,8 @@ pt:
           title: Entrar com o Facebook
           alt: Entrar com uma conta do Facebook
         microsoft:
-          title: Entrar com o Windows Live
-          alt: Entrar com uma conta do Windows Live
+          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:
index f96ebc04874d4e4cb0c124477477c95eac93d5e0..b3626cb1554a5474c31cc000f82677ba7d6fd1ed 100644 (file)
@@ -79,6 +79,7 @@
 # Author: Putnik
 # Author: Pvwww
 # Author: Redredsonia
+# Author: Rich Flight22
 # Author: Riliam
 # Author: Rivka Silinsky
 # Author: Ruila
@@ -964,6 +965,7 @@ ru:
           ambulance_station: Станция скорой медицинской помощи
           assembly_point: Место сбора
           defibrillator: Дефибриллятор
+          fire_extinguisher: Огнетушитель
           fire_water_pond: Пожарный водоём
           landing_site: Место аварийной посадки
           phone: Телефон экстренной связи
@@ -1019,6 +1021,7 @@ ru:
           unclassified: Дорога местного значения
           "yes": Дорога
         historic:
+          aircraft: Историческое воздушное судно
           archaeological_site: Раскопки
           battlefield: Поле боя
           boundary_stone: Пограничный камень
@@ -2109,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
index 11a947a05f8b06f372aa89671d548fa9171b8745..8cdab4e5ce182602aeac9216d39da129e009de10 100644 (file)
@@ -237,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}
@@ -2806,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
index 9d0554c8b5ef6544df8af9baf6aeb916d9209cdc..6a81b5d2a2d152b0a28079f84b5976abe8851187 100644 (file)
@@ -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}
@@ -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
@@ -3113,6 +3115,7 @@ sl:
         cyclosm: CyclOSM
         cycle_map: Kolesarska karta
         transport_map: Prometna karta
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitarno
         opnvkarte: ÖPNVKarte
       layers:
@@ -3131,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:
index 08a76ff6bed1c3c2a03f711ed245650992ae7b00..b6f09dd7365f59582ecd3aad6f2a7f8998a9620f 100644 (file)
@@ -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.
index 4eed00e2525977deaa7b70de32eec594c76a2248..301b5d8cd29b973af586225673adb8671b98c005 100644 (file)
@@ -278,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
@@ -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
@@ -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}
@@ -2023,37 +2042,80 @@ tr:
           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 &copy; %{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&reg;, GeoGratis (&copy; Department
+          of Natural Resources Canada), CanVec (&copy; 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}: &copy; 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ı
@@ -2061,12 +2123,24 @@ tr:
           %{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 &copy; 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
@@ -2079,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
@@ -2153,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:
@@ -2203,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
@@ -2302,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ı
@@ -2319,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
@@ -2415,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
@@ -2622,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ç:'
@@ -2630,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
@@ -2695,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
@@ -2832,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'
@@ -2886,8 +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_submitted: gönderildi
+      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
@@ -2991,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
index c3e0b9624ceff505430c2c3e4eff811be2a10d63..d6837960e4ffdba0f46674c98a0edebeac0f0b65 100644 (file)
@@ -299,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}
@@ -2851,6 +2853,7 @@ uk:
       remove as friend: Вилучити зі списку друзів
       add as friend: Додати до списку друзів
       mapper since: 'Зареєстрований:'
+      uid: 'id учасника:'
       ct status: 'Умови співпраці:'
       ct undecided: Не визначились
       ct declined: Відхилили
index 6d242234f9a64861e033a79f2b598f2c72f494d9..f29d9382eee1dd3dee4ac5fa0aede3f8216b39bd 100644 (file)
@@ -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
@@ -303,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} 的简易信息聚合馈送
@@ -1278,7 +1281,7 @@ zh-CN:
           carpet: 地毯店
           charity: 慈善商店
           cheese: 奶酪店
-          chemist: 化学品
+          chemist: 药妆
           chocolate: 巧克力店
           clothes: 服装店
           coffee: 咖啡店
@@ -2577,6 +2580,7 @@ zh-CN:
       remove as friend: 删除朋友
       add as friend: 添加朋友
       mapper since: 绘图者注册于:
+      uid: 用户ID:
       ct status: 贡献者条款:
       ct undecided: 未决定
       ct declined: 已拒绝
@@ -2839,6 +2843,7 @@ zh-CN:
         cyclosm: 自行车地图
         cycle_map: 骑行运动地图
         transport_map: 交通运输地图
+        tracestracktop_topo: 地形地貌地图
         hot: 人道救援地图
         opnvkarte: 公共交通地图
       layers:
@@ -2857,6 +2862,8 @@ zh-CN:
       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:
@@ -3005,8 +3012,8 @@ zh-CN:
       flash: 修订已销毁。
       error: 销毁该修订时出错。
   validations:
-    leading_whitespace: 具有领先的空白
-    trailing_whitespace: 具有尾随空白
+    leading_whitespace: 有前导空格
+    trailing_whitespace: 有尾随空格
     invalid_characters: 包含无效字符
     url_characters: 包含特殊URL字符 (%{characters})
 ...
index ac484938d1871109e6eb3731d7636c627c59782f..b61dd8fa6867fc3f4155fdba09d2ec86844e6a89 100644 (file)
@@ -37,6 +37,7 @@
 # Author: StarrySky
 # Author: StephDC
 # Author: SupaplexTW
+# Author: Tntchn
 # Author: TongcyDai
 # Author: Wehwei
 # Author: Winston Sung
@@ -271,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} 附近)
@@ -1248,7 +1250,7 @@ zh-TW:
           carpet: 地毯店
           charity: 慈善商店
           cheese: 起士店鋪
-          chemist: 化學材料行
+          chemist: 藥妝店
           chocolate: 巧克力店鋪
           clothes: 服飾店
           coffee: 咖啡店
@@ -1930,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: å½±å\83\8få¡\8a使用方針
+        more_2_1_tile_usage_policy: å\9c\96ç£\9a使用方針
         more_2_1_nominatim_usage_policy: 提名使用方針
         contributors_title_html: 我們的貢獻者
         contributors_intro_html: 我們的貢獻者為成千上萬的人。我們也收納了從國家測繪機構及其他來源等取得的開放版權資料,其中包括:
@@ -2559,6 +2561,7 @@ zh-TW:
       remove as friend: 移除好友
       add as friend: 加入為好友
       mapper since: 註冊為製圖者日期:
+      uid: 使用者 ID:
       ct status: 貢獻者條款:
       ct undecided: 未決定
       ct declined: 已拒絕
@@ -2821,6 +2824,7 @@ zh-TW:
         cyclosm: CyclOSM
         cycle_map: 自行車地圖
         transport_map: 交通運輸地圖
+        tracestracktop_topo: 蹤跡地圖地形
         hot: 人道救援
         opnvkarte: 公共交通地圖
       layers:
@@ -2833,13 +2837,15 @@ zh-TW:
       openstreetmap_contributors: OpenStreetMap 貢獻者
       make_a_donation: 捐款
       website_and_api_terms: 網站和 API 條款
-      cyclosm_credit: ç\94± %{osm_france_link} ä»£ç®¡ç\9a\84 %{cyclosm_link} æ\89\80æ\8f\90ä¾\9bå½±å\83\8få¡\8a樣式
+      cyclosm_credit: ç\94± %{osm_france_link} ä»£ç®¡ç\9a\84 %{cyclosm_link} æ\89\80æ\8f\90ä¾\9bå\9c\96ç£\9a樣式
       osm_france: OpenStreetMap 法國
-      thunderforest_credit: '%{thunderforest_link} æ\8f\90ä¾\9bç\9a\84å½±å\83\8få¡\8a'
+      thunderforest_credit: '%{thunderforest_link} æ\8f\90ä¾\9bç\9a\84å\9c\96ç£\9a'
       andy_allan: Andy Allan
-      opnvkarte_credit: '%{memomaps_link} æ\8f\90ä¾\9bç\9a\84å½±å\83\8få¡\8a'
+      opnvkarte_credit: '%{memomaps_link} æ\8f\90ä¾\9bç\9a\84å\9c\96ç£\9a'
       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: 編輯地圖
index 415f8a01bd9b5dc1b677fe8e3261b51ea709c8f4..404e7b0a3fcf6345fec4f22af26a022676f91392 100644 (file)
@@ -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
index 0352a85e04a4b646d221a645a0fdb6cc02fc287c..214f8a284e000168234913326293f7760c96c08d 100644 (file)
@@ -119,6 +119,8 @@ fossgis_valhalla_url: "https://valhalla1.openstreetmap.de/route"
 #wikipedia_auth_secret: ""
 # Thunderforest authentication details
 #thunderforest_key: ""
+# Tracestrack authentication details
+#tracestrack_key: ""
 # Key for generating TOTP tokens
 #totp_key: ""
 # Enforce Content-Security-Policy
index 9eba0a8311911d4bcb842dbcaa0889a339f75343..0cc4c5fd432e3ceae3d388aa5687d927e8773d33 100644 (file)
@@ -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.
index d4656a5ea24a1295a509924313dfd1c55388d6be..b4bc4a5abd21345126dd08b75fe88381dfd940fc 100644 (file)
@@ -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
 
     ##
index 1e96e353ce7ea7a423eca52e0f0c3af4d10f4cbd..c050100ae0c56a0fbbbaf7906089d306367e06f6 100644 (file)
@@ -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
 
index 95658842b8e498212acf6610e3aaf92ef8d52866..9e680dd068cd9c8fa69fdcb37214aa4a137944cb 100644 (file)
@@ -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)
index 81e6b0ba14688670c3c707b4c8f8de54f15d8687..874ac3ccda1a65d474e9a1f6cd12312177a43967 100644 (file)
@@ -786,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
 
@@ -927,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)
 
@@ -1061,5 +1087,14 @@ module Api
       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
index 7f2c196654476c6499f058728952e0e2a17348aa..7d011c17ff3678c76dce61c391cee4acf7ddaf4a 100644 (file)
@@ -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)
index 7d561522c12c7fc1fd225e9ae65461cc7c814d43..aeea3f4f45f2ecfd64bc0ec4d2d80b0c9d8bb9d5 100644 (file)
@@ -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
 
index d85e5e1a4e484c0379f0f48dfa32d4e5b7095dcc..468af852b7c2e37b89d802f024b55c8066f39daa 100644 (file)
@@ -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 (file)
index 0000000..c8bdc1d
--- /dev/null
@@ -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
index aa4bf1e9de85010ac51ba86793a421c6a2a39b84..8e7079b851a2cf7b79ae62bd3495e1dd7d8d43e2 100644 (file)
@@ -731,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"]
index 0cf30e4fffb176fb1d34b931fcab7934f4cf1a37..2bed0e5d67e7644ad1165471c55c53501cbef515 100644 (file)
@@ -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)
index a71b5e8feb615773063a7c435c3a23350f524d48..79fd7a571e5f7b919d85b796d5baa879588c2663 100644 (file)
@@ -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/
index ea918cb6bbd765b577d6460901cebba1b9985e71..b505d9cdb8666ed6221b1302512867b0b48e0925 100644 (file)
@@ -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
index 16a77624c75ee8dabc02fb62bb85242e44ee6631..27022c973748deaa3b0f9937d728824b5532ca16 100644 (file)
@@ -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)
index 9358a5948ce205cc1e38bc11dc659b0c5e1a6fb6..402129d326e19908ba57feaf74c5f18a48acf9db 100644 (file)
@@ -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
 
index 673a0a9d6798c58940b14b6ac00fd4c099604b1a..911e7c1b5d33fa8b397c0862fbcfad1fb2ec2a0f 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
 
     changeset
 
-    association :author, :factory => :user
+    author :factory => :user
   end
 end
index 4879373a8de63ee47dd042d145a124e079dfede4..12df2a9456e9143dffb5fa729cc42ed927aab3bb 100644 (file)
@@ -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
index bb6b2dd5222d517fbe95ca35a812991dc95d2b38..cc6b4c3671576cd241f07732939068cf730107eb 100644 (file)
@@ -1,8 +1,8 @@
 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" }
index cd148c7896a2f80720258ab27262a66127a767a4..4f8ee5437fc8a86bcb1897ebbe03b4722da3e78a 100644 (file)
@@ -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 }
index caddea8155c6abc4a1b35c8478783117e1146541..b9f53890b9afc7876377c6ed2cfdc53dd89b75a5 100644 (file)
@@ -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 }
index 5b39cb400cf62267a046bc16787ca95e58173c20..3f862fbca752e9887cbf63df02491ea493c83f10 100644 (file)
@@ -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
index 1e62d2c973eaff522ae26cc26aba99cad5b5add3..c865e0237383a0cded35c28064dc73e53adc05be 100644 (file)
@@ -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
index a2ca0a2ee3c7780389d2f11ead22ba60455574a8..985093fad28e0e56c625edc5af60f0b6046d43c8 100644 (file)
@@ -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 }
index 1bc1b36cf0c94e7fe2ee2978d10e0df88eaca640..facf06dc0486027086ae1042a50044d9c0203899 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
     version { 1 }
 
     changeset
-    association :current_relation, :factory => :relation
+    current_relation :factory => :relation
   end
 end
index 17495d7ea862703017f0124ed3506ee533407783..99305cd98bfff94126522bf6df200a51c15f6a72 100644 (file)
@@ -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
index 265a477d3022c278a5ee11fbd93a2b69397980b5..b91bf8bf53973289c48dc54845891e8defd82073 100644 (file)
@@ -5,6 +5,6 @@ FactoryBot.define do
     version { 1 }
 
     changeset
-    association :current_way, :factory => :way
+    current_way :factory => :way
   end
 end
index b4498a28d1ad780784a8f81b10186a5b9b09be03..bba2e76330d93cadedf45ae41cabd613fbe98a69 100644 (file)
@@ -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
index fefbba45ace1b61fbd3932ea1851ba6e5a69fd67..2f68dc8dc6c1162512cee03a7859e22ba91ffba0 100644 (file)
@@ -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
index 6523342f70b1acb0d54fe9aa4b91d1d39a21b633..1916d9b2e9769759477cef313bc17061f191e694 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :user_role do
     user
-    association :granter, :factory => :user
+    granter :factory => :user
   end
 end
index d82e2c9ae453b2b6ab4426398ee4f1ef1fcdb4fb..d176e0fa78208e794e315191fa280cba4a4dd935 100644 (file)
@@ -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"
index d842390388473757180b18ecd41118df0065d696..9aec035d1c45006b74cfb176dfbc85b08950c256 100644 (file)
@@ -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
index 54450b186d01a178c9a00c5a5dbd2c8b20e58d6b..9bfd734969d34aa548a13aac62bdb981c31da550 100644 (file)
@@ -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
index a0a1023bb5a558235350d3f2bb74f115acb5e239..a32e1ac205b14a29e67f2e3d47d9bb203385bb2a 100644 (file)
@@ -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
 
index 5a55c5838cb6bda7cb6bb4ee776e3ac53cc7e1b6..87e981c6426500443bcbf6811cef581f8ffce9b1 100644 (file)
@@ -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"
index 31e6d7b075e3ba3b9ebb07d6efc3177c0eedeca9..554b89a6db05a3ec2b3353acfe69d9b78c088cf9 100644 (file)
@@ -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
index b9b989c075132a9604d01c911dc2017f2613538f..a40306e3c7b1a5064770d8bdbd345eff47750672 100644 (file)
@@ -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)
index 59a7209f5b4d3728fbb8f3049e4db4a03f0326f4..b071b1f73842663839dd9ad81c670d6d333fa1dd 100644 (file)
@@ -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
index 3504ab061fdeb5c4270036efa49807b1a9c9427f..15ef1ad3c5177f8ff0e01cf8d689395dc08bb8a4 100644 (file)
@@ -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"
index efb1070653de48b766cdaf7c5dc6221cdd5bbf97..d4e49b714ffd32b9e2d4077926863eae7fc41efc 100644 (file)
@@ -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
index 79894eb897d4a514e3ebb94b5a89a680a1bcedf5..b7e1bfc9eaebd4c7252e383871d31b9cd28a6e40 100644 (file)
@@ -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"
index 7a9e800c8c0da99ebf7351d6a863d9c8cec8ba7a..9a0abe9ea2e5920a78cc8e87f706f661f328c207 100644 (file)
@@ -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"
index a097b63747a1281f82ee7e1b658580bbad7c42e9..fc27b7c1884ed606823f660d9c2ec73f5059bfa5 100644 (file)
@@ -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
index 5bd88f5a445cadba27891cb62a4af897a4445710..88899d7105b2fc2b74a896c7291a017c7f080701 100644 (file)
@@ -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
index 30b923732414805ffa98ec08f7c3e409cd24596d..e4cca1eab5bba38a97fefb866aeb4a0b626a3ca3 100644 (file)
@@ -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"
index 349d0a5bf742c4c97faf980f6055118a4ea10dad..539daaa30933c5e9c8fb3fd3aac278d6cca3cba8 100644 (file)
@@ -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/"
index 7157abf5a71ed0ef153b70c50c3436a6b99c00c2..68749c0f70f595e00b322b21acee0215b7d46b51 100644 (file)
@@ -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)
index 6e8e20ba68fe5deac22fbfa09a2e5b61a49f9e2f..0e51f34086a974478e44550921495494ba9f5359 100644 (file)
@@ -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: '© <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors. Tiles courtesy of <a href="https://www.tracestrack.com/" target="_blank">Tracestrack Maps</a>'
+  }
+});
+
 L.OSM.GPS = L.OSM.TileLayer.extend({
   options: {
     url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
index 77abf634ce8a91ebb356e8a93ec7ee32f68a98d9..bde99b23e26e3c4564fb8a8ff9de0f5da3601c09 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@8.48.0":
-  version "8.48.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb"
-  integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==
+"@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.48.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155"
-  integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==
+  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.48.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"