]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5694'
authorTom Hughes <tom@compton.nu>
Thu, 20 Feb 2025 22:08:02 +0000 (22:08 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 20 Feb 2025 22:08:02 +0000 (22:08 +0000)
180 files changed:
.github/workflows/danger.yml
.github/workflows/docker.yml
.github/workflows/lint.yml
.github/workflows/tests.yml
.overcommit.yml
.rubocop.yml
.rubocop_todo.yml
.vscode/settings.json
Gemfile.lock
app/abilities/ability.rb
app/abilities/api_ability.rb
app/assets/javascripts/edit/id.js.erb
app/assets/javascripts/index.js
app/assets/javascripts/index/directions.js
app/assets/javascripts/index/search.js
app/assets/stylesheets/common.scss
app/controllers/accounts/pd_declarations_controller.rb
app/controllers/accounts/terms_controller.rb
app/controllers/accounts_controller.rb
app/controllers/api/old_elements/redactions_controller.rb [new file with mode: 0644]
app/controllers/api/old_elements_controller.rb
app/controllers/api/old_nodes/redactions_controller.rb [new file with mode: 0644]
app/controllers/api/old_relations/redactions_controller.rb [new file with mode: 0644]
app/controllers/api/old_ways/redactions_controller.rb [new file with mode: 0644]
app/controllers/confirmations_controller.rb
app/controllers/dashboards_controller.rb
app/controllers/reports_controller.rb
app/controllers/user_mutes_controller.rb
app/controllers/users_controller.rb
app/models/user.rb
app/views/accounts/deletions/show.html.erb
app/views/accounts/show.html.erb [moved from app/views/accounts/edit.html.erb with 100% similarity]
app/views/application/_auth_providers.html.erb
app/views/application/_settings_menu.html.erb
app/views/dashboards/_contact.html.erb
app/views/dashboards/show.html.erb
app/views/layouts/_header.html.erb
app/views/site/_id.html.erb
app/views/site/_not_public_flash.erb
app/views/users/show.html.erb
config/eslint.config.mjs [moved from config/eslint.js with 94% similarity]
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/gu.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/ksh.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/my.yml
config/locales/nb.yml
config/locales/nds.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/ps.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-HK.yml
config/locales/zh-TW.yml
config/routes.rb
lib/osm.rb
lib/rich_text.rb
lib/short_link.rb
lib/tasks/eslint.rake
package.json
test/application_system_test_case.rb
test/controllers/accounts/pd_declarations_controller_test.rb
test/controllers/accounts/terms_controller_test.rb
test/controllers/accounts_controller_test.rb
test/controllers/api/changeset_comments_controller_test.rb
test/controllers/api/changesets_controller_test.rb
test/controllers/api/notes_controller_test.rb
test/controllers/api/old_nodes/redactions_controller_test.rb [new file with mode: 0644]
test/controllers/api/old_nodes_controller_test.rb
test/controllers/api/old_redactions/redactions_controller_test.rb [new file with mode: 0644]
test/controllers/api/old_relations_controller_test.rb
test/controllers/api/old_ways/redactions_controller_test.rb [new file with mode: 0644]
test/controllers/api/old_ways_controller_test.rb
test/controllers/api/relations_controller_test.rb
test/controllers/confirmations_controller_test.rb
test/controllers/dashboards_controller_test.rb
test/controllers/diary_comments_controller_test.rb
test/controllers/follows_controller_test.rb
test/controllers/messages_controller_test.rb
test/controllers/passwords_controller_test.rb
test/controllers/reports_controller_test.rb
test/controllers/users_controller_test.rb
test/integration/user_creation_test.rb
test/system/account_deletion_test.rb
test/system/browse_comment_links_test.rb [new file with mode: 0644]
test/system/user_email_change_test.rb
test/system/user_muting_test.rb
test/system/user_suspension_test.rb
yarn.lock

index 6da5e716496d05c62300b13654a44f22bbd74905..66c2aca5113f870efe89bfbb72290a4d3e032dac 100644 (file)
@@ -10,7 +10,7 @@ permissions:
 
 jobs:
   danger:
-    runs-on: ubuntu-22.04
+    runs-on: ubuntu-latest
     steps:
       - name: Check out code
         uses: actions/checkout@v4
index 771d307cfe8d412631548f0ebec2a629fe46b897..8d0e9f615fd111c02981fb95720d4c4443e09b46 100644 (file)
@@ -8,7 +8,7 @@ concurrency:
 jobs:
   test:
     name: Docker
-    runs-on: ubuntu-22.04
+    runs-on: ubuntu-latest
     steps:
     - name: Checkout source
       uses: actions/checkout@v4
index 06f6ff841bbf7c32b274beb973af64adf7f641a4..8383068b3f08d9e8893a1692334f51f55f254cdd 100644 (file)
@@ -6,12 +6,11 @@ concurrency:
   group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
   cancel-in-progress: true
 env:
-  os: ubuntu-22.04
   ruby: '3.1'
 jobs:
   rubocop:
     name: RuboCop
-    runs-on: ubuntu-22.04
+    runs-on: ubuntu-latest
     steps:
     - name: Check out code
       uses: actions/checkout@v4
@@ -50,12 +49,9 @@ jobs:
         rubygems: 3.4.10
         bundler-cache: true
     - name: Cache node modules
-      uses: actions/cache@v4
+      uses: actions/setup-node@v4
       with:
-        path: node_modules
-        key: yarn-${{ env.os }}-${{ hashFiles('yarn.lock') }}
-        restore-keys: |
-          yarn-${{ env.os }}-
+        cache: yarn
     - name: Install node modules
       run: bundle exec bin/yarn install
     - name: Create dummy database configuration
index bfeb3d33abba3a2118d1597a277559339b9d2a66..d1cf73eaefc7d239a7fe5af072007ee702f3d236 100644 (file)
@@ -7,12 +7,11 @@ concurrency:
   cancel-in-progress: true
 jobs:
   test:
-    name: Ubuntu ${{ matrix.ubuntu }}, Ruby ${{ matrix.ruby }}
+    name: Ruby ${{ matrix.ruby }}
     strategy:
       matrix:
-        ubuntu: [22.04, 24.04]
-        ruby: ['3.1', '3.2', '3.3']
-    runs-on: ubuntu-${{ matrix.ubuntu }}
+        ruby: ['3.1', '3.2', '3.3', '3.4']
+    runs-on: ubuntu-latest
     env:
       RAILS_ENV: test
       OPENSTREETMAP_MEMCACHE_SERVERS: 127.0.0.1
@@ -26,12 +25,9 @@ jobs:
         rubygems: 3.4.10
         bundler-cache: true
     - name: Cache node modules
-      uses: actions/cache@v4
+      uses: actions/setup-node@v4
       with:
-        path: node_modules
-        key: yarn-ubuntu-${{ matrix.ubuntu }}-${{ hashFiles('yarn.lock') }}
-        restore-keys: |
-          yarn-ubuntu-${{ matrix.ubuntu }}-
+        cache: yarn
     - name: Install packages
       run: |
         sudo apt-get -yqq update
@@ -68,7 +64,7 @@ jobs:
       uses: coverallsapp/github-action@v2.3.6
       with:
         github-token: ${{ secrets.github_token }}
-        flag-name: ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}
+        flag-name: ruby-${{ matrix.ruby }}
         format: lcov
         parallel: true
   finish:
index eab8eb2ae90e02dff71964c8710457473be82439..18bd5851f4526d8850cd736180fd80c027cfcdaa 100644 (file)
@@ -22,7 +22,7 @@ PreCommit:
     enabled: true
   EsLint:
     enabled: true
-    command: ["bin/yarn", "eslint", "-c", "config/eslint.js"]
+    command: ["bin/yarn", "eslint", "-c", "config/eslint.config.mjs"]
     exclude:
       - vendor/**/*.js
   RailsSchemaUpToDate:
index 946dace609ffb24bde6534426a7f7e4b37397f1c..eedbf47e0d341311dc2abd723cef53a1ef5b803b 100644 (file)
@@ -1,12 +1,14 @@
 inherit_from: .rubocop_todo.yml
 
-require:
-  - rubocop-capybara
-  - rubocop-factory_bot
+plugins:
   - rubocop-minitest
   - rubocop-performance
   - rubocop-rails
   - rubocop-rake
+
+require:
+  - rubocop-capybara
+  - rubocop-factory_bot
   - ./.rubocop/specific_action_names.rb
 
 AllCops:
@@ -130,7 +132,6 @@ Rails/SpecificActionNames:
     - 'app/controllers/api/changeset_comments_controller.rb'
     - 'app/controllers/api/changesets_controller.rb'
     - 'app/controllers/api/notes_controller.rb'
-    - 'app/controllers/api/old_elements_controller.rb'
     - 'app/controllers/api/user_preferences_controller.rb'
     - 'app/controllers/api/users_controller.rb'
     - 'app/controllers/browse_controller.rb'
index 3d7cea500fec5826176e028bf5e13d19ec0ae79a..a60cd94428a3c45e8291299455fd275e8e409374 100644 (file)
@@ -6,14 +6,6 @@
 # Note that changes in the inspected code, or installation of new
 # versions of RuboCop, may require this file to be generated again.
 
-# Work around erblint issues.
-# https://github.com/openstreetmap/openstreetmap-website/issues/2472
-require:
-  - rubocop-minitest
-  - rubocop-performance
-  - rubocop-rails
-  - rubocop-rake
-
 # Offense count: 13
 # Configuration parameters: Include, MaxAmount.
 # Include: **/*_spec.rb, **/spec/**/*, **/test/**/*, **/features/support/factories/**/*.rb
index 8a3d341d48ce67d2541e9255b90bc5d7b6c18729..3545f07279b2b802c2be21b034336862152aa504 100644 (file)
@@ -1,5 +1,5 @@
 {
   "eslint.options": {
-    "overrideConfigFile": "config/eslint.js"
+    "overrideConfigFile": "config/eslint.config.mjs"
   }
 }
index 0ca767c00a12e851e429b91aa2bafc4f515be6f5..c5f6f4b796538c69d49992ce0037c41db4c16b0a 100644 (file)
@@ -92,7 +92,7 @@ GEM
     autoprefixer-rails (10.4.19.0)
       execjs (~> 2)
     aws-eventstream (1.3.1)
-    aws-partitions (1.1050.0)
+    aws-partitions (1.1051.0)
     aws-sdk-core (3.218.1)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.992.0)
@@ -399,7 +399,7 @@ GEM
     net-smtp (0.5.1)
       net-protocol
     nio4r (2.7.4)
-    nokogiri (1.18.2)
+    nokogiri (1.18.3)
       mini_portile2 (~> 2.8.2)
       racc (~> 1.4)
     oauth (1.1.0)
@@ -456,7 +456,7 @@ GEM
     open4 (1.3.4)
     openstreetmap-deadlock_retry (1.3.1)
     ostruct (0.6.1)
-    overcommit (0.66.0)
+    overcommit (0.67.0)
       childprocess (>= 0.6.3, < 6)
       iniparse (~> 1.4)
       rexml (>= 3.3.9)
@@ -548,13 +548,13 @@ GEM
       io-console (~> 0.5)
     request_store (1.7.0)
       rack (>= 1.4)
-    rexml (3.4.0)
+    rexml (3.4.1)
     rinku (2.0.6)
     rotp (6.3.0)
     rouge (4.5.1)
     rtlcss (0.2.1)
       mini_racer (>= 0.6.3)
-    rubocop (1.72.0)
+    rubocop (1.72.2)
       json (~> 2.3)
       language_server-protocol (~> 3.17.0.2)
       lint_roller (~> 1.1.0)
@@ -571,19 +571,23 @@ GEM
       rubocop (~> 1.41)
     rubocop-factory_bot (2.26.1)
       rubocop (~> 1.61)
-    rubocop-minitest (0.36.0)
-      rubocop (>= 1.61, < 2.0)
-      rubocop-ast (>= 1.31.1, < 2.0)
-    rubocop-performance (1.23.1)
-      rubocop (>= 1.48.1, < 2.0)
-      rubocop-ast (>= 1.31.1, < 2.0)
-    rubocop-rails (2.29.1)
+    rubocop-minitest (0.37.1)
+      lint_roller (~> 1.1)
+      rubocop (>= 1.72.1, < 2.0)
+      rubocop-ast (>= 1.38.0, < 2.0)
+    rubocop-performance (1.24.0)
+      lint_roller (~> 1.1)
+      rubocop (>= 1.72.1, < 2.0)
+      rubocop-ast (>= 1.38.0, < 2.0)
+    rubocop-rails (2.30.1)
       activesupport (>= 4.2.0)
+      lint_roller (~> 1.1)
       rack (>= 1.1)
-      rubocop (>= 1.52.0, < 2.0)
-      rubocop-ast (>= 1.31.1, < 2.0)
-    rubocop-rake (0.6.0)
-      rubocop (~> 1.0)
+      rubocop (>= 1.72.1, < 2.0)
+      rubocop-ast (>= 1.38.0, < 2.0)
+    rubocop-rake (0.7.1)
+      lint_roller (~> 1.1)
+      rubocop (>= 1.72.1)
     ruby-openid (2.9.2)
     ruby-progressbar (1.13.0)
     ruby-vips (2.2.3)
index dd377a727c817d275fa97d5339aef32904c178ab..7f47b578cb5f9bffb2e8b5805f1a591c8acd2322 100644 (file)
@@ -36,7 +36,7 @@ class Ability
         can [:read, :create, :update, :destroy], :oauth2_application
         can [:read, :destroy], :oauth2_authorized_application
         can [:read, :create, :destroy], :oauth2_authorization
-        can [:update, :destroy], :account
+        can [:read, :update, :destroy], :account
         can :update, :account_terms
         can :create, :account_pd_declaration
         can :read, :dashboard
index acacec049af1f20f6372c3a008945961fdda6c29..edf051faeb8f324b1a1767bbafeff07149dd222b 100644 (file)
@@ -44,7 +44,7 @@ class ApiAbility
 
           can :destroy, Note if scopes.include?("write_notes")
 
-          can :redact, [OldNode, OldWay, OldRelation] if user.terms_agreed? && scopes.include?("write_redactions")
+          can [:create, :destroy], :element_version_redaction if user.terms_agreed? && scopes.include?("write_redactions")
 
           can :create, UserBlock if scopes.include?("write_blocks")
         end
index 7c907ed3a3496d2419179de705791c5f2182f740..c53d5e382a1422b3f3b01b5f5857d7cd8f9dd700 100644 (file)
@@ -13,15 +13,18 @@ $(document).ready(function () {
   const hashArgs = OSM.parseHash(location.hash);
   const mapParams = OSM.mapParams();
   const params = new URLSearchParams();
-  let { zoom, lat, lon } = mapParams;
+  let zoom, lat, lon;
 
+  if (idData.lat && idData.lon) {
+    ({ zoom, lat, lon } = idData);
+  } else if (!mapParams.object) {
+    ({ zoom, lat, lon } = mapParams);
+  }
   if (mapParams.object) {
     params.set("id", mapParams.object.type + "/" + mapParams.object.id);
     if (hashArgs.center) ({ zoom, center: { lat, lng: lon } } = hashArgs);
-  } else if (idData.lat && idData.lon) {
-    ({ zoom, lat, lon } = { zoom: 16, ...idData });
   }
-  params.set("map", [zoom || 17, lat, lon].join("/"));
+  if (lat && lon) params.set("map", [zoom || 17, lat, lon].join("/"));
 
   const passThroughKeys = ["background", "comment", "disable_features", "gpx", "hashtags", "locale", "maprules", "notes", "offset", "photo", "photo_dates", "photo_overlay", "photo_username", "presets", "source", "validationDisable", "validationWarning", "validationError", "walkthrough"];
   for (const key of passThroughKeys) {
index 0fa85a0cc09295177fa1a7d3b8c9a62e742c61b4..96870f600869ab92c99a550820eeaecf499edebc 100644 (file)
@@ -236,20 +236,20 @@ $(document).ready(function () {
           });
 
     if (object && object.type !== "note") query.set("select", object.type + object.id); // can't select notes
-    sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + query, function () {
-      if (object && object.type === "note") {
-        const noteQuery = new URLSearchParams({ url: osmHost + OSM.apiUrl(object) });
-        sendRemoteEditCommand(remoteEditHost + "/import?" + noteQuery);
-      }
-    });
+    sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + query)
+      .then(() => {
+        if (object && object.type === "note") {
+          const noteQuery = new URLSearchParams({ url: osmHost + OSM.apiUrl(object) });
+          sendRemoteEditCommand(remoteEditHost + "/import?" + noteQuery);
+        }
+      })
+      .catch(() => {
+        // eslint-disable-next-line no-alert
+        alert(I18n.t("site.index.remote_failed"));
+      });
 
-    function sendRemoteEditCommand(url, callback) {
-      fetch(url, { mode: "no-cors", signal: AbortSignal.timeout(5000) })
-        .then(callback)
-        .catch(function () {
-          // eslint-disable-next-line no-alert
-          alert(I18n.t("site.index.remote_failed"));
-        });
+    function sendRemoteEditCommand(url) {
+      return fetch(url, { mode: "no-cors", signal: AbortSignal.timeout(5000) });
     }
 
     return false;
index c472108ae105167de7430db26a3face52021708a..3d52ec9fb6b19a853e768f1bf3575d62f4db7e23 100644 (file)
@@ -75,8 +75,8 @@ OSM.Directions = function (map) {
 
   $(".directions_form .btn-close").on("click", function (e) {
     e.preventDefault();
-    $(".describe_location").toggle(!endpoints[0].value);
-    $(".search_form input[name='query']").val(endpoints[0].value);
+    $(".describe_location").toggle(!endpoints[1].value);
+    $(".search_form input[name='query']").val(endpoints[1].value);
     OSM.router.route("/" + OSM.formatHash(map));
   });
 
index 42294576b7bb0fba584a1c181107b9c66f06db7a..b33d904a97613ca3c5369bfa453a9b3b3de9eb44 100644 (file)
@@ -11,7 +11,7 @@ OSM.Search = function (map) {
     e.preventDefault();
     const query = $(this).closest("form").find("input[name=query]").val();
     let search = "";
-    if (query) search = "?" + new URLSearchParams({ from: query });
+    if (query) search = "?" + new URLSearchParams({ to: query });
     OSM.router.route("/directions" + search + OSM.formatHash(map));
   });
 
index a27976854f99dc90af33a7878e326ccdff9413f8..c1728f870220b78a4229a10a9fc2b118d0d14fe0 100644 (file)
@@ -233,6 +233,7 @@ body.small-nav {
 
     > ul {
       height: auto;
+      justify-content: center;
     }
 
     .user-menu, .login-menu {
index 2d2569d62b0adb342a50ce35f53289745b4d3652..4a636a8880c76275f598ecc6e740a05e35008850 100644 (file)
@@ -22,7 +22,7 @@ module Accounts
         end
       end
 
-      redirect_to edit_account_path
+      redirect_to account_path
     end
   end
 end
index 03007a5323f6788152d37eeb43eff5aa40a9dde0..568abcdb96d84a8ab74360c237c0084a71616680 100644 (file)
@@ -21,7 +21,7 @@ module Accounts
 
         if current_user.terms_agreed?
           # Already agreed to terms, so just show settings
-          redirect_to edit_account_path
+          redirect_to account_path
         end
       end
     end
@@ -43,7 +43,7 @@ module Accounts
 
       referer = safe_referer(params[:referer]) if params[:referer]
 
-      redirect_to referer || edit_account_path
+      redirect_to referer || account_path
     end
   end
 end
index d02943640147a37476832d74fed15a107a314af2..e2a82c20edc154b8c4c4aa625ac583e153d8be2c 100644 (file)
@@ -12,10 +12,10 @@ class AccountsController < ApplicationController
   before_action :check_database_readable
   before_action :check_database_writable, :only => [:update]
 
-  allow_thirdparty_images :only => [:edit, :update]
-  allow_social_login :only => [:edit, :update]
+  allow_thirdparty_images :only => [:show, :update]
+  allow_social_login :only => [:show, :update]
 
-  def edit
+  def show
     if errors = session.delete(:user_errors)
       errors.each do |attribute, error|
         current_user.errors.add(attribute, error)
@@ -32,9 +32,9 @@ class AccountsController < ApplicationController
         params[:user][:auth_uid] == current_user.auth_uid)
       update_user(current_user, user_params)
       if current_user.errors.empty?
-        redirect_to edit_account_path
+        redirect_to account_path
       else
-        render :edit
+        render :show
       end
     else
       session[:new_user_settings] = user_params.to_h
diff --git a/app/controllers/api/old_elements/redactions_controller.rb b/app/controllers/api/old_elements/redactions_controller.rb
new file mode 100644 (file)
index 0000000..0213158
--- /dev/null
@@ -0,0 +1,31 @@
+module Api
+  module OldElements
+    class RedactionsController < ApiController
+      before_action :check_api_writable
+      before_action :authorize
+
+      authorize_resource :class => :element_version_redaction
+
+      before_action :lookup_old_element
+
+      def create
+        redaction_id = params["redaction"]
+        if redaction_id
+          redaction = Redaction.find(redaction_id.to_i)
+          @old_element.redact!(redaction)
+          head :ok
+        elsif params["allow_delete"]
+          # legacy unredact if no redaction ID was provided for /api/0.6/:element_type/:id/:version/redact paths mapped here
+          destroy
+        else
+          raise OSM::APIBadUserInput, "No redaction was given" unless redaction_id
+        end
+      end
+
+      def destroy
+        @old_element.redact!(nil)
+        head :ok
+      end
+    end
+  end
+end
index bdbc5e392e21dd00409b5f93dc3494e00f7de334..8e29e245c4245f34ef758fdf22c42ec0dfd44e66 100644 (file)
@@ -3,16 +3,14 @@
 # nodes, ways and relations are basically identical.
 module Api
   class OldElementsController < ApiController
-    before_action :check_api_writable, :only => [:redact]
-    before_action :setup_user_auth, :only => [:index, :show]
-    before_action :authorize, :only => [:redact]
+    before_action :setup_user_auth
 
     authorize_resource
 
     before_action :lookup_old_element, :except => [:index]
     before_action :lookup_old_element_versions, :only => [:index]
 
-    before_action :set_request_formats, :except => [:redact]
+    before_action :set_request_formats
 
     def index
       # the .where() method used in the lookup_old_element_versions
@@ -49,23 +47,6 @@ module Api
       end
     end
 
-    def redact
-      redaction_id = params["redaction"]
-      if redaction_id.nil?
-        # if no redaction ID was provided, then this is an unredact
-        # operation.
-        @old_element.redact!(nil)
-      else
-        # if a redaction ID was specified, then set this element to
-        # be redacted in that redaction.
-        redaction = Redaction.find(redaction_id.to_i)
-        @old_element.redact!(redaction)
-      end
-
-      # just return an empty 200 OK for success
-      head :ok
-    end
-
     private
 
     def show_redactions?
diff --git a/app/controllers/api/old_nodes/redactions_controller.rb b/app/controllers/api/old_nodes/redactions_controller.rb
new file mode 100644 (file)
index 0000000..037c3ae
--- /dev/null
@@ -0,0 +1,11 @@
+module Api
+  module OldNodes
+    class RedactionsController < OldElements::RedactionsController
+      private
+
+      def lookup_old_element
+        @old_element = OldNode.find([params[:node_id], params[:version]])
+      end
+    end
+  end
+end
diff --git a/app/controllers/api/old_relations/redactions_controller.rb b/app/controllers/api/old_relations/redactions_controller.rb
new file mode 100644 (file)
index 0000000..bfdf66f
--- /dev/null
@@ -0,0 +1,11 @@
+module Api
+  module OldRelations
+    class RedactionsController < OldElements::RedactionsController
+      private
+
+      def lookup_old_element
+        @old_element = OldRelation.find([params[:relation_id], params[:version]])
+      end
+    end
+  end
+end
diff --git a/app/controllers/api/old_ways/redactions_controller.rb b/app/controllers/api/old_ways/redactions_controller.rb
new file mode 100644 (file)
index 0000000..781d6ad
--- /dev/null
@@ -0,0 +1,11 @@
+module Api
+  module OldWays
+    class RedactionsController < OldElements::RedactionsController
+      private
+
+      def lookup_old_element
+        @old_element = OldWay.find([params[:way_id], params[:version]])
+      end
+    end
+  end
+end
index 72c1955e039ebf225f862752dff681b978fc2e78..27f2c949ebae500426aa1a7b76474382236faf43 100644 (file)
@@ -91,7 +91,7 @@ class ConfirmationsController < ApplicationController
         flash[:error] = t ".unknown_token"
       end
 
-      redirect_to edit_account_path
+      redirect_to account_path
     end
   end
 
index 540683d25ea0e89c2ed63b55f8d7949d5cdbfe9d..cb73cc38f35baaa76214ca5f15c19d12c400140d 100644 (file)
@@ -9,6 +9,7 @@ class DashboardsController < ApplicationController
   before_action :check_database_readable
 
   def show
-    @user = current_user
+    @followings = current_user.followings
+    @nearby_users = current_user.nearby - @followings
   end
 end
index 5c70d970408f595411fd70c097c8c389ddd7e933..e2ec400a57665ba92483cfefc3ebde36007878b9 100644 (file)
@@ -29,6 +29,8 @@ class ReportsController < ApplicationController
       @report.issue.reopen unless @report.issue.open?
       @report.issue.save!
 
+      @report.issue.reported_user&.spam_check
+
       redirect_to helpers.reportable_url(@report.issue.reportable), :notice => t(".successful_report")
     else
       flash.now[:notice] = t(".provide_details")
index 2068ab6a33bcf531e58068a7a04cf790edf904d9..dfd89083e10228d3972fa3276e09b62f4a5fa39a 100644 (file)
@@ -16,7 +16,7 @@ class UserMutesController < ApplicationController
     @muted_users = current_user.muted_users
     @title = t ".title"
 
-    redirect_to edit_account_path unless @muted_users.any?
+    redirect_to account_path unless @muted_users.any?
   end
 
   def create
index 0df971bd4f39dd55d2f1eba2307143a41f2aae5a..7f6619eab664f4b08dd9836fbee1b165b73dc125 100644 (file)
@@ -101,7 +101,7 @@ class UsersController < ApplicationController
     current_user.data_public = true
     current_user.save
     flash[:notice] = t ".flash success"
-    redirect_to edit_account_path
+    redirect_to account_path
   end
 
   ##
@@ -135,7 +135,7 @@ class UsersController < ApplicationController
 
       session[:user_errors] = current_user.errors.as_json
 
-      redirect_to edit_account_path
+      redirect_to account_path
     else
       user = User.find_by(:auth_provider => provider, :auth_uid => uid)
 
index 21fe2181b20abe9bfce7b196699d6fc368aca722..8d061e26bb626cd7c1a42fe9d6c6fb8e72e044fe 100644 (file)
@@ -359,7 +359,7 @@ class User < ApplicationRecord
     trace_score = traces.size * 50
     diary_entry_score = diary_entries.visible.inject(0) { |acc, elem| acc + elem.body.spam_score }
     diary_comment_score = diary_comments.visible.inject(0) { |acc, elem| acc + elem.body.spam_score }
-    report_score = Report.where(:category => "spam", :issue => issues.with_status("open")).count * 20
+    report_score = Report.where(:category => "spam", :issue => issues.with_status("open")).distinct.count(:user_id) * 20
 
     score = description.spam_score / 4.0
     score += diary_entries.visible.where("created_at > ?", 1.day.ago).count * 10
index 9b9b0f182ccd88caae6844096ce887594294c257..5a22aa67b8097decd63eceb2565e057fc3d49162 100644 (file)
@@ -40,4 +40,4 @@
   <button class="btn btn-secondary" disabled><%= t(".delete_account") %></button>
 <% end %>
 
-<%= link_to t(".cancel"), edit_account_path, :class => "btn btn-link" %>
+<%= link_to t(".cancel"), account_path, :class => "btn btn-link" %>
index 3edc6edd2476d9a8fd195867f7d01b832c7f29eb..221e704728491b456ffca127e503de559b390b15 100644 (file)
@@ -37,7 +37,7 @@
       </label>
       <%= hidden_field_tag("referer", params[:referer], :autocomplete => "off") %>
       <%= text_field_tag("openid_url", "https://", :tabindex => 20, :autocomplete => "on", :class => "form-control") %>
-      <span class="form-text text-body-secondary">(<a href="<%= t "accounts.edit.openid.link" %>" target="_new"><%= t "accounts.edit.openid.link text" %></a>)</span>
+      <span class="form-text text-body-secondary">(<a href="<%= t "accounts.show.openid.link" %>" target="_new"><%= t "accounts.show.openid.link text" %></a>)</span>
     </div>
 
     <%= submit_tag t(".openid_login_button"), :tabindex => 21, :class => "btn btn-primary" %>
index 14f1c2927b69321afd10fa6942bff48cf28a2e4f..a0d3c0ad4cd597cb1ef8d940fae4ae1560510188 100644 (file)
@@ -3,7 +3,7 @@
 <% content_for :heading do %>
   <ul class="nav nav-tabs flex-column flex-sm-row">
     <li class="nav-item">
-      <%= link_to t(".account_settings"), edit_account_path, :class => "nav-link #{'active' if %w[accounts deletions].include?(controller_name)}" %>
+      <%= link_to t(".account_settings"), account_path, :class => "nav-link #{'active' if %w[accounts deletions].include?(controller_name)}" %>
     </li>
     <li class="nav-item">
       <%= link_to t(".oauth2_applications"), oauth_applications_path, :class => "nav-link #{'active' if controller_name == 'oauth2_applications'}" %>
index 8e78524decb463730cfc2f863151aba6639b8fa1..021f1a33585e7e5dac88e25bdfe894eb211c310b 100644 (file)
@@ -11,8 +11,8 @@
   <div class="col">
     <p class='text-body-secondary mb-0'>
       <%= link_to contact.display_name, contact %>
-      <% if @user.home_location? and contact.home_location? %>
-        <% distance = @user.distance(contact) %>
+      <% if current_user.home_location? and contact.home_location? %>
+        <% distance = current_user.distance(contact) %>
         <% if distance < 1 %>
           (<%= t ".m away", :count => (distance * 1000).round %>)
         <% else %>
index 70dae774e86eef0a3e5e9567b2f75d46d9791755..e110ad531f1f11ad66b4464e24a39a3e52f7ead9 100644 (file)
@@ -3,63 +3,58 @@
 <% end %>
 
 <div class="row">
-  <% if current_user and @user.id == current_user.id %>
-    <div class="col-md order-md-last">
-      <% if !@user.home_location? %>
-        <div id="map" class="content_map border border-secondary-subtle">
-          <p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
-        </div>
-      <% else %>
-        <% content_for :head do %>
-          <%= javascript_include_tag "user" %>
-        <% end %>
-        <% user_data = {
-             :lon => current_user.home_lon,
-             :lat => current_user.home_lat,
-             :icon => image_path("marker-red.png"),
-             :description => render(:partial => "popup", :object => current_user, :locals => { :type => "your location" })
-           } %>
-        <%= tag.div "", :id => "map", :class => "content_map border border-secondary-subtle rounded z-0", :data => { :user => user_data } %>
+  <div class="col-md order-md-last">
+    <% if !current_user.home_location? %>
+      <div id="map" class="content_map border border-secondary-subtle">
+        <p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
+      </div>
+    <% else %>
+      <% content_for :head do %>
+        <%= javascript_include_tag "user" %>
       <% end %>
+      <% user_data = {
+           :lon => current_user.home_lon,
+           :lat => current_user.home_lat,
+           :icon => image_path("marker-red.png"),
+           :description => render(:partial => "popup", :object => current_user, :locals => { :type => "your location" })
+         } %>
+      <%= tag.div "", :id => "map", :class => "content_map border border-secondary-subtle rounded z-0", :data => { :user => user_data } %>
+    <% end %>
+  </div>
 
-      <% followings = @user.followings %>
-      <% nearby = @user.nearby - followings %>
-    </div>
+  <div class="col-md">
+    <h2><%= t ".followings" %></h2>
 
-    <div class="col-md">
-      <h2><%= t ".followings" %></h2>
+    <% if @followings.empty? %>
+      <%= t ".no followings" %>
+    <% else %>
+      <nav class='secondary-actions mb-3'>
+        <ul class='clearfix'>
+          <li><%= link_to t(".followed_changesets"), friend_changesets_path %></li>
+          <li><%= link_to t(".followed_diaries"), friends_diary_entries_path %></li>
+        </ul>
+      </nav>
+      <div>
+        <%= render :partial => "contact", :collection => @followings, :locals => { :type => "following" } %>
+      </div>
+    <% end %>
 
-      <% if followings.empty? %>
-        <%= t ".no followings" %>
-      <% else %>
-        <nav class='secondary-actions mb-3'>
-          <ul class='clearfix'>
-            <li><%= link_to t(".followed_changesets"), friend_changesets_path %></li>
-            <li><%= link_to t(".followed_diaries"), friends_diary_entries_path %></li>
-          </ul>
-        </nav>
-        <div>
-          <%= render :partial => "contact", :collection => followings, :locals => { :type => "following" } %>
-        </div>
-      <% end %>
-
-      <hr>
+    <hr>
 
-      <h2><%= t ".nearby users" %></h2>
+    <h2><%= t ".nearby users" %></h2>
 
-      <% if nearby.empty? %>
-        <%= t ".no nearby users" %>
-      <% else %>
-        <nav class='secondary-actions mb-3'>
-          <ul class='clearfix'>
-            <li><%= link_to t(".nearby_changesets"), nearby_changesets_path %></li>
-            <li><%= link_to t(".nearby_diaries"), nearby_diary_entries_path %></li>
-          </ul>
-        </nav>
-        <div id="nearbyusers">
-          <%= render :partial => "contact", :collection => nearby, :locals => { :type => "nearby mapper" } %>
-        </div>
-      <% end %>
-    </div>
-  <% end %>
+    <% if @nearby_users.empty? %>
+      <%= t ".no nearby users" %>
+    <% else %>
+      <nav class='secondary-actions mb-3'>
+        <ul class='clearfix'>
+          <li><%= link_to t(".nearby_changesets"), nearby_changesets_path %></li>
+          <li><%= link_to t(".nearby_diaries"), nearby_diary_entries_path %></li>
+        </ul>
+      </nav>
+      <div id="nearbyusers">
+        <%= render :partial => "contact", :collection => @nearby_users, :locals => { :type => "nearby mapper" } %>
+      </div>
+    <% end %>
+  </div>
 </div>
index f09812972ef31ff234233072891f20a0bb1d4300..69e323a997d6222a34e6f37d3ec46301cb35d29a 100644 (file)
@@ -85,7 +85,7 @@
             <span class='badge count-number'><%= number_with_delimiter(current_user.new_messages.size) %></span>
           <% end %>
           <%= link_to t("users.show.my profile"), current_user, :class => "dropdown-item" %>
-          <%= link_to t("users.show.my_account"), edit_account_path, :class => "dropdown-item" %>
+          <%= link_to t("users.show.my_account"), account_path, :class => "dropdown-item" %>
           <%= link_to t("users.show.my_preferences"), preferences_path, :class => "dropdown-item" %>
           <div class="dropdown-divider"></div>
           <% if current_user.home_location? %>
index 0ba4200a8462ca86a245b57d26a9a6ecc8ebce56..6b6c69798c4de77e10321a9cd51ffc786a0ee958 100644 (file)
@@ -4,6 +4,7 @@
   <% data = { :configured => Settings.key?(:id_application) }
      data[:lat] = @lat if @lat
      data[:lon] = @lon if @lon
+     data[:zoom] = @zoom if @zoom
      data[:gpx] = trace_data_url(params[:gpx], :format => :xml) if params[:gpx]
      data[:url] = id_url(:locale => params[:locale]) %>
   <%= tag.iframe "", :frameBorder => 0, :id => "id-embed", :class => "w-100 h-100", :allowfullscreen => "", :data => data %>
index bcd010f352bf757e82901415cb7fed54eb0d647c..3451288761992f34032b082794564d0733e05a76 100644 (file)
@@ -1,3 +1,3 @@
 <p><%= t ".not_public" %></p>
-<p><%= t ".not_public_description_html", :user_page => (link_to t(".user_page_link"), edit_account_path(:anchor => "public")) %></p>
+<p><%= t ".not_public_description_html", :user_page => (link_to t(".user_page_link"), account_path(:anchor => "public")) %></p>
 <p><%= t ".anon_edits_html", :link => link_to(t(".anon_edits_link_text"), t(".anon_edits_link")) %></p>
index a32f5fae1e071337716f945fbd5b531093cd3e92..30245adedc79fe30f122af57a0fc31b24ab79bd6 100644 (file)
@@ -30,7 +30,7 @@
               <span class='badge count-number'><%= number_with_delimiter(current_user.diary_comments.size) %></span>
             </li>
             <li>
-              <%= link_to t(".my_account"), edit_account_path %>
+              <%= link_to t(".my_account"), account_path %>
             </li>
 
             <% if current_user.blocks.exists? %>
similarity index 94%
rename from config/eslint.js
rename to config/eslint.config.mjs
index 6055634aa5a7ef6afab684f4adbb8d988f2a12a6..d695f0131db7b1f916cf42c64514ce64806f1dbe 100644 (file)
@@ -1,9 +1,9 @@
-const globals = require("globals");
-const js = require("@eslint/js");
-const erb = require("eslint-plugin-erb");
-const stylisticJs = require("@stylistic/eslint-plugin-js");
+import globals from "globals";
+import js from "@eslint/js";
+import erb from "eslint-plugin-erb";
+import stylisticJs from "@stylistic/eslint-plugin-js";
 
-module.exports = [
+export default [
   js.configs.recommended,
   erb.configs.recommended,
   {
@@ -164,13 +164,9 @@ module.exports = [
     }
   },
   {
-    files: ["config/eslint.js"],
+    files: ["config/eslint.config.mjs"],
     languageOptions: {
-      ecmaVersion: 2019,
-      sourceType: "commonjs",
-      globals: {
-        ...globals.commonjs
-      }
+      sourceType: "module"
     },
     rules: {
       "sort-keys": ["error", "asc", { minKeys: 5 }]
index cbdc700019084b0993fd8bbc1100b4a58a30bac3..56305becbae85d042a3b90e0929c154bb1775dd2 100644 (file)
@@ -237,9 +237,8 @@ af:
         comment: Kommentaar
         full: Volle nota
   accounts:
-    edit:
+    show:
       title: Redigeer rekening
-      my settings: My instellings
       current email address: Huidige e-posadres
       external auth: Ekserne veriviering.
       contributor terms:
@@ -1787,7 +1786,6 @@ af:
       my traces: My Spore
       my notes: My notas
       my profile: My profiel
-      my settings: My Instellings
       my comments: My kommentaar
       my_preferences: My voorkeure
       my_dashboard: My paneelbord
@@ -1839,10 +1837,10 @@ af:
       show:
         title: Gebruikers
         heading: Gebruikers
-        empty: Geen gebruikers gevind nie
       page:
         confirm: Bevestig geselekteerde gebruikers
         hide: Versteek verkose gebruikers
+        empty: Geen gebruikers gevind nie
       user:
         summary_html: '%{name} geskep vanaf %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} geskep op %{date}'
index f5f24aee224c887109c32949cddc2a0423b43c59..67e886690f75084a8fad43dab05265fe27c1e5dd 100644 (file)
@@ -121,9 +121,8 @@ aln:
       entry:
         comment: Koment
   accounts:
-    edit:
+    show:
       title: Ndrysho akountin
-      my settings: Preferencat e mia
       current email address: 'Email adresa e tanishme:'
       save changes button: Ruaj Ndryshimet
     go_public:
@@ -136,8 +135,6 @@ aln:
     terms:
       show:
         heading: rregullat për Pjesëmarrës
-        consider_pd: Unë e konsideroj kontributet e mia të jenë në domenin publik
-        consider_pd_why: çka o kjo?
         legale_select: 'Ju lutem zgjidhni vendin tuaj të banimit:'
         legale_names:
           france: Franca
@@ -974,7 +971,6 @@ aln:
       my diary: ditari im
       my edits: ndryshimet e mia
       my traces: gjurmët e mia
-      my settings: preferencat e mia
       blocks on me: bllokimet e mia
       blocks by me: bllokimet e dhana nga un
       send message: dërgo mesazh
@@ -1021,10 +1017,10 @@ aln:
       show:
         title: Perdoruesit
         heading: Perdoruesit
-        empty: Asni perputhje e perdoruesve nuk asht gjetun
       page:
         confirm: Konfirmo Anëtarët e Selektum
         hide: Mshefi Perdorust e Zgjedhun
+        empty: Asni perputhje e perdoruesve nuk asht gjetun
       user:
         summary_html: '%{name} u kriju prej %{ip_address} në %{date}'
         summary_no_ip_html: '%{name} u krijue me %{date}'
index 83c948c5bbea71e7435f60ffd92941543891e322..b0e10805800a6ef9401d740d48a3229919b20a39 100644 (file)
@@ -340,9 +340,8 @@ ar:
         comment: التعليق
         full: ملاحظة كاملة
   accounts:
-    edit:
+    show:
       title: عدل الحساب
-      my settings: إعداداتي
       current email address: عنوان البريد الإلكرتروني الحالي
       external auth: مصادقة خارجية
       openid:
@@ -415,9 +414,6 @@ ar:
           الأخرى التي يوفرها مؤسسة خريطة الشارع المفتوحة، يُرجَى النقر على الرابط،
           وقراءة والموافقة على النص.
         read_tou: قرأت شروط الاستخدام وأوافق عليها.
-        consider_pd: بالإضافة إلى ما طُرح أعلاه، أريد أن أنوه أنني أعتبر مساهماتي
-          ملكية عامة.
-        consider_pd_why: ما هذا؟
         continue: استمر
         you need to accept or decline: الرجاء القراءة ومن ثم قبول أو رفض شروط المساهمة
           الجديدة للمتابعة.
@@ -2366,7 +2362,6 @@ ar:
       my notes: ملاحظاتي
       my messages: رسائلي
       my profile: ملفي الشخصي
-      my settings: إعداداتي
       my comments: تعليقاتي
       blocks on me: عمليات منعي
       blocks by me: عمليات المنع بواسطتي
@@ -2420,10 +2415,10 @@ ar:
       show:
         title: المستخدمون
         heading: المستخدمون
-        empty: لم يتم العثور على مستخدمين متطابقين
       page:
         confirm: تأكيد المستخدمين المحددين
         hide: إخفاء المستخدمين المحددين
+        empty: لم يتم العثور على مستخدمين متطابقين
       user:
         summary_html: '%{name} تم إنشاؤها من %{ip_address} في %{date}'
         summary_no_ip_html: '%{name} تم إنشاؤه في %{date}'
index 6d23eecd497d67f7d14c2dd6f7440dbb69ae5c8d..808ff8a8bc25d43f9a61d88d55567a98f28cd8a9 100644 (file)
@@ -103,9 +103,8 @@ arz:
       user:
         new_email: (لا يظهر علنًا)
   accounts:
-    edit:
+    show:
       title: عدّل الحساب
-      my settings: إعداداتي
       save changes button: حفظ التغييرات
     go_public:
       heading: 'تعديل عام:'
@@ -822,7 +821,6 @@ arz:
       my diary: يوميتي
       my edits: مساهمات
       my traces: آثاري
-      my settings: إعداداتي
       blocks on me: العرقلات علي
       blocks by me: العرقلات بواسطتي
       send message: أرسل رسالة
index e1ca5b904c029b3850b2762d36d86a2db9d8ec7c..0603f0c1a95c45e79930cb2448228b0b43ce4772 100644 (file)
@@ -211,9 +211,8 @@ ast:
         comment: Comentariu
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Editar la cuenta
-      my settings: Les mios preferencies
       current email address: Direición de corréu electrónicu actual
       external auth: Autenticación esterna
       openid:
@@ -255,9 +254,6 @@ ast:
           infraestructura forníos pola OSMF. Por favor, pulsia nel enllaz, y llei
           y aceuta'l testu.
         read_tou: Lleí y toi d'alcuerdu colos Términos d'Usu
-        consider_pd: Amás de lo anterior, considero que les mios collaboraciones pasen
-          a ser Dominiu Públicu
-        consider_pd_why: ¿qué ye esto?
         continue: Siguir
         you need to accept or decline: Por favor, llei y aceuta o refuga les nueves
           Condiciones de Collaboración pa siguir.
@@ -1804,7 +1800,6 @@ ast:
       my notes: Les mios notes
       my messages: Los mios mensaxes
       my profile: El mio perfil
-      my settings: Les mios preferencies
       my comments: Los mios comentarios
       blocks on me: Bloqueos recibíos
       blocks by me: Bloqueos puestos
@@ -1858,10 +1853,10 @@ ast:
       show:
         title: Usuarios
         heading: Usuarios
-        empty: Nun s'atoparon usuarios que concasen
       page:
         confirm: Confirmar los usuarios esbillaos
         hide: Anubrir los usuarios esbillaos
+        empty: Nun s'atoparon usuarios que concasen
       user:
         summary_html: '%{name} creáu dende %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creáu el %{date}'
index f0a1260f8c00f2715a356bff255de3023e905bb6..fd4b1ac4001cdf8aaa2897b660f2e4679f09b6c4 100644 (file)
@@ -160,7 +160,7 @@ az:
         comment: Şərh
         full: Tam qeydlər
   accounts:
-    edit:
+    show:
       current email address: Hazırki E-Poçt Ünvanı
       openid:
         link text: bu nədir?
@@ -173,7 +173,6 @@ az:
       success: Hesab silindi.
     terms:
       show:
-        consider_pd_why: bu nədir?
         legale_names:
           france: Fransa
           italy: İtaliya
index 87ecc0f325a227ff6d05ed2f15609d414b09ac92..f9a088f6c7c1dc9fad2af44cfec4939a1d1462e9 100644 (file)
@@ -252,9 +252,8 @@ ba:
         comment: Комментарий
         full: Тулы текст
   accounts:
-    edit:
+    show:
       title: Аккаунтты үҙгәртергә
-      my settings: Минең көйләүҙәр
       current email address: Ағымдағы электрон почта адресы
       external auth: Тышҡы аутентификация
       openid:
index 157a7b0342d3f778b385944ed8eae5d22ee492b2..c4b67ea94d9ee6001d2a5b0bfc57cc517ae1a6af 100644 (file)
@@ -93,6 +93,7 @@ be-Tarask:
         allow_write_prefs: зьмяняць іх налады ўдзельніка
         allow_write_diary: ствараць запісы і камэнтары ў дзёньніку
         allow_write_api: зьмяняць мапу
+        allow_write_changeset_comments: камэнтаваць наборы зьменаў
         allow_read_gpx: чытаць іх прыватныя GPS-трэкі
         allow_write_gpx: загружаць GPS-трэкі
         allow_write_notes: зьмяняць нататкі
@@ -247,9 +248,9 @@ be-Tarask:
         comment: Камэнтар
         full: Поўны тэкст
   accounts:
-    edit:
+    show:
       title: Рэдагаваньне рахунку
-      my settings: Мае налады
+      my_account: Мой уліковы запіс
       current email address: Цяперашні адрас электроннай пошты
       external auth: Вонкавая аўтэнтыфікацыя
       openid:
@@ -287,9 +288,6 @@ be-Tarask:
       show:
         title: Умовы
         heading: Умовы
-        consider_pd: У дадатак да прыведзенага вышэй, я пацьвярджаю, што мой унёсак
-          знаходзіцца ў грамадзкім набытку
-        consider_pd_why: што гэта?
         you need to accept or decline: Калі ласка, прачытайце, а потым згадзіцеся
           ці адхіліце новыя ўмовы супрацоўніцтва для працягу.
         legale_select: 'Калі ласка, выберыце сваю краіну пражываньня:'
@@ -299,6 +297,9 @@ be-Tarask:
           rest_of_world: Астатні сьвет
       update:
         terms accepted: Дзякуй за тое, што прынялі новыя ўмовы супрацоўніцтва!
+    pd_declarations:
+      show:
+        confirm: Пацьвердзіць
   browse:
     version: Вэрсія
     in_changeset: Набор зьменаў
@@ -1255,7 +1256,6 @@ be-Tarask:
       my diary: Мой дзёньнік
       my edits: Мае рэдагаваньні
       my traces: Мае трэкі
-      my settings: Мае налады
       blocks on me: Атрыманыя блякаваньні
       blocks by me: Заблякаваныя мной
       send message: Адаслаць паведамленьне
@@ -1305,10 +1305,10 @@ be-Tarask:
       show:
         title: Удзельнікі
         heading: Карыстальнікі
-        empty: Адпаведныя карыстальнікі ня знойдзеныя
       page:
         confirm: Пацьвердзіць выбраных карыстальнікаў
         hide: Схаваць выбраных карыстальнікаў
+        empty: Адпаведныя карыстальнікі ня знойдзеныя
       user:
         summary_html: '%{name} створаны з %{ip_address}, %{date}'
         summary_no_ip_html: '%{name} створаны %{date}'
index cfbc4e3664459b89c9ed0c867aa5fc84eee90477..c2631f5f080dc08b2632bf09e06cef90749795f0 100644 (file)
@@ -290,9 +290,8 @@ be:
         comment: Каментар
         full: Тлумачэнне
   accounts:
-    edit:
+    show:
       title: Рэдагаваць уліковы запіс
-      my settings: Мае налады
       current email address: Бягучы адрас электроннай пошты
       external auth: Знешняя Аўтэнтыфікацыя
       openid:
@@ -373,9 +372,6 @@ be:
         tou_explain_html: '%{tou_link} кіруе сайтам і іншай інфраструктурай OSMF.
           Калі ласка, прайдзіце па спасылцы і азнаёмцеся з тэкстам.'
         read_tou: Я згаджаюся з Умовамі выкарыстання
-        consider_pd: У праграму да прыведзенага пагаднення, я пацвярджаю, што мой
-          уклад знаходзіцца ў грамадскім набытку
-        consider_pd_why: што гэта?
         continue: Працягнуць
         you need to accept or decline: Калі ласка, прачытайце, а потым згадзіцеся
           ці адхіліце новыя ўмовы супрацоўніцтва для працягу.
@@ -2487,8 +2483,6 @@ be:
         privacy_policy: палітыкі прыватнасці
         html: Адрас вашай электроннай пошты не будзе паказвацца іншым карыстальнікам,
           звярніцеся да %{privacy_policy_link} за больш дэтальнай інфармацыяй.
-      consider_pd_html: Я пагаджаюся з тым, што мой унёсак будзе часткай %{consider_pd_link}.
-      consider_pd: грамадскага набытку
       or: або
       use external auth: У якасці альтэрнатывы выкарыстайце для ўваходу старонні сервіс
     no_such_user:
@@ -2504,7 +2498,6 @@ be:
       my notes: Мае заўвагі
       my messages: Паведамленні
       my profile: Мой профіль
-      my settings: Мае налады
       my comments: Мае каментары
       my_preferences: Мае параметры
       my_dashboard: Мая панэль
@@ -2569,10 +2562,10 @@ be:
       show:
         title: Удзельнікі
         heading: Удзельнікі
-        empty: Адпаведныя карыстальнікі не знойдзеныя
       page:
         confirm: Пацвердзіць выбраных карыстальнікаў
         hide: Схаваць выбраных карыстальнікаў
+        empty: Адпаведныя карыстальнікі не знойдзеныя
       user:
         summary_html: '%{name} створана з %{ip_address} %{date}'
         summary_no_ip_html: '%{name} створаны %{date}'
index 6b4b984d8da1156f1cfc28dc2de5788775db34e4..afbcd4e4d5b0176de22c72142880b64bfeca8fde 100644 (file)
@@ -230,9 +230,8 @@ bg:
         comment: Коментар
         full: Цялата бележка
   accounts:
-    edit:
+    show:
       title: Промяна на профил
-      my settings: Моите настройки
       current email address: Текуща електронна поща
       external auth: Удостоверяване от външен източник
       openid:
@@ -284,7 +283,6 @@ bg:
         title: Условия
         heading: Условия
         heading_ct: Условия за сътрудничество
-        consider_pd_why: какво е това?
         continue: Продължаване
         you need to accept or decline: За да продължите, моля, прочетете, а след това
           се съгласете или откажете новите условия за сътрудничество.
@@ -1861,7 +1859,6 @@ bg:
       my notes: Моите бележки
       my messages: Съобщения
       my profile: Профил
-      my settings: Настройки
       my comments: Моите коментари
       my_preferences: Предпочитания
       blocks on me: Блокирани от мен
@@ -1902,9 +1899,9 @@ bg:
       show:
         title: Потребители
         heading: Потребители
-        empty: Не са открити съвпадащи профили
       page:
         hide: Скрий избраните потребители
+        empty: Не са открити съвпадащи профили
       user:
         summary_no_ip_html: '%{name} създадено на %{date}'
     changeset_comments:
index f9cc61d158786d31ab09163757b7d43087341adb..6fe552bfcb2bb42773890b585deb5173aec3d80c 100644 (file)
@@ -267,9 +267,8 @@ bn:
         comment: মন্তব্য
         full: পূর্ণ টীকা
   accounts:
-    edit:
+    show:
       title: অ্যাকাউন্ট সম্পাদনা করুন
-      my settings: আমার সেটিংস
       current email address: বর্তমান ই-মেইল ঠিকানা
       external auth: বাহ্যিক প্রমাণীকরণ
       openid:
@@ -343,8 +342,6 @@ bn:
           শর্তাদি নিয়ন্ত্রণ করে।
         read_ct: আমি উপরোক্ত অবদানকারীর শর্তাবলী পড়েছি এবং তাতে সম্মত
         read_tou: আমি ব্যবহারের শর্তাবলী পড়েছি এবং সম্মত
-        consider_pd: উপরোক্ত ছাড়াও, আমি আমার অবদানগুলিকে পাবলিক ডোমেনে বলে মনে করি৷
-        consider_pd_why: এটি কী?
         informal_translations: অনানুষ্ঠানিক অনুবাদ
         continue: অব্যাহত রাখুন
         cancel: বাতিল
@@ -362,6 +359,9 @@ bn:
           করার সিদ্ধান্ত নিয়েছেন। আরও তথ্যের জন্য, অনুগ্রহ করে %{terms_declined_link}
           দেখুন।
         terms_declined_link: এই উইকি পাতা
+    pd_declarations:
+      show:
+        confirm: নিশ্চিত করুন
   browse:
     deleted_ago_by_html: '%{user} কর্তৃক %{time_ago} অপসারিত'
     edited_ago_by_html: '%{user} কর্তৃক %{time_ago} সম্পাদিত'
@@ -1853,6 +1853,7 @@ bn:
   application:
     settings_menu:
       account_settings: অ্যাকাউন্ট সেটিংস
+      oauth2_applications: ওআউথ ২ অ্যাপ্লিকেশন
     auth_providers:
       openid:
         alt: ওপেনআইডি লোগো
@@ -1916,7 +1917,7 @@ bn:
       my notes: আমার নোট
       my messages: আমার বার্তাসমূহ
       my profile: আমার প্রোফাইল
-      my settings: আমার সেটিংস
+      my_account: আমার অ্যাকাউন্ট
       my comments: আমার মন্তব্যসমূহ
       my_preferences: আমার পছন্দ
       edit_profile: পরিলেখ সম্পাদনা করুন
@@ -1959,10 +1960,13 @@ bn:
       show:
         title: ব্যবহারকারীগণ
         heading: ব্যবহারকারীগণ
-        empty: কোনো সাদৃশ্যপূর্ণ ব্যবহারকারী পাওয়া যায়নি
+        states:
+          deleted: অপসারিত
+        search: অনুসন্ধান
       page:
         confirm: নির্বাচিত ব্যবহারকারীদের নিশ্চিত করুন
         hide: নির্বাচিত ব্যবহারকারীদের লুকান
+        empty: কোনো সাদৃশ্যপূর্ণ ব্যবহারকারী পাওয়া যায়নি
       user:
         summary_html: '%{ip_address} থেকে %{date} তারিখে %{name} তৈরি করেছেন'
         summary_no_ip_html: '%{date}-এ %{name} তৈরি হয়েছে'
@@ -2114,6 +2118,8 @@ bn:
     context:
       add_note: এখানে একটি টীকা যোগ করুন
       show_address: ঠিকানা দেখান
+    home:
+      marker_title: আমার বাড়ির অবস্থান
   redactions:
     edit:
       heading: সম্পাদনা সম্পাদন করুন
index c9e789873ac73100925a4a472a7731ed2d76acee..d15ea1b1b7acd3f42ddc9d2b5005d01f11f007fd 100644 (file)
@@ -286,9 +286,8 @@ br:
         comment: Evezhiadenn
         full: Notenn glok
   accounts:
-    edit:
+    show:
       title: Aozañ ar gont
-      my settings: Ma arventennoù
       current email address: Chomlec'h postel a-vremañ
       external auth: Dilesadur diavaez
       openid:
@@ -344,9 +343,6 @@ br:
         heading_ct: Reolennoù ar c'henlabourer
         read_ct: Lennet eo bet ganin ar reolennoù kenlabourat hag asantiñ a ran dezho
         read_tou: Lennet em eus ar reolennoù implijout hag asantiñ a ran doujañ dezho
-        consider_pd: Ouzhpenn an asant amañ a-us, ez anavezan emañ ma zegasadennoù
-          en domani foran
-        consider_pd_why: petra eo se ?
         readable_summary: diverrañ a c'hall bezañ lennet gant tud
         informal_translations: troidigezhioù diofisiel
         continue: Kenderc'hel
@@ -2623,7 +2619,6 @@ br:
         privacy_policy: Politikerezh prevezded
         html: Ho chomlec'h ne vo ket hewel d'an holl, sellit ouzh %{privacy_policy_link}
           evit gouzout hiroc'h.
-      consider_pd: domani foran
       or: pe
       use external auth: 'pe kevreit gant un tredeour:'
     no_such_user:
@@ -2639,7 +2634,6 @@ br:
       my notes: Ma notennoù
       my messages: Ma c'hemennadennoù
       my profile: Ma frofil
-      my settings: Ma arventennoù
       my comments: Ma evezhiadennoù
       my_preferences: Ma fenndibaboù
       my_dashboard: Ma zaolenn-vourzh
@@ -2723,7 +2717,6 @@ br:
       show:
         title: Implijerien
         heading: Implijerien
-        empty: N'eo bet kavet implijer klotaus ebet !
       page:
         found_users:
           one: '%{count} implijer kavet'
@@ -2733,6 +2726,7 @@ br:
           other: '%{count} implijer'
         confirm: Kadarnaat an implijerien diuzet
         hide: Kuzhat an implijerien diuzet
+        empty: N'eo bet kavet implijer klotaus ebet !
       user:
         summary_html: '%{name} krouet eus %{ip_address} d''an %{date}'
         summary_no_ip_html: '%{name} krouet d''an %{date}'
index 8b677a5dc200fc8ecb79a19b23eabbe70e5f8f70..377167ca3918282bee5cf39094d371788b4185a8 100644 (file)
@@ -149,9 +149,8 @@ bs:
       comment:
         opened_at_html: Kreirano %{when}
   accounts:
-    edit:
+    show:
       title: Urediti korisnički račun
-      my settings: Moja podešavanja
       current email address: Trenutna adresa e-pošte
       openid:
         link text: Šta je ovo?
@@ -175,9 +174,6 @@ bs:
       show:
         title: Uslovi za doprinosioce
         heading: Uslovi za doprinosioce
-        consider_pd: Osim gore navedenog ugovora, smatram da su moji doprinosi u javnom
-          vlasništvu (Public Domain)
-        consider_pd_why: Šta je ovo?
         you need to accept or decline: Molimo pročitajte i onda ili prihvatite ili
           odbijte nove Uslove za doprinosioce da bi ste nastavili.
         legale_select: 'Molimo odaberite Vašu zemlju prebivališta:'
@@ -1245,7 +1241,6 @@ bs:
       my edits: Moje promjene
       my traces: Moje trase
       my profile: Moj profil
-      my settings: Moja podešavanja
       my comments: Moji komentari
       blocks on me: Blokade na mene
       blocks by me: Blokade koje sam postavio/la
@@ -1296,10 +1291,10 @@ bs:
       show:
         title: Korisnici
         heading: Korisnici
-        empty: Nisu pronađeni odgovarajući korisnici.
       page:
         confirm: Potvrditi odabrane korisnike
         hide: Sakriti odabrane korisnike
+        empty: Nisu pronađeni odgovarajući korisnici.
       user:
         summary_html: '%{name} napravljeno sa %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
index 099ecf37b68045fbf8d94e9028fe0ec83988e8c8..98ef6acc136e64e59a68c0136bfe8cf1cfdd6f1c 100644 (file)
@@ -282,9 +282,8 @@ ca:
         comment: Comentari
         full: Nota sencera
   accounts:
-    edit:
+    show:
       title: Edita el compte
-      my settings: La meva configuració
       current email address: Adreça electrònica actual
       external auth: Autenticació externa
       openid:
@@ -361,9 +360,6 @@ ca:
           infraestructures proporcionades per l'OSFM. Cliqueu l'enllaç, llegiu el
           text i accepteu-lo.
         read_tou: He llegit i accepto les condicions d'us
-        consider_pd: A més de tot l'anterior, accepto que les meves contribucions
-          siguin de domini públic
-        consider_pd_why: què és això?
         guidance_info_html: 'Informació per ajudar a entendre aquests termes: un %{readable_summary_link}
           i algunes %{informal_translations_link}'
         readable_summary: resum llegible per humans
@@ -2630,7 +2626,6 @@ ca:
       email_help:
         html: La vostra adreça no es mostrarà públicament, consulteu la nostra %{privacy_policy_link}
           per obtenir més informació.
-      consider_pd: domini públic
       or: o
       use external auth: o inicieu la sessió mitjançant un tercer
     no_such_user:
@@ -2646,7 +2641,6 @@ ca:
       my notes: Les meves notes de mapa
       my messages: Els meus missatges
       my profile: El meu perfil
-      my settings: La meva configuració
       my comments: Els meus comentaris
       my_preferences: Les meves preferències
       my_dashboard: El meu tauler
@@ -2711,10 +2705,10 @@ ca:
       show:
         title: Usuaris
         heading: Usuaris
-        empty: No hi ha usuaris que coincideixin s'ha trobat
       page:
         confirm: Confirmar usuaris seleccionats
         hide: Amaga els usuaris seleccionats
+        empty: No hi ha usuaris que coincideixin s'ha trobat
       user:
         summary_html: '%{name} creat a partir de %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creat el %{date}'
index 60eb85f4215857ca271a1d1ebdf32a3596e0c405..b6c886c53f4a6514165bc3965be9787a24dc11c0 100644 (file)
@@ -241,9 +241,8 @@ ce:
         comment: Коммент
         full: Йуьззина текст
   accounts:
-    edit:
+    show:
       title: Аккаунт хийца
-      my settings: Сан нисдаран гӀирс
       current email address: Карара электронан поштан адрес
       external auth: Арахьара аутентификаци
       openid:
@@ -318,9 +317,6 @@ ce:
         tou_explain_html: '%{tou_link} урхалла до веб-сайтан а, OSMF-о луш йолчу кхечу
           инфраструктуран а. Дехар ду, ссылка тӀе а таӀийна, хьажа текстана тIех долчунна.'
         read_tou: Со реза ву Лелоран хьолашна
-        consider_pd: Лакхахь дийцинарг доцург, ас къобалдо, сан дакъалацар йукъараллин
-          хьолах хилар
-        consider_pd_why: хӀун ду хӀара?
         guidance_info_html: 'ХӀокху терминех кхета гӀо дан лерина хаамаш: цхьа %{readable_summary_link}
           а, цхьайолу %{informal_translations_link} а'
         readable_summary: адамо еша йиш йолу чулацам
@@ -2674,8 +2670,6 @@ ce:
           адресех лаьцна дакъа а
         html: Хьан адрес нахана гойтуш дац, хьажа тхан %{privacy_policy_link} кхин
           дӀа информаци хаа.
-      consider_pd_html: Ас сайн агӀонаш %{consider_pd_link} чохь лору.
-      consider_pd: йукъара домен
       or: йа
       use external auth: я кхечу сайтан агӀонца дIавазало
     no_such_user:
@@ -2691,7 +2685,6 @@ ce:
       my notes: Сан билгалонаш
       my messages: Сан хаамаш
       my profile: Сан профиль
-      my settings: Сан нисдаран гӀирс
       my comments: Сан комменташ
       my_preferences: Суна хазахеттарш
       my_dashboard: Сан панель
@@ -2770,13 +2763,13 @@ ce:
       show:
         title: Декъашхой
         heading: Декъашхой
-        empty: ЦхьаьнабогӀуш болу декъашхой ца карийна
       page:
         found_users:
           one: '%{count} декъашхо карийна'
           other: '%{count} декъашхоша карийна'
         confirm: Хаьржина декъашхой тӀечӀагӀбе
         hide: Хаьржина декъашхой къейлабаха
+        empty: ЦхьаьнабогӀуш болу декъашхой ца карийна
       user:
         summary_html: '%{name} кхоьллина %{date}, %{ip_address} адрес чуьра'
         summary_no_ip_html: '%{name} кхоьллина %{date}'
@@ -3193,7 +3186,7 @@ ce:
       user: 'Кхоьллина:'
       edit: ХӀара редакци хийца
       destroy: ДӀаяккха хӀара редакци
-      confirm: Ð\91акÑ\8aалла Ð»Ð°Ñ\8cий Ñ\85Ó\80Ñ\83на?
+      confirm: Ð¥Ñ\8cо Ñ\82еÑ\88на Ð²Ñ\83й?
     create:
       flash: Редакци кхоьллина.
     update:
index ef50a32681bd1ee1306a16c4c8a8b9b0dda5c640..d56e455889a26eecc40b0cce06cd33aab57edc9f 100644 (file)
@@ -317,9 +317,8 @@ cs:
         comment: Komentář
         full: Celá poznámka
   accounts:
-    edit:
+    show:
       title: Upravit účet
-      my settings: Moje nastavení
       current email address: Stávající e-mailová adresa
       external auth: Externí autentizace
       openid:
@@ -395,8 +394,6 @@ cs:
           poskytované OSMF. Klikněte prosím na odkaz, přečtěte si text a odsouhlaste
           ho.
         read_tou: Přečetl jsem si Podmínky užití a souhlasím s nimi
-        consider_pd: Navíc k výše uvedenému považuji své příspěvky za volné dílo.
-        consider_pd_why: co to znamená?
         guidance_info_html: 'Informace, které pomohou tyto podmínky pochopit: %{readable_summary_link}
           a nějaké %{informal_translations_link}'
         readable_summary: lidsky čitelné shrnutí
@@ -2913,8 +2910,6 @@ cs:
           e-mailových adresách
         html: Vaše adresa se nezobrazuje veřejně, více informací získáte na stránce
           s našimi %{privacy_policy_link}.
-      consider_pd_html: Své příspěvky považuji za %{consider_pd_link}.
-      consider_pd: volné dílo
       or: nebo
       use external auth: nebo se přihlaste prostřednictvím třetí strany
     no_such_user:
@@ -2930,7 +2925,6 @@ cs:
       my notes: Moje poznámky k mapě
       my messages: Moje zprávy
       my profile: Můj profil
-      my settings: Moje nastavení
       my comments: Moje komentáře
       my_preferences: Moje preference
       my_dashboard: Moje nástěnka
@@ -3012,7 +3006,6 @@ cs:
       show:
         title: Uživatelé
         heading: Uživatelé
-        empty: Nebyli nalezeni žádní uživatelé vyhovující podmínkám
       page:
         found_users:
           one: Nalezen %{count} uživatel
@@ -3021,6 +3014,7 @@ cs:
           other: Nalezeno %{count} uživatelů
         confirm: Potvrdit vybrané uživatele
         hide: Skrýt vybrané uživatele
+        empty: Nebyli nalezeni žádní uživatelé vyhovující podmínkám
       user:
         summary_html: '%{name} vytvořeno %{date} z %{ip_address}'
         summary_no_ip_html: '%{name} vytvořen %{date}'
index d2de4da21f575528376b51222a849634868f9782..3fbdb3b194ba3b8f2d390e88cc2ab0dd29939633 100644 (file)
@@ -290,9 +290,8 @@ cy:
         comment: Sylw
         full: Nodyn llawn
   accounts:
-    edit:
+    show:
       title: Golygu cyfrif
-      my settings: Fy Ngosodiadau
       current email address: Cyfeiriad E-bost Cyfredol
       external auth: Dilysu Allanol
       openid:
@@ -357,10 +356,6 @@ cy:
         heading_ct: Telerau Cyfranwyr
         read_ct: Rwyf wedi darllen ac yn cytuno â'r telerau cyfranwyr uchod
         read_tou: Rwyf wedi darllen ac yn cytuno â'r Telerau Defnyddio
-        consider_pd: Yn ogystal â'r uchod, ystyriaf fod fy nghyfraniadau yn y Parth
-          Cyhoeddus
-        consider_pd_why: beth yw hwn?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Gwybodaeth i helpu i ddeall y termau hyn: %{readable_summary_link}
           a rhai %{informal_translations_link}'
         readable_summary: crynodeb darllenadwy
@@ -377,6 +372,9 @@ cy:
       terms_declined_flash:
         terms_declined_link: y dudalen wici hon
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: Dilëwyd %{time_ago} gan %{user}
     edited_ago_by_html: Golygwyd %{time_ago} gan %{user}
@@ -2741,8 +2739,6 @@ cy:
         privacy_policy: polisi preifatrwydd
         html: Ni chaiff eich cyfeiriad e-bost ei arddangos yn gyhoeddus, gweler ein
           %{privacy_policy_link} am ragor o wybodaeth.
-      consider_pd_html: Rwy'n ystyried fy nghyfraniadau i fod yn y %{consider_pd_link}.
-      consider_pd: parth cyhoeddus
       or: neu
       use external auth: neu gofrestru gyda thrydydd parti
     no_such_user:
@@ -2756,7 +2752,6 @@ cy:
       my notes: Nodiadau
       my messages: Negeseuon
       my profile: Proffil
-      my settings: Gosodiadau
       my comments: Sylwadau
       my_preferences: Dewisiadau
       my_dashboard: Dangosfwrdd
@@ -2841,7 +2836,6 @@ cy:
       show:
         title: Defnyddwyr
         heading: Defnyddwyr
-        empty: Heb ganfod unrhyw defnyddwyr sy'n cyfateb
       page:
         found_users:
           zero: Canfuwyd %{count} defnyddiwr
@@ -2852,6 +2846,7 @@ cy:
           other: Canfuwyd %{count} defnyddiwr
         confirm: Cadarnhau Defnyddwyr Dewisiedig
         hide: Cuddio Defnyddwyr Dewisiedig
+        empty: Heb ganfod unrhyw defnyddwyr sy'n cyfateb
       user:
         summary_html: Crëwyd %{name} o %{ip_address} ar %{date}
         summary_no_ip_html: '%{name} wedi''i greu ar %{date}'
@@ -3077,8 +3072,6 @@ cy:
       anonymous_warning_sign_up: gofrestrwch
       counter_warning_guide_link:
         url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
-      counter_warning_forum_link:
-        url: https://community.openstreetmap.org/
       advice: Mae eich nodyn yn gyhoeddus a gellid ei ddefnyddio i ddiweddaru'r map,
         felly peidiwch ag ysgrifennu gwybodaeth bersonol, na gwybodaeth o fapiau hawlfreintiedig
         neu gyfeiriaduron.
index d04d7971830ac129dba8ff1f715f66f81b574435..5a1df55c95eff24becb6ad21f8dffb5ba28dadb4 100644 (file)
@@ -119,6 +119,7 @@ da:
         allow_write_prefs: ændre deres brugeralternativer
         allow_write_diary: oprette blogindlæg og kommentarer
         allow_write_api: ændre kortet
+        allow_write_changeset_comments: kommenter på ændringssæt
         allow_read_gpx: læse deres private GPS-spor
         allow_write_gpx: overføre GPS-spor
         allow_write_notes: ændre bemærkninger
@@ -273,9 +274,9 @@ da:
         comment: Kommentar
         full: Fuld bemærkning
   accounts:
-    edit:
+    show:
       title: Rediger konto
-      my settings: Mine indstillinger
+      my_account: Min konto
       current email address: Nuværende e-mailadresse
       external auth: Ekstern godkendelse
       openid:
@@ -289,6 +290,9 @@ da:
         agreed_with_pd: Du har også erklæret at du anser dine ændringer for at være
           fælleseje/uden ophavsret.
         link text: hvad er dette?
+        not_agreed_with_pd: Du har ikke erklæret, at du anser dine ændringer for at
+          være i det offentlige domæne, dvs. fælleseje/uden ophavsret.
+        pd_link_text: erklær
       save changes button: Gem ændringer
       delete_account: Slet konto
     go_public:
@@ -351,9 +355,6 @@ da:
           hjemmeside og anden infrastruktur stillet til rådighed af OSMF. Klik venligst
           på linket, læs og samtyk med vilkårene.
         read_tou: Jeg har læst og samtykker med brugsvilkårene
-        consider_pd: I tillæg til ovennævnte anser jeg mit bidrag for at være fælleseje/frit
-          for ophavsret (public domain)
-        consider_pd_why: hvad er dette?
         guidance_info_html: 'Oplysninger til at hjælpe med at forstå disse udtryk:
           et %{readable_summary_link} og nogle %{informal_translations_link}'
         readable_summary: menneskeligt læsbart sammendrag
@@ -375,6 +376,20 @@ da:
           %{terms_declined_link}.
         terms_declined_link: denne wiki-side
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Da:Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        title: Betragt mine bidrag for at være i det offentlige domæne
+        consider_pd: Jeg anser mine bidrag for at være i det offentlige domæne
+        consider_pd_why: Hvorfor skulle jeg gerne have, at mine bidrag er i det offentlige
+          domæne?
+        confirm: Bekræft
+      create:
+        successfully_declared: Du har erklæret, at du anser dine redigeringer for
+          at være i det offentlige domæne.
+        already_declared: Du har allerede erklæret, at du anser dine redigeringer
+          for at være i det offentlige domæne.
+        did_not_confirm: Du har ikke bekræftet, at du anser dine redigeringer for
+          at være i det offentlige domæne.
   browse:
     deleted_ago_by_html: Slettet %{time_ago} af %{user}
     edited_ago_by_html: Redigeret %{time_ago} af %{user}
@@ -2765,10 +2780,12 @@ da:
       write_prefs: Ændre brugerpræferencer
       write_diary: Udgiv blogindlæg og kommentarer
       write_api: Ændre kortet
+      write_changeset_comments: Kommenter på ændringssæt
       read_gpx: Læse private GPS-spor
       write_gpx: Overføre GPS-spor
       write_notes: Ændre bemærkninger
       write_redactions: Rediger kortdata
+      write_blocks: Opret og ophæv brugerblokeringer
       read_email: Læse brugerens e-mailadresse
       consume_messages: Læs, opdater status og slet brugerbeskeder
       send_messages: Send private beskeder til andre brugere
@@ -2828,7 +2845,7 @@ da:
   users:
     new:
       title: Opret konto
-      tab_title: Opret en konto
+      tab_title: Opret konto
       signup_to_authorize_html: Tilmeld dig OpenStreetMap for at få adgang til %{client_app_name}.
       no_auto_account_create: Vi kan desværre ikke oprette en konto automatisk for
         dig pt.
@@ -2858,8 +2875,6 @@ da:
         privacy_policy_title: OSMF privatlivspolitik inklusiv afsnit om e-mailadresser
         html: Din adresse vises ikke offentligt. Se vores %{privacy_policy_link} for
           flere oplysninger.
-      consider_pd_html: Jeg anser mine bidrag for at være i %{consider_pd_link}.
-      consider_pd: offentligt domæne
       or: eller
       use external auth: eller tilmeld dig med en tredjepart
     no_such_user:
@@ -2875,7 +2890,7 @@ da:
       my notes: Mine bemærkninger
       my messages: Mine meddelelser
       my profile: Min profil
-      my settings: Mine indstillinger
+      my_account: Min konto
       my comments: Mine kommentarer
       my_preferences: Mine præferencer
       my_dashboard: Mit kontrolpanel
@@ -2956,13 +2971,22 @@ da:
       show:
         title: Brugere
         heading: Brugere
-        empty: Ingen brugere fundet
+        select_status: Vælg status
+        states:
+          pending: Afventer
+          active: Aktiv
+          confirmed: Bekræftet
+          suspended: Suspenderet
+          deleted: Slettet
+        ip_address: IP-adresse
+        search: Søg
       page:
         found_users:
           one: '%{count} bruger fundet'
           other: '%{count} brugere fundet'
         confirm: Bekræft valgte brugere
         hide: Skjul valgte brugere
+        empty: Ingen brugere fundet
       user:
         summary_html: '%{name} oprettet fra %{ip_address} på %{date}'
         summary_no_ip_html: '%{name} oprettet på %{date}'
@@ -3413,6 +3437,9 @@ da:
       show_address: Vis adresse
       query_features: Find kortobjekter
       centre_map: Centrer kort her
+    home:
+      marker_title: Mit hjemsted
+      not_set: Hjemsted er ikke angivet for din konto
   redactions:
     edit:
       heading: Rediger omarbejdelse
index afc9243fae1c4bee3bf754d615800250e8f4608b..88021a200765bafc93342dc9ae061a03e0612fa2 100644 (file)
@@ -8,6 +8,7 @@
 # Author: Alefar
 # Author: Als-Holder
 # Author: Amilopowers
+# Author: AnnaTheProgrammer777
 # Author: AnupamM
 # Author: Apmon
 # Author: Atomkraftzwerg
@@ -201,6 +202,7 @@ de:
         allow_write_prefs: Ihre Benutzereinstellungen verändern
         allow_write_diary: Blogeinträge und Kommentare erstellen
         allow_write_api: Karte bearbeiten
+        allow_write_changeset_comments: Kommentieren von Änderungssätzen
         allow_read_gpx: Zugriff auf ihre privaten GPS-Tracks
         allow_write_gpx: GPS-Track hochladen
         allow_write_notes: Notizen bearbeiten
@@ -356,9 +358,9 @@ de:
         comment: Kommentar
         full: Vollständiger Hinweis
   accounts:
-    edit:
+    show:
       title: Benutzerkonto bearbeiten
-      my settings: Einstellungen
+      my_account: Mein Benutzerkonto
       current email address: Aktuelle E-Mail-Adresse
       external auth: Externe Authentifikation
       openid:
@@ -375,6 +377,9 @@ de:
           (unter Public Domain stellst).
         link: https://wiki.osmfoundation.org/w/index.php?title=Licence/Contributor_Terms&uselang=de
         link text: Was bedeutet dies?
+        not_agreed_with_pd: Du hast nicht erklärt, dass du deine Bearbeitungen als
+          gemeinfrei betrachtest.
+        pd_link_text: erklären
       save changes button: Änderungen speichern
       delete_account: Konto löschen …
     go_public:
@@ -441,10 +446,6 @@ de:
           Infrastruktur, die von der OSMF zur Verfügung gestellt wird. Klicke bitte
           auf den Link, lies den Text und stimme dann zu.
         read_tou: Ich habe die Nutzungsbedingungen gelesen und stimme ihnen zu
-        consider_pd: Zusätzlich zu den oben genannten Bedingungen betrachte ich meine
-          Beiträge als gemeinfrei (Public Domain)
-        consider_pd_why: Was bedeutet dies?
-        consider_pd_why_url: https://wiki.openstreetmap.org/wiki/DE:Editing_Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Informationen zum Verständnis dieser Begriffe: ein %{readable_summary_link}
           und einige %{informal_translations_link}'
         readable_summary: menschenlesbare Zusammenfassung
@@ -467,6 +468,20 @@ de:
           findest du auf %{terms_declined_link}.
         terms_declined_link: diese Wiki-Seite
         terms_declined_url: https://wiki.openstreetmap.org/wiki/DE:Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        title: Betrachte meine Beiträge als gemeinfrei
+        consider_pd: Ich betrachte meine Beiträge als gemeinfrei
+        consider_pd_why: Warum sollte ich wollen, dass meine Beiträge gemeinfrei sind?
+        consider_pd_why_url: https://wiki.openstreetmap.org/wiki/DE:Editing_Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: Bestätigen
+      create:
+        successfully_declared: Du hast zudem erklärt, dass du deine Beiträge gemeinfrei
+          veröffentlichst (unter Public Domain stellst).
+        already_declared: Du hast zudem erklärt, dass du deine Beiträge gemeinfrei
+          veröffentlichst (unter Public Domain stellst).
+        did_not_confirm: Du hast nicht bestätigt, dass du deine Bearbeitungen als
+          gemeinfrei betrachtest.
   browse:
     deleted_ago_by_html: Gelöscht %{time_ago} von %{user}
     edited_ago_by_html: Bearbeitet %{time_ago} von %{user}
@@ -2920,10 +2935,12 @@ de:
       write_prefs: Benutzereinstellungen verändern
       write_diary: Benutzereinträge und Kommentare erstellen
       write_api: Karte bearbeiten
+      write_changeset_comments: Kommentar zu Änderungen
       read_gpx: Private GPS-Tracks lesen
       write_gpx: GPS-Tracks hochladen
       write_notes: Notizen bearbeiten
       write_redactions: Kartendaten redigieren
+      write_blocks: Benutzersperren erstellen und aufheben
       read_email: Lesen der Benutzer-E-Mail-Adresse
       consume_messages: Lesen, Aktualisieren des Status und Löschen von Benutzernachrichten
       send_messages: Private Nachrichten an andere Benutzer senden
@@ -3018,8 +3035,6 @@ de:
         privacy_policy_title: OSMF-Datenschutzrichtlinie mit Abschnitt über E-Mail-Adressen
         html: Deine Adresse wird nicht öffentlich angezeigt. Weitere Informationen
           findest du in unserer %{privacy_policy_link}.
-      consider_pd_html: Ich betrachte meine Beiträge als %{consider_pd_link}.
-      consider_pd: gemeinfrei
       or: oder
       use external auth: oder melde dich über einen Drittanbieter an
     no_such_user:
@@ -3035,7 +3050,7 @@ de:
       my notes: Meine Hinweise
       my messages: Nachrichten
       my profile: Profil
-      my settings: Einstellungen
+      my_account: Mein Benutzerkonto
       my comments: Meine Kommentare
       my_preferences: Benutzereinstellungen
       my_dashboard: Meine Übersichtsseite
@@ -3116,13 +3131,22 @@ de:
       show:
         title: Benutzer
         heading: Benutzer
-        empty: Keine übereinstimmenden Benutzer gefunden
+        select_status: Status auswählen
+        states:
+          pending: Ausstehend
+          active: Aktiv
+          confirmed: Bestätigt
+          suspended: Ausgesetzt
+          deleted: Gelöscht
+        ip_address: IP-Adresse
+        search: Suchen
       page:
         found_users:
           one: '%{count} Benutzer gefunden'
           other: '%{count} Benutzer gefunden'
         confirm: Bestätige ausgewählte Benutzer
         hide: Ausgewählte Benutzer ausblenden
+        empty: Keine übereinstimmenden Benutzer gefunden
       user:
         summary_html: '%{name} erstellt von %{ip_address} am %{date}'
         summary_no_ip_html: '%{name} erstellt am %{date}'
@@ -3377,7 +3401,6 @@ de:
         url: https://wiki.openstreetmap.org/wiki/DE:Beginners%27_guide
       counter_warning_forum_link:
         text: die Gemeinschaft kann dir helfen
-        url: https://community.openstreetmap.org/
       advice: Deine Meldung ist öffentlich und kann zur Aktualisierung der Karte verwendet
         werden. Gib deshalb keine persönlichen oder urheberrechtlich geschützten Informationen
         von anderen Karten oder Verzeichnislisten an.
@@ -3582,6 +3605,9 @@ de:
       show_address: Adresse anzeigen
       query_features: Objektabfrage
       centre_map: Karte hier zentrieren
+    home:
+      marker_title: Mein Heimatort
+      not_set: Der Heimatort ist für dein Konto nicht festgelegt
   redactions:
     edit:
       heading: Redaction bearbeiten
index 16ecf20e2e2198a008aaef054344b37887564ec0..ae4faf8627fe244f0dfe9080341184bacb634432 100644 (file)
@@ -183,9 +183,8 @@ diq:
         comment: Mışewre
         full: Note pêro
   accounts:
-    edit:
+    show:
       title: Hesabi bıvurne
-      my settings: Eyarê mı
       current email address: 'E-postay şımaya newki:'
       openid:
         link text: no çıko?
@@ -198,7 +197,6 @@ diq:
       show:
         title: Terimi
         heading: Terimi
-        consider_pd_why: no çıko?
         continue: Dewam ke
         legale_names:
           france: Fransa
@@ -974,7 +972,6 @@ diq:
       my diary: Rocekê mı
       my edits: İştırakê mı
       my traces: GPS rêçê mı
-      my settings: Eyarê Mı
       my comments: Mışewrey mı
       blocks on me: Bloqeyê mı
       blocks by me: Bloqe kerdışê mı
index a22f1962aeda25802134086cf1edc2f6b38e2dea..0e5ee3ba1bec9b70c9d08cbe060b32cc542a779e 100644 (file)
@@ -155,9 +155,8 @@ dsb:
         comment: Komentar
         full: Dopołna pokazka
   accounts:
-    edit:
+    show:
       title: Konto wobźěłaś
-      my settings: Móje nastajenja
       current email address: 'Aktualna e-mailowa adresa:'
       openid:
         link text: Co to jo?
@@ -184,9 +183,6 @@ dsb:
       show:
         title: Wuměnjenja za sobustatkujucych
         heading: Wuměnjenja za pśinosowarjow
-        consider_pd: Pśidatnje ku górjejce dojadnanjeju, mam swóje pśinoski za zjawnosć
-          pśistupne.
-        consider_pd_why: Co to jo?
         you need to accept or decline: Pšosym pśecytaj nowe wužywarske wuměnjenja
           a akceptěruj abo wótpokaž je, nježli až dalej cyniš.
         legale_select: 'Pšosym wubjeŕ kraj swójogo bydleńskego sedla:'
@@ -1391,7 +1387,6 @@ dsb:
       my notes: Móje pokazki
       my messages: Móje powěsći
       my profile: Mój profil
-      my settings: Móje nastajenja
       my comments: Móje komentary
       my_preferences: Móje preference
       my_dashboard: Mój pśeglědowy bok
@@ -1445,10 +1440,10 @@ dsb:
       show:
         title: Wužywarje
         heading: Wužywarje
-        empty: Žedne wótpowědujuce wužywarje namakane
       page:
         confirm: Wubranych wužywarjow wobkšuśiś
         hide: Wubranych wužywarjow schowaś
+        empty: Žedne wótpowědujuce wužywarje namakane
       user:
         summary_html: '%{name} wót %{ip_address} dnja %{date} napórany'
         summary_no_ip_html: '%{name} dnja %{date} napórany'
index 8b04dfaf012376227bfb6dc288f4521013a95fcd..7150d5b8be41c27dbb73565eee37f96f9fa8a774 100644 (file)
@@ -130,6 +130,7 @@ el:
         allow_write_prefs: τροποποίηση των προτιμήσεων χρήστη
         allow_write_diary: δημιουργία καταχωρήσεων ημερολογίου και σχολίων
         allow_write_api: τροποποίηση του χάρτη
+        allow_write_changeset_comments: σχολιάζει στα σύνολα αλλαγών
         allow_read_gpx: ανάγνωση των προσωπικών ιχνών GPS
         allow_write_gpx: μεταφόρτωση ιχνών GPS
         allow_write_notes: τροποποίηση σημειώσεων
@@ -285,12 +286,13 @@ el:
         comment: Σχόλιο
         full: Πλήρης σημείωση
   accounts:
-    edit:
+    show:
       title: Επεξεργασία λογαριασμού
-      my settings: Οι ρυθμίσεις μου
+      my_account: Ο λογαριασμός μου
       current email address: Τρέχουσα διεύθυνση ηλεκτρονικού ταχυδρομείου
       external auth: Εξωτερική επαλήθευση ταυτότητας
       openid:
+        link: https://wiki.openstreetmap.org/wiki/OpenID
         link text: τι είναι αυτό;
       contributor terms:
         heading: Όροι Συνεισφοράς
@@ -300,7 +302,11 @@ el:
           σας και την αποδοχή των νέων Όρων Συνεισφοράς.
         agreed_with_pd: Δηλώσατε επίσης ότι αποδέχεστε ότι οι τροποποιήσεις σας αποτελούν
           κοινό κτήμα.
+        link: https://osmfoundation.org/wiki/Licence/Contributor_Terms
         link text: τι είναι αυτό;
+        not_agreed_with_pd: Δεν έχετε δηλώσει ότι θεωρείτε ότι οι τροποποιήσεις σας
+          ανήκουν στον Δημόσιο Τομέα.
+        pd_link_text: δηλώστε
       save changes button: Αποθήκευση αλλαγών
       delete_account: Διαγραφή λογαριασμού...
     go_public:
@@ -368,9 +374,6 @@ el:
           άλλης υποδομής που προσφέρει η OSMF. Παρακαλούμε ακολουθήστε τον σύνδεσμο,
           διαβάστε και αποδεχτείτε το κείμενο.
         read_tou: Έχω διαβάσει και αποδέχομαι τους όρους χρήσης
-        consider_pd: Και επιπρόσθετα στην παραπάνω συμφωνία, καταστώ τις συνεισφορές
-          μου στο κοινό κτήμα (για ελεύθερη χρήση)
-        consider_pd_why: τι είναι αυτό;
         guidance_info_html: 'Πληροφορίες για να βοηθήσουν να κατανοήσετε αυτούς τους
           όρους: μια %{readable_summary_link} και μερικές %{informal_translations_link}'
         readable_summary: περίληψη αναγνώσιμη από τον άνθρωπο
@@ -390,6 +393,21 @@ el:
         terms_declined_html: Λυπούμαστε που αποφασίσατε να μην αποδεχτείτε τους νέους
           Όρους Συνεισφοράς. Για περισσότερες πληροφορίες, ανατρέξτε στο %{terms_declined_link}.
         terms_declined_link: αυτή η σελίδα wiki
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        title: Θεωρήστε τις συνεισφορές μου να είναι στον Δημόσιο Τομέα
+        consider_pd: Θεωρώ ότι οι συνεισφορές μου είναι στον Δημόσιο Τομέα
+        consider_pd_why: Γιατί θα ήθελα οι συνεισφορές μου να είναι στον Δημόσιο Τομέα;
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: Επιβεβαίωση
+      create:
+        successfully_declared: Δηλώσατε επιτυχώς ότι θεωρείτε ότι οι τροποποιήσεις
+          σας ανήκουν στον Δημόσιο Τομέα.
+        already_declared: Έχετε ήδη δηλώσει ότι θεωρείτε ότι οι τροποποιήσεις σας
+          ανήκουν στον Δημόσιο Τομέα.
+        did_not_confirm: Δεν έχετε επιβεβαιώσει ότι θεωρείτε ότι οι τροποποιήσεις
+          σας ανήκουν στον Δημόσιο Τομέα.
   browse:
     deleted_ago_by_html: Διαγράφηκε %{time_ago} από %{user}
     edited_ago_by_html: Επεξεργάστηκε %{time_ago} από %{user}
@@ -1041,6 +1059,7 @@ el:
           bridleway: Μονοπάτι για άλογα
           bus_guideway: Λωρίδα καθοδηγούμενου λεωφορείου
           bus_stop: Στάση λεωφορείου
+          busway: Λεωφορειόδρομος
           construction: Δρόμος υπό κατασκευή
           corridor: Διάδρομος
           crossing: Διάβαση
@@ -1729,6 +1748,13 @@ el:
     communities: Κοινότητες
     learn_more: Μάθετε περισσότερα
     more: Περισσότερα
+    offline_flash:
+      osm_offline: Η βάση δεδομένων του OpenStreetMap είναι προσωρινά εκτός λειτουργίας
+        λόγω απαραίτητων εργασιών συντήρησης.
+      osm_read_only: Η βάση δεδομένων του OpenStreetMap έχει τεθεί προσωρινά σε λειτουργία
+        «μόνο για ανάγνωση» λόγω απαραίτητων εργασιών συντήρησης.
+      expected_restore_html: Οι υπηρεσίες αναμένεται να αποκατασταθούν σε %{time}.
+      announcement: Μπορείτε να διαβάσετε την ανακοίνωση εδώ.
   user_mailer:
     diary_comment_notification:
       description: 'OpenStreetMap Καταχώριση Ημερολογίου #%{id}'
@@ -2367,6 +2393,8 @@ el:
       not_public_description_html: Δεν μπορείτε πλέον να επεξεργαστείτε το χάρτη αν
         δεν το κάνετε. Μπορείτε να κάνετε τις επεξεργασίες σας δημόσιες από την %{user_page}.
       user_page_link: σελίδα χρήστη
+      anon_edits_html: (%{link})
+      anon_edits_link: https://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
       anon_edits_link_text: Μάθετε γιατί συμβαίνει αυτό.
     edit:
       id_not_configured: Ο iD δεν έχει ρυθμιστεί
@@ -2827,10 +2855,12 @@ el:
       write_prefs: Τροποποιεί τις προτιμήσεις χρήστη
       write_diary: Δημιουργεί καταχωρήσεις ημερολογίου και σχόλια
       write_api: Τροποποίηση του χάρτη
+      write_changeset_comments: Σχολιάζει στα σύνολα αλλαγών
       read_gpx: Ανάγνωση προσωπικών ιχνών GPS
       write_gpx: Μεταφόρτωση ιχνών GPS
       write_notes: Τροποποίηση σημειώσεων
       write_redactions: Αφαίρεση και απόκρυψη δεδομένων χάρτη
+      write_blocks: Δημιουργία και ανάκληση φραγών χρηστών
       read_email: Διαβάζει τη διεύθυνση email χρήστη
       consume_messages: Ανάγνωση, ενημέρωση της κατάστασης και διαγραφή των μηνυμάτων
         χρήστη
@@ -2926,8 +2956,6 @@ el:
           για τις διευθύνσεις ηλεκτρονικού ταχυδρομείου
         html: Η διεύθυνσή σας δεν εμφανίζεται δημόσια, ανατρέξτε στην %{privacy_policy_link}
           για περισσότερες πληροφορίες.
-      consider_pd_html: Θεωρώ τις συνεισφορές μου να είναι στο %{consider_pd_link}.
-      consider_pd: κοινό κτήμα
       or: ή
       use external auth: ή συνδεθείτε μέσω τρίτης υπηρεσίας
     no_such_user:
@@ -2944,7 +2972,7 @@ el:
       my notes: Οι σημειώσεις μου
       my messages: Τα μηνύματά μου
       my profile: Το προφίλ μου
-      my settings: Οι ρυθμίσεις μου
+      my_account: Ο λογαριασμός μου
       my comments: Τα σχόλιά μου
       my_preferences: Οι προτιμήσεις μου
       my_dashboard: Το ταμπλό μου
@@ -3025,13 +3053,22 @@ el:
       show:
         title: Χρήστες
         heading: Χρήστες
-        empty: Δεν βρέθηκαν χρήστες που να ταιριάζουν
+        select_status: Επιλογή κατάστασης
+        states:
+          pending: Σε εκκρεμότητα
+          active: Ενεργός
+          confirmed: Επιβεβαιωμένος
+          suspended: Σε αναστολή
+          deleted: Διαγραμμένος
+        ip_address: Διεύθυνση IP
+        search: Αναζήτηση
       page:
         found_users:
           one: '%{count} χρήστης βρέθηκε'
           other: '%{count} χρήστες βρέθηκαν'
         confirm: Επιβεβαίωση επιλεγμένων χρηστών
         hide: Απόκρυψη επιλεγμένων χρηστών
+        empty: Δεν βρέθηκαν χρήστες που να ταιριάζουν
       user:
         summary_html: '%{name} δημιουργήθηκε από την διεύθυνση IP %{ip_address} στις
           %{date}'
@@ -3488,6 +3525,9 @@ el:
       show_address: Εμφάνιση διεύθυνσης
       query_features: Πληροφορίες χαρακτηριστικών
       centre_map: Κεντράρισμα χάρτη εδώ
+    home:
+      marker_title: Τοποθεσία του σπιτιού μου
+      not_set: Η τοποθεσία του σπιτιού δεν έχει οριστεί για τον λογαριασμό σας
   redactions:
     edit:
       heading: Επεξεργασία παράληψης
index c4a56827adf701efb5c2725827a894c820a800ae..9b51b70bdd753dffdc4cd78d8e0d4e8adf5a1863 100644 (file)
@@ -235,9 +235,8 @@ en-GB:
         comment: Comment
         full: Full note
   accounts:
-    edit:
+    show:
       title: Edit account
-      my settings: My settings
       external auth: External Authentication
       openid:
         link text: what is this?
@@ -260,9 +259,6 @@ en-GB:
       show:
         title: Terms
         heading: Terms
-        consider_pd: In addition to the above, I consider my contributions to be in
-          the Public Domain
-        consider_pd_why: what's this?
         you need to accept or decline: Please read and then either accept or decline
           the new Contributor Terms to continue.
         legale_select: 'Country of residence:'
@@ -1618,7 +1614,6 @@ en-GB:
       my notes: My Notes
       my messages: My Messages
       my profile: My Profile
-      my settings: My Settings
       my comments: My Comments
       blocks on me: Blocks on Me
       blocks by me: Blocks by Me
@@ -1667,10 +1662,10 @@ en-GB:
       show:
         title: Users
         heading: Users
-        empty: No matching users found
       page:
         confirm: Confirm Selected Users
         hide: Hide Selected Users
+        empty: No matching users found
       user:
         summary_html: '%{name} created from %{ip_address} on %{date}'
         summary_no_ip_html: '%{name} created on %{date}'
index afc09c519a80fc7742d6f97dae7aca895d71c51d..dd7ae4033841195b001ab689f0757bdc5d50bd32 100644 (file)
@@ -244,7 +244,7 @@ en:
         comment: Comment
         full: Full note
   accounts:
-    edit:
+    show:
       title: "Edit account"
       my_account: My Account
       current email address: "Current Email Address"
index 62757cc2504b8787bd7454ae0cdbd00614a488ad..4cbc7734fe357ec0a1e54763bf3f101d6f737ffd 100644 (file)
@@ -111,6 +111,7 @@ eo:
         allow_write_prefs: modifi preferojn de uzantoj
         allow_write_diary: afiŝi en taglibro kaj komenti
         allow_write_api: redakti la mapon
+        allow_write_changeset_comments: komenti ŝanĝarojn
         allow_read_gpx: legi privatajn GPS-spurojn
         allow_write_gpx: alŝuti GPS-spurojn
         allow_write_notes: modifi rimarkojn
@@ -263,9 +264,9 @@ eo:
         comment: Komento
         full: Tuta rimarko
   accounts:
-    edit:
+    show:
       title: Redakti konton
-      my settings: Miaj agordoj
+      my_account: Mia konto
       current email address: Aktuala retpoŝta adreso
       external auth: Ekstera aŭtentigo
       openid:
@@ -278,7 +279,10 @@ eo:
           interkonsenton pri uzado.
         agreed_with_pd: Vi ankaŭ deklaris, ke viaj kontribuaĵoj estas en la publika
           havaĵo.
-        link text: Pliaj informoj
+        link text: pliaj informoj
+        not_agreed_with_pd: Vi ne deklaris, por ke viaj kontribuaĵoj estu en la publika
+          havaĵo.
+        pd_link_text: deklari
       save changes button: Konservi ŝanĝojn
       delete_account: Forigi konton…
     go_public:
@@ -340,9 +344,6 @@ eo:
           infrastrukturo provizata de la Fondaĵo OSM. Bonvolu alklaki la ligilon,
           legi, kaj konsenti la tekston.
         read_tou: Mi legis kaj konsentas la Uzkondiĉojn
-        consider_pd: Krom la ĉi-supro, mi konfirmas, ke miaj kontribuaĵoj apartenas
-          al la publika havaĵo
-        consider_pd_why: Pliaj informoj
         guidance_info_html: 'Pliaj informoj helpantaj kompreni ilin: %{readable_summary_link}
           kaj kelkaj %{informal_translations_link}'
         readable_summary: konciza sumiĝo
@@ -362,6 +363,13 @@ eo:
         terms_declined_html: Bedaŭrinde vi ne akceptis la novan interkonsenton pri
           kontribuado. Por pli da informoj, ekkonu kun %{terms_declined_link}.
         terms_declined_link: tiu ĉi viki‑paĝo
+    pd_declarations:
+      show:
+        title: Deklari miajn kontribuaĵojn kiel la publikan havaĵon
+        consider_pd: Mi deklaras, por ke miaj kontribuaĵoj (redaktoj) estu en la publika
+          havaĵo.
+        consider_pd_why: Kiel vi volus, ke miaj kontribuaĵoj estu publikaj?
+        confirm: Konfirmi
   browse:
     deleted_ago_by_html: Forigita %{time_ago} de %{user}
     edited_ago_by_html: Redaktita %{time_ago} de %{user}
@@ -2816,8 +2824,6 @@ eo:
           de retpoŝta adreso
         html: Via retpoŝta adreso ne estas publike montrata, legu nian %{privacy_policy_link}
           por pli da informoj.
-      consider_pd_html: Mi konsideras ke miaj kontribuoj estu eldonitaj en la %{consider_pd_link}.
-      consider_pd: publika havaĵo
       or: aŭ
       use external auth: 'registriĝi per ekstera liveranto:'
     no_such_user:
@@ -2833,7 +2839,6 @@ eo:
       my notes: Miaj rimarkoj
       my messages: Mesaĝoj
       my profile: Profilo
-      my settings: Agordoj
       my comments: Miaj komentoj
       my_preferences: Preferoj
       my_dashboard: Panelo
@@ -2911,13 +2916,13 @@ eo:
       show:
         title: Uzantoj
         heading: Uzantoj
-        empty: Kongruaj uzantoj ne trovitaj
       page:
         found_users:
           one: '%{count} trovita uzanto'
           other: '%{count} trovitaj uzantoj'
         confirm: Konfirmi elektitajn uzantojn
         hide: Kaŝi elektitajn uzantojn
+        empty: Kongruaj uzantoj ne trovitaj
       user:
         summary_html: '%{name} kreita de %{ip_address} je %{date}'
         summary_no_ip_html: '%{name} kreita je %{date}'
index 93b5a730b9a489439cecbf1047ffbc18968f4cff..bd1fdc550318e5de2883e2aca49e8d33c04797c2 100644 (file)
@@ -338,9 +338,8 @@ es:
         comment: Comentario
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Editar Cuenta
-      my settings: Mis configuraciones
       current email address: Dirección de correo electrónico actual
       external auth: Autentificación externa
       openid:
@@ -422,9 +421,6 @@ es:
         tou_explain_html: Estos %{tou_link} rigen el uso del sitio web y de la infraestructura
           provista por OSMF. Haz clic en el enlace, lee y acepta el texto.
         read_tou: He leído y estoy de acuerdo con los Términos de Uso
-        consider_pd: Además del acuerdo anterior, considero que mis contribuciones
-          se encuentran en Dominio Público.
-        consider_pd_why: ¿Qué es esto?
         guidance_info_html: 'Información para ayudar a comprender estos términos:
           un %{readable_summary_link} y algunas %{informal_translations_link}'
         readable_summary: resumen legible por humanos
@@ -2910,9 +2906,6 @@ es:
           sobre direcciones de correo electrónico
         html: Tu dirección no se mostrará públicamente, consulta nuestra %{privacy_policy_link}
           para obtener más información.
-      consider_pd_html: Considero que mis contribuciones estén en el %{consider_pd_link}.
-      consider_pd: dominio público
-      consider_pd_url: https://www.osmfoundation.org/wiki/License/Why_would_I_want_my_contributions_to_be_public_domain
       or: o
       use external auth: o registrarse con un tercero
     no_such_user:
@@ -2928,7 +2921,6 @@ es:
       my notes: Mis notas
       my messages: Mis mensajes
       my profile: Mi perfil
-      my settings: Mis configuraciones
       my comments: Mis comentarios
       my_preferences: Mis preferencias
       my_dashboard: Mi tablero
@@ -3007,13 +2999,13 @@ es:
       show:
         title: Usuarios
         heading: Usuarios
-        empty: No hay usuarios coincidentes
       page:
         found_users:
           one: '%{count} usuario encontrado'
           other: '%{count} usuarios encontrados'
         confirm: Confirmar usuarios seleccionados
         hide: Ocultar usuarios seleccionados
+        empty: No hay usuarios coincidentes
       user:
         summary_html: '%{name} creado desde %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creado el %{date}'
index 77e3f228f92dd7d2e6a0d31e003248a5bfef7f2a..3378a05c4e3cd42cf3490f20a7557decacc05ca8 100644 (file)
@@ -241,9 +241,8 @@ et:
         comment: Kommentaar
         full: Täielik tekst
   accounts:
-    edit:
+    show:
       title: Konto muutmine
-      my settings: Minu sätted
       current email address: Praegune e-posti aadress
       external auth: Väline autentimine
       openid:
@@ -318,9 +317,6 @@ et:
           pakutava infrastruktuuri kasutamist. Palun klõpsa lingil, loe tekst läbi
           ja nõustu sellega.
         read_tou: Ma olen lugenud kasutustingimusi ja nõustun nendega
-        consider_pd: Eelnevale lisaks leian, et minu kaastöö kuulub avalikku omandisse
-          (Public Domain)
-        consider_pd_why: mis see on?
         guidance_info_html: 'Teave, mis aitab mõista neid tingimusi: %{readable_summary_link}
           ja mõned %{informal_translations_link}'
         readable_summary: inimloetav kokkuvõte
@@ -2582,8 +2578,6 @@ et:
         privacy_policy_title: OSMF-i andmekaitsereeglid, sealhulgas peatükk e-posti
           aadresside kohta
         html: Sinu aadressi ei kuvata avalikult, tutvu meie %{privacy_policy_link}.
-      consider_pd_html: Pean enda kaastööd %{consider_pd_link} kuuluvaks.
-      consider_pd: avalikku omandisse
       use external auth: või registreeru kolmanda osapoole kaudu
     no_such_user:
       title: Sellist kasutajat ei ole
@@ -2598,7 +2592,6 @@ et:
       my notes: Minu märkused
       my messages: Minu sõnumid
       my profile: Minu profiil
-      my settings: Minu sätted
       my comments: Minu kommentaarid
       my_preferences: Minu eelistused
       my_dashboard: Minu andmelaud
@@ -2660,13 +2653,13 @@ et:
       show:
         title: Kasutajad
         heading: Kasutajad
-        empty: Sobivaid kasutajaid ei leitud!
       page:
         found_users:
           one: '%{count} kasutaja leitud'
           other: '%{count} kasutajat leitud'
         confirm: Kinnita valitud kasutajad
         hide: Peida valitud Kasutajad
+        empty: Sobivaid kasutajaid ei leitud!
       user:
         summary_html: '%{name} loodud IP-aadressilt %{ip_address} (%{date})'
         summary_no_ip_html: '%{name} loodud (%{date})'
index 00ee4587447d325b8975ae56a7c194c12dd8c933..62ddee52e45bf58c1c2f0bd8ae93126e253c4486 100644 (file)
@@ -258,9 +258,8 @@ eu:
         comment: Iruzkina
         full: Ohar osoa
   accounts:
-    edit:
+    show:
       title: Kontua aldatu
-      my settings: Nire aukerak
       current email address: Egungo posta helbidea
       external auth: Kanpoko Autentifikazioa
       openid:
@@ -336,9 +335,6 @@ eu:
           beste azpiegituren erabilera arautzen du. Mesedez, egin klik estekan, irakurri
           eta onartu testua.'
         read_tou: Irakurri ditut eta onartzen ditut Erabilera Baldintzak
-        consider_pd: Goikoaz gain, nire ekarpenak Domeinu Publikoan egon behar direla
-          uste dut
-        consider_pd_why: zer da hau?
         guidance_info_html: 'Termino hauek ulertzen laguntzeko informazioa: %{readable_summary_link}
           eta %{informal_translations_link}'
         informal_translations: itzulpen informalak
@@ -2507,7 +2503,6 @@ eu:
       my notes: Nire oharrak
       my messages: Nire mezuak
       my profile: Nire profila
-      my settings: Nire Hobespenak
       my comments: Nire Iruzkinak
       my_preferences: Nire hobespenak
       my_dashboard: Nire Arbela
@@ -2567,10 +2562,10 @@ eu:
       show:
         title: Erabiltzaileak
         heading: Erabiltzaileak
-        empty: No matching users found
       page:
         confirm: Berretsi Hautatutako Erabiltzaileak
         hide: Ezkutatu Hautatutako Erabiltzaileak
+        empty: No matching users found
       user:
         summary_html: '%{date}n %{ip_address}tik %{name} sortu da'
         summary_no_ip_html: '%{name} %{date} datan sortua'
index 37b2849d0dd702d49ff4cef94a06393fd34bce50..2f8f1aa8d681a0704a6d9bbd5eeacf30fc0006da 100644 (file)
@@ -277,9 +277,8 @@ fa:
         comment: نظر
         full: یادداشت کامل
   accounts:
-    edit:
+    show:
       title: ویرایش حساب
-      my settings: تنظیمات من
       current email address: رایانامهٔ کنونی
       external auth: احراز هویت خارجی
       openid:
@@ -351,9 +350,6 @@ fa:
           ارائه‌شده از سوی OSMF نافذ است. لطفاً روی پیوند کلیک کنید، متن را بخوانید
           و آن را بپذیرید.
         read_tou: شرایط استفاده را خوانده‌ام و آن را می‌پذیرم
-        consider_pd: علاوه بر موارد بالا، می‌پذیرم که مشارکت‌هایم در مالکیت عمومی
-          باشد.
-        consider_pd_why: این چیست؟
         continue: ادامه
         you need to accept or decline: برای ادامه لطفاً بخوانید و سپس شرایط جدید مشارکت‌کننده
           را بپذیرید یا رد کنید.
@@ -368,6 +364,19 @@ fa:
         terms_declined_html: از اینکه تصمیم گرفته‌اید شرایط جدید مشارکت‌کننده را نپذیرید،
           متأسف هستیم. برای اطلاعات بیشتر، لطفاً %{terms_declined_link} را ببینید.
         terms_declined_link: این صفحهٔ ویکی
+    pd_declarations:
+      show:
+        title: مشارکت‌های من را در مالکیت عمومی در نظر بگیر
+        consider_pd: من مشارکت‌های خود را در مالکیت عمومی در نظر می‌گیرم
+        consider_pd_why: چرا باید بخواهم که مشارکت‌هایم در مالکیت عمومی قرار گیرد؟
+        confirm: تأیید
+      create:
+        successfully_declared: شما با موفقیت اعلام کردید که ویرایش‌های خود را در مالکیت
+          عمومی در نظر می‌گیرید.
+        already_declared: شما هم‌اکنون اعلام کرده‌اید که ویرایش‌های خود را در مالکیت
+          عمومی در نظر می‌گیرید.
+        did_not_confirm: شما این که مشارکت‌هایتان در مالکیت عمومی قرار گیرد را تأیید
+          نکرده‌اید.
   browse:
     deleted_ago_by_html: '%{time_ago} %{user} حذفش کرد'
     edited_ago_by_html: '%{time_ago} %{user} ویرایشش کرد'
@@ -869,6 +878,7 @@ fa:
           bridleway: راه حیوان رو
           bus_guideway: خط هدایت کننده اتوبوس
           bus_stop: ایستگاه اتوبوس
+          busway: مسیر اتوبوس
           construction: راه در دست ساخت
           corridor: راهرو
           cycleway: مسیر دوچرخه
@@ -1754,7 +1764,7 @@ fa:
       failure: ذخیره‌سازی نمایه انجام نشد.
   sessions:
     new:
-      tab_title: ورود
+      tab_title: ورود به سامانه
       email or username: نشانی رایانامه یا نام کاربری
       password: رمز عبور
       remember: مرا به خاطر بسپار
@@ -2187,6 +2197,7 @@ fa:
       read_gpx: خواندن ردهای جی‌پی‌اس خصوصی
       write_gpx: بارگذاری ردهای جی‌پی‌اس
       write_notes: اصلاح یادداشت‌ها
+      write_blocks: ایجاد و برداشتن قطع دسترسی‌های کاربر
       read_email: خواندن نشانی رایانامهٔ کاربر
       skip_authorization: برنامه با تأیید خودکار
   oauth2_applications:
@@ -2240,6 +2251,7 @@ fa:
   users:
     new:
       title: ثبت نام
+      tab_title: ثبت نام
       no_auto_account_create: متأسفانه در حال حاضر نمی‌توانیم به‌صورت خودکار برای
         شما حساب کاربری بسازیم.
       about:
@@ -2263,7 +2275,7 @@ fa:
       my notes: یادداشت‌های من
       my messages: پیام‌های من
       my profile: نمایهٔ من
-      my settings: تنظیمات من
+      my_account: حساب من
       my comments: نظرات من
       my_preferences: ترجیحات من
       my_dashboard: پیشخوان من
@@ -2322,13 +2334,25 @@ fa:
       show:
         title: کاربران
         heading: کاربران
-        empty: هیچ کاربر منطبقی یافت نشد
+        select_status: انتخاب وضعیت
+        states:
+          pending: در انتظار
+          active: فعال
+          confirmed: تأییدشده
+          suspended: تعلیق‌شده
+          deleted: حذف‌شده
+        ip_address: نشانی آی‌پی
+        search: جستجو
       page:
         confirm: تأیید کاربران انتخاب‌شده
         hide: پنهان‌کردن کاربران انتخاب‌شده
+        empty: هیچ کاربر منطبقی یافت نشد
       user:
         summary_html: '%{name} با آی‌پی %{ip_address} در %{date} ایجاد شد'
         summary_no_ip_html: '%{name} در %{date} ایجاد شد'
+    comments:
+      index:
+        diary_entries: مدخل‌های روزنوشت
     changeset_comments:
       page:
         when: زمان
@@ -2641,6 +2665,9 @@ fa:
       show_address: نمایش نشانی
       query_features: پرس‌وجو برای عارضه‌ها
       centre_map: اینجا را مرکز نقشه کن
+    home:
+      marker_title: محل خانهٔ من
+      not_set: محل خانهٔ حساب شما تنظیم نشده است
   redactions:
     edit:
       heading: ویرایش پاک‌سازی
index e2a8c38ac2860f897e1d8bd3d5474eacbfc55fe7..9f6ee296ade839c7f4168880f358caa463b23974 100644 (file)
@@ -288,9 +288,8 @@ fi:
         comment: Kommentti
         full: Koko karttailmoitus
   accounts:
-    edit:
+    show:
       title: Asetusten muokkaus
-      my settings: Käyttäjäasetukset
       current email address: Nykyinen sähköpostiosoite
       external auth: Kolmannen osapuolen tunnukset kirjautuessa
       openid:
@@ -354,9 +353,6 @@ fi:
           tarjoaman infrastruktuurin käyttöä. Napsauta linkkiä, lue ja suostu tekstin
           sisältöön.
         read_tou: Olen lukenut ja hyväksynyt käyttöehdot
-        consider_pd: Edellisen lisäksi katson lisäyksieni olevan tekijänoikeudettomia
-          Public Domain -lisenssillä
-        consider_pd_why: Mikä tämä on?
         guidance_info_html: 'Vaihtoehtoisia lukutapoja: %{readable_summary_link} ja
           %{informal_translations_link}'
         readable_summary: selkokielinen yhteenveto (englanniksi)
@@ -2452,7 +2448,6 @@ fi:
       email_help:
         privacy_policy: tietosuojakäytäntö
         html: Osoitetta ei näytetä julkisesti, lisätietoja on sivulla %{privacy_policy_link}.
-      consider_pd_html: Pidän tuotoksiani %{consider_pd_link}.
       or: tai
       use external auth: Kirjaudu toisen palvelun tunnuksilla
     no_such_user:
@@ -2467,7 +2462,6 @@ fi:
       my notes: Omat karttailmoitukset
       my messages: Viestit
       my profile: Käyttäjäsivu
-      my settings: Käyttäjäasetukset
       my comments: Omat kommentit
       my_preferences: Asetukset
       my_dashboard: Tapahtumat
@@ -2526,10 +2520,10 @@ fi:
       show:
         title: Käyttäjät
         heading: Käyttäjät
-        empty: Käyttäjiä ei löytynyt.
       page:
         confirm: Vahvista valitut käyttäjät
         hide: Piilota valitut käyttäjät
+        empty: Käyttäjiä ei löytynyt.
       user:
         summary_html: '%{name} luotu %{date} osoitteesta %{ip_address}'
         summary_no_ip_html: '%{name} luotu %{date}'
index 39c4dd678c32b3067f59987c0f25ddfd101d94f6..0c7ae23eb4ef6af17dbecaec4ef1f6bd8e424f6b 100644 (file)
@@ -180,9 +180,8 @@ fit:
         comment: Kommentti
         full: Koko karttailmoitus
   accounts:
-    edit:
+    show:
       title: Mookkaa konttua
-      my settings: Minun inställninkit
       current email address: 'Nykynen e-postiatressi:'
       save changes button: Säästä muutokset
     go_public:
@@ -804,7 +803,6 @@ fit:
       my notes: Minun karttailmoitukset
       my messages: Minun viestit
       my profile: Minun profiili
-      my settings: Minun inställninkit
       my comments: Minun kommentit
       send message: Lähätä viesti
       edits: Mookkaukset
index 045f20d97dbc9be5bc4bed3fbbe11ab8fb7df976..1f8595fb38124260311f54d4def5cba553b1608b 100644 (file)
@@ -362,9 +362,8 @@ fr:
         comment: Commentaire
         full: Note complète
   accounts:
-    edit:
+    show:
       title: Modifier le compte
-      my settings: Mes paramètres
       current email address: Adresse de courriel actuelle
       external auth: Authentification externe
       openid:
@@ -450,10 +449,6 @@ fr:
           autres infrastructures fournies par OSMF. Veuillez cliquer sur le lien pour
           les lire et accepter le texte.
         read_tou: J’ai lu et j’accepte les Conditions d’utilisation
-        consider_pd: En plus de l’accord ci-dessus, je considère mes contributions
-          comme étant dans le domaine public.
-        consider_pd_why: qu’est-ce que ceci ?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Informations pour aider à comprendre ces termes : un
           %{readable_summary_link} et quelques %{informal_translations_link}'
         readable_summary: résumé lisible par un humain
@@ -475,6 +470,9 @@ fr:
           consulter %{terms_declined_link}.
         terms_declined_link: cette page du wiki
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: Supprimé %{time_ago} par %{user}
     edited_ago_by_html: Modifié %{time_ago} par %{user}
@@ -2902,7 +2900,7 @@ fr:
       openid: Se connecter avec OpenStreetMap
       read_prefs: Lire les préférences de l’utilisateur
       write_prefs: Modifier les préférences de l’utilisateur
-      write_diary: créer des entrées du journal et des commentaires
+      write_diary: Écrire dans le journal et créer des commentaires
       write_api: Modifier la carte
       read_gpx: Lire les traces GPC privées
       write_gpx: Mettre à jour les traces GPC
@@ -3003,8 +3001,6 @@ fr:
           sur les adresses e-mail
         html: Votre adresse n’est pas affichée publiquement, consultez notre %{privacy_policy_link}
           pour plus d’informations.
-      consider_pd_html: Je considère que mes contributions se situent dans le %{consider_pd_link}.
-      consider_pd: domaine public
       or: ou
       use external auth: ou vous pouvez vous connecter avec un service tiers.
     no_such_user:
@@ -3020,7 +3016,6 @@ fr:
       my notes: Mes notes
       my messages: Mes messages
       my profile: Mon profil
-      my settings: Mes options
       my comments: Mes commentaires
       my_preferences: Mes préférences
       my_dashboard: Mon tableau de bord
@@ -3099,13 +3094,13 @@ fr:
       show:
         title: Utilisateurs
         heading: Utilisateurs
-        empty: Aucun utilisateur correspondant n’a été trouvé
       page:
         found_users:
           one: '%{count} utilisateur trouvé'
           other: '%{count} utilisateurs trouvés'
         confirm: Confirmer les utilisateurs sélectionnés
         hide: Masquer les utilisateurs sélectionnés
+        empty: Aucun utilisateur correspondant n’a été trouvé
       user:
         summary_html: '%{name} créé depuis %{ip_address} le %{date}'
         summary_no_ip_html: '%{name} créé le %{date}'
index 67b4187409b6f849a44acb0f4eed47dc02fa81d6..251d737de69b465c78994844f02ccfb88f150633 100644 (file)
@@ -214,9 +214,8 @@ fur:
         comment: Coment
         full: Note complete
   accounts:
-    edit:
+    show:
       title: Modifiche profîl
-      my settings: Mês impostazions
       current email address: Direzion di pueste eletroniche atuâl
       external auth: Autenticazion esterne
       openid:
@@ -251,9 +250,6 @@ fur:
       show:
         title: Tiermins
         heading: Tiermins
-        consider_pd: In plui di dut ce che al è parsore, jo o consideri i miei contribûts
-          come di Public Domini
-        consider_pd_why: ce isal chest?
         continue: Va indevant
         you need to accept or decline: Par plasê lei e po acete o refude i gnûfs Tiermins
           par Contribuî par lâ indevant.
@@ -1423,7 +1419,6 @@ fur:
       my notes: Lis mês notis
       my messages: I miei messaçs
       my profile: Il gno profîl
-      my settings: Impostazions
       my comments: I mei coments
       my_preferences: Preferencis
       my_dashboard: La mê pagjine iniziâl
index cd3de2cd51b78314154b5365357d2500ef11ddb6..d8a9f2f03a334753e71950f84a3f378234b455aa 100644 (file)
@@ -4,6 +4,7 @@
 # Author: Danieldegroot2
 # Author: PiefPafPier
 # Author: Robin van der Vliet
+# Author: Wutsje
 ---
 fy:
   time:
@@ -230,9 +231,8 @@ fy:
         comment: Reäksje
         full: Folsleine notysje
   accounts:
-    edit:
+    show:
       title: Akkount bewurkje
-      my settings: Myn ynstellings
       current email address: Hjoeddeisk e-mailadres
       external auth: Autentifikaasje om utens
       openid:
@@ -298,9 +298,6 @@ fy:
           ynfrastruktuer beskikber steld troch de OSMF. Klik op 'e keppeling, lês
           de tekst en gean akkoart.
         read_tou: Ik haw de Gebrûksbetingsten lêzen en gean der akkoart mei
-        consider_pd: Njonken it boppesteande, beskôgje ik myn bydragen as part fan
-          it Publyk Domein
-        consider_pd_why: wat is dat?
         continue: Fierder
         you need to accept or decline: Lês de nije Bydragersbetingsten; jo kinne fierder
           nei it akseptearjen of ôfwizen derfan.
@@ -2193,7 +2190,6 @@ fy:
       my notes: Myn notysjes
       my messages: Myn berjochten
       my profile: Myn profyl
-      my settings: Myn ynstellings
       my comments: Myn reäksjes
       my_preferences: Myn foarkarren
       my_dashboard: Myn oersjochpaniel
@@ -2251,10 +2247,10 @@ fy:
       show:
         title: Meidoggers
         heading: Meidoggers
-        empty: Gjin oerienkommende meidoggers fûn
       page:
         confirm: Selektearre meidoggers befêstigje
         hide: Selektearre meidoggers ferbergje
+        empty: Gjin oerienkommende meidoggers fûn
       user:
         summary_html: '%{name} oanmakke fan %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} oanmakke op %{date}'
@@ -2384,6 +2380,7 @@ fy:
       open_title: 'Unoploste notysje #%{note_name}'
       closed_title: 'Oploste notysje #%{note_name}'
       hidden_title: 'Ferburgen notysje #%{note_name}'
+      description_when_author_is_deleted: wiske
       report: dizze notysje melde
       anonymous_warning: Dizze notysje befettet reäksjes fan anonime meidoggers dy't
         apart neigien wurde moatte.
index 6cf3385a1cf0446dbf44fc8402c4102ad526335a..4cc8350dabb84a06f4460e38ed39ac5da697ef69 100644 (file)
@@ -181,9 +181,8 @@ ga:
         comment: Nóta tráchta
         full: An nóta iomlán
   accounts:
-    edit:
+    show:
       title: Cuir an cuntas in eagar
-      my settings: Mo chuid socruithe
       current email address: An seoladh ríomhphoist reatha
       external auth: Fíordheimhniú Seachtrach
       openid:
@@ -201,7 +200,6 @@ ga:
       show:
         title: Téarmaí
         heading: Téarmaí
-        consider_pd_why: céard é seo?
         legale_select: 'Tír chónaithe:'
         legale_names:
           france: An Fhrainc
@@ -1630,7 +1628,6 @@ ga:
       my notes: Mo Nótaí
       my messages: Mo Theachtaireachtaí
       my profile: Mo Phróifíl
-      my settings: Mo Shocruithe
       my comments: Mo Nótaí Tráchta
       blocks on me: Baic Orm
       blocks by me: Baic a Rinne Mé
index bb82283a036ab2fd2450168cc39cb82b336d9623..0a21baee2e7f92d08f4b8f5a733451f0943c3790 100644 (file)
@@ -79,9 +79,8 @@ gcf:
       entry:
         comment: Komantasyon
   accounts:
-    edit:
+    show:
       title: Modifyé kont a-w la
-      my settings: Mes options
       openid:
         link text: Ka sa yé?
       contributor terms:
@@ -605,7 +604,6 @@ gcf:
       my edits: Édision an mwen
       my traces: Chimen an mwen
       my messages: Sé mésaj a-w la
-      my settings: Opsion an mwen
       my_preferences: Sa ou simyé
       send message: Voyé on mésaj
       diary: Jounal
index 98f6cda6a9a9ac8fd3a0215a1a0329b4c647d0a7..535298ecd9125c6508928295eb7f60c968b6acf3 100644 (file)
@@ -239,9 +239,8 @@ gd:
         comment: Beachd
         full: Nòta slàn
   accounts:
-    edit:
+    show:
       title: Deasaich an cunntas
-      my settings: Na roghainnean agam
       current email address: An seòladh puist-d làithreach
       external auth: Dearbhadh taobh a-muigh
       openid:
@@ -273,9 +272,6 @@ gd:
         title: Teirmichean
         heading: Teirmichean
         heading_ct: Teirmichean a' chom-pàirtiche
-        consider_pd: A bharrachd air an aonta gu h-àrd, aontaichidh mi gun dèid na
-          bheir mi dhuibh 'nam cho-thabhartaiche a chur sa Public Domain
-        consider_pd_why: Dè th`ann?
         cancel: Sguir dheth
         you need to accept or decline: Feuch an leugh thu teirmichean ùra a' chom-pàirtiche
           agus an uairsin aontaich no nach gabh riutha mus lean thu air adhart.
@@ -1738,7 +1734,6 @@ gd:
       my notes: Na nòtaichean agam
       my messages: Na teachdaireachdan agam
       my profile: A' phròifil agam
-      my settings: Na roghainnean agam
       my comments: Na beachdan agam
       blocks on me: Bacaidhean orm
       blocks by me: Bacaidhean a rinn mi
@@ -1791,10 +1786,10 @@ gd:
       show:
         title: Cleachdaichean
         heading: Cleachdaichean
-        empty: Cha deach cleachdaiche a fhreagras a lorg
       page:
         confirm: Dearbhaich na cleachdaichean a thagh thu
         hide: Falaich na cleachdaichean a thagh thu
+        empty: Cha deach cleachdaiche a fhreagras a lorg
       user:
         summary_html: Chaidh %{name} a chruthachadh o %{ip_address} %{date}
         summary_no_ip_html: Chaidh %{name} a chruthachadh %{date}
index af636f9e71394aa665d9f64e428e48369c2f8f64..4e4c627e1843b022ccd1048b7f7d4dc0161a7d55 100644 (file)
@@ -105,6 +105,7 @@ gl:
         allow_write_prefs: modificar as súas preferencias de usuario
         allow_write_diary: crear entradas de diario e comentarios
         allow_write_api: modificar o mapa
+        allow_write_changeset_comments: comentar os conxuntos de cambios
         allow_read_gpx: ler as súas pistas GPS privadas
         allow_write_gpx: subir pistas GPS
         allow_write_notes: modificar notas
@@ -260,9 +261,8 @@ gl:
         comment: Comentario
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Editar a conta
-      my settings: Os meus axustes
       current email address: Enderezo de correo electrónico actual
       external auth: Autenticación externa
       openid:
@@ -340,10 +340,6 @@ gl:
         tou_explain_html: Estes %{tou_link} rexen o uso da páxina/sitio web e outras
           infraestruturas fornecidas pola OSMF.  Preme na ligazón, le e acepta o texto.
         read_tou: Lin e acepto os Termos de uso
-        consider_pd: Ademais do anterior, coido que as miñas contribucións están baixo
-          dominio público
-        consider_pd_why: que é isto?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Información para axudar a comprender estes termos: un
           %{readable_summary_link} e algunhas %{informal_translations_link}'
         readable_summary: resumo lexible por humanos
@@ -364,6 +360,9 @@ gl:
           dos colaboradores. Para obter máis información, consulta %{terms_declined_link}.
         terms_declined_link: esta páxina do wiki
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: Borrado %{time_ago} por %{user}
     edited_ago_by_html: Editado %{time_ago} por %{user}
@@ -2795,6 +2794,7 @@ gl:
       write_prefs: Modificar preferencias de usuario
       write_diary: Crear entradas de diario e comentarios
       write_api: Modificar o mapa
+      write_changeset_comments: Comentar os conxuntos de cambios
       read_gpx: Ler pistas GPS privadas
       write_gpx: Subir pistas GPS
       write_notes: Modificar notas
@@ -2892,8 +2892,6 @@ gl:
           unha sección sobre os enderezos de correo electrónico
         html: O teu enderezo non se mostra publicamente; consulta a nosa %{privacy_policy_link}
           para obter máis información.
-      consider_pd_html: Acepto que as miñas contribucións estean no %{consider_pd_link}.
-      consider_pd: dominio publico
       or: ou
       use external auth: ou rexístrate cun servizo de terceiros
     no_such_user:
@@ -2909,7 +2907,6 @@ gl:
       my notes: As miñas notas do mapa
       my messages: As miñas mensaxes
       my profile: O meu perfil
-      my settings: Os meus axustes
       my comments: Os meus comentarios
       my_preferences: As miñas preferencias
       my_dashboard: O meu panel de control
@@ -2990,13 +2987,13 @@ gl:
       show:
         title: Usuarios
         heading: Usuarios
-        empty: Non se atoparon usuarios que coincidisen
       page:
         found_users:
           one: Atopouse %{count} usuario
           other: Atopáronse %{count} usuarios
         confirm: Confirmar os usuarios seleccionados
         hide: Agochar os usuarios seleccionados
+        empty: Non se atoparon usuarios que coincidisen
       user:
         summary_html: '%{name} creado dende %{ip_address} o %{date}'
         summary_no_ip_html: '%{name} creado o %{date}'
@@ -3241,7 +3238,6 @@ gl:
         url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
       counter_warning_forum_link:
         text: a comunidade pode axudarche
-        url: https://community.openstreetmap.org/
       advice: A túa nota será pública e poderá empregarse para actualizar o mapa;
         por conseguinte, non insiras información persoal, nin datos de mapas protexidos
         por dereitos de autoría ou listaxes de directorios.
index 0c8f0cad78ccb36298837001a2e6a08c42cc5805..373efcd8a8679a4f87633b792f992c909eefc67c 100644 (file)
@@ -114,7 +114,7 @@ gu:
       entry:
         comment: ટિપ્પણી
   accounts:
-    edit:
+    show:
       openid:
         link text: આ શું છે?
       contributor terms:
index 681ed045ff23b25f4e0bdeebc9a7df6c36cc0959..382a6c15689f522510dc04ecc9de10a8b8b7c0e7 100644 (file)
@@ -301,9 +301,8 @@ he:
         comment: תגובה
         full: הערה מלאה
   accounts:
-    edit:
+    show:
       title: עריכת חשבון
-      my settings: ההגדרות שלי
       current email address: כתובת דוא״ל נוכחית
       external auth: אימות חיצוני
       openid:
@@ -372,9 +371,6 @@ he:
         tou_explain_html: '%{tou_link} האלה מאגדים את תנאי השימוש באתר ובתשתית נוספת
           שמסופקת על־ידי ה־OSMF. נא ללחוץ על הקישור, לקרוא ולהסכים לטקסט.'
         read_tou: קראתי את תנאי השימוש ואני מסכימ/ה לתנאים אלו
-        consider_pd: בנוסף לכתוב לעיל, מבחינתי כל עריכותיי שייכות לנחלת הכלל
-        consider_pd_why: מה זה?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'מידע שיעזור להבין את המונחים האלה: %{readable_summary_link}
           וכמה %{informal_translations_link}'
         readable_summary: תקציר קריא לבני־אדם
@@ -395,6 +391,9 @@ he:
           נא לפנות אל %{terms_declined_link}
         terms_declined_link: דף הוויקי הזה
         terms_declined_url: https://wiki.openstreetmap.org/wiki/He:Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: נמחקה %{time_ago} על־ידי %{user}
     edited_ago_by_html: נערכה %{time_ago} על־ידי %{user}
@@ -2796,8 +2795,6 @@ he:
         privacy_policy_title: מדיניות הפרטיות של OSMF כוללת סעיף על כתובות דוא״ל
         html: הכתובת שלך אינה מוצגת בפומבי, ר' את %{privacy_policy_link} שלנו למידע
           נוסף.
-      consider_pd_html: מבחינתי, התרומות שלי נמצאות ב%{consider_pd_link}.
-      consider_pd: נחלת הכלל
       or: או
       use external auth: לחלופין, אפשר להשתמש בצד שלישי כדי להירשם
     no_such_user:
@@ -2813,7 +2810,6 @@ he:
       my notes: הערות המפה שלי
       my messages: ההודעות שלי
       my profile: הפרופיל שלי
-      my settings: ההגדרות שלי
       my comments: ההערות שלי
       my_preferences: ההעדפות שלי
       my_dashboard: לוח הבקרה שלי
@@ -2893,7 +2889,6 @@ he:
       show:
         title: משתמשים
         heading: משתמשים
-        empty: לא נמצאו משתמשים תואמים
       page:
         found_users:
           one: נמצא משתמש אחד
@@ -2902,6 +2897,7 @@ he:
           other: נמצאו %{count} משתמשים
         confirm: אישור משתמשים נבחרים
         hide: הסתרת משתמשים נבחרים
+        empty: לא נמצאו משתמשים תואמים
       user:
         summary_html: '%{name} נוצר מכתובת %{ip_address} ב־%{date}'
         summary_no_ip_html: '%{name} נוצר ב־%{date}'
@@ -3013,7 +3009,7 @@ he:
         ended: הסתיימה
         revoked_html: בוטלה על־ידי %{name}
         active: פעילה
-        active_until_read: פעיל עד לקריאה
+        active_until_read: פעילה עד לקריאה
         read_html: נקראה ב־%{time}
         time_in_future_title: '%{time_absolute}; ב־%{time_relative}'
         time_in_past_title: '%{time_absolute}; %{time_relative}'
@@ -3126,12 +3122,11 @@ he:
       intro: יש פה טעות או שחסר משהו? אנו מבקשים ממך לספר את זה לממפים אחרים. לשם
         כך צריך להזיז את הסמן למקום הנכון ולכתוב הערה שמסבירה את הבעיה.
       anonymous_warning_html: לא נכנסת לחשבון. נא %{log_in} או %{sign_up} לקבלת עדכונים
-        ×¢×\9c ×\94×\94ער×\94 ×©×\9c×\9a ×\95×\9c×¢×\96×\95ר ×\9c×\9eת×\9bנת×\99 ×\94×\9eפ×\95ת לפתור את זה.
+        ×¢×\9c ×\94×\94ער×\94 ×©×\9c×\9a ×\95×\9c×¢×\96×\95ר ×\9c×\9e×\9eפ×\99×\9d לפתור את זה.
       anonymous_warning_log_in: להיכנס לחשבון
       anonymous_warning_sign_up: להירשם
       counter_warning_forum_link:
         text: הקהילה יכולה לעזור לך
-        url: https://community.openstreetmap.org/
       advice: /start
       add: הוספת הערה
     new_readonly:
index 3aa0502814a24e7d7c4197aaf9c6b989e6dfa18c..35f5ba32f2164cdc005f3e96c95068e132464393 100644 (file)
@@ -250,7 +250,7 @@ hi:
         comment: टिप्पणी
         full: पूरा नोट
   accounts:
-    edit:
+    show:
       contributor terms:
         link text: यह क्या है?
       save changes button: बदलाव सहेजें
@@ -1000,10 +1000,13 @@ hi:
       show:
         title: सदस्य
         heading: सदस्य
-        empty: ऐसे कोई सदस्य नहीं मिले
+        states:
+          active: सक्रिय
+          deleted: हटाया गया
       page:
         confirm: इन सदस्यों को चुनें
         hide: इन सदस्यों को न दिखाएं
+        empty: ऐसे कोई सदस्य नहीं मिले
     changeset_comments:
       page:
         when: कब
index 63c5e76cbd5a54805e04af1279a8d53fe41e0cf9..7ddc1e2e56cfdc60ea08927a5738f8a2a466dd8c 100644 (file)
@@ -229,9 +229,8 @@ hr:
         comment: Komentar
         full: Cijela bilješka
   accounts:
-    edit:
+    show:
       title: Uredi korisnički račun
-      my settings: Moje postavke
       current email address: Trenutna adresa e-pošte
       openid:
         link text: što je ovo?
@@ -255,9 +254,6 @@ hr:
       show:
         title: Uvjeti doprinositelja
         heading: Uvjeti
-        consider_pd: Osim gore navedenog ugovora, smatram da su moji doprinosi u javnom
-          vlasništvu (Public Domain)
-        consider_pd_why: što je ovo?
         continue: Nastavi
         you need to accept or decline: Molim pročitaj, a zatim ili prihvati ili odbij
           nove Uvjete doprinošenja.
@@ -1517,7 +1513,6 @@ hr:
       my notes: Moje bilješke
       my messages: Moje poruke
       my profile: Moj profil
-      my settings: Moje postavke
       my comments: Moji komentari
       blocks on me: Osobne blokade
       blocks by me: Blokade koje sam postavio
@@ -1570,10 +1565,10 @@ hr:
       show:
         title: Korisnici
         heading: Korisnici
-        empty: Nema pronađenih odgovarajućih korisnika
       page:
         confirm: Potvrdi odabrane korisnike
         hide: Sakrij odabrane korisnike
+        empty: Nema pronađenih odgovarajućih korisnika
       user:
         summary_html: '%{name} napravljeno sa %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
index 11fae05f1a25c4408ac6a337e28d20757c31a930..4f50d020ce9fba2f977d74f06b37dd0a138b9d4a 100644 (file)
@@ -260,9 +260,8 @@ hsb:
         comment: Komentar
         full: Dospołna pokazka
   accounts:
-    edit:
+    show:
       title: Konto wobdźěłać
-      my settings: Moje nastajenja
       current email address: Aktualna e-mejlowa adresa
       external auth: Eksterna awtentifikacija
       openid:
@@ -305,9 +304,6 @@ hsb:
         heading: Wuměnjenja
         heading_ct: Wuměnjenja za sobuskutkowarjow
         read_tou: Sym wužiwanske wuměnjenja přečitał a sym z nimi přezjedny|přezjedna
-        consider_pd: Přidatnje k horjeka mjenowanym wuměnjenjam, mam swoje přinoški
-          za powšitkownosći wužitne.
-        consider_pd_why: Što to je?
         continue: Dale
         you need to accept or decline: Prošu přečitaj nowe wužiwarske wuměnjenja a
           akceptuj abo wotpokazaj je, prjedy hač dale činiš.
@@ -2292,7 +2288,6 @@ hsb:
       my notes: Moje pokazki
       my messages: Moje powěsće
       my profile: Mój profil
-      my settings: Moje nastajenja
       my comments: Moje komentary
       my_preferences: Moje preferency
       my_dashboard: Moja přehladna strona
@@ -2362,10 +2357,10 @@ hsb:
       show:
         title: Wužiwarjo
         heading: Wužiwarjo
-        empty: Žani wotpowědowacy wužiwarjo namakani
       page:
         confirm: Wubranych wužiwarjow wobkrućic
         hide: Wubranych wužiwarjow schować
+        empty: Žani wotpowědowacy wužiwarjo namakani
       user:
         summary_html: '%{name} wot %{ip_address} dnja %{date} wutworjeny'
         summary_no_ip_html: '%{name} dnja %{date} wutworjeny'
index 2f9d70fd3428244281cc9fab25ec346a52d60a65..ddb3382a770b0f595fddf8d0459810a450fbd118 100644 (file)
@@ -272,9 +272,8 @@ hu:
         comment: Hozzászólás
         full: Teljes jegyzet
   accounts:
-    edit:
+    show:
       title: Fiók szerkesztése
-      my settings: Személyes beállítások
       current email address: Jelenlegi e-mail-cím
       external auth: Külső hitelesítés
       openid:
@@ -349,9 +348,6 @@ hu:
           használatát ezek a %{tou_link} szabályozzák. Kérjük, kattints a linkre,
           majd olvasd el és fogadd el a szöveget.
         read_tou: Elolvastam és elfogadom a felhasználási feltételeket
-        consider_pd: A fenti megállapodáson felül, a hozzájárulásaimat közkinccsé
-          nyilvánítom
-        consider_pd_why: mi ez?
         guidance_info_html: 'Információk a kifejezések megértéséhez: egy %{readable_summary_link}
           és néhány %{informal_translations_link}'
         readable_summary: ember által olvasható összefoglaló
@@ -2779,9 +2775,6 @@ hu:
           címekről szóló részt
         html: Címed nem jelenik meg nyilvánosan; további információért tekintsd meg
           a %{privacy_policy_link} oldalunkat.
-      consider_pd_html: Úgy vélem, hogy szerkesztéseim a %{consider_pd_link} kategóriába
-        tartoznak.
-      consider_pd: közkincs
       or: vagy
       use external auth: vagy használhatsz külső fiókokat a bejelentkezéshez
     no_such_user:
@@ -2797,7 +2790,6 @@ hu:
       my notes: Saját jegyzetek
       my messages: Üzenetek
       my profile: Profil
-      my settings: Személyes beállítások
       my comments: Saját hozzászólások
       my_preferences: Megjelenési beállítások
       my_dashboard: Irányítópult
@@ -2876,13 +2868,13 @@ hu:
       show:
         title: Felhasználók
         heading: Felhasználók
-        empty: Nem találtam egyező felhasználót
       page:
         found_users:
           one: '%{count} felhasználó található'
           other: '%{count} felhasználó található'
         confirm: Kijelölt felhasználók megerősítése
         hide: Kijelölt felhasználók elrejtése
+        empty: Nem találtam egyező felhasználót
       user:
         summary_html: '%{name} létrejött innen: %{ip_address}, ekkor: %{date}'
         summary_no_ip_html: '%{name} letrejött ekkor: %{date}'
index 0e09490f35ca2f83c08d8fb3fc6c93c1ff8c97fb..89c3643b1b5ca8507d11a41cf307b2688bbd78ea 100644 (file)
@@ -245,9 +245,8 @@ ia:
         comment: Commento
         full: Nota complete
   accounts:
-    edit:
+    show:
       title: Modificar conto
-      my settings: Mi parametros
       current email address: Adresse de e-mail actual
       external auth: Authentication externe
       openid:
@@ -325,10 +324,6 @@ ia:
           fornite per OSMF. Per favor, clicca sur le ligamine, lege le texto, e declara
           te de accordo.
         read_tou: Io ha legite e io accepta le Conditiones de uso
-        consider_pd: In addition a lo que precede, io considera mi contributiones
-          como essente in le dominio public
-        consider_pd_why: que es isto?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Information pro adjutar a comprender iste terminos: un
           %{readable_summary_link} e qualque %{informal_translations_link}'
         readable_summary: summario legibile per humanos
@@ -349,6 +344,9 @@ ia:
           Conditiones de contributor. Pro plus informationes, per favor vide %{terms_declined_link}.
         terms_declined_link: iste pagina wiki
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: Delite %{time_ago} per %{user}
     edited_ago_by_html: Modificate %{time_ago} per %{user}
@@ -2786,8 +2784,6 @@ ia:
           sur adresses de e-mail
         html: Tu adresse non es monstrate publicamente. Consulta nostre %{privacy_policy_link}
           pro plus information.
-      consider_pd_html: Io considera que mi contributiones es in le %{consider_pd_link}.
-      consider_pd: dominio public
       or: o
       use external auth: o usa un tertio pro aperir session
     no_such_user:
@@ -2803,7 +2799,6 @@ ia:
       my notes: Mi notas
       my messages: Mi messages
       my profile: Mi profilo
-      my settings: Mi parametros
       my comments: Mi commentos
       my_preferences: Mi preferentias
       my_dashboard: Mi pannello
@@ -2882,13 +2877,13 @@ ia:
       show:
         title: Usatores
         heading: Usatores
-        empty: Nulle usator correspondente trovate
       page:
         found_users:
           one: '%{count} usator trovate'
           other: '%{count} usatores trovate'
         confirm: Confirmar usatores seligite
         hide: Celar usatores seligite
+        empty: Nulle usator correspondente trovate
       user:
         summary_html: '%{name} create ab %{ip_address} le %{date}'
         summary_no_ip_html: '%{name} create le %{date}'
index 9f5e391ec48e461f2c3c224665a6f4f0c745bca6..4aeadf41dbea22814446ed91c9439a4152b007f6 100644 (file)
@@ -265,9 +265,8 @@ id:
         comment: Komentar
         full: Catatan lengkap
   accounts:
-    edit:
+    show:
       title: Edit akun
-      my settings: Pengaturan saya
       current email address: Alamat surel saat ini
       external auth: Autentikasi Eksternal
       openid:
@@ -344,9 +343,6 @@ id:
           lainnya yang disediakan oleh OSMF. Tolong tekan tautannya, baca dan setujui
           teksnya.'
         read_tou: Saya telah membaca dan menyetujui Ketentuan Penggunaan
-        consider_pd: Sebagai tambahan perjanjian di atas, saya menganggap kontribusi
-          saya berada di dalam Domain Publik
-        consider_pd_why: apa ini?
         guidance_info_html: 'Informasi untuk membantu Anda memahami ketentuan ini:
           %{readable_summary_link} dan %{informal_translations_link}'
         readable_summary: ringkasan dasar
@@ -2634,7 +2630,6 @@ id:
       my notes: Catatanku
       my messages: Pesanku
       my profile: Profilku
-      my settings: Pengaturanku
       my comments: Komentarku
       my_preferences: Preferensi Saya
       my_dashboard: Dasbor Saya
@@ -2710,10 +2705,10 @@ id:
       show:
         title: Pengguna
         heading: Pengguna
-        empty: Tidak ditemukan pengguna yang sesuai
       page:
         confirm: Konfirmasi Pengguna yang Dipilih
         hide: Sembunyikan Pengguna yang Dipilih
+        empty: Tidak ditemukan pengguna yang sesuai
       user:
         summary_html: '%{name} dibuat dari %{ip_address} pada %{date}'
         summary_no_ip_html: '%{name} dibuat pada %{date}'
index 1a22b562caefb067daa20e528256c820b4102792..44aa96529caf4cf5003b1bbb714e46041c2f4598 100644 (file)
@@ -259,9 +259,8 @@ is:
         comment: Athugasemd
         full: Allur minnispunkturinn
   accounts:
-    edit:
+    show:
       title: Stillingar
-      my settings: Mínar stillingar
       current email address: Núverandi póstfang
       external auth: Ytri auðkenning
       openid:
@@ -342,9 +341,6 @@ is:
         tou_explain_html: Þessi %{tou_link} stýra notkuninni á vefsvæðinu ásamt öðrum
           stoðkerfum OSMF. Smelltu á tengilinn, lestu síðan og samþykktu textann.
         read_tou: Ég hef lesið og samþykki notkunarskilmálana
-        consider_pd: Til viðbótar við ofangreint samkomulag, lít ég svo á að framlög
-          mín verði í almenningseigu (Public Domain)
-        consider_pd_why: hvað þýðir þetta?
         guidance_info_html: 'Upplýsingar sem hjálpa til við að skilja þessi hugtök:
           %{readable_summary_link} á mannamáli og nokkrar %{informal_translations_link}'
         readable_summary: læsilegt yfirlit
@@ -2793,9 +2789,6 @@ is:
           tölvupóstföng
         html: Netfangið þitt er ekki birt opinberlega, skoðaðu síðuna um %{privacy_policy_link}
           til að sjá nánari upplýsingar.
-      consider_pd_html: Ég lít svo á að framlög mín verði í %{consider_pd_link}.
-      consider_pd: almenningseign
-      consider_pd_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
       or: eða
       use external auth: eða nýskráð þig með utanaðkomandi þjónustu
     no_such_user:
@@ -2811,7 +2804,6 @@ is:
       my notes: Minnispunktarnir mínir
       my messages: Skilaboðin mín
       my profile: Notandasniðið mitt
-      my settings: Stillingarnar mínar
       my comments: Athugasemdir mínar
       my_preferences: Valmöguleikar
       my_dashboard: Stjórnborðið mitt
@@ -2889,13 +2881,13 @@ is:
       show:
         title: Notendur
         heading: Notendur
-        empty: Engir samsvarandi notendur fundust
       page:
         found_users:
           one: '%{count} notandi fannst'
           other: '%{count} notendur fundust'
         confirm: Staðfesta valda notendur
         hide: Fela valda notendur
+        empty: Engir samsvarandi notendur fundust
       user:
         summary_html: '%{name} var útbúinn frá %{ip_address} þann %{date}'
         summary_no_ip_html: '%{name} útbúinn þann %{date}'
index 5599657ce40ce125170d136ded4aaa92ec8f78e1..e027f941daea2a614eadc83e50cfa13ed616ebf2 100644 (file)
@@ -150,6 +150,7 @@ it:
         allow_write_prefs: modifica le sue preferenze utente
         allow_write_diary: creare pagine di diario e commenti
         allow_write_api: modificare la mappa
+        allow_write_changeset_comments: commentare i gruppi di modifiche
         allow_read_gpx: visualizza le sue tracce GPS private
         allow_write_gpx: carica tracce GPS
         allow_write_notes: modificare le note
@@ -305,9 +306,9 @@ it:
         comment: Commento
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Modifica profilo
-      my settings: Impostazioni
+      my_account: Il mio profilo
       current email address: Indirizzo email attuale
       external auth: Autenticazione esterna
       openid:
@@ -323,6 +324,9 @@ it:
           fossero di pubblico dominio.
         link: https://osmfoundation.org/wiki/Licence/Contributor_Terms/IT
         link text: che cos'è questo?
+        not_agreed_with_pd: Non hai dichiarato se considerare le tue modifiche come
+          fossero di pubblico dominio.
+        pd_link_text: dichiara
       save changes button: Salva modifiche
       delete_account: Elimina Utenza...
     go_public:
@@ -388,9 +392,6 @@ it:
           di altre infrastrutture fornite dalla OSMF. Clicca sul collegamento, leggi
           il testo e accetta.
         read_tou: Ho letto e accetto le Condizioni d'uso
-        consider_pd: In aggiunta a quanto sopra, considero i miei contributi come
-          fossero di pubblico dominio
-        consider_pd_why: cos'è questo?
         guidance_info_html: 'Informazioni per aiutarti a comprendere queste condizioni:
           un %{readable_summary_link} e alcune %{informal_translations_link}'
         readable_summary: riassunto leggibile da un essere umano
@@ -411,6 +412,20 @@ it:
           i nuovi termini di contribuzione. Per ulteriori informazioni consultare
           %{terms_declined_link}.
         terms_declined_link: questa pagina wiki
+    pd_declarations:
+      show:
+        title: Considera i miei contributi di pubblico dominio
+        consider_pd: Io considero i miei contributi di pubblico dominio
+        consider_pd_why: Perché dovrei volere che i miei contributi fossero di pubblico
+          dominio?
+        confirm: Conferma
+      create:
+        successfully_declared: Hai dichiarato di considerare le tue modifiche come
+          fossero di pubblico dominio.
+        already_declared: Hai già dichiarato di considerare le tue modifiche come
+          fossero di pubblico dominio.
+        did_not_confirm: Non hai confermato di considerare le tue modifiche come fossero
+          di pubblico dominio.
   browse:
     deleted_ago_by_html: Cancellato %{time_ago} da %{user}
     edited_ago_by_html: Modificato %{time_ago} da %{user}
@@ -480,6 +495,7 @@ it:
       feature_warning: Caricamento di %{num_features} caratteristiche, che possono
         rendere il tuo browser lento o che non risponde. Sei sicuro di voler visualizzare
         questi dati?
+      feature_error: 'Impossibile caricare gli elementi: %{message}'
       load_data: Carica dati
       loading: Caricamento in corso...
     tag_details:
@@ -1623,9 +1639,11 @@ it:
       reports: Segnalazioni
       last_updated: Ultima modifica
       last_updated_time_ago_user_html: '%{time_ago} da %{user}'
+      reporting_users: Utenti segnalatori
       reports_count:
         one: '%{count} segnalazione'
         other: '%{count} segnalazioni'
+      more_reporters: e altri %{count}
       reported_item: Elemento segnalato
       states:
         ignored: Ignorato
@@ -1660,6 +1678,8 @@ it:
       reopened: Lo stato del problema è stato impostato su ‘Aperto’
     comments:
       comment_from_html: Commento di %{user_link} il %{comment_created_at}
+      reassign_to_moderators: Riassegna il problema ai moderatori
+      reassign_to_administrators: Riassegna il problema agli amministratori
     reports:
       reported_by_html: Segnalato come %{category} da %{user} il %{updated_at}
     helper:
@@ -1738,6 +1758,13 @@ it:
     communities: Comunità
     learn_more: Ulteriori informazioni
     more: Altro
+    offline_flash:
+      osm_offline: Per permettere lo svolgimento di essenziali lavori di manutenzione,
+        il database di OpenStreetMap è attualmente offline.
+      osm_read_only: Per permettere lo svolgimento di essenziali lavori di manutenzione,
+        il database di OpenStreetMap è attualmente in modalità sola-lettura.
+      expected_restore_html: Si prevede che i servizi verranno ripristinati in %{time}.
+      announcement: Potete leggere l'annuncio qui.
   user_mailer:
     diary_comment_notification:
       description: 'Voce del diario OpenStreetMap #%{id}'
@@ -2815,10 +2842,12 @@ it:
       write_prefs: Modificare le preferenze dell'utente
       write_diary: Creare voci del diario e commenti
       write_api: Modificare la mappa
+      write_changeset_comments: Commentare i gruppi di modifiche
       read_gpx: Leggere tracciati GPS privati
       write_gpx: Caricare tracciati GPS
       write_notes: Modificare le note
       write_redactions: Rimuovere dati cartografici
+      write_blocks: Creare e revocare blocchi di utenze
       read_email: Leggere indirizzo di posta elettronica dell'utente
       consume_messages: Leggere, aggiornare lo stato e cancellare i messaggi dell'utente
       send_messages: Inviare messaggi privati ad altri utenti
@@ -2910,8 +2939,6 @@ it:
           sugli indirizzi e-mail
         html: Il tuo indirizzo non viene visualizzato pubblicamente, consulta la nostra
           %{privacy_policy_link} per ulteriori informazioni.
-      consider_pd_html: Considero i miei contributi in %{consider_pd_link}.
-      consider_pd: pubblico dominio
       or: o
       use external auth: o registrati tramite terze parti
     no_such_user:
@@ -2927,7 +2954,7 @@ it:
       my notes: Le mie note
       my messages: I miei messaggi
       my profile: Il mio profilo
-      my settings: Impostazioni
+      my_account: Il mio profilo
       my comments: I miei commenti
       my_preferences: Preferenze
       my_dashboard: La mia dashboard
@@ -3008,13 +3035,22 @@ it:
       show:
         title: Utenti
         heading: Utenti
-        empty: Nessun utente corrispondente trovato
+        select_status: Seleziona stato
+        states:
+          pending: In attesa
+          active: Attivo
+          confirmed: Confermato
+          suspended: Sospeso
+          deleted: Cancellato
+        ip_address: Indirizzo IP
+        search: Cerca
       page:
         found_users:
           one: '%{count} utente trovato'
           other: '%{count} utenti trovati'
         confirm: Conferma Utenti Selezionati
         hide: Nascondi Utenti Selezionati
+        empty: Nessun utente corrispondente trovato
       user:
         summary_html: '%{name} creato da %{ip_address} il %{date}'
         summary_no_ip_html: '%{name} creato il %{date}'
@@ -3461,6 +3497,9 @@ it:
       show_address: Mostra indirizzo
       query_features: Ricerca di elementi
       centre_map: Centra la mappa qui
+    home:
+      marker_title: La mia posizione di casa
+      not_set: La posizione di casa non è impostata per la tua utenza
   redactions:
     edit:
       heading: Modifica revisione
index a2216bdf02f0c10d769fd2345390d503724189e6..6c8ba09655124ec351f2de43e307128be1a50fe6 100644 (file)
@@ -287,9 +287,8 @@ ja:
         comment: コメント
         full: メモ全文
   accounts:
-    edit:
+    show:
       title: アカウントの編集
-      my settings: 設定
       current email address: 現在のメールアドレス
       external auth: 外部認証
       openid:
@@ -346,8 +345,6 @@ ja:
         read_ct: 私は以下の貢献者同意を読み終え、これに同意します
         tou_explain_html: これらの%{tou_link}では、OSMFによって提供されているウェブサイトおよびその他のインフラストラクチャの利用について定めています。リンクをクリックして、読み、文書に同意してください。
         read_tou: 私は利用規約を読み終え、これに同意します
-        consider_pd: 上記に加え、私の投稿をパブリック ドメインとします
-        consider_pd_why: これは何ですか?
         guidance_info_html: 'これらの用語を理解するのに役立つ情報: %{readable_summary_link} といくつかの %{informal_translations_link}'
         readable_summary: 人間が読める要約
         informal_translations: 非公式の翻訳
@@ -2544,8 +2541,6 @@ ja:
         privacy_policy: プライバシー・ポリシー
         privacy_policy_title: OSMFのプライバシーポリシー(メールアドレスに関するセクションを含む)
         html: あなたのアドレスは公開されません。詳細については、%{privacy_policy_link} をご覧ください。
-      consider_pd_html: 私の貢献は %{consider_pd_link} にあるとみなします。
-      consider_pd: パブリックドメイン
       or: または
       use external auth: サードパーティのアカウントでもログインできます。
     no_such_user:
@@ -2560,7 +2555,6 @@ ja:
       my notes: 自分のメモ
       my messages: 自分のメッセージ
       my profile: 自分のプロフィール
-      my settings: 設定
       my comments: 自分のコメント
       my_preferences: 個人設定
       my_dashboard: 私のダッシュボード
@@ -2625,10 +2619,10 @@ ja:
       show:
         title: 利用者
         heading: 利用者
-        empty: 該当する利用者が見つかりません
       page:
         confirm: 選択した利用者を承認
         hide: 選択した利用者を非表示
+        empty: 該当する利用者が見つかりません
       user:
         summary_html: '%{name} は %{ip_address}から%{date}に作成されました。'
         summary_no_ip_html: '%{name} は%{date}に作成されました。'
index ac2147b8256138e02b062bc938fd7ca3caf42353..b4be8dfe5f89ff775d35f6e04f96509c5c80b057 100644 (file)
@@ -120,9 +120,8 @@ ka:
       entry:
         comment: კომენტარი
   accounts:
-    edit:
+    show:
       title: ანგარიშის რედაქტირება
-      my settings: ჩემი პარამეტრები
       current email address: 'ელ-ფოსტის ამჟამინდელი მისამართი:'
       openid:
         link: http://wiki.openstreetmap.org/wiki/KA:OpenID
@@ -132,7 +131,6 @@ ka:
       save changes button: ცვლილებების შენახვა
     terms:
       show:
-        consider_pd_why: რა არის ეს?
         legale_select: 'გთხოვთ, აირჩიეთ თქვენი ქვეყანა:'
         legale_names:
           france: საფრანგეთი
@@ -945,7 +943,6 @@ ka:
     show:
       my diary: ჩემი დღიური
       my edits: ჩემი რედაქტირება
-      my settings: ჩემი პარამეტრები
       my comments: ჩემი კომენტარები
       send message: შეტყობინების გაგზავნა
       diary: დღიური
index 9e199c91ee50c467130943fc2bb7d0b29000cbcb..291862321ba2e75e1ce2acc85f2afe9e301066e2 100644 (file)
@@ -204,9 +204,8 @@ kab:
         comment: Awennit
         full: Tazmilt tummiḍt
   accounts:
-    edit:
+    show:
       title: Ẓreg amiḍan
-      my settings: Iɣewwaṛen-iw
       current email address: Tansa imayl n tura
       openid:
         link text: d acu-t wa?
@@ -223,7 +222,6 @@ kab:
       show:
         title: Tiwtilin n iwiziw
         heading: Tiwtilin n iwiziw
-        consider_pd_why: d acu-t wa?
         legale_select: 'Tamurt n tnezduɣt:'
         legale_names:
           france: Fṛansa
@@ -1115,7 +1113,6 @@ kab:
       my notes: Tizmilin-iw
       my messages: Iznan-iw
       my profile: Amaɣnu-iw
-      my settings: Iɣewwaṛen-iw
       my comments: Iwenniten-iw
       blocks on me: Asewḥel i y-iɛnan
       blocks by me: Asewḥel sɣur-i
@@ -1159,10 +1156,10 @@ kab:
       show:
         title: Iseqdacen
         heading: Iseqdacen
-        empty: Ulac aseqdac d-yefɣen deg unadi
       page:
         confirm: Sentem iseqdacen yettwafernen
         hide: Ffer iseqdacen yettwafernen
+        empty: Ulac aseqdac d-yefɣen deg unadi
       user:
         summary_html: '%{name} yettwarna si %{ip_address} di %{date}'
         summary_no_ip_html: '%{name} yettwarna di  %{date}'
index 64a3b1d29ceafdfe7cc79e4c00e97acaebb0ee03..9aa93ffbc2d830f7980fcc0c7e94d2d412e40b31 100644 (file)
@@ -198,8 +198,7 @@ kk-cyrl:
       entry:
         comment: Пікір
   accounts:
-    edit:
-      my settings: Баптауларым
+    show:
       current email address: Ағымдағы е-пошта мекенжайы
       openid:
         link text: бұл не?
@@ -227,7 +226,6 @@ kk-cyrl:
         cancel: Болдырмау
     terms:
       show:
-        consider_pd_why: бұл не?
         continue: Жалғастыру
         legale_names:
           france: Франция
@@ -1161,7 +1159,6 @@ kk-cyrl:
       my notes: Ескертпелерім
       my messages: Хаттарым
       my profile: Бейінім
-      my settings: Баптауларым
       my_preferences: Қалауларым
       send message: Хат жіберу
       diary: Күнделік
index 55724bf11d027b673d15685a6186df4bdde9e76a..c79716764ee6896c34dee33892ce2daddf79cf26 100644 (file)
@@ -96,7 +96,7 @@ km:
         languages: ភាសា​
         pass_crypt: ពាក្យ​សម្ងាត់
   accounts:
-    edit:
+    show:
       title: កែប្រែគណនី​
     update:
       success_confirm_needed: ព័ត៌មានអ្នកប្រើប្រាស់​ បានបន្ទាន់សម័យដោយជោគជ័យ​។ សូមពិនិត្យមើលអ៊ីមែលរបស់អ្នក
index 4327fb8e162e9307e4498bfbb4254f027aee697c..8471588f9fba3b9bd7da400dd65f6dd225aebce8 100644 (file)
@@ -188,9 +188,8 @@ kn:
         comment: ಅಭಿಪ್ರಾಯ
         full: ಪೂರ್ತಿ ಟಿಪ್ಪಣಿ
   accounts:
-    edit:
+    show:
       title: ಖಾತೆಯನ್ನು ಸಂಪಾದಿಸಿ
-      my settings: ನನ್ನ ಸೆಟ್ಟಿಂಗ್‌ಗಳು
       current email address: ಪ್ರಸ್ತುತ ಇಮೇಲ್ ವಿಳಾಸ
       external auth: ಬಾಹ್ಯ ದೃಢೀಕರಣ
       openid:
index ed9fbdb6728d98a1b104245940d1d13e5d201e19..6786b32f3c647513421aa85a2a9ef385db75dd0b 100644 (file)
@@ -273,9 +273,9 @@ ko:
         comment: 의견
         full: 전체 참고
   accounts:
-    edit:
+    show:
       title: 계정 편집
-      my settings: 프로필 설
+      my_account: 내 계
       current email address: 현재 이메일 주소
       external auth: 외부 인증
       openid:
@@ -333,8 +333,6 @@ ko:
         tou_explain_html: 이러한 %{tou_link}는 오픈스트리트맵 재단에서 제공하는 웹사이트 및 기타 인프라 사용을 관리합니다.
           링크를 클릭하여 텍스트를 읽고 동의하십시오.
         read_tou: 이용약관을 읽었으며 동의합니다
-        consider_pd: 위의 내용 외에도 내 기여가 퍼블릭 도메인에 있다고 간주합니다
-        consider_pd_why: 무엇인가요?
         guidance_info_html: '이러한 용어를 이해하는 데 도움이 되는 정보: %{readable_summary_link} /
           일부 %{informal_translations_link}'
         readable_summary: 해석 요약본
@@ -353,6 +351,10 @@ ko:
         terms_declined_html: 새 기여자 약관에 동의하지 않기로 결정하셨습니다. 자세한 내용은 %{terms_declined_link}를
           참조하세요.
         terms_declined_link: 이 위키 문서
+    pd_declarations:
+      show:
+        consider_pd: 내 기여를 퍼블릭 도메인에 속하는 것으로 간주합니다
+        confirm: 확인
   browse:
     deleted_ago_by_html: '%{time_ago}에 %{user}님이 삭제함'
     edited_ago_by_html: '%{time_ago}에 %{user}님이 편집함'
@@ -2483,6 +2485,7 @@ ko:
       write_gpx: GPS 궤적 업로드
       write_notes: 참고 수정
       write_redactions: 지도 데이터 삭제
+      write_blocks: 사용자 차단 생성 및 취소
       read_email: 사용자 이메일 주소 읽기
       consume_messages: 사용자 메시지 읽기, 상태 업데이트 및 삭제
       send_messages: 다른 사용자에게 개인 메시지 보내기
@@ -2560,8 +2563,6 @@ ko:
         privacy_policy: 개인정보처리방침
         privacy_policy_title: 이메일 주소 섹션을 포함한 OSMF 개인 정보 보호 정책
         html: 당신의 주소는 공개적으로 노출되지 않습니다. 자세한 내용은 %{privacy_policy_link}를 참조하세요.
-      consider_pd_html: 내 기여가 %{consider_pd_link}에 속함을 선언합니다.
-      consider_pd: 퍼블릭 도메인
       or: 혹은
       use external auth: 다른 제3자 로그인 방식 사용하기
     no_such_user:
@@ -2576,7 +2577,7 @@ ko:
       my notes: 내 참고
       my messages: 내 메시지
       my profile: 내 프로필
-      my settings: 프로필 설
+      my_account: 내 계
       my comments: 내 의견
       my_preferences: 내 환경 설정
       my_dashboard: 내 대시보드
@@ -2648,12 +2649,19 @@ ko:
       show:
         title: 사용자
         heading: 사용자
-        empty: 일치하는 사용자를 찾을 수 없습니다
+        states:
+          pending: 보류 중
+          confirmed: 확인됨
+          suspended: 정지됨
+          deleted: 삭제됨
+        ip_address: IP 주소
+        search: 검색
       page:
         found_users:
           other: 사용자 %{count}명 찾음
         confirm: 선택한 사용자 확인
         hide: 선택한 사용자 숨기기
+        empty: 일치하는 사용자를 찾을 수 없습니다
       user:
         summary_html: '%{name}님이 %{date}에 %{ip_address}에서 만들어짐'
         summary_no_ip_html: '%{name}이(가) %{date}에 만들어짐'
index 43308228b5704929767dff26dd161f53b1d1979b..dd6365aba0ecb1ffb0e84aed5e48e22018a9019d 100644 (file)
@@ -56,7 +56,7 @@ ksh:
         languages: Schprohche
         pass_crypt: Paßwoot
   accounts:
-    edit:
+    show:
       external auth: 'Donn övver en anndere Schtäll de Dahte för et Enlogge pröhve
         lasse:'
     terms:
index d00a6f986e03363c3ad2ed6054d87b15934630de..7aeda916700d5114fa26c18d744700ca196d0dd5 100644 (file)
@@ -244,9 +244,8 @@ ku-Latn:
         comment: Şîrove
         full: Temamiya notê
   accounts:
-    edit:
+    show:
       title: Hesabê biguherîne
-      my settings: Hevyazên min
       current email address: Navnîşana e-nameyê yê niha
       external auth: Teyîdkirina xaricî
       openid:
@@ -316,9 +315,6 @@ ku-Latn:
           OSMF ve tê temînkirin bi rê ve dibe. Ji kerema xwe bitikîne ser lînkê, nivîsê
           bixwîne û qebûl bike.
         read_tou: Min Şertûmercên Bikaranînê xwend û qebûl kir
-        consider_pd: Tevî evên li jorê, tu dikarî bibijêrî ku beşdariyên te wek Malê
-          Giştî (malê ku ne aîdî şexsekî ye) were qebûlkirin.
-        consider_pd_why: Ev çi ye?
         readable_summary: kurteya xwendinbar ê li gor însanan
         informal_translations: tercimeyên nefermî
         continue: Dewam bike
@@ -2294,7 +2290,6 @@ ku-Latn:
       my notes: Notên min
       my messages: Peyamên min
       my profile: Profîla min
-      my settings: Hevyazên min
       my comments: Şîroveyên min
       my_preferences: Tercîhên min
       my_dashboard: Panela Kontrolê
@@ -2353,10 +2348,10 @@ ku-Latn:
       show:
         title: Bikarhêner
         heading: Bikarhêner
-        empty: Bikarhênerek ku lê were nehate dîtin
       page:
         confirm: Bikarhênerên bijartî bipejirîne
         hide: Bikarhênerên bijartî veşêre
+        empty: Bikarhênerek ku lê were nehate dîtin
       user:
         summary_html: '%{name} ji aliyê %{ip_address} ve di %{date} de hate çêkirin'
         summary_no_ip_html: '%{name} di %{date} de hate çêkirin'
index 07093d507a998ff37ebd86c3ab75a8b39670d75d..4e7eb351e11be30083fa5b8e91b47ca66583491d 100644 (file)
@@ -244,9 +244,8 @@ lb:
         comment: Bemierkung
         full: Vollstännegen Hiweis
   accounts:
-    edit:
+    show:
       title: Benotzerkont änneren
-      my settings: Meng Astellungen
       current email address: Aktuell E-Mail-Adress
       external auth: Extern Authentifikatioun
       openid:
@@ -302,9 +301,6 @@ lb:
     terms:
       show:
         heading: Bedingungen
-        consider_pd: Zousätzlech zu den uewe genannte Konditioune betruechten ech
-          meng Bäiträg als gemengfräi (domaine public).
-        consider_pd_why: wat ass dat?
         informal_translations: informell Iwwersetzungen
         continue: Weider
         cancel: Ofbriechen
@@ -315,6 +311,9 @@ lb:
           rest_of_world: Rescht vun der Welt
       terms_declined_flash:
         terms_declined_link: dës Wiki-Säit
+    pd_declarations:
+      show:
+        confirm: Confirméieren
   browse:
     deleted_ago_by_html: '%{time_ago} vum %{user} geläscht'
     edited_ago_by_html: '%{time_ago} vum %{user} geännert'
@@ -888,6 +887,7 @@ lb:
           bridleway: Wee fir Päerd
           bus_guideway: Busspur
           bus_stop: Busarrêt
+          busway: Busspuer
           construction: Autobunn (am Bau)
           corridor: Couloir
           crossing: Kräizung
@@ -2227,8 +2227,8 @@ lb:
   application:
     settings_menu:
       account_settings: Astellunge vum Benotzerkont
-      oauth2_applications: OAuth 2 Applikatiounen
-      oauth2_authorizations: OAuth 2 Autorisatiounen
+      oauth2_applications: OAuth-2-Applikatiounen
+      oauth2_authorizations: OAuth-2-Autorisatiounen
     auth_providers:
       openid_url: OpenID-URL
       openid_login_button: Virufueren
@@ -2342,7 +2342,6 @@ lb:
       my notes: Meng Notizen
       my messages: Meng Messagen
       my profile: Mäi Profil
-      my settings: Meng Astellungen
       my comments: Meng Bemierkungen
       my_preferences: Meng Benotzerastellungen
       my_dashboard: Meng Iwwersiichtssäit
@@ -2392,13 +2391,20 @@ lb:
       show:
         title: Benotzer
         heading: Benotzer
-        empty: Et goufe keng sou Benotzer fonnt
+        select_status: Status auswielen
+        states:
+          active: Aktiv
+          confirmed: Confirméiert
+          deleted: Geläscht
+        ip_address: IP-Adress
+        search: Sichen
       page:
         found_users:
           one: '%{count} Benotzer fonnt'
           other: '%{count} Benotzer fonnt'
         confirm: Erausgesicht Benotzer confirméieren
         hide: Erausgesicht Benotzer vrstoppen
+        empty: Et goufe keng sou Benotzer fonnt
     changeset_comments:
       page:
         when: Wéini
index 04fe104300a27ab28755da6d3ce1ce0652aa5de9..1a75790efc3418eaf2748a69c59e87b1c13544b5 100644 (file)
@@ -286,9 +286,8 @@ lt:
         comment: Komentaras
         full: Pilna pastaba
   accounts:
-    edit:
+    show:
       title: Keisti paskyrą
-      my settings: Mano nustatymai
       current email address: Dabartinis el. pašto adresas
       external auth: Išorinė autentikacija
       openid:
@@ -364,8 +363,6 @@ lt:
           infrastruktūros naudojimą. Prašome paspausti nuorodą, perskaityti ir sutikti
           su tekstu.
         read_tou: Aš perskaičiau ir sutinku su naudojimo sąlygomis
-        consider_pd: Be pirmiau paminėtų, laikau, kad mano indėlis būtų Viešo Naudojimo
-        consider_pd_why: kas tai?
         guidance_info_html: 'Informacija, padedanti suprasti šiuos terminus: %{readable_summary_link}
           ir kai kurie %{informal_translations_link}'
         readable_summary: žmogui skirta santrauka
@@ -2667,8 +2664,6 @@ lt:
         privacy_policy_title: OSMF privatumo politika, įskaitant skyrių apie el. pašto
           adresus
         html: Jūsų adresas nerodomas viešai, daugiau informacijos rasite mūsų %{privacy_policy_link}.
-      consider_pd_html: Manau, kad mano indėlis yra %{consider_pd_link}.
-      consider_pd: viešo domeno
       or: ar
       use external auth: arba prisijunkite naudodami trečiąją šalį
     no_such_user:
@@ -2684,7 +2679,6 @@ lt:
       my notes: Mano žemėlapio pastabos
       my messages: Mano pranešimai
       my profile: Mano profilis
-      my settings: Mano nustatymai
       my comments: Mano komentarai
       my_preferences: Mano parinktys
       my_dashboard: Mano valdymo skydelis
@@ -2759,10 +2753,10 @@ lt:
       show:
         title: Naudotojai
         heading: Naudotojai
-        empty: Nerasta atitinkančių naudotojų
       page:
         confirm: Patvirtinti pažymėtus naudotojus
         hide: Slėpti parinktus naudotojus
+        empty: Nerasta atitinkančių naudotojų
       user:
         summary_html: '%{name} sukurta %{ip_address} %{date}'
         summary_no_ip_html: '%{name} sukurta %{date}'
index cfc410de2bb0d7260dde8f6566bce450fe4b974d..eef210c0569e5df429c69877cef63386c6dd17cc 100644 (file)
@@ -195,9 +195,8 @@ lv:
         comment: Komentārs
         full: Pilna piezīme
   accounts:
-    edit:
+    show:
       title: Rediģēt kontu
-      my settings: Mani iestatījumi
       current email address: Pašreizējā e-pasta adrese
       external auth: Ārējā autentifikācija
       openid:
@@ -240,9 +239,6 @@ lv:
       show:
         title: Dalībnieka noteikumi
         heading: Dalībnieka noteikumi
-        consider_pd: Papildinājumā augstākminētajai vienošanai, Es pieņemu mana devuma
-          būšanu Publiskajā Domēnā
-        consider_pd_why: kas tas ir?
         informal_translations: neformāli tulkojumi
         you need to accept or decline: Lūdzu izlasi un vai nu pieņem vai noraidi jaunos
           Veidotāju Noteikumus, lai turpinātu.
@@ -1819,7 +1815,6 @@ lv:
       my notes: Manas piezīmes
       my messages: Manas ziņas
       my profile: Mans profils
-      my settings: Mani iestatījumi
       my comments: Mani komentāri
       my_preferences: Mani iestatījumi
       my_dashboard: Mans vadības panelis
@@ -1874,10 +1869,10 @@ lv:
       show:
         title: Lietotāji
         heading: Lietotāji
-        empty: Nav atrasti atbilstoši lietotāji
       page:
         confirm: Apstiprināt atlasītos lietotājus
         hide: Paslēpt atlasītos lietotājus
+        empty: Nav atrasti atbilstoši lietotāji
       user:
         summary_html: '%{name} izveidoja no %{ip_address} @ %{date}'
         summary_no_ip_html: '%{name} izveidoja @ %{date}'
index bf77c4a6402883dcb379e46bfb70e198ada6b943..129a7ce06cdb81e532115647ae1c99ce24170d62 100644 (file)
@@ -245,9 +245,8 @@ mk:
         comment: Коментар
         full: Целата белешка
   accounts:
-    edit:
+    show:
       title: Уреди сметка
-      my settings: Мои нагодувања
       current email address: Тековна е-пошта
       external auth: Надворешна заверка
       openid:
@@ -320,8 +319,6 @@ mk:
           на мрежното место и останатата инфраструктура на OSMF. Стиснете на врската,
           прочитајте го текстот и согласете се со него.
         read_tou: Ги прочитав Условите на употреба и се согласувам со нив
-        consider_pd: Покрај горенаведеното, моите придонеси ги сметам за јавна сопственост
-        consider_pd_why: Што е ова?
         guidance_info_html: 'Информации што ќе ви помогнат да ги разберете овие поими:
           %{readable_summary_link} и некои %{informal_translations_link}'
         readable_summary: човечки читлив опис
@@ -2781,8 +2778,6 @@ mk:
         privacy_policy_title: Правилата за лични податоци на OSMF, со одделот за е-поштенски
           адреси
         html: Вашата адреса не се прикажува јавно. Повеќе ќе дознаете на %{privacy_policy_link}.
-      consider_pd_html: Моите придонеси ги сметам за %{consider_pd_link}.
-      consider_pd: јавна сопственост
       or: или
       use external auth: или зачленете се преку надворешно место
     no_such_user:
@@ -2798,7 +2793,6 @@ mk:
       my notes: Мои белешки
       my messages: Мои пораки
       my profile: Мојот профил
-      my settings: Мои поставки
       my comments: Мои коментари
       my_preferences: Мои нагодувања
       my_dashboard: Моја управувачница
@@ -2876,13 +2870,13 @@ mk:
       show:
         title: Корисници
         heading: Корисници
-        empty: Нема најдено такви корисници
       page:
         found_users:
           one: Најдов %{count} корисник
           other: Најдов %{count} корисници
         confirm: Потврди ги одбраните корисници
         hide: Скриј одбрани корисници
+        empty: Нема најдено такви корисници
       user:
         summary_html: '%{name} создадено од %{ip_address} на %{date}'
         summary_no_ip_html: '%{name} создадено на %{date}'
index 5c70eb0bec8dc35d4fa5b451b399477f27254c3b..6561fdaf86edf6d63cb7960f218fcbe177a3236b 100644 (file)
@@ -79,8 +79,7 @@ mo:
       user:
         new_email: (ну се афишязэ публик)
   accounts:
-    edit:
-      my settings: Реглажеле меле
+    show:
       current email address: 'Адреса де поштэ електроникэ курентэ:'
       external auth: 'Ынтраря ын конт екстернэ:'
       openid:
@@ -564,7 +563,6 @@ mo:
       my diary: Журналул меу
       my messages: Месажеле меле
       my profile: Профилул меу
-      my settings: Реглажеле меле
       my comments: Коментарииле меле
     changeset_comments:
       page:
index ebe96b84d8df99f256da5226ab95917c1c7623bd..016a26d52d4ac24fb99eeedebacce11e9855caf9 100644 (file)
@@ -175,9 +175,8 @@ mr:
       entry:
         comment: टिप्पणी
   accounts:
-    edit:
+    show:
       title: खाते संपादा
-      my settings: माझ्या मांडण्या
       current email address: वर्तमान ईमेल पत्ता
       openid:
         link text: हे काय आहे?
@@ -188,7 +187,6 @@ mr:
       show:
         title: योगदात्यांसाठी अटी
         heading: योगदात्यांसाठी अटी
-        consider_pd_why: हे काय आहे?
         legale_select: 'राहण्याचा देश:'
         legale_names:
           france: फ्रान्स
@@ -1244,7 +1242,6 @@ mr:
       my notes: माझ्या टीपा
       my messages: माझे संदेश
       my profile: माझी रूपरेखा
-      my settings: माझ्या मांडण्या
       my comments: माझे अभिप्राय
       my_preferences: माझे प्राधान्ये
       my_dashboard: माझे फलक
index 5a27ba68bf807c7305db097d7dedbb4f122e76af..68a97fbfb822c417ae541c3643c7481a48557e70 100644 (file)
@@ -218,9 +218,8 @@ ms:
         comment: Komen
         full: Nota penuh
   accounts:
-    edit:
+    show:
       title: Sunting akaun
-      my settings: Tetapan saya
       current email address: 'Alamat E-Mel Sekarang:'
       external auth: Pengesahan Luaran
       openid:
@@ -256,9 +255,6 @@ ms:
       show:
         title: Terma-terma penyumbang
         heading: Terma-terma penyumbang
-        consider_pd: Selain perjanjian di atas, saya sudi menyerahkan sumbangan-sumbangan
-          saya dalam Domain Awam
-        consider_pd_why: apakah ini?
         readable_summary: ringkasan yang boleh dibaca manusia
         informal_translations: penterjemahan tidak formal
         continue: Sambung
@@ -1840,7 +1836,6 @@ ms:
       my notes: Nota Saya
       my messages: Pesanan Saya
       my profile: Profil Saya
-      my settings: Tetapan Saya
       my comments: Komen Saya
       my_preferences: Keutamaan Saya
       my_dashboard: Papan Pemuka Saya
@@ -1897,10 +1892,10 @@ ms:
       show:
         title: Pengguna
         heading: Pengguna
-        empty: Tiada pengguna sepadan yang dijumpai
       page:
         confirm: Sahkan Pengguna-Pengguna Terpilih
         hide: Sorokkan Pengguna-Pengguna Terpilih
+        empty: Tiada pengguna sepadan yang dijumpai
       user:
         summary_html: '%{name} diwujudkan dari %{ip_address} pada %{date}'
         summary_no_ip_html: '%{name} diwujudkan pada %{date}'
index 4f1a01ec08129607f202a3f0b8a06f2367956d3d..6d63c4237cf258d1f8886e3f337435cb98bb5a90 100644 (file)
@@ -129,7 +129,7 @@ my:
         comment: မှတ်ချက်
         full: မှတ်စု အပြည့်အစုံ
   accounts:
-    edit:
+    show:
       title: အကောင့်ကို ပြင်ဆင်ရန်
       current email address: လက်ရှိ အီးမေးလ်လိပ်စာ
       save changes button: ပြောင်းလဲမှုများကို သိမ်းရန်
index 33f66188dd46d839245cc0f1bb1a9e44b0219a81..533b48c7a2d13d188ccb7e487fc83ecd8a1f401d 100644 (file)
@@ -264,9 +264,8 @@ nb:
         comment: Kommentar
         full: Fullstendig merknad
   accounts:
-    edit:
+    show:
       title: Rediger konto
-      my settings: Mine innstillinger
       current email address: Nåværende e-postadresse
       external auth: Ekstern autentisering
       openid:
@@ -321,9 +320,6 @@ nb:
         tou_explain_html: Disse %{tou_link} beskriver bruken av nettstedet og annen
           infrastruktur som tilbys av OSMF. Trykk på lenka, les og samtykk til teksten.
         read_tou: Jeg har lest og samtykker til bruksvilkårene
-        consider_pd: I tillegg til det ovennevnte anser jeg mine bidrag for å være
-          i public domain
-        consider_pd_why: hva er dette?
         continue: Fortsett
         you need to accept or decline: Les og deretter enten godta eller avslå de
           nye bidragsytervilkårene for å fortsette.
@@ -2070,7 +2066,6 @@ nb:
       my notes: Mine merknader
       my messages: Mine meldinger
       my profile: Min profil
-      my settings: Mine innstillinger
       my comments: Mine kommentarer
       blocks on me: Mine blokkeringer
       blocks by me: Blokkeringer opprettet av meg
@@ -2123,10 +2118,10 @@ nb:
       show:
         title: Brukere
         heading: Brukere
-        empty: Ingen samsvarende brukere funnet
       page:
         confirm: Bekreft valgte brukere
         hide: Skjul valgte brukere
+        empty: Ingen samsvarende brukere funnet
       user:
         summary_html: '%{name} opprettet fra %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} opprettet %{date}'
index 43be4a57c36d679997da29cf28c450d96305c433..58e1b607b2c579a5b78769181574cbae6186648f 100644 (file)
@@ -73,7 +73,7 @@ nds:
       github: GitHub
       wikipedia: Wikipedia
   accounts:
-    edit:
+    show:
       title: Brukerkonto ännern
       save changes button: Ännern spiekern
     go_public:
index acb9ed2430a50bcede6ea7c4c0d987b33fd73676..7e2b95c78c5041fc5568186c1e5d7c23f206b601 100644 (file)
@@ -226,9 +226,8 @@ ne:
         comment: टिप्पणी
         full: पूर्ण टिप्पणी
   accounts:
-    edit:
+    show:
       title: खाता सम्पादन गर्नुहोस्
-      my settings: मेरो सेटिङहरू
       current email address: हालको इमेल ठेगाना
       external auth: वाह्य अथेन्टिकेसन
       openid:
@@ -257,7 +256,6 @@ ne:
         title: सर्तहरू
         heading: सर्तहरू
         heading_ct: योगदानकर्ता सर्तहरू
-        consider_pd_why: यो के हो ?
         continue: जारी राख्ने
         legale_names:
           france: फ्रान्स
@@ -1413,7 +1411,6 @@ ne:
       my notes: मेरा टिपोटहरू
       my messages: मेरा सन्देशहरू
       my profile: मेरो प्रोफाइल
-      my settings: मेरो सेटिङहरू
       my comments: मेरा टिप्पणीहरू
       edits: सम्पादनहरू
       traces: ट्रेसहरू
index 972316b6b22ae1b276182404bb98717233afb052..e647046a425b3c5f412a2e9105f169b7eaa82e0f 100644 (file)
@@ -304,9 +304,8 @@ nl:
         comment: Opmerking
         full: Volledige opmerking
   accounts:
-    edit:
+    show:
       title: Account bewerken
-      my settings: Mijn instellingen
       current email address: Huidig e-mailadres
       external auth: Externe authenticatie
       openid:
@@ -386,9 +385,6 @@ nl:
           infrastructuur die door de OSMF wordt aangeboden. Klik op de link, lees
           en ga akkoord met de tekst.
         read_tou: Ik heb de gebruiksvoorwaarden gelezen en ga hiermee akkoord
-        consider_pd: Met inachtneming van bovenstaande, bevinden mijn bijdragen zich
-          in het publieke domein
-        consider_pd_why: wat is dit?
         guidance_info_html: 'Informatie om deze termen te helpen begrijpen: een %{readable_summary_link}
           en enkele %{informal_translations_link}'
         readable_summary: voor mensen leesbare samenvatting
@@ -2918,8 +2914,6 @@ nl:
         privacy_policy_title: OSMF-privacybeleid, met een sectie over e-mailadressen
         html: Uw adres wordt niet openbaar gemaakt, zie ons %{privacy_policy_link}
           voor meer informatie.
-      consider_pd_html: Ik beschouw mijn bijdragen als onderdeel van het %{consider_pd_link}.
-      consider_pd: publiek domein
       or: of
       use external auth: of schrijf u in via een derde partij
     no_such_user:
@@ -2935,7 +2929,6 @@ nl:
       my notes: Mijn opmerkingen
       my messages: Mijn berichten
       my profile: Mijn profiel
-      my settings: Mijn instellingen
       my comments: Mijn reacties
       my_preferences: Mijn voorkeuren
       my_dashboard: Mijn dashboard
@@ -3015,13 +3008,13 @@ nl:
       show:
         title: Gebruikers
         heading: Gebruikers
-        empty: Geen gebruikers gevonden
       page:
         found_users:
           one: '%{count} gebruiker gevonden'
           other: '%{count} gebruikers gevonden'
         confirm: Geselecteerde gebruikers bevestigen
         hide: Gelelecteerde gebruikers verbergen
+        empty: Geen gebruikers gevonden
       user:
         summary_html: '%{name} aangemaakt vanaf %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} aangemaakt op %{date}'
@@ -3267,7 +3260,6 @@ nl:
         url: https://wiki.openstreetmap.org/wiki/NL:Beginnershandleiding
       counter_warning_forum_link:
         text: de community helpt je graag
-        url: https://community.openstreetmap.org/
       advice: Deze opmerking is openbaar en kan gebruikt worden om de kaart bij te
         werken. Vul hier dus geen persoonlijke informatie in, en ook geen informatie
         uit kaarten of telefoonboeken waar auteursrechtelijke bescherming op rust.
index 0ab6beb615f4ea33f6f09a7b502f4abc6bea2631..6f9f0eeb7dd20c9d81beddb7d6307101de782cec 100644 (file)
@@ -217,9 +217,8 @@ nn:
         comment: Kommentar
         full: Fullstendig merknad
   accounts:
-    edit:
+    show:
       title: Rediger konto
-      my settings: Innstellingane mine
       current email address: Noverande e-postadresse
       external auth: Ekstern autentisering
       openid:
@@ -282,9 +281,6 @@ nn:
       show:
         title: Bidragsytervilkår
         heading: Bidragsytervilkåra
-        consider_pd: I tillegg til den ovannemnde avtala ansar eg bidraga mine for
-          å vere i public domain
-        consider_pd_why: kva er dette?
         you need to accept or decline: Les og deretter anten godta eller avslå dei
           nye bidragsytervilkåra for å halde fram.
         legale_select: 'Vel ditt bostedsland:'
@@ -2225,7 +2221,6 @@ nn:
       my notes: Mine merknadar
       my messages: Mine meldingar
       my profile: Min profil
-      my settings: Mine innstillingar
       my comments: Mine kommentarar
       blocks on me: Mine blokeringar
       blocks by me: blokkeringar utført av meg
@@ -2279,10 +2274,10 @@ nn:
       show:
         title: Brukarar
         heading: Brukarar
-        empty: Ingen samsvarande brukarar funne
       page:
         confirm: Stadfest valde brukarar
         hide: Skjul valde brukarar
+        empty: Ingen samsvarande brukarar funne
       user:
         summary_html: '%{name} oppretta frå %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} oppretta %{date}'
index c68ed3cb67d5163fa2dc0615b4cb73c00d6f1aae..175236c927fa02447348bdc57981861858d68987 100644 (file)
@@ -195,9 +195,8 @@ nqo:
         comment: ߡߙߌߣߊ߲
         full: ߦߟߌߣߐ ߘߝߊߣߍ߲
   accounts:
-    edit:
+    show:
       title: ߖߊ߬ߕߋ߬ߘߊ ߡߊߦߟߍ߬ߡߊ߲߬
-      my settings: ߒ ߠߊ߫ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߟߎ߬
       current email address: ߕߋ߲߭ߕߋ߲߭ ߢߎߡߍߙߋ߲߫ ߞߏ߲ߘߏ
       external auth: ߞߐߞߊ߲ߠߊ ߕߎ߬ߡߊ߬ߢߐ߲߰ߦߊ߬ߟߌ
       openid:
@@ -268,9 +267,6 @@ nqo:
         read_ct: ߒ ߓߘߊ߫ ߛߊ߲ߝߍ߫ ߓߟߏߓߌߟߊߢߐ߲߯ߞߊ߲ ߛߙߊߕߌ ߟߎ߬ ߘߐߞߊ߬ߙߊ߲߬ ߊ߬ ߣߌ߫ ߞߊ߬ ߘߌ߬ߢߍ߬
           ߊ߬ ߡߊ߬ ߝߣߊ߫.
         read_tou: ߒ ߓߘߊ߫ ߟߊ߬ߓߊ߰ߙߊ߬ߟߌ ߛߙߊߕߌ ߘߐߞߊ߬ߙߊ߲߬ ߊ߬ ߣߌ߫ ߞߊ߬ ߘߌ߬ߢߍ߬ ߊ߬ ߡߊ߬
-        consider_pd: ߛߊ߲ߝߍߟߊ ߏ߬ ߡߊߞߊ߬ߝߏ߬ߟߌ ߘߐ߫ ߌ ߞߐ߫߸ ߒ ߧߋ߫ ߒ ߠߊ߫ ߓߟߏߡߊߜߍ߲ ߖߊ߬ߕߋ߬
-          ߟߴߊ߬ ߞߍ ߘߐ߫ ߖߊ߬ߡߊ ߘߍ߬ߒ߬ߡߊ߬ߝߋ߲ ߘߌ߫
-        consider_pd_why: ߣߌ߲߬ ߦߋ߫ ߡߎ߲߬ ߘߌ߫؟
         continue: ߊ߬ ߘߊߓߊ߲߫
         legale_select: 'ߌ ߛߌ߰ߣߍ߲߬ ߦߋ߫ ߖߡߊ߬ߣߊ ߡߍ߲ ߘߐ߫:'
         legale_names:
@@ -1615,7 +1611,6 @@ nqo:
       my notes: ߒ ߠߊ߫ ߦߟߌߣߐ ߟߎ߫
       my messages: ߒ ߠߊ߫ ߗߋߛߓߍ ߟߎ߬
       my profile: ߒ ߠߊ߫ ߢߊߞߙߍ
-      my settings: ߒ ߠߊ߫ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߟߎ߬
       my comments: ߒ ߠߊ߫ ߡߙߌߣߊ߲ ߠߎ߬
       my_preferences: ߒ ߠߊ߫ ߝߌ߬ߛߊ߬ߡߊ߲߬ߕߋ ߟߎ߬
       blocks on me: ߓߊ߬ߟߊ߲߬ߠߌ߲ ߡߍ߲ ߦߋ߫ ߒ ߞߊ߲߬
@@ -1644,10 +1639,10 @@ nqo:
       show:
         title: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߎ߬
         heading: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߎ߬
-        empty: ߕߙߏ߬ߞߏ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߡߊ߫ ߛߐ߬ߘߐ߲߫
       page:
         confirm: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߓߊߕߐ߬ߡߐ߲߬ߣߍ߲ ߠߎ߬ ߟߊߛߙߋߦߊ߫
         hide: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߓߊߕߐ߬ߡߐ߲߬ߣߍ߲ ߠߎ߬ ߢߡߊߘߏ߲߰
+        empty: ߕߙߏ߬ߞߏ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߡߊ߫ ߛߐ߬ߘߐ߲߫
       user:
         summary_html: '%{name} ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ %{ip_address} ߟߋ߬ ߡߊ߬ %{date} ߟߊ߫'
         summary_no_ip_html: '%{name} ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ %{date} ߟߋ߬ ߟߊ߫'
index 7f5dab8afcd1f1a56bfbf85f9fa8203d5e2c3328..c0ea5e6722ec72ac3ae3f141127b6fe81b8a7b56 100644 (file)
@@ -243,9 +243,8 @@ oc:
         comment: Comentari
         full: Nòta completa
   accounts:
-    edit:
+    show:
       title: Modificar lo compte
-      my settings: Meis opcions
       current email address: 'Adreiça de corrier electronic actuala:'
       external auth: 'Autentificacion extèrna:'
       openid:
@@ -302,9 +301,6 @@ oc:
       show:
         title: Tèrmes del contributor
         heading: Tèrmes del contributor
-        consider_pd: En mai de l’acòrd çaisús, considèri mas contribucions coma essent
-          dins lo domeni public
-        consider_pd_why: qu’es aquò ?
         continue: Contunhar
         you need to accept or decline: Legissètz e puèi, siá acceptatz o refusatz
           las novèlas condicions de contributor per contunhar.
@@ -2095,7 +2091,6 @@ oc:
       my notes: Mas nòtas de mapa
       my messages: Mos messatges
       my profile: Mon perfil
-      my settings: Mas opcions
       my comments: Mos comentaris
       blocks on me: Mos blocatges
       blocks by me: Mos blocatges
@@ -2146,10 +2141,10 @@ oc:
       show:
         title: Utilizaires
         heading: Utilizaires
-        empty: Cap d'utilizaire correspondent es pas estat trobat
       page:
         confirm: Confirmar los utilizaires seleccionats
         hide: Amagar los utilizaires seleccionats
+        empty: Cap d'utilizaire correspondent es pas estat trobat
       user:
         summary_html: '%{name} creat dempuèi %{ip_address} lo %{date}'
         summary_no_ip_html: '%{name} creat lo %{date}'
index 8f30a57d7eaadb8ad78dc2187668133e1ef98bfc..b7079c2fbc64881c127609339f991e86f24022aa 100644 (file)
@@ -240,9 +240,8 @@ pa:
         comment: ਟਿੱਪਣੀ
         full: ਪੂਰੀ ਟਿੱਪਣੀ
   accounts:
-    edit:
+    show:
       title: ਖਾਤਾ ਸੋਧੋ
-      my settings: ਮੇਰੀਆਂ ਸੈਟਿੰਗਾਂ
       current email address: 'ਮੌਜੂਦਾ ਈਮੇਲ ਪਤਾ:'
       external auth: ਬਾਹਰੀ ਪ੍ਰਮਾਣਿਕਤਾ
       openid:
@@ -319,8 +318,6 @@ pa:
         read_ct: ਮੈਂ ਉਪਰੋਕਤ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪਡ਼੍ਹਿਆ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਸਹਿਮਤ
           ਹਾਂ।
         read_tou: ਮੈਂ ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪੜ੍ਹ ਲਿਆ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਸਹਿਮਤ ਹਾਂ
-        consider_pd: ਉਪਰੋਕਤ ਤੋਂ ਇਲਾਵਾ, ਮੈਂ ਆਪਣੇ ਯੋਗਦਾਨ ਨੂੰ ਜਨਤਕ ਖੇਤਰ ਵਿੱਚ ਮੰਨਦਾ ਹਾਂ
-        consider_pd_why: ਇਹ ਕੀ ਹੈ?
         guidance_info_html: 'ਇਹਨਾਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਜਾਣਕਾਰੀ: ਇੱਕ %{readable_summary_link}
           ਅਤੇ ਕੁਝ %{informal_translations_link}'
         readable_summary: ਮਨੁੱਖੀ ਪਡ਼੍ਹਨਯੋਗ ਸੰਖੇਪ
@@ -341,6 +338,10 @@ pa:
           ਨੂੰ ਸਵੀਕਾਰ ਨਾ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕੀਤਾ ਹੈ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ %{terms_declined_link}
           ਵੇਖੋ।
         terms_declined_link: ਇਹ ਵਿਕੀ ਸਫ਼ਾ
+    pd_declarations:
+      show:
+        consider_pd: ਮੈਂ ਆਪਣੇ ਯੋਗਦਾਨਾਂ ਨੂੰ ਜਨਤਕ ਖੇਤਰ ਵਿੱਚ ਮੰਨਦਾ ਹਾਂ।
+        confirm: ਤਸਦੀਕ ਕਰੋ
   browse:
     deleted_ago_by_html: '%{time_ago} ਨੂੰ %{user} ਵੱਲੋਂ ਮਿਟਾਇਆ ਗਿਆ'
     edited_ago_by_html: '%{time_ago} ਨੂੰ %{user} ਵੱਲੋਂ ਸੋਧਿਆ ਗਿਆ'
@@ -1946,8 +1947,6 @@ pa:
           ਹਨ
         html: ਤੁਹਾਡਾ ਪਤਾ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ, ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ
           ਸਾਡਾ %{privacy_policy_link} ਵੇਖੋ।
-      consider_pd_html: ਮੈਂ ਆਪਣੇ ਯੋਗਦਾਨਾਂ ਨੂੰ %{consider_pd_link} ਵਿੱਚ ਮੰਨਦਾ ਹਾਂ।
-      consider_pd: ਜਨਤਕ ਖੇਤਰ
       or: ਜਾਂ
       use external auth: ਜਾਂ ਕਿਸੇ ਤੀਜੀ ਧਿਰ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
     no_such_user:
@@ -1963,7 +1962,7 @@ pa:
       my notes: ਮੇਰੇ ਨੋਟ
       my messages: ਮੇਰੇ ਸੁਨੇਹੇ
       my profile: ਮੇਰੀ ਪ੍ਰੋਫ਼ਾਈਲ
-      my settings: ਮੇਰੀਆਂ ਸੈਟਿੰਗਾਂ
+      my_account: ਮੇਰਾ ਖਾਤਾ
       my comments: ਮੇਰੀਆਂ ਟਿੱਪਣੀਆਂ
       my_preferences: ਮੇਰੀਆਂ ਤਰਜੀਹਾਂ
       blocks on me: ਮੇਰੇ ਉੱਤੇ ਰੋਕਾਂ
@@ -2036,16 +2035,27 @@ pa:
       show:
         title: ਵਰਤੋਂਕਾਰ
         heading: ਵਰਤੋਂਕਾਰ
-        empty: ਕੋਈ ਮੇਲ ਖਾਂਦੇ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਲੱਭੇ
+        states:
+          pending: ਬਕਾਇਆ
+          active: ਸਰਗਰਮ
+          confirmed: ਤਸਦੀਕ ਕੀਤੀ ਗਈ
+          suspended: ਬਰਖਾਸਤ ਕੀਤਾ ਗਿਆ
+          deleted: ਮਿਟਾਇਆ ਗਿਆ
+        ip_address: IP ਪਤਾ
+        search: ਖੋਜੋ
       page:
         found_users:
           one: '%{count} ਵਰਤੋਂਕਾਰ ਲੱਭੇ'
           other: '%{count} ਵਰਤੋਂਕਾਰ ਲੱਭੇ'
         confirm: ਚੁਣੇ ਹੋਏ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਤਸਦੀਕ ਕਰੋ
         hide: ਚੁਣੇ ਹੋਏ ਵਰਤੋਂਕਾਰ ਲੁਕਾਉ
+        empty: ਕੋਈ ਮੇਲ ਖਾਂਦੇ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਲੱਭੇ
       user:
         summary_html: '%{date} ਨੂੰ %{ip_address} ਤੋਂ %{name} ਬਣਾਇਆ ਗਿਆ'
         summary_no_ip_html: '%{name} ਨੂੰ %{date} ਨੂੰ ਬਣਾਇਆ ਗਿਆ'
+    comments:
+      index:
+        diary_entries: ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ
     changeset_comments:
       page:
         when: ਕਦੋਂ
@@ -2333,6 +2343,9 @@ pa:
       show_address: ਪਤਾ ਦਿਖਾਓ
       query_features: ਪੁੱਛਗਿੱਛ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
       centre_map: ਨਕਸ਼ੇ ਦਾ ਕੇਂਦਰ ਇੱਥੇ
+    home:
+      marker_title: ਮੇਰੇ ਘਰ ਦਾ ਟਿਕਾਣਾ
+      not_set: ਤੁਹਾਡੇ ਖਾਤੇ ਲਈ ਘਰ ਦਾ ਟਿਕਾਣਾ ਕਾਇਮ ਨਹੀਂ ਹੈ।
   redactions:
     edit:
       heading: ਸੁਧਾਈ ਸੋਧੋ
index d0eb7499473b4a8a9bc841710ce4d19e64d477d1..bc1c78f334859f6aa6dd16da898d0454381793b4 100644 (file)
@@ -161,6 +161,7 @@ pl:
         allow_write_prefs: Modyfikowanie ich ustawień
         allow_write_diary: Tworzenie wpisów w dzienniku i dodawanie komentarzy
         allow_write_api: Modyfikowanie mapy
+        allow_write_changeset_comments: Komentowanie zestawów zmian
         allow_read_gpx: Odczytywanie ich prywatnych śladów GPS
         allow_write_gpx: Przesyłanie śladów GPS
         allow_write_notes: Modyfikowanie uwag
@@ -177,7 +178,7 @@ pl:
         name: Nazwa
         redirect_uri: URI przekierowań
         confidential: Poufna aplikacja?
-        scopes: 'Żądanie następujących uprawnień od użytkowników:'
+        scopes: Uprawnienia
       friend:
         user: Użytkownik
         friend: Znajomy
@@ -343,9 +344,9 @@ pl:
         comment: Komentarz
         full: Pełna treść uwagi
   accounts:
-    edit:
+    show:
       title: Zmiana ustawień konta
-      my settings: Ustawienia
+      my_account: Moje konto
       current email address: Aktualny adres e-mail
       external auth: Zewnętrzne uwierzytelnienie
       openid:
@@ -360,6 +361,9 @@ pl:
         agreed_with_pd: Zadeklarowałeś, że swoje edycje publikujesz w domenie publicznej.
         link: https://osmfoundation.org/wiki/Licence/Contributor_Terms
         link text: co to jest?
+        not_agreed_with_pd: Nie zadeklarowałeś, że uznajesz swoje zmiany za należące
+          do domeny publicznej.
+        pd_link_text: zadeklaruj
       save changes button: Zapisz zmiany
       delete_account: Usuń konto...
     go_public:
@@ -422,10 +426,6 @@ pl:
           i innej infrastruktury zapewnianej przez OSMF. Kliknij link, przeczytaj
           i zaakceptuj tekst.
         read_tou: Przeczytałem i akceptuję Warunki użytkowania
-        consider_pd: Oprócz powyższych warunków, stwierdzam również, że mój wkład
-          jest w domenie publicznej
-        consider_pd_why: co to oznacza?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Informacje pomocne w zrozumieniu tych terminów: %{readable_summary_link}
           i %{informal_translations_link}'
         readable_summary: czytelne podsumowanie
@@ -446,6 +446,20 @@ pl:
           nowych Warunków uczestnictwa. Więcej informacji możesz znaleźć %{terms_declined_link}.
         terms_declined_link: na tej stronie
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        title: Uznaj mój wkład za należący do domeny publicznej
+        consider_pd: Uznaję swój wkład za należący do domeny publicznej
+        consider_pd_why: Dlaczego miałbym chcieć, aby mój wkład był w domenie publicznej?
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: Potwierdzam
+      create:
+        successfully_declared: Pomyślnie zadeklarowałeś, że uznajesz swoje zmiany
+          za należące do domeny publicznej.
+        already_declared: Oświadczyłeś już, że uważasz swoje zmiany za należące do
+          domeny publicznej.
+        did_not_confirm: Nie potwierdziłeś, że uważasz swoje zmiany za należące do
+          domeny publicznej.
   browse:
     deleted_ago_by_html: Usunięte %{time_ago} przez %{user}
     edited_ago_by_html: Edytowane %{time_ago} przez %{user}
@@ -1099,6 +1113,7 @@ pl:
           bridleway: Droga dla koni
           bus_guideway: Droga dla autobusów
           bus_stop: Przystanek autobusowy
+          busway: Droga dla autobusów
           construction: Droga w trakcie budowy
           corridor: Korytarz
           crossing: Przejście
@@ -2446,6 +2461,7 @@ pl:
         zmienić je na publiczne na %{user_page}.
       user_page_link: stronie użytkownika
       anon_edits_html: (%{link})
+      anon_edits_link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
       anon_edits_link_text: Tu dowiesz się dlaczego.
     edit:
       id_not_configured: iD nie został skonfigurowany
@@ -2898,18 +2914,20 @@ pl:
     permissions:
       missing: Nie zezwoliłeś aplikacji na dostęp do tej funkcji
     scopes:
-      openid: Zaloguj się za pomocą OpenStreetMap
+      openid: Logowanie się za pomocą OpenStreetMap
       read_prefs: Odczytywanie preferencji użytkownika
       write_prefs: Modyfikowanie preferencji użytkownika
       write_diary: Tworzenie wpisów w dzienniku i dodawanie komentarzy
       write_api: Modyfikowanie mapy
-      read_gpx: Odczytywanie ich prywatnych śladów GPS
+      write_changeset_comments: Komentowanie zestawów zmian
+      read_gpx: Odczytywanie prywatnych śladów GPS
       write_gpx: Przesyłanie śladów GPS
       write_notes: Modyfikowanie uwag
       write_redactions: Redagowanie danych mapy
+      write_blocks: Tworzenie i odwoływanie blokad użytkowników
       read_email: Odczytywanie adresu e-mail użytkownika
-      consume_messages: Czytaj, aktualizuj status i usuwaj wiadomości użytkownika
-      send_messages: Wysyłaj prywatne wiadomości do innych użytkowników
+      consume_messages: Czytanie, zmiana statusu i usuwanie wiadomości użytkownika
+      send_messages: Wysyłanie prywatnych wiadomości do innych użytkowników
       skip_authorization: Automatycznie akceptuj aplikację
     for_roles:
       moderator: To uprawnienie dotyczy działań dostępnych wyłącznie dla moderatorów
@@ -3004,9 +3022,6 @@ pl:
           e-mail
         html: Twój adres nie jest wyświetlany publicznie, zobacz naszą %{privacy_policy_link},
           aby uzyskać więcej informacji.
-      consider_pd_html: Uznaję mój wkład za należący do %{consider_pd_link}
-      consider_pd: domeny publicznej
-      consider_pd_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
       or: lub
       use external auth: 'Alternatywnie, zarejestruj się przez:'
     no_such_user:
@@ -3023,7 +3038,7 @@ pl:
       my notes: Uwagi
       my messages: Wiadomości
       my profile: Profil
-      my settings: Ustawienia
+      my_account: Ustawienia konta
       my comments: Komentarze
       my_preferences: Preferencje
       my_dashboard: Mój panel
@@ -3106,7 +3121,6 @@ pl:
       show:
         title: Użytkownicy
         heading: Użytkownicy
-        empty: Nie znaleziono pasujących użytkowników
       page:
         found_users:
           one: Znaleziono %{count} użytkownika
@@ -3115,6 +3129,7 @@ pl:
           other: Znaleziono %{count} użytkowników
         confirm: Zatwierdź zaznaczonych użytkowników
         hide: Ukryj zaznaczonych użytkowników
+        empty: Nie znaleziono pasujących użytkowników
       user:
         summary_html: '%{name} utworzony z adresu %{ip_address} dnia %{date}'
         summary_no_ip_html: '%{name} utworzony %{date}'
@@ -3378,7 +3393,7 @@ pl:
         url: https://wiki.openstreetmap.org/wiki/Pl:Przewodnik_dla_pocz%C4%85tkuj%C4%85cych
       counter_warning_forum_link:
         text: społeczność może ci pomóc
-        url: https://community.openstreetmap.org/
+        url: https://community.openstreetmap.org
       advice: Twoja uwaga jest publiczna i może zostać użyta do zaktualizowania mapy,
         nie podawaj tu więc informacji osobistych oraz informacji z map i źródeł chronionych
         prawami autorskimi.
index 984e3914b87c0ded4acb412b1c516933693dea5e..81d29c573c1a36610ea187017bea25ba863a6362 100644 (file)
@@ -228,9 +228,8 @@ pnb:
         comment: ٹپݨی
         full: پورا نوٹ
   accounts:
-    edit:
+    show:
       title: کھاتہ سودھو
-      my settings: سیٹِنگاں
       current email address: حالاں ای‌میل پتہ
       external auth: باہرلی تصدیق
       openid:
@@ -265,9 +264,6 @@ pnb:
         title: شرطنامہ
         heading: شرطنامہ
         heading_ct: لیکھکاں لئی شرطنامہ
-        consider_pd: اگے، میریاں ساریاں سودھاں عام ورتوں ہوواں‌گیاں سی (سارے ورتوں
-          نہیں منع)۔
-        consider_pd_why: ایہہ کیہ اے؟
         continue: اگے
         legale_select: 'تسیں کیہ دیش رہندے:'
         legale_names:
@@ -1747,7 +1743,6 @@ pnb:
       my notes: نوٹ
       my messages: سنیہے
       my profile: شخصی صفحہ
-      my settings: سیٹِنگاں
       my comments: ٹپݨیاں
       my_preferences: ترجیحاں
       my_dashboard: ڈیش بورڈ
@@ -1791,10 +1786,10 @@ pnb:
       show:
         title: ورتنوالے
         heading: ورتنوالے
-        empty: کوئی میل کھاندے ورتنوالے نہیں لبھے
       page:
         confirm: چݨے ہوۓ ورتنوالیاں دی تصدیق کرو
         hide: چݨے ہوۓ ورتنوالے لُکاؤ
+        empty: کوئی میل کھاندے ورتنوالے نہیں لبھے
     changeset_comments:
       page:
         when: کدوں
index 15bdca632f40c132d8432e31a56f3f703dba0e5f..23d53f006918386f55a364037a5b812736dde695 100644 (file)
@@ -81,8 +81,7 @@ ps:
     id:
       name: iD
   accounts:
-    edit:
-      my settings: زما امستنې
+    show:
       openid:
         link text: دا څه دی؟
       contributor terms:
@@ -301,7 +300,7 @@ ps:
   passwords:
     new:
       heading: آيا پټنوم مو هېر شوی؟
-      email address: 'برېښليک پته:'
+      email address: برېښليک‌پته
   profiles:
     edit:
       image: 'انځور:'
@@ -375,7 +374,7 @@ ps:
       my messages: زما پيغامونه
       send message: پيغام لېږل
       edits: سمونونه
-      email address: 'برېښليک پته:'
+      email address: 'برېښليکپته:'
       status: 'دريځ:'
       block_history: فعاله بنديزونه
       moderator_history: لگېدلي بنديزونه
index b8ef26a45bd7ebc154526c6dda879a25c3227b6d..a3946ccef652df6a020dc8a8bf8d0bee56b93254 100644 (file)
@@ -284,9 +284,8 @@ pt-PT:
         comment: Comentário
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Editar conta
-      my settings: Definições
       current email address: E-mail atual
       external auth: Autenticação externa
       openid:
@@ -365,9 +364,6 @@ pt-PT:
           infraestruturas fornecidas pela OSMF. Por favor, clica na hiperligação,
           lê e aceita o texto.
         read_tou: Li e aceito os Termos de Utilização
-        consider_pd: Além do referido anteriormente, considero que as minhas contribuições
-          fazem parte âmbito do Domínio Público.
-        consider_pd_why: O que é isto?
         guidance_info_html: 'Informações para ajudar a entender estes termos: um %{readable_summary_link}
           e algumas %{informal_translations_link}'
         readable_summary: sumário legível por humanos
@@ -2792,8 +2788,6 @@ pt-PT:
           endereços de email
         html: O seu endereço não é mostrado publicamente. Consulte a nossa %{privacy_policy_link}
           para mais informações.
-      consider_pd_html: Considero que as minhas contribuições estão no %{consider_pd_link}.
-      consider_pd: domínio público
       or: ou
       use external auth: ou regista-te com um serviço externo
     no_such_user:
@@ -2810,7 +2804,6 @@ pt-PT:
       my notes: Notas
       my messages: Mensagens
       my profile: Perfil
-      my settings: Definições
       my comments: Comentários
       my_preferences: Preferências
       my_dashboard: Painel de controlo
@@ -2889,13 +2882,13 @@ pt-PT:
       show:
         title: Utilizadores
         heading: Utilizadores
-        empty: Não foram encontrados utilizadores correspondentes
       page:
         found_users:
           one: '%{count} utilizador encontrado'
           other: '%{count} utilizadores encontrados'
         confirm: Confirmar utilizadores selecionados
         hide: Ocultar utilizadores selecionados
+        empty: Não foram encontrados utilizadores correspondentes
       user:
         summary_html: '%{name} criado com o ip %{ip_address} em %{date}'
         summary_no_ip_html: '%{name} criado em %{date}'
index bbbb8bfbb20e072475cf5937a9c65b38a61130ce..44a6e3a7b6dd82844fde7979372fcc5ff130873b 100644 (file)
@@ -151,8 +151,9 @@ pt:
         support_url: URL de suporte
         allow_read_prefs: ler preferências do usuário
         allow_write_prefs: modificar preferências do usuário
-        allow_write_diary: criar publicações no diário, comentários e adicionar amigos
+        allow_write_diary: criar publicações no diário e comentários
         allow_write_api: modificar o mapa
+        allow_write_changeset_comments: comentar os conjuntos de alterações
         allow_read_gpx: ler as rotas GPS privadas do usuário
         allow_write_gpx: enviar rotas GPS
         allow_write_notes: modificar notas
@@ -306,9 +307,9 @@ pt:
         comment: Comentário
         full: Nota completa
   accounts:
-    edit:
+    show:
       title: Editar conta
-      my settings: Minhas configurações
+      my_account: Minha conta
       current email address: Endereço de e-mail atual
       external auth: Autenticação externa
       openid:
@@ -321,7 +322,11 @@ pt:
           e aceitar os novos Termos de Contribuição.
         agreed_with_pd: Você também declara que considera suas edições em Domínio
           Público.
+        link: https://wiki.openstreetmap.org/wiki/Pt:Open_Database_License/Contributor_Terms
         link text: o que é isso?
+        not_agreed_with_pd: Você não declarou que considera suas edições como sendo
+          de Domínio Público.
+        pd_link_text: declarar
       save changes button: Salvar alterações
       delete_account: Eliminar Conta...
     go_public:
@@ -360,7 +365,7 @@ pt:
         retain_edits: Suas edições ao banco de dados de mapas, se houverem, serão
           mantidas.
         retain_traces: Seus rastros enviados, caso existam, serão retidos.
-        retain_diary_entries: Seus diários e comentários em diários, se existirem,
+        retain_diary_entries: Suas publicações e comentários no diário, se existirem,
           serão retidos mas escondidos.
         retain_notes: Suas notas de mapa e comentários das notas, se existirem, serão
           retidas mas escondidas.
@@ -385,8 +390,6 @@ pt:
         tou_explain_html: Esses %{tou_link} governam o uso do site e de outras infraestruturas
           fornecidas pelo OSMF. Por favor, clique no link, leia e concorde com o texto.
         read_tou: Li e aceito os Termos de uso
-        consider_pd: Além do acima, considero minhas contribuições como Public Domain
-        consider_pd_why: o que é isso?
         guidance_info_html: 'Informações para ajudar a entender estes termos: um %{readable_summary_link}
           e alguns %{informal_translations_link}'
         readable_summary: resumo legível para humanos
@@ -407,6 +410,20 @@ pt:
           contribuidor. Para mais informações, consulta %{terms_declined_link}.
         terms_declined_link: esta página wiki
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=pt-br
+    pd_declarations:
+      show:
+        title: Considerar minhas contribuições como sendo de Domínio Público
+        consider_pd: Eu considero que minhas contribuições são de Domínio Público
+        consider_pd_why: Por que eu gostaria que minhas contribuições fossem de Domínio
+          Público?
+        confirm: Confirmar
+      create:
+        successfully_declared: Você declarou com sucesso que considera suas edições
+          como sendo de Domínio Público.
+        already_declared: Você já declarou que considera suas edições como sendo de
+          Domínio Público.
+        did_not_confirm: Você não confirmou que considera suas edições como sendo
+          de Domínio Público.
   browse:
     deleted_ago_by_html: Excluído há %{time_ago} por %{user}
     edited_ago_by_html: Editado %{time_ago} por %{user}
@@ -475,6 +492,7 @@ pt:
     start_rjs:
       feature_warning: Carregando %{num_features} elementos, o que pode deixar seu
         navegador lento ou travado. Deseja mesmo exibir estes dados?
+      feature_error: 'Os elementos não puderam ser carregados: %{message}'
       load_data: Carregar dados
       loading: Carregando...
     tag_details:
@@ -505,6 +523,8 @@ pt:
       view_redacted_data: Ver dados reduzidos
       view_redaction_message: Ver mensagem de redação
   nodes:
+    not_found_message:
+      sorry: 'Desculpe, não foi possível encontrar o nó #%{id}.'
     timeout:
       sorry: Desculpe, os dados para o nó com id %{id} demoraram demais para ser obtidos.
   old_nodes:
@@ -513,6 +533,8 @@ pt:
     timeout:
       sorry: Desculpe, o histórico do nó com id %{id} demorou demais para ser obtido.
   ways:
+    not_found_message:
+      sorry: 'Desculpe, não foi possível encontrar o caminho #%{id}.'
     timeout:
       sorry: Desculpe, os dados do caminho com o id %{id} demoraram muito para serem
         recuperados.
@@ -523,6 +545,8 @@ pt:
       sorry: Desculpe, o histórico do caminho com o id %{id} levou muito tempo para
         ser recuperado.
   relations:
+    not_found_message:
+      sorry: 'Desculpe, não foi possível encontrar a relação #%{id}.'
     timeout:
       sorry: Desculpe, os dados do caminho com o id %{id} demoraram muito para serem
         recuperados.
@@ -552,6 +576,7 @@ pt:
       title: Conjuntos de alterações
       title_user: Conjuntos de alterações de %{user}
       title_user_link_html: Conjuntos de alterações de %{user_link}
+      title_followed: Conjuntos de alterações das pessoas que sigo
       title_nearby: Conjuntos de alterações de usuários próximos
       empty: Nenhum conjunto de alterações encontrado.
       empty_area: Nenhum conjunto de alterações nesta área.
@@ -594,6 +619,8 @@ pt:
       ways_paginated: Linhas (%{x}-%{y} de %{count})
       relations: Relações (%{count})
       relations_paginated: Relações (%{x}-%{y} de %{count})
+    not_found_message:
+      sorry: 'Desculpe, não foi possível encontrar o conjunto de alteração #%{id}.'
     timeout:
       sorry: A lista de conjuntos de alterações solicitada está demorando demais para
         chegar.
@@ -621,13 +648,18 @@ pt:
     popup:
       your location: Sua localização
       nearby mapper: Mapeador próximo
+      following: Seguindo
     show:
       title: Meu painel
       no_home_location_html: '%{edit_profile_link} e defina seu local de origem para
         ver usuários próximos.'
       edit_your_profile: Editar seu perfil
+      followings: Pessoas que sigo
+      no followings: Você ainda não seguiu nenhum usuário.
       nearby users: Outros usuários próximos
       no nearby users: Ainda não há outros usuários mapeando por perto.
+      followed_changesets: conjuntos de alterações
+      followed_diaries: publicações no diário
       nearby_changesets: conjuntos de alterações de usuários próximos
       nearby_diaries: publicações no diário dos usuários próximos
   diary_entries:
@@ -638,9 +670,10 @@ pt:
       use_map_link: Usar mapa
     index:
       title: Diários dos usuários
+      title_followed: Diários das pessoas que sigo
       title_nearby: Diários dos usuários próximos
       user_title: Diário de %{user}
-      in_language_title: Publicações de Diário em %{language}
+      in_language_title: Publicações no diário em %{language}
       new: Nova publicação no diário
       new_title: Escrever uma nova entrada no meu diário de usuário
       my_diary: Meu diário
@@ -688,11 +721,11 @@ pt:
       location: 'Local:'
     feed:
       user:
-        title: Publicações do diário do OpenStreetMap de %{user}
+        title: Publicações no diário do OpenStreetMap de %{user}
         description: Publicações recentes no diário do OpenStreetMap de %{user}
       language:
         title: Publicações no diário do OpenStreetMap em %{language_name}
-        description: Publicações de diário recentes de usuários do OpenStreetMap em
+        description: Publicações no diário recentes de usuários do OpenStreetMap em
           %{language_name}
       all:
         title: Publicações no diário do OpenStreetMap
@@ -765,6 +798,23 @@ pt:
       title: Arquivo não encontrado
       description: Não foi possível encontrar uma operação de arquivo/diretório/API
         com esse nome no servidor OpenStreetMap (HTTP 404)
+  follows:
+    show:
+      follow:
+        heading: Você quer seguir %{user}?
+        button: Seguir usuário
+      unfollow:
+        heading: Você quer deixar de seguir %{user}?
+        button: Deixar de seguir usuário
+    create:
+      success: Agora você está seguindo %{name}!
+      failed: Desculpe, sua solicitação para seguir %{name} falhou.
+      already_followed: Você já segue %{name}.
+      limit_exceeded: Você seguiu muitos usuários recentemente. Por favor, espere
+        um pouco antes de tentar seguir alguém mais.
+    destroy:
+      success: Você deixou de seguir %{name} com sucesso.
+      not_followed: Você não está seguindo %{name}.
   geocoder:
     search:
       title:
@@ -1019,6 +1069,7 @@ pt:
           bridleway: Hipovia
           bus_guideway: Guiamento de Ônibus
           bus_stop: Ponto de ônibus
+          busway: Via exclusiva de ônibus
           construction: Via em Construção
           corridor: Corredor
           crossing: Faixa de pedestres
@@ -1102,11 +1153,13 @@ pt:
           wreck: Naufrágio
           "yes": Local Histórico
         information:
+          guidepost: Poste de sinalização
           board: Painel de informação
           map: Mapa
           office: Informações Turísticas
           terminal: Terminal de informações
           sign: Sinal de informação
+          stele: Estela informativa
         junction:
           "yes": Entroncamento
         landuse:
@@ -1525,6 +1578,7 @@ pt:
           lake: Lago
           pond: Lagoa
           reservoir: Lago Artificial
+          basin: Bacia artificial
           fishpond: Tanque de peixes
           lagoon: Lagoa
           wastewater: Agua residual
@@ -1728,6 +1782,13 @@ pt:
       hi: Olá %{to_user},
       see_their_profile: Você pode ver o perfil dele(a) em %{userurl}.
       see_their_profile_html: Você pode ver o perfil dele(a) em %{userurl}.
+    gpx_details:
+      filename: Nome do arquivo
+      url: URL
+      description: Descrição
+      tags: Etiquetas
+      total_points: Número total de pontos
+      imported_points: Número de pontos importados
     gpx_failure:
       hi: Olá %{to_user},
       failed_to_import: 'falha na importação do arquivo de rastreamento de GPS. Por
@@ -2054,6 +2115,9 @@ pt:
       preview: Pré-visualizar
       help: Ajuda
     pagination:
+      changeset_comments:
+        older: Comentários mais antigos
+        newer: Comentários mais recentes
       diary_comments:
         older: Comentários mais antigos
         newer: Comentários mais recentes
@@ -2751,12 +2815,14 @@ pt:
       openid: Iniciar sessão usando OpenStreetMap
       read_prefs: Ler preferências de usuário
       write_prefs: Modificar preferências de usuário
-      write_diary: Criar entradas de diário, comentar e fazer amigos
+      write_diary: Criar publicações e comentários no diário
       write_api: Modificar o mapa
+      write_changeset_comments: Comentar os conjuntos de alterações
       read_gpx: Ler rotas GPS privadas
       write_gpx: Enviar rotas GPS
       write_notes: Modificar notas
       write_redactions: Rever dados do mapa
+      write_blocks: Criar e revogar bloqueios de usuários
       read_email: Ler o endereço de e-mail do usuário
       consume_messages: Ver, atualizar o status e apagar mensagens de usuários
       send_messages: Enviar mensagens privadas para outros usuários
@@ -2850,8 +2916,6 @@ pt:
           endereços de e-mail
         html: Seu endereço não é exibido publicamente, consulte nossa %{privacy_policy_link}
           para obter mais informações.
-      consider_pd_html: Considero que minhas contribuições estão no %{consider_pd_link}.
-      consider_pd: domínio público
       or: ou
       use external auth: ou inscreva-se com um terceiro
     no_such_user:
@@ -2867,7 +2931,7 @@ pt:
       my notes: Minhas notas de mapa
       my messages: Minhas mensagens
       my profile: Meu perfil
-      my settings: Minhas configurações
+      my_account: Minha conta
       my comments: Meus comentários
       my_preferences: Minhas preferências
       my_dashboard: Meu painel
@@ -2881,6 +2945,8 @@ pt:
       edits: Edições
       traces: Trilhas
       notes: Notas de Mapa
+      unfollow: Deixar de seguir
+      follow: Seguir
       mapper since: 'Mapeador desde:'
       last map edit: 'Última edição do mapa:'
       no activity yet: Ainda sem atividade
@@ -2946,18 +3012,36 @@ pt:
       show:
         title: Usuários
         heading: Usuários
-        empty: Não há usuários correspondentes
+        select_status: Selecionar status
+        states:
+          pending: Pendente
+          active: Ativo
+          confirmed: Confirmado
+          suspended: Suspenso
+          deleted: Excluído
+        ip_address: Endereço IP
+        search: Pesquisar
       page:
         found_users:
           one: '%{count} usuário encontrado'
           other: '%{count} usuários encontrados'
         confirm: Confirmar Usuários Selecionados
         hide: Ocultar Usuários Selecionados
+        empty: Não há usuários correspondentes
       user:
         summary_html: '%{name} criado no computador %{ip_address} em %{date}'
         summary_no_ip_html: '%{name} criado em %{date}'
+    comments:
+      index:
+        heading_html: Comentários de %{user}
+        changesets: Conjuntos de alterações
+        diary_entries: Publicações no diário
+        no_comments: Sem comentários
     changeset_comments:
+      index:
+        title: Comentários em conjuntos de alterações feitos por %{user}
       page:
+        changeset: Conjunto de alterações
         when: Quando
         comment: Comentário
     diary_comments:
@@ -2965,6 +3049,8 @@ pt:
         title: Comentários no diário feitos por %{user}
       page:
         post: Entrada
+        when: Quando
+        comment: Comentário
     suspended:
       title: Conta suspensa
       heading: Conta suspensa
@@ -3060,6 +3146,7 @@ pt:
         ended: finalizado
         revoked_html: revogado por %{name}
         active: ativo
+        active_until_read: ativo até ler
         read_html: Lido em %{time}
         time_in_future_title: '%{time_absolute}; em %{time_relative}'
         time_in_past_title: '%{time_absolute}; %{time_relative}'
@@ -3138,6 +3225,7 @@ pt:
       open_title: 'Nota não resolvida #%{note_name}'
       closed_title: 'Nota resolvida #%{note_name}'
       hidden_title: 'Nota oculta #%{note_name}'
+      description_when_author_is_deleted: excluído
       event_opened_by_html: Criado por %{user} há %{time_ago}
       event_opened_by_anonymous_html: Criado por anônimo há %{time_ago}
       event_commented_by_html: Comentário de %{user} há %{time_ago}
@@ -3171,9 +3259,21 @@ pt:
         isso possa ser corrigido. Mova o marcador para a posição correta e digite
         uma nota para explicar o problema.
       anonymous_warning_html: Você não iniciou sessão. Por favor, %{log_in} ou %{sign_up}
-        se você deseja receber atualizações sobre sua nota.
+        se você deseja receber atualizações sobre sua nota e ajudar outros mapeadores
+        a resolvê-la.
       anonymous_warning_log_in: entre
       anonymous_warning_sign_up: crie uma conta
+      counter_warning_html: Você já postou pelo menos %{x_anonymous_notes}, isso é
+        ótimo para a comunidade, obrigado! Agora, nós o encorajamos a %{contribute_by_yourself},
+        não é tão complicado, e %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} nota anônima'
+        other: '%{count} notas anônimas'
+      counter_warning_guide_link:
+        text: contribuir por si mesmo
+        url: https://wiki.openstreetmap.org/wiki/Pt:Beginners%27_guide
+      counter_warning_forum_link:
+        text: a comunidade pode lhe ajudar
       advice: A sua nota será pública e pode ser usada para atualizar o mapa, portanto,
         não insira informações pessoais ou dados de mapas protegidos por direitos
         autorais ou listas de diretórios.
@@ -3186,6 +3286,8 @@ pt:
       showing_page: Página %{page}
       next: Próxima
       previous: Anterior
+    not_found_message:
+      sorry: 'Desculpe, não foi possível encontrar a nota #%{id}.'
   javascripts:
     close: Fechar
     share:
@@ -3372,6 +3474,9 @@ pt:
       show_address: Mostrar endereço
       query_features: Consultar elementos
       centre_map: Centralizar o mapa aqui
+    home:
+      marker_title: A localização da minha casa
+      not_set: A localização da casa não está definido para sua conta
   redactions:
     edit:
       heading: Editar anulação
index 03454a5a0f5db72ed21e7a7be3a720b6f53d5365..98c13b245fdcada666914efb1bcbae0cc5cc03e0 100644 (file)
@@ -275,9 +275,8 @@ ro:
         comment: Comentariu
         full: Notă completă
   accounts:
-    edit:
+    show:
       title: Modificare cont
-      my settings: Setările mele
       current email address: Adresa de e-mail actuală
       external auth: Autentificare externă
       openid:
@@ -355,10 +354,6 @@ ro:
           a altor infrastructuri furnizate de OSMF. Faceți clic pe link, citiți și
           agregați textul.
         read_tou: Am citit și sunt de acord cu Termenii și condițiile
-        consider_pd: Pe lângă acordul de mai sus, consider că contribuțiile mele sunt
-          în Domeniul Public
-        consider_pd_why: Ce este aceasta?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Informații pentru a ajuta la înțelegerea acestor termeni:
           un %{readable_summary_link} și câteva %{informal_translations_link}'
         readable_summary: rezumat care poate fi citit de om
@@ -379,6 +374,9 @@ ro:
           de Contributor. Pentru mai multe informații, consultați %{terms_declined_link}.
         terms_declined_link: această pagină wiki
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: Șters %{time_ago} de %{user}
     edited_ago_by_html: Editat %{time_ago} de %{user}
@@ -2744,8 +2742,6 @@ ro:
           privind adresele de e-mail
         html: Adresa dvs. nu este afișată public, consultați %{privacy_policy_link}
           pentru mai multe informații.
-      consider_pd_html: Consider că contribuțiile mele sunt în %{consider_pd_link}.
-      consider_pd: domeniul public
       or: sau
       use external auth: sau înregistrați-vă cu o terță parte
     no_such_user:
@@ -2761,7 +2757,6 @@ ro:
       my notes: Notițele mele
       my messages: Mesajele mele
       my profile: Profilul meu
-      my settings: Setările mele
       my comments: Comentariile mele
       my_preferences: Preferințele mele
       my_dashboard: Dashboardul meu
@@ -2841,7 +2836,6 @@ ro:
       show:
         title: Utilizatori
         heading: Utilizatori
-        empty: Nu au fost găsiți utilizatori potriviți
       page:
         found_users:
           one: '%{count} utilizator găsit'
@@ -2849,6 +2843,7 @@ ro:
           other: ""
         confirm: Confirmați utilizatorii selectați
         hide: Ascundeți utilizatorii selectați
+        empty: Nu au fost găsiți utilizatori potriviți
       user:
         summary_html: '%{name} creat de %{ip_address} pe %{date}'
         summary_no_ip_html: '%{name} creat pe %{date}'
index 30b29e742cc943f29f230a149a7d1684ff67f7c2..ac27335ed94a8d6a58a6bf804243bdac258612df 100644 (file)
@@ -382,9 +382,8 @@ ru:
         comment: Комментарий
         full: Полный текст
   accounts:
-    edit:
+    show:
       title: Изменить учетную запись
-      my settings: Мои настройки
       current email address: Текущий адрес электронной почты
       external auth: 'Внешняя аутентификация:'
       openid:
@@ -463,10 +462,6 @@ ru:
         tou_explain_html: '%{tou_link} управляет сайтом и иной инфраструктурой, предоставляемой
           OSMF. Пожалуйста, перейдите по ссылке и ознакомьтесь с текстом.'
         read_tou: Я соглашаюсь с Условиями использования
-        consider_pd: В дополнение к вышеизложенному, я принимаю во внимание, что мой
-          вклад находится в общественном достоянии
-        consider_pd_why: что это значит?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Информация, помогающая понять эти условия: %{readable_summary_link}
           и некоторые %{informal_translations_link}'
         readable_summary: краткое содержание
@@ -487,6 +482,20 @@ ru:
           Для получения дополнительной информации смотрите %{terms_declined_link}.
         terms_declined_link: эта страница вики
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=ru
+    pd_declarations:
+      show:
+        title: Считайте мои вклады общественным достоянием
+        consider_pd: Я считаю , мои вклады общественным достоянием.
+        consider_pd_why: Почему я хотел бы, чтобы мои материалы стали общественным
+          достоянием?
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: Подтвердить
+      create:
+        successfully_declared: Вы успешно заявили, что считаете свои правки общественным
+          достоянием.
+        already_declared: Вы уже заявили, что считаете свои правки общественным достоянием.
+        did_not_confirm: Вы не подтвердили, что считаете свои редактирования общественным
+          достоянием.
   browse:
     deleted_ago_by_html: Удален %{time_ago} пользователем %{user}
     edited_ago_by_html: Редактировал %{time_ago} %{user}
@@ -2751,6 +2760,7 @@ ru:
       write_gpx: Загрузить GPS-треки
       write_notes: Изменить заметки
       write_redactions: Редактировать данные карты
+      write_blocks: Создание и отмена блокировок пользователей
       read_email: Читать адрес электронной почты пользователя
       consume_messages: Читать, обновлять статус и удалять сообщения пользователей
       send_messages: Отправлять личные сообщения другим пользователям
@@ -2846,7 +2856,6 @@ ru:
       my notes: Мои заметки
       my messages: Мои сообщения
       my profile: Мой профиль
-      my settings: Мои настройки
       my comments: Мои комментарии
       my_preferences: Мои предпочтения
       my_dashboard: Мой пульт
@@ -2910,13 +2919,23 @@ ru:
       show:
         title: Пользователи
         heading: Пользователи
-        empty: Не найдено соответствующих пользователей
+        states:
+          pending: В ожидании
+          confirmed: Подтверждено
+          suspended: Приостановлено
+          deleted: Удалено
+        ip_address: IP-адрес
+        search: Поиск
       page:
         confirm: Подтвердить выделенных пользователей
         hide: Скрыть выделенных пользователей
+        empty: Не найдено соответствующих пользователей
       user:
         summary_html: '%{name} создан %{date}, с адреса %{ip_address}'
         summary_no_ip_html: '%{name} создан %{date}'
+    comments:
+      index:
+        diary_entries: Записи в дневнике
     changeset_comments:
       page:
         when: Когда
@@ -3139,8 +3158,6 @@ ru:
       anonymous_warning_sign_up: зарегистрироваться
       counter_warning_guide_link:
         url: https://wiki.openstreetmap.org/wiki/RU:%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0
-      counter_warning_forum_link:
-        url: https://community.openstreetmap.org/
       advice: Ваша заметка является общедоступной и может использоваться для обновления
         карты, поэтому не вводите личную информацию, информацию из защищённых авторскими
         правами карт или справочников.
@@ -3345,6 +3362,8 @@ ru:
       show_address: Показать адрес
       query_features: Что здесь?
       centre_map: Центрировать карту
+    home:
+      not_set: Установка места нахождения не установлена для вашей учётной записи
   redactions:
     edit:
       heading: Редактировать исправление
index 1a14e727a49975535536f6f16aca28e8829e626d..bff9f7440f391791eb3be42b7db45d42b294163a 100644 (file)
@@ -125,9 +125,8 @@ sat:
         comment: ᱚᱠᱛᱟ
         full: ᱜᱚᱴᱟ ᱠᱷᱟᱴᱟᱹ ᱚᱞ
   accounts:
-    edit:
+    show:
       title: ᱠᱷᱟᱛᱟ ᱥᱟᱯᱲᱟᱣ ᱢᱮ
-      my settings: ᱤᱧᱟᱜ ᱥᱟᱡᱟᱣᱠᱚ
       current email address: 'ᱱᱮᱛᱚᱜ-ᱟᱜ ᱤᱢᱮᱞ ᱴᱷᱤᱠᱟᱹᱬᱟ:'
       openid:
         link text: ᱱᱤᱭᱟᱹ ᱫᱚ ᱪᱮᱫ?
@@ -136,7 +135,6 @@ sat:
       save changes button: ᱵᱚᱫᱚᱞᱠᱚ ᱪᱟᱺᱪᱟᱣ ᱢᱮ
     terms:
       show:
-        consider_pd_why: ᱱᱤᱭᱟᱹ ᱫᱚ ᱪᱮᱫ?
         continue: ᱞᱮᱛᱟᱲ
   browse:
     anonymous: ᱵᱟᱝ ᱵᱟᱰᱟᱭ
@@ -586,7 +584,6 @@ sat:
       my notes: ᱤᱧᱭᱟᱜ ᱠᱷᱟᱴᱟᱹ ᱚᱞᱠᱚ
       my messages: ᱤᱧᱭᱟᱜ ᱠᱷᱚᱵᱚᱨ ᱠᱚ
       my profile: ᱤᱧᱭᱟᱜ ᱢᱚᱦᱲᱟ
-      my settings: ᱤᱧᱟᱜ ᱥᱟᱡᱟᱣᱠᱚ
       my comments: ᱤᱧᱭᱟᱜ ᱚᱠᱛᱟ ᱠᱚ
       send message: ᱠᱷᱚᱵᱚᱨ ᱠᱩᱞ ᱢᱮ
       diary: ᱰᱟᱭᱨᱤ
index 36d82aac5264b333f2b9211f1cca07095e8eb7e4..9ab63efeadf2cea89cd7c3f949c634abc948a773 100644 (file)
@@ -1,6 +1,7 @@
 # Messages for Sardinian (sardu)
 # Exported from translatewiki.net
 # Export driver: phpyaml
+# Author: Eic17H
 # Author: Gravitystorm
 # Author: L2212
 # Author: Larentzu
@@ -240,9 +241,9 @@ sc:
         comment: Cummentu
         full: Nota intrea
   accounts:
-    edit:
+    show:
       title: Modìfica su profilu
-      my settings: Preferèntzias meas
+      my_account: Su contu meu
       current email address: Indiritzu de posta eletrònica atuale
       external auth: Autenticatzione esterna
       openid:
@@ -324,9 +325,6 @@ sc:
           àteras infrastruturas frunidas dae s'OSFM. Incarca in su ligàmene, leghe
           su testu e atzetade·lu.
         read_tou: Apo letu e atzeto sas cunditziones de impreu
-        consider_pd: Paris a totu su chi b'at inoghe in subra, atzeto chi sos contributos
-          meos siant de domìniu pùblicu
-        consider_pd_why: ite est custu?
         guidance_info_html: 'Informatziones pro t''agiuare a cumprèndere custas cunditziones:
           unu %{readable_summary_link} e unas cantas %{informal_translations_link}'
         readable_summary: resumu chi un'èssere umanu podet lèghere
@@ -2624,7 +2622,7 @@ sc:
       my notes: Sas notas meas
       my messages: Sos messàgios meos
       my profile: Su profilu meu
-      my settings: Sas impostatziones meas
+      my_account: Su contu meu
       my comments: Sos cummentos meos
       my_preferences: Sas preferèntzias meas
       my_dashboard: Su pannellu de controllu meu
@@ -2687,10 +2685,10 @@ sc:
       show:
         title: Utentes
         heading: Utentes
-        empty: Non b'at perunu utente chi currispondat
       page:
         confirm: Cunfirma sos utentes seletzionados
         hide: Cua sos utentes seletzionados
+        empty: Non b'at perunu utente chi currispondat
       user:
         summary_html: '%{name} creadu dae %{ip_address} su %{date}'
         summary_no_ip_html: '%{name} creadu su %{date}'
index a10e34aef3441244120dac02a487e6333ec18200..096b199293f73b808cef331cef0ac630834ebca6 100644 (file)
@@ -212,9 +212,8 @@ scn:
         comment: Cummentu
         full: Nota cumpleta
   accounts:
-    edit:
+    show:
       title: Cancia u cuntu
-      my settings: Mpustazzioni
       current email address: Nnirizzu e-mail attuali
       external auth: Tranzuntari di fora
       openid:
@@ -250,9 +249,6 @@ scn:
       show:
         title: Cunnizzioni
         heading: Cunnizzioni
-        consider_pd: Sparti dû cuntrattu ccassupra, cunzìddiru chi li mè cuntribbuti
-          sunnu ntô Duminiu Pùbblicu
-        consider_pd_why: chi voli diri?
         you need to accept or decline: Pi cuntinuari, pi favuri leggi li cunnizzioni
           di cuntribbuzzioni novi e appoi accèttali o rifiùtali.
         legale_select: 'Paisi di risidenza:'
@@ -1662,7 +1658,6 @@ scn:
       my notes: Li mè noti
       my messages: Li mè missaggi
       my profile: Lu mè prufilu
-      my settings: Li mè mpustazzioni
       my comments: Li mè cummenti
       my_preferences: Li mè prifirenzi
       blocks on me: Cu blocca a mìa
@@ -1717,10 +1712,10 @@ scn:
       show:
         title: Utenti
         heading: Utenti
-        empty: Nun fu attruvatu nuḍḍu utenti chi currispunni
       page:
         confirm: Cunferma a l'utenti scigghiuti
         hide: Ammuccia a l'utenti scigghiuti
+        empty: Nun fu attruvatu nuḍḍu utenti chi currispunni
       user:
         summary_html: '%{name} criatu di %{ip_address} lu %{date}'
         summary_no_ip_html: '%{name} criatu lu %{date}'
index b3bd6e4ef2c9d9b49a97b7c2f2261ccf9268c0df..061c90cadd52ba7a136f8901c2b0a7995a6904ef 100644 (file)
@@ -102,7 +102,7 @@ sco:
       name: Remote Control
       description: Remote Control (JOSM or Merkaartor)
   accounts:
-    edit:
+    show:
       title: Edit accoont
   browse:
     version: Vairsion
index 1dc8d90cee5c37751e359bbb078a79d5c0bf3ce5..a3ea81ec4db1094df77d659cd843f69e820afd45 100644 (file)
@@ -179,9 +179,8 @@ sh:
         comment: Komentar
         full: Cijela napomena
   accounts:
-    edit:
+    show:
       title: Uredi račun
-      my settings: Moje postavke
       current email address: Trenutna adresa e-pošte
       openid:
         link text: šta je ovo?
index 47f602bc438d74f094c161d1372916f791153cc5..3156e41ef52240100c798229ceb99bb863ca27d5 100644 (file)
@@ -285,9 +285,8 @@ sk:
         comment: Komentár
         full: Celá poznámka
   accounts:
-    edit:
+    show:
       title: Upraviť účet
-      my settings: Moje nastavenia
       current email address: Aktuálna e-mailová adresa
       external auth: Externá autentifikácia
       openid:
@@ -356,9 +355,6 @@ sk:
           používania, po dokončení začiarknite obe políčka a potom stlačte tlačidlo
           pokračovať.
         read_tou: Prečítal som si Podmienky používania a súhlasím s nimi
-        consider_pd: Navyše k vyššie uvedenému vyhlasujem, že považujem svoje príspevky
-          za slobodné dielo (Public Domain).
-        consider_pd_why: čo to znamená?
         continue: Pokračovať
         cancel: Zrušiť
         you need to accept or decline: Pre pokračovanie si prosím prečítajte a príjmite,
@@ -2584,8 +2580,6 @@ sk:
       email_help:
         html: Vaša adresa sa nezobrazuje verejne, pre ďalšie informácie venujte pozornosť
           našim %{privacy_policy_link}.
-      consider_pd_html: Moje príspevky považujem za %{consider_pd_link}.
-      consider_pd: Verejná doména
       or: alebo
       use external auth: prípadne využite na registráciu služby tretích strán
     no_such_user:
@@ -2601,7 +2595,6 @@ sk:
       my notes: Moje poznámky k mape
       my messages: Moje správy
       my profile: Môj profil
-      my settings: Moje nastavenia
       my comments: Moje komentáre
       my_preferences: Moje predvoľby
       my_dashboard: Moja nástenka
@@ -2668,10 +2661,10 @@ sk:
       show:
         title: Používatelia
         heading: Používatelia
-        empty: Žiadni používatelia vyhovujúci podmienkam neboli nájdení
       page:
         confirm: Potvrdiť zvolených používateľov
         hide: Skryť vybraných používateľov
+        empty: Žiadni používatelia vyhovujúci podmienkam neboli nájdení
       user:
         summary_html: '%{name} založené %{date} z %{ip_address}'
         summary_no_ip_html: '%{name} založený %{date}'
index 3f1d4dad3451789f4f0a138e1573db8d5e2e94b7..bcc03a0a28841d9a217f0e3b03f3f432009bf27c 100644 (file)
@@ -155,9 +155,9 @@ skr-arab:
         comment: رائے
         full: پورا نوٹ
   accounts:
-    edit:
+    show:
       title: کھاتے وچ تبدیلی کرو
-      my settings: میݙیاں ترتیباں
+      my_account: میݙا کھاتہ
       current email address: موجودہ ای میل پتہ
       external auth: باہرلی تصدیق
       openid:
@@ -1105,7 +1105,7 @@ skr-arab:
       undelete: بحال
   sessions:
     new:
-      tab_title: لاگ ان
+      tab_title: لاگ ان تھیوو
       email or username: ای میل پتہ یا ورتݨ ناں
       password: پاس ورڈ
       remember: میکوں یاد رکھو
@@ -1325,10 +1325,18 @@ skr-arab:
       or: یا
     show:
       my profile: میݙی پروفائل
-      my settings: میݙیاں ترتیباں
+      my_account: میݙا کھاتہ
       my comments: میݙے تبصرے
+    lists:
+      show:
+        select_status: حیثیت چݨو
+        states:
+          active: فعال
+          deleted: مٹا ݙتے
+        ip_address: آئی پی پتہ
     comments:
       index:
+        diary_entries: ڈائری دی انٹری
         no_comments: کوئی تبصرہ کائنی
     changeset_comments:
       page:
index fa218dd78a63e3352f33710f83e8721a460414c2..74388e3bc76e6ed01bc217827798c1cb9204bf7a 100644 (file)
@@ -280,9 +280,8 @@ sl:
         comment: Komentar
         full: Celotna opomba
   accounts:
-    edit:
+    show:
       title: Urejanje uporabniškega računa
-      my settings: Moje nastavitve
       current email address: Trenutni e-poštni naslov
       external auth: Zunanja avtentikacija
       openid:
@@ -358,8 +357,6 @@ sl:
           infrastrukturo, ki jo zagotavlja OSMF. Kliknite povezavo, preberite jih
           in potrdite strinjanje z besedilom.
         read_tou: Prebral sem pogoje uporabe in soglašam z njimi
-        consider_pd: Poleg zgoraj navedenega menim, da so moji prispevki v javni domeni
-        consider_pd_why: kaj je to?
         guidance_info_html: 'Informacije za lažje razumevanje teh izrazov: %{readable_summary_link}
           in nekaj %{informal_translations_link}'
         readable_summary: človeško berljiv povzetek
@@ -2706,8 +2703,6 @@ sl:
         privacy_policy_title: Pravilnik o zasebnosti OSMF, vključno z razdelkom o
           e-poštnih naslovih
         html: Vaš naslov ni javno prikazan, za več informacij glejte naš %{privacy_policy_link}.
-      consider_pd_html: Svoje prispevke štejem za %{consider_pd_link}.
-      consider_pd: javna domena
       or: ali
       use external auth: ali se prijavite prek tretje osebe
     no_such_user:
@@ -2723,7 +2718,6 @@ sl:
       my notes: Moje opombe
       my messages: Sporočila
       my profile: Moj profil
-      my settings: Moje nastavitve
       my comments: Moji komentarji
       my_preferences: Moje prilagoditve
       my_dashboard: Moja nadzorna plošča
@@ -2801,10 +2795,10 @@ sl:
       show:
         title: Uporabniki
         heading: Uporabniki
-        empty: Nobenega uporabnika ni bilo mogoče najti
       page:
         confirm: Potrdi izbrane uporabnike
         hide: Skrij izbrane uporabnike
+        empty: Nobenega uporabnika ni bilo mogoče najti
       user:
         summary_html: '%{name} ustvarjen iz %{ip_address} dne %{date}'
         summary_no_ip_html: '%{name} ustvarjen dne %{date}'
index d7e41da32d2e9316ab20d7a7f6378ed63e76872b..1e83e75124ae2165175c1542dd6c84cdf24d652c 100644 (file)
@@ -122,9 +122,8 @@ sq:
       name: Kontroll nga Larg
       description: Kontrollo nga larg (JOSM, Potlatch, Merkaartor)
   accounts:
-    edit:
+    show:
       title: Redakto llogarinë
-      my settings: Preferencat e mia
       current email address: Adresa e Tanishme e Emailit
       openid:
         link text: çfarë është kjo?
@@ -149,9 +148,6 @@ sq:
       show:
         title: Kushtet
         heading: Kushtet
-        consider_pd: Përveç marrëveshjes së mësipërme, unë i konsideroj kontributet
-          e mia të jenë në Domeinin Publik
-        consider_pd_why: çfarë është kjo?
         legale_select: 'Vendi i banimit:'
         legale_names:
           france: Francë
@@ -1227,7 +1223,6 @@ sq:
       my notes: Shënimet e mia
       my messages: Mesazhet e mia
       my profile: Profili im
-      my settings: Preferencat e mia
       my comments: Komentet e mia
       blocks on me: Blloqet mbi mua
       blocks by me: Bllokimet nga unë
@@ -1267,10 +1262,10 @@ sq:
       show:
         title: Përdoruesi
         heading: Përdorues
-        empty: Asnjë përdorues që përputhet nuk u gjet
       page:
         confirm: Konfirmo përdoruesit e zgjedhur
         hide: Fshih përdoruesit e zgjedhur
+        empty: Asnjë përdorues që përputhet nuk u gjet
       user:
         summary_html: '%{name} krijuar nga %{ip_address} më %{date}'
         summary_no_ip_html: '%{name} krijuar më %{date}'
index 6b83ac0bb77e385f89e2775e87584b10c0ef06f8..0a13081f01651dca6204e311c59c355ada76e574 100644 (file)
@@ -117,9 +117,8 @@ sr-Latn:
       name: Daljinsko upravljanje
       description: Daljinsko upravljanje (JOSM ili Merkaartor)
   accounts:
-    edit:
+    show:
       title: Uredi nalog
-      my settings: Postavke
       current email address: 'Trenutna e-adresa:'
       openid:
         link text: šta je ovo?
@@ -143,9 +142,6 @@ sr-Latn:
       show:
         title: Uslovi uređivanja
         heading: Uslovi uređivanja
-        consider_pd: Prema gorenavedenom ugovoru, smatram da moji doprinosi pripadaju
-          javnom vlasništvu
-        consider_pd_why: šta je ovo?
         you need to accept or decline: Molimo vas da pročitate ugovor pre nego što
           ga prihvatite.
         legale_select: 'Izaberite zemlju prebivališta:'
@@ -1083,7 +1079,6 @@ sr-Latn:
       my diary: moj dnevnik
       my edits: moje izmene
       my traces: moji tragovi
-      my settings: moje postavke
       my comments: moji komentari
       blocks on me: blokiranja na mene
       blocks by me: moja blokiranja
@@ -1134,10 +1129,10 @@ sr-Latn:
       show:
         title: Korisnici
         heading: Korisnici
-        empty: Nije pronađen nijedan korisnik
       page:
         confirm: Potvrdi izabrane korisnike
         hide: Sakrij izabrane korisnike
+        empty: Nije pronađen nijedan korisnik
       user:
         summary_html: '%{name} napravljeno od %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
index e18dd74011a5f013795fc3a7b4f91cce41d96db2..c23d9b28adea575606c96c690ffc95dd018499da 100644 (file)
@@ -257,9 +257,8 @@ sr:
         comment: Коментар
         full: Потпуна белешка
   accounts:
-    edit:
+    show:
       title: Уреди налог
-      my settings: Поставке
       current email address: Тренутна имејл адреса
       external auth: Спољна аутентификација
       openid:
@@ -299,9 +298,6 @@ sr:
         heading: Услови
         read_ct: Прочитао сам и прихватам горе наведене услове
         read_tou: Прочитао сам и прихватам Услове коришћења
-        consider_pd: Према горенаведеном, сматрам да моји доприноси припадају јавном
-          власништву
-        consider_pd_why: шта је ово?
         guidance_info_html: 'Информације за разумевање ових услова: a %{readable_summary_link}
           и %{informal_translations_link}'
         readable_summary: сумарум
@@ -319,6 +315,9 @@ sr:
         terms accepted: Хвала вам што прихватате нове услове уређивања.
       terms_declined_flash:
         terms_declined_url: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=sr-ec
+    pd_declarations:
+      show:
+        confirm: Потврди
   browse:
     edited_ago_by_html: Уређено %{time_ago} од %{user}
     version: Верзија
@@ -2127,7 +2126,6 @@ sr:
       continue: Отвори налог
       email_help:
         privacy_policy: политика приватности
-      consider_pd: јавно власништво
       or: или
       use external auth: или се региструјте путем треће стране
     no_such_user:
@@ -2143,7 +2141,6 @@ sr:
       my notes: Моје белешке
       my messages: Моје поруке
       my profile: Мој профил
-      my settings: Моје поставке
       my comments: Моји коментари
       my_preferences: Моја подешавања
       my_dashboard: Tабла
@@ -2205,10 +2202,14 @@ sr:
       show:
         title: Корисници
         heading: Корисници
-        empty: Није пронађен ниједан корисник
+        states:
+          deleted: Обрисано
+        ip_address: IP адреса
+        search: Претрага
       page:
         confirm: Потврди изабране кориснике
         hide: Сакриј изабране кориснике
+        empty: Није пронађен ниједан корисник
       user:
         summary_html: '%{name} направљено од %{ip_address} дана %{date}'
         summary_no_ip_html: '%{name} направљено %{date}'
index 76a27d7c3bd68016db5409eb235ff4ecee43600b..52d7cb2a281fa9cff7309164f59b1677ad3eee9e 100644 (file)
@@ -290,9 +290,8 @@ sv:
         comment: Kommentar
         full: Hela anteckningen
   accounts:
-    edit:
+    show:
       title: Redigera konto
-      my settings: Mina inställningar
       current email address: Nuvarande e-postadress
       external auth: Extern autentisering
       openid:
@@ -368,9 +367,6 @@ sv:
           och andra infrastrukturer från OSMF får användas. Klicka på länken, läs
           och godkänn villkoren.
         read_tou: Jag har läst och samtycker med användarvillkoren.
-        consider_pd: Utöver ovan nämnda avtal, anser jag att mina bidrag är inom allmän
-          egendom.
-        consider_pd_why: vad är det här?
         guidance_info_html: 'Information som hjälper dig att förstå dessa termer:
           en %{readable_summary_link} och några %{informal_translations_link}'
         readable_summary: mänskligt läsbar sammanfattning
@@ -2882,8 +2878,6 @@ sv:
         privacy_policy_title: OSMF:s integritetspolicy inkluderingsavsnitt om e-postadresser
         html: Din adress visas inte offentligt, se vår %{privacy_policy_link} för
           mer information.
-      consider_pd_html: Jag anser mina bidrag vara i %{consider_pd_link}.
-      consider_pd: public domain
       or: eller
       use external auth: eller registrera med en tredje part
     no_such_user:
@@ -2899,7 +2893,6 @@ sv:
       my notes: Mina kartanteckningar
       my messages: Mina meddelanden
       my profile: Min profil
-      my settings: Mina inställningar
       my comments: Mina kommentarer
       my_preferences: Mina alternativ
       my_dashboard: Min kontrollpanel
@@ -2979,13 +2972,13 @@ sv:
       show:
         title: Användare
         heading: Användare
-        empty: Inga motsvarande användare hittades
       page:
         found_users:
           one: '%{count} användare hittade'
           other: '%{count} användare hittade'
         confirm: Bekräfta valda användare
         hide: Dölj valda användare
+        empty: Inga motsvarande användare hittades
       user:
         summary_html: '%{name} skapades från %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} skapad den %{date}'
index 0c2786da62551ad440d016d58bdb896daf7c5dea..c655cadeaa7656a9c759d4bc250e83f2fe4aaf89 100644 (file)
@@ -174,9 +174,8 @@ ta:
         opened_at_html: '%{when} உருவாக்கப்பட்டது'
         opened_at_by_html: '%{when} %{user} பயனரால் உருவாக்கப்பட்டது'
   accounts:
-    edit:
+    show:
       title: கணக்கை திருத்து
-      my settings: என் அமைப்புகள்
       current email address: 'தற்பொழுதுள்ள மின்னஞ்சல் முகவரி:'
       openid:
         link text: இது என்ன?
@@ -773,7 +772,6 @@ ta:
     show:
       my diary: எனது நாட்குறிப்பேடு
       my edits: என் திருத்தங்கள்
-      my settings: என் அமைப்புகள்
       create_mute: இப்பயனரை மௌனி
       destroy_mute: இப்பயனரை ஓசையாக்கு
       diary: நாட்குறிப்பேடு
index 7313cad71c4a4659af3584eb3ab57dc97dc40164..1ddbee045bf04fd3ec201c1b6814f0160b8d76f4 100644 (file)
@@ -238,9 +238,8 @@ te:
         comment: వ్యాఖ్య
         full: పూర్తి గమనిక
   accounts:
-    edit:
+    show:
       title: ఖాతా మార్పు
-      my settings: నా అమరికలు
       current email address: ప్రస్తుత ఈమెయిలు చిరునామా
       external auth: బయటి ఆథెంటికేషను
       openid:
@@ -292,7 +291,6 @@ te:
       show:
         heading: నియమాలు
         read_tou: నేను వాడుక నియమాలను చదివాను, వాటికి అంగీకరిస్తున్నాను
-        consider_pd_why: ఇది ఏమిటి?
         informal_translations: అనధికారిక అనువాదాలు
         continue: కొనసాగించు
         legale_select: 'నివసించే దేశం:'
@@ -2069,7 +2067,6 @@ te:
       my notes: నా గమనికలు
       my messages: నా సందేశాలు
       my profile: నా ప్రొఫైలు
-      my settings: నా అమరికలు
       my comments: నా వ్యాఖ్యలు
       my_preferences: నా అభీష్టాలు
       my_dashboard: నా డ్యాష్‌బోర్డు
@@ -2126,10 +2123,10 @@ te:
       show:
         title: వాడుకరులు
         heading: వాడుకరులు
-        empty: సరిపోలే వాడుకరులు కనబడలేదు
       page:
         confirm: ఎంచుకున్న వాడూకరులను ధ్రువీకరించు
         hide: ఎంచుకున్న వాడుకరులను దాచు
+        empty: సరిపోలే వాడుకరులు కనబడలేదు
       user:
         summary_html: '%{name}, %{date} న %{ip_address} నుండి సృష్టించారు'
         summary_no_ip_html: '%{name} %{date} న సృష్టించారు'
index 21a2cb7a4e6811b96c8d96de67af99db8895dbd1..2c244ac8f6cf5ce90da546b7a312bbce3314dc26 100644 (file)
@@ -68,6 +68,7 @@ th:
       message: ข้อความ
       node: โหนด
       node_tag: ป้ายกำกับโหนด
+      note: หมายเหตุ
       old_node: โหนดเก่า
       old_node_tag: แท็กกำกับโหนดเก่า
       old_relation: ความสัมพันธ์เดิม
@@ -98,8 +99,9 @@ th:
         support_url: ที่อยู่ URL สนับสนุน
         allow_read_prefs: อ่านการตั้งค่าของผู้ใช้
         allow_write_prefs: แก้ไขการตั้งค่าของผู้ใช้
-        allow_write_diary: à¸ªà¸£à¹\89าà¸\87รายà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81 à¸\82à¹\89อà¸\84ิà¸\94à¹\80หà¹\87à¸\99 à¹\81ละà¸\9eà¸\9aà¹\80à¸\9eืà¹\88อà¸\99à¹\83หมà¹\88
+        allow_write_diary: à¸ªà¸£à¹\89าà¸\87รายà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81 à¸\82à¹\89อà¸\84ิà¸\94à¹\80หà¹\87à¸\99 à¹\81ละà¹\81สà¸\94à¸\87à¸\84วามà¸\84ิà¸\94à¹\80หà¹\87à¸\99
         allow_write_api: แก้ไขแผนที่
+        allow_write_changeset_comments: เพิ่มความคิดเห็นเกี่ยวกับชุดการเปลี่ยนแปลง
         allow_read_gpx: อ่านรอยทาง GPS ส่วนบุคคล
         allow_write_gpx: อัปโหลดรอยทาง GPS
         allow_write_notes: แก้ไขโน้ต
@@ -238,9 +240,8 @@ th:
         comment: ความคิดเห็น
         full: เนื้อความเต็มในโน้ต
   accounts:
-    edit:
+    show:
       title: แก้ไขบัญชี
-      my settings: การตั้งค่าของฉัน
       current email address: ที่อยู่อีเมลปัจจุบัน
       external auth: การยืนยันตัวตนด้วยบริการภายนอก
       openid:
@@ -294,10 +295,13 @@ th:
         title: ข้อกำหนด
         heading: ข้อกำหนด
         heading_ct: ข้อกำหนดผู้ร่วมให้ข้อมูล
+        read and accept with tou: โปรดอ่านข้อตกลงผู้มีส่วนร่วมให้ข้อมูลและเงื่อนไขการใช้งาน
+          ทำเครื่องหมายทั้งสองช่องเมื่อเสร็จสิ้น จากนั้นกดปุ่มดำเนินการต่อ
+        contributor_terms_explain: ข้อตกลงนี้ใช้บังคับกับข้อกำหนดสำหรับการมีส่วนร่วมในปัจจุบันและในอนาคตของคุณ
+        read_ct: ฉันได้อ่านและยอมรับเงื่อนไขของผู้มีส่วนร่วมให้ข้อมูลข้างต้นแล้ว
         read_tou: ข้าพเจ้าได้อ่านและเห็นด้วยในข้อกำหนดการใช้งาน
-        consider_pd: นอกเหนือจากข้อความข้างต้น ข้าพเจ้ายินดีสละการสร้างสรรค์ของข้าพเจ้าให้เป็นงานอันไม่มีลิขสิทธิ์
-        consider_pd_why: นี้คืออะไร?
         continue: ถัดไป
+        cancel: ยกเลิก
         you need to accept or decline: กรุณาตรวจทานและเลือกยอมรับหรือไม่ยอมรับข้อกำหนดของผู้ร่วมให้ข้อมูลเพื่อไปต่อ
         legale_select: 'ประเทศที่พำนัก:'
         legale_names:
@@ -345,7 +349,7 @@ th:
         way: เส้นทาง
         relation: ความสัมพันธ์
     containing_relation:
-      entry_role_html: à¸\84วามสัมà¸\9eัà¸\99à¸\98à¹\8c%{relation_name} (à¹\83à¸\99à¸\90าà¸\99ะ%{relation_role})
+      entry_role_html: à¸\84วามสัมà¸\9eัà¸\99à¸\98à¹\8c%{relation_name} (à¹\83à¸\99à¸\9aà¸\97à¸\9aาà¸\97%{relation_role})
     not_found:
       title: ไม่พบข้อมูล
     timeout:
@@ -436,7 +440,7 @@ th:
         title: ชุดการเปลี่ยนแปลง %{id}
         title_comment: ชุดการเปลี่ยนแปลง %{id} - %{comment}
         created: สร้างเมื่อ
-        closed: ปิดเมื่อ
+        closed: ปิด
         belongs_to: ผู้สร้าง
     show:
       title: 'ชุดการเปลี่ยนแปลง: %{id}'
@@ -490,12 +494,17 @@ th:
     popup:
       your location: ตำแหน่งของคุณ
       nearby mapper: คนทำแผนที่ ที่อยู่ใกล้เคียง
+      following: ติดตาม
     show:
       title: แผงควบคุมของฉัน
       no_home_location_html: '%{edit_profile_link} และตั้งตำแหน่งบ้านของให้ผู้ใช้ไกล้เคียงเห็น'
       edit_your_profile: แก้ไขโปรไฟล์ของคุณ
+      followings: การติดตาม
+      no followings: คุณยังไม่ได้ติดตามผู้ใช้คนใดเลย
       nearby users: ผู้ใช้อื่นที่ใกล้เคียง
       no nearby users: ไม่ได้มีผู้ใดแสดงตัวว่าทำแผนที่อยู่ใกล้เคียง
+      followed_changesets: ชุดการเปลี่ยนแปลง
+      followed_diaries: รายการบันทึก
       nearby_changesets: ชุดการเปลี่ยนแปลงของผู้ใช้ใกล้เคียง
       nearby_diaries: บันทึกของผู้ใช้ใกล้เคียง
   diary_entries:
@@ -1709,6 +1718,11 @@ th:
       reset: ตั้งรหัสผ่านใหม่
     update:
       flash changed: เปลี่ยนรหัสผ่านของคุณแล้วเรียบร้อย
+  preferences:
+    show:
+      title: การตั้งค่าของฉัน
+      preferred_site_color_scheme: โทนสีของเว็บไซต์ที่ต้องการ
+      preferred_map_color_scheme: โทนสีของแผนที่ที่ต้องการ
   profiles:
     edit:
       image: 'รูปภาพ:'
@@ -2079,8 +2093,9 @@ th:
       my notes: หมายเหตุของฉัน
       my messages: ข้อความของฉัน
       my profile: ประวัติของฉัน
-      my settings: การตั้งค่าของฉัน
       my comments: ความคิดเห็นของฉัน
+      my_preferences: การตั้งค่าของฉัน
+      my_dashboard: แผงควบคุมของฉัน
       blocks on me: การถูกระงับของฉัน
       blocks by me: ผู้ใช้ที่ข้าพเจ้ากีดกัน
       send message: ส่งข้อความ
@@ -2126,10 +2141,10 @@ th:
       show:
         title: ผู้ใช้
         heading: ผู้ใช้
-        empty: ไม่พบผู้ใช้ตรงตามที่กำหนด
       page:
         confirm: ยืนยันผู้ใช้ที่เลือก
         hide: ซ่อนผู้ใช้ที่เลือก
+        empty: ไม่พบผู้ใช้ตรงตามที่กำหนด
       user:
         summary_html: '%{name} สร้างจากไอพี %{ip_address} เมื่อ %{date}'
     changeset_comments:
index 2e030d2692749b371815f730d96e53e6d4227c5b..7c91df324721423a7b6e70a17af91aba9446cd88 100644 (file)
@@ -221,9 +221,8 @@ tl:
       entry:
         full: Buong tala
   accounts:
-    edit:
+    show:
       title: Baguhin ang akawnt
-      my settings: Mga pagtatakda ko
       current email address: Pangkasalukuyang Tirahan ng E-liham
       external auth: Panlabas na Pagpapatunay
       openid:
@@ -259,9 +258,6 @@ tl:
         title: 'Mga tuntunin:'
         heading: Mga tuntunin
         heading_ct: Mga tuntunin sa taga-ambag
-        consider_pd: Bukod sa nabanggit, itinuturing ko ang mga ambag ko bilang nasa
-          Nasasaklawan ng Madla.
-        consider_pd_why: ano ba ito?
         continue: Magpatuloy
         you need to accept or decline: Mangyaring basahin at pagkaraan ay tanggipin
           o tanggihan ang bagong mga Tuntunin ng Tagapag-ambag upang makapagpatuloy.
@@ -1791,7 +1787,6 @@ tl:
       my traces: Mga Bakas Ko
       my notes: Aking Talaan
       my messages: Aking mga Mensahe
-      my settings: mga pagtatakda ko
       my comments: mga puna ko
       my_dashboard: Aking Tapalodo
       blocks on me: mga paghadlang sa akin
@@ -1845,10 +1840,10 @@ tl:
       show:
         title: Mga tagagamit
         heading: Mga tagagamit
-        empty: Walang natagpuan na katugmang mga tagagamit
       page:
         confirm: Tiyakin ang Napiling mga Tagagamit
         hide: Itago ang Napiling mga Tagagamit
+        empty: Walang natagpuan na katugmang mga tagagamit
       user:
         summary_html: Nilikha ang %{name} mula sa %{ip_address} noong %{date}
         summary_no_ip_html: Nilikha ang %{name} noong %{date}
index 5350e7939fe5e5300ca3f7f0dccf61d68d94307d..ac8c50251dd04d2b93baca27b1a90b303c241e49 100644 (file)
@@ -292,9 +292,8 @@ tr:
         comment: Yorum
         full: Notun tamamı
   accounts:
-    edit:
+    show:
       title: Hesabı düzenle
-      my settings: Ayarlarım
       current email address: Geçerli E-posta Adresi
       external auth: Harici Kimlik Doğrulama
       openid:
@@ -370,10 +369,6 @@ tr:
           diğer altyapıların kullanımını yönetmektedir. Lütfen bağlantıya tıklayın,
           metni okuyun ve kabul edin.
         read_tou: Kullanım Şartlarını okudum ve kabul ediyorum
-        consider_pd: Yukarıdakilere ek olarak katkılarınızın kamu malı olarak kabul
-          edilmesini de seçebilirsiniz
-        consider_pd_why: bu nedir?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Bu terimleri anlamanıza yardımcı olacak bilgiler: %{readable_summary_link}
           ve bazı %{informal_translations_link}'
         readable_summary: okunabilir özet
@@ -394,6 +389,9 @@ tr:
           Daha fazla bilgi için lütfen %{terms_declined_link} sayfasına bakınız.
         terms_declined_link: bu wiki sayfası
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Tr:Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
   browse:
     deleted_ago_by_html: '%{user} tarafından %{time_ago} silindi'
     edited_ago_by_html: '%{user} tarafından %{time_ago} düzenlendi'
@@ -2866,8 +2864,6 @@ tr:
           politikası
         html: Adresiniz herkese açık olarak görüntülenmiyor, daha fazla bilgi için
           %{privacy_policy_link} sayfasına bakın.
-      consider_pd_html: Katkılarımın %{consider_pd_link} içinde olduğunu düşünüyorum.
-      consider_pd: kamu malı
       or: veya
       use external auth: veya üçüncü bir parti uygulamasıyla kaydolun
     no_such_user:
@@ -2883,7 +2879,6 @@ tr:
       my notes: Notlarım
       my messages: Mesajlarım
       my profile: Profilim
-      my settings: Ayarlarım
       my comments: Yorumlarım
       my_preferences: Tercihlerim
       my_dashboard: Gösterge Panelim
@@ -2962,13 +2957,13 @@ tr:
       show:
         title: Kullanıcılar
         heading: Kullanıcılar
-        empty: Eşleşen kullanıcı bulunamadı
       page:
         found_users:
           one: '%{count} kullanıcı bulundu'
           other: '%{count} kullanıcı bulundu'
         confirm: Seçili Kullanıcıları Doğrulayın
         hide: Seçilen Kullanıcıları Gizle
+        empty: Eşleşen kullanıcı bulunamadı
       user:
         summary_html: '%{name}, %{date} tarihinde %{ip_address} tarafından oluşturuldu.'
         summary_no_ip_html: '%{name} %{date} tarihinde oluşturuldu.'
@@ -3207,7 +3202,6 @@ tr:
         url: https://wiki.openstreetmap.org/wiki/Tr:Beginners%27_guide
       counter_warning_forum_link:
         text: topluluk size yardımcı olabilir
-        url: https://community.openstreetmap.org/
       advice: Notunuz herkese açıktır ve haritayı güncellemek için kullanılabilir,
         bu nedenle kişisel bilgilerinizi veya telif hakkıyla korunan haritalar veya
         dizin listelerinden bilgi girmeyin.
index 6938e45459c4403cf78f30566f09a99b3c4f0280..2e215b02a7fa7a4054c1332547ad947c6559b4c7 100644 (file)
@@ -235,9 +235,8 @@ tt:
         comment: Шәрех
         full: Тулы текст
   accounts:
-    edit:
+    show:
       title: Хисапъязманы үзгәртергә
-      my settings: Көйләнмәләрем
       current email address: Хәзерге электрон почта адресы
       external auth: Тышкы аутентификация
       openid:
@@ -873,7 +872,6 @@ tt:
       my diary: Көндәлегем
       my edits: Төзәтмәләрем
       my messages: Хәбәрләрем
-      my settings: Көйләнмәләрем
       send message: Хәбәр җибәрү
       diary: Көндәлек
       edits: Төзәтмәләр
index 69156c94c4657cb12a217e7cc4ddb5b585e413ac..07a7b690a3fafb2657c5f685b8098fe282220bf9 100644 (file)
@@ -315,9 +315,8 @@ uk:
         comment: Коментар
         full: Повний текст
   accounts:
-    edit:
+    show:
       title: Редагувати обліковий запис
-      my settings: Налаштування
       current email address: Поточна адреса електронної пошти
       external auth: Стороння автентифікація
       openid:
@@ -396,10 +395,6 @@ uk:
           іншої інфраструктури, що надається за підтримки OSMF. Натисніть на посилання,
           прочитайте та погодьтесь з текстом.'
         read_tou: Я уважно ознайомився та згоден з Умовами використання
-        consider_pd: На додачу до зазначеного, прошу вважати мій внесок суспільним
-          надбанням
-        consider_pd_why: що це?
-        consider_pd_why_url: https://wiki.openstreetmap.org/wiki/Uk:Чому_я_хочу,_щоб_мої_внески_були_суспільним_надбанням
         guidance_info_html: 'Інформація, що допоможе зрозуміти ці терміни: %{readable_summary_link}
           та %{informal_translations_link}'
         readable_summary: простою мовою
@@ -420,6 +415,9 @@ uk:
           Докладніше дивіться %{terms_declined_link}.
         terms_declined_link: цю вікі-сторінку.
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Uk:Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://wiki.openstreetmap.org/wiki/Uk:Чому_я_хочу,_щоб_мої_внески_були_суспільним_надбанням
   browse:
     deleted_ago_by_html: Вилучив(ла) %{time_ago} %{user}
     edited_ago_by_html: Змінено %{user} %{time_ago}
@@ -2939,8 +2937,6 @@ uk:
           електронної пошти
         html: Ваша адреса ніколи не показуватиметься публічно. Ознайомтесь з нашою
           %{privacy_policy_link} для отримання докладної інформації.
-      consider_pd_html: Я вважаю свій внесок %{consider_pd_link}.
-      consider_pd: суспільним надбанням
       or: або
       use external auth: або використовуйте, облікові записи з інших ресурсів для
         входу
@@ -2957,7 +2953,6 @@ uk:
       my notes: Мої нотатки
       my messages: Повідомлення
       my profile: Профіль
-      my settings: Налаштування
       my comments: Мої коментарі
       my_preferences: Вподобання
       my_dashboard: Інфо панель
@@ -3040,7 +3035,6 @@ uk:
       show:
         title: Учасники
         heading: Учасники
-        empty: Не знайдено учасників відповідно до критеріїв пошуку
       page:
         found_users:
           one: знайдено %{count} користувача
@@ -3049,6 +3043,7 @@ uk:
           other: 'знайдено '
         confirm: Підтвердити вибір учасників
         hide: Сховати вибраних учасників
+        empty: Не знайдено учасників відповідно до критеріїв пошуку
       user:
         summary_html: '%{name} зареєстровано з %{ip_address}, %{date}'
         summary_no_ip_html: '%{name} зареєстровано %{date}'
index f5b78bb8ffdaf6eca7d75c166c078b29579e6b34..3c727724d20b1302a95b10b74a15769d087a51ad 100644 (file)
@@ -251,9 +251,8 @@ vi:
         comment: Bình luận
         full: Ghi chú đầy đủ
   accounts:
-    edit:
+    show:
       title: Chỉnh sửa tài khoản
-      my settings: Tùy chọn
       current email address: Địa chỉ Thư điện tử Hiện tại
       external auth: Xác minh Bên ngoài
       openid:
@@ -331,9 +330,6 @@ vi:
           sở hạ tầng khác do OSMF cung cấp. Xin vui lòng mở liên kết và đọc và chấp
           nhận thỏa thuận.
         read_tou: Tôi đã đọc và chấp nhận Điều khoản sử dụng
-        consider_pd: Bên ngoài các điều bên trên, tôi coi rằng các đóng góp của tôi
-          thuộc về phạm vi công cộng
-        consider_pd_why: đây là gì?
         guidance_info_html: 'Thông tin giúp hiểu các thuật ngữ này: a %{readable_summary_link}
           và một số %{informal_translations_link}'
         readable_summary: bản tóm tắt dễ đọc
@@ -2571,8 +2567,6 @@ vi:
           địa chỉ thư điện tử
         html: Địa chỉ thư điện tử không được hiển thị công khai, xem thêm thông tin
           trong %{privacy_policy_link} của chúng tôi.
-      consider_pd_html: Tôi coi những đóng góp của mình thuộc về %{consider_pd_link}.
-      consider_pd: phạm vi công cộng
       or: hoặc
       use external auth: hoặc mở tài khoản qua dịch vụ bên thứ ba
     no_such_user:
@@ -2588,7 +2582,6 @@ vi:
       my notes: Ghi chú của Tôi
       my messages: Hộp Tin nhắn
       my profile: Trang của Tôi
-      my settings: Tùy chọn
       my comments: Bình luận của Tôi
       my_preferences: Tùy chỉnh
       my_dashboard: Bảng điều khiển
@@ -2666,12 +2659,12 @@ vi:
       show:
         title: Người dùng
         heading: Người dùng
-        empty: Không tìm thấy người dùng.
       page:
         found_users:
           other: Đã tìm thấy %{count} người dùng
         confirm: Xác nhận những Người dùng Được chọn
         hide: Ẩn những Người dùng Được chọn
+        empty: Không tìm thấy người dùng.
       user:
         summary_html: '%{name} do %{ip_address} mở ngày %{date}'
         summary_no_ip_html: '%{name} mở ngày %{date}'
index 44527ddf361e23fdc4fa8c86cd5ba82af7e702a2..0e9def5d5de0d5ce513db9f4238e4603316abd96 100644 (file)
@@ -224,9 +224,8 @@ xmf:
         comment: კომენტარი
         full: ედომუშამი ტექსტი
   accounts:
-    edit:
+    show:
       title: ანგარიშიშ რედაქტირაფა
-      my settings: ჩქიმი პარამეტრეფი
       current email address: ელ-ფოსტაშ ასეიანი მიოწურაფუ
       external auth: გალენი აუთენტიფიკაცია
       openid:
index 4c5ac358b4766682d7055932f38fbeb634df1e7f..e9f454f7e418d536347a4dca624d454c0ab70803 100644 (file)
@@ -77,6 +77,7 @@
 # Author: 七八年再来一次
 # Author: 乌拉跨氪
 # Author: 予弦
+# Author: 人间百态
 # Author: 列维劳德
 # Author: 夢蝶葬花
 # Author: 孟天皓
@@ -173,6 +174,7 @@ zh-CN:
         allow_write_prefs: 修改其用户偏好
         allow_write_diary: 创建日记和评论
         allow_write_api: 修改地图
+        allow_write_changeset_comments: 评论变更集
         allow_read_gpx: 读取他们的私人GPS轨迹
         allow_write_gpx: 上传GPS轨迹
         allow_write_notes: 修改注记
@@ -322,9 +324,9 @@ zh-CN:
         comment: 评论
         full: 完整注记
   accounts:
-    edit:
+    show:
       title: 编辑账户
-      my settings: 我的设置
+      my_account: 我的账户
       current email address: 当前电子邮件地址
       external auth: 外部身份验证
       openid:
@@ -379,9 +381,6 @@ zh-CN:
         read_ct: 我已了解并同意贡献者条款
         tou_explain_html: 这些%{tou_link}适用于网站方面的使用,与其它由OSMF提供的基础内容。请点击链接,阅读并同意该条款。
         read_tou: 我已阅读并同意使用条款
-        consider_pd: 除了上述协议,我同意将我的贡献释于公有领域
-        consider_pd_why: 这是什么?
-        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 有助于理解这些术语的信息:一个 %{readable_summary_link} 和一些 %{informal_translations_link}
         readable_summary: 人类可读的摘要
         informal_translations: 非正式翻译
@@ -399,6 +398,12 @@ zh-CN:
         terms_declined_html: 我们很遗憾您已决定不接受新的贡献者条款。有关详细信息,请参阅%{terms_declined_link}。
         terms_declined_link: 此wiki页面
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: 确认
+      create:
+        successfully_declared: 您已成功声明您的编辑属于公共领域。
   browse:
     deleted_ago_by_html: 由 %{user} 删除于 %{time_ago}
     edited_ago_by_html: 由%{user} 编辑于 %{time_ago}
@@ -606,13 +611,17 @@ zh-CN:
     popup:
       your location: 您的位置
       nearby mapper: 附近绘图者
+      following: 关注中的用户
     show:
       title: 我的综合面板
       no_home_location_html: '%{edit_profile_link}并设定你的家庭地址来查看附近的用户。'
       edit_your_profile: 编辑你的档案
+      followings: 关注中的用户
+      no followings: 您还没有关注任何用户。
       nearby users: 其他附近的用户
       no nearby users: 附近没有在进行制图的用户。
       followed_changesets: 变更集
+      followed_diaries: 日记条目
       nearby_changesets: 附近用户的变更集
       nearby_diaries: 附近用户的日记文章
   diary_entries:
@@ -623,6 +632,7 @@ zh-CN:
       use_map_link: 使用地图
     index:
       title: 用户日记
+      title_followed: 关注中的用户的日记
       title_nearby: 附近用户的日记
       user_title: '%{user}的日记'
       in_language_title: '%{language}日记文章'
@@ -738,6 +748,14 @@ zh-CN:
     not_found:
       title: 文件未找到
       description: 在 OpenStreetMap 服务器上找不到该名称的文件、目录或API 操作(HTTP 404)
+  follows:
+    show:
+      follow:
+        heading: 您想要关注%{user}吗?
+        button: 关注用户
+      unfollow:
+        heading: 您想要取消关注%{user}吗?
+        button: 取消关注用户
   geocoder:
     search:
       title:
@@ -990,6 +1008,7 @@ zh-CN:
           bridleway: 马道
           bus_guideway: 导轨公交车道
           bus_stop: 公共汽车站
+          busway: 公交专用道
           construction: 在建公路
           corridor: 走廊
           crossing: 十字路口
@@ -1560,9 +1579,11 @@ zh-CN:
       reports: 举报
       last_updated: 最后更新
       last_updated_time_ago_user_html: 由 %{user} 于 %{time_ago}
+      reporting_users: 举报用户
       reports_count:
         one: '%{count}个举报'
         other: '%{count}个举报'
+      more_reporters: 以及%{count}个
       reported_item: 举报项
       states:
         ignored: 已忽略
@@ -1670,6 +1691,8 @@ zh-CN:
     communities: 社区
     learn_more: 了解更多
     more: 更多
+    offline_flash:
+      announcement: 您可以在此阅读公告。
   user_mailer:
     diary_comment_notification:
       description: 'OpenStreetMap 日记 #%{id}'
@@ -1971,6 +1994,9 @@ zh-CN:
       preview: 预览
       help: 帮助
     pagination:
+      changeset_comments:
+        older: 较旧评论
+        newer: 较新评论
       diary_comments:
         older: 较旧评论
         newer: 较新评论
@@ -2158,7 +2184,7 @@ zh-CN:
       not_public: 您尚未公开您的编辑。
       not_public_description_html: 您将无法再编辑此地图,直到您做到如上所述。您可以通过您的%{user_page}公开您的编辑。
       user_page_link: 用户页面
-      anon_edits_link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
+      anon_edits_link: https://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
       anon_edits_link_text: 了解为什么这很重要。
     edit:
       id_not_configured: iD 尚未配置
@@ -2548,10 +2574,12 @@ zh-CN:
       write_prefs: 修改用户首选项
       write_diary: 创建日记和评论
       write_api: 修改地图
+      write_changeset_comments: 评论变更集
       read_gpx: 读取私人GPS轨迹
       write_gpx: 上传GPS轨迹
       write_notes: 修改备注
       write_redactions: 隐删地图数据
+      write_blocks: 创建与撤销用户封禁
       read_email: 查看用户邮箱地址
       consume_messages: 读取、更新状态和删除用户留言
       send_messages: 向其他用户发送私信
@@ -2629,9 +2657,6 @@ zh-CN:
         privacy_policy: 隐私政策
         privacy_policy_title: OSM基金会隐私政策包括电子邮件地址部分
         html: 您的地址不会公开显示,请参阅我们的%{privacy_policy_link}了解更多信息。
-      consider_pd_html: 我认为我的贡献应在 %{consider_pd_link} 中。
-      consider_pd: 公有领域
-      consider_pd_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
       or: 或
       use external auth: 或使用第三方服务登录
     no_such_user:
@@ -2646,7 +2671,7 @@ zh-CN:
       my notes: 我的注记
       my messages: 我的消息
       my profile: 我的资料
-      my settings: 我的设置
+      my_account: 我的账户
       my comments: 我的评论
       my_preferences: 我的偏好
       my_dashboard: 我的综合面板
@@ -2660,6 +2685,8 @@ zh-CN:
       edits: 编辑
       traces: 轨迹
       notes: 地图注记
+      unfollow: 取消关注
+      follow: 关注
       mapper since: 绘图者注册于:
       last map edit: 最后地图编辑于:
       no activity yet: 尚无活动
@@ -2724,21 +2751,28 @@ zh-CN:
       show:
         title: 用户
         heading: 用户
-        empty: 未找到匹配用户
+        select_status: 选择状态
+        ip_address: IP地址
+        search: 搜索
       page:
         found_users:
           one: 找到%{count}位用户
           other: 找到%{count}位用户
         confirm: 确认所选用户
         hide: 隐藏所选用户
+        empty: 未找到匹配用户
       user:
         summary_html: '%{name}在%{date}从%{ip_address}创建'
         summary_no_ip_html: '%{name} 创建于 %{date}'
     comments:
       index:
+        heading_html: '%{user} 的评论'
         changesets: 变更集
+        diary_entries: 日记条目
         no_comments: 没有评论
     changeset_comments:
+      index:
+        title: '%{user} 添加的变更集评论'
       page:
         changeset: 变更集
         when: 时间
@@ -2748,6 +2782,8 @@ zh-CN:
         title: '%{user} 已添加日记评论'
       page:
         post: 发布
+        when: 时间
+        comment: 评论
     suspended:
       title: 帐户已暂停
       heading: 帐户已暂停
@@ -2907,6 +2943,7 @@ zh-CN:
       open_title: '未解决注记 #%{note_name}'
       closed_title: '已解决注记 #%{note_name}'
       hidden_title: '隐藏注记 #%{note_name}'
+      description_when_author_is_deleted: 已删除
       event_opened_by_html: 由%{user}%{time_ago}创建
       event_opened_by_anonymous_html: 由匿名用户%{time_ago}创建
       event_commented_by_html: 来自%{user}%{time_ago}的评论
@@ -2947,7 +2984,6 @@ zh-CN:
         url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
       counter_warning_forum_link:
         text: 社区可以帮助你
-        url: https://community.openstreetmap.org/
       advice: 您的注释会公开,并可能用于更新地图,所以不要输入个人信息,或是来自版权保护地图的信息或目录列表。
       add: 添加注记
     new_readonly:
@@ -3136,6 +3172,8 @@ zh-CN:
       show_address: 显示地址
       query_features: 查询要素
       centre_map: 将此处置于地图中间
+    home:
+      marker_title: 我家位置
   redactions:
     edit:
       heading: 编辑隐删
index 70bf0412b4c05310ce99177612ec110c4ee9bd4a..5088446c6231d27eb9b5d7e03e8465b3ddb7b5ce 100644 (file)
@@ -219,9 +219,8 @@ zh-HK:
       entry:
         comment: 評論
   accounts:
-    edit:
+    show:
       title: 編輯帳號
-      my settings: 我的設定
       current email address: 現在的電郵地址
       external auth: 外部認證
       openid:
@@ -266,7 +265,6 @@ zh-HK:
         heading: 條款
         heading_ct: 貢獻者條款
         read_tou: 我已經閱讀過並同意使用條款
-        consider_pd: 除上述條款之外,我會把我的貢獻釋放到公共領域(Public Domain)
         continue: 繼續
         legale_select: 請選擇您的居住地:
         legale_names:
@@ -1138,7 +1136,6 @@ zh-HK:
       body: 抱歉,沒有名為%{user}的用戶。請檢查您的拼寫,或者您可能按到了錯誤的連結。
     show:
       my notes: 我的註記
-      my settings: 我的設定
       notes: 地圖註記
       report: 舉報此用戶
     lists:
index 93cd128d4a79908b66f5d35d6cf7c7872cf3ba77..d737c74772269642baf9647527432d084b77bd4c 100644 (file)
@@ -137,6 +137,7 @@ zh-TW:
         allow_write_prefs: 修改使用者偏好設定
         allow_write_diary: 建立日記、評論
         allow_write_api: 修改地圖
+        allow_write_changeset_comments: 在變更集上留言
         allow_read_gpx: 讀取個人 GPS 軌跡
         allow_write_gpx: 上傳 GPS 軌跡
         allow_write_notes: 修改註記
@@ -262,7 +263,7 @@ zh-TW:
         reopened_at_html: 於%{when}重新開啟
         reopened_at_by_html: 於%{when}由%{user}重新開啟
       rss:
-        title: OpenStreetMap 註記
+        title: 開放街圖註記
         description_all: 報告、評論、或關閉的註記清單
         description_area: 在你的區域[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]所報告、評論或關閉的註記的清單
         description_item: 註記 %{id} 的 RSS feed
@@ -274,9 +275,9 @@ zh-TW:
         comment: 評論
         full: 註記原文
   accounts:
-    edit:
+    show:
       title: 編輯帳號
-      my settings: 我的設定值
+      my_account: 我的帳號
       current email address: 目前的電子郵件地址
       external auth: 外部認證
       openid:
@@ -309,10 +310,10 @@ zh-TW:
         title: 刪除我的帳號
         warning: 警告!帳號刪除程序不可逆轉,無法復原。
         delete_account: 刪除帳號
-        delete_introduction: 你可以使用下方按鈕來刪除你的 OpenStreetMap 帳號。並請留意以下細節:
+        delete_introduction: 你可以使用下方按鈕來刪除你的開放街圖帳號。並請留意以下細節:
         delete_profile: 你的個人檔案資訊,包含:例如你的頭像圖片、描述,以及住家位置將會移除。
         delete_display_name: 你的顯示名稱將會移除,並且會被其他帳號拿來重覆使用。
-        retain_caveats: 然而,即使你的帳號被刪除後,一些關於你的資訊仍會繼續保留在 OpenStreetMap 裡:
+        retain_caveats: 然而,即使你的帳號被刪除後,一些關於你的資訊仍會繼續保留在開放街圖裡:
         retain_edits: 你對於地圖資料庫的編輯次數,假如存在,這將會繼續保留。
         retain_traces: 若有你上傳過的軌跡資料內容,這將會繼續保留。
         retain_diary_entries: 若有你的日誌項目與日誌評論內容,這將會繼續保留。
@@ -332,9 +333,6 @@ zh-TW:
         read_ct: 我已閱讀過並同意以上的貢獻者條款
         tou_explain_html: 這些%{tou_link}適用於網站方面的使用,與其它由 OSMF 提供的基礎內容。請在連結上點擊,閱讀並同意該文字。
         read_tou: 我已經閱讀過並同意使用條款
-        consider_pd: 除上述內容之外,我同意將我的貢獻放到公共領域
-        consider_pd_why: 這是什麼?
-        consider_pd_why_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 有助於理解這些術語的資訊:一個%{readable_summary_link}和一些%{informal_translations_link}
         readable_summary: 人類可讀的摘要
         informal_translations: 非正式翻譯
@@ -352,6 +350,10 @@ zh-TW:
         terms_declined_html: 我們很遺憾你已決定不接受新的貢獻者條款。有關詳細資訊,請參閱 %{terms_declined_link}。
         terms_declined_link: 此 wiki 頁面
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+    pd_declarations:
+      show:
+        consider_pd_why_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        confirm: 確認
   browse:
     deleted_ago_by_html: 由%{user}%{time_ago}刪除
     edited_ago_by_html: 由%{user}%{time_ago}編輯
@@ -417,6 +419,7 @@ zh-TW:
         relation: 關聯
     start_rjs:
       feature_warning: 載入 %{num_features} 項物件的資料,可能會使你的瀏覽器延遲或無法回應。你確定要顯示這些資料嗎?
+      feature_error: 無法載入圖徵:%{message}
       load_data: 載入資料
       loading: 正在載入…
     tag_details:
@@ -482,8 +485,8 @@ zh-TW:
         comment: '由 %{author} 對變更集 #%{changeset_id} 發表的新評論'
         commented_at_by_html: 於%{when}由%{user}更新
       show:
-        title_all: OpenStreetMap 變更集討論
-        title_particular: OpenStreetMap 變更集 %{changeset_id} 討論
+        title_all: 開放貼圖變更集討論
+        title_particular: 開放街圖變更集 %{changeset_id} 討論
       timeout:
         sorry: 很抱歉,你請求的變更集評論過長無法讀取
   changesets:
@@ -494,6 +497,7 @@ zh-TW:
       title: 變更集
       title_user: '%{user} 的變更集'
       title_user_link_html: '%{user_link} 的變更集'
+      title_followed: 追蹤者的變更集
       title_nearby: 附近使用者的變更集
       empty: 查無變更集。
       empty_area: 此區域沒有變更集。
@@ -561,12 +565,17 @@ zh-TW:
     popup:
       your location: 你的位置
       nearby mapper: 附近的製圖者
+      following: 追蹤者
     show:
       title: 我的功能面板
       no_home_location_html: '%{edit_profile_link}並編輯你的家位置,來查看附近的使用者。'
       edit_your_profile: 編輯你的個人檔案
+      followings: 追蹤者
+      no followings: 您尚未追蹤任何使用者。
       nearby users: 其他附近的使用者
       no nearby users: 附近沒有已加入製圖的使用者。
+      followed_changesets: 變更集
+      followed_diaries: 日記條目
       nearby_changesets: 附近使用者的變更集
       nearby_diaries: 附近使用者的日記項目
   diary_entries:
@@ -577,6 +586,7 @@ zh-TW:
       use_map_link: 使用地圖
     index:
       title: 使用者日記
+      title_followed: 追蹤者的日記
       title_nearby: 附近的使用者的日記
       user_title: '%{user} 的日記'
       in_language_title: 語言為%{language}的日記項目
@@ -626,14 +636,14 @@ zh-TW:
       location: 位置:
     feed:
       user:
-        title: '%{user} 的 OpenStreetMap 日記項目'
-        description: '%{user} 最近的 OpenStreetMap 日記項目'
+        title: '%{user} 的開放街圖日記項目'
+        description: '%{user} 最近的開放街圖日記項目'
       language:
-        title: 語言為%{language_name}的OpenStreetMap 日記項目
-        description: 語言為%{language_name}的 OpenStreetMap 使用者最近日記項目
+        title: 語言為%{language_name}的開放街圖日記項目
+        description: 語言為%{language_name}的開放街圖使用者最近日記項目
       all:
-        title: OpenStreetMap 日記項目
-        description: OpenStreetMap 使用者最近的日記項目
+        title: 開放街圖日記項目
+        description: 開放街圖使用者最近的日記項目
     subscribe:
       heading: 訂閱以下日記項目討論?
       button: 訂閱討論
@@ -642,7 +652,7 @@ zh-TW:
       button: 取消訂閱討論
   diary_comments:
     new:
-      heading: å\9c¨ä»¥ä¸\8bæ\97¥è¨\98é \85ç\9b®è¨\8eè«\96æ·»å\8a è©\95è«\96
+      heading: å\9c¨ä»¥ä¸\8bæ\97¥è¨\98é \85ç\9b®è¨\8eè«\96æ\96°å¢\9eç\95\99è¨\80
   doorkeeper:
     errors:
       messages:
@@ -676,20 +686,36 @@ zh-TW:
     contact:
       contact_url_title: 各種聯絡管道說明
       contact: 聯絡
-      contact_the_community_html: 如果你發現有損壞的連結/錯誤,請隨時%{contact_link}OpenStreetMap 社群。並請記下你的請求的確切
-        URL 網址
+      contact_the_community_html: 如果你發現有損壞的連結/錯誤,請隨時%{contact_link}開放街圖社群。並請記下你的請求的確切
+        URL。
     bad_request:
       title: 錯誤請求
-      description: 你在 OpenStreetMap 伺服器上請求的操作無效 (HTTP 400)
+      description: 你在開放街圖伺服器上請求的操作無效 (HTTP 400)
     forbidden:
       title: Forbidden
-      description: 你在 OpenStreetMap 伺服器上請求的運作僅限管理員使用 (HTTP 403}
+      description: 你在開放街圖伺服器上請求的運作僅限管理員使用 (HTTP 403}
     internal_server_error:
       title: 應用程式錯誤
-      description: OpenStreetMap 伺服器遇到意外情況,而無法滿足請求 (HTTP 500)
+      description: 開放街圖伺服器遇到意外情況,而無法滿足請求 (HTTP 500)
     not_found:
       title: 檔案未找到
-      description: 在 OpenStreetMap 伺服器上找不到該名稱的檔案/目錄/API 操作 (HTTP 404)
+      description: 在開放街圖伺服器上找不到該名稱的檔案/目錄/API 操作 (HTTP 404)
+  follows:
+    show:
+      follow:
+        heading: 您想要追蹤 %{user} 嗎?
+        button: 追蹤使用者
+      unfollow:
+        heading: 您想要取消追蹤 %{user} 嗎?
+        button: 取消追蹤使用者
+    create:
+      success: 您正在追蹤 %{name}!
+      failed: 抱歉,您追蹤 %{name} 的請求失敗。
+      already_followed: 您已追蹤 %{name}。
+      limit_exceeded: 您最近追蹤了大量的使用者。請在嘗試追蹤更多人之前稍等。
+    destroy:
+      success: 您成功取消追蹤了 %{name}。
+      not_followed: 您並未追蹤 %{name}。
   geocoder:
     search:
       title:
@@ -944,6 +970,7 @@ zh-TW:
           bridleway: 騎馬道
           bus_guideway: 導軌巴士車道
           bus_stop: 公車站牌
+          busway: 公車專用道
           construction: 興建中道路
           corridor: 走廊
           crossing: 行人穿越道
@@ -1514,9 +1541,11 @@ zh-TW:
       reports: 回報
       last_updated: 上一次更新
       last_updated_time_ago_user_html: 由%{user}%{time_ago}
+      reporting_users: 回報使用者
       reports_count:
         one: '%{count} 份回報'
         other: '%{count} 份回報'
+      more_reporters: 以及 %{count} 個
       reported_item: 已回報項目
       states:
         ignored: 已忽略
@@ -1525,6 +1554,8 @@ zh-TW:
     show:
       title:
         open: '未決問題 #%{issue_id}'
+        ignored: '已忽略的問題 #%{issue_id}'
+        resolved: '已解決的問題 #%{issue_id}'
       reports:
         one: '%{count} 份回報'
         other: '%{count} 份回報'
@@ -1549,11 +1580,13 @@ zh-TW:
       reopened: 問題狀態已設定成「開啟」
     comments:
       comment_from_html: 由 %{user_link} 於 %{comment_created_at} 發表的評論
+      reassign_to_moderators: 重新指派問題給仲裁者
+      reassign_to_administrators: 重新指派問題給管理員
     reports:
       reported_by_html: 由 %{user} 於 %{updated_at} 回報為 %{category}
     helper:
       reportable_title:
-        diary_comment: '%{entry_title},評論 #%{comment_id}'
+        diary_comment: '%{entry_title},留言 #%{comment_id}'
         note: '註記 #%{note_id}'
   issue_comments:
     create:
@@ -1598,7 +1631,7 @@ zh-TW:
       title: OpenStreetMap 開放街圖
       h1: OpenStreetMap 開放街圖
     logo:
-      alt_text: OpenStreetMap 標誌
+      alt_text: 開放街圖標誌
     home: 移至家的位置
     logout: 登出
     log_in: 登入
@@ -1611,8 +1644,8 @@ zh-TW:
     gps_traces: GPS 軌跡
     user_diaries: 日記
     edit_with: 以 %{editor} 編輯
-    intro_header: 歡迎來到 OpenStreetMap
-    intro_text: OpenStreetMap 是一份全世界的地圖,由像你這樣的人們所建立,在開放授權下可以自由使用。
+    intro_header: 歡迎來到開放街圖
+    intro_text: 開放街圖是一份全世界的地圖,由像你這樣的人們所建立,在開放授權下可以自由使用。
     hosting_partners_2024_html: 由%{fastly}、%{corpmembers},和其他%{partners}支援代管。
     partners_fastly: Fastly
     partners_corpmembers: OSMF 團體成員
@@ -1625,76 +1658,96 @@ zh-TW:
     communities: 社群
     learn_more: 瞭解更多
     more: 更多
+    offline_flash:
+      osm_offline: 開放街圖資料庫目前已離線,正在進行必要的維護工作。
+      osm_read_only: 開放街圖資料庫目前處於唯讀模式,正在進行必要的維護工作。
+      expected_restore_html: 服務預計於 %{time} 內恢復。
+      announcement: 您可以在此閱讀公告。
   user_mailer:
     diary_comment_notification:
-      description: 'OpenStreetMap 日記項目 #%{id}'
-      subject: '[OpenStreetMap] %{user} 已評論日記項目'
+      description: '開放街圖日記項目 #%{id}'
+      subject: '[開放街圖] %{user} 已評論日記項目'
       hi: '%{to_user} 你好,'
-      header: '%{from_user} 評論主旨為 %{subject} 的 OpenStreetMap 日記項目:'
-      header_html: '%{from_user} 評論主旨為 %{subject} 的 OpenStreetMap 日記項目:'
+      header: '%{from_user} 評論主旨為 %{subject} 的開放街圖日記項目:'
+      header_html: '%{from_user} 評論主旨為 %{subject} 的開放街圖日記項目:'
       footer: 你也可以在 %{readurl} 閱讀評論,並且在 %{commenturl} 留下評論,或在 %{replyurl} 發送訊息給作者
       footer_html: 你也可以在 %{readurl} 閱讀評論,並且在 %{commenturl} 留下評論,或在 %{replyurl} 發送訊息給作者
       footer_unsubscribe: 你可以在%{unsubscribeurl}取消訂閱討論
       footer_unsubscribe_html: 你可以在%{unsubscribeurl}取消訂閱討論
     message_notification:
-      subject: '[OpenStreetMap] %{message_title}'
+      subject: '[開放街圖] %{message_title}'
       hi: '%{to_user} 您好,'
-      header: '%{from_user} 透過 OpenStreetMap 寄給你主旨為 %{subject} 的訊息:'
-      header_html: '%{from_user} 透過 OpenStreetMap 寄給你主旨為 %{subject} 的訊息:'
+      header: '%{from_user} 透過開放街圖寄給你主旨為 %{subject} 的訊息:'
+      header_html: '%{from_user} 透過開放街圖寄給你主旨為 %{subject} 的訊息:'
       footer: 你也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 發送訊息給作者
       footer_html: 你也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 發送訊息給作者
     follow_notification:
       hi: 嗨 %{to_user},
+      subject: '[開放街圖] %{user} 已追蹤您'
+      followed_you: '%{user} 現在正在開放街圖上追蹤您。'
       see_their_profile: 你可以在 %{userurl} 查看他的基本資料。
       see_their_profile_html: 你可以在 %{userurl} 查看他的基本資料。
+      follow_them: 您也可以透過 %{followurl} 追蹤他們。
+      follow_them_html: 您也可以透過 %{followurl} 追蹤他們。
+    gpx_details:
+      details: 您的檔案詳細資訊:
+      filename: 檔案名稱
+      url: URL
+      description: 描述
+      tags: 標籤
+      total_points: 點總數
+      imported_points: 匯入點的數量
     gpx_failure:
       hi: '%{to_user} 你好,'
       failed_to_import: 您的文件似乎無法以GPS軌跡匯入。
+      verify: 請驗證您的檔案是否為有效的 GPX 檔案,或者是否為含有 GPX 檔案的支援格式封存檔 (.tar.gz, .tar.bz2, .tar,
+        .zip, .gpx.gz, .gpx.bz2)。您的檔案是否有格式或語法問題?此為匯入的錯誤內容:
       more_info: 有更多關於GPX匯入失敗的資訊與如何避免,可在 %{url} 查詢
       more_info_html: 更多關於 GPX 匯入失敗的資訊與如何避免,可在 %{url} 查詢。
-      subject: '[OpenStreetMap] GPX 匯入失敗'
+      subject: '[開放街圖] GPX 匯入失敗'
     gpx_success:
       hi: '%{to_user} 您好,'
+      imported_successfully: 看來您的檔案已成功匯入為 GPS 軌跡。
       all_your_traces: 你可以在 %{url} 找到所有上傳成功的 GPX 軌跡
       all_your_traces_html: 你可以在 %{url} 找到所有上傳成功的 GPX 軌跡。
-      subject: '[OpenStreetMap] GPX 匯入成功'
+      subject: '[開放街圖] GPX 匯入成功'
     signup_confirm:
-      subject: '[OpenStreetMap] 歡迎加入 OpenStreetMap'
+      subject: '[開放街圖] 歡迎加入開放街圖'
       greeting: 你好!
       created: 有人 (希望是你) 剛在 %{site_url} 建立了帳號。
       confirm: 在我們作出任何動作之前,我們需要確認這是你提出的要求。如果確實是這樣,請按以下連結,以確認你的帳號:
-      welcome: 在確認你的帳號後,我們將提供一些額外的訊息,幫助你開始使用 OpenStreetMap
+      welcome: 在確認您的帳號後,我們將提供一些額外的資訊,協助您開始使用開放街圖
     email_confirm:
-      subject: '[OpenStreetMap] 確認你的電子郵件信箱'
+      subject: '[開放街圖] 確認你的電子郵件信箱'
       greeting: 您好,
       hopefully_you: 有人 (希望是你) 想在 %{server_url} 更改電子郵件信箱為 %{new_address} 。
       click_the_link: 如果這是你,請按下列連結確認此變更。
     lost_password:
-      subject: '[OpenStreetMap] 密碼重設要求'
+      subject: '[開放街圖] 密碼重設要求'
       greeting: 你好,
       hopefully_you: 有人 (或許是你) 要求將這個電子郵件信箱註冊的 openstreetmap.org 帳號重設密碼。
       click_the_link: 如果這是你,請按下列連結重設密碼。
     note_comment_notification:
-      description: 'OpenStreetMap 註記 #%{id}'
+      description: '開放街圖註記 #%{id}'
       anonymous: 匿名使用者
       greeting: 你好,
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} 對你的註記做了評論'
-        subject_other: '[OpenStreetMap] %{commenter} 對你感興趣的註記做了評論'
+        subject_own: '[開放街圖] %{commenter} 對你的註記做了評論'
+        subject_other: '[開放街圖] %{commenter} 對你感興趣的註記做了評論'
         your_note: '%{commenter} 對 %{place} 附近的地圖註記做了評論。'
         your_note_html: '%{commenter} 對 %{place} 附近的地圖註記做了評論。'
         commented_note: '%{commenter} 對你感興趣的地圖註記做了評論。該註記在 %{place} 附近。'
         commented_note_html: '%{commenter} 對你感興趣的地圖註記做了評論。該註記在 %{place} 附近。'
       closed:
-        subject_own: '[OpenStreetMap] %{commenter} 解決你其中一筆註記 %{commenter}'
-        subject_other: '[OpenStreetMap]%{commenter} 已解決一項你感興趣的註記'
+        subject_own: '[開放街圖] %{commenter} 解決你其中一筆註記 %{commenter}'
+        subject_other: '[開放街圖] %{commenter} 已解決一項你感興趣的註記'
         your_note: '%{commenter} 已解決你在 %{place} 附近的註記之一。'
         your_note_html: '%{commenter} 已解決你在 %{place} 附近的註記之一。'
         commented_note: '%{commenter} 已解決你留言過的地圖註記。該註記在 %{place} 附近。'
         commented_note_html: '%{commenter} 已解決你留言過的地圖註記。該註記在 %{place} 附近。'
       reopened:
-        subject_own: '[OpenStreetMap] %{commenter} 再次開啟你其中一筆註記。'
-        subject_other: '[OpenStreetMap] %{commenter} 再次開啟你感興趣的註記。'
+        subject_own: '[開放街圖] %{commenter} 再次開啟你其中一筆註記。'
+        subject_other: '[開放街圖] %{commenter} 再次開啟你感興趣的註記。'
         your_note: '%{commenter} 已經再次開啟你其中一筆接近 %{place} 的地圖註記。'
         your_note_html: '%{commenter} 已經再次開啟你其中一筆接近 %{place} 的地圖註記。'
         commented_note: '%{commenter} 重新開啟了一個你曾評論的地圖註記。該註記位於 %{place} 附近。'
@@ -1702,11 +1755,11 @@ zh-TW:
       details: 關於註記的更多詳細資料可在 %{url} 找到。
       details_html: 在%{url}回覆或是瞭解更多有關註記的訊息。
     changeset_comment_notification:
-      description: 'OpenStreetMap 變更集 #%{id}'
+      description: '開放街圖變更集 #%{id}'
       hi: 嗨 %{to_user},
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} 對你的變更集做了評論'
-        subject_other: '[OpenStreetMap] %{commenter} 對你感興趣的變更集做了評論'
+        subject_own: '[開放街圖] %{commenter} 對你的變更集做了評論'
+        subject_other: '[開放街圖] %{commenter} 對你感興趣的變更集做了評論'
         your_changeset: '%{commenter}於 %{time} 在你的變更集做了評論'
         your_changeset_html: '%{commenter}於 %{time} 在你的變更集做了評論'
         commented_changeset: '%{commenter}於 %{time} 在你監視、由%{changeset_author}建立的變更集做了評論'
@@ -1839,6 +1892,12 @@ zh-TW:
   preferences:
     show:
       title: 我的偏好設定
+      preferred_site_color_scheme: 偏好的網站配色
+      site_color_schemes:
+        auto: 自動
+        light: 淺色
+        dark: 深色
+      preferred_map_color_scheme: 偏好的地圖配色
       map_color_schemes:
         auto: 自動
         light: 明亮
@@ -1876,7 +1935,7 @@ zh-TW:
   sessions:
     new:
       tab_title: 登入
-      login_to_authorize_html: 登入 OpenStreetMap 以存取 %{client_app_name}。
+      login_to_authorize_html: 登入開放街圖以存取 %{client_app_name}。
       email or username: 電子郵件地址或使用者名稱
       password: 密碼
       remember: 記住我
@@ -1887,7 +1946,7 @@ zh-TW:
       auth failure: 很抱歉,無法以這些資料登入。
     destroy:
       title: 登出
-      heading: 從 OpenStreetMap 登出
+      heading: 從開放街圖登出
       logout_button: 登出
     suspended_flash:
       suspended: 抱歉,由於可疑活動,你的帳戶已被暫停。
@@ -1914,6 +1973,9 @@ zh-TW:
       preview: 預覽
       help: 說明
     pagination:
+      changeset_comments:
+        older: 較舊的留言
+        newer: 較新的留言
       diary_comments:
         older: 較舊的評論
         newer: 較新的評論
@@ -1934,38 +1996,38 @@ zh-TW:
         newer: 新使用者
   site:
     about:
-      heading_html: '%{copyright}OpenStreetMap %{br} 貢獻者'
+      heading_html: '%{copyright}開放街圖 %{br} 貢獻者'
       used_by_html: '%{name} 為數以千計的網站、行動應用程式和硬體提供地圖資料'
-      lede_text: OpenStreetMap 是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。
+      lede_text: 開放街圖是由圖客社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。
       local_knowledge_title: 地方知識
       local_knowledge_html: |-
-        OpenStreetMap 強調地方知識。貢獻者們使用
+        開放街圖強調地方知識。貢獻者們使用
         航照圖、GPS 裝置與低技術的實地考察製圖,來檢驗 OSM
         是準確而且最新的。
       community_driven_title: 社群推動
       community_driven_1_html: |-
-        OpenStreetMap 的社群多元化、懷有熱情,而且日益壯大。我們的貢獻者包括地圖製作愛好者,地理訊息系統的專業人員,提供 OSM 伺服器的工程師,為受災害影響區域製圖的人道主義志願人士,以及其他各界人士。
+        開放街圖的社群多元化、懷有熱情,而且日益壯大。我們的貢獻者包括地圖製作愛好者,地理訊息系統的專業人員,提供 OSM 伺服器的工程師,為受災害影響區域製圖的人道主義志願人士,以及其他各界人士。
         想進一步了解這個社群,請參閱%{osm_blog_link}、%{user_diaries_link}、
         %{community_blogs_link},以及%{osm_foundation_link}網站。
-      community_driven_osm_blog: OpenStreetMap 部落格
+      community_driven_osm_blog: 開放街圖部落格
       community_driven_user_diaries: 使用者日記
       community_driven_community_blogs: 社群部落格
       community_driven_osm_foundation: OSM 基金會
       open_data_title: 開放資料
-      open_data_1_html: OpenStreetMap 是%{open_data}的:你可以自由地使用作任何用途,前提是必須標明作者為 OpenStreetMap
+      open_data_1_html: 開放街圖是%{open_data}的:你可以自由地使用作任何用途,前提是必須標明作者為 OpenStreetMap
         及其貢獻者。若你在我們的資料上作修改或以之透過某些方式衍生其他資料,則只可依相同授權條款散佈有關成果。詳情請參閱%{copyright_license_link}。
       open_data_open_data: 開放資料
       open_data_copyright_license: 版權與授權條款頁面
       legal_title: 法律資訊
       legal_1_1_html: 本站以及許多相關的服務正式由%{openstreetmap_foundation_link} (OSMF) 代表社群所營運。所有使用的
         OSMF 運行服務皆符合我們的%{terms_of_use_link}、%{aup_link}、和%{privacy_policy_link}。
-      legal_1_1_openstreetmap_foundation: OpenStreetMap 基金會
+      legal_1_1_openstreetmap_foundation: 開放街圖基金會
       legal_1_1_terms_of_use: 使用條款
       legal_1_1_aup: 可接受使用方針
       legal_1_1_privacy_policy: 隱私權政策
       legal_2_1_html: 若你有授權、版權、或其他法律上的問題,請%{contact_the_osmf_link}。
       legal_2_1_contact_the_osmf: 聯絡 OSMF
-      legal_2_2_html: OpenStreetMap,查看地圖狀態的放大鏡模樣標誌是%{registered_trademarks_link}。
+      legal_2_2_html: 開放街圖、放大鏡標誌與 State of the Map 是%{registered_trademarks_link}。
       legal_2_2_registered_trademarks: OSMF 的註冊商標
       partners_title: 合作夥伴
     copyright:
@@ -1980,19 +2042,19 @@ zh-TW:
         native_link: 繁體中文版
         mapping_link: 開始製圖
       legal_babble:
-        introduction_1_html: OpenStreetMap%{registered_trademark_link}是%{open_data},透過%{osm_foundation_link}
-          (OSMF) 在%{odc_odbl_link}(ODbL)下授權。
+        introduction_1_html: 開放街圖%{registered_trademark_link}是%{open_data},透過%{osm_foundation_link}
+          (OSMF) 以%{odc_odbl_link}(ODbL)授權。
         introduction_1_open_data: 開放資料
         introduction_1_odc_odbl: 開放資料共享開放資料庫授權
-        introduction_1_osm_foundation: OpenStreetMap 基金會
-        introduction_2_html: 你可以自由複製、散布、傳輸及修改我們的資料,前提是必須標明作者為 OpenStreetMap 及其貢獻者。若在我們的資料上作變動或以此來建立其他資料,你只能依照相同授權條款來散佈成果。%{legal_code_link}有詳述你的權責。
+        introduction_1_osm_foundation: 開放街圖基金會
+        introduction_2_html: 你可以自由複製、散布、傳輸及修改我們的資料,前提是必須標明作者為開放街圖及其貢獻者。若在我們的資料上作變動或以此來建立其他資料,你只能依照相同授權條款來散佈成果。%{legal_code_link}有詳述你的權責。
         introduction_2_legal_code: 法律條款
         introduction_3_html: 我們的文件是依據 %{creative_commons_link} 授權條款(CC BY-SA 2.0)獲得許可。
         introduction_3_creative_commons: 創用 CC 姓名標示-相同方式分享
         introduction_3_creative_commons_url: https://creativecommons.org/licenses/by-sa/2.0/deed.zh_TW
-        credit_title_html: 如何標明作者是 OpenStreetMap
-        credit_1_html: 當你使用 OpenStreetMap 的資料,你會被要求遵循兩件事:
-        credit_2_1: 透過顯示我們的版權聲明為 OpenStreetMap 提供屬名。
+        credit_title_html: 如何標明作者是開放街圖
+        credit_1_html: 當你使用開放街圖的資料,你會被要求遵循兩件事:
+        credit_2_1: 透過顯示我們的版權聲明為開放街圖提供署名。
         credit_2_2: 明確資料在開放資料共享開放資料庫授權下可用。
         credit_3_html: 對於版權聲明的顯示,我們會依據你如何使用我們的資料,而有不同的要求。例如:不同的規則要如何顯示版權聲明,具體取決於你是否有建立可瀏覽的地圖、列印的地圖、或靜態圖片。完整的詳細資訊要求可以在%{attribution_guidelines_link}上查看。
         credit_3_attribution_guidelines: 姓名標示指南
@@ -2002,14 +2064,14 @@ zh-TW:
           在此範例中,版權相關聲明會出現在地圖的角落處。
         credit_4_1_this_copyright_page: 此版權頁面
         attribution_example:
-          alt: 如何在網頁上署名 OpenStreetMap 的例子
+          alt: 如何在網頁上署名開放街圖的例子
           title: 姓名標示例子
         more_title_html: 尋找更多
         more_1_1_html: 在%{osmf_licence_page_link}閱讀更多關於使用我們的資料,以及如何屬名我們的方式。
         more_1_1_osmf_licence_page: OSMF 授權條款頁面
         more_2_1_html: |-
-          儘管 OpenStreetMap 是開放資料,我們不對第三方提供免費的地圖 API。
-          請參閱我們的%{api_usage_policy_link}、%{tile_usage_policy_link}、和%{nominatim_usage_policy_link}。
+          儘管開放街圖是開放資料,但我們不對第三方提供免費的地圖 API。
+          請參閱我們的%{api_usage_policy_link}、%{tile_usage_policy_link}以及%{nominatim_usage_policy_link}。
         more_2_1_api_usage_policy: API 使用方針
         more_2_1_tile_usage_policy: 圖磚使用方針
         more_2_1_nominatim_usage_policy: 提名使用方針
@@ -2073,30 +2135,30 @@ zh-TW:
         contributors_za_ngi: 總局:國家地理空間資訊局
         contributors_gb_credit_html: '%{united_kingdom}:包含軍械調查資料&copy;皇家版權與資料庫版權 2010-2023。'
         contributors_gb_united_kingdom: 英國
-        contributors_2_html: 關於這些的進一步詳細資訊,與其他已使用來改善 OpenStreetMap 的來源,請參閱 OpenStreetMap
-          Wiki 上的%{contributors_page_link}。
+        contributors_2_html: 關於這些的進一步詳細資訊,與其他已使用來改善開放街圖的來源,請參閱開放街圖 Wiki 上的%{contributors_page_link}。
         contributors_2_contributors_page: 貢獻者頁面
-        contributors_footer_2_html: OpenStreetMap 收錄一項資料,並不意味原本的資料提供者認可 OpenStreetMap、提供任何保證或承擔任何法律責任。
+        contributors_footer_2_html: 開放街圖收錄一項資料,並不意味原本的資料提供者認可開放街圖、提供任何保證或承擔任何法律責任。
         infringement_title_html: 侵犯版權
         infringement_1_html: OSM 的貢獻者會被提醒,絕不要在沒有版權所有人的明確淮許下,加入來自任何有版權的來源的資料 (如 Google
           地圖或印刷地圖)。
-        infringement_2_1_html: 如果你認為有受版權保護的素材被不恰當地加到 OpenStreetMap 資料庫或本網站,請參考我們的%{takedown_procedure_link},或直接在我們的%{online_filing_page_link}反應。
+        infringement_2_1_html: 如果你認為有受版權保護的素材被不恰當地加到開放街圖資料庫或本網站,請參考我們的%{takedown_procedure_link},或直接在我們的%{online_filing_page_link}反應。
         infringement_2_1_takedown_procedure: 侵權處理程序
         infringement_2_1_online_filing_page: 線上申請頁面
         trademarks_title: 商標
-        trademarks_1_1_html: OpenStreetMap、網站上的放大鏡標誌,和 State of the Map 是 OpenStreetMap
-          基金會的註冊商標。如果你對商標的使用有任何疑問,請參閱我們的%{trademark_policy_link}。
+        trademarks_1_1_html: 開放街圖、網站上的放大鏡標誌以及 State of the Map 是開放街圖基金會的註冊商標。如果你對商標的使用有任何疑問,請參閱我們的%{trademark_policy_link}。
         trademarks_1_1_trademark_policy: 商標方針
     index:
       js_1: 你使用不支援 JavaScript 的瀏覽器,或者停用了 JavaScript。
-      js_2: OpenStreetMap 使用 JavaScript 讓地圖更平順。
+      js_2: 開放街圖使用 JavaScript 讓地圖更平順。
       license:
-        copyright: 版權所有,由 OpenStreetMap 及貢獻者根據開放的授權協議提供
+        copyright: 版權所有,由開放街圖及貢獻者根據開放的授權協議提供
       remote_failed: 編輯失敗 - 請確定已載入 JOSM 或 Merkaartor 並開啟遠端控制選項
     not_public_flash:
       not_public: 你尚未將你的編輯設為公開。
       not_public_description_html: 在你這麼做之前將無法再編輯地圖,可以在你的 %{user_page} 將自己的編輯設定為公開。
       user_page_link: 使用者頁面
+      anon_edits_html: (%{link})
+      anon_edits_link: https://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
       anon_edits_link_text: 瞭解為什麼這很重要。
     edit:
       id_not_configured: iD 尚未設定
@@ -2109,19 +2171,19 @@ zh-TW:
       odbl: 開放資料共享開放資料庫授權
       too_large:
         advice: 若以上匯出失敗,請考慮使用下列來源:
-        body: 這個區域太大,無法匯出 OpenStreetMap XML 資料。請放大或選擇一個較小的區域,或使用下列大量資料下載源:
+        body: 這個區域太大,無法匯出開放街圖 XML 資料。請放大或選擇一個較小的區域,或使用下列大量資料下載源:
         planet:
           title: 地球 OSM
-          description: 定期更新的完整 OpenStreetMap 資料庫副本
+          description: 定期更新的完整開放街圖資料庫副本
         overpass:
           title: Overpass API
-          description: 從 OpenStreetMap 資料庫的鏡像,下載此區域
+          description: 從開放街圖資料庫的鏡像,下載此區域
         geofabrik:
           title: Geofabrik 下載
           description: 定期更新的洲、國家及特定城市之摘錄資料
         other:
           title: 其他來源
-          description: OpenStreetMap wiki 上列出的其他來源
+          description: 開放街圖 wiki 上列出的其他來源
       export_button: 匯出
     fixthemap:
       title: 回報問題/改進地圖
@@ -2129,8 +2191,7 @@ zh-TW:
         title: 如何協助
         join_the_community:
           title: 加入社群
-          explanation_html: 如果你發現我們的地圖資料有問題,例如缺少某條道路或者你的地址,最好的方法就是加入 OpenStreetMap
-            社群,然後自己加入或者改進資料。
+          explanation_html: 如果你發現我們的地圖資料有問題,例如缺少某條道路或者你的地址,最好的方法就是加入開放街圖社群,然後自己加入或者改進資料。
         add_a_note:
           instructions_1_html: |-
             只需點選%{note_icon}或地圖上顯示的同一圖示,
@@ -2142,7 +2203,7 @@ zh-TW:
         working_group: OSMF 工作小組
     help:
       title: 取得協助
-      introduction: OpenStreetMap 有一些資源,可用於學習本專案、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。
+      introduction: 開放街圖有一些資源,可用於學習本專案、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。
       welcome:
         url: /welcome
         title: 歡迎來到開放街圖
@@ -2153,7 +2214,7 @@ zh-TW:
         description: 社群維護的新手指南
       community:
         title: 幫助與社群論壇
-        description: 尋求幫助與討論有關 OpenStreetMap 的分享場所。
+        description: 尋求幫助與討論有關開放街圖的分享場所。
       mailing_lists:
         title: 郵件論壇
         description: 在不同主題或是地區的郵件論壇問問題或是討論有趣的事物。
@@ -2162,10 +2223,10 @@ zh-TW:
         description: 使用各種不同語言在各種主題聊天互動。
       switch2osm:
         title: switch2osm
-        description: 協助公司與組織改用 OpenStreetMap 為基礎的地圖與相關服務。
+        description: 協助公司與組織改用開放街圖為基礎的地圖與相關服務。
       welcomemat:
         title: 對於組織
-        description: 想要以組織來對 OpenStreetMap 製作計劃嗎?請在 Welcome Mat 查找你所需要的事項。
+        description: 想要以組織來對開放街圖製作計劃嗎?請在 Welcome Mat 查找你所需要的事項。
       wiki:
         title: 開放街圖 Wiki
         description: 瀏覽 wiki,取得詳盡的開放街圖文件。
@@ -2297,7 +2358,7 @@ zh-TW:
         doesnt: 不會
       basic_terms:
         title: 繪製地圖的基本術語
-        paragraph_1: OpenStreetMap 有自己的術語。以下是一些常用的關鍵詞。
+        paragraph_1: 開放街圖有自己的術語。以下是一些常用的關鍵詞。
         an_editor_html: '%{editor}是你可以用於編輯地圖的程式或網站。'
         a_node_html: '%{node}是地圖上的一個點,例如一間餐廳或是一棵樹。'
         a_way_html: '%{way}是一條線或是區域,例如一條道路、一條溪、一個湖泊或是一棟建築物。'
@@ -2309,7 +2370,7 @@ zh-TW:
       rules:
         title: 規則!
         para_1_html: |-
-          OpenStreetMap 幾乎沒有正式規則,但我們希望所有參與者都能與社群合作與溝通!。如果你正在考慮
+          開放街圖幾乎沒有正式規則,但我們希望所有參與者都能與社群合作與溝通!。如果你正在考慮
           除手動編輯之外的任何活動,請閱讀並遵循
           %{imports_link} 和 %{automated_edits_link}指南。
         imports: 匯入
@@ -2327,14 +2388,14 @@ zh-TW:
     communities:
       title: 社群
       lede_text: |-
-        來自世界各地的人們都在貢獻或使用 OpenStreetMap
+        來自世界各地的人們都在貢獻或使用開放街圖
         雖然許多人以個人身份參與,但其他人則組成了社群。
         這些團體的規模各不相同,代表了小到城鎮大到大型多國地區的地域。
         它們也可以是正式的或非正式的。
       local_chapters:
         title: 地方分會
-        about_text: 地方分會是已採取正式步驟建立非營利法人實體的國家級或地區級團體。在與地方政府、企業和媒體打交道時,他們代表該地區的地圖和製圖者。他們還與
-          OpenStreetMap 基金會 (OSMF) 締結聯繫,使他們能夠與法律和版權管理機構建立聯繫。
+        about_text: 地方分會是已採取正式步驟建立非營利法人實體的國家級或地區級團體。在與地方政府、企業和媒體打交道時,他們代表該地區的地圖和製圖者。他們還與開放街圖基金會
+          (OSMF) 締結聯繫,使他們能夠與法律和版權管理機構建立聯繫。
         list_text: 以下社群已經正式成立地方分會:
       other_groups:
         title: 其他團體
@@ -2425,7 +2486,7 @@ zh-TW:
       message: GPX 檔案儲存,上傳系統目前無法使用。
     feeds:
       show:
-        title: OpenStreetMap GPS 軌跡
+        title: 開放街圖 GPS 軌跡
       description:
         description_with_count:
           one: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
@@ -2436,7 +2497,7 @@ zh-TW:
     require_cookies:
       cookies_needed: 你似乎已停用 cookies - 請在瀏覽器中開啟 cookies 後再繼續。
     setup_user_auth:
-      blocked_zero_hour: 你在 OpenStreetMap 網站有一個緊急訊息。在儲存你的編輯內容前請先閱讀該訊息。
+      blocked_zero_hour: 你在開放街圖網站有一個緊急訊息。在儲存你的編輯內容前請先閱讀該訊息。
       blocked: 你已經被封鎖使用 API。請登入網頁介面以瞭解更多資訊。
       need_to_see_terms: 我們已暫時中止你使用 API 的權限,請登入網頁介面查閱貢獻者條款,你不需要同意有關條款,但必須查閱它們。
     settings_menu:
@@ -2491,15 +2552,17 @@ zh-TW:
     permissions:
       missing: 你尚未允許應用程式來訪問此設施
     scopes:
-      openid: 使用 OpenStreetMap 登入
+      openid: 使用開放街圖登入
       read_prefs: 讀取使用者偏好設定
       write_prefs: 修改使用者偏好設定
       write_diary: 建立日記並評論
       write_api: 修改地圖
+      write_changeset_comments: 在變更集上留言
       read_gpx: 讀取私人 GPS 軌跡
       write_gpx: 上傳 GPS 軌跡
       write_notes: 修改註記
       write_redactions: 編寫地圖資料
+      write_blocks: 建立與撤銷使用者封鎖
       read_email: 讀取使用者電子郵件位址
       consume_messages: 讀取、更新狀態、與刪除使用者訊息
       send_messages: 傳送私人訊息給其他使用者
@@ -2557,16 +2620,16 @@ zh-TW:
     new:
       title: 註冊
       tab_title: 註冊
-      signup_to_authorize_html: 註冊 OpenStreetMap 以存取 %{client_app_name}。
+      signup_to_authorize_html: 註冊開放街圖以存取 %{client_app_name}。
       no_auto_account_create: 很不幸的,我們現在無法自動為你建立帳號。
       please_contact_support_html: 請聯繫 %{support_link} 來安排建立帳號 - 我們會盡快處理這份請求。
       support: 支援
       about:
         header: 自由且可編輯。
-        paragraph_1: 不像其他地圖,開放街圖是完全由像你我這類創建,而且任何都能修正、更新、下載與使用。
+        paragraph_1: 不像其他地圖,開放街圖是完全由像你我這樣的人建立,而且任何人都能修正、更新、下載與使用。
         paragraph_2: 註冊並開始貢獻。
-        welcome: 歡迎來到 OpenStreetMap
-      duplicate_social_email: 若你已有 OpenStreetMap 帳號,並希望使用第三方身份提供者,請使用你的密碼登入並修改帳號的設定。
+        welcome: 歡迎來到開放街圖
+      duplicate_social_email: 若你已有開放街圖帳號,並希望使用第三方身份提供者,請使用你的密碼登入並修改帳號的設定。
       display name description: 你公開顯示的使用者名稱,之後可以在偏好設定中改變它。
       by_signing_up:
         html: 註冊即表示你同意我們的 %{tou_link}、%{privacy_policy_link} 與 %{contributor_terms_link}。
@@ -2579,9 +2642,6 @@ zh-TW:
         privacy_policy: 隱私權政策
         privacy_policy_title: OSMF 隱私權政策包含電子郵件地址部份
         html: 你的地址不會公開顯示,請參閱我們的%{privacy_policy_link}來了解更多資訊。
-      consider_pd_html: 我認為我的貢獻屬於 %{consider_pd_link}。
-      consider_pd: 公有領域
-      consider_pd_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
       or: 或
       use external auth: 或者使用第三方服務註冊
     no_such_user:
@@ -2596,7 +2656,7 @@ zh-TW:
       my notes: 我的註記
       my messages: 我的訊息
       my profile: 我的基本資料
-      my settings: 我的設定值
+      my_account: 我的帳號
       my comments: 我的評論
       my_preferences: 我的偏好設定
       my_dashboard: 我的功能面板
@@ -2610,6 +2670,8 @@ zh-TW:
       edits: 編輯
       traces: 軌跡
       notes: 地圖註記
+      unfollow: 取消追蹤
+      follow: 追蹤
       mapper since: 註冊為製圖者日期:
       last map edit: 最後地圖編輯於:
       no activity yet: 尚無活動
@@ -2674,25 +2736,38 @@ zh-TW:
       show:
         title: 使用者
         heading: 使用者
-        empty: 找不到符合的使用者
+        ip_address: IP 位址
+        search: 搜尋
       page:
         found_users:
           one: 找到 %{count} 位使用者
           other: 找到 %{count} 位使用者
         confirm: 確認選取的使用者
         hide: 隱藏選取的使用者
+        empty: 找不到符合的使用者
       user:
         summary_html: '%{name} 由 %{ip_address} 於 %{date} 建立'
         summary_no_ip_html: '%{name} 建立於:%{date}'
+    comments:
+      index:
+        heading_html: '%{user} 的留言'
+        changesets: 變更集
+        diary_entries: 日記項目
+        no_comments: 沒有留言
     changeset_comments:
+      index:
+        title: '%{user} 新增的變更集留言'
       page:
+        changeset: 變更集
         when: 於
         comment: 評論
     diary_comments:
       index:
-        title: æ\97¥è¨\98è©\95è«\96ç\94±%{user}æ·»å\8a 
+        title: æ\97¥è¨\98è©\95è«\96ç\94±%{user}æ\96°å¢\9e
       page:
         post: 貼文
+        when: 於
+        comment: 留言
     suspended:
       title: 帳號已暫停
       heading: 帳號已暫停
@@ -2707,8 +2782,8 @@ zh-TW:
       invalid_scope: 無效範圍
       unknown_error: 驗證失敗
     auth_association:
-      heading: 你的 ID 尚未與 OpenStreetMap 帳號關聯。
-      option_1: 如果你是新來到 OpenStreetMap,請使用下方表單建立一個帳號。
+      heading: 你的 ID 尚未與開放街圖帳號關聯。
+      option_1: 如果你是新來到開放街圖,請使用下方表單建立一個帳號。
       option_2: 如果你已擁有一個帳號,可以用你的使用者名稱與密碼登入你的帳號,並在使用者設定中關連你的 ID。
   user_role:
     filter:
@@ -2776,6 +2851,9 @@ zh-TW:
         revoked_html: 已被 %{name} 撤銷
         active: 活躍的
         active_until_read: 直到讀取後才活躍
+        read_html: 已讀於 %{time}
+        time_in_future_title: '%{time_absolute};於 %{time_relative}'
+        time_in_past_title: '%{time_absolute};%{time_relative}'
     show:
       title: '%{block_by}封鎖了%{block_on}'
       heading_html: '%{block_by}封鎖了%{block_on}'
@@ -2792,6 +2870,8 @@ zh-TW:
       display_name: 被封鎖的使用者
       creator_name: 建立者
       reason: 封鎖的理由
+      start: 開始
+      end: 結束
       status: 狀態
     navigation:
       all_blocks: 所有封鎖
@@ -2836,12 +2916,18 @@ zh-TW:
       description: 說明
       created_at: 建立於:
       last_changed: 最新變更
+      apply: 套用
+      all: 全部
+      open: 開放
+      closed: 已關閉
+      status: 狀態
     show:
       title: 註記:%{id}
       description: 說明
       open_title: 未解決的註記:#%{note_name}
       closed_title: 已解決的註記:#%{note_name}
       hidden_title: 已隱藏的註記:#%{note_name}
+      description_when_author_is_deleted: 已刪除
       event_opened_by_html: 由%{user}%{time_ago}建立
       event_opened_by_anonymous_html: 由匿名使用者%{time_ago}建立
       event_commented_by_html: 來自%{user}%{time_ago}的評論
@@ -2853,6 +2939,9 @@ zh-TW:
       event_hidden_by_html: 由%{user} %{time_ago}隱藏
       report: 回報此註記
       anonymous_warning: 此項註記包含來自匿名使用者的評論,應作獨立核實。
+      discussion: 討論
+      subscribe: 訂閱
+      unsubscribe: 取消訂閱
       hide: 隱藏
       resolve: 解決
       reactivate: 重新開啟
@@ -2869,12 +2958,26 @@ zh-TW:
       anonymous_warning_html: 你尚未登入。請%{log_in}或%{sign_up}以便收到你的註記的更新內容並協助其他的地圖編輯者解決問題。
       anonymous_warning_log_in: 登入
       anonymous_warning_sign_up: 註冊
+      counter_warning_html: 您已張貼了至少 %{x_anonymous_notes},這對社群來說很棒,謝謝!現在,我們鼓勵您%{contribute_by_yourself},這並不複雜,而且%{community_can_help}。
+      x_anonymous_notes:
+        one: '%{count} 則匿名註記'
+        other: '%{count} 則匿名註記'
+      counter_warning_guide_link:
+        text: 自己做出貢獻
+        url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
+      counter_warning_forum_link:
+        text: 社群可以協助您
       advice: 你的註記已公開並可用於更新地圖,因此請不要輸入個人訊息,或是來自於具版權保護地圖的訊息以及目錄清單。
       add: 送出註記
+    new_readonly:
+      title: 新增註記
+      warning: 無法建立新註記,因為開放街圖 API 目前處於唯讀模式。
     notes_paging_nav:
       showing_page: 第 %{page} 頁
       next: 下一頁
       previous: 上一頁
+    not_found_message:
+      sorry: '抱歉,找不到註記 #%{id}。'
   javascripts:
     close: 關閉
     share:
@@ -2896,6 +2999,7 @@ zh-TW:
       center_marker: 將標記設為地圖中心點
       paste_html: 貼上 HTML 以嵌入網站
       view_larger_map: 查看更大的地圖
+      only_layers_exported_as_image: 僅以下圖層可匯出為影像:
     embed:
       report_problem: 回報問題
     key:
@@ -2927,17 +3031,17 @@ zh-TW:
         gps: 公開GPS軌跡
         overlays: 開啟覆蓋層,以為地圖解決問題
         title: 圖層
-      openstreetmap_contributors: OpenStreetMap 貢獻者
+      openstreetmap_contributors: 開放街圖貢獻者
       make_a_donation: 捐款
       website_and_api_terms: 網站和 API 條款
       cyclosm_credit: 由 %{osm_france_link} 代管的 %{cyclosm_link} 所提供圖磚樣式
-      osm_france: OpenStreetMap 法國
+      osm_france: 開放街圖法國
       thunderforest_credit: '%{thunderforest_link} 提供的圖磚'
       andy_allan: Andy Allan
       tracestrack_credit: '%{tracestrack_link} 提供的圖磚'
       tracestrack: 蹤跡地圖
       hotosm_credit: 由 %{osm_france_link} 代管的 %{hotosm_link} 所提供圖磚樣式
-      hotosm_name: OpenStreetMap 人道主義團隊
+      hotosm_name: 開放街圖人道主義團隊
     site:
       edit_tooltip: 編輯地圖
       edit_disabled_tooltip: 放大以編輯地圖
@@ -3050,6 +3154,8 @@ zh-TW:
       show_address: 顯示地址
       query_features: 查詢圖徵
       centre_map: 置此於地圖中央
+    home:
+      marker_title: 我家位置
   redactions:
     edit:
       heading: 編輯修訂
index 0ffd0a546c431552257073e2e206759da2901c11..3029a418f824e38c1811b2cba90e8c413058ddce 100644 (file)
@@ -17,7 +17,6 @@ OpenStreetMap::Application.routes.draw do
     get "capabilities" => "capabilities#show"
     get "permissions" => "permissions#show"
 
-    put "changeset/create" => "changesets#create"
     post "changeset/:id/upload" => "changesets#upload", :as => :changeset_upload, :id => /\d+/
     get "changeset/:id/download" => "changesets#download", :as => :changeset_download, :id => /\d+/
     get "changeset/:id" => "changesets#show", :as => :changeset_show, :id => /\d+/
@@ -25,19 +24,15 @@ OpenStreetMap::Application.routes.draw do
     post "changeset/:id/unsubscribe" => "changesets#unsubscribe", :as => :api_changeset_unsubscribe, :id => /\d+/
     put "changeset/:id" => "changesets#update", :id => /\d+/
     put "changeset/:id/close" => "changesets#close", :as => :changeset_close, :id => /\d+/
-    get "changesets" => "changesets#index"
     post "changeset/:id/comment" => "changeset_comments#create", :as => :changeset_comment, :id => /\d+/
     post "changeset/comment/:id/hide" => "changeset_comments#destroy", :as => :changeset_comment_hide, :id => /\d+/
     post "changeset/comment/:id/unhide" => "changeset_comments#restore", :as => :changeset_comment_unhide, :id => /\d+/
-
-    post "node/:node_id/:version/redact" => "old_nodes#redact", :as => :node_version_redact, :version => /\d+/, :node_id => /\d+/
-
-    post "way/:way_id/:version/redact" => "old_ways#redact", :as => :way_version_redact, :version => /\d+/, :id => /\d+/
-
-    post "relation/:relation_id/:version/redact" => "old_relations#redact", :as => :relation_version_redact, :version => /\d+/, :id => /\d+/
   end
 
   namespace :api, :path => "api/0.6" do
+    resources :changesets, :only => [:index, :create]
+    put "changeset/create" => "changesets#create", :as => nil
+
     resources :changeset_comments, :only => :index
 
     resources :nodes, :only => [:index, :create]
@@ -47,9 +42,12 @@ OpenStreetMap::Application.routes.draw do
         resources :relations, :only => :index
       end
       resources :versions, :path => "history", :controller => :old_nodes, :only => :index
-      resources :versions, :path => "", :version => /\d+/, :param => :version, :controller => :old_nodes, :only => :show
+      resource :version, :path => ":version", :version => /\d+/, :controller => :old_nodes, :only => :show do
+        resource :redaction, :module => :old_nodes, :only => [:create, :destroy]
+      end
     end
     put "node/create" => "nodes#create", :as => nil
+    post "node/:node_id/:version/redact" => "old_nodes/redactions#create", :node_id => /\d+/, :version => /\d+/, :allow_delete => true, :as => nil
 
     resources :ways, :only => [:index, :create]
     resources :ways, :path => "way", :id => /\d+/, :only => [:show, :update, :destroy] do
@@ -60,9 +58,12 @@ OpenStreetMap::Application.routes.draw do
         resources :relations, :only => :index
       end
       resources :versions, :path => "history", :controller => :old_ways, :only => :index
-      resources :versions, :path => "", :version => /\d+/, :param => :version, :controller => :old_ways, :only => :show
+      resource :version, :path => ":version", :version => /\d+/, :controller => :old_ways, :only => :show do
+        resource :redaction, :module => :old_ways, :only => [:create, :destroy]
+      end
     end
     put "way/create" => "ways#create", :as => nil
+    post "way/:way_id/:version/redact" => "old_ways/redactions#create", :way_id => /\d+/, :version => /\d+/, :allow_delete => true, :as => nil
 
     resources :relations, :only => [:index, :create]
     resources :relations, :path => "relation", :id => /\d+/, :only => [:show, :update, :destroy] do
@@ -73,9 +74,12 @@ OpenStreetMap::Application.routes.draw do
         resources :relations, :only => :index
       end
       resources :versions, :path => "history", :controller => :old_relations, :only => :index
-      resources :versions, :path => "", :version => /\d+/, :param => :version, :controller => :old_relations, :only => :show
+      resource :version, :path => ":version", :version => /\d+/, :controller => :old_relations, :only => :show do
+        resource :redaction, :module => :old_relations, :only => [:create, :destroy]
+      end
     end
     put "relation/create" => "relations#create", :as => nil
+    post "relation/:relation_id/:version/redact" => "old_relations/redactions#create", :relation_id => /\d+/, :version => /\d+/, :allow_delete => true, :as => nil
 
     resource :map, :only => :show
 
@@ -294,10 +298,10 @@ OpenStreetMap::Application.routes.draw do
       resource :status, :only => :update
     end
   end
-  get "/user/:display_name/account", :to => redirect(:path => "/account/edit")
+  get "/user/:display_name/account", :to => redirect(:path => "/account")
   get "/user/:display_name/diary/comments(/:page)", :page => /[1-9][0-9]*/, :to => redirect(:path => "/user/%{display_name}/diary_comments")
 
-  resource :account, :only => [:edit, :update, :destroy] do
+  resource :account, :only => [:show, :update, :destroy] do
     scope :module => :accounts do
       resource :terms, :only => [:show, :update]
       resource :pd_declaration, :only => [:show, :create]
@@ -305,6 +309,7 @@ OpenStreetMap::Application.routes.draw do
       resource :home, :only => :show
     end
   end
+  get "/account/edit", :to => redirect(:path => "/account"), :as => nil
 
   resource :dashboard, :only => [:show]
   resource :preferences, :only => [:show, :update]
index 46f37036f92d796243960cf1c7c8b63fdd91244e..6710ee88e02b947c1294bb97d309e0d1e60b4118 100644 (file)
@@ -51,14 +51,14 @@ module OSM
 
   # Raised when to delete an already-deleted object.
   class APIAlreadyDeletedError < APIError
-    def initialize(object = "object", object_id = "")
-      @object = object
-      @object_id = object_id
+    def initialize(type = "object", id = "")
+      @type = type
+      @id = id
 
-      super("The #{object} with the id #{object_id} has already been deleted")
+      super("The #{type} with the id #{id} has already been deleted")
     end
 
-    attr_reader :object, :object_id
+    attr_reader :type, :id
 
     def status
       :gone
index bdf9c37ca7359eec1f2cea57c2243178d8ce7791..84e695c6e75a3be7639bc97dd68e898ffd6dc7b7 100644 (file)
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 module RichText
   SPAMMY_PHRASES = [
     "Business Description:", "Additional Keywords:"
@@ -144,7 +146,7 @@ module RichText
     end
 
     def truncated_text_content(element)
-      text = ""
+      text = +""
 
       append_text = lambda do |child|
         if child.type == :text
index 8983f3bd3bd1c4858d5aab8caa57a538d12b32a7..eb73d60290701656749df8598a15cdbc8cbb1d00 100644 (file)
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
 ##
 # Encodes and decodes locations from Morton-coded "quad tile" strings. Each
 # variable-length string encodes to a precision of one pixel per tile (roughly,
@@ -23,7 +25,7 @@ module ShortLink
       # keep support for old shortlinks which use the @ character, now
       # replaced by the ~ character because twitter is horribly broken
       # and we can't have that.
-      str.tr!("@", "~")
+      str = str.tr("@", "~")
 
       str.each_char do |c|
         t = ARRAY.index c
@@ -57,7 +59,7 @@ module ShortLink
     def encode(lon, lat, z)
       code = interleave_bits(((lon + 180.0) * (2**32) / 360.0).to_i,
                              ((lat + 90.0) * (2**32) / 180.0).to_i)
-      str = ""
+      str = +""
       # add eight to the zoom level, which approximates an accuracy of
       # one pixel in a tile.
       ((z + 8) / 3.0).ceil.times do |i|
index 17f28a4e9cb4ef134a4ac205690159499ff3b9ad..8a8d7c8a44cf65da918491d5f187c39a535a316a 100644 (file)
@@ -5,7 +5,7 @@ def yarn_path
 end
 
 def config_file
-  Rails.root.join("config/eslint.js").to_s
+  Rails.root.join("config/eslint.config.mjs").to_s
 end
 
 namespace "eslint" do
index 371d01aff40a1c24a000a65e0e906f498df93fcb..f8eac3db914233eda8262f34e18f2a05cd80be97 100644 (file)
@@ -9,9 +9,11 @@
     "osm-community-index": "^5.2.0"
   },
   "devDependencies": {
+    "@types/jquery": "^3.5.0",
+    "@types/leaflet": "^1.9.0",
     "eslint": "^9.0.0",
     "eslint-plugin-erb": "^2.1.0",
-    "@stylistic/eslint-plugin-js": "^3.0.0",
+    "@stylistic/eslint-plugin-js": "^4.0.0",
     "eslint-formatter-compact": "^8.40.0"
   }
 }
index f2fcadfd7c582efedfdcd60df7ee0947b896db4b..f7769426c562fc1a8ebb80fa708478f1fc2022ba 100644 (file)
@@ -7,6 +7,8 @@ ActiveSupport.on_load(:action_dispatch_system_test_case) do
 end
 
 class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
+  include ActionMailer::TestCase::ClearTestDeliveries
+
   driven_by :selenium, :using => Settings.system_test_headless ? :headless_firefox : :firefox do |options|
     options.add_preference("intl.accept_languages", "en")
     options.binary = Settings.system_test_firefox_binary if Settings.system_test_firefox_binary
index be0d46f1e57d354eb20383b0c29d360ef9cf2aeb..fe3c8bad2f08b94d1c8943fc00dd3dbecf25556d 100644 (file)
@@ -42,7 +42,7 @@ module Accounts
 
       post account_pd_declaration_path
 
-      assert_redirected_to edit_account_path
+      assert_redirected_to account_path
       assert_nil flash[:notice]
       assert_equal "You didn't confirm that you consider your edits to be in the Public Domain.", flash[:warning]
 
index 55b30506b41f1bba226869a57125ba088e91bb9b..ea8cd4e9fff5ce39523b04db17b53dd81d2d6b5a 100644 (file)
@@ -29,7 +29,7 @@ module Accounts
       session_for(user)
 
       get account_terms_path
-      assert_redirected_to edit_account_path
+      assert_redirected_to account_path
     end
 
     def test_show_not_seen_without_referer
@@ -53,7 +53,7 @@ module Accounts
       session_for(user)
 
       put account_terms_path, :params => { :read_ct => 1, :read_tou => 1 }
-      assert_redirected_to edit_account_path
+      assert_redirected_to account_path
       assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
 
       user.reload
@@ -82,8 +82,8 @@ module Accounts
       user = create(:user, :terms_seen => false, :terms_agreed => nil)
       session_for(user)
 
-      get edit_account_path
-      assert_redirected_to account_terms_path(:referer => "/account/edit")
+      get account_path
+      assert_redirected_to account_terms_path(:referer => account_path)
     end
   end
 end
index 18ad34f66692dcb6eb8ca3c6c818a75fc38ee22a..199bf4aab53ac23825d3ed6de8b25d4186510ac2 100644 (file)
@@ -5,16 +5,23 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
   # test all routes which lead to this controller
   def test_routes
     assert_routing(
-      { :path => "/account/edit", :method => :get },
-      { :controller => "accounts", :action => "edit" }
+      { :path => "/account", :method => :get },
+      { :controller => "accounts", :action => "show" }
     )
     assert_routing(
       { :path => "/account", :method => :put },
       { :controller => "accounts", :action => "update" }
     )
+    assert_routing(
+      { :path => "/account", :method => :delete },
+      { :controller => "accounts", :action => "destroy" }
+    )
+
+    get "/account/edit"
+    assert_redirected_to "/account"
   end
 
-  def test_account
+  def test_show_and_update
     # Get a user to work with - note that this user deliberately
     # conflicts with uppercase_user in the email and display name
     # fields to test that we can change other fields without any
@@ -24,14 +31,14 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
 
     # Make sure that you are redirected to the login page when
     # you are not logged in
-    get edit_account_path
-    assert_redirected_to login_path(:referer => "/account/edit")
+    get account_path
+    assert_redirected_to login_path(:referer => account_path)
 
     # Make sure we get the page when we are logged in as the right user
     session_for(user)
-    get edit_account_path
+    get account_path
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select "form#accountForm" do |form|
       assert_equal "post", form.attr("method").to_s
       assert_select "input[name='_method']", true
@@ -41,9 +48,9 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
     # Updating the description using GET should fail
     user.description = "new description"
     user.preferred_editor = "default"
-    get edit_account_path, :params => { :user => user.attributes }
+    get account_path, :params => { :user => user.attributes }
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_not_equal user.description, User.find(user.id).description
 
     # Adding external authentication should redirect to the auth provider
@@ -56,7 +63,7 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
     new_attributes = user.attributes.dup.merge(:display_name => create(:user).display_name)
     patch account_path, :params => { :user => new_attributes }
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", false
     assert_select "form#accountForm > div > input.is-invalid#user_display_name"
 
@@ -64,17 +71,17 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
     new_attributes = user.attributes.dup.merge(:display_name => create(:user).display_name.upcase)
     patch account_path, :params => { :user => new_attributes }
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", false
     assert_select "form#accountForm > div > input.is-invalid#user_display_name"
 
     # Changing name to one that doesn't exist should work
     new_attributes = user.attributes.dup.merge(:display_name => "new tester")
     patch account_path, :params => { :user => new_attributes }
-    assert_redirected_to edit_account_url
-    get edit_account_path
+    assert_redirected_to account_path
+    follow_redirect!
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", /^User information updated successfully/
     assert_select "form#accountForm > div > input#user_display_name[value=?]", "new tester"
 
@@ -89,7 +96,7 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
       end
     end
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", false
     assert_select "form#accountForm > div > input.is-invalid#user_new_email"
 
@@ -101,7 +108,7 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
       end
     end
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", false
     assert_select "form#accountForm > div > input.is-invalid#user_new_email"
 
@@ -112,31 +119,30 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
         patch account_path, :params => { :user => user.attributes }
       end
     end
-    assert_redirected_to edit_account_url
-    get edit_account_path
+    assert_redirected_to account_path
+    follow_redirect!
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select ".alert-success", /^User information updated successfully/
     assert_select "form#accountForm > div > input#user_new_email[value=?]", user.new_email
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal user.new_email, email.to.first
-    ActionMailer::Base.deliveries.clear
   end
 
-  def test_private_account
+  def test_show_private_account
     user = create(:user, :data_public => false)
 
     # Make sure that you are redirected to the login page when
     # you are not logged in
-    get edit_account_path
-    assert_redirected_to login_path(:referer => "/account/edit")
+    get account_path
+    assert_redirected_to login_path(:referer => account_path)
 
     # Make sure we get the page when we are logged in as the right user
     session_for(user)
-    get edit_account_path
+    get account_path
     assert_response :success
-    assert_template :edit
+    assert_template :show
     assert_select "form#accountForm" do |form|
       assert_equal "post", form.attr("method").to_s
       assert_select "input[name='_method']", true
index ba4200d3f8d2cfda3f6979b71a8fb74fb5eba0f8..72463ed676e3ae39044e8473da70929260354909 100644 (file)
@@ -236,8 +236,6 @@ module Api
       assert_equal 1, email.to.length
       assert_equal "[OpenStreetMap] #{commenter_user.display_name} has commented on one of your changesets", email.subject
       assert_equal creator_user.email, email.to.first
-
-      ActionMailer::Base.deliveries.clear
     end
 
     def test_create_on_changeset_with_changeset_creator_and_other_user_subscribers
@@ -267,8 +265,6 @@ module Api
       assert_not_nil email
       assert_equal 1, email.to.length
       assert_equal "[OpenStreetMap] #{commenter_user.display_name} has commented on a changeset you are interested in", email.subject
-
-      ActionMailer::Base.deliveries.clear
     end
 
     ##
index 3e2d7e6ad8222786cb609571e46e94b85973de2d..e73459a36d0693a64c897e0c76054ea2eb92737d 100644 (file)
@@ -6,7 +6,15 @@ module Api
     # test all routes which lead to this controller
     def test_routes
       assert_routing(
-        { :path => "/api/0.6/changeset/create", :method => :put },
+        { :path => "/api/0.6/changesets", :method => :get },
+        { :controller => "api/changesets", :action => "index" }
+      )
+      assert_routing(
+        { :path => "/api/0.6/changesets.json", :method => :get },
+        { :controller => "api/changesets", :action => "index", :format => "json" }
+      )
+      assert_routing(
+        { :path => "/api/0.6/changesets", :method => :post },
         { :controller => "api/changesets", :action => "create" }
       )
       assert_routing(
@@ -49,16 +57,256 @@ module Api
         { :path => "/api/0.6/changeset/1/close", :method => :put },
         { :controller => "api/changesets", :action => "close", :id => "1" }
       )
-      assert_routing(
-        { :path => "/api/0.6/changesets", :method => :get },
-        { :controller => "api/changesets", :action => "index" }
-      )
-      assert_routing(
-        { :path => "/api/0.6/changesets.json", :method => :get },
-        { :controller => "api/changesets", :action => "index", :format => "json" }
+
+      assert_recognizes(
+        { :controller => "api/changesets", :action => "create" },
+        { :path => "/api/0.6/changeset/create", :method => :put }
       )
     end
 
+    ##
+    # test the query functionality of changesets
+    def test_index
+      private_user = create(:user, :data_public => false)
+      private_user_changeset = create(:changeset, :user => private_user)
+      private_user_closed_changeset = create(:changeset, :closed, :user => private_user)
+      user = create(:user)
+      changeset = create(:changeset, :user => user)
+      closed_changeset = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+      changeset2 = create(:changeset, :min_lat => (5 * GeoRecord::SCALE).round, :min_lon => (5 * GeoRecord::SCALE).round, :max_lat => (15 * GeoRecord::SCALE).round, :max_lon => (15 * GeoRecord::SCALE).round)
+      changeset3 = create(:changeset, :min_lat => (4.5 * GeoRecord::SCALE).round, :min_lon => (4.5 * GeoRecord::SCALE).round, :max_lat => (5 * GeoRecord::SCALE).round, :max_lon => (5 * GeoRecord::SCALE).round)
+
+      get api_changesets_path(:bbox => "-10,-10, 10, 10")
+      assert_response :success, "can't get changesets in bbox"
+      assert_changesets_in_order [changeset3, changeset2]
+
+      get api_changesets_path(:bbox => "4.5,4.5,4.6,4.6")
+      assert_response :success, "can't get changesets in bbox"
+      assert_changesets_in_order [changeset3]
+
+      # not found when looking for changesets of non-existing users
+      get api_changesets_path(:user => User.maximum(:id) + 1)
+      assert_response :not_found
+      assert_equal "text/plain", @response.media_type
+      get api_changesets_path(:display_name => " ")
+      assert_response :not_found
+      assert_equal "text/plain", @response.media_type
+
+      # can't get changesets of user 1 without authenticating
+      get api_changesets_path(:user => private_user.id)
+      assert_response :not_found, "shouldn't be able to get changesets by non-public user (ID)"
+      get api_changesets_path(:display_name => private_user.display_name)
+      assert_response :not_found, "shouldn't be able to get changesets by non-public user (name)"
+
+      # but this should work
+      auth_header = bearer_authorization_header private_user
+      get api_changesets_path(:user => private_user.id), :headers => auth_header
+      assert_response :success, "can't get changesets by user ID"
+      assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
+
+      get api_changesets_path(:display_name => private_user.display_name), :headers => auth_header
+      assert_response :success, "can't get changesets by user name"
+      assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
+
+      # test json endpoint
+      get api_changesets_path(:display_name => private_user.display_name), :headers => auth_header, :params => { :format => "json" }
+      assert_response :success, "can't get changesets by user name"
+
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+
+      assert_equal Settings.api_version, js["version"]
+      assert_equal Settings.generator, js["generator"]
+      assert_equal 2, js["changesets"].count
+
+      # check that the correct error is given when we provide both UID and name
+      get api_changesets_path(:user => private_user.id,
+                              :display_name => private_user.display_name), :headers => auth_header
+      assert_response :bad_request, "should be a bad request to have both ID and name specified"
+
+      get api_changesets_path(:user => private_user.id, :open => true), :headers => auth_header
+      assert_response :success, "can't get changesets by user and open"
+      assert_changesets_in_order [private_user_changeset]
+
+      get api_changesets_path(:time => "2007-12-31"), :headers => auth_header
+      assert_response :success, "can't get changesets by time-since"
+      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
+
+      get api_changesets_path(:time => "2008-01-01T12:34Z"), :headers => auth_header
+      assert_response :success, "can't get changesets by time-since with hour"
+      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
+
+      get api_changesets_path(:time => "2007-12-31T23:59Z,2008-01-02T00:01Z"), :headers => auth_header
+      assert_response :success, "can't get changesets by time-range"
+      assert_changesets_in_order [closed_changeset]
+
+      get api_changesets_path(:open => "true"), :headers => auth_header
+      assert_response :success, "can't get changesets by open-ness"
+      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset]
+
+      get api_changesets_path(:closed => "true"), :headers => auth_header
+      assert_response :success, "can't get changesets by closed-ness"
+      assert_changesets_in_order [private_user_closed_changeset, closed_changeset]
+
+      get api_changesets_path(:closed => "true", :user => private_user.id), :headers => auth_header
+      assert_response :success, "can't get changesets by closed-ness and user"
+      assert_changesets_in_order [private_user_closed_changeset]
+
+      get api_changesets_path(:closed => "true", :user => user.id), :headers => auth_header
+      assert_response :success, "can't get changesets by closed-ness and user"
+      assert_changesets_in_order [closed_changeset]
+
+      get api_changesets_path(:changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}"), :headers => auth_header
+      assert_response :success, "can't get changesets by id (as comma-separated string)"
+      assert_changesets_in_order [changeset, private_user_changeset, closed_changeset]
+
+      get api_changesets_path(:changesets => ""), :headers => auth_header
+      assert_response :bad_request, "should be a bad request since changesets is empty"
+    end
+
+    ##
+    # test the query functionality of changesets with the limit parameter
+    def test_index_limit
+      user = create(:user)
+      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 2, 1, 0, 0, 0), :closed_at => Time.utc(2008, 2, 2, 0, 0, 0))
+      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 3, 1, 0, 0, 0), :closed_at => Time.utc(2008, 3, 2, 0, 0, 0))
+      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 4, 1, 0, 0, 0), :closed_at => Time.utc(2008, 4, 2, 0, 0, 0))
+      changeset5 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 5, 1, 0, 0, 0), :closed_at => Time.utc(2008, 5, 2, 0, 0, 0))
+
+      get api_changesets_path
+      assert_response :success
+      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
+
+      get api_changesets_path(:limit => "3")
+      assert_response :success
+      assert_changesets_in_order [changeset5, changeset4, changeset3]
+
+      get api_changesets_path(:limit => "0")
+      assert_response :bad_request
+
+      get api_changesets_path(:limit => Settings.max_changeset_query_limit)
+      assert_response :success
+      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
+
+      get api_changesets_path(:limit => Settings.max_changeset_query_limit + 1)
+      assert_response :bad_request
+    end
+
+    ##
+    # test the query functionality of sequential changesets with order and time parameters
+    def test_index_order
+      user = create(:user)
+      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 2, 1, 0, 0, 0), :closed_at => Time.utc(2008, 2, 2, 0, 0, 0))
+      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 3, 1, 0, 0, 0), :closed_at => Time.utc(2008, 3, 2, 0, 0, 0))
+      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 4, 1, 0, 0, 0), :closed_at => Time.utc(2008, 4, 2, 0, 0, 0))
+      changeset5 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 5, 1, 0, 0, 0), :closed_at => Time.utc(2008, 5, 2, 0, 0, 0))
+      changeset6 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 6, 1, 0, 0, 0), :closed_at => Time.utc(2008, 6, 2, 0, 0, 0))
+
+      get api_changesets_path
+      assert_response :success
+      assert_changesets_in_order [changeset6, changeset5, changeset4, changeset3, changeset2, changeset1]
+
+      get api_changesets_path(:order => "oldest")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4, changeset5, changeset6]
+
+      [
+        # lower time bound at the opening time of a changeset
+        ["2008-02-01T00:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3, changeset2]],
+        # lower time bound in the middle of a changeset
+        ["2008-02-01T12:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3]],
+        # lower time bound at the closing time of a changeset
+        ["2008-02-02T00:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3]],
+        # lower time bound after the closing time of a changeset
+        ["2008-02-02T00:00:01Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3], [changeset5, changeset4, changeset3]],
+        # upper time bound in the middle of a changeset
+        ["2007-09-09T12:00:00Z", "2008-04-01T12:00:00Z", [changeset4, changeset3, changeset2, changeset1], [changeset4, changeset3, changeset2, changeset1]],
+        # empty range
+        ["2009-02-02T00:00:01Z", "2018-05-15T00:00:00Z", [], []]
+      ].each do |from, to, interval_changesets, point_changesets|
+        get api_changesets_path(:time => "#{from},#{to}")
+        assert_response :success
+        assert_changesets_in_order interval_changesets
+
+        get api_changesets_path(:from => from, :to => to)
+        assert_response :success
+        assert_changesets_in_order point_changesets
+
+        get api_changesets_path(:from => from, :to => to, :order => "oldest")
+        assert_response :success
+        assert_changesets_in_order point_changesets.reverse
+      end
+    end
+
+    ##
+    # test the query functionality of overlapping changesets with order and time parameters
+    def test_index_order_overlapping
+      user = create(:user)
+      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 17, 0, 0), :closed_at => Time.utc(2015, 6, 4, 17, 0, 0))
+      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 16, 0, 0), :closed_at => Time.utc(2015, 6, 4, 18, 0, 0))
+      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 14, 0, 0), :closed_at => Time.utc(2015, 6, 4, 20, 0, 0))
+      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 3, 23, 0, 0), :closed_at => Time.utc(2015, 6, 4, 23, 0, 0))
+      create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 2, 23, 0, 0), :closed_at => Time.utc(2015, 6, 3, 23, 0, 0))
+
+      get api_changesets_path(:time => "2015-06-04T00:00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4]
+
+      get api_changesets_path(:from => "2015-06-04T00:00:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3]
+
+      get api_changesets_path(:from => "2015-06-04T00:00:00Z", :order => "oldest")
+      assert_response :success
+      assert_changesets_in_order [changeset3, changeset2, changeset1]
+
+      get api_changesets_path(:time => "2015-06-04T16:00:00Z,2015-06-04T17:30:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4]
+
+      get api_changesets_path(:from => "2015-06-04T16:00:00Z", :to => "2015-06-04T17:30:00Z")
+      assert_response :success
+      assert_changesets_in_order [changeset1, changeset2]
+
+      get api_changesets_path(:from => "2015-06-04T16:00:00Z", :to => "2015-06-04T17:30:00Z", :order => "oldest")
+      assert_response :success
+      assert_changesets_in_order [changeset2, changeset1]
+    end
+
+    ##
+    # check that errors are returned if garbage is inserted
+    # into query strings
+    def test_index_invalid
+      ["abracadabra!",
+       "1,2,3,F",
+       ";drop table users;"].each do |bbox|
+        get api_changesets_path(:bbox => bbox)
+        assert_response :bad_request, "'#{bbox}' isn't a bbox"
+      end
+
+      ["now()",
+       "00-00-00",
+       ";drop table users;",
+       ",",
+       "-,-"].each do |time|
+        get api_changesets_path(:time => time)
+        assert_response :bad_request, "'#{time}' isn't a valid time range"
+      end
+
+      ["me",
+       "foobar",
+       "-1",
+       "0"].each do |uid|
+        get api_changesets_path(:user => uid)
+        assert_response :bad_request, "'#{uid}' isn't a valid user ID"
+      end
+
+      get api_changesets_path(:order => "oldest", :time => "2008-01-01T00:00Z,2018-01-01T00:00Z")
+      assert_response :bad_request, "cannot use order=oldest with time"
+    end
+
     # -----------------------
     # Test simple changeset creation
     # -----------------------
@@ -69,7 +317,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_require_public_data
 
       auth_header = bearer_authorization_header
@@ -77,7 +325,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
 
       assert_response :success, "Creation of changeset did not return success status"
       newid = @response.body.to_i
@@ -101,47 +349,55 @@ module Api
     def test_create_invalid
       auth_header = bearer_authorization_header create(:user, :data_public => false)
       xml = "<osm><changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_require_public_data
 
       ## Try the public user
       auth_header = bearer_authorization_header
       xml = "<osm><changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :bad_request, "creating a invalid changeset should fail"
     end
 
     def test_create_invalid_no_content
       ## First check with no auth
-      put changeset_create_path
+      post api_changesets_path
       assert_response :unauthorized, "shouldn't be able to create a changeset with no auth"
 
       ## Now try to with a non-public user
       auth_header = bearer_authorization_header create(:user, :data_public => false)
-      put changeset_create_path, :headers => auth_header
+      post api_changesets_path, :headers => auth_header
       assert_require_public_data
 
       ## Try an inactive user
       auth_header = bearer_authorization_header create(:user, :pending)
-      put changeset_create_path, :headers => auth_header
+      post api_changesets_path, :headers => auth_header
       assert_inactive_user
 
       ## Now try to use a normal user
       auth_header = bearer_authorization_header
-      put changeset_create_path, :headers => auth_header
+      post api_changesets_path, :headers => auth_header
       assert_response :bad_request, "creating a changeset with no content should fail"
     end
 
     def test_create_wrong_method
       auth_header = bearer_authorization_header
 
-      get changeset_create_path, :headers => auth_header
+      put api_changesets_path, :headers => auth_header
       assert_response :not_found
       assert_template "rescues/routing_error"
+    end
 
-      post changeset_create_path, :headers => auth_header
-      assert_response :not_found
-      assert_template "rescues/routing_error"
+    def test_create_legacy_path
+      auth_header = bearer_authorization_header
+      xml = "<osm><changeset></changeset></osm>"
+
+      assert_difference "Changeset.count", 1 do
+        put "/api/0.6/changeset/create", :params => xml, :headers => auth_header
+      end
+
+      assert_response :success, "Creation of changeset did not return success status"
+      assert_equal Changeset.last.id, @response.body.to_i
     end
 
     ##
@@ -193,6 +449,7 @@ module Api
 
       # one hidden comment not included because not asked for
       comment2.update(:visible => false)
+      changeset.reload
 
       get changeset_show_path(changeset), :params => { :include_discussion => true }
       assert_response :success, "cannot get closed changeset with comments"
@@ -248,6 +505,22 @@ module Api
       end
     end
 
+    def test_show_tags
+      changeset = create(:changeset, :closed)
+      create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)")
+      create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment")
+
+      get changeset_show_path(changeset)
+
+      assert_response :success
+      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
+      assert_single_changeset changeset do
+        assert_dom "> tag", 2
+        assert_dom "> tag[k='created_by'][v='JOSM/1.5 (18364)']", 1
+        assert_dom "> tag[k='comment'][v='changeset comment']", 1
+      end
+    end
+
     def test_show_json
       changeset = create(:changeset)
 
@@ -304,6 +577,7 @@ module Api
 
       # one hidden comment not included because not asked for
       comment1.update(:visible => false)
+      changeset.reload
 
       get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
       assert_response :success, "cannot get closed changeset with comments"
@@ -356,28 +630,22 @@ module Api
       assert js["changeset"]["comments"][2]["visible"]
     end
 
-    def test_show_tag_and_discussion_json
+    def test_show_tags_json
       changeset = create(:changeset, :closed)
       create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)")
       create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment")
-      create_list(:changeset_comment, 3, :changeset_id => changeset.id)
 
-      get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
-      assert_response :success, "cannot get closed changeset with comments"
+      get changeset_show_path(changeset, :format => "json")
 
+      assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
-
       assert_not_nil js
       assert_equal Settings.api_version, js["version"]
       assert_equal Settings.generator, js["generator"]
       assert_single_changeset_json changeset, js
       assert_equal 2, js["changeset"]["tags"].count
-      assert_equal 3, js["changeset"]["comments"].count
-      assert_equal 3, js["changeset"]["comments_count"]
-      assert_equal 0, js["changeset"]["changes_count"]
-      assert_not_nil js["changeset"]["comments"][0]["uid"]
-      assert_not_nil js["changeset"]["comments"][0]["user"]
-      assert_not_nil js["changeset"]["comments"][0]["text"]
+      assert_equal "JOSM/1.5 (18364)", js["changeset"]["tags"]["created_by"]
+      assert_equal "changeset comment", js["changeset"]["tags"]["comment"]
     end
 
     def test_show_bbox_json
@@ -747,7 +1015,7 @@ module Api
               "<tag k='created_by' v='osm test suite checking changesets'/>" \
               "</changeset></osm>"
         assert_difference "Changeset.count", 1 do
-          put changeset_create_path, :params => xml, :headers => auth_header
+          post api_changesets_path, :params => xml, :headers => auth_header
         end
         assert_response :success
       end
@@ -761,7 +1029,7 @@ module Api
       create(:changeset, :user => user, :created_at => Time.now.utc - 28.days)
 
       # create a changeset
-      put changeset_create_path, :params => "<osm><changeset/></osm>", :headers => auth_header
+      post api_changesets_path, :params => "<osm><changeset/></osm>", :headers => auth_header
       assert_response :success, "Should be able to create a changeset: #{@response.body}"
       changeset_id = @response.body.to_i
 
@@ -1443,7 +1711,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success
       changeset_id = @response.body.to_i
 
@@ -1480,7 +1748,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success
       changeset_id = @response.body.to_i
 
@@ -1883,7 +2151,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :forbidden
 
       ## Now try with a normal user
@@ -1893,7 +2161,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success
       changeset_id = @response.body.to_i
 
@@ -1938,7 +2206,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success
       changeset_id = @response.body.to_i
 
@@ -1999,7 +2267,7 @@ module Api
       xml = "<osm><changeset>" \
             "<tag k='created_by' v='osm test suite checking changesets'/>" \
             "</changeset></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success
       changeset_id = @response.body.to_i
 
@@ -2112,7 +2380,7 @@ module Api
 
       # create a new changeset
       xml = "<osm><changeset/></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success, "Creating of changeset failed."
       changeset_id = @response.body.to_i
 
@@ -2162,249 +2430,6 @@ module Api
       assert_select "osm>changeset[max_lat='0.3000000']", 1
     end
 
-    ##
-    # test the query functionality of changesets
-    def test_query
-      private_user = create(:user, :data_public => false)
-      private_user_changeset = create(:changeset, :user => private_user)
-      private_user_closed_changeset = create(:changeset, :closed, :user => private_user)
-      user = create(:user)
-      changeset = create(:changeset, :user => user)
-      closed_changeset = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
-      changeset2 = create(:changeset, :min_lat => (5 * GeoRecord::SCALE).round, :min_lon => (5 * GeoRecord::SCALE).round, :max_lat => (15 * GeoRecord::SCALE).round, :max_lon => (15 * GeoRecord::SCALE).round)
-      changeset3 = create(:changeset, :min_lat => (4.5 * GeoRecord::SCALE).round, :min_lon => (4.5 * GeoRecord::SCALE).round, :max_lat => (5 * GeoRecord::SCALE).round, :max_lon => (5 * GeoRecord::SCALE).round)
-
-      get changesets_path(:bbox => "-10,-10, 10, 10")
-      assert_response :success, "can't get changesets in bbox"
-      assert_changesets_in_order [changeset3, changeset2]
-
-      get changesets_path(:bbox => "4.5,4.5,4.6,4.6")
-      assert_response :success, "can't get changesets in bbox"
-      assert_changesets_in_order [changeset3]
-
-      # not found when looking for changesets of non-existing users
-      get changesets_path(:user => User.maximum(:id) + 1)
-      assert_response :not_found
-      assert_equal "text/plain", @response.media_type
-      get changesets_path(:display_name => " ")
-      assert_response :not_found
-      assert_equal "text/plain", @response.media_type
-
-      # can't get changesets of user 1 without authenticating
-      get changesets_path(:user => private_user.id)
-      assert_response :not_found, "shouldn't be able to get changesets by non-public user (ID)"
-      get changesets_path(:display_name => private_user.display_name)
-      assert_response :not_found, "shouldn't be able to get changesets by non-public user (name)"
-
-      # but this should work
-      auth_header = bearer_authorization_header private_user
-      get changesets_path(:user => private_user.id), :headers => auth_header
-      assert_response :success, "can't get changesets by user ID"
-      assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
-
-      get changesets_path(:display_name => private_user.display_name), :headers => auth_header
-      assert_response :success, "can't get changesets by user name"
-      assert_changesets_in_order [private_user_changeset, private_user_closed_changeset]
-
-      # test json endpoint
-      get changesets_path(:display_name => private_user.display_name), :headers => auth_header, :params => { :format => "json" }
-      assert_response :success, "can't get changesets by user name"
-
-      js = ActiveSupport::JSON.decode(@response.body)
-      assert_not_nil js
-
-      assert_equal Settings.api_version, js["version"]
-      assert_equal Settings.generator, js["generator"]
-      assert_equal 2, js["changesets"].count
-
-      # check that the correct error is given when we provide both UID and name
-      get changesets_path(:user => private_user.id,
-                          :display_name => private_user.display_name), :headers => auth_header
-      assert_response :bad_request, "should be a bad request to have both ID and name specified"
-
-      get changesets_path(:user => private_user.id, :open => true), :headers => auth_header
-      assert_response :success, "can't get changesets by user and open"
-      assert_changesets_in_order [private_user_changeset]
-
-      get changesets_path(:time => "2007-12-31"), :headers => auth_header
-      assert_response :success, "can't get changesets by time-since"
-      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
-
-      get changesets_path(:time => "2008-01-01T12:34Z"), :headers => auth_header
-      assert_response :success, "can't get changesets by time-since with hour"
-      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset, private_user_closed_changeset, closed_changeset]
-
-      get changesets_path(:time => "2007-12-31T23:59Z,2008-01-02T00:01Z"), :headers => auth_header
-      assert_response :success, "can't get changesets by time-range"
-      assert_changesets_in_order [closed_changeset]
-
-      get changesets_path(:open => "true"), :headers => auth_header
-      assert_response :success, "can't get changesets by open-ness"
-      assert_changesets_in_order [changeset3, changeset2, changeset, private_user_changeset]
-
-      get changesets_path(:closed => "true"), :headers => auth_header
-      assert_response :success, "can't get changesets by closed-ness"
-      assert_changesets_in_order [private_user_closed_changeset, closed_changeset]
-
-      get changesets_path(:closed => "true", :user => private_user.id), :headers => auth_header
-      assert_response :success, "can't get changesets by closed-ness and user"
-      assert_changesets_in_order [private_user_closed_changeset]
-
-      get changesets_path(:closed => "true", :user => user.id), :headers => auth_header
-      assert_response :success, "can't get changesets by closed-ness and user"
-      assert_changesets_in_order [closed_changeset]
-
-      get changesets_path(:changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}"), :headers => auth_header
-      assert_response :success, "can't get changesets by id (as comma-separated string)"
-      assert_changesets_in_order [changeset, private_user_changeset, closed_changeset]
-
-      get changesets_path(:changesets => ""), :headers => auth_header
-      assert_response :bad_request, "should be a bad request since changesets is empty"
-    end
-
-    ##
-    # test the query functionality of changesets with the limit parameter
-    def test_query_limit
-      user = create(:user)
-      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
-      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 2, 1, 0, 0, 0), :closed_at => Time.utc(2008, 2, 2, 0, 0, 0))
-      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 3, 1, 0, 0, 0), :closed_at => Time.utc(2008, 3, 2, 0, 0, 0))
-      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 4, 1, 0, 0, 0), :closed_at => Time.utc(2008, 4, 2, 0, 0, 0))
-      changeset5 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 5, 1, 0, 0, 0), :closed_at => Time.utc(2008, 5, 2, 0, 0, 0))
-
-      get changesets_path
-      assert_response :success
-      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
-
-      get changesets_path(:limit => "3")
-      assert_response :success
-      assert_changesets_in_order [changeset5, changeset4, changeset3]
-
-      get changesets_path(:limit => "0")
-      assert_response :bad_request
-
-      get changesets_path(:limit => Settings.max_changeset_query_limit)
-      assert_response :success
-      assert_changesets_in_order [changeset5, changeset4, changeset3, changeset2, changeset1]
-
-      get changesets_path(:limit => Settings.max_changeset_query_limit + 1)
-      assert_response :bad_request
-    end
-
-    ##
-    # test the query functionality of sequential changesets with order and time parameters
-    def test_query_order
-      user = create(:user)
-      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
-      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 2, 1, 0, 0, 0), :closed_at => Time.utc(2008, 2, 2, 0, 0, 0))
-      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 3, 1, 0, 0, 0), :closed_at => Time.utc(2008, 3, 2, 0, 0, 0))
-      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 4, 1, 0, 0, 0), :closed_at => Time.utc(2008, 4, 2, 0, 0, 0))
-      changeset5 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 5, 1, 0, 0, 0), :closed_at => Time.utc(2008, 5, 2, 0, 0, 0))
-      changeset6 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 6, 1, 0, 0, 0), :closed_at => Time.utc(2008, 6, 2, 0, 0, 0))
-
-      get changesets_path
-      assert_response :success
-      assert_changesets_in_order [changeset6, changeset5, changeset4, changeset3, changeset2, changeset1]
-
-      get changesets_path(:order => "oldest")
-      assert_response :success
-      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4, changeset5, changeset6]
-
-      [
-        # lower time bound at the opening time of a changeset
-        ["2008-02-01T00:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3, changeset2]],
-        # lower time bound in the middle of a changeset
-        ["2008-02-01T12:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3]],
-        # lower time bound at the closing time of a changeset
-        ["2008-02-02T00:00:00Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3, changeset2], [changeset5, changeset4, changeset3]],
-        # lower time bound after the closing time of a changeset
-        ["2008-02-02T00:00:01Z", "2008-05-15T00:00:00Z", [changeset5, changeset4, changeset3], [changeset5, changeset4, changeset3]],
-        # upper time bound in the middle of a changeset
-        ["2007-09-09T12:00:00Z", "2008-04-01T12:00:00Z", [changeset4, changeset3, changeset2, changeset1], [changeset4, changeset3, changeset2, changeset1]],
-        # empty range
-        ["2009-02-02T00:00:01Z", "2018-05-15T00:00:00Z", [], []]
-      ].each do |from, to, interval_changesets, point_changesets|
-        get changesets_path(:time => "#{from},#{to}")
-        assert_response :success
-        assert_changesets_in_order interval_changesets
-
-        get changesets_path(:from => from, :to => to)
-        assert_response :success
-        assert_changesets_in_order point_changesets
-
-        get changesets_path(:from => from, :to => to, :order => "oldest")
-        assert_response :success
-        assert_changesets_in_order point_changesets.reverse
-      end
-    end
-
-    ##
-    # test the query functionality of overlapping changesets with order and time parameters
-    def test_query_order_overlapping
-      user = create(:user)
-      changeset1 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 17, 0, 0), :closed_at => Time.utc(2015, 6, 4, 17, 0, 0))
-      changeset2 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 16, 0, 0), :closed_at => Time.utc(2015, 6, 4, 18, 0, 0))
-      changeset3 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 4, 14, 0, 0), :closed_at => Time.utc(2015, 6, 4, 20, 0, 0))
-      changeset4 = create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 3, 23, 0, 0), :closed_at => Time.utc(2015, 6, 4, 23, 0, 0))
-      create(:changeset, :closed, :user => user, :created_at => Time.utc(2015, 6, 2, 23, 0, 0), :closed_at => Time.utc(2015, 6, 3, 23, 0, 0))
-
-      get changesets_path(:time => "2015-06-04T00:00:00Z")
-      assert_response :success
-      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4]
-
-      get changesets_path(:from => "2015-06-04T00:00:00Z")
-      assert_response :success
-      assert_changesets_in_order [changeset1, changeset2, changeset3]
-
-      get changesets_path(:from => "2015-06-04T00:00:00Z", :order => "oldest")
-      assert_response :success
-      assert_changesets_in_order [changeset3, changeset2, changeset1]
-
-      get changesets_path(:time => "2015-06-04T16:00:00Z,2015-06-04T17:30:00Z")
-      assert_response :success
-      assert_changesets_in_order [changeset1, changeset2, changeset3, changeset4]
-
-      get changesets_path(:from => "2015-06-04T16:00:00Z", :to => "2015-06-04T17:30:00Z")
-      assert_response :success
-      assert_changesets_in_order [changeset1, changeset2]
-
-      get changesets_path(:from => "2015-06-04T16:00:00Z", :to => "2015-06-04T17:30:00Z", :order => "oldest")
-      assert_response :success
-      assert_changesets_in_order [changeset2, changeset1]
-    end
-
-    ##
-    # check that errors are returned if garbage is inserted
-    # into query strings
-    def test_query_invalid
-      ["abracadabra!",
-       "1,2,3,F",
-       ";drop table users;"].each do |bbox|
-        get changesets_path(:bbox => bbox)
-        assert_response :bad_request, "'#{bbox}' isn't a bbox"
-      end
-
-      ["now()",
-       "00-00-00",
-       ";drop table users;",
-       ",",
-       "-,-"].each do |time|
-        get changesets_path(:time => time)
-        assert_response :bad_request, "'#{time}' isn't a valid time range"
-      end
-
-      ["me",
-       "foobar",
-       "-1",
-       "0"].each do |uid|
-        get changesets_path(:user => uid)
-        assert_response :bad_request, "'#{uid}' isn't a valid user ID"
-      end
-
-      get changesets_path(:order => "oldest", :time => "2008-01-01T00:00Z,2018-01-01T00:00Z")
-      assert_response :bad_request, "cannot use order=oldest with time"
-    end
-
     ##
     # check updating tags on a changeset
     def test_changeset_update
@@ -2489,7 +2514,7 @@ module Api
 
       # open a new changeset
       xml = "<osm><changeset/></osm>"
-      put changeset_create_path, :params => xml, :headers => auth_header
+      post api_changesets_path, :params => xml, :headers => auth_header
       assert_response :success, "can't create a new changeset"
       cs_id = @response.body.to_i
 
@@ -2672,6 +2697,8 @@ module Api
           assert_dom "> @open", "false"
           assert_dom "> @closed_at", changeset.closed_at.xmlschema
         end
+        assert_dom "> @comments_count", changeset.comments.length.to_s
+        assert_dom "> @changes_count", changeset.num_changes.to_s
         yield if block_given?
       end
     end
@@ -2686,6 +2713,8 @@ module Api
         assert_not js["changeset"]["open"]
         assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"]
       end
+      assert_equal changeset.comments.length, js["changeset"]["comments_count"]
+      assert_equal changeset.num_changes, js["changeset"]["changes_count"]
     end
 
     ##
index f1a0f766c9b23858c4bf9b8d2e646afeb42bb255..c0c67fc91fc3c7f961706ab9138c7421bc7e7b3f 100644 (file)
@@ -330,8 +330,6 @@ module Api
       assert_equal "commented", js["properties"]["comments"].last["action"]
       assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
       assert_equal third_user.display_name, js["properties"]["comments"].last["user"]
-
-      ActionMailer::Base.deliveries.clear
     end
 
     def test_comment_with_notifications_success
@@ -395,8 +393,6 @@ module Api
       assert_equal "commented", js["properties"]["comments"].last["action"]
       assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
       assert_equal third_user.display_name, js["properties"]["comments"].last["user"]
-
-      ActionMailer::Base.deliveries.clear
     end
 
     def test_comment_twice_success
diff --git a/test/controllers/api/old_nodes/redactions_controller_test.rb b/test/controllers/api/old_nodes/redactions_controller_test.rb
new file mode 100644 (file)
index 0000000..8a4ab79
--- /dev/null
@@ -0,0 +1,171 @@
+require "test_helper"
+
+module Api
+  module OldNodes
+    class RedactionsControllerTest < ActionDispatch::IntegrationTest
+      ##
+      # test all routes which lead to this controller
+      def test_routes
+        assert_routing(
+          { :path => "/api/0.6/node/1/2/redaction", :method => :post },
+          { :controller => "api/old_nodes/redactions", :action => "create", :node_id => "1", :version => "2" }
+        )
+        assert_routing(
+          { :path => "/api/0.6/node/1/2/redaction", :method => :delete },
+          { :controller => "api/old_nodes/redactions", :action => "destroy", :node_id => "1", :version => "2" }
+        )
+
+        assert_recognizes(
+          { :controller => "api/old_nodes/redactions", :action => "create", :node_id => "1", :version => "2", :allow_delete => true },
+          { :path => "/api/0.6/node/1/2/redact", :method => :post }
+        )
+      end
+
+      ##
+      # test that, even as moderator, the current version of a node
+      # can't be redacted.
+      def test_create_on_current_version
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 2)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_create_without_redaction_id
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_node_version_redaction_path(*old_node.id), :headers => auth_header
+
+        assert_response :bad_request, "should need redaction ID to redact."
+        assert_nil old_node.reload.redaction
+      end
+
+      ##
+      # test the redaction of an old version of a node, while not being
+      # authorised.
+      def test_create_by_unauthorised
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }
+
+        assert_response :unauthorized, "should need to be authenticated to redact."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_create_by_normal_user_without_write_redactions_scope
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[read_prefs write_api]
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_create_by_normal_user_with_write_redactions_scope
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[write_redactions]
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_create_by_moderator_without_write_redactions_scope
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[read_prefs write_api]
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to have write_redactions scope to redact."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_create_by_moderator_with_write_redactions_scope
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[write_redactions]
+
+        post api_node_version_redaction_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
+        assert_equal redaction, old_node.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a node, while not being
+      # authorised.
+      def test_destroy_by_unauthorised
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_node.redact!(redaction)
+
+        delete api_node_version_redaction_path(*old_node.id)
+
+        assert_response :unauthorized, "should need to be authenticated to unredact."
+        assert_equal redaction, old_node.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a node, while being
+      # authorised as a normal user.
+      def test_destroy_by_normal_user
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_node.redact!(redaction)
+        auth_header = bearer_authorization_header
+
+        delete api_node_version_redaction_path(*old_node.id), :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to unredact."
+        assert_equal redaction, old_node.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a node, while being
+      # authorised as a moderator.
+      def test_destroy_by_moderator
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        old_node.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        delete api_node_version_redaction_path(*old_node.id), :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_node.reload.redaction
+      end
+
+      def test_destroy_at_legacy_route
+        node = create(:node, :with_history, :version => 2)
+        old_node = node.old_nodes.find_by(:version => 1)
+        old_node.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post "/api/0.6/node/#{old_node.node_id}/#{old_node.version}/redact", :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_node.reload.redaction
+      end
+    end
+  end
+end
index 0c5faa9f9c0be4f834fc269830631e731d0b67ba..312bae5dd3ebc83ef680055b20d71c5cab6b5de8 100644 (file)
@@ -21,10 +21,6 @@ module Api
         { :path => "/api/0.6/node/1/2.json", :method => :get },
         { :controller => "api/old_nodes", :action => "show", :node_id => "1", :version => "2", :format => "json" }
       )
-      assert_routing(
-        { :path => "/api/0.6/node/1/2/redact", :method => :post },
-        { :controller => "api/old_nodes", :action => "redact", :node_id => "1", :version => "2" }
-      )
     end
 
     def test_index
@@ -193,129 +189,6 @@ module Api
       assert_match(/lon="0.0000800"/, response.body)
     end
 
-    ##
-    # test that, even as moderator, the current version of a node
-    # can't be redacted.
-    def test_redact_node_current_version
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 2)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
-      assert_nil old_node.reload.redaction
-    end
-
-    ##
-    # test the redaction of an old version of a node, while not being
-    # authorised.
-    def test_redact_node_unauthorised
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }
-
-      assert_response :unauthorized, "should need to be authenticated to redact."
-      assert_nil old_node.reload.redaction
-    end
-
-    def test_redact_node_by_regular_without_write_redactions_scope
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[read_prefs write_api])
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_node.reload.redaction
-    end
-
-    def test_redact_node_by_regular_with_write_redactions_scope
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[write_redactions])
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_node.reload.redaction
-    end
-
-    def test_redact_node_by_moderator_without_write_redactions_scope
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[read_prefs write_api])
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to have write_redactions scope to redact."
-      assert_nil old_node.reload.redaction
-    end
-
-    def test_redact_node_by_moderator_with_write_redactions_scope
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[write_redactions])
-
-      post node_version_redact_path(*old_node.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
-      assert_equal redaction, old_node.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a node, while not being
-    # authorised.
-    def test_unredact_node_unauthorised
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_node.redact!(redaction)
-
-      post node_version_redact_path(*old_node.id)
-
-      assert_response :unauthorized, "should need to be authenticated to unredact."
-      assert_equal redaction, old_node.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a node, while being
-    # authorised as a normal user.
-    def test_unredact_node_normal_user
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_node.redact!(redaction)
-      auth_header = bearer_authorization_header
-
-      post node_version_redact_path(*old_node.id), :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to unredact."
-      assert_equal redaction, old_node.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a node, while being
-    # authorised as a moderator.
-    def test_unredact_node_moderator
-      node = create(:node, :with_history, :version => 2)
-      old_node = node.old_nodes.find_by(:version => 1)
-      old_node.redact!(create(:redaction))
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post node_version_redact_path(*old_node.id), :headers => auth_header
-
-      assert_response :success, "should be OK to unredact old version as moderator."
-      assert_nil old_node.reload.redaction
-    end
-
     private
 
     def check_not_found_id_version(id, version)
diff --git a/test/controllers/api/old_redactions/redactions_controller_test.rb b/test/controllers/api/old_redactions/redactions_controller_test.rb
new file mode 100644 (file)
index 0000000..05fc846
--- /dev/null
@@ -0,0 +1,171 @@
+require "test_helper"
+
+module Api
+  module OldWays
+    class RedactionsControllerTest < ActionDispatch::IntegrationTest
+      ##
+      # test all routes which lead to this controller
+      def test_routes
+        assert_routing(
+          { :path => "/api/0.6/relation/1/2/redaction", :method => :post },
+          { :controller => "api/old_relations/redactions", :action => "create", :relation_id => "1", :version => "2" }
+        )
+        assert_routing(
+          { :path => "/api/0.6/relation/1/2/redaction", :method => :delete },
+          { :controller => "api/old_relations/redactions", :action => "destroy", :relation_id => "1", :version => "2" }
+        )
+
+        assert_recognizes(
+          { :controller => "api/old_relations/redactions", :action => "create", :relation_id => "1", :version => "2", :allow_delete => true },
+          { :path => "/api/0.6/relation/1/2/redact", :method => :post }
+        )
+      end
+
+      ##
+      # test that, even as moderator, the current version of a relation
+      # can't be redacted.
+      def test_create_on_current_version
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 2)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_create_without_redaction_id
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_relation_version_redaction_path(*old_relation.id), :headers => auth_header
+
+        assert_response :bad_request, "should need redaction ID to redact."
+        assert_nil old_relation.reload.redaction
+      end
+
+      ##
+      # test the redaction of an old version of a relation, while not being
+      # authorised.
+      def test_create_by_unauthorised
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }
+
+        assert_response :unauthorized, "should need to be authenticated to redact."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_create_by_normal_user_without_write_redactions_scope
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[read_prefs write_api]
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_create_by_normal_user_with_write_redactions_scope
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[write_redactions]
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_create_by_moderator_without_write_redactions_scope
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[read_prefs write_api]
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to have write_redactions scope to redact."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_create_by_moderator_with_write_redactions_scope
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[write_redactions]
+
+        post api_relation_version_redaction_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
+        assert_equal redaction, old_relation.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a relation, while not being
+      # authorised.
+      def test_destroy_by_unauthorised
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_relation.redact!(redaction)
+
+        delete api_relation_version_redaction_path(*old_relation.id)
+
+        assert_response :unauthorized, "should need to be authenticated to unredact."
+        assert_equal redaction, old_relation.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a relation, while being
+      # authorised as a normal user.
+      def test_destroy_by_normal_user
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_relation.redact!(redaction)
+        auth_header = bearer_authorization_header
+
+        delete api_relation_version_redaction_path(*old_relation.id), :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to unredact."
+        assert_equal redaction, old_relation.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a relation, while being
+      # authorised as a moderator.
+      def test_destroy_by_moderator
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        old_relation.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        delete api_relation_version_redaction_path(*old_relation.id), :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_relation.reload.redaction
+      end
+
+      def test_destroy_at_legacy_route
+        relation = create(:relation, :with_history, :version => 2)
+        old_relation = relation.old_relations.find_by(:version => 1)
+        old_relation.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post "/api/0.6/relation/#{old_relation.relation_id}/#{old_relation.version}/redact", :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_relation.reload.redaction
+      end
+    end
+  end
+end
index 603499503b20eafef0411adbde301ccd8543f6ea..50730c3786fa162d1d4f3ef0ddc47d4407e616e6 100644 (file)
@@ -21,10 +21,6 @@ module Api
         { :path => "/api/0.6/relation/1/2.json", :method => :get },
         { :controller => "api/old_relations", :action => "show", :relation_id => "1", :version => "2", :format => "json" }
       )
-      assert_routing(
-        { :path => "/api/0.6/relation/1/2/redact", :method => :post },
-        { :controller => "api/old_relations", :action => "redact", :relation_id => "1", :version => "2" }
-      )
     end
 
     ##
@@ -183,128 +179,5 @@ module Api
 
       assert_response :success, "Redacted relation should not be gone for moderator, when flag passed."
     end
-
-    ##
-    # test that, even as moderator, the current version of a relation
-    # can't be redacted.
-    def test_redact_relation_current_version
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 2)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
-      assert_nil old_relation.reload.redaction
-    end
-
-    ##
-    # test the redaction of an old version of a relation, while not being
-    # authorised.
-    def test_redact_relation_unauthorised
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }
-
-      assert_response :unauthorized, "should need to be authenticated to redact."
-      assert_nil old_relation.reload.redaction
-    end
-
-    def test_redact_relation_by_regular_without_write_redactions_scope
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[read_prefs write_api])
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_relation.reload.redaction
-    end
-
-    def test_redact_relation_by_regular_with_write_redactions_scope
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[write_redactions])
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_relation.reload.redaction
-    end
-
-    def test_redact_relation_by_moderator_without_write_redactions_scope
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[read_prefs write_api])
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to have write_redactions scope to redact."
-      assert_nil old_relation.reload.redaction
-    end
-
-    def test_redact_relation_by_moderator_with_write_redactions_scope
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[write_redactions])
-
-      post relation_version_redact_path(*old_relation.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
-      assert_equal redaction, old_relation.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a relation, while not being
-    # authorised.
-    def test_unredact_relation_unauthorised
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_relation.redact!(redaction)
-
-      post relation_version_redact_path(*old_relation.id)
-
-      assert_response :unauthorized, "should need to be authenticated to unredact."
-      assert_equal redaction, old_relation.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a relation, while being
-    # authorised as a normal user.
-    def test_unredact_relation_normal_user
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_relation.redact!(redaction)
-      auth_header = bearer_authorization_header
-
-      post relation_version_redact_path(*old_relation.id), :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to unredact."
-      assert_equal redaction, old_relation.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a relation, while being
-    # authorised as a moderator.
-    def test_unredact_relation_moderator
-      relation = create(:relation, :with_history, :version => 2)
-      old_relation = relation.old_relations.find_by(:version => 1)
-      old_relation.redact!(create(:redaction))
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post relation_version_redact_path(*old_relation.id), :headers => auth_header
-
-      assert_response :success, "should be OK to unredact old version as moderator."
-      assert_nil old_relation.reload.redaction
-    end
   end
 end
diff --git a/test/controllers/api/old_ways/redactions_controller_test.rb b/test/controllers/api/old_ways/redactions_controller_test.rb
new file mode 100644 (file)
index 0000000..f791d09
--- /dev/null
@@ -0,0 +1,171 @@
+require "test_helper"
+
+module Api
+  module OldWays
+    class RedactionsControllerTest < ActionDispatch::IntegrationTest
+      ##
+      # test all routes which lead to this controller
+      def test_routes
+        assert_routing(
+          { :path => "/api/0.6/way/1/2/redaction", :method => :post },
+          { :controller => "api/old_ways/redactions", :action => "create", :way_id => "1", :version => "2" }
+        )
+        assert_routing(
+          { :path => "/api/0.6/way/1/2/redaction", :method => :delete },
+          { :controller => "api/old_ways/redactions", :action => "destroy", :way_id => "1", :version => "2" }
+        )
+
+        assert_recognizes(
+          { :controller => "api/old_ways/redactions", :action => "create", :way_id => "1", :version => "2", :allow_delete => true },
+          { :path => "/api/0.6/way/1/2/redact", :method => :post }
+        )
+      end
+
+      ##
+      # test that, even as moderator, the current version of a way
+      # can't be redacted.
+      def test_create_on_current_version
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 2)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_create_without_redaction_id
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post api_way_version_redaction_path(*old_way.id), :headers => auth_header
+
+        assert_response :bad_request, "should need redaction ID to redact."
+        assert_nil old_way.reload.redaction
+      end
+
+      ##
+      # test the redaction of an old version of a way, while not being
+      # authorised.
+      def test_create_by_unauthorised
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }
+
+        assert_response :unauthorized, "should need to be authenticated to redact."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_create_by_normal_user_without_write_redactions_scope
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[read_prefs write_api]
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_create_by_normal_user_with_write_redactions_scope
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:user), :scopes => %w[write_redactions]
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to redact."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_create_by_moderator_without_write_redactions_scope
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[read_prefs write_api]
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :forbidden, "should need to have write_redactions scope to redact."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_create_by_moderator_with_write_redactions_scope
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        auth_header = bearer_authorization_header create(:moderator_user), :scopes => %w[write_redactions]
+
+        post api_way_version_redaction_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
+
+        assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
+        assert_equal redaction, old_way.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a way, while not being
+      # authorised.
+      def test_destroy_by_unauthorised
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_way.redact!(redaction)
+
+        delete api_way_version_redaction_path(*old_way.id)
+
+        assert_response :unauthorized, "should need to be authenticated to unredact."
+        assert_equal redaction, old_way.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a way, while being
+      # authorised as a normal user.
+      def test_destroy_by_normal_user
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        redaction = create(:redaction)
+        old_way.redact!(redaction)
+        auth_header = bearer_authorization_header
+
+        delete api_way_version_redaction_path(*old_way.id), :headers => auth_header
+
+        assert_response :forbidden, "should need to be moderator to unredact."
+        assert_equal redaction, old_way.reload.redaction
+      end
+
+      ##
+      # test the unredaction of an old version of a way, while being
+      # authorised as a moderator.
+      def test_destroy_by_moderator
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        old_way.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        delete api_way_version_redaction_path(*old_way.id), :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_way.reload.redaction
+      end
+
+      def test_destroy_at_legacy_route
+        way = create(:way, :with_history, :version => 2)
+        old_way = way.old_ways.find_by(:version => 1)
+        old_way.redact!(create(:redaction))
+        auth_header = bearer_authorization_header create(:moderator_user)
+
+        post "/api/0.6/way/#{old_way.way_id}/#{old_way.version}/redact", :headers => auth_header
+
+        assert_response :success, "should be OK to unredact old version as moderator."
+        assert_nil old_way.reload.redaction
+      end
+    end
+  end
+end
index 6946d2ab1cda8b8e24b52b70394b9875604b9ad8..31b66ae8bf63498855120042ef05c4a22c7d9d09 100644 (file)
@@ -21,10 +21,6 @@ module Api
         { :path => "/api/0.6/way/1/2.json", :method => :get },
         { :controller => "api/old_ways", :action => "show", :way_id => "1", :version => "2", :format => "json" }
       )
-      assert_routing(
-        { :path => "/api/0.6/way/1/2/redact", :method => :post },
-        { :controller => "api/old_ways", :action => "redact", :way_id => "1", :version => "2" }
-      )
     end
 
     ##
@@ -195,129 +191,6 @@ module Api
       check_history_equals_versions(way_with_versions.id)
     end
 
-    ##
-    # test that, even as moderator, the current version of a way
-    # can't be redacted.
-    def test_redact_way_current_version
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 2)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
-      assert_nil old_way.reload.redaction
-    end
-
-    ##
-    # test the redaction of an old version of a way, while not being
-    # authorised.
-    def test_redact_way_unauthorised
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }
-
-      assert_response :unauthorized, "should need to be authenticated to redact."
-      assert_nil old_way.reload.redaction
-    end
-
-    def test_redact_way_by_regular_without_write_redactions_scope
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[read_prefs write_api])
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_way.reload.redaction
-    end
-
-    def test_redact_way_by_regular_with_write_redactions_scope
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:user), :scopes => %w[write_redactions])
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to redact."
-      assert_nil old_way.reload.redaction
-    end
-
-    def test_redact_way_by_moderator_without_write_redactions_scope
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[read_prefs write_api])
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :forbidden, "should need to have write_redactions scope to redact."
-      assert_nil old_way.reload.redaction
-    end
-
-    def test_redact_way_by_moderator_with_write_redactions_scope
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      auth_header = bearer_authorization_header(create(:moderator_user), :scopes => %w[write_redactions])
-
-      post way_version_redact_path(*old_way.id), :params => { :redaction => redaction.id }, :headers => auth_header
-
-      assert_response :success, "should be OK to redact old version as moderator with write_redactions scope."
-      assert_equal redaction, old_way.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a way, while not being
-    # authorised.
-    def test_unredact_way_unauthorised
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_way.redact!(redaction)
-
-      post way_version_redact_path(*old_way.id)
-
-      assert_response :unauthorized, "should need to be authenticated to unredact."
-      assert_equal redaction, old_way.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a way, while being
-    # authorised as a normal user.
-    def test_unredact_way_normal_user
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      redaction = create(:redaction)
-      old_way.redact!(redaction)
-      auth_header = bearer_authorization_header
-
-      post way_version_redact_path(*old_way.id), :headers => auth_header
-
-      assert_response :forbidden, "should need to be moderator to unredact."
-      assert_equal redaction, old_way.reload.redaction
-    end
-
-    ##
-    # test the unredaction of an old version of a way, while being
-    # authorised as a moderator.
-    def test_unredact_way_moderator
-      way = create(:way, :with_history, :version => 2)
-      old_way = way.old_ways.find_by(:version => 1)
-      old_way.redact!(create(:redaction))
-      auth_header = bearer_authorization_header create(:moderator_user)
-
-      post way_version_redact_path(*old_way.id), :headers => auth_header
-
-      assert_response :success, "should be OK to unredact old version as moderator."
-      assert_nil old_way.reload.redaction
-    end
-
     private
 
     ##
index 9e2972495756de8b987d642b5f90ab4d4ee7667a..f585c5c2cf6dda76c32d2a73e34890f941715d2e 100644 (file)
@@ -1043,7 +1043,7 @@ module Api
       # that the bounding box will be newly-generated.
       with_controller(Api::ChangesetsController.new) do
         xml = "<osm><changeset/></osm>"
-        put changeset_create_path, :params => xml, :headers => auth_header
+        post api_changesets_path, :params => xml, :headers => auth_header
         assert_response :forbidden, "shouldn't be able to create changeset for modify test, as should get forbidden"
       end
 
@@ -1054,7 +1054,7 @@ module Api
       # that the bounding box will be newly-generated.
       changeset_id = with_controller(Api::ChangesetsController.new) do
         xml = "<osm><changeset/></osm>"
-        put changeset_create_path, :params => xml, :headers => auth_header
+        post api_changesets_path, :params => xml, :headers => auth_header
         assert_response :success, "couldn't create changeset for modify test"
         @response.body.to_i
       end
index 774efdb9c96ce7fac72f8fcfa35cedd8571a1641..f7c99a0c6d4cca412d2bd0a3e885b2bef7780e29 100644 (file)
@@ -204,8 +204,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     email = ActionMailer::Base.deliveries.last
 
     assert_equal user.email, email.to.first
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_confirm_resend_deleted
@@ -250,7 +248,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     confirm_string = user.generate_token_for(:new_email)
 
     post user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert_match(/Confirmed your change of email address/, flash[:notice])
   end
 
@@ -259,13 +257,13 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     confirm_string = user.generate_token_for(:new_email)
 
     post user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert_match(/already been confirmed/, flash[:error])
   end
 
   def test_confirm_email_bad_token
     post user_confirm_email_path, :params => { :confirm_string => "XXXXX" }
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert_match(/confirmation code has expired or does not exist/, flash[:error])
   end
 
@@ -281,7 +279,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # precondition gravatar should be turned off
     assert_not user.image_use_gravatar
     post user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert_match(/Confirmed your change of email address/, flash[:notice])
     # gravatar use should now be enabled
     assert User.find(user.id).image_use_gravatar
@@ -295,7 +293,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     # precondition gravatar should be turned on
     assert user.image_use_gravatar
     post user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert_match(/Confirmed your change of email address/, flash[:notice])
     # gravatar use should now be disabled
     assert_not User.find(user.id).image_use_gravatar
index 0adf58a9e4b4cb368c3758a074eba24c83d5541e..c55636585ed97044eafbee1d7e53b64770bf7965 100644 (file)
@@ -9,4 +9,10 @@ class DashboardsControllerTest < ActionDispatch::IntegrationTest
       { :controller => "dashboards", :action => "show" }
     )
   end
+
+  def test_show_unauthorized
+    get dashboard_path
+
+    assert_redirected_to login_path(:referer => dashboard_path)
+  end
 end
index a516bde8d37a705f843ffc2f49064daa9d0ccc82..685800bb85f16ac8bb1d3e756f8284503c9c6875 100644 (file)
@@ -72,7 +72,6 @@ class DiaryCommentsControllerTest < ActionDispatch::IntegrationTest
     assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
     assert_match(/New comment/, email.text_part.decoded)
     assert_match(/New comment/, email.html_part.decoded)
-    ActionMailer::Base.deliveries.clear
     assert_equal entry.id, comment.diary_entry_id
     assert_equal other_user.id, comment.user_id
     assert_equal "New comment", comment.body
@@ -114,7 +113,6 @@ class DiaryCommentsControllerTest < ActionDispatch::IntegrationTest
     assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
     assert_match %r{http://example.com/spam}, email.text_part.decoded
     assert_match %r{http://example.com/spam}, email.html_part.decoded
-    ActionMailer::Base.deliveries.clear
     assert_equal entry.id, comment.diary_entry_id
     assert_equal other_user.id, comment.user_id
     assert_equal spammy_text, comment.body
index 93bb3bc3e28f0a7741761f2929b23110b070109a..33712031f2be7b49d67a217df789b9ab277cc2a2 100644 (file)
@@ -56,7 +56,6 @@ class FollowsControllerTest < ActionDispatch::IntegrationTest
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal follow.email, email.to.first
-    ActionMailer::Base.deliveries.clear
 
     # A second POST should report that the follow already exists
     assert_no_difference "ActionMailer::Base.deliveries.size" do
@@ -97,7 +96,6 @@ class FollowsControllerTest < ActionDispatch::IntegrationTest
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal follow.email, email.to.first
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_follow_unknown_user
index bdf88600cb9f75bae864dc1ea9fe4b2bd5938b50..5168128ffbd0e86406429afad4aaf116fce366f5 100644 (file)
@@ -167,7 +167,7 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
     assert_match(/Test message body/, e.text_part.decoded)
     assert_match(/Test message body/, e.html_part.decoded)
     assert_match %r{#{Settings.server_url}/messages/[0-9]+}, e.text_part.decoded
-    ActionMailer::Base.deliveries.clear
+
     m = Message.last
     assert_equal user.id, m.from_user_id
     assert_equal recipient_user.id, m.to_user_id
index 9ceadfefb9986cc1c5a2a68f9bacc9e2fe8532c8..07f108cd70afb8d19a94ccfae2f7571079ec6ecd 100644 (file)
@@ -118,7 +118,6 @@ class PasswordsControllerTest < ActionDispatch::IntegrationTest
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal third_user.email, email.to.first
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_reset_password
index 25b80e8f4bb418e9231088921b5fa2d08ae66836..a7f65de629a23206657af397ffdf015db2dfdc3f 100644 (file)
@@ -111,4 +111,42 @@ class ReportsControllerTest < ActionDispatch::IntegrationTest
 
     assert_equal 2, issue.reports.count
   end
+
+  def test_spam_reports_can_suspend
+    target_user = create(:user)
+
+    session_for(create(:user))
+
+    post reports_path(:report => {
+                        :details => "Spammer",
+                        :category => "spam",
+                        :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+                      })
+    assert_equal "active", target_user.reload.status
+
+    session_for(create(:user))
+
+    post reports_path(:report => {
+                        :details => "Spammer",
+                        :category => "spam",
+                        :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+                      })
+    assert_equal "active", target_user.reload.status
+
+    post reports_path(:report => {
+                        :details => "Spammer",
+                        :category => "spam",
+                        :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+                      })
+    assert_equal "active", target_user.reload.status
+
+    session_for(create(:user))
+
+    post reports_path(:report => {
+                        :details => "Spammer",
+                        :category => "spam",
+                        :issue => { :reportable_id => target_user.id, :reportable_type => "User" }
+                      })
+    assert_equal "suspended", target_user.reload.status
+  end
 end
index 8ad9c6fab6f416908f68b3fdffa48e4d2182da11..6b37ed3d99ff40882bfe02a1a3038eb122e1535f 100644 (file)
@@ -87,8 +87,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
 
     # Check the page
     assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => user.display_name
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_create_duplicate_email
@@ -189,8 +187,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
         perform_enqueued_jobs
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_go_public
@@ -199,7 +195,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
 
     post user_go_public_path
 
-    assert_redirected_to edit_account_path
+    assert_redirected_to account_path
     assert User.find(user.id).data_public
   end
 
@@ -253,7 +249,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
       assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/traces']", 1
       assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/diary']", 1
       assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/diary_comments']", 1
-      assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/account']", 0
+      assert_select "a[href='/account']", 0
       assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/blocks']", 0
       assert_select "a[href='/user/#{ERB::Util.u(moderator_user.display_name)}/blocks_by']", 1
       assert_select "a[href='/user_blocks/new/#{ERB::Util.u(moderator_user.display_name)}']", 0
@@ -270,7 +266,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
       assert_select "a[href='/traces/mine']", 1
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/diary']", 1
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/diary_comments']", 1
-      assert_select "a[href='/account/edit']", 1
+      assert_select "a[href='/account']", 1
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks']", 0
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks_by']", 0
       assert_select "a[href='/user_blocks/new/#{ERB::Util.u(user.display_name)}']", 0
@@ -288,7 +284,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/traces']", 1
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/diary']", 1
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/diary_comments']", 1
-      assert_select "a[href='/account/edit']", 0
+      assert_select "a[href='/account']", 0
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks']", 0
       assert_select "a[href='/user/#{ERB::Util.u(user.display_name)}/blocks_by']", 0
       assert_select "a[href='/user_blocks/new/#{ERB::Util.u(user.display_name)}']", 1
index 5d75c508dd80f3bed6deecaf2f6b8cddd016ac90..4aae1046b586b97a4d25e25edc7031aa1a689c8c 100644 (file)
@@ -153,7 +153,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     found_confirmation_url = register_email.parts.first.parts.first.to_s =~ %r{\shttp://test.host(/\S+)\s}
     assert found_confirmation_url
     confirmation_url = Regexp.last_match(1)
-    ActionMailer::Base.deliveries.clear
 
     post confirmation_url
 
@@ -211,8 +210,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -255,8 +252,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
 
     # Check the page
     assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => display_name
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_openid_duplicate_email
@@ -278,8 +273,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_openid_failure
@@ -296,8 +289,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_openid_redirect
@@ -344,8 +335,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -395,8 +384,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     # Check the page
     assert_response :success
     assert_template "site/welcome"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_google_duplicate_email
@@ -420,8 +407,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_google_failure
@@ -439,8 +424,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_google_redirect
@@ -492,8 +475,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -542,8 +523,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     # Check the page
     assert_response :success
     assert_template "site/welcome"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_facebook_duplicate_email
@@ -566,8 +545,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_facebook_failure
@@ -585,8 +562,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_facebook_redirect
@@ -639,8 +614,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -688,8 +661,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     # Check the page
     assert_response :success
     assert_template "site/welcome"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_microsoft_duplicate_email
@@ -712,8 +683,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_microsoft_failure
@@ -731,8 +700,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_microsoft_redirect
@@ -784,8 +751,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -839,8 +804,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     # Check the page
     assert_response :success
     assert_template "site/welcome"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_github_duplicate_email
@@ -864,8 +827,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_github_failure
@@ -882,8 +843,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_github_redirect
@@ -934,8 +893,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
@@ -1010,8 +967,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "users/new"
     assert_select "form > div > input.is-invalid#user_email"
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_wikipedia_failure
@@ -1029,8 +984,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         end
       end
     end
-
-    ActionMailer::Base.deliveries.clear
   end
 
   def test_user_create_wikipedia_redirect
@@ -1083,8 +1036,6 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "confirmations/confirm"
 
-    ActionMailer::Base.deliveries.clear
-
     # Go to the confirmation page
     get "/user/#{display_name}/confirm", :params => { :referer => "/welcome", :confirm_string => confirm_string }
     assert_response :success
index ca5ef7fe8bc37578973782fed115478e2037d73c..729f9cccc620495276cb8c704664931b3fe8c4e4 100644 (file)
@@ -7,7 +7,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
   end
 
   test "the status is deleted and the personal data removed" do
-    visit edit_account_path
+    visit account_path
 
     click_on "Delete Account..."
     accept_confirm do
@@ -21,7 +21,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
   end
 
   test "the user is signed out after deletion" do
-    visit edit_account_path
+    visit account_path
 
     click_on "Delete Account..."
     accept_confirm do
@@ -32,7 +32,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
   end
 
   test "the user is shown a confirmation flash message" do
-    visit edit_account_path
+    visit account_path
 
     click_on "Delete Account..."
     accept_confirm do
@@ -45,7 +45,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
   test "can delete with any delay setting value if the user has no changesets" do
     with_user_account_deletion_delay(10000) do
       travel 1.hour do
-        visit edit_account_path
+        visit account_path
 
         click_on "Delete Account..."
 
@@ -59,7 +59,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
       create(:changeset, :user => @user)
 
       travel 1.hour do
-        visit edit_account_path
+        visit account_path
 
         click_on "Delete Account..."
 
@@ -73,7 +73,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
       create(:changeset, :user => @user, :created_at => Time.now.utc, :closed_at => Time.now.utc + 1.hour)
 
       travel 12.hours do
-        visit edit_account_path
+        visit account_path
 
         click_on "Delete Account..."
 
@@ -87,7 +87,7 @@ class AccountDeletionTest < ApplicationSystemTestCase
       create(:changeset, :user => @user, :created_at => Time.now.utc, :closed_at => Time.now.utc + 1.hour)
 
       travel 10.hours do
-        visit edit_account_path
+        visit account_path
 
         click_on "Delete Account..."
 
diff --git a/test/system/browse_comment_links_test.rb b/test/system/browse_comment_links_test.rb
new file mode 100644 (file)
index 0000000..6c81a92
--- /dev/null
@@ -0,0 +1,29 @@
+require "application_system_test_case"
+
+class BrowseCommentLinksTest < ApplicationSystemTestCase
+  test "visiting changeset comment link should pan to changeset" do
+    changeset = create(:changeset, :min_lat => 60 * GeoRecord::SCALE, :min_lon => 30 * GeoRecord::SCALE,
+                                   :max_lat => 60 * GeoRecord::SCALE, :max_lon => 30 * GeoRecord::SCALE)
+    comment = create(:changeset_comment, :changeset => changeset, :body => "Linked changeset comment")
+
+    visit changeset_path(changeset, :anchor => "c#{comment.id}")
+
+    within_sidebar do
+      assert_text "Linked changeset comment"
+    end
+    assert_match %r{map=\d+/60\.\d+/30\.\d+}, current_url
+  end
+
+  test "visiting note comment link should pan to note" do
+    note = create(:note, :latitude => 59 * GeoRecord::SCALE, :longitude => 29 * GeoRecord::SCALE)
+    create(:note_comment, :note => note, :body => "Note description")
+    comment = create(:note_comment, :note => note, :body => "Linked note comment", :event => "commented")
+
+    visit note_path(note, :anchor => "c#{comment.id}")
+
+    within_sidebar do
+      assert_text "Linked note comment"
+    end
+    assert_match %r{map=\d+/59\.\d+/29\.\d+}, current_url
+  end
+end
index ec2c8f093e4dd02d52ae7b0af1cd7abc4aeb78d4..ccf1cf2ad93027f0234946b8695459d8726946a0 100644 (file)
@@ -12,7 +12,7 @@ class UserEmailChangeTest < ApplicationSystemTestCase
     sign_in_as(user)
 
     assert_emails 1 do
-      visit edit_account_path
+      visit account_path
       fill_in "New Email Address", :with => "new_tester@example.com"
       click_on "Save Changes"
       assert_equal "new_tester@example.com", user.reload.new_email
@@ -25,11 +25,9 @@ class UserEmailChangeTest < ApplicationSystemTestCase
 
     if email.parts[0].parts[0].decoded =~ %r{(/user/confirm-email\?confirm_string=[A-Za-z0-9\-_%]+)\s}
       visit Regexp.last_match(1)
-      assert page.has_css?("body.accounts-edit")
+      assert page.has_css?("body.accounts-show")
     end
 
     assert_equal "new_tester@example.com", user.reload.email
-
-    ActionMailer::Base.deliveries.clear
   end
 end
index e70005e647abad142dddac009d1ec0bb477a1a18..d46d5a04cc7543b9a4000b6e3d1983df28c41aef 100644 (file)
@@ -13,7 +13,7 @@ class UserMutingTest < ApplicationSystemTestCase
     click_on "Mute this User"
     assert_content "You muted #{other_user.display_name}"
 
-    visit edit_account_path
+    visit account_path
     assert_content "Muted Users"
     click_on "Muted Users"
     assert_content "You have muted 1 User"
@@ -21,7 +21,7 @@ class UserMutingTest < ApplicationSystemTestCase
 
     assert_content "You unmuted #{other_user.display_name}"
     refute_content "Muted Users"
-    assert_current_path edit_account_path
+    assert_current_path account_path
   end
 
   test "messages sent by muted users are set `muted` and do not cause notification emails" do
index d6368b68b28edfb4a8aa825428341d93b660dcea..55c4b82d7c7c445d65ac885fcfac77f460d3b7cd 100644 (file)
@@ -4,12 +4,12 @@ class UserSuspensionTest < ApplicationSystemTestCase
   test "User shown a message when suspended mid-session" do
     user = create(:user)
     sign_in_as(user)
-    visit edit_account_path
+    visit account_path
     assert_content "My Account"
 
     user.suspend!
 
-    visit edit_account_path
+    visit account_path
     assert_content "This decision will be reviewed by an administrator shortly"
   end
 end
index 9e73a5eb4602b2e38b5ce82b52a08244648823d6..71a706e4590dd048c5a612aa0eeb4454abe80f96 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
   resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b"
   integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
 
-"@stylistic/eslint-plugin-js@^3.0.0":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin-js/-/eslint-plugin-js-3.1.0.tgz#b36292b09bd810ea1b34e0720512f137335ef745"
-  integrity sha512-lQktsOiCr8S6StG29C5fzXYxLOD6ID1rp4j6TRS+E/qY1xd59Fm7dy5qm9UauJIEoSTlYx6yGsCHYh5UkgXPyg==
+"@stylistic/eslint-plugin-js@^4.0.0":
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin-js/-/eslint-plugin-js-4.0.1.tgz#c55e59ad2f00914f9eb103ba9e7be00aff7715dd"
+  integrity sha512-2EGKM6WHnZSidWKCu6ePJCqdpgWiEU1Bt26ktWEfTpCmRP+2vRQ6ViK8X6DLwu4+F0zPLy/Txe2HhI3qJFUvqA==
   dependencies:
     eslint-visitor-keys "^4.2.0"
     espree "^10.3.0"
   resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
   integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
 
+"@types/geojson@*":
+  version "7946.0.16"
+  resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a"
+  integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==
+
+"@types/jquery@^3.5.0":
+  version "3.5.32"
+  resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.32.tgz#3eb0da20611b92c7c49ebed6163b52a4fdc57def"
+  integrity sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==
+  dependencies:
+    "@types/sizzle" "*"
+
 "@types/json-schema@^7.0.15":
   version "7.0.15"
   resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
   integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
 
+"@types/leaflet@^1.9.0":
+  version "1.9.16"
+  resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.9.16.tgz#3e3abc103e106523cde01625057e2294f332ec3b"
+  integrity sha512-wzZoyySUxkgMZ0ihJ7IaUIblG8Rdc8AbbZKLneyn+QjYsj5q1QU7TEKYqwTr10BGSzY5LI7tJk9Ifo+mEjdFRw==
+  dependencies:
+    "@types/geojson" "*"
+
+"@types/sizzle@*":
+  version "2.3.9"
+  resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.9.tgz#d4597dbd4618264c414d7429363e3f50acb66ea2"
+  integrity sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==
+
 acorn-jsx@^5.3.2:
   version "5.3.2"
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"