]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5408' master
authorTom Hughes <tom@compton.nu>
Tue, 17 Dec 2024 19:12:49 +0000 (19:12 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 17 Dec 2024 19:12:49 +0000 (19:12 +0000)
176 files changed:
.erb_lint.yml [moved from .erb-lint.yml with 93% similarity]
.github/workflows/danger.yml
.github/workflows/lint.yml
.rubocop_todo.yml
Gemfile.lock
app/abilities/api_ability.rb
app/abilities/api_capability.rb
app/assets/images/browse/node.svg [new file with mode: 0644]
app/assets/images/browse/relation.svg [new file with mode: 0644]
app/assets/images/browse/way.svg [new file with mode: 0644]
app/assets/javascripts/id.js
app/assets/javascripts/index.js
app/assets/javascripts/index/note.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/osm.js.erb
app/assets/stylesheets/browse.scss [deleted file]
app/assets/stylesheets/common.scss
app/assets/stylesheets/parameters.scss
app/assets/stylesheets/screen-auto-ltr.scss [new file with mode: 0644]
app/assets/stylesheets/screen-auto-rtl.rtlcss.scss [new file with mode: 0644]
app/assets/stylesheets/screen-ltr.scss [deleted file]
app/assets/stylesheets/screen-manual-ltr.scss [new file with mode: 0644]
app/assets/stylesheets/screen-manual-rtl.rtlcss.scss [new file with mode: 0644]
app/assets/stylesheets/screen-rtl.rtlcss.scss [deleted file]
app/controllers/api/note_subscriptions_controller.rb [new file with mode: 0644]
app/controllers/api/relations_controller.rb
app/controllers/api/traces/data_controller.rb [new file with mode: 0644]
app/controllers/api/traces_controller.rb
app/controllers/application_controller.rb
app/controllers/issues_controller.rb
app/controllers/notes_controller.rb
app/controllers/oauth2_authorizations_controller.rb
app/controllers/preferences_controller.rb
app/helpers/browse_helper.rb
app/helpers/changesets_helper.rb
app/helpers/note_helper.rb
app/helpers/user_blocks_helper.rb
app/helpers/user_mailer_helper.rb
app/models/user_block.rb
app/views/browse/_containing_relation.html.erb
app/views/browse/_node.html.erb
app/views/browse/_relation.html.erb
app/views/browse/_relation_member.html.erb
app/views/browse/_way.html.erb
app/views/changesets/_elements.html.erb
app/views/issues/index.html.erb
app/views/issues/show.html.erb
app/views/layouts/_head.html.erb
app/views/layouts/_header.html.erb
app/views/layouts/site.html.erb
app/views/layouts/user_mailer.html.erb
app/views/messages/_message_summary.html.erb
app/views/messages/_sent_message_summary.html.erb
app/views/notes/new_readonly.html.erb [new file with mode: 0644]
app/views/notes/show.html.erb
app/views/preferences/edit.html.erb
app/views/preferences/show.html.erb
app/views/traces/index.html.erb
app/views/user_blocks/_block.html.erb
app/views/user_blocks/_navigation.html.erb
app/views/user_blocks/_page.html.erb
config/browse_icons.yml [new file with mode: 0644]
config/initializers/browse_icons.rb [new file with mode: 0644]
config/layers.yml [new file with mode: 0644]
config/locales/af.yml
config/locales/aln.yml
config/locales/ar.yml
config/locales/arz.yml
config/locales/ast.yml
config/locales/az.yml
config/locales/ba.yml
config/locales/be-Tarask.yml
config/locales/be.yml
config/locales/bg.yml
config/locales/bn.yml
config/locales/br.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/ce.yml
config/locales/cs.yml
config/locales/cy.yml
config/locales/da.yml
config/locales/de.yml
config/locales/diq.yml
config/locales/dsb.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fit.yml
config/locales/fr.yml
config/locales/fur.yml
config/locales/fy.yml
config/locales/ga.yml
config/locales/gcf.yml
config/locales/gd.yml
config/locales/gl.yml
config/locales/gsw.yml
config/locales/he.yml
config/locales/hi.yml
config/locales/hr.yml
config/locales/hsb.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/id.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ka.yml
config/locales/kab.yml
config/locales/kk-cyrl.yml
config/locales/km.yml
config/locales/kn.yml
config/locales/ko.yml
config/locales/ku-Latn.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/mo.yml
config/locales/mr.yml
config/locales/ms.yml
config/locales/nb.yml
config/locales/ne.yml
config/locales/nl.yml
config/locales/nn.yml
config/locales/nqo.yml
config/locales/oc.yml
config/locales/pa.yml
config/locales/pl.yml
config/locales/pnb.yml
config/locales/pt-PT.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sat.yml
config/locales/sc.yml
config/locales/scn.yml
config/locales/sco.yml
config/locales/sh.yml
config/locales/sk.yml
config/locales/skr-arab.yml
config/locales/sl.yml
config/locales/sq.yml
config/locales/sr-Latn.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/ta.yml
config/locales/te.yml
config/locales/th.yml
config/locales/tl.yml
config/locales/tr.yml
config/locales/tt.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/xmf.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/routes.rb
test/controllers/api/note_subscriptions_controller_test.rb [new file with mode: 0644]
test/controllers/api/traces/data_controller_test.rb [new file with mode: 0644]
test/controllers/api/traces_controller_test.rb
test/controllers/oauth2_authorizations_controller_test.rb
test/controllers/preferences_controller_test.rb
test/helpers/browse_helper_test.rb
test/helpers/changesets_helper_test.rb
test/helpers/note_helper_test.rb
test/system/create_note_test.rb [new file with mode: 0644]
test/system/note_comments_test.rb
yarn.lock

similarity index 93%
rename from .erb-lint.yml
rename to .erb_lint.yml
index 0c729d38f8426e5f564d2bb311ffb2f230b42b8f..dc9b39c5c5c7c94b991f1a287a37e62e1659d094 100644 (file)
@@ -20,8 +20,6 @@ linters:
         Enabled: false
       Naming/FileName:
         Enabled: false
-      Rails/OutputSafety:
-        Enabled: false
       Style/FrozenStringLiteralComment:
         Enabled: false
   SelfClosingTag:
index 67a676d87c11eea4b1879c2a715443237ea250ee..6da5e716496d05c62300b13654a44f22bbd74905 100644 (file)
@@ -24,10 +24,10 @@ jobs:
           bundler-cache: true
       - name: Create base branch
         run: |
-          git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.ref }}:danger_base
+          git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.sha }}:danger_base
       - name: Create head branch
         run: |
-          git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.ref }}:danger_head
+          git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.sha }}:danger_head
       - name: Danger
         env:
           DANGER_GITHUB_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
index 343084b0f8b6b4c52efb4e1f8887f450a7c465ff..06f6ff841bbf7c32b274beb973af64adf7f641a4 100644 (file)
@@ -36,7 +36,7 @@ jobs:
         rubygems: 3.4.10
         bundler-cache: true
     - name: Run erblint
-      run: bundle exec erblint .
+      run: bundle exec erb_lint .
   eslint:
     name: ESLint
     runs-on: ubuntu-22.04
index 7384a8d95fee5c43c197b7abebd7767f95779702..0dd79ea2aefe33503668d07edb841ffc4a518e89 100644 (file)
@@ -169,6 +169,7 @@ Rails/NotNullColumn:
 Rails/OutputSafety:
   Exclude:
     - 'app/helpers/application_helper.rb'
+    - 'app/helpers/user_mailer_helper.rb'
     - 'lib/rich_text.rb'
     - 'test/helpers/application_helper_test.rb'
 
index 5d15e550c55d1dd8bcfdf3bec73091af8ae130bf..0200f153e5f9f2f8a926e44a2af1bc07d736ec55 100644 (file)
@@ -3,29 +3,29 @@ GEM
   specs:
     aasm (5.5.0)
       concurrent-ruby (~> 1.0)
-    actioncable (7.2.2)
-      actionpack (= 7.2.2)
-      activesupport (= 7.2.2)
+    actioncable (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
       zeitwerk (~> 2.6)
-    actionmailbox (7.2.2)
-      actionpack (= 7.2.2)
-      activejob (= 7.2.2)
-      activerecord (= 7.2.2)
-      activestorage (= 7.2.2)
-      activesupport (= 7.2.2)
+    actionmailbox (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      activejob (= 7.2.2.1)
+      activerecord (= 7.2.2.1)
+      activestorage (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       mail (>= 2.8.0)
-    actionmailer (7.2.2)
-      actionpack (= 7.2.2)
-      actionview (= 7.2.2)
-      activejob (= 7.2.2)
-      activesupport (= 7.2.2)
+    actionmailer (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      actionview (= 7.2.2.1)
+      activejob (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       mail (>= 2.8.0)
       rails-dom-testing (~> 2.2)
-    actionpack (7.2.2)
-      actionview (= 7.2.2)
-      activesupport (= 7.2.2)
+    actionpack (7.2.2.1)
+      actionview (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       nokogiri (>= 1.8.5)
       racc
       rack (>= 2.2.4, < 3.2)
@@ -36,39 +36,39 @@ GEM
       useragent (~> 0.16)
     actionpack-page_caching (1.2.4)
       actionpack (>= 4.0.0)
-    actiontext (7.2.2)
-      actionpack (= 7.2.2)
-      activerecord (= 7.2.2)
-      activestorage (= 7.2.2)
-      activesupport (= 7.2.2)
+    actiontext (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      activerecord (= 7.2.2.1)
+      activestorage (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.2.2)
-      activesupport (= 7.2.2)
+    actionview (7.2.2.1)
+      activesupport (= 7.2.2.1)
       builder (~> 3.1)
       erubi (~> 1.11)
       rails-dom-testing (~> 2.2)
       rails-html-sanitizer (~> 1.6)
     active_record_union (1.3.0)
       activerecord (>= 4.0)
-    activejob (7.2.2)
-      activesupport (= 7.2.2)
+    activejob (7.2.2.1)
+      activesupport (= 7.2.2.1)
       globalid (>= 0.3.6)
-    activemodel (7.2.2)
-      activesupport (= 7.2.2)
-    activerecord (7.2.2)
-      activemodel (= 7.2.2)
-      activesupport (= 7.2.2)
+    activemodel (7.2.2.1)
+      activesupport (= 7.2.2.1)
+    activerecord (7.2.2.1)
+      activemodel (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       timeout (>= 0.4.0)
-    activerecord-import (1.8.1)
+    activerecord-import (2.0.0)
       activerecord (>= 4.2)
-    activestorage (7.2.2)
-      actionpack (= 7.2.2)
-      activejob (= 7.2.2)
-      activerecord (= 7.2.2)
-      activesupport (= 7.2.2)
+    activestorage (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      activejob (= 7.2.2.1)
+      activerecord (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       marcel (~> 1.0)
-    activesupport (7.2.2)
+    activesupport (7.2.2.1)
       base64
       benchmark (>= 0.3)
       bigdecimal
@@ -92,16 +92,16 @@ GEM
     autoprefixer-rails (10.4.19.0)
       execjs (~> 2)
     aws-eventstream (1.3.0)
-    aws-partitions (1.1004.0)
-    aws-sdk-core (3.212.0)
+    aws-partitions (1.1023.0)
+    aws-sdk-core (3.214.0)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.992.0)
       aws-sigv4 (~> 1.9)
       jmespath (~> 1, >= 1.6.1)
-    aws-sdk-kms (1.95.0)
+    aws-sdk-kms (1.96.0)
       aws-sdk-core (~> 3, >= 3.210.0)
       aws-sigv4 (~> 1.5)
-    aws-sdk-s3 (1.170.1)
+    aws-sdk-s3 (1.176.1)
       aws-sdk-core (~> 3, >= 3.210.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.5)
@@ -196,7 +196,7 @@ GEM
       sprockets (> 3.0)
       sprockets-rails
       tilt
-    date (3.4.0)
+    date (3.4.1)
     debug (1.9.2)
       irb (~> 1.10)
       reline (>= 0.3.8)
@@ -208,12 +208,12 @@ GEM
       activerecord (>= 3.0, < 9.0)
       delayed_job (>= 3.0, < 5)
     docile (1.4.1)
-    doorkeeper (5.7.1)
+    doorkeeper (5.8.1)
       railties (>= 5)
     doorkeeper-i18n (5.2.7)
       doorkeeper (>= 5.2)
-    doorkeeper-openid_connect (1.8.9)
-      doorkeeper (>= 5.5, < 5.8)
+    doorkeeper-openid_connect (1.8.10)
+      doorkeeper (>= 5.5, < 5.9)
       jwt (>= 2.5)
     drb (2.2.1)
     dry-configurable (1.2.0)
@@ -265,14 +265,14 @@ GEM
     factory_bot_rails (6.4.4)
       factory_bot (~> 6.5)
       railties (>= 5.0.0)
-    faraday (2.12.0)
-      faraday-net_http (>= 2.0, < 3.4)
+    faraday (2.12.2)
+      faraday-net_http (>= 2.0, < 3.5)
       json
       logger
     faraday-http-cache (2.5.1)
       faraday (>= 0.8)
-    faraday-net_http (3.3.0)
-      net-http
+    faraday-net_http (3.4.0)
+      net-http (>= 0.5.0)
     ffi (1.17.0)
     ffi-compiler (1.3.2)
       ffi (>= 1.15.5)
@@ -311,7 +311,7 @@ GEM
       rails-i18n
       rainbow (>= 2.2.2, < 4.0)
       terminal-table (>= 1.5.1)
-    image_optim (0.31.3)
+    image_optim (0.31.4)
       exifr (~> 1.2, >= 1.2.2)
       fspath (~> 3.0)
       image_size (>= 1.5, < 4)
@@ -327,8 +327,8 @@ GEM
     image_size (3.4.0)
     in_threads (1.6.0)
     iniparse (1.5.0)
-    io-console (0.7.2)
-    irb (1.14.1)
+    io-console (0.8.0)
+    irb (1.14.2)
       rdoc (>= 4.0.0)
       reline (>= 0.4.2)
     jbuilder (2.13.0)
@@ -339,12 +339,12 @@ GEM
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
-    json (2.8.1)
+    json (2.9.0)
     jwt (2.9.3)
       base64
     kgio (2.11.4)
-    kramdown (2.4.0)
-      rexml
+    kramdown (2.5.1)
+      rexml (>= 3.3.9)
     kramdown-parser-gfm (1.1.0)
       kramdown (~> 2.0)
     language_server-protocol (3.17.0.3)
@@ -353,7 +353,7 @@ GEM
     listen (3.9.0)
       rb-fsevent (~> 0.10, >= 0.10.3)
       rb-inotify (~> 0.9, >= 0.9.10)
-    logger (1.6.1)
+    logger (1.6.3)
     logstasher (2.1.5)
       activesupport (>= 5.2)
       request_store
@@ -370,10 +370,10 @@ GEM
     maxminddb (0.1.22)
     mini_magick (4.13.2)
     mini_mime (1.1.5)
-    mini_portile2 (2.8.7)
+    mini_portile2 (2.8.8)
     mini_racer (0.9.0)
       libv8-node (~> 18.19.0.0)
-    minitest (5.25.1)
+    minitest (5.25.4)
     minitest-focus (1.4.0)
       minitest (>= 4, < 6)
     msgpack (1.7.5)
@@ -381,9 +381,9 @@ GEM
     multi_xml (0.7.1)
       bigdecimal (~> 3.1)
     nap (1.1.0)
-    net-http (0.5.0)
+    net-http (0.6.0)
       uri
-    net-imap (0.5.1)
+    net-imap (0.5.2)
       date
       net-protocol
     net-pop (0.1.2)
@@ -393,7 +393,7 @@ GEM
     net-smtp (0.5.0)
       net-protocol
     nio4r (2.7.4)
-    nokogiri (1.16.7)
+    nokogiri (1.17.2)
       mini_portile2 (~> 2.8.2)
       racc (~> 1.4)
     oauth (1.1.0)
@@ -461,8 +461,9 @@ GEM
     pg (1.5.9)
     popper_js (2.11.8)
     progress (3.6.0)
-    pstore (0.1.3)
-    psych (5.2.0)
+    pstore (0.1.4)
+    psych (5.2.1)
+      date
       stringio
     public_suffix (6.0.1)
     puma (5.6.9)
@@ -486,20 +487,20 @@ GEM
     rackup (1.0.1)
       rack (< 3)
       webrick
-    rails (7.2.2)
-      actioncable (= 7.2.2)
-      actionmailbox (= 7.2.2)
-      actionmailer (= 7.2.2)
-      actionpack (= 7.2.2)
-      actiontext (= 7.2.2)
-      actionview (= 7.2.2)
-      activejob (= 7.2.2)
-      activemodel (= 7.2.2)
-      activerecord (= 7.2.2)
-      activestorage (= 7.2.2)
-      activesupport (= 7.2.2)
+    rails (7.2.2.1)
+      actioncable (= 7.2.2.1)
+      actionmailbox (= 7.2.2.1)
+      actionmailer (= 7.2.2.1)
+      actionpack (= 7.2.2.1)
+      actiontext (= 7.2.2.1)
+      actionview (= 7.2.2.1)
+      activejob (= 7.2.2.1)
+      activemodel (= 7.2.2.1)
+      activerecord (= 7.2.2.1)
+      activestorage (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       bundler (>= 1.15.0)
-      railties (= 7.2.2)
+      railties (= 7.2.2.1)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
@@ -508,18 +509,18 @@ GEM
       activesupport (>= 5.0.0)
       minitest
       nokogiri (>= 1.6)
-    rails-html-sanitizer (1.6.0)
+    rails-html-sanitizer (1.6.2)
       loofah (~> 2.21)
-      nokogiri (~> 1.14)
+      nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
     rails-i18n (7.0.10)
       i18n (>= 0.7, < 2)
       railties (>= 6.0.0, < 8)
     rails_param (1.3.1)
       actionpack (>= 3.2.0)
       activesupport (>= 3.2.0)
-    railties (7.2.2)
-      actionpack (= 7.2.2)
-      activesupport (= 7.2.2)
+    railties (7.2.2.1)
+      actionpack (= 7.2.2.1)
+      activesupport (= 7.2.2.1)
       irb (~> 1.13)
       rackup (>= 1.0.0)
       rake (>= 12.2)
@@ -531,30 +532,30 @@ GEM
     rb-inotify (0.11.1)
       ffi (~> 1.0)
     rchardet (1.8.0)
-    rdoc (6.7.0)
+    rdoc (6.9.1)
       psych (>= 4.0.0)
-    regexp_parser (2.9.2)
-    reline (0.5.11)
+    regexp_parser (2.9.3)
+    reline (0.6.0)
       io-console (~> 0.5)
     request_store (1.7.0)
       rack (>= 1.4)
-    rexml (3.3.9)
+    rexml (3.4.0)
     rinku (2.0.6)
     rotp (6.3.0)
     rouge (4.5.1)
     rtlcss (0.2.1)
       mini_racer (>= 0.6.3)
-    rubocop (1.68.0)
+    rubocop (1.69.2)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
       parser (>= 3.3.0.2)
       rainbow (>= 2.2.2, < 4.0)
-      regexp_parser (>= 2.4, < 3.0)
-      rubocop-ast (>= 1.32.2, < 2.0)
+      regexp_parser (>= 2.9.3, < 3.0)
+      rubocop-ast (>= 1.36.2, < 2.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (>= 2.4.0, < 3.0)
-    rubocop-ast (1.35.0)
+      unicode-display_width (>= 2.4.0, < 4.0)
+    rubocop-ast (1.37.0)
       parser (>= 3.3.1.0)
     rubocop-capybara (2.21.0)
       rubocop (~> 1.41)
@@ -563,7 +564,7 @@ GEM
     rubocop-minitest (0.36.0)
       rubocop (>= 1.61, < 2.0)
       rubocop-ast (>= 1.31.1, < 2.0)
-    rubocop-performance (1.22.1)
+    rubocop-performance (1.23.0)
       rubocop (>= 1.48.1, < 2.0)
       rubocop-ast (>= 1.31.1, < 2.0)
     rubocop-rails (2.27.0)
@@ -588,7 +589,7 @@ GEM
     sawyer (0.9.2)
       addressable (>= 2.3.5)
       faraday (>= 0.17.3, < 3)
-    securerandom (0.3.2)
+    securerandom (0.4.1)
     selenium-webdriver (4.23.0)
       base64 (~> 0.2)
       logger (~> 1.4)
@@ -630,7 +631,7 @@ GEM
       execjs (>= 0.3.0, < 3)
     thor (1.3.2)
     tilt (2.4.0)
-    timeout (0.4.2)
+    timeout (0.4.3)
     turbo-rails (2.0.11)
       actionpack (>= 6.0.0)
       railties (>= 6.0.0)
@@ -638,7 +639,7 @@ GEM
       concurrent-ruby (~> 1.0)
     unicode-display_width (2.6.0)
     uri (0.13.1)
-    useragent (0.16.10)
+    useragent (0.16.11)
     validates_email_format_of (1.8.2)
       i18n (>= 0.8.0)
       simpleidn
@@ -648,7 +649,7 @@ GEM
       addressable (>= 2.8.0)
       crack (>= 0.3.2)
       hashdiff (>= 0.4.0, < 2.0.0)
-    webrick (1.9.0)
+    webrick (1.9.1)
     websocket (1.2.11)
     websocket-driver (0.7.6)
       websocket-extensions (>= 0.1.0)
@@ -769,4 +770,4 @@ DEPENDENCIES
   zeitwerk (< 2.7)
 
 BUNDLED WITH
-   2.5.16
+   2.5.22
index 96ed9b080fa3b79f4692aab8c52c21aa1c4efe5d..c790da66ab522f1b6fcbed3baee9cfa214b5b4f1 100644 (file)
@@ -22,7 +22,7 @@ class ApiAbility
 
       if user&.active?
         can [:comment, :close, :reopen], Note
-        can [:create, :show, :update, :destroy, :data], Trace
+        can [:create, :show, :update, :destroy], Trace
         can [:details, :gpx_files], User
         can [:index, :show, :update, :update_all, :destroy], UserPreference
 
index d8be136438efded684104cbf9dfd0728b27221c8..0e953d50b11c95f2294bb2ec31f752b22a1966dc 100644 (file)
@@ -9,6 +9,7 @@ class ApiCapability
 
       if user&.active?
         can [:create, :comment, :close, :reopen], Note if scope?(token, :write_notes)
+        can [:create, :destroy], NoteSubscription if scope?(token, :write_notes)
         can [:show, :data], Trace if scope?(token, :read_gpx)
         can [:create, :update, :destroy], Trace if scope?(token, :write_gpx)
         can [:details], User if scope?(token, :read_prefs)
diff --git a/app/assets/images/browse/node.svg b/app/assets/images/browse/node.svg
new file mode 100644 (file)
index 0000000..35e5927
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 256 256">
+<rect width="240" height="240" stroke="#8888" fill="#fffc" stroke-width="16" ry="32" x="8" y="8"/>
+<circle cx="128" cy="128" r="024" fill="#bee6be" stroke="black" stroke-width="10"/>
+</svg>
diff --git a/app/assets/images/browse/relation.svg b/app/assets/images/browse/relation.svg
new file mode 100644 (file)
index 0000000..9cb52fc
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 256 256">
+<rect width="240" height="240" stroke="#8888" fill="#fffc" stroke-width="16" ry="32" x="8" y="8"/>
+<path d="M 068 068 L 196 062" stroke-width="16" stroke="#888"/>
+<path d="M 068 068 L 196 142" stroke-width="16" stroke="#888"/>
+<path d="M 068 068 L 062 196" stroke-width="16" stroke="#888"/>
+<path d="M 068 068 L 142 196" stroke-width="16" stroke="#888"/>
+<circle cx="196" cy="062" r="024" fill="black"/>
+<circle cx="196" cy="142" r="024" fill="black"/>
+<circle cx="062" cy="196" r="024" fill="black"/>
+<circle cx="142" cy="196" r="024" fill="black"/>
+<circle cx="072" cy="072" r="032" fill="#bee6be" stroke="black" stroke-width="8"/>
+</svg>
diff --git a/app/assets/images/browse/way.svg b/app/assets/images/browse/way.svg
new file mode 100644 (file)
index 0000000..98eae57
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 256 256">
+<rect width="240" height="240" stroke="#8888" fill="#fffc" stroke-width="16" ry="32" x="8" y="8"/>
+<path stroke="#888" fill="none" stroke-width="16" d="M 169 058 L 057 145 L 195 199"/>
+<circle cx="169" cy="058" r="024" fill="black"/>
+<circle cx="057" cy="145" r="024" fill="black"/>
+<circle cx="195" cy="199" r="024" fill="black"/>
+</svg>
index 706097bbaf2c4f01dcd4bfac7888ce29a11080b0..15f77b1c14dda0d3542b40979d1987cdd8e13e98 100644 (file)
@@ -28,6 +28,12 @@ document.addEventListener("DOMContentLoaded", function () {
       .containerNode(container)
       .init();
 
+    if (parent === window) {
+      // iD not opened in an iframe -> skip setting of parent  handlers
+      return;
+    }
+
+    var hashChangedAutomatically = false;
     id.map().on("move.embed", parent.$.throttle(250, function () {
       if (id.inIntro()) return;
       var zoom = ~~id.map().zoom(),
@@ -40,14 +46,12 @@ document.addEventListener("DOMContentLoaded", function () {
       // https://gist.github.com/jfirebaugh/5439412
       var hash = parent.OSM.formatHash(llz);
       if (hash !== parent.location.hash) {
+        hashChangedAutomatically = true;
         parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash));
       }
     }));
 
-    parent.$("body").on("click", "a.set_position", function (e) {
-      e.preventDefault();
-      var data = parent.$(this).data();
-
+    function goToLocation(data) {
       // 0ms timeout to avoid iframe JS context weirdness.
       // https://gist.github.com/jfirebaugh/5439412
       setTimeout(function () {
@@ -55,6 +59,22 @@ document.addEventListener("DOMContentLoaded", function () {
           [data.lon, data.lat],
           Math.max(data.zoom || 15, 13));
       }, 0);
+    }
+
+    parent.$("body").on("click", "a.set_position", function (e) {
+      e.preventDefault();
+      var data = parent.$(this).data();
+      goToLocation(data);
+    });
+
+    parent.addEventListener("hashchange", function (e) {
+      if (hashChangedAutomatically) {
+        hashChangedAutomatically = false;
+        return;
+      }
+      e.preventDefault();
+      var data = parent.OSM.mapParams();
+      goToLocation(data);
     });
   }
 });
index c419f93216b44507f4aed454b01792feba3744e9..56495b31a31c87fd18ca8b864ac492b84f1f0240 100644 (file)
@@ -207,7 +207,7 @@ $(document).ready(function () {
   if (OSM.MATOMO) {
     map.on("layeradd", function (e) {
       if (e.layer.options) {
-        var goal = OSM.MATOMO.goals[e.layer.options.keyid];
+        var goal = OSM.MATOMO.goals[e.layer.options.layerId];
 
         if (goal) {
           $("body").trigger("matomogoal", goal);
@@ -255,20 +255,10 @@ $(document).ready(function () {
     });
 
     function sendRemoteEditCommand(url, callback) {
-      var iframe = $("<iframe>");
-      var timeoutId = setTimeout(function () {
-        alert(I18n.t("site.index.remote_failed"));
-        iframe.remove();
-      }, 5000);
-
-      iframe
-        .hide()
-        .appendTo("body")
-        .attr("src", url)
-        .on("load", function () {
-          clearTimeout(timeoutId);
-          iframe.remove();
-          if (callback) callback();
+      fetch(url, { mode: "no-cors", signal: AbortSignal.timeout(5000) })
+        .then(callback)
+        .catch(function () {
+          alert(I18n.t("site.index.remote_failed"));
         });
     }
 
index 24d24f8aef082ec3d17a649ec7c2ad328fcdc1ae..8687321c92d3bce115d02c6b8973ffd01ebd9124 100644 (file)
@@ -37,31 +37,35 @@ OSM.Note = function (map) {
   };
 
   function initialize(path, id) {
-    content.find("button[type=submit]").on("click", function (e) {
+    content.find("button[name]").on("click", function (e) {
       e.preventDefault();
       var data = $(e.target).data();
-      var form = e.target.form;
-
-      $(form).find("button[type=submit]").prop("disabled", true);
-
-      $.ajax({
+      var name = $(e.target).attr("name");
+      var ajaxSettings = {
         url: data.url,
         type: data.method,
         oauth: true,
-        data: { text: $(form.text).val() },
-        success: function () {
-          OSM.loadSidebarContent(path, function () {
+        success: () => {
+          OSM.loadSidebarContent(path, () => {
             initialize(path, id);
             moveToNote();
           });
         },
-        error: function (xhr) {
-          $(form).find("#comment-error")
+        error: (xhr) => {
+          content.find("#comment-error")
             .text(xhr.responseText)
-            .prop("hidden", false);
-          updateButtons(form);
+            .prop("hidden", false)
+            .get(0).scrollIntoView({ block: "nearest" });
+          updateButtons();
         }
-      });
+      };
+
+      if (name !== "subscribe" && name !== "unsubscribe" && name !== "reopen") {
+        ajaxSettings.data = { text: $("textarea").val() };
+      }
+
+      content.find("button[name]").prop("disabled", true);
+      $.ajax(ajaxSettings);
     });
 
     content.find("textarea").on("input", function (e) {
@@ -82,14 +86,16 @@ OSM.Note = function (map) {
     }
   }
 
-  function updateButtons(form) {
-    $(form).find("button[type=submit]").prop("disabled", false);
-    if ($(form.text).val() === "") {
-      $(form.close).text($(form.close).data("defaultActionText"));
-      $(form.comment).prop("disabled", true);
+  function updateButtons() {
+    var resolveButton = content.find("button[name='close']");
+    var commentButton = content.find("button[name='comment']");
+
+    content.find("button[name]").prop("disabled", false);
+    if (content.find("textarea").val() === "") {
+      resolveButton.text(resolveButton.data("defaultActionText"));
+      commentButton.prop("disabled", true);
     } else {
-      $(form.close).text($(form.close).data("commentActionText"));
-      $(form.comment).prop("disabled", false);
+      resolveButton.text(resolveButton.data("commentActionText"));
     }
   }
 
index dc692a4a5d500f0ffbba724a8309769431e7efe8..35b958c7aaa097652ccebf1f392087c8a31801b7 100644 (file)
@@ -29,7 +29,7 @@ L.OSM.layers = function (options) {
 
       map.whenReady(function () {
         var miniMap = L.map(mapContainer[0], { attributionControl: false, zoomControl: false, keyboard: false })
-          .addLayer(new layer.constructor({ apikey: layer.options.apikey }));
+          .addLayer(new layer.constructor(layer.options));
 
         miniMap.dragging.disable();
         miniMap.touchZoom.disable();
index a907de29581c548d004038f6b61cb2520aaebf93..02ed318acffc89eded8d0dccad99a682c8e2d05f 100644 (file)
@@ -15,107 +15,32 @@ L.OSM.Map = L.Map.extend({
   initialize: function (id, options) {
     L.Map.prototype.initialize.call(this, id, options);
 
-    var copyright_link = $("<a>", {
-      href: "/copyright",
-      text: I18n.t("javascripts.map.openstreetmap_contributors")
-    }).prop("outerHTML");
-    var copyright = I18n.t("javascripts.map.copyright_text", { copyright_link: copyright_link });
-
-    var donate = $("<a>", {
-      "href": "https://supporting.openstreetmap.org",
-      "class": "donate-attr",
-      "text": I18n.t("javascripts.map.make_a_donation")
-    }).prop("outerHTML");
-
-    var terms = $("<a>", {
-      href: "https://wiki.osmfoundation.org/wiki/Terms_of_Use",
-      text: I18n.t("javascripts.map.website_and_api_terms")
-    }).prop("outerHTML");
-
-    var cyclosm_link = $("<a>", {
-      href: "https://www.cyclosm.org",
-      target: "_blank",
-      text: I18n.t("javascripts.map.cyclosm_name")
-    }).prop("outerHTML");
-    var osm_france_link = $("<a>", {
-      href: "https://openstreetmap.fr/",
-      target: "_blank",
-      text: I18n.t("javascripts.map.osm_france")
-    }).prop("outerHTML");
-    var cyclosm = I18n.t("javascripts.map.cyclosm_credit", { cyclosm_link: cyclosm_link, osm_france_link: osm_france_link });
-
-    var thunderforest_link = $("<a>", {
-      href: "https://www.thunderforest.com/",
-      target: "_blank",
-      text: I18n.t("javascripts.map.andy_allan")
-    }).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 hotosm_link = $("<a>", {
-      href: "https://www.hotosm.org/",
-      target: "_blank",
-      text: I18n.t("javascripts.map.hotosm_name")
-    }).prop("outerHTML");
-    var hotosm = I18n.t("javascripts.map.hotosm_credit", { hotosm_link: hotosm_link, osm_france_link: osm_france_link });
-
     this.baseLayers = [];
 
-    this.baseLayers.push(new L.OSM.Mapnik({
-      attribution: copyright + " &hearts; " + donate + ". " + terms,
-      code: "M",
-      keyid: "mapnik",
-      name: I18n.t("javascripts.map.base.standard")
-    }));
-
-    this.baseLayers.push(new L.OSM.CyclOSM({
-      attribution: copyright + ". " + cyclosm + ". " + terms,
-      code: "Y",
-      keyid: "cyclosm",
-      name: I18n.t("javascripts.map.base.cyclosm")
-    }));
-
-    if (OSM.THUNDERFOREST_KEY) {
-      this.baseLayers.push(new L.OSM.CycleMap({
-        attribution: copyright + ". " + thunderforest + ". " + terms,
-        apikey: OSM.THUNDERFOREST_KEY,
-        code: "C",
-        keyid: "cyclemap",
-        name: I18n.t("javascripts.map.base.cycle_map")
-      }));
-
-      this.baseLayers.push(new L.OSM.TransportMap({
-        attribution: copyright + ". " + thunderforest + ". " + terms,
-        apikey: OSM.THUNDERFOREST_KEY,
-        code: "T",
-        keyid: "transportmap",
-        name: I18n.t("javascripts.map.base.transport_map")
-      }));
-    }
+    for (const layerDefinition of OSM.LAYER_DEFINITIONS) {
+      if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue;
+
+      let layerConstructor = L.OSM.TileLayer;
+      const layerOptions = {};
+
+      for (const [property, value] of Object.entries(layerDefinition)) {
+        if (property === "credit") {
+          layerOptions.attribution = makeAttribution(value);
+        } else if (property === "nameId") {
+          layerOptions.name = I18n.t(`javascripts.map.base.${value}`);
+        } else if (property === "apiKeyId") {
+          layerOptions.apikey = OSM[value];
+        } else if (property === "leafletOsmId") {
+          layerConstructor = L.OSM[value];
+        } else {
+          layerOptions[property] = value;
+        }
+      }
 
-    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")
-      }));
+      const layer = new layerConstructor(layerOptions);
+      this.baseLayers.push(layer);
     }
 
-    this.baseLayers.push(new L.OSM.HOT({
-      attribution: copyright + ". " + hotosm + ". " + terms,
-      code: "H",
-      keyid: "hot",
-      name: I18n.t("javascripts.map.base.hot")
-    }));
-
     this.noteLayer = new L.FeatureGroup();
     this.noteLayer.options = { code: "N" };
 
@@ -132,6 +57,50 @@ L.OSM.Map = L.Map.extend({
         this.setMaxZoom(event.layer.options.maxZoom);
       }
     });
+
+    function makeAttribution(credit) {
+      let attribution = "";
+
+      attribution += I18n.t("javascripts.map.copyright_text", {
+        copyright_link: $("<a>", {
+          href: "/copyright",
+          text: I18n.t("javascripts.map.openstreetmap_contributors")
+        }).prop("outerHTML")
+      });
+
+      attribution += credit.donate ? " &hearts; " : ". ";
+      attribution += makeCredit(credit);
+      attribution += ". ";
+
+      attribution += $("<a>", {
+        href: "https://wiki.osmfoundation.org/wiki/Terms_of_Use",
+        text: I18n.t("javascripts.map.website_and_api_terms")
+      }).prop("outerHTML");
+
+      return attribution;
+    }
+
+    function makeCredit(credit) {
+      const children = {};
+      for (const childId in credit.children) {
+        children[childId] = makeCredit(credit.children[childId]);
+      }
+      const text = I18n.t(`javascripts.map.${credit.id}`, children);
+      if (credit.href) {
+        const link = $("<a>", {
+          href: credit.href,
+          text: text
+        });
+        if (credit.donate) {
+          link.addClass("donate-attr");
+        } else {
+          link.attr("target", "_blank");
+        }
+        return link.prop("outerHTML");
+      } else {
+        return text;
+      }
+    }
   },
 
   updateLayers: function (layerParam) {
@@ -163,7 +132,7 @@ L.OSM.Map = L.Map.extend({
   getMapBaseLayerId: function () {
     var baseLayerId;
     this.eachLayer(function (layer) {
-      if (layer.options && layer.options.keyid) baseLayerId = layer.options.keyid;
+      if (layer.options && layer.options.layerId) baseLayerId = layer.options.layerId;
     });
     return baseLayerId;
   },
index e08528f845da2b2cee72780d3197720fbc42ab02..e9c09c79f9ae995575030ad9231167c64983f974 100644 (file)
@@ -1,5 +1,6 @@
 //= depend_on settings.yml
 //= depend_on settings.local.yml
+//= depend_on layers.yml
 //= depend_on key.yml
 //= require qs/dist/qs
 
@@ -30,6 +31,7 @@ OSM = {
   TRACESTRACK_KEY:         <%= Settings.tracestrack_key.to_json %>,
 <% end %>
 
+  LAYER_DEFINITIONS:       <%= YAML.load_file(Rails.root.join("config/layers.yml")).to_json %>,
   LAYERS_WITH_MAP_KEY:     <%= YAML.load_file(Rails.root.join("config/key.yml")).keys.to_json %>,
 
   MARKER_GREEN:            <%= image_path("marker-green.png").to_json %>,
diff --git a/app/assets/stylesheets/browse.scss b/app/assets/stylesheets/browse.scss
deleted file mode 100644 (file)
index 2dac602..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-$map-sidebar-icons: (
-
-  /* Nodes (and ways as areas) */
-
-  ".aeroway.aerodrome": ("filename": "aerodrome.p.16.png"),
-  
-  ".amenity.atm": ("filename": "amenity_atm.16.png", "invert": true),
-  ".amenity.bank": ("filename": "amenity_bank.16.png", "invert": true),
-  ".amenity.bar": ("filename": "amenity_bar.16.png", "invert": true),
-  ".amenity.bench": ("filename": "amenity_bench.16.png", "invert": true),
-  ".amenity.biergarten": ("filename": "amenity_biergarten.16.png", "invert": true),
-  ".amenity.bicycle_parking": ("filename": "amenity_bicycle_parking.16.png"),
-  ".amenity.bicycle_rental": ("filename": "transport_rental_bicycle.16.png"),
-  ".amenity.bus_station": ("filename": "bus_station.n.16.png"),
-  ".amenity.cafe": ("filename": "amenity_cafe.16.png", "invert": true),
-  ".amenity.car_rental": ("filename": "transport_rental_car.16.png"),
-  ".amenity.car_sharing": ("filename": "car_share.p.16.png"),
-  ".amenity.childcare": ("filename": "amenity_childcare.p.16.png"),
-  ".amenity.cinema": ("filename": "amenity_cinema.16.png", "invert": true),
-  ".amenity.courthouse": ("filename": "amenity_courthouse.16.png", "invert": true),
-  ".amenity.dentist": ("filename": "amenity_dentist.16.png"),
-  ".amenity.doctors": ("filename": "amenity_doctors.16.png"),
-  ".amenity.drinking_water": ("filename": "amenity_drinking_water.16.png", "invert": true),
-  ".amenity.fast_food": ("filename": "amenity_fast_food.16.png", "invert": true),
-  ".amenity.fire_station": ("filename": "amenity_fire_station.16.png", "invert": true),
-  ".amenity.fuel": ("filename": "amenity_fuel.16.png"),
-  ".amenity.hospital": ("filename": "amenity_hospital.16.png"),
-  ".amenity.kindergarten": ("filename": "amenity_childcare.p.16.png"),
-  ".amenity.library": ("filename": "library.p.16.png", "invert": true),
-  ".amenity.nightclub": ("filename": "amenity_nightclub.16.png", "invert": true),
-  ".amenity.parking": ("filename": "parking.p.16.png"),
-  ".amenity.pharmacy": ("filename": "amenity_pharmacy.16.png"),
-  ".amenity.place_of_worship": ("filename": "amenity_place_of_worship.16.png", "invert": true),
-  ".amenity.police": ("filename": "amenity_police.16.png", "invert": true),
-  ".amenity.post_box": ("filename": "post_box.p.16.png", "invert": true),
-  ".amenity.post_office": ("filename": "post_office.p.16.png", "invert": true),
-  ".amenity.prison": ("filename": "amenity_prison.16.png", "invert": true),
-  ".amenity.pub": ("filename": "amenity_pub.16.png", "invert": true),
-  ".amenity.restaurant": ("filename": "amenity_restaurant.16.png", "invert": true),
-  ".amenity.recycling": ("filename": "amenity_recycling.16.png", "invert": true),
-  ".amenity.school": ("filename": "education_school.p.16.png"),
-  ".amenity.shelter": ("filename": "shelter2.p.16.png"),
-  ".amenity.taxi": ("filename": "amenity_taxi.16.png"),
-  ".amenity.telephone": ("filename": "telephone.p.16.png", "invert": true),
-  ".amenity.theatre": ("filename": "amenity_theatre.16.png", "invert": true),
-  ".amenity.toilets": ("filename": "amenity_toilets.16.png", "invert": true),
-  ".amenity.townhall": ("filename": "amenity_townhall.16.png", "invert": true),
-  ".amenity.university": ("filename": "education_university.p.16.png"),
-  ".amenity.veterinary": ("filename": "health_veterinary.p.16.png"),
-  ".amenity.waste_basket": ("filename": "amenity_waste_basket.16.png", "invert": true),
-
-  ".barrier.gate": ("filename": "gate2.p.16.png", "invert": true),
-
-  ".highway.bus_stop": ("filename": "highway_bus_stop.16.png"),
-  ".highway.mini_roundabout": ("filename": "mini_round.p.16.png"),
-  ".highway.traffic_signals": ("filename": "traffic_light.png", "invert": true),
-  ".highway.turning_circle": ("filename": "turning_circle.p.16.png"),
-
-  ".historic.archaeological_site": ("filename": "historic_archaeological_site.16.png", "invert": true),
-  ".historic.castle": ("filename": "tourist_castle.p.16.png", "invert": true),
-  ".historic.memorial": ("filename": "historic_memorial.16.png", "invert": true),
-  ".historic.monument": ("filename": "historic_monument.16.png", "invert": true),
-  ".historic.ruins": ("filename": "tourist_ruins.p.16.png", "invert": true),
-  ".historic.wreck": ("filename": "tourist_wreck.p.16.png", "invert": true),
-
-  ".man_made.lighthouse": ("filename": "man_made_lighthouse.16.png"),
-  ".man_made.water_tower": ("filename": "man_made_water_tower.16.png", "invert": true),
-  ".man_made.windmill": ("filename": "man_made_windmill.16.png", "invert": true),
-
-  ".natural.tree": ("filename": "tree.p.16.png"),
-
-  ".office.diplomatic": ("filename": "office_diplomatic.16.png"),
-  ".office.estate_agent": ("filename": "shop_estateagent.16.png"),
-
-  ".railway.halt": ("filename": "halt.p.16.png"),
-  ".railway.station": ("filename": "station.p.16.png"),
-  ".railway.level_crossing": ("filename": "level_crossing.p.16.png", "invert": true),
-
-  ".shop": ("filename": "shop_convenience.p.16.png"),
-  ".shop.alcohol": ("filename": "shop_alcohol.16.png"),
-  ".shop.bakery": ("filename": "shop_bakery.16.png"),
-  ".shop.bicycle": ("filename": "shop_bicycle.16.png"),
-  ".shop.books": ("filename": "shop_books.16.png"),
-  ".shop.butcher": ("filename": "shop_butcher.p.16.png"),
-  ".shop.clothes": ("filename": "shop_clothes.16.png"),
-  ".shop.car_parts": ("filename": "shop_car_parts.16.png"),
-  ".shop.car_repair": ("filename": "shop_car_repair.16.png"),
-  ".shop.convenience": ("filename": "shop_convenience.p.16.png"),
-  ".shop.doityourself": ("filename": "shop_doityourself.16.png"),
-  ".shop.electronics": ("filename": "shop_electronics.16.png"),
-  ".shop.estate_agent": ("filename": "shop_estateagent.16.png"),
-  ".shop.fashion": ("filename": "shop_clothes.16.png"),
-  ".shop.florist": ("filename": "shop_florist.16.png"),
-  ".shop.furniture": ("filename": "shop_furniture.16.png"),
-  ".shop.garden_centre": ("filename": "shop_florist.16.png"),
-  ".shop.gift": ("filename": "shop_gift.16.png"),
-  ".shop.greengrocer": ("filename": "shop_greengrocer.p.16.png"),
-  ".shop.hardware": ("filename": "shop_doityourself.16.png"),
-  ".shop.hairdresser": ("filename": "shop_hairdresser.16.png"),
-  ".shop.jewelry": ("filename": "shop_jewelry.16.png"),
-  ".shop.mobile_phone": ("filename": "shop_mobile_phone.16.png"),
-  ".shop.optician": ("filename": "shop_optician.16.png"),
-  ".shop.pet": ("filename": "shop_pet.16.png"),
-  ".shop.seafood": ("filename": "shop_seafood.16.png"),
-  ".shop.shoes": ("filename": "shop_shoes.16.png"),
-  ".shop.supermarket": ("filename": "shop_supermarket.p.16.png"),
-
-  ".tourism.alpine_hut": ("filename": "tourism_alpine_hut.16.png"),
-  ".tourism.camp_site": ("filename": "tourism_camp_site.16.png"),
-  ".tourism.caravan_site": ("filename": "tourism_caravan_site.16.png"),
-  ".tourism.hostel": ("filename": "tourism_hostel.16.png"),
-  ".tourism.hotel": ("filename": "tourism_hotel.16.png"),
-  ".tourism.motel": ("filename": "tourism_motel.16.png"),
-  ".tourism.museum": ("filename": "tourism_museum.16.png", "invert": true),
-  ".tourism.picnic_site": ("filename": "tourism_picnic_site.16.png", "invert": true),
-  ".tourism.viewpoint": ("filename": "view_point.p.16.png", "invert": true),
-  ".tourism.wilderness_hut": ("filename": "tourism_wilderness_hut.16.png"),
-
-  /* Ways */
-
-  ".aeroway.runway": ("filename": "runway.20.png"),
-  ".aeroway.taxiway": ("filename": "taxiway.20.png"),
-
-  ".barrier.wall": ("filename": "wall.20.png"),
-
-  ".building": ("filename": "building.png"),
-
-  ".highway.bridleway": ("filename": "bridleway.20.png"),
-  ".highway.cycleway": ("filename": "cycleway.20.png"),
-  ".highway.footway": ("filename": "footway.20.png"),
-  ".highway.motorway": ("filename": "motorway.20.png"),
-  ".highway.motorway_link": ("filename": "motorway.20.png"),
-  ".highway.path": ("filename": "path.20.png"),
-  ".highway.pedestrian": ("filename": "service.20.png"),
-  ".highway.primary": ("filename": "primary.20.png"),
-  ".highway.primary_link": ("filename": "primary.20.png"),
-  ".highway.residential": ("filename": "unclassified.20.png"),
-  ".highway.secondary": ("filename": "secondary.20.png"),
-  ".highway.secondary_link": ("filename": "secondary.20.png"),
-  ".highway.service": ("filename": "service.20.png"),
-  ".highway.tertiary": ("filename": "tertiary.20.png"),
-  ".highway.track": ("filename": "track.20.png"),
-  ".highway.trunk": ("filename": "trunk.20.png"),
-  ".highway.trunk_link": ("filename": "trunk.20.png"),
-  ".highway.unclassified": ("filename": "unclassified.20.png"),
-
-  ".landuse.brownfield": ("filename": "brownfield.png"),
-  ".landuse.cemetery": ("filename": "cemetery.png"),
-  ".landuse.commercial": ("filename": "commercial.png"),
-  ".landuse.farmland": ("filename": "farmland.png"),
-  ".landuse.farmyard": ("filename": "farmyard.png"),
-  ".landuse.forest": ("filename": "forest.png"),
-  ".landuse.grass": ("filename": "grass.png"),
-  ".landuse.industrial": ("filename": "industrial.png"),
-  ".landuse.meadow": ("filename": "meadow.png"),
-  ".landuse.military": ("filename": "military.png"),
-  ".landuse.residential": ("filename": "residential.png"),
-  ".landuse.retail": ("filename": "retail.png"),
-  ".landuse.tourism": ("filename": "tourism.png"),
-
-  ".leisure.golf_course": ("filename": "golf.png"),
-  ".leisure.park": ("filename": "park.png"),
-  ".leisure.picnic_table": ("filename": "tourism_picnic_site.16.png", "invert": true),
-  ".leisure.playground": ("filename": "leisure_playground.16.png", "invert": true),
-  ".leisure.pitch": ("filename": "pitch.png"),
-  ".leisure.nature_reserve": ("filename": "reserve.png"),
-  ".leisure.water_park": ("filename": "leisure_water_park.16.png", "invert": true),
-
-  ".natural.grassland": ("filename": "grassland.png"),
-  ".natural.heath": ("filename": "heathland.png"),
-  ".natural.scrub": ("filename": "scrub.png"),
-  ".natural.water": ("filename": "lake.png"),
-  ".natural.wood": ("filename": "wood.png"),
-
-  ".railway.light_rail": ("filename": "light_rail.20.png"),
-  ".railway.rail": ("filename": "rail.20.png"),
-  ".railway.subway": ("filename": "subway.20.png"),
-  ".railway.tram": ("filename": "tram.20.png"),
-
-)
index 027e6e6a34f08724d9e9786d74dae511de477305..323f60e08c192a91d2934f5e2309c1841591f357 100644 (file)
@@ -1,6 +1,5 @@
 @use "sass:map";
 @import "parameters";
-@import "browse";
 @import "bootstrap";
 @import "rails_bootstrap_forms";
 
@@ -10,6 +9,7 @@
 
 body {
   font-size: $typeheight;
+  --dark-mode-map-filter: brightness(.8);
 }
 
 time[title] {
@@ -217,6 +217,10 @@ body.small-nav {
     .search_forms {
       display: block;
     }
+
+    .username {
+      max-width: unset;
+    }
   }
 
   #sidebar .search_forms {
@@ -502,11 +506,6 @@ body.small-nav {
 }
 
 @include color-mode(dark) {
-  .leaflet-tile-container .leaflet-tile,
-  .mapkey-table-entry td:first-child > * {
-    filter: brightness(.8);
-  }
-
   .leaflet-container .leaflet-control-attribution a {
     color: var(--bs-link-color);
   }
@@ -516,6 +515,27 @@ body.small-nav {
   }
 }
 
+@mixin dark-map-color-scheme {
+  .leaflet-tile-container,
+  .mapkey-table-entry td:first-child > * {
+    filter: var(--dark-mode-map-filter);
+  }
+
+  .leaflet-tile-container .leaflet-tile {
+    filter: none;
+  }
+}
+
+body[data-map-theme="dark"] {
+  @include dark-map-color-scheme;
+}
+
+@include color-mode(dark) {
+  body:not([data-map-theme]) {
+    @include dark-map-color-scheme;
+  }
+}
+
 /* Rules for attribution text under the main map shown on printouts */
 
 .donate-attr { color: darken($green, 10%) !important; }
@@ -932,13 +952,18 @@ div.secondary-actions {
   }
 }
 
-/* Rules for block pages */
+/* Rules for tables with usernames */
 
+.messages-table .username,
 #block_list .username {
   max-width: 20em;
 }
 
-/* Rules for tabs inside secondary background sections */
+/* Rules for navigation tabs */
+
+.nav-tabs .username {
+  max-width: 20em;
+}
 
 .bg-body-secondary .nav-tabs {
   --bs-border-color: var(--bs-secondary-border-subtle);
@@ -961,30 +986,20 @@ img.trace_image {
 
 /* Rules for map sidebar icons */
 
-.browse-section {
-  .node::before,
-  .way::before,
-  .relation::before {
-    display: inline-block;
-    width: 25px;
-    margin-left: -25px;
-  }
+.browse-section .browse-element-list {
+  line-height: 1.25rem;
 
-  .node, .way, .relation {
-    margin-left: 25px;
+  .browse-icon {
+    height: 1.25rem;
   }
-}
 
-@each $class, $item in $map-sidebar-icons {
-  .browse-section #{$class}::before {
-    content: image-url('browse/#{map.get($item, "filename")}');
+  .d-flex > .browse-icon {
+    height: max(20px, 1.25rem);
   }
 
-  @if map.get($item, "invert") {
-    @include color-mode(dark) {
-      .browse-section #{$class}::before {
-        filter: invert(.8) hue-rotate(180deg);
-      }
+  @include color-mode(dark) {
+    .browse-icon-invertible {
+      filter: invert(.8) hue-rotate(180deg);
     }
   }
 }
index 28bf569016a607d81b4aa01b994226ca8366845e..07549d69bb33e939238f98e6ef6d1e44eea4a816 100644 (file)
@@ -20,4 +20,3 @@ $table-border-factor: .1;
 $list-group-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);
 
 $enable-negative-margins: true;
-$color-mode-type: media-query;
diff --git a/app/assets/stylesheets/screen-auto-ltr.scss b/app/assets/stylesheets/screen-auto-ltr.scss
new file mode 100644 (file)
index 0000000..89e3159
--- /dev/null
@@ -0,0 +1,3 @@
+@use "common" with (
+  $color-mode-type: media-query
+);
diff --git a/app/assets/stylesheets/screen-auto-rtl.rtlcss.scss b/app/assets/stylesheets/screen-auto-rtl.rtlcss.scss
new file mode 100644 (file)
index 0000000..89e3159
--- /dev/null
@@ -0,0 +1,3 @@
+@use "common" with (
+  $color-mode-type: media-query
+);
diff --git a/app/assets/stylesheets/screen-ltr.scss b/app/assets/stylesheets/screen-ltr.scss
deleted file mode 100644 (file)
index c525060..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@import "common";
diff --git a/app/assets/stylesheets/screen-manual-ltr.scss b/app/assets/stylesheets/screen-manual-ltr.scss
new file mode 100644 (file)
index 0000000..00f65f7
--- /dev/null
@@ -0,0 +1,3 @@
+@use "common" with (
+  $color-mode-type: data
+);
diff --git a/app/assets/stylesheets/screen-manual-rtl.rtlcss.scss b/app/assets/stylesheets/screen-manual-rtl.rtlcss.scss
new file mode 100644 (file)
index 0000000..00f65f7
--- /dev/null
@@ -0,0 +1,3 @@
+@use "common" with (
+  $color-mode-type: data
+);
diff --git a/app/assets/stylesheets/screen-rtl.rtlcss.scss b/app/assets/stylesheets/screen-rtl.rtlcss.scss
deleted file mode 100644 (file)
index c525060..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@import "common";
diff --git a/app/controllers/api/note_subscriptions_controller.rb b/app/controllers/api/note_subscriptions_controller.rb
new file mode 100644 (file)
index 0000000..c416dd8
--- /dev/null
@@ -0,0 +1,27 @@
+module Api
+  class NoteSubscriptionsController < ApiController
+    before_action :check_api_writable
+    before_action :authorize
+
+    authorize_resource
+
+    def create
+      note_id = params[:note_id].to_i
+      note = Note.find(note_id)
+      note.subscribers << current_user
+    rescue ActiveRecord::RecordNotFound
+      report_error "Note #{note_id} not found.", :not_found
+    rescue ActiveRecord::RecordNotUnique
+      report_error "You are already subscribed to note #{note_id}.", :conflict
+    end
+
+    def destroy
+      note_id = params[:note_id].to_i
+      note = Note.find(note_id)
+      count = note.subscriptions.where(:user => current_user).delete_all
+      report_error "You are not subscribed to note #{note_id}.", :not_found if count.zero?
+    rescue ActiveRecord::RecordNotFound
+      report_error "Note #{note_id} not found.", :not_found
+    end
+  end
+end
index b237f8bf85e09bec86fb1fcbfc6658e765b126f6..a9b85de7dc3f68d40fa84cab7b782b0766fda9e9 100644 (file)
@@ -48,8 +48,6 @@ module Api
     end
 
     def update
-      logger.debug request.raw_post
-
       relation = Relation.find(params[:id])
       new_relation = Relation.from_xml(request.raw_post)
 
diff --git a/app/controllers/api/traces/data_controller.rb b/app/controllers/api/traces/data_controller.rb
new file mode 100644 (file)
index 0000000..e04931c
--- /dev/null
@@ -0,0 +1,36 @@
+module Api
+  module Traces
+    class DataController < ApiController
+      before_action :set_locale
+      before_action :authorize
+
+      authorize_resource :trace
+
+      before_action :offline_error
+
+      def show
+        trace = Trace.visible.find(params[:trace_id])
+
+        if trace.public? || trace.user == current_user
+          if request.format == Mime[:xml]
+            send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
+          elsif request.format == Mime[:gpx]
+            send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
+          elsif trace.file.attached?
+            redirect_to rails_blob_path(trace.file, :disposition => "attachment")
+          else
+            send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
+          end
+        else
+          head :forbidden
+        end
+      end
+
+      private
+
+      def offline_error
+        report_error "GPX files offline for maintenance", :service_unavailable if Settings.status == "gpx_offline"
+      end
+    end
+  end
+end
index 76dfb3a2dc1bd4b6d57728b17b3f074894ef88cd..e91261058efe05db7500626deacec804f562d581 100644 (file)
@@ -6,7 +6,7 @@ module Api
 
     authorize_resource
 
-    before_action :offline_error, :only => [:create, :destroy, :data]
+    before_action :offline_error, :only => [:create, :destroy]
     skip_around_action :api_call_timeout, :only => :create
 
     def show
@@ -71,24 +71,6 @@ module Api
       end
     end
 
-    def data
-      trace = Trace.visible.find(params[:id])
-
-      if trace.public? || trace.user == current_user
-        if request.format == Mime[:xml]
-          send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
-        elsif request.format == Mime[:gpx]
-          send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
-        elsif trace.file.attached?
-          redirect_to rails_blob_path(trace.file, :disposition => "attachment")
-        else
-          send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
-        end
-      else
-        head :forbidden
-      end
-    end
-
     private
 
     def do_create(file, tags, description, visibility)
index 7ce804ced01af000ada0560ee4f27f99046618ac..32b53bad71c3f431d79234d65e354f6cafcf13c9 100644 (file)
@@ -21,7 +21,7 @@ class ApplicationController < ActionController::Base
 
   def self.allow_thirdparty_images(**options)
     content_security_policy(options) do |policy|
-      policy.img_src("*")
+      policy.img_src("*", :data)
     end
   end
 
@@ -253,9 +253,7 @@ class ApplicationController < ActionController::Base
   def map_layout
     policy = request.content_security_policy.clone
 
-    policy.child_src(*policy.child_src, "http://127.0.0.1:8111", "https://127.0.0.1:8112")
-    policy.frame_src(*policy.frame_src, "http://127.0.0.1:8111", "https://127.0.0.1:8112")
-    policy.connect_src(*policy.connect_src, Settings.nominatim_url, Settings.overpass_url, Settings.fossgis_osrm_url, Settings.graphhopper_url, Settings.fossgis_valhalla_url)
+    policy.connect_src(*policy.connect_src, "http://127.0.0.1:8111", Settings.nominatim_url, Settings.overpass_url, Settings.fossgis_osrm_url, Settings.graphhopper_url, Settings.fossgis_valhalla_url)
     policy.form_action(*policy.form_action, "render.openstreetmap.org")
     policy.style_src(*policy.style_src, :unsafe_inline)
 
@@ -281,7 +279,15 @@ class ApplicationController < ActionController::Base
     end
   end
 
-  helper_method :preferred_editor
+  def preferred_color_scheme(subject)
+    if current_user
+      current_user.preferences.find_by(:k => "#{subject}.color_scheme")&.v || "auto"
+    else
+      "auto"
+    end
+  end
+
+  helper_method :preferred_editor, :preferred_color_scheme
 
   def update_totp
     if Settings.key?(:totp_key)
index fe900d627e6e4cc4744e71a2a845798fb05c314e..5cedb3c705b5eeaeb42647057cb8de3c3cec7c8b 100644 (file)
@@ -18,8 +18,8 @@ class IssuesController < ApplicationController
     @title = t ".title"
 
     @issue_types = []
-    @issue_types.push("Note", "User") if current_user.moderator?
-    @issue_types.push("DiaryEntry", "DiaryComment", "User") if current_user.administrator?
+    @issue_types |= %w[Note User] if current_user.moderator?
+    @issue_types |= %w[DiaryEntry DiaryComment User] if current_user.administrator?
 
     @users = User.joins(:roles).where(:user_roles => { :role => current_user.roles.map(&:role) }).distinct
     @issues = Issue.visible_to(current_user)
@@ -48,7 +48,7 @@ class IssuesController < ApplicationController
   end
 
   def show
-    @title = t ".title", :status => @issue.status.humanize, :issue_id => @issue.id
+    @title = t ".title.#{@issue.status}", :issue_id => @issue.id
     @read_reports = @issue.read_reports
     @unread_reports = @issue.unread_reports
     @comments = @issue.comments
index c47a3abfb9a1e3d605b0fb3e7d92cc072de6fffa..c40e776b444074efc192c9e4ae496924a05dc640 100644 (file)
@@ -44,5 +44,7 @@ class NotesController < ApplicationController
     render :template => "browse/not_found", :status => :not_found
   end
 
-  def new; end
+  def new
+    render :action => :new_readonly if api_status != "online"
+  end
 end
index 415ab2775c12f248e90598bde7e2495078e126f9..9f86e8b184e711bce1e3429be2bd96a2d016c578 100644 (file)
@@ -7,4 +7,6 @@ class Oauth2AuthorizationsController < Doorkeeper::AuthorizationsController
   allow_all_form_action :only => :new
 
   authorize_resource :class => false
+
+  before_action :check_database_writable
 end
index dcf0d8b64e2682364b7c5b489ad1c9c72662bd19..1d96766ef227b7dbaa86b870f03ca1534c8513c6 100644 (file)
@@ -21,7 +21,20 @@ class PreferencesController < ApplicationController
                                     else
                                       params[:user][:preferred_editor]
                                     end
-    if current_user.save
+
+    success = current_user.save
+
+    if params[:site_color_scheme]
+      site_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "site.color_scheme")
+      success &= site_color_scheme_preference.update(:v => params[:site_color_scheme])
+    end
+
+    if params[:map_color_scheme]
+      map_color_scheme_preference = current_user.preferences.find_or_create_by(:k => "map.color_scheme")
+      success &= map_color_scheme_preference.update(:v => params[:map_color_scheme])
+    end
+
+    if success
       # Use a partial so that it is rendered during the next page load in the correct language.
       flash[:notice] = { :partial => "preferences/update_success_flash" }
       redirect_to preferences_path
index 69a8f8fa2e57eb5b76a717f98506c5f4752c33da..482503e8ae66b3c48e5be261e5974c5d66aba821 100644 (file)
@@ -1,15 +1,38 @@
 module BrowseHelper
+  def element_icon(type, object)
+    selected_icon_data = { :filename => "#{type}.svg", :priority => 1 }
+
+    unless object.redacted?
+      target_tags = object.tags.find_all { |k, _v| BROWSE_ICONS.key? k }.sort
+      title = target_tags.map { |k, v| "#{k}=#{v}" }.to_sentence unless target_tags.empty?
+
+      target_tags.each do |k, v|
+        icon_data = BROWSE_ICONS[k][v] || BROWSE_ICONS[k][:*]
+        selected_icon_data = icon_data if icon_data && icon_data[:priority] > selected_icon_data[:priority]
+      end
+    end
+
+    image_tag "browse/#{selected_icon_data[:filename]}",
+              :size => 20,
+              :class => ["align-bottom object-fit-none browse-icon", { "browse-icon-invertible" => selected_icon_data[:invert] }],
+              :title => title
+  end
+
   def element_single_current_link(type, object)
-    link_to object, { :class => element_class(type, object), :title => element_title(object), :rel => (link_follow(object) if type == "node") } do
+    link_to object, { :rel => (link_follow(object) if type == "node") } do
       element_strikethrough object do
         printable_element_name object
       end
     end
   end
 
-  def element_list_item(type, object, &block)
-    tag.li :class => element_class(type, object), :title => element_title(object) do
-      element_strikethrough object, &block
+  def element_list_item(type, object, &)
+    tag.li(tag.div(element_icon(type, object) + tag.div(:class => "align-self-center", &), :class => "d-flex gap-1"))
+  end
+
+  def element_list_item_with_strikethrough(type, object, &)
+    element_list_item type, object do
+      element_strikethrough object, &
     end
   end
 
@@ -52,20 +75,6 @@ module BrowseHelper
     end
   end
 
-  def element_class(type, object)
-    classes = [type]
-    classes += icon_tags(object).flatten.map { |t| h(t) } unless object.redacted?
-    classes.join(" ")
-  end
-
-  def element_title(object)
-    if object.redacted?
-      ""
-    else
-      h(icon_tags(object).map { |k, v| "#{k}=#{v}" }.to_sentence)
-    end
-  end
-
   def link_follow(object)
     "nofollow" if object.tags.empty?
   end
@@ -107,12 +116,6 @@ module BrowseHelper
 
   private
 
-  ICON_TAGS = %w[aeroway amenity barrier building highway historic landuse leisure man_made natural office railway shop tourism waterway].freeze
-
-  def icon_tags(object)
-    object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort
-  end
-
   def name_locales(object)
     object.tags.keys.map { |k| Regexp.last_match(1) if k =~ /^name:(.*)$/ }.flatten
   end
index 9705221607cddd6a9180b1533d59d61579fcec7f..ae953c5833c59c59e2b135d342f0d2c7aa2f21e5 100644 (file)
@@ -3,7 +3,7 @@ module ChangesetsHelper
     if changeset.user.status == "deleted"
       t("users.no_such_user.deleted")
     elsif changeset.user.data_public?
-      link_to changeset.user.display_name, changeset.user
+      link_to changeset.user.display_name, changeset.user, :class => "mw-100 d-inline-block align-bottom text-truncate text-wrap", :dir => "auto"
     else
       t("browse.anonymous")
     end
index 21c8fa51e8c4326cd37182aeda636b4898c15d20..2e9850aef060f2b6549de5cdecac599d95fbdd9a 100644 (file)
@@ -18,7 +18,8 @@ module NoteHelper
     elsif author.status == "deleted"
       t("users.no_such_user.deleted")
     else
-      link_to h(author.display_name), link_options.merge(:controller => "/users", :action => "show", :display_name => author.display_name)
+      link_to h(author.display_name), link_options.merge(:controller => "/users", :action => "show", :display_name => author.display_name),
+              :class => "mw-100 d-inline-block align-bottom text-truncate text-wrap", :dir => "auto"
     end
   end
 end
index e2770eb69ea5bf655866b04499708eadd70a575e..8a3a8a3eb460f2b8c550d7daeba3c99e724e48f2 100644 (file)
@@ -25,6 +25,48 @@ module UserBlocksHelper
     end
   end
 
+  def block_short_status(block)
+    if block.active?
+      if block.needs_view?
+        if block.ends_at > Time.now.utc
+          t("user_blocks.helper.short.active_unread")
+        else
+          t("user_blocks.helper.short.expired_unread")
+        end
+      else
+        t("user_blocks.helper.short.active")
+      end
+    else
+      if block.revoker_id.nil?
+        if block.updated_at > block.ends_at
+          t("user_blocks.helper.short.read_html", :time => block_short_time_in_past(block.updated_at))
+        else
+          t("user_blocks.helper.short.ended")
+        end
+      else
+        t("user_blocks.helper.short.revoked_html", :name => link_to(block.revoker.display_name, block.revoker,
+                                                                    :class => "username d-inline-block text-truncate text-wrap align-bottom",
+                                                                    :dir => "auto"))
+      end
+    end
+  end
+
+  def block_short_time_in_future(time)
+    tag.time l(time.to_date),
+             :datetime => time.xmlschema,
+             :title => t("user_blocks.helper.short.time_in_future_title",
+                         :time_absolute => l(time, :format => :friendly),
+                         :time_relative => time_ago_in_words(time))
+  end
+
+  def block_short_time_in_past(time)
+    tag.time l(time.to_date),
+             :datetime => time.xmlschema,
+             :title => t("user_blocks.helper.short.time_in_past_title",
+                         :time_absolute => l(time, :format => :friendly),
+                         :time_relative => time_ago_in_words(time, :scope => :"datetime.distance_in_words_ago"))
+  end
+
   def block_duration_in_words(duration)
     # Ensure the requested duration isn't negative, even by a millisecond
     duration = 0 if duration.negative?
index d47827074afd0c939facc643d5b246e5233df517..be756c212b943964caa0202b3b47e0347b3f8f7a 100644 (file)
@@ -29,7 +29,7 @@ module UserMailerHelper
     # Because we can't use stylesheets in HTML emails, we need to inline the
     # styles. Rather than copy-paste the same string of CSS into every message,
     # we apply it once here, after the message has been composed.
-    html.gsub("<p>", '<p style="color: black; margin: 0.75em 0; font-family: \'Helvetica Neue\', Arial, Sans-Serif">')
+    html.gsub("<p>", '<p style="color: black; margin: 0.75em 0; font-family: \'Helvetica Neue\', Arial, Sans-Serif">').html_safe
   end
 
   def style_left
index 9dd8d3138cefb11c887255371f01ec7b9bc2e939..61235c418d079a34944aff3c4f0de93ae5e1b121 100644 (file)
@@ -28,7 +28,7 @@
 
 class UserBlock < ApplicationRecord
   validate :moderator_permissions
-  validates :reason, :characters => true
+  validates :reason, :characters => true, :length => { :maximum => 10000 }
   validates :deactivates_at, :comparison => { :greater_than_or_equal_to => :ends_at }, :unless => -> { needs_view }
   validates :deactivates_at, :absence => true, :if => -> { needs_view }
 
index febb3e129fcbdd4575a80cc4d024cab458415b42..2c107236497a8a7f445d10051fbd53e4f1865ee9 100644 (file)
@@ -1,7 +1,8 @@
-<li><%= linked_name = link_to printable_element_name(containing_relation.relation), containing_relation.relation
-        if containing_relation.member_role.blank?
-          t ".entry_html", :relation_name => linked_name
-        else
-          t ".entry_role_html", :relation_name => linked_name, :relation_role => containing_relation.member_role
-        end %>
-</li>
+<%= element_list_item "relation", containing_relation.relation do %>
+  <%= linked_name = link_to printable_element_name(containing_relation.relation), containing_relation.relation
+      if containing_relation.member_role.blank?
+        linked_name
+      else
+        t ".entry_role_html", :relation_name => linked_name, :relation_role => containing_relation.member_role
+      end %>
+<% end %>
index 0ffe7c68b82dd01c9cbafe2ca6966295d4b8532a..52939d3a1c5587272d64ba7e42b06c96853a6be4 100644 (file)
       <% unless node.ways.empty? %>
         <details <%= "open" if node.ways.count < 10 %>>
           <summary><%= t "browse.part_of_ways", :count => node.ways.uniq.count %></summary>
-          <ul class="list-unstyled">
+          <ul class="list-unstyled browse-element-list">
             <% node.ways.uniq.each do |way| %>
-              <li><%= element_single_current_link "way", way %></li>
+              <%= element_list_item "way", way do %>
+                <%= element_single_current_link "way", way %>
+              <% end %>
             <% end %>
           </ul>
         </details>
@@ -25,7 +27,7 @@
       <% unless node.containing_relation_members.empty? %>
         <details <%= "open" if node.containing_relation_members.count < 10 %>>
           <summary><%= t "browse.part_of_relations", :count => node.containing_relation_members.uniq.count %></summary>
-          <ul class="list-unstyled">
+          <ul class="list-unstyled browse-element-list">
             <%= render :partial => "browse/containing_relation", :collection => node.containing_relation_members.uniq %>
           </ul>
         </details>
index 5dcdffa47f6cc683d657fa8ad215adf546234c7f..44706790044d6153452ad91d4b41661e15c26a56 100644 (file)
@@ -14,7 +14,7 @@
       <h4><%= t "browse.part_of" %></h4>
       <details <%= "open" if relation.containing_relation_members.count < 10 %>>
         <summary><%= t "browse.part_of_relations", :count => relation.containing_relation_members.uniq.count %></summary>
-        <ul class="list-unstyled">
+        <ul class="list-unstyled browse-element-list">
           <%= render :partial => "browse/containing_relation", :collection => relation.containing_relation_members.uniq %>
         </ul>
       </details>
@@ -24,7 +24,7 @@
       <h4><%= t ".members" %></h4>
       <details <%= "open" if relation.relation_members.count < 10 %>>
         <summary><%= t ".members_count", :count => relation.relation_members.count %></summary>
-        <ul class="list-unstyled">
+        <ul class="list-unstyled browse-element-list">
           <%= render :partial => "browse/relation_member", :collection => relation.relation_members %>
         </ul>
       </details>
index d122f0edfed8f327f2c81893a317cbfb588073d8..c00396fbd84388c31abc8f6c3374d3a7394e16de 100644 (file)
@@ -1,6 +1,6 @@
 <% linked_name = link_to printable_element_name(relation_member.member), relation_member.member, { :rel => link_follow(relation_member.member) }
    type_str = t ".type.#{relation_member.member_type.downcase}" %>
-<%= element_list_item relation_member.member_type.downcase, relation_member.member do %>
+<%= element_list_item_with_strikethrough relation_member.member_type.downcase, relation_member.member do %>
   <%= if relation_member.member_role.blank?
         t ".entry_html", :type => type_str, :name => linked_name
       else
index d04eff14030183432704277a9e07802b378c2083..9181a3e0804d7f5e5e198bfba4c27fca7b30bdf4 100644 (file)
@@ -14,7 +14,7 @@
       <h4><%= t "browse.part_of" %></h4>
       <details <%= "open" if way.containing_relation_members.count < 10 %>>
         <summary><%= t "browse.part_of_relations", :count => way.containing_relation_members.uniq.count %></summary>
-        <ul class="list-unstyled">
+        <ul class="list-unstyled browse-element-list">
           <%= render :partial => "browse/containing_relation", :collection => way.containing_relation_members.uniq %>
         </ul>
       </details>
       <h4><%= t ".nodes" %></h4>
       <details <%= "open" if way.way_nodes.count < 10 %>>
         <summary><%= t ".nodes_count", :count => way.way_nodes.count %></summary>
-        <ul class="list-unstyled">
+        <ul class="list-unstyled browse-element-list">
           <% way.way_nodes.each do |wn| %>
-            <li>
+            <%= element_list_item "node", wn.node do %>
               <%= element_single_current_link "node", wn.node %>
               <% related_ways = wn.node.ways.reject { |w| w.id == wn.way_id } %>
+              <% icon_connector = " " %>
               <% if related_ways.size > 0 then %>
                 (<%= t ".also_part_of_html",
                        :count => related_ways.size,
-                       :related_ways => to_sentence(related_ways.map { |w| element_single_current_link "way", w }) %>)
+                       :related_ways => to_sentence(related_ways.map { |w| element_icon("way", w) + icon_connector + element_single_current_link("way", w) }) %>)
               <% end %>
-            </li>
+            <% end %>
           <% end %>
         </ul>
       </details>
index fd5dd8a26a3cd16ca6aeb5fd9a9b0f47b58fdbcc..a95bed6fa3ab5d73bd55da685cbab8d5c7b9897a 100644 (file)
@@ -1,12 +1,12 @@
 <%= turbo_frame_tag "changeset_#{type.pluralize}" do %>
   <%= render :partial => "paging_nav", :locals => { :type => type, :pages => pages } %>
-  <ul class="list-unstyled" data-turbo="false">
+  <ul class="list-unstyled browse-element-list" data-turbo="false">
     <% elements.each do |element| %>
-      <%= element_list_item type, element do
-            t "printable_name.current_and_old_links_html",
+      <%= element_list_item_with_strikethrough type, element do %>
+        <%= t "printable_name.current_and_old_links_html",
               :current_link => link_to(printable_element_name(element), :controller => type.pluralize, :action => :show, :id => element.id[0]),
-              :old_link => link_to(printable_element_version(element), :controller => "old_#{type.pluralize}", :action => :show, :id => element.id[0], :version => element.version)
-          end %>
+              :old_link => link_to(printable_element_version(element), :controller => "old_#{type.pluralize}", :action => :show, :id => element.id[0], :version => element.version) %>
+      <% end %>
     <% end %>
   </ul>
 <% end %>
index 95dfbf6f25edf8ff9e3a120d27af48af0461f43e..3f79190fae1ae09f6392934741e604d76c73f9e0 100644 (file)
@@ -15,7 +15,7 @@
     </div>
     <div class="mb-3 col-md-auto">
       <%= select_tag :issue_type,
-                     options_for_select(@issue_types, params[:issue_type]),
+                     options_for_select(@issue_types.map { |issue_type| [issue_type.constantize.model_name.human, issue_type] }, params[:issue_type]),
                      :include_blank => t(".select_type"),
                      :data => { :behavior => "category_dropdown" },
                      :class => "form-select" %>
index a58b8c5cb18b4f36c4bb1c0bf978618dc08b0255..74e7c0a4ce1f7793880c542da15d021a743c1ebc 100644 (file)
@@ -1,5 +1,5 @@
 <% content_for :heading do %>
-<h1><%= t ".title", :status => @issue.status.humanize, :issue_id => @issue.id %></h1>
+<h1><%= @title %></h1>
 <p><%= @issue.reportable.model_name.human %> : <%= link_to reportable_title(@issue.reportable), reportable_url(@issue.reportable) %></p>
 <p class="text-body-secondary">
   <small>
index 3c691612ab1d4c37ec1ad7a0f8c001b334e50272..bab19c217191fb089bc1681a5e93851c3df965dd 100644 (file)
@@ -5,7 +5,11 @@
   <%= javascript_include_tag "turbo", :type => "module" %>
   <%= javascript_include_tag "application" %>
   <%= javascript_include_tag "i18n/#{I18n.locale}" %>
-  <%= stylesheet_link_tag "screen-#{dir}", :media => "screen" %>
+  <% if preferred_color_scheme(:site) == "auto" %>
+    <%= stylesheet_link_tag "screen-auto-#{dir}", :media => "screen" %>
+  <% else %>
+    <%= stylesheet_link_tag "screen-manual-#{dir}", :media => "screen" %>
+  <% end %>
   <%= stylesheet_link_tag "print-#{dir}", :media => "print" %>
   <%= stylesheet_link_tag "leaflet-all", :media => "screen, print" %>
   <%= render :partial => "layouts/meta" %>
index fcf134fd29c8b0d9c673fcea647e3679b54e448b..190ea44e5654b53b63af24f070ad8b0130609f9a 100644 (file)
     </ul>
     <% if current_user && current_user.id %>
       <div class='d-inline-flex dropdown user-menu logged-in'>
-        <button class='d-flex gap-1 align-items-center justify-content-center dropdown-toggle btn btn-outline-secondary border-secondary-subtle bg-body text-secondary px-2 py-1 flex-grow-1' type='button' data-bs-toggle='dropdown'>
+        <button class='d-flex gap-1 align-items-center justify-content-center dropdown-toggle btn btn-outline-secondary border-secondary-subtle bg-body text-secondary px-2 py-1 flex-grow-1 mw-100' type='button' data-bs-toggle='dropdown'>
           <%= user_thumbnail_tiny(current_user, :class => "user_thumbnail_tiny rounded-1 bg-body") %>
           <% if current_user.new_messages.size > 0 %>
             <span class="badge count-number position-static m-1"><%= current_user.new_messages.size %></span>
           <% end %>
-          <span class='username align-middle text-truncate'>
+          <span class='username align-middle text-truncate' dir='auto'>
             <%= current_user.display_name %>
           </span>
         </button>
index 7c921658d46102d54b720eb5deb57a7107f07d9b..f02f024a57a69e84905c76122f1b16ff053e8f20 100644 (file)
@@ -1,11 +1,14 @@
 <!DOCTYPE html>
-<html lang="<%= I18n.locale %>" dir="<%= dir %>">
+<%= tag.html :lang => I18n.locale,
+             :dir => dir,
+             :data => { :bs_theme => (preferred_color_scheme(:site) if preferred_color_scheme(:site) != "auto") } do %>
   <%= render :partial => "layouts/head" %>
-  <body class="<%= body_class %>">
+  <%= tag.body :class => body_class,
+               :data => { :map_theme => (preferred_color_scheme(:map) if preferred_color_scheme(:map) != "auto") } do %>
     <%= render :partial => "layouts/header" %>
     <%= render :partial => "layouts/content" %>
     <% if defined?(Settings.matomo) -%>
     <noscript><p><img src="<%= request.protocol %><%= Settings.matomo["location"] %>/matomo.php?idsite=<%= Settings.matomo["site"] %>" class="matomo" alt="" /></p></noscript>
     <% end -%>
-  </body>
-</html>
+  <% end %>
+<% end %>
index c10ed1c70f6d04352ea01fd137bb758f4635301d..7688ddb19cee5f086801108dd337ee11c2e6c00d 100644 (file)
@@ -28,7 +28,7 @@
                 <table style="background-color: #fff; color: #222; border: solid 1px #ccc; border-collapse: separate">
                   <tr>
                     <td style="text-align: <%= style_left %>; padding: 0px 15px 5px 15px">
-                      <%= raw style_message(yield) %>
+                      <%= style_message(yield) %>
                     </td>
                   </tr>
                 </table>
index a181e96e1254b5178f18225ea7c21917adf295a4..7213cf80dcedb66c8a20c2ecf06d4671ba372fc5 100644 (file)
@@ -1,5 +1,5 @@
 <%= tag.tr(:id => "inbox-#{message.id}", :class => { "table-success" => !message.message_read? }) do %>
-  <td><%= link_to message.sender.display_name, user_path(message.sender) %></td>
+  <td><%= link_to message.sender.display_name, user_path(message.sender), :class => "username d-inline-block text-truncate text-wrap align-bottom", :dir => "auto" %></td>
   <td><%= link_to message.title, message_path(message) %></td>
   <td class="text-nowrap"><%= l message.sent_on, :format => :friendly %></td>
   <td class="text-nowrap">
index cf10cd462ef52ef49079364ad8575d9f1aa9e01f..f744d028a6044e9478bfb1b83faca9c7cfa1346d 100644 (file)
@@ -1,5 +1,5 @@
 <%= tag.tr(:id => "outbox-#{message.id}") do %>
-  <td><%= link_to message.recipient.display_name, user_path(message.recipient) %></td>
+  <td><%= link_to message.recipient.display_name, user_path(message.recipient), :class => "username d-inline-block text-truncate text-wrap align-bottom", :dir => "auto" %></td>
   <td><%= link_to message.title, message_path(message) %></td>
   <td class="text-nowrap"><%= l message.sent_on, :format => :friendly %></td>
   <td class="text-nowrap">
diff --git a/app/views/notes/new_readonly.html.erb b/app/views/notes/new_readonly.html.erb
new file mode 100644 (file)
index 0000000..033530c
--- /dev/null
@@ -0,0 +1,7 @@
+<% set_title(t(".title")) %>
+
+<%= render "sidebar_header", :title => t(".title") %>
+
+<div class="note">
+  <p class="alert alert-warning"><%= t(".warning") %></p>
+</div>
index 4aa2e7fd345d196b9b3d0f4ad215b9a6950b6432..d17612e2929be2a70b315dc78e955e2da56c03ef 100644 (file)
@@ -9,25 +9,49 @@
   </div>
 
   <div class="details" data-coordinates="<%= @note.lat %>,<%= @note.lon %>" data-status="<%= @note.status %>">
-    <ul class="list-unstyled">
-      <li><%= note_event("opened", @note.created_at, @note.author) %></li>
-      <% if @note.status == "closed" %>
-        <li><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></li>
-      <% end %>
-      <li>
-        <%= t "browse.location" %>
-        <%= link_to(t(".coordinates_html",
-                      :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
-                      :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
-                    root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}")) %>
-      </li>
-    </ul>
+    <p class="mb-2"><%= note_event("opened", @note.created_at, @note.author) %></p>
+    <% if @note.status == "closed" %>
+      <p class="mb-2"><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></p>
+    <% end %>
+    <p>
+      <%= t "browse.location" %>
+      <%= link_to t(".coordinates_html",
+                    :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
+                    :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
+                  root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}") %>
+    </p>
   </div>
 
   <% if @note_comments.find { |comment| comment.author.nil? } -%>
     <p class='alert alert-warning'><%= t ".anonymous_warning" %></p>
   <% end -%>
 
+  <div class="row">
+    <div class="col">
+      <h4><%= t(".discussion") %></h4>
+    </div>
+
+    <% if current_user %>
+      <div class="col-auto">
+        <% if @note.subscribers.exists?(current_user.id) %>
+          <%= tag.button t(".unsubscribe"),
+                         :type => "button",
+                         :class => "btn btn-sm btn-primary",
+                         :name => "unsubscribe",
+                         :data => { :method => "DELETE",
+                                    :url => api_note_subscription_path(@note) } %>
+        <% else %>
+          <%= tag.button t(".subscribe"),
+                         :type => "button",
+                         :class => "btn btn-sm btn-primary",
+                         :name => "subscribe",
+                         :data => { :method => "POST",
+                                    :url => api_note_subscription_path(@note) } %>
+        <% end %>
+      </div>
+    <% end %>
+  </div>
+
   <% if @note_comments.length > 1 %>
     <div class='note-comments'>
       <ul class="list-unstyled">
index 07d89fbb5bcb567fe443f8ec30c11175ceffeb3f..aaf07e927e27a11b9d0a599a9ce2d4887563307d 100644 (file)
@@ -7,6 +7,22 @@
 
   <%= f.text_field :languages %>
 
+  <div class="mb-3">
+    <%= label_tag "site_color_scheme", t("preferences.show.preferred_site_color_scheme"), :class => "form-label" %>
+    <%= select_tag "site_color_scheme",
+                   options_for_select(%w[auto light dark].map { |scheme| [t("preferences.show.site_color_schemes.#{scheme}"), scheme] },
+                                      preferred_color_scheme(:site)),
+                   :class => "form-select" %>
+  </div>
+
+  <div class="mb-3">
+    <%= label_tag "map_color_scheme", t("preferences.show.preferred_map_color_scheme"), :class => "form-label" %>
+    <%= select_tag "map_color_scheme",
+                   options_for_select(%w[auto light dark].map { |scheme| [t("preferences.show.map_color_schemes.#{scheme}"), scheme] },
+                                      preferred_color_scheme(:map)),
+                   :class => "form-select" %>
+  </div>
+
   <%= f.primary t(".save") %>
   <%= link_to t(".cancel"), preferences_path, :class => "btn btn-link" %>
 <% end %>
index 7a63d0be8dadeb57514fba42b8b139b7335cce62..9bf83cbf1f0f72b846e3c43bbac278703fcef61a 100644 (file)
         <li><%= locale %></li>
       <% end %>
     </ul>
+  </dd>
 
+  <dt class="col-sm-4"><%= t ".preferred_site_color_scheme" %></dt>
+  <dd class="col-sm-8">
+    <%= t ".site_color_schemes.#{preferred_color_scheme(:site)}" %>
+  </dd>
+
+  <dt class="col-sm-4"><%= t ".preferred_map_color_scheme" %></dt>
+  <dd class="col-sm-8">
+    <%= t ".map_color_schemes.#{preferred_color_scheme(:map)}" %>
   </dd>
 </dl>
 
index 998dd248d45a14b8d108fc9a3ffe1fddf13da563..4311ba082e39de12dd945f3a66bf011c9edfabc3 100644 (file)
@@ -56,7 +56,8 @@
             </li>
           <% end %>
           <li class="nav-item">
-            <%= link_to t(".traces_from", :user => @target_user&.display_name), { :controller => "traces", :action => "index", :display_name => @target_user&.display_name }, { :class => "nav-link active" } %>
+            <%= link_to t(".traces_from_html", :user => tag.span(@target_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
+                        { :controller => "traces", :action => "index", :display_name => @target_user.display_name }, { :class => "nav-link active" } %>
           </li>
         <% end %>
       </ul>
index 1eb38f93fc50b285b7a6a66a335de94a5bded882..cbc2ee23c0b39297c07f4aac73acd2c6121a0082 100644 (file)
@@ -1,19 +1,18 @@
 <tr>
   <% if @show_user_name %>
-  <td><%= link_to block.user.display_name, block.user, :class => "username d-inline-block text-truncate text-wrap" %></td>
+  <td><%= link_to block.user.display_name, block.user, :class => "username d-inline-block text-truncate text-wrap", :dir => "auto" %></td>
   <% end %>
   <% if @show_creator_name %>
-  <td><%= link_to block.creator.display_name, block.creator, :class => "username d-inline-block text-truncate text-wrap" %></td>
+  <td><%= link_to block.creator.display_name, block.creator, :class => "username d-inline-block text-truncate text-wrap", :dir => "auto" %></td>
   <% end %>
   <td><%= h truncate(block.reason) %></td>
-  <td><%= h block_status(block) %></td>
-  <td>
-    <% if block.revoker_id.nil? %>
-      <%= t(".not_revoked") %>
-    <% else %>
-      <%= link_to block.revoker.display_name, block.revoker %>
-    <% end %>
-  </td>
+  <td><%= block_short_time_in_past(block.created_at) %></td>
+  <% if block.ends_at > Time.now.utc %>
+  <td><%= block_short_time_in_future(block.ends_at) %></td>
+  <% else %>
+  <td><%= block_short_time_in_past(block.ends_at) %></td>
+  <% end %>
+  <td><%= h block_short_status(block) %></td>
   <td><%= link_to t(".show"), block %></td>
   <td><% if can?(:edit, block) %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %></td>
 </tr>
index 061989586a255b067cdcf94d219feb7d8b06df86..0770e331fdd7827d13eac1b95092bf6de36b379d 100644 (file)
@@ -14,7 +14,7 @@
   <% on_user = @user || @user_block&.user %>
   <% if on_user != current_user && on_user&.blocks&.exists? %>
     <li class="nav-item">
-      <%= link_to t(".blocks_on_user", :user => on_user.display_name),
+      <%= link_to t(".blocks_on_user_html", :user => tag.span(on_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
                   user_blocks_on_path(on_user),
                   :class => ["nav-link", { :active => action_name == "blocks_on" }] %>
     </li>
@@ -29,7 +29,7 @@
   <% by_user = @user || @user_block&.creator %>
   <% if by_user != current_user && by_user&.blocks_created&.exists? %>
     <li class="nav-item">
-      <%= link_to t(".blocks_by_user", :user => by_user.display_name),
+      <%= link_to t(".blocks_by_user_html", :user => tag.span(by_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
                   user_blocks_by_path(by_user),
                   :class => ["nav-link", { :active => action_name == "blocks_by" }] %>
     </li>
index 8c8557f606e358b196d170209ecbb5779947ccd1..c2e516170a2ee655c65aca2dfbaf8cca5f9967e8 100644 (file)
@@ -9,8 +9,9 @@
         <th><%= t ".creator_name" %></th>
         <% end %>
         <th><%= t ".reason" %></th>
+        <th><%= t ".start" %></th>
+        <th><%= t ".end" %></th>
         <th><%= t ".status" %></th>
-        <th><%= t ".revoker_name" %></th>
         <th></th>
         <th></th>
       </tr>
diff --git a/config/browse_icons.yml b/config/browse_icons.yml
new file mode 100644 (file)
index 0000000..f24d767
--- /dev/null
@@ -0,0 +1,186 @@
+aeroway:
+  aerodrome: { filename: "aerodrome.p.16.png" }
+
+  runway: { filename: "runway.20.png" }
+  taxiway: { filename: "taxiway.20.png" }
+
+amenity:
+  atm: { filename: "amenity_atm.16.png", invert: true }
+  bank: { filename: "amenity_bank.16.png", invert: true }
+  bar: { filename: "amenity_bar.16.png", invert: true }
+  bench: { filename: "amenity_bench.16.png", invert: true }
+  biergarten: { filename: "amenity_biergarten.16.png", invert: true }
+  bicycle_parking: { filename: "amenity_bicycle_parking.16.png" }
+  bicycle_rental: { filename: "transport_rental_bicycle.16.png" }
+  bus_station: { filename: "bus_station.n.16.png" }
+  cafe: { filename: "amenity_cafe.16.png", invert: true }
+  car_rental: { filename: "transport_rental_car.16.png" }
+  car_sharing: { filename: "car_share.p.16.png" }
+  childcare: { filename: "amenity_childcare.p.16.png" }
+  cinema: { filename: "amenity_cinema.16.png", invert: true }
+  courthouse: { filename: "amenity_courthouse.16.png", invert: true }
+  dentist: { filename: "amenity_dentist.16.png" }
+  doctors: { filename: "amenity_doctors.16.png" }
+  drinking_water: { filename: "amenity_drinking_water.16.png", invert: true }
+  fast_food: { filename: "amenity_fast_food.16.png", invert: true }
+  fire_station: { filename: "amenity_fire_station.16.png", invert: true }
+  fuel: { filename: "amenity_fuel.16.png" }
+  hospital: { filename: "amenity_hospital.16.png" }
+  kindergarten: { filename: "amenity_childcare.p.16.png" }
+  library: { filename: "library.p.16.png", invert: true }
+  nightclub: { filename: "amenity_nightclub.16.png", invert: true }
+  parking: { filename: "parking.p.16.png" }
+  pharmacy: { filename: "amenity_pharmacy.16.png" }
+  place_of_worship: { filename: "amenity_place_of_worship.16.png", invert: true }
+  police: { filename: "amenity_police.16.png", invert: true }
+  post_box: { filename: "post_box.p.16.png", invert: true }
+  post_office: { filename: "post_office.p.16.png", invert: true }
+  prison: { filename: "amenity_prison.16.png", invert: true }
+  pub: { filename: "amenity_pub.16.png", invert: true }
+  restaurant: { filename: "amenity_restaurant.16.png", invert: true }
+  recycling: { filename: "amenity_recycling.16.png", invert: true }
+  school: { filename: "education_school.p.16.png" }
+  shelter: { filename: "shelter2.p.16.png" }
+  taxi: { filename: "amenity_taxi.16.png" }
+  telephone: { filename: "telephone.p.16.png", invert: true }
+  theatre: { filename: "amenity_theatre.16.png", invert: true }
+  toilets: { filename: "amenity_toilets.16.png", invert: true }
+  townhall: { filename: "amenity_townhall.16.png", invert: true }
+  university: { filename: "education_university.p.16.png" }
+  veterinary: { filename: "health_veterinary.p.16.png" }
+  waste_basket: { filename: "amenity_waste_basket.16.png", invert: true }
+
+barrier:
+  gate: { filename: "gate2.p.16.png", invert: true }
+
+  wall: { filename: "wall.20.png" }
+
+building:
+  :*: { filename: "building.png" }
+
+highway:
+  bus_stop: { filename: "highway_bus_stop.16.png" }
+  mini_roundabout: { filename: "mini_round.p.16.png" }
+  traffic_signals: { filename: "traffic_light.png", invert: true }
+  turning_circle: { filename: "turning_circle.p.16.png" }
+
+  bridleway: { filename: "bridleway.20.png" }
+  cycleway: { filename: "cycleway.20.png" }
+  footway: { filename: "footway.20.png" }
+  motorway: { filename: "motorway.20.png" }
+  motorway_link: { filename: "motorway.20.png" }
+  path: { filename: "path.20.png" }
+  pedestrian: { filename: "service.20.png" }
+  primary: { filename: "primary.20.png" }
+  primary_link: { filename: "primary.20.png" }
+  residential: { filename: "unclassified.20.png" }
+  secondary: { filename: "secondary.20.png" }
+  secondary_link: { filename: "secondary.20.png" }
+  service: { filename: "service.20.png" }
+  tertiary: { filename: "tertiary.20.png" }
+  track: { filename: "track.20.png" }
+  trunk: { filename: "trunk.20.png" }
+  trunk_link: { filename: "trunk.20.png" }
+  unclassified: { filename: "unclassified.20.png" }
+
+historic:
+  archaeological_site: { filename: "historic_archaeological_site.16.png", invert: true }
+  castle: { filename: "tourist_castle.p.16.png", invert: true }
+  memorial: { filename: "historic_memorial.16.png", invert: true }
+  monument: { filename: "historic_monument.16.png", invert: true }
+  ruins: { filename: "tourist_ruins.p.16.png", invert: true }
+  wreck: { filename: "tourist_wreck.p.16.png", invert: true }
+
+landuse:
+  brownfield: { filename: "brownfield.png" }
+  cemetery: { filename: "cemetery.png" }
+  commercial: { filename: "commercial.png" }
+  farmland: { filename: "farmland.png" }
+  farmyard: { filename: "farmyard.png" }
+  forest: { filename: "forest.png" }
+  grass: { filename: "grass.png" }
+  industrial: { filename: "industrial.png" }
+  meadow: { filename: "meadow.png" }
+  military: { filename: "military.png" }
+  residential: { filename: "residential.png" }
+  retail: { filename: "retail.png" }
+  tourism: { filename: "tourism.png" }
+
+leisure:
+  golf_course: { filename: "golf.png" }
+  park: { filename: "park.png" }
+  picnic_table: { filename: "tourism_picnic_site.16.png", invert: true }
+  playground: { filename: "leisure_playground.16.png", invert: true }
+  pitch: { filename: "pitch.png" }
+  nature_reserve: { filename: "reserve.png" }
+  water_park: { filename: "leisure_water_park.16.png", invert: true }
+
+man_made:
+  lighthouse: { filename: "man_made_lighthouse.16.png" }
+  water_tower: { filename: "man_made_water_tower.16.png", invert: true }
+  windmill: { filename: "man_made_windmill.16.png", invert: true }
+
+natural:
+  tree: { filename: "tree.p.16.png" }
+
+  grassland: { filename: "grassland.png" }
+  heath: { filename: "heathland.png" }
+  scrub: { filename: "scrub.png" }
+  water: { filename: "lake.png" }
+  wood: { filename: "wood.png" }
+
+office:
+  diplomatic: { filename: "office_diplomatic.16.png" }
+  estate_agent: { filename: "shop_estateagent.16.png" }
+
+railway:
+  halt: { filename: "halt.p.16.png" }
+  station: { filename: "station.p.16.png" }
+  level_crossing: { filename: "level_crossing.p.16.png", invert: true }
+
+  light_rail: { filename: "light_rail.20.png" }
+  rail: { filename: "rail.20.png" }
+  subway: { filename: "subway.20.png" }
+  tram: { filename: "tram.20.png" }
+
+shop:
+  :*: { filename: "shop_convenience.p.16.png", priority: 20 }
+  alcohol: { filename: "shop_alcohol.16.png" }
+  bakery: { filename: "shop_bakery.16.png" }
+  bicycle: { filename: "shop_bicycle.16.png" }
+  books: { filename: "shop_books.16.png" }
+  butcher: { filename: "shop_butcher.p.16.png" }
+  clothes: { filename: "shop_clothes.16.png" }
+  car_parts: { filename: "shop_car_parts.16.png" }
+  car_repair: { filename: "shop_car_repair.16.png" }
+  convenience: { filename: "shop_convenience.p.16.png" }
+  doityourself: { filename: "shop_doityourself.16.png" }
+  electronics: { filename: "shop_electronics.16.png" }
+  estate_agent: { filename: "shop_estateagent.16.png" }
+  fashion: { filename: "shop_clothes.16.png" }
+  florist: { filename: "shop_florist.16.png" }
+  furniture: { filename: "shop_furniture.16.png" }
+  garden_centre: { filename: "shop_florist.16.png" }
+  gift: { filename: "shop_gift.16.png" }
+  greengrocer: { filename: "shop_greengrocer.p.16.png" }
+  hardware: { filename: "shop_doityourself.16.png" }
+  hairdresser: { filename: "shop_hairdresser.16.png" }
+  jewelry: { filename: "shop_jewelry.16.png" }
+  mobile_phone: { filename: "shop_mobile_phone.16.png" }
+  optician: { filename: "shop_optician.16.png" }
+  pet: { filename: "shop_pet.16.png" }
+  seafood: { filename: "shop_seafood.16.png" }
+  shoes: { filename: "shop_shoes.16.png" }
+  supermarket: { filename: "shop_supermarket.p.16.png" }
+
+tourism:
+  alpine_hut: { filename: "tourism_alpine_hut.16.png" }
+  camp_site: { filename: "tourism_camp_site.16.png" }
+  caravan_site: { filename: "tourism_caravan_site.16.png" }
+  hostel: { filename: "tourism_hostel.16.png" }
+  hotel: { filename: "tourism_hotel.16.png" }
+  motel: { filename: "tourism_motel.16.png" }
+  museum: { filename: "tourism_museum.16.png", invert: true }
+  picnic_site: { filename: "tourism_picnic_site.16.png", invert: true }
+  viewpoint: { filename: "view_point.p.16.png", invert: true }
+  wilderness_hut: { filename: "tourism_wilderness_hut.16.png" }
diff --git a/config/initializers/browse_icons.rb b/config/initializers/browse_icons.rb
new file mode 100644 (file)
index 0000000..a55df97
--- /dev/null
@@ -0,0 +1,13 @@
+begin
+  BROWSE_ICONS = YAML.load_file(Rails.root.join("config/browse_icons.yml")).transform_values do |tag_key_data|
+    transformed_tag_key_data = {}
+    tag_key_data.each do |tag_value, tag_value_data|
+      tag_value_data = tag_value_data.deep_symbolize_keys
+      tag_value_data[:priority] ||= tag_value == :* ? 10 : 100
+      transformed_tag_key_data[tag_value] = tag_value_data
+    end
+    transformed_tag_key_data
+  end
+rescue StandardError
+  BROWSE_ICONS = {}.freeze
+end
diff --git a/config/layers.yml b/config/layers.yml
new file mode 100644 (file)
index 0000000..4f883cc
--- /dev/null
@@ -0,0 +1,72 @@
+- leafletOsmId: "Mapnik"
+  code: "M"
+  layerId: "mapnik"
+  nameId: "standard"
+  credit:
+    id: "make_a_donation"
+    href: "https://supporting.openstreetmap.org"
+    donate: true
+
+- leafletOsmId: "CyclOSM"
+  code: "Y"
+  layerId: "cyclosm"
+  nameId: "cyclosm"
+  credit:
+    id: "cyclosm_credit"
+    children:
+      cyclosm_link:
+        id: "cyclosm_name"
+        href: "https://www.cyclosm.org"
+      osm_france_link:
+        id: "osm_france"
+        href: "https://openstreetmap.fr/"
+
+- leafletOsmId: "CycleMap"
+  code: "C"
+  layerId: "cyclemap"
+  nameId: "cycle_map"
+  apiKeyId: "THUNDERFOREST_KEY"
+  credit:
+    id: "thunderforest_credit"
+    children:
+      thunderforest_link:
+        id: "andy_allan"
+        href: "https://www.thunderforest.com/"
+
+- leafletOsmId: "TransportMap"
+  code: "T"
+  layerId: "transportmap"
+  nameId: "transport_map"
+  apiKeyId: "THUNDERFOREST_KEY"
+  credit:
+    id: "thunderforest_credit"
+    children:
+      thunderforest_link:
+        id: "andy_allan"
+        href: "https://www.thunderforest.com/"
+
+- leafletOsmId: "TracestrackTopo"
+  code: "P"
+  layerId: "tracestracktopo"
+  nameId: "tracestracktop_topo"
+  apiKeyId: "TRACESTRACK_KEY"
+  credit:
+    id: "tracestrack_credit"
+    children:
+      tracestrack_link:
+        id: "tracestrack"
+        href: "https://www.tracestrack.com/"
+
+- leafletOsmId: "HOT"
+  code: "H"
+  layerId: "hot"
+  nameId: "hot"
+  credit:
+    id: "hotosm_credit"
+    children:
+      hotosm_link:
+        id: "hotosm_name"
+        href: "https://www.hotosm.org/"
+      osm_france_link:
+        id: "osm_france"
+        href: "https://openstreetmap.fr/"
index dd6bea380aa4d27996a9249253ced1153a352a7e..1d99104a34dcbc7debb62f8c78a4cadf8ee01cdd 100644 (file)
@@ -315,7 +315,6 @@ af:
         way: Weg
         relation: Verwantskap
     containing_relation:
-      entry_html: Verwantskap %{relation_name}
       entry_role_html: Verwantskap %{relation_name} (as %{relation_role})
     not_found:
       title: Kon nie gevind word
@@ -1285,7 +1284,6 @@ af:
         other: '%{count} verslae'
       reported_item: Gerapporteerde item
     show:
-      title: '%{status} Probleem #%{issue_id}'
       report_created_at_html: Eerste vermelding op %{datetime}
       last_resolved_at_html: Laas geregmaak op %{datetime}
       last_updated_at_html: Laaste opgedateer op %{datetime} deur %{displayname}
@@ -1736,7 +1734,7 @@ af:
       tagged_with: gemerk met %{tags}
       upload_trace: Laai 'n GPS-spoor op
       my_traces: My Spore
-      traces_from: Openbare spore van %{user}
+      traces_from_html: Openbare spore van %{user}
     destroy:
       scheduled_for_deletion: Spoor is vir verwydering geoormerk
   application:
@@ -1931,7 +1929,6 @@ af:
       reason: 'Rede agter die versperring:'
       revoker: 'Herroep deur:'
     block:
-      not_revoked: (nie herroep nie)
       show: Wys
       edit: Redigeer
     page:
@@ -1939,7 +1936,6 @@ af:
       creator_name: Skepper
       reason: Rede vir die versperring
       status: Status
-      revoker_name: Herroep deur
   notes:
     index:
       heading: Notas van %{user}
index 860ad370f40a334f24caa7306f7c8fe32c05bd7e..0081760c9408f793e8e4da64f1adfaa908b027fb 100644 (file)
@@ -151,7 +151,6 @@ aln:
         way: Udhë
         relation: Lidhje
     containing_relation:
-      entry_html: Lidhja %{relation_name}
       entry_role_html: Lidhja %{relation_name} (sikur %{relation_role})
     not_found:
       sorry: Na vjen keq, %{type} me ID %{id}, nuk mujti me u gjetë.
@@ -1115,7 +1114,6 @@ aln:
       reason: 'Arsyeja për bllok:'
       revoker: 'Revoker:'
     block:
-      not_revoked: (Jo revokuar)
       show: Tregoj
       edit: Redaktoj
     page:
@@ -1123,7 +1121,6 @@ aln:
       creator_name: Krijuesi
       reason: Arsyeja për bllok
       status: Statusi
-      revoker_name: Revokuar nga ana
   notes:
     notes_paging_nav:
       showing_page: Tu e shfaq faqen %{page}
index 033774cb54faf68163fb69afd6fe1b92bea5abfb..ef001f88aa7e6998cba9dd1add8a83f15a01a88d 100644 (file)
@@ -31,6 +31,7 @@
 # Author: McDutchie
 # Author: Meno25
 # Author: Mido
+# Author: Mohammed Qays
 # Author: Mohammed Qubati
 # Author: Mutarjem horr
 # Author: NEHAOUA
@@ -105,6 +106,7 @@ ar:
       message: الرسالة
       node: عقدة
       node_tag: وسم عقدة
+      note: ملاحظة
       old_node: عقدة قديمة
       old_node_tag: وسم عقدة قديمة
       old_relation: علاقة قديمة
@@ -450,8 +452,7 @@ ar:
         way: طريق
         relation: علاقة
     containing_relation:
-      entry_html: العلاقة %{relation_name}
-      entry_role_html: العلاقة %{relation_name} (كــ%{relation_role})
+      entry_role_html: '%{relation_name} (مثل %{relation_role})'
     not_found:
       title: لم يتم العثور عليه
       sorry: 'عفوًا، تعذر العثور على %{type} #%{id}.'
@@ -1494,7 +1495,6 @@ ar:
         other: '%{count} بلاغ'
       reported_item: شيء تم الابلاغ عنه
     show:
-      title: '%{status} المشكلة #%{issue_id}'
       reports:
         zero: صفر تقرير
         one: تقرير واحد
@@ -2590,7 +2590,6 @@ ar:
       reason: 'سبب العرقلة:'
       revoker: 'المبطل:'
     block:
-      not_revoked: (لم تلغ)
       show: اعرض
       edit: تعديل
     page:
@@ -2598,7 +2597,6 @@ ar:
       creator_name: المنشئ
       reason: السبب العرقلة
       status: الحالة
-      revoker_name: مُبطل بواسطة
   user_mutes:
     index:
       title: المستخدمون الممنوعون
index 59489ad0bf9ed8487879a966563e0d36d4e1c977..a983f1b8b917eb98a9df872d50048230a16ba7ee 100644 (file)
@@ -131,8 +131,7 @@ arz:
         way: طريق
         relation: علاقة
     containing_relation:
-      entry_html: العلاقه %{relation_name}
-      entry_role_html: العلاقه %{relation_name} (كــ %{relation_role})
+      entry_role_html: '%{relation_name} (كــ %{relation_role})'
     not_found:
       sorry: عفوًا، لم يتم العثور على %{type} بالمعرّف %{id}.
       type:
@@ -945,7 +944,6 @@ arz:
       reason: 'سبب العرقلة:'
       revoker: 'المبطل:'
     block:
-      not_revoked: (لم تلغ)
       show: اعرض
       edit: عدّل
     page:
@@ -953,7 +951,6 @@ arz:
       creator_name: المنشئ
       reason: السبب للعرقلة
       status: الحالة
-      revoker_name: مُبطل بواسطة
   notes:
     notes_paging_nav:
       showing_page: الصفحه %{page}
index d0e9f358da08599a80ed9e8cc834646ece69699b..90bebd8699f45ba5afd237ce83b305cec7eb9474 100644 (file)
@@ -283,7 +283,6 @@ ast:
         way: Vía
         relation: Rellación
     containing_relation:
-      entry_html: Rellación %{relation_name}
       entry_role_html: Rellación %{relation_name} (como %{relation_role})
     not_found:
       sorry: Sentímoslo, el/la %{type} númberu %{id} nun pudo alcontrase.
@@ -1107,7 +1106,6 @@ ast:
         other: '%{count} Informes'
       reported_item: Elementu reportáu
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         zero: Nun hai informes
         one: 1 informe
@@ -1991,7 +1989,6 @@ ast:
       reason: 'Motivu del bloquéu:'
       revoker: 'Desaniciador:'
     block:
-      not_revoked: (non desaniciáu)
       show: Amosar
       edit: Editar
     page:
@@ -1999,7 +1996,6 @@ ast:
       creator_name: Creador
       reason: Motivu del bloquéu
       status: Estáu
-      revoker_name: Desaniciáu por
   notes:
     index:
       title: Notes unviaes o comentaes por %{user}
index 917cf11bdef9cb11d28da213a0579c90eacfffad..af7d0bb62b2e48a1676f97657221c631b3430d42 100644 (file)
@@ -40,7 +40,7 @@ az:
         update: Dəyişiklikləri yadda saxla
       user_block:
         create: Blok yarat
-        update: Bloku yenilən
+        update: Bloku yenilə
   activerecord:
     models:
       acl: Giriş Məhdudiyyətləri siyahısı
@@ -186,7 +186,6 @@ az:
         way: Xətt
         relation: Əlaqə
     containing_relation:
-      entry_html: Əlaqəsi %{relation_name}
       entry_role_html: Əlaqəsi %{relation_name} (%{relation_role} kimi)
     not_found:
       sorry: Təəsüf ki, %{id} %{type} tapılmadı.
@@ -1042,7 +1041,6 @@ az:
       title: '%{block_on}, %{block_by} tərəfindən blok edilib'
       status: Status
     block:
-      not_revoked: (ləgv edilməyib)
       show: Göstər
       edit: Redaktə et
     page:
@@ -1050,7 +1048,6 @@ az:
       creator_name: Yaradıcı
       reason: Bloklanma səbəbi
       status: Status
-      revoker_name: Tərəfindən ləgv edilib
   notes:
     show:
       description: Təsvir
index 2b9da91afb1c1374434454bddab0a658056ca962..aa273e8768de7a53adadf3e42d906cd25529301d 100644 (file)
@@ -375,7 +375,6 @@ ba:
         way: Һыҙат
         relation: Мөнәсәбәт
     containing_relation:
-      entry_html: Мөнәсәбәт %{relation_name}
       entry_role_html: Мөнәсәбәт %{relation_name} (ролендә %{relation_role})
     not_found:
       title: Табылманы
@@ -1498,7 +1497,6 @@ ba:
         open: Асыҡ
         resolved: Хәл ителде
     show:
-      title: '%{status} Мәсьәлә #%{issue_id}'
       reports:
         one: '%{count} хәбәр'
         other: '%{count} хәбәрҙәр'
index 1a7f6db32a9c05fa09b019f58baf9049818c6957..6bb1f970b0eb1522ada756a458de26a439f21622 100644 (file)
@@ -324,7 +324,6 @@ be-Tarask:
         way: Шлях
         relation: Адносіны
     containing_relation:
-      entry_html: Адносіны %{relation_name}
       entry_role_html: Адносіны %{relation_name} (як %{relation_role})
     not_found:
       title: Ня знойдзена
@@ -1394,7 +1393,6 @@ be-Tarask:
       reason: 'Прычына блякаваньня:'
       revoker: 'Адклікаўшы:'
     block:
-      not_revoked: (не адкліканае)
       show: Паказаць
       edit: Рэдагаваць
     page:
@@ -1402,7 +1400,6 @@ be-Tarask:
       creator_name: Стваральнік
       reason: Прычына блякаваньня
       status: Статус
-      revoker_name: Адкліканае
   notes:
     show:
       title: 'Нататка: %{id}'
index a31c0917926d552f0fc070187fd712de64c6d7b7..f63aefc9dbe0e0330ed8709052a908b40dc1ee4a 100644 (file)
@@ -433,7 +433,6 @@ be:
         way: Лінія
         relation: Дачыненне
     containing_relation:
-      entry_html: Дачыненне %{relation_name}
       entry_role_html: Дачыненне %{relation_name} (як %{relation_role})
     not_found:
       title: Не знойдзена
@@ -1561,7 +1560,6 @@ be:
         other: '%{count} скаргі(-аў)'
       reported_item: Скарга
     show:
-      title: '%{status} Праблема #%{issue_id}'
       reports:
         one: '%{count} скарга'
         few: '%{count} скаргі'
@@ -2730,7 +2728,6 @@ be:
       reason: 'Прычына блакіроўкі:'
       revoker: 'Адклікаўшы:'
     block:
-      not_revoked: (не адкліканы)
       show: Паказаць
       edit: Рэдагаваць
     page:
@@ -2738,7 +2735,6 @@ be:
       creator_name: Стваральнік
       reason: Прычына блакіроўкі
       status: Статус
-      revoker_name: Адкліканы
   user_mutes:
     index:
       table:
index 7173dac39a981fb3c03a26f9f9e624103bf9cb6d..8b475353f12061d69785c66778528dfbf746b022 100644 (file)
@@ -319,7 +319,6 @@ bg:
         way: Път
         relation: Релация
     containing_relation:
-      entry_html: Релация %{relation_name}
       entry_role_html: Релация %{relation_name} (като %{relation_role})
     not_found:
       sorry: Съжаляваме, %{type} № %{id} не е намерен.
@@ -1148,7 +1147,6 @@ bg:
         other: '%{count} доклада'
       reported_item: Докладван елемент
     show:
-      title: '%{status} Проблем #%{issue_id}'
       reports:
         one: '%{count} доклад'
         other: '%{count} доклада'
index cf9c4da1be3d8b1390940b496d2ace121eb9939f..8d4576d1794141de06d81cc57592e469e266135d 100644 (file)
@@ -389,7 +389,6 @@ bn:
         way: রাস্তা
         relation: সম্পর্ক
     containing_relation:
-      entry_html: সম্পর্ক %{relation_name}
       entry_role_html: সম্পর্ক %{relation_name} (যখন %{relation_role})
     not_found:
       title: পাওয়া যায়নি
@@ -2078,6 +2077,7 @@ bn:
       closed_title: 'মীমাংসিত টীকা #%{note_name}'
       hidden_title: 'লুকানো টীকা #%{note_name}'
       report: এই নোট সম্পর্কে অভিযোগ জানান
+      discussion: আলোচনা
       hide: লুকান
       resolve: মিমাংসা করুন
       reactivate: পুনঃসক্রিয়
index 820609208901d2033e491c947c7a19628043eea4..cdf6d44cf596c14cca2532c555065ba0f5df46ea 100644 (file)
@@ -404,7 +404,6 @@ br:
         way: Hent
         relation: Darempred
     containing_relation:
-      entry_html: Darempred %{relation_name}
       entry_role_html: Darempred %{relation_name} (evel %{relation_role})
     not_found:
       title: N'eo ket bet kavet
@@ -1495,7 +1494,6 @@ br:
         open: Digor
         resolved: Diskoulmet
     show:
-      title: '%{status} Kudenn #%{issue_id}'
       reports:
         one: 1 danevell
         two: 2 zanevell
@@ -2417,7 +2415,7 @@ br:
       upload_trace: Kas ur roud
       all_traces: An holl roudoù
       my_traces: Ma roudoù
-      traces_from: Roudoù GPS foran gant %{user}
+      traces_from_html: Roudoù GPS foran gant %{user}
       remove_tag_filter: Lemel ar sil tikedennoù
     destroy:
       scheduled_for_deletion: Roudenn da vezañ dilamet
@@ -2789,7 +2787,6 @@ br:
       reason: 'Abeg ar stankadur :'
       revoker: 'Torrer :'
     block:
-      not_revoked: (n'eo ket torret)
       show: Diskouez
       edit: Aozañ
     page:
@@ -2797,13 +2794,12 @@ br:
       creator_name: Krouer
       reason: Abeg evit stankañ
       status: Statud
-      revoker_name: Torret gant
     navigation:
       all_blocks: An holl stankadurioù
       blocks_on_me: Stankadurioù evidon
-      blocks_on_user: Stankadurioù evit %{user}
+      blocks_on_user_html: Stankadurioù evit %{user}
       blocks_by_me: Stankadurioù graet ganin
-      blocks_by_user: Stankadurioù gant %{user}
+      blocks_by_user_html: Stankadurioù gant %{user}
       block: 'Stankadur #%{id}'
       new_block: Stankadenn nevez
   user_mutes:
index ad06e69178cee2cf91743fa93d2c553979b2f9d4..c34b08750743d2b73235267af6efeeac514f4c96 100644 (file)
@@ -204,7 +204,6 @@ bs:
         way: Putanja
         relation: Relacija
     containing_relation:
-      entry_html: Relacija %{relation_name}
       entry_role_html: Relacija %{relation_name} (kao %{relation_role})
     not_found:
       sorry: 'Žao nam je, ali %{type} #%{id} se ne može naći.'
@@ -1398,7 +1397,6 @@ bs:
       reason: Razlog za blokadu
       revoker: 'Opozivalac:'
     block:
-      not_revoked: (nije opozvano)
       show: Pokazati
       edit: Urediti
     page:
@@ -1406,7 +1404,6 @@ bs:
       creator_name: Kreator
       reason: Razlog za blokadu
       status: Stanje
-      revoker_name: Opozvano od strane
   notes:
     index:
       id: Id
index 8c309fb2fba1d57c2e8ff61186ed815b1cfeccd2..3fede6bc56d25262f5b042677fcc518797fef93e 100644 (file)
@@ -403,7 +403,6 @@ ca:
         way: Via
         relation: Relació
     containing_relation:
-      entry_html: Relació %{relation_name}
       entry_role_html: Relació %{relation_name} (com a %{relation_role})
     not_found:
       title: No s'ha trobat
@@ -1459,7 +1458,6 @@ ca:
         other: '%{count} Informes'
       reported_item: Element denunciat
     show:
-      title: '%{status} Incidència #%{issue_id}'
       reports:
         one: '%{count} informe'
         other: '%{count} informes'
@@ -2453,7 +2451,7 @@ ca:
       upload_trace: Puja una traça
       all_traces: Totes les traces
       my_traces: Les meves traces
-      traces_from: Traces públiques de %{user}
+      traces_from_html: Traces públiques de %{user}
       remove_tag_filter: Elimina el filtre d'etiquetes
     destroy:
       scheduled_for_deletion: Traça programada per a ser suprimida
@@ -2808,7 +2806,6 @@ ca:
       reason: 'Motiu del blocatge:'
       revoker: 'Revoker:'
     block:
-      not_revoked: (no revocat)
       show: Mostra
       edit: Edita
     page:
@@ -2816,13 +2813,12 @@ ca:
       creator_name: Creador
       reason: Motiu del blocatge
       status: Estat
-      revoker_name: Revocat per
     navigation:
       all_blocks: Tots els bloquejos
       blocks_on_me: Bloquejos a mi
-      blocks_on_user: Bloquejos a %{user}
+      blocks_on_user_html: Bloquejos a %{user}
       blocks_by_me: Bloquejos fets per mi
-      blocks_by_user: Bloquejos fets per %{user}
+      blocks_by_user_html: Bloquejos fets per %{user}
       block: 'Bloqueig #%{id}'
   user_mutes:
     index:
index 8f28d55e54d03f04121ca063952915571e6ed6a1..e3fa5a6124c736114995fa23af0dc440b87deb46 100644 (file)
@@ -365,7 +365,6 @@ ce:
         way: Сиз
         relation: Хилар
     containing_relation:
-      entry_html: Хилар %{relation_name}
       entry_role_html: Хилар %{relation_name} (ролехь %{relation_role})
     not_found:
       title: Цакарийна
@@ -1259,7 +1258,7 @@ ce:
           "yes": Йолу меттиг
         railway:
           abandoned: ДӀасабаькхна цӀерпоштан некъ
-          buffer_stop: Ð\91Ñ\83Ñ\84еÑ\80ан Ñ\81аÑ\86аÑ\80
+          buffer_stop: Ð\91Ñ\83Ñ\84еÑ\80ан Ñ\81оÑ\86Ñ\83нгÓ\80а
           construction: Баьш болу цӀерпоштнекъ
           disused: ДӀатесна цӀерпоштан некъ
           funicular: Фуникулер
@@ -1276,12 +1275,12 @@ ce:
           rail: Рельс
           spur: ЦӀерпоштан лини
           station: ЦӀерпоштан вокзал
-          stop: Ð¦Ó\80еÑ\80поÑ\88Ñ\82ан Ñ\81аÑ\86аÑ\80
+          stop: Ð¦Ó\80еÑ\80поÑ\88Ñ\82ан Ñ\81оÑ\86Ñ\83нгÓ\80а
           subway: Метро
           subway_entrance: Метро чувола меттиг
           switch: ЦӀерпоштан коммутатор
           tram: Трамвай
-          tram_stop: Ð¢Ñ\80амвайан Ñ\81аÑ\86аÑ\80
+          tram_stop: Ð¢Ñ\80амвайн Ñ\81оÑ\86Ñ\83нгÓ\80а
           turntable: Чуваьрзу гуо
           yard: ЦӀерпоштан керт
         shop:
@@ -1494,7 +1493,6 @@ ce:
         open: Йиллина
         resolved: Кечйина
     show:
-      title: '%{status} проблема #%{issue_id}'
       reports:
         one: '%{count} хаам'
         other: '%{count} хаамаш'
@@ -2375,6 +2373,9 @@ ce:
           hospital: Госпиталь
           building: Мехала гӀишло
           station: ЦӀерпоштан вокзал
+          railway_halt: ЦӀерпоштан соцунгӀа
+          subway_station: Метрон станци
+          tram_stop: Трамвайн соцунгӀа
           summit: Бохь
           peak: Ломан бохь
           tunnel: Пунктирни турба = тоннель
@@ -2485,7 +2486,7 @@ ce:
         other: Хьан %{count} лараш йу чуйахаре сатуьйсуш. Дехар ду, кхин дӀа чудалале,
           уьш чекхдовларе сатуьйсийла хьажа, кхечу лелочарна рагӀ дӀа ца йайтархьама.
     edit:
-      cancel: Ð\94Ó\80адаккха
+      cancel: Ð\99Ñ\83Ñ\85айаккха
       title: Трек нисайа %{name}
       heading: Трек нисайар %{name}
       visibility_help: хӀара хӀун бохург ду?
@@ -2541,7 +2542,7 @@ ce:
       upload_trace: Чуйаккха трек
       all_traces: Ерриге а трекаш
       my_traces: Сан трекаш
-      traces_from: '%{user}-ан йукъара трекаш'
+      traces_from_html: '%{user}-ан йукъара трекаш'
       remove_tag_filter: ДӀаяккха теган фильтр
     destroy:
       scheduled_for_deletion: ДӀаяккха лерина трек
@@ -2936,7 +2937,6 @@ ce:
       reason: 'Блоктохаран бахьана:'
       revoker: 'БлокдӀайаьккхинарг:'
     block:
-      not_revoked: (блок дIа ца йаьккхина)
       show: Гайта
       edit: Нисйан
     page:
@@ -2944,13 +2944,12 @@ ce:
       creator_name: Автор
       reason: Блоктохаран бахьана
       status: Статус
-      revoker_name: ДӀайаьккхина блок
     navigation:
       all_blocks: Ерриге а блокаш
       blocks_on_me: Сан блоктохарш
-      blocks_on_user: Блокаш йу %{user} тӀехь
+      blocks_on_user_html: Блокаш йу %{user} тӀехь
       blocks_by_me: Сан блоктохарш
-      blocks_by_user: Блокаш йина %{user}
+      blocks_by_user_html: Блокаш йина %{user}
       block: 'Блок #%{id}'
       new_block: Керла блок
   user_mutes:
@@ -2990,6 +2989,7 @@ ce:
       description: Цуьнах лаьцна
       created_at: Кхоьллина
       last_changed: Хийцина
+      status: Статус
     show:
       title: 'Билгалдаккхар: %{id}'
       description: Цуьнах лаьцна
index 26024bec2ffd8998d49e49e00fc66b297fc60072..fca91575a102f95eeaf4f91cc19f16a70618221d 100644 (file)
@@ -106,6 +106,7 @@ cs:
       message: Zpráva
       node: Uzel
       node_tag: Tag uzlu
+      note: Poznámka
       old_node: Starý uzel
       old_node_tag: Tag starého uzlu
       old_relation: Stará relace
@@ -445,7 +446,6 @@ cs:
         way: Cesta
         relation: Relace
     containing_relation:
-      entry_html: Relace %{relation_name}
       entry_role_html: Relace %{relation_name} (jako %{relation_role})
     not_found:
       title: Nenalezeno
@@ -1587,7 +1587,6 @@ cs:
         open: Otevřeno
         resolved: Vyřešeno
     show:
-      title: '%{status} Problém #%{issue_id}'
       reports:
         one: '%{count} hlášení'
         few: '%{count} hlášení'
@@ -2661,7 +2660,7 @@ cs:
       upload_trace: Nahrát stopu
       all_traces: Všechny stopy
       my_traces: Moje stopy
-      traces_from: Veřejné stopy uživatele %{user}
+      traces_from_html: Veřejné stopy uživatele %{user}
       remove_tag_filter: Vymazat filtr tagů
     destroy:
       scheduled_for_deletion: Stopa označena ke smazání
@@ -3070,7 +3069,6 @@ cs:
       reason: 'Důvod bloku:'
       revoker: 'Zrušil:'
     block:
-      not_revoked: (nezrušeno)
       show: Zobrazit
       edit: Upravit
     page:
@@ -3078,13 +3076,12 @@ cs:
       creator_name: Autor
       reason: Důvod pro blok
       status: Stav
-      revoker_name: Zrušil
     navigation:
       all_blocks: Všechny bloky
       blocks_on_me: Moje zablokování
-      blocks_on_user: Bloky uživatele %{user}
+      blocks_on_user_html: Bloky uživatele %{user}
       blocks_by_me: Zablokování mnou
-      blocks_by_user: Bloky od uživatele %{user}
+      blocks_by_user_html: Bloky od uživatele %{user}
       block: 'Blok #%{id}'
       new_block: Nové blokování
   user_mutes:
@@ -3126,6 +3123,11 @@ cs:
       description: Popis
       created_at: Vytvořeno
       last_changed: Poslední změna
+      apply: Použít
+      all: Všechny
+      open: Otevřené
+      closed: Uzavřené
+      status: Stav
     show:
       title: 'Poznámka: %{id}'
       description: Popis
@@ -3144,6 +3146,9 @@ cs:
       report: nahlásit tuto poznámku
       anonymous_warning: Tato poznámka zahrnuje komentáře anonymních uživatelů, které
         by se měly nezávisle ověřit.
+      discussion: Diskuse
+      subscribe: Odebírat
+      unsubscribe: Zrušit odebírání
       hide: Skrýt
       resolve: Vyřešit
       reactivate: Reaktivovat
index fd2297d509001c47382ff498776ec6ac803a1be5..9fb4f10d2488a75abeebeb07746881a814b8f158 100644 (file)
@@ -22,7 +22,7 @@ cy:
         create: Cyhoeddi
         update: Diweddaru
       issue_comment:
-        create: Ychwanegu sylw
+        create: Ychwanegu Sylw
       message:
         create: Anfon
       client_application:
@@ -60,6 +60,7 @@ cy:
       message: Neges
       node: Nod
       node_tag: Tag Nod
+      note: Nodyn
       old_node: Hen Nod
       old_node_tag: Tag Hen Nod
       old_relation: Hen Berthynas
@@ -296,7 +297,7 @@ cy:
       show:
         title: Dileu fy nghyfrif
         warning: Rhybudd! Mae'r broses dileu cyfrif yn derfynol, ac ni ellir ei gwrthdroi.
-        delete_account: Dileu cyfrif
+        delete_account: Dileu Cyfrif
         delete_introduction: 'Gallwch chi ddileu eich cyfrif OpenStreetMap gan ddefnyddio''r
           botwm isod. Nodwch y manylion canlynol:'
         delete_profile: Bydd eich gwybodaeth broffil, gan gynnwys eich afatar, disgrifiad
@@ -337,7 +338,7 @@ cy:
           yn y Parth Cyhoeddus.
         link text: beth yw hwn?
       save changes button: Cadw newidiadau
-      delete_account: Dileu cyfrif...
+      delete_account: Dileu Cyfrif...
     go_public:
       heading: Golygu cyhoeddus
       currently_not_public: Ar hyn o bryd mae eich golygiadau yn ddienw ac ni all
@@ -366,7 +367,7 @@ cy:
     no_comment: (dim sylw)
     part_of: Rhan o
     part_of_relations:
-      zero: '%{count} perthnasoedd'
+      zero: '%{count} perthnasau'
       one: '%{count} perthynas'
       two: '%{count} berthynas'
       few: '%{count} pherthynas'
@@ -425,8 +426,7 @@ cy:
         way: Llwybr
         relation: Perthynas
     containing_relation:
-      entry_html: Perthynas %{relation_name}
-      entry_role_html: Perthynas %{relation_name} (fel %{relation_role})
+      entry_role_html: '%{relation_name} (fel %{relation_role})'
     not_found:
       title: Heb ei Ganfod
       sorry: 'Ymddiheurwn, ni ellir canfod %{type} #%{id}.'
@@ -470,8 +470,8 @@ cy:
       colour_preview: Rhagolwg lliw %{colour_value}
       email_link: E-bost %{email}
     query:
-      title: Nodweddion Ymholiad
-      introduction: Cliciwch ar y map i ddarganfod nodweddion gerllaw.
+      title: Ymholiad Nodweddion
+      introduction: Cliciwch ar y map i weld nodweddion gerllaw.
       nearby: Nodweddion gerllaw
       enclosing: Nodweddion amgáu
   nodes:
@@ -553,8 +553,8 @@ cy:
       closed_ago_html: Caëwyd %{time_ago}
       created_ago_by_html: Crëwyd %{time_ago} gan %{user}
       closed_ago_by_html: Caëwyd %{time_ago} gan %{user}
-      discussion: Sgwrs
-      join_discussion: Mewngofnodwch i ymuno â'r sgwrs
+      discussion: Trafodaeth
+      join_discussion: Mewngofnodwch i ymuno â'r drafodaeth
       still_open: Mae'r grŵp newid dal ar agor - bydd trafodaeth yn agor pan fydd
         y grŵp newid wedi cau.
       subscribe: Tanysgrifio
@@ -571,8 +571,8 @@ cy:
       nodes_paginated: Nodau (%{x}-%{y} o %{count})
       ways: Llwybrau (%{count})
       ways_paginated: Llwybrau (%{x}-%{y} o %{count})
-      relations: Perthnasoedd (%{count})
-      relations_paginated: Perthnasoedd (%{x}-%{y} o %{count})
+      relations: Perthnasau (%{count})
+      relations_paginated: Perthnasau (%{x}-%{y} o %{count})
     timeout:
       sorry: Mae'n ddrwg gennym, cymerodd y rhestr o grwpiau newid y gofynnoch amdanynt
         rhy hir i'w hadalw.
@@ -622,7 +622,7 @@ cy:
     show:
       title: Dyddiadur %{user} | %{title}
       user_title: Dyddiadur %{user}
-      discussion: Sgwrs
+      discussion: Trafodaeth
       subscribe: Tanysgrifio
       unsubscribe: Dad-danysgrifio
       leave_a_comment: Sylw
@@ -687,6 +687,8 @@ cy:
       post: Post
       when: Pryd
       comment: Sylw
+    new:
+      heading: Ychwanegu sylw at y drafodaeth cofnod dyddiadur canlynol?
   doorkeeper:
     flash:
       applications:
@@ -928,7 +930,7 @@ cy:
           office: Adeilad Swyddfa
           public: Adeilad Cyhoeddus
           residential: Adeilad Preswyl
-          retail: Adeilad Adwerthu
+          retail: Adeilad Manwerthu
           roof: To
           ruins: Adeilad Adfeiliedig
           school: Adeilad Ysgol
@@ -1105,7 +1107,7 @@ cy:
           reservoir: Cronfa Ddŵr
           reservoir_watershed: Gwahanfa Ddŵr
           residential: Ardal Breswyl
-          retail: Parc Adwerthu
+          retail: Ardal Fanwerthu
           village_green: Llain Pentref
           vineyard: Gwinllan
           "yes": Defnydd Tir
@@ -1554,7 +1556,10 @@ cy:
         open: Agored
         resolved: Wedi datrys
     show:
-      title: '%{status} Gwall #%{issue_id}'
+      title:
+        open: 'Mater agored #%{issue_id}'
+        ignored: 'Mater wedi''i anwybyddu #%{issue_id}'
+        resolved: 'Mater wedi''i ddatrys #%{issue_id}'
       reports:
         zero: '%{count} adroddiad'
         one: '%{count} adroddiad'
@@ -1910,6 +1915,16 @@ cy:
       title: Dewisiadau
       preferred_editor: Hoff Olygydd
       preferred_languages: Ieithoedd
+      preferred_site_color_scheme: Dewis Lliw Gwefan
+      site_color_schemes:
+        auto: Awtomatig
+        light: Golau
+        dark: Tywyll
+      preferred_map_color_scheme: Dewis Lliw Map
+      map_color_schemes:
+        auto: Awtomatig
+        light: Golau
+        dark: Tywyll
       edit_preferences: Golygu Dewisiadau
     edit:
       title: Golygu Dewisiadau
@@ -2349,7 +2364,7 @@ cy:
           common: Comin
           built_up: Ardal Adeiledig
           resident: Ardal breswyl
-          retail: Ardal adwerthu
+          retail: Ardal fanwerthu
           industrial: Ardal ddiwydiannol
           commercial: Ardal fasnachol
           heathland: Rhos
@@ -2555,7 +2570,7 @@ cy:
       upload_trace: Uwchlwytho ôl
       all_traces: Pob Ôl
       my_traces: Fy Olion
-      traces_from: Olion Cyhoeddus gan %{user}
+      traces_from_html: Olion Cyhoeddus gan %{user}
       remove_tag_filter: Dileu Hidlydd Tagiau
     destroy:
       scheduled_for_deletion: Mae'r ôl wedi'i drefnu i'w ddileu
@@ -2893,6 +2908,9 @@ cy:
           few: '%{count} blynedd'
           many: '%{count} blynedd'
           other: '%{count} blynedd'
+      short:
+        time_in_future_title: '%{time_absolute}; ymhen %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blociau ar %{name}
       heading_html: Rhestr Blociau ar %{name}
@@ -2911,21 +2929,21 @@ cy:
       reason: 'Rheswm dros y bloc:'
       revoker: 'Dad-flociwr:'
     block:
-      not_revoked: (heb ei ddirymu)
       show: Dangos
       edit: Golygu
     page:
       display_name: Defnyddiwr wedi'i blocio
       creator_name: Crëwr
       reason: Rheswm dros flocio
+      start: Dechrau
+      end: Diwedd
       status: Statws
-      revoker_name: Dirymwyd gan
     navigation:
       all_blocks: Pob Bloc
       blocks_on_me: Blociau arnaf i
-      blocks_on_user: Blociau ar %{user}
+      blocks_on_user_html: Blociau ar %{user}
       blocks_by_me: Blociau gennyf i
-      blocks_by_user: Blociau gan %{user}
+      blocks_by_user_html: Blociau gan %{user}
       block: 'Bloc #%{id}'
       new_block: Bloc Newydd
   user_mutes:
@@ -2939,6 +2957,8 @@ cy:
         few: Rydych chi wedi anwybyddu %{count} defnyddiwr
         many: Rydych chi wedi anwybyddu %{count} defnyddiwr
         other: Rydych chi wedi anwybyddu %{count} defnyddiwr
+      user_mute_admins_and_moderators: Gallwch anwybyddu'r Gweinyddwyr a Chymedrolwyr
+        ond ni fydd eu negeseuon yn cael eu hanwybyddu.
       table:
         thead:
           muted_user: Defnyddiwr ag Anwybyddwyd
@@ -2965,6 +2985,11 @@ cy:
       description: Disgrifiad
       created_at: Crëwyd
       last_changed: Newidiwyd ddiwethaf
+      apply: Rhoi ar waith
+      all: Popeth
+      open: Agored
+      closed: Wedi cau
+      status: Statws
     show:
       title: 'Nodyn: %{id}'
       description: Disgrifiad
@@ -2983,6 +3008,9 @@ cy:
       report: roi gwybod am y nodyn hwn
       anonymous_warning: Mae'r nodyn hwn yn cynnwys sylwadau gan ddefnyddwyr dienw
         y dylid eu gwirio'n annibynnol.
+      discussion: Trafodaeth
+      subscribe: Tanysgrifio
+      unsubscribe: Dad-danysgrifio
       hide: Cuddio
       resolve: Datrys
       reactivate: Ail agor
@@ -3075,8 +3103,8 @@ cy:
       createnote_disabled_tooltip: Chwyddwch mewn i ychwanegu nodyn i'r map
       map_notes_zoom_in_tooltip: Chwyddwch mewn i weld nodiadau'r map
       map_data_zoom_in_tooltip: Chwyddwch mewn i weld data'r map
-      queryfeature_tooltip: Manylion nodweddion
-      queryfeature_disabled_tooltip: Chwyddwch i mewn i gael manylion nodweddion
+      queryfeature_tooltip: Ymholiad nodweddion
+      queryfeature_disabled_tooltip: Chwyddwch i mewn i wneud ymholiad nodweddion
       embed_html_disabled: Nid yw mewnosod HTML ar gael ar gyfer yr haen fap hon
     edit_help: Symudwch y map a chwyddwch i mewn i leoliad rydych chi am ei olygu,
       yna cliciwch yma.
@@ -3187,7 +3215,7 @@ cy:
       directions_to: Cyfarwyddiadau i yma
       add_note: Ychwanegu nodyn yma
       show_address: Dangos cyfeiriad
-      query_features: Manylion nodweddion
+      query_features: Ymholiad nodweddion
       centre_map: Canoli'r map yma
   redactions:
     edit:
index 6a56a87e922b18a675ef2b8d88276a7646d323a7..9e136347ec4d4e4fa2485f09c979cbaa26694855 100644 (file)
@@ -84,11 +84,12 @@ da:
       diary_comment: Blogkommentar
       diary_entry: Blogindlæg
       friend: Ven
-      issue: Problem
+      issue: Sag
       language: Sprog
       message: Meddelelse
       node: Punkt
       node_tag: Punktegenskab
+      note: Bemærkning
       old_node: Tidligere punkt
       old_node_tag: Tidligere punktegenskab
       old_relation: Tidligere relation
@@ -396,8 +397,7 @@ da:
         way: Vej
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
-      entry_role_html: Relation %{relation_name} (som %{relation_role})
+      entry_role_html: '%{relation_name} (som %{relation_role})'
     not_found:
       title: Ikke fundet
       sorry: Beklager, %{type} med id %{id} blev ikke fundet.
@@ -1507,7 +1507,7 @@ da:
       more_results: Flere resultater
   issues:
     index:
-      title: Problemer
+      title: Sager
       select_status: Vælg status
       select_type: Vælg type
       select_last_updated_by: Vælg sidst opdateret af
@@ -1517,7 +1517,7 @@ da:
       search_guidance: 'Søgning blandt sager:'
       states:
         ignored: Ignoréret
-        open: Åbn
+        open: Åben
         resolved: Løst
     page:
       user_not_found: Brugeren findes ikke
@@ -1536,7 +1536,10 @@ da:
         open: Åben
         resolved: Løst
     show:
-      title: '%{status} Sag #%{issue_id}'
+      title:
+        open: Åben sag %{issue_id}
+        ignored: 'Ignoreret sag #%{issue_id}'
+        resolved: Løst sag %{issue_id}
       reports:
         one: '%{count} rapport'
         other: '%{count} rapporter'
@@ -1619,7 +1622,7 @@ da:
     edit: Redigér
     history: Historik
     export: Eksportér
-    issues: Problemer
+    issues: Sager
     gps_traces: GPS-spor
     user_diaries: Brugerblogs
     edit_with: Redigér med %{editor}
@@ -1925,6 +1928,16 @@ da:
       title: Mine præferencer
       preferred_editor: Foretrukken editor
       preferred_languages: Foretrukne sprog
+      preferred_site_color_scheme: Foretrukket farvetema for webside
+      site_color_schemes:
+        auto: Auto
+        light: Lyst
+        dark: Mørkt
+      preferred_map_color_scheme: Foretrukket farvetema for kort
+      map_color_schemes:
+        auto: Auto
+        light: Lyst
+        dark: Mørkt
       edit_preferences: Rediger præferencer
     edit:
       title: Rediger præferencer
@@ -2009,8 +2022,8 @@ da:
         older: Ældre indlæg
         newer: Nyere indlæg
       issues:
-        older: Ældre problemer
-        newer: Nyere problemer
+        older: Ældre sager
+        newer: Nyere sager
       traces:
         older: Ældre spor
         newer: Nyere spor
@@ -2599,7 +2612,7 @@ da:
       upload_trace: Overfør et spor
       all_traces: Alle GPS-spor
       my_traces: Mine spor
-      traces_from: Offentlige GPS-spor fra %{user}
+      traces_from_html: Offentlige GPS-spor fra %{user}
       remove_tag_filter: Fjern tag-filter
     destroy:
       scheduled_for_deletion: Spor planlagt til at blive slettet
@@ -2983,6 +2996,15 @@ da:
         years:
           one: '%{count} år'
           other: '%{count} år'
+      short:
+        ended: ophørt
+        revoked_html: ophævet af %{name}
+        active: aktiv
+        active_unread: aktiv ulæst
+        expired_unread: udløbet ulæst
+        read_html: læst %{time}
+        time_in_future_title: '%{time_absolute}; om %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blokeringer af %{name}
       heading_html: Liste over blokeringer af %{name}
@@ -3001,21 +3023,21 @@ da:
       reason: 'Årsag til blokering:'
       revoker: 'Tilbagekalder:'
     block:
-      not_revoked: (ikke tilbagekaldt)
       show: Vis
       edit: Redigér
     page:
       display_name: Blokkeret bruger
       creator_name: Oprettet af
       reason: Årsag til blokering
+      start: Start
+      end: Slut
       status: Status
-      revoker_name: Tilbagekaldt af
     navigation:
       all_blocks: Alle blokeringer
       blocks_on_me: Blokeringer af mig
-      blocks_on_user: Blokeringer af %{user}
+      blocks_on_user_html: Blokeringer af %{user}
       blocks_by_me: Blokeringer udført af mig
-      blocks_by_user: Blokeringer udført af %{user}
+      blocks_by_user_html: Blokeringer udført af %{user}
       block: 'Blokering #%{id}'
       new_block: Ny blokering
   user_mutes:
@@ -3054,6 +3076,11 @@ da:
       description: Beskrivelse
       created_at: Oprettet den
       last_changed: Sidst ændret
+      apply: Anvend
+      all: Alle
+      open: Åben
+      closed: Lukket
+      status: Status
     show:
       title: 'Bemærkning: %{id}'
       description: Beskrivelse
@@ -3072,10 +3099,13 @@ da:
       report: rapportere denne bemærkning
       anonymous_warning: Denne bemærkning indeholder kommentarer fra anonyme brugere
         som bør undergå en uafhængig kontrol af oplysningerne.
+      discussion: Diskussion
+      subscribe: Abonner
+      unsubscribe: Afmeld abonnement
       hide: Skjul
       resolve: Løs
       reactivate: Genaktiver
-      comment_and_resolve: Kommentere på og løse
+      comment_and_resolve: Kommenter og løs
       comment: Kommenter
       log_in_to_comment: Log ind for at kommentere på denne bemærkning
       report_link_html: Hvis denne bemærkning indeholder følsomme oplysninger, der
index d3b2089e29debdc3c4ff9f1ed3084e1044f82ec6..6202a187538b708c16a41ce08459975e2a7f8328 100644 (file)
@@ -79,6 +79,7 @@
 # Author: Milet
 # Author: Mormegil
 # Author: Nadjita
+# Author: Nielkrokodil
 # Author: Onefloid
 # Author: P24
 # Author: Pczaja
@@ -482,7 +483,6 @@ de:
         way: Weg
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (als %{relation_role})
     not_found:
       title: Nicht gefunden
@@ -1634,7 +1634,6 @@ de:
         open: Offen
         resolved: Erledigt
     show:
-      title: '%{status} Problem Nr. %{issue_id}'
       reports:
         one: Eine Meldung
         other: '%{count} Meldungen'
@@ -2580,7 +2579,7 @@ de:
           tunnel: Gestrichelter Rand = Tunnel
           bridge: Schwarzer Rand = Brücke
           private: Privater Zugang
-          destination: Nur für Anrainer
+          destination: Nur Zufahrt gestattet
           construction: Straßen im Bau
           bus_stop: Bushaltestelle
           bicycle_shop: Fahrradladen
@@ -2748,7 +2747,7 @@ de:
       upload_trace: Lade einen Track hoch
       all_traces: Alle Tracks
       my_traces: Meine Tracks
-      traces_from: Öffentliche Tracks von %{user}
+      traces_from_html: Öffentliche Tracks von %{user}
       remove_tag_filter: Tag-Filter entfernen
     destroy:
       scheduled_for_deletion: Für die Löschung vorgesehener Track
@@ -3161,7 +3160,6 @@ de:
       reason: 'Grund der Sperre:'
       revoker: 'Aufgehoben von:'
     block:
-      not_revoked: (nicht aufgehoben)
       show: Anzeigen
       edit: Bearbeiten
     page:
@@ -3169,13 +3167,12 @@ de:
       creator_name: Urheber
       reason: Grund der Sperre
       status: Status
-      revoker_name: Aufgehoben von
     navigation:
       all_blocks: Alle Sperren
       blocks_on_me: Meine Sperren
-      blocks_on_user: Sperren für %{user}
+      blocks_on_user_html: Sperren für %{user}
       blocks_by_me: Sperren von mir
-      blocks_by_user: Sperren von %{user}
+      blocks_by_user_html: Sperren von %{user}
       block: 'Sperre #%{id}'
       new_block: Neue Sperre
   user_mutes:
@@ -3216,6 +3213,11 @@ de:
       description: Hinweis
       created_at: Erstellt am
       last_changed: Zuletzt geändert
+      apply: Anwenden
+      all: Alle
+      open: Offen
+      closed: Geschlossen
+      status: Status
     show:
       title: 'Hinweis: %{id}'
       description: Beschreibung
@@ -3234,6 +3236,9 @@ de:
       report: diesen Hinweis melden
       anonymous_warning: Dieser Hinweis enthält Kommentare von anonymen Benutzern,
         die unabhängig geprüft werden sollten.
+      discussion: Diskussion
+      subscribe: Abonnieren
+      unsubscribe: Abbestellen
       hide: Verstecken
       resolve: Erledigt
       reactivate: Reaktivieren
index a51629a53a679c74bd2b2255559abf9293f58cdd..49369bc9f974056c4ad5befccedf333e59fb74b2 100644 (file)
@@ -239,7 +239,6 @@ diq:
         way: Ray
         relation: Elaqe
     containing_relation:
-      entry_html: Elaqe %{relation_name}
       entry_role_html: Eleqe %{relation_name} (%{relation_role} deye)
     not_found:
       title: Nêvineya
@@ -1077,14 +1076,12 @@ diq:
       edit: Bıvurne
       revoker: 'Terkner:'
     block:
-      not_revoked: (nê terkiyayo)
       show: Bımocne
       edit: Bıvurne
     page:
       display_name: Karberê kılitbiyayey
       creator_name: Vıraştoğ
       status: Weziyet
-      revoker_name: Terknoğ
   notes:
     index:
       description: Şınasnayış
index 12d4779b156483247ec98648ff3873274f270ecf..5c29dfc864513acdd87e7c8fa6a656cf1483865c 100644 (file)
@@ -224,7 +224,6 @@ dsb:
         way: Puś
         relation: Relacija
     containing_relation:
-      entry_html: Relacija %{relation_name}
       entry_role_html: Relacija %{relation_name} (ako %{relation_role})
     not_found:
       sorry: 'Bóžko %{type} #%{id} njejo se dał namakaś.'
@@ -1548,7 +1547,6 @@ dsb:
       reason: 'Pśicyna za blokěrowanje:'
       revoker: 'Anulěrowaŕ:'
     block:
-      not_revoked: (nic wótpórany)
       show: Pokazaś
       edit: Wobźěłaś
     page:
@@ -1556,7 +1554,6 @@ dsb:
       creator_name: Blokěrowaŕ
       reason: Pśicyna za blokěrowanje
       status: Status
-      revoker_name: Wótpórany wót
   notes:
     index:
       title: Pokazki, kótarež su se wót %{user} dali abo komentěrowali
index a1056ee0937d1ada9aa2b6b843d822d57566ac53..a4b77ecd2cc92bf9e3fc24916f79b2bd3fb619b7 100644 (file)
@@ -100,6 +100,7 @@ el:
       message: Μήνυμα
       node: Κόμβος
       node_tag: Ετικέτα κόμβου
+      note: Σημείωση
       old_node: Παλαιός κόμβος
       old_node_tag: Παλαιά ετικέτα κόμβου
       old_relation: Παλαιά σχέση
@@ -414,8 +415,7 @@ el:
         way: Γραμμή
         relation: Σχέση
     containing_relation:
-      entry_html: Σχέση %{relation_name}
-      entry_role_html: Σχέση %{relation_name} (ως %{relation_role})
+      entry_role_html: '%{relation_name} (ως %{relation_role})'
     not_found:
       title: Δεν βρέθηκε
       sorry: 'Λυπάμαι, το %{type} #%{id} δεν βρέθηκε.'
@@ -1572,7 +1572,10 @@ el:
         open: Ανοιχτό
         resolved: Επιλυμένο
     show:
-      title: '%{status} Ζήτημα #%{issue_id}'
+      title:
+        open: 'Ανοιχτό ζήτημα #%{issue_id}'
+        ignored: 'Αγνοημένο ζήτημα #%{issue_id}'
+        resolved: 'Επιλυμένο ζήτημα #%{issue_id}'
       reports:
         one: '%{count} αναφορά'
         other: '%{count} αναφορές'
@@ -1975,6 +1978,16 @@ el:
       title: Οι προτιμήσεις μου
       preferred_editor: Προτιμώμενος επεξεργαστής
       preferred_languages: Προτιμώμενες γλώσσες
+      preferred_site_color_scheme: Προτιμώμενος συνδυασμός χρωμάτων ιστότοπου
+      site_color_schemes:
+        auto: Αυτόματο
+        light: Φωτεινό
+        dark: Σκοτεινό
+      preferred_map_color_scheme: Προτιμώμενος συνδυασμός χρωμάτων χάρτη
+      map_color_schemes:
+        auto: Αυτόματο
+        light: Φωτεινό
+        dark: Σκοτεινό
       edit_preferences: Επεξεργασία προτιμήσεων
     edit:
       title: Επεξεργασία προτιμίσεων
@@ -2675,7 +2688,7 @@ el:
       upload_trace: Αποστολή ίχνους
       all_traces: Όλα τα ίχνη
       my_traces: Τα ίχνη μου
-      traces_from: Δημόσια ίχνη από %{user}
+      traces_from_html: Δημόσια ίχνη από %{user}
       remove_tag_filter: Κατάργηση φίλτρου ετικετών
     destroy:
       scheduled_for_deletion: Το ίχνος προγραμματίστηκε για διαγραφή
@@ -3067,6 +3080,15 @@ el:
         years:
           one: '%{count} χρόνος'
           other: '%{count} χρόνια'
+      short:
+        ended: τελείωσε
+        revoked_html: ανακλήθηκε από %{name}
+        active: ενεργή
+        active_unread: ενεργή μη αναγνωσμένη
+        expired_unread: έληξε μη αναγνωσμένη
+        read_html: διαβάστηκε στις %{time}
+        time_in_future_title: '%{time_absolute}; σε %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Φραγές στον %{name}
       heading_html: Κατάλογος φραγών στον %{name}
@@ -3085,21 +3107,21 @@ el:
       reason: 'Αιτία φραγής:'
       revoker: 'Έκανε την ανάκληση:'
     block:
-      not_revoked: (δεν έχει ανακληθεί)
       show: Εμφάνιση
       edit: Επεξεργασία
     page:
       display_name: Αποκλεισμένος Χρήστης
       creator_name: Δημιουργός
       reason: Αιτία φραγής
+      start: Έναρξη
+      end: Τέλος
       status: Κατάσταση
-      revoker_name: Ανακλήθηκε από
     navigation:
       all_blocks: Όλες οι φραγές
       blocks_on_me: Φραγές σε μένα
-      blocks_on_user: Φραγές σε %{user}
+      blocks_on_user_html: Φραγές σε %{user}
       blocks_by_me: Φραγές από μένα
-      blocks_by_user: Φραγές από %{user}
+      blocks_by_user_html: Φραγές από %{user}
       block: 'Φραγή #%{id}'
       new_block: Νέα Φραγή
   user_mutes:
@@ -3140,6 +3162,11 @@ el:
       description: Περιγραφή
       created_at: Δημιουργήθηκε στις
       last_changed: Τελευταία αλλαγή
+      apply: Εφαρμογή
+      all: Όλα
+      open: Ανοιχτή
+      closed: Κλειστή
+      status: Κατάσταση
     show:
       title: 'Σημείωση: %{id}'
       description: Περιγραφή
@@ -3158,11 +3185,14 @@ el:
       report: αναφορά αυτής της σημείωσης
       anonymous_warning: Αυτό η σημείωση περιλαμβάνει σχόλια από ανώνυμους χρήστες
         που πρέπει να επαληθεύονται ανεξάρτητα.
+      discussion: Συζήτηση
+      subscribe: Εγγραφή
+      unsubscribe: Κατάργηση εγγραφής
       hide: Απόκρυψη
       resolve: Επιλύστε
       reactivate: Επανενεργοποίηση
       comment_and_resolve: Σχολιάστε και Επιλύστε
-      comment: Σχολιάζω
+      comment: Σχολιάστε
       log_in_to_comment: Συνδεθείτε για να σχολιάσετε σε αυτή την σημείωση
       report_link_html: Εάν αυτή η σημείωση περιέχει ευαίσθητες πληροφορίες που πρέπει
         να αφαιρεθούν, μπορείτε %{link}.
index b478474b2ae4dd8c2e47c7e9b8f5dd7d65f5efdc..5dbdabe23fdc420b3694dc4b9c1a50714fbaad8c 100644 (file)
@@ -296,7 +296,6 @@ en-GB:
         way: Way
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (as %{relation_role})
     not_found:
       title: Not Found
@@ -1768,7 +1767,6 @@ en-GB:
       reason: 'Reason for block:'
       revoker: 'Revoker:'
     block:
-      not_revoked: (not revoked)
       show: Show
       edit: Edit
     page:
@@ -1776,7 +1774,6 @@ en-GB:
       creator_name: Creator
       reason: Reason for block
       status: Status
-      revoker_name: Revoked by
   notes:
     index:
       title: Notes submitted or commented on by %{user}
index 3f2a4cb1408c7337ef826ef5b6451154b717ad29..1ad17e786c9f49c91a0ac0f26355851966d3e3bf 100644 (file)
@@ -59,6 +59,7 @@ en:
       message: "Message"
       node: "Node"
       node_tag: "Node Tag"
+      note: "Note"
       old_node: "Old Node"
       old_node_tag: "Old Node Tag"
       old_relation: "Old Relation"
@@ -356,8 +357,7 @@ en:
         way: "Way"
         relation: "Relation"
     containing_relation:
-      entry_html: "Relation %{relation_name}"
-      entry_role_html: "Relation %{relation_name} (as %{relation_role})"
+      entry_role_html: "%{relation_name} (as %{relation_role})"
     not_found:
       title: Not Found
       sorry: "Sorry, %{type} #%{id} could not be found."
@@ -1001,6 +1001,14 @@ en:
           wayside_shrine: "Wayside Shrine"
           wreck: "Wreck"
           "yes": "Historic Site"
+        information:
+          guidepost: "Guidepost"
+          board: "Information Board"
+          map: "Map"
+          office: "Tourist Office"
+          terminal: "Information Terminal"
+          sign: "Information Sign"
+          stele: "Information Stele"
         junction:
           "yes": "Junction"
         landuse:
@@ -1073,6 +1081,8 @@ en:
           track: "Running Track"
           water_park: "Water Park"
           "yes": "Leisure"
+        lock:
+          "yes": "Lock"
         man_made:
           adit: "Adit"
           advertising: "Advertising"
@@ -1413,6 +1423,17 @@ en:
           building_passage: "Building Passage"
           culvert: "Culvert"
           "yes": "Tunnel"
+        water:
+          lake: "Lake"
+          pond: "Pond"
+          reservoir: "Reservoir"
+          basin: "Water basin"
+          fishpond: "Fish Pond"
+          lagoon: "Lagoon"
+          wastewater: "Waste Water"
+          oxbow: "Oxbow"
+          stream_pool: "Stream Pool"
+          lock: "Lock"
         waterway:
           artificial: "Artificial Waterway"
           boatyard: "Boatyard"
@@ -1477,7 +1498,10 @@ en:
         open: Open
         resolved: Resolved
     show:
-      title: "%{status} Issue #%{issue_id}"
+      title:
+        open: "Open Issue #%{issue_id}"
+        ignored: "Ignored Issue #%{issue_id}"
+        resolved: "Resolved Issue #%{issue_id}"
       reports:
         one: "%{count} report"
         other: "%{count} reports"
@@ -1807,6 +1831,16 @@ en:
       title: My Preferences
       preferred_editor: Preferred Editor
       preferred_languages: Preferred Languages
+      preferred_site_color_scheme: Preferred Website Color Scheme
+      site_color_schemes:
+        auto: Auto
+        light: Light
+        dark: Dark
+      preferred_map_color_scheme: Preferred Map Color Scheme
+      map_color_schemes:
+        auto: Auto
+        light: Light
+        dark: Dark
       edit_preferences: Edit Preferences
     edit:
       title: Edit Preferences
@@ -2544,7 +2578,7 @@ en:
       upload_trace: "Upload a trace"
       all_traces: "All Traces"
       my_traces: "My Traces"
-      traces_from: "Public Traces from %{user}"
+      traces_from_html: "Public Traces from %{user}"
       remove_tag_filter: "Remove Tag Filter"
     destroy:
       scheduled_for_deletion: "Trace scheduled for deletion"
@@ -2895,6 +2929,15 @@ en:
         years:
           one: "%{count} year"
           other: "%{count} years"
+      short:
+        ended: "ended"
+        revoked_html: "revoked by %{name}"
+        active: "active"
+        active_unread: "active unread"
+        expired_unread: "expired unread"
+        read_html: "read at %{time}"
+        time_in_future_title: "%{time_absolute}; in %{time_relative}"
+        time_in_past_title: "%{time_absolute}; %{time_relative}"
     blocks_on:
       title: "Blocks on %{name}"
       heading_html: "List of Blocks on %{name}"
@@ -2913,21 +2956,21 @@ en:
       reason: "Reason for block:"
       revoker: "Revoker:"
     block:
-      not_revoked: "(not revoked)"
       show: "Show"
       edit: "Edit"
     page:
       display_name: "Blocked User"
       creator_name: "Creator"
       reason: "Reason for block"
+      start: "Start"
+      end: "End"
       status: "Status"
-      revoker_name: "Revoked by"
     navigation:
       all_blocks: "All Blocks"
       blocks_on_me: "Blocks on Me"
-      blocks_on_user: "Blocks on %{user}"
+      blocks_on_user_html: "Blocks on %{user}"
       blocks_by_me: "Blocks by Me"
-      blocks_by_user: "Blocks by %{user}"
+      blocks_by_user_html: "Blocks by %{user}"
       block: "Block #%{id}"
       new_block: "New Block"
   user_mutes:
@@ -2989,6 +3032,9 @@ en:
       report: report this note
       coordinates_html: "%{latitude}, %{longitude}"
       anonymous_warning: This note includes comments from anonymous users which should be independently verified.
+      discussion: Discussion
+      subscribe: Subscribe
+      unsubscribe: Unsubscribe
       hide: Hide
       resolve: Resolve
       reactivate: Reactivate
@@ -3007,6 +3053,9 @@ en:
       anonymous_warning_sign_up: "sign up"
       advice: "Your note is public and may be used to update the map, so don't enter personal information, or information from copyrighted maps or directory listings."
       add: Add Note
+    new_readonly:
+      title: "New Note"
+      warning: "New notes cannot be created because the OpenStreetMap API is currently in read-only mode."
     notes_paging_nav:
       showing_page: "Page %{page}"
       next: "Next"
index 5b665dabd7a344e3f2888cecd73c08f62f6ac804..497bfcd3c21aed75b59e52ac660c861d6fa6c05d 100644 (file)
@@ -81,6 +81,7 @@ eo:
       message: Mesaĝo
       node: Nodo
       node_tag: Etikedo de nodo
+      note: Rimarko
       old_node: Malnova nodo
       old_node_tag: Etikedo de malnova nodo
       old_relation: Malnova rilato
@@ -386,8 +387,7 @@ eo:
         way: Linio
         relation: Rilato
     containing_relation:
-      entry_html: Rilato %{relation_name}
-      entry_role_html: Rilato %{relation_name} (kiel %{relation_role})
+      entry_role_html: '%{relation_name} (kiel %{relation_role})'
     not_found:
       title: Ne trovita
       sorry: Bedaŭrinde la %{type} kun id %{id} ne troveblas.
@@ -1529,7 +1529,10 @@ eo:
         open: Malfermita
         resolved: Solvita
     show:
-      title: '%{status} problemo #%{issue_id}'
+      title:
+        open: 'Malfermita problemo #%{issue_id}'
+        ignored: 'Ignorita problemo #%{issue_id}'
+        resolved: 'Solvita problemo #%{issue_id}'
       reports:
         one: '%{count} raporto'
         other: '%{count} raportoj'
@@ -1781,7 +1784,7 @@ eo:
       button: Konfirmi
       success: Via konto estas konfirmita, multan dankon por vi registrado!
       already active: Ĉi tiu konto jam estas konfirmita.
-      unknown token: Ĉi tiu konfirma kodo malvalidiĝis aŭ ne ekzistas.
+      unknown token: Tiu ĉi konfirma kodo eksvalidiĝis aŭ ne ekzistas.
       resend_html: Se vi volas, ke ni resendu la konfirman retleteron, %{reconfirm_link}.
       click_here: alklaku tie ĉi
     confirm_resend:
@@ -1792,7 +1795,7 @@ eo:
       button: Konfirmi
       success: Ŝanĝo de via retpoŝta adreso konfirmita!
       failure: Retadreso jam estis konfirmita per tiu ĵetono.
-      unknown_token: Ĉi tiu konfirma kodo malvalidiĝis aŭ ne ekzistas.
+      unknown_token: Tiu ĉi konfirma kodo eksvalidiĝis aŭ ne ekzistas.
     resend_success_flash:
       confirmation_sent: Ni sendis novan konfirman kodon al %{email}. Tuj kiam vi
         konfirmos vian konton, vi povos ekigi mapigadon.
@@ -1899,6 +1902,16 @@ eo:
       title: Miaj preferoj
       preferred_editor: Preferata redaktilo
       preferred_languages: Preferataj lingvoj
+      preferred_site_color_scheme: Preferata kolorskemo de retejo
+      site_color_schemes:
+        auto: aŭtomate
+        light: hela
+        dark: malhela
+      preferred_map_color_scheme: Preferata kolorskemo de mapo
+      map_color_schemes:
+        auto: aŭtomate
+        light: hela
+        dark: malhela
       edit_preferences: Redakti preferojn
     edit:
       title: Redakti preferojn
@@ -2568,7 +2581,7 @@ eo:
       upload_trace: Alŝuti spuron
       all_traces: Ĉiuj spuroj
       my_traces: Miaj spuroj
-      traces_from: Publikaj spuroj de %{user}
+      traces_from_html: Publikaj spuroj de %{user}
       remove_tag_filter: Forigi filtrilon de etikedoj
     destroy:
       scheduled_for_deletion: Spuro forviŝota
@@ -2869,13 +2882,13 @@ eo:
         kaj poste kunligi la konton kun via identigilo en agordoj de uzanto.
   user_role:
     filter:
-      not_a_role: La ĉeno `%{role}' ne estas valida rolo.
+      not_a_role: La ĉeno '%{role}' ne estas ĝusta rolo.
       already_has_role: La uzanto jam rolas %{role}.
       doesnt_have_role: La uzanto ne rolas %{role}.
       not_revoke_admin_current_user: Ne povas nuligi rolon de administranto de nuna
         uzanto.
     grant:
-      are_you_sure: Ĉu vi certe volas doni la rolon '%{role}'  al la uzanto '%{name}'?
+      are_you_sure: Ĉu vi certe volas doni la rolon '%{role}' al la uzanto '%{name}'?
     revoke:
       are_you_sure: Ĉu vi certe volas nuligi la rolon '%{role}' de la uzanto '%{name}'?
   user_blocks:
@@ -2941,6 +2954,15 @@ eo:
         years:
           one: '%{count} jaro'
           other: '%{count} jaroj'
+      short:
+        ended: finita
+        revoked_html: nuligita de %{name}
+        active: aktiva
+        active_unread: aktiva, nelegita
+        expired_unread: eksvalida, nelegita
+        read_html: legita je %{time}
+        time_in_future_title: '%{time_absolute}; post %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blokadoj por %{name}
       heading_html: Listo de blokadoj por %{name}
@@ -2959,21 +2981,21 @@ eo:
       reason: 'Kialo de blokado:'
       revoker: 'Malblokanto:'
     block:
-      not_revoked: (ne nuligita)
       show: Montri
       edit: Redakti
     page:
       display_name: Blokita uzanto
       creator_name: Kreinto
       reason: Kialo de blokado
+      start: Komenco
+      end: Fino
       status: Stato
-      revoker_name: Nuligita de
     navigation:
       all_blocks: Ĉiuj blokadoj
       blocks_on_me: Blokadoj por mi
-      blocks_on_user: Blokadoj por %{user}
+      blocks_on_user_html: Blokadoj por %{user}
       blocks_by_me: Blokadoj de mi
-      blocks_by_user: Blokadoj de %{user}
+      blocks_by_user_html: Blokadoj de %{user}
       block: 'Blokado #%{id}'
       new_block: Nova blokado
   user_mutes:
@@ -3013,6 +3035,11 @@ eo:
       description: Priskribo
       created_at: Kreita je
       last_changed: Laste ŝanĝita
+      apply: Apliki
+      all: ĉia
+      open: malfermita
+      closed: fermita
+      status: Stato
     show:
       title: 'Rimarko: %{id}'
       description: Priskribo
@@ -3032,6 +3059,9 @@ eo:
       coordinates_html: '%{latitude}; %{longitude}'
       anonymous_warning: Ĉi tiu rimarko enhavas komentojn de anonimuloj, kiuj devas
         esti kontrolitaj sendepende.
+      discussion: Diskuto
+      subscribe: Observi
+      unsubscribe: Malobservi
       hide: Kaŝi
       resolve: Solvi
       reactivate: Remalfermi
index 26b0e2cc75fd8360bbaaa8619826bb68b22cc9b8..29e12c3f3d991e39a3cb3d53781a01380464324c 100644 (file)
@@ -467,7 +467,6 @@ es:
         way: Vía
         relation: Relación
     containing_relation:
-      entry_html: Relación %{relation_name}
       entry_role_html: Relación %{relation_name} (como %{relation_role})
     not_found:
       title: No encontrado
@@ -1617,7 +1616,6 @@ es:
         open: Abierto
         resolved: Resuelto
     show:
-      title: '%{status} Incidencia n.º %{issue_id}'
       reports:
         one: '%{count} reporte'
         other: '%{count} reportes'
@@ -2713,7 +2711,7 @@ es:
       upload_trace: Subir una traza
       all_traces: Todas las trazas
       my_traces: Mis trazas
-      traces_from: Trazas Públicos de %{user}
+      traces_from_html: Trazas Públicos de %{user}
       remove_tag_filter: Eliminar Filtro de Etiquetas
     destroy:
       scheduled_for_deletion: Traza programada para eliminación
@@ -3121,7 +3119,6 @@ es:
       reason: 'Razón del bloqueo:'
       revoker: 'Revocador:'
     block:
-      not_revoked: (no revocado)
       show: Mostrar
       edit: Editar
     page:
@@ -3129,13 +3126,12 @@ es:
       creator_name: Creador
       reason: Razón del bloqueo
       status: Estado
-      revoker_name: Revocado por
     navigation:
       all_blocks: Todos los bloqueos
       blocks_on_me: Bloqueos sobre mí
-      blocks_on_user: Bloqueos en %{user}
+      blocks_on_user_html: Bloqueos en %{user}
       blocks_by_me: Bloqueados por mí
-      blocks_by_user: Bloqueos por %{user}
+      blocks_by_user_html: Bloqueos por %{user}
       block: 'Bloqueo #%{id}'
       new_block: Nuevo bloqueo
   user_mutes:
index 6ecf31b3d68a93298a927866c9d829614a5125e3..f8a56340de5d5f2a4f47e565cbf65a01341af699 100644 (file)
@@ -363,7 +363,6 @@ et:
         way: joon
         relation: relatsioon
     containing_relation:
-      entry_html: Relatsioon %{relation_name}
       entry_role_html: Relatsioon %{relation_name} (kui %{relation_role})
     not_found:
       title: Ei leidu
@@ -2450,7 +2449,7 @@ et:
       upload_trace: Lisa GPS-rada
       all_traces: Kõik rajad
       my_traces: Minu rajad
-      traces_from: Kasutaja %{user} avalikud rajad
+      traces_from_html: Kasutaja %{user} avalikud rajad
       remove_tag_filter: Eemalda sildifilter
     destroy:
       scheduled_for_deletion: Raja kustutamine kantud tööplaani.
@@ -2794,7 +2793,6 @@ et:
       reason: 'Blokeerimise põhjus:'
       revoker: Tühistaja
     block:
-      not_revoked: (pole tühistatud)
       show: Näita
       edit: Redigeeri
     page:
@@ -2802,13 +2800,12 @@ et:
       creator_name: Blokeerija
       reason: Blokeerimise põhjus
       status: Olek
-      revoker_name: Tühistanud
     navigation:
       all_blocks: Kõik blokeeringud
       blocks_on_me: Mulle seatud blokeeringud
-      blocks_on_user: Blokeeritava %{user} blokeeringud
+      blocks_on_user_html: Blokeeritava %{user} blokeeringud
       blocks_by_me: Minu seatud blokeeringud
-      blocks_by_user: Blokeerija %{user} blokeeringud
+      blocks_by_user_html: Blokeerija %{user} blokeeringud
       block: 'Blokeering #%{id}'
   user_mutes:
     index:
index 76980234003e6d785f34ea05569c31eb728fe48e..ef3365522c418ccd2af57eec0c750f3592e56394 100644 (file)
@@ -378,7 +378,6 @@ eu:
         way: Bide
         relation: Erlazio
     containing_relation:
-      entry_html: '%{relation_name} erlazioa'
       entry_role_html: '%{relation_name} erlazioa (%{relation_role} rolean)'
     not_found:
       title: Ez da aurkitu
@@ -1460,7 +1459,6 @@ eu:
         other: '%{count} txosten'
       reported_item: Salatutako elementua
     show:
-      title: '%{status} %{issue_id} arazoa'
       reports:
         one: '%{count} report'
         other: '%{count} jakinarazpen'
@@ -2383,7 +2381,7 @@ eu:
       upload_trace: Aztarna bat igo
       all_traces: Aztarna guztiak
       my_traces: Nire aztarnak
-      traces_from: '%{user} erabiltzailearen GPS aztarna publikoak'
+      traces_from_html: '%{user} erabiltzailearen GPS aztarna publikoak'
       remove_tag_filter: Kendu etiketa-iragazkia
     destroy:
       scheduled_for_deletion: Ezabatzear dauden aztarnak
@@ -2724,7 +2722,6 @@ eu:
       reason: 'Blokeatzeko arrazoia:'
       revoker: 'Ezeztatu duena:'
     block:
-      not_revoked: (ez da ezeztatu)
       show: Erakutsi
       edit: Aldatu
     page:
@@ -2732,7 +2729,6 @@ eu:
       creator_name: Egilea
       reason: Blokeatzeko arrazoia
       status: Egoera
-      revoker_name: -k ezeztatua
   notes:
     index:
       title: '%{user}k igotako edo iruzkinak utzitako oharrak'
index e3dd9ed20b84eaa22cf63c905ff273bc9a2e972d..4ff0a76a1790617a98bdbd5fb942552eb257212b 100644 (file)
@@ -393,7 +393,6 @@ fa:
         way: راه
         relation: رابطه
     containing_relation:
-      entry_html: رابطهٔ %{relation_name}
       entry_role_html: رابطهٔ %{relation_name} (با نقش %{relation_role})
     not_found:
       title: یافت نشد
@@ -1377,7 +1376,6 @@ fa:
         other: '%{count} گزارش'
       reported_item: مورد گزارش‌شده
     show:
-      title: '%{status} موضوع #%{issue_id}'
       reports:
         one: '%{count} گزارش'
         other: '%{count} گزارش'
@@ -2150,7 +2148,7 @@ fa:
       upload_trace: بارگذاری یک رد
       all_traces: همهٔ ردها
       my_traces: ردهای من
-      traces_from: ردهای عمومی %{user}
+      traces_from_html: ردهای عمومی %{user}
       remove_tag_filter: حذف پالایهٔ برچسب
     destroy:
       scheduled_for_deletion: این رد در زمان‌بندی حذف قرار گرفت
@@ -2464,7 +2462,6 @@ fa:
       reason: 'دلیل مسدودی:'
       revoker: 'باطل‌کننده:'
     block:
-      not_revoked: (باطل نشده)
       show: نمایش
       edit: ویرایش
     page:
@@ -2472,15 +2469,14 @@ fa:
       creator_name: ایجادکننده
       reason: دلیل مسدودی
       status: وضعیت
-      revoker_name: باطل‌کننده
     navigation:
       all_blocks: تمام قطع دسترسی‌ها
       blocks_on_me: قطع دسترسی‌های من
-      blocks_on_user: قطع دسترسی‌های %{user}
+      blocks_on_user_html: قطع دسترسی‌های %{user}
       blocks_by_me: |-
         Blocks by Me
         بسته شدها یا مسدود شدهها
-      blocks_by_user: |-
+      blocks_by_user_html: |-
         Blocks by %{user}
 
         بستن توسط یا مسدود شدن توسط
index 1c091e9b3db2f76b2996b5303277c1ef90dfb4ef..1f3f4a8b00e92ddd3ee0b9c9000794d5c1bcff67 100644 (file)
@@ -395,7 +395,6 @@ fi:
         way: Polku
         relation: Relaatio
     containing_relation:
-      entry_html: Relaatio %{relation_name}
       entry_role_html: Relaatio %{relation_name} (rooli %{relation_role})
     not_found:
       title: Ei löytynyt
@@ -1434,7 +1433,6 @@ fi:
         other: '%{count} ilmiantoa'
       reported_item: Ilmiannettu kohde
     show:
-      title: '%{status} Tapaus #%{issue_id}'
       reports:
         one: '%{count} ilmianto'
         other: '%{count} ilmiantoa'
@@ -2331,7 +2329,7 @@ fi:
       upload_trace: Lisää GPS-jälki
       all_traces: Kaikki jäljet
       my_traces: Omat jäljet
-      traces_from: Julkiset jäljet käyttäjältä %{user}
+      traces_from_html: Julkiset jäljet käyttäjältä %{user}
       remove_tag_filter: Poista tunnistesuodatin
     destroy:
       scheduled_for_deletion: Jälki on poistojonossa.
@@ -2670,7 +2668,6 @@ fi:
       reason: 'Syy estoon:'
       revoker: 'Estäjä:'
     block:
-      not_revoked: (ei kumottu)
       show: Näytä
       edit: Muokkaa
     page:
@@ -2678,7 +2675,6 @@ fi:
       creator_name: Tekijä
       reason: Eston syy
       status: Tila
-      revoker_name: Eston tehnyt
   user_mutes:
     index:
       table:
index d83512221afb23eea8b3c38279c7476ed32d16ec..77018061499e6c5f4bfbfaac2e2e6d808fa91a6f 100644 (file)
@@ -226,7 +226,6 @@ fit:
         way: Polku
         relation: Relaatio
     containing_relation:
-      entry_html: Relaatio %{relation_name}
       entry_role_html: Relaatio %{relation_name} (rooli %{relation_role})
     not_found:
       sorry: 'Pahoittelemme, %{type} #%{id} ei ole olemassa.'
@@ -493,7 +492,6 @@ fit:
         one: 1 ilmotus
         other: '%{count} ilmiantoa'
     show:
-      title: '%{status} Tapaus #%{issue_id}'
       reports:
         zero: Ei ilmiantoa
         one: Yksi ilmianto
index b13f6a59a096720e53e0ee02dcff6f2e02e7b94b..535294e840ff26310ff7b14d6b6d5ccd4d203a46 100644 (file)
 # Author: Yodaspirine
 # Author: Yvecai
 # Author: Zarisi
+# Author: Zorun
 ---
 fr:
   html:
@@ -172,6 +173,7 @@ fr:
       message: Message
       node: Nœud
       node_tag: Attribut du nœud
+      note: Note
       old_node: Ancien nœud
       old_node_tag: Attribut de l’ancien nœud
       old_relation: Ancienne relation
@@ -497,8 +499,7 @@ fr:
         way: Chemin
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
-      entry_role_html: Relation %{relation_name} (avec le rôle %{relation_role})
+      entry_role_html: '%{relation_name} (avec le rôle %{relation_role})'
     not_found:
       title: Non trouvé
       sorry: Désolé, l’objet %{type} nº %{id} n’a pas pu être trouvé.
@@ -510,8 +511,8 @@ fr:
         note: note
     timeout:
       title: Erreur de dépassement du délai d’attente
-      sorry: Désolé, l'extraction des données pour le %{type} avec l'identifiant %{id}
-        a pris trop de temps.
+      sorry: Désolé, l’extraction des données pour l’objet de type « %{type} » avec
+        l’identifiant %{id} a pris trop de temps.
       type:
         node: nœud
         way: chemin
@@ -895,7 +896,7 @@ fr:
           bus_station: Arrêt de bus
           cafe: Café
           car_rental: Location de voiture
-          car_sharing: Covoiturage
+          car_sharing: Autopartage
           car_wash: Lavage de voiture
           casino: Casino
           charging_station: Station de recharge
@@ -1653,7 +1654,10 @@ fr:
         open: Ouvert
         resolved: Résolu
     show:
-      title: Problème %{status} nº %{issue_id}
+      title:
+        open: 'Problème ouvert n° #%{issue_id}'
+        ignored: 'Problème ignoré n° #%{issue_id}'
+        resolved: 'Problème résolu n° #%{issue_id}'
       reports:
         one: '%{count} rapport'
         other: '%{count} rapports'
@@ -2056,6 +2060,16 @@ fr:
       title: Mes préférences
       preferred_editor: Éditeur préféré
       preferred_languages: Langues préférées
+      preferred_site_color_scheme: Système de couleurs préféré pour le site Internet
+      site_color_schemes:
+        auto: Auto
+        light: Clair
+        dark: Sombre
+      preferred_map_color_scheme: Système de couleurs préféré pour la cartographie
+      map_color_schemes:
+        auto: Auto
+        light: Clair
+        dark: Sombre
       edit_preferences: Modifier les préférences
     edit:
       title: Modifier les préférences
@@ -2780,7 +2794,7 @@ fr:
       upload_trace: Téléverser une trace
       all_traces: Toutes les traces
       my_traces: Mes traces
-      traces_from: Traces publiques de %{user}
+      traces_from_html: Traces publiques de %{user}
       remove_tag_filter: Retirer le filtre de balises
     destroy:
       scheduled_for_deletion: Trace planifiée pour suppression
@@ -3171,6 +3185,15 @@ fr:
         years:
           one: '%{count} année'
           other: '%{count} années'
+      short:
+        ended: terminé
+        revoked_html: révoqué par %{name}
+        active: actif
+        active_unread: actif non lu
+        expired_unread: expiré non lu
+        read_html: lu à %{time}
+        time_in_future_title: '%{time_absolute}; dans %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blocages de « %{name} »
       heading_html: Liste des blocages sur « %{name} »
@@ -3189,21 +3212,21 @@ fr:
       reason: 'Raison du blocage :'
       revoker: 'Révocateur :'
     block:
-      not_revoked: (non révoqué)
       show: Afficher
       edit: Modifier
     page:
       display_name: Utilisateur bloqué
       creator_name: Créateur
       reason: Motif du blocage
+      start: Début
+      end: Fin
       status: État
-      revoker_name: Révoqué par
     navigation:
       all_blocks: Tous les blocages
       blocks_on_me: Blocages me concernant
-      blocks_on_user: Blocages sur %{user}
+      blocks_on_user_html: Blocages sur %{user}
       blocks_by_me: Blocages de ma part
-      blocks_by_user: Blocages effectués par %{user}
+      blocks_by_user_html: Blocages effectués par %{user}
       block: 'Blocage #%{id}'
       new_block: Nouveau blocage
   user_mutes:
@@ -3244,6 +3267,11 @@ fr:
       description: Description
       created_at: Créée le
       last_changed: Dernière modification
+      apply: Appliquer
+      all: Tous
+      open: Ouvert
+      closed: Fermé
+      status: État
     show:
       title: 'Note : %{id}'
       description: Description
@@ -3263,6 +3291,9 @@ fr:
       coordinates_html: '%{latitude} ; %{longitude}'
       anonymous_warning: Cette note comprend des commentaires d’utilisateurs anonymes,
         qui devraient être vérifiés de façon indépendante.
+      discussion: Discussion
+      subscribe: S’abonner
+      unsubscribe: Se désabonner
       hide: Masquer
       resolve: Marquer comme résolue
       reactivate: Réactiver
index 7faa3f1c5b33820dfde18fe379c30a961f905830..90d1490c3abb819b4c847c6505a3dcde5370ec5d 100644 (file)
@@ -303,7 +303,6 @@ fur:
         way: Vie
         relation: Relazion
     containing_relation:
-      entry_html: Relazion %{relation_name}
       entry_role_html: Relazion %{relation_name} (come %{relation_role})
     not_found:
       title: No cjatât
@@ -1361,7 +1360,7 @@ fur:
       upload_trace: Cjame un percors
       all_traces: Ducj i percors
       my_traces: I miei percors
-      traces_from: Percors publics di %{user}
+      traces_from_html: Percors publics di %{user}
     georss:
       title: Percors GPS di OpenStreetMap
     description:
@@ -1560,7 +1559,6 @@ fur:
       reason: 'Reson dal bloc:'
       revoker: 'Chel che al à revocât:'
     block:
-      not_revoked: (no revocât)
       show: Mostre
       edit: Cambie
     page:
@@ -1568,7 +1566,6 @@ fur:
       creator_name: Creadôr
       reason: Reson dal bloc
       status: Stât
-      revoker_name: Revocât di
   user_mutes:
     index:
       table:
index f332de1e33a68bdbcf624e1cea9b7ecc37737aff..4083810f1652f82a99cc540e1b9d54f67a510a8f 100644 (file)
@@ -337,7 +337,6 @@ fy:
         way: Line
         relation: Relaasje
     containing_relation:
-      entry_html: Relaasje %{relation_name}
       entry_role_html: Relaasje %{relation_name} (as %{relation_role})
     not_found:
       title: Net fûn
@@ -1354,7 +1353,6 @@ fy:
         other: '%{count} meldings'
       reported_item: Meld elemint
     show:
-      title: '%{status} probleem #%{issue_id}'
       reports:
         one: 1 melding
         other: '%{count} meldings'
@@ -2080,7 +2078,7 @@ fy:
       upload_trace: Trajekt oplade
       all_traces: Alle trajekten
       my_traces: Myn trajekten
-      traces_from: Iepenbiere trajekten fan %{user}
+      traces_from_html: Iepenbiere trajekten fan %{user}
       remove_tag_filter: Lebelfilter weilitte
     destroy:
       scheduled_for_deletion: Trajekt ynplend om te wiskjen
@@ -2405,7 +2403,6 @@ fy:
       reason: 'Reden foar útsluting:'
       revoker: 'Ynlûker:'
     block:
-      not_revoked: (net ynlutsen)
       show: Werjaan
       edit: Bewurkje
     page:
@@ -2413,7 +2410,6 @@ fy:
       creator_name: Oanmakker
       reason: Reden foar útsluting
       status: Status
-      revoker_name: Ynlutsen troch
   notes:
     index:
       title: Troch %{user} yntsjinne as op reägearre notysjes
index 7463a5478c97170651f5c5b629574758085d722c..9b94afc339e2d44bfb3fd41525664b21616e9ac7 100644 (file)
@@ -233,7 +233,6 @@ ga:
         way: Bealach
         relation: Gaol
     containing_relation:
-      entry_html: Gaol %{relation_name}
       entry_role_html: Gaol %{relation_name} (mar %{relation_role})
     not_found:
       sorry: 'Ár leithscéil, níorbh fhéidir %{type} #%{id} a aimsiú.'
@@ -982,7 +981,6 @@ ga:
     page:
       last_updated: Nuashonrú deireanach
     show:
-      title: '%{status} Fadhb #%{issue_id}'
       reports:
         zero: Tuairisc ar bith
         one: Tuairisc amháin
@@ -1697,7 +1695,6 @@ ga:
           one: uair amháin an chloig
           other: '%{count} uair an chloig'
     block:
-      not_revoked: (nár tarraingíodh siar)
       show: Taispeáin
       edit: Cuir in Eagar
     page:
@@ -1705,7 +1702,6 @@ ga:
       creator_name: Cruthaitheoir
       reason: Cúis don bhac
       status: Stádas
-      revoker_name: Tarraingthe siar ag
   notes:
     index:
       id: ID
index a3a89fd6700e09b2ff3c38fef2e7b956496c71b4..ff577e670df00290158d27dd27c16deb94955c67 100644 (file)
@@ -134,7 +134,6 @@ gcf:
       type:
         way: Chimen
     containing_relation:
-      entry_html: Rèlasion %{relation_name}
       entry_role_html: Rèlasion %{relation_name} (adan wol %{relation_role})
     not_found:
       sorry: Désolé, l’objet %{type} nº %{id} n’a pas pu être trouvé.
index cc09459225c14b77b2055d886a56323a8259b60c..656dc98255294a970ea516e9f6455f222bcaf93e 100644 (file)
@@ -320,7 +320,6 @@ gd:
         way: Slighe
         relation: Dàimh
     containing_relation:
-      entry_html: Dàimh %{relation_name}
       entry_role_html: Dàimh %{relation_name} ('na %{relation_role})
     not_found:
       sorry: Duilich ach cha deach %{type} àireamh %{id} a lorg.
@@ -1828,7 +1827,6 @@ gd:
       reason: 'Adhbhar a'' bhacaidh:'
       revoker: 'Cùl-ghairm le:'
     block:
-      not_revoked: (cha deach a chùl-ghairm)
       show: Seall
       edit: Deasaich
     page:
@@ -1836,7 +1834,6 @@ gd:
       creator_name: Cruthadair
       reason: Adhbhar a' bhacaidh
       status: Staid
-      revoker_name: Air a chùl-ghairm le
   notes:
     index:
       title: Nòtaichean a chuir %{user} a-null no a thug %{user} beachd dhaibh
index daeb120c505da0cc30fd066bafbc8f021ee85dbf..d52eff6fb12e8eb5860de5501cc601e2288ed3ea 100644 (file)
@@ -75,6 +75,7 @@ gl:
       message: Mensaxe
       node: Nó
       node_tag: Etiqueta do nó
+      note: Nota
       old_node: Nó vello
       old_node_tag: Etiqueta do nó vello
       old_relation: Relación vella
@@ -385,8 +386,7 @@ gl:
         way: Vía
         relation: Relación
     containing_relation:
-      entry_html: Relación %{relation_name}
-      entry_role_html: Relación %{relation_name} (como %{relation_role})
+      entry_role_html: '%{relation_name} (como %{relation_role})'
     not_found:
       title: Non atopado
       sorry: Sentímolo, non se puido atopar o/a %{type} co n.º %{id}.
@@ -1538,7 +1538,10 @@ gl:
         open: Aberto
         resolved: Resolto
     show:
-      title: '%{status} Erro n.º %{issue_id}'
+      title:
+        open: Problema aberto n.º %{issue_id}
+        ignored: Problema ignorado n.º %{issue_id}
+        resolved: Problema resolto n.º %{issue_id}
       reports:
         one: '%{count} denuncia'
         other: '%{count} denuncias'
@@ -1839,7 +1842,7 @@ gl:
       old_messages:
         one: '%{count} mensaxe vella'
         other: '%{count} mensaxes vellas'
-      no_messages_yet_html: Aínda non ten ningunha mensaxe. Por que non se pon en
+      no_messages_yet_html: Aínda non tes ningunha mensaxe. Por que non te pos en
         contacto con algunhas das %{people_mapping_nearby_link}?
       people_mapping_nearby: persoas preto de ti
     messages_table:
@@ -1859,19 +1862,19 @@ gl:
       back_to_inbox: Volver á caixa de entrada
     create:
       message_sent: Mensaxe enviada
-      limit_exceeded: Estivo enviando unha morea de mensaxes recentemente. Agarde
+      limit_exceeded: Enviaches unha morea de mensaxes dun tempo a esta parte. Agarda
         uns intres denantes de tentar enviar máis.
     no_such_message:
       title: Non se atopou a mensaxe
       heading: Non se atopou a mensaxe
-      body: Non hai ningunha mensaxe con esa ID.
+      body: Non hai ningunha mensaxe con ese identificador.
     outbox:
       title: Caixa de saída
       messages:
         one: Enviaches %{count} mensaxe
         other: Enviaches %{count} mensaxes
-      no_sent_messages_html: Aínda non enviou ningunha mensaxe. Por que non se pon
-        en contacto con algunhas das %{people_mapping_nearby_link}?
+      no_sent_messages_html: Aínda non enviaches ningunha mensaxe. Por que non te
+        pos en contacto con algunhas das %{people_mapping_nearby_link}?
       people_mapping_nearby: persoas preto de ti
     muted:
       title: Mensaxes silenciadas
@@ -1933,6 +1936,16 @@ gl:
       title: As miñas preferencias
       preferred_editor: Editor preferido
       preferred_languages: Linguas preferidas
+      preferred_site_color_scheme: Esquema de cores preferido para o sitio web
+      site_color_schemes:
+        auto: Automático
+        light: Claro
+        dark: Escuro
+      preferred_map_color_scheme: Esquema de cores preferido para o mapa
+      map_color_schemes:
+        auto: Automático
+        light: Claro
+        dark: Escuro
       edit_preferences: Editar preferencias
     edit:
       title: Editar preferencias
@@ -2633,7 +2646,7 @@ gl:
       upload_trace: Subir unha pista
       all_traces: Todas as pistas
       my_traces: As miñas pistas GPS
-      traces_from: Pistas públicas de %{user}
+      traces_from_html: Pistas públicas de %{user}
       remove_tag_filter: Eliminar etiqueta do filtro
     destroy:
       scheduled_for_deletion: Pista agardando a súa eliminación
@@ -2942,10 +2955,9 @@ gl:
       not_revoke_admin_current_user: Non se puido revogar os dereitos de administrador
         do usuario actual.
     grant:
-      are_you_sure: Ten a certeza de querer concederlle o rol "%{role}" ó usuario
-        "%{name}"?
+      are_you_sure: Queres concederlle o rol "%{role}" ó usuario "%{name}"?
     revoke:
-      are_you_sure: Ten a certeza de querer revogarlle o rol "%{role}" ó usuario "%{name}"?
+      are_you_sure: Queres quitarlle o rol "%{role}" ó usuario "%{name}"?
   user_blocks:
     model:
       non_moderator_update: Cómpre ser moderador para crear ou actualizar un bloqueo.
@@ -3014,6 +3026,15 @@ gl:
         years:
           one: '%{count} ano'
           other: '%{count} anos'
+      short:
+        ended: finalizado
+        revoked_html: revogado por %{name}
+        active: activo
+        active_unread: activo sen ler
+        expired_unread: caducado sen ler
+        read_html: lido ás %{time}
+        time_in_future_title: '%{time_absolute}; en %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Bloqueos feitos a %{name}
       heading_html: Listaxe dos bloqueos feitos a %{name}
@@ -3032,21 +3053,21 @@ gl:
       reason: 'Motivo para o bloqueo:'
       revoker: 'Autor da revogación:'
     block:
-      not_revoked: (non revogado)
       show: Amosar
       edit: Editar
     page:
       display_name: Usuario bloqueado
       creator_name: Creador
       reason: Motivo para o bloqueo
+      start: Inicio
+      end: Fin
       status: Estado
-      revoker_name: Revogado por
     navigation:
       all_blocks: Todos os bloqueos
       blocks_on_me: Os meus bloqueos
-      blocks_on_user: Bloqueos feitos a %{user}
+      blocks_on_user_html: Bloqueos feitos a %{user}
       blocks_by_me: Bloqueos efectuados
-      blocks_by_user: Bloqueos feitos por %{user}
+      blocks_by_user_html: Bloqueos feitos por %{user}
       block: Bloqueo n.º %{id}
       new_block: Novo bloqueo
   user_mutes:
@@ -3086,6 +3107,11 @@ gl:
       description: Descrición
       created_at: Creado o
       last_changed: Última modificación
+      apply: Aplicar
+      all: Todas
+      open: Abertas
+      closed: Pechadas
+      status: Estado
     show:
       title: 'Nota: %{id}'
       description: Descrición
@@ -3104,6 +3130,9 @@ gl:
       report: denunciar esta nota
       anonymous_warning: Esta nota inclúe comentarios de usuarios anónimos que deben
         verificarse de xeito independente.
+      discussion: Conversa
+      subscribe: Subscribirse
+      unsubscribe: Cancelar a subscrición
       hide: Agochar
       resolve: Resolver
       reactivate: Reactivar
index 51a47ff4b059416cde2c94927d69cc62156ac76f..dbb0d0f328e7f27890552b2c9d5476eb4c9ccde6 100644 (file)
@@ -123,7 +123,6 @@ gsw:
         way: Wäg
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (as %{relation_role})
     not_found:
       sorry: '%{type} mit de Nummer %{id} konnt leider net gfunde wärre.'
index 134a954f7f3e099a86f972a638cc02046067ed2d..92084d8f0169dacca1808df1f938dad9319133f1 100644 (file)
@@ -95,6 +95,7 @@ he:
       message: הודעה
       node: נקודה
       node_tag: תג נקודה
+      note: הערה
       old_node: נקודה ישנה
       old_node_tag: תג צומת ישן
       old_relation: יחס ישן
@@ -426,8 +427,7 @@ he:
         way: קו
         relation: יחס
     containing_relation:
-      entry_html: יחס %{relation_name}
-      entry_role_html: יחס %{relation_name} (בתור %{relation_role})
+      entry_role_html: '%{relation_name} (בתור %{relation_role})'
     not_found:
       title: לא נמצא
       sorry: אנו מתנצלים, אך לא מצאנו %{type} מספר %{id}.
@@ -1561,7 +1561,10 @@ he:
         open: פתוח
         resolved: פתור
     show:
-      title: בעיה במצב %{status} מס׳ %{issue_id}
+      title:
+        open: בעיה פתוחה %{issue_id}
+        ignored: בעיה חסרת־השפעה %{issue_id}
+        resolved: בעיה פתורה %{issue_id}
       reports:
         one: דו״ח אחד
         two: '%{count} דו״חות'
@@ -1930,6 +1933,16 @@ he:
       title: ההעדפות שלי
       preferred_editor: עורך מועדף
       preferred_languages: שפות מועדפות
+      preferred_site_color_scheme: ערכת צבעי האתר המועדפת
+      site_color_schemes:
+        auto: אוטומטית
+        light: בהירה
+        dark: כהה
+      preferred_map_color_scheme: ערכת צבעי המפה המועדפת
+      map_color_schemes:
+        auto: אוטומטית
+        light: בהירה
+        dark: כהה
       edit_preferences: עריכת העדפות
     edit:
       title: עריכת העדפות
@@ -2256,7 +2269,7 @@ he:
       license:
         copyright: 'זכויות היוצרים: מיזם OpenStreetMap ותורמיו, בכפוף לרישיון פתוח'
       remote_failed: העריכה נכשלה – נא לוודא כי JOSM או Merkaartor נטענו ושאפשרות
-        ×\94ש×\9c×\99×\98×\94 ×\9eק×\97×\95ר מופעלת
+        ×\94ש×\9c×\99×\98×\94 ×\9eר×\97×\95ק מופעלת
     edit:
       not_public: לא הגדרת את העריכות שלך כציבוריות.
       not_public_description_html: לא תהיה לך אפשרות להמשיך לערוך את המפה לפני שזה
@@ -2603,7 +2616,7 @@ he:
       upload_trace: העלאת מסלול
       all_traces: כל המסלולים
       my_traces: המסלולים שלי
-      traces_from: מסלולים ציבוריים מאת %{user}
+      traces_from_html: מסלולים ציבוריים מאת %{user}
       remove_tag_filter: הסרת סינון לפי תג
     destroy:
       scheduled_for_deletion: מסלול מיועד למחיקה
@@ -2736,7 +2749,7 @@ he:
         paragraph_1: בניגוד למפות אחרות, OpenStreetMap נוצרה לחלוטין על־ידי אנשים
           כמוך והיא חופשית לתיקונים, עדכונים, הורדה ושימוש של כל מי שחפץ.
         paragraph_2: אפשר להירשם כדי להתחיל לתרום.
-        welcome: ברוך בואך ל־OoenStreetMap
+        welcome: ברוך בואך ל־OpenStreetMap
       duplicate_social_email: אם כבר יש לך חשבון OpenStreetMap וברצונך להשתמש בספק
         זהות של צד שלישי, נא להתחבר באמצעות הסיסמה שלך ולשנות את הגדרות החשבון שלך.
       display name description: שם המשתמש שלך, שמוצג בפומבי. אפשר לשנות את זה בהעדפות
@@ -2978,6 +2991,15 @@ he:
           two: שנתיים
           many: '%{count} שנה'
           other: '%{count} שנים'
+      short:
+        ended: הסתיימה
+        revoked_html: בוטלה על־ידי %{name}
+        active: פעילה
+        active_unread: פעילה, לא נקראה
+        expired_unread: פגה, לא נקראה
+        read_html: נקראה ב־%{time}
+        time_in_future_title: '%{time_absolute}; ב־%{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: חסימות של %{name}
       heading_html: רשימת החסימות של %{name}
@@ -2996,21 +3018,21 @@ he:
       reason: 'סיבה לחסימה:'
       revoker: 'מבטל:'
     block:
-      not_revoked: (לא בוטלה)
       show: הצגה
       edit: עריכה
     page:
       display_name: משתמש חסום
       creator_name: יוצר
       reason: סיבה לחסימה
+      start: התחלה
+      end: סיום
       status: מצב
-      revoker_name: בוטלה על־ידי
     navigation:
       all_blocks: כל החסימות
       blocks_on_me: חסימות שלי
-      blocks_on_user: חסימות של %{user}
+      blocks_on_user_html: חסימות של %{user}
       blocks_by_me: חסימות שעשיתי
-      blocks_by_user: חסימות שנעשו על־ידי %{user}
+      blocks_by_user_html: חסימות שנעשו על־ידי %{user}
       block: חסימה מס׳ %{id}
       new_block: חסימה חדשה
   user_mutes:
@@ -3052,6 +3074,11 @@ he:
       description: תיאור
       created_at: 'יצירה:'
       last_changed: 'שינוי אחרון:'
+      apply: החלה
+      all: הכול
+      open: פתוחה
+      closed: סגורה
+      status: מצב
     show:
       title: 'הערה: %{id}'
       description: תיאור
@@ -3070,6 +3097,9 @@ he:
       report: לדווח על ההערה הזאת
       anonymous_warning: ההערה הזאת כוללת תגובות ממשתמשים אלמוניים שצריך לאמת באופן
         עצמאי.
+      discussion: דיון
+      subscribe: מינוי
+      unsubscribe: ביטול מינוי
       hide: להסתיר
       resolve: לפתור
       reactivate: הפעלה מחדש
index 93d0352107eddf76d9a5d6af98c7739cc0c1d58a..9f1fa981ef3515d98b2b855a016c60542101d4c5 100644 (file)
@@ -318,7 +318,6 @@ hi:
         way: रेखा
         relation: संबंध
     containing_relation:
-      entry_html: संबंध %{relation_name}
       entry_role_html: संबंध %{relation_name} (as %{relation_role})
     not_found:
       title: नहीं मिला
@@ -1039,10 +1038,18 @@ hi:
     filter:
       not_revoke_admin_current_user: वर्तमान उपयोगकर्ता के द्वारा व्यवस्थापक भूमिका
         को रद्द नहीं कर सकता है|
+  user_blocks:
+    page:
+      end: अन्त
   notes:
     index:
       created_at: 'निर्माण का समय:'
       last_changed: अंतिम परिवर्तन
+      apply: लागू करें
+      all: सभी
+      open: खोलें
+      closed: बंद किया हुआ
+      status: स्थिति
     show:
       title: 'नोट: %{id}'
       description: विवरण
@@ -1050,6 +1057,9 @@ hi:
       closed_title: 'सुलझा नोट #%{note_name}'
       hidden_title: 'छिपाया नोट #%{note_name}'
       report: इस नोट को रिपोर्ट कर
+      discussion: चर्चा
+      subscribe: सदस्यता लें
+      unsubscribe: सदस्यता छोड़ें
       hide: छुपाएँ
       resolve: समाधान करें
       reactivate: 'पुन: सक्रिय करें'
index 310d2dee21997284c1f517b97feea0a30dcc67b4..08474a4d9f6db68e5ab3bfcea813934fdc588c06 100644 (file)
@@ -308,7 +308,6 @@ hr:
         way: Put
         relation: Relacija
     containing_relation:
-      entry_html: Relacija %{relation_name}
       entry_role_html: Relacija %{relation_name} (kao %{relation_role})
     not_found:
       sorry: 'Nažalost, %{type} #%{id} nije pronađen.'
@@ -1680,7 +1679,6 @@ hr:
       reason: 'Razlog za blokadu:'
       revoker: 'Opozivatelj:'
     block:
-      not_revoked: (nije opozvano)
       show: Prikaži
       edit: Uredi
     page:
@@ -1688,7 +1686,6 @@ hr:
       creator_name: Tvorac
       reason: Razlog za blokadu
       status: Status
-      revoker_name: Opozvao
   notes:
     index:
       title: Bilješke stvorio ili komentirao %{user}
index d6968c849abced4a091b8d0002a503adcaef6090..76b83c6cc6f206afcd347f7c43d492247e098170 100644 (file)
@@ -363,7 +363,6 @@ hsb:
         way: Puć
         relation: Relacija
     containing_relation:
-      entry_html: Relacija %{relation_name}
       entry_role_html: Relacija %{relation_name} (jako %{relation_role})
     not_found:
       title: Njenamakane
@@ -1391,7 +1390,6 @@ hsb:
         other: '%{count} rozprawow'
       reported_item: Zjewjeny objekt
     show:
-      title: '%{status} Problem čo. %{issue_id}'
       reports:
         one: '%{count} rozprawa'
         two: '%{count} rozprawje'
@@ -2191,7 +2189,7 @@ hsb:
       upload_trace: Ćěr nahrać
       all_traces: Wšě ćěrje
       my_traces: Moje ćěrje
-      traces_from: Zjawne ćěrje wot %{user}
+      traces_from_html: Zjawne ćěrje wot %{user}
     destroy:
       scheduled_for_deletion: Čara předwidźana za zničenje
     offline_warning:
@@ -2517,7 +2515,6 @@ hsb:
       reason: 'Přičina za blokowanje:'
       revoker: 'Zeběracy wužiwar:'
     block:
-      not_revoked: (njezběhnjeny)
       show: Pokazać
       edit: Wobdźěłać
     page:
@@ -2525,7 +2522,6 @@ hsb:
       creator_name: Blokowar
       reason: Přičina za blokowanje
       status: Status
-      revoker_name: Zběhnjene wot
   user_mutes:
     index:
       title: Zněmjeni wužiwarjo
index d599f70b05d68a073731ca8cf1547e01c51741b1..19b2349b4dc97a30183e7fbe34b7ae060bde93fe 100644 (file)
@@ -78,8 +78,8 @@ hu:
           is_already_muted: már el van némítva
     models:
       acl: Hozzáférés-szabályzási lista
-      changeset: Módosításkészlet
-      changeset_tag: Módosításkészlet címkéje
+      changeset: Módosításcsomag
+      changeset_tag: Módosításcsomag címkéje
       country: Ország
       diary_comment: Hozzászólás a naplóhoz
       diary_entry: Naplóbejegyzés
@@ -188,11 +188,10 @@ hu:
       trace:
         tagstring: vesszővel elválasztva
       user_block:
-        reason: A felhasználó letiltásának oka. Kérjük, légy a lehető legnyugodtabb
-          és észszerűbb, adj meg minél több részletet a helyzetről, és ne feledd,
-          hogy az üzenet nyilvánosan látható lesz. Gondolj arra, hogy nem minden felhasználó
-          érti a közösségi szakzsargont, ezért kérjük, próbálj laikus kifejezéseket
-          használni.
+        reason: A felhasználó letiltásának oka. Légy a lehető legnyugodtabb és ésszerűbb,
+          adj meg minél több részletet a helyzetről, és ne feledd, hogy az üzenet
+          nyilvánosan látható lesz. Gondolj arra, hogy nem minden felhasználó érti
+          a közösségi szakzsargont, ezért kérjük, próbálj laikus kifejezéseket használni.
         needs_view: Be kell-e jelentkeznie a felhasználónak, mielőtt a blokkolás feloldódik?
       user:
         new_email: (soha nem jelenik meg nyilvánosan)
@@ -264,11 +263,11 @@ 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_all: Jelentett, kommentált vagy lezárt jegyzetek 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
-        opened: új megjegyzés (%{place} közelében)
+        description_item: RSS hírcsatorna a(z) %{id} jegyzethez
+        opened: új jegyzet (%{place} közelében)
         commented: új hozzászólás (%{place} közelében)
         closed: lezárt jegyzet (%{place} közelében)
         reopened: újraaktivált jegyzet (%{place} közelében)
@@ -295,7 +294,7 @@ hu:
           megmaradnak, de nem lesznek láthatóak.
         retain_notes: Térképjegyzeteid és jegyzethozzászólásaid (ha vannak) megmaradnak,
           de nem lesznek láthatóak.
-        retain_changeset_discussions: A módosításkészletekhez fűzött hozzászólásaid
+        retain_changeset_discussions: A módosításcsomagokhoz fűzött hozzászólásaid
           (ha vannak) megőrződnek.
         retain_email: Az e-mail-címed is megmarad.
         recent_editing_html: Mivel nemrégiben szerkesztettél, fiókod jelenleg nem
@@ -351,7 +350,7 @@ hu:
     edited_ago_by_html: Szerkesztette %{user} %{time_ago}
     version: Verzió
     redacted_version: Szerkesztett verzió
-    in_changeset: Módosításkészlet
+    in_changeset: Módosításcsomag
     anonymous: névtelen
     no_comment: (nincs hozzászólás)
     part_of: 'Része ennek:'
@@ -369,10 +368,10 @@ hu:
     view_redaction_message: Adattörlési üzenet megtekintése
     location: 'Hely:'
     node:
-      title_html: '%{name} pont'
+      title_html: 'Pont: %{name}'
       history_title_html: '%{name} pont előzményei'
     way:
-      title_html: '%{name} vonal'
+      title_html: 'Vonal: %{name}'
       history_title_html: '%{name} vonal előzményei'
       nodes: Pontok
       nodes_count:
@@ -382,7 +381,7 @@ hu:
         one: '%{related_ways} vonal része'
         other: '%{related_ways} vonalak része'
     relation:
-      title_html: '%{name} kapcsolat'
+      title_html: 'Kapcsolat: %{name}'
       history_title_html: '%{name} kapcsolat előzményei'
       members: Tagok
       members_count:
@@ -395,7 +394,6 @@ hu:
         way: 'Vonal:'
         relation: 'Kapcsolat:'
     containing_relation:
-      entry_html: '%{relation_name} kapcsolat'
       entry_role_html: '%{relation_name} kapcsolat (mint %{relation_role})'
     not_found:
       title: Nem található
@@ -404,7 +402,7 @@ hu:
         node: pont
         way: vonal
         relation: kapcsolat
-        changeset: módosításkészlet
+        changeset: módosításcsomag
         note: jegyzet
     timeout:
       title: Időtúllépési hiba
@@ -414,7 +412,7 @@ hu:
         node: pont
         way: vonal
         relation: kapcsolat
-        changeset: módosításkészlet
+        changeset: módosításcsomag
         note: jegyzet
     redacted:
       redaction: '%{id} adattörlési művelet'
@@ -447,13 +445,13 @@ hu:
       enclosing: A helyet körülvevő objektumok
   nodes:
     timeout:
-      sorry: Sajnáljuk, a %{id} azonosítójú csomópont adatainak lekérése túl sokáig
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú pont adatainak lekérése túl sokáig
         tartott.
   old_nodes:
     not_found:
       sorry: 'Sajnáljuk, nem található meg #%{id} pont %{version} verziója.'
     timeout:
-      sorry: Sajnáljuk, a %{id} azonosítójú csomópont előzményeinek lekérése túl sokáig
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú pont előzményeinek lekérése túl sokáig
         tartott.
   ways:
     timeout:
@@ -478,53 +476,53 @@ hu:
   changeset_comments:
     feeds:
       comment:
-        comment: 'Új hozzászólás #%{changeset_id} módosításkészlethez %{author} felhasználótól'
+        comment: 'Új hozzászólás #%{changeset_id} módosításcsomaghoz  %{author} felhasználótól'
         commented_at_by_html: '%{user} frissítette ekkor: %{when}'
       show:
-        title_all: OpenStreetMap módosításkészlet-megbeszélés
-        title_particular: 'A #%{changeset_id} OpenStreetMap módosításkészlethez tartozó
+        title_all: OpenStreetMap módosításcsomag-megbeszélés
+        title_particular: 'A #%{changeset_id} OpenStreetMap módosításcsomaghoz tartozó
           megbeszélés'
       timeout:
-        sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításkészlet-hozzászólások
+        sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításcsomag-hozzászólások
           listájának lekérése.
   changesets:
     changeset:
       no_edits: (nincs szerkesztés)
-      view_changeset_details: Módosításkészlet részleteinek megtekintése
+      view_changeset_details: Módosításcsomag részleteinek megtekintése
     index:
-      title: Módosításkészletek
-      title_user: '%{user} módosításkészletei'
-      title_user_link_html: '%{user_link} módosításkészletei'
-      title_friend: Ismerősök módosításkészletei
-      title_nearby: Közeli felhasználók módosításkészletei
-      empty: Nem található módosításkészlet
-      empty_area: Ezen a területen nincs módosításkészlet.
-      empty_user: Ettől a felhasználótól nincs módosításkészlet.
-      no_more: Nem találtunk több módosításkészletet.
-      no_more_area: Ezen a területen nincs több módosításkészlet.
-      no_more_user: Ettől a felhasználótól nincs több módosításkészlet.
+      title: Módosításcsomagok
+      title_user: '%{user} módosításcsomagjai'
+      title_user_link_html: '%{user_link} módosításcsomagjai'
+      title_friend: Ismerősök módosításcsomagjai
+      title_nearby: Közeli felhasználók módosításcsomagjai
+      empty: Nem található módosításcsomag.
+      empty_area: Ezen a területen nincs módosításcsomag.
+      empty_user: Ettől a felhasználótól nincs módosításcsomag.
+      no_more: Nem található több módosításcsomag.
+      no_more_area: Ezen a területen nincs több módosításcsomag.
+      no_more_user: Ettől a felhasználótól nincs több módosításcsomag.
       load_more: Továbbiak betöltése
       feed:
-        title: '%{id} módosításkészlet'
-        title_comment: '%{id} módosításkészlet - %{comment}'
+        title: '%{id} módosításcsomag'
+        title_comment: '%{id} módosításcsomag – %{comment}'
         created: Létrehozva
         closed: Lezárva
         belongs_to: Szerző
     subscribe:
-      heading: Feliratkozol a következő módosításkészlet megbeszélésére?
+      heading: Feliratkozol a következő módosításcsomag-megbeszélésére?
       button: Feliratkozás a megbeszélésre
     unsubscribe:
-      heading: Leiratkozol a következő módosításkészlet megbeszéléséről?
+      heading: Leiratkozol a következő módosításcsomag-megbeszéléséről?
       button: Leiratkozás a megbeszélésről
     heading:
-      title: '%{id} számú módosításkészlet'
+      title: '%{id} számú módosításcsomag'
       created_by_html: 'Létrehozta: %{link_user} (%{created}).'
     no_such_entry:
       heading: Nincs %{id} azonosítójú naplóbejegyzés
-      body: Sajnáljuk, nincs %{id} azonosítójú módosításkészlet. Ellenőrizd a helyességét.
-        Az is lehet, hogy rossz linkre kattintottál.
+      body: Sajnáljuk, nincs %{id} azonosítójú módosításcsomag. Ellenőrizd, hogy jól
+        írtad-e. Az is lehet, hogy rossz linkre kattintottál.
     show:
-      title: '%{id} módosításkészlet'
+      title: 'Módosításcsomag: %{id}'
       created: 'Létrehozva: %{when}'
       closed: 'Lezárva: %{when}'
       created_ago_html: Létrehozva %{time_ago}
@@ -533,8 +531,8 @@ hu:
       closed_ago_by_html: Lezárta %{user} %{time_ago}
       discussion: Megbeszélés
       join_discussion: Jelentkezz be, hogy bekapcsolódhass a megbeszélésbe
-      still_open: A módosításkészlet még nyitva van – a megbeszélés akkor nyílik meg,
-        ha a módosításkészlet lezárul.
+      still_open: A módosításcsomag még nyitva van – a megbeszélés akkor nyílik meg,
+        ha a módosításcsomag lezárul.
       subscribe: Feliratkozás
       unsubscribe: Leiratkozás
       comment_by_html: Hozzászólt %{user} %{time_ago}
@@ -542,8 +540,8 @@ hu:
       hide_comment: elrejtés
       unhide_comment: megjelenítés
       comment: Hozzászólás
-      changesetxml: Módosításkészlet adatai (XML)
-      osmchangexml: Módosításkészlet tartalma (osmChange XML)
+      changesetxml: Módosításcsomag XML-ben
+      osmchangexml: osmChange XML
     paging_nav:
       nodes: Pontok (%{count})
       nodes_paginated: 'Pontok (%{x}-%{y} ennyiből: %{count})'
@@ -552,7 +550,7 @@ hu:
       relations: Kapcsolatok (%{count})
       relations_paginated: 'Kapcsolatok (%{x}-%{y} ennyiből: %{count})'
     timeout:
-      sorry: Sajnáljuk, az általad kért módosításkészletek listájának beolvasása túl
+      sorry: Sajnáljuk, az általad kért módosításcsomagok listájának lekérése túl
         sokáig tartott.
   dashboards:
     contact:
@@ -573,9 +571,9 @@ hu:
       nearby users: További közeli felhasználók
       no nearby users: Még nincsenek más felhasználók, akik megadták, hogy a közelben
         szerkesztenek.
-      friends_changesets: ismerősök módosításkészletei
+      friends_changesets: ismerősök módosításcsomagjai
       friends_diaries: ismerősök naplóbejegyzései
-      nearby_changesets: közeli felhasználók módosításkészletei
+      nearby_changesets: közeli felhasználók módosításcsomagjai
       nearby_diaries: közeli felhasználók naplóbejegyzései
   diary_entries:
     new:
@@ -611,8 +609,7 @@ hu:
       title: Nincs ilyen naplóbejegyzés
       heading: 'Nincs naplóbejegyzés ezzel az azonosítóval: %{id}'
       body: Sajnáljuk, de nincs %{id} azonosítójú naplóbejegyzés vagy hozzászólás.
-        Kérjük, ellenőrizd a kifejezés helyességét. Az is lehet, hogy rossz linkre
-        kattintottál.
+        Ellenőrizd, hogy jól írtad-e. Az is lehet, hogy rossz linkre kattintottál.
     diary_entry:
       posted_by_html: '%{link_user} bejegyzése %{language_link} nyelven ekkor: %{created}'
       updated_at_html: 'Utolsó frissítés: %{updated}'
@@ -702,8 +699,8 @@ hu:
       contact_url_title: A különféle kapcsolatfelvételi csatornák magyarázata
       contact: kapcsolat
       contact_the_community_html: Nyugodtan keresd fel az OpenStreetMap közösséget
-        (%{contact_link}), ha hibás linket vagy más hibát találtál. Kérjük, ne felejtsd
-        el feljegyezni a hibás oldal pontos URL-jét.
+        (%{contact_link}), ha hibás linket vagy más hibát találtál. Ne felejtsd el
+        feljegyezni a hibás oldal pontos URL-jét.
     bad_request:
       title: Rossz kérés
       description: Az OpenStreetMap szerveren kért művelet nem érvényes (HTTP 400)
@@ -1543,7 +1540,6 @@ hu:
         open: Nyitva
         resolved: Megoldva
     show:
-      title: '#%{issue_id} probléma %{status}'
       reports:
         one: '%{count} bejelentés'
         other: '%{count} bejelentés'
@@ -1574,7 +1570,7 @@ hu:
     helper:
       reportable_title:
         diary_comment: '%{entry_title} naplóbejegyzés, #%{comment_id} hozzászólás'
-        note: 'Megjegyzés #%{note_id}'
+        note: '#%{note_id} jegyzet'
   issue_comments:
     create:
       comment_created: Hozzászólásod sikeresen létrehozva
@@ -1584,7 +1580,7 @@ hu:
       title_html: '%{link} bejelentése'
       missing_params: Nem hozhatsz létre új bejelentést
       disclaimer:
-        intro: 'Mielőtt elküldöd a bejelentést, kérjük, győződj meg a következőkről:'
+        intro: 'Mielőtt elküldöd a bejelentést, győződj meg a következőkről:'
         not_just_mistake: Biztos vagy abban, hogy a probléma nem csupán egy hiba
         unable_to_fix: A problémát nem tudod megoldani a sem magad, sem a közösség
           tagjainak segítségével
@@ -1607,9 +1603,9 @@ hu:
           vandal_label: Ez a felhasználó vandál
           other_label: Egyéb
         note:
-          spam_label: A megjegyzés spam
-          personal_label: A megjegyzés személyes adatot tartalmaz
-          abusive_label: A megjegyzés sértő
+          spam_label: A jegyzet spam
+          personal_label: A jegyzet személyes adatot tartalmaz
+          abusive_label: A jegyzet sértő
           other_label: Egyéb
     create:
       successful_report: Bejelentésedet sikeresen regisztráltuk
@@ -1692,11 +1688,11 @@ hu:
         %{trace_description} leírású, címke nélküli fájlod
     gpx_failure:
       hi: Szia %{to_user}!
-      failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Kérjük,
-        ellenőrizze, hogy a fájl egy érvényes GPX-fájl vagy egy GPX-fájl(oka)t tartalmazó
-        archívum a támogatott formátumban (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz,
-        .gpx.bz2). . Formátum- vagy szintaktikai probléma lehet a fájllal? Itt van
-        az importálási hiba:'
+      failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Ellenőrizd,
+        hogy a fájl egy érvényes GPX-fájl vagy egy GPX-fájl(oka)t tartalmazó archívum
+        a támogatott formátumban (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+        . Formátum- vagy szintaktikai probléma lehet a fájllal? Itt látható az importálási
+        hiba:'
       more_info: 'További információ a GPX importálási hibáiról és azok elkerüléséről
         itt található: %{url}.'
       more_info_html: 'A GPX importálási hibákról és elkerülésükről további tájékoztatás
@@ -1738,7 +1734,7 @@ hu:
       click_the_link: Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints
         az alábbi hivatkozásra.
     note_comment_notification:
-      description: 'OpenStreetMap megjegyzés #%{id}'
+      description: 'OpenStreetMap jegyzet #%{id}'
       anonymous: Egy névtelen felhasználó
       greeting: Szia!
       commented:
@@ -1775,27 +1771,27 @@ hu:
       details: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
       details_html: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
     changeset_comment_notification:
-      description: 'OpenStreetMap módosításkészlet #%{id}'
+      description: 'OpenStreetMap módosításcsomag #%{id}'
       hi: Szia %{to_user}!
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításkészletedhez'
-        subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításkészlethez,
+        subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításcsomagodhoz'
+        subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításcsomaghoz,
           amely téged is érdekel'
-        your_changeset: '%{commenter} hozzászólt az egyik módosításkészletedhez ekkor:
+        your_changeset: '%{commenter} hozzászólt az egyik módosításcsomagodhoz ekkor:
           %{time}'
-        your_changeset_html: '%{commenter} hozzászólt az egyik módosításkészletedhez
+        your_changeset_html: '%{commenter} hozzászólt az egyik módosításcsomagodhoz
           ekkor: %{time}'
         commented_changeset: '%{commenter} hozzászólt %{changeset_author} általad
-          is figyelt módosításkészletéhez ekkor: %{time}'
+          is figyelt módosításcsomagjához ekkor: %{time}'
         commented_changeset_html: '%{commenter} hozzászólt %{changeset_author} általad
-          is figyelt módosításkészletéhez ekkor: %{time}'
+          is figyelt módosításcsomagjához ekkor: %{time}'
         partial_changeset_with_comment: „%{changeset_comment}” hozzászólással
         partial_changeset_with_comment_html: '%{changeset_comment} hozzászólással'
         partial_changeset_without_comment: hozzászólás nélkül
-      details: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
-      details_html: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
-      unsubscribe: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
-      unsubscribe_html: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
+      details: 'Válaszolj, vagy tudj meg többet a módosításcsomagról itt: %{url}.'
+      details_html: 'Válaszolj, vagy tudj meg többet a módosításcsomagról itt: %{url}.'
+      unsubscribe: 'A módosításcsomag frissüléseiről leiratkozhatsz itt: %{url}.'
+      unsubscribe_html: 'A módosításcsomag frissüléseiről leiratkozhatsz itt: %{url}.'
   confirmations:
     confirm:
       heading: Nézd meg az e-mailjeidet!
@@ -1821,7 +1817,7 @@ hu:
       failure: Ezzel a tokennel már meg lett erősítve egy e-mail cím.
       unknown_token: Ez a megerősítő kód lejárt, vagy nem létezik.
     resend_success_flash:
-      confirmation_sent: Küldtünk egy új megerősítő megjegyzést a(z) %{email} címre.
+      confirmation_sent: Küldtünk egy új megerősítő üzenetet a(z) %{email} címre.
         Amint megerősíted fiókodat, kezdhetsz is térképezni.
       whitelist: Ha olyan antispam rendszert használsz, amely visszaigazolási kéréseket
         küld, akkor kérjük, ellenőrizd, hogy a(z) %{sender} az engedélyezett listán
@@ -2209,6 +2205,8 @@ hu:
           adatokat tartalmazza, az állam szerzői joga fenntartva.'
         contributors_za_south_africa: Dél-Afrika
         contributors_za_ngi: 'Chief Directorate: National Geo-Spatial Information'
+        contributors_gb_credit_html: "%{united_kingdom}: Térképészeti Szolgálat adatai
+          &copy; Királyi szerzői és adatbázisjog \n2010-2023."
         contributors_gb_united_kingdom: Egyesült Királyság
         contributors_2_html: Ezekről és más, az OpenStreetMap fejlesztésére használt
           forrásokról további részletekért tekintsd meg a %{contributors_page_link}
@@ -2542,10 +2540,15 @@ hu:
       trace_uploaded: A GPX-fájl feltöltődött, és várakozik az adatbázisba való beillesztésre.
         Ez általában fél órán belül megtörténik, és kapni fogsz egy e-mailt, amint
         elkészült.
-      upload_failed: A GPX feltöltése meghiúsult. Kérjük, próbáld meg újra.
-      traces_waiting: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, fontold
-        meg, hogy megvárod, amíg ezek befejeződnek mielőtt feltöltesz továbbiakat,
-        hogy így ne tartsd fel a többi felhasználót a sorban.'
+      upload_failed: A GPX feltöltése meghiúsult. A rendszergazda értesítést kapott
+        a hibáról. Próbáld meg újra.
+      traces_waiting:
+        one: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, várd meg, amíg ezek
+          befejeződnek, mielőtt feltöltesz továbbiakat, hogy ne tartsd fel a többi
+          felhasználót a sorban.'
+        other: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, várd meg, amíg
+          ezek befejeződnek, mielőtt feltöltesz továbbiakat, hogy ne tartsd fel a
+          többi felhasználót a sorban.'
     edit:
       cancel: Mégse
       title: 'Nyomvonal szerkesztése: %{name}'
@@ -2603,7 +2606,7 @@ hu:
       upload_trace: Nyomvonal feltöltése
       all_traces: Minden nyomvonal
       my_traces: Saját nyomvonalak
-      traces_from: '%{user} nyilvános nyomvonalai'
+      traces_from_html: '%{user} nyilvános nyomvonalai'
       remove_tag_filter: Címkeszűrő eltávolítása
     destroy:
       scheduled_for_deletion: A nyomvonal törlésre kijelölve
@@ -2746,8 +2749,7 @@ hu:
         paragraph_2: Regisztrálj a közreműködés megkezdéséhez.
         welcome: Üdvözlünk az OpenStreetMapen
       duplicate_social_email: Ha már rendelkezel OpenStreetMap fiókkal, és külső identitásszolgáltatót
-        szeretnél használni, kérjük, jelentkezz be jelszavaddal, és módosítsd fiókod
-        beállításait.
+        szeretnél használni, jelentkezz be jelszavaddal, és módosítsd fiókod beállításait.
       display name description: A nyilvánosan megjelenített felhasználóneved. A beállításaidban
         később megváltoztathatod.
       by_signing_up:
@@ -3001,7 +3003,6 @@ hu:
       reason: 'Blokkolás indoklása:'
       revoker: 'Visszavonó:'
     block:
-      not_revoked: (nincs visszavonva)
       show: Megjelenítés
       edit: Szerkesztés
     page:
@@ -3009,13 +3010,12 @@ hu:
       creator_name: Készítő
       reason: Blokkolás indoklása
       status: Állapot
-      revoker_name: 'Visszavonta:'
     navigation:
       all_blocks: Minden blokk
       blocks_on_me: Engem sújtó blokkolások
-      blocks_on_user: '%{user} blokkolásai'
+      blocks_on_user_html: '%{user} blokkolásai'
       blocks_by_me: Általam kiosztott blokkolások
-      blocks_by_user: '%{user} blokkolásai'
+      blocks_by_user_html: '%{user} blokkolásai'
       block: '#%{id} blokk'
       new_block: Újabb blokkolások
   user_mutes:
@@ -3055,12 +3055,17 @@ hu:
       description: Leírás
       created_at: Létrehozva ekkor
       last_changed: Utoljára módosítva
+      apply: Alkalmaz
+      all: Összes
+      open: Nyitva
+      closed: Lezárva
+      status: Állapot
     show:
-      title: '%{id} jegyzet'
+      title: 'Jegyzet: %{id}'
       description: Leírás
-      open_title: '%{note_name} megoldatlan jegyzet'
-      closed_title: '%{note_name} megoldott jegyzet'
-      hidden_title: '%{note_name} rejtett jegyzet'
+      open_title: 'Megoldatlan jegyzet: %{note_name}'
+      closed_title: 'Megoldott jegyzet: %{note_name}'
+      hidden_title: Elrejtett jegyzet %{note_name}
       event_opened_by_html: Létrehozta %{user} %{time_ago}
       event_opened_by_anonymous_html: Létrehozta egy névtelen felhasználó %{time_ago}
       event_commented_by_html: Hozzászólt %{user} %{time_ago}
@@ -3073,6 +3078,9 @@ hu:
       report: jegyzet bejelentése
       anonymous_warning: Ez a jegyzet névtelen felhasználók hozzászólásait is tartalmazza,
         amelyeket független módon kell ellenőrizni.
+      discussion: Megbeszélés
+      subscribe: Feliratkozás
+      unsubscribe: Leiratkozás
       hide: Elrejtés
       resolve: Megoldás
       reactivate: Újraaktiválás
index 2c41b8f25414ce2ed8bb65355a4a22b45dac41c0..63c8fb7a24c1e30737ad91a743b4988e80032c32 100644 (file)
@@ -369,7 +369,6 @@ ia:
         way: Via
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (como %{relation_role})
     not_found:
       title: Non trovate
@@ -1519,7 +1518,6 @@ ia:
         open: Aperte
         resolved: Resolvite
     show:
-      title: '%{status} Problema №%{issue_id}'
       reports:
         one: '%{count} reporto'
         other: '%{count} reportos'
@@ -2602,7 +2600,7 @@ ia:
       upload_trace: Incargar un tracia
       all_traces: Tote le tracias
       my_traces: Mi tracias
-      traces_from: Tracias public de %{user}
+      traces_from_html: Tracias public de %{user}
       remove_tag_filter: Remover filtro de etiquettas
     destroy:
       scheduled_for_deletion: Tracia programmate pro deletion
@@ -2999,7 +2997,6 @@ ia:
       reason: 'Motivo del blocada:'
       revoker: 'Revocator:'
     block:
-      not_revoked: (non revocate)
       show: Monstrar
       edit: Modificar
     page:
@@ -3007,13 +3004,12 @@ ia:
       creator_name: Creator
       reason: Motivo del blocada
       status: Stato
-      revoker_name: Revocate per
     navigation:
       all_blocks: Tote le blocadas
       blocks_on_me: Blocadas sur me
-      blocks_on_user: Blocadas sur %{user}
+      blocks_on_user_html: Blocadas sur %{user}
       blocks_by_me: Blocadas facite per me
-      blocks_by_user: Blocadas facite per %{user}
+      blocks_by_user_html: Blocadas facite per %{user}
       block: Blocada №%{id}
       new_block: Nove blocada
   user_mutes:
index f16032aab44026b8407a11b85af2790ec9a8f90f..cbde28471149ca5555dab2254d9d6a77052c6920 100644 (file)
@@ -381,7 +381,6 @@ id:
         way: Way/Garis
         relation: Relasi
     containing_relation:
-      entry_html: Relasi %{relation_name}
       entry_role_html: Relasi %{relation_name} (as %{relation_role})
     not_found:
       title: Tidak Ditemukan
@@ -1467,7 +1466,6 @@ id:
         other: '%{count} Laporan'
       reported_item: Butir dilaporkan
     show:
-      title: '%{status} Isu #%{issue_id}'
       reports:
         other: '%{count} laporan'
       no_reports: Tidak ada laporan
@@ -2504,7 +2502,7 @@ id:
       upload_trace: Unggah jejak GPS
       all_traces: Semua Jejak
       my_traces: Jejak Saya
-      traces_from: Jejak Publik dari %{user}
+      traces_from_html: Jejak Publik dari %{user}
       remove_tag_filter: Hapus Filter Tag
     destroy:
       scheduled_for_deletion: Trek yang dijadwalkan untuk dihapus
@@ -2865,7 +2863,6 @@ id:
       reason: 'Alasan untuk blokir:'
       revoker: 'Pembatal:'
     block:
-      not_revoked: (tidak dicabut)
       show: Tampilkan
       edit: Edit
     page:
@@ -2873,7 +2870,6 @@ id:
       creator_name: Pencipta
       reason: Alasan untuk blokir
       status: Status
-      revoker_name: Dibatalkan oleh
   user_mutes:
     index:
       title: Pengguna yang Dibisukan
index 821c795520a419b914eaa9a9db846e7b3969e081..561954e8af840f7259d17489d36bc4d97ab982cd 100644 (file)
@@ -392,7 +392,6 @@ is:
         way: Leið
         relation: Vensl
     containing_relation:
-      entry_html: Venslin %{relation_name}
       entry_role_html: Venslin %{relation_name} (sem „%{relation_role}“)
     not_found:
       title: Fannst ekki
@@ -1517,7 +1516,6 @@ is:
         other: '%{count} skýrslur'
       reported_item: Tilkynnt atriði
     show:
-      title: '%{status} vandamál #%{issue_id}'
       reports:
         one: '%{count} skýrsla'
         other: '%{count} skýrslur'
@@ -2651,7 +2649,7 @@ is:
       upload_trace: Senda inn feril
       all_traces: Allar ferlar
       my_traces: Ferlarnir mínir
-      traces_from: Opinberir ferlar frá %{user}
+      traces_from_html: Opinberir ferlar frá %{user}
       remove_tag_filter: Fjarlægja merkjasíu
     destroy:
       scheduled_for_deletion: Þessum feril verður eitt
@@ -3052,7 +3050,6 @@ is:
       reason: 'Ástæða banns:'
       revoker: 'Eytt af:'
     block:
-      not_revoked: (ekki eytt)
       show: Sýna
       edit: Breyta
     page:
@@ -3060,13 +3057,12 @@ is:
       creator_name: Búið til af
       reason: Ástæða banns
       status: Staða
-      revoker_name: Eytt af
     navigation:
       all_blocks: Öll bönn
       blocks_on_me: Bönn gegn mér
-      blocks_on_user: Bönn gegn %{user}
+      blocks_on_user_html: Bönn gegn %{user}
       blocks_by_me: Bönn eftir mig
-      blocks_by_user: Bönn eftir %{user}
+      blocks_by_user_html: Bönn eftir %{user}
       block: 'Bann #%{id}'
   user_mutes:
     index:
index 07442a854f04209c3a32a410b10be973c4ca9c9f..c3042225ef4f01acf53248111f43d11065758fd1 100644 (file)
@@ -24,6 +24,7 @@
 # Author: Fringio
 # Author: Frubino
 # Author: Gianfranco
+# Author: HaukweKwor
 # Author: Isiond
 # Author: JackLantern
 # Author: Jlrb+
@@ -119,6 +120,7 @@ it:
       message: Messaggio
       node: Nodo
       node_tag: Etichetta del nodo
+      note: Nota
       old_node: Vecchio nodo
       old_node_tag: Vecchia etichetta del nodo
       old_relation: Vecchia relazione
@@ -362,7 +364,7 @@ it:
         link: https://osmfoundation.org/wiki/Licence/Contributor_Terms/IT
         link text: che cos'è questo?
       save changes button: Salva modifiche
-      delete_account: Elimina account...
+      delete_account: Elimina Utenza...
     go_public:
       heading: Modifica pubblica
       currently_not_public: Attualmente le tue modifiche sono anonime e le persone
@@ -431,8 +433,7 @@ it:
         way: Percorso
         relation: Relazione
     containing_relation:
-      entry_html: Relazione %{relation_name}
-      entry_role_html: Relazione %{relation_name} (come %{relation_role})
+      entry_role_html: '%{relation_name} (come %{relation_role})'
     not_found:
       title: Non trovato
       sorry: 'Impossibile trovare %{type} #%{id}.'
@@ -1582,7 +1583,6 @@ it:
         open: Aperto
         resolved: Risolto
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         one: '%{count} segnalazione'
         other: '%{count} segnalazioni'
@@ -1978,6 +1978,15 @@ it:
       title: Preferenze
       preferred_editor: Editor preferito
       preferred_languages: Lingue preferite
+      preferred_site_color_scheme: Schema di colori preferito per il sito web
+      site_color_schemes:
+        auto: Automatico
+        light: Chiaro
+        dark: Scuro
+      map_color_schemes:
+        auto: Automatico
+        light: Chiaro
+        dark: Scuro
       edit_preferences: Modifica preferenze
     edit:
       title: Modifica preferenze
@@ -2667,7 +2676,7 @@ it:
       upload_trace: Carica un tracciato
       all_traces: Tutti i tracciati
       my_traces: I miei tracciati
-      traces_from: Tracciati pubblici di %{user}
+      traces_from_html: Tracciati pubblici di %{user}
       remove_tag_filter: Rimuovi filtro delle etichette
     destroy:
       scheduled_for_deletion: Tracciato in attesa di essere eliminato
@@ -3048,6 +3057,15 @@ it:
         years:
           one: '%{count} anno'
           other: '%{count} anni'
+      short:
+        ended: terminato
+        revoked_html: revocato da %{name}
+        active: attivo
+        active_unread: attivo non letto
+        expired_unread: scaduto non letto
+        read_html: letto alle %{time}
+        time_in_future_title: '%{time_absolute}; in %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blocchi su %{name}
       heading_html: Lista dei blocchi su %{name}
@@ -3066,21 +3084,21 @@ it:
       reason: 'Motivazione del blocco:'
       revoker: 'Revocatore:'
     block:
-      not_revoked: (non revocato)
       show: Mostra
       edit: Modifica
     page:
       display_name: Utente bloccato
       creator_name: Autore
       reason: Motivo del blocco
+      start: Inizio
+      end: Fine
       status: Stato
-      revoker_name: Revocato da
     navigation:
       all_blocks: Tutti i blocchi
       blocks_on_me: Blocchi su di me
-      blocks_on_user: Blocchi su %{user}
+      blocks_on_user_html: Blocchi su %{user}
       blocks_by_me: Blocchi applicati da me
-      blocks_by_user: Blocchi imposti da %{user}
+      blocks_by_user_html: Blocchi imposti da %{user}
       block: 'Blocco #%{id}'
       new_block: Nuovo blocco
   user_mutes:
@@ -3121,6 +3139,11 @@ it:
       description: Descrizione
       created_at: Creata il
       last_changed: Modificata per l'ultima volta
+      apply: Applica
+      all: Tutto
+      open: Aperto
+      closed: Chiuso
+      status: Stato
     show:
       title: 'Nota: %{id}'
       description: Descrizione
@@ -3139,6 +3162,9 @@ it:
       report: segnalare questa nota
       anonymous_warning: Questa nota include commenti da parte di utenti anonimi che
         devono essere verificati in modo indipendente.
+      discussion: Discussione
+      subscribe: Iscriviti
+      unsubscribe: Annulla iscrizione
       hide: Nascondi
       resolve: Risolta
       reactivate: Riattiva
index 7ee065dfeed4fff5f069a59430664ab79340b61a..7a92b346b01451439b5d5fc181b10529d0b05b9e 100644 (file)
@@ -390,7 +390,6 @@ ja:
         way: ウェイ
         relation: リレーション
     containing_relation:
-      entry_html: リレーション %{relation_name}
       entry_role_html: リレーション %{relation_name} (%{relation_role} として)
     not_found:
       title: 見つかりません
@@ -1509,7 +1508,6 @@ ja:
         open: 開く
         resolved: 解決済
     show:
-      title: '%{status} 問題 #%{issue_id}'
       reports:
         other: '%{count}件のレポート'
       no_reports: 報告はありません
@@ -2390,7 +2388,7 @@ ja:
       upload_trace: トレースをアップロード
       all_traces: 全てのトレース
       my_traces: 自分のトレース
-      traces_from: '%{user}さんによる公開GPSトレース'
+      traces_from_html: '%{user}さんによる公開GPSトレース'
       remove_tag_filter: タグフィルターの削除
     destroy:
       scheduled_for_deletion: トレースの削除準備を行いました
@@ -2722,7 +2720,6 @@ ja:
       reason: 'ブロックの理由:'
       revoker: '取消:'
     block:
-      not_revoked: (取り消されていません)
       show: 表示する
       edit: 編集
     page:
@@ -2730,7 +2727,6 @@ ja:
       creator_name: 作成者
       reason: ブロックされた理由
       status: 状態
-      revoker_name: 取り消し者
   user_mutes:
     index:
       title: ミュートした利用者
index 16fe02f2192ef1730a582caec4dba0872a8df88d..3dd471231660a467e915e97e7882d6beaf656655 100644 (file)
@@ -163,7 +163,6 @@ ka:
         way: გზა
         relation: ურთიერთობა
     containing_relation:
-      entry_html: ურთიერთობა %{relation_name}
       entry_role_html: ურთიერთობა %{relation_name} (როგორც %{relation_role})
     not_found:
       sorry: 'სამწუხაროდ, %{type} #%{id} ვერ მოიძებნა.'
@@ -1025,7 +1024,6 @@ ka:
       reason: 'დაბლოკვის მიზეზი:'
       revoker: 'განმბლოკველი:'
     block:
-      not_revoked: (არ არის განბლოკილი)
       show: ჩვენება
       edit: რედაქტირება
     page:
@@ -1033,7 +1031,6 @@ ka:
       creator_name: შემქმნელი
       reason: დაბლოკვის მიზეზი
       status: სტატუსი
-      revoker_name: განბლოკილია
   notes:
     index:
       creator: შემქმნელი
index 24d5b1dc7e2f49dcfd56690335a142ad00ddd44a..0dead6ae16013862f23aa8132c6daf975246c5c0 100644 (file)
@@ -257,7 +257,6 @@ kab:
         way: Abrid
         relation: Assaɣ
     containing_relation:
-      entry_html: Assaɣ %{relation_name}
       entry_role_html: Assaɣ %{relation_name} (am %{relation_role})
     not_found:
       sorry: 'Suref-aɣ, %{type} #%{id} ulac-it.'
@@ -1225,7 +1224,6 @@ kab:
       creator_name: Amernay
       reason: Taɣzint n  usewḥel
       status: Addad
-      revoker_name: Isewḥel-it
   notes:
     index:
       heading: Tizmilin n %{user}
index 54c620e84349cd773ab313c6b10af9696c4aa798..0e713250cef2ce2f432b8533ff3906f7182635b2 100644 (file)
@@ -266,8 +266,6 @@ kk-cyrl:
         node: Нүкте
         way: Сызық
         relation: Қатынас
-    containing_relation:
-      entry_html: Қатынас %{relation_name}
     not_found:
       title: Табылмады
       type:
index 98237c03f768fdebc5033116fd30552f5c05f426..ae4c859b10bff8d4ede96704cf79b34bf8ac4682 100644 (file)
@@ -133,7 +133,6 @@ km:
         way: ផ្លូវ​
         relation: ទំនាក់ទំនង
     containing_relation:
-      entry_html: ទំនាក់ទំនង​ %{relation_name}
       entry_role_html: ទំនាក់ទំនង %{relation_name} (ជា %{relation_role})
     not_found:
       sorry: សូមទោស រកមិនឃើញ %{type}%{id}​ ទេ។
index 632c965614b5612d1a5a774f538e7f485f1687c9..dabdf6f745f51788bba78a57781398a3c5443172 100644 (file)
@@ -237,8 +237,6 @@ kn:
       type:
         way: ರಸ್ತೆ
         relation: ಸಂಬಂಧ
-    containing_relation:
-      entry_html: ಸಂಬಂಧ %{relation_name}
     not_found:
       title: ಸಿಗಲಿಲ್ಲ
       sorry: 'ಕ್ಷಮಿಸಿ, %{type} #%{id} ಸಿಗುತ್ತಿಲ್ಲ.'
index 10cf572b4951df4a7b68d626ad892f63b7e92d4b..b934070259ae0fcaf15c67af86e1ba65e1a8b42d 100644 (file)
@@ -374,7 +374,6 @@ ko:
         way: 길
         relation: 관계
     containing_relation:
-      entry_html: 관계 %{relation_name}
       entry_role_html: (%{relation_role}로서) 관계 %{relation_name}
     not_found:
       title: 찾을 수 없음
@@ -624,6 +623,7 @@ ko:
   doorkeeper:
     errors:
       messages:
+        account_selection_required: 인가 서버에는 최종 사용자의 계정 선택이 필요합니다
         consent_required: 인가 서버에는 최종 사용자의 동의가 필요합니다
         interaction_required: 인가 서버에는 최종 사용자의 소통이 필요합니다
         login_required: 인가 서버에는 최종 사용자의 인증이 필요합니다
@@ -650,6 +650,7 @@ ko:
         알려주십시오. 요청의 정확한 URL을 기록해 두십시오.
     bad_request:
       title: 잘못된 요청
+      description: 오픈스트리트맵 서버에서 요청하신 작업이 유효하지 않습니다 (HTTP 400)
     forbidden:
       title: 접근 거부됨
       description: 오픈스트리트맵 서버에 요청한 이 작업은 관리자만 사용할 수 있습니다(HTTP 403).
@@ -1187,6 +1188,7 @@ ko:
           lawyer: 변호사 사무실
           newspaper: 신문사
           ngo: 비정부 기구 사무실
+          religion: 종교 사무소
           research: 연구실
           tax_advisor: 세무사
           telecommunication: 통신 회사 사옥
@@ -1327,6 +1329,7 @@ ko:
           massage: 안마시술소
           medical_supply: 의료용품 공급점
           mobile_phone: 휴대폰 상점
+          money_lender: 대금업자
           motorcycle: 이륜자동차(오토바이) 상점
           motorcycle_repair: 오토바이 수리점
           music: 음반 가게
@@ -1443,6 +1446,7 @@ ko:
     page:
       user_not_found: 사용자가 존재하지 않습니다
       issues_not_found: 해당 이슈를 찾을 수 없습니다
+      reported_user: 신고된 사용자
       status: 상태
       reports: 보고서
       last_updated: 최근 업데이트
@@ -1450,8 +1454,11 @@ ko:
       reports_count:
         other: 신고 %{count}건
       reported_item: 항목 신고함
+      states:
+        ignored: 무시됨
+        open: 열림
+        resolved: 해결됨
     show:
-      title: '%{status} 문제 #%{issue_id}'
       reports:
         other: 신고 %{count}건
       no_reports: 보고서 없음
@@ -1777,6 +1784,16 @@ ko:
       title: 내 환경 설정
       preferred_editor: 선호하는 편집기
       preferred_languages: 선호하는 언어
+      preferred_site_color_scheme: 선호하는 웹사이트 색상 구성표
+      site_color_schemes:
+        auto: 자동
+        light: 밝음
+        dark: 어두움
+      preferred_map_color_scheme: 선호하는 지도 색상 구성표
+      map_color_schemes:
+        auto: 자동
+        light: 밝음
+        dark: 어두움
       edit_preferences: 환경 설정 편집
     edit:
       title: 환경 설정 편집
@@ -2376,7 +2393,7 @@ ko:
       upload_trace: 궤적 올리기
       all_traces: 모든 궤적
       my_traces: 내 발자취
-      traces_from: '%{user}님의 공개 GPS 궤적'
+      traces_from_html: '%{user}님의 공개 GPS 궤적'
       remove_tag_filter: 태그 필터 제거
     destroy:
       scheduled_for_deletion: 삭제 계획중인 궤적
@@ -2724,7 +2741,6 @@ ko:
       reason: '차단 이유:'
       revoker: '해제:'
     block:
-      not_revoked: (철회하지 않음)
       show: 보기
       edit: 편집
     page:
@@ -2732,13 +2748,12 @@ ko:
       creator_name: 만든이
       reason: 차단 이유
       status: 상태
-      revoker_name: 해제자
     navigation:
       all_blocks: 모든 차단
       blocks_on_me: 나의 차단내역
-      blocks_on_user: '%{user}님의 차단내역'
+      blocks_on_user_html: '%{user}님의 차단내역'
       blocks_by_me: 내가 차단한 내역
-      blocks_by_user: '%{user}님이 차단한 내역'
+      blocks_by_user_html: '%{user}님이 차단한 내역'
       block: '#%{id} 차단'
       new_block: 최근 차단
   user_mutes:
@@ -2775,6 +2790,11 @@ ko:
       description: 설명
       created_at: 만든 날짜
       last_changed: 마지막으로 바뀜
+      apply: 적용
+      all: 모두
+      open: 열림
+      closed: 닫힘
+      status: 상태
     show:
       title: '참고: %{id}'
       description: 설명
@@ -2792,6 +2812,9 @@ ko:
       event_hidden_by_html: '%{time_ago} %{user}님이 숨김 처리함'
       report: 이 참고 신고
       anonymous_warning: 이 참고는 익명 사용자의 댓글을 포함하므로 별도로 확인해야 합니다.
+      discussion: 토론
+      subscribe: 구독
+      unsubscribe: 구독 해지
       hide: 숨기기
       resolve: 해결
       reactivate: 다시 활성화
index deab2c5c1c4fcdde076bae3cf0fe12280a0d43a4..450c5539ab87cac2106e4dce1457075b340a98d9 100644 (file)
@@ -354,7 +354,6 @@ ku-Latn:
         way: Rê
         relation: Eleqe
     containing_relation:
-      entry_html: Eleqe %{relation_name}
       entry_role_html: Eleqe %{relation_name} (wekî %{relation_role})
     not_found:
       title: Nehate dîtin
@@ -1406,7 +1405,6 @@ ku-Latn:
         other: '%{count} Rapor'
       reported_item: Hêmanê Raporkirî
     show:
-      title: '%{status} Pirsgirêk #%{issue_id}'
       reports:
         one: '%{count} rapor'
         other: '%{count} raporan'
@@ -2177,7 +2175,7 @@ ku-Latn:
       upload_trace: Şopek GPSê bar bike
       all_traces: Temamê Şopan
       my_traces: Şopên min
-      traces_from: Şopên Giştî ji %{user}
+      traces_from_html: Şopên Giştî ji %{user}
       remove_tag_filter: Parzûna etîketê rake
     destroy:
       scheduled_for_deletion: Şop ji bo jêbirinê hate plankirin
@@ -2513,7 +2511,6 @@ ku-Latn:
       reason: 'Sedema astengkirinê:'
       revoker: Yê ku rakiriyeː
     block:
-      not_revoked: (ne betalkirî)
       show: Nîşan bide
       edit: Biguherîne
     page:
@@ -2521,7 +2518,6 @@ ku-Latn:
       creator_name: Çêker
       reason: Sedema astengkirinê
       status: Rewş
-      revoker_name: Yê ku betal kiriyeː
   notes:
     index:
       title: Notên ku ji aliyê %{user} ve hatine şandin an jî şirovekirin
index 8fcd800e14f9dc94640de7edb9fa6cfb10ff45d4..40d94d6a31bfbdb014e4b11f8334b3469f08fe97 100644 (file)
@@ -346,8 +346,7 @@ lb:
         way: Wee
         relation: Relatioun
     containing_relation:
-      entry_html: Relatioun %{relation_name}
-      entry_role_html: Relatioun %{relation_name} (als %{relation_role})
+      entry_role_html: '%{relation_name} (als %{relation_role})'
     not_found:
       title: Net fonnt
       sorry: Pardon, den %{type}#%{id}, konnt net fonnt ginn.
@@ -1402,7 +1401,6 @@ lb:
         open: Oppen
         resolved: Geléist
     show:
-      title: '%{status} Problem Nr. %{issue_id}'
       reports:
         one: '%{count} Meldung'
         other: '%{count} Meldungen'
@@ -1764,6 +1762,14 @@ lb:
       title: Meng Benotzerastellungen
       preferred_editor: Liblingseditor
       preferred_languages: Léifste Sproochen
+      site_color_schemes:
+        auto: Automatesch
+        light: Hell
+        dark: Däischter
+      map_color_schemes:
+        auto: Automatesch
+        light: Hell
+        dark: Däischter
       edit_preferences: Benotzerastellungen änneren
     edit:
       title: Benotzerastellungen änneren
@@ -2107,7 +2113,7 @@ lb:
       wiki_page: Wiki-Säit
       all_traces: All Spuren
       my_traces: Meng Spueren
-      traces_from: Ëffentlech Spuere vum %{user}
+      traces_from_html: Ëffentlech Spuere vum %{user}
       remove_tag_filter: Tag-Filter ewechhuelen
     destroy:
       scheduled_for_deletion: Fir d'Läsche bestëmmt Spuer
@@ -2319,6 +2325,8 @@ lb:
         years:
           one: '%{count} Joer'
           other: '%{count} Joren'
+      short:
+        active: aktiv
     blocks_on:
       title: Späre vum %{name}
       empty: '%{name} gouf bis elo nach net gespaart.'
@@ -2334,14 +2342,12 @@ lb:
       edit: Änneren
       reason: 'Grond fir d''Spär:'
     block:
-      not_revoked: (net opgehuewen)
       show: Weisen
       edit: Änneren
     page:
       display_name: Gespaarte Benotzer
       reason: Grond fir d'Spär
       status: Status
-      revoker_name: Opgehuewe vum
   user_mutes:
     index:
       table:
@@ -2354,6 +2360,7 @@ lb:
       no_notes: Keng Notizen
       description: Beschreiwung
       last_changed: Lescht Ännerung
+      status: Status
     show:
       title: 'Notiz: %{id}'
       description: Beschreiwung
@@ -2361,6 +2368,9 @@ lb:
       closed_title: 'Geléisten Hiweis #%{note_name}'
       hidden_title: Verstoppt Notiz N° %{note_name}
       report: Dësen Hiweis mellen
+      discussion: Diskussioun
+      subscribe: Abonéieren
+      unsubscribe: Ofbestellen
       hide: Verstoppen
       resolve: Léisen
       reactivate: Reaktivéieren
index b8b1f7b30ac4376b128364020aab5ee19d759cb3..4f5605313cc553b1bbcf56604dc01d32647fe8c9 100644 (file)
@@ -419,7 +419,6 @@ lt:
         way: Kelias
         relation: Ryšys
     containing_relation:
-      entry_html: Ryšys %{relation_name}
       entry_role_html: Ryšys %{relation_name} (kaip %{relation_role})
     not_found:
       title: Nerasta
@@ -1511,7 +1510,6 @@ lt:
         open: Atidaryta
         resolved: Išspręsta
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         one: '{%count} pranešimas'
         few: '%{count} pranešimai'
@@ -2536,7 +2534,7 @@ lt:
       upload_trace: Įkelti pėdsaką
       all_traces: Visi pėdsakai
       my_traces: Mano GPS pėdsakai
-      traces_from: Vieši naudotojo %{user} pėdsakai
+      traces_from_html: Vieši naudotojo %{user} pėdsakai
       remove_tag_filter: Pašalinti žymų filtrą
     destroy:
       scheduled_for_deletion: Trasa, numatyta ištrinimui
@@ -2934,7 +2932,6 @@ lt:
       reason: 'Blokavimo priežastis:'
       revoker: 'Atšaukėjas:'
     block:
-      not_revoked: (neatšauktas)
       show: Rodyti
       edit: Keisti
     page:
@@ -2942,13 +2939,12 @@ lt:
       creator_name: Kūrėjas
       reason: Blokavimo priežastis
       status: Būsena
-      revoker_name: Atšaukė
     navigation:
       all_blocks: Visi blokavimai
       blocks_on_me: Mano blokavimai
-      blocks_on_user: '%{user} blokavimai'
+      blocks_on_user_html: '%{user} blokavimai'
       blocks_by_me: Mano sukurti blokavimai
-      blocks_by_user: '%{user} sukurti blokavimai'
+      blocks_by_user_html: '%{user} sukurti blokavimai'
       block: 'Blokavimas #%{id}'
       new_block: Naujas blokavimas
   user_mutes:
index 405c47dcbb8b9e2a563ddb2308f7400b0e39d7d9..ded57b0c3cdae9f1e1f7090459ce2e1e70d479ab 100644 (file)
@@ -280,7 +280,6 @@ lv:
         way: Līnija
         relation: Relācija
     containing_relation:
-      entry_html: Relācija %{relation_name}
       entry_role_html: Relācija %{relation_name} (kā %{relation_role})
     not_found:
       sorry: 'Atvainojiet, %{type} ar id #%{id} nevarējām atrast.'
@@ -1988,7 +1987,6 @@ lv:
       reason: 'Bloķēšanas iemesls:'
       revoker: 'Atsaucējs:'
     block:
-      not_revoked: (nav atsaukts)
       show: Rādīt
       edit: Labot
     page:
@@ -1996,7 +1994,6 @@ lv:
       creator_name: Autors
       reason: Iemesls liegumam
       status: Statuss
-      revoker_name: Atsaucis
   notes:
     index:
       title: Piezīmes, kuras veidojis vai komentējis %{user}
index f64385a105837af110fb0e9c8f6ce5b3e3358f20..dbb556bc9056a03e9f106330efcd37aa2a547d28 100644 (file)
@@ -62,6 +62,7 @@ mk:
       message: Порака
       node: Јазол
       node_tag: Ознака на јазол
+      note: Напомена
       old_node: Стар јазол
       old_node_tag: Стара ознака за јазол
       old_relation: Стар однос
@@ -365,8 +366,7 @@ mk:
         way: Пат
         relation: Однос
     containing_relation:
-      entry_html: Однос %{relation_name}
-      entry_role_html: Однос %{relation_name} (како %{relation_role})
+      entry_role_html: '%{relation_name} (како %{relation_role})'
     not_found:
       title: Не е најдено
       sorry: За жал, не да најдам %{type} со бр. %{id}.
@@ -1511,7 +1511,10 @@ mk:
         open: Отворено
         resolved: Решено
     show:
-      title: '%{status} Проблем бр. #%{issue_id}'
+      title:
+        open: Отворен проблем бр. %{issue_id}
+        ignored: Занемарен проблем бр. %{issue_id}
+        resolved: Решен проблем бр. %{issue_id}
       reports:
         one: '%{count} пријава'
         other: '%{count} пријави'
@@ -1895,6 +1898,16 @@ mk:
       title: Мои нагодувања
       preferred_editor: Претпочитан уредник
       preferred_languages: Претпочитани јазици
+      preferred_site_color_scheme: Претпочитана бојна шема на мрежното место
+      site_color_schemes:
+        auto: Автоматски
+        light: Светло
+        dark: Темно
+      preferred_map_color_scheme: Претпочитана бојна шема на картите
+      map_color_schemes:
+        auto: Автоматски
+        light: Светло
+        dark: Темно
       edit_preferences: Измени нагодувања
     edit:
       title: Измени нагодувања
@@ -2581,7 +2594,7 @@ mk:
       upload_trace: Подигни трага
       all_traces: Сите траги
       my_traces: Мои траги
-      traces_from: Јавни траги од %{user}
+      traces_from_html: Јавни траги од %{user}
       remove_tag_filter: Отстрани филтер за ознаки
     destroy:
       scheduled_for_deletion: Трагата е закажана за бришење
@@ -2889,11 +2902,11 @@ mk:
       not_revoke_admin_current_user: Не можам да му ја одземам администраторската
         улога на тековниот корисник.
     grant:
-      are_you_sure: Дали сигурно сакае да му ја доделите улогата `%{role}' на корисникот
-        `%{name}'?
+      are_you_sure: Дали сигурно сакае да му ја доделите улогата „%{role}“ на корисникот
+        „%{name}“?
     revoke:
-      are_you_sure: Дали сигурно сакате да го лишите корисникот  `%{name}' од улогата
-        `%{role}' ?
+      are_you_sure: Дали сигурно сакате да го лишите корисникот „%{name}“ од улогата
+        „%{role}“?
   user_blocks:
     model:
       non_moderator_update: Морате да бидете модератор за да правите или подновувате
@@ -2960,6 +2973,15 @@ mk:
         years:
           one: '%{count} година'
           other: '%{count} години'
+      short:
+        ended: завршен
+        revoked_html: отповикано од %{name}
+        active: активен
+        active_unread: активен непрочитан
+        expired_unread: истечен непрочитан
+        read_html: порочитај во %{time}
+        time_in_future_title: '%{time_absolute}; за %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Блокови за %{name}
       heading_html: Список на блокови за %{name}
@@ -2978,21 +3000,21 @@ mk:
       reason: 'Причина за блокирање:'
       revoker: 'Поништувач:'
     block:
-      not_revoked: (не се поништува)
       show: Прикажи
       edit: Уреди
     page:
       display_name: Блокиран корисник
       creator_name: Создавач
       reason: Причина за блокирање
+      start: Почеток
+      end: Крај
       status: Статус
-      revoker_name: 'Поништил:'
     navigation:
       all_blocks: Сите блокови
       blocks_on_me: Добиени блокови
-      blocks_on_user: Блокови за %{user}
+      blocks_on_user_html: Блокови за %{user}
       blocks_by_me: Извршени болокови
-      blocks_by_user: Блокови од %{user}
+      blocks_by_user_html: Блокови од %{user}
       block: Блок бр. %{id}
       new_block: Нов блок
   user_mutes:
@@ -3032,6 +3054,11 @@ mk:
       description: Опис
       created_at: Создадена
       last_changed: Изменета
+      apply: Примени
+      all: Сите
+      open: Отворено
+      closed: Затворено
+      status: Статус
     show:
       title: 'Белешка: %{id}'
       description: Опис
@@ -3050,6 +3077,9 @@ mk:
       report: пријави ја белешкава
       anonymous_warning: Оваа белешка има коментари од анонимни корисници што треба
         независно да се проверат.
+      discussion: Разговор
+      subscribe: Претплати се
+      unsubscribe: Отпиши се
       hide: Скриј
       resolve: Решена
       reactivate: Преактивирај
index 0dd8e0ef68fc207b18cf5d4d821932469f8de223..846afd851511b767373db8fc61dcef6388a55b56 100644 (file)
@@ -117,7 +117,6 @@ mo:
         way: Кале
         relation: Релацие
     containing_relation:
-      entry_html: Релация %{relation_name}
       entry_role_html: Релация %{relation_name} (ын ролул %{relation_role})
     not_found:
       type:
index 1f1f7da6fd5d63e9bff99a151383faaaa01c07f6..801fad8d45861ad5304ea13b57f0a1ccb261b198 100644 (file)
@@ -227,7 +227,6 @@ mr:
         way: मार्ग
         relation: संबंध
     containing_relation:
-      entry_html: संबंध %{relation_name}
       entry_role_html: संबंध %{relation_name} (%{relation_role} म्हणून)
     not_found:
       sorry: 'क्षमा असावी, %{type} #%{id} सापडले नाही.'
index 1ba56971f85f34f07005aba0331055f210c92ed7..0bbcd79c94202c20fbd2b8f95651174856d2e963 100644 (file)
@@ -294,7 +294,6 @@ ms:
         way: Jalan
         relation: Hubungan
     containing_relation:
-      entry_html: Hubungan %{relation_name}
       entry_role_html: Hubungan %{relation_name} (sebagai %{relation_role})
     not_found:
       title: Tidak Dijumpai
@@ -2006,7 +2005,6 @@ ms:
       reason: 'Sebab sekatan:'
       revoker: 'Penarik balik:'
     block:
-      not_revoked: (tidak ditarik balik)
       show: Tunjukkan
       edit: Sunting
     page:
@@ -2014,7 +2012,6 @@ ms:
       creator_name: Pembuat
       reason: Sebab sekatan
       status: Status
-      revoker_name: Ditarik balik oleh
   user_mutes:
     index:
       title: Pengguna yang Diredamkan
index c24f750519308f547db7cc201574b19ebe6fda31..cff3c645db152e095586ec13973774158812088a 100644 (file)
@@ -354,7 +354,6 @@ nb:
         way: Linje
         relation: Relasjon
     containing_relation:
-      entry_html: Relasjon %{relation_name}
       entry_role_html: Relasjon %{relation_name} (som %{relation_role})
     not_found:
       title: Ikke funnet
@@ -1277,7 +1276,6 @@ nb:
         other: '%{count} rapporter'
       reported_item: Rapportert element
     show:
-      title: '%{status} Sak #%{issue_id}'
       reports:
         one: '%{count} rapport'
         other: '%{count} rapporter'
@@ -2249,7 +2247,6 @@ nb:
       reason: 'Årsak for blokkering:'
       revoker: 'Tilbakekaller:'
     block:
-      not_revoked: (ikke tilbakekalt)
       show: Vis
       edit: Rediger
     page:
@@ -2257,7 +2254,6 @@ nb:
       creator_name: Opprettet av
       reason: Årsak for blokkering
       status: Status
-      revoker_name: Tilbakekalt av
   notes:
     index:
       title: Merknader sendt inn eller kommentert på av %{user}
index b6a7bf7a06160b0fc83d413ff50574d112c34e18..9c1179408aef234e25114ef9f7291f6ac3baeed1 100644 (file)
@@ -292,7 +292,6 @@ ne:
         way: बाटो
         relation: सम्बन्ध
     containing_relation:
-      entry_html: सम्बन्ध %{relation_name}
       entry_role_html: सम्बन्ध %{relation_name} (as %{relation_role})
     not_found:
       title: फेला परेन
index 043e378d1731716533a4157a904614284d50a862..3e30056ec09f72b3f8ca62159f2aeacd01b978b5 100644 (file)
@@ -119,6 +119,7 @@ nl:
       message: Bericht
       node: Knooppunt
       node_tag: Knooppuntlabel
+      note: Opmerking
       old_node: Oud knooppunt
       old_node_tag: Oud knooppuntlabel
       old_relation: Oude relatie
@@ -429,8 +430,7 @@ nl:
         way: Weg
         relation: Relatie
     containing_relation:
-      entry_html: Relatie %{relation_name}
-      entry_role_html: Relatie %{relation_name} (als %{relation_role})
+      entry_role_html: '%{relation_name} (als %{relation_role})'
     not_found:
       title: Kon niet gevonden worden
       sorry: 'De %{type} #%{id} kon helaas niet worden gevonden.'
@@ -480,15 +480,33 @@ nl:
       introduction: Klik op de kaart om nabije objecten te vinden.
       nearby: Objecten in de buurt
       enclosing: Omsluitende objecten
+  nodes:
+    timeout:
+      sorry: Het ophalen van de gegevens voor het ID %{id} duurde te lang.
   old_nodes:
     not_found:
       sorry: 'Sorry, knooppunt #%{id} versie %{version} kon niet worden gevonden.'
+    timeout:
+      sorry: Het ophalen van de gegevens voor knooppunt met het ID %{id} duurde te
+        lang.
+  ways:
+    timeout:
+      sorry: Het ophalen van de gegevens voor de weg met het ID %{id} duurde te lang.
   old_ways:
     not_found:
       sorry: 'Sorry, weg #%{id} versie %{version} niet kon worden gevonden.'
+    timeout:
+      sorry: Het ophalen van de geschiedenis voor de weg met het ID %{id} duurde te
+        lang.
+  relations:
+    timeout:
+      sorry: Het ophalen van de relatie met het ID %{id} duurde te lang.
   old_relations:
     not_found:
       sorry: 'Sorry, relatie #%{id} versie %{version} kon niet worden gevonden.'
+    timeout:
+      sorry: Het ophalen van de geschiedenis voor de relatie met het ID %{id} duurde
+        te lang.
   changeset_comments:
     feeds:
       comment:
@@ -574,7 +592,7 @@ nl:
       latest_edit_html: 'Laatste bewerking (%{ago}):'
     popup:
       your location: Uw locatie
-      nearby mapper: Dichtbijzijnde mapper
+      nearby mapper: Nabije kaartmaker
       friend: Vriend
     show:
       title: Mijn dashboard
@@ -583,7 +601,7 @@ nl:
       edit_your_profile: Pas uw profiel aan
       my friends: Mijn vrienden
       no friends: U hebt nog geen vrienden toegevoegd.
-      nearby users: Andere dichtbijzijnde gebruikers
+      nearby users: Andere nabije gebruikers
       no nearby users: Er zijn nog geen andere gebruikers die hebben opgegeven in
         de buurt te mappen.
       friends_changesets: wijzigingensets van vrienden
@@ -1557,7 +1575,10 @@ nl:
         open: Open
         resolved: Opgelost
     show:
-      title: '%{status} Probleem #%{issue_id}'
+      title:
+        open: 'Open probleem #%{issue_id}'
+        ignored: 'Genegeerd probleem #%{issue_id}'
+        resolved: 'Opgelost probleem #%{issue_id}'
       reports:
         one: '%{count} rapport'
         other: '%{count} rapporten'
@@ -1866,7 +1887,7 @@ nl:
         other: '%{count} oude berichten'
       no_messages_yet_html: U hebt nog geen berichten. Waarom legt u geen contact
         met %{people_mapping_nearby_link}?
-      people_mapping_nearby: dichtbijzijnde mappers
+      people_mapping_nearby: nabije kaartmakers
     messages_table:
       from: Van
       to: Aan
@@ -1897,7 +1918,7 @@ nl:
         other: U hebt %{count} verzonden berichten
       no_sent_messages_html: U hebt nog geen berichten verzonden. Waarom legt u geen
         contact met %{people_mapping_nearby_link}?
-      people_mapping_nearby: dichtbijzijnde mappers
+      people_mapping_nearby: nabije kaartmakers
     muted:
       title: Gedempte berichten
       messages:
@@ -1955,6 +1976,16 @@ nl:
       title: Mijn voorkeuren
       preferred_editor: Voorkeursprogramma voor kaartbewerking
       preferred_languages: Voorkeurstalen
+      preferred_site_color_scheme: Het gewenste kleurenschema voor de website
+      site_color_schemes:
+        auto: Automatisch
+        light: Licht
+        dark: Donker
+      preferred_map_color_scheme: Het gewenste kleurenschema voor de kaart
+      map_color_schemes:
+        auto: Automatisch
+        light: Licht
+        dark: Donker
       edit_preferences: Voorkeuren instellen
     edit:
       title: Voorkeuren instellen
@@ -2056,9 +2087,9 @@ nl:
       heading_html: '%{copyright}OpenStreetMap- %{br} bijdragers'
       used_by_html: '%{name} levert kaartgegevens aan duizenden websites, mobiele
         apps en hardware-apparaten'
-      lede_text: OpenStreetMap wordt gemaakt door een gemeenschap van mappers die
-        gegevens over wegen, paden, cafés, treinstations en nog veel meer, over de
-        hele wereld bijdragen en onderhouden.
+      lede_text: OpenStreetMap wordt gemaakt door een gemeenschap van kaartmakers
+        die gegevens over wegen, paden, cafés, treinstations en nog veel meer, over
+        de hele wereld bijdragen en onderhouden.
       local_knowledge_title: Lokale kennis
       local_knowledge_html: OpenStreetMap legt de nadruk op lokale kennis. Bijdragers
         gebruiken luchtfoto's, gps-apparaten en low-tech veldkaarten om te controleren
@@ -2112,7 +2143,7 @@ nl:
           U kunt teruggaan naar de %{native_link} van deze pagina, of u kunt ophouden
           met lezen over de auteursrechten en %{mapping_link}.
         native_link: Nederlandstalige versie
-        mapping_link: begin met mappen
+        mapping_link: beginnen met mappen
       legal_babble:
         introduction_1_html: |-
           OpenStreetMap%{registered_trademark_link} is %{open_data}, in licentie gegeven onder de
@@ -2336,7 +2367,7 @@ nl:
           instructions_1_html: |-
             Klik op %{note_icon} of hetzelfde pictogram op de kaartweergave.
             Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen
-            door haar te verslepen. Voeg uw bericht toe, klik op "opslaan" en andere mappers zullen uw melding nagaan.
+            door deze te verslepen. Voeg uw bericht toe en klik op “Opslaan”, dan zullen andere kaartmakers uw melding nagaan.
       other_concerns:
         title: Andere aangelegenheden
         concerns_html: |-
@@ -2482,6 +2513,9 @@ nl:
           hospital: Ziekenhuis
           building: Belangrijk gebouw
           station: Spoorwegstation
+          railway_halt: Spoorweghalte
+          subway_station: Metrostation
+          tram_stop: Tramhalte
           summit: Top
           peak: Piek
           tunnel: Tunnel
@@ -2545,7 +2579,7 @@ nl:
           toevoegen.
         para_2_html: |-
           Ga naar %{map_link} en klik op het opmerkingssymbool:
-          %{note_icon}. Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen door te slepen. Voeg uw bericht toe en klik dan op Opslaan, zodat andere mappers het kunnen onderzoeken.
+          %{note_icon}. Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen door te slepen. Voeg uw bericht toe en klik op “Opslaan”, dan zullen andere kaartmakers uw melding nagaan.
         the_map: de kaart
     communities:
       title: Gemeenschappen
@@ -2557,8 +2591,8 @@ nl:
       local_chapters:
         title: Lokale Afdelingen
         about_text: |-
-          Lokale Afdelingen zijn groepen op land- of regioniveau die de formele stap hebben gezet om juridische entiteiten zonder winstoogmerk op te richten. Ze vertegenwoordigen de kaart en kaartenmakers van het gebied wanneer te maken heeft met de lokale overheid, het bedrijfsleven en de media. Ze hebben ook een affiliatie
-          met de OpenStreetMap Foundation (OSMF), waardoor ze een link hebben met de wettelijke en auteursrechtelijke-overheidsinstantie.
+          Lokale Afdelingen zijn groepen op land- of regioniveau die de formele stap hebben gezet om juridische entiteiten zonder winstoogmerk op te richten. Ze vertegenwoordigen de kaart en kaartmakers van het gebied bij het omgaan met de lokale overheid, het bedrijfsleven en de media. Ze hebben ook een affiliatie
+          met de OpenStreetMap Foundation (OSMF), waardoor ze een link hebben met de wettelijke en auteursrechtelijke overheidsinstantie.
         list_text: 'De volgende gemeenschappen zijn formeel opgericht als Lokale Afdelingen:'
       other_groups:
         title: Andere Groepen
@@ -2651,7 +2685,7 @@ nl:
       upload_trace: Traject uploaden
       all_traces: Alle trajecten
       my_traces: Mijn trajecten
-      traces_from: Openbare trajecten van %{user}
+      traces_from_html: Openbare trajecten van %{user}
       remove_tag_filter: Labelfilter verwijderen
     destroy:
       scheduled_for_deletion: Traject staat op de lijst voor verwijdering
@@ -2839,6 +2873,7 @@ nl:
       readable_summary: voor mensen leesbare samenvatting
       informal_translations: informele vertalingen
       continue: Doorgaan
+      cancel: Annuleren
       you need to accept or decline: Lees de nieuwe Bijdragersvoorwaarden en besluit
         daarna deze te accepteren of te verwerpen voordat u door kunt gaan.
       legale_select: 'Selecteer het land waarin u woont:'
@@ -2879,7 +2914,7 @@ nl:
       notes: Kaartopmerkingen
       remove as friend: Vriend verwijderen
       add as friend: Vriend toevoegen
-      mapper since: 'Mapper sinds:'
+      mapper since: 'Kaartmaker sinds:'
       last map edit: 'Recentste bewerking:'
       no activity yet: Nog geen activiteit
       uid: 'Gebruikers-ID:'
@@ -3034,6 +3069,15 @@ nl:
         years:
           one: '%{count} jaar'
           other: '%{count} jaar'
+      short:
+        ended: beëindigd
+        revoked_html: ingetrokken door %{name}
+        active: actief
+        active_unread: actief ongelezen
+        expired_unread: verlopen ongelezen
+        read_html: gelezen op %{time}
+        time_in_future_title: '%{time_absolute}; in %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blokkades voor %{name}
       heading_html: Lijst met blokkades voor %{name}
@@ -3052,21 +3096,21 @@ nl:
       reason: 'Reden voor blokkade:'
       revoker: 'Ingetrokken door:'
     block:
-      not_revoked: (niet ingetrokken)
       show: Weergeven
       edit: Bewerken
     page:
       display_name: Geblokkeerde gebruiker
       creator_name: Auteur
       reason: Reden voor blokkade
+      start: Begin
+      end: Einde
       status: Status
-      revoker_name: Ingetrokken door
     navigation:
       all_blocks: Alle blokkades
       blocks_on_me: Blokkades voor u
-      blocks_on_user: Blokkades voor %{user}
+      blocks_on_user_html: Blokkades voor %{user}
       blocks_by_me: Blokkades door u
-      blocks_by_user: Blokkades door %{user}
+      blocks_by_user_html: Blokkades door %{user}
       block: 'Blokkade #%{id}'
       new_block: Nieuwe blokkade
   user_mutes:
@@ -3106,6 +3150,11 @@ nl:
       description: Beschrijving
       created_at: Aangemaakt op
       last_changed: Laatste wijziging
+      apply: Toepassen
+      all: Alle
+      open: Open
+      closed: Gesloten
+      status: Status
     show:
       title: 'Opmerking: %{id}'
       description: Beschrijving
@@ -3125,6 +3174,9 @@ nl:
       coordinates_html: '%{latitude}; %{longitude}'
       anonymous_warning: In deze opmerking staan reacties van anonieme gebruikers
         die moeten worden gecontroleerd.
+      discussion: Overleg
+      subscribe: Abonneren
+      unsubscribe: Uitschrijven
       hide: Verbergen
       resolve: Oplossen
       reactivate: Opnieuw activeren
@@ -3140,9 +3192,9 @@ nl:
         %{disappear_in}.
     new:
       title: Nieuwe opmerking
-      intro: Een fout gezien of ontbreekt er iets? Laat het andere mappers weten zodat
-        wij het kunnen oplossen. Verplaats de markering naar de correcte positie en
-        beschrijf het probleem.
+      intro: Een fout gezien? Ontbreekt er iets? Laat het andere kaartmakers weten
+        zodat wij het kunnen verbeteren. Verplaats de markering naar de juiste positie
+        en beschrijf het probleem.
       anonymous_warning_html: U bent niet aangemeld. Als u updates van uw aantekening
         wilt ontvangen, kunt u %{log_in} of %{sign_up}.
       anonymous_warning_log_in: aanmelden
@@ -3153,6 +3205,8 @@ nl:
       add: Opmerking toevoegen
     notes_paging_nav:
       showing_page: Pagina %{page}
+      next: Volgende
+      previous: Vorige
   javascripts:
     close: Sluiten
     share:
@@ -3346,6 +3400,7 @@ nl:
       empty: Geen weer te geven redigeringen.
       heading: Lijst met redigeringen
       title: Lijst met redigeringen
+      new: Nieuwe redactie
     new:
       heading: Gegevens voor nieuwe redigering invoeren
       title: Aanmaak van een nieuwe redigering
index c8c922764c9e80c6bed75b5617f84cb44540df4d..ee39c56b88f9a01dcc0679f1b235ec652d00ec53 100644 (file)
@@ -334,7 +334,6 @@ nn:
         way: Veg
         relation: Relasjon
     containing_relation:
-      entry_html: Relasjon %{relation_name}
       entry_role_html: Relasjon %{relation_name} (som %{relation_role})
     not_found:
       title: Ikkje funne
@@ -1356,7 +1355,6 @@ nn:
         other: '%{count} meldingar'
       reported_item: Meld objekt
     show:
-      title: '%{status} Sak #%{issue_id}'
       reports:
         one: '%{count} melding'
         other: '%{count} meldingar'
@@ -2399,7 +2397,6 @@ nn:
       reason: 'Årsak for blokkering:'
       revoker: 'Tilbakekaller:'
     block:
-      not_revoked: (ikkje tilbakekalt)
       show: Vis
       edit: Rediger
     page:
@@ -2407,7 +2404,6 @@ nn:
       creator_name: Oppretta av
       reason: Årsak for blokkering
       status: Status
-      revoker_name: Tilbakekalt av
   notes:
     index:
       heading: '%{user} sine merknadar'
index 01ac78d5296dba0e89c493b056aec31e5108e939..7d7e099005da80a7cc561df415127999d67b363b 100644 (file)
@@ -302,7 +302,6 @@ nqo:
         way: ߛߌߟߊ
         relation: ߕߍߓߊ߯ߦߊ
     containing_relation:
-      entry_html: ߕߍߓߊ߯ߦߊ %{relation_name}
       entry_role_html: ߕߍߓߊ߯ߦߊ %{relation_role} %{relation_name} ߘߌ߫
     not_found:
       title: ߡߊ߫ ߛߐ߬ߘߐ߲߫
@@ -1000,7 +999,6 @@ nqo:
       last_updated: ߟߏ߲ߘߐߦߊߟߌ ߞߐ߯ߟߕߊ
       reported_item: ߝߛߌ߬ ߟߊߞߏߝߐߣߍ߲
     show:
-      title: '%{status} ߝߌ߬ߛߌ #%{issue_id}'
       report_created_at_html: ߞߏߝߐߟߌ߫ ߝߟߐ ߞߍ߫ ߘߊ߫ %{datetime}
       last_resolved_at_html: ߢߊߓߐߟߌ߫ ߟߊߓߊ߲ ߞߍ߫ ߘߊ߫ %{datetime}
       last_updated_at_html: ߊ߬ ߟߊߛߋ߫ ߟߊߓߊ߲ ߞߍ߫ ߘߊ߫ ߘߊߞߎ߲ ߘߐ߫ %{datetime} ߊ߬ ߣߌ߫ %{displayname}
@@ -1525,7 +1523,7 @@ nqo:
       upload_trace: ߜߋ߬ߙߋ ߘߏ߫ ߟߊߦߟߍ߬
       all_traces: ߜߋ߬ߙߋ ߟߎ߬ ߓߍ߯
       my_traces: ߒ ߝߏ߲߬ߝߏ߲ ߠߎ߬
-      traces_from: ߜߍߘߐ߫ ߜߙߋ ߟߎ߬ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
+      traces_from_html: ߜߍߘߐ߫ ߜߙߋ ߟߎ߬ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
     destroy:
       scheduled_for_deletion: ߜߋ߬ߙߋ ߟߐ߯ߟߊߟߌ ߖߏ߰ߛߌ߬ ߞߊ߲ߡߊ߬
     offline_warning:
index e1f9da2e250a842d11aefb2dd5dff6bbaf6dfbd6..06aba789500437a0589973ac92c6de2051ad57e8 100644 (file)
@@ -352,7 +352,6 @@ oc:
         way: Linha
         relation: Relacion
     containing_relation:
-      entry_html: Relacion %{relation_name}
       entry_role_html: Relacion %{relation_name} (per %{relation_role})
     not_found:
       title: S'es pas trobat
@@ -1380,7 +1379,6 @@ oc:
         other: '%{count} rapòrts'
       reported_item: Element raportat
     show:
-      title: '%{status} Incidéncia #%{issue_id}'
       reports:
         zero: Ges de rapòrt
         one: 1 rapport
@@ -2069,7 +2067,7 @@ oc:
       upload_trace: Mandar una traça
       all_traces: Totei lei traças
       my_traces: Mei traças GPS
-      traces_from: Traças GPS publicas de %{user}
+      traces_from_html: Traças GPS publicas de %{user}
       remove_tag_filter: Elimina lo filtre d'etiquetas
     destroy:
       scheduled_for_deletion: Pista prevista per la supression
@@ -2282,7 +2280,6 @@ oc:
       reason: 'Motiu del blocatge :'
       revoker: 'Revocador :'
     block:
-      not_revoked: (pas revocat)
       show: Mostrar
       edit: Modificar
     page:
@@ -2290,7 +2287,6 @@ oc:
       creator_name: Creator
       reason: Motiu del blocatge
       status: Estatut
-      revoker_name: Revocat per
   notes:
     index:
       title: Nòtas somesas o comentadas per %{user}
index 9df3f0be93a6535c32bca904d1ab42e7d7986536..797f492c42d2e512636b4f124a770ff1c4145fbd 100644 (file)
@@ -351,7 +351,6 @@ pa:
         way: ਰਾਹ
         relation: ਸਬੰਧ
     containing_relation:
-      entry_html: ਸਬੰਧ %{relation_name}
       entry_role_html: ਸਬੰਧ %{relation_name} (%{relation_role} ਵਜੋਂ)
     not_found:
       title: ਨਹੀਂ ਲੱਭਿਆ
@@ -1238,7 +1237,10 @@ pa:
         open: ਖੋਲ੍ਹੋ
         resolved: ਹੱਲ-ਕੱਢਿਆ ਗਿਆ
     show:
-      title: '%{status} ਮੁੱਦਾ #%{issue_id}'
+      title:
+        open: 'ਮੁੱਦਾ ਖੋਲ੍ਹੋ #%{issue_id}'
+        ignored: 'ਮੁੱਦਾ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ #%{issue_id}'
+        resolved: 'ਮੁੱਦਾ ਹੱਲ ਕੀਤਾ ਗਿਆ #%{issue_id}'
       no_reports: ਕੋਈ ਇਤਲਾਹ ਨਹੀਂ
       report_created_at_html: ਪਹਿਲੀ ਵਾਰ %{datetime} ਨੂੰ ਇਤਲਾਹ ਕੀਤੀ ਗਈ
       last_resolved_at_html: ਆਖਰੀ ਵਾਰ %{datetime} 'ਤੇ ਹੱਲ ਕੀਤਾ ਗਿਆ
@@ -1408,6 +1410,14 @@ pa:
     show:
       title: ਮੇਰੀਆਂ ਤਰਜੀਹਾਂ
       preferred_languages: ਤਰਜੀਹੀ ਬੋਲੀਆਂ
+      site_color_schemes:
+        auto: ਆਪਣੇ-ਆਪ
+        light: ਚਾਨਣ
+        dark: ਗੂੜ੍ਹਾ
+      map_color_schemes:
+        auto: ਆਪਣੇ-ਆਪ
+        light: ਚਾਨਣ
+        dark: ਗੂੜ੍ਹਾ
       edit_preferences: ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
     edit:
       title: ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
@@ -1712,7 +1722,7 @@ pa:
       upload_trace: ਕੋਈ ਖੁਰਾ-ਖੋਜ ਚੜ੍ਹਾਉ
       all_traces: ਸਾਰੇ ਖੁਰਾ-ਖੋਜ
       my_traces: ਮੇਰੇ ਖੁਰਾ-ਖੋਜ
-      traces_from: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
+      traces_from_html: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
     georss:
       title: OpenStreetMap GPS ਖੁਰਾ-ਖੋਜ
     description:
@@ -1940,6 +1950,10 @@ pa:
         years:
           one: '%{count} ਸਾਲ'
           other: '%{count} ਸਾਲ'
+      short:
+        ended: ਖਤਮ ਹੋ ਗਿਆ/ਗਈ
+        active: ਸਰਗਰਮ
+        expired_unread: ਨਹੀਂ-ਪੜ੍ਹਿਆ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ
     show:
       created: 'ਬਣਾਇਆ ਗਿਆ:'
       duration: 'ਮਿਆਦ:'
@@ -1954,6 +1968,8 @@ pa:
       display_name: ਰੋਕਿਆ ਵਰਤੋਂਕਾਰ
       creator_name: ਸਿਰਜਣਹਾਰ
       reason: ਰੋਕ ਦਾ ਕਾਰਨ
+      start: ਸ਼ੁਰੂ ਕਰੋ
+      end: ਖ਼ਤਮ
       status: ਦਰਜਾ
   user_mutes:
     index:
index 6d47057867b4b5f772ec08ff58a8fbca1c955f86..57c80564f69fd1b1c28903f987cc6090e0f98c19 100644 (file)
@@ -125,6 +125,7 @@ pl:
       message: Wiadomość
       node: Węzeł
       node_tag: Znacznik węzła
+      note: Uwaga
       old_node: Stary węzeł
       old_node_tag: Znacznik wcześniejszego węzła
       old_relation: Stara relacja
@@ -463,7 +464,6 @@ pl:
         way: Linia
         relation: Relacja
     containing_relation:
-      entry_html: Relacja %{relation_name}
       entry_role_html: Relacja %{relation_name} (jako %{relation_role})
     not_found:
       title: Nie znaleziono
@@ -1612,7 +1612,10 @@ pl:
         open: Otwórz
         resolved: Rozwiązane
     show:
-      title: '%{status} sprawa #%{issue_id}'
+      title:
+        open: Otwarta sprawa %{issue_id}
+        ignored: Zignorowana sprawa %{issue_id}
+        resolved: Rozwiązana sprawa %{issue_id}
       reports:
         one: '%{count} zgłoszenie'
         few: '%{count} zgłoszenia'
@@ -2013,6 +2016,16 @@ pl:
       title: Preferencje
       preferred_editor: 'Preferowane edytowanie w:'
       preferred_languages: 'Preferowane języki:'
+      preferred_site_color_scheme: Preferowany układ kolorystyczny strony
+      site_color_schemes:
+        auto: automatyczny
+        light: jasny
+        dark: ciemny
+      preferred_map_color_scheme: Preferowana kolorystyka mapy
+      map_color_schemes:
+        auto: automatyczna
+        light: jasna
+        dark: ciemna
       edit_preferences: Edytuj preferencje
     edit:
       title: Edycja preferencji
@@ -2687,7 +2700,7 @@ pl:
       upload_trace: Wyślij ślad
       all_traces: Wszystkie ślady
       my_traces: Moje ślady GPS
-      traces_from: Publiczne ślady GPS użytkownika %{user}
+      traces_from_html: Publiczne ślady GPS użytkownika %{user}
       remove_tag_filter: Usuń filtr tagów
     destroy:
       scheduled_for_deletion: Ślad oczekuje na usunięcie
@@ -3082,6 +3095,15 @@ pl:
           few: '%{count} lata'
           many: '%{count} lat'
           other: '%{count} roku'
+      short:
+        ended: zakończona
+        revoked_html: odwołana przez %{name}
+        active: aktywna
+        active_unread: aktywna, nieprzeczytana
+        expired_unread: wygasła, nieprzeczytana
+        read_html: przeczytana %{time}
+        time_in_future_title: '%{time_absolute}; za %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     blocks_on:
       title: Blokady na użytkownika %{name}
       heading_html: Lista blokad na użytkownika %{name}
@@ -3100,21 +3122,21 @@ pl:
       reason: 'Przyczyna blokady:'
       revoker: 'Cofający uprawnienia:'
     block:
-      not_revoked: (nieodwołana)
       show: Pokaż
       edit: Edytuj
     page:
       display_name: Zablokowany użytkownik
       creator_name: Twórca
       reason: Powód blokady
+      start: Początek
+      end: Koniec
       status: Status
-      revoker_name: Odwołana przez
     navigation:
       all_blocks: Wszystkie blokady
       blocks_on_me: Blokady nałożone na mnie
-      blocks_on_user: Blokady na %{user}
+      blocks_on_user_html: Blokady na %{user}
       blocks_by_me: Blokady nałożone przeze mnie
-      blocks_by_user: Blokady nałożone przez %{user}
+      blocks_by_user_html: Blokady nałożone przez %{user}
       block: Blokada nr %{id}
       new_block: Nowy blok
   user_mutes:
@@ -3156,6 +3178,11 @@ pl:
       description: Opis
       created_at: Utworzono w dniu
       last_changed: Ostatnio zmieniono
+      apply: Zastosuj
+      all: Wszystkie
+      open: Otwarte
+      closed: Zamknięte
+      status: Status
     show:
       title: 'Uwaga: %{id}'
       description: 'Opis:'
@@ -3174,6 +3201,9 @@ pl:
       report: ją zgłosić
       anonymous_warning: Uwaga zawiera informacje od anonimowych użytkowników, które
         należy zweryfikować przed wprowadzeniem zmian na mapie.
+      discussion: Dyskusja
+      subscribe: Obserwuj
+      unsubscribe: Nie obserwuj
       hide: Ukryj
       resolve: Oznacz jako rozwiązaną
       reactivate: Ponownie aktywuj
index a36e67b0f47ddbfcfdf967362c00de0756fd9b64..28d5d9d430a7fda84d81267ca1c4d8fad1dd4fd0 100644 (file)
@@ -314,7 +314,6 @@ pnb:
         way: راہ
         relation: سمبندھ
     containing_relation:
-      entry_html: سمبندھ «⁠%{relation_name}⁠»
       entry_role_html: سمبندھ «⁠%{relation_name}⁠» وچ «⁠%{relation_role}⁠⁠» رول
     not_found:
       title: کجھ نہیں لبھیا
@@ -1113,7 +1112,6 @@ pnb:
         other: '%{count} رپورٹاں'
       reported_item: رپورٹ دی چیز
     show:
-      title: '[%{status}] مسئلہ: %{issue_id}'
       reports:
         other: zeroرپورٹ نہیں
         one: اِکّ رپورٹ
@@ -1684,7 +1682,7 @@ pnb:
       upload_trace: کھرا چڑھایو
       all_traces: سارے کھرے کھوجاں
       my_traces: میرے کھرے
-      traces_from: «%{user}» دے عوام کھرے
+      traces_from_html: «%{user}» دے عوام کھرے
       remove_tag_filter: فلٹر ہٹاؤ
     georss:
       title: کھرے کھوجاں
@@ -1883,7 +1881,6 @@ pnb:
       edit: سودھو
       revoker: 'پرتاؤݨ والا:'
     block:
-      not_revoked: (نہیں پرتائی دتی گئی)
       show: وکھاؤ
       edit: سودھو
     page:
index fe0ded915ff5b87d4ef54b5c6d89cd88f7fc1ae7..c630bb0874e8c6857b7c1acfb2e2dbfb1c135a93 100644 (file)
@@ -161,7 +161,7 @@ pt-PT:
         longitude: Longitude
         public: Público
         description: Descrição
-        gpx_file: Enviar ficheiro GPX
+        gpx_file: Escolher ficheiro GPX
         visibility: Visibilidade
         tagstring: Etiquetas
       message:
@@ -409,7 +409,6 @@ pt-PT:
         way: Linha
         relation: Relação
     containing_relation:
-      entry_html: Relação %{relation_name}
       entry_role_html: Relação %{relation_name} (como %{relation_role})
     not_found:
       title: Não encontrado
@@ -470,12 +469,23 @@ pt-PT:
     timeout:
       sorry: Lamentamos, mas o histórico do nó com o id %{id} demorou muito para ser
         obido.
+  ways:
+    timeout:
+      sorry: Os dados para a linha com o id %{id} levaram demasiado tempo a ser carregados.
   old_ways:
     not_found:
       sorry: 'Desculpe, não foi possível encontrar #%{id} versão %{version}.'
+    timeout:
+      sorry: O histórico da linha com o id %{id} levou demasiado tempo a ser carregado.
+  relations:
+    timeout:
+      sorry: Os dados para a relação com o id %{id} levaram demasiado tempo a ser
+        carregados.
   old_relations:
     not_found:
       sorry: 'Desculpe, a relação #%{id} versão %{version} não foi encontrada.'
+    timeout:
+      sorry: O histórico da relação com o id %{id} levou demasiado tempo a ser carregado.
   changeset_comments:
     feeds:
       comment:
@@ -1550,7 +1560,6 @@ pt-PT:
         open: Aberta
         resolved: Resolvida
     show:
-      title: '%{status} Denúncia #%{issue_id}'
       reports:
         one: '%{count} denúncia'
         other: '%{count} denúncias'
@@ -1692,17 +1701,21 @@ pt-PT:
       befriend_them: Também podes adicioná-lo como amigo em %{befriendurl}.
       befriend_them_html: Também podes adicionar este utilizador como amigo em %{befriendurl}.
     gpx_description:
-      description_with_tags: 'Parece que o teu ficheiro GPX %{trace_name} com a descrição
-        %{trace_description} e as seguintes etiquetas: %{tags}'
-      description_with_tags_html: 'Parece que o teu ficheiro GPX %{trace_name} com
-        a descrição %{trace_description} e as etiquetas: %{tags}'
-      description_with_no_tags: Parece que o teu ficheiro GPX %{trace_name} com a
+      description_with_tags: 'Parece que o teu ficheiro %{trace_name} com a descrição
+        %{trace_description} e as etiquetas: %{tags}'
+      description_with_tags_html: 'Parece que o teu ficheiro %{trace_name} com a descrição
+        %{trace_description} e as etiquetas: %{tags}'
+      description_with_no_tags: Parece que o teu ficheiro %{trace_name} com a descrição
+        %{trace_description} e sem etiquetas
+      description_with_no_tags_html: Parece que o teu ficheiro %{trace_name} com a
         descrição %{trace_description} e sem etiquetas
-      description_with_no_tags_html: Parece que o teu ficheiro GPX %{trace_name} com
-        a descrição %{trace_description} e sem etiquetas
     gpx_failure:
       hi: Olá, %{to_user}.
-      failed_to_import: 'falhou na importação. Eis o erro:'
+      failed_to_import: 'não pôde ser importado como ficheiro de rota GPS. Verifica
+        se o teu ficheiro é um ficheiro GPX válido ou um arquivo com ficheiro(s) GPX
+        no formato suportado (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2). Será
+        que existe algum problema de formato ou sintaxe com o ficheiro? Este é o erro
+        de importação:'
       more_info: Podes encontrar mais informações sobre falhas de importação de ficheiros
         GPX e como as evitar em %{url}.
       more_info_html: Podes encontrar mais informações sobre falhas de importação
@@ -1886,7 +1899,7 @@ pt-PT:
         one: '%{count} mensagem silenciada'
         other: Tens %{count} mensagens silenciadas
     reply:
-      wrong_user: Estás autenticado como `%{user}', mas a mensagem a que pretendes
+      wrong_user: Iniciaste sessão como `%{user}', mas a mensagem a que pretendes
         responder não foi enviada para esse utilizador. Por favor, entra na conta
         correta para poderes responder.
     show:
@@ -1895,7 +1908,7 @@ pt-PT:
       unread_button: Marcar como não lida
       destroy_button: Eliminar
       back: Voltar
-      wrong_user: Estás autenticado como `%{user}', mas a mensagem que pediste para
+      wrong_user: Iniciaste sessão como `%{user}', mas a mensagem que pediste para
         ler não foi enviada por ou para esse utilizador. Por favor, entra na conta
         correta para poderes ler a mensagem.
     sent_message_summary:
@@ -2436,6 +2449,9 @@ pt-PT:
           hospital: Hospital
           building: Edifício importante
           station: Estação ferroviária
+          railway_halt: Paragem ferroviária
+          subway_station: Estação de metro
+          tram_stop: Paragem de elétrico
           summit: Cume
           peak: Pico
           tunnel: Linha tracejada = túnel
@@ -2606,7 +2622,7 @@ pt-PT:
       upload_trace: Enviar rota GPS
       all_traces: Todas as Rotas
       my_traces: As Minhas Rotas
-      traces_from: Rotas Públicas de %{user}
+      traces_from_html: Rotas Públicas de %{user}
       remove_tag_filter: Eliminar filtro de etiqueta
     destroy:
       scheduled_for_deletion: Rota programada para eliminação
@@ -2794,6 +2810,7 @@ pt-PT:
       informal_translations: traduções informais
       continue: Continuar
       declined: https://wiki.openstreetmap.org/wiki/Pt:Contributor_Terms_Declined
+      cancel: Cancelar
       you need to accept or decline: Por favor, lê e, em seguida, aceita ou recusa
         os novos Termos do Contribuidor para continuar.
       legale_select: 'País de residência:'
@@ -2912,13 +2929,13 @@ pt-PT:
         ao teu ID nas tuas definições de utilizador.
   user_role:
     filter:
-      not_a_role: A expressão `%{role}' não é um cargo válido.
+      not_a_role: O texto `%{role}' não corresponde a um cargo válido.
       already_has_role: O utilizador já tem o cargo %{role}.
       doesnt_have_role: O utilizador não tem o cargo %{role}.
       not_revoke_admin_current_user: Não foi possível retirar os direitos de administrador
         do atual utilizador.
     grant:
-      are_you_sure: Tens a certeza de que pretendes conceder o cargo `%{role}' ao
+      are_you_sure: Tens a certeza de que pretendes atribuir o cargo `%{role}' ao
         utilizador `%{name}'?
     revoke:
       are_you_sure: Tens a certeza de que pretendes retirar o cargo `%{role}' ao utilizador
@@ -3010,7 +3027,6 @@ pt-PT:
       reason: 'Razão do bloqueio:'
       revoker: 'Quem revogou:'
     block:
-      not_revoked: (não revogado)
       show: Mostrar
       edit: Editar
     page:
@@ -3018,13 +3034,12 @@ pt-PT:
       creator_name: Criador
       reason: Motivo do bloqueio
       status: Estado
-      revoker_name: Revogado por
     navigation:
       all_blocks: Todos os bloqueios
       blocks_on_me: Quem me bloqueou
-      blocks_on_user: Bloqueios a %{user}
+      blocks_on_user_html: Bloqueios a %{user}
       blocks_by_me: Os meus bloqueios
-      blocks_by_user: Bloqueios de %{user}
+      blocks_by_user_html: Bloqueios de %{user}
       block: 'Bloqueio #%{id}'
       new_block: Novo Bloqueio
   user_mutes:
@@ -3066,6 +3081,11 @@ pt-PT:
       description: Descrição
       created_at: Criada em
       last_changed: Última alteração
+      apply: Aplicar
+      all: Todas
+      open: Abrir
+      closed: Encerrada
+      status: Estado
     show:
       title: 'Nota: %{id}'
       description: Descrição
@@ -3084,6 +3104,9 @@ pt-PT:
       report: denunciar esta nota
       anonymous_warning: Esta nota inclui comentários de utilizadores anónimos que
         devem ser confirmados por fonte independente.
+      discussion: Discussão
+      subscribe: Subscrever
+      unsubscribe: Cancelar subscrição
       hide: Esconder
       resolve: Marcar como resolvida
       reactivate: Reabrir
@@ -3112,6 +3135,8 @@ pt-PT:
       add: Adicionar Nota
     notes_paging_nav:
       showing_page: Página %{page}
+      next: Próxima
+      previous: Anterior
   javascripts:
     close: Fechar
     share:
@@ -3307,6 +3332,7 @@ pt-PT:
       empty: Não existem supressões para mostrar.
       heading: Lista de supressões
       title: Lista de supressões
+      new: Nova redação
     new:
       heading: Introduza a informação da nova supressão
       title: A criar uma nova supressão
index a0775234c42330c9eb98534595704bea77081c25..9dc15c51d7ee12be3736677d3ee7061df4c81bdc 100644 (file)
@@ -430,7 +430,6 @@ pt:
         way: Linha
         relation: Relação
     containing_relation:
-      entry_html: Relação %{relation_name}
       entry_role_html: Relação %{relation_name} (como %{relation_role})
     not_found:
       title: Não encontrado
@@ -1580,7 +1579,6 @@ pt:
         open: Abrir
         resolved: Resolvido
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         one: '%{count} denúncia'
         other: '%{count} denúncias'
@@ -1918,7 +1916,7 @@ pt:
         one: '%{count} mensagem silenciada'
         other: Você tem %{count} mensagens silenciadas
     reply:
-      wrong_user: Você está conectado como `%{user}' mas a mensagem que você quer
+      wrong_user: Você está conectado como '%{user}' mas a mensagem que você quer
         responder não foi enviada para este usuário. Entre com o usuário correto para
         poder responder.
     show:
@@ -1927,7 +1925,7 @@ pt:
       unread_button: Marcar como não lida
       destroy_button: Apagar
       back: Voltar
-      wrong_user: Você está conectado como `%{user}' mas a mensagem que você quer
+      wrong_user: Você está conectado como '%{user}' mas a mensagem que você quer
         ler não foi enviada para ou por este usuário. Entre com o usuário correto
         para poder ler.
     sent_message_summary:
@@ -2656,7 +2654,7 @@ pt:
       upload_trace: Enviar uma trilha
       all_traces: Todos os traços
       my_traces: Minhas trilhas
-      traces_from: Traços públicos de %{user}
+      traces_from_html: Traços públicos de %{user}
       remove_tag_filter: Remova o filtro de marcações
     destroy:
       scheduled_for_deletion: Trilha marcada para ser apagada
@@ -2963,13 +2961,13 @@ pt:
         com o seu ID em suas configurações de usuário.
   user_role:
     filter:
-      not_a_role: O texto "%{role}" não é um papel válido.
+      not_a_role: O texto '%{role}' não é um papel válido.
       already_has_role: O usuário já tem o papel %{role}.
       doesnt_have_role: O usuário não tem o papel %{role}.
       not_revoke_admin_current_user: Não foi possível retirar os direitos de administrador
         do atual usuário.
     grant:
-      are_you_sure: Deseja mesmo dar o papel "%{role}" ao usuário "%{name}"?
+      are_you_sure: Deseja mesmo dar o papel '%{role}' ao usuário '%{name}'?
     revoke:
       are_you_sure: Deseja mesmo retirar o papel "%{role}" do usuário "%{name}"?
   user_blocks:
@@ -3056,7 +3054,6 @@ pt:
       reason: 'Razão do bloqueio:'
       revoker: 'Quem retirou:'
     block:
-      not_revoked: (não retirado)
       show: Exibir
       edit: Editar
     page:
@@ -3064,13 +3061,12 @@ pt:
       creator_name: Criador
       reason: Razão para o bloqueio
       status: Status
-      revoker_name: Retirado por
     navigation:
       all_blocks: Todos os bloqueios
       blocks_on_me: Bloqueios sobre mim
-      blocks_on_user: Bloqueios em %{user}
+      blocks_on_user_html: Bloqueios em %{user}
       blocks_by_me: Bloqueios por mim
-      blocks_by_user: Bloqueios por %{user}
+      blocks_by_user_html: Bloqueios por %{user}
       block: 'Bloqueio #%{id}'
       new_block: Novo bloqueio
   user_mutes:
@@ -3110,6 +3106,11 @@ pt:
       description: Descrição
       created_at: Criada em
       last_changed: Última alteração
+      apply: Aplicar
+      all: Todos
+      open: Abrir
+      closed: Fechado
+      status: Estado
     show:
       title: 'Nota: %{id}'
       description: Descrição
@@ -3128,6 +3129,9 @@ pt:
       report: denunciar esta nota
       anonymous_warning: Esta nota contém comentários de usuários anônimos que devem
         ser conferidos separadamente.
+      discussion: Discussão
+      subscribe: Inscrever-se
+      unsubscribe: Cancelar inscrição
       hide: Esconder
       resolve: Resolver
       reactivate: Reativar
index 9350e4ee5a4151e5b9c1fc7d0c32ace2c61f6174..4f30d10cac321739830a7d7913ca86afd83f9e11 100644 (file)
@@ -399,7 +399,6 @@ ro:
         way: Cale
         relation: Relație
     containing_relation:
-      entry_html: Relația %{relation_name}
       entry_role_html: Relația %{relation_name} (ca %{relation_role})
     not_found:
       title: Nu a fost găsit
@@ -1508,7 +1507,6 @@ ro:
         open: Deschis
         resolved: Rezolvat
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         one: '%{count} raport'
         few: '%{count} raporturi'
@@ -2574,7 +2572,7 @@ ro:
       upload_trace: Încărcați urma
       all_traces: Toate track-urile
       my_traces: Înregistrările mele GPS
-      traces_from: Traseele GPS publice de la %{user}
+      traces_from_html: Traseele GPS publice de la %{user}
       remove_tag_filter: Eliminați filtrul de etichete
     destroy:
       scheduled_for_deletion: Traseul este programat pentru ștergere
@@ -2945,7 +2943,6 @@ ro:
       reason: 'Motivul blocării:'
       revoker: Revocă!
     block:
-      not_revoked: (nu este revocată)
       show: Arată
       edit: Modificare
     page:
@@ -2953,7 +2950,6 @@ ro:
       creator_name: Creator
       reason: Motivul blocării
       status: Stare
-      revoker_name: Revocat de
   user_mutes:
     index:
       table:
index 8b2df06a290b817ea684251f41300db910eb5df5..fc7bdc4cdd33e2aae161f9a56462e63c155cf854 100644 (file)
@@ -12,6 +12,7 @@
 # Author: Alexey zakharenkov
 # Author: Amire80
 # Author: Andrewsh
+# Author: Anton Khorev
 # Author: Ashed
 # Author: Banonotit
 # Author: BushmanK
@@ -77,6 +78,7 @@
 # Author: Okras
 # Author: Pacha Tchernof
 # Author: Parukhin
+# Author: Pavel200071
 # Author: Perevod16
 # Author: PlushBoy
 # Author: Pplex.vhs
@@ -169,6 +171,7 @@ ru:
       message: Сообщение
       node: Точка
       node_tag: Тег точки
+      note: Заметка
       old_node: Старая точка
       old_node_tag: Старый тег точки
       old_relation: Старое отношение
@@ -512,8 +515,7 @@ ru:
         way: Линия
         relation: Отношение
     containing_relation:
-      entry_html: Отношение %{relation_name}
-      entry_role_html: Отношение %{relation_name} (в роли %{relation_role})
+      entry_role_html: '%{relation_name} (в роли %{relation_role})'
     not_found:
       title: Не найдено
       sorry: 'К сожалению, %{type} #%{id} не найден.'
@@ -562,15 +564,36 @@ ru:
       introduction: Нажмите на карту, чтобы найти ближайшие объекты
       nearby: Ближайшие объекты
       enclosing: Окружающие объекты
+  nodes:
+    timeout:
+      sorry: Извините, данные для точки с id %{id} потребовали слишком много времени
+        для извлечения.
   old_nodes:
     not_found:
       sorry: 'К сожалению, узел #%{id} версии %{version} не найден.'
+    timeout:
+      sorry: Извините, история точки с id %{id} потребовала слишком много времени
+        для извлечения.
+  ways:
+    timeout:
+      sorry: Извините, данные для линии с id %{id} потребовали слишком много времени
+        для извлечения.
   old_ways:
     not_found:
       sorry: 'К сожалению, путь #%{id} версии %{version} не найден.'
+    timeout:
+      sorry: Извините, история линии с id %{id} потребовала слишком много времени
+        для извлечения.
+  relations:
+    timeout:
+      sorry: Извините, данные для отношения с id %{id} потребовали слишком много времени
+        для извлечения.
   old_relations:
     not_found:
       sorry: 'К сожалению, отношение #%{id} версии %{version} не найдено.'
+    timeout:
+      sorry: Извините, история отношения с id %{id} потребовала слишком много времени
+        для извлечения.
   changeset_comments:
     feeds:
       comment:
@@ -1637,7 +1660,10 @@ ru:
         other: '%{count} сообщений'
       reported_item: Элемент в сообщении
     show:
-      title: '%{status} Проблема #%{issue_id}'
+      title:
+        open: 'Открытая проблема #%{issue_id}'
+        ignored: 'Проигнорированная проблема #%{issue_id}'
+        resolved: 'Разрешённая проблема #%{issue_id}'
       reports:
         one: 1 сообщение
         few: '%{count} сообщения'
@@ -1970,18 +1996,18 @@ ru:
     muted:
       title: Заглушённые сообщения
     reply:
-      wrong_user: Ð\92Ñ\8b Ð²Ð¾Ñ\88ли ÐºÐ°Ðº `%{user}', Ð½Ð¾ Ð¾Ñ\82веÑ\82 Ð½Ð° Ð²Ð°Ñ\88 Ð²Ð¾Ð¿Ñ\80оÑ\81 Ð±Ñ\8bл Ð¾Ñ\82пÑ\80авлен Ð½е
-        этому пользователю. Пожалуйста, войдите как соответствующий вашему вопросу
-        Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8c, Ñ\87Ñ\82обÑ\8b Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð¾Ñ\82веÑ\82.
+      wrong_user: Ð\92Ñ\8b Ð²Ð¾Ñ\88ли Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿Ð¾Ð´ Ð¸Ð¼ÐµÐ½ÐµÐ¼ '%{user}', Ð½Ð¾ Ñ\81ообÑ\89ение, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ое
+        вы просили ответить, не было отправлено этому пользователю. Пожалуйста, войдите
+        Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿Ð¾Ð´ Ð¿Ñ\80авилÑ\8cнÑ\8bм Ð¸Ð¼ÐµÐ½ÐµÐ¼, Ñ\87Ñ\82обÑ\8b Ð¾Ñ\82веÑ\82иÑ\82Ñ\8c.
     show:
       title: Просмотр сообщения
       reply_button: Ответить
       unread_button: Пометить как непрочитанное
       destroy_button: Удалить
       back: Назад
-      wrong_user: Ð\92Ñ\8b Ð²Ð¾Ñ\88ли ÐºÐ°Ðº Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8c `%{user}', Ð½Ð¾ Ð¾Ñ\82веÑ\82 Ð½Ð° Ð²Ð°Ñ\88 Ð²Ð¾Ð¿Ñ\80оÑ\81 Ð±Ñ\8bл
-        Ð¾Ñ\82пÑ\80авлен Ð½Ðµ Ñ\8dÑ\82им Ð¸Ð»Ð¸ Ð½Ðµ Ñ\8dÑ\82омÑ\83 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8e. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ð¾Ð¹Ð´Ð¸Ñ\82е ÐºÐ°Ðº Ñ\81ооÑ\82веÑ\82Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89ий
-        вашему вопросу пользователь, чтобы прочитать его.
+      wrong_user: Ð\92Ñ\8b Ð²Ð¾Ñ\88ли Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿Ð¾Ð´ Ð¸Ð¼ÐµÐ½ÐµÐ¼ '%{user}', Ð½Ð¾ Ñ\81ообÑ\89ение, ÐºÐ¾Ñ\82оÑ\80ое Ð²Ñ\8b
+        Ð¿Ñ\80оÑ\81или Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c, Ð½Ðµ Ð±Ñ\8bло Ð¾Ñ\82пÑ\80авлено Ñ\8dÑ\82им Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елем. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ð¾Ð¹Ð´Ð¸Ñ\82е
+        в систему под правильным именем, чтобы прочитать его.
     sent_message_summary:
       destroy_button: Удалить
     heading:
@@ -2101,6 +2127,9 @@ ru:
       traces:
         older: Более старые треки
         newer: Более новые треки
+      user_blocks:
+        older: Более старые блокировки
+        newer: Более новые блокировки
       users:
         older: Участники с большим стажем
         newer: Новые участники
@@ -2625,7 +2654,7 @@ ru:
       upload_trace: Загрузить треки
       all_traces: Все треки
       my_traces: Мои треки
-      traces_from: Общедоступные трассировки от %{user}
+      traces_from_html: Общедоступные трассировки от %{user}
       remove_tag_filter: Удалить фильтр тегов
     destroy:
       scheduled_for_deletion: Запланировано к удалению
@@ -2899,7 +2928,7 @@ ru:
         настройках.
   user_role:
     filter:
-      not_a_role: Строка «%{role}» не является допустимой ролью.
+      not_a_role: Строка '%{role}' не является допустимой ролью.
       already_has_role: Пользователь уже имеет роль %{role}.
       doesnt_have_role: У пользователя нет роли %{role}.
       not_revoke_admin_current_user: Невозможно отозвать роль отозвать администратора
@@ -2985,7 +3014,6 @@ ru:
       reason: 'Причина блокировки:'
       revoker: 'Разблокировавший:'
     block:
-      not_revoked: (не разблокирован)
       show: Показать
       edit: Править
     page:
@@ -2993,7 +3021,6 @@ ru:
       creator_name: Автор
       reason: Причина блокировки
       status: Состояние
-      revoker_name: Разблокировал
   user_mutes:
     index:
       title: Заглушённые пользователи
@@ -3024,6 +3051,10 @@ ru:
       description: Описание
       created_at: Создана
       last_changed: Изменена
+      apply: Применить
+      all: Все
+      open: Незакрытые
+      closed: Закрытые
     show:
       title: 'Заметка: %{id}'
       description: Описание
@@ -3040,6 +3071,9 @@ ru:
       report: пожаловаться на эту заметку
       anonymous_warning: Заметка содержит комментарии анонимных участников. Требуется
         независимая проверка сведений.
+      discussion: Обсуждение
+      subscribe: Подписаться
+      unsubscribe: Отписаться
       hide: Скрыть
       resolve: Закрыть
       reactivate: Открыть снова
@@ -3064,6 +3098,8 @@ ru:
       add: Добавить заметку
     notes_paging_nav:
       showing_page: Страница %{page}
+      next: Следующая
+      previous: Предыдущая
   javascripts:
     close: Закрыть
     share:
index 60bc6b0f63f12340a0496c9c7efa1aa3618d82f6..8a989acaceadadab5c19612d71c22b649cb56c41 100644 (file)
@@ -163,7 +163,6 @@ sat:
         way: ᱦᱚᱨ
         relation: ᱥᱟᱹᱜᱟᱹᱭ
     containing_relation:
-      entry_html: ᱥᱟᱹᱜᱟᱹᱭ %{relation_name}
       entry_role_html: ᱥᱟᱹᱜᱟᱹᱭ %{relation_name} (as %{relation_role})
     not_found:
       title: ᱵᱟᱝ ᱧᱟᱢ ᱞᱮᱱᱟ
index effa017924c693e6c05e38ffd90f1f799441f3e7..b6662e13724711c789d755ec802cfb2e4a859c17 100644 (file)
@@ -365,7 +365,6 @@ sc:
         way: Lìnia
         relation: Relata
     containing_relation:
-      entry_html: Relata %{relation_name}
       entry_role_html: Relata %{relation_name} (comente %{relation_role})
     not_found:
       title: No agatadu
@@ -1453,7 +1452,6 @@ sc:
         other: '%{count} sinnalatziones'
       reported_item: Elementu sinnaladu
     show:
-      title: '%{status} Problema #%{issue_id}'
       reports:
         one: '%{count} sinnalatzione'
         other: '%{count} sinnalatziones'
@@ -2486,7 +2484,7 @@ sc:
       upload_trace: Càrriga una rasta
       all_traces: Totu sas rastas
       my_traces: Sas rastas meas
-      traces_from: Rastas pùblicas de %{user}
+      traces_from_html: Rastas pùblicas de %{user}
       remove_tag_filter: Boga su filtru de etichetas
     destroy:
       scheduled_for_deletion: Rasta programmada pro s'iscantzelladura
@@ -2852,7 +2850,6 @@ sc:
       reason: 'Resone de su blocu:'
       revoker: 'Revocadore:'
     block:
-      not_revoked: (non revocadu)
       show: Ammustra
       edit: Modìfica
     page:
@@ -2860,7 +2857,6 @@ sc:
       creator_name: Creadore
       reason: Resone de su blocu
       status: Istadu
-      revoker_name: Revocadu dae
     navigation:
       all_blocks: Totu sos blocos
       blocks_on_me: Blocos subra a mene
index fee42db421f94a5725606a4dded571ac88ef3ad4..8d59144198507c3ea7ec7dd54728672f96a782c2 100644 (file)
@@ -2,6 +2,7 @@
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: Ajeje Brazorf
+# Author: GianAntonucci
 # Author: Gmelfi
 # Author: LametinoWiki
 # Author: Macofe
@@ -15,41 +16,49 @@ scn:
       friendly: '%e %B %Y ê %H:%M'
   helpers:
     file:
-      prompt: Scegghi file
+      prompt: Scarta lu file
     submit:
       diary_comment:
         create: Cummenta
       diary_entry:
         create: Pùbblica
-        update: Agghiorna
+        update: Attualizza
       issue_comment:
-        create: Agghiunci cummentu
+        create: Agghiunci un cummentu
       message:
         create: Manna
       client_application:
-        create: Riggistra
-        update: Agghiorna
+        create: Riggìstrati
+        update: Attualizza
       oauth2_application:
-        create: Riggistrati
-        update: Aggiorna
+        create: Riggìstrati
+        update: Attualizza
       redaction:
-        create: Crea l'occultamentu
-        update: Sarva occultamentu
+        create: Crea u redact
+        update: Sarba u redact
       trace:
         create: Càrrica
-        update: Sarva li canciamenti
+        update: Sarba i canci
       user_block:
-        create: Crea lu bloccu
-        update: Aggiorna lu bloccu
+        create: Crea u bloccu
+        update: Attualizza u bloccu
   activerecord:
+    errors:
+      messages:
+        display_name_is_user_n: nun po èssiri user_n abbestra ca si n nun è u to ID
+          utenti
+      models:
+        user_mute:
+          is_already_muted: già sta mutu
     models:
-      acl: Lista di cuntrollu d'accessu
-      changeset: Gruppu di canciamenti
-      changeset_tag: Etichetta dû gruppu di canciamenti
-      country: Paisi
-      diary_comment: Cummentu ntô diariu
+      acl: Lista di cuntrollu di l’accessi
+      changeset: Gruppu dî canci
+      changeset_tag: Etichetta dû gruppu dî canci
+      country: Pajisi
+      diary_comment: Cummentu nnô diariu
       diary_entry: Vuci dû diariu
       friend: Amicu
+      issue: Prubblema
       language: Lingua
       message: Missaggiu
       node: Gruppu
@@ -57,46 +66,52 @@ scn:
       old_node: Gruppu vecchiu
       old_node_tag: Etichetta vecchia dû gruppu
       old_relation: Rilazzioni vecchia
-      old_relation_member: Membru vecchiu dâ rilazzioni
+      old_relation_member: Mèmmiru vecchiu dâ rilazzioni
       old_relation_tag: Etichetta vecchia dâ rilazzioni
       old_way: Caminu vecchiu
       old_way_node: Gruppu vecchiu dû caminu
       old_way_tag: Etichetta vecchia dû caminu
       relation: Rilazzioni
-      relation_member: Membru dâ rilazzioni
+      relation_member: Mèmmiru dâ rilazzioni
       relation_tag: Etichetta dâ rilazzioni
+      report: Signalazzioni
       session: Sissioni
-      trace: Tracciatu
-      tracepoint: Puntu dû tracciatu
-      tracetag: Etichetta dû tracciatu
+      trace: Traccia
+      tracepoint: Puntu dâ traccia
+      tracetag: Etichetta dâ traccia
       user: Utenti
       user_preference: Prifirenza di l'utenti
-      user_token: Lassa-passari di l'utenti
+      user_token: Còdici di l'utenti
       way: Caminu
       way_node: Gruppu dû caminu
       way_tag: Etichetta dû caminu
     attributes:
       client_application:
-        callback_url: URL di callback
-        support_url: URL di l'assistenza
-        allow_write_prefs: canciari li mpustazzioni d'utenti.
-        allow_write_diary: criari vuci dû diariu, cummenti e fari amici.
-        allow_write_api: cancia la cartina
-        allow_read_gpx: lèggi li sò tracciati GPS privati.
-        allow_write_gpx: càrrica li tracciati GPS
-        allow_write_notes: cancia li noti
+        name: Nomu (ubblicatoriu)
+        url: Nnirizzu URL mastru di l’applicazzioni (ubblicatoriu)
+        callback_url: Nnirizzu URL di richiamata
+        support_url: Nnirizzu URL pi l’assistenza
+        allow_read_prefs: leggi i so prifirenzi di l’utenti
+        allow_write_prefs: cancia i so mpustazzioni di l’utenti.
+        allow_write_diary: criari pàggini dû diariu, cummenti e fàrisi amici
+        allow_write_api: cancia a carta
+        allow_read_gpx: leggi i so tracci GPS privati
+        allow_write_gpx: càrrica i traccia GPS
+        allow_write_notes: cancia i noti
       diary_comment:
         body: Corpu
       diary_entry:
         user: Utenti
-        title: Oggettu
+        title: Uggettu
         body: Corpu
         latitude: Latitùdini
-        longitude: Loncitùdini
+        longitude: Luncitùdini
         language_code: Lingua
       doorkeeper/application:
         name: Nomu
         redirect_uri: URI di rimannu
+        confidential: Applicazzioni cunfidinziali?
+        scopes: Pirmisi
       friend:
         user: Utenti
         friend: Amicu
@@ -106,38 +121,46 @@ scn:
         name: Nomu dû file
         size: Grannizza
         latitude: Latitùdini
-        longitude: Loncitùdini
+        longitude: Luncitùdini
         public: Pùbblicu
         description: Discrizzioni
-        gpx_file: Carricari file GPX
+        gpx_file: Scarta lu file dâ traccia GPS
         visibility: Visibbilità
         tagstring: Etichetti
       message:
         sender: Mittenti
-        title: Oggettu
+        title: Uggettu
         body: Corpu
-        recipient: Distinatariu
+        recipient: Ricàpitu
       redaction:
         title: Tìtulu
         description: Discrizzioni
+      report:
+        category: Scarta na scaciuni pâ to signalazzioni
+        details: Dinni cchiù assai ncapu ô prubblema (ubblicatoriu).
       user:
-        email: Posta elittrònica
-        new_email: Nnirizzu di posta elittrònica novu
+        auth_provider: Tranzuntaturi
+        auth_uid: UID di tranzuntazzioni
+        email: E-mail
+        new_email: Nnirizzu e-mail novu
         active: Attivu
         display_name: Nomu ammustratu
         description: Discrizzioni dû prufilu
         home_lat: Latitùdini
         home_lon: Luncitùdini
         languages: Lingui prifiruti
-        pass_crypt: Palora d'òrdini
-        pass_crypt_confirmation: Cunferma password
+        preferred_editor: Edituri prifirutu
+        pass_crypt: Chiavi d’accessu
+        pass_crypt_confirmation: Cunferma chiavi d’accessu
     help:
+      doorkeeper/application:
+        redirect_uri: Usa un ringu pi ogni URI
       trace:
         tagstring: spartuti câ vìrgula
       user_block:
-        needs_view: Havi a tràsiri l'utenti avanti chi stu bloccu veni livatu?
+        needs_view: A l'utenti serbi di tràsiri prima ca si leva ssu bloccu?
       user:
-        new_email: (nun veni ammustratu mai pubblicamenti)
+        new_email: (mai fattu vìdiri ô pùbblicu)
   datetime:
     distance_in_words_ago:
       x_minutes:
@@ -153,13 +176,13 @@ scn:
         one: 1 annu fa
         other: '%{count} anni fa'
   editor:
-    default: Pridifinutu (com'a ora %{name})
+    default: Pridifinutu (camora %{name})
     id:
       name: iD
-      description: iD (editor ntô browser)
+      description: iD (edituri nnô browser)
     remote:
-      name: Telecumannu
-      description: Telecumannu (JOSM, Potlatch, Merkaartor)
+      name: Cuntrollu di luntanu
+      description: Cuntrollu di luntanu (JOSM, Potlatch, Merkaartor)
   auth:
     providers:
       none: Nuḍḍu
@@ -171,93 +194,92 @@ scn:
   api:
     notes:
       comment:
-        opened_at_html: Criatu %{when}
-        opened_at_by_html: Criatu %{when} di %{user}
-        commented_at_html: Aggiurnatu %{when}
-        commented_at_by_html: Aggiurnatu %{when} di %{user}
-        closed_at_html: Arrisurvuta %{when}
-        closed_at_by_html: Arrisurvuta %{when} di %{user}
-        reopened_at_html: Rigraputa %{when}
-        reopened_at_by_html: Rigraputa %{when} di %{user}
+        opened_at_html: Criata %{when}
+        opened_at_by_html: Criata %{when} di %{user}
+        commented_at_html: Attualizzata %{when}
+        commented_at_by_html: Attualizzata %{when} di %{user}
+        closed_at_html: Risurbuta %{when}
+        closed_at_by_html: Risurbuta %{when} di %{user}
+        reopened_at_html: Graputa arrè %{when}
+        reopened_at_by_html: Graputa arrè %{when} di %{user}
       rss:
-        title: Noti d'OpenStreetMap
-        description_area: N’elencu dî noti signalati, cummintati o arrisurvuti ntâ
-          tò zona [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
-        description_item: Un flussu RSS pâ nota %{id}
+        title: Noti dOpenStreetMap
+        description_area: Na lista di noti, signalati, cummintati o risurbuti nnâ
+          to zona [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+        description_item: Un feed RSS pâ nota %{id}
         opened: nota nova (vicinu a %{place})
         commented: cummentu novu (vicinu a %{place})
-        closed: nota arrisurvuta (vicinu a %{place})
-        reopened: nota riattivata (vicinu a %{place})
+        closed: nota risurbuta (vicinu a %{place})
+        reopened: nota graputa arrè (vicinu a %{place})
       entry:
         comment: Cummentu
         full: Nota cumpleta
   account:
     deletions:
       show:
-        title: Cancella lu mè cuntu
-        delete_account: Cancella cuntu
-        confirm_delete: Sî sicuru?
-        cancel: Annulla
+        title: Scancella u me cuntu
+        delete_account: Scancella u cuntu
+        confirm_delete: Sicuru sì?
+        cancel: Sfai
   accounts:
     edit:
-      title: Cancia lu cuntu
-      my settings: Li mè mpustazzioni
-      current email address: Nnirizzu email attuali
-      external auth: Autinticazzioni esterna
+      title: Cancia u cuntu
+      my settings: Mpustazzioni
+      current email address: Nnirizzu e-mail attuali
+      external auth: Tranzuntari di fora
       openid:
-        link: http://wiki.openstreetmap.org/wiki/IT:OpenID
-        link text: chi voli diri?
+        link: http://wiki.openstreetmap.org/wiki/OpenID
+        link text: zoccu è chissu?
       public editing:
-        heading: Canciamenti pùbblici
-        enabled: Attivati. Nun sî anònimu e poi canciari li dati.
-        enabled link text: chi voli diri?
-        disabled: Disattivati, e nun poi canciari li dati, tutti li canciamenti pricidenti
-          sunnu anònimi.
-        disabled link text: pirchì nun pozzu fari canciamenti?
+        heading: Canciu pùbblicu
+        enabled: Abbilitati. Senza anònimu e cû pirmisu pi canciari i dati.
+        enabled link text: zoccu è chissu?
+        disabled: Disabbilitati e senza u pirmisu pi canciari i dati, tutti i canci
+          d’avanti sunnu anònimi.
+        disabled link text: picchì nun pozzu fari canci?
       contributor terms:
-        heading: Cunnizzioni di cuntribbuzzioni
-        agreed: Accittasti li cunnizzioni di cuntribbuzzioni novi.
-        not yet agreed: Ancora nun accittasti li cunnizzioni di cuntribbuzzioni novi.
-        review link text: Quannu voi tu vai nta stu link pi lèggiri e accittari li
-          cunnizzioni di cuntribbuzzioni novi.
-        agreed_with_pd: Dichiarasti macari chi cunzìddiri li tò canciamenti ntô Duminiu
-          Pùbblicu.
-        link text: chi voli diri?
-      save changes button: Sarva li canciamenti
-      delete_account: Cancella cuntu...
+        heading: Règuli pî cuntribbuti
+        agreed: Accittasti i règuli pî cuntribbuti novi.
+        not yet agreed: Ancora nun accittasti i règuli pî cuntribbuti novi.
+        review link text: Quannu rinesci ammacca sta lijami pi ti lèggiri i règuli
+          pî cuntribbuti novi e p’accittalli.
+        agreed_with_pd: Dicisti macari ca cunzìddiri i to canci comu si sunnu di duminiu
+          pùbblicu.
+        link text: zoccu è chissu?
+      save changes button: Sarba i canci
+      delete_account: Scancella u cuntu...
     go_public:
-      heading: Canciamenti pùbblici
-      make_edits_public_button: Arrenni tutti li mè canciamenti pùbblici
+      heading: Canciu pùbblicu
+      make_edits_public_button: Tutti i me canci falli pùbblici
     update:
-      success_confirm_needed: Li nfurmazzioni di l'utenti foru aggiurnati boni. Cuntrolla
-        la tò posta elittrònica chi t'havi a arrivari nu missaggiu pi cunfirmari lu
-        nnirizzu di posta novu.
-      success: Li nfurmazzioni di l'utenti foru aggiurnati boni.
+      success_confirm_needed: Nfurmazzioni di l'utenti attualizzati. Cuntrolla a to
+        e-mail pi cunfirmari u to nnirizzu di posta elittrònica novu.
+      success: Nfurmazzioni di l'utenti attualizzati.
     destroy:
-      success: Cuntu cancillatu.
+      success: Cuntu scancillatu.
   browse:
     version: Virsioni
-    in_changeset: Gruppu di canciamenti
+    in_changeset: Gruppu dî canci
     anonymous: anònimu
-    no_comment: (nuḍḍu cummentu)
-    part_of: Fa parti di
-    download_xml: Scàrrica ntô furmatu XML
-    view_history: Talìa la crunuluggìa
-    view_details: Talìa li dittagghî
+    no_comment: (senza cummentu)
+    part_of: Parti di
+    download_xml: Scàrrica XML
+    view_history: Talìa a storia
+    view_details: Talìa i minutagghi
     location: 'Locu:'
     node:
       title_html: 'Gruppu: %{name}'
-      history_title_html: 'Crunuluggìa dû gruppu: %{name}'
+      history_title_html: 'Storia dû gruppu: %{name}'
     way:
       title_html: 'Caminu: %{name}'
-      history_title_html: 'Crunuluggìa dû caminu: %{name}'
-      nodes: Gruppa
+      history_title_html: 'Storia dû caminu: %{name}'
+      nodes: Gruppi
       also_part_of_html:
         one: parti dû caminu %{related_ways}
         other: parti dî camini %{related_ways}
     relation:
       title_html: 'Rilazzioni: %{name}'
-      history_title_html: 'Crunuluggìa dâ rilazzioni: %{name}'
+      history_title_html: 'Storia dâ rilazzioni: %{name}'
       members: Mèmmiri
       members_count:
         one: 1 mèmmiru
@@ -269,14 +291,13 @@ scn:
         way: Caminu
         relation: Rilazzioni
     containing_relation:
-      entry_html: Rilazzioni %{relation_name}
       entry_role_html: Rilazzioni %{relation_name} (comu %{relation_role})
     not_found:
-      title: Nun attruvatu
-      sorry: 'Purtroppu, %{type} #%{id} nun si potti attruvari.'
+      title: Senza truvatu
+      sorry: 'Purtroppu, %{type} #%{id} nun si potti truvari.'
       type:
-        node: lu gruppu
-        way: lu caminu
+        node: gruppu
+        way: caminu
         relation: la rilazzioni
         changeset: lu gruppu di canciamenti
         note: nota
@@ -745,8 +766,8 @@ scn:
           "yes": Passu di muntagna
         natural:
           bay: Gulfu
-          beach: Praia
-          cape: Capu
+          beach: Praja
+          cape: Punta
           cave_entrance: Trasuta dâ grutta
           cliff: Sdirrupu
           crater: Crateri
@@ -758,7 +779,7 @@ scn:
           glacier: Ghiacciaiu
           grassland: Pratu
           heath: Brughiera
-          hill: Cullina
+          hill: Muntagnola
           island: Ìsula
           land: Terra
           marsh: Margiu
@@ -786,7 +807,8 @@ scn:
           accountant: Raggiuneri
           administrative: Ufficiu pùbblicu lucali
           architect: Architettu
-          company: Sucità
+          company: Azzienna
+          diplomatic: Ufficiu diplumàticu
           employment_agency: Agginzìa pû travagghiu
           estate_agent: Agginzìa Mmubbiliari
           government: Ufficiu pùbblicu
@@ -1014,15 +1036,17 @@ scn:
     intro_text: OpenStreetMap è na cartina dû munnu, criata di genti comu a tìa e
       lìbbira a adupirari secunnu na licenza graputa.
     partners_partners: cullabburatura
+    tou: Cunnizzioni pi l’usu
     osm_offline: La basi di dati d'OpenStreetMap comu a ora nun è n lìnia pirchì si
       stannu facennu travagghî di manutinzioni funnamintali.
     osm_read_only: La basi di dati d'OpenStreetMap comu a ora è ntâ mudalità di sula
       littura pirchì si stannu facennu travagghî di manutinzioni funnamintali.
+    nothing_to_preview: Nenti di vìdiri.
     help: Guida
     about: Nfurmazzioni
     copyright: Dritti d'auturi
     learn_more: Sapìrinni cchiossai
-    more: Àutri cosi
+    more: Autru
   user_mailer:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user} cummintau na vuci dû tò diariu'
@@ -1249,11 +1273,15 @@ scn:
       no home location: Ancora nun mpustasti la tò pusizzioni basi.
       update home location on click: Aggiorna la pusizzioni basi quannu cliccu supra
         â carta?
+      show: Fa’ vìdiri
+      delete: Scancella
+    update:
+      success: Cuntu attualizzatu.
   sessions:
     new:
       tab_title: Trasi
       email or username: 'Nnirizzu di posta elittrònica o nomu utenti:'
-      password: 'Palora d''òrdini:'
+      password: 'Chiavi d’accessu:'
       remember: Arricòrdati di mìa
       lost password link: Pirdisti la tò palora d'òrdini?
       login_button: Trasi
@@ -1299,6 +1327,7 @@ scn:
         aggiurnatu.
       community_driven_title: Guidatu dâ cumunità
       open_data_title: Dati graputi
+      open_data_open_data: dati graputi
       legal_title: Noti ligali
       partners_title: Cullabburatura
     copyright:
@@ -1313,7 +1342,7 @@ scn:
         html: Stai taliannu la virsioni n lingua ngrisa dâ pàggina dû drittu d'auturi.
           Poi turnari â %{native_link} di sta pàggina o puru poi finiri di nfurmàriti
           supra ô drittu d'auturi e %{mapping_link}.
-        native_link: virsioni n sicilianu
+        native_link: virsioni 'n sicilianu
         mapping_link: accuminzari a mappari
       legal_babble:
         credit_title_html: Comu s'attribbuisci a OpenStreetMap
@@ -1327,6 +1356,10 @@ scn:
         contributors_intro_html: 'Li nostri cuntribbutura sunnu migghiara di genti.
           Pigghiamu macari dati cu licenza graputa furnuti di l''agginzìi cartugràfichi
           nazziunali e d''àutri fonti, tra dî quali:'
+        contributors_nz_new_zealand: Nova Zilanna
+        contributors_rs_serbia: Serbia
+        contributors_si_slovenia: Sluvenia
+        contributors_es_spain: Spagna
         contributors_footer_2_html: La nclusioni dî dati nta OpenStreetMap nun ìmplica
           ca lu sò furnituri origginali susteni OpenStreetMap, furnisci na quarchi
           garanzìa, o accetta na quarchi rispunzabbilità.
@@ -1448,8 +1481,10 @@ scn:
           taxiway: pista di rullaggiu
           apron: Ària di parcheggiu ariupurtuali
           admin: Cunfini amministrativu
+          capital: Capitali
           forest: Furesta
           wood: Voscu
+          sand: Rina
           golf: Campu di golf
           park: Villa
           common: Cumuni
@@ -1803,7 +1838,6 @@ scn:
       reason: 'Mutivu dû bloccu:'
       revoker: 'Rivucaturi:'
     block:
-      not_revoked: (nun arrivucatu)
       show: Ammustra
       edit: Cancia
     page:
@@ -1811,7 +1845,6 @@ scn:
       creator_name: Criaturi
       reason: Mutivu dû bloccu
       status: Statu
-      revoker_name: Arrivucatu di
   notes:
     index:
       title: Noti scritti o cummintati di l'utenti %{user}
@@ -1973,10 +2006,14 @@ scn:
     create:
       flash: Occultamentu criatu.
     update:
-      flash: Canciamenti sarvati.
+      flash: Canci sarbati.
     destroy:
-      not_empty: St'occultamentu nun è vacanti. Pi favuri leva di l'occultamentu tutti
-        li virsioni chi nni fannu parti avanti chi lu distrudi.
-      flash: Occultamentu distruiutu.
-      error: Ammattìu n'erruri ntô distrùiri st'occultamentu.
+      not_empty: Sta rivisioni nun è vacanti. Leva a rivisioni a tutti i virsioni
+        chi ci appartèninu avanti ca a distrudi.
+      flash: Rivisioni distruduta.
+      error: Cci fu nu sbagghiu ntô mentri ca scancillava ssa rivisioni.
+  validations:
+    leading_whitespace: àvi nu spazziu jancu ô principiu
+    trailing_whitespace: àvi nu spazziu jancu â fini
+    url_characters: àvi caràttari URL spiciali (%{characters})
 ...
index 15509a1c523cd3dbecce268a0a3cb4a30f087ca0..a12a62cfcc8a5eebdb1df8b2a6aaf8a3b7f9716e 100644 (file)
@@ -134,7 +134,6 @@ sco:
         way: Wey
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (as %{relation_role})
     not_found:
       sorry: 'Sorry, %{type} #%{id} could nae be foond.'
index f50460fdfa77d342526313a6cfaf01fe1a173d60..27b2cc55316f142ed34280e955839dba813c247a 100644 (file)
@@ -1,4 +1,4 @@
-# Messages for Serbo-Croatian (srpskohrvatski / српскохрватски)
+# Messages for Serbo-Croatian (Latin script) (srpskohrvatski (latinica))
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: Vlad5250
index 3972e6df9b08298b78f67e17b722835e69e8312a..230bafef4ebb5968defb2b529aa56a4077a46c84 100644 (file)
@@ -415,7 +415,6 @@ sk:
         way: Cesta
         relation: Relácia
     containing_relation:
-      entry_html: Relácia %{relation_name}
       entry_role_html: Relácia %{relation_name} (ako %{relation_role})
     not_found:
       title: Nenájdené
@@ -1516,7 +1515,6 @@ sk:
         open: Otvorené
         resolved: Vyriešené
     show:
-      title: '%{status} Problém #%{issue_id}'
       reports:
         one: '%{count} hlásenie'
         few: '%{count} hlásenia'
@@ -2473,7 +2471,7 @@ sk:
       upload_trace: Nahrať stopu
       all_traces: Všetky stopy
       my_traces: Moje stopy
-      traces_from: Verejné stopy od %{user}
+      traces_from_html: Verejné stopy od %{user}
       remove_tag_filter: Odstrániť filter značiek
     destroy:
       scheduled_for_deletion: Stopa plánovaná na vymazanie
@@ -2836,7 +2834,6 @@ sk:
       reason: 'Dôvod blokovania:'
       revoker: 'Odvolal:'
     block:
-      not_revoked: (nezrušený)
       show: Zobraziť
       edit: Upraviť
     page:
@@ -2844,7 +2841,6 @@ sk:
       creator_name: Tvorca
       reason: Dôvod pre blokovanie
       status: Stav
-      revoker_name: Zrušil
   user_mutes:
     index:
       title: Stlmení používatelia
@@ -2861,12 +2857,19 @@ sk:
       title: Poznámky vytvorené alebo komentované používateľom %{user}
       heading: Poznámky používateľa %{user}
       subheading_html: Poznámky %{submitted} alebo %{commented}používateľom %{user}
+      subheading_submitted: vytvorené
+      subheading_commented: komentované
       no_notes: Žiadne poznámky
       id: ID
       creator: Autor
       description: Popis
       created_at: Vytvorené
       last_changed: Posledná zmena
+      apply: Použiť
+      all: Všetky
+      open: Otvorené
+      closed: Uzavreté
+      status: Stav
     show:
       title: 'Poznámka: %{id}'
       description: Popis
@@ -2885,11 +2888,15 @@ sk:
       report: nahlásiť túto poznámku
       anonymous_warning: Táto poznámka zahŕňa komentáre anonymných používateľov, ktoré
         by sa mali nezávisle preveriť.
+      discussion: Diskusia
+      subscribe: Sledovať
+      unsubscribe: Zrušiť sledovanie
       hide: Skryť
       resolve: Vyriešiť
       reactivate: Opätovne aktivovať
       comment_and_resolve: Okomentovať a vyriešiť
       comment: Okomentovať
+      log_in_to_comment: Ak chcete komentovať túto poznámku, prihláste sa
       report_link_html: Ak táto poznámka obsahuje citlivé údaje, ktoré by mali byť
         odstránené, môžete %{link}.
       other_problems_resolve: Pre všetky ostatné problémy s poznámkou, prosím vyriešte
@@ -2901,6 +2908,10 @@ sk:
       intro: Zahliadli ste chybu alebo že niečo chýba? Dajte to vedieť ostatným používateľom,
         aby sme to mohli opraviť. Umiestnite značku na správnu pozíciu a zapíšte poznámku
         na vysvetlenie problému.
+      anonymous_warning_html: Nie ste prihlásený. Prosím, %{log_in} alebo %{sign_up},
+        ak chcete dostávať aktualizácie vašej poznámky.
+      anonymous_warning_log_in: prihláste sa
+      anonymous_warning_sign_up: zaregistrujte sa
       advice: Vaša poznámka je verejná a môže slúžiť na úpravu mapy, preto nevkladajte
         žiadne osobné údaje ani informácie z máp alebo databáz chránených autorskými
         právami.
index e6c627a4b1c9b5e2428f948dd1c6275d44fbb9ad..785e32e8b0daf5f06dd63e292c1b7ac6b35aa4cf 100644 (file)
@@ -53,6 +53,7 @@ skr-arab:
       message: سنیہہ
       node: نوڈ
       node_tag: نوڈ ٹیگ
+      note: نوٹ
       old_node: پراݨا نوڈ
       old_node_tag: پراݨا نوڈ ٹیگ
       old_relation: پراݨا رشتہ
@@ -1076,6 +1077,14 @@ skr-arab:
       title: میݙیاں ترجیحاں
       preferred_editor: ترجیحی ایڈیٹر
       preferred_languages: ترجیحی زباناں
+      site_color_schemes:
+        auto: خود کار
+        light: پھکّا
+        dark: ڳوڑھا
+      map_color_schemes:
+        auto: خود بخود
+        light: پھکّا
+        dark: ڳوڑھا
       edit_preferences: ترجیحاں وچ تبدیلی کرو
     edit:
       save: ترجیحاں اپ ڈیٹ کرو
@@ -1346,9 +1355,17 @@ skr-arab:
   notes:
     index:
       subheading_submitted: جمع تھی ڳیا
+      apply: لاڳو کرو
+      all: یکے
+      open: کھولو
+      closed: بند تھیا
+      status: حیثیت
     show:
       title: نوٹ:%{id}
       description: تفصیل
+      discussion: بحث مباحثہ
+      subscribe: سبسکرائب کرو
+      unsubscribe: اݨ سبسکرائب کرو
       hide: لُکاؤ
       resolve: حل کرو
       comment: تبصرہ
index 4265d53a84f42dd5e541050833f3ad916990ea11..c5bada9ae40e3f298fa61446a9d00ccbf73086c8 100644 (file)
@@ -412,7 +412,6 @@ sl:
         way: Pot
         relation: Relacija
     containing_relation:
-      entry_html: Relacija %{relation_name}
       entry_role_html: Relacija %{relation_name} (kot %{relation_role})
     not_found:
       title: Ni najdeno
@@ -1518,7 +1517,6 @@ sl:
         other: '%{count} poročil'
       reported_item: Prijavljeni predmet
     show:
-      title: '%{status} Težava #%{issue_id}'
       reports:
         one: '%{count} prijava'
         two: '%{count} prijavi'
@@ -2169,7 +2167,7 @@ sl:
         contributors_rs_open_data_portal: Nacionalni portal odprtih podatkov
         contributors_si_credit_html: |-
           %{slovenia}: Vsebuje podatke iz %{gu_link} in %{mkgp_link}
-          (javne informacije v Sloveniji).
+          (javne informacije Slovenije).
         contributors_si_slovenia: Slovenija
         contributors_si_gu: Geodetska uprava
         contributors_si_gu_url: https://www.gov.si/drzavni-organi/organi-v-sestavi/geodetska-uprava/
@@ -2580,7 +2578,7 @@ sl:
       upload_trace: Naloži sled GPS
       all_traces: Vse sledi
       my_traces: Moje sledi
-      traces_from: Javne sledi uporabnika %{user}
+      traces_from_html: Javne sledi uporabnika %{user}
       remove_tag_filter: Odstrani filter oznak
     destroy:
       scheduled_for_deletion: Sled bo izbrisana
@@ -2970,7 +2968,6 @@ sl:
       reason: 'Razlog za blokiranje:'
       revoker: 'Preklical:'
     block:
-      not_revoked: (ni preklicano)
       show: Prikaži
       edit: Uredi
     page:
@@ -2978,7 +2975,6 @@ sl:
       creator_name: Ustvarjalec
       reason: Razlog za blokiranje
       status: Stanje
-      revoker_name: Preklical
     navigation:
       block: 'Blokiraj #%{id}'
   user_mutes:
index 1d18749667ca21513420c4501152c3b28ce9f749..8c9a0b8cf5257f8f6ad8433caa83b48aa9ede1bb 100644 (file)
@@ -186,7 +186,6 @@ sq:
         way: Rruga
         relation: Lidhja
     containing_relation:
-      entry_html: Lidhja %{relation_name}
       entry_role_html: Lidhja %{relation_name} (sikur %{relation_role})
     not_found:
       sorry: 'Na vjen keq, %{type} #%{id} nuk mund të gjendet.'
@@ -1317,7 +1316,6 @@ sq:
       edit: Redakto
     page:
       status: Statusi
-      revoker_name: Revokuar nga
   notes:
     show:
       title: 'Shënim: %{id}'
index 0e72e3ddabcc876f2562710927fda942c8fdf381..4eb3b4b2adc16391a236911bd55cd41e2b106020 100644 (file)
@@ -157,7 +157,6 @@ sr-Latn:
         way: Putanja
         relation: Odnos
     containing_relation:
-      entry_html: Odnos %{relation_name}
       entry_role_html: Odnos %{relation_name} (kao %{relation_role})
     not_found:
       sorry: Žao nam je, ali %{type} s IB %{id} nije pronađen.
@@ -1235,7 +1234,6 @@ sr-Latn:
       reason: 'Razlog za blokiranje:'
       revoker: 'Opozivalac:'
     block:
-      not_revoked: (nije opozvano)
       show: Prikaži
       edit: Uredi
     page:
@@ -1243,7 +1241,6 @@ sr-Latn:
       creator_name: Tvorac
       reason: Razlozi za blokiranje
       status: Stanje
-      revoker_name: Opozvao
   notes:
     notes_paging_nav:
       showing_page: Prikaz stranice %{page}
index 2a6d11089e9c630c3daf5be1a0c70f0184dbb5e1..51469b5fb62e995874e33f7b37574e4f7fbcc199 100644 (file)
@@ -71,6 +71,7 @@ sr:
       message: Порука
       node: Чвор
       node_tag: Ознака тачке
+      note: Напомена
       old_node: Стари чвор
       old_node_tag: Ознака старе тачке
       old_relation: Стари однос
@@ -336,8 +337,7 @@ sr:
         way: Линија
         relation: Однос
     containing_relation:
-      entry_html: Однос %{relation_name}
-      entry_role_html: Однос %{relation_name} (као %{relation_role})
+      entry_role_html: '%{relation_name} (као %{relation_role})'
     not_found:
       title: Није нађено
       sorry: 'Нажалост, %{type} #%{id} није пронађен.'
@@ -1555,6 +1555,11 @@ sr:
       title: Моја подешавања
       preferred_editor: Жељени уређивач
       preferred_languages: Жељени језици
+      site_color_schemes:
+        dark: Тамна
+      map_color_schemes:
+        auto: Аутоматски
+        light: Светла
       edit_preferences: Уреди подешавања
     edit:
       title: Моја подешавања
@@ -2262,7 +2267,6 @@ sr:
       reason: 'Разлог за блокирање:'
       revoker: 'Опозивалац:'
     block:
-      not_revoked: (није опозвано)
       show: Прикажи
       edit: Уреди
     page:
@@ -2270,7 +2274,6 @@ sr:
       creator_name: Творац
       reason: Разлози за блокирање
       status: Стање
-      revoker_name: Опозвао
   user_mutes:
     index:
       title: Пригушени корисници
index 21f21f5cc37016dd9a4de5395cb29e579533c304..5a56f08bea0b88f34a23fd5a4dfab3e5673803dc 100644 (file)
@@ -412,7 +412,6 @@ sv:
         way: Sträcka
         relation: Relation
     containing_relation:
-      entry_html: Relation %{relation_name}
       entry_role_html: Relation %{relation_name} (som %{relation_role})
     not_found:
       title: Hittades inte
@@ -1549,7 +1548,6 @@ sv:
         open: Öppen
         resolved: Löst
     show:
-      title: '%{status} Ärende nr %{issue_id}'
       reports:
         one: '%{count} rapport'
         other: '%{count} rapporter'
@@ -2621,7 +2619,7 @@ sv:
       upload_trace: Ladda upp GPS-spår
       all_traces: Alla spår
       my_traces: Mina spår
-      traces_from: Offentliga GPS-spår från %{user}
+      traces_from_html: Offentliga GPS-spår från %{user}
       remove_tag_filter: Ta bort taggfilter
     destroy:
       scheduled_for_deletion: GPS-spår schemalagt för radering
@@ -3024,7 +3022,6 @@ sv:
       reason: 'Anledning för blockering:'
       revoker: 'Återkallare:'
     block:
-      not_revoked: (Inte återkallat)
       show: Visa
       edit: Redigera
     page:
@@ -3032,13 +3029,12 @@ sv:
       creator_name: Skapare
       reason: Orsak till blockering
       status: Status
-      revoker_name: Återkallad av
     navigation:
       all_blocks: Alla blockeringar
       blocks_on_me: Blockeringar på mig
-      blocks_on_user: Blockeringar på %{user}
+      blocks_on_user_html: Blockeringar på %{user}
       blocks_by_me: Blockeringar av mig
-      blocks_by_user: Blockeringar av %{user}
+      blocks_by_user_html: Blockeringar av %{user}
       block: 'Blockering #%{id}'
       new_block: Ny blockering
   user_mutes:
index faeb0d1b2d0df270371aa8351969c2fcfbf1d7c6..41a46386931c460f6c32ae74900f901cdfbb6d99 100644 (file)
@@ -223,7 +223,6 @@ ta:
         way: வழி
         relation: தொடர்பு
     containing_relation:
-      entry_html: தொடர்பு %{relation_name}
       entry_role_html: தொடர்பு %{relation_name} (%{relation_role} ஆக)
     not_found:
       title: காணப்படவில்லை
index b3e90c3d253a9c54e88f4d7acf4a4442a425f1a9..a1f60b95fd15502acc4b81cbda2c6721ab5f71be 100644 (file)
@@ -339,7 +339,6 @@ te:
         way: దారి
         relation: సంబంధం
     containing_relation:
-      entry_html: '%{relation_name} సంబంధం'
       entry_role_html: '%{relation_name} సంబంధం (%{relation_role} లాగా)'
     not_found:
       title: కనబడలేదు
@@ -1354,7 +1353,6 @@ te:
         other: '%{count} ఫిర్యాదులు'
       reported_item: అంశంపై ఫిర్యాదు చేసారు
     show:
-      title: '%{status} అంశం #%{issue_id}'
       report_created_at_html: '%{datetime} న మొదటిసారి ఫిర్యాదు చేసారు'
       last_resolved_at_html: '%{datetime} న చివరిగా పరిష్కరించారు'
       last_updated_at_html: చివరిగా %{displayname} గారు %{datetime} కు తాజాకరించారు
@@ -2034,7 +2032,7 @@ te:
       upload_trace: ఓ ట్రేసును ఎక్కించండి
       all_traces: ట్రేసులన్నీ
       my_traces: నా ట్రేసులు
-      traces_from: '%{user} గారి బహిరంగ ట్రేసులు'
+      traces_from_html: '%{user} గారి బహిరంగ ట్రేసులు'
       remove_tag_filter: ట్యాగు వడపోతను తీసెయ్యి
     destroy:
       scheduled_for_deletion: ఈ ట్రేసు తొలగింపు కోసం వేచి ఉంది
@@ -2273,7 +2271,6 @@ te:
       reason: 'నిరోధానికి కారణం:'
       revoker: 'ఎత్తివేసేవారు:'
     block:
-      not_revoked: (ఎత్తివేయలేదు)
       show: చూపించు
       edit: మార్చు
     page:
@@ -2281,7 +2278,6 @@ te:
       creator_name: సృష్టికర్త
       reason: నిరోధానికి కారణం
       status: స్థితి
-      revoker_name: ఎత్తివేసినవారు
   notes:
     index:
       title: గమనికలు సమర్పించినది లేదా వ్యాఖ్యానించినది %{user}
index 1b539f236a94e8e8e2d50e8553bb1fa8472ce65b..e17cdee5840ad85d3784faa27b77788b729ec7ff 100644 (file)
@@ -132,7 +132,7 @@ th:
         longitude: ลองติจูด
         public: สาธารณะ
         description: คำอธิบาย
-        gpx_file: 'อัปโหลดไฟล์ GPX:'
+        gpx_file: เลือกไฟล์การติดตาม GPS
         visibility: 'สถานะการแสดง:'
         tagstring: แท็ก
       message:
@@ -277,11 +277,11 @@ th:
         disabled: ปิดใช้ และไม่สามารถแก้ไขแผนที่ได้อีก โดยการแก้ไขในอดีตทั้งหมดจะยังคงความนิรนามไว้
         disabled link text: ทำไมถึงแก้ไขไม่ได้?
       contributor terms:
-        heading: à¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วม
-        agreed: à¸\84ุà¸\93à¹\84à¸\94à¹\89ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วมใหม่แล้ว
-        not yet agreed: à¸\84ุà¸\93ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วมใหม่
+        heading: à¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล
+        agreed: à¸\84ุà¸\93à¹\84à¸\94à¹\89ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูลใหม่แล้ว
+        not yet agreed: à¸\84ุà¸\93ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูลใหม่
         review link text: โปรดเข้าลิงก์นี้ตามความสะดวกของคุณเพื่อตรวจสอบและยอมรับข้อกำหนดของผู้ร่วมให้ข้อมูลใหม่
-        agreed_with_pd: คุณยังได้ประกาศด้วยว่า คุณถือว่าการแก้ไขของคุณเป็นสาธารณสมบัติ
+        agreed_with_pd: à¸\84ุà¸\93ยัà¸\87à¹\84à¸\94à¹\89à¸\9bระà¸\81าศà¸\94à¹\89วยวà¹\88า à¸\84ุà¸\93à¸\96ือวà¹\88าà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93à¸\96ือวà¹\88าà¹\80à¸\9bà¹\87à¸\99สาà¸\98ารà¸\93สมà¸\9aัà¸\95ิ
         link text: นี่คืออะไร?
       save changes button: บันทึกการเปลี่ยนแปลง
       delete_account: ลบบัญชี...
@@ -343,7 +343,6 @@ th:
         way: เส้นทาง
         relation: ความสัมพันธ์
     containing_relation:
-      entry_html: ความสัมพันธ์%{relation_name}
       entry_role_html: ความสัมพันธ์%{relation_name} (ในฐานะ%{relation_role})
     not_found:
       title: ไม่พบข้อมูล
@@ -1445,7 +1444,6 @@ th:
         other: '%{count} การรายงาน'
       reported_item: รายการที่รายงาน
     show:
-      title: 'ปัญหา %{status} #%{issue_id}'
       reports:
         other: '%{count} การรายงาน'
       no_reports: ไม่มีรายงาน
@@ -1758,7 +1756,7 @@ th:
     new:
       tab_title: ลงชื่อเข้าใช้
       email or username: 'อีเมลหรือชื่อผู้ใช้:'
-      password: 'รหัสผ่าน:'
+      password: รหัสผ่าน
       remember: จดจำฉันไว้ในระบบ
       lost password link: ลืมรหัสผ่านหรือ?
       login_button: ลงชื่อเข้าใช้
@@ -1781,17 +1779,27 @@ th:
         newer: รอยทางที่ใหม่กว่า
   site:
     about:
+      heading_html: ผู้ร่วมให้ข้อมูล %{br}%{copyright}OpenStreetMap
       used_by_html: '%{name} ให้ข้อมูลแผนที่แก่เว็บไซต์ แอปพลิเคชั่นมือถือ และอุปกรณ์นับพัน'
       lede_text: OpenStreetMap เป็นโครงการซึ่งสร้างสรรค์ขึ้นจากชุมชนของผู้ใช้และผู้สนใจ
         ที่ได้ทำการสำรวจ ปรับปรุง แบ่งปันข้อมูลแผนที่ถนน ทางหลวง ทางเดินป่า, ร้านกาแฟ,
         สถานีรถไฟ, และอื่นๆ อีกมากมายจากทั่วทุกมุมโลก
       local_knowledge_title: ความรู้จากท้องถิ่น
       local_knowledge_html: OpenStreetMap มุ่งเน้นส่งเสริมการใช้และเผยแพร่ความรู้จากคนท้องถิ่น
-        à¹\82à¸\94ยà¸\99ัà¸\81à¸\97ำà¹\81à¸\9cà¸\99à¸\97ีà¹\88à¹\83à¸\99à¸\97à¹\89อà¸\87à¸\96ิà¹\88à¸\99สามารถใช้ทั้งภาพถ่ายดาวเทียม อุปกรณ์ระบุตำแหน่งจีพีเอส
+        à¹\82à¸\94ยà¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูลสามารถใช้ทั้งภาพถ่ายดาวเทียม อุปกรณ์ระบุตำแหน่งจีพีเอส
         หรือแม้แต่ผังกระดาษ เพื่อเดินสำรวจ เพิ่มเติม และปรับปรุงข้อมูลแผนที่ OpenStreetMap
         ให้ละเอียด ถูกต้อง ทันสมัยอยู่เสมอได้ด้วยตนเอง ทุกที่ ทุกเวลา
       community_driven_title: ผลักดันโดยชุมชน
+      community_driven_1_html: ชุมชน OpenStreetMap นั้นมีความหลากหลาย มีความกระตือรือร้น
+        และเติบใหญ่ขึ้นในทุกๆ วัน ผู้ร่วมให้ข้อมูลของเราประกอบด้วยผู้รักการทำแผนที่ผ
+        ผู้เชี่ยวชาญด้าน GIS วิศวกรที่ดูแลเซิร์ฟเวอร์ OSM ผู้ทำแผนที่พื้นที่ที่ได้รับผลกระทบจากภัยพิบัติ
+        และอื่นๆ อีกมากมาย หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับชุมชน โปรดดูที่เว็บไซต์%{osm_blog_link},%{user_diaries_link},%{community_blogs_link}
+        และ %{osm_foundation_link}
       open_data_title: ข้อมูลเปิดเผย
+      open_data_1_html: OpenStreetMap อนุญาตให้ใช้ตามหลักเกณฑ์%{open_data} โดยจะนำไปใช้ในวัตถุประสงค์อื่นใดก็ได้
+        แต่ต้องแสดงทีมาและเครดิตต่อ OpenStreetMap และผู้ร่วมให้ข้อมูล ถ้าท่านปรับแก้
+        เพิ่มข้อมูล หรือกระทำการให้เกิดสิ่งอื่นใดใหม่ขึ้นต่องานที่มีนี้ ท่านสามารถแจกจ่ายได้แต่เพียงภายใต้สัญญาอนุญาตเดียวกันเท่านั้น
+        โปรดดู%{copyright_license_link}สำหรับลายละเอียดเพิ่มเติม
       legal_title: ข้อกำหนดทางกฎหมาย
       partners_title: องค์กรพันธมิตร
     copyright:
@@ -1808,6 +1816,10 @@ th:
         native_link: รุ่นภาษาTHIS_LANGUAGE_NAME_HERE
         mapping_link: เริ่มการทำแผนที่
       legal_babble:
+        introduction_2_html: คุณสามารถคัดลอก แจกจ่าย ถ่ายทอด และดัดแปลงข้อมูลของเราได้อย่างเสรี
+          ตราบใดที่คุณให้อ้างอิงเครดิต OpenStreetMap และผู้ร่วมให้ข้อมูล ถ้าคุณแก้ไข
+          หรือสร้างข้อมูลต่อจากข้อมูลของเรา คุณสามารถเผยแพร่ผลลัพธ์ภายใต้สัญญาเดิมเท่านั้น
+          คำอธิบายเพิ่มเติมเกี่ยวกับสิทธิและความรับผิดชอบของคุณสามารถเข้าถึงได้ที่%{legal_code_link}
         credit_title_html: วิธีการแสดงที่มาหรือคำขอบคุณ OpenStreetMap
         credit_1_html: |-
           เราจำเป็นต้องให้ท่านแสดงที่มาหรือคำขอบคุณแก่ &ldquo;&copy; ผู้ร่วมสร้างสรรค์ OpenStreetMap
@@ -1816,23 +1828,25 @@ th:
           alt: ตัวอย่างการอ้างอิง OpenStreetMap บนหน้าเว็บ
           title: ตัวอย่างการอ้างอิง
         more_title_html: ค้นหาเพิ่มเติม
-        contributors_title_html: ผู้ร่วมสร้างสรรค์ของเรา
-        contributors_intro_html: |-
-          ผู้มีส่วนร่วมของเราคือบุคคลนับพัน เรายังมีข้อมูลที่ใช้สัญญาอนุญาตแบบเปิดเผย
-          จากตัวแทนการทำแผนที่ของชาติต่าง ๆ และแหล่งข้อมูลอื่น ๆ ต่อไปนี้:
-        contributors_footer_2_html: |-
-          การรวมข้อมูลใน OpenStreetMap ไม่ได้หมายความว่าผู้ให้บริการข้อมูลดั้งเดิม
-          จะรับรอง OpenStreetMap รับประกัน หรือรับผิดชอบใด ๆ
+        contributors_title_html: ผู้ร่วมให้ข้อมูลของเรา
+        contributors_intro_html: 'ผู้ร่วมให้ข้อมูลของเรามีอยู่หลายพันคน เรายังมีข้อมูลที่ใช้สัญญาอนุญาตแบบเปิด
+          จากตัวแทนการทำแผนที่ของชาติต่าง ๆ และแหล่งข้อมูลอื่น ๆ ต่อไปนี้:'
+        contributors_at_credit_html: '%{austria}: มีข้อมูลจาก%{stadt_wien_link} (ภายใต้
+          %{cc_by_link}), %{land_vorarlberg_link} และ Land Tirol (ภายใต้ %{cc_by_at_with_amendments_link})'
+        contributors_at_austria: ออสเตรีย
+        contributors_at_stadt_wien: เมืองเวียนนา
+        contributors_at_land_vorarlberg: แลนด์ ฟอร์อาร์ลแบร์ค
+        contributors_at_cc_by_at_with_amendments: CC BY AT with amendments
+        contributors_footer_2_html: การรวมข้อมูลใน OpenStreetMap ไม่ได้หมายความว่าผู้ให้บริการข้อมูลดั้งเดิมจะรับรอง
+          OpenStreetMap รับประกัน หรือรับผิดชอบใด ๆ
         infringement_title_html: การละเมิดลิขสิทธิ์
-        infringement_1_html: |-
-          ผู้มีส่วนร่วม OSM จะถูกเตือนไม่ให้เพิ่มข้อมูลจากแหล่งข้อมูลที่มีลิขสิทธิ์
-          (เช่น Google Maps หรือแผนที่แบบพิมพ์) โดยไม่ได้รับอนุญาตอย่าง
-          ชัดเจนจากเจ้าของลิขสิทธิ์
+        infringement_1_html: ผู้ร่วมให้ข้อมูล OSM จะถูกเตือนไม่ให้เพิ่มข้อมูลจากแหล่งข้อมูลที่มีลิขสิทธิ์
+          (เช่น Google Maps หรือแผนที่แบบพิมพ์) โดยไม่ได้รับอนุญาตอย่างชัดเจนจากเจ้าของลิขสิทธิ์
     index:
       js_1: ท่านกำลังใช้เบราว์เซอร์ที่ไม่รองรับจาวาสคริปต์ หรือท่านปิดใช้งานจาวาสคริปต์
       js_2: OpenStreetMap ใช้จาวาสคริปต์ในการแสดงแผนที่
       license:
-        copyright: à¸ªà¸\87วà¸\99ลิà¸\82สิà¸\97à¸\98ิà¹\8cà¹\82à¸\94ย OpenStreetMap à¹\81ละà¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วม ภายใต้สัญญาอนุญาตแบบเปิด
+        copyright: à¸ªà¸\87วà¸\99ลิà¸\82สิà¸\97à¸\98ิà¹\8cà¹\82à¸\94ย OpenStreetMap à¹\81ละà¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล ภายใต้สัญญาอนุญาตแบบเปิด
       remote_failed: การแก้ไขล้มเหลว - ตรวจสอบให้แน่ใจว่าได้โหลด JOSM หรือ Merkaartor
         และได้เปิดใช้งานตัวเลือกการควบคุมระยะไกลแล้ว
     edit:
@@ -2078,17 +2092,17 @@ th:
         header: เสรีและแก้ไขได้
       display name description: ชื่อที่แสดงต่อสาธารณะ ท่านสามารถเปลี่ยนในภายหลังได้ในหน้าการตั้งค่า
       continue: สมัครบัญชี
-      terms accepted: à¸\82อà¸\9aà¸\84ุà¸\93สำหรัà¸\9aà¸\81ารà¸\95อà¸\9aรัà¸\9aà¹\80à¸\87ืà¹\88อà¸\99à¹\84à¸\82à¸\9cูà¹\89รà¹\88วมสรà¹\89าà¸\87สรรà¸\84à¹\8c!
+      terms accepted: à¸\82อà¸\9aà¸\84ุà¸\93สำหรัà¸\9aà¸\81ารà¸\95อà¸\9aรัà¸\9aà¹\80à¸\87ืà¹\88อà¸\99à¹\84à¸\82à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล!
       use external auth: นอกจากนี้ ท่านสามารถใช้บัญชีผู้ใช้จากเว็บอื่นในการเข้าใช้งานได้
     terms:
       title: ข้อกำหนด
       heading: ข้อกำหนด
-      heading_ct: à¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วม
+      heading_ct: à¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล
       read_tou: ข้าพเจ้าได้อ่านและเห็นด้วยในข้อกำหนดการใช้งาน
       consider_pd: นอกเหนือจากข้อความข้างต้น ข้าพเจ้ายินดีสละการสร้างสรรค์ของข้าพเจ้าให้เป็นงานอันไม่มีลิขสิทธิ์
       consider_pd_why: นี้คืออะไร?
       continue: ถัดไป
-      you need to accept or decline: à¸\81รุà¸\93าà¸\95รวà¸\88à¸\97าà¸\99à¹\81ละà¹\80ลือà¸\81ยอมรัà¸\9aหรือà¹\84มà¹\88ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\82อà¸\87à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วมเพื่อไปต่อ
+      you need to accept or decline: à¸\81รุà¸\93าà¸\95รวà¸\88à¸\97าà¸\99à¹\81ละà¹\80ลือà¸\81ยอมรัà¸\9aหรือà¹\84มà¹\88ยอมรัà¸\9aà¸\82à¹\89อà¸\81ำหà¸\99à¸\94à¸\82อà¸\87à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูลเพื่อไปต่อ
       legale_select: 'ประเทศที่พำนัก:'
       legale_names:
         france: ฝรั่งเศส
@@ -2118,7 +2132,7 @@ th:
       remove as friend: ลบจากรายการเพื่อน
       add as friend: เพิ่มเข้ารายการเพื่อน
       mapper since: 'ทำแผนที่นี้ตั้งแต่:'
-      ct status: 'à¹\80à¸\87ืà¹\88อà¸\99à¹\84à¸\82à¸\9cูà¹\89รà¹\88วมสรà¹\89าà¸\87สรรà¸\84à¹\8c:'
+      ct status: 'à¹\80à¸\87ืà¹\88อà¸\99à¹\84à¸\82à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล:'
       ct undecided: ยังไม่ตัดสินใจ
       ct declined: ไม่ยอมรับ
       email address: 'ที่อยู่อีเมล:'
@@ -2219,7 +2233,6 @@ th:
       edit: แก้ไข
       reason: 'เหตุผลสำหรับการระงับใช้งาน:'
     block:
-      not_revoked: (ไม่ได้มีการยกเลิก)
       show: แสดง
       edit: แก้ไข
     page:
@@ -2227,7 +2240,6 @@ th:
       creator_name: ผู้สั่งให้ระงับ
       reason: เหตุผลที่ต้องระงับใช้งาน
       status: สถานะ
-      revoker_name: ยกเลิกโดย
   notes:
     index:
       heading: หมายเหตุของ %{user}
@@ -2290,7 +2302,7 @@ th:
         gps: รอยทาง GPS สาธารณะ
         overlays: 'ซ้อนชั้นข้อมูลพิเศษเพื่อช่วยในการแก้ปัญหาแผนที่:'
         title: ชั้นแผนที่
-      openstreetmap_contributors: à¸\9cูà¹\89มีสà¹\88วà¸\99รà¹\88วม OpenStreetMap
+      openstreetmap_contributors: à¸\9cูà¹\89รà¹\88วมà¹\83หà¹\89à¸\82à¹\89อมูล OpenStreetMap
     site:
       edit_tooltip: แก้ไขแผนที่
       edit_disabled_tooltip: ขยายเพื่อแก้ไขแผนที่
index 0cf5e57aabe2b76e6e60d7a194a5c786ba749d4f..eaa8b6ed63786e5ba55f4e268838ae4feeb7140f 100644 (file)
@@ -13,6 +13,7 @@
 # Author: Leeheonjin
 # Author: Macofe
 # Author: McDutchie
+# Author: Yivan000
 # Author: 아라
 ---
 tl:
@@ -99,6 +100,7 @@ tl:
       diary_entry:
         user: Tagagamit
         title: Paksa
+        body: Katawan
         latitude: Latitud
         longitude: Longhitud
         language_code: Wika
@@ -306,7 +308,6 @@ tl:
         way: Daan
         relation: Kaugnayan
     containing_relation:
-      entry_html: Kaugnayan %{relation_name}
       entry_role_html: Kaugnayan %{relation_name} (bilang %{relation_role})
     not_found:
       title: Hindi Matagpuan
@@ -1112,7 +1113,6 @@ tl:
         other: '%{count} mga Ulat'
       reported_item: Naiulat na bagay
     show:
-      title: '%{status} Isyu #%{issue_id}'
       reports:
         one: 1 ulat
         other: '%{count} mga ulat'
@@ -1720,7 +1720,7 @@ tl:
       tagged_with: tinatakan ng %{tags}
       upload_trace: Magkargang paitaas ng isang bakas
       all_traces: Lahat ng mga Bakas
-      traces_from: Pangmadlang Pagbakas mula kay %{user}
+      traces_from_html: Pangmadlang Pagbakas mula kay %{user}
     destroy:
       scheduled_for_deletion: Itinakda ang bakas para sa pagtatanggal
     offline_warning:
@@ -1977,7 +1977,6 @@ tl:
       reason: 'Dahilan ng paghadlang:'
       revoker: 'Tagapagbawi:'
     block:
-      not_revoked: (hindi binawi)
       show: Ipakita
       edit: Baguhin
     page:
@@ -1985,7 +1984,6 @@ tl:
       creator_name: Tagapaglikha
       reason: Dahilan ng pagharang
       status: Kalagayan
-      revoker_name: Binawi ni
   notes:
     index:
       title: Mga tala na isinumite o pinuna ni %{user}
index 2640125c2f4af376cfdd5314f21850c8f387aa50..ece5bf7cbb5910be2e6815458786de759b426c30 100644 (file)
@@ -414,7 +414,6 @@ tr:
         way: Yol
         relation: İlişki
     containing_relation:
-      entry_html: İlişki %{relation_name}
       entry_role_html: İlişki %{relation_name} (%{relation_role} olarak)
     not_found:
       title: Bulunamadı
@@ -1542,7 +1541,6 @@ tr:
         open: Aç
         resolved: Çözüldü
     show:
-      title: '%{status} Sorun #%{issue_id}'
       reports:
         one: '%{count} rapor'
         other: '%{count} rapor'
@@ -2619,7 +2617,7 @@ tr:
       upload_trace: GPS izi gönder
       all_traces: Tüm İzler
       my_traces: GPS İzlerim
-      traces_from: '%{user} kullanıcısına ait herkese açık izler'
+      traces_from_html: '%{user} kullanıcısına ait herkese açık izler'
       remove_tag_filter: Etiket Filtresini Kaldır
     destroy:
       scheduled_for_deletion: İz, silme işlemi için ayarlandı
@@ -3020,7 +3018,6 @@ tr:
       reason: 'Engellenme sebebi:'
       revoker: 'Geri alan:'
     block:
-      not_revoked: (iptal edilmemiş)
       show: Göster
       edit: Düzenle
     page:
@@ -3028,13 +3025,12 @@ tr:
       creator_name: Oluşturan
       reason: Engellenme sebebi
       status: Durum
-      revoker_name: İptal eden
     navigation:
       all_blocks: Tüm Engellemeler
       blocks_on_me: Engellendiklerim
-      blocks_on_user: '%{user} kişisinin engelleri'
+      blocks_on_user_html: '%{user} kişisinin engelleri'
       blocks_by_me: Engellediklerim
-      blocks_by_user: '%{user} tarafından engellenenler'
+      blocks_by_user_html: '%{user} tarafından engellenenler'
       block: 'Engel #%{id}'
       new_block: Yeni Engel
   user_mutes:
index 5fd4c4f9f9cd767b51f1ea0c57d7997a2630cf68..efdbb1a9aec25a3095374a5966115930b6b8200d 100644 (file)
@@ -350,7 +350,6 @@ tt:
         way: Юл
         relation: Мөнәсәбәт
     containing_relation:
-      entry_html: Мөнәсәбәт %{relation_name}
       entry_role_html: Мөнәсәбәт %{relation_name} (%{relation_role} сыйфатында)
     not_found:
       title: Табылмады
index 8757283d9bf7433d68e77814732bc26d32a9564e..4fc01f7ada6e0aa6a7a3d23d89c1f892d295d468 100644 (file)
@@ -105,6 +105,7 @@ uk:
       message: Повідомлення
       node: Точка
       node_tag: Теґ точки
+      note: Примітка
       old_node: Стара точка
       old_node_tag: Старий теґ точки
       old_relation: Старий зв’язок
@@ -449,7 +450,6 @@ uk:
         way: Лінія
         relation: Зв’язок
     containing_relation:
-      entry_html: Зв’язок %{relation_name}
       entry_role_html: Зв’язок %{relation_name} (як %{relation_role})
     not_found:
       title: Не знайдено
@@ -1602,7 +1602,6 @@ uk:
         open: Відкрито
         resolved: Вирішено
     show:
-      title: 'Звернення #%{issue_id} - %{status}'
       reports:
         one: '%{count} скарга'
         few: '%{count} скарги'
@@ -2688,7 +2687,7 @@ uk:
       upload_trace: Надіслати GPS-трек на сервер
       all_traces: Всі GPS-треки
       my_traces: Мої GPS-треки
-      traces_from: Загальнодоступні GPS треки %{user}
+      traces_from_html: Загальнодоступні GPS треки %{user}
       remove_tag_filter: Прибрати фільтри
     destroy:
       scheduled_for_deletion: Заплановано для вилучення
@@ -3110,7 +3109,6 @@ uk:
       reason: 'Причина блокування:'
       revoker: 'Розблокував:'
     block:
-      not_revoked: (не розблокований)
       show: Показати
       edit: Редагувати
     page:
@@ -3118,13 +3116,12 @@ uk:
       creator_name: Автор
       reason: Причина блокування
       status: Стан
-      revoker_name: Розблокував
     navigation:
       all_blocks: Всі блокування
       blocks_on_me: Мої блокування
-      blocks_on_user: Блокування для %{user}
+      blocks_on_user_html: Блокування для %{user}
       blocks_by_me: Заблокований(а) мною
-      blocks_by_user: Блокування, що їх наклав %{user}
+      blocks_by_user_html: Блокування, що їх наклав %{user}
       block: Блокування №%{id}
       new_block: Нове блокування
   user_mutes:
@@ -3166,6 +3163,11 @@ uk:
       description: Опис
       created_at: Створено
       last_changed: Остання зміна
+      apply: Застосувати
+      all: Всі
+      open: Відкриті
+      closed: Закриті
+      status: Стан
     show:
       title: 'Нотатка: %{id}'
       description: Опис
@@ -3184,6 +3186,9 @@ uk:
       report: поскаржитися на цю нотатку
       anonymous_warning: Ця нотатка містить коментарі від анонімних учасників. Потрібна
         додаткова перевірка відомостей.
+      discussion: Обговорення
+      subscribe: Підписатися
+      unsubscribe: Відписатись
       hide: Приховати
       resolve: Опрацьовано
       reactivate: Поновити
index 1aabe21952a075e3b64b279eaf94fdb7170df8f2..4b1f3280e601d494d6e1a93970b0dbc104efd34f 100644 (file)
@@ -82,6 +82,7 @@ vi:
       message: Thư
       node: Nốt
       node_tag: Thẻ Nốt
+      note: Ghi chú
       old_node: Nốt Cũ
       old_node_tag: Thẻ Nốt Cũ
       old_relation: Quan hệ Cũ
@@ -373,8 +374,7 @@ vi:
         way: Lối
         relation: Quan hệ
     containing_relation:
-      entry_html: Quan hệ %{relation_name}
-      entry_role_html: 'Quan hệ %{relation_name} (vai trò: %{relation_role})'
+      entry_role_html: '%{relation_name} (vai trò: %{relation_role})'
     not_found:
       title: Không Tìm thấy
       sorry: 'Rất tiếc, không tìm thấy %{type} #%{id}.'
@@ -386,8 +386,8 @@ vi:
         note: ghi chú
     timeout:
       title: Lỗi Hết Thời gian Chờ
-      sorry: Rất tiếc, việc lấy dữ liệu loại %{type} có ID %{id} vượt quá thời gian
-        cho phép.
+      sorry: Rất tiếc, việc lấy dữ liệu cho phần tử kiểu %{type} số %{id} vượt quá
+        thời gian cho phép.
       type:
         node: nốt
         way: lối
@@ -425,20 +425,30 @@ vi:
       enclosing: Yếu tố bao gồm
   nodes:
     timeout:
-      sorry: Rất tiếc, việc lấy dữ liệu cho node có ID %{id} vượt quá thời gian cho
-        phép.
+      sorry: Rất tiếc, việc lấy dữ liệu cho nốt số %{id} vượt quá thời gian cho phép.
   old_nodes:
     not_found:
       sorry: 'Rất tiếc, không tìm thấy nốt #%{id} phiên bản %{version}.'
     timeout:
-      sorry: Rất tiếc, việc lấy lịch sử cho node có ID %{id} vượt quá thời gian cho
-        phép.
+      sorry: Rất tiếc, việc lấy lịch sử cho nốt số %{id} vượt quá thời gian cho phép.
+  ways:
+    timeout:
+      sorry: Rất tiếc, việc lấy dữ liệu cho lối số %{id} vượt quá thời gian cho phép.
   old_ways:
     not_found:
       sorry: 'Rất tiếc, không tìm thấy lối #%{id} phiên bản %{version}.'
+    timeout:
+      sorry: Rất tiếc, việc lấy lịch sử cho lối số %{id} vượt quá thời gian cho phép.
+  relations:
+    timeout:
+      sorry: Rất tiếc, việc lấy dữ liệu cho quan hệ số %{id} vượt quá thời gian cho
+        phép.
   old_relations:
     not_found:
       sorry: 'Rất tiếc, không tìm thấy #%{id} phiên bản %{version}.'
+    timeout:
+      sorry: Rất tiếc, việc lấy lịch sử cho quan hệ số %{id} vượt quá thời gian cho
+        phép.
   changeset_comments:
     feeds:
       comment:
@@ -620,6 +630,8 @@ vi:
       post: Mục nhật ký
       when: Lúc đăng
       comment: Nhận xét
+    new:
+      heading: Thêm bình luận vào cuộc thảo luận về mục nhật ký sau đây?
   doorkeeper:
     errors:
       messages:
@@ -1398,6 +1410,7 @@ vi:
     page:
       user_not_found: Người dùng không tồn tại
       issues_not_found: Không tìm thấy vấn đề
+      reported_user: Người dùng Báo cáo
       status: Trạng thái
       reports: Báo cáo
       last_updated: Lần Cập nhật Cuối
@@ -1405,8 +1418,15 @@ vi:
       reports_count:
         other: '%{count} Báo cáo'
       reported_item: Mục Báo cáo
+      states:
+        ignored: Bỏ qua
+        open: Mở
+        resolved: Giải quyết
     show:
-      title: 'Vấn đề %{status} #%{issue_id}'
+      title:
+        open: 'Vấn đề Mở #%{issue_id}'
+        ignored: 'Vấn đề Bỏ qua #%{issue_id}'
+        resolved: 'Vấn đề Giải quyết #%{issue_id}'
       reports:
         other: '%{count} báo cáo'
       no_reports: Không có báo cáo
@@ -1505,6 +1525,7 @@ vi:
       hiện những công việc bảo quản cơ sở dữ liệu cần thiết.
     osm_read_only: Cơ sở dữ liệu OpenStreetMap đang bị khóa không được sửa đổi trong
       lúc đang thực hiện những công việc bảo quản cơ sở dữ liệu cần thiết.
+    nothing_to_preview: Không có gì để xem trước.
     help: Trợ giúp
     about: Giới thiệu
     copyright: Bản quyền
@@ -1546,13 +1567,21 @@ vi:
       befriend_them_html: Bạn cũng có thể thêm họ vào danh sách bạn bè của bạn tại
         %{befriendurl}.
     gpx_description:
-      description_with_tags_html: 'Hình như tập tin GPX %{trace_name} của bạn có lời
-        miêu tả %{trace_description} và các thẻ sau: %{tags}'
-      description_with_no_tags_html: Hình như tập tin GPX %{trace_name} của bạn có
-        lời miêu tả %{trace_description} và không có thẻ
+      description_with_tags: 'Hình như tập tin %{trace_name} của bạn có lời miêu tả
+        %{trace_description} và các thẻ sau: %{tags}'
+      description_with_tags_html: 'Hình như tập tin %{trace_name} của bạn có lời miêu
+        tả %{trace_description} và các thẻ sau: %{tags}'
+      description_with_no_tags: Hình như tập tin %{trace_name} của bạn có lời miêu
+        tả %{trace_description} và không có thẻ
+      description_with_no_tags_html: Hình như tập tin %{trace_name} của bạn có lời
+        miêu tả %{trace_description} và không có thẻ
     gpx_failure:
       hi: Chào %{to_user},
-      failed_to_import: 'không nhập thành công. Đã gặp lỗi này:'
+      failed_to_import: 'không nhập thành công là tập tin tuyến GPS. Vui lòng kiểm
+        tra rằng tập tin của bạn là tập tin GPX hợp lệ hoặc gói chứa (các) tập tin
+        dưới định dạng được hỗ trợ (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+        Tập tin của bạn có phải có vấn đề định dạng hoặc cú pháp không? Lỗi nhập là:'
+      more_info: Tìm hiểu thêm về lỗi nhập GPX và cách tránh lỗi tại %{url}.
       more_info_html: Tìm hiểu thêm về lỗi nhập GPX và cách tránh lỗi tại %{url}.
       import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures?uselang=vi
       subject: '[OpenStreetMap] Nhập GPX thất bại'
@@ -1560,6 +1589,9 @@ vi:
       hi: Chào %{to_user},
       loaded:
         other: tải thành công với %{trace_points} điểm trên tổng số %{count} điểm.
+      trace_location: Tuyến GPX của bạn có sẵn tại %{trace_url}
+      all_your_traces: Bạn có thể truy cập tất cả các tuyến GPX mà bạn đã tải lên
+        thành công tại %{url}
       all_your_traces_html: Bạn có thể truy cập tất cả các tuyến GPX mà bạn đã tải
         lên thành công tại %{url}.
       subject: '[OpenStreetMap] Nhập GPX thành công'
@@ -1772,6 +1804,16 @@ vi:
       title: Tùy chỉnh
       preferred_editor: Trình vẽ Ưu tiên
       preferred_languages: Ngôn ngữ Ưu tiên
+      preferred_site_color_scheme: Bộ màu Trang Ưa thích
+      site_color_schemes:
+        auto: Tự động
+        light: Sáng
+        dark: Tối
+      preferred_map_color_scheme: Bộ màu Bản đồ Ưa thích
+      map_color_schemes:
+        auto: Tự động
+        light: Sáng
+        dark: Tối
       edit_preferences: Thay đổi Tùy chỉnh
     edit:
       title: Thay đổi Tùy chỉnh
@@ -1848,6 +1890,7 @@ vi:
     richtext_field:
       edit: Sửa đổi
       preview: Xem trước
+      help: Trợ giúp
     pagination:
       diary_comments:
         older: Các Nhận xét Cũ hơn
@@ -1855,6 +1898,9 @@ vi:
       diary_entries:
         older: Mục cũ hơn
         newer: Mục mới hơn
+      issues:
+        older: Vấn đề Cũ hơn
+        newer: Vấn đề Mới hơn
       traces:
         older: Tuyến đường Cũ hơn
         newer: Tuyến đường Mới hơn
@@ -2032,6 +2078,8 @@ vi:
         infringement_1_html: Những người đóng góp vào OSM được khuyên không bao giờ
           bổ sung dữ liệu từ những nguồn có bản quyền (chẳng hạn Bản đồ Google hoặc
           các bản đồ trên giấy) trước khi các nhà giữ bản quyền cho phép rõ ràng.
+        infringement_2_1_takedown_procedure: thủ tục tháo gỡ
+        infringement_2_1_online_filing_page: trang nộp đơn trực tuyến
         trademarks_title: Nhãn hiệu
         trademarks_1_1_html: |-
           OpenStreetMap, biểu trưng kính lúp, và State of the Map là các nhãn hiệu do Quỹ OpenStreetMap đăng ký. Nếu bạn có thắc mắc về việc sử dụng các nhãn hiệu, xin vui lòng xem
@@ -2390,7 +2438,7 @@ vi:
       upload_trace: Tải lên tuyến đường
       all_traces: Tất cả các Tuyến đường
       my_traces: Tuyến đường của Tôi
-      traces_from: Tuyến đường Công khai của %{user}
+      traces_from_html: Tuyến đường Công khai của %{user}
       remove_tag_filter: Loại bỏ Bộ lọc Thẻ
     destroy:
       scheduled_for_deletion: Tuyến đường chờ được xóa
@@ -2424,6 +2472,7 @@ vi:
       oauth2_authorizations: Ủy quyền OAuth 2
       muted_users: Người dùng bị Tắt tiếng
     auth_providers:
+      openid_url: Địa chỉ OpenID
       openid_login_button: Tiếp tục
       openid:
         title: Đăng nhập qua OpenID
@@ -2573,6 +2622,7 @@ vi:
       informal_translations: bản dịch không chính thức
       continue: Tiếp tục
       declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=vi
+      cancel: Hủy bỏ
       you need to accept or decline: Để tiếp tục, xin vui lòng đọc các Điều khoản
         Đóng góp mới và chấp nhận hoặc từ chối chúng.
       legale_select: 'Vui lòng chọn quốc gia cư trú:'
@@ -2772,22 +2822,23 @@ vi:
       reason: 'Lý do cấm:'
       revoker: 'Người bỏ cấm:'
     block:
-      not_revoked: (không bị hủy)
       show: Hiện
       edit: Sửa đổi
     page:
       display_name: Người bị cấm
       creator_name: Người cấm
       reason: Lý do cấm
+      start: Bắt đầu
+      end: Kết thúc
       status: Trạng thái
-      revoker_name: Người bỏ cấm
     navigation:
       all_blocks: Tất cả các Tác vụ Cấm
       blocks_on_me: Tác vụ Cấm Tôi
-      blocks_on_user: Tác vụ Cấm %{user}
+      blocks_on_user_html: Tác vụ Cấm %{user}
       blocks_by_me: Tác vụ Cấm bởi Tôi
-      blocks_by_user: Tác vụ Cấm bởi %{user}
+      blocks_by_user_html: Tác vụ Cấm bởi %{user}
       block: Tác vụ cấm số %{id}
+      new_block: Tác vụ Cấm Mới
   user_mutes:
     index:
       title: Người dùng bị Tắt tiếng
@@ -2824,6 +2875,11 @@ vi:
       description: Miêu tả
       created_at: Lúc tạo
       last_changed: Thay đổi gần đây nhất
+      apply: Áp dụng
+      all: Tất cả
+      open: Mở
+      closed: Đóng
+      status: Trạng thái
     show:
       title: 'Ghi chú: %{id}'
       description: Miêu tả
@@ -2842,6 +2898,9 @@ vi:
       report: báo cáo ghi chú này
       anonymous_warning: Ghi chú này có bình luận của người dùng vô danh đóng góp;
         các bình luận này cần được xác nhận lại.
+      discussion: Thảo luận
+      subscribe: Theo dõi
+      unsubscribe: Ngừng theo dõi
       hide: Ẩn
       resolve: Giải quyết
       reactivate: Mở lại
@@ -2870,6 +2929,8 @@ vi:
       add: Thêm Ghi chú
     notes_paging_nav:
       showing_page: Trang %{page}
+      next: Sau
+      previous: Trước
   javascripts:
     close: Đóng
     share:
@@ -2884,14 +2945,15 @@ vi:
       custom_dimensions: Tùy biến kích thước
       format: 'Định dạng:'
       scale: 'Tỷ lệ:'
-      image_dimensions: Hình của lớp tiêu chuẩn với kích thước %{width}×%{height}
+      image_dimensions: Hình của lớp %{layer} với kích thước %{width}×%{height}
       download: Tải về
       short_url: URL Ngắn gọn
       include_marker: Ghim trên bản đồ
       center_marker: Chuyển ghim vào giữa bản đồ
       paste_html: Dán HTML để nhúng vào trang Web
       view_larger_map: Xem Bản đồ Rộng hơn
-      only_standard_layer: Chỉ có thể xuất lớp chuẩn ra hình ảnh
+      only_standard_layer: Chỉ có thể xuất các lớp Chuẩn, Bản đồ Xe đạp, và Bản đồ
+        Giao thông ra hình ảnh
     embed:
       report_problem: Báo vấn đề
     key:
index 772cd9d0d086a724559e065ea7108229b40ff11d..3c1882f2dc161272abf77b41c890cc939057e88e 100644 (file)
@@ -309,7 +309,6 @@ xmf:
         way: რზა
         relation: ურთიართობა
     containing_relation:
-      entry_html: ურთიართობა %{relation_name}
       entry_role_html: ურთიართობა %{relation_name} (მუჭოთ %{relation_role})
     not_found:
       title: ვეგორჷ
index 02729053fe56eeccdf375fc448f6d7fb2d495f7a..f31c415d31ceca9685d453118c0eb61efde4a011 100644 (file)
@@ -58,6 +58,7 @@
 # Author: SkyEye FAST
 # Author: StarrySky
 # Author: StephDC
+# Author: TFX202X
 # Author: TianyinLee
 # Author: Tntchn
 # Author: TsuyaMarisa
@@ -140,6 +141,7 @@ zh-CN:
       message: 消息
       node: 节点
       node_tag: 节点标签
+      note: 注释
       old_node: 旧节点
       old_node_tag: 旧节点标签
       old_relation: 旧关系
@@ -422,8 +424,7 @@ zh-CN:
         way: 路径
         relation: 关系
     containing_relation:
-      entry_html: 关系 %{relation_name}
-      entry_role_html: 关系 %{relation_name} (作为 %{relation_role})
+      entry_role_html: '%{relation_name} (作为 %{relation_role})'
     not_found:
       title: 未找到
       sorry: '抱歉,无法找到 %{type} #%{id}。'
@@ -1544,7 +1545,6 @@ zh-CN:
         open: 开放
         resolved: 已解决
     show:
-      title: '%{status}问题#%{issue_id}'
       reports:
         one: '%{count}个举报'
         other: '%{count}个举报'
@@ -2428,7 +2428,7 @@ zh-CN:
       upload_trace: 上传轨迹
       all_traces: 所有轨迹
       my_traces: 我的轨迹
-      traces_from: 来自%{user}的公开轨迹
+      traces_from_html: 来自%{user}的公开轨迹
       remove_tag_filter: 移除标签过滤器
     destroy:
       scheduled_for_deletion: 计划删除的轨迹
@@ -2784,7 +2784,6 @@ zh-CN:
       reason: 封禁的原因:
       revoker: 撤销者:
     block:
-      not_revoked: (未撤销)
       show: 显示
       edit: 编辑
     page:
@@ -2792,13 +2791,12 @@ zh-CN:
       creator_name: 创建者
       reason: 封禁的原因
       status: 状态
-      revoker_name: 撤销者
     navigation:
       all_blocks: 所有封禁
       blocks_on_me: 对我的封禁
-      blocks_on_user: 对%{user}的封禁
+      blocks_on_user_html: 对%{user}的封禁
       blocks_by_me: 由我做出的封禁
-      blocks_by_user: 由%{user}做出的封禁
+      blocks_by_user_html: 由%{user}做出的封禁
       block: 封禁#%{id}
       new_block: 新封禁
   user_mutes:
@@ -2836,6 +2834,11 @@ zh-CN:
       description: 描述
       created_at: 创建于
       last_changed: 最后更改于
+      apply: 应用
+      all: 全部
+      open: 打开
+      closed: 关闭
+      status: 状态
     show:
       title: 注记:%{id}
       description: 描述
@@ -2853,6 +2856,9 @@ zh-CN:
       event_hidden_by_html: 由%{user}%{time_ago}隐藏
       report: 举报此注记
       anonymous_warning: 该注记包含匿名用户的评论,应独立地予以核实。
+      discussion: 讨论
+      subscribe: 订阅
+      unsubscribe: 取消订阅
       hide: 隐藏
       resolve: 解决
       reactivate: 重启
index 193fd8b15947eac89cedb340b7d7631a5ef4d6ee..471725411d9d967d125201432b86e7def2ca7eff 100644 (file)
@@ -378,7 +378,6 @@ zh-TW:
         way: 路徑
         relation: 關聯
     containing_relation:
-      entry_html: 關聯 %{relation_name}
       entry_role_html: 關聯 %{relation_name} (作為 %{relation_role})
     not_found:
       title: 找不到
@@ -1500,7 +1499,6 @@ zh-TW:
         open: 開放
         resolved: 已解決
     show:
-      title: '%{status} 問題 #%{issue_id}'
       reports:
         one: '%{count} 份回報'
         other: '%{count} 份回報'
@@ -2399,7 +2397,7 @@ zh-TW:
       upload_trace: 上傳軌跡
       all_traces: 所有軌跡
       my_traces: 我的軌跡
-      traces_from: 來自 %{user} 的公開軌跡
+      traces_from_html: 來自 %{user} 的公開軌跡
       remove_tag_filter: 移除標籤篩選
     destroy:
       scheduled_for_deletion: 軌跡已被排程刪除
@@ -2757,7 +2755,6 @@ zh-TW:
       reason: 封鎖的理由:
       revoker: 撤銷者:
     block:
-      not_revoked: (沒有撤銷)
       show: 顯示
       edit: 編輯
     page:
@@ -2765,13 +2762,12 @@ zh-TW:
       creator_name: 建立者
       reason: 封鎖的理由
       status: 狀態
-      revoker_name: 撤銷者
     navigation:
       all_blocks: 所有封鎖
       blocks_on_me: 對我的封鎖
-      blocks_on_user: 對%{user}的封鎖
+      blocks_on_user_html: 對%{user}的封鎖
       blocks_by_me: 由我做出的封鎖
-      blocks_by_user: 由%{user}做出的封鎖
+      blocks_by_user_html: 由%{user}做出的封鎖
       block: 封鎖#%{id}
       new_block: 新封鎖
   user_mutes:
index af72c457d25d0b950a52cd8a0a8037fe1f057e9d..871fef1bf27f667279d32c4a22be320abd2d3a4a 100644 (file)
@@ -86,16 +86,17 @@ OpenStreetMap::Application.routes.draw do
     end
 
     post "/user/messages/:id" => "messages#update", :as => :api_message_update
-
-    post "gpx/create" => "traces#create"
-    get "gpx/:id" => "traces#show", :as => :api_trace, :id => /\d+/
-    put "gpx/:id" => "traces#update", :id => /\d+/
-    delete "gpx/:id" => "traces#destroy", :id => /\d+/
-    get "gpx/:id/details" => "traces#show", :id => /\d+/
-    get "gpx/:id/data" => "traces#data", :as => :api_trace_data
   end
 
   namespace :api, :path => "api/0.6" do
+    resources :traces, :path => "gpx", :only => [:create, :show, :update, :destroy], :id => /\d+/ do
+      scope :module => :traces do
+        resource :data, :only => :show
+      end
+    end
+    post "gpx/create" => "traces#create", :id => /\d+/, :as => :trace_create
+    get "gpx/:id/details" => "traces#show", :id => /\d+/, :as => :trace_details
+
     # Map notes API
     resources :notes, :except => [:new, :edit, :update], :id => /\d+/, :controller => "notes" do
       collection do
@@ -108,6 +109,8 @@ OpenStreetMap::Application.routes.draw do
         post "close"
         post "reopen"
       end
+
+      resource :subscription, :only => [:create, :destroy], :controller => "note_subscriptions"
     end
 
     resources :user_blocks, :only => :show, :id => /\d+/, :controller => "user_blocks"
diff --git a/test/controllers/api/note_subscriptions_controller_test.rb b/test/controllers/api/note_subscriptions_controller_test.rb
new file mode 100644 (file)
index 0000000..0e38869
--- /dev/null
@@ -0,0 +1,142 @@
+require "test_helper"
+
+module Api
+  class NoteSubscriptionsControllerTest < ActionDispatch::IntegrationTest
+    def test_routes
+      assert_routing(
+        { :path => "/api/0.6/notes/1/subscription", :method => :post },
+        { :controller => "api/note_subscriptions", :action => "create", :note_id => "1" }
+      )
+      assert_routing(
+        { :path => "/api/0.6/notes/1/subscription", :method => :delete },
+        { :controller => "api/note_subscriptions", :action => "destroy", :note_id => "1" }
+      )
+    end
+
+    def test_create
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      note = create(:note_with_comments)
+      assert_empty note.subscribers
+
+      assert_difference "NoteSubscription.count", 1 do
+        assert_difference "note.subscribers.count", 1 do
+          post api_note_subscription_path(note), :headers => auth_header
+          assert_response :success
+        end
+      end
+      assert_equal user, note.subscribers.last
+    end
+
+    def test_create_fail_anonymous
+      note = create(:note_with_comments)
+
+      assert_no_difference "NoteSubscription.count" do
+        assert_no_difference "note.subscribers.count" do
+          post api_note_subscription_path(note)
+          assert_response :unauthorized
+        end
+      end
+    end
+
+    def test_create_fail_no_scope
+      user = create(:user)
+      auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
+      note = create(:note_with_comments)
+
+      assert_no_difference "NoteSubscription.count" do
+        assert_no_difference "note.subscribers.count" do
+          post api_note_subscription_path(note), :headers => auth_header
+          assert_response :forbidden
+        end
+      end
+    end
+
+    def test_create_fail_note_not_found
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+
+      assert_no_difference "NoteSubscription.count" do
+        post api_note_subscription_path(999111), :headers => auth_header
+        assert_response :not_found
+      end
+      assert_match "not found", @response.body
+    end
+
+    def test_create_fail_already_subscribed
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      note = create(:note_with_comments)
+      create(:note_subscription, :user => user, :note => note)
+
+      assert_no_difference "NoteSubscription.count" do
+        assert_no_difference "note.subscribers.count" do
+          post api_note_subscription_path(note), :headers => auth_header
+          assert_response :conflict
+        end
+      end
+      assert_match "already subscribed", @response.body
+    end
+
+    def test_destroy
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      other_user = create(:user)
+      note = create(:note_with_comments)
+      other_note = create(:note_with_comments)
+      create(:note_subscription, :user => user, :note => note)
+      create(:note_subscription, :user => other_user, :note => note)
+      create(:note_subscription, :user => user, :note => other_note)
+
+      assert_difference "NoteSubscription.count", -1 do
+        assert_difference "note.subscribers.count", -1 do
+          delete api_note_subscription_path(note), :headers => auth_header
+          assert_response :success
+        end
+      end
+      note.reload
+      assert_equal [other_user], note.subscribers
+      assert_equal [user], other_note.subscribers
+    end
+
+    def test_destroy_fail_anonymous
+      note = create(:note_with_comments)
+
+      delete api_note_subscription_path(note)
+      assert_response :unauthorized
+    end
+
+    def test_destroy_fail_no_scope
+      user = create(:user)
+      auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
+      note = create(:note_with_comments)
+      create(:note_subscription, :user => user, :note => note)
+
+      assert_no_difference "NoteSubscription.count" do
+        assert_no_difference "note.subscribers.count" do
+          delete api_note_subscription_path(note), :headers => auth_header
+          assert_response :forbidden
+        end
+      end
+    end
+
+    def test_destroy_fail_note_not_found
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+
+      delete api_note_subscription_path(999111), :headers => auth_header
+      assert_response :not_found
+      assert_match "not found", @response.body
+    end
+
+    def test_destroy_fail_not_subscribed
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      note = create(:note_with_comments)
+
+      delete api_note_subscription_path(note), :headers => auth_header
+      assert_response :not_found
+      assert_match "not subscribed", @response.body
+    end
+  end
+end
diff --git a/test/controllers/api/traces/data_controller_test.rb b/test/controllers/api/traces/data_controller_test.rb
new file mode 100644 (file)
index 0000000..b4aa399
--- /dev/null
@@ -0,0 +1,114 @@
+require "test_helper"
+
+module Api
+  module Traces
+    class DataControllerTest < ActionDispatch::IntegrationTest
+      ##
+      # test all routes which lead to this controller
+      def test_routes
+        assert_routing(
+          { :path => "/api/0.6/gpx/1/data", :method => :get },
+          { :controller => "api/traces/data", :action => "show", :trace_id => "1" }
+        )
+        assert_routing(
+          { :path => "/api/0.6/gpx/1/data.xml", :method => :get },
+          { :controller => "api/traces/data", :action => "show", :trace_id => "1", :format => "xml" }
+        )
+      end
+
+      # Test downloading a trace through the api
+      def test_show
+        public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
+
+        # First with no auth
+        get api_trace_data_path(public_trace_file)
+        assert_response :unauthorized
+
+        # Now with some other user, which should work since the trace is public
+        auth_header = bearer_authorization_header
+        get api_trace_data_path(public_trace_file), :headers => auth_header
+        follow_redirect!
+        follow_redirect!
+        check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+
+        # And finally we should be able to do it with the owner of the trace
+        auth_header = bearer_authorization_header public_trace_file.user
+        get api_trace_data_path(public_trace_file), :headers => auth_header
+        follow_redirect!
+        follow_redirect!
+        check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+      end
+
+      # Test downloading a compressed trace through the api
+      def test_data_compressed
+        identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
+
+        # Authenticate as the owner of the trace we will be using
+        auth_header = bearer_authorization_header identifiable_trace_file.user
+
+        # First get the data as is
+        get api_trace_data_path(identifiable_trace_file), :headers => auth_header
+        follow_redirect!
+        follow_redirect!
+        check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
+
+        # Now ask explicitly for XML format
+        get api_trace_data_path(identifiable_trace_file, :format => "xml"), :headers => auth_header
+        check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
+
+        # Now ask explicitly for GPX format
+        get api_trace_data_path(identifiable_trace_file, :format => "gpx"), :headers => auth_header
+        check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
+      end
+
+      # Check an anonymous trace can't be downloaded by another user through the api
+      def test_data_anon
+        anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
+
+        # First with no auth
+        get api_trace_data_path(anon_trace_file)
+        assert_response :unauthorized
+
+        # Now with some other user, which shouldn't work since the trace is anon
+        auth_header = bearer_authorization_header
+        get api_trace_data_path(anon_trace_file), :headers => auth_header
+        assert_response :forbidden
+
+        # And finally we should be able to do it with the owner of the trace
+        auth_header = bearer_authorization_header anon_trace_file.user
+        get api_trace_data_path(anon_trace_file), :headers => auth_header
+        follow_redirect!
+        follow_redirect!
+        check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
+      end
+
+      # Test downloading a trace that doesn't exist through the api
+      def test_data_not_found
+        deleted_trace_file = create(:trace, :deleted)
+
+        # Try first with no auth, as it should require it
+        get api_trace_data_path(0)
+        assert_response :unauthorized
+
+        # Login, and try again
+        auth_header = bearer_authorization_header
+        get api_trace_data_path(0), :headers => auth_header
+        assert_response :not_found
+
+        # Now try a trace which did exist but has been deleted
+        auth_header = bearer_authorization_header deleted_trace_file.user
+        get api_trace_data_path(deleted_trace_file), :headers => auth_header
+        assert_response :not_found
+      end
+
+      private
+
+      def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
+        assert_response :success
+        assert_equal digest, Digest::MD5.hexdigest(response.body)
+        assert_equal content_type, response.media_type
+        assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
+      end
+    end
+  end
+end
index 6ce35bc7cb6089cb24c8dbe6860e582c999a009f..367bb6d21e1fe0b057d5f7de06abfe7f46e8f9c7 100644 (file)
@@ -6,9 +6,13 @@ module Api
     # test all routes which lead to this controller
     def test_routes
       assert_routing(
-        { :path => "/api/0.6/gpx/create", :method => :post },
+        { :path => "/api/0.6/gpx", :method => :post },
         { :controller => "api/traces", :action => "create" }
       )
+      assert_recognizes(
+        { :controller => "api/traces", :action => "create" },
+        { :path => "/api/0.6/gpx/create", :method => :post }
+      )
       assert_routing(
         { :path => "/api/0.6/gpx/1", :method => :get },
         { :controller => "api/traces", :action => "show", :id => "1" }
@@ -25,14 +29,6 @@ module Api
         { :controller => "api/traces", :action => "show", :id => "1" },
         { :path => "/api/0.6/gpx/1/details", :method => :get }
       )
-      assert_routing(
-        { :path => "/api/0.6/gpx/1/data", :method => :get },
-        { :controller => "api/traces", :action => "data", :id => "1" }
-      )
-      assert_routing(
-        { :path => "/api/0.6/gpx/1/data.xml", :method => :get },
-        { :controller => "api/traces", :action => "data", :id => "1", :format => "xml" }
-      )
     end
 
     # Check getting a specific trace through the api
@@ -93,91 +89,6 @@ module Api
       assert_response :not_found
     end
 
-    # Test downloading a trace through the api
-    def test_data
-      public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
-
-      # First with no auth
-      get api_trace_data_path(public_trace_file)
-      assert_response :unauthorized
-
-      # Now with some other user, which should work since the trace is public
-      auth_header = bearer_authorization_header
-      get api_trace_data_path(public_trace_file), :headers => auth_header
-      follow_redirect!
-      follow_redirect!
-      check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-
-      # And finally we should be able to do it with the owner of the trace
-      auth_header = bearer_authorization_header public_trace_file.user
-      get api_trace_data_path(public_trace_file), :headers => auth_header
-      follow_redirect!
-      follow_redirect!
-      check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-    end
-
-    # Test downloading a compressed trace through the api
-    def test_data_compressed
-      identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
-
-      # Authenticate as the owner of the trace we will be using
-      auth_header = bearer_authorization_header identifiable_trace_file.user
-
-      # First get the data as is
-      get api_trace_data_path(identifiable_trace_file), :headers => auth_header
-      follow_redirect!
-      follow_redirect!
-      check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
-
-      # Now ask explicitly for XML format
-      get api_trace_data_path(identifiable_trace_file, :format => "xml"), :headers => auth_header
-      check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
-
-      # Now ask explicitly for GPX format
-      get api_trace_data_path(identifiable_trace_file, :format => "gpx"), :headers => auth_header
-      check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
-    end
-
-    # Check an anonymous trace can't be downloaded by another user through the api
-    def test_data_anon
-      anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
-
-      # First with no auth
-      get api_trace_data_path(anon_trace_file)
-      assert_response :unauthorized
-
-      # Now with some other user, which shouldn't work since the trace is anon
-      auth_header = bearer_authorization_header
-      get api_trace_data_path(anon_trace_file), :headers => auth_header
-      assert_response :forbidden
-
-      # And finally we should be able to do it with the owner of the trace
-      auth_header = bearer_authorization_header anon_trace_file.user
-      get api_trace_data_path(anon_trace_file), :headers => auth_header
-      follow_redirect!
-      follow_redirect!
-      check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
-    end
-
-    # Test downloading a trace that doesn't exist through the api
-    def test_data_not_found
-      deleted_trace_file = create(:trace, :deleted)
-
-      # Try first with no auth, as it should require it
-      get api_trace_data_path(:id => 0)
-      assert_response :unauthorized
-
-      # Login, and try again
-      auth_header = bearer_authorization_header
-      get api_trace_data_path(:id => 0), :headers => auth_header
-      assert_response :not_found
-
-      # Now try a trace which did exist but has been deleted
-      auth_header = bearer_authorization_header deleted_trace_file.user
-      get api_trace_data_path(deleted_trace_file), :headers => auth_header
-      assert_response :not_found
-    end
-
     # Test creating a trace through the api
     def test_create
       # Get file to use
@@ -186,7 +97,7 @@ module Api
       user = create(:user)
 
       # First with no auth
-      post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }
+      post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }
       assert_response :unauthorized
 
       # Rewind the file
@@ -200,7 +111,7 @@ module Api
 
       # Create trace and import tracepoints in background job
       perform_enqueued_jobs do
-        post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }, :headers => auth_header
+        post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }, :headers => auth_header
       end
 
       assert_response :success
@@ -232,7 +143,7 @@ module Api
       # Now authenticated, with the legacy public flag
       assert_not_equal "public", user.preferences.find_by(:k => "gps.trace.visibility").v
       auth_header = bearer_authorization_header user
-      post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 1 }, :headers => auth_header
+      post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 1 }, :headers => auth_header
       assert_response :success
       trace = Trace.find(response.body.to_i)
       assert_equal "a.gpx", trace.name
@@ -251,7 +162,7 @@ module Api
       second_user = create(:user)
       assert_nil second_user.preferences.find_by(:k => "gps.trace.visibility")
       auth_header = bearer_authorization_header second_user
-      post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 0 }, :headers => auth_header
+      post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 0 }, :headers => auth_header
       assert_response :success
       trace = Trace.find(response.body.to_i)
       assert_equal "a.gpx", trace.name
@@ -354,13 +265,6 @@ module Api
 
     private
 
-    def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
-      assert_response :success
-      assert_equal digest, Digest::MD5.hexdigest(response.body)
-      assert_equal content_type, response.media_type
-      assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
-    end
-
     ##
     # build XML for traces
     # this builds a minimum viable XML for the tests in this suite
index 854f7cde5c717ef4c4e91ff19ee4633ed0557476..012bfd7f470877ebd340c2cdec4ec1cb5d4eb206 100644 (file)
@@ -102,6 +102,20 @@ class Oauth2AuthorizationsControllerTest < ActionDispatch::IntegrationTest
     assert_select "p", "The requested scope is invalid, unknown, or malformed."
   end
 
+  def test_new_db_readonly
+    application = create(:oauth_application, :scopes => "write_api")
+
+    session_for(create(:user))
+
+    with_settings(:status => "database_readonly") do
+      get oauth_authorization_path(:client_id => application.uid,
+                                   :redirect_uri => application.redirect_uri,
+                                   :response_type => "code",
+                                   :scope => "write_api")
+      assert_redirected_to offline_path
+    end
+  end
+
   def test_create
     application = create(:oauth_application, :scopes => "write_api")
 
index 81760fe5de54816a88b448dcdd6a47e3ea008a8e..1cd07b7d9f68a4adfaa6fc655215a80a21edceab 100644 (file)
@@ -22,6 +22,8 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
 
   def test_update_preferred_editor
     user = create(:user, :languages => [])
+    user.preferences.create(:k => "site.color_scheme", :v => "light")
+    user.preferences.create(:k => "map.color_scheme", :v => "light")
     session_for(user)
 
     # Changing to a invalid editor should fail
@@ -32,6 +34,8 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
     assert_select ".alert-success", false
     assert_select ".alert-danger", true
     assert_select "form > div > select#user_preferred_editor > option[selected]", false
+    assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+    assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
 
     # Changing to a valid editor should work
     user.preferred_editor = "id"
@@ -41,6 +45,8 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
     assert_template :show
     assert_select ".alert-success", /^Preferences updated/
     assert_select "dd", "iD (in-browser editor)"
+    assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+    assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
 
     # Changing to the default editor should work
     user.preferred_editor = "default"
@@ -50,5 +56,51 @@ class PreferencesControllerTest < ActionDispatch::IntegrationTest
     assert_template :show
     assert_select ".alert-success", /^Preferences updated/
     assert_select "dd", "Default (currently iD)"
+    assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+    assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
+  end
+
+  def test_update_preferred_site_color_scheme
+    user = create(:user, :languages => [])
+    session_for(user)
+    assert_nil user.preferences.find_by(:k => "site.color_scheme")
+
+    # Changing when previously not defined
+    put preferences_path, :params => { :user => user.attributes, :site_color_scheme => "light" }
+    assert_redirected_to preferences_path
+    follow_redirect!
+    assert_template :show
+    assert_select ".alert-success", /^Preferences updated/
+    assert_equal "light", user.preferences.find_by(:k => "site.color_scheme")&.v
+
+    # Changing when previously defined
+    put preferences_path, :params => { :user => user.attributes, :site_color_scheme => "auto" }
+    assert_redirected_to preferences_path
+    follow_redirect!
+    assert_template :show
+    assert_select ".alert-success", /^Preferences updated/
+    assert_equal "auto", user.preferences.find_by(:k => "site.color_scheme")&.v
+  end
+
+  def test_update_preferred_map_color_scheme
+    user = create(:user, :languages => [])
+    session_for(user)
+    assert_nil user.preferences.find_by(:k => "map.color_scheme")
+
+    # Changing when previously not defined
+    put preferences_path, :params => { :user => user.attributes, :map_color_scheme => "light" }
+    assert_redirected_to preferences_path
+    follow_redirect!
+    assert_template :show
+    assert_select ".alert-success", /^Preferences updated/
+    assert_equal "light", user.preferences.find_by(:k => "map.color_scheme")&.v
+
+    # Changing when previously defined
+    put preferences_path, :params => { :user => user.attributes, :map_color_scheme => "auto" }
+    assert_redirected_to preferences_path
+    follow_redirect!
+    assert_template :show
+    assert_select ".alert-success", /^Preferences updated/
+    assert_equal "auto", user.preferences.find_by(:k => "map.color_scheme")&.v
   end
 end
index 4cf0ab69ad3aab53863c4c2872ffda8a45a03073..4162223d1b88919b8b537f9e114499706f1b09a5 100644 (file)
@@ -66,7 +66,7 @@ class BrowseHelperTest < ActionView::TestCase
     assert_equal "<s>test</s>", deleted_output
   end
 
-  def test_element_class
+  def test_element_icon
     node = create(:node, :with_history, :version => 2)
     node_v1 = node.old_nodes.find_by(:version => 1)
     node_v2 = node.old_nodes.find_by(:version => 2)
@@ -76,60 +76,35 @@ class BrowseHelperTest < ActionView::TestCase
     add_old_tags_selection(node_v2)
     add_old_tags_selection(node_v1)
 
-    assert_equal "node", element_class("node", create(:node))
-    assert_equal "node", element_class("node", create(:node, :deleted))
-
-    assert_equal "node building yes shop gift tourism museum", element_class("node", node)
-    assert_equal "node building yes shop gift tourism museum", element_class("node", node_v2)
-    assert_equal "node", element_class("node", node_v1)
-  end
-
-  def test_element_title
-    node = create(:node, :with_history, :version => 2)
-    node_v1 = node.old_nodes.find_by(:version => 1)
-    node_v2 = node.old_nodes.find_by(:version => 2)
-    node_v1.redact!(create(:redaction))
-
-    add_tags_selection(node)
-    add_old_tags_selection(node_v2)
-    add_old_tags_selection(node_v1)
-
-    assert_equal "", element_title(create(:node))
-    assert_equal "", element_title(create(:node, :deleted))
-
-    assert_equal "building=yes, shop=gift, and tourism=museum", element_title(node)
-    assert_equal "building=yes, shop=gift, and tourism=museum", element_title(node_v2)
-    assert_equal "", element_title(node_v1)
-  end
-
-  def test_icon_tags
-    node = create(:node, :with_history, :version => 2)
-    node_v1 = node.old_nodes.find_by(:version => 1)
-    node_v2 = node.old_nodes.find_by(:version => 2)
-    node_v1.redact!(create(:redaction))
+    icon = element_icon("node", create(:node))
+    icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+    assert_dom icon_dom, "img:root", :count => 1 do
+      assert_dom "> @title", 0
+    end
 
-    add_tags_selection(node)
+    icon = element_icon("node", create(:node, :deleted))
+    icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+    assert_dom icon_dom, "img:root", :count => 1 do
+      assert_dom "> @title", 0
+    end
 
-    tags = icon_tags(node)
-    assert_equal 3, tags.count
-    assert_includes tags, %w[building yes]
-    assert_includes tags, %w[tourism museum]
-    assert_includes tags, %w[shop gift]
+    icon = element_icon("node", node)
+    icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+    assert_dom icon_dom, "img:root", :count => 1 do
+      assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
+    end
 
-    add_old_tags_selection(node_v2)
-    add_old_tags_selection(node_v1)
+    icon = element_icon("node", node_v2)
+    icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+    assert_dom icon_dom, "img:root", :count => 1 do
+      assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
+    end
 
-    tags = icon_tags(node_v2)
-    assert_equal 3, tags.count
-    assert_includes tags, %w[building yes]
-    assert_includes tags, %w[tourism museum]
-    assert_includes tags, %w[shop gift]
-
-    tags = icon_tags(node_v1)
-    assert_equal 3, tags.count
-    assert_includes tags, %w[building yes]
-    assert_includes tags, %w[tourism museum]
-    assert_includes tags, %w[shop gift]
+    icon = element_icon("node", node_v1)
+    icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+    assert_dom icon_dom, "img:root", :count => 1 do
+      assert_dom "> @title", 0
+    end
   end
 
   private
index 067c2b071e41711004ba62551a65debf73e12fc0..9f6c112b4bef8c9871a7600a95349116e4832035 100644 (file)
@@ -3,7 +3,10 @@ require "test_helper"
 class ChangesetsHelperTest < ActionView::TestCase
   def test_changeset_user_link
     changeset = create(:changeset)
-    assert_equal %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>), changeset_user_link(changeset)
+    changeset_user_link_dom = Rails::Dom::Testing.html_document_fragment.parse changeset_user_link(changeset)
+    assert_dom changeset_user_link_dom, "a:root", :text => changeset.user.display_name do
+      assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+    end
 
     changeset = create(:changeset, :user => create(:user, :data_public => false))
     assert_equal "anonymous", changeset_user_link(changeset)
@@ -16,12 +19,25 @@ class ChangesetsHelperTest < ActionView::TestCase
     changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :user => create(:user, :data_public => false))
     # We need to explicitly reset the closed_at to some point in the future, and avoid the before_save callback
     changeset.update_column(:closed_at, Time.now.utc + 1.day) # rubocop:disable Rails/SkipsModelValidations
-
-    assert_match %r{^Created <time title="Mon, 01 Jan 2007 00:00:00 \+0000" datetime="2007-01-01T00:00:00Z">.*</time> by anonymous$}, changeset_details(changeset)
+    changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+    assert_dom changeset_details_dom, ":root", :text => /^Created .* by anonymous$/ do
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "Mon, 01 Jan 2007 00:00:00 +0000"
+        assert_dom "> @datetime", "2007-01-01T00:00:00Z"
+      end
+      assert_dom "> a", :count => 0
+    end
 
     changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :closed_at => Time.utc(2007, 1, 2, 0, 0, 0))
-    user_link = %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>)
-
-    assert_match %r{^Closed <time title="Created: Mon, 01 Jan 2007 00:00:00 \+0000&#10;Closed: Tue, 02 Jan 2007 00:00:00 \+0000" datetime="2007-01-02T00:00:00Z">.*</time> by #{user_link}$}, changeset_details(changeset)
+    changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+    assert_dom changeset_details_dom, ":root", :text => /^Closed .* by #{changeset.user.display_name}$/ do
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "Created: Mon, 01 Jan 2007 00:00:00 +0000\nClosed: Tue, 02 Jan 2007 00:00:00 +0000"
+        assert_dom "> @datetime", "2007-01-02T00:00:00Z"
+      end
+      assert_dom "> a", :count => 1, :text => changeset.user.display_name do
+        assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+      end
+    end
   end
 end
index bee1cdc2c5485291cf52cdfb5d09e3b0520ee6cd..8b817369456fb0c253887890aa3810ff259cfa70 100644 (file)
@@ -8,8 +8,25 @@ class NoteHelperTest < ActionView::TestCase
     date = Time.utc(2014, 3, 5, 21, 37, 45)
     user = create(:user)
 
-    assert_match %r{^Created by anonymous <time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time>$}, note_event("opened", date, nil)
-    assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time>$}, note_event("closed", date, user)
+    note_event_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{note_event('opened', date, nil)}</div>"
+    assert_dom note_event_dom, ":root", :text => /^Created by anonymous .* ago$/ do
+      assert_dom "> a", :count => 0
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "5 March 2014 at 21:37"
+        assert_dom "> @datetime", "2014-03-05T21:37:45Z"
+      end
+    end
+
+    note_event_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{note_event('closed', date, user)}</div>"
+    assert_dom note_event_dom, ":root", :text => /^Resolved by #{user.display_name} .* ago$/ do
+      assert_dom "> a", :count => 1, :text => user.display_name do
+        assert_dom "> @href", "/user/#{ERB::Util.u(user.display_name)}"
+      end
+      assert_dom "> time", :count => 1 do
+        assert_dom "> @title", "5 March 2014 at 21:37"
+        assert_dom "> @datetime", "2014-03-05T21:37:45Z"
+      end
+    end
   end
 
   def test_note_author
@@ -17,8 +34,17 @@ class NoteHelperTest < ActionView::TestCase
     user = create(:user)
 
     assert_equal "", note_author(nil)
+
     assert_equal "deleted", note_author(deleted_user)
-    assert_equal "<a href=\"/user/#{ERB::Util.u(user.display_name)}\">#{user.display_name}</a>", note_author(user)
-    assert_equal "<a href=\"http://test.host/user/#{ERB::Util.u(user.display_name)}\">#{user.display_name}</a>", note_author(user, :only_path => false)
+
+    note_author_dom = Rails::Dom::Testing.html_document_fragment.parse note_author(user)
+    assert_dom note_author_dom, "a:root", :text => user.display_name do
+      assert_dom "> @href", "/user/#{ERB::Util.u(user.display_name)}"
+    end
+
+    note_author_dom = Rails::Dom::Testing.html_document_fragment.parse note_author(user, :only_path => false)
+    assert_dom note_author_dom, "a:root", :text => user.display_name do
+      assert_dom "> @href", "http://test.host/user/#{ERB::Util.u(user.display_name)}"
+    end
   end
 end
diff --git a/test/system/create_note_test.rb b/test/system/create_note_test.rb
new file mode 100644 (file)
index 0000000..ccb2ed3
--- /dev/null
@@ -0,0 +1,23 @@
+require "application_system_test_case"
+
+class CreateNoteTest < ApplicationSystemTestCase
+  test "can create note" do
+    visit new_note_path(:anchor => "map=18/0/0")
+
+    assert_button "Add Note", :disabled => true
+
+    fill_in "text", :with => "Some newly added note description"
+    click_on "Add Note"
+
+    assert_content "Unresolved note ##{Note.last.id}"
+    assert_content "Some newly added note description"
+  end
+
+  test "cannot create note when api is readonly" do
+    with_settings(:status => "api_readonly") do
+      visit new_note_path(:anchor => "map=18/0/0")
+
+      assert_no_button "Add Note", :disabled => true
+    end
+  end
+end
index 7c830cc373c5d4955f42888216a52b1c5e672942..0577992f277432f631f36e13358f8fc78daaf5ee 100644 (file)
@@ -22,7 +22,7 @@ class NoteCommentsTest < ApplicationSystemTestCase
     end
   end
 
-  def test_add_comment
+  test "can add comment" do
     note = create(:note_with_comments)
     user = create(:user)
     sign_in_as(user)
@@ -125,4 +125,49 @@ class NoteCommentsTest < ApplicationSystemTestCase
       assert_button "Reactivate", :disabled => false
     end
   end
+
+  test "no subscribe button when not logged in" do
+    note = create(:note_with_comments)
+    visit note_path(note)
+
+    within_sidebar do
+      assert_no_button "Subscribe"
+      assert_no_button "Unsubscribe"
+    end
+  end
+
+  test "can subscribe" do
+    note = create(:note_with_comments)
+    user = create(:user)
+    sign_in_as(user)
+    visit note_path(note)
+
+    within_sidebar do
+      assert_button "Subscribe"
+      assert_no_button "Unsubscribe"
+
+      click_on "Subscribe"
+
+      assert_no_button "Subscribe"
+      assert_button "Unsubscribe"
+    end
+  end
+
+  test "can unsubscribe" do
+    note = create(:note_with_comments)
+    user = create(:user)
+    create(:note_subscription, :note => note, :user => user)
+    sign_in_as(user)
+    visit note_path(note)
+
+    within_sidebar do
+      assert_no_button "Subscribe"
+      assert_button "Unsubscribe"
+
+      click_on "Unsubscribe"
+
+      assert_button "Subscribe"
+      assert_no_button "Unsubscribe"
+    end
+  end
 end
index 4e40de8d5e95ebadbffcb24151b96e1795d94109..28ca8971fe9c6b6b5ee0a3d3e8c5cd133aac42fd 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@9.15.0":
-  version "9.15.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5"
-  integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==
+"@eslint/js@9.17.0":
+  version "9.17.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec"
+  integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==
 
 "@eslint/object-schema@^2.1.4":
   version "2.1.4"
@@ -189,10 +189,10 @@ concat-map@0.0.1:
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
-cross-spawn@^7.0.5:
-  version "7.0.5"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82"
-  integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==
+cross-spawn@^7.0.6:
+  version "7.0.6"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
+  integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
   dependencies:
     path-key "^3.1.0"
     shebang-command "^2.0.0"
@@ -265,16 +265,16 @@ eslint-visitor-keys@^4.2.0:
   integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
 
 eslint@^9.0.0:
-  version "9.15.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.15.0.tgz#77c684a4e980e82135ebff8ee8f0a9106ce6b8a6"
-  integrity sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==
+  version "9.17.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c"
+  integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.12.1"
     "@eslint/config-array" "^0.19.0"
     "@eslint/core" "^0.9.0"
     "@eslint/eslintrc" "^3.2.0"
-    "@eslint/js" "9.15.0"
+    "@eslint/js" "9.17.0"
     "@eslint/plugin-kit" "^0.2.3"
     "@humanfs/node" "^0.16.6"
     "@humanwhocodes/module-importer" "^1.0.1"
@@ -283,7 +283,7 @@ eslint@^9.0.0:
     "@types/json-schema" "^7.0.15"
     ajv "^6.12.4"
     chalk "^4.0.0"
-    cross-spawn "^7.0.5"
+    cross-spawn "^7.0.6"
     debug "^4.3.2"
     escape-string-regexp "^4.0.0"
     eslint-scope "^8.2.0"
@@ -583,9 +583,9 @@ optionator@^0.9.3:
     type-check "^0.4.0"
 
 osm-community-index@^5.2.0:
-  version "5.8.0"
-  resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.8.0.tgz#59fbf71ab9f359b307fcd0415fbce6f43dda94f6"
-  integrity sha512-7hg+D7u2vooujuihGTgKWDYjPUidlWuTjBrMP/drsHP/cVJI94ehsDulNkcKH0Od05n6vBl/ZyJJjdJvqcrMaA==
+  version "5.9.0"
+  resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.9.0.tgz#cf70a560baca5ec029cd16eecab8c2aa84d6bbc2"
+  integrity sha512-/P09ig/iCtD17AvmihBcvz6617c1NCJkqNNk3G6veY4MBWH6Djhl+xz69FLOGy8Xt4jHV57zP1PU6UATqby5aQ==
   dependencies:
     diacritics "^1.3.0"