]> git.openstreetmap.org Git - rails.git/commitdiff
Merge branch 'pull/5297' live
authorAnton Khorev <tony29@yandex.ru>
Mon, 18 Nov 2024 15:15:25 +0000 (18:15 +0300)
committerAnton Khorev <tony29@yandex.ru>
Mon, 18 Nov 2024 15:15:25 +0000 (18:15 +0300)
90 files changed:
.github/workflows/danger.yml
CONFIGURE.md
CONTRIBUTING.md
DOCKER.md
Dangerfile
FAQ.md
Gemfile
Gemfile.lock
Vagrantfile
app/abilities/ability.rb
app/assets/javascripts/application.js
app/assets/javascripts/index.js
app/assets/javascripts/index/new_note.js
app/assets/javascripts/index/query.js
app/assets/javascripts/index/search.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/richtext.js
app/assets/javascripts/router.js
app/assets/stylesheets/common.scss
app/assets/stylesheets/parameters.scss
app/controllers/api/notes_controller.rb
app/controllers/concerns/user_methods.rb
app/controllers/sessions_controller.rb
app/controllers/user_blocks_controller.rb
app/controllers/user_roles_controller.rb
app/helpers/user_helper.rb
app/helpers/user_roles_helper.rb
app/models/note.rb
app/models/note_subscription.rb [new file with mode: 0644]
app/models/user.rb
app/views/application/_auth_providers.html.erb
app/views/layouts/_banner.html.erb
app/views/layouts/_header.html.erb
app/views/sessions/new.html.erb
app/views/shared/_richtext_field.html.erb
app/views/traces/_trace.html.erb
config/locales/ar.yml
config/locales/arz.yml
config/locales/az.yml
config/locales/be.yml
config/locales/bn.yml
config/locales/br.yml
config/locales/cs.yml
config/locales/cy.yml
config/locales/da.yml
config/locales/de.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/et.yml
config/locales/fr.yml
config/locales/he.yml
config/locales/hu.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ko.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/my.yml
config/locales/nb.yml
config/locales/ne.yml
config/locales/pa.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sc.yml
config/locales/sk.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-CN.yml
config/routes.rb
config/settings.yml
config/settings/test.yml
db/migrate/20241022141247_create_note_subscriptions.rb [new file with mode: 0644]
db/migrate/20241023004427_backfill_note_subscriptions.rb [new file with mode: 0644]
db/structure.sql
lib/short_link.rb
script/vagrant/setup/provision.sh
test/abilities/abilities_test.rb
test/controllers/api/changeset_comments_controller_test.rb
test/controllers/api/notes_controller_test.rb
test/controllers/api/relations_controller_test.rb
test/controllers/sessions_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/controllers/user_roles_controller_test.rb
test/factories/note_subscriptions.rb [new file with mode: 0644]
test/helpers/user_helper_test.rb
test/helpers/user_roles_helper_test.rb
vendor/assets/jquery/jquery.timers.js [deleted file]
yarn.lock

index 8999fca5b5af7b8f9603e1cebf6aae4cbe8ec210..67a676d87c11eea4b1879c2a715443237ea250ee 100644 (file)
@@ -22,6 +22,12 @@ jobs:
           ruby-version: 3.1
           rubygems: 3.4.10
           bundler-cache: true
+      - name: Create base branch
+        run: |
+          git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.ref }}:danger_base
+      - name: Create head branch
+        run: |
+          git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.ref }}:danger_head
       - name: Danger
         env:
           DANGER_GITHUB_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
index dcc8ae2ac1d20a5001ae568a2dbf17b18735ab48..29d1daad8bc513f82b46a43210cf90047c1c2a6f 100644 (file)
@@ -76,7 +76,7 @@ For iD, do the following:
 
 An example excerpt from settings.local.yml:
 
-```
+```yaml
 # Default editor
 default_editor: "id"
 # OAuth 2 Client ID for iD
@@ -99,7 +99,7 @@ To allow [Notes](https://wiki.openstreetmap.org/wiki/Notes) and changeset discus
 
 An example excerpt from settings.local.yml:
 
-```
+```yaml
 # OAuth 2 Client ID for the web site
 oauth_application: "SGm8QJ6tmoPXEaUPIZzLUmm1iujltYZVWCp9hvGsqXg"
 # OAuth 2 Client Secret for the web site
index 2571b93459147e8e635302b24353465b63da8887..e298c944f5819d2b72d8bf14cfb34e6a692de7a1 100644 (file)
@@ -1,6 +1,15 @@
+# Contributing
+
 * https://www.ruby-lang.org/ - The homepage of Ruby which has more links and some great tutorials.
 * https://rubyonrails.org/ - The homepage of Rails, also has links and tutorials.
 
+## Assigning Issues
+
+We don't assign issues to individual contributors. You are welcome to work on any
+issue, and there's no need to ask first.
+
+For more details see [our FAQ](FAQ.md)]
+
 ## Coding style
 
 We use [Rubocop](https://github.com/rubocop-hq/rubocop) (for ruby files)
index 4804d09b31403d24a73c95cb17437e606624e308..b93bf6d508346fff56c5c572b40f5ae241932b40 100644 (file)
--- a/DOCKER.md
+++ b/DOCKER.md
@@ -24,27 +24,37 @@ Use [Docker Engine](https://docs.docker.com/engine/install/ubuntu/) with the [do
 
 The first step is to fork/clone the repo to your local machine:
 
-    git clone https://github.com/openstreetmap/openstreetmap-website.git
+```
+git clone https://github.com/openstreetmap/openstreetmap-website.git
+```
 
 Now change working directory to the `openstreetmap-website`:
 
-    cd openstreetmap-website
+```
+cd openstreetmap-website
+```
 
 ## Initial Setup
 
 ### Storage
 
-    cp config/example.storage.yml config/storage.yml
+```
+cp config/example.storage.yml config/storage.yml
+```
 
 ### Database
 
-    cp config/docker.database.yml config/database.yml
+```
+cp config/docker.database.yml config/database.yml
+```
 
 ## Prepare local settings file
 
 This is a workaround. [See issues/2185 for details](https://github.com/openstreetmap/openstreetmap-website/issues/2185#issuecomment-508676026).
 
-    touch config/settings.local.yml
+```
+touch config/settings.local.yml
+```
 
 **Windows users:** `touch` is not an availible command in Windows so just create a `settings.local.yml` file in the `config` directory, or if you have WSL you can run `wsl touch config/settings.local.yml`.
 
@@ -52,13 +62,17 @@ This is a workaround. [See issues/2185 for details](https://github.com/openstree
 
 To build local Docker images run from the root directory of the repository:
 
-    docker compose build
+```
+docker compose build
+```
 
 If this is your first time running or you have removed cache this will take some time to complete. Once the Docker images have finished building you can launch the images as containers.
 
 To launch the app run:
 
-    docker compose up -d
+```
+docker compose up -d
+```
 
 This will launch one Docker container for each 'service' specified in `docker-compose.yml` and run them in the background. There are two options for inspecting the logs of these running containers:
 
@@ -69,21 +83,29 @@ This will launch one Docker container for each 'service' specified in `docker-co
 
 Run the Rails database migrations:
 
-    docker compose run --rm web bundle exec rails db:migrate
+```
+docker compose run --rm web bundle exec rails db:migrate
+```
 
 ### Tests
 
 Prepare the test database:
 
-    docker compose run --rm web bundle exec rails db:test:prepare
+```
+docker compose run --rm web bundle exec rails db:test:prepare
+```
 
 Run the test suite:
 
-    docker compose run --rm web bundle exec rails test:all
+```
+docker compose run --rm web bundle exec rails test:all
+```
 
 If you encounter errors about missing assets, precompile the assets:
 
-    docker compose run --rm web bundle exec rake assets:precompile
+```
+docker compose run --rm web bundle exec rake assets:precompile
+```
 
 ### Loading an OSM extract
 
@@ -91,31 +113,37 @@ This installation comes with no geographic data loaded. You can either create ne
 
 For example, let's download the District of Columbia from Geofabrik or [any other region](https://download.geofabrik.de):
 
-    wget https://download.geofabrik.de/north-america/us/district-of-columbia-latest.osm.pbf
+```
+wget https://download.geofabrik.de/north-america/us/district-of-columbia-latest.osm.pbf
+```
 
 You can now use Docker to load this extract into your local Docker-based OSM instance:
 
-    docker compose run --rm web osmosis \
-        -verbose    \
-        --read-pbf district-of-columbia-latest.osm.pbf \
-        --log-progress \
-        --write-apidb \
-            host="db" \
-            database="openstreetmap" \
-            user="openstreetmap" \
-            validateSchemaVersion="no"
+```
+docker compose run --rm web osmosis \
+    -verbose    \
+    --read-pbf district-of-columbia-latest.osm.pbf \
+    --log-progress \
+    --write-apidb \
+        host="db" \
+        database="openstreetmap" \
+        user="openstreetmap" \
+        validateSchemaVersion="no"
+```
 
 **Windows users:** Powershell uses `` ` `` and CMD uses `^` at the end of each line, e.g.:
 
-    docker compose run --rm web osmosis `
-        -verbose    `
-        --read-pbf district-of-columbia-latest.osm.pbf `
-        --log-progress `
-        --write-apidb `
-            host="db" `
-            database="openstreetmap" `
-            user="openstreetmap" `
-            validateSchemaVersion="no"
+```
+docker compose run --rm web osmosis `
+    -verbose    `
+    --read-pbf district-of-columbia-latest.osm.pbf `
+    --log-progress `
+    --write-apidb `
+        host="db" `
+        database="openstreetmap" `
+        user="openstreetmap" `
+        validateSchemaVersion="no"
+```
 
 Once you have data loaded for Washington, DC you should be able to navigate to [`http://localhost:3000/#map=12/38.8938/-77.0146`](http://localhost:3000/#map=12/38.8938/-77.0146) to begin working with your local instance.
 
@@ -127,12 +155,18 @@ See [`CONFIGURE.md`](CONFIGURE.md) for information on how to manage users and en
 
 If you want to get into a web container and run specific commands you can fire up a throwaway container to run bash in via:
 
-    docker compose run --rm web bash
+```
+docker compose run --rm web bash
+```
 
 Alternatively, if you want to use the already-running `web` container then you can `exec` into it via:
 
-    docker compose exec web bash
+```
+docker compose exec web bash
+```
 
 Similarly, if you want to `exec` in the db container use:
 
-    docker compose exec db bash
+```
+docker compose exec db bash
+```
index 3148bafb693033d92037f0fd479a3356c92ede4b..6e2aeced8d487c36136181f82a4fd7fb2dccfa5d 100644 (file)
@@ -30,3 +30,13 @@ if git.commits.any? { |c| c.parents.count > 1 }
 else
   auto_label.remove("merge-commits")
 end
+
+# Check if Gemfile is modified but Gemfile.lock is not
+gemfile_modified = git.modified_files.include?("Gemfile")
+gemfile_lock_modified = git.modified_files.include?("Gemfile.lock")
+if gemfile_modified && !gemfile_lock_modified
+  warn("Gemfile was updated, but Gemfile.lock wasn't updated. Usually, when Gemfile is updated, you should run `bundle install` to update Gemfile.lock.")
+  auto_label.set(pr_number, "gemfile-lock-outdated", "F9D0C4")
+else
+  auto_label.remove("gemfile-lock-outdated")
+end
diff --git a/FAQ.md b/FAQ.md
index d4ac1fc9fbd9959ca4e2a02a4562c66e8bbc80c8..e53c8dddb4195288797355a975395b41dcaa7ac5 100644 (file)
--- a/FAQ.md
+++ b/FAQ.md
@@ -1,3 +1,5 @@
+# Frequently Asked Questions
+
 ## How do I create a banner to promote my OpenStreetMap event?
 
 We occasionally display banner images on the main page of [openstreetmap.org](https://www.openstreetmap.org/) to
@@ -23,3 +25,13 @@ drive.  This is a great way to reach a lot of people!
 
 See [PR #1296](https://github.com/openstreetmap/openstreetmap-website/pull/1296)
 as an example.
+
+## Why don't you assign issues?
+
+We don't assign issues to volunteers for several reasons. The main reasons are that it discourages other volunteers from working on the issue, and the process turns into an unproductive administrative overhead for our team.
+
+There's no need to ask for an issue to be assigned before anyone starts working on it. Everyone is welcome to work on any issue at any time.
+
+In our experience, most people who ask for an issue to be assigned to them never create a pull request. So we would need to keep track of the assigned issues, and remember to unassign them a week or two into the future, when it is likely that they will not be making a PR. Assigned developers might feel bad if they perceive that we're unhappy with their progress, further discouraging them from contributing. Or we will get drawn into discussions about needing more time, or re-assigning them again, or so on. So it is best not to assign in the first place.
+
+The risk that two people are both genuinely working on the same task in the same hour or two is vanishingly remote, and doesn't outweigh the downsides described above. A better approach is to encourage people to simply work on the task and create a pull request, at which point everyone knows that they are actually working on the issue and not just planning/hoping/wishing to do so.
diff --git a/Gemfile b/Gemfile
index b83011542a24d216995f7c60f154d537182e8609..277346b8388df908c3e110cff5b9bbb55a18cf84 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -148,7 +148,7 @@ gem "zeitwerk", "< 2.7"
 group :development do
   gem "better_errors"
   gem "binding_of_caller"
-  gem "danger", :github => "tomhughes/danger", :ref => "pull-request-target"
+  gem "danger"
   gem "danger-auto_label"
   gem "debug_inspector"
   gem "i18n-tasks"
index 5a18b24a64894ad0335494d9b114c8b141d88448..5d15e550c55d1dd8bcfdf3bec73091af8ae130bf 100644 (file)
@@ -1,51 +1,31 @@
-GIT
-  remote: https://github.com/tomhughes/danger.git
-  revision: a265cf74d2f464a25796b48d95697f5eed553454
-  ref: pull-request-target
-  specs:
-    danger (9.5.1)
-      base64 (~> 0.2)
-      claide (~> 1.0)
-      claide-plugins (>= 0.9.2)
-      colored2 (~> 3.1)
-      cork (~> 0.1)
-      faraday (>= 0.9.0, < 3.0)
-      faraday-http-cache (~> 2.0)
-      git (~> 1.13)
-      kramdown (~> 2.3)
-      kramdown-parser-gfm (~> 1.0)
-      octokit (>= 4.0)
-      pstore (~> 0.1)
-      terminal-table (>= 1, < 4)
-
 GEM
   remote: https://rubygems.org/
   specs:
     aasm (5.5.0)
       concurrent-ruby (~> 1.0)
-    actioncable (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actioncable (7.2.2)
+      actionpack (= 7.2.2)
+      activesupport (= 7.2.2)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
       zeitwerk (~> 2.6)
-    actionmailbox (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      activejob (= 7.2.1.2)
-      activerecord (= 7.2.1.2)
-      activestorage (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actionmailbox (7.2.2)
+      actionpack (= 7.2.2)
+      activejob (= 7.2.2)
+      activerecord (= 7.2.2)
+      activestorage (= 7.2.2)
+      activesupport (= 7.2.2)
       mail (>= 2.8.0)
-    actionmailer (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      actionview (= 7.2.1.2)
-      activejob (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actionmailer (7.2.2)
+      actionpack (= 7.2.2)
+      actionview (= 7.2.2)
+      activejob (= 7.2.2)
+      activesupport (= 7.2.2)
       mail (>= 2.8.0)
       rails-dom-testing (~> 2.2)
-    actionpack (7.2.1.2)
-      actionview (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actionpack (7.2.2)
+      actionview (= 7.2.2)
+      activesupport (= 7.2.2)
       nokogiri (>= 1.8.5)
       racc
       rack (>= 2.2.4, < 3.2)
@@ -56,40 +36,41 @@ GEM
       useragent (~> 0.16)
     actionpack-page_caching (1.2.4)
       actionpack (>= 4.0.0)
-    actiontext (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      activerecord (= 7.2.1.2)
-      activestorage (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actiontext (7.2.2)
+      actionpack (= 7.2.2)
+      activerecord (= 7.2.2)
+      activestorage (= 7.2.2)
+      activesupport (= 7.2.2)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.2.1.2)
-      activesupport (= 7.2.1.2)
+    actionview (7.2.2)
+      activesupport (= 7.2.2)
       builder (~> 3.1)
       erubi (~> 1.11)
       rails-dom-testing (~> 2.2)
       rails-html-sanitizer (~> 1.6)
     active_record_union (1.3.0)
       activerecord (>= 4.0)
-    activejob (7.2.1.2)
-      activesupport (= 7.2.1.2)
+    activejob (7.2.2)
+      activesupport (= 7.2.2)
       globalid (>= 0.3.6)
-    activemodel (7.2.1.2)
-      activesupport (= 7.2.1.2)
-    activerecord (7.2.1.2)
-      activemodel (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    activemodel (7.2.2)
+      activesupport (= 7.2.2)
+    activerecord (7.2.2)
+      activemodel (= 7.2.2)
+      activesupport (= 7.2.2)
       timeout (>= 0.4.0)
     activerecord-import (1.8.1)
       activerecord (>= 4.2)
-    activestorage (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      activejob (= 7.2.1.2)
-      activerecord (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    activestorage (7.2.2)
+      actionpack (= 7.2.2)
+      activejob (= 7.2.2)
+      activerecord (= 7.2.2)
+      activesupport (= 7.2.2)
       marcel (~> 1.0)
-    activesupport (7.2.1.2)
+    activesupport (7.2.2)
       base64
+      benchmark (>= 0.3)
       bigdecimal
       concurrent-ruby (~> 1.0, >= 1.3.1)
       connection_pool (>= 2.2.5)
@@ -111,8 +92,8 @@ GEM
     autoprefixer-rails (10.4.19.0)
       execjs (~> 2)
     aws-eventstream (1.3.0)
-    aws-partitions (1.997.0)
-    aws-sdk-core (3.211.0)
+    aws-partitions (1.1004.0)
+    aws-sdk-core (3.212.0)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.992.0)
       aws-sigv4 (~> 1.9)
@@ -120,13 +101,14 @@ GEM
     aws-sdk-kms (1.95.0)
       aws-sdk-core (~> 3, >= 3.210.0)
       aws-sigv4 (~> 1.5)
-    aws-sdk-s3 (1.169.0)
+    aws-sdk-s3 (1.170.1)
       aws-sdk-core (~> 3, >= 3.210.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.5)
     aws-sigv4 (1.10.1)
       aws-eventstream (~> 1, >= 1.0.2)
     base64 (0.2.0)
+    benchmark (0.4.0)
     better_errors (2.10.1)
       erubi (>= 1.0.0)
       rack (>= 0.9.0)
@@ -188,6 +170,20 @@ GEM
       rexml
     crass (1.0.6)
     dalli (3.2.8)
+    danger (9.5.1)
+      base64 (~> 0.2)
+      claide (~> 1.0)
+      claide-plugins (>= 0.9.2)
+      colored2 (~> 3.1)
+      cork (~> 0.1)
+      faraday (>= 0.9.0, < 3.0)
+      faraday-http-cache (~> 2.0)
+      git (~> 1.13)
+      kramdown (~> 2.3)
+      kramdown-parser-gfm (~> 1.0)
+      octokit (>= 4.0)
+      pstore (~> 0.1)
+      terminal-table (>= 1, < 4)
     danger-auto_label (1.3.1)
       danger-plugin-api (~> 1.0)
     danger-plugin-api (1.0.0)
@@ -200,16 +196,16 @@ GEM
       sprockets (> 3.0)
       sprockets-rails
       tilt
-    date (3.3.4)
+    date (3.4.0)
     debug (1.9.2)
       irb (~> 1.10)
       reline (>= 0.3.8)
     debug_inspector (1.2.0)
     deep_merge (1.2.2)
-    delayed_job (4.1.12)
-      activesupport (>= 3.0, < 8.0)
-    delayed_job_active_record (4.1.10)
-      activerecord (>= 3.0, < 8.0)
+    delayed_job (4.1.13)
+      activesupport (>= 3.0, < 9.0)
+    delayed_job_active_record (4.1.11)
+      activerecord (>= 3.0, < 9.0)
       delayed_job (>= 3.0, < 5)
     docile (1.4.1)
     doorkeeper (5.7.1)
@@ -295,7 +291,7 @@ GEM
     globalid (1.2.1)
       activesupport (>= 6.1)
     google-protobuf (3.25.5)
-    hashdiff (1.1.1)
+    hashdiff (1.1.2)
     hashie (5.0.0)
     highline (3.1.1)
       reline
@@ -343,7 +339,7 @@ GEM
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
-    json (2.7.4)
+    json (2.8.1)
     jwt (2.9.3)
       base64
     kgio (2.11.4)
@@ -380,14 +376,14 @@ GEM
     minitest (5.25.1)
     minitest-focus (1.4.0)
       minitest (>= 4, < 6)
-    msgpack (1.7.3)
+    msgpack (1.7.5)
     multi_json (1.15.0)
     multi_xml (0.7.1)
       bigdecimal (~> 3.1)
     nap (1.1.0)
-    net-http (0.4.1)
+    net-http (0.5.0)
       uri
-    net-imap (0.5.0)
+    net-imap (0.5.1)
       date
       net-protocol
     net-pop (0.1.2)
@@ -453,20 +449,20 @@ GEM
       omniauth (~> 2.0)
     open4 (1.3.4)
     openstreetmap-deadlock_retry (1.3.1)
-    ostruct (0.6.0)
-    overcommit (0.64.0)
+    ostruct (0.6.1)
+    overcommit (0.64.1)
       childprocess (>= 0.6.3, < 6)
       iniparse (~> 1.4)
-      rexml (~> 3.2)
+      rexml (>= 3.3.9)
     parallel (1.26.3)
-    parser (3.3.5.0)
+    parser (3.3.6.0)
       ast (~> 2.4.1)
       racc
     pg (1.5.9)
     popper_js (2.11.8)
     progress (3.6.0)
     pstore (0.1.3)
-    psych (5.1.2)
+    psych (5.2.0)
       stringio
     public_suffix (6.0.1)
     puma (5.6.9)
@@ -490,20 +486,20 @@ GEM
     rackup (1.0.1)
       rack (< 3)
       webrick
-    rails (7.2.1.2)
-      actioncable (= 7.2.1.2)
-      actionmailbox (= 7.2.1.2)
-      actionmailer (= 7.2.1.2)
-      actionpack (= 7.2.1.2)
-      actiontext (= 7.2.1.2)
-      actionview (= 7.2.1.2)
-      activejob (= 7.2.1.2)
-      activemodel (= 7.2.1.2)
-      activerecord (= 7.2.1.2)
-      activestorage (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    rails (7.2.2)
+      actioncable (= 7.2.2)
+      actionmailbox (= 7.2.2)
+      actionmailer (= 7.2.2)
+      actionpack (= 7.2.2)
+      actiontext (= 7.2.2)
+      actionview (= 7.2.2)
+      activejob (= 7.2.2)
+      activemodel (= 7.2.2)
+      activerecord (= 7.2.2)
+      activestorage (= 7.2.2)
+      activesupport (= 7.2.2)
       bundler (>= 1.15.0)
-      railties (= 7.2.1.2)
+      railties (= 7.2.2)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
@@ -521,9 +517,9 @@ GEM
     rails_param (1.3.1)
       actionpack (>= 3.2.0)
       activesupport (>= 3.2.0)
-    railties (7.2.1.2)
-      actionpack (= 7.2.1.2)
-      activesupport (= 7.2.1.2)
+    railties (7.2.2)
+      actionpack (= 7.2.2)
+      activesupport (= 7.2.2)
       irb (~> 1.13)
       rackup (>= 1.0.0)
       rake (>= 12.2)
@@ -538,17 +534,17 @@ GEM
     rdoc (6.7.0)
       psych (>= 4.0.0)
     regexp_parser (2.9.2)
-    reline (0.5.10)
+    reline (0.5.11)
       io-console (~> 0.5)
     request_store (1.7.0)
       rack (>= 1.4)
     rexml (3.3.9)
     rinku (2.0.6)
     rotp (6.3.0)
-    rouge (4.4.0)
+    rouge (4.5.1)
     rtlcss (0.2.1)
       mini_racer (>= 0.6.3)
-    rubocop (1.67.0)
+    rubocop (1.68.0)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
@@ -558,7 +554,7 @@ GEM
       rubocop-ast (>= 1.32.2, < 2.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 2.4.0, < 3.0)
-    rubocop-ast (1.33.0)
+    rubocop-ast (1.35.0)
       parser (>= 3.3.1.0)
     rubocop-capybara (2.21.0)
       rubocop (~> 1.41)
@@ -592,7 +588,7 @@ GEM
     sawyer (0.9.2)
       addressable (>= 2.3.5)
       faraday (>= 0.17.3, < 3)
-    securerandom (0.3.1)
+    securerandom (0.3.2)
     selenium-webdriver (4.23.0)
       base64 (~> 0.2)
       logger (~> 1.4)
@@ -634,7 +630,7 @@ GEM
       execjs (>= 0.3.0, < 3)
     thor (1.3.2)
     tilt (2.4.0)
-    timeout (0.4.1)
+    timeout (0.4.2)
     turbo-rails (2.0.11)
       actionpack (>= 6.0.0)
       railties (>= 6.0.0)
@@ -652,7 +648,7 @@ GEM
       addressable (>= 2.8.0)
       crack (>= 0.3.2)
       hashdiff (>= 0.4.0, < 2.0.0)
-    webrick (1.8.2)
+    webrick (1.9.0)
     websocket (1.2.11)
     websocket-driver (0.7.6)
       websocket-extensions (>= 0.1.0)
@@ -688,7 +684,7 @@ DEPENDENCIES
   config
   connection_pool
   dalli
-  danger!
+  danger
   danger-auto_label
   dartsass-sprockets
   debug
index c2869cd5f661c38846251efee9d222a23de08ecd..617bd7b4d0884707e8f94fc1af38ffd5671523ba 100644 (file)
@@ -2,9 +2,11 @@
 # vi: set ft=ruby :
 
 Vagrant.configure("2") do |config|
-  # use official ubuntu image for virtualbox
+  # use official debian image
+  config.vm.box = "debian/bookworm64"
+
+  # configure virtualbox provider
   config.vm.provider "virtualbox" do |vb, override|
-    override.vm.box = "ubuntu/noble64"
     override.vm.synced_folder ".", "/srv/openstreetmap-website"
     vb.customize ["modifyvm", :id, "--memory", "4096"]
     vb.customize ["modifyvm", :id, "--cpus", "2"]
@@ -14,16 +16,16 @@ Vagrant.configure("2") do |config|
   # Use sshfs sharing if available, otherwise NFS sharing
   sharing_type = Vagrant.has_plugin?("vagrant-sshfs") ? "sshfs" : "nfs"
 
-  # use third party image and sshfs or NFS sharing for lxc
+  # configure lxc provider
   config.vm.provider "lxc" do |_, override|
-    override.vm.box = "generic/ubuntu2404"
     override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
   end
 
-  # use third party image and sshfs or NFS sharing for libvirt
-  config.vm.provider "libvirt" do |_, override|
-    override.vm.box = "generic/ubuntu2404"
+  # configure libvirt provider
+  config.vm.provider "libvirt" do |libvirt, override|
     override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
+    libvirt.memory = 4096
+    libvirt.cpus = 2
   end
 
   # configure shared package cache if possible
index 9a8f193a1b5164ce1eea0e09cd583338729f6bd7..725ceccb2cc8a144d27a2bc5436608b8a6516426 100644 (file)
@@ -68,7 +68,7 @@ class Ability
           can [:index, :show, :resolve, :ignore, :reopen], Issue
           can :create, IssueComment
           can [:set_status, :destroy, :index], User
-          can [:grant, :revoke], UserRole
+          can [:create, :destroy], UserRole
         end
       end
     end
index 05474212645361fd975d3a0e188edbe1c4bdae81..ead01a8ff8e0dcfef8e9c2235c2e9198700cd515 100644 (file)
@@ -1,6 +1,5 @@
 //= require jquery3
 //= require jquery_ujs
-//= require jquery.timers
 //= require jquery.throttle-debounce
 //= require js-cookie/dist/js.cookie
 //= require popper
index 2b29992e909892802c38092bbe36f611b8095be4..c419f93216b44507f4aed454b01792feba3744e9 100644 (file)
@@ -25,8 +25,6 @@
 //= require qs/dist/qs
 
 $(document).ready(function () {
-  var loaderTimeout;
-
   var map = new L.OSM.Map("map", {
     zoomControl: false,
     layerControl: false,
@@ -39,11 +37,7 @@ $(document).ready(function () {
 
     map.setSidebarOverlaid(false);
 
-    clearTimeout(loaderTimeout);
-
-    loaderTimeout = setTimeout(function () {
-      $("#sidebar_loader").show();
-    }, 200);
+    $("#sidebar_loader").show().addClass("delayed-fade-in");
 
     // IE<10 doesn't respect Vary: X-Requested-With header, so
     // prevent caching the XHR response as a full-page URL.
@@ -60,9 +54,8 @@ $(document).ready(function () {
       url: content_path,
       dataType: "html",
       complete: function (xhr) {
-        clearTimeout(loaderTimeout);
         $("#flash").empty();
-        $("#sidebar_loader").hide();
+        $("#sidebar_loader").removeClass("delayed-fade-in").hide();
 
         var content = $(xhr.responseText);
 
@@ -412,6 +405,9 @@ $(document).ready(function () {
 
     if (OSM.router.route(this.pathname + this.search + this.hash)) {
       e.preventDefault();
+      if (this.pathname !== "/directions") {
+        $("header").addClass("closed");
+      }
     }
   });
 
index 59fbeeb1d6aa35146a0808c950923373c3d9f10b..887ba043b12b00bda5478b4e2dfd3aeec305efd3 100644 (file)
@@ -139,8 +139,6 @@ OSM.NewNote = function (map) {
 
     newNote.on("remove", function () {
       addNoteButton.removeClass("active");
-    }).on("dragstart", function () {
-      $(newNote).stopTime("removenote");
     }).on("dragend", function () {
       content.find("textarea").focus();
     });
index 7d63280ee849638a9f7acd0d69bbc8b9129a5cec..09e4de31e0c6e78faf57444534b55fa3c5653292 100644 (file)
@@ -289,18 +289,10 @@ OSM.Query = function (map) {
       .hide();
 
     if (marker) map.removeLayer(marker);
-    marker = L.circle(latlng, radius, featureStyle).addTo(map);
-
-    $(document).everyTime(75, "fadeQueryMarker", function (i) {
-      if (i === 10) {
-        map.removeLayer(marker);
-      } else {
-        marker.setStyle({
-          opacity: 1 - (i * 0.1),
-          fillOpacity: 0.5 - (i * 0.05)
-        });
-      }
-    }, 10);
+    marker = L.circle(latlng, Object.assign({
+      radius: radius,
+      className: "query-marker"
+    }, featureStyle)).addTo(map);
 
     runQuery(latlng, radius, nearby, $("#query-nearby"), false);
     runQuery(latlng, radius, isin, $("#query-isin"), true, compareSize);
index 476ad30a1ac11de80ad555ecf430ca6ef61923b1..2bfbb2e1c6d4fa9bc18c7264cdbb65651785899a 100644 (file)
@@ -32,6 +32,7 @@ OSM.Search = function (map) {
 
   $(".describe_location").on("click", function (e) {
     e.preventDefault();
+    $("header").addClass("closed");
     var center = map.getCenter().wrap(),
         precision = OSM.zoomPrecision(map.getZoom()),
         lat = center.lat.toFixed(precision),
index 82efab506c80f4d7dbd27f465f04928d383664f9..dc692a4a5d500f0ffbba724a8309769431e7efe8 100644 (file)
@@ -14,7 +14,7 @@ L.OSM.layers = function (options) {
       var buttonContainer = $("<div class='position-relative'>")
         .appendTo(baseSection);
 
-      var mapContainer = $("<div class='position-absolute top-0 start-0 bottom-0 end-0 z-0'>")
+      var mapContainer = $("<div class='position-absolute top-0 start-0 bottom-0 end-0 z-0 bg-body-secondary'>")
         .appendTo(buttonContainer);
 
       var input = $("<input type='radio' class='btn-check' name='layer'>")
index 56aad8c73a2c8642f09d4cc1d6b6f54f5b5a6f4d..bd00d937e2313068b310681a2be733f04dff0201 100644 (file)
@@ -6,8 +6,10 @@
    */
   $(document).on("change", ".richtext_container textarea", function () {
     var container = $(this).closest(".richtext_container");
+    var preview = container.find(".tab-pane[id$='_preview']");
 
-    container.find(".tab-pane[id$='_preview']").empty();
+    preview.children(".richtext_placeholder").attr("hidden", true).removeClass("delayed-fade-in");
+    preview.children(".richtext").empty();
   });
 
   /*
     var editor = container.find("textarea");
     var preview = container.find(".tab-pane[id$='_preview']");
 
-    if (preview.contents().length === 0) {
-      preview.oneTime(500, "loading", function () {
-        preview.addClass("loading");
-      });
+    if (preview.children(".richtext").contents().length === 0) {
+      preview.children(".richtext_placeholder").removeAttr("hidden").addClass("delayed-fade-in");
 
-      preview.load(editor.data("previewUrl"), { text: editor.val() }, function () {
-        preview.stopTime("loading");
-        preview.removeClass("loading");
+      preview.children(".richtext").load(editor.data("previewUrl"), { text: editor.val() }, function () {
+        preview.children(".richtext_placeholder").attr("hidden", true).removeClass("delayed-fade-in");
       });
     }
   });
index d890f38a480a384d6edd5570e384f71916cc30bc..c4e52417004c5c50871f23fe28edf967596c68b7 100644 (file)
@@ -101,6 +101,16 @@ OSM.Router = function (map, rts) {
 
   var router = {};
 
+  function updateSecondaryNav() {
+    $("header nav.secondary > ul > li > a").each(function () {
+      var active = $(this).attr("href") === window.location.pathname;
+
+      $(this)
+        .toggleClass("text-secondary", !active)
+        .toggleClass("text-secondary-emphasis", active);
+    });
+  }
+
   $(window).on("popstate", function (e) {
     if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
     var path = window.location.pathname + window.location.search,
@@ -110,6 +120,7 @@ OSM.Router = function (map, rts) {
     currentPath = path;
     currentRoute = route;
     currentRoute.run("popstate", currentPath);
+    updateSecondaryNav();
     map.setState(e.originalEvent.state, { animate: false });
   });
 
@@ -124,6 +135,7 @@ OSM.Router = function (map, rts) {
     currentPath = path;
     currentRoute = route;
     currentRoute.run("pushstate", currentPath);
+    updateSecondaryNav();
     return true;
   };
 
index d551462b2202ec34defa80b70c13be334e08553f..027e6e6a34f08724d9e9786d74dae511de477305 100644 (file)
@@ -70,6 +70,28 @@ time[title] {
   }
 }
 
+/* Utility for delayed loading spinner */
+
+.delayed-fade-in {
+  animation: 300ms linear forwards delayed-fade-in;
+}
+
+@keyframes delayed-fade-in {
+  0%   { opacity: 0 }
+  66%  { opacity: 0 }
+  100% { opacity: 1 }
+}
+
+/* Bootstrap close button overrides for nested light/dark themes */
+
+[data-bs-theme="dark"] .btn-close {
+  filter: var(--bs-btn-close-white-filter);
+}
+
+[data-bs-theme="light"] .btn-close {
+  filter: none;
+}
+
 /* Rules for the header */
 
 #menu-icon {
@@ -119,7 +141,7 @@ header {
 }
 
 nav.primary {
-  & > .btn-group .btn-outline-primary {
+  #edit_tab .btn-outline-primary {
     @include button-outline-variant($green, $color-hover: $white, $active-color: $white);
   }
 
@@ -197,9 +219,7 @@ body.small-nav {
     }
   }
 
-  #sidebar .search_forms,
-  #edit_tab,
-  #export_tab {
+  #sidebar .search_forms {
     display: none;
   }
 
@@ -207,7 +227,7 @@ body.small-nav {
     margin-right: 0;
     padding: 0;
 
-    .btn-group {
+    #edit_tab {
       width: 100%;
       padding: 10px;
     }
@@ -368,6 +388,14 @@ body.small-nav {
     .leaflet-marker-draggable {
       cursor: move;
     }
+
+    .query-marker {
+      animation: 1500ms forwards query-marker-fade;
+
+      @keyframes query-marker-fade {
+        to { opacity: 0 }
+      }
+    }
   }
 
   #map-ui {
@@ -474,17 +502,17 @@ body.small-nav {
 }
 
 @include color-mode(dark) {
-  .leaflet-tile-container,
+  .leaflet-tile-container .leaflet-tile,
   .mapkey-table-entry td:first-child > * {
     filter: brightness(.8);
   }
 
-  .leaflet-control-attribution a {
+  .leaflet-container .leaflet-control-attribution a {
     color: var(--bs-link-color);
   }
 
   .leaflet-control-scale-line {
-    @extend .border-light, .border-opacity-75;
+    border-color: rgba(var(--bs-light-rgb), .75) !important;
   }
 }
 
index 07549d69bb33e939238f98e6ef6d1e44eea4a816..28bf569016a607d81b4aa01b994226ca8366845e 100644 (file)
@@ -20,3 +20,4 @@ $table-border-factor: .1;
 $list-group-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);
 
 $enable-negative-margins: true;
+$color-mode-type: media-query;
index 9a00814f502d48d4c0df921458897a7a05a1dd4b..7e2e7fb793babed86952313cc1d0703043d2f760 100644 (file)
@@ -398,9 +398,13 @@ module Api
 
       comment = note.comments.create!(attributes)
 
-      note.comments.map(&:author).uniq.each do |user|
-        UserMailer.note_comment_notification(comment, user).deliver_later if notify && user && user != current_user && user.visible?
+      if notify
+        note.subscribers.visible.each do |user|
+          UserMailer.note_comment_notification(comment, user).deliver_later if current_user != user
+        end
       end
+
+      NoteSubscription.find_or_create_by(:note => note, :user => current_user) if current_user
     end
   end
 end
index 28305b5c3d55e2beed6c77cefbe6639532f42f2f..d79ed48d2ca742be14faad6db9f637b09dd247e4 100644 (file)
@@ -6,9 +6,10 @@ module UserMethods
   ##
   # ensure that there is a "user" instance variable
   def lookup_user
-    @user = User.active.find_by!(:display_name => params[:display_name])
+    display_name = params[:display_name] || params[:user_display_name]
+    @user = User.active.find_by!(:display_name => display_name)
   rescue ActiveRecord::RecordNotFound
-    render_unknown_user params[:display_name]
+    render_unknown_user display_name
   end
 
   ##
index a3e6f42f03db4b172607bc26285d6c79c3b0ee8b..abbaf5e921e45aedf89e60d7057023b9a0374143 100644 (file)
@@ -20,7 +20,7 @@ class SessionsController < ApplicationController
   end
 
   def create
-    session[:remember_me] ||= params[:remember_me]
+    session[:remember_me] = params[:remember_me] == "yes"
 
     referer = safe_referer(params[:referer]) if params[:referer]
 
index c42c2659db0b09aae46b17430b3cac0e25283790..d427e5fa515bee1b2a4454cc1b1624a112d794cf 100644 (file)
@@ -29,7 +29,7 @@ class UserBlocksController < ApplicationController
   end
 
   def show
-    if current_user && current_user == @user_block.user
+    if current_user && current_user == @user_block.user && !@user_block.deactivates_at
       @user_block.needs_view = false
       @user_block.deactivates_at = [@user_block.ends_at, Time.now.utc].max
       @user_block.save!
index 469b2c40b626845191e7a5265e873c340da7c4f4..912453be8772891d4dcd3eed0e3b4685295cf509 100644 (file)
@@ -9,15 +9,15 @@ class UserRolesController < ApplicationController
 
   before_action :lookup_user
   before_action :require_valid_role
-  before_action :not_in_role, :only => [:grant]
-  before_action :in_role, :only => [:revoke]
+  before_action :not_in_role, :only => :create
+  before_action :in_role, :only => :destroy
 
-  def grant
+  def create
     @user.roles.create(:role => @role, :granter => current_user)
     redirect_to user_path(@user)
   end
 
-  def revoke
+  def destroy
     # checks that administrator role is not revoked from current user
     if current_user == @user && @role == "administrator"
       flash[:error] = t("user_role.filter.not_revoke_admin_current_user")
index 0831cde6e21e316759c9a0a8546979b053f38445..e00a2253f7ded7898bf68fda69437d10c4d8470e 100644 (file)
@@ -60,7 +60,7 @@ module UserHelper
                 :size => "36"),
       auth_path(options.merge(:provider => provider)),
       :method => :post,
-      :class => "auth_button btn btn-light p-2",
+      :class => "auth_button btn btn-outline-secondary border p-2",
       :title => t("application.auth_providers.#{provider}.title")
     )
   end
index e839c0ae65f27f5af07df0d03b43f046914800a5..02017bdb9fff76497dfb3693943435bf7b6f19fa 100644 (file)
@@ -7,12 +7,12 @@ module UserRolesHelper
     if current_user&.administrator?
       if user.role?(role)
         link_to role_icon_svg_tag(role, false, t("users.show.role.revoke.#{role}")),
-                revoke_role_path(user, role),
-                :method => :post,
+                user_role_path(user, role),
+                :method => :delete,
                 :data => { :confirm => t("user_role.revoke.are_you_sure", :name => user.display_name, :role => role) }
       else
         link_to role_icon_svg_tag(role, true, t("users.show.role.grant.#{role}")),
-                grant_role_path(user, role),
+                user_role_path(user, role),
                 :method => :post,
                 :data => { :confirm => t("user_role.grant.are_you_sure", :name => user.display_name, :role => role) }
       end
index 0b0597434f0fa5842f31862da19bdf9ec1711da6..6d8ca078fa42e1d12e1652e3795a1e32caf02c26 100644 (file)
@@ -23,6 +23,8 @@ class Note < ApplicationRecord
 
   has_many :comments, -> { left_joins(:author).where(:visible => true, :users => { :status => [nil, "active", "confirmed"] }).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id
   has_many :all_comments, -> { left_joins(:author).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id, :inverse_of => :note
+  has_many :subscriptions, :class_name => "NoteSubscription"
+  has_many :subscribers, :through => :subscriptions, :source => :user
 
   validates :id, :uniqueness => true, :presence => { :on => :update },
                  :numericality => { :on => :update, :only_integer => true }
diff --git a/app/models/note_subscription.rb b/app/models/note_subscription.rb
new file mode 100644 (file)
index 0000000..76e8a22
--- /dev/null
@@ -0,0 +1,20 @@
+# == Schema Information
+#
+# Table name: note_subscriptions
+#
+#  user_id :bigint(8)        not null, primary key
+#  note_id :bigint(8)        not null, primary key
+#
+# Indexes
+#
+#  index_note_subscriptions_on_note_id  (note_id)
+#
+# Foreign Keys
+#
+#  fk_rails_...  (note_id => notes.id)
+#  fk_rails_...  (user_id => users.id)
+#
+class NoteSubscription < ApplicationRecord
+  belongs_to :user
+  belongs_to :note
+end
index dd1c08d985154fd733e815761d040b39af4255d3..917faca2184f38f79999d7ea5e31f5768727d0d7 100644 (file)
@@ -66,6 +66,8 @@ class User < ApplicationRecord
   has_and_belongs_to_many :changeset_subscriptions, :class_name => "Changeset", :join_table => "changesets_subscribers", :foreign_key => "subscriber_id"
   has_many :note_comments, :foreign_key => :author_id, :inverse_of => :author
   has_many :notes, :through => :note_comments
+  has_many :note_subscriptions, :class_name => "NoteSubscription"
+  has_many :subscribed_notes, :through => :note_subscriptions, :source => :note
 
   has_many :oauth2_applications, :class_name => Doorkeeper.config.application_model.name, :as => :owner
   has_many :access_grants, :class_name => Doorkeeper.config.access_grant_model.name, :foreign_key => :resource_owner_id
@@ -421,8 +423,8 @@ class User < ApplicationRecord
     if moderator?
       Settings.moderator_changeset_comments_per_hour
     else
-      previous_comments = changeset_comments.limit(200).count
-      max_comments = previous_comments / 200.0 * Settings.max_changeset_comments_per_hour
+      previous_comments = changeset_comments.limit(Settings.comments_to_max_changeset_comments).count
+      max_comments = previous_comments / Settings.comments_to_max_changeset_comments.to_f * Settings.max_changeset_comments_per_hour
       max_comments = max_comments.floor.clamp(Settings.initial_changeset_comments_per_hour, Settings.max_changeset_comments_per_hour)
       max_comments /= 2**active_reports
       max_comments.floor.clamp(Settings.min_changeset_comments_per_hour, Settings.max_changeset_comments_per_hour)
index f6665cefecae153f74a1e9192ad17031dc21b704..3feda6139a4473b637ae4d678fd90da8f6879be6 100644 (file)
@@ -20,7 +20,7 @@
                          :data => { "bs-toggle" => "collapse",
                                     "bs-target" => "#login_auth_buttons, #openid_login_form" },
                          :title => t(".openid.title"),
-                         :class => "btn btn-light p-2" %>
+                         :class => "btn btn-outline-secondary border p-2" %>
         <% elsif provider != @preferred_auth_provider %>
           <%= auth_button provider %>
         <% end -%>
index 344c5ed711fb316e7e8e647fbe73db888beb3d84..3d2c7f774e1c48c3ab31e85497e7761dd1850be6 100644 (file)
@@ -1,5 +1,5 @@
 <% unless (banner = next_banner()).nil? %>
-  <%= tag.div :id => "banner", :class => "position-relative", :data => { :bs_theme => token_list(:dark => banner[:dark]) } do %>
+  <%= tag.div :id => "banner", :class => "position-relative", :data => { :bs_theme => (banner[:dark] ? "dark" : "light") } do %>
     <%= link_to (image_tag banner[:img], :srcset => banner[:srcset], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
     <button type="button"
             class="btn-close position-absolute top-0 end-0 m-4 opacity-100 bg-white bg-opacity-50"
index e96564b82b84839d0ab4d15bbfe998b9d80b1d58..fcf134fd29c8b0d9c673fcea647e3679b54e448b 100644 (file)
@@ -8,27 +8,23 @@
   <a href="#" id="menu-icon"></a>
   <nav class='primary'>
     <%= content_for :header %>
-    <div class="btn-group">
-      <div id="edit_tab" class="btn-group">
-        <%= link_to t("layouts.edit"),
-                    edit_path,
-                    :class => "btn btn-outline-primary geolink editlink",
-                    :id => "editanchor",
-                    :data => { :editor => preferred_editor } %>
-        <button class='btn btn-outline-primary dropdown-toggle dropdown-toggle-split' type='button' data-bs-toggle='dropdown'></button>
-        <ul class='dropdown-menu'>
-          <% Editors::RECOMMENDED_EDITORS.each do |editor| %>
-            <li>
-              <%= link_to t("layouts.edit_with", :editor => t("editor.#{editor}.description")),
-                          edit_path(:editor => editor),
-                          :data => { :editor => editor },
-                          :class => "geolink editlink dropdown-item" %>
-            </li>
-          <% end %>
-        </ul>
-      </div>
-      <%= link_to t("layouts.history"), history_path, :class => "btn btn-outline-primary geolink flex-grow-1", :id => "history_tab" %>
-      <%= link_to t("layouts.export"), export_path, :class => "btn btn-outline-primary geolink", :id => "export_tab" %>
+    <div id="edit_tab" class="btn-group">
+      <%= link_to t("layouts.edit"),
+                  edit_path,
+                  :class => "btn btn-outline-primary geolink editlink",
+                  :id => "editanchor",
+                  :data => { :editor => preferred_editor } %>
+      <button class='btn btn-outline-primary dropdown-toggle dropdown-toggle-split flex-grow-0' type='button' data-bs-toggle='dropdown'></button>
+      <ul class='dropdown-menu'>
+        <% Editors::RECOMMENDED_EDITORS.each do |editor| %>
+          <li>
+            <%= link_to t("layouts.edit_with", :editor => t("editor.#{editor}.description")),
+                        edit_path(:editor => editor),
+                        :data => { :editor => editor },
+                        :class => "geolink editlink dropdown-item" %>
+          </li>
+        <% end %>
+      </ul>
     </div>
   </nav>
   <nav class='secondary d-flex gap-2 align-items-center'>
           <% end -%>
         </li>
       <% end %>
+      <li class="compact-hide nav-item">
+        <%= link_to t("layouts.history"), history_path, :class => header_nav_link_class(history_path) %>
+      </li>
+      <li class="compact-hide nav-item">
+        <%= link_to t("layouts.export"), export_path, :class => header_nav_link_class(export_path) %>
+      </li>
       <li class="compact-hide nav-item">
         <%= link_to t("layouts.gps_traces"), traces_path, :class => header_nav_link_class(traces_path) %>
       </li>
@@ -70,6 +72,8 @@
               <% end -%>
             </li>
           <% end %>
+          <li><%= link_to t("layouts.history"), history_path, :class => "dropdown-item" %></li>
+          <li><%= link_to t("layouts.export"), export_path, :class => "dropdown-item" %></li>
           <li><%= link_to t("layouts.gps_traces"), traces_path, :class => "dropdown-item" %></li>
           <li><%= link_to t("layouts.user_diaries"), diary_entries_path, :class => "dropdown-item" %></li>
           <li><%= link_to t("layouts.communities"), communities_path, :class => "dropdown-item" %></li>
index 9d05d4af80d44b7bf956824ee163dc66d4db225f..c2d96b63cc37ae2b9def6ba868cf8742927c3212 100644 (file)
@@ -40,7 +40,7 @@
   <%= f.password_field :password, :autocomplete => "on", :tabindex => 2, :value => "", :skip_label => true %>
 
   <%= f.form_group do %>
-    <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %>
+    <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "true") }, "yes" %>
   <% end %>
 
   <div class="mb-3">
index 5b84fd6ed889bce1d774cdbb746082a946b8056a..eb11aa13cab3cfa0d927666f54209572056c74da 100644 (file)
       <div id="<%= id %>_edit" class="tab-pane show active">
         <%= builder.text_area(attribute, options.merge(:wrapper => false, "data-preview-url" => preview_url(:type => type))) %>
       </div>
-      <div id="<%= id %>_preview" class="tab-pane richtext text-break"></div>
+      <div id="<%= id %>_preview" class="tab-pane">
+        <div class="richtext_placeholder text-center py-5" hidden>
+          <div class="spinner-border" role="status">
+            <span class="visually-hidden"><%= t("browse.start_rjs.loading") %></span>
+          </div>
+        </div>
+        <div class="richtext text-break"></div>
+      </div>
       <div id="<%= id %>_help" class="tab-pane">
         <div class="card bg-body-tertiary h-100">
           <div class="card-body">
index f60eea7f1cbe22834e631359484b592f6cddb0a7..992f16199ac38a5044fa8df507b8dfc27b29e6c4 100644 (file)
@@ -27,7 +27,7 @@
                          when "public", "identifiable" then "success"
                          else "danger"
                          end %>
-        <span class="badge bg-<%= badge_class %> text-white"><%= t(".#{trace.visibility}") %></span>
+        <span class="badge text-bg-<%= badge_class %>"><%= t(".#{trace.visibility}") %></span>
       </li>
     </ul>
     <p class="text-body-secondary mb-0">
index 4628bcaf608cb771f05703901ec80aa9529187ac..033774cb54faf68163fb69afd6fe1b92bea5abfb 100644 (file)
@@ -166,7 +166,7 @@ ar:
         longitude: خط الطول
         public: عام
         description: الوصف
-        gpx_file: Ø±Ù\81ع Ù\85Ù\84Ù\81 GPX
+        gpx_file: Ø§Ø®ØªØ± Ù\85Ù\84Ù\81 ØªØªØ¨Ø¹ GPS
         visibility: الرؤية
         tagstring: الوسوم
       message:
@@ -463,7 +463,8 @@ ar:
         note: ملحوظة
     timeout:
       title: خطأ انتهاء الوقت
-      sorry: عذرًا، بيانات %{type} بالمعرّف %{id} استغرقت وقتًا طويلا للاسترداد.
+      sorry: عذراً، استغرق استرداد البيانات الخاصة بـ %{type} بالمعرف %{id} وقتًا
+        طويلاً.
       type:
         node: العقدة
         way: الطريق
@@ -479,8 +480,8 @@ ar:
         way: طريق
         relation: علاقة
     start_rjs:
-      feature_warning: يجري تحميل ميزات %{num_features}، والتي يمكن أن تجعل متصفّحك
-        بطيئاً أو عديم الاستجابة. هل أنت متأكد من رغبتك بعرض هذه البيانات؟
+      feature_warning: جارٍ تحميل %{num_features} من الميزات، مما قد يؤدي إلى بطء
+        متصفحك أو عدم استجابته. هل أنت متأكد من أنك تريد عرض هذه البيانات؟
       load_data: تحميل البيانات
       loading: جارٍ التحميل...
     tag_details:
@@ -639,6 +640,9 @@ ar:
       comment_count:
         zero: لا تعليق
         one: '%{count} تعليق'
+        two: تعليقان
+        few: تعليقات قليلة
+        many: تعليقات كثيرة
         other: '%{count} تعليقات'
       no_comments: لا يوجد تعليقات
       edit_link: عدل هذه المدخلة
@@ -1626,17 +1630,20 @@ ar:
       befriend_them: "\uFEFFيمكنك أيضًا إضافتهم كصديق على %{befriendurl}."
       befriend_them_html: يمكنك أيضًا إضافتهم كصديق على %{befriendurl}.
     gpx_description:
-      description_with_tags: 'Ù\88Ù\8aبدÙ\88 Ø°Ø§Ù\84Ù\83 Ù\85Ù\84Ù\81 GPX Ø§Ù\84خاص Ø¨Ù\83 Ù\87Ù\88 %{trace_name} Ù\85ع Ø§Ù\84Ù\88صÙ\81
-        %{trace_description} والعلامات التالية: %{tags}'
-      description_with_tags_html: 'يبدو أن ملف GPX الخاص بك %{trace_name} مع الوصف
-        %{trace_description} والعلامات التالية: %{tags}'
-      description_with_no_tags: يبدو أن ملف GPX الخاص بك %{trace_name} ومع ذالك الوصف
-        %{trace_description} وبدون وسوم
-      description_with_no_tags_html: يبدو أن ملف GPX الخاص بك %{trace_name} مع الوصف
-        %{trace_description} وبدون وسوم
+      description_with_tags: 'Ù\8aبدÙ\88 Ø£Ù\86 Ù\85Ù\84Ù\81Ù\83 Ù\87Ù\88 %{trace_name} Ù\85ع Ø§Ù\84Ù\88صÙ\81 %{trace_description}
+        والعلامات التالية: %{tags}'
+      description_with_tags_html: 'يبدو أن ملفك هو %{trace_name} مع الوصف %{trace_description}
+        والعلامات التالية: %{tags}'
+      description_with_no_tags: يبدو أن ملفك هو %{trace_name} مع الوصف %{trace_description}
+        ولا يحتوي على علامات
+      description_with_no_tags_html: يبدو أن ملفك هو %{trace_name} مع الوصف %{trace_description}
+        ولا يحتوي على علامات
     gpx_failure:
       hi: مرحبًا %{to_user}،
-      failed_to_import: 'فشل الاستيراد، الخطأ هو:'
+      failed_to_import: 'فشل استيراد الملف كملف تتبع GPS. يرجى التأكد من أن الملف
+        عبارة عن ملف GPX صالح أو أرشيف يحتوي على ملفات GPX بتنسيق مدعوم (.tar.gz،
+        .tar.bz2، .tar، .zip، .gpx.gz، .gpx.bz2). هل يمكن أن تكون هناك مشكلة في التنسيق
+        أو بناء الجملة في الملف؟ إليك خطأ الاستيراد:'
       more_info: أكثر معلومة عن جي بي اكس يستورد الفشل و كيف ل يتجنب هم يستطيع يكون
         وجد في%{url}.
       more_info_html: يمكن العثور على مزيد من المعلومات حول إخفاقات استيراد GPX وكيفية
@@ -1702,8 +1709,8 @@ ar:
           الملاحظة بالقرب من %{place}.
         commented_note_html: أعاد %{commenter} تنشيط ملاحظة الخريطة التي علقت عليها.
           الملاحظة قريبة من %{place}.
-      details: Ù\8aÙ\85Ù\83Ù\86 Ø§Ù\84عثÙ\88ر Ø¹Ù\84Ù\89 Ù\85زÙ\8aد Ù\85Ù\86 Ø§Ù\84تÙ\81اصÙ\8aÙ\84 Ø­Ù\88Ù\84 Ù\87Ø°Ù\87 Ø§Ù\84Ù\85Ù\84احظة Ù\81Ù\8a %{url}.
-      details_html: Ù\8aÙ\85Ù\83Ù\86 Ø§Ù\84عثÙ\88ر Ø¹Ù\84Ù\89 Ù\85زÙ\8aد Ù\85Ù\86 Ø§Ù\84تÙ\81اصÙ\8aÙ\84 حول الملاحظة على %{url}.
+      details: Ù\82Ù\85 Ø¨Ø§Ù\84رد Ø£Ù\88 Ø§Ù\84تعرÙ\81 Ø¹Ù\84Ù\89 Ø§Ù\84Ù\85زÙ\8aد Ø­Ù\88Ù\84 Ø§Ù\84Ù\85Ù\84احظة Ø¹Ù\84Ù\89 %{url}.
+      details_html: Ù\82Ù\85 Ø¨Ø§Ù\84رد Ø£Ù\88 Ø§Ù\84تعرÙ\81 Ø¹Ù\84Ù\89 Ø§Ù\84Ù\85زÙ\8aد حول الملاحظة على %{url}.
     changeset_comment_notification:
       hi: أهلا %{to_user}،
       commented:
@@ -1721,12 +1728,12 @@ ar:
         partial_changeset_with_comment: مع تعليق '%{changeset_comment}'
         partial_changeset_with_comment_html: مع التعليق " %{changeset_comment}"
         partial_changeset_without_comment: بدون تعليق
-      details: Ù\8aÙ\85Ù\83Ù\86 Ø§Ù\84عثÙ\88ر Ø¹Ù\84Ù\89 Ù\85زÙ\8aد Ù\85Ù\86 Ø§Ù\84تÙ\81اصÙ\8aÙ\84 Ø­Ù\88Ù\84 Ù\85جÙ\85Ù\88عة Ø§Ù\84تغÙ\8aÙ\8aرات Ù\81Ù\8a %{url}.
-      details_html: Ù\8aÙ\85Ù\83Ù\86 Ø§Ù\84عثÙ\88ر Ø¹Ù\84Ù\89 Ù\85زÙ\8aد Ù\85Ù\86 Ø§Ù\84تÙ\81اصÙ\8aÙ\84 حول مجموعة التغييرات على %{url}.
-      unsubscribe: Ù\84Ø¥Ù\84غاء Ø§Ù\84اشتراÙ\83 Ù\85Ù\86 Ø§Ù\84تحدÙ\8aثات Ù\84Ù\87Ø°Ù\87 Ø§Ù\84تغÙ\8aÙ\8aراتØ\9b Ù\82Ù\85 Ø¨Ø²Ù\8aارة %{url} Ù\88اÙ\86Ù\82ر
-        على "إلغاء الاشتراك".
-      unsubscribe_html: Ù\84Ø¥Ù\84غاء Ø§Ù\84اشتراÙ\83 Ù\81Ù\8a ØªØ­Ø¯Ù\8aثات Ù\87Ø°Ù\87 Ø§Ù\84Ù\85جÙ\85Ù\88عة Ø\8c Ù\82Ù\85 Ø¨Ø²Ù\8aارة %{url}
-        Ù\88اÙ\86Ù\82ر Ù\81Ù\88Ù\82 "Ø¥Ù\84غاء Ø§Ù\84اشتراÙ\83".
+      details: Ù\82Ù\85 Ø¨Ø§Ù\84رد Ø£Ù\88 Ø§Ù\84تعرÙ\81 Ø¹Ù\84Ù\89 Ø§Ù\84Ù\85زÙ\8aد Ø­Ù\88Ù\84 Ù\85جÙ\85Ù\88عة Ø§Ù\84تغÙ\8aÙ\8aرات Ø¹Ù\84Ù\89 %{url}.
+      details_html: Ù\82Ù\85 Ø¨Ø§Ù\84رد Ø£Ù\88 Ø§Ù\84تعرÙ\81 Ø¹Ù\84Ù\89 Ø§Ù\84Ù\85زÙ\8aد حول مجموعة التغييرات على %{url}.
+      unsubscribe: Ù\8aÙ\85Ù\83Ù\86Ù\83 Ø¥Ù\84غاء Ø§Ù\84اشتراÙ\83 Ù\81Ù\8a Ø§Ù\84تحدÙ\8aثات Ø§Ù\84خاصة Ø¨Ù\85جÙ\85Ù\88عة Ø§Ù\84تغÙ\8aÙ\8aرات Ù\87Ø°Ù\87
+        على %{url}.
+      unsubscribe_html: Ù\8aÙ\85Ù\83Ù\86Ù\83 Ø¥Ù\84غاء Ø§Ù\84اشتراÙ\83 Ù\81Ù\8a Ø§Ù\84تحدÙ\8aثات Ø§Ù\84خاصة Ø¨Ù\85جÙ\85Ù\88عة Ø§Ù\84تغÙ\8aÙ\8aرات
+        Ù\87Ø°Ù\87 Ø¹Ù\84Ù\89 %{url}.
   confirmations:
     confirm:
       heading: تحقق من بريدك الإلكتروني
@@ -1802,16 +1809,18 @@ ar:
     muted:
       title: الرسائل المخفية
     reply:
-      wrong_user: "\uFEFFأنت مسجل للدخول باسم '%{user}' ولكن الرسالة التي طلبت الرد
-        عليها لم تكن مرسلة لذلك المستخدم؛ يُرجَى تسجيل الدخول كمستخدم صحيح للرد."
+      wrong_user: لقد قمت بتسجيل الدخول باسم '%{user}' ولكن الرسالة التي طلبت الرد
+        عليها لم يتم إرسالها إلى هذا المستخدم. يرجى تسجيل الدخول باسم المستخدم الصحيح
+        حتى تتمكن من الرد.
     show:
       title: اقرأ الرسالة
       reply_button: رد
       unread_button: التعليم كغير مقروءة
       destroy_button: احذف
       back: رجوع
-      wrong_user: "\uFEFFأنت مسجل للدخول باسم '%{user}' ولكن الرسالة التي طلبت قراءتها
-        لم تكن من أو إلى ذلك المستخدم؛ يُرجَى تسجيل الدخول كمستخدم صحيح للرد."
+      wrong_user: لقد قمت بتسجيل الدخول باسم '%{user}' ولكن الرسالة التي طلبت قراءتها
+        لم يتم إرسالها من قبل هذا المستخدم أو إليه. يرجى تسجيل الدخول باسم المستخدم
+        الصحيح حتى تتمكن من قراءتها.
     sent_message_summary:
       destroy_button: حذف
     heading:
@@ -1828,7 +1837,7 @@ ar:
     new:
       title: نسيان كلمة السر
       heading: أنسيت كلمة السر؟
-      email address: 'عنوان البريد الإلكتروني:'
+      email address: عنوان البريد الإلكتروني
       new password button: أعد ضبط كلمة السر
       help_text: أدخل عنوان البريد الإلكتروني الذي استخدمته للتسجيل، وسوف نرسل عليه
         رابطا يمكنك استخدامه لإعادة تعيين كلمة المرور.
@@ -1877,12 +1886,12 @@ ar:
   sessions:
     new:
       tab_title: تسجيل الدخول
-      email or username: 'عنوان البريد الإلكتروني أو اسم المستخدم:'
-      password: 'كلمة السر:'
+      email or username: عنوان البريد الإلكتروني أو اسم المستخدم
+      password: كلمة المرور
       remember: تذكرني
       lost password link: أنسيت كلمة المرور؟
       login_button: تسجيل الدخول
-      with external: 'بدلا من ذلك، استخدم طرفا ثالثا لتسجيل الدخول:'
+      with external: أو قم بتسجيل الدخول باستخدام طرف ثالث
       auth failure: آسف، لا يمكن الدخول بتلك التفاصيل.
     destroy:
       title: تسجيل الخروج
@@ -1940,10 +1949,11 @@ ar:
       community_driven_community_blogs: مدونات المجتمع
       community_driven_osm_foundation: مؤسسة OSM
       open_data_title: البيانات المفتوحة
-      open_data_1_html: "\nOpenStreetMap هو %{open_data}: أنت حر في استخدامه لأي غرض\n
-        طالما أنك تنسب إلى OpenStreetMap والمساهمين فيه. إذا قمت بتعديل أو \n بناء
-        على البيانات بطرق معينة ، فيجوز لك توزيع النتيجة فقط\nتحت نفس الترخيص. راجع
-        %{copyright_license_link} للحصول على التفاصيل."
+      open_data_1_html: |-
+        OpenStreetMap هو %{open_data}: يمكنك استخدامه لأي غرض
+         طالما أنك تنسب الفضل إلى OpenStreetMap ومساهميه. إذا قمت بتعديل أو
+        البناء على البيانات بطرق معينة، فيجوز لك توزيع النتيجة فقط
+        بموجب نفس الترخيص. راجع %{copyright_license_link} للحصول على التفاصيل.
       open_data_open_data: البيانات المفتوحة
       open_data_copyright_license: صفحة حقوق النشر والترخيص
       legal_title: قانوني
@@ -2170,14 +2180,14 @@ ar:
           ferry: عبارة
           bus: حافلة
           cable_car: عربة أسلاك
-          chair_lift: تلفريك
+          chair_lift: مصعد كرسي
           runway: مدرج مطار
-          taxiway: مدرج مطار لمناورات الطائرات
+          taxiway: ممر الطائرات
           apron: ساحة مطار
           admin: حدود إدارية
           city: مدينة
           forest: غابة
-          wood: ØºØ§Ø¨Ø©
+          wood: Ø®Ø´Ø¨
           golf: ملعب غولف
           park: منتزه
           common: شائع
@@ -2202,7 +2212,7 @@ ar:
           building: مبنى كبير
           station: محطة قطار
           summit: قمة
-          peak: ذروة
+          peak: قمة
           tunnel: غطاء متقطع = نفق
           bridge: غطاء أسود = جسر
           private: وصول خصوصي
@@ -2278,8 +2288,12 @@ ar:
     trace:
       pending: في الانتظار
       count_points:
-        one: 1 نقطة
-        other: '%{count} نقاط'
+        zero: لا نقاط
+        one: '%{count} نقطة'
+        two: نقطتان
+        few: نقاط قليلة
+        many: نقاط كثيرة
+        other: '%{count} نقطة'
       more: المزيد
       trace_details: اعرض تفاصيل الأثر
       view_map: اعرض الخريطة
@@ -2324,23 +2338,23 @@ ar:
       account_settings: إعدادات الحساب
     auth_providers:
       openid:
-        title: تسجيل الدخول بOpenID
-        alt: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù\85 Ù\85سار OpenID
+        title: تسجيل الدخول باستخدام OpenID
+        alt: Ø´Ø¹ار OpenID
       google:
         title: تسجيل الدخول باستخدام جوجل
-        alt: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨ Google OpenID
+        alt: Ø´Ø¹Ø§Ø± Ø¬Ù\88جÙ\84
       facebook:
-        title: تسجيل الدخول باستخدام فيس بوك
-        alt: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø­Ø³Ø§Ø¨ فيسبوك
+        title: تسجيل الدخول باستخدام الفيسبوك
+        alt: Ø´Ø¹Ø§Ø± Ø§Ù\84فيسبوك
       microsoft:
-        title: تسجيل الدخول مع مايكروسوفت
-        alt: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø­Ø³Ø§Ø¨ مايكروسوفت
+        title: تسجيل الدخول باستخدام مايكروسوفت
+        alt: Ø´Ø¹Ø§Ø± مايكروسوفت
       github:
-        title: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø¬Ù\8aثب
-        alt: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù\85 Ø­Ø³Ø§Ø¨ Ø¬Ù\8aثب
+        title: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù\85 GitHub
+        alt: Ø´Ø¹Ø§Ø± GitHub
       wikipedia:
-        title: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¹Ø¨Ø± ويكيبيديا
-        alt: Ø³Ø¬Ù\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù\85 Ø­Ø³Ø§Ø¨ ويكيبيديا
+        title: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù\85 ويكيبيديا
+        alt: Ø´Ø¹Ø§Ø± ويكيبيديا
   oauth:
     permissions:
       missing: لم تسمح بالوصول إلى التطبيق لهذا المرفق
@@ -2367,12 +2381,12 @@ ar:
       no_auto_account_create: للأسف نحن غير قادرين في الوقت الحالي على إنشاء حساب
         لك تلقائيًا.
       about:
-        header: حًرَّة وقابلة للتحرير
+        header: مجاني وقابل للتعديل.
       display name description: اسم المستخدم الخاص بك الظاهر علنًا، يمكنك تغيير هذا
         في التفضيلات في وقت لاحق.
       continue: أنشئ حسابًا
       terms accepted: نشكرك على قبول شروط المساهم الجديدة!
-      use external auth: 'بدلا من ذلك، استخدم طرفا ثالثا لتسجيل الدخول:'
+      use external auth: أو قم بالتسجيل مع طرف ثالث
     terms:
       title: شروط
       heading: شروط
@@ -2474,19 +2488,20 @@ ar:
       option_1: |-
         إذا كنت جديدا في خريطة الشارع المفتوح، الرجاء إنشاء حساب جديد
         باستخدام النموذج أدناه.
-      option_2: "إذا كان لديك حساب بالفعل، فيمكنك تسجيل الدخول إلى حسابك \nباستخدام
-        اسم المستخدم وكلمة المرور الخاصة بك، ثم ربط الحساب \nبمعرفك في إعدادات المستخدم
-        الخاصة بك."
+      option_2: |-
+        إذا كان لديك حساب بالفعل، فيمكنك تسجيل الدخول إلى حسابك
+         باستخدام اسم المستخدم وكلمة المرور، ثم ربط الحساب
+         بمعرفك في إعدادات المستخدم الخاصة بك.
   user_role:
     filter:
-      not_a_role: السلسلة `%{role}' ليست دور صالح.
+      not_a_role: السلسلة '%{role}' ليست دورًا صالحًا.
       already_has_role: لدى المستخدم الدور  %{role} سابقًا
       doesnt_have_role: ليس للمستخدم الدور %{role}.
       not_revoke_admin_current_user: لا يمكن إبطال دور المشرف من المستخدم الحالي.
     grant:
-      are_you_sure: هل أنت متأكد من أنك تريد منح الدور `%{role}' إلى المستخدم `%{name}'؟
+      are_you_sure: هل أنت متأكد أنك تريد منح الدور '%{role}' للمستخدم '%{name}'؟
     revoke:
-      are_you_sure: هل أنت متأكد من أنك تريد إبطال الدور `%{role}' من المستخدم `%{name}'؟
+      are_you_sure: هل أنت متأكد أنك تريد إلغاء الدور '%{role}' من المستخدم '%{name}'؟
   user_blocks:
     model:
       non_moderator_update: يجب أن تكون وسيط لإنشاء أو تحديث عرقلة.
@@ -2523,21 +2538,39 @@ ar:
       time_past_html: انتهى %{time}.
       block_duration:
         hours:
-          few: '%{count} ساعات'
-          one: ساعة واحد
-          two: ساعتين
+          zero: لا ساعة
+          one: '%{count} ساعة'
+          two: ساعتان
+          few: ساعات قليلة
+          many: ساعات كثيرة
           other: '%{count} ساعة'
         days:
+          zero: لا يوم
           one: يوم واحد
+          two: يومان
+          few: أيام قليلة
+          many: أيام كثيرة
           other: '%{count} أيام'
         weeks:
-          one: أسبوع واحد
-          other: '%{count} أسابيع'
+          zero: لا أسبوع
+          one: '%{count} أسبوع'
+          two: أسبوعان
+          few: أسابيع قليلة
+          many: أسابيع كثيرة
+          other: '%{count} أسبوع'
         months:
+          zero: لا شهر
           one: شهر واحد
+          two: شهران
+          few: شهور قليلة
+          many: شهور كثيرة
           other: '%{count} أشهر'
         years:
+          zero: لا سنة
           one: سنة واحدة
+          two: سنتان
+          few: سنين قليلة
+          many: سنين كثيرة
           other: '%{count} سنوات'
     blocks_on:
       title: العرقلات على %{name}
@@ -2585,7 +2618,7 @@ ar:
     index:
       title: ملاحظات مقدمة أو علق عليها %{user}
       heading: ملاحظات %{user}
-      subheading_html: تم إرسال الملاحظات أو التعليق عليها بواسطة %{user}
+      subheading_html: ملاحظات %{submitted} أو %{commented} بواسطة %{user}
       no_notes: لا توجد ملاحظات
       id: معرف
       creator: منشئ
@@ -2635,7 +2668,7 @@ ar:
       center_marker: مركز الخريطة على العلامة
       paste_html: ألصق HTML لتضمينه في موقع ويب
       view_larger_map: عرض خريطة بحجم أكبر
-      only_standard_layer: Ù\8aÙ\85Ù\83Ù\86 Ø§Ø³ØªÙ\8aراد Ø§Ù\84طبÙ\82Ø© Ø§Ù\84Ù\82Ù\8aاسÙ\8aØ© فقط كصورة
+      only_standard_layer: Ù\8aÙ\85Ù\83Ù\86 ØªØµØ¯Ù\8aر Ø§Ù\84طبÙ\82ات Ø§Ù\84Ù\82Ù\8aاسÙ\8aØ© Ù\88خرÙ\8aطة Ø§Ù\84دÙ\88رة Ù\88اÙ\84Ù\86Ù\82Ù\84 فقط كصورة
     embed:
       report_problem: أبلغ عن مشكلة
     key:
index 670e08ad132dfce84e11f5b9fb23daa05fdbb0b2..59489ad0bf9ed8487879a966563e0d36d4e1c977 100644 (file)
@@ -11,7 +11,7 @@ arz:
   helpers:
     submit:
       diary_comment:
-        create: Ø­Ù\81ظ
+        create: ØªØ¹Ù\84Ù\8aÙ\82
       message:
         create: أرسل
       client_application:
@@ -81,7 +81,7 @@ arz:
         longitude: خط الطول
         public: عام
         description: الوصف
-        gpx_file: 'ابلود فايل GPX:'
+        gpx_file: اختر ملف تعقب GPS
         visibility: الرؤية
         tagstring: الوسوم
       message:
@@ -193,7 +193,7 @@ arz:
       user_title: يوميه %{user}
       leave_a_comment: اترك تعليقًا
       login_to_leave_a_comment_html: '%{login_link} لترك تعليق'
-      login: ØªØ³Ø¬Ù\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84
+      login: دخول
     no_such_entry:
       title: مدخله يوميه غير موجودة
       heading: 'لا يوجد مدخله بالمعرّف: %{id}'
@@ -601,7 +601,10 @@ arz:
       see_their_profile: يمكنك أن تشاهد ملفه الشخصى على %{userurl} وإضافته كصديق أيضًا
         إن كنت ترغب فى ذلك.
     gpx_failure:
-      failed_to_import: 'فشل الاستيراد. الخطأ هو:'
+      failed_to_import: 'فشلت في الاستيراد كملف تعقب GPS. من فضلك تحقق من إن الملف
+        الخاص بك هو ملف GPX صالح أو أرشيف يحتوي على ملف (ملفات) GPX في الصيغة المُدعمة
+        (.tar.gz، .tar.bz2, .tar، .zip، .gpx.gz ، .gpx .bz2). ممكن يكون هناك مشكلة
+        في التنسيق أو النص مع ملفك؟ هيك خطأ التأمين:'
       subject: '[خريطه الشارع المفتوحة] فشل استيراد جى بى إكس'
     gpx_success:
       subject: '[خريطه الشارع المفتوحة] نجاح استيراد جى بى إكس'
@@ -674,7 +677,7 @@ arz:
     new:
       title: نسيان كلمه المرور
       heading: أنسيت كلمه المرور؟
-      email address: 'عنوان البريد الإلكتروني:'
+      email address: عنوان البريد الإلكتروني
       new password button: إعاده ضبط كلمه المرور
       help_text: أدخل عنوان البريد الإلكترونى الذى استخدمته للتسجيل ، وسوف نرسل عليه
         رابط يمكنك استخدامه لإعاده تعيين كلمه المرور.
@@ -692,11 +695,11 @@ arz:
       update home location on click: حدّث موقع المنزل عندما أنقر على الخريطة؟
   sessions:
     new:
-      tab_title: ولوج
-      email or username: 'عنوان البريد الإلكترونى أو اسم المستخدم:'
-      password: 'كلمه المرور:'
+      tab_title: دخول
+      email or username: عنوان البريد الإلكتروني أو اسم المستخدم
+      password: كلمة مرور
       lost password link: أنسيت كلمه المرور؟
-      login_button: لُج
+      login_button: دخول
       auth failure: آسف، لا يمكن الدخول بتلك التفاصيل.
   shared:
     pagination:
@@ -739,11 +742,11 @@ arz:
           rail: سكه حديدية
           subway: قطار الأنفاق
           runway: مدرج مطار للإقلاع/الهبوط
-          taxiway: مدرج مطار لمناورات الطائرات
+          taxiway: طريق تاكسي
           apron: ساحه مطار
           admin: حدود إدارية
           forest: غابة
-          wood: ØºØ§Ø¨Ø©
+          wood: Ø§Ù\84خشب
           golf: ملعب غولف
           park: منتزه
           common: شائع
@@ -752,7 +755,7 @@ arz:
           industrial: منطقه صناعية
           commercial: منطقه تجارية
           lake: بحيرة
-          reservoir: خزان
+          reservoir: مخزن
           farm: أرض زراعية
           cemetery: مقبرة
           allotments: حصص سكنية
@@ -765,7 +768,7 @@ arz:
           building: مبنى كبير
           station: محطه قطار
           summit: قمة
-          peak: ذروة
+          peak: قمة
           private: استخدام خصوصي
           construction: الطرق تحت الإنشاء
   traces:
@@ -882,13 +885,13 @@ arz:
       flash success: جميع تعديلاتك الآن عامه، ومسموح لك بالتعديل الآن.
   user_role:
     filter:
-      not_a_role: السلسله `%{role}' ليست دور صالح.
+      not_a_role: السطر '%{role}' مش دور صالح.
       already_has_role: لدى المستخدم الدور  %{role} سابقًا
       doesnt_have_role: ليس للمستخدم الدور %{role}.
     grant:
       are_you_sure: هل أنت متأكد من أنك تريد منح الدور `%{role}' إلى المستخدم `%{name}'؟
     revoke:
-      are_you_sure: هل أنت متأكد من أنك تريد إبطال الدور `%{role}' من المستخدم `%{name}'؟
+      are_you_sure: أكنت متأكد انك بتريد إلغاء الدور '%{role}' من المستخدم '%{name}'?
   user_blocks:
     model:
       non_moderator_update: يجب أن تكون وسيط لإنشاء أو تحديث عرقله.
index 945d9172fcbbbec01d49cd8ee9c9d6dd6569fb55..917cf11bdef9cb11d28da213a0579c90eacfffad 100644 (file)
@@ -13,6 +13,7 @@
 # Author: Vugar 1981
 # Author: Wertuose
 # Author: Şeyx Şamil
+# Author: Əkrəm Cəfər
 ---
 az:
   time:
@@ -134,7 +135,7 @@ az:
         other: təxminən %{count} saat əvvəl
       half_a_minute: yarım dəqiqə əvvəl
   editor:
-    default: Susmaya görə (hal-hazırda %{name})
+    default: Defolt (hal-hazırda %{name})
     id:
       name: iD
       description: iD (brauzerdaxili redaktə)
index b257e705e219affd5fdfde6e82c468173d94c876..a31c0917926d552f0fc070187fd712de64c6d7b7 100644 (file)
@@ -31,8 +31,6 @@ be:
     formats:
       friendly: '%e %B %Y у %H:%M'
       blog: '%e %B %Y'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Абраць файл
index bd6e870821731ec073e9a7db4964f2f0dbf18f9d..cf9c4da1be3d8b1390940b496d2ace121eb9939f 100644 (file)
@@ -66,6 +66,12 @@ bn:
         create: বাধা তৈরি করুন
         update: বাধা হালনাগাদ করুন
   activerecord:
+    errors:
+      messages:
+        display_name_is_user_n: n আপনার ব্যবহারকারী আইডি না হলে user_n হবে না
+      models:
+        user_mute:
+          is_already_muted: ইতিমধ্যেই মিউট করা হয়েছে
     models:
       acl: প্রবেশাধিকার নিয়ন্ত্রণ তালিকা
       changeset: পরিবর্তনসমূহ
@@ -252,6 +258,7 @@ bn:
         reopened_at_by_html: '%{when} %{user} দ্বারা পুনর্সক্রিয়'
       rss:
         title: ওপেনস্ট্রিটম্যাপ টীকা
+        description_all: রিপোর্ট করা, মন্তব্য করা বা বন্ধ করা নোটের তালিকা
         description_area: নোটের তালিকা, রিপোর্ট করা, মন্তব্য করা বা আপনার এলাকায়
           বন্ধ করা [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
         description_item: নোট %{id}-এর জন্য একটি আরএসএস চারণ
@@ -286,6 +293,8 @@ bn:
         retain_changeset_discussions: আপনার পরিবর্তন ধার্য আলোচনাগুলি, যদি করে থাকেন,
           রয়ে যাবে।
         retain_email: আপমার ইমেইল ঠিকানা রয়ে যাবে।
+        recent_editing_html: আপনি সম্প্রতি সম্পাদনা করেছেন বলে আপনার অ্যাকাউন্টটি
+          বর্তমানে মুছে ফেলা যাবে না। %{time} পরে মুছে ফেলা সম্ভব হবে।
         confirm_delete: আপনি কি নিশ্চিত?
         cancel: বাতিল করুন
   accounts:
@@ -337,6 +346,7 @@ bn:
     deleted_ago_by_html: '%{user} কর্তৃক %{time_ago} অপসারিত'
     edited_ago_by_html: '%{user} কর্তৃক %{time_ago} সম্পাদিত'
     version: সংস্করণ
+    redacted_version: সংশোধিত সংস্করণ
     in_changeset: পরিবর্তনসমূহ
     anonymous: নামহীন
     no_comment: (কোনো মন্তব্য নেই)
@@ -349,6 +359,7 @@ bn:
       other: '%{count}টি রাস্তা'
     download_xml: XML ডাউনলোড করুন
     view_history: ইতিহাস দেখুন
+    view_unredacted_history: অসংশোধিত ইতিহাস দেখুন
     view_details: বিস্তারিত দেখুন
     location: 'অবস্থান:'
     node:
@@ -470,6 +481,7 @@ bn:
     index:
       title: পরিবর্তনধার্য
       title_user: '%{user} কর্তৃক পরিবর্তন ধার্য'
+      title_user_link_html: '%{user_link}-এর দ্বারা পরিবর্তনগুলি'
       title_friend: আমার বন্ধুদের দ্বারা পরিবর্তনসেট
       title_nearby: কাছকাছি ব্যবহারকারীর পরিবর্তনধার্য
       empty: কোনো পরিবর্তনধার্য পাওয়া যায়নি।
@@ -485,8 +497,16 @@ bn:
         created: তৈরি হয়েছে
         closed: বন্ধ হয়েছে
         belongs_to: লেখক
+    subscribe:
+      button: আলোচনায় সাবস্ক্রাইব করুন
+    unsubscribe:
+      button: আলোচনায় আনসাবস্ক্রাইব করুন
+    no_such_entry:
+      heading: '%{id} আইডির কোনো ভুক্তি নেই'
     show:
       title: 'পরিবর্তনধার্য: %{id}'
+      created: 'তৈরি করা হয়েছে: %{when}'
+      closed: 'বন্ধ করা হয়েছে: %{when}'
       created_ago_html: '%{time_ago} তৈরি'
       closed_ago_html: '%{time_ago} বন্ধকৃত'
       created_ago_by_html: '%{user} কর্তৃক %{time_ago} তৈরিকৃত'
@@ -495,6 +515,8 @@ bn:
       join_discussion: আলোচনায় যোগ দিতে প্রবেশ করুন
       still_open: চেঞ্জসেট এখনও খোলা - চেঞ্জসেট বন্ধ হয়ে গেলে আলোচনা খোলা হবে।
       hidden_comment_by_html: '%{user} %{time_ago} মন্তব্যটি লুকিয়েছেন'
+      hide_comment: লুকান
+      unhide_comment: দৃশ্যমান করুন
       comment: মন্তব্য
       changesetxml: পরিবর্তনধার্য এক্সএমএল
       osmchangexml: osmChange এক্সএমএল
@@ -618,7 +640,10 @@ bn:
         create:
           notice: অ্যাপ্লিকেশন নিবন্ধিত।
     scopes:
+      address: আপনার আসল ঠিকানা দেখুন
       email: আপনার ইমেইল ঠিকানা দেখুন
+      phone: আপনার ফোন নম্বর দেখুন
+      profile: আপনার প্রোফাইলের তথ্য দেখুন
   errors:
     contact:
       contact: যোগাযোগ
@@ -1196,28 +1221,35 @@ bn:
           fashion: ফ্যাশন সামগ্রীর দোকান
           florist: ফুলওয়ালা
           food: খাবারের দোকান
+          frame: ফ্রেমের দোকান
           funeral_directors: অন্ত্যেষ্টিক্রিয়া পরিচালকবৃন্দ
           furniture: আসবাবপত্র
           garden_centre: বাগান কেন্দ্র
+          gas: গ্যাসের দোকান
           general: সাধারণ দোকান
           gift: উপহারের দোকান
           greengrocer: সবজিওয়ালা
           grocery: মুদি দোকান
           hairdresser: নাপিত
           hardware: যন্ত্রাংশের দোকান
+          health_food: স্বাস্থ্যকর খাবারের দোকান
           hearing_aids: শ্রবণসহায়ক যন্ত্র
+          herbalist: ভেষজ বিশেষজ্ঞ
           hifi: হাই-ফাই দোকান
           houseware: ঘরোয়া জিনিসের দোকান
           ice_cream: আইসক্রিমের দোকান
           interior_decoration: ভিতরের সজ্জা
           jewelry: গহনার দোকান
+          kiosk: কিয়স্কের দোকান
           kitchen: রান্নাঘরের দোকান
           laundry: ধোপার দোকান
           locksmith: চাবিওয়ালা
           lottery: লটারি
           mall: বিপণী বিতান
           massage: ম্যাসেজ
+          medical_supply: চিকিৎসা সামগ্রীর দোকান
           mobile_phone: মোবাইল ফোনের দোকান
+          money_lender: ঋণদাতা
           motorcycle: মোটোরসইকেলের দোকান
           motorcycle_repair: মোটরসাইকেল মেরামতের দোকান
           music: সঙ্গীতের দোকান
@@ -1226,8 +1258,11 @@ bn:
           nutrition_supplements: পুষ্টি সম্পূরক
           optician: চশমা বিক্রেতা
           organic: জৈব খাদ্যের দোকান
+          outdoor: আউটডোর দোকান
           paint: রঙের দোকান
+          pastry: পেস্ট্রির দোকান
           perfumery: সুগন্ধিশালা
+          pet: পোষা প্রাণীর দোকান
           photo: ছবির দোকান
           seafood: সামুদ্রিক খাবার
           second_hand: পুরনো-সামগ্রীর দোকান
@@ -1251,6 +1286,7 @@ bn:
           wine: মদের দোকান
           "yes": দোকান
         tourism:
+          artwork: শিল্পকর্ম
           attraction: আকর্ষণ
           cabin: পর্যটক কেবিন
           camp_site: ক্যাম্পের স্থল
@@ -1287,6 +1323,7 @@ bn:
           "yes": জলপথ
       admin_levels:
         level2: রাষ্ট্রের সীমানা
+        level3: অঞ্চলের সীমানা
         level4: রাজ্যের সীমানা
         level5: অঞ্চলের সীমানা
         level6: প্রদেশের সীমানা
@@ -1304,10 +1341,12 @@ bn:
       select_type: প্রকার নির্বাচন করুন
       search: অনুসন্ধান
       states:
+        ignored: উপেক্ষিত
         open: খুলুন
         resolved: মীমাংসিত
     page:
       user_not_found: ব্যবহারকারীর অস্তিত্ব নেই
+      issues_not_found: এই ধরনের কোনও ইস্যু পাওয়া যায়নি
       status: স্থিতি
       reports: অভিযোগ
       last_updated: সর্বশেষ হালনাগাদ
@@ -1315,6 +1354,9 @@ bn:
       reports_count:
         one: '%{count}টি প্রতিবেদন'
         other: '%{count}টি প্রতিবেদন'
+      states:
+        open: খুলুন
+        resolved: মীমাংসিত
     show:
       resolve: মীমাংসা করুন
       ignore: উপেক্ষা করুন
@@ -1322,6 +1364,7 @@ bn:
       reports_of_this_issue: এই সমস্যা প্রতিবেদন করুন
       read_reports: প্রতিবেদন পড়ুন
       new_reports: নতুন প্রতিবেদন
+      comments_on_this_issue: এই বিষয়ে মন্তব্যসমূহ
     helper:
       reportable_title:
         note: 'টীকা #%{note_id}'
@@ -1542,20 +1585,29 @@ bn:
       delete image: বর্তমান ছবিটি অপসারণ করুন
       replace image: বর্তমান ছবি বদল করুন
       home location: বাড়ির অবস্থান
+      show: দেখাও
+      delete: অপসারণ
     update:
       success: প্রোফাইল পরিবর্তিত হয়েছে।
   sessions:
     new:
-      tab_title: প্রবেশ
+      tab_title: প্রবেশ করুন
       email or username: ইমেইল ঠিকানা অথবা ব্যবহারকারী নাম
       password: পাসওয়ার্ড
       remember: আমাকে মনে রাখো
       lost password link: পাসওয়ার্ড ভুলে গেছেন?
       login_button: প্রবেশ করুন
+      or: অথবা
       auth failure: দুঃখিত, এই তথ্য দিয়ে প্রবেশ করানো যাচ্ছে না।
     destroy:
       title: প্রস্থান
+      heading: ওপেনস্ট্রিটম্যাপ থেকে লগআউট করুন
       logout_button: প্রস্থান
+    suspended_flash:
+      suspended: দুঃখিত, সন্দেহজনক কার্যকলাপের কারণে আপনার অ্যাকাউন্ট স্থগিত করা হয়েছে।
+      contact_support_html: আপনি যদি এই বিষয়ে আলোচনা করতে চান তাহলে অনুগ্রহ করে %{support_link}-এর
+        সাথে যোগাযোগ করুন।
+      support: সহায়তা
   shared:
     markdown_help:
       heading_html: '%{kramdown_link} দিয়ে পার্স করা হয়েছে'
@@ -1573,6 +1625,7 @@ bn:
     richtext_field:
       edit: সম্পাদনা
       preview: প্রাকদর্শন
+      help: সাহায্য
     pagination:
       diary_comments:
         older: পুরাতন মন্তব্য
index f90707719d85ae5865a5bdaf86e710dad6820d96..820609208901d2033e491c947c7a19628043eea4 100644 (file)
@@ -318,11 +318,11 @@ br:
       current email address: Chomlec'h postel a-vremañ
       external auth: Dilesadur diavaez
       openid:
-        link text: petra eo se ?
+        link text: petra eo an dra-se ?
       public editing:
         heading: Kemm foran
         enabled: Gweredekaet. N'eo ket dizanv ha gallout a ra aozañ roadennoù.
-        enabled link text: Petra eo se ?
+        enabled link text: petra eo an dra-se ?
         disabled: Diweredekaet ha ne c'hall ket aozañ roadennoù ; diznav eo an holl
           aozadennoù kent.
         disabled link text: Perak n'on ket evit aozañ ?
@@ -333,7 +333,7 @@ br:
         review link text: Heuilhit al liamm-mañ evel ma karot evit sellet ouzh diferadennoù
           nevez ar c'henlabourer hag asantiñ dezho.
         agreed_with_pd: Disklêriet hoc'h eus ivez emañ ho tegasadennoù en domani foran.
-        link text: Petra eo se ?
+        link text: petra eo an dra-se ?
       save changes button: Enrollañ ar c'hemmoù
       delete_account: Dilemel ar gont...
     go_public:
index 32ad27ecafef4b29766a29ea97e261734a78f702..26024bec2ffd8998d49e49e00fc66b297fc60072 100644 (file)
@@ -2973,9 +2973,9 @@ cs:
       not_revoke_admin_current_user: Správcovskou roli nelze odebrat aktuálně přihlášenému
         uživateli.
     grant:
-      are_you_sure: Opravdu chtete přidělit roli `%{role}' uživateli `%{name}'?
+      are_you_sure: Opravdu chcete přidělit roli „%{role}“ uživateli „%{name}“?
     revoke:
-      are_you_sure: Opravdu chcete odebrat roli `%{role}' uživateli `%{name}'?
+      are_you_sure: Opravdu chcete odebrat roli „%{role}“ uživateli „%{name}“?
   user_blocks:
     model:
       non_moderator_update: K vytvoření nebo aktualizaci bloku musíte být moderátorem.
index 33d4b93ac553508a9c32c3d9733ef7a987d40123..fd2297d509001c47382ff498776ec6ac803a1be5 100644 (file)
@@ -181,19 +181,19 @@ cy:
         many: tua %{count} mis yn ôl
         other: tua %{count} mis yn ôl
       about_x_years:
-        zero: tua %{count} blynedd yn ôl
-        one: tuag %{count} blynedd yn ôl
+        zero: tua %{count} flwyddyn yn ôl
+        one: tua blwyddyn yn ôl
         two: tua %{count} flynedd yn ôl
         few: tua %{count} mlynedd yn ôl
         many: tua %{count} mlynedd yn ôl
         other: tua %{count} blynedd yn ôl
       almost_x_years:
-        zero: bron %{count} blynedd yn ôl
-        one: bron %{count} blynedd yn ôl
-        two: bron %{count} flynedd yn ôl
-        few: bron %{count} blynedd yn ôl
-        many: bron %{count} blynedd yn ôl
-        other: bron %{count} blynedd yn ôl
+        zero: bron %{count} flwyddyn yn ôl
+        one: bron i flwyddyn yn ôl
+        two: bron %{count} flynedd yn ôl
+        few: bron %{count} blynedd yn ôl
+        many: bron %{count} blynedd yn ôl
+        other: bron %{count} blynedd yn ôl
       half_a_minute: hanner munud yn ôl
       less_than_x_seconds:
         zero: llai nag eiliad yn ôl.
@@ -211,7 +211,7 @@ cy:
         other: llai na %{count} munud yn ôl.
       over_x_years:
         zero: dros %{count} blynedd yn ôl
-        one: dros %{count} blynedd yn ôl
+        one: dros flwyddyn yn ôl
         two: dros %{count} flynedd yn ôl
         few: dros %{count} blynedd yn ôl
         many: dros %{count} blynedd yn ôl
@@ -245,8 +245,8 @@ cy:
         many: '%{count} mis yn ôl'
         other: '%{count} mis yn ôl'
       x_years:
-        zero: '%{count} blynedd yn ôl'
-        one: '%{count} blynedd yn ôl'
+        zero: '%{count} flwyddyn yn ôl'
+        one: Blwyddyn yn ôl
         two: '%{count} flynedd yn ôl'
         few: '%{count} blynedd yn ôl'
         many: '%{count} blynedd yn ôl'
@@ -533,14 +533,18 @@ cy:
         closed: Caëwyd
         belongs_to: Awdur
     subscribe:
+      heading: Tanysgrifio i'r drafodaeth grŵp newid ganlynol?
       button: Tanysgrifio i drafodaeth
     unsubscribe:
+      heading: Dad-danysgrifio i'r drafodaeth grŵp newid ganlynol?
       button: Dad-danysgrifio o'r drafodaeth
     heading:
       title: Grŵp newid %{id}
       created_by_html: Crëwyd gan %{link_user} ar %{created}.
     no_such_entry:
       heading: 'Dim cofnod gyda''r id: %{id}'
+      body: Mae'n ddrwg gennym, nid oes grŵp newid gyda'r id %{id}. Gwiriwch eich
+        sillafu, neu efallai bod y ddolen rydych chi wedi ei chlicio arni'n anghywir.
     show:
       title: 'Grŵp newid: %{id}'
       created: 'Crëwyd: %{when}'
@@ -668,6 +672,7 @@ cy:
         title: Cofnodion dyddiadur OpenStreetMap
         description: Cofnodion dyddiadur diweddar gan ddefnyddwyr OpenStreetMap
     subscribe:
+      heading: Tanysgrifio i'r drafodaeth cofnod dyddiadur ganlynol?
       button: Tanysgrifio i drafodaeth
     unsubscribe:
       heading: Dad-danysgrifio o'r drafodaeth cofnod dyddiadur ganlynol?
@@ -1263,7 +1268,7 @@ cy:
           educational_institution: Sefydliad Addysgol
           employment_agency: Asiantaeth Cyflogi
           energy_supplier: Swyddfa Gyflenwr Ynni
-          estate_agent: Gwerthwr Tai
+          estate_agent: Asiant Eiddo
           financial: Swyddfa Gyllid
           government: Swyddfa Llywodraeth
           insurance: Swyddfa Yswiriant
@@ -1379,7 +1384,7 @@ cy:
           e-cigarette: Siop E-Sigaréts
           electronics: Siop Electroneg
           erotic: Siop Erotig
-          estate_agent: Gwerthwr Tai
+          estate_agent: Asiant Eiddo
           fabric: Siop Ddeunydd
           farm: Siop Fferm
           fashion: Siop Ffasiwn
@@ -1730,6 +1735,8 @@ cy:
     lost_password:
       subject: '[OpenStreetMap] Cais ailosod cyfrinair'
       greeting: Helo,
+      hopefully_you: Mae rhywun (chi o bosib) wedi gofyn i'r cyfrinair gael ei ailosod
+        ar gyfrif openstreetmap.org y cyfeiriad e-bost hwn.
       click_the_link: Os mai chi yw hwn, cliciwch ar y ddolen isod i ailosod eich
         cyfrinair.
     note_comment_notification:
@@ -1781,6 +1788,10 @@ cy:
         partial_changeset_without_comment: dim sylw
       details: 'Ateb neu ddysgu mwy am y grŵp newid: %{url}.'
       details_html: 'Ateb neu ddysgu mwy am y grŵp newid: %{url}.'
+      unsubscribe: Gallwch ddad-danysgrifio o ddiweddariadau i'r grŵp newid hwn yn
+        %{url}.
+      unsubscribe_html: Gallwch ddad-danysgrifio o ddiweddariadau i'r grŵp newid hwn
+        yn %{url}.
   confirmations:
     confirm:
       heading: Gwiriwch eich e-byst!
@@ -2655,6 +2666,7 @@ cy:
       application: Ap
       permissions: Caniatadau
       last_authorized: Awdurdodwyd Ddiweddaf
+      no_applications_html: Nid ydych wedi awdurdodi unrhyw apiau %{oauth2} eto.
     application:
       revoke: Dirymu Mynediad
       confirm_revoke: Dirymu mynediad ar gyfer yr ap hwn?
@@ -2875,8 +2887,8 @@ cy:
           many: '%{count} mis'
           other: '%{count} mis'
         years:
-          zero: '%{count} blynedd'
-          one: '%{count} blynedd'
+          zero: '%{count} flwyddyn'
+          one: Blwyddyn
           two: '%{count} flynedd'
           few: '%{count} blynedd'
           many: '%{count} blynedd'
index 8a924c591e6f0ee3a5338635917aaa72ee5cef81..6a56a87e922b18a675ef2b8d88276a7646d323a7 100644 (file)
@@ -1874,7 +1874,7 @@ da:
         other: Du har  %{count} stillegjorte beskeder
     reply:
       wrong_user: Du er logget på som '%{user}', men den besked du har bedt om at
-        svare på blev ikke sendt til den bruger. Log venligst på som den korrekte
+        svare på, blev ikke sendt til den bruger. Log venligst på som den korrekte
         bruger for at svare.
     show:
       title: Læse besked
@@ -1883,8 +1883,8 @@ da:
       destroy_button: Slet
       back: Tilbage
       wrong_user: Du er logget på som '%{user}', men den besked du har bedt om at
-        læse er ikke sendt af eller til den pågældende bruger. Log venligst på som
-        den korrekte bruger for at læse den.
+        læse, er ikke sendt af eller til den bruger. Log venligst på som den korrekte
+        bruger for at læse den.
     sent_message_summary:
       destroy_button: Slet
     heading:
@@ -2552,7 +2552,7 @@ da:
     show:
       title: Viser spor %{name}
       heading: Viser spor %{name}
-      pending: VENTENDE
+      pending: AFVENTENDE
       filename: 'Filnavn:'
       download: hent
       uploaded: 'Overført:'
@@ -2571,7 +2571,7 @@ da:
       visibility: 'Synlighed:'
       confirm_delete: Slet dette spor?
     trace:
-      pending: VENTENDE
+      pending: AFVENTENDE
       count_points:
         one: '%{count} punkt'
         other: '%{count} punkter'
@@ -2910,9 +2910,11 @@ da:
       not_revoke_admin_current_user: Kan ikke trække administratorrollen tilbage fra
         nuværende bruger.
     grant:
-      are_you_sure: Er du sikker på du vil tildele rollen '%{role}' til brugeren '%{name}'?
+      are_you_sure: Er du sikker på, du vil tildele rollen '%{role}' til brugeren
+        '%{name}'?
     revoke:
-      are_you_sure: Er du sikker på du vil fratage rollen "%{role}" fra brugeren "%{name}"?
+      are_you_sure: Er du sikker på, du vil fratage rollen "%{role}" fra brugeren
+        "%{name}"?
   user_blocks:
     model:
       non_moderator_update: Skal være en moderator for at oprette eller opdatere en
@@ -3092,9 +3094,9 @@ da:
         hvis du vil modtage opdateringer til din bemærkning.
       anonymous_warning_log_in: Log ind
       anonymous_warning_sign_up: tilmeld dig
-      advice: Dine oplysninger er offentlige og vil måske blive brugt til at opdatere
+      advice: Din bemærkning er offentlig og vil måske blive brugt til at opdatere
         kortet, så indtast ikke personlige oplysninger eller oplysninger fra kort
-        beskyttet af ophavsret eller mappeoversigter.
+        beskyttet af ophavsret eller katalogfortegnelser.
       add: Tilføj bemærkning
     notes_paging_nav:
       showing_page: Side %{page}
index bdcf3b63c1b2612f8d88fa13a46a102dc28d9fa0..d3b2089e29debdc3c4ff9f1ed3084e1044f82ec6 100644 (file)
@@ -1986,18 +1986,18 @@ de:
         one: '%{count} stummgeschatete Nachricht'
         other: '%{count} stummgeschatete Nachrichten'
     reply:
-      wrong_user: Du bist angemeldet als '%{user}', aber die Nachricht, auf die du
-        antworten wolltest, wurde nicht an diesen Benutzer gesendet. Bitte melde dich
-        zum Beantworten mit dem richtigen Benutzer an.
+      wrong_user: Du bist als '%{user}' angemeldet, aber die Nachricht, auf die du
+        antworten möchtest, wurde nicht an diesen Benutzer gesendet. Bitte melde dich
+        mit dem korrekten Benutzer an, um zu antworten.
     show:
       title: Nachricht lesen
       reply_button: Antworten
       unread_button: Als ungelesen markieren
       destroy_button: Löschen
       back: Zurück
-      wrong_user: Du bist angemeldet als '%{user}', aber die Nachricht, die du lesen
-        wolltest, wurde von einem oder an einen anderen Benutzer geschickt. Bitte
-        melde dich zum Lesen mit dem richtigen Benutzer an.
+      wrong_user: Du bist als '%{user}' angemeldet, aber die Nachricht, die du lesen
+        möchtest, wurde nicht von diesem Benutzer oder an diesen gesendet. Bitte melde
+        dich mit dem korrekten Benutzer an, um sie zu lesen.
     sent_message_summary:
       destroy_button: Löschen
     heading:
@@ -3069,8 +3069,8 @@ de:
       not_revoke_admin_current_user: Die Administratorrolle kann nicht dem aktuellen
         Benutzer entzogen werden.
     grant:
-      are_you_sure: Bist du sicher, dass du Nutzer „%{name}“ der Rolle „%{role}“ zuordnen
-        möchtest?
+      are_you_sure: Bist du sicher, dass du Benutzer „%{name}“ der Rolle „%{role}“
+        zuordnen möchtest?
     revoke:
       are_you_sure: Bist du sicher, dass du die Zuordnung von Benutzer „%{name}“ zur
         Rolle „%{role}“ aufheben willst?
index 2bc5afd2aa56b52aec44f37aa14c1f542ac02786..a1056ee0937d1ada9aa2b6b843d822d57566ac53 100644 (file)
@@ -1923,7 +1923,7 @@ el:
         one: '%{count} μήνυμα σε σίγαση'
         other: Έχετε %{count} μηνύματα σε σίγαση
     reply:
-      wrong_user: Έχετε συνδεθεί ως «%{user}» αλλά το μήνυμα που ζητάτε να απαντήσετε
+      wrong_user: Έχετε συνδεθεί ως '%{user}' αλλά το μήνυμα που ζητάτε να απαντήσετε
         δεν έχει σταλεί σε αυτόν το χρήστη. Παρακαλούμε συνδεθείτε με το σωστό όνομα
         χρήστη ώστε να μπορέσετε να απαντήσετε.
     show:
@@ -1932,7 +1932,7 @@ el:
       unread_button: Σήμανση ως αδιάβαστο
       destroy_button: Διαγραφή
       back: Επιστροφή
-      wrong_user: Έχετε συνδεθεί ως «%{user}» αλλά το μήνυμα που ζητάτε να διαβάσετε
+      wrong_user: Έχετε συνδεθεί ως '%{user}' αλλά το μήνυμα που ζητάτε να διαβάσετε
         δεν έχει σταλεί σε εσάς ούτε από εσάς. Παρακαλούμε συνδεθείτε με το σωστό
         όνομα χρήστη ώστε να μπορέσετε να το διαβάσετε.
     sent_message_summary:
@@ -2095,9 +2095,9 @@ el:
       community_driven_community_blogs: ιστολόγια κοινότητας
       community_driven_osm_foundation: Ίδρυμα OSM
       open_data_title: Ανοικτά Δεδομένα
-      open_data_1_html: 'Το OpenStreetMap ÎµÎ¯Î½Î±Î¹ %{open_data}: ÎµÎ¯Ï\83Ï\84ε ÎµÎ»ÎµÏ\8dθεÏ\81οι Î½Î± Ï\84ην
+      open_data_1_html: 'Το OpenStreetMap ÎµÎ¯Î½Î±Î¹ %{open_data}: ÎµÎ¯Ï\83Ï\84ε ÎµÎ»ÎµÏ\8dθεÏ\81οι Î½Î± Ï\84α
         χρησιμοποιήστε για οποιονδήποτε σκοπό, εφόσον μνημονεύετε το OpenStreetMap
-        ÎºÎ±Î¹ Ï\84οÏ\85Ï\82 Ï\83Ï\85νειÏ\83Ï\86έÏ\81ονÏ\84ές του. Εάν προσαρμόσετε ή αξιοποιήσετε αυτά τα δεδομένα
+        ÎºÎ±Î¹ Ï\84οÏ\85Ï\82 Ï\83Ï\85νειÏ\83Ï\86έÏ\81ονÏ\84ες του. Εάν προσαρμόσετε ή αξιοποιήσετε αυτά τα δεδομένα
         με συγκεκριμένους τρόπους, πρέπει να διανείμετε το αποτέλεσμα μόνο υπό την
         ίδια άδεια χρήσης. Δείτε τη σελίδα %{copyright_license_link} για λεπτομέρειες.'
       open_data_open_data: ανοιχτά δεδομένα
@@ -2187,13 +2187,13 @@ el:
         more_2_1_api_usage_policy: Πολιτική Χρήσης API
         more_2_1_tile_usage_policy: Πολιτική Χρήσης Πλακιδίων
         more_2_1_nominatim_usage_policy: Πολιτική Χρήσης Nominatim
-        contributors_title_html: Î\9fι Ï\83Ï\85νειÏ\83Ï\86έÏ\81ονÏ\84ές μας
+        contributors_title_html: Î\9fι Ï\83Ï\85νειÏ\83Ï\86έÏ\81ονÏ\84ες μας
         contributors_intro_html: 'Οι συνεισφέροντες μας είναι χιλιάδες άτομα. Επίσης
           έχουμε περιλάβει δεδομένα ανοικτής άδειας από εθνικές υπηρεσίες χαρτογράφησης
           και άλλες πηγές, μεταξύ αυτών:'
         contributors_at_credit_html: |-
-          %{austria}: Περιέχει δεδομένα από %{stadt_wien_link} (under %{cc_by_link}), %{land_vorarlberg_link}
-          και Land Tirol (under %{cc_by_at_with_amendments_link}).
+          %{austria}: Περιέχει δεδομένα από %{stadt_wien_link} (υπό %{cc_by_link}), %{land_vorarlberg_link}
+          και Land Tirol (υπό %{cc_by_at_with_amendments_link}).
         contributors_at_austria: Αυστρία
         contributors_at_stadt_wien: Stadt Wien
         contributors_at_cc_by: CC BY
@@ -2339,7 +2339,7 @@ el:
     fixthemap:
       title: Αναφέρετε πρόβλημα / Διορθώστε τον χάρτη
       how_to_help:
-        title: Î Ï\8eς να Βοηθήσετε
+        title: Î Ï\89ς να Βοηθήσετε
         join_the_community:
           title: Γνωρίστε την κοινότητα
           explanation_html: Αν έχετε παρατηρήσει ένα πρόβλημα με τα δεδομένα του χάρτη
@@ -2390,7 +2390,7 @@ el:
           που βασίζονται στο OpenStreetMap και άλλες υπηρεσίες.
       welcomemat:
         title: Για τις Οργανώσεις
-        description: Για μια οργάνωση που κάνει σχέδια για το OpenStreetMap? Βρείτε
+        description: Για μια οργάνωση που κάνει σχέδια για το OpenStreetMap; Βρείτε
           ότι χρειάζεται στο Welcome Mat.
       wiki:
         title: OpenStreetMap Wiki
@@ -2988,17 +2988,17 @@ el:
         να συσχετίσετε τον λογαριασμό με το ID σας στις ρυθμίσεις χρήστη.
   user_role:
     filter:
-      not_a_role: Î\97 Ï\83Ï\84οιÏ\87ειοÏ\83ειÏ\81ά `%{role}' δεν είναι ένας έγκυρος ρόλος.
+      not_a_role: Î\97 Ï\83Ï\85μβολοÏ\83ειÏ\81ά '%{role}' δεν είναι ένας έγκυρος ρόλος.
       already_has_role: Ο χρήστης έχει ήδη ρόλο %{role}.
       doesnt_have_role: Ο χρήστης δεν έχει ρόλο %{role}.
       not_revoke_admin_current_user: Ο διαχειριστικός ρόλος δεν μπορεί να αναιρεθεί
         από τον τρέχον χρήστη.
     grant:
-      are_you_sure: Είστε βέβαιος ότι θέλετε να εκχωρήσετε το ρόλο `%{role}' στον
-        χρήστη `%{name}'?
+      are_you_sure: Είστε βέβαιος ότι θέλετε να εκχωρήσετε το ρόλο '%{role}' στον
+        χρήστη '%{name}';
     revoke:
-      are_you_sure: Σίγουρα θέλετε να ανακαλέστε τον ρόλο «%{role}» από τον χρήστη
-        «%{name}»;
+      are_you_sure: Σίγουρα θέλετε να ανακαλέστε τον ρόλο '%{role}' από τον χρήστη
+        '%{name}';
   user_blocks:
     model:
       non_moderator_update: Πρέπει να είστε συντονιστής για να δημιουργήσετε ή να
@@ -3400,7 +3400,7 @@ el:
       user: 'Δημιουργός:'
       edit: Επεξεργασία αυτής της παράληψης
       destroy: Κατάργηση αυτής της παράληψης
-      confirm: Είσαι σίγουρος?
+      confirm: Είσαι σίγουρος;
     create:
       flash: Η παράληψη δημιουργήθηκε.
     update:
index ce7f9d925f9de3c06533a1fbd9406f8e1e0abba2..b478474b2ae4dd8c2e47c7e9b8f5dd7d65f5efdc 100644 (file)
@@ -29,6 +29,7 @@
 # Author: Michel Bakni
 # Author: Mvolz
 # Author: Sampablokuper
+# Author: Samthecrazyman
 # Author: Samwilson
 # Author: Shirayuki
 # Author: Smsm1
@@ -104,7 +105,6 @@ en-GB:
       client_application:
         name: Name (Required)
         url: Main Application URL (Required)
-        callback_url: 'Callback URL:'
         support_url: Support URL
         allow_read_prefs: read their user preferences
         allow_write_prefs: modify their user preferences
@@ -143,11 +143,8 @@ en-GB:
       redaction:
         description: Description
       report:
-        category: 'Select a reason for your report:'
         details: Please provide some more details about the problem (required).
       user:
-        email: E-mail
-        new_email: New Email Address
         active: Active
         display_name: Display Name
         description: Profile Description
@@ -244,7 +241,6 @@ en-GB:
     edit:
       title: Edit account
       my settings: My settings
-      current email address: Current Email Address
       external auth: External Authentication
       openid:
         link text: what is this?
@@ -268,8 +264,6 @@ en-GB:
       heading: Public editing
       make_edits_public_button: Make all my edits public
     update:
-      success_confirm_needed: User information updated successfully. Check your email
-        for a note to confirm your new email address.
       success: User information updated successfully.
   browse:
     version: Version
@@ -424,12 +418,7 @@ en-GB:
       title: New Diary Entry
     form:
       location: Location
-      use_map_link: Use map
     index:
-      title: Users' diaries
-      title_friends: Friends' diaries
-      title_nearby: Nearby Users' diaries
-      user_title: '%{user}''s diary'
       in_language_title: Diary Entries in %{language}
       new: New Diary Entry
       new_title: Compose a new entry in my user diary
@@ -438,11 +427,8 @@ en-GB:
     page:
       recent_entries: Recent diary entries
     edit:
-      title: Edit diary entry
       marker_text: Diary entry location
     show:
-      title: '%{user}''s diary | %{title}'
-      user_title: '%{user}''s diary'
       leave_a_comment: Leave a comment
       login_to_leave_a_comment_html: '%{login_link} to leave a comment'
     no_such_entry:
@@ -531,7 +517,7 @@ en-GB:
         amenity:
           animal_shelter: Animal Shelter
           arts_centre: Arts Centre
-          atm: ATM
+          atm: Cash Machine
           bank: Bank
           bar: Bar
           bbq: BBQ
@@ -541,11 +527,10 @@ en-GB:
           bicycle_repair_station: Bicycle Repair Station
           biergarten: Beer Garden
           blood_bank: Blood Bank
-          boat_rental: Boat Rental
+          boat_rental: Boat Hire
           brothel: Brothel
           bureau_de_change: Bureau de Change
           bus_station: Bus Station
-          cafe: Café
           car_rental: Car Hire
           car_sharing: Car Sharing
           car_wash: Car Wash
@@ -636,19 +621,16 @@ en-GB:
           viaduct: Viaduct
           "yes": Bridge
         building:
-          apartment: Apartment
-          apartments: Apartments
+          apartment: Flat
+          apartments: Flats
           bungalow: Bungalow
           cabin: Cabin
           chapel: Chapel
-          church: Church
           college: College Building
           commercial: Commercial Building
           construction: Building under Construction
           garage: Garage
           garages: Garages
-          hospital: Hospital
-          hotel: Hotel
           house: House
           industrial: Industrial Building
           roof: Roof
@@ -679,7 +661,7 @@ en-GB:
           construction: Highway under construction
           corridor: Corridor
           cycleway: Cycle Path
-          elevator: Elevator
+          elevator: Lift
           emergency_access_point: Emergency Access Point
           footway: Footpath
           ford: Ford
@@ -707,7 +689,7 @@ en-GB:
           speed_camera: Speed Camera
           steps: Steps
           stop: Stop Sign
-          street_lamp: Street Lamp
+          street_lamp: Lamp Post
           tertiary: Tertiary Road
           tertiary_link: Tertiary Road
           track: Track
@@ -806,7 +788,6 @@ en-GB:
         man_made:
           adit: Adit
           advertising: Advertising
-          antenna: Antenna/Antennae
           avalanche_protection: Avalanche Protection
           beacon: Beacon
           beam: Beam
@@ -963,7 +944,7 @@ en-GB:
           tram_stop: Tram Stop
           yard: Railway Yard
         shop:
-          alcohol: Off Licence
+          alcohol: Off-licence
           antiques: Antiques
           art: Art Shop
           bakery: Bakery
@@ -976,7 +957,7 @@ en-GB:
           butcher: Butcher
           car: Car Shop
           car_parts: Car Parts
-          car_repair: Car Repair
+          car_repair: Mechanic
           carpet: Carpet Shop
           charity: Charity Shop
           chemist: Chemist
@@ -1008,7 +989,7 @@ en-GB:
           hardware: Hardware Store
           houseware: Houseware Shop
           interior_decoration: Interior Decoration
-          jewelry: Jewellers
+          jewelry: Jewellery Shop
           kiosk: Kiosk Shop
           kitchen: Kitchen Shop
           laundry: Laundry
@@ -1030,7 +1011,6 @@ en-GB:
           second_hand: Second-hand Shop
           shoes: Shoe Shop
           sports: Sports Shop
-          stationery: Stationers
           supermarket: Supermarket
           tailor: Tailor
           ticket: Ticket Shop
@@ -1038,7 +1018,7 @@ en-GB:
           toys: Toy Shop
           travel_agency: Travel Agency
           video: Video Shop
-          wine: Off Licence
+          wine: Off-licence
           "yes": Shop
         tourism:
           alpine_hut: Alpine Hut
@@ -1107,7 +1087,7 @@ en-GB:
     edit: Edit
     history: History
     export: Export
-    gps_traces: GPS Traces
+    gps_traces: GPS Tracks
     user_diaries: User Diaries
     edit_with: Edit with %{editor}
     intro_header: Welcome to OpenStreetMap!
@@ -1158,14 +1138,10 @@ en-GB:
     email_confirm:
       subject: '[OpenStreetMap] Confirm your e-mail address'
       greeting: Hi,
-      hopefully_you: Someone (hopefully you) would like to change their email address
-        over at %{server_url} to %{new_address}.
       click_the_link: If this is you, please click the link below to confirm the change.
     lost_password:
       subject: '[OpenStreetMap] Password reset request'
       greeting: Hi,
-      hopefully_you: Someone (possibly you) has asked for the password to be reset
-        on this email address's openstreetmap.org account.
       click_the_link: If this is you, please click the link below to reset your password.
     note_comment_notification:
       anonymous: An anonymous user
@@ -1205,10 +1181,6 @@ en-GB:
         partial_changeset_without_comment: without comment
   confirmations:
     confirm:
-      heading: Check your email!
-      introduction_1: We sent you a confirmation email.
-      introduction_2: Confirm your account by clicking on the link in the email and
-        you'll be able to start mapping.
       press confirm button: Press the confirm button below to activate your account.
       button: Confirm
       success: Confirmed your account, thanks for signing up!
@@ -1221,7 +1193,6 @@ en-GB:
       press confirm button: Press the confirm button below to confirm your new e-mail
         address.
       button: Confirm
-      success: Confirmed your change of email address!
       failure: An e-mail address has already been confirmed with this token.
       unknown_token: That confirmation code has expired or does not exist.
   messages:
@@ -1285,7 +1256,6 @@ en-GB:
     new:
       title: Lost password
       heading: Forgotten Password?
-      email address: E-mail Address
       new password button: Reset password
       help_text: Enter the e-mail address you used to sign up, we will send a link
         to it that you can use to reset your password.
@@ -1430,7 +1400,6 @@ en-GB:
           description: Additional sources listed on the OpenStreetMap wiki
       export_button: Export
     fixthemap:
-      title: Report a problem/Fix the map
       how_to_help:
         title: How to Help
         join_the_community:
@@ -1498,7 +1467,7 @@ en-GB:
           rail: Railway
           subway: Subway
           cable_car: Cable car
-          chair_lift: Chair lift
+          chair_lift: Chairlift
           runway: Airport Runway
           taxiway: Taxiway
           apron: Airport apron
@@ -1579,18 +1548,13 @@ en-GB:
           for these to finish before uploading any more, so as not to block the queue
           for other users.
     edit:
-      title: Editing trace %{name}
-      heading: Editing trace %{name}
       visibility_help: what does this mean?
     show:
-      title: Viewing trace %{name}
-      heading: Viewing trace %{name}
       pending: PENDING
       filename: 'Filename:'
       download: download
       uploaded: 'Uploaded:'
       points: 'Points:'
-      start_coordinates: 'Start coordinate:'
       map: map
       edit: edit
       owner: 'Owner:'
@@ -1615,8 +1579,6 @@ en-GB:
       private: PRIVATE
       trackable: TRACKABLE
     index:
-      public_traces: Public GPS traces
-      public_traces_from: Public GPS traces from %{user}
       description: Browse recent GPS track uploads
       tagged_with: ' tagged with %{tags}'
       upload_trace: Upload a trace
@@ -1721,7 +1683,6 @@ en-GB:
       comments: Comments
       create_block: Block this User
       activate_user: Activate this User
-      confirm_user: Confirm this user
       hide_user: Hide this User
       unhide_user: Unhide this User
       delete_user: Delete this User
@@ -1753,15 +1714,8 @@ en-GB:
         using the form below.
   user_role:
     filter:
-      not_a_role: The string `%{role}' is not a valid role.
       already_has_role: The user already has role %{role}.
       doesnt_have_role: The user does not have role %{role}.
-    grant:
-      are_you_sure: Are you sure you want to grant the role `%{role}' to the user
-        `%{name}'?
-    revoke:
-      are_you_sure: Are you sure you want to revoke the role `%{role}' from the user
-        `%{name}'?
   user_blocks:
     model:
       non_moderator_update: Must be a moderator to create or update a block.
@@ -1801,11 +1755,9 @@ en-GB:
           other: '%{count} hours'
     blocks_on:
       title: Blocks on %{name}
-      heading_html: List of blocks on %{name}
       empty: '%{name} has not been blocked yet.'
     blocks_by:
       title: Blocks by %{name}
-      heading_html: List of blocks by %{name}
       empty: '%{name} has not made any blocks yet.'
     show:
       title: '%{block_on} blocked by %{block_by}'
@@ -1828,7 +1780,6 @@ en-GB:
   notes:
     index:
       title: Notes submitted or commented on by %{user}
-      heading: '%{user}''s notes'
       subheading_html: Notes %{submitted} or %{commented} by %{user}
       id: Id
       creator: Creator
@@ -1963,7 +1914,6 @@ en-GB:
         slight_left_without_exit: Slight left onto %{name}
         via_point_without_exit: (via point)
         follow_without_exit: Follow %{name}
-        roundabout_without_exit: At roundabout take exit onto %{name}
         leave_roundabout_without_exit: Leave roundabout - %{name}
         stay_roundabout_without_exit: Stay on roundabout - %{name}
         start_without_exit: Start on %{name}
@@ -2000,20 +1950,10 @@ en-GB:
       query_features: Query features
       centre_map: Centre map here
   redactions:
-    edit:
-      heading: Edit redaction
-      title: Edit redaction
     index:
       empty: No redactions to show.
-      heading: List of redactions
-      title: List of redactions
-    new:
-      heading: Enter information for new redaction
-      title: Creating new redaction
     show:
       description: 'Description:'
-      heading: Showing redaction "%{title}"
-      title: Showing redaction
       user: 'Creator:'
       edit: Edit this redaction
       destroy: Remove this redaction
index 85fec6181575fc84c93a60c47c44ee03c9132fb1..6ecf31b3d68a93298a927866c9d829614a5125e3 100644 (file)
@@ -127,7 +127,7 @@ et:
         longitude: Pikkus
         public: Avalik
         description: Kirjeldus
-        gpx_file: Laadi üles GPX-fail
+        gpx_file: Vali GPX-rajafail
         visibility: Nähtavus
         tagstring: Sildid
       message:
@@ -1555,13 +1555,16 @@ et:
       befriend_them: Sa võid ta lisada oma sõbraks aadressil %{befriendurl}.
       befriend_them_html: Saad ta ka enda sõbraks lisada aadressil %{befriendurl}.
     gpx_description:
-      description_with_tags_html: Tundub, et sinu GPX-fail %{trace_name} kirjeldusega
+      description_with_tags_html: Tundub, et sinu fail %{trace_name} kirjeldusega
         %{trace_description} ning siltidega %{tags}
-      description_with_no_tags_html: Tundub, et sinu siltideta GPX-fail %{trace_name}
+      description_with_no_tags_html: Tundub, et sinu siltideta fail %{trace_name}
         kirjeldusega %{trace_description}
     gpx_failure:
       hi: Tere, %{to_user}
-      failed_to_import: 'importimine ebaõnnestus. Siin on viga:'
+      failed_to_import: 'importimine GPS-rajafailiks ebaõnnestus. Palun veendu, et
+        sinu fail on korrektne GPX-fail või arhiiv, mis sisaldab GPX-faili või GPX-faile
+        ja mille vorming on toetatud (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+        Kas sinu failis võib olla vormingu- või süntaksiviga? Siin on importimisviga:'
       more_info_html: Rohkem teavet GPX-failide importimise funktsiooni ja nende vältimise
         kohta leiad aadressilt %{url}.
       subject: '[OpenStreetMap] GPX-faili importimine nurjus'
@@ -2479,24 +2482,25 @@ et:
       oauth2_authorizations: OAuth 2 volitused
       muted_users: Vaigistatud kasutajad
     auth_providers:
+      openid_login_button: Jätka
       openid:
         title: Logi sisse OpenID-ga
-        alt: Logi sisse OpenID URL-iga
+        alt: OpenID logo
       google:
         title: Logi sisse Google'i kaudu
-        alt: Logi sisse Google'i OpenID-ga
+        alt: Google'i logo
       facebook:
         title: Logi sisse Facebooki kaudu
-        alt: Logi sisse Facebooki kontoga
+        alt: Facebooki logo
       microsoft:
         title: Logi sisse Microsofti kaudu
-        alt: Logi sisse Microsofti kontoga
+        alt: Microsofti logo
       github:
         title: Logi sisse GitHubi kaudu
-        alt: Logi sisse GitHubi kontoga
+        alt: GitHubi logo
       wikipedia:
         title: Logi sisse Vikipeedia kaudu
-        alt: Logi sisse Vikipeedia kontoga
+        alt: Vikipeedia logo
   oauth:
     scopes:
       openid: Sisse logida kasutades OpenStreetMapi
@@ -2509,6 +2513,9 @@ et:
       write_notes: Muuta märkusi
       write_redactions: Katta kaardiandmed kinni
       read_email: Lugeda kasutaja e-posti aadressi
+      consume_messages: Lugeda ja kustutada kasutaja sõnumeid ning uuendada nende
+        olekut
+      send_messages: Saata teistele kasutajatele erasõnumeid
       skip_authorization: Kiita rakendus heaks automaatselt
   oauth2_applications:
     index:
@@ -2577,6 +2584,9 @@ et:
       continue: Registreeru
       terms accepted: Täname, et nõustusid uute kaastöötingimustega!
       email_help:
+        privacy_policy: andmekaitsereeglitega
+        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
@@ -2709,13 +2719,14 @@ et:
         ja parooli ning siduda seejärel kasutajasätetes konto oma ID-ga.
   user_role:
     filter:
-      not_a_role: String `%{role}' ei ole kehtiv roll.
+      not_a_role: String '%{role}' ei ole kehtiv roll.
       already_has_role: Kasutajal on juba roll %{role}.
       doesnt_have_role: Kasutajal ei ole rolli %{role}.
     grant:
-      are_you_sure: Oled kindel, et soovid anda rolli `%{role}' kasutajale `%{name}'?
+      are_you_sure: Kas oled kindel, et soovid anda rolli '%{role}' kasutajale '%{name}'?
     revoke:
-      are_you_sure: Oled kindel, et soovid tühistada kasutaja `%{name}' rolli `%{role}'?
+      are_you_sure: Kas oled kindel, et soovid tühistada kasutaja '%{name}' rolli
+        '%{role}'?
   user_blocks:
     model:
       non_moderator_update: Blokeeringu loomiseks või uuendamiseks pead olema moderaator.
@@ -2895,14 +2906,15 @@ et:
       custom_dimensions: Vali suurus käsitsi
       format: 'Vorming:'
       scale: 'Mõõtkava:'
-      image_dimensions: Pildil näeb tavakaarti suurusega %{width} × %{height}
+      image_dimensions: Pildil näeb kihti %{layer} suuruses %{width} × %{height}
       download: Laadi alla
       short_url: Lühilink
       include_marker: Lisa marker
       center_marker: Tsentreeri kaart markerile
       paste_html: Kopeeri HTML-kood oma veebilehele
       view_larger_map: Vaata suuremat kaarti
-      only_standard_layer: Ainult tavakaarti saab pildina eksportida
+      only_standard_layer: Ainult tava-, ratta- ja transpordikaardi kihte saab pildina
+        eksportida
     embed:
       report_problem: Teata probleemist
     key:
index d3bc5c54989cdfeade88698d5639d2ec755fbb8c..b13f6a59a096720e53e0ee02dcff6f2e02e7b94b 100644 (file)
@@ -55,6 +55,7 @@
 # Author: Linedwell
 # Author: Litlok
 # Author: Ljubinka
+# Author: LouisXIV
 # Author: Ltrlg
 # Author: Lucky
 # Author: Lulucmy
@@ -95,6 +96,7 @@
 # Author: SleaY
 # Author: StephaneP
 # Author: Syl
+# Author: Tacsipacsi
 # Author: Terio legale
 # Author: The RedBurn
 # Author: Thibaut120094
@@ -319,6 +321,7 @@ fr:
         other: il y a %{count} ans
   printable_name:
     with_name_html: '%{name} (%{id})'
+    current_and_old_links_html: '%{current_link}, %{old_link}'
   editor:
     default: Par défaut (actuellement %{name})
     id:
@@ -415,7 +418,7 @@ fr:
           et accepter les nouvelles Conditions de contribution.
         agreed_with_pd: Vous avez également déclaré que vous considérez vos modifications
           comme relevant du domaine public.
-        link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms/FR
+        link: https://osmfoundation.org/wiki/Licence/Contributor_Terms/FR
         link text: qu’est-ce ?
       save changes button: Enregistrer les modifications
       delete_account: Supprimer le compte…
@@ -2001,7 +2004,7 @@ fr:
         one: un ancien message
         other: '%{count} anciens messages'
     reply:
-      wrong_user: Vous êtes identifié(e) sous le nom `%{user}' mais le message auquel
+      wrong_user: Vous êtes identifié(e) sous le nom « %{user} » mais le message auquel
         vous souhaitez répondre n’a pas été envoyé à cet utilisateur. Veuillez vous
         connecter avec l’identifiant correct pour pouvoir répondre.
     show:
@@ -2010,9 +2013,9 @@ fr:
       unread_button: Marque comme non lu
       destroy_button: Supprimer
       back: Retour
-      wrong_user: Vous êtes identifié comme « %{user} » mais le message que vous avez
-        demandé de lire n’a pas été envoyé par cet utilisateur, ni ne lui a été destiné.
-        Veuillez vous connecter avec le bon identifiant pour pouvoir le lire.
+      wrong_user: Vous êtes identifié(e) sous le nom « %{user} » mais le message que
+        vous souhaitez lire n’a pas été envoyé par ou à cet utilisateur. Veuillez
+        vous connecter avec le bon identifiant pour pouvoir le voir.
     sent_message_summary:
       destroy_button: Supprimer
     heading:
@@ -2115,6 +2118,7 @@ fr:
   shared:
     markdown_help:
       heading_html: Analysé avec %{kramdown_link}
+      kramdown_url: https://kramdown.gettalong.org/quickref.html
       headings: Titres
       heading: Titre
       subheading: Sous-titre
@@ -2280,7 +2284,7 @@ fr:
         contributors_at_land_vorarlberg: Land de Vorarlberg
         contributors_at_land_vorarlberg_url: https://vorarlberg.at/-/wms-dienste
         contributors_at_cc_by_at_with_amendments: CC BY AT avec amendements
-        contributors_at_cc_by_at_with_amendments_url: https://www.tirol.gv.at/sicherheit/geoinformationen-karten/
+        contributors_at_cc_by_at_with_amendments_url: https://www.tirol.gv.at/data/nutzungsbedingungen/
         contributors_au_credit_html: |-
           %{australia} : incorpore ou est développé à l'aide des Limites administratives © %{geoscape_australia_link}
           sous licence du Commonwealth d’Australie sous %{cc_licence_link}.
@@ -2932,7 +2936,7 @@ fr:
         privacy_policy: politique de confidentialité
         privacy_policy_title: Politique de confidentialité de l’OSMF, qui comprend
           une section sur les adresses de courriel
-        contributor_terms_url: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms/FR
+        contributor_terms_url: https://osmfoundation.org/wiki/Licence/Contributor_Terms/FR
         contributor_terms: Conditions de contribution
       continue: S’inscrire
       terms accepted: Merci d’avoir accepté les nouveaux termes du contributeur !
@@ -3333,7 +3337,7 @@ fr:
         standard: Standard
         cycle_map: Carte cyclable
         transport_map: Carte de transport
-        tracestracktop_topo: Topo de Tracestack
+        tracestracktop_topo: Topo de Tracestrack
         hot: Humanitaire
       layers:
         header: Couches de carte
@@ -3342,15 +3346,15 @@ fr:
         gps: Traces GPS publiques
         overlays: Activer des surcouches pour corriger des problèmes de la carte
         title: Couches
-      openstreetmap_contributors: Les Contributeurs d’OpenStreetMap
+      openstreetmap_contributors: Contributeurs OpenStreetMap
       make_a_donation: Faire un don
       website_and_api_terms: Conditions d’utilisation du site web et de l’API
-      cyclosm_credit: Style de carreaux par %{cyclosm_link} hébergé par %{osm_france_link}
+      cyclosm_credit: Style de tuiles par %{cyclosm_link} hébergé par %{osm_france_link}
       osm_france: OpenStreetMap France
-      thunderforest_credit: Carreaux fournis aimablement par %{thunderforest_link}
+      thunderforest_credit: Tuiles fournies aimablement par %{thunderforest_link}
       andy_allan: Andy Allan
-      tracestrack_credit: Carreaux fournis aimablement par %{tracestrack_link}
-      hotosm_credit: Style de carreaux par %{hotosm_link} hébergé par %{osm_france_link}
+      tracestrack_credit: Tuiles fournies aimablement par %{tracestrack_link}
+      hotosm_credit: Style de tuiles de %{hotosm_link} hébergé par %{osm_france_link}
       hotosm_name: L’Équipe OpenStreetMap Humanitaire
     site:
       edit_tooltip: Modifier la carte
index 2063de2d057c9e9d1a3f07f2b4c010a440670a42..134a954f7f3e099a86f972a638cc02046067ed2d 100644 (file)
@@ -156,7 +156,7 @@ he:
         longitude: קו אורך
         public: ציבורי
         description: תיאור
-        gpx_file: ×\94×¢×\9c×\90ת ×§×\95×\91×¥ GPX
+        gpx_file: × ×\90 ×\9c×\91×\97×\95ר ×§×\95×\91×¥ ×\9eס×\9c×\95×\9c GPS
         visibility: נִראוּת
         tagstring: תגים
       message:
@@ -1698,17 +1698,20 @@ he:
       befriend_them: באפשרותך לסמנו כחבר בכתובת %{befriendurl}.
       befriend_them_html: באפשרותך לסמנו כחבר בכתובת %{befriendurl}.
     gpx_description:
-      description_with_tags: '×\96×\94 × ×¨×\90×\94 ×\9b×\9e×\95 ×§×\95×\91×¥ ×\94Ö¾GPX שלך %{trace_name} עם התיאור %{trace_description}
+      description_with_tags: 'נר×\90×\94 ×©×\94ק×\95×\91×¥ שלך %{trace_name} עם התיאור %{trace_description}
         ועם התגים הבאים: %{tags}'
-      description_with_tags_html: '×\96×\94 × ×¨×\90×\94 ×\9b×\9e×\95 ×§×\95×\91×¥ ×\94Ö¾GPX ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר
-        %{trace_description} ועם התגים הבאים: %{tags}'
-      description_with_no_tags: ×\96×\94 × ×¨×\90×\94 ×\9b×\9e×\95 ×§×\95×\91×¥ ×\94Ö¾GPX ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר
-        %{trace_description} וללא תגים
-      description_with_no_tags_html: ×\96×\94 × ×¨×\90×\94 ×\9b×\9e×\95 ×§×\95×\91×¥ ×\94Ö¾GPX ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר
-        %{trace_description} וללא תגים
+      description_with_tags_html: 'נר×\90×\94 ×©×\94ק×\95×\91×¥ ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר %{trace_description}
+        ועם התגים הבאים: %{tags}'
+      description_with_no_tags: × ×¨×\90×\94 ×©×\94ק×\95×\91×¥ ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר %{trace_description}
+        וללא תגים
+      description_with_no_tags_html: × ×¨×\90×\94 ×©×\94ק×\95×\91×¥ ×©×\9c×\9a %{trace_name} ×¢×\9d ×\94ת×\99×\90×\95ר %{trace_description}
+        וללא תגים
     gpx_failure:
       hi: שלום %{to_user},
-      failed_to_import: 'לא יובא כראוי. הינה השגיאה:'
+      failed_to_import: 'הייבוא כקובץ מסלול GPS נכשל. נא לוודא שהקובץ שלך הוא קובץ
+        GPX תקני או ארכיון בתסדירים הנתמכים (‎.tar.gz,‏ ‎.tar.bz2,‏ ‎.tar,‏ ‎.zip,‏
+        ‎.gpx.gz,‏ ‎.gpx.bz2) שמכיל קובצי GPX. יכול להיות שיש בעיית תחביר או תסדיר
+        בקובץ שלך? הנה שגיאת הייבוא:'
       more_info: מידע נוסף על תקלות ביבוא GPX ועל איך להימנע מהן נמצא בכתובת %{url}.
       more_info_html: מידע נוסף על תקלות ביבוא GPX ועל איך להימנע מהן נמצא בכתובת
         %{url}.
@@ -2775,6 +2778,7 @@ he:
       informal_translations: תרגומים בלתי־פורמליים
       continue: להמשיך
       declined: https://wiki.openstreetmap.org/wiki/He:Contributor_Terms_Declined
+      cancel: ביטול
       you need to accept or decline: נא לקרוא ולקבל או לדחות את תנאי התרומה החדשים
         כדי להמשיך.
       legale_select: 'נא לבחור ארץ מגורים:'
@@ -2895,9 +2899,9 @@ he:
       doesnt_have_role: למשתמש אין תפקיד %{role}.
       not_revoke_admin_current_user: לא ניתן לשלול הרשאות מנהל מהמשתמש הנוכחי.
     grant:
-      are_you_sure: ×\94×\90×\9d ×\91רצ×\95× ×\9a ×\91×\90×\9eת ×\9c×\94×¢× ×\99ק תפקיד „%{role}” למשתמש „%{name}”?
+      are_you_sure: ×\91×\90×\9eת ×\9c×\94×¢× ×\99ק ×\90ת ×\94תפקיד „%{role}” למשתמש „%{name}”?
     revoke:
-      are_you_sure: ×\94×\90×\9d ×\91×\90×\9eת ×\9cש×\9c×\95×\9c ×\90ת ×\94תפק×\99×\93 â\80\9e%{role}â\80\9d ×\9e×\94×\9eשת×\9eש â\80\9e%{name}â\80\9d?
+      are_you_sure: באמת לשלול את התפקיד „%{role}” מהמשתמש „%{name}”?
   user_blocks:
     model:
       non_moderator_update: צריך להיות מפקח כדי ליצור או לעדכן חסימה.
index 1a751e0ee1503dc0e563109d95c936fa876d6d1d..d599f70b05d68a073731ca8cf1547e01c51741b1 100644 (file)
@@ -78,8 +78,8 @@ hu:
           is_already_muted: már el van némítva
     models:
       acl: Hozzáférés-szabályzási lista
-      changeset: Módosításcsomag
-      changeset_tag: Módosításcsomag címkéje
+      changeset: Módosításkészlet
+      changeset_tag: Módosításkészlet címkéje
       country: Ország
       diary_comment: Hozzászólás a naplóhoz
       diary_entry: Naplóbejegyzés
@@ -151,7 +151,7 @@ hu:
         longitude: Földrajzi hosszúság
         public: Nyilvános
         description: Leírás
-        gpx_file: GPX fájl feltöltése
+        gpx_file: GPX fájl kiválasztása
         visibility: Láthatóság
         tagstring: Címkék
       message:
@@ -295,7 +295,7 @@ hu:
           megmaradnak, de nem lesznek láthatóak.
         retain_notes: Térképjegyzeteid és jegyzethozzászólásaid (ha vannak) megmaradnak,
           de nem lesznek láthatóak.
-        retain_changeset_discussions: A módosításcsomagokhoz fűzött hozzászólásaid
+        retain_changeset_discussions: A módosításkészletekhez fűzött hozzászólásaid
           (ha vannak) megőrződnek.
         retain_email: Az e-mail-címed is megmarad.
         recent_editing_html: Mivel nemrégiben szerkesztettél, fiókod jelenleg nem
@@ -351,7 +351,7 @@ hu:
     edited_ago_by_html: Szerkesztette %{user} %{time_ago}
     version: Verzió
     redacted_version: Szerkesztett verzió
-    in_changeset: Módosításcsomag
+    in_changeset: Módosításkészlet
     anonymous: névtelen
     no_comment: (nincs hozzászólás)
     part_of: 'Része ennek:'
@@ -366,6 +366,7 @@ hu:
     view_unredacted_history: Módosítatlan előzményeket megtekintése
     view_details: Részletek megtekintése
     view_redacted_data: Módosított előzményeket megtekintése
+    view_redaction_message: Adattörlési üzenet megtekintése
     location: 'Hely:'
     node:
       title_html: '%{name} pont'
@@ -403,7 +404,7 @@ hu:
         node: pont
         way: vonal
         relation: kapcsolat
-        changeset: módosításcsomag
+        changeset: módosításkészlet
         note: jegyzet
     timeout:
       title: Időtúllépési hiba
@@ -413,7 +414,7 @@ hu:
         node: pont
         way: vonal
         relation: kapcsolat
-        changeset: módosításcsomag
+        changeset: módosításkészlet
         note: jegyzet
     redacted:
       redaction: '%{id} adattörlési művelet'
@@ -444,65 +445,86 @@ hu:
       introduction: Kattints a térképre a közeli objektumok megtalálásához.
       nearby: Közeli objektumok
       enclosing: A helyet körülvevő objektumok
+  nodes:
+    timeout:
+      sorry: Sajnáljuk, a %{id} azonosítójú csomópont adatainak lekérése túl sokáig
+        tartott.
   old_nodes:
     not_found:
       sorry: 'Sajnáljuk, nem található meg #%{id} pont %{version} verziója.'
+    timeout:
+      sorry: Sajnáljuk, a %{id} azonosítójú csomópont előzményeinek lekérése túl sokáig
+        tartott.
+  ways:
+    timeout:
+      sorry: Sajnáljuk, a %{id} azonosítójú úthoz tartozó adatok lekérése túl sokáig
+        tartott.
   old_ways:
     not_found:
       sorry: 'Sajnáljuk, nem található meg #%{id} vonal %{version} verziója.'
+    timeout:
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú út előzményeinek lekérése túl sokáig
+        tartott.
+  relations:
+    timeout:
+      sorry: Sajnáljuk, a %{id} azonosítójú reláció adatainak lekérése túl sokáig
+        tartott.
   old_relations:
     not_found:
       sorry: 'Sajnáljuk, nem található meg #%{id} kapcsolat %{version} verziója.'
+    timeout:
+      sorry: Sajnáljuk, a %{id} azonosítójú reláció előzményeinek lekérése túl sokáig
+        tartott.
   changeset_comments:
     feeds:
       comment:
-        comment: 'Új hozzászólás #%{changeset_id} módosításcsomaghoz  %{author} felhasználótól'
+        comment: 'Új hozzászólás #%{changeset_id} módosításkészlethez %{author} felhasználótól'
         commented_at_by_html: '%{user} frissítette ekkor: %{when}'
       show:
-        title_all: OpenStreetMap módosításcsomag-megbeszélés
-        title_particular: 'A #%{changeset_id} OpenStreetMap módosításcsomaghoz tartozó
+        title_all: OpenStreetMap módosításkészlet-megbeszélés
+        title_particular: 'A #%{changeset_id} OpenStreetMap módosításkészlethez tartozó
           megbeszélés'
       timeout:
-        sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításcsomag-hozzászólások
+        sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításkészlet-hozzászólások
           listájának lekérése.
   changesets:
     changeset:
       no_edits: (nincs szerkesztés)
-      view_changeset_details: Módosításcsomag részleteinek megtekintése
+      view_changeset_details: Módosításkészlet részleteinek megtekintése
     index:
-      title: Módosításcsomagok
-      title_user: '%{user} módosításcsomagjai'
-      title_user_link_html: '%{user_link} módosításcsomagjai'
-      title_friend: Ismerősök módosításcsomagjai
-      title_nearby: Közeli felhasználók módosításcsomagjai
-      empty: Nem található módosításcsomag
-      empty_area: Nincs módosításcsomag erre a területre.
-      empty_user: Nincs módosításcsomag ettől a felhasználótól.
-      no_more: Nem találtunk több módosításcsomagot
-      no_more_area: Nincs több módosításcsomag ezen a területen.
-      no_more_user: Nincs több módosításcsomag ettől a felhasználótól.
+      title: Módosításkészletek
+      title_user: '%{user} módosításkészletei'
+      title_user_link_html: '%{user_link} módosításkészletei'
+      title_friend: Ismerősök módosításkészletei
+      title_nearby: Közeli felhasználók módosításkészletei
+      empty: Nem található módosításkészlet
+      empty_area: Ezen a területen nincs módosításkészlet.
+      empty_user: Ettől a felhasználótól nincs módosításkészlet.
+      no_more: Nem találtunk több módosításkészletet.
+      no_more_area: Ezen a területen nincs több módosításkészlet.
+      no_more_user: Ettől a felhasználótól nincs több módosításkészlet.
       load_more: Továbbiak betöltése
       feed:
-        title: '%{id} módosításcsomag'
-        title_comment: '%{id} módosításcsomag - %{comment}'
+        title: '%{id} módosításkészlet'
+        title_comment: '%{id} módosításkészlet - %{comment}'
         created: Létrehozva
         closed: Lezárva
         belongs_to: Szerző
     subscribe:
-      heading: Feliratkozol a következő változáscsomag megbeszélgetésre?
+      heading: Feliratkozol a következő módosításkészlet megbeszélésére?
       button: Feliratkozás a megbeszélésre
     unsubscribe:
-      heading: Leiratkozol a következő változáscsomag megbeszélgetésről?
+      heading: Leiratkozol a következő módosításkészlet megbeszéléséről?
       button: Leiratkozás a megbeszélésről
     heading:
-      title: '%{id} számú módosításcsomag'
+      title: '%{id} számú módosításkészlet'
       created_by_html: 'Létrehozta: %{link_user} (%{created}).'
     no_such_entry:
-      heading: 'Nincs naplóbejegyzés ezzel az azonosítóval: %{id}'
-      body: Sajnáljuk, nincs %{id} azonosítójú módosítócsomag. Ellenőrizd a helyességét.
+      heading: Nincs %{id} azonosítójú naplóbejegyzés
+      body: Sajnáljuk, nincs %{id} azonosítójú módosításkészlet. Ellenőrizd a helyességét.
         Az is lehet, hogy rossz linkre kattintottál.
     show:
-      title: '%{id} módosításcsomag'
+      title: '%{id} módosításkészlet'
       created: 'Létrehozva: %{when}'
       closed: 'Lezárva: %{when}'
       created_ago_html: Létrehozva %{time_ago}
@@ -511,17 +533,17 @@ hu:
       closed_ago_by_html: Lezárta %{user} %{time_ago}
       discussion: Megbeszélés
       join_discussion: Jelentkezz be, hogy bekapcsolódhass a megbeszélésbe
-      still_open: A módosításcsomag még nyitva van – a megbeszélés akkor nyílik meg,
-        ha a módosításcsomag lezárul.
+      still_open: A módosításkészlet még nyitva van – a megbeszélés akkor nyílik meg,
+        ha a módosításkészlet lezárul.
       subscribe: Feliratkozás
       unsubscribe: Leiratkozás
       comment_by_html: Hozzászólt %{user} %{time_ago}
       hidden_comment_by_html: Rejtett hozzászólás %{user} felhasználótól %{time_ago}
-      hide_comment: elrejt
-      unhide_comment: megjelenít
+      hide_comment: elrejtés
+      unhide_comment: megjelenítés
       comment: Hozzászólás
-      changesetxml: Módosításcsomag adatai (XML)
-      osmchangexml: Módosításcsomag tartalma (osmChange XML)
+      changesetxml: Módosításkészlet adatai (XML)
+      osmchangexml: Módosításkészlet tartalma (osmChange XML)
     paging_nav:
       nodes: Pontok (%{count})
       nodes_paginated: 'Pontok (%{x}-%{y} ennyiből: %{count})'
@@ -530,7 +552,7 @@ hu:
       relations: Kapcsolatok (%{count})
       relations_paginated: 'Kapcsolatok (%{x}-%{y} ennyiből: %{count})'
     timeout:
-      sorry: Sajnáljuk, az általad kért módosításcsomagok listájának beolvasása túl
+      sorry: Sajnáljuk, az általad kért módosításkészletek listájának beolvasása túl
         sokáig tartott.
   dashboards:
     contact:
@@ -551,9 +573,9 @@ hu:
       nearby users: További közeli felhasználók
       no nearby users: Még nincsenek más felhasználók, akik megadták, hogy a közelben
         szerkesztenek.
-      friends_changesets: ismerősök módosításcsomagjai
+      friends_changesets: ismerősök módosításkészletei
       friends_diaries: ismerősök naplóbejegyzései
-      nearby_changesets: közeli felhasználók módosításcsomagjai
+      nearby_changesets: közeli felhasználók módosításkészletei
       nearby_diaries: közeli felhasználók naplóbejegyzései
   diary_entries:
     new:
@@ -580,6 +602,8 @@ hu:
       title: '%{user} naplója | %{title}'
       user_title: '%{user} naplója'
       discussion: Megbeszélés
+      subscribe: Feliratkozás
+      unsubscribe: Leiratkozás
       leave_a_comment: Hozzászólás
       login_to_leave_a_comment_html: '%{login_link} a hozzászóláshoz'
       login: Bejelentkezés
@@ -638,6 +662,8 @@ hu:
       post: Bejegyzés
       when: Mikor
       comment: Hozzászólás
+    new:
+      heading: Hozzáfűzől egy megjegyzést a következő naplóhozzászóláshoz?
   doorkeeper:
     errors:
       messages:
@@ -678,6 +704,9 @@ hu:
       contact_the_community_html: Nyugodtan keresd fel az OpenStreetMap közösséget
         (%{contact_link}), ha hibás linket vagy más hibát találtál. Kérjük, ne felejtsd
         el feljegyezni a hibás oldal pontos URL-jét.
+    bad_request:
+      title: Rossz kérés
+      description: Az OpenStreetMap szerveren kért művelet nem érvényes (HTTP 400)
     forbidden:
       title: Tiltott
       description: Az OpenStreetMap szerveren kért művelet csak a rendszergazdáknak
@@ -871,6 +900,7 @@ hu:
           college: Főiskolai épület
           commercial: Kereskedelmi épület
           construction: Épülő épület
+          cowshed: Tehénistálló
           detached: Családi ház
           dormitory: Kollégiumépület
           duplex: Ikerház
@@ -900,6 +930,7 @@ hu:
           shed: Fészer
           stable: Lóistálló
           static_caravan: Álló lakókocsi
+          sty: Disznóól
           temple: Nem keresztény templomépület
           terrace: Sorház
           train_station: Vasútállomás-épület
@@ -1498,6 +1529,7 @@ hu:
     page:
       user_not_found: A felhasználó nem létezik
       issues_not_found: Nem található ilyen probléma
+      reported_user: Bejelentett felhasználó
       status: Állapot
       reports: Bejelentések
       last_updated: Utoljára frissítve
@@ -1506,6 +1538,10 @@ hu:
         one: '%{count} bejelentés'
         other: '%{count} bejelentés'
       reported_item: Jelentett elem
+      states:
+        ignored: Mellőzve
+        open: Nyitva
+        resolved: Megoldva
     show:
       title: '#%{issue_id} probléma %{status}'
       reports:
@@ -1606,6 +1642,7 @@ hu:
       munkát végeznek.
     osm_read_only: Az OpenStreetMap-adatbázis jelenleg csak olvasható, miközben alapvető
       adatbázis-karbantartási munkát végeznek.
+    nothing_to_preview: Nincs mit megtekinteni.
     help: Súgó
     about: Névjegy
     copyright: Szerzői jog és licenc
@@ -1645,13 +1682,23 @@ hu:
       befriend_them: 'Te is hozzáadhatod ismerősként itt: %{befriendurl}.'
       befriend_them_html: 'Te is hozzáadhatod ismerősként itt: %{befriendurl}'
     gpx_description:
-      description_with_tags_html: Úgy tűnik, a te %{trace_name} nevű, %{trace_description}
-        leírással és %{tags} címkékkel rendelkező GPX fájlod
-      description_with_no_tags_html: Úgy tűnik, a te %{trace_name} nevű, %{trace_description}
-        leírású, címke nélküli GPX fájlod
+      description_with_tags: Ez úgy néz ki, mint a te %{trace_name} nevű, %{trace_description}
+        leírású és %{tags} címkékkel rendelkező fájlod
+      description_with_tags_html: Ez úgy néz ki, mint a te %{trace_name} nevű, %{trace_description}
+        leírású és %{tags} címkékkel rendelkező fájlod
+      description_with_no_tags: Ez úgy néz ki, mint te %{trace_name} nevű, %{trace_description}
+        leírású, címke nélküli fájlod
+      description_with_no_tags_html: Ez úgy néz ki, mint a te %{trace_name} nevű,
+        %{trace_description} leírású, címke nélküli fájlod
     gpx_failure:
       hi: Szia %{to_user}!
-      failed_to_import: 'importálása sikertelen. Ez a hiba:'
+      failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Kérjük,
+        ellenőrizze, hogy a fájl egy érvényes GPX-fájl vagy egy GPX-fájl(oka)t tartalmazó
+        archívum a támogatott formátumban (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz,
+        .gpx.bz2). . Formátum- vagy szintaktikai probléma lehet a fájllal? Itt van
+        az importálási hiba:'
+      more_info: 'További információ a GPX importálási hibáiról és azok elkerüléséről
+        itt található: %{url}.'
       more_info_html: 'A GPX importálási hibákról és elkerülésükről további tájékoztatás
         olvasható itt: %{url}.'
       subject: '[OpenStreetMap] Sikertelen GPX importálás'
@@ -1661,6 +1708,9 @@ hu:
         one: sikeresen betöltődött a lehetséges %{count} pontból %{trace_points} ponttal.
         other: sikeresen betöltődött a lehetséges %{count} pontból %{trace_points}
           ponttal.
+      trace_location: 'Nyomkövetése itt érhető el: %{trace_url}'
+      all_your_traces: 'Az összes sikeresen feltöltött GPX nyomkövetés megtalálható
+        itt: %{url}'
       all_your_traces_html: 'Az összes sikeresen feltöltött GPX nyomkövetés megtalálható
         itt: %{url}.'
       subject: '[OpenStreetMap] Sikeres GPX importálás'
@@ -1722,32 +1772,30 @@ hu:
           A jegyzet %{place} közelében van.'
         commented_note_html: '%{commenter} újra megnyitott egy jegyzetet, amelyhez
           hozzászóltál. A jegyzet %{place} közelében van.'
-      details: 'A jegyzetről további részletek találhatók itt: %{url}.'
-      details_html: 'A jegyzetről további részletek találhatók itt: %{url}.'
+      details: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
+      details_html: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
     changeset_comment_notification:
-      description: 'OpenStreetMap módosításcsomag #%{id}'
+      description: 'OpenStreetMap módosításkészlet #%{id}'
       hi: Szia %{to_user}!
       commented:
-        subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításcsomagodhoz'
-        subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításcsomaghoz,
+        subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításkészletedhez'
+        subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításkészlethez,
           amely téged is érdekel'
-        your_changeset: '%{commenter} hozzászólt az egyik módosításcsomagodhoz ekkor:
+        your_changeset: '%{commenter} hozzászólt az egyik módosításkészletedhez ekkor:
           %{time}'
-        your_changeset_html: '%{commenter} hozzászólt az egyik módosításcsomagodhoz
+        your_changeset_html: '%{commenter} hozzászólt az egyik módosításkészletedhez
           ekkor: %{time}'
         commented_changeset: '%{commenter} hozzászólt %{changeset_author} általad
-          is figyelt módosításcsomagjához ekkor: %{time}'
+          is figyelt módosításkészletéhez ekkor: %{time}'
         commented_changeset_html: '%{commenter} hozzászólt %{changeset_author} általad
-          is figyelt módosításcsomagjához ekkor: %{time}'
+          is figyelt módosításkészletéhez ekkor: %{time}'
         partial_changeset_with_comment: „%{changeset_comment}” hozzászólással
         partial_changeset_with_comment_html: '%{changeset_comment} hozzászólással'
         partial_changeset_without_comment: hozzászólás nélkül
-      details: 'A módosításcsomagról további részletek találhatók itt: %{url}.'
-      details_html: 'A módosításcsomagról további részletek találhatók itt: %{url}.'
-      unsubscribe: 'Az ehhez a módosításcsomaghoz tartozó frissítésekről való leiratkozáshoz
-        látogass el a következő oldalra: %{url}.'
-      unsubscribe_html: 'Az ehhez a módosításcsomaghoz tartozó frissítésekről való
-        leiratkozáshoz látogass el a következő oldalra: %{url}.'
+      details: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
+      details_html: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
+      unsubscribe: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
+      unsubscribe_html: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
   confirmations:
     confirm:
       heading: Nézd meg az e-mailjeidet!
@@ -1916,12 +1964,15 @@ hu:
   sessions:
     new:
       tab_title: Bejelentkezés
+      login_to_authorize_html: Jelentkezz be az OpenStreetMap alkalmazásba a %{client_app_name}
+        eléréséhez.
       email or username: E-mail-cím vagy felhasználónév
       password: Jelszó
       remember: Emlékezz rám
       lost password link: Elfelejtetted a jelszavad?
       login_button: Bejelentkezés
-      with external: 'Alternatívaként használj külső fiókot a bejelentkezéshez:'
+      with external: vagy használj külső fiókot a bejelentkezéshez
+      or: vagy
       auth failure: Sajnáljuk, ilyen adatokkal nem tudsz bejelentkezni.
     destroy:
       title: Kijelentkezés
@@ -1951,6 +2002,7 @@ hu:
     richtext_field:
       edit: Szerkesztés
       preview: Előnézet
+      help: Súgó
     pagination:
       diary_comments:
         older: Régebbi hozzászólások
@@ -1958,6 +2010,9 @@ hu:
       diary_entries:
         older: Régebbi bejegyzések
         newer: Újabb bejegyzések
+      issues:
+        older: Régebbi problémák
+        newer: Újabb problémák
       traces:
         older: Régebbi nyomvonalak
         newer: Újabb nyomvonalak
@@ -2091,27 +2146,73 @@ hu:
         contributors_at_land_vorarlberg: Vorarlberg tartomány
         contributors_at_land_vorarlberg_url: https://vorarlberg.at/-/wms-dienste
         contributors_at_cc_by_at_with_amendments: módosított CC BY AT
+        contributors_au_credit_html: |-
+          %{australia}: Az adminisztratív határok © %{geoscape_australia_link}
+          felhasználása, illetve fejlesztése az Ausztrál Nemzetközösség által a %{cc_licence_link} alatt.
         contributors_au_australia: Ausztrália
         contributors_au_geoscape_australia: Geoscape Australia
+        contributors_au_cc_licence: Creative Commons Nevezd meg! 4.0 nemzetközi licenc
+          (CC BY 4.0)
+        contributors_ca_credit_html: |-
+          %{canada}: adatokat tartalmaz a következő forrásokból:
+          GeoBase®, GeoGratis (© Department of Natural
+          Resources Canada), CanVec (© Department of Natural
+          Resources Canada), és StatCan (Geography Division,
+          Statistics Canada).
         contributors_ca_canada: Kanada
+        contributors_cz_credit_html: |-
+          %{czechia}: Az Állami Földmérési
+          and Kataszteri Hivatal adatait tartalmazza, a %{cc_licence_link} licenc alatt
         contributors_cz_czechia: Csehország
+        contributors_cz_cc_licence: Creative Commons Nevezd meg! 4.0 nemzetközi licenc
+          (CC BY 4.0)
+        contributors_fi_credit_html: |-
+          %{finland}: A Finnországi Topográfiai Adatbázis
+          National Land Survey adatait és más adatkészleteket tartalmazza a %{nlsfi_license_link} alatt.
         contributors_fi_finland: Finnország
         contributors_fi_nlsfi_license: NLSFI licenc
         contributors_fr_credit_html: '%{france}: adatokat tartalmaz a következő forrásból:
           Direction Générale des Impôts.'
         contributors_fr_france: Franciaország
+        contributors_hr_credit_html: '%{croatia}: adatokat tartalmaz a következő forrásokból:
+          %{dgu_link} és %{open_data_portal} (Horvátország nyilvános információi)'
+        contributors_hr_croatia: Horvátország
+        contributors_hr_dgu: Horvátországi Állami Geodéziai Igazgatóság
+        contributors_hr_open_data_portal: Országos Nyílt Adat Portál
         contributors_nl_credit_html: '%{netherlands}: &copy; AND adatokat tartalmaz,
           2007 (%{and_link})'
         contributors_nl_netherlands: Hollandia
+        contributors_nz_credit_html: '%{new_zealand}: adatokat tartalmaz a következő
+          forrásból: %{linz_data_service_link} és újrafelhasználásra licencelve %{cc_by_link}
+          alatt.'
         contributors_nz_new_zealand: Új-Zéland
+        contributors_nz_linz_data_service: LINZ Data Service
+        contributors_nz_cc_by: CC BY 4.0
+        contributors_rs_credit_html: '%{serbia}: adatokat tartalmaz az alábbi forrásból:
+          %{rgz_link} és %{open_data_portal} (Szerbia nyilvános információi), 2018.'
         contributors_rs_serbia: Szerbia
         contributors_rs_rgz: Szerb Geodéziai Hatóság
+        contributors_rs_open_data_portal: Országos Nyílt Adat Portál
+        contributors_si_credit_html: '%{slovenia}: adatokat tartalmazz az alábbi forrásból:
+          %{gu_link} és %{mkgp_link} (Szlovénia nyilvános információi).'
         contributors_si_slovenia: Szlovénia
+        contributors_si_gu: Földmérési és Térképészeti Hatóság
         contributors_si_mkgp: Mezőgazdasági, Erdészeti és Élelmiszerügyi Minisztérium
+        contributors_es_credit_html: |-
+          %{spain}: A
+          Spanish National Geographic Institute-tól (%{ign_link}) és
+          National Cartographic System-től (%{scne_link})
+          -től származó adatokat tartalmaz, amelyeket a %{cc_by_link} alatt újrafelhasználhatóak.
         contributors_es_spain: Spanyolország
         contributors_es_cc_by: CC BY 4.0
+        contributors_za_credit_html: '%{south_africa}: A %{ngi_link} forrásból származó
+          adatokat tartalmazza, az állam szerzői joga fenntartva.'
         contributors_za_south_africa: Dél-Afrika
+        contributors_za_ngi: 'Chief Directorate: National Geo-Spatial Information'
         contributors_gb_united_kingdom: Egyesült Királyság
+        contributors_2_html: Ezekről és más, az OpenStreetMap fejlesztésére használt
+          forrásokról további részletekért tekintsd meg a %{contributors_page_link}
+          részt az OpenStreetMap Wikin.
         contributors_2_contributors_page: Közreműködők oldala
         contributors_footer_2_html: Az adatok befoglalása az OpenStreetMapbe nem jelenti
           azt, hogy az eredeti adatszolgáltató támogatja az OpenStreetMapet, garanciát
@@ -2121,6 +2222,11 @@ hu:
           ne adjanak hozzá adatokat egyetlen szerzői jogvédett forrásból se (pl. Google
           Térkép vagy nyomtatott térképek) a szerzői jog tulajdonosának kifejezett
           engedélye nélkül.
+        infringement_2_1_html: |-
+          Ha úgy gondolod, hogy a szerzői jog által védett anyagokat nem megfelelően adták hozzá az OpenStreetMap adatbázishoz vagy ehhez az oldalhoz, kérjük, tekintsd meg
+          %{takedown_procedure_link} oldalunkat, vagy fájlokat közvetlenül a
+          %{online_filing_page_link} címen.
+        infringement_2_1_takedown_procedure: eltávolítási eljárás
         infringement_2_1_online_filing_page: on-line bejelentési oldal
         trademarks_title: Védjegyek
         trademarks_1_1_html: |-
@@ -2229,11 +2335,13 @@ hu:
         description: Böngészd a wikit mélyreható OpenStreetMap dokumentációért.
     potlatch:
       removed: Az alapértelmezett szerkesztőd a Potlatch. Mivel az Adobe Flash Playert
-        visszavonták, a Potlatch webböngészőben már nem futtatható.
-      download: az asztali alkalmazás letöltése Mac és Windows rendszerre
+        visszavonták, ezért webböngészőben már nem futtatható.
+      desktop_application_html: Továbbra is használhatod azonban a Potlatch-ot, ha
+        %{download_link}
+      download: letöltöd az asztali alkalmazást Mac vagy Windows rendszerre
       id_editor_html: Alternatív megoldásként beállíthatod alapértelmezett szerkesztőként
-        az iD-t, amely webböngészőben fut, mint hajdanán a Potlatch. %{change_preferences_link}.
-      change_preferences: Itt módosíthatja beállításait
+        az iD-t, amely webböngészőben fut, mint hajdanán a Potlatch. %{change_preferences_link}.
+      change_preferences: Beállításaidat itt módosíthatod
     any_questions:
       title: Kérdésed van?
       paragraph_1_html: |-
@@ -2326,6 +2434,9 @@ hu:
           hospital: Kórház
           building: Fontosabb épület
           station: Vasútállomás
+          railway_halt: Vasúti megálló
+          subway_station: Metrómegálló
+          tram_stop: Villamosmegálló
           summit: Hegycsúcs
           peak: Hegycsúcs
           tunnel: Szaggatott szegély = alagút
@@ -2476,6 +2587,7 @@ hu:
       identifiable: AZONOSÍTHATÓ
       private: NEM NYILVÁNOS
       trackable: NYOMKÖVETHETŐ
+      details_with_tags_html: '%{time_ago}, %{user} itt: %{tags}'
       details_without_tags_html: '%{user} által %{time_ago}'
     index:
       public_traces: Nyilvános GPS-nyomvonalak
@@ -2524,24 +2636,26 @@ hu:
       oauth2_authorizations: OAuth 2 engedélyek
       muted_users: Elnémított felhasználók
     auth_providers:
+      openid_url: OpenID URL
+      openid_login_button: Folytatás
       openid:
         title: Bejelentkezés OpenID-vel
-        alt: Bejelentkezés OpenID-URL-lel
+        alt: OpenID-logó
       google:
         title: Bejelentkezés Google-lel
-        alt: Bejelentkezés Google OpenID-vel
+        alt: Google logó
       facebook:
         title: Bejelentkezés Facebook-kal
-        alt: Bejelentkezés Facebook fiókkal
+        alt: Facebook logó
       microsoft:
         title: Bejelentkezés Microsofttal.
-        alt: Bejelentkezés Microsoft fiókkal
+        alt: Microsoft logó
       github:
         title: Bejelentkezés GitHub-bal
-        alt: Bejelentkezés GitHub fiókkal
+        alt: GitHub logó
       wikipedia:
         title: Bejelentkezés Wikipédiával
-        alt: Wikipédia fiókkal való bejelentkezés
+        alt: Wikipédia logó
   oauth:
     permissions:
       missing: Nem engedted meg az alkalmazás számára, hogy hozzáférjen ehhez a létesítményhez
@@ -2556,7 +2670,12 @@ hu:
       write_notes: Jegyzetek módosítása
       write_redactions: Térképadatok szerkesztése
       read_email: Felhasználó e-mail-címének elolvasása
+      consume_messages: Felhasználói üzenetek olvasása, státuszénak módosítása és
+        törlése
+      send_messages: Privát üzenetek küldése más felhasználóknak
       skip_authorization: Alkalmazás automatikus jóváhagyása
+    for_roles:
+      moderator: Ez az engedély csak a moderátorok számára elérhető műveletekre vonatkozik
   oauth2_applications:
     index:
       title: Kliensalkalmazásaim
@@ -2610,6 +2729,9 @@ hu:
   users:
     new:
       title: Felhasználói fiók létrehozása
+      tab_title: Regisztráció
+      signup_to_authorize_html: Regisztrálj az OpenStreetMap szolgáltatással a %{client_app_name}
+        eléréséhez.
       no_auto_account_create: Sajnos jelenleg nem tudunk neked létrehozni automatikusan
         egy felhasználói fiókot.
       please_contact_support_html: Kérjük, lépj kapcsolatba velünk (%{support_link}),
@@ -2617,21 +2739,37 @@ hu:
         feldolgozni.
       support: támogatás
       about:
-        header: Szabad és szerkeszthető
+        header: Szabad és szerkeszthető.
         paragraph_1: Más térképekkel ellentétben az OpenStreetMap-et teljes mértékben
           hozzád hasonló emberek hozzák létre, és bárki ingyenesen javíthatja, frissítheti,
           letöltheti és használhatja.
-        paragraph_2: Regisztrálj a közreműködés megkezdéséhez. A fiókod megerősítéséhez
-          küldeni fogunk egy e-mailt.
+        paragraph_2: Regisztrálj a közreműködés megkezdéséhez.
+        welcome: Üdvözlünk az OpenStreetMapen
+      duplicate_social_email: Ha már rendelkezel OpenStreetMap fiókkal, és külső identitásszolgáltatót
+        szeretnél használni, kérjük, jelentkezz be jelszavaddal, és módosítsd fiókod
+        beállításait.
       display name description: A nyilvánosan megjelenített felhasználóneved. A beállításaidban
         később megváltoztathatod.
       by_signing_up:
+        html: 'A regisztrációval elfogadod a következőt: %{tou_link}, %{privacy_policy_link}
+          és %{contributor_terms_link}.'
         privacy_policy: adatvédelmi irányelvek
         privacy_policy_title: Az OSMF adatvédelmi szabályzata, beleértve az e-mail
           címekről szóló részt
+        contributor_terms: közreműködői feltételek
       continue: Regisztráció
       terms accepted: Köszönjük, hogy elfogadtad az új közreműködési feltételeket!
-      use external auth: Alternatívaként használhatsz külső fiókokat a bejelentkezéshez
+      email_help:
+        privacy_policy: adatvédelmi irányelvek
+        privacy_policy_title: Az OSMF adatvédelmi szabályzata, beleértve az e-mail
+          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
     terms:
       title: Feltételek
       heading: Feltételek
@@ -2648,9 +2786,12 @@ hu:
       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ó
       informal_translations: informális fordítások
       continue: Folytatás
+      cancel: Mégse
       you need to accept or decline: A folytatáshoz kérjük, olvasd el, majd fogadd
         el vagy utasítsd el az új közreműködési feltételeket.
       legale_select: 'Kérlek, válaszd ki a lakóhelyed szerinti országot:'
@@ -2692,6 +2833,8 @@ hu:
       remove as friend: Ismerős eltávolítása
       add as friend: Felvétel ismerősnek
       mapper since: 'Térképszerkesztő ezóta:'
+      last map edit: 'Legutóbbi térképszerkesztés:'
+      no activity yet: Még nincs tevékenység
       uid: 'Felhasználói azonosító:'
       ct status: 'Hozzájárulási feltételek:'
       ct undecided: Nem eldöntött
@@ -2789,6 +2932,7 @@ hu:
       title: '%{name} blokkolásának szerkesztése'
       heading_html: '%{name} blokkolásának szerkesztése'
       period: Mennyi ideig lesz a felhasználó blokkolva az API-tól, mostantól számítva.
+      revoke: Blokk visszavonása
     filter:
       block_period: A blokkolási időszaknak egy, a legördülő listából kiválasztható
         értéknek kell lennie.
@@ -2796,6 +2940,12 @@ hu:
       flash: '%{name} felhasználó blokkolva lett.'
     update:
       only_creator_can_edit: Csak a blokkolást létrehozó moderátor szerkesztheti.
+      only_creator_can_edit_without_revoking: Csak a blokkot létrehozó moderátor szerkesztheti
+        azt visszavonás nélkül.
+      only_creator_or_revoker_can_edit: Csak azok a moderátorok szerkeszthetik, akik
+        létrehozták vagy visszavonták ezt a blokkot.
+      inactive_block_cannot_be_reactivated: Ez a blokk inaktív, és nem aktiválható
+        újra.
       success: Blokkolás frissítve.
     index:
       title: Felhasználói blokkolások
@@ -2805,6 +2955,7 @@ hu:
       title: '%{block_on} valamennyi blokkolásának visszavonása'
       heading_html: '%{block_on} valamennyi blokkolásának visszavonása'
       empty: '%{name} nem rendelkezik aktív blokkolással.'
+      confirm: Biztos benne, hogy visszavonod a %{active_blocks} blookkolást?
       active_blocks:
         one: '%{count} aktív blokkolás'
         other: '%{count} aktív blokkolás'
@@ -2859,6 +3010,14 @@ hu:
       reason: Blokkolás indoklása
       status: Állapot
       revoker_name: 'Visszavonta:'
+    navigation:
+      all_blocks: Minden blokk
+      blocks_on_me: Engem sújtó blokkolások
+      blocks_on_user: '%{user} blokkolásai'
+      blocks_by_me: Általam kiosztott blokkolások
+      blocks_by_user: '%{user} blokkolásai'
+      block: '#%{id} blokk'
+      new_block: Újabb blokkolások
   user_mutes:
     index:
       title: Elnémított felhasználók
@@ -2919,6 +3078,7 @@ hu:
       reactivate: Újraaktiválás
       comment_and_resolve: Hozzászólás és megoldás
       comment: Hozzászólás
+      log_in_to_comment: Jelentkezzen be, hogy megjegyzést fűzhessen ehhez a jegyzethez
       report_link_html: Ha ez a jegyzet eltávolítandó érzékeny információkat tartalmaz,
         akkor használhatod a %{link} funkciót.
       other_problems_resolve: A jegyzettel kapcsolatos összes többi problémánál légy
@@ -2931,12 +3091,18 @@ hu:
       intro: Hibát találtál vagy valami hiányzik? Tudasd a többi térképezővel, hogy
         javítani tudjuk. Mozgasd a jelölőt a megfelelő helyre, és minél pontosabban
         írd le a problémát.
+      anonymous_warning_html: Nem vagy  bejelentkezve. Kérlek %{log_in} vagy %{sign_up},
+        ha frissítéseket szeretne kapni a hozzászólásodról.
+      anonymous_warning_log_in: jelentkezz be
+      anonymous_warning_sign_up: regisztrálj
       advice: A jegyzeted nyilvános és használható a térkép frissítéséhez, ezért ne
         adj meg személyes adatokat vagy jogvédett térképről vagy katalógusokból származó
         információkat.
       add: Jegyzet hozzáadása
     notes_paging_nav:
       showing_page: '%{page} oldal'
+      next: Következő
+      previous: Előző
   javascripts:
     close: Bezárás
     share:
@@ -2951,7 +3117,7 @@ hu:
       custom_dimensions: Kiterjedés megadása
       format: 'Formátum:'
       scale: 'Méretarány:'
-      image_dimensions: A kép a normál réteget fogja megjeleníteni %{width}×%{height}
+      image_dimensions: A kép a %{layer} réteget fogja megjeleníteni %{width}×%{height}
         képpont méretben.
       download: Letöltés
       short_url: Rövid URL
@@ -2959,7 +3125,8 @@ hu:
       center_marker: Legyen a helyjelölő a térkép középpontja
       paste_html: Weboldalba beágyazáshoz illeszd be ezt a HTML-t
       view_larger_map: Nagyobb térkép
-      only_standard_layer: Csak az alapréteget lehet képként exportálni
+      only_standard_layer: Csak az alap, kerékpáros és tömegközlekedési rétegek exportálható
+        képként
     embed:
       report_problem: Probléma bejelentése
     key:
@@ -2982,6 +3149,7 @@ hu:
         standard: Alapértelmezett
         cycle_map: Kerékpártérkép
         transport_map: Tömegközlekedés
+        tracestracktop_topo: Tracetrack Topo
         hot: Humanitárius
       layers:
         header: Térképnézetek
@@ -2993,7 +3161,12 @@ hu:
       openstreetmap_contributors: OpenStreetMap közreműködők
       make_a_donation: Adományozz
       website_and_api_terms: Webhely és API feltételek
+      cyclosm_credit: 'A %{cyclosm_link} csempestílusa: %{osm_france_link}'
       osm_france: OpenStreetMap Franciaország
+      thunderforest_credit: A csempék a %{thunderforest_link} jóvoltából
+      andy_allan: Andy Allan
+      tracestrack_credit: A csempék a %{tracestrack_link} jóvoltából
+      hotosm_credit: 'A %{hotosm_link} csempestílusa: %{osm_france_link}'
       hotosm_name: Humanitárius OpenStreetMap csapat
     site:
       edit_tooltip: Térkép szerkesztése
@@ -3129,6 +3302,7 @@ hu:
       empty: Nincs megjeleníthető adattörlési művelet.
       heading: Adattörlések listája
       title: Adattörlések listája
+      new: Új adattörlési művelet
     new:
       heading: Információ megadása új adattörlési művelethez
       title: Új adattörlési művelet létrehozása
index fc0211a78da48c050949b54ffadb509d3345adb0..821c795520a419b914eaa9a9db846e7b3969e081 100644 (file)
@@ -21,8 +21,6 @@ is:
     formats:
       friendly: '%e. %B %Y kl. %H:%M'
       blog: '%e. %B %Y'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Veldu skrá
@@ -232,7 +230,6 @@ is:
   auth:
     providers:
       none: Ekkert
-      openid: OpenID
       google: Google
       facebook: Facebook
       microsoft: Microsoft
index feb9ae45090cc27cc1086b51e3c926a641d95e99..07442a854f04209c3a32a410b10be973c4ca9c9f 100644 (file)
@@ -2971,15 +2971,15 @@ it:
         impostazioni.
   user_role:
     filter:
-      not_a_role: La stringa `%{role}' non è un ruolo valido.
+      not_a_role: La stringa '%{role}' non è un ruolo valido.
       already_has_role: L'utente possiede già il ruolo %{role}.
       doesnt_have_role: L'utente non possiede il ruolo %{role}.
       not_revoke_admin_current_user: Impossibile rimuovere i privilegi di amministratore
         all'utente corrente.
     grant:
-      are_you_sure: Si è sicuri di voler assegnare il ruolo `%{role}' all'utente `%{name}'?
+      are_you_sure: Sei sicuro di voler assegnare il ruolo '%{role}' all'utente '%{name}'?
     revoke:
-      are_you_sure: Si è sicuri di voler revocare il ruolo `%{role}' dall'utente `%{name}'?
+      are_you_sure: Sei sicuro di voler revocare il ruolo '%{role}' all'utente '%{name}'?
   user_blocks:
     model:
       non_moderator_update: Devi essere un moderatore per creare o aggiornare un blocco.
index d44a4f4a18420bfa19d4b9790e408907ffcc658c..10cf572b4951df4a7b68d626ad892f63b7e92d4b 100644 (file)
@@ -423,15 +423,30 @@ ko:
       introduction: 근처의 지물을 찾으려면 지도에서 클릭하세요.
       nearby: 근처 지물
       enclosing: 근접 지역 내 지물
+  nodes:
+    timeout:
+      sorry: 죄송합니다, %{id} id인 노드에 대한 데이터를 가져오는데 너무 오래 걸립니다.
   old_nodes:
     not_found:
       sorry: '죄송합니다. 버전 %{version}의 노드 #%{id}를 찾을 수 없습니다.'
+    timeout:
+      sorry: 죄송합니다, %{id} id인 노드의 역사를 가져오는데 너무 오래 걸립니다.
+  ways:
+    timeout:
+      sorry: 죄송합니다, %{id} id인 길 데이터를 가져오는데 너무 오래 걸립니다.
   old_ways:
     not_found:
       sorry: '죄송합니다. 버전 %{version}의 경로 #%{id}를 찾을 수 없습니다.'
+    timeout:
+      sorry: 죄송합니다, %{id} id인 길 역사를 가져오는데 너무 오래 걸립니다.
+  relations:
+    timeout:
+      sorry: 죄송합니다, %{id} id인 관계 데이터를 가져오는데 너무 오래 걸립니다.
   old_relations:
     not_found:
       sorry: '죄송합니다. 버전 %{version}의 관계 #%{id}를 찾을 수 없습니다.'
+    timeout:
+      sorry: 죄송합니다, %{id} id인 관계 역사를 가져오는데 너무 오래 걸립니다.
   changeset_comments:
     feeds:
       comment:
@@ -474,6 +489,8 @@ ko:
     heading:
       title: 바뀜집합 %{id}
       created_by_html: '%{created}에 의해 %{link_user}이(가) 생성되었습니다.'
+    no_such_entry:
+      heading: 'id에 해당하는 엔트리 없음: %{id}'
     show:
       title: '바뀜집합: %{id}'
       created: '생성 시기: %{when}'
@@ -556,7 +573,7 @@ ko:
       login: 로그인
     no_such_entry:
       title: 해당 일기 항목이 없음
-      heading: '%{id} ID 항목 없음'
+      heading: 'id에 해당하는 엔트리 없음: %{id}'
       body: 안타깝게도, ID가 %{id}인 일기 항목이나 댓글이 없습니다. 맞춤법이나 클릭한 링크의 유효성을 확인해 주세요.
     diary_entry:
       posted_by_html: '%{link_user}님이 %{language_link}로 %{created}에 게시함.'
@@ -605,6 +622,11 @@ ko:
       when: 날짜
       comment: 의견
   doorkeeper:
+    errors:
+      messages:
+        consent_required: 인가 서버에는 최종 사용자의 동의가 필요합니다
+        interaction_required: 인가 서버에는 최종 사용자의 소통이 필요합니다
+        login_required: 인가 서버에는 최종 사용자의 인증이 필요합니다
     flash:
       applications:
         create:
@@ -1565,6 +1587,9 @@ ko:
       hi: 안녕하세요 %{to_user}님,
       loaded:
         other: 가능한 점 %{count}개 가운데 점 %{trace_points}개를 성공적으로 불러왔습니다.
+      trace_location: 트레이스는 %{trace_url}에서 볼 수 있습니다
+      all_your_traces: 성공적으로 업로드한 모든 GPX 트레이스는 %{url}에서 볼 수 있습니다
+      all_your_traces_html: 성공적으로 업로드한 모든 GPX 트레이스는 %{url}에서 볼 수 있습니다.
       subject: '[OpenStreetMap] GPX 가져오기 성공'
     signup_confirm:
       subject: '[OpenStreetMap] 오픈스트리트맵에 오신 것을 환영합니다'
@@ -1679,6 +1704,7 @@ ko:
       to: 받는이
       subject: 제목
       date: 날짜
+      actions: 동작
     message_summary:
       unread_button: 읽지 않음으로 표시
       read_button: 읽음으로 표시
@@ -1704,6 +1730,8 @@ ko:
       people_mapping_nearby: 근처에 매핑한 사람
     muted:
       title: 알림에서 제외된 메시지
+      messages:
+        other: 알림 미표시 메시지 %{count}개
     reply:
       wrong_user: '''%{user}''님으로 로그인하고 있지만 답장을 요청한 메시지가 해당 사용자에게 보내지지 않았습니다. 답장을
         하려면 올바른 사용자로 로그인하세요.'
@@ -1733,6 +1761,9 @@ ko:
       email address: 이메일 주소
       new password button: 비밀번호 재설정
       help_text: 가입할 때 사용한 이메일 주소를 입력하세요, 비밀번호를 재설정하여 사용할 수 있는 링크를 보내드립니다.
+    create:
+      send_paranoid_instructions: 귀하의 이메일 주소가 데이터베이스에 존재하는 경우 몇 분 후에 귀하의 이메일 주소로 비밀번호
+        복구 링크를 받게 됩니다.
     edit:
       title: 비밀번호 재설정
       heading: '%{user}의 비밀번호 재설정'
@@ -1783,6 +1814,7 @@ ko:
   sessions:
     new:
       tab_title: 로그인
+      login_to_authorize_html: '%{client_app_name}에 접근하려면 오픈스트리트맵에 로그인하십시오.'
       email or username: 이메일 주소 또는 사용자 이름
       password: 비밀번호
       remember: 로그인 상태를 기억하기
@@ -1826,6 +1858,9 @@ ko:
       diary_entries:
         older: 이전 항목
         newer: 다음 항목
+      issues:
+        older: 이전 문제
+        newer: 새 문제
       traces:
         older: 이전 궤적
         newer: 다음 궤적
@@ -1833,6 +1868,7 @@ ko:
         older: 옛 차단내역
         newer: 최근 차단내역
       users:
+        older: 이전 사용자
         newer: 신규 사용자
   site:
     about:
@@ -2162,13 +2198,16 @@ ko:
           golf: 골프장
           park: 공원
           common: 공유지
+          built_up: 시가지
           resident: 주거 지역
           retail: 소매 지역
           industrial: 산업 지역
           commercial: 상업/관공서 지역
           heathland: 황무지
+          scrubland: 관목지
           lake: 호수
           reservoir: 저수지
+          intermittent_water: 간헐적인 수역
           glacier: 빙하
           reef: 암초
           wetland: 습지
@@ -2186,6 +2225,9 @@ ko:
           hospital: 병원
           building: 주요 건물
           station: 철도역
+          railway_halt: 철도 간이역
+          subway_station: 지하철역
+          tram_stop: 전차 정거장
           summit: 산꼭대기
           peak: 봉우리
           tunnel: 점선 테두리 = 터널
@@ -2364,7 +2406,9 @@ ko:
       account_settings: 계정 설정
       oauth2_applications: OAuth 2 애플리케이션
       oauth2_authorizations: OAuth 2 인가
+      muted_users: 알림에서 제외된 사용자
     auth_providers:
+      openid_url: 오픈ID URL
       openid_login_button: 계속
       openid:
         title: OpenID로 로그인하기
@@ -2396,7 +2440,10 @@ ko:
       read_gpx: 비공개 GPS 궤적 읽기
       write_gpx: GPS 궤적 업로드
       write_notes: 참고 수정
+      write_redactions: 지도 데이터 삭제
       read_email: 사용자 이메일 주소 읽기
+      consume_messages: 사용자 메시지 읽기, 상태 업데이트 및 삭제
+      send_messages: 다른 사용자에게 개인 메시지 보내기
       skip_authorization: 애플리케이션 자동 승인
   oauth2_applications:
     index:
@@ -2469,6 +2516,8 @@ ko:
       continue: 가입하기
       terms accepted: 새 기여자 약관에 동의해 주셔서 감사합니다!
       email_help:
+        privacy_policy: 개인정보처리방침
+        privacy_policy_title: 이메일 주소 섹션을 포함한 OSMF 개인 정보 보호 정책
         html: 당신의 주소는 공개적으로 노출되지 않습니다. 자세한 내용은 %{privacy_policy_link}를 참조하세요.
       consider_pd_html: 내 기여가 %{consider_pd_link}에 속함을 선언합니다.
       consider_pd: 퍼블릭 도메인
@@ -2532,6 +2581,8 @@ ko:
       remove as friend: 친구 제거
       add as friend: 친구 추가
       mapper since: '가입일:'
+      last map edit: '마지막 지도 편집:'
+      no activity yet: 아직 활동이 없습니다
       uid: '사용자 아이디:'
       ct status: '기여자 약관:'
       ct undecided: 정의되지 않음
@@ -2575,6 +2626,8 @@ ko:
       summary_no_ip_html: '%{name}이(가) %{date}에 만들어짐'
       empty: 일치하는 사용자를 찾을 수 없습니다
     page:
+      found_users:
+        other: 사용자 %{count}명 찾음
       confirm: 선택한 사용자 확인
       hide: 선택한 사용자 숨기기
     suspended:
@@ -2620,18 +2673,21 @@ ko:
       title: '%{name} 사용자에 대한 차단 편집'
       heading_html: '%{name} 사용자에 대한 차단 편집'
       period: 사용자가 지금부터 얼마나 오랫동안 API에서 차단하나요.
+      revoke: 차단 해제
     filter:
       block_period: 차단 기간은 드롭 다운 목록에서 선택할 수 있는 값 중 하나여야 합니다.
     create:
       flash: '%{name} 사용자를 차단했습니다.'
     update:
       only_creator_can_edit: 이 차단을 한 운영자만 편집할 수 있습니다.
+      inactive_block_cannot_be_reactivated: 이 차단은 비활성화되어 있으므로 다시 활성화할 수 없습니다.
       success: 차단이 업데이트되었습니다.
     index:
       title: 사용자 차단
       heading: 사용자 차단 목록
       empty: 아직 차단하지 않았습니다.
     revoke_all:
+      empty: '%{name}님은 현재 차단되어 있지 않습니다.'
       revoke: 해제!
       flash: 모든 차단 내역이 비활성화되었습니다.
     helper:
@@ -2684,10 +2740,15 @@ ko:
       blocks_by_me: 내가 차단한 내역
       blocks_by_user: '%{user}님이 차단한 내역'
       block: '#%{id} 차단'
+      new_block: 최근 차단
   user_mutes:
     index:
       title: 알림에서 제외된 사용자
       my_muted_users: 나의 알림에서 제외된 사용자
+      you_have_muted_n_users:
+        other: 사용자 %{count}명에게서 오는 알림을 표시하지 않도록 했습니다
+      user_mute_admins_and_moderators: 관리자와 중재자의 알림은 받지 않도록 할 수 있지만, 해당 사용자의 메시지의
+        알림은 받지 않도록 할 수 없습니다.
       table:
         thead:
           muted_user: 알림에서 제외된 사용자
@@ -2745,6 +2806,8 @@ ko:
       title: 새로운 참고
       intro: 실수했거나 없는 무언가를 발견했나요? 다른 매퍼에게 알려주어 고칠 수 있게 해주세요. 마커를 올바른 위치로 이동하고, 참고를
         남겨 문제를 설명해주세요.
+      anonymous_warning_html: 로그인하지 않았습니다. 노트에 대한 업데이트를 받으려면 %{log_in} 또는 %{sign_up}해
+        주십시오.
       anonymous_warning_log_in: 로그인
       anonymous_warning_sign_up: 가입하기
       advice: 노트는 공개되어 지도 업데이트에 쓰일 수 있으므로 개인정보 또는 저작권이 있는 지도나 디렉터리 리스팅의 정보를 입력하지 마십시오.
@@ -2767,14 +2830,14 @@ ko:
       custom_dimensions: 사용자 지정 치수 설정
       format: '형식:'
       scale: '축척:'
-      image_dimensions: 이미지가 %{width} x %{height}로 표준 레이어를 표시합니다
+      image_dimensions: 이미지가 %{width} x %{height}로 %{layer} 레이어를 표시합니다
       download: 다운로드
       short_url: 짧은 URL
       include_marker: 표시 포함
       center_marker: 표시의 가운데 지도
       paste_html: HTML을 붙여 넣어 웹사이트에 포함시키세요
       view_larger_map: 큰 지도 보기
-      only_standard_layer: 표준 레이어만 그림으로 내보낼 수 있습니다
+      only_standard_layer: 표준, 사이클 지도, 교통 레이어만 그림으로 내보낼 수 있습니다
     embed:
       report_problem: 문제점 보고
     key:
index 73337c0f1f92bf954b23af25c053a634b8f17616..8fcd800e14f9dc94640de7edb9fa6cfb10ff45d4 100644 (file)
@@ -119,7 +119,7 @@ lb:
         longitude: Geografesch Längt
         public: Ëffentlech
         description: Beschreiwung
-        gpx_file: GPX-Fichier eroplueden
+        gpx_file: GPX-Trace-Fichier eraussichen
         visibility: Visibilitéit
         tagstring: Markéierungen
       message:
@@ -299,7 +299,7 @@ lb:
       make_edits_public_button: All meng Ännerunge ëffentlech maachen
     update:
       success_confirm_needed: Benotzerinformatioun aktualiséiert. Checkt Är E-Mail
-        op eng Benoriichtegung fir Är nei Email-Adress ze confirméieren.
+        op eng Benoriichtegung fir Är nei E-Mail-Adress ze confirméieren.
       success: Benotzerinformatioun ass elo aktualiséiert.
     destroy:
       success: Benotzerkont geläscht.
@@ -434,12 +434,20 @@ lb:
         belongs_to: Auteur
     show:
       title: 'Set vun Ännerungen: %{id}'
+      created: 'Ugeluecht: %{when}'
+      closed: 'Zougemaach: %{when}'
+      created_ago_html: Ugeluecht %{time_ago}
+      closed_ago_html: Zougemaach %{time_ago}
+      created_ago_by_html: Ugeluecht %{time_ago} vum %{user}
+      closed_ago_by_html: Zougemaach %{time_ago} vum %{user}
       discussion: Diskussioun
       join_discussion: Loggt Iech an, fir bei der Diskussioun matzemaachen
       still_open: Den Ännerungssaz ass nach op. 'Diskussioun gëtt opgemaach, esoubal
         wéi den Ännerungssaz zou ass.
       subscribe: Abonéieren
       unsubscribe: Ofbestellen
+      comment_by_html: Kommentar vum %{user} %{time_ago}
+      hidden_comment_by_html: Verstoppte Kommentar vum %{user} %{time_ago}
       hide_comment: verstoppen
       unhide_comment: nees weisen
       comment: Kommentéieren
@@ -520,6 +528,7 @@ lb:
       comment_count:
         one: '%{count} Bemierkung'
         other: '%{count} Bemierkungen'
+      no_comments: Keng Kommentaren
       edit_link: Dësen Antrag beaarbechten
       hide_link: Dësen Antrag verstoppen
       unhide_link: Dësen Antrag net méi verstoppen
@@ -584,6 +593,9 @@ lb:
       success: '%{name} gouf als Äre Frënd ewechgeholl.'
       not_a_friend: '%{name} ass kee vun Äre Frënn.'
   geocoder:
+    search:
+      title:
+        latlon: Intern
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -747,6 +759,7 @@ lb:
           college: Héichschoulgebai
           commercial: Commercëgebai
           construction: Gebai am Bau
+          cowshed: Koustall
           detached: Eenzelt Haus
           dormitory: Studentewunnheem
           duplex: Duebelhaus
@@ -776,6 +789,7 @@ lb:
           shed: Schapp
           stable: Stall
           static_caravan: Rulott
+          sty: Schwéngsstall
           temple: Tempelgebai
           terrace: Terrass
           train_station: Gebai vun der Gare (Eisebunn)
@@ -1378,6 +1392,7 @@ lb:
       status: Status
       reports: Rapporten
       last_updated: Lescht Aktualiséierung
+      last_updated_time_ago_user_html: '%{time_ago} vum %{user}'
       reports_count:
         one: '%{count} Bericht'
         other: '%{count} Berichter'
@@ -1391,6 +1406,7 @@ lb:
       reports:
         one: '%{count} Meldung'
         other: '%{count} Meldungen'
+      no_reports: Kee Rapport
       report_created_at_html: Fir d'éischt gemellt den %{datetime}
       last_resolved_at_html: Fir d'lescht erleedegt den %{datetime}
       last_updated_at_html: Fir d'lescht aktualiséiert den %{datetime} vun %{displayname}
@@ -1704,18 +1720,18 @@ lb:
         Kontakt ophuelen?
       people_mapping_nearby: Mapperen an der Noperschaft
     reply:
-      wrong_user: Dir sidd als '%{user}' ugemellt, awer d'Noriicht, déi Dir beäntwere
-        wollt, gouf un en anere Benotzer geschéckt. Mellt Iech fir d'Beäntwerte wannechgelift
-        mat dem richtege Benotzerkont un.
+      wrong_user: Dir sidd als '%{user}' ugemellt, awer d'Noriicht, op déi Dir äntwere
+        wollt, gouf net un dëse Benotzer geschéckt. Mellt Iech wgl. mat dem richtege
+        Benotzerkont u fir z'äntweren.
     show:
       title: Message liesen
       reply_button: Äntwerten
       unread_button: Als net gelies markéieren
       destroy_button: Läschen
       back: Zeréck
-      wrong_user: Du bass ugemellt als '%{user}', awer d'Noriicht, déis du liese wollts,
-        gouf un en anere Benotzer geschéckt. Wannechgelift mell dech fir ze liese
-        mat dem richtege Benotzer un.
+      wrong_user: Dir sidd als '%{user}' ugemellt, awer d'Noriicht, déi Dir liese
+        wollt, gouf net vun an net un dëse Benotzer geschéckt. Mellt Iech wgl. mat
+        dem richtege Benotzerkont u fir se ze liesen.
     sent_message_summary:
       destroy_button: Läschen
     heading:
@@ -1876,7 +1892,9 @@ lb:
           anere Quellen an, dorënner:'
         contributors_at_austria: Éisträich
         contributors_at_stadt_wien: Stad Wien
+        contributors_at_land_vorarlberg: Land Vorarlberg
         contributors_au_australia: Australien
+        contributors_au_geoscape_australia: Geoscape Australien
         contributors_ca_canada: Kanada
         contributors_cz_czechia: Tschechien
         contributors_fi_finland: Finnland
@@ -1884,6 +1902,7 @@ lb:
         contributors_hr_croatia: Kroatien
         contributors_nl_netherlands: Holland
         contributors_nz_new_zealand: Neiséiland
+        contributors_nz_cc_by: CC BY 4.0
         contributors_rs_serbia: Serbien
         contributors_si_slovenia: Slowenien
         contributors_es_spain: Spuenien
@@ -2085,6 +2104,7 @@ lb:
       public_traces: Ëffentlech GPS Spueren
       public_traces_from: Ëffentlech GPS-Spuere vu(n) %{user}
       description: Lescht GPS-Spuer-Uploads duerchsichen
+      wiki_page: Wiki-Säit
       all_traces: All Spuren
       my_traces: Meng Spueren
       traces_from: Ëffentlech Spuere vum %{user}
@@ -2184,6 +2204,7 @@ lb:
       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?
+      continue: Weider
       cancel: Ofbriechen
       legale_select: 'Sicht wgl. d''Land eraus wou Dir wunnt:'
       legale_names:
@@ -2208,6 +2229,7 @@ lb:
       my_preferences: Meng Benotzerastellungen
       my_dashboard: Meng Iwwersiichtssäit
       blocks by me: vu Mir Gespaart
+      edit_profile: Profil änneren
       send message: Message schécken
       diary: Blog
       edits: Ännerungen
@@ -2260,16 +2282,16 @@ lb:
         andeem Dir de Formulaire hei drënner benotzt.
   user_role:
     filter:
-      not_a_role: D'Zeechen '%{role}' ass keng valabel Roll.
+      not_a_role: D'Zeecheketten '%{role}' ass keng gülteg Roll.
       already_has_role: De Benotzer huet d'Roll %{role} schonn.
       doesnt_have_role: De Benotzer huet d'Roll %{role} net.
       not_revoke_admin_current_user: Et ass net méiglech dem Aktuelle Benotzer d'Administrateursrechter
         ewechzehuelen.
     grant:
-      are_you_sure: Sidd Dir sécher datt Dir dem Benotzer '%{name}' d'Roll '%{role}'
+      are_you_sure: Sidd Dir sécher, datt Dir dem Benotzer '%{name}' d'Roll '%{role}'
         zoudeele wëllt?
     revoke:
-      are_you_sure: Sidd Dir sécher datt Dir dem Benotzer '%{name}' d'Roll '%{role}'
+      are_you_sure: Sidd Dir sécher, datt Dir dem Benotzer '%{name}' d'Roll '%{role}'
         ofhuele wëllt?
   user_blocks:
     not_found:
@@ -2348,6 +2370,8 @@ lb:
       add: Notiz derbäisetzen
     notes_paging_nav:
       showing_page: Säit %{page}
+      next: Nächst
+      previous: Vireg
   javascripts:
     close: Zoumaachen
     share:
index 0db13f8088db476cce20590ea86e56b210bc87ee..b8b1f7b30ac4376b128364020aab5ee19d759cb3 100644 (file)
@@ -140,7 +140,7 @@ lt:
         longitude: Ilguma
         public: Viešas
         description: Aprašymas
-        gpx_file: Įkelti GPX failą
+        gpx_file: Pasirinkite GPS sekimo failą
         visibility: Matomumas
         tagstring: Žymos
       message:
@@ -366,6 +366,7 @@ lt:
     deleted_ago_by_html: Ištrinta %{user} %{time_ago}
     edited_ago_by_html: Redaguota %{user} %{time_ago}
     version: Versija
+    redacted_version: Redaguota versija
     in_changeset: Pakeitimas
     anonymous: anonimas
     no_comment: (nėra komentaro)
@@ -382,7 +383,10 @@ lt:
       other: '%{count} kelių'
     download_xml: Atsisiųsti XML
     view_history: Žiūrėti istoriją
+    view_unredacted_history: Žiūrėti neredaguotą versiją
     view_details: Žiūrėti detales
+    view_redacted_data: Žiūrėti redaguotus duomenis
+    view_redaction_message: Žiūrėti redaguotą pranešimą
     location: 'Vieta:'
     node:
       title_html: 'Taškas: %{name}'
@@ -428,8 +432,7 @@ lt:
         note: pastaba
     timeout:
       title: Laiko pabaigos klaida
-      sorry: Atsiprašome, bet duomenys objekto su id %{id} ir tipo %{type} buvo ištraukiami
-        per ilgai.
+      sorry: Atsiprašome, bet %{type} su %{id} gauti užtruko per ilgai.
       type:
         node: taškas
         way: kelias
@@ -445,8 +448,8 @@ lt:
         way: kelias
         relation: ryšys
     start_rjs:
-      feature_warning: Įkeliami %{num_features} geoobjektai, todėl jūsų naršyklė gali
-        sulėtėti ir nesugebėti klausyti komandų. Ar tikrai norite rodyti šiuos duomenis?
+      feature_warning: Įkeliami %{num_features} objektai, todėl jūsų naršyklė gali
+        sulėtėti ar neatsakyti. Ar tikrai norite rodyti šiuos duomenis?
       load_data: Kraunami duomenys
       loading: Kraunama...
     tag_details:
@@ -465,9 +468,22 @@ lt:
       introduction: Spauskite ant žemėlapio, norėdami rasti gretimus objektus
       nearby: Artimi objektai
       enclosing: Gaubiantys objektai
+  ways:
+    timeout:
+      sorry: Atsiprašome, užtruko per ilgai gauti kelio, kurio id %{id}, duomenis.
+  old_ways:
+    not_found:
+      sorry: Atsiprašome, kelio %{id} %{version} versija nerasta.
+    timeout:
+      sorry: Atsiprašome, užtruko per ilgai gauti kelio, kurio id %{id}, istoriją.
+  relations:
+    timeout:
+      sorry: Atsiprašome, užtruko per ilgai gauti sąsają su id %{id}.
   old_relations:
     not_found:
       sorry: Atsiprašome, santykio %{id} versijos %{version} nepavyko rasti.
+    timeout:
+      sorry: Atsiprašome, užtruko per ilgai gauti sąsajos su id %{id} istoriją.
   changeset_comments:
     feeds:
       comment:
@@ -502,8 +518,23 @@ lt:
         created: Sukurtas
         closed: Uždarytas
         belongs_to: Autorius
+    subscribe:
+      heading: Prenumeruoti šią pakeitimų rinkinio diskusiją?
+      button: Prenumeruokite diskusiją
+    unsubscribe:
+      heading: Atsisakyti šio pakeitimų rinkinio diskusijos prenumeratos?
+      button: Atsisakyti diskusijos prenumeratos
+    heading:
+      title: Pakeitimų rinkinys %{id}
+      created_by_html: Sukūrė %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Nėra įrašo su id: %{id}'
+      body: Atsiprašome, nėra pakeitimų rinkinio su id %{id}. Patikrinkite rašybą,
+        o gal nuoroda, kurią spustelėjote, yra neteisinga.
     show:
       title: 'Pakeitimas: %{id}'
+      created: 'Sukurta: %{when}'
+      closed: 'Uždaryta: %{when}'
       created_ago_html: Sukurta %{time_ago}
       closed_ago_html: Uždaryta %{time_ago}
       created_ago_by_html: Sukurta %{user} %{time_ago}
@@ -577,6 +608,9 @@ lt:
     show:
       title: '%{user} dienoraštis | %{title}'
       user_title: '%{user} dienoraštis'
+      discussion: Diskusija
+      subscribe: Prenumeruoti
+      unsubscribe: Atsisakyti prenumeratos
       leave_a_comment: Palikti komentarą
       login_to_leave_a_comment_html: '%{login_link}, kad paliktumėte komentarą'
       login: Prisijungti
@@ -618,6 +652,12 @@ lt:
       all:
         title: OpenStreetMap dienoraščio įrašai
         description: Paskutiniai OpenStreetMap naudotojų dienoraščių įrašai
+    subscribe:
+      heading: Užsiprenumeruoti šią dienoraščio įrašo diskusiją?
+      button: Prenumeruokite diskusiją
+    unsubscribe:
+      heading: Atsisakyti šios dienoraščio įrašo diskusijos prenumeratos?
+      button: Atsisakyti diskusijos prenumeratos
   diary_comments:
     index:
       title: Dienoraščio komentarus pridėjo %{user}
@@ -628,7 +668,18 @@ lt:
       post: Įrašas
       when: Kada
       comment: Komentaras
+    new:
+      heading: Pridėti komentarą prie šios dienoraščio įrašo diskusijos?
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Autorizacijos serveris reikalauja galutinio naudotojo
+          abonemento pasirinkimo
+        consent_required: Autorizacijos serveriui reikalingas galutinio naudotojo
+          sutikimas
+        interaction_required: Autorizacijos serveris reikalauja galutinio naudotojo
+          sąveikos
+        login_required: Autorizacijos serveriui reikalingas galutinio naudotojo autentifikavimas
     flash:
       applications:
         create:
@@ -646,6 +697,10 @@ lt:
       contact_the_community_html: Jei radote neveikiančią nuorodą ar klaidą, prašome
         %{contact_link} su OpenStreetMap bendruomene. Prašome įrašyti tikslų užklausos
         universalųjį adresą (URL).
+    bad_request:
+      title: Bloga užklausa
+      description: Operacija, kurios paprašėte „OpenStreetMap“ serveryje, negalima
+        (HTTP 400)
     forbidden:
       title: Uždrausta
       description: Jūsų prašomas veiksmas OpenStreetMap serveryje yra leidžiamas tik
@@ -1428,6 +1483,7 @@ lt:
       title: Problemos
       select_status: Parinkite būseną
       select_type: Pasirinkite tipą
+      select_last_updated_by: Pasirinkite Paskutinį kartą atnaujino
       reported_user: Pranešęs naudotojas
       not_updated: Neatnaujinta
       search: Ieškoti
@@ -1439,6 +1495,7 @@ lt:
     page:
       user_not_found: Naudotojo nėra
       issues_not_found: Tokių problemų nerasta
+      reported_user: Praneštas naudotojas
       status: Būsena
       reports: Pranešimai
       last_updated: Paskutinis atnaujinimas
@@ -1449,6 +1506,10 @@ lt:
         many: '{%count} pranešimas'
         other: '%{count} pranešimų'
       reported_item: Praneštas elementas
+      states:
+        ignored: Ignoruota
+        open: Atidaryta
+        resolved: Išspręsta
     show:
       title: '%{status} Problema #%{issue_id}'
       reports:
@@ -1543,13 +1604,17 @@ lt:
     intro_header: Sveiki atvykę į OpenStreetMap!
     intro_text: OpenStreetMap yra pasaulio žemėlapis, kuriamas žmonių, tokių kaip
       jūs. Jis atviras ir laisvas - naudojamas pagal atvirą licenciją.
+    hosting_partners_2024_html: Prieglobą palaiko %{fastly}, %{corpmembers} ir kiti
+      %{partners}.
     partners_fastly: Fastly
+    partners_corpmembers: OSMF korporacijos nariai
     partners_partners: partneriai
     tou: Naudojimo sąlygos
     osm_offline: Šiuo metu OpenStreetMap duomenų bazė išjungta, nes vykdomi svarbūs
       priežiūros darbai.
     osm_read_only: OpenStreetMap duomenų bazė šiuo metu dirba tik skaitymo režimu,
       nes vykdomi esminiai priežiūros darbai.
+    nothing_to_preview: Nėra ką peržiūrėti.
     help: Pagalba
     about: Apie
     copyright: Teisės ir licencija
@@ -1558,6 +1623,7 @@ lt:
     more: Daugiau
   user_mailer:
     diary_comment_notification:
+      description: 'OpenStreetMap dienoraščio įrašas #%{id}'
       subject: '[OpenStreetMap] %{user} pakomentavo dienoraščio įrašą'
       hi: Sveiki, %{to_user},
       header: '%{from_user} pakomentavo jūsų OpenStreetMap dienoraščio įrašą su tema
@@ -1568,6 +1634,8 @@ lt:
         galite adresu %{commenturl} arba nusiųsti žinutę autoriui adresu %{replyurl}
       footer_html: Jūs taip pat galite perskaityti komentarą %{readurl} ir pakomentuoti
         %{commenturl} arba nusiųsti žinutę autoriui %{replyurl}
+      footer_unsubscribe: Diskusijos prenumeratos galite atsisakyti %{unsubscribeurl}
+      footer_unsubscribe_html: Diskusijos prenumeratos galite atsisakyti %{unsubscribeurl}
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Sveiki, %{to_user},
@@ -1587,18 +1655,30 @@ lt:
       befriend_them: 'Galite pridėti juos prie draugų: %{befriendurl}'
       befriend_them_html: Galite pridėti juos prie draugų %{befriendurl}
     gpx_description:
-      description_with_tags_html: 'Panašu, kad Jūsų GPX failas %{trace_name} su aprašymu
+      description_with_tags: 'Panašu, kad jūsų failas %{trace_name} su aprašymu %{trace_description}
+        ir šiomis žymomis: %{tags}'
+      description_with_tags_html: 'Panašu, kad jūsų failas %{trace_name} su aprašymu
         %{trace_description} ir šiomis žymomis: %{tags}'
-      description_with_no_tags_html: Panašu, kad Jūsų GPX failas %{trace_name} su
-        aprašymu %{trace_description} ir be žymų
+      description_with_no_tags: Panašu, kad jūsų failas %{trace_name} su aprašymu
+        %{trace_description} ir be žymų
+      description_with_no_tags_html: Panašu, kad jūsų failas %{trace_name} su aprašymu
+        %{trace_description} ir be žymų
     gpx_failure:
       hi: Sveiki, %{to_user},
-      failed_to_import: 'nebuvo sėkmingai importuotas. Štai klaidos pranešimas:'
+      failed_to_import: 'nepavyko importuoti kaip GPS sekimo failas. Patvirtinkite,
+        kad failas yra galiojantis GPX failas arba archyvas, kuriame yra palaikomo
+        formato GPX failas (-ai) (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+        Ar gali būti failo formato ar sintaksės problemų? Importavimo klaida:'
+      more_info: Daugiau informacijos apie GPX importo nesėkmes ir kaip jų išvengti
+        galima rasti %{url}.
       more_info_html: Daugiau informacijos apie GPX įkėlimo klaidas ir kaip jų išvengti
         rasite adresu %{url}
       subject: '[OpenStreetMap] Nepavyko įkelti pėdsako (GPX)'
     gpx_success:
       hi: Sveiki, %{to_user},
+      trace_location: Jūsų pėdsakai pasiekiami %{trace_url}
+      all_your_traces: Visus sėkmingai įkeltus GPX pėdsakus rasite %{url}
+      all_your_traces_html: Visus sėkmingai įkeltus GPX pėdsakus rasite %{url}.
       subject: '[OpenStreetMap] Sėkmingai įkeltas pėdsakas (GPX)'
     signup_confirm:
       subject: '[OpenStreetMap] Sveiki atvykę į OpenStreetMap'
@@ -1624,6 +1704,7 @@ lt:
       click_the_link: Jei tai jūs, paspauskite žemiau esančią nuorodą, kad iš naujo
         nustatytumėte slaptažodį.
     note_comment_notification:
+      description: 'OpenStreetMap pastaba #%{id}'
       anonymous: Anoniminis naudotojas
       greeting: Sveiki,
       commented:
@@ -1658,9 +1739,10 @@ lt:
           Pastaba yra netoli %{place}.'
         commented_note_html: '%{commenter} pakartotinai aktyvavo žemėlapio pastabą,
           kurią Jūs pakomentavote. Pastaba yra netoliese %{place}.'
-      details: Daugiau informacijos apie pastabą galima rasti %{url}.
-      details_html: Daugiau informacijos apie pastabą galima rasti %{url}.
+      details: Atsakykite arba sužinokite daugiau apie pastabą %{url}.
+      details_html: Atsakykite arba sužinokite daugiau apie pastabą %{url}.
     changeset_comment_notification:
+      description: 'OpenStreetMap pakeitimų rinkinys #%{id}'
       hi: Sveiki, %{to_user},
       commented:
         subject_own: '[OpenStreetMap] %{commenter} pakomentavo vieną iš jūsų pakeitimų'
@@ -1675,12 +1757,12 @@ lt:
         partial_changeset_with_comment: su komentaru '%{changeset_comment}'
         partial_changeset_with_comment_html: su komentaru '%{changeset_comment}'
         partial_changeset_without_comment: be komentaro
-      details: Daugiau informacijos apie pakeitimą rasite čia %{url}.
-      details_html: Daugiau informacijos apie pakeitimą rasite adresu %{url}.
-      unsubscribe: Jei norite atsisakyti šio pakeitimo atnaujinimų, eikite į %{url}
-        ir spauskite „Atsisakyti“.
-      unsubscribe_html: Jei norite atsisakyti šio pakeitimo atnaujinimų, atidarykite
-        šią nuorodą %{url} ir spauskite „Atsisakyti“.
+      details: Atsakykite arba sužinokite daugiau apie pakeitimų rinkinį %{url}.
+      details_html: Atsakykite arba sužinokite daugiau apie pakeitimų rinkinį %{url}.
+      unsubscribe: Galite atsisakyti šio pakeitimų rinkinio naujinių prenumeratos
+        %{url}.
+      unsubscribe_html: Galite atsisakyti šio pakeitimų rinkinio naujinių prenumeratos
+        %{url}.
   confirmations:
     confirm:
       heading: Patikrinkite savo pašto dėžutę!
@@ -1760,18 +1842,18 @@ lt:
     muted:
       title: Nutildyti pranešimai
     reply:
-      wrong_user: Jūs prisijungęs kaip „%{user}“, bet pranešimas, kuriuo jūsų prašyta
-        atsakyti, nebuvo nusiųstas tam naudotojui. Prisijunkite prie teisingos naudotojo
-        paskyros, jei norite atsakyti.
+      wrong_user: Jūs prisijungę kaip „%{user}“, bet pranešimas, į kurį rašyta atsakyti,
+        nebuvo siųstas tam naudotojui. Prisijunkite prie teisingos naudotojo paskyros,
+        jei norite atsakyti.
     show:
       title: Skaityti pranešimą
       reply_button: Atsakyti
       unread_button: Pažymėti neperskaitytu
       destroy_button: Trinti
       back: Grįžti
-      wrong_user: Jūs prisijungęs kaip „%{user}“, bet pranešimas, kurį jūsų prašyta
-        perskaityti, nebuvo nusiųstas to ar tam naudotojui. Prisijunkite prie teisingos
-        naudotojo paskyros, jei norite tai perskaityti.
+      wrong_user: Jūs prisijungę kaip „%{user}“, bet pranešimas, kuri prašėte perskaityti,
+        nebuvo siųstas tam naudotojui. Prisijunkite prie teisingos naudotojo paskyros,
+        jei norite perskaityti.
     sent_message_summary:
       destroy_button: Ištrinti
     heading:
@@ -1795,6 +1877,9 @@ lt:
       help_text: Įveskite elektroninio pašto adresą, kurį naudojote užsiregistruodami.
         Mes atsiųsime nuorodą į elektroninį paštą, kurią galėsite naudoti norėdami
         iš naujo nustatyti slaptažodį.
+    create:
+      send_paranoid_instructions: Jei jūsų el. pašto adresas yra mūsų duomenų bazėje,
+        po kelių minučių į savo el. pašto adresą gausite slaptažodžio atkūrimo nuorodą.
     edit:
       title: Iš naujo nustatyti slaptažodį
       heading: Iš naujo nustatyti naudotojo %{user} slaptažodį
@@ -1846,12 +1931,14 @@ lt:
   sessions:
     new:
       tab_title: Prisijungti
+      login_to_authorize_html: Prisijunkite prie OpenStreetMap, kad pasiektumėte %{client_app_name}.
       email or username: 'El. pašto adresas ar naudotojo vardas:'
       password: Slaptažodis
       remember: Prisiminti prisijungimą
       lost password link: Pamiršote slaptažodį?
       login_button: Prisijungti
-      with external: 'Alternatyviai, naudokite trečią šalį prisijungimui:'
+      with external: arba prisijunkite naudodami trečiąją šalį
+      or: ar
       auth failure: Atsiprašome, negalite prisijungti su tokiais duomenimis.
     destroy:
       title: Atsijungti
@@ -1880,6 +1967,7 @@ lt:
     richtext_field:
       edit: Redaguoti
       preview: Peržiūrėti
+      help: Pagalba
     pagination:
       diary_comments:
         older: Senesni komentarai
@@ -1887,9 +1975,18 @@ lt:
       diary_entries:
         older: Senesni įrašai
         newer: Naujesni įrašai
+      issues:
+        older: Senesnės problemos
+        newer: Naujesnės problemos
       traces:
         older: Senesni pėdsakai
         newer: Naujesni pėdsakai
+      user_blocks:
+        older: Senesni blokavimai
+        newer: Naujesni blokavimai
+      users:
+        older: Senesni naudotojai
+        newer: Naujesni naudotojai
   site:
     about:
       heading_html: '%{copyright}OpenStreetMap %{br} bendradarbiai'
@@ -1902,6 +1999,14 @@ lt:
         orotofoto nuotraukas, GPS įrenginius ir paprastus lauko žemėlapius, tikrindami,
         kad OSM duomenys yra teisingi ir aktualūs.
       community_driven_title: Bendruomenės vystomas
+      community_driven_1_html: |-
+        OpenStreetMap bendruomenė yra įvairi, aistringa ir auga kiekvieną dieną.
+        Mūsų bendradarbiai yra entuziastai žemėlapių kūrėjai, GIS profesionalai, inžinieriai
+        jie valdo OSM serverius, humanitarai apibrėžia stichinių nelaimių paveiktas teritorijas
+        ir daug daugiau.
+        Norėdami sužinoti daugiau apie bendruomenę, apsilankykite %{osm_blog_link},
+        %{user_diaries_link}, %{community_blogs_link} ir
+        %{osm_foundation_link} svetainėje.
       community_driven_osm_blog: OpenStreetMap tinklaraštis
       community_driven_user_diaries: naudotojų dienoraščiai
       community_driven_community_blogs: bendruomenių tinklaraščiai
@@ -1927,6 +2032,8 @@ lt:
         Prašome %{contact_the_osmf_link}
         Jei turite licencijų, autorių teisių ar kitų teisinių klausimų.
       legal_2_1_contact_the_osmf: susisiekti su OSMF
+      legal_2_2_html: OpenStreetMap, didinamojo stiklo logotipas ir žemėlapio būsena
+        yra %{registered_trademarks_link}.
       legal_2_2_registered_trademarks: OSMF registruotie prekių ženklai
       partners_title: Partneriai
     copyright:
@@ -1950,6 +2057,12 @@ lt:
         introduction_1_open_data: atviri duomenys
         introduction_1_odc_odbl: Open Data Commons Open Database licencija
         introduction_1_osm_foundation: OpenStreetMap fondas
+        introduction_2_html: Galite laisvai kopijuoti, platinti, perduoti ir pritaikyti
+          mūsų duomenis, jei tik nurodysite OpenStreetMap ir jo pagalbininkus. Jei
+          pakeisite arba remsitės mūsų duomenimis, rezultatus galite platinti tik
+          pagal tą pačią licenciją. Pilnas %{legal_code_link} paaiškina jūsų teises
+          ir pareigas.
+        introduction_2_legal_code: teisinis kodas
         introduction_3_html: Mūsų dokumentai yra licencijuoti pagal %{creative_commons_link}
           licenciją (CC BY-SA 2.0).
         introduction_3_creative_commons: Creative Commons Attribution-ShareAlike 2.0
@@ -1959,7 +2072,20 @@ lt:
         credit_2_1: Nurodykite priskyrimą naudojant OpenStreetMap autorių teisių pranešimą.
         credit_2_2: Paaiškinkite, kad duomenys yra prieinami pagal atviros duomenų
           bazės licenciją.
+        credit_3_html: |-
+          Autorių teisių įspėjimui taikome skirtingus reikalavimus,
+          atsižvelgiant į tai, kaip naudojate mūsų duomenis. Pavyzdžiui, taikomos skirtingos
+          taisyklės, kaip rodyti pranešimą apie autorių teises, atsižvelgiant į tai, ar
+          sukūrėte naršomą žemėlapį, spausdintą žemėlapį ar statinį vaizdą. Visą informaciją apie
+          reikalavimus rasite %{attribution_guidelines_link}.
         credit_3_attribution_guidelines: Priskyrimo gairės
+        credit_4_1_html: "Kad būtų aišku, duomenys yra prieinami pagal Open\nDatabase
+          licenciją, galite nurodyti į %{this_copyright_page_link}.\nAlternatyviai
+          arba, jei platinate OSM\nduomenų forma, galite pateikti nuorodą tiesiai
+          į licenciją (-as). Medijoje,\nkur nuorodos neįmanomos (pvz., spausdintuose
+          kūriniuose), siūlome\nnukreipti savo skaitytojus į openstreetmap.org (galbūt
+          išplečiant\n'OpenStreetMap' šiuo visu adresu) ir į opendatacommons.org.
+          \nŠiame pavyzdyje nuoroda rodoma žemėlapio kampe."
         credit_4_1_this_copyright_page: šį autorių teisių puslapį
         attribution_example:
           alt: Pavyzdys kaip galima priskirti paskyrimus OpenStreetMap svetainėje
@@ -1968,13 +2094,26 @@ lt:
         more_1_1_html: Skaitykite daugiau apie mūsų duomenų naudojimą ir kaip mums
           priskirti autorystę apsilankę %{osmf_licence_page_link}.
         more_1_1_osmf_licence_page: OSMF licencijos puslapis
+        more_2_1_html: Nors OpenStreetMap yra atvirų duomenų, mes negalime teikti
+          nemokamo žemėlapių API trečiosioms šalims. Žiūrėkite mūsų %{api_usage_policy_link},
+          %{tile_usage_policy_link} ir %{nominatim_usage_policy_link}.
         more_2_1_api_usage_policy: API naudojimo politika
+        more_2_1_tile_usage_policy: Plytelių naudojimo politika
+        more_2_1_nominatim_usage_policy: Nominatim naudojimo politika
         contributors_title_html: Mūsų autoriai
         contributors_intro_html: Mūsų autoriai yra tūkstančiai įvairių žmonių. Taip
           pat įtrauktas ir laisvai prieinamas turinys iš valstybinių kartografijos
           agentūrų bei įvairių kitų šaltinių.
+        contributors_at_credit_html: |-
+          %{austria}: yra duomenų iš %{stadt_wien_link} (pagal %{cc_by_link}), %{land_vorarlberg_link}
+          ir Land Tirol (pagal %{cc_by_at_with_amendments_link}).
         contributors_at_austria: Austrija
+        contributors_at_stadt_wien: Vienos miestas
+        contributors_at_land_vorarlberg: Forarlbergo žemė
         contributors_at_cc_by_at_with_amendments: CC BY AT su pakeitimais
+        contributors_au_credit_html: |-
+          %{australia}: įtraukta arba sukurta naudojant administracines ribas © %{geoscape_australia_link}
+          licencijuota Australijos Sandraugos pagal %{cc_licence_link}.
         contributors_au_australia: Australija
         contributors_au_geoscape_australia: Geoscape Australia
         contributors_au_cc_licence: Creative Commons Attribution 4.0 tarptautinė licencija
@@ -2001,6 +2140,12 @@ lt:
           %{france}: yra duomenų iš
           Bendrojo mokesčių valdytojo.
         contributors_fr_france: Prancūzija
+        contributors_hr_credit_html: |-
+          %{croatia}: yra duomenų iš %{dgu_link} ir %{open_data_portal}
+          (vieša Kroatijos informacija).
+        contributors_hr_croatia: Kroatija
+        contributors_hr_dgu: Kroatijos valstybinė geodezijos administracija
+        contributors_hr_open_data_portal: Nacionalinis atvirų duomenų portalas
         contributors_nl_credit_html: '%{netherlands}: Yra &copy; AND duomenų, 2007
           (%{and_link})'
         contributors_nl_netherlands: Nyderlandai
@@ -2033,7 +2178,13 @@ lt:
         contributors_za_south_africa: Pietų Afrika
         contributors_za_ngi: 'Vyriausiasis direktoratas: Nacionalinė geografinė erdvinė
           informacija'
+        contributors_gb_credit_html: |-
+          %{united_kingdom}: yra Ordnance
+          apklausos duomenų © Karūnos autorių teisės ir duomenų bazės teisės 2010-2023.
         contributors_gb_united_kingdom: Jungtinė Karalystė
+        contributors_2_html: |-
+          Norėdami gauti daugiau informacijos apie šiuos ir kitus šaltinius, kurie buvo naudojami
+          siekiant pagerinti OpenStreetMap, žiūrėkite %{contributors_page_link} OpenStreetMap Viki.
         contributors_2_contributors_page: Pagalbininkų puslapis
         contributors_footer_2_html: Duomenų įtraukimas į OpenStreetMap nereiškia,
           kad originalių duomenų tiekėjas remia OpenStreetMap. Nenumatomos jokios
@@ -2044,6 +2195,8 @@ lt:
           leidimo naudoti.
         infringement_2_1_takedown_procedure: pašalinimo procedūra
         infringement_2_1_online_filing_page: pildymo internetu puslapis
+        trademarks_title: Prekių ženklai
+        trademarks_1_1_trademark_policy: Prekių ženklų politika
     index:
       js_1: Jūs arba naudojate naršyklę, nepalaikančią JavaScript, arba išjungėte
         JavaScript palaikymą.
@@ -2117,8 +2270,8 @@ lt:
         title: Pradedančiojo vadovas
         description: Bendruomenės palaikomas vadovas pradedantiesiems.
       community:
-        title: Bendruomenės forumas
-        description: Bendra vieta pokalbiams apie OpenStreetMap.
+        title: Pagalba ir bendruomenės forumas
+        description: Bendra vieta, kur galima ieškoti pagalbos ir kalbėtis apie „OpenStreetMap“.
       mailing_lists:
         title: El. pašto grupės
         description: Užduokite klausimą ar diskutuokite apie įdomius dalykus daugelyje
@@ -2148,6 +2301,8 @@ lt:
       change_preferences: Pakeiskite savo nustatymus čia
     any_questions:
       title: Turite klausimų?
+      get_help_here: Gaukite pagalbą čia
+      welcome_mat: Žiūrėkite pasveikinimą
     sidebar:
       search_results: Paieškos rezultatai
     search:
@@ -2168,6 +2323,7 @@ lt:
           primary: Pirmosios reikšmės kelias
           secondary: Antros reikšmės kelias
           unclassified: Neklasifikuotas kelias
+          pedestrian: Pėsčiųjų kelias
           track: Pėdsakas
           bridleway: Raitųjų takas
           cycleway: Dviračių takas
@@ -2231,6 +2387,9 @@ lt:
           hospital: Ligoninė
           building: Didelis pastatas
           station: Geležinkelio stotis
+          railway_halt: Geležinkelio sustojimas
+          subway_station: Metro stotis
+          tram_stop: Tramvajaus stotelė
           summit: Viršūnė
           peak: Viršukalnė
           tunnel: Punktyriniai kraštai = tiltas
@@ -2251,12 +2410,21 @@ lt:
         instrukcija su svarbiausiais dalykais, kuriuos turėtumėte žinoti.
       whats_on_the_map:
         title: Kas yra žemėlapyje
+        on_the_map_html: |-
+          „OpenStreetMap“ yra vieta žemėlapiams sudaryti, kur dalykai %{real_and_current} –
+          čia yra milijonai pastatų, kelių ir kitos informacijos apie vietas. Galite nustatyti
+          bet kokias jums įdomias realaus pasaulio funkcijas.
+        real_and_current: tikri ir dabartiniai
       basic_terms:
         title: Pagrindiniai žymėjimo terminai
         paragraph_1: OpenStreetMap turi savo žodyną. Čia keli pagrindiniai naudojami
           terminai/žodžiai.
+        an_editor_html: '%{editor} yra programa ar svetainėje, skirta redaguoti žemėlapį.'
+        a_node_html: '%{node} yra taškas žemėlapyje, pvz., restoranas ar medis.'
         a_way_html: '%{way} – tai linija arba teritorija, kaip kelias, upelis, ežeras
           ar pastatas.'
+        a_tag_html: '%{tag} yra šiek tiek duomenų apie tašką arba kelią, pvz., restorano
+          pavadinimas arba kelio greičio ribojimas.'
         editor: redaktorius
         node: taškas
         way: kelias
@@ -2280,6 +2448,9 @@ lt:
         Jos taip pat gali būti formalios arba neformalios.
       local_chapters:
         title: Vietiniai skyriai
+      other_groups:
+        title: Kitos grupės
+        communities_wiki: Bendruomenių viki puslapis
   traces:
     visibility:
       private: Privatus (dalinamas tik kaip anonimiškas, taškai nesurikiuoti)
@@ -2349,6 +2520,8 @@ lt:
       identifiable: IDENTIFIKUOJAMAS
       private: PRIVATUS
       trackable: ATSEKAMAS
+      details_with_tags_html: '%{time_ago}, %{user}, %{tags}'
+      details_without_tags_html: '%{time_ago} %{user}'
     index:
       public_traces: Vieši GPS pėdsakai
       my_gps_traces: Mano GPS pėdsakai
@@ -2396,29 +2569,33 @@ lt:
       account_settings: Paskyros nustatymai
       oauth2_applications: „OAuth 2“ programos
       oauth2_authorizations: „OAuth 2“ prieigos teisės
+      muted_users: Nutildyti naudotojai
     auth_providers:
+      openid_url: OpenID URL
+      openid_login_button: Tęsti
       openid:
-        title: Prisijunkite su OpenID
-        alt: Prisijunkite su OpenID URL
+        title: Prisijungti su OpenID
+        alt: OpenID logotipas
       google:
-        title: Prisijunkite su Google
-        alt: Prisijunkite su Google OpenID
+        title: Prisijungti su Google
+        alt: Google logotipas
       facebook:
         title: Prisijungti su Facebook
-        alt: Prisijungti su Facebook paskyra
+        alt: Facebook logotipas
       microsoft:
         title: Prisijungti su Microsoft
-        alt: Prisijungti su Microsoft paskyra
+        alt: Microsoft logotipas
       github:
         title: Prisijungti su GitHub
-        alt: Prisijungti su GitHub Paskyra
+        alt: GitHub logotipas
       wikipedia:
         title: Prisijungti su Vikipedija
-        alt: Prisijungti su Vikipedija Paskyra
+        alt: Vikipedijos logotipas
   oauth:
     permissions:
       missing: Jūs nesuteikėte leidimo programai pasiekti šios priemonės
     scopes:
+      openid: Prisijungti su OpenStreetMap
       read_prefs: Skaityti naudotojo parinktis
       write_prefs: Keisti naudotojo parinktis
       write_diary: Sukurti dienoraščio įrašus, komentarus ir pridėti draugus
@@ -2426,8 +2603,13 @@ lt:
       read_gpx: Skaityti privačius GPS pėdsakus
       write_gpx: Įkelti GPS pėdsakus
       write_notes: Keisti pastabas
+      write_redactions: Redaguoti žemėlapio duomenis
       read_email: Skaityti naudotojo el. pašto adresą
+      consume_messages: Skaityti, atnaujinti būseną ir ištrinti naudotojo pranešimus
+      send_messages: Siųsti asmenines žinutes kitiems naudotojams
       skip_authorization: Automatinis programos patvirtinimas
+    for_roles:
+      moderator: Šis leidimas skirtas veiksmams, prieinamiems tik moderatoriams
   oauth2_applications:
     index:
       title: Mano klientinės programos
@@ -2472,6 +2654,7 @@ lt:
       title: Mano programos su prieigos teisėmis
       application: Programa
       permissions: Leidimai
+      last_authorized: Paskutinį kartą įgaliota
       no_applications_html: Jūs dar nesuteikėte leidimų nei vienai programai naudojančiai
         %{oauth2}.
     application:
@@ -2480,21 +2663,41 @@ lt:
   users:
     new:
       title: Sukurti paskyrą
+      tab_title: Užsiregistruoti
+      signup_to_authorize_html: Prisiregistruokite naudodami „OpenStreetMap“, kad
+        pasiektumėte %{client_app_name}.
       no_auto_account_create: Deja šiuo metu negalime jums automatiškai sukurti paskyros.
+      please_contact_support_html: Susisiekite su %{support_link} dėl paskyros sukūrimo
+        – mes pasistengsime kuo greičiau išnagrinėti užklausą.
+      support: pagalba
       about:
-        header: Laisvas ir redaguojamas
+        header: Laisvas ir redaguojamas.
         paragraph_1: Skirtingai nuo kitų žemėlapių, OpenStreetMap žemėlapį visiškai
           sukūrė žmonės, tokie kaip tu, ir jį nemokamai gali taisyti, atnaujinti,
           atsisiųsti ir naudoti kiekvienas.
-        paragraph_2: Užsiregistruok ir pradėk prisidėti. Atsiųsime el. laišką, kad
-          patvirtintume tavo paskyrą.
+        paragraph_2: Užsiregistruokite ir prisidėkite.
+        welcome: Sveiki atvykę į OpenStreetMap
+      duplicate_social_email: Jei jau turite OpenStreetMap paskyrą ir norite naudoti
+        trečiosios šalies tapatybės teikėją, prisijunkite naudodami slaptažodį ir
+        pakeiskite paskyros nustatymus.
       display name description: Jūsų viešai rodomas naudotojo vardas. Jei norėsite,
         galėsite jį vėliau pakeisti savo nustatymuose.
       by_signing_up:
+        html: Prisiregistruodami sutinkate su mūsų %{tou_link}, %{privacy_policy_link}
+          ir %{contributor_terms_link}.
         privacy_policy: privatumo politika
+        contributor_terms: bendraautorių sąlygos
       continue: Užsiregistruoti
       terms accepted: Ačiū, kad patvirtinote naująsias talkininkų sąlygas!
-      use external auth: Alternatyviai, naudokite trečią šalį prisijungimui
+      email_help:
+        privacy_policy: privatumo politika
+        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į
     terms:
       title: Sąlygos
       heading: Sąlygos
@@ -2503,10 +2706,18 @@ lt:
         sąlygas, tai padarius, pažymėti abi varneles ir tada spausti tęsimo mygtuką.
       contributor_terms_explain: Ši sutartis valdo jūsų dabartinį ir būsimą indėlį.
       read_ct: Aš perskaičiau ir sutinku su aukščiau pateiktomis talkininko sąlygomis
+      tou_explain_html: Šie %{tou_link} reglamentuoja svetainės ir kitos OSMF teikiamos
+        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
+      informal_translations: neformalūs vertimai
       continue: Tęsti
+      cancel: Atšaukti
       you need to accept or decline: Norėdami tęsti perskaitykite ir sutikite, arba
         nesutikite su Talkininkų sąlygomis.
       legale_select: 'Gyvenamoji vieta:'
@@ -2515,6 +2726,8 @@ lt:
         italy: Italija
         rest_of_world: Likęs pasaulis
     terms_declined_flash:
+      terms_declined_html: Apgailestaujame, kad nusprendėte nesutikti su naujomis
+        bendraautoriu sąlygomis. Norėdami gauti daugiau informacijos, žr. %{terms_declined_link}.
       terms_declined_link: šis viki puslapis
     no_such_user:
       title: Nėra tokio naudotojo
@@ -2535,6 +2748,8 @@ lt:
       my_dashboard: Mano valdymo skydelis
       blocks on me: Apribojimai man
       blocks by me: Mano sukurti apribojimai
+      create_mute: Nutildyti šį naudotoją
+      destroy_mute: Nebetildyti šio naudotojo
       edit_profile: Redaguoti profilį
       send message: Siųsti žinutę
       diary: Dienoraštis
@@ -2544,6 +2759,9 @@ lt:
       remove as friend: Nebedraugauti
       add as friend: Pridėti draugą
       mapper since: 'Žymi nuo:'
+      last map edit: 'Paskutinis žemėlapio keitimas:'
+      no activity yet: Kol kas nėra veiklos
+      uid: 'Naudotojo id:'
       ct status: Talkininkų sąlygos
       ct undecided: Nenuspręsta
       ct declined: Atmesta
@@ -2554,14 +2772,18 @@ lt:
       role:
         administrator: Šis naudotojas yra administratorius
         moderator: Šis naudotojas yra moderatorius
+        importer: Šis naudotojas yra importuotojas
         grant:
           administrator: Suteikti administratoriaus teises
           moderator: Suteikti moderatoriaus teises
+          importer: Suteikti importuotojui prieigą
         revoke:
           administrator: Atšaukti administratoriaus teises
           moderator: Atšaukti moderatoriaus teises
+          importer: Atšaukti importuotojo prieigą
       block_history: Aktyvūs blokavimai
       moderator_history: Gauti užblokavimai
+      revoke_all_blocks: Atšaukti visus blokavimus
       comments: Komentarai
       create_block: Blokuoti šį naudotoją
       activate_user: Aktyvuoti šį naudotoją
@@ -2605,9 +2827,9 @@ lt:
         Jei esate naujokas OpenStreetMap, prašome sukurti naują paskyrą
         naudodami žemiau pateiktą formą.
       option_2: |-
-        Jei jau turite sąskaitą, galite prisijungti prie savo sąskaitos
-        naudodami savo vartotojo vardą ir slaptažodį, ir tada susieti paskyrą
-        su savo ID, savo vartotojo nustatymuose.
+        Jei jau turite paskyrą, galite prisijungti prie savo paskyros
+        naudodami savo naudotojo vardą ir slaptažodį, ir tada susieti paskyrą
+        su savo ID, savo naudotojo nustatymuose.
   user_role:
     filter:
       not_a_role: Eilutė „%{role}“ nėra tinkama rolė.
@@ -2636,6 +2858,7 @@ lt:
       heading_html: Keičiamas naudotojo %{name} blokavimas
       period: Kiek laiko, pradedant nuo šios minutės, naudotojui bus uždrausta naudotis
         API.
+      revoke: Atšaukti blokavimą
     filter:
       block_period: Blokavimo periodo reikšmė turi būti pasirinkta iš iškrentančio
         sąrašo.
@@ -2643,11 +2866,24 @@ lt:
       flash: Naudotojas %{name} užblokuotas.
     update:
       only_creator_can_edit: Tik šį blokavimą sukūręs moderatorius gali jį keisti.
+      only_creator_can_edit_without_revoking: Tik šį blokavimą sukūręs moderatorius
+        gali jį keisti jo nepašalinant.
+      only_creator_or_revoker_can_edit: Tik šį blokavimą sukūręs ar atšaukęs moderatorius
+        gali jį keisti.
+      inactive_block_cannot_be_reactivated: Šis blokavimas neaktyvus ir jo negalima
+        iš naujo suaktyvinti.
       success: Blokavimas atnaujintas.
     index:
       title: Naudotojų blokavimai
       heading: Naudotojo blokavimų sąrašas
       empty: Niekas dar nebuvo blokuojamas.
+    revoke_all:
+      title: Atšaukiami visi %{block_on} blokavimai
+      heading_html: Atšaukiami visi %{block_on} blokavimai
+      empty: '%{name} neturi aktyvių blokavimų.'
+      confirm: Ar tikrai norite atšaukti %{active_blocks}?
+      revoke: Atšaukti!
+      flash: Visi aktyvūs blokavimai atšaukti.
     helper:
       time_future_html: Baigiasi po %{time}.
       until_login: Aktyvus iki naudotojo prisijungimo.
@@ -2707,6 +2943,31 @@ lt:
       reason: Blokavimo priežastis
       status: Būsena
       revoker_name: Atšaukė
+    navigation:
+      all_blocks: Visi blokavimai
+      blocks_on_me: Mano blokavimai
+      blocks_on_user: '%{user} blokavimai'
+      blocks_by_me: Mano sukurti blokavimai
+      blocks_by_user: '%{user} sukurti blokavimai'
+      block: 'Blokavimas #%{id}'
+      new_block: Naujas blokavimas
+  user_mutes:
+    index:
+      title: Nutildyti naudotojai
+      my_muted_users: Mano nutildyti naudotojai
+      table:
+        thead:
+          muted_user: Nutildytas naudotojas
+          actions: Veiksmai
+        tbody:
+          unmute: Nebetildyti
+          send_message: Siųsti žinutę
+    create:
+      notice: Nutildėte %{name}.
+      error: '%{name} nepavyko nutildyti. %{full_message}.'
+    destroy:
+      notice: Nebetildote %{name}.
+      error: Nepavyko nebetildyti naudotojo. Bandykite dar kartą.
   notes:
     index:
       title: Pastabas pateikė arba komentavo %{user}
index 9cfc23f2c103ce2e57023113dadfd824911ee2c1..d214bd5ce559af385c03740212947e7a6f77f513 100644 (file)
@@ -3,10 +3,16 @@
 # Export driver: phpyaml
 # Author: Dr Lotus Black
 # Author: Ninjastrikers
+# Author: Zyh333222
 # Author: ခွန်ပညာႏ(တောင်ႏကီꩻ)
 # Author: သူထွန်း
 ---
 my:
+  time:
+    formats:
+      friendly: |-
+        %e %B %Y
+         at %H:%M
   helpers:
     file:
       prompt: ဖိုင်ရွေးပါ
index 4b855b9c927a1af6d464102a41fe6fcbb7b8815c..c24f750519308f547db7cc201574b19ebe6fda31 100644 (file)
@@ -1051,7 +1051,7 @@ nb:
         place:
           allotments: Jordlapper
           archipelago: Øygruppe
-          city: By
+          city: Storby
           city_block: Bykvartal
           country: Land
           county: Fylke
@@ -1074,7 +1074,7 @@ nb:
           state: Delstat
           subdivision: Underavdeling
           suburb: Forstad
-          town: Tettsted
+          town: By
           village: Landsby
           "yes": Sted
         railway:
@@ -1375,6 +1375,7 @@ nb:
     help: Hjelp
     about: Om
     copyright: Opphavsrett
+    communities: Fellesskap
     learn_more: Lær mer
     more: Mer
   user_mailer:
@@ -1830,7 +1831,7 @@ nb:
           apron: terminal
           admin: Administrativ grense
           capital: Hovedstad
-          city: By
+          city: Storby
           forest: Skog
           wood: Ved
           golf: Golfbane
@@ -1891,6 +1892,27 @@ nb:
         title: Har du ikke tid til å kartlegge selv? Legg inn en merknad!
         para_1: Hvis du bare vil ha rettet en liten detalj, men ikke har tid til å
           gjøre dette selv, kan du legge inn en merknad.
+    communities:
+      title: Fellesskap
+      lede_text: |-
+        Mennesker fra hele verden bidrar til eller bruker OpenStreetMap. Mens mange deltar individuelt, har andre dannet fellesskap.
+        Disse gruppene fins i mange størrelser og representerer brukere fra små byer til store regioner som spenner over flere land.
+        De kan også være formelle eller uformelle.
+      local_chapters:
+        title: Lokale avdelinger
+        about_text: |-
+          Lokale avdelinger er grupper på land- eller regionnivå som har tatt det formelle skrittet med å
+          etablere ikke-for-profit juridiske enheter. De representerer områdets kart og kartleggere når
+          de har å gjøre med lokale myndigheter, næringsliv og media. De har også dannet en tilknytning
+          med OpenStreetMap Foundation (OSMF), og gir dem en lenke til det juridiske og opphavsrettslige
+          styrende organet.
+        list_text: 'De følgende fellesskapene er formelt etablert som lokale avdelinger:'
+      other_groups:
+        title: Andre grupper
+        other_groups_html: |-
+          Det er ikke nødvendig å formelt etablere en gruppe i samme grad som de lokale avdelingene.
+          Mange grupper eksisterer faktisk svært vellykket som en uformell samling av mennesker eller som en
+          fellesskapsgruppe. Alle kan sette opp eller bli med i disse. Les mer på %{communities_wiki_link}.
   traces:
     visibility:
       private: Privat (bare delt som anononyme, usorterte punkter)
index d1629a3996d6d0589c7745e71ea98fe2eaad0a6f..b6a7bf7a06160b0fc83d413ff50574d112c34e18 100644 (file)
@@ -23,8 +23,6 @@ ne:
   time:
     formats:
       friendly: '%e %B %Y मा %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: फाइल छान्नुहोस्
index a6ea814fccda454f2133ae60a707368f03802124..9df3f0be93a6535c32bca904d1ab42e7d7986536 100644 (file)
@@ -33,6 +33,9 @@ pa:
       oauth2_application:
         create: ਇੰਦਰਾਜ ਕਰਾਓ
         update: ਨਵਿਆਉ
+      redaction:
+        create: ਸੁਧਾਈ ਬਣਾਓ
+        update: ਸੁਧਾਈ ਸੰਭਾਲੋ
       trace:
         create: ਚੜ੍ਹਾਉ
         update: ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ
@@ -40,13 +43,20 @@ pa:
         create: ਬਲਾਕ ਬਣਾਓ
         update: ਰੋਕ ਨਵਿਆਉ
   activerecord:
+    errors:
+      messages:
+        display_name_is_user_n: ਵਰਤੋਂਕਾਰ_n  ਨਹੀਂ ਹੋ ਸਕਦੇ ਜਦੋਂ ਤੱਕ n ਤੁਹਾਡੀ ਵਰਤੋਂਕਾਰ
+          ਸ਼ਿਨਾਖਤ(id) ਨਹੀਂ ਹੈ
+      models:
+        user_mute:
+          is_already_muted: ਪਹਿਲਾਂ ਹੀ ਚੁੱਪ ਹੈ
     models:
       acl: ਅਸੈੱਸ ਕੰਟਰੋਲ ਲਿਸਟ
-      changeset: ਤਬਦੀਲੀ ਲੜੀ
+      changeset: ਤਬਦੀਲੀ-ਲੜੀਆਂ
       changeset_tag: ਤਬਦੀਲੀ ਲੜੀ ਨਿਸ਼ਾਨ
       country: ਮੁਲਕ
-      diary_comment: à¨¡à¨¾à¨\87ਰà©\80 ਟਿੱਪਣੀ
-      diary_entry: à¨¡à¨¾à¨\87ਰà©\80 ਇੰਦਰਾਜ
+      diary_comment: à¨°à©\8bà¨\9c਼ਨਾਮà¨\9aਾ ਟਿੱਪਣੀ
+      diary_entry: à¨°à©\8bà¨\9c਼ਨਾਮà¨\9aਾ ਇੰਦਰਾਜ
       friend: ਦੋਸਤ
       issue: ਮੁੱਦਾ
       language: ਬੋਲੀ
@@ -66,8 +76,8 @@ pa:
       relation_tag: ਸਬੰਧ ਟੈਗ
       report: ਇਤਲਾਹ ਦਿਓ
       session: ਸੈਸ਼ਨ
-      trace: à¨\9fਰà©\87ਸ
-      tracepoint: à¨\9fਰà©\87ਸ à¨ªà©\81à¨\86à¨\87à©°à¨\9f
+      trace: à¨\96à©\81ਰਾ-à¨\96à©\8bà¨\9c
+      tracepoint: à¨\96à©\81ਰਾ-à¨\96à©\8bà¨\9c à¨¥à¨¾à¨\82
       tracetag: ਟਰੇਸ ਨਿਸ਼ਾਨ
       user: ਵਰਤੋਂਕਾਰ
       user_preference: ਵਰਤੋਂਕਾਰ ਤਰਜੀਹਾਂ
@@ -79,20 +89,28 @@ pa:
       client_application:
         name: ਨਾਮ (ਲੋੜੀਂਦਾ)
         url: ਮੁੱਢਲਾ Application URL (ਲੋੜੀਂਦਾ ਹੈ)
+        callback_url: ਮੁੜਕੇ-ਫੋਨ-ਕਰੋ  URL
         support_url: ਮਦਦ URL
         allow_read_prefs: ਉਹਨਾਂ ਦੀਆਂ ਵਰਤੋਂਕਾਰ ਤਰਜੀਹਾਂ ਨੂੰ ਪੜ੍ਹੋ
         allow_write_prefs: ਉਹਨਾਂ ਦੀਆਂ ਵਰਤੋਂਕਾਰ ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
+        allow_write_diary: ਰੋਜ਼ਨਾਮਚਾ ਦਰਜ਼ ਕਰੋ, ਟਿੱਪਣੀਆਂ ਕਰੋ ਅਤੇ ਦੋਸਤ ਬਣਾਓ
         allow_write_api: ਨਕਸ਼ੇ ਨੂੰ ਸੋਧੋ
+        allow_read_gpx: ਉਹਨਾਂ ਦੇ ਨਿੱਜੀ GPS ਖੁਰਾ-ਖੋਜ ਪੜ੍ਹੋ
+        allow_write_gpx: GPS ਖੁਰਾ-ਖੋਜ ਜੋੜੋ
+        allow_write_notes: ਨੋਟਾਂ ਨੂੰ ਸੋਧੋ
       diary_comment:
         body: ਮੁੱਖ ਭਾਗ
       diary_entry:
         user: ਵਰਤੋਂਕਾਰ
         title: ਵਿਸ਼ਾ
+        body: ਮੁੱਖ ਭਾਗ
         latitude: ਅਕਸ਼ਾਂਸ਼
         longitude: ਲੰਬਕਾਰ
         language_code: ਬੋਲੀ
       doorkeeper/application:
         name: ਨਾਂ
+        redirect_uri: URIs ਵਾਪਸ-ਮੋੜੋ
+        confidential: ਗੁਪਤ ਅਰਜ਼ੀ?
         scopes: ਇਜਾਜ਼ਤਾਂ
       friend:
         user: ਵਰਤੋਂਕਾਰ
@@ -106,8 +124,9 @@ pa:
         longitude: ਲੰਬਕਾਰ
         public: ਜਨਤਕ
         description: ਵੇਰਵਾ
-        visibility: 'ਦਿੱਸਣਯੋਗਤਾ:'
-        tagstring: 'ਟੈਗ:'
+        gpx_file: GPS ਖੁਰਾ-ਖੋਜ ਫਾਇਲ ਚੁਣੋ
+        visibility: ਦਿੱਸਣਯੋਗਤਾ
+        tagstring: ਟੈਗ
       message:
         sender: ਭੇਜਣ ਵਾਲਾ
         title: ਵਿਸ਼ਾ
@@ -120,11 +139,12 @@ pa:
         category: ਆਪਣੀ ਇਤਲਾਹ ਦਾ ਕਾਰਨ ਚੁਣੋ
         details: ਕਿਰਪਾ ਕਰਕੇ ਸਮੱਸਿਆ ਬਾਰੇ ਕੁਝ ਹੋਰ ਵੇਰਵੇ ਪ੍ਰਦਾਨ ਕਰੋ (ਲੋੜੀਂਦਾ)
       user:
+        auth_uid: UID ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ
         email: ਈਮੇਲ
         new_email: 'ਨਵਾਂ ਈਮੇਲ ਪਤਾ:'
         active: ਸਰਗਰਮ
         display_name: ਨਾਂ ਵਿਖਾਓ
-        description: ਵੇਰਵਾ
+        description: à¨ªà©\8dਰà©\8bਫਾà¨\88ਲ à¨µà©\87ਰਵਾ
         home_lat: ਅਕਸ਼ਾਂਸ਼
         home_lon: 'ਰੇਖਾਂਸ਼:'
         languages: ਤਰਜੀਹੀ ਬੋਲੀਆਂ
@@ -132,6 +152,16 @@ pa:
         pass_crypt: ਪਛਾਣ-ਸ਼ਬਦ
         pass_crypt_confirmation: ਪਛਾਣ-ਸ਼ਬਦ ਦੀ ਤਸਦੀਕ ਕਰੋ
     help:
+      doorkeeper/application:
+        redirect_uri: ਹਰ URI ਲਈ ਇੱਕ ਲਕੀਰ ਦੀ ਵਰਤੋਂ ਕਰੋ
+      user_block:
+        reason: ਜਿਸ ਕਾਰਨ ਵਰਤੋਂਕਾਰ ਉਤੇ ਪਾਬੰਦੀ ਲਾਈ ਜਾ ਰਹੀ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਜਿੰਨਾ ਸੰਭਵ
+          ਹੋ ਸਕੇ ਸ਼ਾਂਤ ਅਤੇ ਵਾਜਬ ਰਹੋ, ਸਥਿਤੀ ਬਾਰੇ ਜਿੰਨਾ ਹੋ ਸਕੇ ਵੇਰਵੇ ਦਿਓ, ਯਾਦ ਰੱਖੋ ਕਿ
+          ਸੁਨੇਹਾ ਜਨਤਕ ਤੌਰ 'ਤੇ ਦਿਖਾਈ ਦੇਵੇਗਾ। ਯਾਦ ਰੱਖੋ ਕਿ ਸਾਰੇ ਵਰਤੋਂਕਾਰ ਭਾਈਚਾਰੇ ਦਿਆਂ
+          ਸ਼ਬਦਾਵਲੀ ਨੂੰ ਨਹੀਂ ਸਮਝਦੇ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਆਮ ਆਦਮੀ ਦੇ ਸ਼ਬਦਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ
+          ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
+        needs_view: ਇਸ ਪਾਬੰਦੀ ਨੂੰ ਸਾਫ਼ ਕੀਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਕੀ ਵਰਤੋਂਕਾਰ ਨੂੰ ਦਾਖਲ ਹੋਨ
+          ਦੀ ਲੋੜ ਹੈ?
       user:
         new_email: (ਜਨਤਕ ਤੌਰ 'ਤੇ ਕਦੇ ਨਹੀਂ ਪ੍ਰਦਰਸ਼ਿਤ)
   datetime:
@@ -192,10 +222,21 @@ pa:
       comment:
         opened_at_html: '%{when} ਬਣਾਇਆ ਗਿਆ'
         opened_at_by_html: '%{when} ਨੂੰ %{user} ਵੱਲੋਂ ਬਣਾਇਆ ਗਿਆ'
+        commented_at_html: '%{when} ਨਵਿਆਇਆ ਗਿਆ'
+        commented_at_by_html: '%{when}  ਨੂੰ %{user} ਵੱਲੋਂ ਨਵਿਆਈਆ ਗਿਆ'
         closed_at_html: '%{when} ਹੱਲ ਕੀਤਾ'
         closed_at_by_html: '%{when} ਨੂੰ %{user} ਵੱਲੋਂ ਹੱਲ ਕੀਤਾ ਗਿਆ'
         reopened_at_html: '%{when} ਮੁੜ ਸਰਗਰਮ ਕੀਤਾ'
         reopened_at_by_html: '%{when} ਨੂੰ %{user} ਵੱਲੋਂ ਮੁੜ ਸਰਗਰਮ ਕੀਤਾ'
+      rss:
+        title: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਦੇ ਨੋਟ
+        description_all: ਇਤਲਾਹ ਦਿਤੇ, ਟਿੱਪਣੀ ਕੀਤੇ ਜਾਂ ਬੰਦ ਕੀਤੇ ਨੋਟਾਂ ਦੀ ਸੂਚੀ
+        description_area: ਤੁਹਾਡੇ ਖੇਤਰ ਵਿੱਚ, ਇਤਲਾਹ ਦਿਤੇ, ਟਿੱਪਣੀ ਕੀਤੇ ਜਾਂ ਬੰਦ ਕੀਤੇ ਨੋਟਾਂ
+          ਦੀ ਸੂਚੀ [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+        opened: ਨਵਾਂ ਨੋਟ (%{place} ਦੇ ਨੇੜੇ)
+        commented: ਨਵੀਂ ਟਿੱਪਣੀ (%{place} ਦੇ ਨੇੜੇ)
+        closed: ਬੰਦ ਨੋਟ (%{place} ਦੇ ਨੇੜੇ)
+        reopened: ਮੁਡ਼-ਸਰਗਰਮ ਨੋਟ (%{place} ਦੇ ਨੇੜੇ)
       entry:
         comment: ਟਿੱਪਣੀ
         full: ਪੂਰੀ ਟਿੱਪਣੀ
@@ -214,6 +255,14 @@ pa:
           ਰੱਖੀ ਜਾਵੇਗੀ, ਭਾਵੇਂ ਤੁਹਾਡਾ ਖਾਤਾ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ:'
         retain_edits: ਨਕਸ਼ੇ ਦੇ ਭੰਡਾਰ ਵਿੱਚ ਤੁਹਾਡੇ ਸੰਪਾਦਨ, ਜੇ ਕੋਈ ਹਨ, ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ
           ਜਾਵੇਗਾ।
+        retain_traces: ਤੁਹਾਡੇ ਜੋੜੇ ਖੁਰਾ-ਖੋਜ, ਜੇ ਕੋਈ ਹਨ, ਤਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ
+          ਜਾਵੇਗਾ।
+        retain_diary_entries: ਤੁਹਾਡੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਅਤੇ ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ, ਜੇ ਕੋਈ
+          ਹਨ, ਤਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾਵੇਗਾ ਪਰ ਉਨ੍ਹਾਂ ਨੂੰ ਦੇਖਣ ਤੋਂ ਲੁਕਾਇਆ ਜਾਵੇਗਾ।
+        retain_notes: ਤੁਹਾਡੇ ਨਕਸ਼ੇ ਦੇ ਨੋਟ ਅਤੇ ਨੋਟ ਟਿੱਪਣੀਆਂ, ਜੇ ਕੋਈ ਹਨ, ਨੂੰ ਬਰਕਰਾਰ
+          ਰੱਖਿਆ ਜਾਵੇਗਾ ਪਰ ਵੇਖਣ ਤੋਂ ਲੁਕਾਇਆ ਜਾਵੇਗਾ।
+        retain_changeset_discussions: ਤੁਹਾਡੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਬਾਰੇ ਵਿਚਾਰ-ਵਟਾਂਦਰੇ, ਜੇ ਕੋਈ
+          ਹਨ, ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾਵੇਗਾ।
         retain_email: ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾਵੇਗਾ।
         recent_editing_html: ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਸੰਪਾਦਿਤ ਕੀਤਾ ਹੈ ਤੁਹਾਡੇ ਖਾਤੇ
           ਨੂੰ ਵਰਤਮਾਨ ਵਿੱਚ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ। %{time} ਵਿੱਚ ਮਿਟਾਉਣਾ ਸੰਭਵ ਹੋਵੇਗਾ।
@@ -222,19 +271,25 @@ pa:
   accounts:
     edit:
       title: ਖਾਤਾ ਸੋਧੋ
-      my settings: à¨®à©\87ਰà©\80à¨\86à¨\82 à¨¸à©\88à¨\9fਿੰà¨\97ਾਂ
+      my settings: à¨®à©\87ਰà©\80à¨\86à¨\82 à¨¤à¨°à¨\9cà©\80ਹਾਂ
       current email address: 'ਮੌਜੂਦਾ ਈਮੇਲ ਪਤਾ:'
       external auth: ਬਾਹਰੀ ਪ੍ਰਮਾਣਿਕਤਾ
       openid:
         link text: ਇਹ ਕੀ ਹੈ?
       public editing:
         heading: ਜਨਤਕ ਸੁਧਾਈ
+        enabled: ਯੋਗ ਕੀਤਾ। ਅਗਿਆਤ ਨਹੀਂ ਹੈ ਅਤੇ ਡਾਟਾ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ।
         enabled link text: ਇਹ ਕੀ ਹੈ?
+        disabled: ਅਯੋਗ ਹੈ ਅਤੇ ਡੇਟਾ ਨੂੰ ਸੋਧ ਨਹੀਂ ਸਕਦਾ ਹੈ, ਸਾਰੇ ਪਿਛਲੇ ਸੋਧ ਅਗਿਆਤ ਹਨ।
         disabled link text: ਮੈਂ ਸੋਧ ਕਿਉਂ ਨਹੀਂ ਕਰ ਸਕਦਾ?
       contributor terms:
         heading: 'ਯੋਗਦਾਨ ਦੀਆਂ ਸ਼ਰਤਾਂ:'
         agreed: ਤੁਸੀਂ ਯੋਗਦਾਨੀ ਦੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨਾਲ਼ ਸਹਿਮਤੀ ਜਤਾਈ ਹੈ।
         not yet agreed: ਤੁਸੀਂ ਯੋਗਦਾਨੀ ਦੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨਾਲ਼ ਸਹਿਮਤੀ ਨਹੀਂ ਜਤਾਈ।
+        review link text: ਕ੍ਰਿਪਾ ਕਰਕੇ ਨਵੀਂ ਯੋਗਦਾਨ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰਨ ਅਤੇ ਸਵੀਕਾਰ
+          ਕਰਨ ਲਈ ਆਪਣੀ ਸਹੂਲਤ ਅਨੁਸਾਰ ਇਸ ਕੜੀ ਦੀ ਪਾਲਣਾ ਕਰੋ।
+        agreed_with_pd: ਤੁਸੀਂ ਇਹ ਵੀ ਐਲਾਨ ਕੀਤਾ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਸੋਧਾਂ ਨੂੰ ਜਨਤਕ ਖੇਤਰ
+          ਵਿੱਚ ਮੰਨਦੇ ਹੋ।
         link text: ਇਹ ਕੀ ਹੈ?
       save changes button: ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ
       delete_account: ਖਾਤਾ ਮਿਟਾਓ
@@ -244,29 +299,50 @@ pa:
         ਨਹੀਂ ਭੇਜ ਸਕਦੇ ਜਾਂ ਤੁਹਾਡਾ ਟਿਕਾਣਾ ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਇਹ ਦਿਖਾਉਣ ਲਈ ਕਿ ਤੁਸੀਂ ਕੀ ਸੰਪਾਦਿਤ
         ਕੀਤਾ ਹੈ ਅਤੇ ਲੋਕਾਂ ਨੂੰ ਵੈੱਬਸਾਈਟ ਰਾਹੀਂ ਤੁਹਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ
         ਹੈ, ਹੇਠਾਂ ਦਿੱਤੇ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
+      only_public_can_edit: 0. 6 ਏਪੀਆਈ(API) ਤਬਦੀਲੀ ਤੋਂ ਬਾਅਦ, ਸਿਰਫ ਜਨਤਕ ਵਰਤੋਂਕਾਰ ਹੀ
+        ਨਕਸ਼ੇ ਦੇ ਡੇਟਾ ਨੂੰ ਸੋਧ ਸਕਦੇ ਹਨ।
       find_out_why: ਪਤਾ ਕਰੋ ਕਿਉਂ
       email_not_revealed: ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਜਨਤਕ ਹੋਣ ਨਾਲ ਪ੍ਰਗਟ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ।
       not_reversible: ਇਸ ਕਾਰਵਾਈ ਨੂੰ  ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਸਾਰੇ ਨਵੇਂ ਵਰਤੋਂਕਾਰ
         ਹੁਣ ਮੂਲ ਰੂਪ ਵਿੱਚ ਜਨਤਕ ਹਨ।
       make_edits_public_button: ਮੇਰੀਆਂ ਸਾਰੀਆਂ ਸੋਧਾਂ ਜਨਤਕ ਕਰੋ
+    update:
+      success_confirm_needed: ਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨਵਿਆਓਣ ਵਿੱਚ ਕਾਮਯਾਬ। ਆਪਣੇ ਨਵੇਂ ਈਮੇਲ
+        ਪਤੇ ਦੀ ਤਸਦੀਕ ਕਰਨ ਲਈ ਇੱਕ ਨੋਟ ਲਈ ਆਪਣੀ ਈਮੇਲ ਦੀ ਜਾਂਚ ਕਰੋ।
+      success: ਵਰਤੋਂਕਾਰ ਜਾਣਕਾਰੀ ਨਵਿਆਓਣ ਵਿੱਚ ਕਾਮਯਾਬ।
     destroy:
       success: ਖਾਤਾ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।
   browse:
     deleted_ago_by_html: '%{time_ago} ਨੂੰ %{user} ਵੱਲੋਂ ਮਿਟਾਇਆ ਗਿਆ'
     edited_ago_by_html: '%{time_ago} ਨੂੰ %{user} ਵੱਲੋਂ ਸੋਧਿਆ ਗਿਆ'
     version: ਵਰਜਨ
-    in_changeset: ਤਬਦੀਲੀਆਂ
+    redacted_version: ਸੋਧਿਆ ਸੰਸਕਰਣ
+    in_changeset: ਤਬਦੀਲੀ-ਲੜੀਆਂ
     anonymous: ਬੇਪਛਾਣ
     no_comment: (ਕੋਈ ਟਿੱਪਣੀ ਨਹੀਂ)
     part_of: ਦਾ ਹਿੱਸਾ
     part_of_relations:
       one: '%{count} ਸਬੰਧ'
       other: '%{count} ਸਬੰਧ'
+    part_of_ways:
+      one: '%{count} ਤਰੀਕਾ'
+      other: '%{count} ਤਰੀਕੇ'
     download_xml: XML ਲਾਹੋ
     view_history: ਅਤੀਤ ਵੇਖੋ
+    view_unredacted_history: ਸੋਧਿਆ ਨਹੀਂ ਗਿਆ ਇਤਿਹਾਸ ਵੇਖੋ
     view_details: ਵੇਰਵੇ ਵੇਖੋ
+    view_redacted_data: ਸੋਧਿਆ ਡੇਟਾ ਵੇਖੋ
+    view_redaction_message: ਸੋਧੇ ਗਏ ਸੁਨੇਹੇ ਵੇਖੋ
     location: 'ਟਿਕਾਣਾ:'
+    way:
+      title_html: 'ਤਰੀਕਾ: %{name}'
+      history_title_html: 'ਤਰੀਕੇ ਦਾ ਇਤਿਹਾਸ: %{name}'
+      also_part_of_html:
+        one: ਤਰੀਕੇ ਦਾ ਹਿੱਸਾ %{related_ways}
+        other: ਤਰੀਕਿਆਂ ਦਾ ਹਿੱਸਾ %{related_ways}
     relation:
+      title_html: 'ਰਿਸ਼ਤਾ: %{name}'
+      history_title_html: 'ਰਿਸ਼ਤਾ ਇਤਿਹਾਸ: %{name}'
       members: ਜੀਅ
     relation_member:
       entry_role_html: '%{type} %{name} %{role} ਵਜੋਂ'
@@ -288,6 +364,8 @@ pa:
         note: ਨੋਟ
     timeout:
       title: ਵਕਤ-ਖ਼ਤਮ ਹੋ ਗਿਆ ਦੀ ਗ਼ਲਤੀ
+      sorry: ਮੁਆਫ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਵਾਲੇ %{type} ਲਈ ਡਾਟਾ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ
+        ਬਹੁਤ ਲੰਬਾ ਵੱਕਤ ਲੱਗ ਗਿਆ।
       type:
         node: ਨੋਡ
         way: ਰਾਹ
@@ -295,6 +373,7 @@ pa:
         changeset: ਚੇਂਜ਼ਸੈੱਟ
         note: ਨੋਟ
     redacted:
+      redaction: ਸੋਧ %{id}
       type:
         node: ਨੋਡ
         way: ਰਾਹ
@@ -304,6 +383,9 @@ pa:
       loading: ਲੱਦ ਰਿਹਾ ਹੈ...
     tag_details:
       tags: ਟੈਗ
+      wiki_link:
+        key: '%{key} ਟੈਗ ਲਈ ਵਿਕੀ ਵੇਰਵਾ ਸਫ਼ਾ'
+        tag: '%{key} =%{value} ਟੈਗ ਲਈ ਵਿਕੀ ਵੇਰਵਾ ਸਫ਼ਾ'
       wikipedia_link: '%{page} ਲੇਖ ਵਿਕੀਪੀਡੀਆ ਉੱਤੇ'
       telephone_link: '%{phone_number} ਨੂੰ ਫੋਨ ਕਰੋ'
       colour_preview: ਰੰਗ %{colour_value} ਝਲਕ
@@ -313,11 +395,46 @@ pa:
       introduction: ਨੇੜਲੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲੱਭਣ ਲਈ ਨਕਸ਼ੇ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ।
       nearby: ਨੇੜਲੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
       enclosing: ਨੱਥੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
+  ways:
+    timeout:
+      sorry: ਮਾਫ਼ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਵਾਲੇ ਤਰੀਕੇ ਲਈ ਡੇਟਾ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਬਹੁਤ
+        ਲੰਬਾ ਵੱਕਤ ਲੱਗਾ।
+  old_ways:
+    timeout:
+      sorry: ਮਾਫ਼ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਨਾਲ ਤਰੀਕੇ ਦੇ ਇਤਿਹਾਸ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ
+        ਬਹੁਤ ਲੰਬਾ ਵੱਕਤ ਲੱਗਾ।
+  relations:
+    timeout:
+      sorry: ਮਾਫ਼ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਨਾਲ ਸਬੰਧਾਂ ਲਈ ਡੇਟਾ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਬਹੁਤ
+        ਲੰਬਾ ਵੱਕਤ ਲੱਗਾ।
+  old_relations:
+    timeout:
+      sorry: ਮਾਫ਼ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਨਾਲ ਸਬੰਧਾਂ ਦੇ ਇਤਿਹਾਸ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ
+        ਬਹੁਤ ਲੰਬਾ ਵੱਕਤ ਲੱਗਾ।
+  changeset_comments:
+    feeds:
+      comment:
+        comment: '%{author} ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ #%%{changeset_id} ਉੱਤੇ ਨਵੀਂ ਟਿੱਪਣੀ'
+        commented_at_by_html: '%{when} %{user} ਵੱਲੋਂ ਨਵਿਆਓਣਾ ਕੀਤਾ ਗਿਆ'
+      timeout:
+        sorry: ਮਾਫ਼ ਕਰਨਾ, ਤੁਹਾਡੇ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀਆਂ ਟਿੱਪਣੀਆਂ ਦੀ ਸੂਚੀ
+          ਨੂੰ ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਲੰਮਾ ਸਮਾਂ ਲੱਗਿਆ ਹੈ।
   changesets:
     changeset:
       no_edits: (ਕੋਈ ਸੋਧ ਨਹੀਂ)
+      view_changeset_details: ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੇ ਬਦਲੇ ਵੇਰਵੇ ਵੇਖੋ
     index:
-      title: ਤਬਦੀਲੀਆਂ
+      title: ਤਬਦੀਲੀ-ਲੜੀਆਂ
+      title_user: '%{user} ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ'
+      title_user_link_html: '%{user_link} ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ'
+      title_friend: ਮੇਰੇ ਦੋਸਤਾਂ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
+      title_nearby: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
+      empty: ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਮਿਲਿਆਂ।
+      empty_area: ਇਸ ਖੇਤਰ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਹਨ।
+      empty_user: ਇਸ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਜੋੜਿਆਂ ਹਨ।
+      no_more: ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਮਿਲਿਆਂ।
+      no_more_area: ਇਸ ਖੇਤਰ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਹਨ।
+      no_more_user: ਇਸ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਜੋੜਿਆਂ ਹਨ।
       load_more: ਹੋਰ ਪੜ੍ਹੋ
       feed:
         title: ਤਬਦੀਲੀ ਲੜੀ %{id}
@@ -325,6 +442,19 @@ pa:
         created: ਬਣਾਇਆ ਗਿਆ
         closed: ਬੰਦ ਹੋਇਆ
         belongs_to: ਲੇਖਕ
+    subscribe:
+      heading: ਹੇਠਾਂ ਦਿੱਤੀ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀ ਗੱਲਬਾਤ ਲਈ ਗਾਹਕ ਬਣੋ?
+      button: ਚਰਚਾ ਲਈ ਗਾਹਕ ਬਣੋ
+    unsubscribe:
+      heading: ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ?
+      button: ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ
+    heading:
+      title: ਤਬਦੀਲੀ-ਲੜੀ %{id}
+      created_by_html: '%{link_user} ਵੱਲੋਂ %{created} ਨੂੰ ਬਣਾਇਆ ਗਿਆ।'
+    no_such_entry:
+      heading: ਸ਼ਿਨਾਖਤ:%{id} ਨਾਲ ਕੋਈ ਇੰਦਰਾਜ ਨਹੀਂ ਹੈ
+      body: ਮਾਫ਼ ਕਰਨਾ, id %{id} ਨਾਲ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸ਼ਬਦ-ਜੋੜ ਦੀ
+        ਜਾਂਚ ਕਰੋ, ਜਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਲਿੱਕ ਕੀਤੀ ਗਈ ਕੜੀ ਗਲਤ ਹੈ।
     show:
       title: 'ਤਬਦੀਲੀ ਲੜੀ: %{id}'
       created: 'ਬਣਾਇਆ ਗਿਆ: %{when}'
@@ -335,6 +465,8 @@ pa:
       closed_ago_by_html: '%{time_ago} ਨੂੰ %{user} ਵੱਲੋਂ ਬੰਦ ਕੀਤਾ ਗਿਆ'
       discussion: ਗੱਲ-ਬਾਤ
       join_discussion: ਗੱਲਬਾਤ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਦਾਖ਼ਲ ਹੋਵੋ
+      still_open: ਤਬਦੀਲੀ-ਲੜੀ ਅਜੇ ਵੀ ਖੁੱਲ੍ਹੀ ਏ - ਤਬਦੀਲੀ-ਲੜੀ ਬੰਦ ਹੋਣ 'ਤੇ ਚਰਚਾ ਖੁੱਲ੍ਹ
+        ਜਾਵੇਗੀ।
       subscribe: ਗਾਹਕ ਬਣੋ
       unsubscribe: ਗਾਹਕੀ ਰੱਦ ਕਰੋ
       comment_by_html: '%{user} %{time_ago} ਤੋਂ ਟਿੱਪਣੀ'
@@ -343,23 +475,59 @@ pa:
       unhide_comment: ਮੁੜ-ਵਿਖਾਓ
       comment: ਟਿੱਪਣੀ
       changesetxml: ਤਬਦੀਲੀ ਲੜੀ XML
+    paging_nav:
+      ways: ਤਰੀਕੇ (%{count})
+      ways_paginated: '%{count} ਵਿੱਚੋਂ (%{x}-%{y} ਦਾ ਤਰੀਕਾ'
+      relations: ਸਬੰਧ (%{count})
+      relations_paginated: '%{count} ਵਿੱਚੋਂ (%{x}-%{y} ਦਾ ਸਬੰਧ'
+    timeout:
+      sorry: ਮੁਆਫ ਕਰਨਾ, ਤੁਹਾਡੇ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ
+        ਵਿੱਚ ਬਹੁਤ ਲੰਬਾ ਸਮਾਂ ਲੱਗ ਗਿਆ।
   dashboards:
     contact:
       km away: '%{count}ਕਿ.ਮੀ. ਪਰ੍ਹਾਂ'
       m away: '%{count}ਮੀਟਰ ਪਰ੍ਹਾਂ'
       latest_edit_html: 'ਤਾਜ਼ੇ ਸੋਧ (%{ago}):'
     popup:
-      your location: ਤੁਹਾਡੀ ਸਥਿਤੀ
+      your location: ਤੁਹਾਡਾ ਟਿਕਾਣਾ
+      nearby mapper: ਨੇਡ਼ਲੇ ਨਕਸ਼ਾ-ਨਵੀਸ਼
       friend: ਦੋਸਤ
     show:
+      no_home_location_html: '%{edit_profile_link} ਅਤੇ ਨੇਡ਼ਲੇ ਵਰਤੋਂਕਾਰ ਨੂੰ ਵੇਖਣ ਲਈ
+        ਆਪਣੇ ਘਰ ਦਾ ਟਿਕਾਣਾ ਕਾਇਮ ਕਰੋ।'
       my friends: ਮੇਰੇ ਦੋਸਤ
       no friends: ਤੁਸੀਂ ਅਜੇ ਕੋਈ ਮਿੱਤਰ ਨਹੀਂ ਜੋੜਿਆ।
       nearby users: ਨੇੜੇ-ਤੇੜੇ ਦੇ ਹੋਰ ਵਰਤੋਂਕਾਰ
+      no nearby users: ਅਜੇ ਤੱਕ ਇੱਥੇ ਨੇੜੇ ਕੋਈ ਹੋਰ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਹਨ ਜੋ  ਨਕਸ਼ਾ-ਉਲੀਕਣ
+        ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੇ ਹਨ।
+      friends_changesets: ਦੋਸਤਾਂ ਦਿਆਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
+      friends_diaries: ਦੋਸਤਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼
+      nearby_changesets: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰ ਦੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ
+      nearby_diaries: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰ ਦੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼
   diary_entries:
+    new:
+      title: ਰੋਜ਼ਨਾਮਚੇ 'ਚ ਨਵਾਂ ਇੰਦਰਾਜ
     form:
       location: ਟਿਕਾਣਾ
       use_map_link: ਨਕਸ਼ਾ ਵਰਤੋ
+    index:
+      title: ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
+      title_friends: ਦੋਸਤਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
+      title_nearby: ਨੇਡ਼ਲੇ ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
+      user_title: '%{user} ਦੇ ਰੋਜ਼ਨਾਮਚੇ'
+      in_language_title: '%{language} ਵਿੱਚ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼'
+      new: ਰੋਜ਼ਨਾਮਚੇ 'ਚ ਨਵਾਂ ਇੰਦਰਾਜ
+      new_title: ਮੇਰੇ ਰੋਜ਼ਨਾਮਚੇ ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਇੰਦਰਾਜ਼ ਲਿਖੋ
+      my_diary: ਮੇਰਾ ਰੋਜ਼ਨਾਮਚਾ
+      no_entries: ਕੋਈ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼ ਨਹੀਂ ਏ
+    page:
+      recent_entries: ਹਾਲੀਆ ਦੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼
+    edit:
+      title: ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼ ਨੂੰ ਸੋਧੋ
+      marker_text: ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼ ਟਿਕਾਣਾ
     show:
+      title: '%{user} ਦੇ ਰੋਜ਼ਨਾਮਚੇ ਦਾ | %{title}'
+      user_title: '%{user} ਦੇ ਰੋਜ਼ਨਾਮਚੇ'
       discussion: ਗੱਲ-ਬਾਤ
       subscribe: ਗਾਹਕ ਬਣੋ
       unsubscribe: ਗਾਹਕੀ ਰੱਦ ਕਰੋ
@@ -367,48 +535,109 @@ pa:
       login_to_leave_a_comment_html: ਟਿੱਪਣੀ ਛੱਡਣ ਵਾਸਤੇ %{login_link}
       login: ਦਾਖ਼ਲ ਹੋਵੋ
     no_such_entry:
-      title: ਅਜਿਹਾ ਕੋਈ ਡਾਇਰੀ ਇੰਦਰਾਜ ਨਹੀਂ
+      title: ਅਜਿਹਾ ਕੋਈ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਨਹੀਂ ਏ
+      heading: ਸ਼ਿਨਾਖਤ:%{id} ਨਾਲ ਕੋਈ ਇੰਦਰਾਜ ਨਹੀਂ ਹੈ
+      body: ਮਾਫ਼ ਕਰਨਾ, ਸ਼ਿਨਾਖਤ %{id} ਨਾਲ ਕੋਈ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਜਾਂ ਟਿੱਪਣੀ ਨਹੀਂ ਹੈ।
+        ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸ਼ਬਦ-ਜੋੜ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਲਿੱਕ
+        ਕੀਤੀ ਗਈ ਕੜੀ ਗਲਤ ਹੋਵੇ।
     diary_entry:
+      posted_by_html: |-
+        %{link_user} ਵੱਲੋਂ %{created} ਨੂੰ %{language_link} ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ।
+        ਐਮ ਵੱਲੋਂ 10 ਨੂੰ ਪੰਜਾਬੀ ਵਿੱਚ ਪੋਸਟ ਕੀਤਾ ਗਿਆ।
+      updated_at_html: ਆਖਰੀ ਵਾਰ %{updated} ਨੂੰ ਨਵਿਆਈਆ ਗਿਆ।
       comment_link: ਇਸ ਇੰਦਰਾਜ 'ਤੇ ਟਿੱਪਣੀ ਕਰੋ
-      reply_link: ਇਸ ਇੰਦਰਾਜ ਦਾ ਜੁਆਬ ਦਿਉ
+      reply_link: ਲੇਖਕ ਨੂੰ ਸੁਨੇਹਾ ਭੇਜੋ
+      comment_count:
+        one: '%{count} ਟਿੱਪਣੀ'
+        other: '%{count} ਟਿੱਪਣੀਆਂ'
       no_comments: ਕੋਈ ਟਿੱਪਣੀਆਂ ਨਹੀਂ
       edit_link: ਇਹ ਇੰਦਰਾਜ ਸੋਧੋ
       hide_link: ਇਹ ਇੰਦਰਾਜ ਲੁਕਾਉ
       unhide_link: ਇਹ ਇੰਦਰਾਜ ਮੁੜ-ਵਿਖਾਓ
       confirm: ਤਸਦੀਕ ਕਰੋ
+      report: ਇਸ ਇੰਦਰਾਜ ਦੀ ਇਤਲਾਹ ਦਿਓ
     diary_comment:
+      comment_from_html: '%{link_user} ਵੱਲੋਂ %{comment_created_at} ''ਤੇ ਟਿੱਪਣੀ'
       hide_link: ਇਹ ਟਿੱਪਣੀ ਲੁਕਾਉ
       unhide_link: ਇਸ ਟਿੱਪਣੀ ਨੂੰ ਮੁੜ-ਵਿਖਾਓ
       confirm: ਤਸਦੀਕ ਕਰੋ
+      report: ਇਸ ਟਿੱਪਣੀ ਦੀ ਇਤਲਾਹ ਦਿਓ
     location:
       location: 'ਟਿਕਾਣਾ:'
+    feed:
+      user:
+        title: '%{user} ਲਈ OpenStreetMap ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ'
+        description: '%{user} ਤੋਂ ਤਾਜ਼ਾ OpenStreetMap ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ'
+      language:
+        title: '%{language_name} ਵਿੱਚ OpenStreetMap ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ'
+        description: '%{language_name} ਵਿੱਚ OpenStreetMap ਦੇ ਵਰਤੋਂਕਾਰ ਤੋਂ ਹਾਲੀਆ ਰੋਜ਼ਨਾਮਚਾ
+          ਇੰਦਰਾਜ'
+      all:
+        title: OpenStreetMap ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ
+        description: OpenStreetMap ਦੇ ਵਰਤੋਂਕਾਰ ਤੋਂ ਹਾਲੀਆ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ
+    subscribe:
+      heading: ਹੇਠ ਲਿਖੀ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਚਰਚਾ ਦੀ ਗਾਹਕੀ ਲਓ?
+      button: ਚਰਚਾ ਲਈ ਗਾਹਕੀ ਲਓ
+    unsubscribe:
+      heading: ਹੇਠ ਲਿਖੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ?
+      button: ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ
   diary_comments:
+    index:
+      title: ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ %{user} ਵੱਲੋਂ ਜੋੜੀਆਂ ਗਈਆਂ
+      heading: '%{user} ਦੀਆਂ ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ'
+      subheading_html: ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ %{user} ਵੱਲੋਂ ਜੋੜੀਆਂ ਗਈਆਂ
+      no_comments: ਕੋਈ ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ ਨਹੀਂ ਹਨ
     page:
       post: ਡਾਕ
       when: ਕਦੋਂ
       comment: ਟਿੱਪਣੀ
+    new:
+      heading: ਹੇਠ ਲਿਖੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਚਰਚਾ ਵਿੱਚ ਕੋਈ ਟਿੱਪਣੀ ਸ਼ਾਮਲ ਕਰੋ?
+  doorkeeper:
+    scopes:
+      address: ਆਪਣਾ ਭੌਤਿਕ ਪਤਾ ਵੇਖੋ
+      email: ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਵੇਖੋ
+      openid: ਆਪਣੇ ਖਾਤੇ ਦੀ ਤਸਦੀਕ ਕਰੋ
+      phone: ਆਪਣਾ ਫ਼ੋਨ ਨੰਬਰ ਵੇਖੋ
+      profile: ਆਪਣੀ ਪ੍ਰੋਫਾਈਲ ਜਾਣਕਾਰੀ ਵੇਖੋ
   errors:
     contact:
+      contact_url_title: ਵੱਖ-ਵੱਖ ਸੰਪਰਕ ਚੈਨਲਾਂ ਬਾਰੇ ਦੱਸਿਆ
       contact: ਰਾਬਤਾ
+    bad_request:
+      title: ਮਾਡ਼ੀ ਬੇਨਤੀ
     forbidden:
       title: ਵਰਜਿਤ
+    internal_server_error:
+      title: ਆਦੇਸ਼ਕਾਰੀ ਦੀ ਗਲਤੀ
+    not_found:
+      title: ਫਾਇਲ ਨਹੀਂ ਲੱਭੀ
   friendships:
     make_friend:
       heading: '%{user} ਨਾਲ਼ ਯਾਰੀ ਪਾਉਣੀ ਹੈ?'
       button: ਦੋਸਤ ਵਜੋਂ ਜੋੜੋ
       success: '%{name} ਹੁਣ ਤੁਹਾਡਾ ਦੋਸਤ ਹੈ!'
+      failed: ਮੁਆਫ ਕਰਨਾ,%{name} ਨੂੰ ਦੋਸਤ ਵਜੋਂ ਜੋਡ਼ਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ।
       already_a_friend: ਤੁਸੀਂ ਪਹਿਲੋਂ ਹੀ %{name} ਨਾਲ਼ ਯਾਰੀ ਪਾ ਚੁੱਕੇ ਹੋ।
+      limit_exceeded: ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨਾਲ ਦੋਸਤੀ ਕੀਤੀ ਹੈ। ਕਿਰਪਾ
+        ਕਰਕੇ ਹੋਰ ਦੋਸਤੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਸਮਾਂ ਉਡੀਕ ਕਰੋ।
     remove_friend:
       heading: '%{user} ਨਾਲ਼ ਯਾਰੀ ਤੋੜਨੀ ਹੈ?'
       button: ਯਾਰੀ ਤੋੜੋ
+      success: '%{name} ਨੂੰ ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਵਿੱਚੋਂ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਸੀ।'
+      not_a_friend: '%{name} ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨਹੀਂ ਹੈ।'
   geocoder:
     search:
       title:
         latlon: ਅੰਦਰੂਨੀ
     search_osm_nominatim:
       prefix:
+        aerialway:
+          cable_car: ਕੇਬਲ ਕਾਰ
+          gondola: ਗੋਂਡੋਲਾ ਲਿਫਟ
         aeroway:
           aerodrome: ਏਰੋਡਰੋਮ
+          airstrip: ਹਵਾਈ ਪੱਟੀ
           apron: ਐਪਰਨ
           gate: ਹਵਾਈ ਅੱਡੇ ਦਾ ਦਰਵਾਜ਼ਾ
           helipad: ਹੈਲੀਪੈਡ
@@ -424,6 +653,7 @@ pa:
           bench: ਬੈਂਚ
           bicycle_parking: ਸਾਈਕਲ ਪਾਰਕਿੰਗ
           bicycle_rental: ਕਿਰਾਏ 'ਤੇ ਸਾਈਕਲ
+          bicycle_repair_station: ਸਾਈਕਲ ਮੁਰੰਮਤ ਥਾਂ
           biergarten: ਬੀਅਰ ਬਾਗ਼
           boat_rental: ਕਿਸ਼ਤੀ ਕਿਰਾਇਆ
           brothel: ਕੋਠਾ
@@ -459,22 +689,28 @@ pa:
           hospital: ਹਸਪਤਾਲ
           hunting_stand: ਸ਼ਿਕਾਰ ਸਟੈਂਡ
           ice_cream: ਆਈਸ ਕਰੀਮ
+          internet_cafe: ਇੰਟਰਨੈੱਟ ਕੈਫੇ
           kindergarten: ਬਾਲਵਾੜੀ
-          library: ਪੁਸਤਕਾਲਾ
+          language_school: ਭਾਸ਼ਾ ਸਕੂਲ
+          library: ਕਿਤਾਬਘਰ
           marketplace: ਮੰਡੀ ਦੀ ਥਾਂ
           monastery: ਮੱਠ
           motorcycle_parking: ਮੋਟਰਸਾਈਕਲ ਪਾਰਕਿੰਗ
+          music_school: ਸੰਗੀਤ ਸਕੂਲ
           nightclub: ਰਾਤ ਦਾ ਕਲੱਬ
           nursing_home: ਨਰਸਿੰਗ ਹੋਮ
           parking: ਪਾਰਕਿੰਗ
           parking_entrance: ਪਾਰਕਿੰਗ ਪਰਵੇਸ਼
-          pharmacy: ਫ਼ਾਰਮੇਸੀ
+          payment_terminal: ਭੁਗਤਾਨ ਜੰਤਰ
+          pharmacy: ਦਵਾਈ ਦੀ ਹੱਟੀ
           place_of_worship: ਭਗਤੀ ਦਾ ਘਰ
           police: ਪੁਲਿਸ
           post_box: ਡਾਕ ਬਕਸਾ
           post_office: ਡਾਕ ਘਰ
           prison: ਜੇਲ੍ਹ
           pub: ਪਬ
+          public_bath: ਜਨਤਕ ਇਸ਼ਨਾਨਘਰ
+          public_bookcase: ਜਨਤਕ ਕਿਤਾਬ-ਅਲਮਾਰੀ
           public_building: ਜਨਤਕ ਇਮਾਰਤ
           recycling: ਰੀਸਾਈਕਲ ਬਿੰਦੂ
           restaurant: ਰੈਸਟੋਰੈਂਟ
@@ -492,15 +728,22 @@ pa:
           townhall: ਟਾਊਨ ਹਾਲ
           training: ਸਿਖਲਾਈ ਦੀ ਸਹੂਲਤ
           university: ਯੂਨੀਵਰਸਿਟੀ
+          vehicle_inspection: ਗੱਡੀ ਨਿਰੀਖਣ
           vending_machine: ਮਾਲ-ਵੇਚੂ ਮਸ਼ੀਨ
           veterinary: ਡੰਗਰਾਂ ਦਾ ਹਸਪਤਾਲ
           village_hall: ਪਿੰਡ ਦਾ ਪੰਚਾਇਤ ਘਰ
           waste_basket: ਕੂੜਾਦਾਨ
           waste_disposal: ਕੂੜੇਦਾਨ
+          watering_place: ਪਾਣੀ ਵਾਲੀ ਥਾਂ
+          water_point: ਪਾਣੀ ਦੀ ਥਾਂ
+          weighbridge: ਧਰਮ ਕੰਡਾ
+          "yes": ਸਹੂਲਤਾਂ
         boundary:
+          aboriginal_lands: ਆਦਿਵਾਸੀ ਜ਼ਮੀਨਾਂ
           administrative: ਪ੍ਰਬੰਧਕੀ ਸਰਹੱਦ
           census: ਮਰਦਮਸ਼ੁਮਾਰੀ ਸਰਹੱਦ
           national_park: ਕੌਮੀ ਬਾਗ਼
+          political: ਚੋਣ ਹੱਦ
           protected_area: ਸੁਰੱਖਿਅਤ ਖੇਤਰ
           "yes": ਹੱਦ
         bridge:
@@ -512,23 +755,61 @@ pa:
         building:
           apartment: ਅਪਾਰਟਮੈਂਟ
           apartments: ਅਪਾਰਟਮੈਂਟ
+          bungalow: ਬੰਗਲਾ
+          cabin: ਕੋਠੜੀ
+          chapel: ਛੋਟਾ ਗਿਰਜਾਘਰ
+          church: ਧਾਰਮਿਕ ਥਾਂ
+          civic: ਨਾਗਰਿਕ ਇਮਾਰਤ
+          college: ਕਾਲਜ ਦੀ ਇਮਾਰਤ
+          commercial: ਵਪਾਰਕ ਇਮਾਰਤ
+          construction: ਉਸਾਰੀ ਹੇਠ ਇਮਾਰਤ
+          cowshed: ਗਊਸ਼ਾਲਾ
+          detached: ਵੱਖ ਕੀਤਾ ਘਰ
+          garage: ਗਰਾਜ
+          garages: ਗਰਾਜਾਂ
+          hospital: ਹਸਪਤਾਲ ਦੀ ਇਮਾਰਤ
+          hotel: ਹੋਟਲ ਦੀ ਇਮਾਰਤ
           house: ਘਰ
+          hut: ਕੁੱਲੀ
+          kindergarten: ਬਾਲਵਾੜੀ ਇਮਾਰਤ
+          office: ਦਫ਼ਤਰ ਦੀ ਇਮਾਰਤ
+          public: ਜਨਤਕ ਇਮਾਰਤ
+          residential: ਰਿਹਾਇਸ਼ੀ ਇਮਾਰਤ
+          retail: ਪ੍ਰਚੂਨ ਇਮਾਰਤ
           roof: ਛੱਤ
+          ruins: ਟੁੱਟੀ ਇਮਾਰਤ
+          school: ਸਕੂਲ ਦੀ ਇਮਾਰਤ
+          shed: ਢਾਰਾ
+          stable: ਤਬੇਲਾ
+          static_caravan: ਕਾਰਵਾਂ
+          temple: ਮੰਦਰ ਦੀ ਇਮਾਰਤ
+          train_station: ਰੇਲ ਅੱਡਾ ਇਮਾਰਤ
+          university: ਵਿਸ਼ਵ-ਵਿਦਿਆਲੇ ਦੀ ਇਮਾਰਤ
+          warehouse: ਗੁਦਾਮ
           "yes": ਇਮਾਰਤ
+        club:
+          "yes": ਕਲੱਬ
         craft:
+          beekeeper: ਮਧੂ ਮੱਖੀ ਪਾਲਣ ਵਾਲਾ
+          blacksmith: ਲੋਹਾਰ
           brewery: ਬਰੂਅਰੀ
           carpenter: ਤਰਖਾਣ
+          confectionery: ਮਿਠਾਈ
           electrician: ਇਲੈਕਟਰੀਸ਼ਨ
           gardener: ਮਾਲੀ
+          handicraft: ਦਸਤਕਾਰੀ
           painter: ਚਿੱਤਰਕਾਰ
           photographer: ਫ਼ੋਟੋਗ੍ਰਾਫ਼ਰ
           plumber: ਨਲਸਾਜ਼
+          sawmill: ਆਰਾ ਚੱਕੀ
           shoemaker: ਮੋਚੀ
           tailor: ਦਰਜੀ
+          winery: ਸ਼ਰਾਬ ਦਾ ਕਾਰਖ਼ਾਨਾ(Winery)
           "yes": ਕਰਾਫਟ ਦੁਕਾਨ
         emergency:
           ambulance_station: ਐਂਬੂਲੈਂਸ ਸਟੇਸ਼ਨ
           defibrillator: ਡੀਫਿਬ੍ਰੀਲੇਟਰ
+          fire_extinguisher: ਅੱਗ ਬੁਝਾਉਣ ਵਾਲਾ ਜੰਤਰ
           fire_water_pond: ਅੱਗ ਦੇ ਪਾਣੀ ਦਾ ਟੋਆ
           landing_site: ਸੰਕਟਕਾਲੀਨ ਉਤਰ ਸਥਾਨ
           phone: ਐਮਰਜੈਂਸੀ ਫ਼ੋਨ
@@ -537,6 +818,7 @@ pa:
           bridleway: ਘੋੜ-ਰਾਹ
           bus_stop: ਬੱਸ ਅੱਡਾ
           construction: ਉਸਾਰੀ ਹੇਠ ਹਾਈਵੇ
+          crossing: ਪਾਰ-ਕਰਨਾ
           cycleway: ਸਾਈਕਲ ਰਾਹ
           elevator: ਲਿਫਟ
           emergency_access_point: ਐਮਰਜੈਂਸੀ ਪਹੁੰਚ ਬਿੰਦੂ
@@ -562,10 +844,12 @@ pa:
           services: ਮੋਟਰਵੇ ਸੇਵਾਵਾਂ
           speed_camera: ਗਤੀ ਕੈਮਰਾ
           steps: ਪੌੜੀਆਂ
+          stop: ਰੁੱਕ ਜਾਓ
           street_lamp: ਗਲੀ ਬੱਤੀ
           tertiary: ਤੀਜੇ ਪੱਧਰ ਦੀ ਸੜਕ
           tertiary_link: ਤੀਜੇ ਪੱਧਰ ਦੀ ਸੜਕ
           track: ਟਰੈਕ
+          traffic_mirror: ਆਵਾਜਾਈ ਸ਼ੀਸ਼ਾ
           traffic_signals: ਟਰੈਫਿਕ ਸਿਗਨਲ
           trunk: ਟਰੰਕ ਸੜਕ
           trunk_link: ਟਰੰਕ ਸੜਕ
@@ -573,10 +857,14 @@ pa:
           unclassified: ਅਵਰਗੀਕ੍ਰਿਤ ਰੋਡ
           "yes": ਸੜਕ
         historic:
+          aircraft: ਇਤਿਹਾਸਕ ਹਵਾਈ ਜਹਾਜ਼
           archaeological_site: ਪੁਰਾਤੱਤਵ ਸਥਾਨ
           battlefield: ਜੰਗ ਦਾ ਮੈਦਾਨ
+          boundary_stone: ਹੱਦ ਪੱਥਰ
           building: ਇਤਿਹਾਸਕ ਇਮਾਰਤ
+          cannon: ਇਤਿਹਾਸਕ ਤੋਪ
           castle: ਗੜ੍ਹੀ
+          charcoal_pile: ਇਤਿਹਾਸਕ ਕੋਲੇ ਦਾ ਢੇਰ
           church: ਗਿਰਜਾ
           city_gate: ਸ਼ਹਿਰ ਗੇਟ
           citywalls: ਸ਼ਹਿਰ ਦੀਆੰ ਕੰਧਾੰ
@@ -585,21 +873,29 @@ pa:
           house: ਘਰ
           manor: ਮੈਨਰ
           memorial: ਯਾਦਗਾਰ
+          milestone: ਇਤਿਹਾਸਕ ਮੀਲ ਪੱਥਰ
           mine: ਖਾਨ
           monument: ਸਮਾਰਕ
+          railway: ਇਤਿਹਾਸਕ ਰੇਲ-ਗੱਡੀ
           ruins: ਖੰਡਰ
           stone: ਪੱਥਰ
           tomb: ਮਕਬਰਾ
           tower: ਬੁਰਜ
+          wayside_chapel: ਰਾਹ ਦੇ ਕੰਢੇ ਛੋਟਾ ਗਿਰਜਾਘਰ
+          wayside_cross: ਰਾਹ ਦੇ ਕੰਢੇ ਕਰਾਸ
+          wayside_shrine: ਰਾਹ ਦੇ ਕੰਢੇ ਮੰਦਰ
+          "yes": ਇਤਿਹਾਸਕ ਥਾਂ
         junction:
           "yes": ਜੰਕਸ਼ਨ
         landuse:
+          allotments: ਹਿੱਸਾ
+          aquaculture: ਜਲ ਖੇਤੀਬਾਡ਼ੀ
           basin: ਹੌਜ਼ੀ
           cemetery: ਸ਼ਮਸ਼ਾਨ
           commercial: ਵਪਾਰਕ ਖੇਤਰ
-          conservation: à¨°à©±à¨\96
-          construction: ਉਸਾਰੀ
-          farmland: ਖੇਤ ਭੂਮੀ
+          conservation: à¨¸à©°à¨­à¨¾à¨² à¨\96à©\87ਤਰ
+          construction: ਉਸਾਰੀ ਖੇਤਰ
+          farmland: ਖੇਤੀਬਾੜੀ ਦੀ ਜ਼ਮੀਨ
           farmyard: ਫਾਰਮਯਾਰਡ
           forest: ਜੰਗਲ
           garages: ਗੈਰਜ
@@ -609,24 +905,32 @@ pa:
           military: ਫ਼ੌਜੀ ਇਲਾਕਾ
           mine: ਖਾਨ
           orchard: ਬਗ਼ੀਚਾ
+          plant_nursery: ਬੂਟਿਆਂ ਦੀ ਪਨੀਰੀ
+          quarry: ਖੱਡ
           railway: ਰੇਲਵੇ
           recreation_ground: ਮਨੋਰੰਜਨ ਮੈਦਾਨ
+          religious: ਧਾਰਮਿਕ ਥਾਂ
           reservoir: ਸਰੋਵਰ
           residential: ਰਿਹਾਇਸ਼ੀ ਇਲਾਕਾ
           retail: ਪਰਚੂਨ ਖੇਤਰ
           village_green: ਸ਼ਾਮਲਾਤ
           vineyard: ਅੰਗੂਰਾਂ ਦਾ ਬਾਗ਼
+          "yes": ਜ਼ਮੀਨ ਦੀ ਵਰਤੋਂ
         leisure:
           common: ਸ਼ਾਮਲਾਟ
           dog_park: ਕੁੱਤਾ ਪਾਰਕ
+          firepit: ਅੱਗ ਦਾ ਟੋਆ
           fishing: ਮੱਛੀ-ਖੋਜ ਇਲਾਕਾ
           fitness_centre: ਫਿੱਟਨੈੱਸ ਕੇੰਦਰ
           fitness_station: ਤੰਦਰੁਸਤੀ ਅੱਡਾ
           garden: ਬਾਗ਼
           golf_course: ਗੋਲਫ਼ ਮੈਦਾਨ
+          horse_riding: ਘੋੜ ਸਵਾਰੀ ਕੇਂਦਰ
           ice_rink: ਬਰਫ਼ੀਲਾ ਫ਼ਰਸ਼
+          marina: ਸਮੁੰਦਰੀ ਕਿਨਾਰਾ
           miniature_golf: ਨਿੱਕੀ ਗੋਲਫ਼
           nature_reserve: ਕੁਦਰਤੀ ਰੱਖ
+          outdoor_seating: ਬਾਹਰੀ ਬੈਠਣ ਦੀ ਥਾਂ
           park: ਪਾਰਕ
           pitch: ਖੇਡ ਦੀ ਬੀੜ
           playground: ਖੇਡ ਮੈਦਾਨ
@@ -638,13 +942,35 @@ pa:
           track: ਭੱਜਣ ਲਈ ਟਰੈਕ
           water_park: ਜਲ ਪਾਰਕ
         man_made:
+          advertising: ਇਸ਼ਤਿਹਾਰਬਾਜ਼ੀ
+          avalanche_protection: ਬਰਫ਼ੀਲੇ ਤੂਫ਼ਾਨ ਤੋਂ ਬਚਾਅ
+          beehive: ਮਖਿਆਲ
+          bridge: ਪੁਲ
+          bunker_silo: ਬੰਕਰ
+          chimney: ਚਿਮਨੀ
+          crane: ਕਰੇਨ
+          embankment: ਬੰਨ੍ਹ
+          flagpole: ਝੰਡੇ ਦਾ ਡੰਡਾ
+          kiln: ਭੱਠਾ/ਭੱਠੀ
           lighthouse: ਲਾਈਟਹਾਊਸ
+          mast: ਸ਼ਤੀਰ
+          mine: ਖਾਨ
           pipeline: ਪਾਈਪਲਾਈਨ
+          silo: ਭੜੋਲਾ
+          snow_cannon: ਬਰਫ ਦੀ ਤੋਪ
+          snow_fence: ਬਰਫ ਦੀ ਵਾਡ਼
+          surveillance: ਨਿਗਰਾਨੀ
           tower: ਬੁਰਜ
+          utility_pole: ਬਿਜਲੀ ਦਾ ਖੰਬਾ
+          water_tap: ਪਾਣੀ ਦੀ ਟੂਟੀ
+          water_well: ਖੂਹ
           works: ਫੈਕਟਰੀ
+          "yes": ਮਨੁੱਖ ਦੁਆਰਾ ਬਣਾਇਆ
         military:
           airfield: ਫ਼ੌਜੀ ਉਡਾਣ-ਖੇਤਰ
           barracks: ਬੈਰਕ
+          checkpoint: ਨਾਕਾ
+          "yes": ਫੌਜ
         mountain_pass:
           "yes": ਦੱਰਾ
         natural:
@@ -658,6 +984,7 @@ pa:
           forest: ਜੰਗਲ
           geyser: ਗੀਜ਼ਰ
           glacier: ਗਲੇਸ਼ੀਅਰ
+          grassland: ਘਾਹ ਦਾ ਮੈਦਾਨ
           heath: ਸਿਹਤ
           hill: ਪਹਾੜੀ
           island: ਟਾਪੂ
@@ -670,6 +997,7 @@ pa:
           reef: ਰੀਫ਼
           ridge: ਰਿੱਜ
           rock: ਚਟਾਨ
+          saddle: ਕਾਠੀ
           sand: ਰੇਤ
           scree: ਰੇੜ੍ਹ
           scrub: ਝਾੜ ਬਰੋਟਾ
@@ -677,26 +1005,37 @@ pa:
           stone: ਪੱਥਰ
           strait: ਪਣਜੋੜ
           tree: ਦਰੱਖ਼ਤ
+          tree_row: ਰੁੱਖ ਦੀ ਕਤਾਰ
           valley: ਘਾਟੀ
           volcano: ਜਵਾਲਾਮੁਖੀ
           water: ਪਾਣੀ
           wetland: ਨਮ ਇਲਾਕਾ
-          wood: ਜੰਗਲ
+          wood: ਲੱਕੜ
+          "yes": ਕੁਦਰਤੀ ਗੁਣ
         office:
-          accountant: à¨\85à¨\95ਾà¨\8aà¨\82à¨\9fà©\88à¨\82à¨\9f
+          accountant: à¨²à©\87à¨\96ਾà¨\95ਾਰ
           administrative: ਪ੍ਰਸ਼ਾਸਨ
           architect: ਨਕਸ਼ਾਕਾਰ
           company: ਕੰਪਨੀ
+          educational_institution: ਵਿਦਿਅਕ ਸੰਸਥਾ
           employment_agency: ਰੁਜ਼ਗਾਰ ਏਜੰਸੀ
           estate_agent: ਜਾਇਦਾਦ ਕਰਿੰਦਾ
+          financial: ਵਿੱਤੀ ਦਫਤਰ
           government: ਸਰਕਾਰੀ ਦਫ਼ਤਰ
           insurance: ਬੀਮਾ ਦਫ਼ਤਰ
+          it: ਆਈਟੀ ਦਫਤਰ
           lawyer: ਵਕੀਲ
+          newspaper: ਅਖ਼ਬਾਰ ਦਾ ਦਫ਼ਤਰ
           ngo: ਐੱਨ੦ਜੀ੦ਓ ਦਫ਼ਤਰ
+          notary: ਨੋਟਰੀ
+          religion: ਧਾਰਮਿਕ ਦਫ਼ਤਰ
+          research: ਖੋਜ ਦਫ਼ਤਰ
           telecommunication: ਦੂਰ-ਸੰਚਾਰ ਦਫ਼ਤਰ
           travel_agent: ਟਰੈਵਲ ਏਜੰਸੀ
           "yes": ਦਫ਼ਤਰ
         place:
+          allotments: ਹਿੱਸਾ
+          archipelago: ਦੀਪ ਸਮੂਹ
           city: ਸ਼ਹਿਰ
           country: ਮੁਲਕ
           county: ਰਾਜ
@@ -718,7 +1057,7 @@ pa:
           suburb: ਉਪਨਗਰ
           town: ਕਸਬਾ
           village: ਪਿੰਡ
-          "yes": à¨¥à¨¾à©°
+          "yes": à¨¥à¨¾à¨\82
         railway:
           abandoned: ਛੱਡਿਆ ਹੋਇਆ ਰੇਲਵੇ
           construction: ਉਸਾਰੀ ਹੇਠ ਰੇਲਵੇ
@@ -731,12 +1070,13 @@ pa:
           monorail: ਇਕਹਿਰੀ ਰੇਲ
           narrow_gauge: ਭੀੜੀ ਰੇਲ
           platform: ਰੇਲਗੱਡੀ ਦਾ ਅੱਡਾ
+          rail: ਰੇਲਗੱਡੀ
           station: ਰੇਲਵੇ ਸਟੇਸ਼ਨ
           subway: ਸੱਬਵੇ
           subway_entrance: ਸਬਵੇ ਪ੍ਰਵੇਸ਼
           tram: ਟਰਾਮਵੇ
           tram_stop: ਟਰਾਮ ਅੱਡਾ
-          yard: ਰੇਲਵੇ ਯਾਰਡ
+          yard: ਰੇਲ-ਵਾੜਾ
         shop:
           antiques: ਪ੍ਰਾਚੀਨ
           art: ਕਲਾ ਹੱਟੀ
@@ -744,7 +1084,7 @@ pa:
           beauty: ਬਿਊਟੀ ਪਾਰਲਰ
           beverages: ਪੀਣ ਪਦਾਰਥਾਂ ਦੀ ਹੱਟੀ
           bicycle: ਸਾਈਕਲਾਂ ਦੀ ਦੁਕਾਨ
-          books: à¨\95ਿਤਾਬਾà¨\82 à¨¦à©\80 à¨¦à©\81à¨\95ਾਨ
+          books: à¨\95ਿਤਾਬਾà¨\82 à¨¦à©\80 à¨¹à©±à¨\9fà©\80
           boutique: ਬੁਟੀਕ
           butcher: ਕਸਾਈ
           car: ਕਾਰਾਂ ਦੀ ਦੁਕਾਨ
@@ -752,21 +1092,26 @@ pa:
           car_repair: ਕਾਰ ਮੁਰੰਮਤ
           carpet: ਗ਼ਲੀਚਿਆਂ ਦੀ ਦੁਕਾਨ
           charity: ਦਾਨ ਦੀ ਹੱਟੀ
+          cheese: ਪਨੀਰ ਦੀ ਹੱਟੀ
           chemist: ਦਵਾਈਆਂ ਦੀ ਦੁਕਾਨ
+          chocolate: ਚਾਕਲੇਟ
           clothes: ਬਜਾਜੀ ਹੱਟੀ
+          coffee: ਕੌਫੀ ਦੀ ਹੱਟੀ
           computer: ਕੰਪਿਊਟਰਾਂ ਦੀ ਦੁਕਾਨ
           confectionery: ਹਲਵਾਈ
           convenience: ਸੌਖ ਕੇਂਦਰ
           copyshop: ਕਾਪੀ ਹੱਟੀ
           cosmetics: ਸੁਰਖੀ-ਬਿੰਦੀ ਦੀ ਦੁਕਾਨ
+          curtain: ਪਰਦੇ ਦੀ ਹੱਟੀ
           deli: ਡੇਲੀ
           department_store: ਡਿਪਾਰਟਮੈਂਟ ਸਟੋਰ
           discount: ਛੋਟ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ ਦੀ ਦੁਕਾਨ
-          doityourself: à¨\86ਪ à¨\95ਰà©\8b
+          doityourself: à¨\87ਹ-à¨\86ਪਣà©\87-à¨\86ਪ-à¨\95ਰà©\8b à¨¹à©±à¨\9fà©\80
           dry_cleaning: ਡਰਾਈ ਕਲੀਨਰ
           electronics: ਬਿਜਲਾਣੂ ਦੁਕਾਨ
           estate_agent: ਜਾਇਦਾਦ ਕਰਿੰਦਾ
-          farm: ਫ਼ਾਰਮ ਦੁਕਾਨ
+          fabric: ਕੱਪਡ਼ੇ ਦੀ ਹੱਟੀ
+          farm: ਕਾਸ਼ਤਕਾਰਾਂ ਦੀ ਹੱਟੀ
           fashion: ਫ਼ੈਸ਼ਨਾਂ ਦੀ ਹੱਟੀ
           florist: ਫੁੱਲਾਂ ਦੀ ਦੁਕਾਨ
           food: ਖ਼ੁਰਾਕ ਦੀ ਹੱਟੀ
@@ -776,37 +1121,49 @@ pa:
           general: ਜਨਰਲ ਸਟੋਰ
           gift: ਤੋਹਫ਼ਿਆਂ ਦੀ ਦੁਕਾਨ
           grocery: ਰਾਸ਼ਨ ਦੀ ਹੱਟੀ
-          hairdresser: à¨µà¨¾à¨² à¨¤à¨¿à¨\86ਰ à¨\95ਰਨ à¨µà¨¾à¨²à¨¾
+          hairdresser: à¨¹à¨\9cਾਮਤ-ਹੱà¨\9fà©\80
           hardware: ਹਾਰਡਵੇਅਰ ਸਟੋਰ
           hifi: ਹਾਈ-ਫ਼ਾਈ
+          houseware: ਘਰੇਲੂ ਸਮਾਨ ਦੀ ਹੱਟੀ
+          interior_decoration: ਅੰਦਰੂਨੀ ਸਜਾਵਟ
           jewelry: ਗਹਿਣਿਆਂ ਦੀ ਦੁਕਾਨ
           kiosk: ਖੋਖਾ
+          kitchen: ਰਸੋਈ ਦੀ ਹੱਟੀ
           laundry: ਧੋਬੀਘਾਟ
+          lottery: ਲਾਟਰੀ
           mall: ਮਾਲ
+          massage: ਮਾਲਸ਼ ਦੀ ਹੱਟੀ
           mobile_phone: ਮੋਬਾਈਲ ਫੋਨਾਂ ਦੀ ਦੁਕਾਨ
           motorcycle: ਮੋਟਰਸਾਈਕਲਾਂ ਦੀ ਦੁਕਾਨ
           music: ਸੰਗੀਤ ਦੀ ਦੁਕਾਨ
+          musical_instrument: ਸੰਗੀਤ ਜੰਤਰ
           newsagent: ਅਖ਼ਬਾਰਾਂ ਦਾ ਏਜੰਟ
           optician: ਐਨਕਸਾਜ਼
           organic: ਕਾਰਬਨੀ ਖ਼ੁਰਾਕ ਦੀ ਹੱਟੀ
           outdoor: ਮੈਦਾਨੀ ਵਸਤਾਂ ਦੀ ਹੱਟੀ
           pet: ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੀ ਦੁਕਾਨ
           photo: ਤਸਵੀਰਾਂ ਦੀ ਦੁਕਾਨ
+          sewing: ਸਿਲਾਈ ਦੀ ਹੱਟੀ
           shoes: ਜੁੱਤੀਆਂ ਦੀ ਦੁਕਾਨ
           sports: ਖੇਡਾਂ ਦੀ ਦੁਕਾਨ
           stationery: ਸਟੇਸ਼ਨਰੀ ਦੀ ਦੁਕਾਨ
           supermarket: ਸੁਪਰਮਾਰਕਿਟ
           tailor: ਦਰਜੀ
+          tea: ਚਾਹ ਦੀ ਦੁਕਾਨ
+          tobacco: ਤੰਬਾਕੂ ਦੀ ਦੁਕਾਨ
           toys: ਖਿਡੌਣਿਆਂ ਦੀ ਦੁਕਾਨ
           travel_agency: ਟਰੈਵਲ ਏਜੰਸੀ
+          vacant: ਖਾਲੀ ਦੁਕਾਨ
           video: ਵੀਡੀਓ ਦੀ ਦੁਕਾਨ
+          wholesale: ਥੋਕ ਦੀ ਦੁਕਾਨ
+          wine: ਸ਼ਰਾਬ ਦੀ ਦੁਕਾਨ
           "yes": ਹੱਟੀ
         tourism:
-          apartment: ਅਪਾਰਟਮੈਂਟ
+          apartment: à¨\9bà©\81ੱà¨\9fà©\80à¨\86à¨\82 à¨¦à¨¾ à¨\85ਪਾਰà¨\9fਮà©\88à¨\82à¨\9f
           artwork: ਕਾਰੀਗਰੀ
           attraction: ਖਿੱਚ
           bed_and_breakfast: ਮੰਜਾ ਤੇ ਨਾਸ਼ਤਾ
-          cabin: à¨\95à©\88ਬਿਨ
+          cabin: à¨¸à©\88ਲਾਨà©\80 à¨\95à©\8bਠà©\9cà©\80
           camp_site: ਛਾਉਣੀ
           caravan_site: ਕਾਫ਼ਲਾ ਟਿਕਾਣਾ
           chalet: ਲੱਕੜ ਦਾ ਘਰ
@@ -844,15 +1201,87 @@ pa:
           "yes": ਜਲਮਾਰਗ
       admin_levels:
         level2: ਦੇਸ਼ ਦੀ ਹੱਦ
+        level3: ਇਲਾਕੇ ਦੀ ਹੱਦ
         level4: ਰਾਜ ਦੀ ਹੱਦ
         level5: ਇਲਾਕੇ ਦੀ ਹੱਦ
         level6: ਕਾਊਂਟੀ ਦੀ ਹੱਦ
+        level7: ਨਗਰਪਾਲਿਕਾ ਹੱਦ
         level8: ਸ਼ਹਿਰ ਦੀ ਹੱਦ
         level9: ਪਿੰਡ ਦੀ ਹੱਦ
         level10: ਉਪਨਗਰ ਦੀ ਜੂਹ
+        level11: ਗੁਆਂਢ ਦੀ ਹੱਦ
     results:
       no_results: ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ
       more_results: ਹੋਰ ਨਤੀਜੇ
+  issues:
+    index:
+      title: ਮੁੱਦੇ
+      select_type: ਕਿਸਮ ਚੁਣੋ
+      select_last_updated_by: ਵੱਲੋਂ ਆਖਰੀ ਵਾਰ ਨਵਿਆਈਆ ਨੂੰ  ਚੁਣੋ
+      reported_user: ਇਤਲਾਹ ਕੀਤਾ ਵਰਤੋਂਕਾਰ
+      not_updated: ਨਵਿਆਈਆ ਨਹੀਂ ਗਿਆ
+      search: ਲੱਭੋ
+      search_guidance: 'ਮੁੱਦੇ ਲੱਭੋ:'
+      states:
+        ignored: ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ
+        open: ਖੋਲ੍ਹੋ
+        resolved: ਹੱਲ-ਕੱਢਿਆ ਗਿਆ
+    page:
+      user_not_found: ਵਰਤੋਂਕਾਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ
+      issues_not_found: ਅਜਿਹੀਆਂ ਕੋਈ ਸਮੱਸਿਆਵਾਂ ਨਹੀਂ ਮਿਲੀਆਂ
+      reported_user: ਇਤਲਾਹ ਕੀਤਾ ਵਰਤੋਂਕਾਰ
+      reports: ਇਤਲਾਹਵਾਂ
+      last_updated: ਆਖਰੀ ਵਾਰ ਨਵਿਆਈਆ ਗਿਆ
+      last_updated_time_ago_user_html: '%{time_ago} %{user} ਵੱਲੋਂ'
+      states:
+        ignored: ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ
+        open: ਖੋਲ੍ਹੋ
+        resolved: ਹੱਲ-ਕੱਢਿਆ ਗਿਆ
+    show:
+      title: '%{status} ਮੁੱਦਾ #%{issue_id}'
+      no_reports: ਕੋਈ ਇਤਲਾਹ ਨਹੀਂ
+      report_created_at_html: ਪਹਿਲੀ ਵਾਰ %{datetime} ਨੂੰ ਇਤਲਾਹ ਕੀਤੀ ਗਈ
+      last_resolved_at_html: ਆਖਰੀ ਵਾਰ %{datetime} 'ਤੇ ਹੱਲ ਕੀਤਾ ਗਿਆ
+      last_updated_at_html: ਆਖਰੀ ਵਾਰ %{datetime} ਵਜੇ %{displayname} ਵੱਲੋਂ  ਨਵਿਆਈਆ
+        ਗਿਆ
+      resolve: ਹੱਲ-ਕੱਢੋ
+      ignore: ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰੋ
+      reopen: ਮੁਡ਼ ਖੋਲ੍ਹੋ
+      other_issues_against_this_user: ਇਸ ਵਰਤੋਂਕਾਰ ਦੇ ਖਿਲਾਫ ਹੋਰ ਮੁੱਦੇ
+      no_other_issues: ਇਸ ਵਰਤੋਂਕਾਰ ਦੇ ਖਿਲਾਫ ਕੋਈ ਹੋਰ ਮੁੱਦੇ ਨਹੀਂ ਹਨ।
+      comments_on_this_issue: ਇਸ ਮੁੱਦੇ 'ਤੇ ਟਿੱਪਣੀ
+    reports:
+      reported_by_html: '%{updated_at} ਨੂੰ %{user} ਵੱਲੋਂ %{category} ਵਜੋਂ ਇਤਲਾਹ ਕੀਤੀ
+        ਗਈ'
+    helper:
+      reportable_title:
+        diary_comment: '%{entry_title}, ਟਿੱਪਣੀ #%{comment_id}'
+  reports:
+    new:
+      title_html: ਇਤਲਾਹ ਦਿਓ %{link}
+      missing_params: ਨਵੀਂ ਇਤਲਾਹ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ
+      disclaimer:
+        intro: 'ਸਾਈਟ ਸੰਚਾਲਕਾਂ ਨੂੰ ਆਪਣੀ ਇਤਲਾਹ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ
+          ਕਿ:'
+        not_just_mistake: ਤੁਹਾਨੂੰ ਯਕੀਨ ਹੈ ਕਿ ਸਮੱਸਿਆ ਸਿਰਫ਼ ਇੱਕ ਗਲਤੀ ਨਹੀਂ ਹੈ
+        unable_to_fix: ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਜਾਂ ਆਪਣੇ ਸਾਥੀ ਭਾਈਚਾਰੇ ਦੇ ਮੈਂਬਰਾਂ ਦੀ ਮਦਦ ਨਾਲ ਸਮੱਸਿਆ
+          ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ ਹੋ।
+        resolve_with_user: ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਸਬੰਧਤ ਵਰਤੋਂਕਾਰ ਨਾਲ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ
+          ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ
+      categories:
+        diary_entry:
+          threat_label: ਇਸ ਰੋਜ਼ਨਾਮਚੇ ਵਿੱਚ ਇੱਕ ਧਮਕੀ ਹੈ
+          other_label: ਹੋਰ
+        diary_comment:
+          other_label: ਹੋਰ
+        user:
+          vandal_label: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਵਿਨਾਸ਼ਕਾਰੀ ਹੈ
+          other_label: ਹੋਰ
+        note:
+          personal_label: ਇਸ ਨੋਟ ਵਿੱਚ ਨਿੱਜੀ ਡੇਟਾ ਸ਼ਾਮਲ ਹੈ
+          other_label: ਹੋਰ
+    create:
+      provide_details: ਕਿਰਪਾ ਕਰਕੇ ਲੋਡ਼ੀਂਦੇ ਵੇਰਵੇ ਪ੍ਰਦਾਨ ਕਰੋ
   layouts:
     logo:
       alt_text: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਮਾਰਕਾ
@@ -864,28 +1293,39 @@ pa:
     edit: ਸੋਧੋ
     history: ਪੁਰਾਣਾ
     export: ਬਰਾਮਦ
+    issues: ਮੁੱਦੇ
+    gps_traces: GPS ਖੁਰਾ-ਖੋਜ
+    user_diaries: ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
     edit_with: '%{editor} ਨਾਲ ਸੋਧੋ'
     intro_header: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਉੱਤੇ ਜੀ ਆਇਆਂ ਨੂੰ
     partners_partners: ਜੋੜੀਦਾਰ
+    tou: ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ
     help: ਮਦਦ
     about: ਬਾਬਤ
     copyright: ਨਕਲ-ਹੱਕ
+    communities: ਭਾਈਚਾਰੇ
     learn_more: ਹੋਰ ਜਾਣੋ
     more: ਹੋਰ
   user_mailer:
+    diary_comment_notification:
+      hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
     message_notification:
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] %{message_title}'
+      hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
       header: '%{from_user} ਨੇ ਤੁਹਾਨੂੰ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਰਾਹੀਂ %{subject}: ਵਿਸ਼ੇ ਨਾਲ
         ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ।'
       header_html: '%{from_user} ਨੇ ਤੁਹਾਨੂੰ %{subject} ਵਿਸ਼ੇ ਦੇ ਨਾਲ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ
         ਰਾਹੀਂ ਇੱਕ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ:'
     friendship_notification:
+      hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] %{user} ਨੇ ਤੁਹਾਨੂੰ ਇੱਕ ਦੋਸਤ ਵਜੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ'
       had_added_you: '%{user} ਨੇ ਤੁਹਾਨੂੰ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ''ਤੇ ਇੱਕ ਦੋਸਤ ਵਜੋਂ ਸ਼ਾਮਲ
         ਕੀਤਾ ਹੈ।'
     gpx_failure:
+      hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] GPX ਦਰਾਮਦ ਅਸਫਲਤਾ'
     gpx_success:
+      hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] GPX ਦਰਾਮਦ ਸਫਲਤਾ'
     signup_confirm:
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] ਉੱਤੇ ਜੀ ਆਈਆਂ ਨੂੰ'
@@ -908,6 +1348,7 @@ pa:
       button: ਤਸਦੀਕ ਕਰੋ
       already active: ਇਹ ਖਾਤਾ ਪਹਿਲੋਂ ਹੀ ਤਸਦੀਕ ਹੋ ਚੁੱਕਾ ਹੈ।
       unknown token: ਉਸ ਤਸਦੀਕੀ ਕੋਡ ਦੀ ਮਿਆਦ ਜਾਂ ਹੋਂਦ ਖ਼ਤਮ ਹੋ ਚੁੱਕੀ ਹੈ।
+      click_here: ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ
     confirm_resend:
       failure: ਵਰਤੋਂਕਾਰ %{name} ਨਹੀਂ ਲੱਭਿਆ।
     confirm_email:
@@ -923,12 +1364,15 @@ pa:
       to: ਵੱਲ
       subject: ਵਿਸ਼ਾ
       date: ਮਿਤੀ
+      actions: ਕਾਰਵਾਈਆਂ
     message_summary:
+      unread_button: ਨਾ ਪਡ਼੍ਹੇ ਹੋਏ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਾਓ
+      read_button: ਪੜ੍ਹੇ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਾਓ
       destroy_button: ਮਿਟਾਓ
     new:
       title: ਸੁਨੇਹਾ ਘੱਲੋ
     create:
-      message_sent: à¨¸à©\81ਨà©\87ਹਾ à¨­à©\87à¨\9cਿਆ ਗਿਆ
+      message_sent: à¨¸à©\81ਨà©\87ਹਾ à¨\98ੱਲਿਆ ਗਿਆ
     no_such_message:
       title: ਅਜਿਹਾ ਕੋਈ ਸੁਨੇਹਾ ਨਹੀਂ
       heading: ਅਜਿਹਾ ਕੋਈ ਸੁਨੇਹਾ ਨਹੀਂ
@@ -937,12 +1381,16 @@ pa:
     show:
       title: ਸੁਨੇਹਾ ਪੜ੍ਹੋ
       reply_button: ਜੁਆਬ
-      unread_button: ਅਣ-ਪੜ੍ਹਿਆ ਨਿਸ਼ਾਨ ਲਾਉ
+      unread_button: ਨਹੀਂ-ਪੜ੍ਹਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਾਓ
+      destroy_button: ਮਿਟਾਓ
       back: ਪਿਛਾਂਹ
     sent_message_summary:
       destroy_button: ਮਿਟਾਓ
     heading:
       my_inbox: ਮੇਰਾ ਇਨਬਾਕਸ
+    mark:
+      as_read: ਸੁਨੇਹੇ ਨੂੰ ਪਡ਼੍ਹਿਆ ਗਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
+      as_unread: ਸੁਨੇਹੇ ਨੂੰ ਨਹੀਂ-ਪਡ਼੍ਹਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
     destroy:
       destroyed: ਸੁਨੇਹਾ ਮਿਟਾਇਆ ਗਿਆ
   passwords:
@@ -956,46 +1404,92 @@ pa:
       reset: ਪਛਾਣ ਸ਼ਬਦ ਮੁੜ-ਸੈੱਟ ਕਰੋ
     update:
       flash changed: ਤੁਹਾਡਾ ਪਛਾਣ ਸ਼ਬਦ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।
+  preferences:
+    show:
+      title: ਮੇਰੀਆਂ ਤਰਜੀਹਾਂ
+      preferred_languages: ਤਰਜੀਹੀ ਬੋਲੀਆਂ
+      edit_preferences: ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
+    edit:
+      title: ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
+      save: ਤਰਜੀਹਾਂ ਨੂੰ ਨਵਿਆਓ
+      cancel: ਰੱਦ ਕਰੋ
+    update:
+      failure: ਤਰਜੀਹਾਂ ਨੂੰ ਨਵਿਆਈਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।
+    update_success_flash:
+      message: ਤਰਜੀਹਾਂ ਨਵਿਆਈਆਂ ਗਈਆਂ।
   profiles:
     edit:
+      cancel: ਰੱਦ ਕਰੋ
       image: 'ਤਸਵੀਰ:'
       gravatar:
         gravatar: ਗਰੈਵੇਤਾਰ ਵਰਤੋ
+        what_is_gravatar: ਗਰਾਵਤਾਰ ਕੀ ਹੈ?
       new image: ਇੱਕ ਤਸਵੀਰ ਜੋੜੋ
       keep image: ਮੌਜੂਦਾ ਤਸਵੀਰ ਰੱਖੋ
       delete image: ਮੌਜੂਦਾ ਤਸਵੀਰ ਹਟਾਉ
       replace image: ਮੌਜੂਦਾ ਤਸਵੀਰ ਵਟਾਉ
       home location: ਘਰ ਦਾ ਟਿਕਾਣਾ
-      no home location: ਤੁਸੀਂ ਆਪਣੇ ਘਰ ਦੀ ਸਥਿਤੀ ਨਹੀਂ ਦੱਸੀ ਹੈ।
+      no home location: ਤੁਸੀਂ ਆਪਣੇ ਘਰ ਦਾ ਟਿਕਾਣਾਂ ਨਹੀਂ ਦਾਖਲ ਕੀਤਾ ਹੈ।
+      show: ਵਿਖਾਓ
+      delete: ਮਿਟਾਓ
+    update:
+      success: ਪ੍ਰੋਫਾਈਲ ਨਵਿਆਈਆ ਗਿਆ।
   sessions:
     new:
       tab_title: ਦਾਖ਼ਲ ਹੋਵੋ
       email or username: 'ਈਮੇਲ ਪਤਾ ਜਾਂ ਵਰਤੋਂਕਾਰ-ਨਾਂ:'
-      password: 'ਪਛਾਣ-ਸ਼ਬਦ:'
+      password: ਲੰਘ-ਸ਼ਬਦ
       remember: ਮੈਨੂੰ ਯਾਦ ਰੱਖੋ
       lost password link: ਆਪਣਾ ਪਛਾਣ-ਸ਼ਬਦ ਗੁਆ ਦਿੱਤਾ?
       login_button: ਦਾਖ਼ਲ ਹੋਵੋ
+      or: ਜਾਂ
+      auth failure: ਮੁਆਫ ਕਰਨਾ, ਇਨ੍ਹਾਂ ਵੇਰਵਿਆਂ ਨਾਲ ਦਾਖਲ ਨਹੀਂ ਹੋ ਸਕਿਆ।
     destroy:
       title: ਬਾਹਰ ਆਉ
       heading: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਤੋਂ ਬਾਹਰ ਆਓ
       logout_button: ਬਾਹਰ ਆਉ
+    suspended_flash:
+      suspended: ਮੁਆਫ ਕਰਨਾ, ਸ਼ੱਕੀ ਗਤੀਵਿਧੀ ਕਾਰਨ ਤੁਹਾਡਾ ਖਾਤਾ ਮੁਅੱਤਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।
   shared:
+    markdown_help:
+      headings: ਸਿਰਨਾਵੇਂ
+      heading: ਸਿਰਨਾਵਾਂ
+      link: ਕੜੀ
+      text: ਲਿਖਤ
+      image: ਤਸਵੀਰ
+      alt: ਬਦਲਵੀਂ ਲਿਖਤ
+    richtext_field:
+      edit: ਸੋਧ
+      preview: ਝਾਤ
+      help: ਮਦਦ
     pagination:
       diary_comments:
         older: ਪੁਰਾਣੀਆਂ ਟਿੱਪਣੀਆਂ
         newer: ਨਵੀਆਂ ਟਿੱਪਣੀਆਂ
+      issues:
+        older: ਪੁਰਾਣੇ ਮੁੱਦੇ
+        newer: ਨਵੇਂ ਮੁੱਦੇ
       traces:
         older: ਪੁਰਾਣੇ ਖੁਰਾ-ਖੋਜ
         newer: ਨਵੇਂ ਖੁਰਾ-ਖੋਜ
+      users:
+        older: ਪੁਰਾਣੇ ਵਰਤੋਂਕਾਰ
+        newer: ਨਵੇਂ ਵਰਤੋਂਕਾਰ
   site:
     about:
       heading_html: '%{copyright}ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ %{br} ਯੋਗਦਾਨੀ'
       local_knowledge_title: ਸਥਾਨੀ ਗਿਆਨ
+      community_driven_user_diaries: ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
       open_data_title: ਡਾਟਾ ਖੋਲ੍ਹੋ
+      open_data_open_data: ਡਾਟਾ ਖੋਲ੍ਹੋ
+      open_data_copyright_license: ਨਕਲ-ਹੱਕ ਤੇ ਲਸੰਸ ਸਫ਼ਾ
       legal_title: ਕਾਨੂੰਨੀ
+      legal_1_1_terms_of_use: ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ
+      legal_1_1_aup: ਸਵੀਕਾਰਯੋਗ ਵਰਤੋਂ ਨੀਤੀਆਂ
+      legal_1_1_privacy_policy: ਨਿੱਜਤਾ ਨੀਤੀ
       partners_title: ਸਾਂਝੀਦਾਰ
     copyright:
-      title: à¨¨à¨\95ਲ-ਹੱà¨\95 à¨¤à©\87 à¨²à¨¾à¨\87ਸੰਸ
+      title: ਨਕਲ-ਹੱਕ ਤੇ ਲਸੰਸ
       foreign:
         title: ਇਸ ਤਰਜਮੇ ਬਾਰੇ
         english_link: ਮੂਲ ਅੰਗਰੇਜ਼ੀ
@@ -1005,11 +1499,30 @@ pa:
         mapping_link: ਨਕਸ਼ਾਬੰਦੀ ਸ਼ੁਰੂ ਕਰੋ
       legal_babble:
         introduction_1_osm_foundation: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਸੰਸਥਾ
+        introduction_2_legal_code: ਕਾਨੂੰਨੀ ਜ਼ਾਬਤਾ
         credit_title_html: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਨੂੰ ਕਿਵੇਂ ਸੇਹਰਾ ਦੇਣਾ ਹੈ
         credit_1_html: 'ਜਿੱਥੇ ਤੁਸੀਂ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤੁਹਾਨੂੰ
           ਹੇਠ ਲਿਖੀਆਂ ਦੋ ਚੀਜ਼ਾਂ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ:'
+        credit_3_attribution_guidelines: ਗੁਣ-ਸੰਬੰਧੀ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼
+        credit_4_1_this_copyright_page: ਇਹ ਨਕਲ-ਹੱਕ ਸਫ਼ਾ
         more_title_html: ਹੋਰ ਜਾਣਕਾਰੀ ਲੱਭਣ ਵਾਸਤੇ
         contributors_title_html: ਸਾਡੇ ਯੋਗਦਾਨੀ
+        contributors_at_austria: ਆਸਟਰੀਆ
+        contributors_at_stadt_wien: ਸਟੈਡਟ ਵਿਏਨ
+        contributors_at_land_vorarlberg: ਲੈਂਡ ਵੋਰਾਰਲਬਰ੍ਗ
+        contributors_au_australia: ਆਸਟਰੇਲੀਆ
+        contributors_ca_canada: ਕੈਨੇਡਾ
+        contributors_cz_czechia: ਚੈਕੀਆ
+        contributors_fi_finland: ਫਿਨਲੈਂਡ
+        contributors_fr_france: ਫ਼ਰਾਂਸ
+        contributors_hr_croatia: ਕਰੋਸ਼ੀਆ
+        contributors_nl_netherlands: ਨੀਦਰਲੈਂਡ
+        contributors_nz_new_zealand: ਨਿਊਜ਼ੀਲੈਂਡ
+        contributors_rs_serbia: ਸਰਬੀਆ
+        contributors_si_slovenia: ਸਲੋਵੇਨੀਆ
+        contributors_es_spain: ਸਪੇਨ
+        contributors_za_south_africa: ਦੱਖਣੀ ਅਫ਼ਰੀਕਾ
+        contributors_2_contributors_page: ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੇਆਂ ਦਾ ਵਰਕਾ
     edit:
       user_page_link: ਵਰਤੋਂਕਾਰ ਵਰਕਾ
       anon_edits_link_text: ਪਤਾ ਕਰੋ ਕਿ ਅਜਿਹਾ ਕਿਉਂ ਹੈ।
@@ -1033,15 +1546,22 @@ pa:
       title: ਮਦਦ ਲੈਣੀ
       welcome:
         url: /ਜੀ ਆਇਆਂ ਨੂੰ
-        title: à¨\93.à¨\90ੱਸ.à¨\90ੱਮ. 'ਤੇ ਜੀ ਆਇਆਂ ਨੂੰ
+        title: à¨\96à©\81ੱਲà©\8dਹਾ-à¨\97ਲà©\80-ਨà¨\95ਸ਼ਾ à¨\89ੱਤੇ ਜੀ ਆਇਆਂ ਨੂੰ
       beginners_guide:
         title: ਸ਼ੁਰੂਆਤੀ ਦਸਤੀ
+      mailing_lists:
+        title: ਡਾਕ ਸੂਚੀਆਂ
       irc:
         title: ਆਈ.ਆਰ.ਸੀ
+      welcomemat:
+        title: ਸੰਸਥਾਵਾਂ ਲਈ
       wiki:
-        title: wiki.openstreetmap.org
+        title: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਵਿਕੀ
+    potlatch:
+      change_preferences: ਇੱਥੇ ਆਪਣੀਆਂ ਤਰਜੀਹਾਂ ਬਦਲੋ
     any_questions:
       title: ਕੋਈ ਸੁਆਲ?
+      get_help_here: ਇੱਥੇ ਮਦਦ ਪ੍ਰਾਪਤ ਕਰੋ
     sidebar:
       search_results: ਖੋਜ ਨਤੀਜੇ
     search:
@@ -1058,20 +1578,31 @@ pa:
           trunk: ਟਰੰਕ ਸੜਕ
           primary: ਮੁੱਢਲੀ ਸੜਕ
           secondary: ਸਕੈਂਡਰੀ ਸੜਕ
+          pedestrian: ਪੈਦਲ ਜਾਣ ਲਈ ਰਾਹ
           track: ਟਰੈਕ
           bridleway: ਘੋੜ-ਰਾਹ
           cycleway: ਸਾਈਕਲ ਦਾ ਰਾਹ
           footway: ਪੈਦਲ ਰਾਹ
           rail: ਰੇਲਵੇ
+          train: ਰੇਲਗੱਡੀ
           subway: ਸਬ-ਵੇਅ
+          ferry: ਕਿਸ਼ਤੀ
+          light_rail: ਹਲਕੀ ਰੇਲ
+          bus: ਬੱਸ
           cable_car: ਕੇਬਲ ਕਾਰ
           chair_lift: ਕੁਰਸੀ ਲਿਫ਼ਟ
           runway: ਹਵਾਈ ਅੱਡੇ ਦੀ ਉਡਾਣ ਪੱਟੀ
           taxiway: ਟੈਕਸੀਵੇਅ
           apron: ਹਵਾਈ ਅੱਡੇ ਦਾ ਐਪਰਨ
           admin: ਪ੍ਰਬੰਧਕੀ ਸਰਹੱਦ
+          capital: ਰਾਜਧਾਨੀ
+          city: ਸ਼ਹਿਰ
+          orchard: ਬਗ਼ੀਚਾ
+          vineyard: ਅੰਗੂਰਾਂ ਦਾ ਬਾਗ਼
           forest: ਜੰਗਲ
           wood: ਲੱਕੜ
+          grass: ਘਾਹ
+          sand: ਰੇਤ
           golf: ਗੋਲਫ਼ ਮੈਦਾਨ
           park: ਪਾਰਕ
           common: ਸ਼ਾਮਲਾਟ
@@ -1080,7 +1611,7 @@ pa:
           industrial: ਉਦਯੋਗਿਕ ਖੇਤਰ
           commercial: ਵਪਾਰਕ ਖੇਤਰ
           lake: ਝੀਲ
-          reservoir: à¨\95à©\81ੰਡ
+          reservoir: à¨¸à¨°à©\8bਵਰ
           farm: ਖੇਤ
           cemetery: ਸ਼ਮਸ਼ਾਨ
           pitch: ਖੇਡ ਦੀ ਪਿੱਚ
@@ -1089,31 +1620,55 @@ pa:
           military: ਫ਼ੌਜੀ ਇਲਾਕਾ
           school: ਸਕੂਲ
           university: ਯੂਨੀਵਰਸਿਟੀ
+          hospital: ਹਸਪਤਾਲ
           building: ਮਹੱਤਵਪੂਰਨ ਇਮਾਰਤ
           station: ਰੇਲਵੇ ਸਟੇਸ਼ਨ
           summit: ਸਿਖਰ
           peak: ਚੋਟੀ
+          private: ਨਿੱਜੀ ਲਾਂਘਾ
           construction: ਉਸਾਰੀ ਹੇਠ ਸੜਕਾਂ
+          bicycle_rental: ਸਾਈਕਲ ਕਿਰਾਏ 'ਤੇ
     welcome:
       title: ਜੀ ਆਇਆਂ ਨੂੰ!
       whats_on_the_map:
         title: ਨਕਸ਼ੇ ਉੱਤੇ ਕੀ ਹੈ
+        real_and_current: ਅਸਲੀ ਅਤੇ ਮੌਜੂਦਾ
+      basic_terms:
+        title: ਨਕਸ਼ਾ-ਉਲੀਕਣ ਲਈ ਬੁਨਿਆਦੀ ਸ਼ਰਤਾਂ
+        editor: ਸੋਧਕ
+        way: ਰਾਹ
       rules:
         title: ਨਿਯਮ!
+        imports: ਦਰਾਮਦ
       start_mapping: ਨਕਸ਼ਾਬੰਦੀ ਸ਼ੁਰੂ ਕਰੋ
       add_a_note:
         title: ਸੋਧਣ ਦੀ ਵਿਹਲ ਨਹੀਂ? ਕੋਈ ਨੋਟ ਜੋੜੋ!
+        the_map: ਨਕਸ਼ਾ
     communities:
+      title: ਭਾਈਚਾਰੇ
       local_chapters:
         title: ਸਥਾਨਕ ਸ਼ਾਖਾਵਾਂ
+      other_groups:
+        title: ਹੋਰ ਸਮੂਹ
+        communities_wiki: ਭਾਈਚਾਰੇ ਵਿਕੀ ਸਫ਼ਾ
   traces:
+    visibility:
+      private: ਨਿੱਜੀ (ਸਿਰਫ਼ ਅਗਿਆਤ, ਬਿਨਾਂ ਕ੍ਰਮਬੱਧ ਬਿੰਦੂਆਂ ਵਜੋਂ ਸਾਂਝਾ ਕੀਤਾ ਗਿਆ)
+      public: ਜਨਤਕ (ਖੁਰਾ-ਖੋਜ ਸੂਚੀ ਵਿੱਚ ਅਤੇ ਅਗਿਆਤ, ਬਿਨਾਂ ਕ੍ਰਮਬੱਧ ਬਿੰਦੂਆਂ ਵਜੋਂ ਦਿਖਾਇਆ
+        ਗਿਆ)
     new:
       visibility_help: ਇਹਦਾ ਕੀ ਮਤਲਬ ਹੈ?
       help: ਮਦਦ
     edit:
+      cancel: ਰੱਦ ਕਰੋ
+      title: ਖੁਰਾ-ਖੋਜ %{name} ਨੂੰ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ
+      heading: ਖੁਰਾ-ਖੋਜ %{name} ਨੂੰ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ
       visibility_help: ਇਹਦਾ ਕੀ ਮਤਲਬ ਹੈ?
+    update:
+      updated: ਖੁਰਾ-ਖੋਜ ਨਵਿਆਈ ਗਈ
     show:
       title: ਖੁਰਾ-ਖੋਜ %{name} ਵੇਖ ਰਿਹਾ ਹੈ
+      heading: ਖੁਰਾ-ਖੋਜ %{name} ਵੇਖ ਰਿਹਾ ਹੈ
       pending: ਲਮਕਦਾ
       filename: 'ਫ਼ਾਈਲ ਦਾ ਨਾਂ:'
       download: ਡਾਊਨਲੋਡ
@@ -1131,9 +1686,12 @@ pa:
       delete_trace: ਇਹ ਖੁਰ-ਖੋਜ ਮਿਟਾਉ
       trace_not_found: ਖੁਰ-ਖੋਜ ਨਹੀਂ ਲੱਭਿਆ!
       visibility: 'ਦਿੱਸਣਯੋਗਤਾ:'
+      confirm_delete: ਇਹ ਖੁਰ-ਖੋਜ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?
     trace:
       pending: ਲਮਕਦਾ
-      count_points: '%{count} ਬਿੰਦੂ'
+      count_points:
+        one: '%{count} ਇਕਾਈ'
+        other: '%{count} ਇਕਾਈਆ'
       more: ਹੋਰ
       trace_details: ਖੁਰਾ-ਖੋਜ ਦਾ ਵੇਰਵਾ ਵੇਖੋ
       view_map: ਨਕਸ਼ਾ ਵੇਖੋ
@@ -1142,39 +1700,153 @@ pa:
       identifiable: ਪਛਾਣਯੋਗ
       private: ਨਿੱਜੀ
       trackable: ਪੈੜ ਕੱਢਣਯੋਗ
+      details_with_tags_html: '%{tags} ਵਿੱਚ %{time_ago} %{user} ਵੱਲੋਂ'
+      details_without_tags_html: '%{time_ago} %{user} ਵੱਲੋਂ'
     index:
+      public_traces: ਜਨਤਕ GPS ਖੁਰਾ-ਖੋਜ
+      my_gps_traces: ਮੇਰੇ GPS ਖੁਰਾ-ਖੋਜ
+      public_traces_from: '%{user} ਤੋਂ ਜਨਤਕ GPS ਖੁਰਾ-ਖੋਜ'
       tagged_with: '%{tags} ਨਾਲ਼ ਨਿਸ਼ਾਨਦੇਹ'
+      upload_new: ਇੱਕ ਨਵਾਂ ਖੁਰਾ-ਖੋਜ ਚੜ੍ਹਾਉ
+      wiki_page: ਵਿਕੀ ਸਫ਼ਾ
       upload_trace: ਕੋਈ ਖੁਰਾ-ਖੋਜ ਚੜ੍ਹਾਉ
+      all_traces: ਸਾਰੇ ਖੁਰਾ-ਖੋਜ
+      my_traces: ਮੇਰੇ ਖੁਰਾ-ਖੋਜ
+      traces_from: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
+    georss:
+      title: OpenStreetMap GPS ਖੁਰਾ-ਖੋਜ
+    description:
+      description_without_count: '%{user} ਤੋਂ GPX ਫ਼ਾਈਲ'
   application:
+    permission_denied: ਤੁਹਾਨੂੰ ਉਸ ਕਾਰਵਾਈ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ
+    settings_menu:
+      account_settings: ਖਾਤਾ ਤਰਜੀਹਾਂ
     auth_providers:
+      openid_login_button: ਜਾਰੀ ਰੱਖੋ
+      openid:
+        title: OpenID ਨਾਲ ਦਾਖ਼ਲ ਹੋਵੋ
       google:
+        title: ਗੂਗਲ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
         alt: ਗੂਗਲ ਮਾਰਕਾ
       facebook:
+        title: ਫੇਸਬੁੱਕ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
         alt: ਫੇਸਬੁੱਕ ਮਾਰਕਾ
+      microsoft:
+        title: ਮਾਈਕਰੋਸੌਫਟ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
       github:
+        title: GitHub ਨਾਲ ਦਾਖਲ ਹੋਵੋ
         alt: GitHub ਮਾਰਕਾ
       wikipedia:
+        title: ਵਿਕੀਪੀਡੀਆ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
         alt: ਵਿਕੀਪੀਡੀਆ ਮਾਰਕਾ
+  oauth:
+    scopes:
+      openid: OpenStreetMap ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਾਖਲ ਹੋਵੋ
+      read_prefs: ਪੜ੍ਹਨ ਦੀਆਂ ਤਰਜੀਹਾਂ
+      write_prefs: ਵਰਤੋਂਕਾਰ ਤਰਜੀਹਾਂ ਨੂੰ ਸੋਧੋ
+      write_diary: ਰੋਜ਼ਨਾਮਚਾ ਦਰਜ਼ ਕਰੋ, ਟਿੱਪਣੀਆਂ ਕਰੋ ਅਤੇ ਦੋਸਤ ਬਣਾਓ
+      write_api: ਨਕਸ਼ੇ ਨੂੰ ਬਦਲੋ
+      read_gpx: ਨਿੱਜੀ GPS ਖੁਰਾ-ਖੋਜ ਪੜ੍ਹੋ
+      write_gpx: GPS ਖੁਰਾ-ਖੋਜ ਜੋੜੋ
+      write_notes: ਨੋਟਾਂ ਨੂੰ ਸੋਧੋ
+      write_redactions: ਨਕਸ਼ੇ ਦੇ ਡੇਟਾ ਨੂੰ ਸੋਧੋ
+      read_email: ਵਰਤੋਂਕਾਰ ਈਮੇਲ ਪਤਾ ਪਡ਼੍ਹੋ
+  oauth2_applications:
+    index:
+      name: ਨਾਂ
+      permissions: ਇਜਾਜ਼ਤਾਂ
+    application:
+      edit: ਸੋਧ
+      delete: ਮਿਟਾਓ
+    show:
+      edit: ਸੋਧ
+      delete: ਮਿਟਾਓ
+      client_secret_warning: ਇਸ ਰਾਜ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣਾ ਯਕੀਨੀ ਬਣਾਓ-ਇਹ ਮੁੜ ਪਹੁੰਚਯੋਗ
+        ਨਹੀਂ ਹੋਵੇਗਾ
+      permissions: ਇਜਾਜ਼ਤਾਂ
+      redirect_uris: URIs ਵਾਪਸ-ਮੋੜੋ
+  oauth2_authorizations:
+    new:
+      authorize: ਅਧਿਕਾਰ ਦਿਓ
+      deny: ਇਨਕਾਰ ਕਰੋ
+    error:
+      title: ਇੱਕ ਗਲਤੀ ਆਈ ਹੈ।
+    show:
+      title: ਅਧਿਕਾਰ ਕੋਡ
+  oauth2_authorized_applications:
+    index:
+      permissions: ਇਜਾਜ਼ਤਾਂ
+      last_authorized: ਆਖਰੀ ਵਾਰ ਅਧਿਕਾਰ ਦਿਤਾ
+    application:
+      revoke: ਪਹੁੰਚ ਰੱਦ ਕਰੋ
   users:
     new:
-      title: ਭਰਤੀ ਹੋਵੋ
+      title: ਖਾਤਾ ਬਣਾਓ
+      tab_title: ਖਾਤਾ ਬਣਾਓ
+      no_auto_account_create: ਬਦਕਿਸਮਤੀ ਨਾਲ ਅਸੀਂ ਇਸ ਵੇਲੇ ਤੁਹਾਡੇ ਲਈ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ
+        ਇੱਕ ਖਾਤਾ ਬਣਾਉਣ ਦੇ ਯੋਗ ਨਹੀਂ ਹਾਂ।
+      please_contact_support_html: ਕਿਰਪਾ ਕਰਕੇ ਖਾਤਾ ਬਣਾਉਣ ਦਾ ਪ੍ਰਬੰਧ ਕਰਨ ਲਈ %{support_link}
+        ਨਾਲ ਸੰਪਰਕ ਕਰੋ-ਅਸੀਂ ਜਿੰਨੀ ਜਲਦੀ ਹੋ ਸਕੇ ਬੇਨਤੀ ਨਾਲ ਨਜਿੱਠਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ।
       about:
         header: ਮੁਫ਼ਤ ਅਤੇ ਸੋਧਣਯੋਗ
         welcome: ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ਉੱਤੇ ਜੀ ਆਇਆਂ ਨੂੰ
-      continue: ਭਰਤੀ ਹੋਵੋ
+      display name description: ਤੁਹਾਡਾ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਵਰਤੋਂਕਾਰ ਨਾਂ। ਤੁਸੀਂ
+        ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਤਰਜੀਹਾਂ ਵਿੱਚੋਂ ਬਦਲ ਸਕਦੇ ਹੋ।
+      by_signing_up:
+        privacy_policy: ਨਿੱਜਤਾ ਨੀਤੀ
+        privacy_policy_title: OSMF ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਜਿਸ ਵਿੱਚ ਈਮੇਲ ਪਤੇ 'ਤੇ ਭਾਗ ਸ਼ਾਮਲ
+          ਹਨ
+        contributor_terms: ਯੋਗਦਾਨੀ ਦੀਆਂ ਸ਼ਰਤਾਂ
+      continue: ਖਾਤਾ ਬਣਾਓ
+      terms accepted: ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਲਈ ਧੰਨਵਾਦ!
+      email_help:
+        privacy_policy: ਨਿੱਜਤਾ ਨੀਤੀ
+        privacy_policy_title: OSMF ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਜਿਸ ਵਿੱਚ ਈਮੇਲ ਪਤੇ 'ਤੇ ਭਾਗ ਸ਼ਾਮਲ
+          ਹਨ
+        html: ਤੁਹਾਡਾ ਪਤਾ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ, ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ
+          ਸਾਡਾ %{privacy_policy_link} ਵੇਖੋ।
+      consider_pd_html: ਮੈਂ ਆਪਣੇ ਯੋਗਦਾਨਾਂ ਨੂੰ %{consider_pd_link} ਵਿੱਚ ਮੰਨਦਾ ਹਾਂ।
+      consider_pd: ਜਨਤਕ ਖੇਤਰ
+      or: ਜਾਂ
+      use external auth: ਜਾਂ ਕਿਸੇ ਤੀਜੀ ਧਿਰ ਨਾਲ ਦਾਖਲ ਹੋਵੋ
     terms:
       title: ਸ਼ਰਤਾਂ
       heading: ਸ਼ਰਤਾਂ
+      heading_ct: ਯੋਗਦਾਨੀ ਦੀਆਂ ਸ਼ਰਤਾਂ
+      read and accept with tou: ਕਿਰਪਾ ਕਰਕੇ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੇ ਸਮਝੌਤੇ ਅਤੇ ਵਰਤੋਂ ਦੀਆਂ
+        ਸ਼ਰਤਾਂ ਨੂੰ ਪਡ਼੍ਹੋ, ਜਦੋਂ ਪੂਰਾ ਹੋ ਜਾਵੇ ਤਾਂ ਦੋਵੇਂ ਡੱਬੀਆਂ ਤੇ ਨਿਸ਼ਾਨ ਲਾਵੋ ਅਤੇ ਫਿਰ
+        ਜਾਰੀ ਰੱਖੋ ਬਟਨ ਨੂੰ ਦਬਾਓ।
+      contributor_terms_explain: ਇਹ ਇਕਰਾਰਨਾਮਾ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਅਤੇ ਭਵਿੱਖ ਦੇ ਯੋਗਦਾਨਾਂ
+        ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਦਾ ਹੈ।
+      read_ct: ਮੈਂ ਉਪਰੋਕਤ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪਡ਼੍ਹਿਆ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਸਹਿਮਤ
+        ਹਾਂ।
+      read_tou: ਮੈਂ ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਪੜ੍ਹ ਲਿਆ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਸਹਿਮਤ ਹਾਂ
+      consider_pd: ਉਪਰੋਕਤ ਤੋਂ ਇਲਾਵਾ, ਮੈਂ ਆਪਣੇ ਯੋਗਦਾਨ ਨੂੰ ਜਨਤਕ ਖੇਤਰ ਵਿੱਚ ਮੰਨਦਾ ਹਾਂ
       consider_pd_why: ਇਹ ਕੀ ਹੈ?
+      guidance_info_html: 'ਇਹਨਾਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਜਾਣਕਾਰੀ: ਇੱਕ %{readable_summary_link}
+        ਅਤੇ ਕੁਝ %{informal_translations_link}'
+      readable_summary: ਮਨੁੱਖੀ ਪਡ਼੍ਹਨਯੋਗ ਸੰਖੇਪ
       informal_translations: ਗ਼ੈਰ-ਰਸਮੀ ਤਰਜਮਾ
+      continue: ਜਾਰੀ ਰੱਖੋ
       cancel: ਰੱਦ ਕਰੋ
+      you need to accept or decline: ਕਿਰਪਾ ਕਰਕੇ ਪਡ਼੍ਹੋ ਅਤੇ ਫਿਰ ਜਾਰੀ ਰੱਖਣ ਲਈ ਨਵੀਂ ਯੋਗਦਾਨ
+        ਦੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਜਾਂ ਅਸਵੀਕਾਰ ਕਰੋ।
       legale_select: 'ਆਪਣੀ ਰਿਹਾਇਸ਼ ਦਾ ਦੇਸ਼ ਚੁਣੋ:'
       legale_names:
         france: ਫ਼ਰਾਂਸ
         italy: ਇਟਲੀ
         rest_of_world: ਬਾਕੀ ਦੁਨੀਆਂ
+    terms_declined_flash:
+      terms_declined_html: ਸਾਨੂੰ ਅਫ਼ਸੋਸ ਹੈ ਕਿ ਤੁਸੀਂ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ
+        ਨੂੰ ਸਵੀਕਾਰ ਨਾ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕੀਤਾ ਹੈ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ %{terms_declined_link}
+        ਵੇਖੋ।
+      terms_declined_link: ਇਹ ਵਿਕੀ ਸਫ਼ਾ
     no_such_user:
       title: ਕੋਈ ਅਜਿਹਾ ਵਰਤੋਂਕਾਰ ਨਹੀਂ
+      heading: ਵਰਤੋਂਕਾਰ %{user} ਮੌਜੂਦ ਨਹੀਂ ਹੈ
+      body: ਮਾਫ਼ ਕਰਨਾ, %{user} ਨਾਂ ਦਾ ਕੋਈ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸ਼ਬਦ-ਜੋੜ
+        ਦੀ ਜਾਂਚ ਕਰੋ, ਜਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਲਿੱਕ ਕੀਤੀ ਗਈ ਕੜੀ ਗਲਤ ਹੈ।
+      deleted: ਮਿਟਾਇਆ ਹੋਇਆ
     show:
       my diary: ਮੇਰਾ ਰੋਜ਼ਨਾਮਚਾ
       my edits: ਮੇਰੀਆਂ ਸੋਧਾਂ
@@ -1182,8 +1854,9 @@ pa:
       my notes: ਮੇਰੇ ਨੋਟ
       my messages: ਮੇਰੇ ਸੁਨੇਹੇ
       my profile: ਮੇਰਾ ਖ਼ਾਕਾ
-      my settings: à¨®à©\87ਰà©\80à¨\86à¨\82 à¨¸à©\88à¨\9fਿੰà¨\97ਾਂ
+      my settings: à¨®à©\87ਰà©\80à¨\86à¨\82 à¨¤à¨°à¨\9cà©\80ਹਾਂ
       my comments: ਮੇਰੀਆਂ ਟਿੱਪਣੀਆਂ
+      my_preferences: ਮੇਰੀਆਂ ਤਰਜੀਹਾਂ
       blocks on me: ਮੇਰੇ ਉੱਤੇ ਰੋਕਾਂ
       blocks by me: ਮੇਰੇ ਵੱਲੋਂ ਰੋਕਾਂ
       send message: ਸੁਨੇਹਾ ਘੱਲੋ
@@ -1193,7 +1866,9 @@ pa:
       notes: ਨਕਸ਼ੇ ਦੇ ਨੋਟ
       remove as friend: ਯਾਰੀ ਤੋੜੋ
       add as friend: ਯਾਰੀ ਪਾਉ
-      mapper since: 'ਕਦੋਂ ਤੋਂ ਨਕਸ਼ਾਸਾਜ਼:'
+      mapper since: 'ਕਦੋਂ ਤੋਂ ਨਕਸ਼ਾ-ਨਵੀਸ਼:'
+      no activity yet: ਹਾਲੇ ਕੋਈ ਗਤੀਵਿਧੀ ਨਹੀਂ ਹੈ
+      uid: 'ਵਰਤੋਂਕਾਰ ਸ਼ਿਨਾਖਤ:'
       ct status: 'ਯੋਗਦਾਨੀ ਦੀਆਂ ਸ਼ਰਤਾਂ:'
       ct undecided: ਦੁਚਿੱਤੀ 'ਚ
       ct declined: ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ
@@ -1203,22 +1878,37 @@ pa:
       role:
         administrator: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਪ੍ਰਬੰਧਕ ਹੈ।
         moderator: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਵਿਚੋਲਾ ਹੈ।
+        importer: ਇਹ ਵਰਤੋਂਕਾਰ ਇੱਕ ਦਰਾਮਦਕਾਰ ਹੈ
         grant:
           administrator: ਪ੍ਰਬੰਧਕੀ ਹੱਕ ਦਿਓ
           moderator: ਵਿਚੋਲਗੀ ਦੇ ਹੱਕ ਦਿਉ
+          importer: ਦਰਾਮਦਕਾਰ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰੋ
+        revoke:
+          administrator: ਪ੍ਰਬੰਧਕੀ ਪਹੁੰਚ ਰੱਦ ਕਰੋ
+          importer: ਦਰਾਮਦਕਾਰ ਪਹੁੰਚ ਰੱਦ ਕਰੋ
       comments: ਟਿੱਪਣੀਆਂ
       create_block: ਇਸ ਵਰਤੋਂਕਾਰ 'ਤੇ ਰੋਕ ਲਾਉ
       activate_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ
-      confirm_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਤਸਦੀਕ ਕਰੋ
+      confirm_user: ਇਸ ਵਰਤੋਂਕਾਰ ਦੀ ਤਸਦੀਕ ਕਰੋ
+      unsuspend_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮੁਅੱਤਲ ਨਾ ਕਰੋ
       hide_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਲੁਕਾਉ
       unhide_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮੁੜ-ਵਿਖਾਓ
       delete_user: ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਉ
       confirm: ਤਸਦੀਕ ਕਰੋ
+      report: ਇਸ ਵਰਤੋਂਕਾਰ ਦੀ ਇਤਲਾਹ ਦਿਓ
+    go_public:
+      flash success: ਤੁਹਾਡੇ ਸਾਰੇ ਸੋਧ ਹੁਣ ਜਨਤਕ ਹਨ, ਅਤੇ ਤੁਹਾਨੂੰ ਹੁਣ ਸੋਧ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ
+        ਹੈ।
     index:
       title: ਵਰਤੋਂਕਾਰ
       heading: ਵਰਤੋਂਕਾਰ
+      summary_html: '%{date} ਨੂੰ %{ip_address} ਤੋਂ %{name} ਬਣਾਇਆ ਗਿਆ'
+      summary_no_ip_html: '%{name} ਨੂੰ %{date} ਨੂੰ ਬਣਾਇਆ ਗਿਆ'
       empty: ਕੋਈ ਮੇਲ ਖਾਂਦੇ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਲੱਭੇ
     page:
+      found_users:
+        one: '%{count} ਵਰਤੋਂਕਾਰ ਲੱਭੇ'
+        other: '%{count} ਵਰਤੋਂਕਾਰ ਲੱਭੇ'
       confirm: ਚੁਣੇ ਹੋਏ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਤਸਦੀਕ ਕਰੋ
       hide: ਚੁਣੇ ਹੋਏ ਵਰਤੋਂਕਾਰ ਲੁਕਾਉ
     suspended:
@@ -1227,14 +1917,32 @@ pa:
   user_blocks:
     not_found:
       back: ਤਤਕਰੇ ਵੱਲ ਵਾਪਸ
+    edit:
+      revoke: ਪਾਬੰਦੀਆਂ ਨੂੰ ਰੱਦ ਕਰੋ
     update:
       success: ਰੋਕ ਨਵਿਆਈ ਗਈ।
+    revoke_all:
+      revoke: ਪਰਤਾਉ!
     helper:
       block_duration:
         hours:
           one: '%{count} ਘੰਟਾ'
           other: '%{count} ਘੰਟੇ'
+        days:
+          one: '%{count} ਦਿਨ'
+          other: '%{count} ਦਿਨਾਂ'
+        weeks:
+          one: '%{count} ਹਫ਼ਤਾ'
+          other: '%{count} ਹਫ਼ਤੇ'
+        months:
+          one: '%{count} ਮਹੀਨਾ'
+          other: '%{count} ਮਹੀਨੇ'
+        years:
+          one: '%{count} ਸਾਲ'
+          other: '%{count} ਸਾਲ'
     show:
+      created: 'ਬਣਾਇਆ ਗਿਆ:'
+      duration: 'ਮਿਆਦ:'
       status: ਹਾਲਾਤ
       edit: ਸੋਧੋ
       reason: 'ਰੋਕ ਦਾ ਕਾਰਨ:'
@@ -1247,8 +1955,16 @@ pa:
       creator_name: ਸਿਰਜਣਹਾਰ
       reason: ਰੋਕ ਦਾ ਕਾਰਨ
       status: ਦਰਜਾ
+  user_mutes:
+    index:
+      table:
+        thead:
+          actions: ਕਾਰਵਾਈਆਂ
+        tbody:
+          send_message: ਸੁਨੇਹਾ ਘੱਲੋ
   notes:
     index:
+      id: ਸ਼ਿਨਾਖਤ
       creator: ਸਿਰਜਣਹਾਰ
       description: ਵੇਰਵਾ
       created_at: ਕਦੋਂ ਸਿਰਜਿਆ ਗਿਆ
@@ -1259,9 +1975,12 @@ pa:
       hide: ਉਹਲੇ ਕਰੋ
       resolve: ਹੱਲ਼ ਕੱਢੋ
       reactivate: ਮੁੜ ਚਾਲੂ ਕਰੋ
+      comment_and_resolve: ਟਿੱਪਣੀ ਕਰੋ ਅਤੇ ਹੱਲ ਕਰੋ
       comment: ਟਿੱਪਣੀ ਕਰੋ
     new:
       title: ਨਵੀੰ ਟਿੱਪਣੀ
+      anonymous_warning_log_in: ਦਾਖ਼ਲ ਹੋਵੋ
+      anonymous_warning_sign_up: ਖਾਤਾ ਬਣਾਓ
       add: ਟਿੱਪਣੀ ਜੋੜੋ
     notes_paging_nav:
       showing_page: ਸਫ਼ਾ %{page}
@@ -1282,6 +2001,8 @@ pa:
       download: ਉਤਾਰੋ
       short_url: ਨਿੱਕਾ ਯੂ.ਆਰ.ਐੱਲ.
       view_larger_map: ਵਡੇਰਾ ਨਕਸ਼ਾ ਵੇਖੋ
+    embed:
+      report_problem: ਸਮੱਸਿਆ ਦੀ ਇਤਲਾਹ ਦਿਓ
     key:
       title: ਨਕਸ਼ੇ ਦਾ ਟੀਕਾ
       tooltip: ਨਕਸ਼ੇ ਦਾ ਟੀਕਾ
@@ -1300,13 +2021,82 @@ pa:
         header: ਨਕਸ਼ੇ ਦੀਆਂ ਤਹਿਆਂ
         notes: ਨਕਸ਼ੇ ਦੇ ਨੋਟ
         data: ਨਕਸ਼ੇ ਦੀ ਸਮੱਗਰੀ
+        gps: ਜਨਤਕ GPS ਖੁਰਾ-ਖੋਜ
         title: ਤਹਿਆਂ
+      make_a_donation: ਦਾਨ ਦਿਉ
     site:
       edit_tooltip: ਨਕਸ਼ਾ ਸੋਧੋ
       edit_disabled_tooltip: ਨਕਸ਼ਾ ਸੋਧਣ ਵਾਸਤੇ ਅੰਦਰ ਨੂੰ ਜਾਉ
       createnote_tooltip: ਨਕਸ਼ੇ 'ਤੇ ਕੋਈ ਨੋਟ ਜੋੜੋ
       createnote_disabled_tooltip: ਨਕਸ਼ੇ 'ਤੇ ਕੋਈ ਨੋਟ ਜੋੜਨ ਵਾਸਤੇ ਅੰਦਰ ਨੂੰ ਜਾਉ
+    directions:
+      ascend: ਚਡ਼੍ਹਾਈ
+      engines:
+        fossgis_osrm_bike: ਸੈਕਲ (OSRM)
+        fossgis_osrm_car: ਕਾਰ (OSRM)
+        fossgis_osrm_foot: ਪੈਦਲ (OSRM)
+        graphhopper_bicycle: ਸੈਕਲ (GraphHopper)
+      distance: ਵਾਟ
+      distance_m: '%{distance}ਮੀਟਰ'
+      distance_km: '%{distance}ਕਿਲੋਮੀਟਰ'
+      errors:
+        no_place: ਮਾਫ਼ ਕਰਨਾ - '%{place}' ਨੂੰ ਲੱਭ ਨਹੀਂ ਸਕਿਆ।
+      instructions:
+        continue_without_exit: '%{name} ''ਤੇ ਚੱਲੀ-ਚੱਲੋ'
+        slight_right_without_exit: '%{name} ਉੱਤੇ ਥੋੜ੍ਹਾ ਜਿਹਾ ਸੱਜੇ ਪਾਸੇ'
+        onramp_right_without_directions: ਢਲਾਣਦਾਰ-ਰਾਹ ਉੱਤੇ ਸੱਜੇ ਮੁੜੋ
+        onramp_right: ਢਲਾਣਦਾਰ-ਰਾਹ ਉੱਤੇ ਸੱਜੇ ਮੁੜੋ
+        merge_right_without_exit: '%{name} ਉੱਤੇ ਸੱਜੇ ਪਾਸੇ ਰਲੋ'
+        fork_right_without_exit: ਦੋਸੜਕੇ 'ਤੇ %{name} ਵਲ ਸੱਜੇ ਪਾਸੇ ਮੁਡ਼ੋ
+        turn_right_without_exit: '%{name} ਉੱਤੇ ਸੱਜੇ ਮੁੜੋ'
+        turn_left_without_exit: '%{name} ਵੱਲ ਖੱਬੇ ਮੁੜੋ'
+        offramp_left_with_exit: ਖੱਬੇ ਪਾਸੇ %{exit} ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ
+        offramp_left_with_name: '%{name} ਉੱਤੇ ਖੱਬੇ ਪਾਸੇ ਢਲਾਣਦਾਰ-ਰਾਹ ਲਵੋ'
+        offramp_left_with_directions: '%{directions} ਵੱਲ ਖੱਬੇ ਪਾਸੇ ਢਲਾਣਦਾਰ-ਰਾਹ ਲਵੋ'
+        onramp_left_without_directions: ਢਲਾਣਦਾਰ-ਰਾਹ ਉੱਤੇ ਖੱਬੇ ਪਾਸੇ ਮੁਡ਼ੋ
+        onramp_left: ਢਲਾਣਦਾਰ-ਰਾਹ ਉੱਤੇ ਖੱਬੇ ਪਾਸੇ ਮੁੜੋ
+        endofroad_left_without_exit: ਸੜਕ ਦੇ ਅਖੀਰ ਵਿੱਚ %{name} ਵੱਲ ਖੱਬੇ ਮੁੜੋ
+        merge_left_without_exit: '%{name} ਉੱਤੇ ਖੱਬੇ ਪਾਸੇ ਰਲੋ'
+        fork_left_without_exit: ਦੋਸੜਕੇ 'ਤੇ %{name}' ਤੇ ਖੱਬੇ ਪਾਸੇ ਮੁਡ਼ੋ
+        slight_left_without_exit: '%{name} ਉੱਤੇ ਥੋੜ੍ਹਾ ਜਿਹਾ ਖੱਬੇ ਪਾਸੇ'
+        follow_without_exit: '%{name} ਦੇ ਨਾਲ ਚੱਲੀ-ਚੱਲੋ'
+        roundabout_without_exit: ਗੋਲ ਚੱਕਰ 'ਤੋਂ ਨਿਕਲ ਕੇ %{name} ਉੱਤੇ ਜਾਓ
+        leave_roundabout_without_exit: ਗੋਲ ਚੱਕਰ-%{name} ਛੱਡੋ
+        stay_roundabout_without_exit: ਗੋਲ ਚੱਕਰ - %{name} 'ਤੇ ਰਹੋ
+        start_without_exit: '%{name} ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ'
+        destination_without_exit: ਟਿਕਾਣਾ 'ਤੇ ਪਹੁੰਚ ਗਏ।
+        end_oneway_without_exit: '%{name} ''ਤੇ ਇੱਕ-ਤਰਫਾ ਰਾਹ ਦੀ ਸਮਾਪਤੀ'
+        roundabout_with_exit: ਗੋਲ ਚੱਕਰ 'ਤੋਂ %{exit} ਨਿਕਲ ਕੇ %{name} ਉੱਤੇ ਜਾਓ
+        roundabout_with_exit_ordinal: ਗੋਲ ਚੱਕਰ 'ਤੋਂ %{exit} ਕੱਢ ਕੇ %{name} ਉੱਤੇ ਜਾਓ
+        exit_roundabout: ਗੋਲ ਚੱਕਰ ਤੋਂ %{name} ਉੱਤੇ ਬਾਹਰ ਨਿਕਲੋ
+        unnamed: ਅਣਜਾਣ ਸਡ਼ਕ
+        exit_counts:
+          first: ਪਹਿਲਾ
+          second: ਦੂਜਾ
+          third: ਤੀਜਾ
+          fourth: ਚੌਥਾ
+          fifth: 5ਵਾਂ(ਪੰਜਵਾਂ)
+          sixth: 6ਵਾਂ(ਛੇਵਾਂ)
+          seventh: 7ਵਾਂ(ਸੱਤਵਾਂ)
+          eighth: 8ਵਾਂ(ਅੱਠਵਾਂ)
+          ninth: 9ਵਾਂ(ਨੌਵਾਂ)
+          tenth: 10ਵਾਂ(ਦਸਵਾਂ)
+      time: ਵਕਤ
+    query:
+      way: ਰਾਹ
+      error: '%{server} ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਵਿੱਚ ਗਲਤੀ: %{error}'
+    context:
+      show_address: ਪਤਾ ਦਿਖਾਓ
+      query_features: ਪੁੱਛਗਿੱਛ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ
+      centre_map: ਨਕਸ਼ੇ ਦਾ ਕੇਂਦਰ ਇੱਥੇ
   redactions:
     show:
+      description: 'ਵੇਰਵਾ:'
+      user: ਸਿਰਜਣਹਾਰ
       confirm: ਕੀ ਤੁਹਾਨੂੰ ਯਕੀਨ ਹੈ?
+    update:
+      flash: ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੀਆਂ ਗਈਆਂ ਹਨ।
+  validations:
+    invalid_characters: ਗਲਤ ਅੱਖਰ ਸ਼ਾਮਲ ਹਨ
+    url_characters: ਖਾਸ URL ਅੱਖਰ (%{characters}) ਸ਼ਾਮਲ ਹਨ
 ...
index 9a023e2dded9bd50ae7be957fbef6102165775e0..9350e4ee5a4151e5b9c1fc7d0c32ace2c61f6174 100644 (file)
@@ -2,6 +2,7 @@
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: Alesaru
+# Author: Alextranslate
 # Author: Andreyyshore
 # Author: Buraddo
 # Author: C1pr1an
@@ -57,6 +58,13 @@ ro:
         create: Creați blocare
         update: Actualizează blocare
   activerecord:
+    errors:
+      messages:
+        display_name_is_user_n: nu poate fi user_n, decât dacă n este ID-ul utilizatorului
+          tău
+      models:
+        user_mute:
+          is_already_muted: este deja lipsit de drept de vorbire
     models:
       acl: Lista de control al accesului
       changeset: Set de modificări
@@ -476,8 +484,14 @@ ro:
         created: Creat
         closed: Închis
         belongs_to: Autor
+    subscribe:
+      button: Abonează-te la discuție
+    unsubscribe:
+      button: Dezabonează-te de la discuție
     show:
       title: 'Set de modificări: %{id}'
+      created: 'Creat: %{when}'
+      closed: 'Închis: %{when}'
       created_ago_html: Creat %{time_ago}
       closed_ago_html: Închis %{time_ago}
       created_ago_by_html: Creat %{time_ago} de %{user}
@@ -552,6 +566,9 @@ ro:
     show:
       title: Jurnalul utilizatorului %{user} | %{title}
       user_title: Jurnalul utilizatorului %{user}
+      discussion: Discuție
+      subscribe: Abonează-te
+      unsubscribe: Dezabonează-te
       leave_a_comment: Adaugă un comentariu
       login_to_leave_a_comment_html: '%{login_link} este necesară pentru a comenta'
       login: Autentificare
@@ -595,6 +612,12 @@ ro:
       all:
         title: Înregistrări în jurnalul OpenStreetMap
         description: Înregistrări recente în jurnale de la utilizatorii OpenStreetMap
+    subscribe:
+      heading: Te abonezi la următoarea discuție de intrare a jurnalului?
+      button: Abonează-te la discuție
+    unsubscribe:
+      heading: Te dezabonezi de la următoarea discuție de intrare a jurnalului?
+      button: Dezabonează-te de la discuție
   diary_comments:
     index:
       title: Comentarii din jurnal adăugate de %{user}
@@ -605,6 +628,8 @@ ro:
       post: Postează
       when: Când
       comment: Comentariu
+    new:
+      heading: Adaugi un comentariu la următoarea discuție de intrare a jurnalului?
   doorkeeper:
     errors:
       messages:
@@ -643,6 +668,9 @@ ro:
       contact_the_community_html: Simțiți-vă liber să %{contact_link} comunitatea
         OpenStreetMap dacă ați găsit un link invalid/o eroare. Notați adresa URL exactă
         a solicitării dvs.
+    bad_request:
+      description: Cererea pe care ați făcut-o pe serverul OpenStreetMap nu este validă.
+        (HTTP 400)
     forbidden:
       title: Interzis
       description: Operația pe care ați solicitat-o pe serverul OpenStreetMap este
@@ -698,7 +726,7 @@ ro:
           parking_position: Poziția de parcare
           runway: Pistă
           taxilane: Banda de taxi
-          taxiway: Pistă de manevră
+          taxiway: Pistă de taxi avioane
           terminal: Terminal Aeroport
           windsock: Con de vânt
         amenity:
@@ -836,6 +864,7 @@ ro:
           college: Clădire Colegiu
           commercial: Clădire comercială
           construction: Clădire în construcție
+          cowshed: Fermă de vaci
           detached: Casă decomandată
           dormitory: Dormitor
           duplex: Casă duplex
@@ -865,6 +894,7 @@ ro:
           shed: Șură
           stable: Grajd
           static_caravan: Rulotă
+          sty: Cocină
           temple: Clădire templu
           terrace: Case înșiruite
           train_station: Gară
@@ -1463,6 +1493,7 @@ ro:
     page:
       user_not_found: Utilizatorul nu exista
       issues_not_found: Nu au fost găsite astfel de probleme
+      reported_user: Utilizator raportat
       status: Stare
       reports: Rapoarte
       last_updated: Ultima actualizare
@@ -1472,6 +1503,10 @@ ro:
         few: '%{count} Raporturi'
         other: ""
       reported_item: Articol raportat
+      states:
+        ignored: Ignorat
+        open: Deschis
+        resolved: Rezolvat
     show:
       title: '%{status} Problema #%{issue_id}'
       reports:
@@ -1564,13 +1599,17 @@ ro:
     intro_header: Bine ați venit la OpenStreetMap!
     intro_text: OpenStreetMap este o hartă a lumii, creată de oameni ca tine și liberă
       pentru utilizare sub o licență deschisă.
+    hosting_partners_2024_html: Găzduirea este susținută de %{fastly}, %{corpmembers},
+      și alți %{partners}.
     partners_fastly: Fastly
+    partners_corpmembers: Membrii corporați ai OSMF
     partners_partners: parteneri
     tou: Termeni de Utilizare
     osm_offline: Baza de date OpenStreetMap este în prezent offline, în timp ce se
       efectuează lucrări esențiale de întreținere a bazelor de date.
     osm_read_only: Baza de date OpenStreetMap este în prezent în modul read-only,
       în timp ce se efectuează lucrări de întreținere a bazei de date.
+    nothing_to_preview: Nimic de previzualizat.
     help: Ajutor
     about: Despre
     copyright: Drepturi de autor
@@ -1579,6 +1618,7 @@ ro:
     more: Mai multe
   user_mailer:
     diary_comment_notification:
+      description: 'Intrare Jurnal OpenStreetMap #%{id}'
       subject: '[OpenStreetMap] %{user} a comentat o intrare în jurnal'
       hi: Salut %{to_user},
       header: '%{from_user} a comentat intrarea jurnalului OpenStreetMap cu subiectul
@@ -1589,6 +1629,8 @@ ro:
         la %{commenturl} sau să răspundeți la %{replyurl}
       footer_html: De asemenea, puteți citi comentariul la %{readurl} și puteți comenta
         la %{commenturl} sau să trimiteți un mesaj autorului la %{replyurl}
+      footer_unsubscribe: Te poți dezabona de la discuție la %{unsubscribeurl}
+      footer_unsubscribe_html: Te poți dezabona de la discuție la %{unsubscribeurl}
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Salut, %{to_user},
@@ -1652,6 +1694,7 @@ ro:
       click_the_link: Dacă sunteți dumneavoastră, vă rugăm să faceți click pe linkul
         de mai jos pentru a vă reseta parola.
     note_comment_notification:
+      description: 'Notă OpenStreetMap #%{id}'
       anonymous: Un utilizator anonim
       greeting: Salut,
       commented:
@@ -1686,8 +1729,8 @@ ro:
           Nota este aproape de %{place}.'
         commented_note_html: '%{commenter} a reactivat o notă de hartă pe care ați
           comentat-o. Nota este aproape de %{place}.'
-      details: Mai multe detalii despre notă pot fi găsite la adresa %{url}.
-      details_html: Mai multe detalii despre notă pot fi găsite la %{url}.
+      details: Răspunde sau găsește mai multe detalii despre notă la adresa %{url}.
+      details_html: Răspunde sau găsește mai multe detalii despre notă la adresa %{url}.
     changeset_comment_notification:
       hi: Salut %{to_user},
       commented:
@@ -1767,6 +1810,7 @@ ro:
       unread_button: Marchează ca necitit
       read_button: Marchează ca citit
       destroy_button: Șterge
+      unmute_button: Mută în Primite
     new:
       title: Trimite mesajul
       send_message_to_html: Trimiteți un mesaj nou către %{name}
@@ -1805,9 +1849,13 @@ ro:
     heading:
       my_inbox: Mesaje primite
       my_outbox: Mesaje trimise
+      muted_messages: Mesaje muted
     mark:
       as_read: Mesaj marcat ca fiind citit
       as_unread: Mesaj marcat ca necitit
+    unmute:
+      notice: Mesajul a fost mutat în Primite
+      error: Mesajul nu a putut fi mutat în Primite
     destroy:
       destroyed: Mesaj șters
   passwords:
@@ -1818,6 +1866,10 @@ ro:
       new password button: Resetare parolă
       help_text: Introduceți adresa de e-mail pe care ați utilizat-o pentru a vă înscrie,
         vom trimite un link la aceasta pe care îl puteți utiliza pentru a reseta parola.
+    create:
+      send_paranoid_instructions: Dacă adresa dvs. de e-mail există în baza noastră
+        de date, veți primi un link de recuperare a parolei la adresa dvs. de e-mail
+        în câteva minute.
     edit:
       title: Resetare parolă
       heading: Resetați parola pentru %{user}
@@ -1869,12 +1921,14 @@ ro:
   sessions:
     new:
       tab_title: Autentificare
+      login_to_authorize_html: Autentifică-te în OpenStreetMap pentru a accesa %{client_app_name}.
       email or username: 'Adresa de e-mail sau numele de utilizator:'
       password: 'Parolă:'
       remember: Ține-mă minte
       lost password link: Parolă pierdută/uitată?
       login_button: Autentificare
-      with external: 'Alternativ, utilizați o terță parte pentru a vă conecta:'
+      with external: 'sau utilizați o terță parte pentru a vă conecta:'
+      or: sau
       auth failure: Ne pare rău, nu v-am putut conecta la aceste detalii.
     destroy:
       title: Ieșire
@@ -1904,6 +1958,7 @@ ro:
     richtext_field:
       edit: Editează
       preview: Previzualizare
+      help: Ajutor
     pagination:
       diary_comments:
         older: Comentarii mai vechi
@@ -1911,9 +1966,15 @@ ro:
       diary_entries:
         older: Înregistrări mai vechi
         newer: Înregistrări mai noi
+      issues:
+        older: Probleme mai vechi
+        newer: Probleme noi
       traces:
         older: Urme mai vechi
         newer: Urme mai noi
+      users:
+        older: Utilizatori mai vechi
+        newer: Utilizatori noi
   site:
     about:
       heading_html: '%{copyright}OpenStreetMap %{br} contributori'
@@ -2061,6 +2122,8 @@ ro:
           Resources Canada) și StatCan (Divizia de Geografie,
           Statistics Canada).
         contributors_ca_canada: Canada
+        contributors_cz_credit_html: '%{czechia}: Conține date de la Administrația
+          Statală de Recensământ a Pământului și Cadastru, licențiată sub %{cc_licence_link}'
         contributors_cz_czechia: Cehia
         contributors_cz_cc_licence: Creative Commons Attribution 4.0 International
           licence (CC BY 4.0)
@@ -2074,6 +2137,9 @@ ro:
           %{france}: Conține date provenite din
           Direction Générale des Impôts.
         contributors_fr_france: Franța
+        contributors_hr_croatia: Croația
+        contributors_hr_dgu: Administrația Statală Geodetică a Croației
+        contributors_hr_open_data_portal: Portalul Național de Date Libere
         contributors_nl_credit_html: '%{netherlands}: Conține &copy; AND data, 2007
           (%{and_link})'
         contributors_nl_netherlands: Țările de Jos
@@ -2281,20 +2347,24 @@ ro:
           cycleway_national: Rețeaua națională de ciclism
           cycleway_regional: Rețeaua regională de ciclism
           cycleway_local: Rețeaua locală de ciclism
+          cycleway_mtb: Rută pentru biciclete de munte
           footway: Trotuar
           rail: Cale ferată
           train: Tren
           subway: Stație de metrou
           ferry: Feribot
+          light_rail: Metrou
           tram: Tramvai
           trolleybus: Troleibuz
           bus: Autobuz
           cable_car: Telecabină
           chair_lift: Telescaun
           runway: Pistă de Aeroport
-          taxiway: taxiway
+          taxiway: Pistă de taxi avioane
           apron: Aeronavă
           admin: Graniță administrativă
+          capital: Capitală
+          city: Oraș
           orchard: Livadă
           vineyard: Podgorie
           forest: Pădure
@@ -2324,6 +2394,7 @@ ro:
           allotments: Repartizările
           pitch: Teren de sport
           centre: Centru de sport
+          beach: Plajă
           reserve: Rezervație naturală
           military: Zonă militară
           school: School; university
@@ -2331,6 +2402,9 @@ ro:
           hospital: Spital
           building: Clădire importantă
           station: Gară
+          railway_halt: Haltă
+          subway_station: Stație metrou
+          tram_stop: Stație tramvai
           summit: Vârf de munte
           peak: Vârf
           tunnel: Dashed casing = tunel
@@ -2340,7 +2414,9 @@ ro:
           construction: Drumuri în construcție
           bus_stop: Stație de autobuz
           bicycle_shop: Magazin de biciclete
+          bicycle_rental: Închiriere biciclete
           bicycle_parking: Parcare pentru biciclete
+          bicycle_parking_small: Parcare mică pentru biciclete
           toilets: Toalete
     welcome:
       title: Bun-venit!
@@ -2533,8 +2609,9 @@ ro:
       oauth2_applications: Aplicații OAuth 2
       oauth2_authorizations: Autorizări OAuth 2
     auth_providers:
+      openid_login_button: Continuă
       openid:
-        title: Login with OpenID
+        title: Autentificare cu OpenID
         alt: Conectați-vă cu un URL OpenID
       google:
         title: Autentificare cu Google
@@ -2566,6 +2643,8 @@ ro:
       write_redactions: Redactați datele hărții
       read_email: Citiți adresa de e-mail a utilizatorului
       skip_authorization: Aprobare automată a cererii
+    for_roles:
+      moderator: Această permisiune este pentru acțiuni valabile exclusiv pentru moderatori
   oauth2_applications:
     index:
       title: Aplicațiile mele client
@@ -2611,6 +2690,7 @@ ro:
       title: Aplicațiile mele autorizate
       application: Aplicație
       permissions: Permisiuni
+      last_authorized: Ultima autorizare
       no_applications_html: Nu ați autorizat încă nicio aplicație %{oauth2}.
     application:
       revoke: Revocă accesul
@@ -2618,6 +2698,8 @@ ro:
   users:
     new:
       title: Înregistrare
+      tab_title: Înregistrare
+      signup_to_authorize_html: Autentifică-te cu OpenStreetMap pentru a accesa %{client_app_name}.
       no_auto_account_create: Din păcate, în prezent nu putem crea automat un cont
         pentru dvs.
       please_contact_support_html: Vă rugăm să contactați %{support_link} pentru a
@@ -2631,6 +2713,7 @@ ro:
           să descarce și să folosească.
         paragraph_2: Înscrie-te pentru a începe să contribui. Vă vom trimite un e-mail
           pentru a vă confirma contul.
+        welcome: Bun venit la OpenStreetMap
       display name description: Numele dvs. de utilizator afișat public. Puteți schimba
         acest lucru mai târziu în preferințe.
       by_signing_up:
@@ -2665,6 +2748,7 @@ ro:
       readable_summary: rezumat care poate fi citit de om
       informal_translations: traduceri informale
       continue: Continuă
+      cancel: Anulează
       you need to accept or decline: Citiți și apoi acceptați sau refuzați continuarea
         noilor Termeni de contribuire.
       legale_select: 'Țara de reședință:'
@@ -2704,6 +2788,8 @@ ro:
       remove as friend: Scoate din lista de prieteni
       add as friend: Adaugă Prieten
       mapper since: 'Cartograf din:'
+      last map edit: 'Ultima editare a hărții:'
+      no activity yet: Nicio activitate încă
       uid: 'ID-ul de utilizator:'
       ct status: 'Termenii colaboratorului:'
       ct undecided: Nedefinit
@@ -2928,6 +3014,8 @@ ro:
       add: Adaugă notație
     notes_paging_nav:
       showing_page: Pagina %{page}
+      next: Următorul
+      previous: Anterior
   javascripts:
     close: Închide
     share:
index 2d324e012e1aa34ce9d995ced25bcbf28cda57fc..8b2df06a290b817ea684251f41300db910eb5df5 100644 (file)
@@ -1775,10 +1775,10 @@ ru:
       befriend_them: Вы также можете добавить их в качестве друзей в %{befriendurl}.
       befriend_them_html: Вы также можете добавить их в качестве друзей в %{befriendurl}.
     gpx_description:
-      description_with_tags_html: 'Похоже, ваш файл GPX %{trace_name} с описанием
+      description_with_tags_html: 'Похоже, ваш файл файл %{trace_name} с описанием
         %{trace_description} и следующими тегами: %{tags}'
-      description_with_no_tags_html: Похоже, ваш файл GPX %{trace_name} с описанием
-        %{trace_description} и без тегов
+      description_with_no_tags_html: Похоже, ваш файл %{trace_name} с описанием %{trace_description}
+        и без тегов
     gpx_failure:
       hi: Здравствуйте, %{to_user},
       failed_to_import: 'сбой импорта. Произошла ошибка:'
@@ -2905,10 +2905,10 @@ ru:
       not_revoke_admin_current_user: Невозможно отозвать роль отозвать администратора
         у текущего пользователя.
     grant:
-      are_you_sure: Вы уверены, что хотите присвоить роль «%{role}» пользователю «%{name}»?
+      are_you_sure: Вы уверены, что хотите присвоить роль '%{role}' пользователю '%{name}'?
     revoke:
-      are_you_sure: Вы уверены, что хотите отозвать роль «%{role}» у пользователя
-        «%{name}»?
+      are_you_sure: Вы уверены, что хотите отозвать роль '%{role}' у пользователя
+        '%{name}'?
   user_blocks:
     model:
       non_moderator_update: Нужно быть модератором, чтобы создать или изменить блокировку.
@@ -2948,6 +2948,8 @@ ru:
       block_duration:
         hours:
           one: 1 час
+          few: '%{count} часа'
+          many: '%{count} часов'
           other: '%{count} час.'
         days:
           one: 1 день
index 955d9a7fadd74c2238b0adabb1915e8ff50d4cdd..effa017924c693e6c05e38ffd90f1f799441f3e7 100644 (file)
@@ -1590,8 +1590,8 @@ sc:
       befriend_them: Lu podes fintzas annànghere comente amigu in %{befriendurl}.
       befriend_them_html: Lu podes fintzas annànghere comente amigu in %{befriendurl}.
     gpx_description:
-      description_with_tags_html: 'Paret s''archìviu GPX tuo %{trace_name} cun sa
-        descritzione %{trace_description} e sas etichetas chi sighint: %{tags}'
+      description_with_tags_html: 'Paret s''archìviu tuo %{trace_name} cun sa descritzione
+        %{trace_description} e sas etichetas chi sighint: %{tags}'
       description_with_no_tags_html: Paret s'archìviu GPX tuo %{trace_name} cun sa
         descritzione %{trace_description} e chene etichetas
     gpx_failure:
@@ -1797,7 +1797,7 @@ sc:
     new:
       title: Crae de intrada pèrdida
       heading: Ais ismentigadu sa crae de intrada?
-      email address: 'Indiritzu de posta eletrònica:'
+      email address: Indiritzu de posta eletrònica
       new password button: Riprìstina sa crae de intrada
       help_text: Inserta s'indiritzu de posta chi as impreadu pro ti registrare, l'amus
         a imbiare unu ligàmene chi as a pòdere impreare pro ripristinare sa crae de
@@ -1853,12 +1853,12 @@ sc:
   sessions:
     new:
       tab_title: Intra
-      email or username: 'Indiritzu de posta o nùmene de utente:'
-      password: 'Crae:'
+      email or username: Indiritzu de posta o nùmene de utente
+      password: Crae
       remember: Ammenta·ti de mene
       lost password link: Ais pèrdidu sa crae de intrada tua?
       login_button: Intra
-      with external: 'In alternativa, intra impreende unu servìtziu esternu:'
+      with external: o intra impreende unu servìtziu esternu
       auth failure: Non podes intrare cun custos detàllios.
     destroy:
       title: Essi
@@ -2267,44 +2267,61 @@ sc:
           cycleway_local: Pista tziclàbile locale
           footway: Caminu pro pedones
           rail: Ferrovia
+          train: Trenu
           subway: Metropolitana
+          light_rail: Trenu lèbiu/metropolitana lèbia
+          tram: Tram
+          bus: Postale
           cable_car: Funivia
-          chair_lift: ascensore carrotzina
+          chair_lift: Ascensore carrutzina
           runway: Pista de aeroportu
           taxiway: carrera de furriada
           apron: Àrea de parchègiu de sos aèreos
           admin: Làcana amministrativa
+          capital: Capitale
+          city: Tzitade
+          vineyard: Bìngia
           forest: Litu
           wood: Buscu
+          farmland: Terras de coltivu
+          grass: Erba
+          meadow: Pradu
+          bare_rock: Roca nuda
+          sand: Arena
           golf: Campu de golf
           park: Parcu
           common: Comunu
+          built_up: Zona fraigada
           resident: Àrea de residèntzia
           retail: Àrea cummertziale
           industrial: Àrea industriale
           commercial: Àrea cummertziale
           heathland: Istruvina
           lake: Lagu
-          reservoir: riserva de abba
+          reservoir: Riserva de abba
           farm: Fatoria
           brownfield: Terrinu industriale abbandonadu
           cemetery: Campusantu
           allotments: Giardinos familiares
           pitch: Campu isportivu
           centre: Tzentru isportivu
+          beach: Marina
           reserve: Reserva naturale
           military: Zona militare
           school: Iscola
-          university: universidade
+          university: Universidade
+          hospital: Ispidale
           building: Edifìtziu significativu
           station: Istatzione ferroviària
+          tram_stop: Firmada de su tram
           summit: Cùcuru de monte
-          peak: cùcuru
+          peak: Cùcuru
           tunnel: Lìnia trategiada = galleria
           bridge: Oros nieddos = ponte
           private: Atzessu privadu
           destination: Atzessu pro sa destinatzione
           construction: Caminos in costrutzione
+          bus_stop: Firmada de su postale
           bicycle_shop: Butega de bitzicletas
           bicycle_parking: Parchègiu pro bitzicletas
           toilets: Còmodu
@@ -2505,24 +2522,26 @@ sc:
       oauth2_applications: Aplicatziones OAuth 2
       oauth2_authorizations: Autorizatziones OAuth 2
     auth_providers:
+      openid_url: URL OpenID
+      openid_login_button: Sighi
       openid:
         title: Intra cun OpenID
-        alt: Intra cun un'URL de OpenID
+        alt: Logotipu de OpenID
       google:
         title: Intra cun Google
-        alt: Intra cun un'OpenID de Google
+        alt: Logotipu de Google
       facebook:
         title: Intra cun Facebook
-        alt: Intra cun unu contu de Facebook
+        alt: Logotipu de Facebook
       microsoft:
         title: Intra cun Microsoft
-        alt: Intra cun unu contu de Microsoft
+        alt: Logotipu de Microsoft
       github:
         title: Intra cun GitHub
-        alt: Intra cun unu contu de GitHub
+        alt: Logotipu de GitHub
       wikipedia:
         title: Intra cun Wikipedia
-        alt: Intra cun unu contu de Wikipedia
+        alt: Logotipu de Wikipedia
   oauth:
     permissions:
       missing: No as cuntzèdidu s'atzessu a custa caraterìstica  a s'aplicatzione
@@ -2582,6 +2601,7 @@ sc:
       title: Sas aplicatziones autorizadas meas
       application: Aplicatzione
       permissions: Permissos
+      last_authorized: Ùrtima autorizatzione
       no_applications_html: No as galu autorizadu peruna aplicatzione %{oauth2}.
     application:
       revoke: Rèvoca s'atzessu
@@ -2589,6 +2609,8 @@ sc:
   users:
     new:
       title: Iscrie·ti
+      tab_title: Registrati·ti
+      signup_to_authorize_html: Registra·ti cun OpenStreetMap pro atzèdere a %{client_app_name}.
       no_auto_account_create: A dolu mannu como non semus in gradu de creare unu contu
         pro tene in automàticu.
       please_contact_support_html: Cuntata %{support_link} pro fàghere in manera chi
@@ -2596,12 +2618,15 @@ sc:
         su prus in presse chi podimus.
       support: assistèntzia
       about:
-        header: Lìbera e modificàbile
+        header: Lìbera e modificàbile.
         paragraph_1: A diferèntzia de àteras mapas, OpenStreetMap est totu realizada
           dae persones che a tie e chie si siat la podet currègere, agiornare, iscarrigare
           o impreare in manera lìbera.
-        paragraph_2: Registra·ti pro incumintzare a contribuire. T'amus a imbiare
-          una lìtera eletrònica pro cunfirmare su contu tuo.
+        paragraph_2: Registra·ti pro incumintzare a contribuire.
+        welcome: Bene bènnidu in OpenStreetMap
+      duplicate_social_email: Si tenes giai unu contu de OpenStreetMap e boles impreare
+        unu frunidore de identidade esternu, intra impreende sa crae tua e muda sas
+        impostaduras de su contu tuo.
       display name description: Su nùmene de utente chi s'at a mustrare in manera
         pùblica. Lu podes cambiare prus a tardu in sas preferèntzias.
       by_signing_up:
@@ -2614,7 +2639,7 @@ sc:
       email_help:
         html: S'indiritzu tuo no est ammustradu in manera pùblica, consulta sa %{privacy_policy_link}
           pro àteras informatziones.
-      use external auth: 'In alternativa, intra impreende unu servìtziu esternu:'
+      use external auth: o registra·ti impreende unu servìtziu esternu
     terms:
       title: Tèrmines
       heading: Tèrmines
@@ -2743,21 +2768,21 @@ sc:
         Si ses nou in OpenStreetMap pro praghere crea unu contu nou
         impreende su mòdulu inoghe in suta.
       option_2: |-
-        Si tenes giai unu contu bi posed intrare
+        Si tenes giai unu contu bi podes intrare
         impreende su nùmene utente tuo e sa crae tua e a pustis assotziende su contu
         cun s'ID tuo in sas impostatziones de utente tuas.
   user_role:
     filter:
-      not_a_role: S'istringa `%{role}' no est unu ruolu vàlidu.
+      not_a_role: S'istringa '%{role}' no est unu ruolu vàlidu.
       already_has_role: S'utente tenet giai su ruolu %{role}.
       doesnt_have_role: S'utente non tenet su ruolu %{role}.
       not_revoke_admin_current_user: Non faghet a revocare su ruolu de amministradore
         dae s'utente atuale.
     grant:
-      are_you_sure: Ses seguru de bòlere cuntzèdere su ruolu `%{role}' a s'utente
-        `%{name}'?
+      are_you_sure: Ses seguru de bòlere cuntzèdere su ruolu '%{role}' a s'utente
+        '%{name}'?
     revoke:
-      are_you_sure: Ses seguru de bòlere revocare su ruolu `%{role}' de s'utente `%{name}'?
+      are_you_sure: Ses seguru de bòlere revocare su ruolu '%{role}' de s'utente '%{name}'?
   user_blocks:
     model:
       non_moderator_update: Depes èssere unu moderadore pro creare o atualizare unu
@@ -2836,6 +2861,12 @@ sc:
       reason: Resone de su blocu
       status: Istadu
       revoker_name: Revocadu dae
+    navigation:
+      all_blocks: Totu sos blocos
+      blocks_on_me: Blocos subra a mene
+      blocks_by_me: Blocos fatos dae mene
+      block: 'Blocu #%{id}'
+      new_block: Blocu nou
   notes:
     index:
       title: Notas insertadas o cummentadas dae %{user}
@@ -2884,12 +2915,16 @@ sc:
       intro: As agatadu una faddina o carchi cosa chi mancat? Informa sos àteros mapadores
         a manera chi lu potzant acontzare. Move su marcadore a sa positzione curreta
         e iscrie una nota pro descrìere su problema.
+      anonymous_warning_log_in: intra
+      anonymous_warning_sign_up: registra·ti
       advice: Sa nota tua est pùblica e si podet impreare pro atualizare sa mapa,
         duncas non nch'insertes peruna informatzione personale o informatzione de
         mapas cun deretu de autore o elencos.
       add: Annanghe una nota
     notes_paging_nav:
       showing_page: Pàgina %{page}
+      next: Imbeniente
+      previous: Antepostu
   javascripts:
     close: Serra
     share:
@@ -2904,7 +2939,7 @@ sc:
       custom_dimensions: Imposta dimensiones personalizadas
       format: 'Formadu:'
       scale: 'Iscala:'
-      image_dimensions: S'immàgine at a mustrare s'istratu istandard in %{width} x
+      image_dimensions: S'immàgine at a mustrare s'istratu %{layer} in %{width} x
         %{height}
       download: Iscàrriga
       short_url: URL curtzu
@@ -2912,7 +2947,8 @@ sc:
       center_marker: Tzentra sa mapa in su marcadore
       paste_html: Incolla s'HTML pro l'integrare in su situ web
       view_larger_map: Pòmpia una mapa prus manna
-      only_standard_layer: Petzi s'istratu istandard si podet esportare comente immàgine
+      only_standard_layer: Petzi sos istratos istandard, pro su tziclismu e pro sos
+        trasportos si podent esportare comente immàgine
     embed:
       report_problem: Sinnala unu problema
     key:
index 99817ea5edd9125f71758eb42659a9b8f01d03bf..3972e6df9b08298b78f67e17b722835e69e8312a 100644 (file)
@@ -428,7 +428,7 @@ sk:
         note: poznámka
     timeout:
       title: Vypršal časový limit
-      sorry: Ľutujeme, ale načítanie dát %{type} číslo %{id} trvalo príliš dlho
+      sorry: Ľutujeme, ale načítanie dát typu %{type} číslo %{id} trvalo príliš dlho.
       type:
         node: uzol
         way: cesta
@@ -2374,6 +2374,7 @@ sk:
         title: Nie je čas upravovať? Pridajte poznámku!
         para_1: Pokiaľ chcete len opraviť nejakú drobnosť a nemáte čas sa registrovať
           a učiť sa upravovať, môžete jednoducho pridať poznámku.
+        the_map: Mapa
     communities:
       title: Komunity
       lede_text: |-
@@ -2565,6 +2566,7 @@ sk:
       delete: Zmazať
       confirm_delete: Odstrániť túto aplikáciu?
       client_id: ID klienta
+      client_secret: Tajomstvo klienta
       client_secret_warning: Uistite sa, že tento tajný kľúč si uložíte - viac sa
         už nezobrazí
       permissions: Povolenia
@@ -2595,25 +2597,30 @@ sk:
         do %{client_app_name}.
       no_auto_account_create: Bohužiaľ teraz nie sme schopný vytvoriť pre vás účet
         automaticky.
+      support: podpora
       about:
         header: Slobodné a upravovateľné.
         paragraph_1: Na rozdiel od iných máp OpenStreetMap tvoria výhradne dobrovoľníci
           ako ste vy a každý si ju môže bezplatne opraviť, aktualizovať, stiahnuť
           a použiť.
         paragraph_2: Ak chcete začať prispievať, zaregistrujte sa.
+        welcome: Vitajte v OpenStreetMap
       display name description: Vaše verejne zobrazené meno užívateľa. Môžete ho potom
         zmeniť v nastaveniach.
       by_signing_up:
         html: Registráciou súhlasíte s našimi %{tou_link}, %{privacy_policy_link}
           a %{contributor_terms_link}.
+        privacy_policy: Zásady ochrany súkromia
         privacy_policy_title: Pravidlá ochrany osobných údajov OSMF vrátane sekcie
           o e-mailových adresách
+        contributor_terms: Podmienky prispievania
       continue: Zaregistrujte sa
       terms accepted: Ďakujeme za odsúhlasenie nových podmienok prispievania!
       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
     terms:
index b318954797a0175daae1a2a4e93123cfacabdee2..2a6d11089e9c630c3daf5be1a0c70f0184dbb5e1 100644 (file)
@@ -1521,9 +1521,9 @@ sr:
       unread_button: Означи као непрочитано
       destroy_button: Обриши
       back: Назад
-      wrong_user: Пријављени сте као %{user}, али порука коју сте желели да прочитате
-        Ð½Ð¸Ñ\98е Ð¿Ð¾Ñ\81лаÑ\82а Ñ\82ом ÐºÐ¾Ñ\80иÑ\81никÑ\83. Ð\9fÑ\80иÑ\98авиÑ\82е Ñ\81е ÐºÐ°Ð¾ Ð¸Ñ\81пÑ\80аван ÐºÐ¾Ñ\80иÑ\81ник Ð´Ð° Ð±Ð¸Ñ\81Ñ\82е Ñ\98е
-        прочитали.
+      wrong_user: Пријављени сте као '%{user}', али порука коју сте желели да прочитате
+        Ð½Ð¸Ñ\81Ñ\82е Ð¿Ð¾Ñ\81лали Ð²Ð¸ Ð¸Ð»Ð¸ Ñ\82ом ÐºÐ¾Ñ\80иÑ\81никÑ\83. Ð\9fÑ\80иÑ\98авиÑ\82е Ñ\81е ÐºÐ°Ð¾ Ð¸Ñ\81пÑ\80аван ÐºÐ¾Ñ\80иÑ\81ник Ð´Ð°
+        Ð±Ð¸Ñ\81Ñ\82е Ñ\98е Ð¿Ñ\80оÑ\87иÑ\82али.
     sent_message_summary:
       destroy_button: Обриши
     heading:
index 08f6f0fb456564fc080a2dc009496785c96ed1de..21f21f5cc37016dd9a4de5395cb29e579533c304 100644 (file)
@@ -168,7 +168,7 @@ sv:
         longitude: Longitud
         public: Offentlig
         description: Beskrivning
-        gpx_file: Ladda upp GPX-fil
+        gpx_file: Välj GPS-spårningsfil
         visibility: Synlighet
         tagstring: Taggar
       message:
@@ -383,7 +383,7 @@ sv:
     view_unredacted_history: Visa oredigerad historik
     view_details: Visa detaljer
     view_redacted_data: Visa redigerad data
-    view_redaction_message: Visa redigeringsmeddelande
+    view_redaction_message: Visa maskeringsmeddelande
     location: 'Plats:'
     node:
       title_html: 'Nod: %{name}'
@@ -433,7 +433,7 @@ sv:
         changeset: ändringsuppsättning
         note: not
     redacted:
-      redaction: Omarbetning %{id}
+      redaction: Maskering %{id}
       message_html: Version %{version} av denna %{type} kan inte visas då den har
         tagits bort. Se %{redaction_link} för detaljer.
       type:
@@ -462,15 +462,30 @@ sv:
       introduction: Klicka på kartan för att hitta funktioner i närheten.
       nearby: Finns i närheten
       enclosing: Omgivande kartobjekt
+  nodes:
+    timeout:
+      sorry: Tyvärr tog data för noden med id %{id} för lång tid att hämta.
   old_nodes:
     not_found:
       sorry: 'Tyvärr, nod #%{id} version %{version} kunde inte hittas.'
+    timeout:
+      sorry: Tyvärr tog historiken för noden med id %{id} för lång tid att hämta.
+  ways:
+    timeout:
+      sorry: Tyvärr tog data för vägen med id %{id} för lång tid att hämta.
   old_ways:
     not_found:
       sorry: 'Tyvärr, sträckan #%{id} version %{version} kunde inte hittas.'
+    timeout:
+      sorry: Tyvärr tog historiken för vägen med id %{id} för lång tid att hämta.
+  relations:
+    timeout:
+      sorry: Tyvärr tog data för relationen med id %{id} för lång tid att hämta.
   old_relations:
     not_found:
       sorry: 'Tyvärr, sträckan #%{id} version %{version} kunde inte hittas.'
+    timeout:
+      sorry: Tyvärr tog historiken för relationen med id %{id} för lång tid att hämta.
   changeset_comments:
     feeds:
       comment:
@@ -1520,6 +1535,7 @@ sv:
     page:
       user_not_found: Användaren finns inte
       issues_not_found: Inga sådana ärenden hittades
+      reported_user: Rapporterad användare
       status: Status
       reports: Rapporter
       last_updated: Senast uppdaterad
@@ -1528,6 +1544,10 @@ sv:
         one: '%{count} rapport'
         other: '%{count} rapporter'
       reported_item: Rapporterat objekt
+      states:
+        ignored: Ignorerad
+        open: Öppen
+        resolved: Löst
     show:
       title: '%{status} Ärende nr %{issue_id}'
       reports:
@@ -1629,6 +1649,7 @@ sv:
       databasunderhåll pågår.
     osm_read_only: OpenStreetMap-databasen är skrivskyddad just nu, då nödvändigt
       databasunderhåll pågår.
+    nothing_to_preview: Ingenting att förhandsvisa.
     help: Hjälp
     about: Om
     copyright: Upphovsrätt
@@ -1671,13 +1692,23 @@ sv:
       befriend_them: Du kan också lägga till dem som en vän på %{befriendurl}.
       befriend_them_html: Du kan också lägga till dem som en vän på %{befriendurl}.
     gpx_description:
-      description_with_tags_html: 'Det ser ut som att din GPX-fil %{trace_name} med
-        beskrivningen %{trace_description} och följande taggar: %{tags}'
-      description_with_no_tags_html: Det ser ut som att din GPX-fil %{trace_name}
-        med beskrivningen %{trace_description} och inga taggar
+      description_with_tags: 'Det verkar som att din fil %{trace_name} med beskrivningen
+        %{trace_description} och följande taggar: %{tags}'
+      description_with_tags_html: 'Det verkar som att din fil %{trace_name} med beskrivningen
+        %{trace_description} och följande taggar: %{tags}'
+      description_with_no_tags: Det verkar som att din fil %{trace_name} med beskrivningen
+        %{trace_description} och inga taggar
+      description_with_no_tags_html: Det verkar som att din fil %{trace_name} med
+        beskrivningen %{trace_description} och inga taggar
     gpx_failure:
       hi: Hej %{to_user},
-      failed_to_import: 'misslyckats med att importera. Här är felet:'
+      failed_to_import: 'kunde inte importera som en GPS-spårningsfil. Kontrollera
+        att din fil är en giltig GPX-fil eller ett arkiv som innehåller GPX-filer
+        i ett format som stöds (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+        Skulle det kunna vara problem med ett format eller syntax med din fil? Här
+        är importeringsfelet:'
+      more_info: Mer information om GPX-importeringsfel och hur man undviker dem finns
+        på %{url}.
       more_info_html: Mer information om misslyckade GPX-importer och hur man undviker
         dem återfinns på %{url}.
       subject: '[OpenStreetMap] Misslyckades importera GPX'
@@ -1686,6 +1717,8 @@ sv:
       loaded:
         one: inläst med %{trace_points} av %{count} möjlig punkt.
         other: inläst med %{trace_points} av %{count} möjliga punkter.
+      trace_location: Ditt spår finns på %{trace_url}
+      all_your_traces: Alla dina uppladdade GPX-spår finns på %{url}
       all_your_traces_html: Alla dina framgångsrikt uppladdade GPX-spår finns på %{url}.
       subject: '[OpenStreetMap] Lyckades importera GPX'
     signup_confirm:
@@ -1978,6 +2011,7 @@ sv:
     richtext_field:
       edit: Redigera
       preview: Förhandsgranska
+      help: Hjälp
     pagination:
       diary_comments:
         older: Äldre kommentarer
@@ -1985,6 +2019,9 @@ sv:
       diary_entries:
         older: Äldre inlägg
         newer: Nyare inlägg
+      issues:
+        older: Äldre problem
+        newer: Nyare problem
       traces:
         older: Äldre GPS-spår
         newer: Nyare GPS-spår
@@ -2413,6 +2450,9 @@ sv:
           hospital: Sjukhus
           building: Viktig byggnad
           station: Järnvägsstation
+          railway_halt: Järnvägsstopp
+          subway_station: Tunnelbanestation
+          tram_stop: Spårvagnshållplats
           summit: Höjd
           peak: Topp
           tunnel: Streckade kanter = tunnel
@@ -2650,6 +2690,8 @@ sv:
       write_notes: Ändra anteckningar
       write_redactions: Omarbeta kartdata
       read_email: Läs användarens e-postadress
+      consume_messages: Läs, uppdatera status och radera användarmeddelanden
+      send_messages: Skicka privata meddelanden till andra användare
       skip_authorization: Godkänn applikation automatiskt
     for_roles:
       moderator: Denna behörighet är till för åtgärder som endast är tillgängliga
@@ -2768,6 +2810,7 @@ sv:
       continue: |2-
 
         Fortsätt
+      cancel: Avbryt
       you need to accept or decline: Läs igenom och godkänn eller avböj de nya bidragsvillkoren
         för att fortsätta.
       legale_select: 'Hemland:'
@@ -2885,17 +2928,17 @@ sv:
         med ditt ID i dina användarinställningar.
   user_role:
     filter:
-      not_a_role: Strängen `%{role}' är inte en korrekt roll.
+      not_a_role: Strängen '%{role}' är inte en giltig roll.
       already_has_role: Användaren har redan rollen %{role}.
       doesnt_have_role: Användaren har inte rollen %{role}.
       not_revoke_admin_current_user: Kan inte återkalla administratörsroll från nuvarande
         användare.
     grant:
-      are_you_sure: Är du säker på att du vill ge rollen `%{role}' till användaren
-        `%{name}'?
+      are_you_sure: Är du säker på att du vill ge rollen '%{role}' till användaren
+        '%{name}'?
     revoke:
-      are_you_sure: Är du säker på att du vill återkalla rollen `%{role}' från användaren
-        `%{name}'?
+      are_you_sure: Är du säker på att du vill återkalla rollen '%{role}' från användaren
+        '%{name}'?
   user_blocks:
     model:
       non_moderator_update: Måste vara en moderator för att skapa eller uppdatera
@@ -2912,6 +2955,7 @@ sv:
       title: Redigera blockering på %{name}
       heading_html: Redigera blockering på %{name}
       period: Hur lång tid, från och med nu, användaren ska vara blockerad från API:t.
+      revoke: Återkalla blockering
     filter:
       block_period: Blockeringsperioden måste ha ett av värdena i rullgardinslistan.
     create:
@@ -2919,8 +2963,12 @@ sv:
     update:
       only_creator_can_edit: Bara moderatorn som skapade denna blockering kan redigera
         den.
+      only_creator_can_edit_without_revoking: Endast moderatorn som skapade blockeringen
+        kan redigera den utan att återkalla den.
       only_creator_or_revoker_can_edit: Endast moderatorer som skapade eller drog
         tillbaka den här blockeringen kan redigera den.
+      inactive_block_cannot_be_reactivated: Den här blockeringen är inaktiv och kan
+        inte återaktiveras.
       success: Blockering uppdaterad.
     index:
       title: Användarblockeringar
@@ -2992,6 +3040,7 @@ sv:
       blocks_by_me: Blockeringar av mig
       blocks_by_user: Blockeringar av %{user}
       block: 'Blockering #%{id}'
+      new_block: Ny blockering
   user_mutes:
     index:
       title: Tystade användare
@@ -3074,6 +3123,8 @@ sv:
       add: Lägg till anteckning
     notes_paging_nav:
       showing_page: Sida %{page}
+      next: Nästa
+      previous: Föregående
   javascripts:
     close: Stäng
     share:
@@ -3258,12 +3309,13 @@ sv:
       centre_map: Centrera kartan här
   redactions:
     edit:
-      heading: Redigera redaktering
-      title: Redigera redaktering
+      heading: Redigera maskering
+      title: Redigera maskering
     index:
       empty: Inga maskeringar att visa.
       heading: Lista över maskeringar
       title: Lista över maskeringar
+      new: Ny maskering
     new:
       heading: Ange information för ny maskering
       title: Skapa ny maskering
index 62fa504e979c2d64953bf20dbad353cca18a3375..8757283d9bf7433d68e77814732bc26d32a9564e 100644 (file)
@@ -2829,7 +2829,7 @@ uk:
         швидше.
       support: підтримкою
       about:
-        header: Вільні й доступні для редагування.
+        header: Вільні й доступні для редагування дані.
         paragraph_1: На відміну від інших мап, OpenStreetMap повністю створено людьми,
           такими ж як ви, і кожен може вільно виправляти, оновлювати, завантажувати
           та використовувати дані OpenStreetMap.
@@ -2842,8 +2842,8 @@ uk:
       display name description: Ваше ім’я учасника, доступне всім. Ви можете змінити
         його потім у ваших налаштуваннях.
       by_signing_up:
-        html: Реєструючись, ви приймаєте наші %{tou_link}, %{privacy_policy_link}
-          Ñ\96 %{contributor_terms_link}.
+        html: Реєструючись, ви приймаєте наші %{tou_link}, %{contributor_terms_link}
+          Ñ\82а Ð¿Ð¾Ð³Ð¾Ð´Ð¶Ñ\83Ñ\94Ñ\82еÑ\81Ñ\8c Ð· %{privacy_policy_link}.
         privacy_policy: Політикою конфіденційності
         privacy_policy_title: Політика конфіденційності OSMF, включаючи розділ про
           адреси електронної пошти
@@ -2856,8 +2856,8 @@ uk:
           електронної пошти
         html: Ваша адреса ніколи не показуватиметься публічно. Ознайомтесь з нашою
           %{privacy_policy_link} для отримання докладної інформації.
-      consider_pd_html: Я вважаю, що мій внесок належать до %{consider_pd_link}.
-      consider_pd: Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cного Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8f
+      consider_pd_html: Я вважаю свій внесок %{consider_pd_link}.
+      consider_pd: Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8fм
       or: або
       use external auth: або використовуйте, облікові записи з інших ресурсів для
         входу
index 999f177bb40e2abddf6c4f15134e3ff952cfa3b0..1aabe21952a075e3b64b279eaf94fdb7170df8f2 100644 (file)
@@ -3,6 +3,7 @@
 # Export driver: phpyaml
 # Author: A Retired User
 # Author: Anewplayer
+# Author: Băng Tỏa
 # Author: Dinhxuanduyet
 # Author: Doraemonluonbentoi
 # Author: Flyplanevn27
@@ -142,7 +143,7 @@ vi:
         longitude: Kinh độ
         public: Công khai
         description: Miêu tả
-        gpx_file: Chọn tệp Tuyến đường GPS
+        gpx_file: Chọn Tập tin Tuyến đường GPS
         visibility: 'Mức độ truy cập:'
         tagstring: 'Thẻ:'
       message:
index 5c7b3045e263998953b63caa27ddede195799579..02729053fe56eeccdf375fc448f6d7fb2d495f7a 100644 (file)
@@ -469,15 +469,30 @@ zh-CN:
       introduction: 点击地图以查找附近要素。
       nearby: 附近要素
       enclosing: 封闭要素
+  nodes:
+    timeout:
+      sorry: 抱歉,检索id为%{id}的节点数据花费时间过长。
   old_nodes:
     not_found:
       sorry: '抱歉,无法找到节点 #%{id} 的版本 %{version}。'
+    timeout:
+      sorry: 抱歉,检索id为%{id}的节点历史花费时间过长。
+  ways:
+    timeout:
+      sorry: 抱歉,检索id为%{id}的路径数据花费时间过长。
   old_ways:
     not_found:
       sorry: '抱歉,无法找到路径 #%{id} 的版本 %{version}。'
+    timeout:
+      sorry: 抱歉,检索id为%{id}的路径历史花费时间过长。
+  relations:
+    timeout:
+      sorry: 抱歉,检索id为%{id}的关系数据花费时间过长。
   old_relations:
     not_found:
       sorry: '抱歉,无法找到关系 #%{id} 的版本 %{version}。'
+    timeout:
+      sorry: 抱歉,检索id为%{id}的关系历史花费时间过长。
   changeset_comments:
     feeds:
       comment:
@@ -1657,14 +1672,13 @@ zh-CN:
       befriend_them: 您也可以在 %{befriendurl} 添加他们为朋友。
       befriend_them_html: 您也可以在%{befriendurl}把他们添加为朋友。
     gpx_description:
-      description_with_tags: 看起来您的GPX文件%{trace_name}(描述为%{trace_description},带如下标签:%{tags})
-      description_with_tags_html: 您的GPX文件 %{trace_name} ,其描述为 %{trace_description}
-        并有以下标签: %{tags}
-      description_with_no_tags: 看起来您的GPX文件%{trace_name}(描述为%{trace_description},不带标签)
-      description_with_no_tags_html: 似乎您的GPX文件%{trace_name},描述为%{trace_description},没有标签
+      description_with_tags: 看起来是您的文件%{trace_name}(描述为%{trace_description},带如下标签:%{tags})
+      description_with_tags_html: 看起来是您的文件%{trace_name},其描述为%{trace_description}并有以下标签:%{tags}
+      description_with_no_tags: 看起来是您的文件%{trace_name}(描述为%{trace_description},不带标签)
+      description_with_no_tags_html: 看起来是您的文件%{trace_name},其描述为%{trace_description},没有标签
     gpx_failure:
       hi: 您好,%{to_user}:
-      failed_to_import: 导入失败。下面是错误信息:
+      failed_to_import: 无法导入为GPS轨迹文件。请验证您的文件是否为有效的GPX文件或包含GPX文件的受支持格式(.tar.gz、.tar.bz2、.tar、.zip、.gpx.gz、.gpx.bz2)的存档。您的文件是否存在格式或语法问题?以下是导入错误信息:
       more_info: 更多有关GPX导入失败的信息及如何避免这些问题,可以在%{url}找到。
       more_info_html: 更多关于 GPX 导入失败的信息,以及如何避免失败可在%{url}找到。
       subject: '[OpenStreetMap] GPX 导入失败'
index 22c4ad642194a53dd85b82c8c56da53b46191839..af72c457d25d0b950a52cd8a0a8037fe1f057e9d 100644 (file)
@@ -266,7 +266,9 @@ OpenStreetMap::Application.routes.draw do
   post "/diary_comments/:comment/unhide" => "diary_comments#unhide", :comment => /\d+/, :as => :unhide_diary_comment
 
   # user pages
-  resources :users, :path => "user", :param => :display_name, :only => [:show, :destroy]
+  resources :users, :path => "user", :param => :display_name, :only => [:show, :destroy] do
+    resource :role, :controller => "user_roles", :path => "roles/:role", :only => [:create, :destroy]
+  end
   get "/user/:display_name/account", :to => redirect(:path => "/account/edit")
   post "/user/:display_name/set_status" => "users#set_status", :as => :set_status_user
 
@@ -323,9 +325,7 @@ OpenStreetMap::Application.routes.draw do
   end
   resources :user_mutes, :only => [:index]
 
-  # roles and banning pages
-  post "/user/:display_name/role/:role/grant" => "user_roles#grant", :as => "grant_role"
-  post "/user/:display_name/role/:role/revoke" => "user_roles#revoke", :as => "revoke_role"
+  # banning pages
   get "/user/:display_name/blocks" => "user_blocks#blocks_on", :as => "user_blocks_on"
   get "/user/:display_name/blocks_by" => "user_blocks#blocks_by", :as => "user_blocks_by"
   get "/blocks/new/:display_name" => "user_blocks#new", :as => "new_user_block"
index b5a565b133dc4df6697cdeab8e299c5a4f2d2758..db871775e784d4cfe5ceb29a71bfbdee7c89b2ed 100644 (file)
@@ -69,6 +69,7 @@ max_friends_per_hour: 60
 min_changeset_comments_per_hour: 1
 initial_changeset_comments_per_hour: 6
 max_changeset_comments_per_hour: 60
+comments_to_max_changeset_comments: 200
 moderator_changeset_comments_per_hour: 36000
 # Rate limit for changes
 min_changes_per_hour: 100
index fe5aa5d897341348905eb8b349ad8bd601016107..b0e2f461392cce37eb7221ad9f72e0601f7a361c 100644 (file)
@@ -21,6 +21,7 @@ trace_image_storage: "test"
 trace_icon_storage: "test"
 # Lower some rate limits for testing
 max_changeset_comments_per_hour: 10
+comments_to_max_changeset_comments: 20
 moderator_changeset_comments_per_hour: 15
 # Private key for signing id_tokens
 doorkeeper_signing_key: |
diff --git a/db/migrate/20241022141247_create_note_subscriptions.rb b/db/migrate/20241022141247_create_note_subscriptions.rb
new file mode 100644 (file)
index 0000000..9a2a28a
--- /dev/null
@@ -0,0 +1,8 @@
+class CreateNoteSubscriptions < ActiveRecord::Migration[7.2]
+  def change
+    create_table :note_subscriptions, :primary_key => [:user_id, :note_id] do |t|
+      t.references :user, :foreign_key => true, :index => false
+      t.references :note, :foreign_key => true
+    end
+  end
+end
diff --git a/db/migrate/20241023004427_backfill_note_subscriptions.rb b/db/migrate/20241023004427_backfill_note_subscriptions.rb
new file mode 100644 (file)
index 0000000..3c9a2ef
--- /dev/null
@@ -0,0 +1,15 @@
+class BackfillNoteSubscriptions < ActiveRecord::Migration[7.2]
+  class NoteComment < ApplicationRecord; end
+  class NoteSubscription < ApplicationRecord; end
+
+  disable_ddl_transaction!
+
+  def up
+    attrs = %w[user_id note_id]
+
+    NoteComment.in_batches(:of => 1000) do |note_comments|
+      rows = note_comments.distinct.where.not(:author_id => nil).pluck(:author_id, :note_id)
+      NoteSubscription.upsert_all(rows.map { |r| attrs.zip(r).to_h })
+    end
+  end
+end
index 25b2f173fc6f2a42d00856e3b94c7bec45818b4c..9679e0b92561617b120b347632a2373bfa9aebcc 100644 (file)
@@ -1051,6 +1051,16 @@ CREATE SEQUENCE public.note_comments_id_seq
 ALTER SEQUENCE public.note_comments_id_seq OWNED BY public.note_comments.id;
 
 
+--
+-- Name: note_subscriptions; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.note_subscriptions (
+    user_id bigint NOT NULL,
+    note_id bigint NOT NULL
+);
+
+
 --
 -- Name: notes; Type: TABLE; Schema: public; Owner: -
 --
@@ -2010,6 +2020,14 @@ ALTER TABLE ONLY public.note_comments
     ADD CONSTRAINT note_comments_pkey PRIMARY KEY (id);
 
 
+--
+-- Name: note_subscriptions note_subscriptions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.note_subscriptions
+    ADD CONSTRAINT note_subscriptions_pkey PRIMARY KEY (user_id, note_id);
+
+
 --
 -- Name: notes notes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
 --
@@ -2498,6 +2516,13 @@ CREATE INDEX index_note_comments_on_body ON public.note_comments USING gin (to_t
 CREATE INDEX index_note_comments_on_created_at ON public.note_comments USING btree (created_at);
 
 
+--
+-- Name: index_note_subscriptions_on_note_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_note_subscriptions_on_note_id ON public.note_subscriptions USING btree (note_id);
+
+
 --
 -- Name: index_oauth_access_grants_on_application_id; Type: INDEX; Schema: public; Owner: -
 --
@@ -2953,6 +2978,14 @@ ALTER TABLE ONLY public.diary_entry_subscriptions
     ADD CONSTRAINT diary_entry_subscriptions_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
 
 
+--
+-- Name: note_subscriptions fk_rails_2c1913f293; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.note_subscriptions
+    ADD CONSTRAINT fk_rails_2c1913f293 FOREIGN KEY (note_id) REFERENCES public.notes(id);
+
+
 --
 -- Name: oauth_access_grants fk_rails_330c32d8d9; Type: FK CONSTRAINT; Schema: public; Owner: -
 --
@@ -2993,6 +3026,14 @@ ALTER TABLE ONLY public.active_storage_variant_records
     ADD CONSTRAINT fk_rails_993965df05 FOREIGN KEY (blob_id) REFERENCES public.active_storage_blobs(id);
 
 
+--
+-- Name: note_subscriptions fk_rails_a352f4eced; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.note_subscriptions
+    ADD CONSTRAINT fk_rails_a352f4eced FOREIGN KEY (user_id) REFERENCES public.users(id);
+
+
 --
 -- Name: oauth_access_grants fk_rails_b4b53e07b8; Type: FK CONSTRAINT; Schema: public; Owner: -
 --
@@ -3356,6 +3397,8 @@ INSERT INTO "schema_migrations" (version) VALUES
 ('23'),
 ('22'),
 ('21'),
+('20241023004427'),
+('20241022141247'),
 ('20240913171951'),
 ('20240912181413'),
 ('20240910175616'),
index 424e85c1095999e781147f35610193b36ade59e0..8983f3bd3bd1c4858d5aab8caa57a538d12b32a7 100644 (file)
@@ -32,11 +32,11 @@ module ShortLink
         else
           3.times do
             x <<= 1
-            x |= 1 unless (t & 32).zero?
+            x |= 1 unless t.nobits?(32)
             t <<= 1
 
             y <<= 1
-            y |= 1 unless (t & 32).zero?
+            y |= 1 unless t.nobits?(32)
             t <<= 1
           end
           z += 3
index f19234a8ec0f04ba8b4ac380d85b83734e1c1067..f6ecd4ed5742ab0a28b07a5017c541fdfdd55b92 100644 (file)
@@ -3,12 +3,6 @@
 # abort on error
 set -e
 
-# set locale to UTF-8 compatible. apologies to non-english speakers...
-locale-gen en_GB.utf8
-update-locale LANG=en_GB.utf8 LC_ALL=en_GB.utf8
-export LANG=en_GB.utf8
-export LC_ALL=en_GB.utf8
-
 # make sure we have up-to-date packages
 apt-get update
 
@@ -18,7 +12,7 @@ apt-get upgrade -y
 # install packages as explained in INSTALL.md
 apt-get install -y ruby ruby-dev ruby-bundler \
                      libxml2-dev libxslt1-dev nodejs npm \
-                     build-essential git-core \
+                     build-essential git-core firefox-esr \
                      postgresql postgresql-contrib libpq-dev libvips-dev libyaml-dev \
                      libsasl2-dev libffi-dev libgd-dev libarchive-dev libbz2-dev
 npm install --global yarn
index 59f5928d79d10725d7118e4c8dc2d34ec59c9a0c..99168375a884f62560ab732a84f54f2f6ec4c94b 100644 (file)
@@ -45,7 +45,7 @@ class GuestAbilityTest < AbilityTest
   test "user roles permissions for a guest" do
     ability = Ability.new nil
 
-    [:grant, :revoke].each do |action|
+    [:create, :destroy].each do |action|
       assert ability.cannot?(action, UserRole), "should not be able to #{action} UserRoles"
     end
   end
@@ -86,7 +86,7 @@ class ModeratorAbilityTest < AbilityTest
   test "User Roles permissions" do
     ability = Ability.new create(:moderator_user)
 
-    [:grant, :revoke].each do |action|
+    [:create, :destroy].each do |action|
       assert ability.cannot?(action, UserRole), "should not be able to #{action} UserRoles"
     end
 
@@ -159,7 +159,7 @@ class AdministratorAbilityTest < AbilityTest
   test "User Roles permissions for an administrator" do
     ability = Ability.new create(:administrator_user)
 
-    [:grant, :revoke].each do |action|
+    [:create, :destroy].each do |action|
       assert ability.can?(action, UserRole), "should be able to #{action} UserRoles"
     end
   end
index 35e45e8c840f4eb2a17d71b6bb01928d3888447b..21f30714c2213034fef4e4d4041ce2e05273ef68 100644 (file)
@@ -158,7 +158,7 @@ module Api
     def test_create_comment_experienced_user_rate_limit
       changeset = create(:changeset, :closed)
       user = create(:user)
-      create_list(:changeset_comment, 200, :author_id => user.id, :created_at => Time.now.utc - 1.day)
+      create_list(:changeset_comment, Settings.comments_to_max_changeset_comments, :author_id => user.id, :created_at => Time.now.utc - 1.day)
 
       auth_header = bearer_authorization_header user
 
index ed410e8c75b7f51ba83eeb5d1f1bf062d3f40b97..5f69e6a2ac025e9eadf11a85795d040c349202c6 100644 (file)
@@ -101,10 +101,12 @@ module Api
       )
     end
 
-    def test_create_success
+    def test_create_anonymous_success
       assert_difference "Note.count", 1 do
         assert_difference "NoteComment.count", 1 do
-          post api_notes_path(:lat => -1.0, :lon => -1.0, :text => "This is a comment", :format => "json")
+          assert_no_difference "NoteSubscription.count" do
+            post api_notes_path(:lat => -1.0, :lon => -1.0, :text => "This is a comment", :format => "json")
+          end
         end
       end
       assert_response :success
@@ -135,7 +137,7 @@ module Api
       assert_nil js["properties"]["comments"].last["user"]
     end
 
-    def test_create_fail
+    def test_create_anonymous_fail
       assert_no_difference "Note.count" do
         assert_no_difference "NoteComment.count" do
           post api_notes_path(:lon => -1.0, :text => "This is a comment")
@@ -200,14 +202,44 @@ module Api
       assert_response :bad_request
     end
 
+    def test_create_success
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      assert_difference "Note.count", 1 do
+        assert_difference "NoteComment.count", 1 do
+          assert_difference "NoteSubscription.count", 1 do
+            post api_notes_path(:lat => -1.0, :lon => -1.0, :text => "This is a comment", :format => "json"), :headers => auth_header
+          end
+        end
+      end
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal "Feature", js["type"]
+      assert_equal "Point", js["geometry"]["type"]
+      assert_equal [-1.0, -1.0], js["geometry"]["coordinates"]
+      assert_equal "open", js["properties"]["status"]
+      assert_equal 1, js["properties"]["comments"].count
+      assert_equal "opened", js["properties"]["comments"].last["action"]
+      assert_equal "This is a comment", js["properties"]["comments"].last["text"]
+      assert_equal user.display_name, js["properties"]["comments"].last["user"]
+
+      note = Note.last
+      subscription = NoteSubscription.last
+      assert_equal user, subscription.user
+      assert_equal note, subscription.note
+    end
+
     def test_comment_success
       open_note_with_comment = create(:note_with_comments)
       user = create(:user)
       auth_header = bearer_authorization_header user
       assert_difference "NoteComment.count", 1 do
-        assert_no_difference "ActionMailer::Base.deliveries.size" do
-          perform_enqueued_jobs do
-            post comment_api_note_path(open_note_with_comment, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+        assert_difference "NoteSubscription.count", 1 do
+          assert_no_difference "ActionMailer::Base.deliveries.size" do
+            perform_enqueued_jobs do
+              post comment_api_note_path(open_note_with_comment, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+            end
           end
         end
       end
@@ -222,6 +254,10 @@ module Api
       assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
       assert_equal user.display_name, js["properties"]["comments"].last["user"]
 
+      subscription = NoteSubscription.last
+      assert_equal user, subscription.user
+      assert_equal open_note_with_comment, subscription.note
+
       get api_note_path(open_note_with_comment, :format => "json")
       assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
@@ -233,7 +269,9 @@ module Api
       assert_equal "commented", js["properties"]["comments"].last["action"]
       assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
       assert_equal user.display_name, js["properties"]["comments"].last["user"]
+    end
 
+    def test_comment_without_notifications_success
       # Ensure that emails are sent to users
       first_user = create(:user)
       second_user = create(:user)
@@ -247,9 +285,11 @@ module Api
       auth_header = bearer_authorization_header third_user
 
       assert_difference "NoteComment.count", 1 do
-        assert_difference "ActionMailer::Base.deliveries.size", 2 do
-          perform_enqueued_jobs do
-            post comment_api_note_path(note_with_comments_by_users, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+        assert_difference "NoteSubscription.count", 1 do
+          assert_no_difference "ActionMailer::Base.deliveries.size" do
+            perform_enqueued_jobs do
+              post comment_api_note_path(note_with_comments_by_users, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+            end
           end
         end
       end
@@ -264,6 +304,64 @@ module Api
       assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
       assert_equal third_user.display_name, js["properties"]["comments"].last["user"]
 
+      subscription = NoteSubscription.last
+      assert_equal third_user, subscription.user
+      assert_equal note_with_comments_by_users, subscription.note
+
+      get api_note_path(note_with_comments_by_users, :format => "json")
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal "Feature", js["type"]
+      assert_equal note_with_comments_by_users.id, js["properties"]["id"]
+      assert_equal "open", js["properties"]["status"]
+      assert_equal 3, js["properties"]["comments"].count
+      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
+      # Ensure that emails are sent to users
+      first_user = create(:user)
+      second_user = create(:user)
+      third_user = create(:user)
+
+      note_with_comments_by_users = create(:note) do |note|
+        create(:note_comment, :note => note, :author => first_user)
+        create(:note_comment, :note => note, :author => second_user)
+      end
+      create(:note_subscription, :note => note_with_comments_by_users, :user => first_user)
+      create(:note_subscription, :note => note_with_comments_by_users, :user => second_user)
+
+      auth_header = bearer_authorization_header third_user
+
+      assert_difference "NoteComment.count", 1 do
+        assert_difference "NoteSubscription.count", 1 do
+          assert_difference "ActionMailer::Base.deliveries.size", 2 do
+            perform_enqueued_jobs do
+              post comment_api_note_path(note_with_comments_by_users, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+            end
+          end
+        end
+      end
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal "Feature", js["type"]
+      assert_equal note_with_comments_by_users.id, js["properties"]["id"]
+      assert_equal "open", js["properties"]["status"]
+      assert_equal 3, js["properties"]["comments"].count
+      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"]
+
+      subscription = NoteSubscription.last
+      assert_equal third_user, subscription.user
+      assert_equal note_with_comments_by_users, subscription.note
+
       email = ActionMailer::Base.deliveries.find { |e| e.to.first == first_user.email }
       assert_not_nil email
       assert_equal 1, email.to.length
@@ -290,6 +388,43 @@ module Api
       ActionMailer::Base.deliveries.clear
     end
 
+    def test_comment_twice_success
+      open_note_with_comment = create(:note_with_comments)
+      user = create(:user)
+      auth_header = bearer_authorization_header user
+      assert_difference "NoteComment.count", 1 do
+        assert_difference "NoteSubscription.count", 1 do
+          assert_no_difference "ActionMailer::Base.deliveries.size" do
+            perform_enqueued_jobs do
+              post comment_api_note_path(open_note_with_comment, :text => "This is an additional comment", :format => "json"), :headers => auth_header
+            end
+          end
+        end
+      end
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal 2, js["properties"]["comments"].count
+
+      subscription = NoteSubscription.last
+      assert_equal user, subscription.user
+      assert_equal open_note_with_comment, subscription.note
+
+      assert_difference "NoteComment.count", 1 do
+        assert_no_difference "NoteSubscription.count" do
+          assert_no_difference "ActionMailer::Base.deliveries.size" do
+            perform_enqueued_jobs do
+              post comment_api_note_path(open_note_with_comment, :text => "This is a second additional comment", :format => "json"), :headers => auth_header
+            end
+          end
+        end
+      end
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal 3, js["properties"]["comments"].count
+    end
+
     def test_comment_fail
       open_note_with_comment = create(:note_with_comments)
 
@@ -346,7 +481,9 @@ module Api
 
       auth_header = bearer_authorization_header user
 
-      post close_api_note_path(open_note_with_comment, :text => "This is a close comment", :format => "json"), :headers => auth_header
+      assert_difference "NoteSubscription.count", 1 do
+        post close_api_note_path(open_note_with_comment, :text => "This is a close comment", :format => "json"), :headers => auth_header
+      end
       assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
       assert_not_nil js
@@ -358,6 +495,10 @@ module Api
       assert_equal "This is a close comment", js["properties"]["comments"].last["text"]
       assert_equal user.display_name, js["properties"]["comments"].last["user"]
 
+      subscription = NoteSubscription.last
+      assert_equal user, subscription.user
+      assert_equal open_note_with_comment, subscription.note
+
       get api_note_path(open_note_with_comment.id, :format => "json")
       assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
@@ -400,7 +541,9 @@ module Api
 
       auth_header = bearer_authorization_header user
 
-      post reopen_api_note_path(closed_note_with_comment, :text => "This is a reopen comment", :format => "json"), :headers => auth_header
+      assert_difference "NoteSubscription.count", 1 do
+        post reopen_api_note_path(closed_note_with_comment, :text => "This is a reopen comment", :format => "json"), :headers => auth_header
+      end
       assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
       assert_not_nil js
@@ -412,6 +555,10 @@ module Api
       assert_equal "This is a reopen comment", js["properties"]["comments"].last["text"]
       assert_equal user.display_name, js["properties"]["comments"].last["user"]
 
+      subscription = NoteSubscription.last
+      assert_equal user, subscription.user
+      assert_equal closed_note_with_comment, subscription.note
+
       get api_note_path(closed_note_with_comment, :format => "json")
       assert_response :success
       js = ActiveSupport::JSON.decode(@response.body)
index 6cbfe6045f48f656b7b9037cb0e25741fdf3789c..5fb62d29f52550b5329581569b2329c035fcedbd 100644 (file)
@@ -1066,7 +1066,7 @@ module Api
 
       # create a new changeset for this operation, so we are assured
       # that the bounding box will be newly-generated.
-      changeset_id = with_controller(Api::ChangesetsController.new) do
+      with_controller(Api::ChangesetsController.new) do
         xml = "<osm><changeset/></osm>"
         put changeset_create_path, :params => xml, :headers => auth_header
         assert_response :forbidden, "shouldn't be able to create changeset for modify test, as should get forbidden"
index 914a4ab5608d32ce7fe343a2d6d5556ba47d3f31..f490b748c4a6c763699d2759909ba06f52944e69 100644 (file)
@@ -54,6 +54,24 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to root_path
   end
 
+  def test_login_remembered
+    user = create(:user)
+
+    post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "yes" }
+    assert_redirected_to root_path
+
+    assert_equal 28 * 86400, session[:_remember_for]
+  end
+
+  def test_login_not_remembered
+    user = create(:user)
+
+    post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "0" }
+    assert_redirected_to root_path
+
+    assert_nil session[:_remember_for]
+  end
+
   def test_logout_without_referer
     post logout_path
     assert_redirected_to root_path
index 1d89476ec6d10aea552cd3c8e283385064af1be1..2ab90364ec63672457b24070f17b48fc2c372909 100644 (file)
@@ -147,14 +147,72 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     assert_select "h1 a[href='#{user_path active_block.user}']", :text => active_block.user.display_name
     assert_select "h1 a[href='#{user_path active_block.creator}']", :text => active_block.creator.display_name
     assert UserBlock.find(active_block.id).needs_view
+  end
 
-    # Login as the blocked user
-    session_for(active_block.user)
+  ##
+  # test clearing needs_view by showing a zero-hour block to the blocked user
+  def test_show_sets_deactivates_at_for_zero_hour_block
+    user = create(:user)
+    session_for(user)
 
-    # Now viewing it should mark it as seen
-    get user_block_path(:id => active_block)
-    assert_response :success
-    assert_not UserBlock.find(active_block.id).needs_view
+    freeze_time do
+      block = create(:user_block, :needs_view, :zero_hour, :user => user)
+      assert block.needs_view
+      assert_nil block.deactivates_at
+
+      travel 1.hour
+
+      get user_block_path(block)
+      assert_response :success
+      block.reload
+      assert_not block.needs_view
+      assert_equal Time.now.utc, block.deactivates_at
+
+      travel 1.hour
+
+      get user_block_path(block)
+      assert_response :success
+      block.reload
+      assert_not block.needs_view
+      assert_equal Time.now.utc - 1.hour, block.deactivates_at
+    end
+  end
+
+  ##
+  # test clearing needs_view by showing a timed block to the blocked user
+  def test_show_sets_deactivates_at_for_timed_block
+    user = create(:user)
+    session_for(user)
+
+    freeze_time do
+      block = create(:user_block, :needs_view, :created_at => Time.now.utc, :ends_at => Time.now.utc + 24.hours, :user => user)
+      assert block.needs_view
+      assert_nil block.deactivates_at
+
+      travel 1.hour
+
+      get user_block_path(block)
+      assert_response :success
+      block.reload
+      assert_not block.needs_view
+      assert_equal Time.now.utc + 23.hours, block.deactivates_at
+
+      travel 1.hour
+
+      get user_block_path(block)
+      assert_response :success
+      block.reload
+      assert_not block.needs_view
+      assert_equal Time.now.utc + 22.hours, block.deactivates_at
+
+      travel 24.hours
+
+      get user_block_path(block)
+      assert_response :success
+      block.reload
+      assert_not block.needs_view
+      assert_equal Time.now.utc - 2.hours, block.deactivates_at
+    end
   end
 
   ##
index 66735ccf5819b9806a51effe2e3bcc92ef050841..301a89f568c9ae01dccf150759635436ed7c0760 100644 (file)
@@ -5,32 +5,32 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
   # test all routes which lead to this controller
   def test_routes
     assert_routing(
-      { :path => "/user/username/role/rolename/grant", :method => :post },
-      { :controller => "user_roles", :action => "grant", :display_name => "username", :role => "rolename" }
+      { :path => "/user/username/roles/rolename", :method => :post },
+      { :controller => "user_roles", :action => "create", :user_display_name => "username", :role => "rolename" }
     )
     assert_routing(
-      { :path => "/user/username/role/rolename/revoke", :method => :post },
-      { :controller => "user_roles", :action => "revoke", :display_name => "username", :role => "rolename" }
+      { :path => "/user/username/roles/rolename", :method => :delete },
+      { :controller => "user_roles", :action => "destroy", :user_display_name => "username", :role => "rolename" }
     )
   end
 
   ##
-  # test the grant action
-  def test_grant
+  # test the grant role action
+  def test_update
     target_user = create(:user)
     normal_user = create(:user)
     administrator_user = create(:administrator_user)
     super_user = create(:super_user)
 
     # Granting should fail when not logged in
-    post grant_role_path(target_user, "moderator")
+    post user_role_path(target_user, "moderator")
     assert_response :forbidden
 
     # Login as an unprivileged user
     session_for(normal_user)
 
     # Granting should still fail
-    post grant_role_path(target_user, "moderator")
+    post user_role_path(target_user, "moderator")
     assert_redirected_to :controller => :errors, :action => :forbidden
 
     # Login as an administrator
@@ -39,7 +39,7 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
     UserRole::ALL_ROLES.each do |role|
       # Granting a role to a non-existent user should fail
       assert_difference "UserRole.count", 0 do
-        post grant_role_path("non_existent_user", role)
+        post user_role_path("non_existent_user", role)
       end
       assert_response :not_found
       assert_template "users/no_such_user"
@@ -47,20 +47,20 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
 
       # Granting a role to a user that already has it should fail
       assert_no_difference "UserRole.count" do
-        post grant_role_path(super_user, role)
+        post user_role_path(super_user, role)
       end
       assert_redirected_to user_path(super_user)
       assert_equal "The user already has role #{role}.", flash[:error]
 
       # Granting a role to a user that doesn't have it should work...
       assert_difference "UserRole.count", 1 do
-        post grant_role_path(target_user, role)
+        post user_role_path(target_user, role)
       end
       assert_redirected_to user_path(target_user)
 
       # ...but trying a second time should fail
       assert_no_difference "UserRole.count" do
-        post grant_role_path(target_user, role)
+        post user_role_path(target_user, role)
       end
       assert_redirected_to user_path(target_user)
       assert_equal "The user already has role #{role}.", flash[:error]
@@ -68,29 +68,29 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
 
     # Granting a non-existent role should fail
     assert_difference "UserRole.count", 0 do
-      post grant_role_path(target_user, "no_such_role")
+      post user_role_path(target_user, "no_such_role")
     end
     assert_redirected_to user_path(target_user)
     assert_equal "The string 'no_such_role' is not a valid role.", flash[:error]
   end
 
   ##
-  # test the revoke action
-  def test_revoke
+  # test the revoke role action
+  def test_destroy
     target_user = create(:user)
     normal_user = create(:user)
     administrator_user = create(:administrator_user)
     super_user = create(:super_user)
 
     # Revoking should fail when not logged in
-    post revoke_role_path(target_user, "moderator")
+    delete user_role_path(target_user, "moderator")
     assert_response :forbidden
 
     # Login as an unprivileged user
     session_for(normal_user)
 
     # Revoking should still fail
-    post revoke_role_path(target_user, "moderator")
+    delete user_role_path(target_user, "moderator")
     assert_redirected_to :controller => :errors, :action => :forbidden
 
     # Login as an administrator
@@ -99,7 +99,7 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
     UserRole::ALL_ROLES.each do |role|
       # Removing a role from a non-existent user should fail
       assert_difference "UserRole.count", 0 do
-        post revoke_role_path("non_existent_user", role)
+        delete user_role_path("non_existent_user", role)
       end
       assert_response :not_found
       assert_template "users/no_such_user"
@@ -107,20 +107,20 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
 
       # Removing a role from a user that doesn't have it should fail
       assert_no_difference "UserRole.count" do
-        post revoke_role_path(target_user, role)
+        delete user_role_path(target_user, role)
       end
       assert_redirected_to user_path(target_user)
       assert_equal "The user does not have role #{role}.", flash[:error]
 
       # Removing a role from a user that has it should work...
       assert_difference "UserRole.count", -1 do
-        post revoke_role_path(super_user, role)
+        delete user_role_path(super_user, role)
       end
       assert_redirected_to user_path(super_user)
 
       # ...but trying a second time should fail
       assert_no_difference "UserRole.count" do
-        post revoke_role_path(super_user, role)
+        delete user_role_path(super_user, role)
       end
       assert_redirected_to user_path(super_user)
       assert_equal "The user does not have role #{role}.", flash[:error]
@@ -128,13 +128,13 @@ class UserRolesControllerTest < ActionDispatch::IntegrationTest
 
     # Revoking a non-existent role should fail
     assert_difference "UserRole.count", 0 do
-      post revoke_role_path(target_user, "no_such_role")
+      delete user_role_path(target_user, "no_such_role")
     end
     assert_redirected_to user_path(target_user)
     assert_equal "The string 'no_such_role' is not a valid role.", flash[:error]
 
     # Revoking administrator role from current user should fail
-    post revoke_role_path(administrator_user, "administrator")
+    delete user_role_path(administrator_user, "administrator")
     assert_redirected_to user_path(administrator_user)
     assert_equal "Cannot revoke administrator role from current user.", flash[:error]
   end
diff --git a/test/factories/note_subscriptions.rb b/test/factories/note_subscriptions.rb
new file mode 100644 (file)
index 0000000..5f09ec3
--- /dev/null
@@ -0,0 +1,3 @@
+FactoryBot.define do
+  factory :note_subscription
+end
index 56f5776ad575268fbfeba36f0052373d982342df..16c854a519983a7f30f959c337ad4434f3004e4b 100644 (file)
@@ -112,7 +112,7 @@ class UserHelperTest < ActionView::TestCase
   def test_auth_button
     button = auth_button("google")
     img_tag = "<img alt=\"Google logo\" class=\"rounded-1\" src=\"/images/auth_providers/google.svg\" width=\"36\" height=\"36\" />"
-    assert_equal("<a class=\"auth_button btn btn-light p-2\" title=\"Log in with Google\" rel=\"nofollow\" data-method=\"post\" href=\"/auth/google\">#{img_tag}</a>", button)
+    assert_equal("<a class=\"auth_button btn btn-outline-secondary border p-2\" title=\"Log in with Google\" rel=\"nofollow\" data-method=\"post\" href=\"/auth/google\">#{img_tag}</a>", button)
   end
 
   private
index 41366199c4f828479e25de389bc2d9cc2473fe3a..3b63889a356b1f174efa1c8308cf6783c9b0609a 100644 (file)
@@ -31,7 +31,7 @@ class UserRolesHelperTest < ActionView::TestCase
     create(:user) do |user|
       icon = role_icon(user, "moderator")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Grant moderator access"
         end
@@ -39,7 +39,7 @@ class UserRolesHelperTest < ActionView::TestCase
 
       icon = role_icon(user, "importer")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'importer')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Grant importer access"
         end
@@ -49,7 +49,7 @@ class UserRolesHelperTest < ActionView::TestCase
     create(:moderator_user) do |user|
       icon = role_icon(user, "moderator")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Revoke moderator access"
         end
@@ -57,7 +57,7 @@ class UserRolesHelperTest < ActionView::TestCase
 
       icon = role_icon(user, "importer")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'importer')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Grant importer access"
         end
@@ -67,7 +67,7 @@ class UserRolesHelperTest < ActionView::TestCase
     create(:importer_user) do |user|
       icon = role_icon(user, "moderator")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Grant moderator access"
         end
@@ -75,7 +75,7 @@ class UserRolesHelperTest < ActionView::TestCase
 
       icon = role_icon(user, "importer")
       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
-      assert_dom icon_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']", :count => 1 do
+      assert_dom icon_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']", :count => 1 do
         assert_dom "> svg", :count => 1 do
           assert_dom "> title", :text => "Revoke importer access"
         end
@@ -113,13 +113,13 @@ class UserRolesHelperTest < ActionView::TestCase
       icons = role_icons(user)
       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
       assert_dom icons_dom, "a:root", :count => 3
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant administrator access"
       end
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant moderator access"
       end
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant importer access"
       end
     end
@@ -128,13 +128,13 @@ class UserRolesHelperTest < ActionView::TestCase
       icons = role_icons(user)
       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
       assert_dom icons_dom, "a:root", :count => 3
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant administrator access"
       end
-      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']" do
         assert_dom "> svg > title", :text => "Revoke moderator access"
       end
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant importer access"
       end
     end
@@ -143,13 +143,13 @@ class UserRolesHelperTest < ActionView::TestCase
       icons = role_icons(user)
       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
       assert_dom icons_dom, "a:root", :count => 3
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant administrator access"
       end
-      assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='post']" do
         assert_dom "> svg > title", :text => "Grant moderator access"
       end
-      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']" do
         assert_dom "> svg > title", :text => "Revoke importer access"
       end
     end
@@ -158,13 +158,13 @@ class UserRolesHelperTest < ActionView::TestCase
       icons = role_icons(user)
       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
       assert_dom icons_dom, "a:root", :count => 3
-      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'administrator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'administrator')}'][data-method='delete']" do
         assert_dom "> svg > title", :text => "Revoke administrator access"
       end
-      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'moderator')}'][data-method='delete']" do
         assert_dom "> svg > title", :text => "Revoke moderator access"
       end
-      assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
+      assert_dom icons_dom, "a:root[href='#{user_role_path(user, 'importer')}'][data-method='delete']" do
         assert_dom "> svg > title", :text => "Revoke importer access"
       end
     end
diff --git a/vendor/assets/jquery/jquery.timers.js b/vendor/assets/jquery/jquery.timers.js
deleted file mode 100644 (file)
index ce66eaf..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * jQuery.timers - Timer abstractions for jQuery
- * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
- * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
- * Date: 2009/10/16
- *
- * @author Blair Mitchelmore
- * @version 1.2
- *
- **/
-
-jQuery.fn.extend({
-       everyTime: function(interval, label, fn, times) {
-               return this.each(function() {
-                       jQuery.timer.add(this, interval, label, fn, times);
-               });
-       },
-       oneTime: function(interval, label, fn) {
-               return this.each(function() {
-                       jQuery.timer.add(this, interval, label, fn, 1);
-               });
-       },
-       stopTime: function(label, fn) {
-               return this.each(function() {
-                       jQuery.timer.remove(this, label, fn);
-               });
-       }
-});
-
-jQuery.extend({
-       timer: {
-               global: [],
-               guid: 1,
-               dataKey: "jQuery.timer",
-               regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
-               powers: {
-                       // Yeah this is major overkill...
-                       'ms': 1,
-                       'cs': 10,
-                       'ds': 100,
-                       's': 1000,
-                       'das': 10000,
-                       'hs': 100000,
-                       'ks': 1000000
-               },
-               timeParse: function(value) {
-                       if (value == undefined || value == null)
-                               return null;
-                       var result = this.regex.exec(jQuery.trim(value.toString()));
-                       if (result[2]) {
-                               var num = parseFloat(result[1]);
-                               var mult = this.powers[result[2]] || 1;
-                               return num * mult;
-                       } else {
-                               return value;
-                       }
-               },
-               add: function(element, interval, label, fn, times) {
-                       var counter = 0;
-                       
-                       if (jQuery.isFunction(label)) {
-                               if (!times) 
-                                       times = fn;
-                               fn = label;
-                               label = interval;
-                       }
-                       
-                       interval = jQuery.timer.timeParse(interval);
-
-                       if (typeof interval != 'number' || isNaN(interval) || interval < 0)
-                               return;
-
-                       if (typeof times != 'number' || isNaN(times) || times < 0) 
-                               times = 0;
-                       
-                       times = times || 0;
-                       
-                       var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
-                       
-                       if (!timers[label])
-                               timers[label] = {};
-                       
-                       fn.timerID = fn.timerID || this.guid++;
-                       
-                       var handler = function() {
-                               if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
-                                       jQuery.timer.remove(element, label, fn);
-                       };
-                       
-                       handler.timerID = fn.timerID;
-                       
-                       if (!timers[label][fn.timerID])
-                               timers[label][fn.timerID] = window.setInterval(handler,interval);
-                       
-                       this.global.push( element );
-                       
-               },
-               remove: function(element, label, fn) {
-                       var timers = jQuery.data(element, this.dataKey), ret;
-                       
-                       if ( timers ) {
-                               
-                               if (!label) {
-                                       for ( label in timers )
-                                               this.remove(element, label, fn);
-                               } else if ( timers[label] ) {
-                                       if ( fn ) {
-                                               if ( fn.timerID ) {
-                                                       window.clearInterval(timers[label][fn.timerID]);
-                                                       delete timers[label][fn.timerID];
-                                               }
-                                       } else {
-                                               for ( var fn in timers[label] ) {
-                                                       window.clearInterval(timers[label][fn]);
-                                                       delete timers[label][fn];
-                                               }
-                                       }
-                                       
-                                       for ( ret in timers[label] ) break;
-                                       if ( !ret ) {
-                                               ret = null;
-                                               delete timers[label];
-                                       }
-                               }
-                               
-                               for ( ret in timers ) break;
-                               if ( !ret ) 
-                                       jQuery.removeData(element, this.dataKey);
-                       }
-               }
-       }
-});
-
-jQuery(window).bind("unload", function() {
-       jQuery.each(jQuery.timer.global, function(index, item) {
-               jQuery.timer.remove(item);
-       });
-});
\ No newline at end of file
index 6a396243aba960b79c84faa4da5bb70f150a316f..615866860be25561059c4ea9126c82ddd7acd186 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
   dependencies:
     eslint-visitor-keys "^3.3.0"
 
-"@eslint-community/regexpp@^4.11.0":
-  version "4.11.0"
-  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
-  integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
+"@eslint-community/regexpp@^4.12.1":
+  version "4.12.1"
+  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
+  integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
 
-"@eslint/config-array@^0.18.0":
-  version "0.18.0"
-  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
-  integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
+"@eslint/config-array@^0.19.0":
+  version "0.19.0"
+  resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.0.tgz#3251a528998de914d59bb21ba4c11767cf1b3519"
+  integrity sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==
   dependencies:
     "@eslint/object-schema" "^2.1.4"
     debug "^4.3.1"
     minimatch "^3.1.2"
 
-"@eslint/core@^0.7.0":
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3"
-  integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==
+"@eslint/core@^0.9.0":
+  version "0.9.0"
+  resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.0.tgz#168ee076f94b152c01ca416c3e5cf82290ab4fcd"
+  integrity sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==
 
-"@eslint/eslintrc@^3.1.0":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
-  integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
+"@eslint/eslintrc@^3.2.0":
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c"
+  integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==
   dependencies:
     ajv "^6.12.4"
     debug "^4.3.2"
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@9.13.0":
-  version "9.13.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547"
-  integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==
+"@eslint/js@9.15.0":
+  version "9.15.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5"
+  integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==
 
 "@eslint/object-schema@^2.1.4":
   version "2.1.4"
   resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
   integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
 
-"@eslint/plugin-kit@^0.2.0":
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz#8712dccae365d24e9eeecb7b346f85e750ba343d"
-  integrity sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==
+"@eslint/plugin-kit@^0.2.3":
+  version "0.2.3"
+  resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz#812980a6a41ecf3a8341719f92a6d1e784a2e0e8"
+  integrity sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==
   dependencies:
     levn "^0.4.1"
 
-"@humanfs/core@^0.19.0":
-  version "0.19.0"
-  resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.0.tgz#08db7a8c73bb07673d9ebd925f2dad746411fcec"
-  integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==
+"@humanfs/core@^0.19.1":
+  version "0.19.1"
+  resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
+  integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
 
-"@humanfs/node@^0.16.5":
-  version "0.16.5"
-  resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.5.tgz#a9febb7e7ad2aff65890fdc630938f8d20aa84ba"
-  integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==
+"@humanfs/node@^0.16.6":
+  version "0.16.6"
+  resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e"
+  integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
   dependencies:
-    "@humanfs/core" "^0.19.0"
+    "@humanfs/core" "^0.19.1"
     "@humanwhocodes/retry" "^0.3.0"
 
 "@humanwhocodes/module-importer@^1.0.1":
   resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
   integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
 
-"@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1":
+"@humanwhocodes/retry@^0.3.0":
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
   integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
 
+"@humanwhocodes/retry@^0.4.1":
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b"
+  integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
+
 "@types/estree@^1.0.6":
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
@@ -103,10 +108,10 @@ acorn-jsx@^5.3.2:
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
   integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-acorn@^8.12.0:
-  version "8.12.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c"
-  integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==
+acorn@^8.14.0:
+  version "8.14.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
+  integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
 
 ajv@^6.12.4:
   version "6.12.6"
@@ -184,10 +189,10 @@ concat-map@0.0.1:
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
-cross-spawn@^7.0.2:
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
-  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+cross-spawn@^7.0.5:
+  version "7.0.5"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82"
+  integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==
   dependencies:
     path-key "^3.1.0"
     shebang-command "^2.0.0"
@@ -241,10 +246,10 @@ eslint-formatter-compact@^8.40.0:
   resolved "https://registry.yarnpkg.com/eslint-formatter-compact/-/eslint-formatter-compact-8.40.0.tgz#d7455b2d75fd70e8c0e7a98a5e189f168e9dfe2d"
   integrity sha512-cwGUs113TgmTQXecx5kfRjB7m0y2wkDLSadPTE2pK6M/wO4N8PjmUaoWOFNCP9MHgsiZwgqd5bZFnDCnszC56Q==
 
-eslint-scope@^8.1.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30"
-  integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==
+eslint-scope@^8.2.0:
+  version "8.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
+  integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
   dependencies:
     esrecurse "^4.3.0"
     estraverse "^5.2.0"
@@ -254,36 +259,36 @@ eslint-visitor-keys@^3.3.0:
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
-eslint-visitor-keys@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c"
-  integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==
+eslint-visitor-keys@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
+  integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
 
 eslint@^9.0.0:
-  version "9.13.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6"
-  integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==
+  version "9.15.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.15.0.tgz#77c684a4e980e82135ebff8ee8f0a9106ce6b8a6"
+  integrity sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
-    "@eslint-community/regexpp" "^4.11.0"
-    "@eslint/config-array" "^0.18.0"
-    "@eslint/core" "^0.7.0"
-    "@eslint/eslintrc" "^3.1.0"
-    "@eslint/js" "9.13.0"
-    "@eslint/plugin-kit" "^0.2.0"
-    "@humanfs/node" "^0.16.5"
+    "@eslint-community/regexpp" "^4.12.1"
+    "@eslint/config-array" "^0.19.0"
+    "@eslint/core" "^0.9.0"
+    "@eslint/eslintrc" "^3.2.0"
+    "@eslint/js" "9.15.0"
+    "@eslint/plugin-kit" "^0.2.3"
+    "@humanfs/node" "^0.16.6"
     "@humanwhocodes/module-importer" "^1.0.1"
-    "@humanwhocodes/retry" "^0.3.1"
+    "@humanwhocodes/retry" "^0.4.1"
     "@types/estree" "^1.0.6"
     "@types/json-schema" "^7.0.15"
     ajv "^6.12.4"
     chalk "^4.0.0"
-    cross-spawn "^7.0.2"
+    cross-spawn "^7.0.5"
     debug "^4.3.2"
     escape-string-regexp "^4.0.0"
-    eslint-scope "^8.1.0"
-    eslint-visitor-keys "^4.1.0"
-    espree "^10.2.0"
+    eslint-scope "^8.2.0"
+    eslint-visitor-keys "^4.2.0"
+    espree "^10.3.0"
     esquery "^1.5.0"
     esutils "^2.0.2"
     fast-deep-equal "^3.1.3"
@@ -298,16 +303,15 @@ eslint@^9.0.0:
     minimatch "^3.1.2"
     natural-compare "^1.4.0"
     optionator "^0.9.3"
-    text-table "^0.2.0"
 
-espree@^10.0.1, espree@^10.2.0:
-  version "10.2.0"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6"
-  integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==
+espree@^10.0.1, espree@^10.3.0:
+  version "10.3.0"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
+  integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
   dependencies:
-    acorn "^8.12.0"
+    acorn "^8.14.0"
     acorn-jsx "^5.3.2"
-    eslint-visitor-keys "^4.1.0"
+    eslint-visitor-keys "^4.2.0"
 
 esquery@^1.5.0:
   version "1.5.0"
@@ -684,11 +688,6 @@ supports-color@^7.1.0:
   dependencies:
     has-flag "^4.0.0"
 
-text-table@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-
 type-check@^0.4.0, type-check@~0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"