]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/4262'
authorTom Hughes <tom@compton.nu>
Tue, 24 Oct 2023 16:37:48 +0000 (17:37 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 24 Oct 2023 16:37:48 +0000 (17:37 +0100)
127 files changed:
.github/workflows/docker.yml
.github/workflows/lint.yml
.rubocop.yml
DOCKER.md
Dockerfile
Gemfile
Gemfile.lock
INSTALL.md
app/assets/javascripts/index/directions.js
app/assets/stylesheets/common.scss
app/assets/stylesheets/print.scss
app/controllers/api/traces_controller.rb
app/controllers/application_controller.rb
app/controllers/diary_entries_controller.rb
app/controllers/traces_controller.rb
app/helpers/geocoder_helper.rb
app/helpers/user_helper.rb
app/helpers/user_roles_helper.rb
app/models/changeset_comment.rb
app/models/changeset_tag.rb
app/models/concerns/geo_record.rb
app/models/diary_entry_subscription.rb
app/models/friendship.rb
app/models/language.rb
app/models/node_tag.rb
app/models/note_comment.rb
app/models/oauth2_application.rb
app/models/oauth_nonce.rb
app/models/old_node.rb
app/models/old_node_tag.rb
app/models/old_relation.rb
app/models/old_relation_member.rb
app/models/old_relation_tag.rb
app/models/old_way.rb
app/models/old_way_node.rb
app/models/old_way_tag.rb
app/models/relation_member.rb
app/models/relation_tag.rb
app/models/tracetag.rb
app/models/user.rb
app/models/user_preference.rb
app/models/way_node.rb
app/models/way_tag.rb
app/views/account/deletions/show.html.erb
app/views/browse/changeset.html.erb
app/views/geocoder/error.html.erb
app/views/layouts/_flash.html.erb
app/views/layouts/_header.html.erb
app/views/layouts/_search.html.erb
app/views/layouts/error.html.erb
app/views/layouts/map.html.erb
app/views/oauth2_applications/_form.html.erb
app/views/oauth2_authorizations/new.html.erb
bin/setup
config/application.rb
config/docker.database.yml
config/environments/development.rb
config/environments/production.rb
config/environments/test.rb
config/i18n-tasks.yml
config/initializers/content_security_policy.rb
config/initializers/doorkeeper.rb
config/initializers/doorkeeper_openid_connect.rb [new file with mode: 0644]
config/initializers/filter_parameter_logging.rb
config/initializers/migrate.rb
config/initializers/new_framework_defaults_7_1.rb [new file with mode: 0644]
config/initializers/permissions_policy.rb
config/locales/be-Tarask.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.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/mk.yml
config/locales/nb.yml
config/locales/nl.yml
config/locales/pl.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sc.yml
config/locales/sh.yml [new file with mode: 0644]
config/locales/skr-arab.yml
config/locales/sl.yml
config/locales/sv.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/routes.rb
config/settings.yml
config/settings/test.yml
config/wiki_pages.yml
db/migrate/20230830115219_create_doorkeeper_openid_connect_tables.rb [new file with mode: 0644]
db/migrate/20230830115220_validate_create_doorkeeper_openid_connect_tables.rb [new file with mode: 0644]
db/migrate/20231007141103_add_primary_key_to_changeset_tags.rb [new file with mode: 0644]
db/structure.sql
lib/oauth.rb
lib/rich_text.rb
lib/tasks/auto_annotate_models.rake
script/vagrant/setup/provision.sh
test/controllers/api/changesets_controller_test.rb
test/controllers/api/nodes_controller_test.rb
test/controllers/api/traces_controller_test.rb
test/controllers/diary_entries_controller_test.rb
test/controllers/friendships_controller_test.rb
test/controllers/geocoder_controller_test.rb
test/controllers/traces_controller_test.rb
test/helpers/geocoder_helper_test.rb
test/helpers/user_roles_helper_test.rb
test/integration/oauth2_test.rb
test/integration/user_diaries_test.rb
test/models/node_test.rb
test/models/trace_test.rb
yarn.lock

index df617d4fbf2cd992db2842f9b7118b8a25df0714..771d307cfe8d412631548f0ebec2a629fe46b897 100644 (file)
@@ -19,17 +19,17 @@ jobs:
         touch config/settings.local.yml
     - name: Build Docker Image
       run: |
-        docker-compose build
-    - name: Start Docker-Compose
+        docker compose build
+    - name: Start Docker Compose
       run: |
-        docker-compose up -d
+        docker compose up -d
         sleep 15 # let the DB warm up a little
     - name: Prepare Database
       run: |
-        docker-compose run --rm web bundle exec rails db:migrate
-        docker-compose run --rm web bundle exec rails i18n:js:export
-        docker-compose run --rm web bundle exec rails assets:precompile
-        docker-compose run --rm web osmosis --rx docker/null-island.osm.xml --wd host=db database=openstreetmap user=openstreetmap password=openstreetmap validateSchemaVersion=no
+        docker compose run --rm web bundle exec rails db:migrate
+        docker compose run --rm web bundle exec rails i18n:js:export
+        docker compose run --rm web bundle exec rails assets:precompile
+        docker compose run --rm web osmosis --rx docker/null-island.osm.xml --wd host=db database=openstreetmap user=openstreetmap password=openstreetmap validateSchemaVersion=no
     - name: Test Basic Website
       run: |
         curl -siL http://127.0.0.1:3000 | egrep '^HTTP/1.1 200 OK'
@@ -37,5 +37,5 @@ jobs:
         curl -siL http://127.0.0.1:3000/api/0.6/node/1 | grep 'Null Island'
     - name: Test Complete Suite
       run: |
-        docker-compose run --rm web bundle exec rails db:test:prepare
-        docker-compose run --rm web bundle exec rails test:all
+        docker compose run --rm web bundle exec rails db:test:prepare
+        docker compose run --rm web bundle exec rails test:all
index 685937b034ea026708e29bb1edc2ebcb5b02ec4f..2050aaf3f264f416a41f58fa2cfeb4167eb8a7dc 100644 (file)
@@ -72,3 +72,27 @@ jobs:
         bundler-cache: true
     - name: Run brakeman
       run: bundle exec brakeman -q
+  annotate_models:
+    env:
+      RAILS_ENV: test
+    name: Rails Annotate Models
+    runs-on: ubuntu-22.04
+    steps:
+    - name: Check out code
+      uses: actions/checkout@v4
+    - name: Setup ruby
+      uses: ruby/setup-ruby@v1
+      with:
+        ruby-version: ${{ env.ruby }}
+        bundler-cache: true
+    - name: Setup database
+      run: |
+        sudo systemctl start postgresql
+        sudo -u postgres createuser -s $(id -un)
+        createdb openstreetmap
+        cp config/github.database.yml config/database.yml
+        bundle exec rails db:schema:load
+    - name: Run Annotate Models
+      run: bundle exec rails annotate_models
+    - name: Fail if model annotations are out of date
+      run: git diff --exit-code
index dc2a33a35b05d863e828a7afd5649ec8461534b4..1e18afd83581ba0fc47d728032b3ade65f091b1a 100644 (file)
@@ -48,6 +48,9 @@ Naming/MethodParameterName:
 Rails/CreateTableWithTimestamps:
   Enabled: false
 
+Rails/FindBy:
+  IgnoreWhereFirst: false
+
 Rails/FindEach:
   Enabled: false
 
index bddb9695bccaa213147ee693de732f0952168b0a..f6caa698898a4ce50a4bb2b8a6d4c266f120dbe4 100644 (file)
--- a/DOCKER.md
+++ b/DOCKER.md
@@ -1,11 +1,26 @@
 # Using Docker and Docker Compose for Development and Testing
 
-These instructions are designed for setting up `openstreetmap-website` for development and testing using [Docker](https://www.docker.com/). This will allow you to install the OpenStreetMap application and all its dependencies in Docker images and then run them in containers, almost with a single command. You will need to install Docker and Docker Compose on your development machine:
+These instructions are designed for setting up `openstreetmap-website` for development and testing using [Docker](https://www.docker.com/). This will allow you to install the OpenStreetMap application and all its dependencies in Docker images and then run them in containers, almost with a single command.
 
-- [Install Docker](https://docs.docker.com/install/)
-- [Install Docker Compose](https://docs.docker.com/compose/install/)
+## Install Docker
 
-**Windows users: You must enable git symlinks before cloning the repository.** This repository uses symbolic links that are not enabled by default on Windows git. To enable them, [turn on Developer Mode](https://windowsreport.com/windows-11-developer-mode/) on Windows and run `git config --global core.symlinks true` to enable symlinks in Git. See [this StackOverflow question](https://stackoverflow.com/questions/5917249/git-symbolic-links-in-windows) for more information.
+### Windows
+
+1. Use Docker Desktop via [docker.com Download](https://www.docker.com/products/docker-desktop/).
+
+2. You have to enable git symlinks before cloning the repository.
+   This repository uses symbolic links that are not enabled by default on Windows git. To enable them, [turn on Developer Mode](https://windowsreport.com/windows-11-developer-mode/) on Windows and run `git config --global core.symlinks true` to enable symlinks in Git. See [this StackOverflow question](https://stackoverflow.com/questions/5917249/git-symbolic-links-in-windows) for more information.
+
+### Mac
+
+- Use Docker Desktop via [docker.com Download](https://www.docker.com/products/docker-desktop/).
+- Or [Homebrew](https://formulae.brew.sh/cask/docker).
+
+### Linux
+
+Use [Docker Engine](https://docs.docker.com/engine/install/ubuntu/) with the [docker-compose-plugin](https://docs.docker.com/compose/install/linux/)
+
+## Clone repository
 
 The first step is to fork/clone the repo to your local machine:
 
@@ -37,30 +52,34 @@ 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:
 
-- You can tail logs of a running container with a command like this: `docker-compose logs -f web` or `docker-compose logs -f db`.
-- Instead of running the containers in the background with the `-d` flag, you can launch the containers in the foreground with `docker-compose up`. The downside of this is that the logs of all the 'services' defined in `docker-compose.yml` will be intermingled. If you don't want this you can mix and match - for example, you can run the database in background with `docker-compose up -d db` and then run the Rails app in the foreground via `docker-compose up web`.
+- You can tail logs of a running container with a command like this: `docker compose logs -f web` or `docker compose logs -f db`.
+- Instead of running the containers in the background with the `-d` flag, you can launch the containers in the foreground with `docker compose up`. The downside of this is that the logs of all the 'services' defined in `docker-compose.yml` will be intermingled. If you don't want this you can mix and match - for example, you can run the database in background with `docker compose up -d db` and then run the Rails app in the foreground via `docker compose up web`.
 
 ### Migrations
 
 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
 
-Run the test suite by running:
+Prepare the test database:
+
+     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
 
 ### Loading an OSM extract
 
@@ -72,7 +91,7 @@ For example, let's download the District of Columbia from Geofabrik or [any othe
 
 You can now use Docker to load this extract into your local Docker-based OSM instance:
 
-    docker-compose run --rm web osmosis \
+    docker compose run --rm web osmosis \
         -verbose    \
         --read-pbf district-of-columbia-latest.osm.pbf \
         --log-progress \
@@ -84,7 +103,7 @@ You can now use Docker to load this extract into your local Docker-based OSM ins
 
 **Windows users:** Powershell uses `` ` `` and CMD uses `^` at the end of each line, e.g.:
 
-    docker-compose run --rm web osmosis `
+    docker compose run --rm web osmosis `
         -verbose    `
         --read-pbf district-of-columbia-latest.osm.pbf `
         --log-progress `
@@ -104,12 +123,12 @@ 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 446f71ac32e8d25702a89c00d3af931400a2728b..28c3a2ea64cc6b664b777cd129ad0a2fdde114d2 100644 (file)
@@ -19,6 +19,7 @@ RUN apt-get update \
       libvips-dev \
       libxml2-dev \
       libxslt1-dev \
+      libyaml-dev \
       locales \
       postgresql-client \
       ruby \
diff --git a/Gemfile b/Gemfile
index 8be817547ef6ae92b4285ebb363ebc562db0df9f..8f0d29d5a9df16c0001dbf80b8320747fe33d00b 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
 source "https://rubygems.org"
 
 # Require rails
-gem "rails", "~> 7.0.0"
+gem "rails", "~> 7.1.0"
 
 # Require json for multi_json
 gem "json"
@@ -48,7 +48,6 @@ gem "active_record_union"
 gem "bootstrap", :github => "twbs/bootstrap-rubygem", :ref => "fde1edff90d9219bbef48ecc6a65f13835269bcd"
 gem "bootstrap_form", "~> 5.0"
 gem "cancancan"
-gem "composite_primary_keys", "~> 14.0.0"
 gem "config"
 gem "delayed_job_active_record"
 gem "frozen_record"
@@ -81,6 +80,7 @@ gem "omniauth-rails_csrf_protection", "~> 1.0"
 # Doorkeeper for OAuth2
 gem "doorkeeper"
 gem "doorkeeper-i18n"
+gem "doorkeeper-openid_connect"
 
 # Markdown formatting support
 gem "kramdown"
@@ -135,7 +135,6 @@ gem "image_processing"
 
 # Gems useful for development
 group :development do
-  gem "annotate"
   gem "better_errors"
   gem "binding_of_caller"
   gem "debug_inspector"
@@ -150,6 +149,7 @@ group :test do
   gem "capybara", ">= 2.15"
   gem "erb_lint", :require => false
   gem "factory_bot_rails"
+  gem "jwt"
   gem "minitest", "~> 5.1"
   gem "puma", "~> 5.6"
   gem "rails-controller-testing"
@@ -165,3 +165,7 @@ group :test do
   gem "simplecov-lcov", :require => false
   gem "webmock"
 end
+
+group :development, :test do
+  gem "annotate"
+end
index 7438ec809d243ac51730db61d4dc9f61820472b5..80f7b2936b559e3763e2d2d457a3cceb822b66a3 100644 (file)
@@ -12,76 +12,84 @@ GEM
   specs:
     aasm (5.5.0)
       concurrent-ruby (~> 1.0)
-    actioncable (7.0.8)
-      actionpack (= 7.0.8)
-      activesupport (= 7.0.8)
+    actioncable (7.1.1)
+      actionpack (= 7.1.1)
+      activesupport (= 7.1.1)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailbox (7.0.8)
-      actionpack (= 7.0.8)
-      activejob (= 7.0.8)
-      activerecord (= 7.0.8)
-      activestorage (= 7.0.8)
-      activesupport (= 7.0.8)
+      zeitwerk (~> 2.6)
+    actionmailbox (7.1.1)
+      actionpack (= 7.1.1)
+      activejob (= 7.1.1)
+      activerecord (= 7.1.1)
+      activestorage (= 7.1.1)
+      activesupport (= 7.1.1)
       mail (>= 2.7.1)
       net-imap
       net-pop
       net-smtp
-    actionmailer (7.0.8)
-      actionpack (= 7.0.8)
-      actionview (= 7.0.8)
-      activejob (= 7.0.8)
-      activesupport (= 7.0.8)
+    actionmailer (7.1.1)
+      actionpack (= 7.1.1)
+      actionview (= 7.1.1)
+      activejob (= 7.1.1)
+      activesupport (= 7.1.1)
       mail (~> 2.5, >= 2.5.4)
       net-imap
       net-pop
       net-smtp
-      rails-dom-testing (~> 2.0)
-    actionpack (7.0.8)
-      actionview (= 7.0.8)
-      activesupport (= 7.0.8)
-      rack (~> 2.0, >= 2.2.4)
+      rails-dom-testing (~> 2.2)
+    actionpack (7.1.1)
+      actionview (= 7.1.1)
+      activesupport (= 7.1.1)
+      nokogiri (>= 1.8.5)
+      rack (>= 2.2.4)
+      rack-session (>= 1.0.1)
       rack-test (>= 0.6.3)
-      rails-dom-testing (~> 2.0)
-      rails-html-sanitizer (~> 1.0, >= 1.2.0)
+      rails-dom-testing (~> 2.2)
+      rails-html-sanitizer (~> 1.6)
     actionpack-page_caching (1.2.4)
       actionpack (>= 4.0.0)
-    actiontext (7.0.8)
-      actionpack (= 7.0.8)
-      activerecord (= 7.0.8)
-      activestorage (= 7.0.8)
-      activesupport (= 7.0.8)
+    actiontext (7.1.1)
+      actionpack (= 7.1.1)
+      activerecord (= 7.1.1)
+      activestorage (= 7.1.1)
+      activesupport (= 7.1.1)
       globalid (>= 0.6.0)
       nokogiri (>= 1.8.5)
-    actionview (7.0.8)
-      activesupport (= 7.0.8)
+    actionview (7.1.1)
+      activesupport (= 7.1.1)
       builder (~> 3.1)
-      erubi (~> 1.4)
-      rails-dom-testing (~> 2.0)
-      rails-html-sanitizer (~> 1.1, >= 1.2.0)
+      erubi (~> 1.11)
+      rails-dom-testing (~> 2.2)
+      rails-html-sanitizer (~> 1.6)
     active_record_union (1.3.0)
       activerecord (>= 4.0)
-    activejob (7.0.8)
-      activesupport (= 7.0.8)
+    activejob (7.1.1)
+      activesupport (= 7.1.1)
       globalid (>= 0.3.6)
-    activemodel (7.0.8)
-      activesupport (= 7.0.8)
-    activerecord (7.0.8)
-      activemodel (= 7.0.8)
-      activesupport (= 7.0.8)
+    activemodel (7.1.1)
+      activesupport (= 7.1.1)
+    activerecord (7.1.1)
+      activemodel (= 7.1.1)
+      activesupport (= 7.1.1)
+      timeout (>= 0.4.0)
     activerecord-import (1.5.0)
       activerecord (>= 4.2)
-    activestorage (7.0.8)
-      actionpack (= 7.0.8)
-      activejob (= 7.0.8)
-      activerecord (= 7.0.8)
-      activesupport (= 7.0.8)
+    activestorage (7.1.1)
+      actionpack (= 7.1.1)
+      activejob (= 7.1.1)
+      activerecord (= 7.1.1)
+      activesupport (= 7.1.1)
       marcel (~> 1.0)
-      mini_mime (>= 1.1.0)
-    activesupport (7.0.8)
+    activesupport (7.1.1)
+      base64
+      bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
+      connection_pool (>= 2.2.5)
+      drb
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
+      mutex_m
       tzinfo (~> 2.0)
     addressable (2.8.5)
       public_suffix (>= 2.0.2, < 6.0)
@@ -95,16 +103,16 @@ GEM
     autoprefixer-rails (10.4.15.0)
       execjs (~> 2)
     aws-eventstream (1.2.0)
-    aws-partitions (1.828.0)
-    aws-sdk-core (3.183.1)
+    aws-partitions (1.840.0)
+    aws-sdk-core (3.185.1)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.651.0)
       aws-sigv4 (~> 1.5)
       jmespath (~> 1, >= 1.6.1)
-    aws-sdk-kms (1.71.0)
-      aws-sdk-core (~> 3, >= 3.177.0)
+    aws-sdk-kms (1.72.0)
+      aws-sdk-core (~> 3, >= 3.184.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.135.0)
+    aws-sdk-s3 (1.136.0)
       aws-sdk-core (~> 3, >= 3.181.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.6)
@@ -122,6 +130,7 @@ GEM
       erubi (~> 1.4)
       parser (>= 2.4)
       smart_properties
+    bigdecimal (3.1.4)
     binding_of_caller (1.0.0)
       debug_inspector (>= 0.0.1)
     bootsnap (1.16.0)
@@ -136,8 +145,8 @@ GEM
     bzip2-ffi (1.1.1)
       ffi (~> 1.0)
     cancancan (3.5.0)
-    canonical-rails (0.2.14)
-      rails (>= 4.1, <= 7.1)
+    canonical-rails (0.2.15)
+      actionview (>= 4.1, <= 7.2)
     capybara (3.39.2)
       addressable
       matrix
@@ -147,10 +156,8 @@ GEM
       rack-test (>= 0.6.3)
       regexp_parser (>= 1.5, < 3.0)
       xpath (~> 3.2)
-    composite_primary_keys (14.0.6)
-      activerecord (~> 7.0.2)
     concurrent-ruby (1.2.2)
-    config (4.2.1)
+    config (5.0.0)
       deep_merge (~> 1.2, >= 1.2.1)
       dry-validation (~> 1.0, >= 1.0.0)
     connection_pool (2.4.1)
@@ -171,14 +178,19 @@ GEM
     deep_merge (1.2.2)
     delayed_job (4.1.11)
       activesupport (>= 3.0, < 8.0)
-    delayed_job_active_record (4.1.7)
+    delayed_job_active_record (4.1.8)
       activerecord (>= 3.0, < 8.0)
       delayed_job (>= 3.0, < 5)
     docile (1.4.0)
     doorkeeper (5.6.6)
       railties (>= 5)
-    doorkeeper-i18n (5.2.6)
+    doorkeeper-i18n (5.2.7)
       doorkeeper (>= 5.2)
+    doorkeeper-openid_connect (1.8.7)
+      doorkeeper (>= 5.5, < 5.7)
+      jwt (>= 2.5)
+    drb (2.1.1)
+      ruby2_keywords
     dry-configurable (1.1.0)
       dry-core (~> 1.0, < 2)
       zeitwerk (~> 2.6)
@@ -231,7 +243,7 @@ GEM
       faraday-net_http (>= 2.0, < 3.1)
       ruby2_keywords (>= 0.0.4)
     faraday-net_http (3.0.2)
-    ffi (1.16.2)
+    ffi (1.16.3)
     ffi-compiler (1.0.1)
       ffi (>= 1.0.0)
       rake
@@ -244,7 +256,7 @@ GEM
       ffi (>= 1.0.0)
     globalid (1.2.1)
       activesupport (>= 6.1)
-    google-protobuf (3.24.3)
+    google-protobuf (3.24.4)
     hashdiff (1.0.1)
     hashie (5.0.0)
     highline (2.1.0)
@@ -254,14 +266,14 @@ GEM
       concurrent-ruby (~> 1.0)
     i18n-js (3.9.2)
       i18n (>= 0.6.6)
-    i18n-tasks (1.0.12)
+    i18n-tasks (1.0.13)
       activesupport (>= 4.0.2)
       ast (>= 2.1.0)
       better_html (>= 1.0, < 3.0)
       erubi
       highline (>= 2.0.0)
       i18n
-      parser (>= 2.2.3.0)
+      parser (>= 3.2.2.1)
       rails-i18n
       rainbow (>= 2.2.2, < 4.0)
       terminal-table (>= 1.5.1)
@@ -280,6 +292,10 @@ GEM
       ruby-vips (>= 2.0.17, < 3)
     image_size (3.3.0)
     in_threads (1.6.0)
+    io-console (0.6.0)
+    irb (1.8.3)
+      rdoc
+      reline (>= 0.3.8)
     jbuilder (2.11.5)
       actionview (>= 5.0.0)
       activesupport (>= 5.0.0)
@@ -301,7 +317,7 @@ GEM
     logstasher (2.1.5)
       activesupport (>= 5.2)
       request_store
-    loofah (2.21.3)
+    loofah (2.21.4)
       crass (~> 1.0.2)
       nokogiri (>= 1.12.0)
     mail (2.8.1)
@@ -312,15 +328,15 @@ GEM
     marcel (1.0.2)
     matrix (0.4.2)
     maxminddb (0.1.22)
-    method_source (1.0.0)
     mini_magick (4.12.0)
     mini_mime (1.1.5)
-    mini_portile2 (2.8.4)
+    mini_portile2 (2.8.5)
     minitest (5.20.0)
     msgpack (1.7.2)
     multi_json (1.15.0)
     multi_xml (0.6.0)
-    net-imap (0.3.7)
+    mutex_m (0.1.2)
+    net-imap (0.4.2)
       date
       net-protocol
     net-pop (0.1.2)
@@ -380,12 +396,14 @@ GEM
       omniauth (~> 2.0)
     openstreetmap-deadlock_retry (1.3.1)
     parallel (1.23.0)
-    parser (3.2.2.3)
+    parser (3.2.2.4)
       ast (~> 2.4.1)
       racc
     pg (1.5.4)
     popper_js (2.11.8)
     progress (3.6.0)
+    psych (5.1.1.1)
+      stringio
     public_suffix (5.0.3)
     puma (5.6.7)
       nio4r (~> 2.0)
@@ -400,23 +418,28 @@ GEM
       ruby-openid (>= 2.1.8)
     rack-protection (3.1.0)
       rack (~> 2.2, >= 2.2.4)
+    rack-session (1.0.1)
+      rack (< 3)
     rack-test (2.1.0)
       rack (>= 1.3)
     rack-uri_sanitizer (0.0.2)
-    rails (7.0.8)
-      actioncable (= 7.0.8)
-      actionmailbox (= 7.0.8)
-      actionmailer (= 7.0.8)
-      actionpack (= 7.0.8)
-      actiontext (= 7.0.8)
-      actionview (= 7.0.8)
-      activejob (= 7.0.8)
-      activemodel (= 7.0.8)
-      activerecord (= 7.0.8)
-      activestorage (= 7.0.8)
-      activesupport (= 7.0.8)
+    rackup (1.0.0)
+      rack (< 3)
+      webrick
+    rails (7.1.1)
+      actioncable (= 7.1.1)
+      actionmailbox (= 7.1.1)
+      actionmailer (= 7.1.1)
+      actionpack (= 7.1.1)
+      actiontext (= 7.1.1)
+      actionview (= 7.1.1)
+      activejob (= 7.1.1)
+      activemodel (= 7.1.1)
+      activerecord (= 7.1.1)
+      activestorage (= 7.1.1)
+      activesupport (= 7.1.1)
       bundler (>= 1.15.0)
-      railties (= 7.0.8)
+      railties (= 7.1.1)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
       actionview (>= 5.0.1.rc1)
@@ -431,31 +454,36 @@ GEM
     rails-i18n (7.0.8)
       i18n (>= 0.7, < 2)
       railties (>= 6.0.0, < 8)
-    railties (7.0.8)
-      actionpack (= 7.0.8)
-      activesupport (= 7.0.8)
-      method_source
+    railties (7.1.1)
+      actionpack (= 7.1.1)
+      activesupport (= 7.1.1)
+      irb
+      rackup (>= 1.0.0)
       rake (>= 12.2)
-      thor (~> 1.0)
-      zeitwerk (~> 2.5)
+      thor (~> 1.0, >= 1.2.2)
+      zeitwerk (~> 2.6)
     rainbow (3.1.1)
     rake (13.0.6)
     rb-fsevent (0.11.2)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
-    regexp_parser (2.8.1)
+    rdoc (6.5.0)
+      psych (>= 4.0.0)
+    regexp_parser (2.8.2)
+    reline (0.3.9)
+      io-console (~> 0.5)
     request_store (1.5.1)
       rack (>= 1.4)
     rexml (3.2.6)
     rinku (2.0.6)
     rotp (6.3.0)
     rouge (4.1.3)
-    rubocop (1.56.3)
+    rubocop (1.57.1)
       base64 (~> 0.1.1)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
-      parser (>= 3.2.2.3)
+      parser (>= 3.2.2.4)
       rainbow (>= 2.2.2, < 4.0)
       regexp_parser (>= 1.8, < 3.0)
       rexml (>= 3.2.5, < 4.0)
@@ -468,12 +496,12 @@ GEM
       rubocop (~> 1.41)
     rubocop-factory_bot (2.24.0)
       rubocop (~> 1.33)
-    rubocop-minitest (0.32.1)
+    rubocop-minitest (0.33.0)
       rubocop (>= 1.39, < 2.0)
     rubocop-performance (1.19.1)
       rubocop (>= 1.7.0, < 2.0)
       rubocop-ast (>= 0.4.0)
-    rubocop-rails (2.21.1)
+    rubocop-rails (2.21.2)
       activesupport (>= 4.2.0)
       rack (>= 1.1)
       rubocop (>= 1.33.0, < 2.0)
@@ -481,7 +509,7 @@ GEM
       rubocop (~> 1.0)
     ruby-openid (2.9.2)
     ruby-progressbar (1.13.0)
-    ruby-vips (2.1.4)
+    ruby-vips (2.2.0)
       ffi (~> 1.12)
     ruby2_keywords (0.0.5)
     rubyzip (2.3.2)
@@ -492,7 +520,7 @@ GEM
       google-protobuf (~> 3.23)
       rake (>= 13.0.0)
     secure_headers (6.5.0)
-    selenium-webdriver (4.13.1)
+    selenium-webdriver (4.14.0)
       rexml (~> 3.2, >= 3.2.5)
       rubyzip (>= 1.2.2, < 3.0)
       websocket (~> 1.0)
@@ -517,18 +545,19 @@ GEM
       actionpack (>= 5.2)
       activesupport (>= 5.2)
       sprockets (>= 3.0.0)
-    strong_migrations (1.6.3)
+    stringio (3.0.8)
+    strong_migrations (1.6.4)
       activerecord (>= 5.2)
     terminal-table (3.0.2)
       unicode-display_width (>= 1.1.1, < 3)
-    terser (1.1.18)
+    terser (1.1.19)
       execjs (>= 0.3.0, < 3)
-    thor (1.2.2)
+    thor (1.3.0)
     tilt (2.3.0)
     timeout (0.4.0)
     tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
-    unicode-display_width (2.4.2)
+    unicode-display_width (2.5.0)
     validates_email_format_of (1.7.2)
       i18n
     vendorer (0.2.0)
@@ -537,6 +566,7 @@ GEM
       addressable (>= 2.8.0)
       crack (>= 0.3.2)
       hashdiff (>= 0.4.0, < 2.0.0)
+    webrick (1.8.1)
     websocket (1.2.10)
     websocket-driver (0.7.6)
       websocket-extensions (>= 0.1.0)
@@ -568,7 +598,6 @@ DEPENDENCIES
   cancancan
   canonical-rails
   capybara (>= 2.15)
-  composite_primary_keys (~> 14.0.0)
   config
   connection_pool
   dalli
@@ -577,6 +606,7 @@ DEPENDENCIES
   delayed_job_active_record
   doorkeeper
   doorkeeper-i18n
+  doorkeeper-openid_connect
   erb_lint
   factory_bot_rails
   faraday
@@ -592,6 +622,7 @@ DEPENDENCIES
   jbuilder (~> 2.7)
   jquery-rails
   json
+  jwt
   kgio
   kramdown
   libxml-ruby (>= 2.0.5)
@@ -616,7 +647,7 @@ DEPENDENCIES
   r2 (~> 0.2.7)
   rack-cors
   rack-uri_sanitizer
-  rails (~> 7.0.0)
+  rails (~> 7.1.0)
   rails-controller-testing
   rails-i18n (~> 7.0.0)
   rinku (>= 2.0.6)
index 74c736f4c735d6d29d9693d3a7f15819e0966d1b..59e924b9b86da2280fc2cfb4d6cb94abad782984 100644 (file)
@@ -35,7 +35,7 @@ sudo apt-get install ruby ruby-dev ruby-bundler \
                      libvips-dev libxml2-dev libxslt1-dev nodejs \
                      build-essential git-core \
                      postgresql postgresql-contrib libpq-dev libsasl2-dev \
-                     libffi-dev libgd-dev libarchive-dev libbz2-dev npm
+                     libffi-dev libgd-dev libarchive-dev libyaml-dev libbz2-dev npm
 sudo npm install --global yarn
 ```
 
@@ -51,7 +51,7 @@ sudo dnf install ruby ruby-devel rubygem-rdoc rubygem-bundler rubygems \
                  gcc gcc-c++ git \
                  postgresql postgresql-server postgresql-contrib libpq-devel \
                  perl-podlators libffi-devel gd-devel libarchive-devel \
-                 bzip2-devel nodejs-yarn vips-devel
+                 libyaml-devel bzip2-devel nodejs-yarn vips-devel
 ```
 
 If you didn't already have PostgreSQL installed then create a PostgreSQL instance and start the server:
index c86c8ad02ccde0813d9ae03c6011505bd6933536..ef37e73caf42005bdedba351b53ff28c7cd4e9ce 100644 (file)
@@ -244,7 +244,7 @@ OSM.Directions = function (map) {
         map.removeLayer(polyline);
 
         if (reportErrors) {
-          $("#sidebar_content").html("<p class=\"search_results_error\">" + I18n.t("javascripts.directions.errors.no_route") + "</p>");
+          $("#sidebar_content").html("<div class=\"alert alert-danger\">" + I18n.t("javascripts.directions.errors.no_route") + "</div>");
         }
 
         return;
@@ -307,7 +307,7 @@ OSM.Directions = function (map) {
         var row = $("<tr class='turn'/>");
         row.append("<td class='border-0'><div class='direction i" + direction + "'/></td> ");
         row.append("<td>" + instruction);
-        row.append("<td class='distance'>" + dist);
+        row.append("<td class='distance text-muted text-end'>" + dist);
 
         row.on("click", function () {
           popup
index 6ff46c07ce5be5304b8d42d0cfc777bef7974b85..92f3347d17bc27adc2bc1413e85d5e6fa98f81ac 100644 (file)
@@ -109,31 +109,14 @@ header {
     float: left;
   }
 
-  a, a:hover {
-    text-decoration: none;
-  }
-
   img.logo {
-    width: 30px;
-    height: 30px;
     margin-top: -2px;
-    vertical-align: middle;
   }
 
   h1 {
     font-size: 18px;
-    font-weight: 600;
     line-height: 1.2;
-    margin: 0;
     padding-top: 15px;
-
-    a {
-      color: #000;
-    }
-
-    a:hover {
-      color: #000;
-    }
   }
 
   .btn {
@@ -187,22 +170,6 @@ nav.secondary {
     color: darken($darkgrey, 25%);
   }
 
-  .login-menu {
-    .btn-outline-secondary {
-      @include button-outline-variant($darkgrey, $color-hover: $white, $active-color: $white);
-    }
-  }
-
-  .user-menu {
-    .btn-outline-secondary {
-      @include button-outline-variant($darkgrey, $color-hover: $darkgrey, $active-background: white, $active-border: $darkgrey);
-      border-color: $grey;
-      &:hover {
-        border-color: $grey;
-      }
-    }
-  }
-
   #inboxanchor {
     background-color: lighten($grey, 10%);
   }
@@ -598,10 +565,6 @@ body.small-nav {
 
 /* Rules for attribution text under the main map shown on printouts */
 
-#attribution {
-  display: none;
-}
-
 .donate-attr { color: darken($green, 10%) !important; }
 
 /* Rules for the sidebar */
@@ -671,9 +634,8 @@ header .search_forms,
 /* Rules for search sidebar */
 
 #sidebar .search_results_entry {
-  ul li {
-    cursor: pointer;
-    &.selected { background: $list-highlight; }
+  ul li.selected {
+    background: $list-highlight;
   }
 
   .search_more .loader {
@@ -681,11 +643,6 @@ header .search_forms,
   }
 }
 
-.search_results_error {
-  color: #f00;
-  padding: 10px 20px;
-}
-
 /* Rules for routing */
 
 div.direction {
@@ -699,8 +656,6 @@ div.direction.i#{$i} { background-position: #{($i)*-20}px 0px; }
 }
 
 td.distance {
-    color: $darkgrey;
-    text-align: right;
     font-size: x-small;
 }
 tr.turn {
@@ -796,12 +751,6 @@ tr.turn:hover {
     }
   }
 
-  .subscribe-buttons input {
-    font-size: 90%;
-    line-height: 15px;
-    min-height: 20px;
-  }
-
   span.action-button:hover {
     cursor: pointer;
     text-decoration: underline;
@@ -983,12 +932,6 @@ tr.turn:hover {
   }
 }
 
-/* Rules for the user list */
-
-#user_list {
-  width: 100%;
-}
-
 /* Rules for the diary entry page */
 
 .diary_entries {
@@ -1026,12 +969,6 @@ tr.turn:hover {
   }
 }
 
-/* Rules for the oauth authorization page */
-
-.oauth-authorize ul {
-  list-style: none;
-}
-
 /* Rules for messages pages */
 
 .messages {
index a4afdf576e7e7261956fcd00345ac491bd432db2..35700fc5f2f4c91eb0110b40541b17c4a5f9dcb0 100644 (file)
@@ -55,18 +55,12 @@ header,
   page-break-inside: avoid;
   height: 40px;
   font-size: 12px;
-  text-align: center;
 
   table {
     width: 100%
   }
 }
 
-.attribution_license,
-.attribution_project {
-  text-align: left;
-}
-
 .attribution_notice {
   text-align: center;
 }
index 629617f0b127c01685ed460f7a7ed0d688da89e6..b66aead38e1506e3afe3390da38c28853ace81e6 100644 (file)
@@ -115,7 +115,7 @@ module Api
       trace.save!
 
       # Finally save the user's preferred privacy level
-      if pref = current_user.preferences.where(:k => "gps.trace.visibility").first
+      if pref = current_user.preferences.find_by(:k => "gps.trace.visibility")
         pref.v = visibility
         pref.save
       else
index a30816a8ede740eaf3adf8f8be7165db0d23a193..c830d4bcd37bbce3177e80dd295cb4067bae8299 100644 (file)
@@ -22,7 +22,7 @@ class ApplicationController < ActionController::Base
 
   def authorize_web
     if session[:user]
-      self.current_user = User.where(:id => session[:user], :status => %w[active confirmed suspended]).first
+      self.current_user = User.find_by(:id => session[:user], :status => %w[active confirmed suspended])
 
       if session[:fingerprint] &&
          session[:fingerprint] != current_user.fingerprint
index a1cd6ab0ed2d9023a4f3a0e4f0da64ea4cd95d8f..6db32797adffe5c582a381f8000781ae4090e97e 100644 (file)
@@ -61,7 +61,7 @@ class DiaryEntriesController < ApplicationController
   def show
     entries = @user.diary_entries
     entries = entries.visible unless can? :unhide, DiaryEntry
-    @entry = entries.where(:id => params[:id]).first
+    @entry = entries.find_by(:id => params[:id])
     if @entry
       @title = t ".title", :user => params[:display_name], :title => @entry.title
       @comments = can?(:unhidecomment, DiaryEntry) ? @entry.comments : @entry.visible_comments
@@ -74,7 +74,7 @@ class DiaryEntriesController < ApplicationController
   def new
     @title = t ".title"
 
-    default_lang = current_user.preferences.where(:k => "diary.default_language").first
+    default_lang = current_user.preferences.find_by(:k => "diary.default_language")
     lang_code = default_lang ? default_lang.v : current_user.preferred_language
     @diary_entry = DiaryEntry.new(entry_params.merge(:language_code => lang_code))
     set_map_location
@@ -99,7 +99,7 @@ class DiaryEntriesController < ApplicationController
     @diary_entry.user = current_user
 
     if @diary_entry.save
-      default_lang = current_user.preferences.where(:k => "diary.default_language").first
+      default_lang = current_user.preferences.find_by(:k => "diary.default_language")
       if default_lang
         default_lang.v = @diary_entry.language_code
         default_lang.save!
@@ -235,7 +235,7 @@ class DiaryEntriesController < ApplicationController
   def comments
     @title = t ".title", :user => @user.display_name
 
-    comments = DiaryComment.where(:users => @user)
+    comments = DiaryComment.where(:user => @user)
     comments = comments.visible unless can? :unhidecomment, DiaryEntry
 
     @params = params.permit(:display_name, :before, :after)
index 90ab34a48c406d27ecc31b3418c6ad48d94bb4c1..242f8113c2783430b8b67cffadc34b0b71e95ac1 100644 (file)
@@ -19,7 +19,7 @@ class TracesController < ApplicationController
     # from display name, pick up user id if one user's traces only
     display_name = params[:display_name]
     if display_name.present?
-      target_user = User.active.where(:display_name => display_name).first
+      target_user = User.active.find_by(:display_name => display_name)
       if target_user.nil?
         render_unknown_user display_name
         return
@@ -283,7 +283,7 @@ class TracesController < ApplicationController
     # Save the trace object
     if trace.save
       # Finally save the user's preferred privacy level
-      if pref = current_user.preferences.where(:k => "gps.trace.visibility").first
+      if pref = current_user.preferences.find_by(:k => "gps.trace.visibility")
         pref.v = visibility
         pref.save
       else
@@ -303,11 +303,11 @@ class TracesController < ApplicationController
   end
 
   def default_visibility
-    visibility = current_user.preferences.where(:k => "gps.trace.visibility").first
+    visibility = current_user.preferences.find_by(:k => "gps.trace.visibility")
 
     if visibility
       visibility.v
-    elsif current_user.preferences.where(:k => "gps.trace.public", :v => "default").first.nil?
+    elsif current_user.preferences.find_by(:k => "gps.trace.public", :v => "default").nil?
       "private"
     else
       "public"
index 1826b08a4f269354e52d44f7eb8d1ca0cd50e7ff..f819c1ac5ca665607218f671512988a7d7466b12 100644 (file)
@@ -1,6 +1,6 @@
 module GeocoderHelper
   def result_to_html(result)
-    html_options = { :class => "set_position", :data => {} }
+    html_options = { :class => "set_position stretched-link", :data => {} }
 
     url = if result[:type] && result[:id]
             url_for(:controller => :browse, :action => result[:type], :id => result[:id])
index c8a80588ca6a830ddb9b1b9c48c6cfc4b02461f0..3554980b84fc37fa53e7f23f797c2a401f364455 100644 (file)
@@ -73,7 +73,7 @@ module UserHelper
     if user.avatar.variable?
       variant = user.avatar.variant(variant_options)
       # https://stackoverflow.com/questions/61893089/get-metadata-of-active-storage-variant/67228171
-      if variant.processed?
+      if variant.send(:processed?)
         metadata = variant.processed.send(:record).image.blob.metadata
         if metadata["width"]
           options[:width] = metadata["width"]
index c9f8e2e6549e06429b23b024fd45717c927cac10..b870d0273427a2bba3abc63f1b24e4756e6c9b60 100644 (file)
@@ -25,9 +25,7 @@ module UserRolesHelper
     end
 
     if image
-      svg_icon = tag.source(:srcset => image_path("#{image}.svg"), :type => "image/svg+xml")
-      png_icon = image_tag("#{image}.png", :srcset => image_path("#{image}.svg"), :size => "20x20", :border => 0, :alt => alt, :title => title)
-      icon = tag.picture(svg_icon + png_icon)
+      icon = image_tag("#{image}.png", :srcset => image_path("#{image}.svg"), :size => "20x20", :border => 0, :alt => alt, :title => title)
       icon = link_to(icon, url, :method => :post, :data => { :confirm => confirm }) if url
     end
 
index 1b78f98e8d2da289ddefa3c25262ffc70e790af3..3bc9483fa9c904da8f65df1be3758a17784f6798 100644 (file)
@@ -11,7 +11,9 @@
 #
 # Indexes
 #
-#  index_changeset_comments_on_created_at  (created_at)
+#  index_changeset_comments_on_author_id_and_created_at     (author_id,created_at)
+#  index_changeset_comments_on_changeset_id_and_created_at  (changeset_id,created_at)
+#  index_changeset_comments_on_created_at                   (created_at)
 #
 # Foreign Keys
 #
index 672e6f76ca90c1e6cbdeebeb51d57174e68be239..da9fbce51a4732833cd86f0349caf1aab5a2e530 100644 (file)
@@ -6,18 +6,12 @@
 #  k            :string           default(""), not null, primary key
 #  v            :string           default(""), not null
 #
-# Indexes
-#
-#  changeset_tags_id_idx  (changeset_id)
-#
 # Foreign Keys
 #
 #  changeset_tags_id_fkey  (changeset_id => changesets.id)
 #
 
 class ChangesetTag < ApplicationRecord
-  self.primary_keys = "changeset_id", "k"
-
   belongs_to :changeset
 
   validates :changeset, :associated => true
index 23101856af59af4b1d79b98e6657942fad6f326a..bd96e0ff33261630e848d65a20926c8b7857a233 100644 (file)
@@ -9,7 +9,7 @@ module GeoRecord
       format("%<coord>.7f", :coord => self)
     end
 
-    def as_json(_)
+    def as_json(*)
       format("%<coord>.7f", :coord => self).to_f
     end
   end
index ed6de79e45de20ff7fcbc648b845a9c0f12fe652..93b8847f433f655ee673ad339053f5dd460ec126 100644 (file)
@@ -16,8 +16,6 @@
 #
 
 class DiaryEntrySubscription < ApplicationRecord
-  self.primary_keys = "user_id", "diary_entry_id"
-
   belongs_to :user
   belongs_to :diary_entry
 end
index 476821b47ccdb221b31b603cfa97352611425c86..2b1c7ce00a845d0e85181e50b5c495e718237250 100644 (file)
@@ -5,11 +5,12 @@
 #  id             :bigint(8)        not null, primary key
 #  user_id        :bigint(8)        not null
 #  friend_user_id :bigint(8)        not null
+#  created_at     :datetime
 #
 # Indexes
 #
-#  friends_user_id_idx  (user_id)
-#  user_id_idx          (friend_user_id)
+#  index_friends_on_user_id_and_created_at  (user_id,created_at)
+#  user_id_idx                              (friend_user_id)
 #
 # Foreign Keys
 #
index f346c8a748aeb94dc44bf6d4d8769ffe8ba0bdaa..8d3e4583fad137db074ed85614a27becdaeaf759 100644 (file)
@@ -8,8 +8,6 @@
 #
 
 class Language < ApplicationRecord
-  self.primary_key = "code"
-
   has_many :diary_entries, :foreign_key => "language", :inverse_of => :language
 
   def self.load(file)
index d76a1a0ae865a7e8e86cd3f8c93e3c87c75a1928..18e502439b18499fe505eeaee239a1b2b5d4e5ed 100644 (file)
@@ -13,7 +13,6 @@
 
 class NodeTag < ApplicationRecord
   self.table_name = "current_node_tags"
-  self.primary_keys = "node_id", "k"
 
   belongs_to :node
 
index 635a5b0def53444f6b5ead14c4d11685a4af6d63..b870e5558e557b2f2c337586206daf5ac6b8c356 100644 (file)
 #
 # Indexes
 #
-#  index_note_comments_on_body        (to_tsvector('english'::regconfig, body)) USING gin
-#  index_note_comments_on_created_at  (created_at)
-#  note_comments_note_id_idx          (note_id)
+#  index_note_comments_on_author_id_and_created_at  (author_id,created_at)
+#  index_note_comments_on_body                      (to_tsvector('english'::regconfig, body)) USING gin
+#  index_note_comments_on_created_at                (created_at)
+#  note_comments_note_id_idx                        (note_id)
 #
 # Foreign Keys
 #
index 73a02417da5223802459d4e75c50f1eb2206f92c..834f1ded54393b6d8587f5fbc241f6980bee3b9a 100644 (file)
@@ -1,3 +1,28 @@
+# == Schema Information
+#
+# Table name: oauth_applications
+#
+#  id           :bigint(8)        not null, primary key
+#  owner_type   :string           not null
+#  owner_id     :bigint(8)        not null
+#  name         :string           not null
+#  uid          :string           not null
+#  secret       :string           not null
+#  redirect_uri :text             not null
+#  scopes       :string           default(""), not null
+#  confidential :boolean          default(TRUE), not null
+#  created_at   :datetime         not null
+#  updated_at   :datetime         not null
+#
+# Indexes
+#
+#  index_oauth_applications_on_owner_type_and_owner_id  (owner_type,owner_id)
+#  index_oauth_applications_on_uid                      (uid) UNIQUE
+#
+# Foreign Keys
+#
+#  fk_rails_...  (owner_id => users.id)
+#
 class Oauth2Application < Doorkeeper::Application
   belongs_to :owner, :polymorphic => true
 
index 86463f297226e11dce96bcc55af1ffd31e92342e..e08121cfc5d53ec7d24dfcf38fcb4847c0ec50e9 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Table name: oauth_nonces
 #
-#  id         :bigint           not null, primary key
+#  id         :bigint(8)        not null, primary key
 #  nonce      :string
 #  timestamp  :integer
 #  created_at :datetime
index 077039ac33c2e13c5e0e8f702f1d0d520e2fbd9c..3ec5cd4152939a24bf1816045dfe66bc23b4a262 100644 (file)
@@ -29,7 +29,6 @@ class OldNode < ApplicationRecord
   include ConsistencyValidations
 
   self.table_name = "nodes"
-  self.primary_keys = "node_id", "version"
 
   # NOTE: this needs to be included after the table name changes, or
   # the queries generated by Redactable will use the wrong table name.
@@ -49,7 +48,7 @@ class OldNode < ApplicationRecord
   belongs_to :redaction, :optional => true
   belongs_to :current_node, :class_name => "Node", :foreign_key => "node_id", :inverse_of => :old_nodes
 
-  has_many :old_tags, :class_name => "OldNodeTag", :foreign_key => [:node_id, :version], :inverse_of => :old_node
+  has_many :old_tags, :class_name => "OldNodeTag", :query_constraints => [:node_id, :version], :inverse_of => :old_node
 
   def validate_position
     errors.add(:base, "Node is not in the world") unless in_world?
index c710e48f133db67436fbe0b86ff9f94ce4c2a9ea..8f632a6713a04eccc5bc8c1bb8873e8b42698b16 100644 (file)
@@ -9,14 +9,13 @@
 #
 # Foreign Keys
 #
-#  node_tags_id_fkey  (node_id => nodes.node_id)
+#  node_tags_id_fkey  (["node_id", "version"] => nodes.["node_id", "version"])
 #
 
 class OldNodeTag < ApplicationRecord
   self.table_name = "node_tags"
-  self.primary_keys = "node_id", "version", "k"
 
-  belongs_to :old_node, :foreign_key => [:node_id, :version], :inverse_of => :old_tags
+  belongs_to :old_node, :query_constraints => [:node_id, :version], :inverse_of => :old_tags
 
   validates :old_node, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
index c36d645728a736907596920e0f8e604357069267..5ff12fd586bfb742d2f523bacbf6602df384cec9 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Table name: relations
 #
-#  relation_id  :bigint(8)        default(0), not null, primary key
+#  relation_id  :bigint(8)        not null, primary key
 #  changeset_id :bigint(8)        not null
 #  timestamp    :datetime         not null
 #  version      :bigint(8)        not null, primary key
@@ -24,7 +24,6 @@ class OldRelation < ApplicationRecord
   include ConsistencyValidations
 
   self.table_name = "relations"
-  self.primary_keys = "relation_id", "version"
 
   # NOTE: this needs to be included after the table name changes, or
   # the queries generated by Redactable will use the wrong table name.
@@ -34,8 +33,8 @@ class OldRelation < ApplicationRecord
   belongs_to :redaction, :optional => true
   belongs_to :current_relation, :class_name => "Relation", :foreign_key => "relation_id", :inverse_of => :old_relations
 
-  has_many :old_members, -> { order(:sequence_id) }, :class_name => "OldRelationMember", :foreign_key => [:relation_id, :version], :inverse_of => :old_relation
-  has_many :old_tags, :class_name => "OldRelationTag", :foreign_key => [:relation_id, :version], :inverse_of => :old_relation
+  has_many :old_members, -> { order(:sequence_id) }, :class_name => "OldRelationMember", :query_constraints => [:relation_id, :version], :inverse_of => :old_relation
+  has_many :old_tags, :class_name => "OldRelationTag", :query_constraints => [:relation_id, :version], :inverse_of => :old_relation
 
   validates :changeset, :associated => true
   validates :timestamp, :presence => true
index c99f60e7c95e97d943f42326bf46c40065d45558..4264e022164d8a0acbaed1c3719f21be957c0fc3 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Table name: relation_members
 #
-#  relation_id :bigint(8)        default(0), not null, primary key
+#  relation_id :bigint(8)        not null, primary key
 #  member_type :enum             not null
 #  member_id   :bigint(8)        not null
 #  member_role :string           not null
 #
 # Foreign Keys
 #
-#  relation_members_id_fkey  (relation_id => relations.relation_id)
+#  relation_members_id_fkey  (["relation_id", "version"] => relations.["relation_id", "version"])
 #
 
 class OldRelationMember < ApplicationRecord
   self.table_name = "relation_members"
-  self.primary_keys = "relation_id", "version", "sequence_id"
+  self.primary_key = %w[relation_id version sequence_id]
 
-  belongs_to :old_relation, :foreign_key => [:relation_id, :version], :inverse_of => :old_members
+  belongs_to :old_relation, :query_constraints => [:relation_id, :version], :inverse_of => :old_members
   # A bit messy, referring to the current tables, should do for the data browser for now
   belongs_to :member, :polymorphic => true
 
index c3a1838912cbfb65ccd57492e4c60bfb05214c78..31399c00d1dafefa296610403408b55bd918329a 100644 (file)
@@ -2,21 +2,20 @@
 #
 # Table name: relation_tags
 #
-#  relation_id :bigint(8)        default(0), not null, primary key
+#  relation_id :bigint(8)        not null, primary key
 #  k           :string           default(""), not null, primary key
 #  v           :string           default(""), not null
 #  version     :bigint(8)        not null, primary key
 #
 # Foreign Keys
 #
-#  relation_tags_id_fkey  (relation_id => relations.relation_id)
+#  relation_tags_id_fkey  (["relation_id", "version"] => relations.["relation_id", "version"])
 #
 
 class OldRelationTag < ApplicationRecord
   self.table_name = "relation_tags"
-  self.primary_keys = "relation_id", "version", "k"
 
-  belongs_to :old_relation, :foreign_key => [:relation_id, :version], :inverse_of => :old_tags
+  belongs_to :old_relation, :query_constraints => [:relation_id, :version], :inverse_of => :old_tags
 
   validates :old_relation, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
index fcff84ededfe0727120794994b5afc5cdaf04ff6..a55d3ed004a72bc678b959022e60ac33661ec199 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Table name: ways
 #
-#  way_id       :bigint(8)        default(0), not null, primary key
+#  way_id       :bigint(8)        not null, primary key
 #  changeset_id :bigint(8)        not null
 #  timestamp    :datetime         not null
 #  version      :bigint(8)        not null, primary key
@@ -24,7 +24,6 @@ class OldWay < ApplicationRecord
   include ConsistencyValidations
 
   self.table_name = "ways"
-  self.primary_keys = "way_id", "version"
 
   # NOTE: this needs to be included after the table name changes, or
   # the queries generated by Redactable will use the wrong table name.
@@ -34,8 +33,8 @@ class OldWay < ApplicationRecord
   belongs_to :redaction, :optional => true
   belongs_to :current_way, :class_name => "Way", :foreign_key => "way_id", :inverse_of => :old_ways
 
-  has_many :old_nodes, :class_name => "OldWayNode", :foreign_key => [:way_id, :version], :inverse_of => :old_way
-  has_many :old_tags, :class_name => "OldWayTag", :foreign_key => [:way_id, :version], :inverse_of => :old_way
+  has_many :old_nodes, :class_name => "OldWayNode", :query_constraints => [:way_id, :version], :inverse_of => :old_way
+  has_many :old_tags, :class_name => "OldWayTag", :query_constraints => [:way_id, :version], :inverse_of => :old_way
 
   validates :changeset, :associated => true
   validates :timestamp, :presence => true
index 9c8c0c6f3c1de533371bda729e8e185110723986..e031aba10f2bd47f269e5eea19eb5958dffe7cb1 100644 (file)
 #
 # Foreign Keys
 #
-#  way_nodes_id_fkey  (way_id => ways.way_id)
+#  way_nodes_id_fkey  (["way_id", "version"] => ways.["way_id", "version"])
 #
 
 class OldWayNode < ApplicationRecord
   self.table_name = "way_nodes"
-  self.primary_keys = "way_id", "version", "sequence_id"
 
-  belongs_to :old_way, :foreign_key => [:way_id, :version], :inverse_of => :old_nodes
+  belongs_to :old_way, :query_constraints => [:way_id, :version], :inverse_of => :old_nodes
   # A bit messy, referring to current nodes and ways, should do for the data browser for now
   belongs_to :node
   belongs_to :way
index 0342cf34485c165d2f2ec8ecfd9466f855c7a257..96ec8baf5ea9c873fad49261c839cfa59add2672 100644 (file)
@@ -2,21 +2,20 @@
 #
 # Table name: way_tags
 #
-#  way_id  :bigint(8)        default(0), not null, primary key
+#  way_id  :bigint(8)        not null, primary key
 #  k       :string           not null, primary key
 #  v       :string           not null
 #  version :bigint(8)        not null, primary key
 #
 # Foreign Keys
 #
-#  way_tags_id_fkey  (way_id => ways.way_id)
+#  way_tags_id_fkey  (["way_id", "version"] => ways.["way_id", "version"])
 #
 
 class OldWayTag < ApplicationRecord
   self.table_name = "way_tags"
-  self.primary_keys = "way_id", "version", "k"
 
-  belongs_to :old_way, :foreign_key => [:way_id, :version], :inverse_of => :old_tags
+  belongs_to :old_way, :query_constraints => [:way_id, :version], :inverse_of => :old_tags
 
   validates :old_way, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
index dd47bdcf6d4cbd31a8affa796fc1eabac9166fcc..8ff825cee5e3a8105b784f0faa483638cc7361a1 100644 (file)
@@ -19,7 +19,7 @@
 
 class RelationMember < ApplicationRecord
   self.table_name = "current_relation_members"
-  self.primary_keys = "relation_id", "sequence_id"
+  self.primary_key = %w[relation_id sequence_id]
 
   belongs_to :relation
   belongs_to :member, :polymorphic => true
index 758ed37cc0d5afd0c9b6b5fa4eb4f9e2a08f3c3c..500b7d910825338fa3ec452b3b184b45a9b706a6 100644 (file)
@@ -13,7 +13,6 @@
 
 class RelationTag < ApplicationRecord
   self.table_name = "current_relation_tags"
-  self.primary_keys = "relation_id", "k"
 
   belongs_to :relation
 
index 70296cd54f15115c95a4dcac43d01f234539f554..b1dde095c18f7793e524a704f0d7db8550b0f51a 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Table name: gpx_file_tags
 #
-#  gpx_id :bigint(8)        default(0), not null
+#  gpx_id :bigint(8)        not null
 #  tag    :string           not null
 #  id     :bigint(8)        not null, primary key
 #
index 3eb03a2fe4ae93bfb2010b359265f169b8315f79..638928861bd1caed18ac837c0390b115a15b3ce6 100644 (file)
@@ -12,7 +12,6 @@
 #  home_lat            :float
 #  home_lon            :float
 #  home_zoom           :integer          default(3)
-#  nearby              :integer          default(50)
 #  pass_salt           :string
 #  email_valid         :boolean          default(FALSE), not null
 #  new_email           :string
index 741aa335aca9c2f2375cb09bbe0093912e07115e..5b91bbda91badfe4f4242c9fc6a5a563b4cdcd19 100644 (file)
@@ -12,8 +12,6 @@
 #
 
 class UserPreference < ApplicationRecord
-  self.primary_keys = "user_id", "k"
-
   belongs_to :user
 
   validates :user, :associated => true
index 0626fb2403df19b013700617421c5accfd12c296..c57d3be79a8a4b1651ec24354970e2bcdda2e954 100644 (file)
@@ -18,7 +18,6 @@
 
 class WayNode < ApplicationRecord
   self.table_name = "current_way_nodes"
-  self.primary_keys = "way_id", "sequence_id"
 
   belongs_to :way
   belongs_to :node
index 93c4cdece779776f8a35c09e05636092bbe04bc7..04ce7abf552e9c2ed4f1565761dd2e531991358c 100644 (file)
@@ -13,7 +13,6 @@
 
 class WayTag < ApplicationRecord
   self.table_name = "current_way_tags"
-  self.primary_keys = "way_id", "k"
 
   belongs_to :way
 
index 99c1686d85c0943c2aaec65293c1b0ac24ae3f48..ddc8216772878300b3348b5ff55fd4f6608dbcc0 100644 (file)
@@ -6,10 +6,7 @@
 
 <div class="alert alert-danger row mx-0 p-3 align-items-center">
   <div class="col-auto">
-    <picture>
-      <source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml"></source>
-      <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
-    </picture>
+    <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
   </div>
   <div class="col">
     <p class="mb-0"><%= t ".warning" %></p>
index 9acbd05ae03992fc923f82f03420cf8c7b4ce8d1..93e0abf219cbae0f908edcd53b43112ed5dd6885 100644 (file)
 
     <% if current_user %>
       <div class="col-auto">
-        <div class="subscribe-buttons">
-          <form action="#">
-            <% if @changeset.subscribers.exists?(current_user.id) %>
-              <input class="action-button btn btn-sm btn-primary" type="submit" name="unsubscribe" value="<%= t("javascripts.changesets.show.unsubscribe") %>" data-method="POST" data-url="<%= changeset_unsubscribe_url(@changeset) %>" />
-            <% else %>
-              <input class="action-button btn btn-sm btn-primary" type="submit" name="subscribe" value="<%= t("javascripts.changesets.show.subscribe") %>" data-method="POST" data-url="<%= changeset_subscribe_url(@changeset) %>" />
-            <% end %>
-          </form>
-        </div>
+        <% if @changeset.subscribers.exists?(current_user.id) %>
+          <button class="action-button btn btn-sm btn-primary" name="unsubscribe" data-method="POST" data-url="<%= changeset_unsubscribe_url(@changeset) %>"><%= t("javascripts.changesets.show.unsubscribe") %></button>
+        <% else %>
+          <button class="action-button btn btn-sm btn-primary" name="subscribe" data-method="POST" data-url="<%= changeset_subscribe_url(@changeset) %>"><%= t("javascripts.changesets.show.subscribe") %></button>
+        <% end %>
       </div>
     <% end %>
   </div>
index c4b6f8964bb2b3fbd15b867e87e09789e8fbe7de..37a2f869e0182c260afd111492cedd6377e81400 100644 (file)
@@ -1 +1 @@
-<p class="search_results_error"><%= h(@error) %></p>
+<div class="alert alert-danger mx-2 px-2"><%= h(@error) %></div>
index eaf3078fe6ba9bf3f4155bedb57aa215920ea03d..1d3bc34219bf6316ce8b16666b6587384d20451a 100644 (file)
@@ -1,10 +1,7 @@
 <% if flash[:error] %>
   <div class="alert alert-danger row mx-0 mb-0 p-3 rounded-0 align-items-center">
     <div class="col-auto">
-      <picture>
-        <source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml" />
-        <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
-      </picture>
+      <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
     </div>
     <div class="col"><%= render_flash(flash[:error]) %></div>
   </div>
 <% if flash[:warning] %>
   <div class="alert alert-warning row mx-0 mb-0 p-3 rounded-0 align-items-center">
     <div class="col-auto">
-      <picture>
-        <source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml"></source>
-        <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
-      </picture>
+      <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
     </div>
     <div class="col"><%= render_flash(flash[:warning]) %></div>
   </div>
 <% if flash[:notice] %>
   <div class="alert alert-success row mx-0 mb-0 p-3 rounded-0 align-items-center">
     <div class="col-auto">
-      <picture>
-        <source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml"></source>
-        <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
-      </picture>
+      <%= image_tag("notice.png", :srcset => image_path("notice.svg")) %>
     </div>
     <div class="col"><%= render_flash(flash[:notice]) %></div>
   </div>
index 8ff04536d19b6d4cbe99f41117b1448538c619f8..fb5c018392364bb4e5f945c4d7d6f36c2de5afcb 100644 (file)
@@ -1,7 +1,7 @@
 <header class="closed clearfix">
-  <h1>
-    <a href="<%= root_path %>" class="geolink">
-      <%= image_tag "osm_logo.png", :srcset => image_path("osm_logo.svg"), :alt => t("layouts.logo.alt_text"), :class => "logo" %>
+  <h1 class="m-0 fw-semibold">
+    <a href="<%= root_path %>" class="text-black text-decoration-none geolink">
+      <%= image_tag "osm_logo.png", :srcset => image_path("osm_logo.svg"), :alt => t("layouts.logo.alt_text"), :width => 30, :height => 30, :class => "logo" %>
       <%= t "layouts.project_name.h1" %>
     </a>
   </h1>
@@ -60,7 +60,7 @@
         <%= link_to t("layouts.about"), about_path, :class => "nav-link" %>
       </li>
       <li id="compact-secondary-nav" class="dropdown nav-item">
-        <button class="dropdown-toggle nav-link btn" type="button" data-bs-toggle="dropdown"><%= t "layouts.more" %></button>
+        <button class="dropdown-toggle nav-link btn btn-outline-secondary border-0 bg-white text-secondary" type="button" data-bs-toggle="dropdown"><%= t "layouts.more" %></button>
         <ul class="dropdown-menu">
           <% if Settings.status != "database_offline" && can?(:index, Issue) %>
             <li class="<%= current_page_class(issues_path) %>">
@@ -81,7 +81,7 @@
     </ul>
     <% if current_user && current_user.id %>
       <div class='d-inline-flex dropdown user-menu logged-in clearfix'>
-        <button class='dropdown-toggle btn btn-outline-secondary px-2 py-1 flex-grow-1' type='button' data-bs-toggle='dropdown'>
+        <button class='dropdown-toggle btn btn-outline-secondary border-grey bg-white text-secondary px-2 py-1 flex-grow-1' type='button' data-bs-toggle='dropdown'>
           <%= user_thumbnail_tiny(current_user, :width => 25, :height => 25, :class => "user_thumbnail_tiny rounded-1") %>
           <%= render :partial => "layouts/inbox" %>
           <span class="user-button">
index dc13414b70e4eea55e73e51c166ad5c909e3af14..397fdb8289b16fe3b4249d47ae787c4806685af3 100644 (file)
@@ -11,7 +11,7 @@
         </div>
       </div>
       <div class="col-auto">
-        <%= link_to image_tag("directions.png", :width => "20", :height => "20"), directions_path, :class => "btn btn-sm btn-primary switch_link", :title => t("site.search.get_directions_title") %>
+        <%= link_to image_tag("directions.png", :width => "20", :height => "20", :class => "align-bottom"), directions_path, :class => "btn btn-sm btn-primary switch_link", :title => t("site.search.get_directions_title") %>
       </div>
     </div>
   </form>
index db6179769ded9e4c8a23d67812b6a40d5dd7e27b..435de3015346f97b9c8a72c1ff204acf0ba3ac4c 100644 (file)
@@ -8,10 +8,7 @@
   </head>
   <body>
     <a href="<%= root_path %>">
-      <picture>
-        <source srcset="<%= image_path "osm_logo.svg" %>" type="image/svg+xml" />
-        <%= image_tag "osm_logo.png", :srcset => image_path("osm_logo.svg"), :alt => t("layouts.logo.alt_text"), :class => "logo" %>
-      </picture>
+      <%= image_tag "osm_logo.png", :srcset => image_path("osm_logo.svg"), :alt => t("layouts.logo.alt_text"), :class => "logo" %>
     </a>
     <div class="details">
       <%= yield %>
index 377f961499cb7154f07a712701330ad867268cf3..adb0cd8a6a3bdaac4815d217ad27541086d55a9a 100644 (file)
   <div id="map" tabindex="2">
   </div>
 
-  <div id="attribution">
+  <div id="attribution" class="d-none">
     <table>
       <tr>
-        <td class="attribution_license"><%= t "site.index.license.license_url" %></td>
-        <td class="attribution_project"><%= t "site.index.license.project_url" %></td>
+        <td><%= t "site.index.license.license_url" %></td>
+        <td><%= t "site.index.license.project_url" %></td>
       </tr>
       <tr>
         <td colspan="2" class="attribution_notice"><%= t "site.index.license.copyright" %></td>
index 7fde3e0e7f19d57aa0ca9b2a4ca0d7a43e49e3b4..51267c069e3e80f486c803093c46ba197fa7d60a 100644 (file)
@@ -3,5 +3,5 @@
 <%= f.form_group :confidential do %>
   <%= f.check_box :confidential %>
 <% end %>
-<%= f.collection_check_boxes :scopes, Oauth.scopes(:privileged => current_user.administrator?), :name, :description %>
+<%= f.collection_check_boxes :scopes, Oauth.scopes(:oauth2 => true, :privileged => current_user.administrator?), :name, :description %>
 <%= f.primary %>
index 971e0e20ad8b7979d85f5c5383036ebd0e989f7b..ac9c7c6c598404131f12fc790444d43b6b21fa36 100644 (file)
@@ -18,6 +18,7 @@
       <%= f.hidden_field :state, :value => @pre_auth.state %>
       <%= f.hidden_field :response_type, :value => @pre_auth.response_type %>
       <%= f.hidden_field :scope, :value => @pre_auth.scope %>
+      <%= f.hidden_field :nonce, :value => @pre_auth.nonce %>
       <%= f.hidden_field :code_challenge, :value => @pre_auth.code_challenge %>
       <%= f.hidden_field :code_challenge_method, :value => @pre_auth.code_challenge_method %>
       <%= f.primary t(".authorize") %>
@@ -30,6 +31,7 @@
       <%= f.hidden_field :state, :value => @pre_auth.state %>
       <%= f.hidden_field :response_type, :value => @pre_auth.response_type %>
       <%= f.hidden_field :scope, :value => @pre_auth.scope %>
+      <%= f.hidden_field :nonce, :value => @pre_auth.nonce %>
       <%= f.hidden_field :code_challenge, :value => @pre_auth.code_challenge %>
       <%= f.hidden_field :code_challenge_method, :value => @pre_auth.code_challenge_method %>
       <%= f.submit t(".deny") %>
index ec47b79b3b3a002be18adafe9a5fcd070bcd808d..b5accee8aca084a9d9d65a33eb4fd995f714eef4 100755 (executable)
--- a/bin/setup
+++ b/bin/setup
@@ -5,7 +5,7 @@ require "fileutils"
 APP_ROOT = File.expand_path("..", __dir__)
 
 def system!(*args)
-  system(*args) || abort("\n== Command #{args} failed ==")
+  system(*args, :exception => true)
 end
 
 FileUtils.chdir APP_ROOT do
index 7b492aea0afa1533c7905874ac996735a7a2e256..2303d321c0344dd87b0f281c300a6b9aa3535df1 100644 (file)
@@ -11,17 +11,18 @@ module OpenStreetMap
     # Initialize configuration defaults for originally generated Rails version.
     config.load_defaults 7.0
 
-    # Settings in config/environments/* take precedence over those specified here.
-    # Application configuration can go into files in config/initializers
-    # -- all .rb files in that directory are automatically loaded after loading
-    # the framework and any gems in your application.
-
-    # Custom directories with classes and modules you want to be autoloadable.
-    config.autoload_paths += %W[#{config.root}/lib]
-
-    # Force requests from old versions of IE (<= IE8) to be UTF-8 encoded.
-    # This has defaulted to false since rails 6.0
-    config.action_view.default_enforce_utf8 = true
+    # Please, add to the `ignore` list any other `lib` subdirectories that do
+    # not contain `.rb` files, or that should not be reloaded or eager loaded.
+    # Common ones are `templates`, `generators`, or `middleware`, for example.
+    config.autoload_lib(:ignore => %w[assets classic_pagination tasks])
+
+    # Configuration for the application, engines, and railties goes here.
+    #
+    # These settings can be overridden in specific environments using the files
+    # in config/environments, which are processed later.
+    #
+    # config.time_zone = "Central Time (US & Canada)"
+    # config.eager_load_paths << Rails.root.join("extras")
 
     # Use SQL instead of Active Record's schema dumper when creating the database.
     # This is necessary if your schema can't be completely dumped by the schema dumper,
index 29a396147ef17deda243816d2ddcea1638ac29e0..b0e79b0f8785459a4e897b2cc476f2193ce61e21 100644 (file)
@@ -1,4 +1,4 @@
-# This configuration is tailored for use with docker-compose. See DOCKER.md for more information.
+# This configuration is tailored for use with docker compose. See DOCKER.md for more information.
 
 development:
   adapter: postgresql
index 36a6f28204cb149371be89245b4c578c1c2bf18c..bf49d70da412c24590fbeeb0417d1f6e9f7c54f9 100644 (file)
@@ -6,7 +6,7 @@ Rails.application.configure do
   # In the development environment your application's code is reloaded any time
   # it changes. This slows down response time but is perfect for development
   # since you don't have to restart the web server when you make code changes.
-  config.cache_classes = false
+  config.enable_reloading = true
 
   # Do not eager load code on boot.
   config.eager_load = false
@@ -56,6 +56,9 @@ Rails.application.configure do
   # Highlight code that triggered database queries in logs.
   config.active_record.verbose_query_logs = true unless Settings.status == "database_offline"
 
+  # Highlight code that enqueued background job in logs.
+  config.active_job.verbose_enqueue_logs = true
+
   # Debug mode disables concatenation and preprocessing of assets.
   # This option may cause significant delays in view rendering with a large
   # number of complex assets.
@@ -76,6 +79,9 @@ Rails.application.configure do
   # Uncomment if you wish to allow Action Cable access from any origin.
   # config.action_cable.disable_request_forgery_protection = true
 
+  # Raise error when a before_action's only/except options reference missing actions
+  config.action_controller.raise_on_missing_callback_actions = true
+
   # Disable host validation.
   config.hosts = []
 end
index aef8c698692d23f57fbbd103153ae9d2a85dd1fd..5ce25fc2c649e86f6cf5a03682d7fb24503b9eec 100644 (file)
@@ -4,7 +4,7 @@ Rails.application.configure do
   # Settings specified here will take precedence over those in config/application.rb.
 
   # Code is not reloaded between requests.
-  config.cache_classes = true
+  config.enable_reloading = false
 
   # Eager load code on boot. This eager loads most of Rails and
   # your application in memory, allowing both threaded web servers
@@ -16,13 +16,12 @@ Rails.application.configure do
   config.consider_all_requests_local       = false
   config.action_controller.perform_caching = true
 
-  # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
-  # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
+  # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
+  # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
   # config.require_master_key = true
 
-  # Disable serving static files from the `/public` folder by default since
-  # Apache or NGINX already handles this.
-  config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
+  # Enable static file serving from the `/public` folder (turn off if using NGINX/Apache for it).
+  config.public_file_server.enabled = true
 
   # Compress JavaScripts and CSS.
   config.assets.js_compressor = Terser.new
@@ -46,16 +45,26 @@ Rails.application.configure do
   # config.action_cable.url = "wss://example.com/cable"
   # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
 
+  # Assume all access to the app is happening through a SSL-terminating reverse proxy.
+  # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
+  # config.assume_ssl = true
+
   # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
   # config.force_ssl = true
 
-  # Include generic and useful information about system operation, but avoid logging too much
-  # information to avoid inadvertent exposure of personally identifiable information (PII).
-  config.log_level = :info
+  # Log to STDOUT by default
+  # config.logger = ActiveSupport::Logger.new($stdout)
+  #                                      .tap  { |logger| logger.formatter = Logger::Formatter.new }
+  #                                      .then { |logger| ActiveSupport::TaggedLogging.new(logger) }
 
   # Prepend all log lines with the following tags.
   config.log_tags = [:request_id]
 
+  # Info include generic and useful information about system operation, but avoids logging too much
+  # information to avoid inadvertent exposure of personally identifiable information (PII). If you
+  # want to log everything, set the level to "debug".
+  config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
+
   # Use a different log path in production.
   config.paths["log"] = Settings.log_path if Settings.key?(:log_path)
 
@@ -82,24 +91,16 @@ Rails.application.configure do
   # Don't log any deprecations.
   config.active_support.report_deprecations = false
 
-  # Use default logging formatter so that PID and timestamp are not suppressed.
-  config.log_formatter = Logger::Formatter.new
-
-  # Use a different logger for distributed setups.
-  # require "syslog/logger"
-  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
-
-  if ENV["RAILS_LOG_TO_STDOUT"].present?
-    logger           = ActiveSupport::Logger.new($stdout)
-    logger.formatter = config.log_formatter
-    config.logger    = ActiveSupport::TaggedLogging.new(logger)
-  end
-
   # Do not dump schema after migrations.
   config.active_record.dump_schema_after_migration = false unless Settings.status == "database_offline"
 
-  # Enable autoloading of dependencies.
-  config.enable_dependency_loading = true
+  # Enable DNS rebinding protection and other `Host` header attacks.
+  # config.hosts = [
+  #   "example.com",     # Allow requests from example.com
+  #   /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
+  # ]
+  # Skip DNS rebinding protection for the default health check endpoint.
+  # config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
 
   # Use delayed job to queue jobs in production.
   config.active_job.queue_adapter = :delayed_job
index 875716e507d5730a977668a2494ac1a587731311..08d3236bfd21dc6a328d8acdbf9320f1053b7273 100644 (file)
@@ -8,12 +8,13 @@ require "active_support/core_ext/integer/time"
 Rails.application.configure do
   # Settings specified here will take precedence over those in config/application.rb.
 
-  # Turn false under Spring and add config.action_view.cache_template_loading = true
-  config.cache_classes = true
+  # While tests run files are not watched, reloading is not necessary.
+  config.enable_reloading = false
 
-  # Eager loading loads your whole application. When running a single test locally,
-  # this probably isn't necessary. It's a good idea to do in a continuous integration
-  # system, or in some way before deploying your code.
+  # Eager loading loads your entire application. When running a single test locally,
+  # this is usually not necessary, and can slow down your test suite. However, it's
+  # recommended that you enable it in continuous integration systems to ensure eager
+  # loading is working properly before deploying your code.
   config.eager_load = ENV["CI"].present?
 
   # Configure public file server for tests with Cache-Control for performance.
@@ -28,7 +29,7 @@ Rails.application.configure do
   config.cache_store = :null_store
 
   # Raise exceptions instead of rendering exception templates.
-  config.action_dispatch.show_exceptions = false
+  config.action_dispatch.show_exceptions = :rescuable
 
   # Disable request forgery protection in test environment.
   config.action_controller.allow_forgery_protection = false
@@ -61,6 +62,9 @@ Rails.application.configure do
   # Annotate rendered view with file names.
   # config.action_view.annotate_rendered_view_with_filenames = true
 
+  # Raise error when a before_action's only/except options reference missing actions
+  config.action_controller.raise_on_missing_callback_actions = true
+
   # Use the test adapter for ActiveJob during testing.
   config.active_job.queue_adapter = :test
 end
index 60f8a09dfecb3e1410f820510d2340d3fb1b47d8..bdd18a965b0168bb126623b565991096a82504c1 100644 (file)
@@ -13,7 +13,7 @@ data:
   ## Provide a custom adapter:
   # adapter: I18n::Tasks::Data::FileSystem
 
-  # Locale files or `File.find` patterns where translations are read from:
+  # Locale files or `Find.find` patterns where translations are read from:
   read:
     ## Default:
     - config/locales/en.yml
@@ -52,7 +52,7 @@ data:
 
 # Find translate calls
 search:
-  ## Paths or `File.find` patterns to search in:
+  ## Paths or `Find.find` patterns to search in:
   # paths:
   #  - app/
 
@@ -110,7 +110,9 @@ search:
 #   deepl_api_key: "48E92789-57A3-466A-9959-1A1A1A1A1A1A"
 #   # deepl_host: "https://api.deepl.com"
 #   # deepl_version: "v2"
-
+#   # add additional options to the DeepL.translate call: https://www.deepl.com/docs-api/translate-text/translate-text/
+#   deepl_options:
+#     formality: prefer_less
 ## Do not consider these keys missing:
 # ignore_missing:
 # - 'errors.messages.{accepted,blank,invalid,too_short,too_long}'
index 3621f97f8e9ff84ec7bbb50f0b0c619532b9de0e..b3076b38fe14399a56099ba187b1cb21cac15f09 100644 (file)
@@ -1,8 +1,8 @@
 # Be sure to restart your server when you modify this file.
 
-# Define an application-wide content security policy
-# For further information see the following documentation
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
+# Define an application-wide content security policy.
+# See the Securing Rails Applications Guide for more information:
+# https://guides.rubyonrails.org/security.html#content-security-policy-header
 
 # Rails.application.configure do
 #   config.content_security_policy do |policy|
 #     # policy.report_uri "/csp-violation-report-endpoint"
 #   end
 #
-#   # Generate session nonces for permitted importmap and inline scripts
+#   # Generate session nonces for permitted importmap, inline scripts, and inline styles.
 #   config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
-#   config.content_security_policy_nonce_directives = %w(script-src)
+#   config.content_security_policy_nonce_directives = %w(script-src style-src)
 #
-#   # Report CSP violations to a specified URI. See:
-#   # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
+#   # Report violations without enforcing the policy.
 #   # config.content_security_policy_report_only = true
 # end
index a2df9167f420d37da6f3ab263dbf98efaddc4701..c1d4e2f783127b92ee028c6bebf2c2841efd3dbf 100644 (file)
@@ -225,7 +225,7 @@ Doorkeeper.configure do
   # https://doorkeeper.gitbook.io/guides/ruby-on-rails/scopes
 
   # default_scopes  :public
-  optional_scopes(*Oauth::SCOPES, *Oauth::PRIVILEGED_SCOPES)
+  optional_scopes(*Oauth::SCOPES, *Oauth::PRIVILEGED_SCOPES, *Oauth::OAUTH2_SCOPES)
 
   # Allows to restrict only certain scopes for grant_type.
   # By default, all the scopes will be available for all the grant types.
diff --git a/config/initializers/doorkeeper_openid_connect.rb b/config/initializers/doorkeeper_openid_connect.rb
new file mode 100644 (file)
index 0000000..7f409ec
--- /dev/null
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+Doorkeeper::OpenidConnect.configure do
+  issuer do |_resource_owner, _application|
+    "#{Settings.server_protocol}://#{Settings.server_url}"
+  end
+
+  signing_key Settings.doorkeeper_signing_key
+
+  subject_types_supported [:public]
+
+  resource_owner_from_access_token do |access_token|
+    User.find_by(:id => access_token.resource_owner_id)
+  end
+
+  auth_time_from_resource_owner do |resource_owner|
+    # empty block necessary as a workaround to missing configuration
+    # when no auth_time claim is provided
+  end
+
+  subject do |resource_owner, _application|
+    resource_owner.id
+  end
+
+  protocol do
+    Settings.server_protocol.to_sym
+  end
+
+  claims do
+    claim :preferred_username, :scope => :openid do |resource_owner, _scopes, _access_token|
+      resource_owner.display_name
+    end
+
+    claim :email, :scope => :read_email, :response => [:id_token, :user_info] do |resource_owner, _scopes, _access_token|
+      resource_owner.email
+    end
+  end
+end
index 58aa62573f9358255b9004ac195ae535ac76183b..460804ff058b59c7217d31c14ecbaae5038053c8 100644 (file)
@@ -1,6 +1,8 @@
 # Be sure to restart your server when you modify this file.
 
-# Configure sensitive parameters which will be filtered from the log file.
+# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.
+# Use this to limit dissemination of sensitive information.
+# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
 Rails.application.config.filter_parameters += [
   :password, :pass_crypt, :pass_crypt_confirmation
 ]
index add6aaea9cc76b3feed4c285fbbfc62f09985c3a..0667e3346b01d03a5b15d3af5c5bce09722125b7 100644 (file)
@@ -1,31 +1,46 @@
 if defined?(ActiveRecord::ConnectionAdapters::AbstractAdapter)
   module OpenStreetMap
-    module ActiveRecord
-      module PostgreSQLAdapter
+    module PostgreSQL
+      module Quoting
         def quote_column_name(name)
           Array(name).map { |n| super(n) }.join(", ")
         end
+      end
 
-        def add_primary_key(table_name, column_name, _options = {})
-          table_name = quote_table_name(table_name)
-          column_name = quote_column_name(column_name)
+      module SchemaStatements
+        def add_primary_key(table_name, column_name, options = {})
+          constraint_name = "#{table_name}_pkey"
+
+          options = options.merge(:name => constraint_name, :unique => true)
 
-          execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{column_name})"
+          add_index(table_name, column_name, **options)
+          set_primary_key table_name, constraint_name
         end
 
         def remove_primary_key(table_name)
+          constraint_name = quote_table_name("#{table_name}_pkey")
           table_name = quote_table_name(table_name)
 
-          execute "ALTER TABLE #{table_name} DROP PRIMARY KEY"
+          execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{constraint_name}"
         end
 
-        def alter_primary_key(table_name, new_columns)
-          constraint_name = quote_table_name("#{table_name}_pkey")
+        def alter_primary_key(table_name, column_name, options = {})
+          constraint_name = "#{table_name}_pkey"
+          tmp_constraint_name = "#{table_name}_pkey_tmp"
+
+          options = options.merge(:name => tmp_constraint_name, :unique => true)
+
+          add_index(table_name, column_name, **options)
+          remove_primary_key table_name
+          set_primary_key table_name, tmp_constraint_name
+          rename_index table_name, tmp_constraint_name, constraint_name
+        end
+
+        def set_primary_key(table_name, constraint_name)
+          constraint_name = quote_table_name(constraint_name)
           table_name = quote_table_name(table_name)
-          new_columns = quote_column_name(new_columns)
 
-          execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{constraint_name}"
-          execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{new_columns})"
+          execute "ALTER TABLE #{table_name} ADD PRIMARY KEY USING INDEX #{constraint_name}"
         end
 
         def create_enumeration(enumeration_name, values)
@@ -46,5 +61,6 @@ if defined?(ActiveRecord::ConnectionAdapters::AbstractAdapter)
     end
   end
 
-  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(OpenStreetMap::ActiveRecord::PostgreSQLAdapter)
+  ActiveRecord::ConnectionAdapters::PostgreSQL::Quoting.prepend(OpenStreetMap::PostgreSQL::Quoting)
+  ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements.prepend(OpenStreetMap::PostgreSQL::SchemaStatements)
 end
diff --git a/config/initializers/new_framework_defaults_7_1.rb b/config/initializers/new_framework_defaults_7_1.rb
new file mode 100644 (file)
index 0000000..d41af16
--- /dev/null
@@ -0,0 +1,223 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file eases your Rails 7.1 framework defaults upgrade.
+#
+# Uncomment each configuration one by one to switch to the new default.
+# Once your application is ready to run with all new defaults, you can remove
+# this file and set the `config.load_defaults` to `7.1`.
+#
+# Read the Guide for Upgrading Ruby on Rails for more info on each option.
+# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
+
+# No longer add autoloaded paths into `$LOAD_PATH`. This means that you won't be able
+# to manually require files that are managed by the autoloader, which you shouldn't do anyway.
+# This will reduce the size of the load path, making `require` faster if you don't use bootsnap, or reduce the size
+# of the bootsnap cache if you use it.
+# Rails.application.config.add_autoload_paths_to_load_path = false
+
+# Remove the default X-Download-Options headers since it is used only by Internet Explorer.
+# If you need to support Internet Explorer, add back `"X-Download-Options" => "noopen"`.
+# Rails.application.config.action_dispatch.default_headers = {
+#   "X-Frame-Options" => "SAMEORIGIN",
+#   "X-XSS-Protection" => "0",
+#   "X-Content-Type-Options" => "nosniff",
+#   "X-Permitted-Cross-Domain-Policies" => "none",
+#   "Referrer-Policy" => "strict-origin-when-cross-origin"
+# }
+
+# Do not treat an `ActionController::Parameters` instance
+# as equal to an equivalent `Hash` by default.
+# Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality = false
+
+# Active Record Encryption now uses SHA-256 as its hash digest algorithm. Important: If you have
+# data encrypted with previous Rails versions, there are two scenarios to consider:
+#
+# 1. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA1 (the default
+# before Rails 7.0), you need to configure SHA-1 for Active Record Encryption too:
+# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA1
+# 2. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA256 (the new default
+# in 7.0), then you need to configure SHA-256 for Active Record Encryption:
+# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA256
+#
+# If you don't currently have data encrypted with Active Record encryption, you can disable this setting to
+# configure the default behavior starting 7.1+:
+# Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = false
+
+# No longer run after_commit callbacks on the first of multiple Active Record
+# instances to save changes to the same database row within a transaction.
+# Instead, run these callbacks on the instance most likely to have internal
+# state which matches what was committed to the database, typically the last
+# instance to save.
+# Rails.application.config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = false
+
+# Configures SQLite with a strict strings mode, which disables double-quoted string literals.
+#
+# SQLite has some quirks around double-quoted string literals.
+# It first tries to consider double-quoted strings as identifier names, but if they don't exist
+# it then considers them as string literals. Because of this, typos can silently go unnoticed.
+# For example, it is possible to create an index for a non existing column.
+# See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted for more details.
+# Rails.application.config.active_record.sqlite3_adapter_strict_strings_by_default = true
+
+# Disable deprecated singular associations names
+# Rails.application.config.active_record.allow_deprecated_singular_associations_name = false
+
+# Enable the Active Job `BigDecimal` argument serializer, which guarantees
+# roundtripping. Without this serializer, some queue adapters may serialize
+# `BigDecimal` arguments as simple (non-roundtrippable) strings.
+#
+# When deploying an application with multiple replicas, old (pre-Rails 7.1)
+# replicas will not be able to deserialize `BigDecimal` arguments from this
+# serializer. Therefore, this setting should only be enabled after all replicas
+# have been successfully upgraded to Rails 7.1.
+# Rails.application.config.active_job.use_big_decimal_serializer = true
+
+# Specify if an `ArgumentError` should be raised if `Rails.cache` `fetch` or
+# `write` are given an invalid `expires_at` or `expires_in` time.
+# Options are `true`, and `false`. If `false`, the exception will be reported
+# as `handled` and logged instead.
+# Rails.application.config.active_support.raise_on_invalid_cache_expiration_time = true
+
+# Specify whether Query Logs will format tags using the SQLCommenter format
+# (https://open-telemetry.github.io/opentelemetry-sqlcommenter/), or using the legacy format.
+# Options are `:legacy` and `:sqlcommenter`.
+# Rails.application.config.active_record.query_log_tags_format = :sqlcommenter
+
+# Specify the default serializer used by `MessageEncryptor` and `MessageVerifier`
+# instances.
+#
+# The legacy default is `:marshal`, which is a potential vector for
+# deserialization attacks in cases where a message signing secret has been
+# leaked.
+#
+# In Rails 7.1, the new default is `:json_allow_marshal` which serializes and
+# deserializes with `ActiveSupport::JSON`, but can fall back to deserializing
+# with `Marshal` so that legacy messages can still be read.
+#
+# In Rails 7.2, the default will become `:json` which serializes and
+# deserializes with `ActiveSupport::JSON` only.
+#
+# Alternatively, you can choose `:message_pack` or `:message_pack_allow_marshal`,
+# which serialize with `ActiveSupport::MessagePack`. `ActiveSupport::MessagePack`
+# can roundtrip some Ruby types that are not supported by JSON, and may provide
+# improved performance, but it requires the `msgpack` gem.
+#
+# For more information, see
+# https://guides.rubyonrails.org/v7.1/configuring.html#config-active-support-message-serializer
+#
+# If you are performing a rolling deploy of a Rails 7.1 upgrade, wherein servers
+# that have not yet been upgraded must be able to read messages from upgraded
+# servers, first deploy without changing the serializer, then set the serializer
+# in a subsequent deploy.
+# Rails.application.config.active_support.message_serializer = :json_allow_marshal
+
+# Enable a performance optimization that serializes message data and metadata
+# together. This changes the message format, so messages serialized this way
+# cannot be read by older versions of Rails. However, messages that use the old
+# format can still be read, regardless of whether this optimization is enabled.
+#
+# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
+# not yet been upgraded must be able to read messages from upgraded servers,
+# leave this optimization off on the first deploy, then enable it on a
+# subsequent deploy.
+# Rails.application.config.active_support.use_message_serializer_for_metadata = true
+
+# Set the maximum size for Rails log files.
+#
+# `config.load_defaults 7.1` does not set this value for environments other than
+# development and test.
+#
+# if Rails.env.local?
+#   Rails.application.config.log_file_size = 100 * 1024 * 1024
+# end
+
+# Enable raising on assignment to attr_readonly attributes. The previous
+# behavior would allow assignment but silently not persist changes to the
+# database.
+# Rails.application.config.active_record.raise_on_assign_to_attr_readonly = true
+
+# Enable validating only parent-related columns for presence when the parent is mandatory.
+# The previous behavior was to validate the presence of the parent record, which performed an extra query
+# to get the parent every time the child record was updated, even when parent has not changed.
+# Rails.application.config.active_record.belongs_to_required_validates_foreign_key = false
+
+# Enable precompilation of `config.filter_parameters`. Precompilation can
+# improve filtering performance, depending on the quantity and types of filters.
+# Rails.application.config.precompile_filter_parameters = true
+
+# Enable before_committed! callbacks on all enrolled records in a transaction.
+# The previous behavior was to only run the callbacks on the first copy of a record
+# if there were multiple copies of the same record enrolled in the transaction.
+# Rails.application.config.active_record.before_committed_on_all_records = true
+
+# Disable automatic column serialization into YAML.
+# To keep the historic behavior, you can set it to `YAML`, however it is
+# recommended to explicitly define the serialization method for each column
+# rather than to rely on a global default.
+# Rails.application.config.active_record.default_column_serializer = nil
+
+# Enable a performance optimization that serializes Active Record models
+# in a faster and more compact way.
+#
+# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
+# not yet been upgraded must be able to read caches from upgraded servers,
+# leave this optimization off on the first deploy, then enable it on a
+# subsequent deploy.
+# Rails.application.config.active_record.marshalling_format_version = 7.1
+
+# Run `after_commit` and `after_*_commit` callbacks in the order they are defined in a model.
+# This matches the behaviour of all other callbacks.
+# In previous versions of Rails, they ran in the inverse order.
+# Rails.application.config.active_record.run_after_transaction_callbacks_in_order_defined = true
+
+# Whether a `transaction` block is committed or rolled back when exited via `return`, `break` or `throw`.
+#
+# Rails.application.config.active_record.commit_transaction_on_non_local_return = true
+
+# Controls when to generate a value for <tt>has_secure_token</tt> declarations.
+#
+# Rails.application.config.active_record.generate_secure_token_on = :initialize
+
+# ** Please read carefully, this must be configured in config/application.rb **
+# Change the format of the cache entry.
+# Changing this default means that all new cache entries added to the cache
+# will have a different format that is not supported by Rails 7.0
+# applications.
+# Only change this value after your application is fully deployed to Rails 7.1
+# and you have no plans to rollback.
+# When you're ready to change format, add this to `config/application.rb` (NOT
+# this file):
+#   config.active_support.cache_format_version = 7.1
+
+# Configure Action View to use HTML5 standards-compliant sanitizers when they are supported on your
+# platform.
+#
+# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action View to use HTML5-compliant
+# sanitizers if they are supported, else fall back to HTML4 sanitizers.
+#
+# In previous versions of Rails, Action View always used `Rails::HTML4::Sanitizer` as its vendor.
+#
+# Rails.application.config.action_view.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
+
+# Configure Action Text to use an HTML5 standards-compliant sanitizer when it is supported on your
+# platform.
+#
+# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action Text to use HTML5-compliant
+# sanitizers if they are supported, else fall back to HTML4 sanitizers.
+#
+# In previous versions of Rails, Action Text always used `Rails::HTML4::Sanitizer` as its vendor.
+#
+# Rails.application.config.action_text.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
+
+# Configure the log level used by the DebugExceptions middleware when logging
+# uncaught exceptions during requests
+# Rails.application.config.action_dispatch.debug_exception_log_level = :error
+
+# Configure the test helpers in Action View, Action Dispatch, and rails-dom-testing to use HTML5
+# parsers.
+#
+# Nokogiri::HTML5 isn't supported on JRuby, so JRuby applications must set this to :html4.
+#
+# In previous versions of Rails, these test helpers always used an HTML4 parser.
+#
+# Rails.application.config.dom_testing_default_html_version = :html5
index 00f64d71b03e029116af7b1713f450e9635fb10f..7db3b9577e6e56da5f1bf3681c0b458af7de6ed2 100644 (file)
@@ -1,11 +1,13 @@
+# Be sure to restart your server when you modify this file.
+
 # Define an application-wide HTTP permissions policy. For further
-# information see https://developers.google.com/web/updates/2018/06/feature-policy
-#
-# Rails.application.config.permissions_policy do |f|
-#   f.camera      :none
-#   f.gyroscope   :none
-#   f.microphone  :none
-#   f.usb         :none
-#   f.fullscreen  :self
-#   f.payment     :self, "https://secure.example.com"
+# information see: https://developers.google.com/web/updates/2018/06/feature-policy
+
+# Rails.application.config.permissions_policy do |policy|
+#   policy.camera      :none
+#   policy.gyroscope   :none
+#   policy.microphone  :none
+#   policy.usb         :none
+#   policy.fullscreen  :self
+#   policy.payment     :self, "https://secure.example.com"
 # end
index db44ea36daff67507a3c47211205fed7b19da454..de3a51f61fc1313488b33777fc077447a8e73220 100644 (file)
@@ -133,6 +133,7 @@ be-Tarask:
         description: Апісаньне
       report:
         category: Абярыце прычыну вашага паведамленьня
+        details: Калі ласка, падайце больш падрабязныя зьвесткі аб праблеме (абавязкова).
       user:
         auth_provider: Пастаўшчык аўтэнтыфікацыі
         auth_uid: UID аўтэнтыфікацыі
@@ -311,10 +312,10 @@ be-Tarask:
     way:
       nodes: Вузлы
       nodes_count:
-        one: '%{count} Ð¿Ñ\83нкÑ\82'
-        few: '%{count} Ð¿Ñ\83нкÑ\82ы'
-        many: '%{count} Ð¿Ñ\83нкÑ\82аў'
-        other: '%{count} Ð¿Ñ\83нкÑ\82аў'
+        one: '%{count} Ð²Ñ\83зел'
+        few: '%{count} Ð²Ñ\83злы'
+        many: '%{count} Ð²Ñ\83злоў'
+        other: '%{count} Ð²Ñ\83злоў'
     relation:
       members: Удзельнікі
       members_count:
@@ -446,9 +447,8 @@ be-Tarask:
       comment_link: Камэнтаваць гэты запіс
       reply_link: Адаслаць аўтару паведамленьне
       comment_count:
-        few: '%{count} камэнтары'
         one: '%{count} камэнтар'
-        zero: Няма камэнтароў
+        few: '%{count} камэнтары'
         other: '%{count} камэнтароў'
       edit_link: Рэдагаваць гэты запіс
       hide_link: Схаваць гэты запіс
index fdf69b13e82edf27faeb1b1982531ff8257155e9..62a7f2f0fdbc6870f10ffa70c5e803703acc9b5e 100644 (file)
@@ -605,6 +605,8 @@ bn:
       applications:
         create:
           notice: অ্যাপ্লিকেশন নিবন্ধিত।
+    scopes:
+      email: আপনার ইমেইল ঠিকানা দেখুন
   errors:
     contact:
       contact: যোগাযোগ
@@ -1843,6 +1845,8 @@ bn:
   oauth:
     authorize:
       allow_write_api: মানচিত্রটি পরিবর্তন করুন
+    scopes:
+      openid: ওপেনস্ট্রিটম্যাপ ব্যবহার করে সাইন-ইন করুন
   oauth_clients:
     new:
       title: একটি নতুন আবেদন নিবন্ধন করুন
index dce891b2cef7a5d02db62f4c8c26b1a6987dea97..dec0c2050c7590e7a6e134601317039735a3e6d0 100644 (file)
@@ -21,8 +21,6 @@ br:
   time:
     formats:
       friendly: '%e %B %Y da %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Dibab ur restr
@@ -626,7 +624,13 @@ br:
     flash:
       applications:
         create:
-          notice: Arload marilhet.
+          notice: Goulenn marilhet.
+    scopes:
+      address: Gwelet ho chomlec'h
+      email: Gwelet ho chomlec'h postel
+      openid: Gwiriekaat ho kont
+      phone: Gwelet ho niverenn bellgomz
+      profile: Gwelet ho titouroù ho profil
   errors:
     contact:
       contact: darempred
@@ -2454,6 +2458,7 @@ br:
     permissions:
       missing: N'eo ket bet aotreet an arload ganeoc'h d'ober gan an arc'hwel-mañ
     scopes:
+      openid: Kennaskañ gant OpenStreetMap
       read_prefs: Lenn penndibaboù an implijer
       write_prefs: Kemmañ ho penndibaboù implijer
       write_diary: Krouiñ enmonedoù en deizlevr, kemennadennoù ha kavout mignoned
@@ -2667,6 +2672,8 @@ br:
       title: Kont arsavet
       heading: Kont arsavet
       support: Skor
+      automatically_suspended: Hon digarezit, ehanet eo bet ho kont abalamour d'un
+        obererezh arvarus.
     auth_failure:
       connection_failed: C'hwitet eo ar gevreadenn ouzh ur pourchaser dilesa
       invalid_credentials: Titouroù dilesa direizh
index 494e3db258aa1e5345084fdda0601ea8df325b94..0dc00b0acfbda49b7d6a9ccb5e3ec725a371098c 100644 (file)
@@ -288,6 +288,7 @@ cs:
       openid: OpenID
       google: Google
       facebook: Facebook
+      microsoft: Microsoft
       github: GitHub
       wikipedia: Wikipedie
   api:
@@ -657,10 +658,36 @@ cs:
       newer_comments: Novější komentáře
       older_comments: Starší komentáře
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Autorizační server vyžaduje výběr účtu koncového
+          uživatele
+        consent_required: Autorizační server vyžaduje souhlas koncového uživatele
+        interaction_required: Autorizační server vyžaduje interakci koncového uživatele
+        login_required: Autorizační server vyžaduje ověření koncového uživatele
     flash:
       applications:
         create:
           notice: Aplikace zaregistrována.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Selhání z důvodu chybějící
+            konfigurace Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Selhání z důvodu chybějící
+            konfigurace Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Selhání z důvodu chybějící
+            konfigurace Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Selhání z důvodu chybějící
+            konfigurace Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Generování tokenu ID se nezdařilo kvůli chybějící
+            konfiguraci Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Vidět vaši fyzickou adresu
+      email: Vidět vaši e-mailovou adresu
+      openid: Ztotožnit váš účet
+      phone: Vidět vaše telefonní číslo
+      profile: Vidět informace z vašeho profilu
   errors:
     contact:
       contact_url_title: Vysvětlení různých komunikačních kanálů
@@ -2642,6 +2669,7 @@ cs:
     permissions:
       missing: Aplikaci jste nedovolili přístup k této funkci
     scopes:
+      openid: Přihlaste se pomocí OpenStreetMap
       read_prefs: Číst preference uživatele
       write_prefs: Měnit preference uživatele
       write_diary: Vytvářet deníkové záznamy, komentovat a navazovat přátelství
@@ -3122,6 +3150,7 @@ cs:
         cyclosm: CyclOSM
         cycle_map: Cyklomapa
         transport_map: Dopravní mapa
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitární
         opnvkarte: ÖPNVKarte
       layers:
@@ -3140,6 +3169,8 @@ cs:
       andy_allan: Andyho Allana
       opnvkarte_credit: Dlaždice s laskavým svolením %{memomaps_link}
       memomaps: MeMoMaps
+      tracestrack_credit: Dlaždice laskavostí %{tracestrack_link}
+      tracestrack: Tracestrack
       hotosm_credit: Styl dlaždic od %{hotosm_link} hostuje %{osm_france_link}
       hotosm_name: Humanitárního týmu OpenStreetMap
     site:
index fe807d30c11fc59bd719c4ba91087ff23e9fcdc5..62294a799abb740110bddc4bbbf39ff09524e9e6 100644 (file)
@@ -11,8 +11,6 @@ cy:
   time:
     formats:
       friendly: '%e %B %Y am %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Dewiswch ffeil
index 426d6a7e6fd127b2a59d4c18f77a4856afe9080f..1dc7b402acb2ace46f95978e13524c7a79aaaf08 100644 (file)
@@ -246,6 +246,7 @@ da:
       openid: OpenID
       google: Google
       facebook: Facebook
+      microsoft: Microsoft
       github: GitHub
       wikipedia: Wikipedia
   api:
@@ -261,6 +262,7 @@ da:
         reopened_at_by_html: Genaktiveret %{when} af %{user}
       rss:
         title: OpenStreetMap-bemærkninger
+        description_all: En liste over rapporterede, kommenterede eller lukkede noter
         description_area: En liste over bemærkninger, rapporteret, kommenteret på
           eller lukket i dit område [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
         description_item: Et RSS-feed for bemærkning %{id}
@@ -569,8 +571,8 @@ da:
       reply_link: Send en besked til forfatteren
       comment_count:
         one: '%{count} kommentar'
-        zero: Ingen kommentarer
         other: '%{count} kommentarer'
+      no_comments: Ingen kommentarer
       edit_link: Rediger dette indlæg
       hide_link: Skjul dette indlæg
       unhide_link: Skjul ikke længere dette indlæg
@@ -607,10 +609,35 @@ da:
       newer_comments: Nyere kommentarer
       older_comments: Ældre kommentarer
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Autorisationsserveren kræver valg af slutbrugerkonto
+        consent_required: Autorisationsserveren kræver slutbrugerens samtykke
+        interaction_required: Autorisationsserveren kræver slutbrugerinteraktion
+        login_required: Autorisationsserveren kræver slutbrugergodkendelse
     flash:
       applications:
         create:
           notice: Applikation registrerad.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fejl på grund af at Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            mangler konfiguration.
+          reauthenticate_resource_owner_not_configured: Fejl på grund af at Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner
+            mangler konfiguration.
+          resource_owner_from_access_token_not_configured: Fejl på grund af at Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token
+            mangler konfiguration.
+          select_account_for_resource_owner_not_configured: Fejl på grund af at Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner
+            mangler konfiguration.
+          subject_not_configured: Generering af ID-Token fejlede på grund af at Doorkeeper::OpenidConnect.configure.subject
+            mangler konfiguration.
+    scopes:
+      address: Se din fysiske adresse
+      email: Se din e-mailadresse
+      openid: Verificer din konto
+      phone: Se dit telefonnummer
+      profile: Se dine profiloplysninger
   errors:
     contact:
       contact_url_title: Forklaring af forskellige kontaktkanaler
@@ -1458,6 +1485,7 @@ da:
       reports:
         one: '%{count} rapport'
         other: '%{count} rapporter'
+      no_reports: Ingen rapporter
       report_created_at: Rapporteret første gang %{datetime}
       last_resolved_at: Sidst løst %{datetime}
       last_updated_at: Sidst opdateret %{datetime} af %{displayname}
@@ -1856,6 +1884,9 @@ da:
       home location: Hjemmeposition
       no home location: Du har ikke angivet din hjemmeposition.
       update home location on click: Opdater hjemmeposition når jeg klikker på kortet?
+      show: Vis
+      delete: Slet
+      undelete: Fortryd sletning
     update:
       success: Profil opdateret.
       failure: Kunne ikke opdatere profil.
@@ -1885,8 +1916,8 @@ da:
           title: Log på med Facebook
           alt: Log på med en Facebook-konto
         microsoft:
-          title: Log på med Windows Live
-          alt: Log på med en Windows Live-konto
+          title: Log ind med Microsoft
+          alt: Log ind med en Microsoft-konto
         github:
           title: Log ind med GitHub
           alt: Log ind med en GitHub-konto
@@ -2076,6 +2107,12 @@ da:
         contributors_nz_new_zealand: New Zealand
         contributors_nz_linz_data_service: LINZ Data Service
         contributors_nz_cc_by: CC BY 4.0
+        contributors_rs_credit_html: |-
+          %{serbia}: Indeholder data fra %{rgz_link} og %{open_data_portal}
+          (offentlig information fra Serbien), 2018.
+        contributors_rs_serbia: Serbien
+        contributors_rs_rgz: Den serbiske geodetiske myndighed
+        contributors_rs_open_data_portal: National Open Data Portal
         contributors_si_credit_html: '%{slovenia}: Indeholder data fra %{gu_link}
           og %{mkgp_link} (offentlig information Slovenien).'
         contributors_si_slovenia: Slovenien
@@ -2569,6 +2606,7 @@ da:
     permissions:
       missing: Du har ikke givet applikationen adgang til denne facilitet
     scopes:
+      openid: Log ind med OpenStreetMap
       read_prefs: Læse brugerpræferencer
       write_prefs: Ændre brugeralternativer
       write_diary: Udgiv brugerblogs, kommenter og få venner
@@ -2756,6 +2794,7 @@ da:
       remove as friend: Fjern som ven
       add as friend: Tilføj som ven
       mapper since: 'Kortlægger siden:'
+      uid: 'Bruger-ID:'
       ct status: 'Vilkår for bidragsydere:'
       ct undecided: Uafklaret
       ct declined: Afslået
@@ -2949,7 +2988,9 @@ da:
     index:
       title: Bemærkninger indsendt eller kommenteret af %{user}
       heading: '%{user}s bemærkninger'
-      subheading_html: Bemærkninger indsendt eller kommenteret af %{user}
+      subheading_html: Bemærkninger %{submitted} eller %{commented} af %{user}
+      subheading_submitted: indsendt
+      subheading_commented: kommenteret på
       no_notes: Ingen bemærkninger
       id: Id
       creator: Oprettet af
@@ -3040,6 +3081,7 @@ da:
         cyclosm: CyclOSM
         cycle_map: Cykelkort
         transport_map: Transportkort
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitær
         opnvkarte: Offentlig transport
       layers:
@@ -3058,6 +3100,8 @@ da:
       andy_allan: Andy Allan
       opnvkarte_credit: Kortfliser stillet til rådighed af %{memomaps_link}
       memomaps: MeMoMaps
+      tracestrack_credit: Kortfliser stillet til rådighed af %{tracestrack_link}
+      tracestrack: Tracestrack
       hotosm_credit: Kortflise-stil af %{hotosm_link} hostet af %{osm_france_link}
       hotosm_name: Humanitarian OpenStreetMap Team
     site:
index 8eff4d8060cf3ff18d94a714780295941082870a..541cb08ea0a78bb8aedc1ddfb31a11c58843b4a8 100644 (file)
@@ -685,6 +685,14 @@ de:
       newer_comments: Neuere Kommentare
       older_comments: Ältere Kommentare
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Der Autorisierungsserver erfordert die Auswahl
+          eines Endbenutzerkontos
+        consent_required: Der Autorisierungsserver erfordert die Zustimmung des Endbenutzers
+        interaction_required: Der Autorisierungsserver erfordert eine Interaktion
+          des Endbenutzers
+        login_required: Der Autorisierungsserver erfordert eine Endbenutzerauthentifizierung
     flash:
       applications:
         create:
@@ -1251,7 +1259,7 @@ de:
           employment_agency: Arbeitsamt
           energy_supplier: Büro eines Energieversorgers
           estate_agent: Immobilienhändler
-          financial: Finanzamt
+          financial: Finanzdienstleister
           government: Amt
           insurance: Versicherungsbüro
           it: IT-Büro
@@ -2118,6 +2126,14 @@ de:
         credit_2_2: Mache deutlich, dass die Daten unter der Open Database-Lizenz
           verfügbar sind.
         credit_3_attribution_guidelines: Richtlinien für Namensnennungen
+        credit_4_1_html: Um klarzustellen, dass die Daten unter der Open Database
+          License verfügbar sind, kannst Du auf %{this_copyright_page_link} verlinken.
+          Alternativ und als Anforderung, wenn Du OSM in einer Datenform verbreitest,
+          kannst Du die Lizenz(en) direkt benennen und verlinken. In Medien, in denen
+          Links nicht möglich sind (z. B. gedruckte Werke), empfehlen wir, Leser auf
+          openstreetmap.org (vielleicht durch das Erweitern von 'OpenStreetMap' auf
+          diese vollständige Adresse) und auf opendatacommons.org zu verweisen. In
+          diesem Beispiel erscheint der Hinweis in der Ecke der Karte.
         attribution_example:
           alt: Beispiel, wie man auf OpenStreetMap auf einer Webseite hinweist
           title: Namensnennung-Beispiel
@@ -2343,7 +2359,13 @@ de:
       change_preferences: Einstellungen hier ändern
     any_questions:
       title: Fragen?
+      paragraph_1_html: 'OpenStreetMap bietet verschiedene Ressourcen, um mehr über
+        das Projekt zu erfahren, Fragen zu stellen und zu beantworten sowie gemeinsam
+        Themen rund um das Kartieren zu diskutieren und zu dokumentieren. Schau mal
+        hier: %{help_link}. Planst Du, OpenStreetMap in einer Organisation zu verwenden?
+        Dann findest Du hier auch das Willkommenspaket: %{welcome_mat_link}.'
       get_help_here: Hilfe hier erhalten
+      welcome_mat: Schau Dir das Willkommenspaket an
     sidebar:
       search_results: Suchergebnisse
       close: Schließen
@@ -2435,6 +2457,10 @@ de:
         Hier sind noch eine paar nützliche zusätzliche Informationen.
       whats_on_the_map:
         title: Was gehört in die Karte?
+        on_the_map_html: OpenStreetMap ist ein Ort, um Dinge zu kartieren, die sowohl
+          %{real_and_current} sind. Hier findest Du Millionen von Gebäuden, Straßen
+          und anderen Details über Orte. Du kannst diejenigen Merkmale kartieren,
+          die für Dich interessant sind.
       basic_terms:
         title: Grundbegriffe fürs Mapping
         paragraph_1: OpenStreetMap nutzt ein paar spezifische Begriffe. Hier sind
@@ -2454,6 +2480,10 @@ de:
           fehlt, dich einzuarbeiten, wie man in OSM Daten editiert, so gib einfach
           einen Hinweis/melde einen Fehler, dann kann sich ein anderer Mapper darum
           kümmern.
+        para_2_html: 'Gehe einfach zu %{map_link} und klicke dort auf das Notiz-Symbol:
+          %{note_icon}. Dadurch wird ein Marker auf der Karte hinzugefügt, den Du
+          verschieben kannst, indem Du ihn ziehst. Füge Deine Nachricht hinzu, klicke
+          dann auf Speichern, und andere Mapper werden Deinem Hinweis nachgehen.'
         the_map: die Karte
     communities:
       title: Gemeinschaften
@@ -2634,6 +2664,7 @@ de:
     permissions:
       missing: Du hast den Anwendungszugriff auf diese Einrichtung nicht zugelassen.
     scopes:
+      openid: Melde Dich mit OpenStreetMap an
       read_prefs: Benutzereinstellungen lesen
       write_prefs: Benutzereinstellungen verändern
       write_diary: Tagebucheinträge und Kommentare erstellen und Freunde finden
@@ -3124,6 +3155,7 @@ de:
         cyclosm: CyclOSM
         cycle_map: Radfahrerkarte
         transport_map: Verkehrskarte
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitär
         opnvkarte: ÖPNVKarte
       layers:
@@ -3142,6 +3174,7 @@ de:
       andy_allan: Andy Allan
       opnvkarte_credit: Kacheln mit freundlicher Genehmigung von %{memomaps_link}
       memomaps: MeMoMaps
+      tracestrack_credit: Kacheln mit freundlicher Genehmigung von %{tracestrack_link}
       hotosm_credit: Kachelstil von %{hotosm_link}, gehostet von %{osm_france_link}
       hotosm_name: Humanitäres OpenStreetMap Team
     site:
index b570c6a17ffdc460c03f10d9a2a24524644939c1..07a28c859e2178897279ef87bd2364cac8f82992 100644 (file)
@@ -21,6 +21,7 @@
 # Author: Kongr43gpen
 # Author: Logictheo
 # Author: Macofe
+# Author: McDutchie
 # Author: Michail Angelos Georgoulas
 # Author: Mixasgr
 # Author: NikosLikomitros
index da346e8e89abb15497867e4e8fd30db39824d1a1..cd7d67947b7b2127b5472fe58ff563597bc52770 100644 (file)
@@ -559,10 +559,31 @@ en:
       newer_comments: "Newer Comments"
       older_comments: "Older Comments"
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: "The authorization server requires end-user account selection"
+        consent_required: "The authorization server requires end-user consent"
+        interaction_required: "The authorization server requires end-user interaction"
+        login_required: "The authorization server requires end-user authentication"
     flash:
       applications:
         create:
           notice: Application Registered.
+    openid_connect:
+      errors:
+        messages:
+          # Configuration error messages
+          auth_time_from_resource_owner_not_configured: "Failure due to Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner missing configuration."
+          reauthenticate_resource_owner_not_configured: "Failure due to Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner missing configuration."
+          resource_owner_from_access_token_not_configured: "Failure due to Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token missing configuration."
+          select_account_for_resource_owner_not_configured: "Failure due to Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner missing configuration."
+          subject_not_configured: "ID Token generation failed due to Doorkeeper::OpenidConnect.configure.subject missing configuration."
+    scopes:
+      address: "View your physical address"
+      email: "View your email address"
+      openid: "Authenticate your account"
+      phone: "View your phone number"
+      profile: "View your profile information"
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/Contact
@@ -2530,6 +2551,7 @@ en:
     permissions:
       missing: "You have not permitted the application access to this facility"
     scopes:
+      openid: Sign-in using OpenStreetMap
       read_prefs: Read user preferences
       write_prefs: Modify user preferences
       write_diary: Create diary entries, comments and make friends
index 63341937e7adb159215fe43275d7e23cf499678a..9bd1698e6e39fe006ad75b3208a64fd393d31a3a 100644 (file)
@@ -31,8 +31,6 @@ eo:
   time:
     formats:
       friendly: '%e %B %Y je %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Elektu dosieron
@@ -598,10 +596,35 @@ eo:
       newer_comments: Pli novaj komentoj
       older_comments: Pli malnovaj komentoj
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: La rajtiga servilo postulas elekti konton de uzanto
+        consent_required: La rajtiga servilo postulas konsenton de uzanto
+        interaction_required: La rajtiga servilo postulas interagon de uzanton
+        login_required: La rajtiga servilo postulas rajtigon de uzanto
     flash:
       applications:
         create:
           notice: Registris aplikaĵon.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Malsukceso pro mankanta agordo
+            «Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner».
+          reauthenticate_resource_owner_not_configured: Malsukceso pro mankanta agordo
+            «Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner».
+          resource_owner_from_access_token_not_configured: Malsukceso pro mankanta
+            agordo «Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token».
+          select_account_for_resource_owner_not_configured: Malsukceso pro mankanta
+            agordo «Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner».
+          subject_not_configured: Generado de identigil-ĵetono mmalsukcesis pro mankanta
+            agordo «Doorkeeper::OpenidConnect.configure.subject».
+    scopes:
+      address: legi viajn real-mondajn adresojn
+      email: legi viajn retpoŝtajn adresojn
+      openid: aŭtentigi vian konton
+      phone: legi vian telefonnumeron
+      profile: legi informojn de via profilo
   errors:
     contact:
       contact_url_title: klarigo pri diversaj kontakt-kanaloj
@@ -2543,12 +2566,13 @@ eo:
     authorize_failure:
       title: Rajtiga peto malakceptita
       denied: Vi malpermesis al aplikaĵo %{app_name} aliron al via konto
-      invalid: La rajtiga ĵeto ne plu validas.
+      invalid: La rajtiga ĵetono ne plu validas.
     revoke:
       flash: Vi malvalidigis la ĵetonon por %{application}
     permissions:
       missing: Vi ne permesis al aplikaĵo aliri al ĉi tiu eblo
     scopes:
+      openid: ensaluti uzante OpenStreetMap
       read_prefs: legi preferojn de uzanto
       write_prefs: modifi preferojn de uzanto
       write_diary: afiŝi en taglibro, komenti kaj aldoni amikojn
index b84e74524429d8498cbe67db4cebdd59f558da41..7bde15e21ccc21f34afc81ddb813bf115719e624 100644 (file)
@@ -79,6 +79,7 @@
 # Author: Pompilos
 # Author: Remux
 # Author: Reverse88
+# Author: Robot8A
 # Author: Rodhos
 # Author: Rodm23
 # Author: Rodney Araujo
@@ -99,8 +100,6 @@ es:
   time:
     formats:
       friendly: '%e de %B de %Y a las %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Seleccionar archivo
@@ -680,10 +679,39 @@ es:
       newer_comments: Comentarios más recientes
       older_comments: Comentarios más antiguos
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: El servidor de autorización requiere la selección
+          de la cuenta del usuario final
+        consent_required: El servidor de autorización requiere el consentimiento del
+          usuario final
+        interaction_required: El servidor de autorización requiere interacción con
+          el usuario final
+        login_required: El servidor de autorización requiere la autenticación del
+          usuario final
     flash:
       applications:
         create:
           notice: Aplicación registrada.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fallo debido a la configuración
+            faltante de Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Fallo debido a la configuración
+            faltante de Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Fallo debido a la configuración
+            faltante de Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Fallo debido a la configuración
+            faltante de Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: La generación de tokens de identificación falló
+            debido a la configuración faltante de Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Ver tu dirección física
+      email: Ver tu dirección de correo electrónico
+      openid: Autentica tu cuenta
+      phone: Ver tu número de teléfono
+      profile: Ver la información de tu perfil
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/ES:Canales_de_contacto
@@ -2200,7 +2228,7 @@ es:
           2010-2023.
         contributors_gb_united_kingdom: Reino Unido
         contributors_2_html: Para obtener más detalles de estas y otras fuentes que
-          se han utilizado para ayudar a mejorar OpenStreetMap, consultq el %{contributors_page_link}
+          se han utilizado para ayudar a mejorar OpenStreetMap, consulta la %{contributors_page_link}
           en el Wiki de OpenStreemMap.
         contributors_2_contributors_page: Página de colaboradores
         contributors_2_contributors_page_url: https://wiki.openstreetmap.org/wiki/ES:Colaboradores
@@ -2686,6 +2714,7 @@ es:
     permissions:
       missing: No has permitido que la aplicación acceda a esta instalación.
     scopes:
+      openid: Iniciar sesión usando OpenStreetMap
       read_prefs: Leer preferiencias de usuario
       write_prefs: Modificar las preferencias de usuario
       write_diary: Crear entradas del diario, comentarios y hacer amigos
index 2a9a4566d6e173ba1b001c6c397c5a359d90baa2..1c879a0207b3db8f7387b2f2ddc2fe862b5e9146 100644 (file)
@@ -7,6 +7,7 @@
 # Author: Alno
 # Author: Amire80
 # Author: Antimuonium
+# Author: BlueCamille
 # Author: Boniface
 # Author: Cantons-de-l'Est
 # Author: Cquoi
@@ -34,6 +35,7 @@
 # Author: Gileri
 # Author: Gomoko
 # Author: Gravitystorm
+# Author: Guilhelma
 # Author: Hashar
 # Author: IAlex
 # Author: JB
@@ -100,8 +102,6 @@ fr:
     formats:
       friendly: '%e %B %Y à %-Hh%M'
       blog: '%e %B %Y'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Choisir un fichier
@@ -694,10 +694,25 @@ fr:
       newer_comments: Commentaires plus récents
       older_comments: Commentaires plus anciens
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Le serveur d'autorisation nécessite la sélection
+          du compte de l'utilisateur final
+        consent_required: Le serveur d'autorisation nécessite le consentement de l'utilisateur
+          final
+        interaction_required: Le serveur d'autorisation nécessite une interaction
+          de l'utilisateur final
+        login_required: Le serveur d'autorisation nécessite l'authentification de
+          l'utilisateur final
     flash:
       applications:
         create:
           notice: Application inscrite.
+    scopes:
+      address: Voir votre adresse physique
+      email: Voir votre adresse e-mail
+      phone: Voir votre numéro de téléphone
+      profile: Voir les informations de votre profil
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/FR:Canaux_de_contact
@@ -2731,6 +2746,7 @@ fr:
     permissions:
       missing: Vous n’avez pas autorisé l’application à accéder à cette fonctionnalité
     scopes:
+      openid: Se connecter avec OpenStreetMap
       read_prefs: Lire les préférences de l’utilisateur
       write_prefs: Modifier les préférences de l’utilisateur
       write_diary: Créer des entrées de journal, des commentaires et se faire des
index a058613249581b04272f753073a6ca08ff488c8d..e63fca0b7487b0165b99bbec50e4837ea0ea572d 100644 (file)
@@ -598,10 +598,39 @@ gl:
       newer_comments: Comentarios máis recentes
       older_comments: Comentarios máis vellos
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: O servidor de autorización necesita a selección
+          da conta do usuario final
+        consent_required: O servidor de autorización necesita o consentimento do usuario
+          final
+        interaction_required: O servidor de autorización necesita a interacción do
+          usuario final
+        login_required: O servidor de autorización necesita a autenticación do usuario
+          final
     flash:
       applications:
         create:
           notice: Aplicación rexistrada.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fallo debido a que falta a
+            configuración de Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Fallo debido a que falta a
+            configuración de Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Fallo debido a que falta
+            a configuración de Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Fallo debido a que falta
+            a configuración de Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Produciuse un erro na xeración do identificador
+            debido a que falta a configuración de Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Consulta o teu enderezo físico
+      email: Consulta o teu enderezo de correo electrónico
+      openid: Autentica a túa conta
+      phone: Consulta o teu número de teléfono
+      profile: Consulta a túa información privada
   errors:
     contact:
       contact_url_title: Explícanse varias canles de contacto
@@ -2597,6 +2626,7 @@ gl:
     permissions:
       missing: Non permitiu á aplicación acceder a esta instalación
     scopes:
+      openid: Iniciar sesión usando OpenStreetMap
       read_prefs: Ler preferencias de usuario
       write_prefs: Modificar preferencias de usuario
       write_diary: Crear entradas de diario, comentarios e amizades
index 664f90fcbac110ae5dac3b5adc5caa1f724da68f..e57b223abd537a49dd728dcf95ce2cec849c41ef 100644 (file)
@@ -637,10 +637,33 @@ he:
       newer_comments: הערות חדשות
       older_comments: הערות ישנות
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: שרת האימות דורש בחירת חשבון משתמש קצה
+        consent_required: שרת האימות דורש את הסכמת משתמש הקצה
+        interaction_required: שרת האימות דורש פעולה הדדית עם משתמש הקצה
+        login_required: שרת האימות דורש את אימות משתמש הקצה
     flash:
       applications:
         create:
           notice: היישום נרשם.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: |-
+            כשל עקב הגדרה חסרה של Doorkeeper
+            ::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: כשל עקב הגדרה חסרה של Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: כשל עקב הגדרה חסרה של Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: כשל עקב הגדרה חסרה של
+            Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: יצירת אסימון מזהה נכשלה בשל תצורה חסרה של Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: הצגת הכתובת הפיזית שלך
+      email: הצגת כתובת הדוא״ל שלך
+      openid: אימות החשבון שלך
+      phone: הצגת מספר הטלפון שלך
+      profile: הצגת פרטי הפרופיל שלך
   errors:
     contact:
       contact_url_title: הסבר על מגוון ערוצי התקשורת
@@ -2585,6 +2608,7 @@ he:
     permissions:
       missing: לא נתת להרשאה גישה למתקן הזה
     scopes:
+      openid: כניסה עם OpenStreetMap
       read_prefs: העדפות קריאה
       write_prefs: שינוי העדפות משתמש
       write_diary: ליצור רשומות ביומן, הערות וליצור חברויות
@@ -3068,6 +3092,7 @@ he:
       andy_allan: אנדי אלן
       opnvkarte_credit: אריחים באדיבות %{memomaps_link}
       memomaps: ממומאפס
+      tracestrack_credit: האריחים באדיבות %{tracestrack_link}
       hotosm_credit: סגנון אריחים מאת %{hotosm_link} מתארח אצל %{osm_france_link}
       hotosm_name: צוות OpenStreetMap הומניטרי
     site:
index 242aa3ae4d59872cdf913255cf720d8f3de969c7..6846d2c08a921f91bb07b2e912e9b23cc142e7ff 100644 (file)
@@ -615,6 +615,12 @@ hu:
       applications:
         create:
           notice: Alkalmazás regisztrálva.
+    scopes:
+      address: Tartózkodási cím megtekintése
+      email: Email cím megtekintése
+      openid: Hitelesítsd fiókod!
+      phone: Telefonszám megtekintése
+      profile: Profiladatok megtekintése
   errors:
     contact:
       contact_url_title: A különféle kapcsolatfelvételi csatornák magyarázata
@@ -2493,6 +2499,7 @@ hu:
     permissions:
       missing: Nem engedted meg az alkalmazás számára, hogy hozzáférjen ehhez a létesítményhez
     scopes:
+      openid: Jelentkezz be az OpenStreetMap használatával!
       read_prefs: Felhasználói beállítások elolvasása
       write_prefs: Felhasználói beállítások módosítása
       write_diary: Naplóbejegyzések és hozzászólások készítése, és ismerősök hozzáadása
index c84719348b9d3f08ab42913743bef0851f2b4d79..784d9ae4c9f3d240d93394b78c35c8a986f79735 100644 (file)
@@ -12,8 +12,6 @@ ia:
   time:
     formats:
       friendly: '%e de %B %Y a %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Selige file
@@ -585,10 +583,39 @@ ia:
       newer_comments: Commentos plus recente
       older_comments: Commentos plus ancian
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Le servitor de autorisation require le section
+          de un conto de usator
+        consent_required: Le servitor de autorisation require le consentimento del
+          usator
+        interaction_required: Le servitor de autorisation require un interaction del
+          usator
+        login_required: Le servitor de autorisation require le authentication del
+          usator
     flash:
       applications:
         create:
           notice: Application registrate.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fallimento a causa del manco
+            de un configuration Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Fallimento a causa del manco
+            de un configuration Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Fallimento a causa del
+            manco de un configuration  Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Fallimento a causa del
+            manco de un configuration  Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Le generation del token identificator ha fallite
+            a causa del manco de un configuration  Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Vider tu adresse physic
+      email: Vider tu adresse de e-mail
+      openid: Authenticar tu conto
+      phone: Vider tu numero de telephono
+      profile: Vider tu information de profilo
   errors:
     contact:
       contact_url_title: Varie canales de contacto explicate
@@ -2576,6 +2603,7 @@ ia:
     permissions:
       missing: Tu non ha permittite al application le accesso a iste facilitate
     scopes:
+      openid: Aperir session con OpenStreetMap
       read_prefs: Leger preferentias de usator
       write_prefs: Modificar preferentias de usator
       write_diary: Crear entratas de diario, commentos e adder amicos
index 2600c31f361a2b5c5024148759edd51012f796d2..f0f8a4c2fde32698355686abaa1ced400dd20119 100644 (file)
@@ -640,10 +640,39 @@ it:
       newer_comments: Commenti più recenti
       older_comments: Commenti più vecchi
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Il server di autorizzazione richiede la selezione
+          dell'account dell'utente finale
+        consent_required: Il server di autorizzazione richiede il consenso dell'utente
+          finale
+        interaction_required: Il server di autorizzazione richiede un'interazione
+          da parte dell'utente finale
+        login_required: Il server di autorizzazione richiede l'autenticazione dell'utente
+          finale
     flash:
       applications:
         create:
           notice: Applicazione registrata.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Errore dovuto alla configurazione
+            mancante di Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Errore dovuto alla configurazione
+            mancante di Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Errore dovuto alla configurazione
+            mancante di Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Errore dovuto alla configurazione
+            mancante di Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: La generazione del token ID è fallita a causa della
+            configurazione mancante di Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Vedi il tuo indirizzo fisico
+      email: Vedi il tuo indirizzo e-mail
+      openid: Autentica la tua utenza
+      phone: Vedi il tuo numero di telefono
+      profile: Vedi le informazioni del tuo profilo
   errors:
     contact:
       contact_url_title: Sommario dei vari canali di contatto
@@ -2633,6 +2662,7 @@ it:
     permissions:
       missing: Non hai autorizzato l'applicazione ad accedere a questa funzione
     scopes:
+      openid: Accedi utilizzando OpenStreetMap
       read_prefs: Leggi preferenze utente
       write_prefs: Modifica le preferenze utente
       write_diary: Crea voci del diario, commenti e fai amicizia
@@ -3105,6 +3135,7 @@ it:
         cyclosm: CyclOSM
         cycle_map: Mappa ciclabile
         transport_map: Mappa dei trasporti
+        tracestracktop_topo: TracceTraccia Topo
         hot: Umanitario
         opnvkarte: ÖPNVKarte
       layers:
@@ -3124,6 +3155,7 @@ it:
       opnvkarte_credit: Tasselli per gentile concessione di %{memomaps_link}
       memomaps: MeMoMaps
       tracestrack_credit: Tasselli per gentile concessione di %{tracestrack_link}
+      tracestrack: Tracestrack
       hotosm_credit: Stile tasselli di %{hotosm_link} ospitato da %{osm_france_link}
       hotosm_name: La squadra di OpenStreetMap Humanitarian
     site:
index 3166ddb4a899264d64d50352b7f173aa1f4ed401..620465c25565e6104e1fcc27ca40785dbd8c7814 100644 (file)
@@ -217,41 +217,29 @@ ja:
   datetime:
     distance_in_words_ago:
       about_x_hours:
-        one: 約1時間前
         other: 約%{count}時間前
       about_x_months:
-        one: 約1ヶ月前
         other: 約%{count}ヶ月前
       about_x_years:
-        one: 約1年前
         other: 約%{count}年前
       almost_x_years:
-        one: ほぼ1年前
         other: ほぼ%{count}年前
       half_a_minute: 30秒前
       less_than_x_seconds:
-        one: 1秒以内
         other: '%{count}秒以内'
       less_than_x_minutes:
-        one: 1分以内
         other: '%{count}分以内'
       over_x_years:
-        one: 1年以上前
         other: '%{count}年以上前'
       x_seconds:
-        one: 1秒前
         other: '%{count}秒前'
       x_minutes:
-        one: 1分前
         other: '%{count}分前'
       x_days:
-        one: 1日前
         other: '%{count}日前'
       x_months:
-        one: 1ヶ月前
         other: '%{count}ヶ月前'
       x_years:
-        one: 1年前
         other: '%{count}年前'
   printable_name:
     with_version: '%{id}、第%{version}版'
@@ -362,10 +350,8 @@ ja:
     no_comment: (コメントなし)
     part_of: 以下の一部
     part_of_relations:
-      one: 1件のリレーション
       other: '%{count}件のリレーション'
     part_of_ways:
-      one: 1件のウェイ
       other: '%{count}件のウェイ'
     download_xml: XMLをダウンロード
     view_history: 履歴を表示
@@ -405,7 +391,6 @@ ja:
       history_title_html: 'リレーション: %{name} の履歴'
       members: メンバー
       members_count:
-        one: 1名
         other: '%{count}名'
     relation_member:
       entry_role_html: '%{type} %{name} (%{role} として)'
@@ -561,8 +546,6 @@ ja:
       comment_link: このエントリにコメント
       reply_link: 筆者にメッセージを送る
       comment_count:
-        zero: コメントなし
-        one: '%{count} コメント'
         other: '%{count} コメント'
       no_comments: (コメントなし)
       edit_link: この記事の編集
@@ -1421,7 +1404,6 @@ ja:
       last_updated: 最近の更新
       link_to_reports: レポートを表示
       reports_count:
-        one: 1件のレポート
         other: '%{count}件のレポート'
       reported_item: レポートした項目
       states:
@@ -1431,8 +1413,6 @@ ja:
     show:
       title: '%{status} 問題 #%{issue_id}'
       reports:
-        zero: レポート0件
-        one: 1件のレポート
         other: '%{count}件のレポート'
       no_reports: 報告はありません
       report_created_at: 最初の通報は%{datetime}です
@@ -2117,9 +2097,9 @@ ja:
       other_groups:
         title: その他のグループ
         other_groups_html: |-
-          å\9c°å\9f\9fæ\94¯é\83¨ã\81¨å\90\8cã\81\98ã\82\88ã\81\86ã\81«å\85¬å¼\8fã\81«グループを設立する必要はありません。
-          実際に多くのグループが非公式な人々の集まりとして、または
-          コミュニティグループとして非常にうまく存しています。誰でもこれらを設定または参加できます。 %{communities_wiki_link} で詳細をお読みください。
+          å\9b½ã\83»å\9c°å\9f\9få\88¥å\8d\94ä¼\9aã\81¨å\90\8cç­\89ã\81®å\85¬å¼\8fã\81ªグループを設立する必要はありません。
+          実際に多くのグループが非公式な集まりとして、または
+          コミュニティグループとして非常にうまく存しています。誰でもこれらを設定または参加できます。 %{communities_wiki_link} で詳細をお読みください。
   traces:
     visibility:
       private: 非公開 (匿名、点は順不同)
@@ -2175,7 +2155,6 @@ ja:
     trace:
       pending: 処理中
       count_points:
-        one: 1個の点
         other: '%{count}個の点'
       more: 詳細
       trace_details: トレースの詳細表示
@@ -2538,18 +2517,15 @@ ja:
       time_future_and_until_login_html: 利用者のログイン後%{time}で終了します。
       time_past_html: '%{time}に終了しました。'
       block_duration:
-        hours: '%{count}時間'
+        hours:
+          other: '%{count}時間'
         days:
-          one: 1日
           other: '%{count}日'
         weeks:
-          one: 1週間
           other: '%{count}週間'
         months:
-          one: 1か月
           other: '%{count}か月'
         years:
-          one: 1年
           other: '%{count}年'
     blocks_on:
       title: '%{name} がされたブロック'
@@ -2591,7 +2567,7 @@ ja:
     index:
       title: '%{user} さんが投稿またはコメントしたメモ'
       heading: '%{user}さんのメモ'
-      subheading_html: '%{user}さんが投稿またはコメントしたメモ'
+      subheading_html: '%{user}さんが%{submitted}または%{commented}したメモ'
       no_notes: メモなし
       id: ID
       creator: 作成者
index 59f87fb2aa32d6b6e19f317c240a06f00b789e68..d23dd58459d3b0ff5bdd9289417518ae11cfc9fe 100644 (file)
@@ -13,8 +13,6 @@ mk:
     formats:
       friendly: '%e %B %Y г. во %H:%M ч.'
       blog: '%e %B %Y г.'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Одберете податотека
@@ -582,10 +580,36 @@ mk:
       newer_comments: Понови коментари
       older_comments: Постари коментари
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Овластувачкиот опслужувач бара избор на сметка
+          на крајниот корисник
+        consent_required: Овластувачкиот опслужувач бара согласност од крајниот корисник
+        interaction_required: Овластувачкиот опслужувач бара дејство од крајниот корисник
+        login_required: Овластувачкиот опслужувач бара заверка на крајниот корисник
     flash:
       applications:
         create:
           notice: Прилогот е пријавен.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Не успеа бидејќи не е наместен
+            Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Не успеа бидејќи не е наместен
+            Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Не успеа бидејќи не е наместен
+            Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Не успеа бидејќи не е
+            наместен Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Создавањето на шифрената назнака не успеа бидејќи
+            не е наместен Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Ваша физичка адреса
+      email: Ваша е-поштенска адреса
+      openid: Заверете ја вашата сметка
+      phone: Ваш телефонски број
+      profile: Ваши профилни информации
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/Contact?uselang=mk
@@ -2563,6 +2587,7 @@ mk:
     permissions:
       missing: Му немате дозволено пристап на прилогот до оваа можност
     scopes:
+      openid: Најава со OpenStreetMap
       read_prefs: Кориснички нагодувања за читање
       write_prefs: Менување на корисничките нагодувања
       write_diary: Создавање на дневнички ставки, коментирање и спријателување
index 6d8323aab45a8da327ce43f4cf0bec5a60a355df..8c842cbb3643b197a118840ba478d6d0feb661f0 100644 (file)
@@ -52,6 +52,7 @@ nb:
         create: Registrer
         update: Oppdater
       oauth2_application:
+        create: Registrer deg
         update: Oppdater
       redaction:
         create: Lag maskering
@@ -127,6 +128,7 @@ nb:
       doorkeeper/application:
         name: Navn
         redirect_uri: Omdirigerings-URI-er
+        confidential: Konfidensiell søknad?
         scopes: Tillatelser
       friend:
         user: Bruker
@@ -564,6 +566,9 @@ nb:
       success: '%{name} ble fjernet fra dine venner'
       not_a_friend: '%{name} er ikke en av dine venner.'
   geocoder:
+    search:
+      title:
+        latlon: Intern
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -895,13 +900,14 @@ nb:
           fitness_station: Treningsstudio
           garden: Hage
           golf_course: Golfbane
-          horse_riding: Ridning
+          horse_riding: Ridesenter
           ice_rink: Skøytebane
           marina: Båthavn
           miniature_golf: Minigolf
           nature_reserve: Naturreservat
           outdoor_seating: Utendørs sitteplass
           park: Park
+          picnic_table: Piknikbord
           pitch: Sportsarena
           playground: Lekeplass
           recreation_ground: Rekreasjonsområde
@@ -1103,6 +1109,7 @@ nb:
           car_repair: Bilverksted
           carpet: Teppebutikk
           charity: Veldedighetsbutikk
+          cheese: Ostebutikk
           chemist: Kjemiker
           chocolate: Sjokolade
           clothes: Klesbutikk
@@ -1112,6 +1119,8 @@ nb:
           convenience: Nærbutikk
           copyshop: Kopieringsbutikk
           cosmetics: Kosmetikkforretning
+          craft: Hobbybutikk
+          curtain: Gardinbutikk
           deli: Delikatessebutikk
           department_store: Varehus
           discount: Tilbudsbutikk
@@ -1139,6 +1148,7 @@ nb:
           kiosk: Kiosk
           kitchen: Kjøkkenbutikk
           laundry: Vaskeri
+          locksmith: Låsesmed
           lottery: Lotteri
           mall: Kjøpesenter
           massage: Massasjeinstitutt
@@ -1163,6 +1173,7 @@ nb:
           stationery: Papirbutikk
           supermarket: Supermarked
           tailor: Skredder
+          tattoo: Tatoveringsstudio
           tea: Tehandel
           ticket: Billettformidler
           tobacco: Tobakkshandler
@@ -1181,7 +1192,7 @@ nb:
           artwork: Kunstverk
           attraction: Attraksjon
           bed_and_breakfast: Bed and Breakfast
-          cabin: Hytte
+          cabin: Turisthytte
           camp_site: Teltplass
           caravan_site: Campingplass
           chalet: Fjellhytte
index 02843f1ed06f10ae9fceb039637074c44f4d1a1e..b745bed87120c235f28bea5559893222607d3532 100644 (file)
@@ -641,10 +641,36 @@ nl:
       newer_comments: Nieuwere reacties
       older_comments: Oudere reacties
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Voor de autorisatieserver is de selectie van een
+          eindgebruikersaccount vereist
+        consent_required: De autorisatieserver vereist toestemming van de eindgebruiker
+        interaction_required: De autorisatieserver vereist interactie van de eindgebruiker
+        login_required: De autorisatieserver vereist authenticatie van de eindgebruiker
     flash:
       applications:
         create:
           notice: Toepassing geregistreerd.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fout vanwege ontbrekende configuratie
+            van Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Fout vanwege ontbrekende configuratie
+            van Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Fout vanwege ontbrekende
+            configuratie van Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Fout vanwege ontbrekende
+            configuratie van Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          subject_not_configured: Het genereren van het ID-token is mislukt vanwege
+            een ontbrekende configuratie van Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Uw fysieke adres bekijken
+      email: Uw e-mailadres bekijken
+      openid: Uw account authenticeren
+      phone: Uw telefoonnummer bekijken
+      profile: Uw profielgegevens bekijken
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/NL:Contact_channels
@@ -2647,6 +2673,7 @@ nl:
     permissions:
       missing: U heeft niet toegestaan dat de toepassing toegang heeft tot dit kenmerk.
     scopes:
+      openid: Aanmelden met OpenStreetMap
       read_prefs: Gebruikersvoorkeuren lezen
       write_prefs: Gebruikersvoorkeuren wijzigen
       write_diary: Dagboekberichten schrijven, reacties geven en vrienden maken
@@ -3122,6 +3149,7 @@ nl:
         cyclosm: CyclOSM
         cycle_map: Fietskaart
         transport_map: Transportkaart
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitair
         opnvkarte: ÖPNVKarte
       layers:
@@ -3140,6 +3168,8 @@ nl:
       andy_allan: Andy Allan
       opnvkarte_credit: Tegels met dank aan %{memomaps_link}
       memomaps: MeMoMaps
+      tracestrack_credit: Tegels met dank aan %{tracestrack_link}
+      tracestrack: Tracestrack
       hotosm_credit: Kaartstijl door %{hotosm_link} gehost door %{osm_france_link}
       hotosm_name: Humanitair OpenStreetMap-team
     site:
index f622399e82307066e16d60e2941c2995e2b408bf..f32c4267cb2ad01ef8cfbe0623c2ece925c6c100 100644 (file)
@@ -28,6 +28,7 @@
 # Author: Krottyianock
 # Author: Krzyz23
 # Author: Kwiatek 123
+# Author: Luku123
 # Author: M4sk1n
 # Author: Macofe
 # Author: Maraf24
@@ -319,6 +320,7 @@ pl:
         reopened_at_by_html: Ponownie aktywowano %{when} przez %{user}
       rss:
         title: Uwagi OpenStreetMap
+        description_all: Lista zgłoszonych, skomentowanych lub zamkniętych uwag
         description_area: Lista uwag stworzonych, skomentowanych lub zamkniętych w
           twojej okolicy [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
         description_item: Kanał RSS uwagi %{id}
@@ -677,6 +679,12 @@ pl:
       applications:
         create:
           notice: Zarejestrowano aplikację.
+    scopes:
+      address: Wyświetl swój adres
+      email: Zobacz swój adres e-mail
+      openid: Uwierzytelnij swoje konto
+      phone: Wyświetl swój numer telefonu
+      profile: Wyświetl informacje o swoim profilu
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/Pl:Sposoby_komunikacji
@@ -2015,9 +2023,11 @@ pl:
         czy dane w OSM są dokładne i aktualne.
       community_driven_title: Zarządzany przez społeczność
       community_driven_osm_blog: Blog OpenStreetMap
+      community_driven_user_diaries: dzienniki użytkowników
       community_driven_community_blogs: blogi społecznościowe
       community_driven_osm_foundation: Fundacja OSM
       open_data_title: Otwarte dane
+      open_data_copyright_license: Strona dotycząca praw autorskich i licencji
       legal_title: Pytania prawne
       legal_1_1_openstreetmap_foundation: Fundacja OpenStreetMap
       legal_1_1_terms_of_use: Warunki użytkowania
@@ -2124,6 +2134,7 @@ pl:
         contributors_nz_new_zealand: Nowa Zelandia
         contributors_nz_linz_data_service: LINZ Data Service
         contributors_nz_cc_by: CC BY 4.0
+        contributors_rs_serbia: Serbia
         contributors_si_credit_html: '%{slovenia}: Zawiera dane %{gu_link} oraz %{mkgp_link}
           (informacja publiczna Słowenii).'
         contributors_si_slovenia: Słowenia
@@ -2388,6 +2399,8 @@ pl:
           można edytować mapę.'
         editor: edytor
         node: węzeł
+        way: Linia
+        tag: Znacznik
       rules:
         title: Zasady!
         para_1_html: |-
@@ -2581,6 +2594,7 @@ pl:
     permissions:
       missing: Nie zezwoliłeś aplikacji na dostęp do tej funkcji
     scopes:
+      openid: Zaloguj się za pomocą OpenStreetMap
       read_prefs: Odczytywanie preferencji użytkownika
       write_prefs: Modyfikowanie preferencji użytkownika
       write_diary: Tworzenie wpisów w dzienniku, dodawanie komentarzy i nawiązywanie
@@ -2768,6 +2782,7 @@ pl:
       remove as friend: usuń ze znajomych
       add as friend: dodaj do znajomych
       mapper since: 'Mapuje od:'
+      uid: 'Identyfikator użytkownika:'
       ct status: 'Warunki uczestnictwa:'
       ct undecided: niezdecydowane
       ct declined: odrzucone
@@ -3064,6 +3079,7 @@ pl:
         cyclosm: CyclOSM
         cycle_map: Rowerowa
         transport_map: Transportu publicznego
+        tracestracktop_topo: Tracestrack Topo
         hot: Humanitarna
         opnvkarte: ÖPNVKarte
       layers:
index f290f65e46d93903bda685c7aea57bc1aa7d5555..d2300b8d653f05a5f3020d74625fb5b416923828 100644 (file)
@@ -639,6 +639,11 @@ pt:
       applications:
         create:
           notice: Aplicação registada.
+    scopes:
+      email: Ver seu endereço de e-mail
+      openid: Autenticar sua conta
+      phone: Ver seu número de telefone
+      profile: Ver suas informações de perfil
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/Pt:Canais_para_contato
index 8d330bf6b12cfae4d19246f489d19748252cd7f5..e576a3237ec9297113f8c9cbab7391eda6be682a 100644 (file)
@@ -24,8 +24,6 @@ ro:
   time:
     formats:
       friendly: '%e %B %Y la %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Selectează fișier
@@ -617,10 +615,36 @@ ro:
       newer_comments: Comentarii mai noi
       older_comments: Comentarii mai vechi
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Serverul de autorizare necesită selectarea contului
+          de utilizator
+        consent_required: Serverul de autorizare necesită consimțământul utilizatorului
+        interaction_required: Serverul de autorizare necesită interacțiunea utilizatorului
+        login_required: Serverul de autorizare necesită autentificarea utilizatorului
     flash:
       applications:
         create:
           notice: Aplicație înregistrată.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Eroare datorită lipsei configurației
+            Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Eroare datorită lipsei configurației
+            Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Eroare datorită lipsei
+            configurației Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Eroare datorită lipsei
+            configurației Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Generarea codului ID a eșuat din cauza lipsei configurației
+            Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Vizualizați adresa dumneavoastră fizică
+      email: Vizualizați adresa dumneavoastră de e-mail
+      openid: Autentificați-vă contul
+      phone: Vizualizați numărul dumneavoastră de telefon
+      profile: Vizualizați informațiile de profil
   errors:
     contact:
       contact_url_title: Diferite metode de contact explicate
@@ -2617,6 +2641,7 @@ ro:
     permissions:
       missing: Nu ați permis accesul aplicației la această facilitate
     scopes:
+      openid: Conectați-vă folosind OpenStreetMap
       read_prefs: Citiți preferințele utilizatorului
       write_prefs: Modificați preferințele utilizatorului
       write_diary: Creează înregistrări în jurnal, comentarii și fă-ți prieteni
index b3626cb1554a5474c31cc000f82677ba7d6fd1ed..7757049b44cc2cb5a22dc0a0c0d2d48d02130015 100644 (file)
@@ -413,6 +413,8 @@ ru:
       delete_account: Удалить учётную запись…
     go_public:
       heading: Общедоступная правка
+      only_public_can_edit: С момента перехода на API 0.6, только публичные пользователи
+        могут редактировать данные карты.
       find_out_why: узнать почему
       make_edits_public_button: Сделать все мои правки доступными
     update:
@@ -888,7 +890,7 @@ ru:
           "yes": Мост
         building:
           apartment: Квартира
-          apartments: Ð\9aваÑ\80Ñ\82иÑ\80Ñ\8b
+          apartments: Ð\9cногокваÑ\80Ñ\82иÑ\80нÑ\8bй Ð´Ð¾Ð¼
           barn: Амбар
           bungalow: Бунгало
           cabin: Хижина
@@ -2070,6 +2072,9 @@ ru:
         mapping_link: начать картографирование
       legal_babble:
         title_html: Авторские права и лицензирование
+        introduction_1_html: "OpenStreetMap%{registered_trademark_link} — это %{open_data},
+          лицензированные по \n%{odc_odbl_link} (ODbL), разработанной %{osm_foundation_link}
+          (OSMF)."
         introduction_1_open_data: открытые данные
         introduction_2_html: Вы можете свободно копировать, распространять, передавать
           и дорабатывать наши данные до тех пор, пока вы ссылаетесь на OpenStreetMap
@@ -2209,6 +2214,11 @@ ru:
             отсутствие дороги или вашего адреса, лучший способ для дальнейших действий
             — вступить в сообщество OpenStreetMap и добавить или восстановить данные
             самостоятельно.
+        add_a_note:
+          instructions_1_html: |-
+            Просто нажмите %{note_icon} или тот же значок на экране карты.
+            Это добавит на карту маркер, который вы сможете перемещать
+            перетаскиванием. Добавьте свое сообщение, затем нажмите «Сохранить», и другие картографы проведут расследование.
       other_concerns:
         title: Другие проблемы
         copyright: страница авторского права
@@ -2262,6 +2272,11 @@ ru:
       change_preferences: Измените свои предпочтения здесь
     any_questions:
       title: Остались вопросы?
+      paragraph_1_html: |-
+        В OpenStreetMap имеется несколько ресурсов для изучения проекта, вопросов и ответов на них, а также для совместного обсуждения и документирования тем, относящихся к картографированию.
+        %{help_link}. Вы из организации, которая планирует использовать OpenStreetMap? %{welcome_mat_link}.
+      get_help_here: Обратитесь за помощью сюда
+      welcome_mat: Шагните на приветственный коврик
     sidebar:
       search_results: Результаты поиска
       close: Закрыть
@@ -2354,12 +2369,27 @@ ru:
         Вот небольшая инструкция по самым важным вещам, которые необходимо знать.
       whats_on_the_map:
         title: Что находится на карте
+        on_the_map_html: OpenStreetMap — это место для картографирования объектов
+          (%{real_and_current}); сайт содержит миллионы зданий, дорог и других сведений
+          о различных местах. Вы можете нанести на карту любые особенности реального
+          мира, которые вам интересны.
+        real_and_current: реальных и актуальных
+        off_the_map_html: Чего здесь %{doesnt}, так это субъективных данных, таких
+          как рейтинги, исторические или гипотетические характеристики, а также данных
+          из источников, защищённых авторским правом. Не копируйте карты с онлайн-
+          или бумажных карт, если у вас нет специального разрешения.
+        doesnt: нету
       basic_terms:
         title: Небольшой словарь картографа
         paragraph_1: У OpenStreetMap выработался локальный сленг. Вот несколько понятий,
-          которые стоит иметь ввиду.
+          которые стоит иметь в виду.
         an_editor_html: '%{editor} – это программа или веб-сайт, который вы можете
           использовать для редактирования карты.'
+        a_node_html: '%{node} — это точка на карте, например ресторан или дерево.'
+        a_way_html: '%{way} — это линия или область, например дорога, ручей, озеро
+          или здание.'
+        a_tag_html: '%{tag} — это часть данных о точке (узле) или пути, например название
+          ресторана или ограничение скорости на дороге.'
         editor: редактор
         node: точка
         way: линия
@@ -2379,6 +2409,10 @@ ru:
         para_1: Если нужно сделать небольшое уточнение, ради которого слишком долго
           регистрироваться и изучать правила правки, можно просто добавить заметку
           на карту.
+        para_2_html: |-
+          Просто перейдите к %{map_link} и кликните по значку заметки: %{note_icon}.
+          Это добавит на карту маркер, который вы можете перемещать перетаскиванием.
+          Добавьте свое сообщение, затем нажмите «Сохранить» и другие картографы проведут расследование.
         the_map: карта
     communities:
       title: Сообщества
index 8cdab4e5ce182602aeac9216d39da129e009de10..4b22cd44f23ad07f4126df9216b4e8a990c076fc 100644 (file)
@@ -592,6 +592,14 @@ sc:
       newer_comments: Cummentos prus noos
       older_comments: Cummentos prus betzos
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Su serbidore de autorizatzione tenet bisòngiu
+          de sa seletzione de unu contu de utente finale
+        consent_required: Su serbidore de autorizatzione tenet bisòngiu de sa seletzione
+          de s'utente finale
+        interaction_required: Su serbidore de autorizatzione tenet bisòngiu de s'interatzione
+          de s'utente finale
     flash:
       applications:
         create:
diff --git a/config/locales/sh.yml b/config/locales/sh.yml
new file mode 100644 (file)
index 0000000..b529925
--- /dev/null
@@ -0,0 +1,870 @@
+# Messages for Serbo-Croatian (srpskohrvatski / српскохрватски)
+# Exported from translatewiki.net
+# Export driver: phpyaml
+# Author: Vlad5250
+---
+sh:
+  time:
+    formats:
+      friendly: '%e %B %Y u %H:%M'
+  helpers:
+    file:
+      prompt: Izaberi datoteku
+    submit:
+      diary_comment:
+        create: Komentar
+      diary_entry:
+        create: Objavi
+        update: Podnovi
+      issue_comment:
+        create: Dodaj komentar
+      message:
+        create: Pošalji
+      client_application:
+        create: Registriraj
+        update: Podnovi
+      oauth2_application:
+        create: Registracija
+        update: Podnovi
+      redaction:
+        create: Napravi redakciju
+        update: Sačuvaj redakciju
+      trace:
+        create: Otpremi
+        update: Sačuvaj promjene
+      user_block:
+        create: Napravi blokadu
+        update: Podnovi blokadu
+  activerecord:
+    errors:
+      messages:
+        invalid_email_address: ne izgleda kao važeća adresa e-pošte
+        email_address_not_routable: nije povezljiv
+    models:
+      acl: Kontrole pristupa
+      changeset: Set promjena
+      changeset_tag: Oznaka seta promjena
+      country: Zemlja
+      diary_comment: Komentar dnevnika
+      diary_entry: Unos u dnevniku
+      friend: Prijatelj
+      issue: Problem
+      language: Jezik
+      message: Poruka
+      node: Čvor
+      node_tag: Oznaka čvora
+      old_node: Stari čvor
+      old_node_tag: Oznaka starog čvora
+      old_relation: Stara relacija
+      old_relation_member: Stari član relacije
+      old_relation_tag: Oznaka stare relacije
+      old_way: Stara putanja
+      old_way_node: Čvor stare putanje
+      old_way_tag: Oznaka stare putanje
+      relation: Relacija
+      relation_member: Član relacije
+      relation_tag: Oznaka relacije
+      report: Prijavi
+      session: Sesija
+      trace: Trag
+      tracepoint: Tačka traga
+      tracetag: Oznaka traga
+      user: Korisnik
+      user_preference: Korisničke postavke
+      user_token: Korisnički žeton
+      way: Putanja
+      way_node: Čvor putanje
+      way_tag: Oznaka putanje
+    attributes:
+      client_application:
+        name: Ime (obavezno)
+        url: Glavni URL priloga (obavezno)
+        callback_url: URL za povratni poziv
+        support_url: URL podrške
+        allow_read_prefs: čita njihove korisničke postavke
+        allow_write_prefs: mijenja njihove korisničke postavke
+        allow_write_diary: pravi dnevničke zapise, komentare i dodaje prijatelje
+      diary_comment:
+        body: Tijelo
+      diary_entry:
+        user: Korisnik
+        title: Tema
+        body: Tijelo
+        latitude: Geografska širina
+        longitude: Geografska dužina
+        language_code: Jezik
+      doorkeeper/application:
+        name: Naziv
+        redirect_uri: Preusmjeravanje URI-ja
+        confidential: Povjerljivi prilog?
+        scopes: Dozvole
+      friend:
+        user: Korisnik
+        friend: Prijatelj
+      trace:
+        user: Korisnik
+        visible: Vidljivo
+        name: Ime datoteke
+        size: Veličina
+        latitude: Geo. širina
+        longitude: Geo. dužina
+        public: Javno
+        description: Opis
+        gpx_file: Otpremi GPX datoteku
+        visibility: Vidljivost
+        tagstring: Oznake
+      message:
+        sender: Pošiljalac
+        title: Tema
+        body: Tijelo
+        recipient: Primalac
+      redaction:
+        title: Naslov
+        description: Opis
+      report:
+        category: Odaberite razlog prijave
+        details: Navedite više pojedinosti o problemu (obavezno).
+      user:
+        auth_provider: Davatelj autentifikacije
+        email: Imejl
+        email_confirmation: Potvrda imejla
+        new_email: Nova imejl adresa
+        active: Aktivan
+        display_name: Ime za prikaz
+        description: Opis profila
+        home_lat: Geo. širina
+        home_lon: Geo. dužina
+        languages: Željeni jezici
+        preferred_editor: Željeni uređivač
+        pass_crypt: Lozinka
+        pass_crypt_confirmation: Potvrdi lozinku
+    help:
+      doorkeeper/application:
+        confidential: Prilog će se koristiti tamo gdje se tajna klijenta može čuvati
+          u tajnosti (izvorni mobilni prilozi i prilozi na jednoj stranici nisu povjerljivi)
+      trace:
+        tagstring: odvojeno zarezima
+      user_block:
+        reason: Razlog zašto je korisnik blokiran. Molimo vas da budete što smireniji
+          i razumniji, dajući što više detalja o situaciji, imajući na umu da će poruka
+          biti javno vidljiva. Imajte na umu da svi korisnici ne razumiju žargon zajednice,
+          stoga pokušajte koristiti laičke izraze.
+        needs_view: Da li se korisnik mora prijaviti prije nego se očisti blokada?
+      user:
+        new_email: (nikada se ne prikazuje javno)
+  editor:
+    default: Podrazumijevano (trenutno %{name})
+    id:
+      description: iD (uređivač u pregledniku)
+  auth:
+    providers:
+      none: Nijedan
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      github: GitHub
+      wikipedia: Wikipedia
+  api:
+    notes:
+      comment:
+        opened_at_html: Napravljeno %{when}
+        opened_at_by_html: Napravljeno %{when} korisnikom %{user}
+        commented_at_html: Podnovljeno %{when}
+        commented_at_by_html: Podnovljeno %{when} korisnikom %{user}
+        closed_at_html: Razriješeno %{when}
+        closed_at_by_html: Razriješeno %{when} korisnikom %{user}
+        reopened_at_html: Reaktivirano %{when}
+        reopened_at_by_html: Reaktivirano %{when} korisnikom %{user}
+      rss:
+        title: Bilješke OpenStreetMap-a
+        description_area: Lista bilješki, prijavljenih, iskometiranih ili zatvorenih,
+          u vašem području [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+        description_item: RSS-tok bilješke %{id}
+        opened: nova bilješka (blizu %{place})
+        commented: novi komentar (blizu %{place})
+        closed: zatvorena bilješka (blizu %{place})
+        reopened: reaktivirana bilješka (blizu %{place})
+      entry:
+        comment: Komentar
+        full: Cijela napomena
+  account:
+    deletions:
+      show:
+        title: Izbriši moj račun
+        warning: Upozorenje! Proces brisanja računa je konačan i ne može se poništiti.
+        delete_account: Izbriši račun
+        delete_introduction: 'Svoj OpenStreetMap račun možete izbrisati uporabom gumba
+          ispod. Imajte na umu sljedeće detalje:'
+        delete_profile: Bit će uklonjene informacije o vašem profilu, uključujući
+          vaš avatar, opis i kućnu lokaciju.
+        delete_display_name: Bit će uklonjeno vaše ime za prikaz, i moći će ga ponovno
+          koristiti drugi račun.
+        retain_caveats: 'Međutim, OpenStreetMap će zadržati neke informacije o vama,
+          čak i nakon brisanja vašeg računa:'
+        retain_edits: Vaše izmjene baze podataka karte.
+        retain_traces: Vaši otpremljeni tragovi.
+        retain_diary_entries: Vaši dnevnički zapisi i komentari.
+        retain_notes: Vaše bilješke i komentari na karti (ali skriveni od pogleda).
+        retain_changeset_discussions: Vaše rasprave o skupu promjena.
+        retain_email: Vaše imejl adrese.
+        confirm_delete: Da li ste sigurni?
+        cancel: Otkaži
+  accounts:
+    edit:
+      title: Uredi račun
+      my settings: Moje postavke
+      current email address: Trenutna adresa e-pošte
+      openid:
+        link text: šta je ovo?
+      public editing:
+        heading: Javno uređivanje
+        enabled: Omogućeno. Nije anonimno i mogu se uređivati podaci.
+        enabled link text: šta je ovo?
+        disabled: Onemogućeno i ne mogu se uređivati podaci, sve prethodne izmjene
+          su anonimne.
+        disabled link text: zašto ne mogu uređivati?
+      contributor terms:
+        heading: Uslovi za doprinosioce
+        agreed: Prihvatili ste nove Uslove za doprinosioce.
+        not yet agreed: Niste još uvijek prihvatili nove Uslove za doprinosioce.
+        review link text: Molimo Vas da slijedite ovaj link kada vam bude prikladno
+          da pregledate i prihvatite nove Uslove za doprinosioce
+        agreed_with_pd: Također ste proglasili da će vaše izmjene biti u javnom vlasništvu.
+        link text: šta je ovo?
+      save changes button: Sačuvaj promjene
+      delete_account: Izbriši račun...
+    go_public:
+      heading: Javno uređivanje
+      currently_not_public: Trenutno su vaše izmjene anonimne i ljudi vam ne mogu
+        slati poruke niti vidjeti vašu lokaciju. Da biste prikazali što ste uredili
+        i omogućili ljudima da vas kontaktiraju putem veb-stranice, kliknite gumb
+        ispod.
+      only_public_can_edit: Od promjene приложникот-ja 0.6, kartografske podatke mogu
+        samo uređivati javni korisnici.
+      email_not_revealed: Vaša imejl adresa neće biti otkrivena drugima.
+      not_reversible: Ova se radnja ne može poništiti i svi novi korisnici sada su
+        prema zadanim postavkama javni.
+      make_edits_public_button: Neka sve moje izmjene budu javne
+    update:
+      success_confirm_needed: Korisničke informacije su uspješno osvježene. Provjerite
+        imejl za porukom za potvrdu nove adrese.
+      success: Korisničke informacije su uspješno osvježene.
+  browse:
+    changeset:
+      join_discussion: Prijavite se za uključivanje u raspravu
+      discussion: Razgovor
+    tag_details:
+      wikidata_link: '%{page} stavka na Wikidata'
+      wikipedia_link: Članak o %{page} na Wikipediji
+      wikimedia_commons_link: '%{page} stavka na Wikimedijinoj ostavi'
+      telephone_link: Nazovi %{phone_number}
+    query:
+      title: Informacije o objektima
+  changesets:
+    changeset_paging_nav:
+      next: Sljedeća »
+      previous: « Prethodna
+    changeset:
+      anonymous: Anoniman
+      no_edits: (nema izmjena)
+    changesets:
+      user: Korisnik
+      comment: Komentar
+      area: Područje
+    index:
+      title: Setovi promjena
+      title_user: Setovi promjena od %{user}
+      title_user_link_html: Setovi promjena od %{user_link}
+      title_friend: Promjene mojih prijatelja
+      title_nearby: Promjene obližnjih korisnika
+  diary_entries:
+    new:
+      title: Novi zapis u dnevnik
+    form:
+      location: Lokacija
+      use_map_link: Koristi kartu
+    index:
+      title: Dnevnici korisnika
+      title_friends: Dnevnici prijatelja
+      title_nearby: Dnevnici obližnjih članova
+      user_title: Dnevnik korisnika %{user}
+      in_language_title: 'Zapisi u dnevniku na jeziku: %{language}'
+      new: Novi zapis u dnevnik
+      new_title: Sročite novi zapis u vaš korisnički dnevnik
+      my_diary: Moj dnevnik
+      no_entries: Nema zapisa u dnevniku
+      recent_entries: Nedavni zapisi u dnevnik
+      older_entries: Stariji zapisi
+      newer_entries: Noviji zapisi
+    edit:
+      title: Uredi zapis u dnevnik
+      marker_text: Lokacija unosa u dnevnik
+    show:
+      title: Dnevnik korisnika %{user} | %{title}
+      user_title: Dnevnik korisnika %{user}
+      leave_a_comment: Napiši komentar
+      login_to_leave_a_comment_html: '%{login_link} da bi ostavili komentar'
+      login: Prijava
+    no_such_entry:
+      title: Nema takvog zapisa u dnevnik
+      heading: Nema zapisa s naznakom %{id}
+      body: Žao mi je, ne postoji zapis u dnevniku ili komentar s naznakom %{id}.
+        Provjerite ispravnost upisa, ili link na koji ste kliknuli možda je neispravan.
+    diary_entry:
+      posted_by_html: Poslao %{link_user} u %{created} na jeziku %{language_link}.
+      updated_at_html: Posljednja podnova %{updated}.
+      comment_link: Komentiraj ovaj zapis
+      reply_link: Pošalji poruku autoru
+      comment_count:
+        one: '%{count} komentar'
+        few: '%{count} komentara'
+        other: '%{count} komentara'
+      no_comments: Nema komentara
+      edit_link: Uredi ovaj zapis
+      hide_link: Sakrij ovaj unos
+      confirm: Potvrdi
+    diary_comment:
+      comment_from_html: Komentar od %{link_user} u %{comment_created_at}
+      hide_link: Sakrij ovaj komentar
+      confirm: Potvrdi
+    location:
+      location: 'Lokacija:'
+      view: Prikaži
+      edit: Uredi
+    feed:
+      user:
+        title: Zapisi dnevnika od korisnika %{user}
+        description: Nedavni zapisi dnevnika od %{user}
+      language:
+        title: 'Zapisi u dnevniku na jeziku: %{language_name}'
+        description: 'Nedavni zapisi u dnevniku OpenStreetMap korisnika na jeziku:
+          %{language_name}'
+      all:
+        title: Zapisi u dnevniku
+        description: Nedavni zapisi u dnevnik korisnika OpenStreetMapa
+  errors:
+    contact:
+      contact: kontakt
+    forbidden:
+      description: Operacija koju ste tražili na poslužitelju OpenStreetMap dostupna
+        je samo administratorima (HTTP 403)
+    internal_server_error:
+      title: Greška u prilogu
+      description: Poslužitelj OpenStreetMap naišao je na neočekivano stanje koje
+        ga je spriječilo da ispuni zahtjev (HTTP 500)
+    not_found:
+      title: Datoteka nije pronađena
+      description: Nije moguće pronaći operaciju za datoteku/direktorij/priložnik
+        pod im imenom na poslužitelju OpenStreetMap (HTTP 404)
+  friendships:
+    make_friend:
+      heading: Dodati %{user} kao prijatelja?
+      button: Dodaj kao prijatelja
+      success: '%{name} je sada vaš prijatelj!'
+      failed: Žao mi je, nije uspjelo dodavanje %{name} kao prijatelja.
+      already_a_friend: Već ste prijatelj sa %{name}.
+      limit_exceeded: Nedavno ste se sprijateljili s mnogo korisnika. Molimo sačekajte
+        neko vrijeme, prije nego što se više pokušate sprijateljiti.
+    remove_friend:
+      heading: Ukloniti %{user} iz prijatelja?
+      button: Ukloniti prijatelja
+      success: '%{name} je uklonjen iz prijatelja.'
+      not_a_friend: '%{name} nije vaš prijatelj.'
+  geocoder:
+    search_osm_nominatim:
+      prefix:
+        aerialway:
+          cable_car: Žičara
+          chair_lift: Žičara sa sjedištima
+          drag_lift: Vučnica
+          gondola: Kabinska žičara
+          magic_carpet: Magic Carpet Lift
+          platter: Platter Lift
+          pylon: Pylon
+          station: Stanica žičare
+          t-bar: Sidro
+          "yes": Žičara
+        aeroway:
+          aerodrome: Aerodrom
+          airstrip: Uzletno/sletna pista
+          apron: Pristanišna platforma
+          gate: Vrata aerodroma
+          hangar: Hangar
+          helipad: Heliodrom
+          holding_position: Držanje položaja
+          navigationaid: Zrakoplovna navigacijska pomoć
+          parking_position: Parkirno mjesto
+          runway: Pista
+          taxilane: Taxilane
+          taxiway: Rulna staza
+          terminal: Aerodromski terminal
+          windsock: Vjetrobran
+        amenity:
+          animal_boarding: Hotel za kućne ljubimce
+          animal_shelter: Azil za životinje
+          arts_centre: Umjetnički centar
+          atm: Bankomat
+          bank: Banka
+          bar: Bar
+          bbq: Roštilj
+          bench: Klupa
+          bicycle_parking: Biciklistički parking
+          bicycle_rental: Iznajmljivanje bicikla
+          bicycle_repair_station: Stanica za popravak bicikla
+          biergarten: Pivska bašta
+          blood_bank: Banka krvi
+          boat_rental: Najam brodova
+          brothel: Bordel
+          bureau_de_change: Mjenjačnica
+          bus_station: Autobuska stanica
+          cafe: Kafe
+          car_rental: Iznajmljivanje automobila
+          car_sharing: Carsharing
+          car_wash: Autopraonica
+          casino: Kazino
+          charging_station: Stanica za punjenje
+          childcare: Vrtić
+          cinema: Kino
+          clinic: Klinika
+          clock: Sat
+          college: Koledž
+          community_centre: Društveni centar
+          conference_centre: Konferencijski centar
+          courthouse: Sud
+          crematorium: Krematorij
+          dentist: Zubar
+          doctors: Doktor
+          drinking_water: Pijaća voda
+          driving_school: Autoškola
+          embassy: Ambasada
+          events_venue: Lokalita događaja
+          fast_food: Brza hrana
+          ferry_terminal: Trajektni terminal
+          fire_station: Vatrogasna stanica
+          food_court: Štandovi za brzu hranu
+          fountain: Fontana
+          fuel: Stanica za punjenje
+          gambling: Kockanje
+          grave_yard: Groblje
+          grit_bin: Grit Bin
+          hospital: Bolnica
+          hunting_stand: Lovačka čeka
+          ice_cream: Sladoled
+          internet_cafe: Internet kafe
+          kindergarten: Dječiji vrtić
+          language_school: Škola jezika
+          library: Biblioteka
+          loading_dock: Dock za utovar
+          love_hotel: Ljubavni hotel
+          marketplace: Tržnica
+          mobile_money_agent: Agenta za mobilni novac
+          monastery: Manastir
+          money_transfer: Prijevod novca
+          motorcycle_parking: Parking za motocikle
+          music_school: Muzička škola
+          nightclub: Noćni klub
+          nursing_home: Starački dom
+          parking: Parking
+          parking_entrance: Ulaz u parking
+          parking_space: Parking prostor
+          payment_terminal: Terminal za plaćanje
+          pharmacy: Apoteka
+          place_of_worship: Bogomolja
+          police: Policija
+          post_box: Poštanski sandučić
+          post_office: Pošta
+          prison: Zatvor
+          pub: Pub
+          public_bath: Javno kupalište
+      types:
+        cities: Gradovi
+        towns: Manji gradovi
+        places: Mjesta
+    results:
+      no_results: Nema rezultata
+      more_results: Više rezultata
+  issues:
+    index:
+      search: Pretraga
+      user_not_found: Korisnik ne postoji
+      status: Status
+      last_updated: Posljednja podnova
+  layouts:
+    edit: Uredi
+    history: Historija
+    export: Izvezi
+    data: Podaci
+    export_data: Izvezi podatke
+    gps_traces: GPS tragovi
+    gps_traces_tooltip: Upravljanje GPS tragovima
+    user_diaries: Dnevnici korisnika
+    intro_header: Dobrodošao/la na OpenStreetMap!
+    intro_text: OpenStreetMap je karta svijeta stvorena od strane ljudi kao što ste
+      vi i može se slobodno koristiti pod licencom otvorenog koda.
+    intro_2_create_account: Napravi korisnički račun
+    hosting_partners_html: Hosting podržavaju %{ucl}, %{fastly}, %{bytemark} i drugi
+      %{partners}.
+    partners_ucl: UCL
+    partners_fastly: Fastly
+    partners_bytemark: Bytemark Hosting
+    partners_partners: partneri
+    tou: Uslovi korištenja
+    osm_offline: OpenStreetMap baza podataka je trenutno nedostupna dok se ne završe
+      važni radovi na održavanju.
+    osm_read_only: OpenStreetMap baza podataka je trenutno samo u modu čitanja, dok
+      se ne sprovedu važni radovi na održavanju baze podataka.
+    donate: Podržite OpenStreetMap za %{link} Fond održavanja potrebnog hardvera.
+    help: Pomoć
+    about: O nama
+    copyright: Autorska prava
+    communities: Zajednice
+    community: Zajednica
+    community_blogs: Blogovi zajednice
+    community_blogs_title: Blogovi članova OpenStreetMap zajednice
+    make_a_donation:
+      title: Podržite OpenStreetMap novčanom donacijom
+      text: Donirajte
+    learn_more: Saznajte više
+    more: Više
+  user_mailer:
+    diary_comment_notification:
+      subject: '[OpenStreetMap] %{user} je komentirao vaš unos u dnevniku'
+      hi: Pozdrav, %{to_user},
+    gpx_success:
+      subject: '[OpenStreetMap] Uspješan uvoz GPX-datoteke'
+    signup_confirm:
+      subject: '[OpenStreetMap] Dobrodošli na OpenStreetMap'
+      greeting: Zdravo!
+      created: Neko (nadamo se, Vi) upravo je napravio račun na %{site_url}.
+      confirm: 'Najprije moramo potvrditi da Vi ste onaj što postavio je zahtjev,
+        ako je to istina, molimo Vas da kliknete link ispod da potvrdite Vaš račun:'
+      welcome: Nakon što potvrdite svoj račun, mi ćemo vam dati neke dodatne informacije
+        kako bi ste počeli.
+  confirmations:
+    confirm:
+      heading: Provjerite svoj imejl!
+      introduction_1: Poslali smo ti potvrdni imejl.
+      introduction_2: Potvrdite svoj račun klikom na donji link, pa moći ćete započeti
+        s crtanjem karte.
+      press confirm button: Pritisnite potvrdi da bi aktivirali svoj korisnički račun.
+      button: Potvrdi
+      success: Vaš račun je potvrđen. Hvala vam na upisu!
+      already active: Ovaj račun je već potvrđen.
+      unknown token: Taj kod za potvrdu je istekao ili ne postoji.
+      resend_html: Ako trebate da ponovo pošaljemo potvrdni imejl, %{reconfirm_link}.
+    confirm_resend:
+      failure: Korisnik %{name} nije pronađen.
+    confirm_email:
+      heading: Potvrda promjene e-adrese
+  messages:
+    message_summary:
+      reply_button: Odgovori
+      destroy_button: Izbriši
+    new:
+      title: Pošalji poruku
+      send_message_to_html: Pošalji novu poruku za %{name}
+      back_to_inbox: Nazad u dolaznu poštu
+    create:
+      message_sent: Poruka poslana
+      limit_exceeded: Nedavno ste poslali puno poruke. Molimo sačekajte neko vrijeme,
+        prije nego pokušate poslati druge.
+    no_such_message:
+      title: Nema takve poruke
+      heading: Nema takve poruke
+      body: Nažalost, nema poruke s tom naznakom.
+    outbox:
+      title: Odlazna pošta
+      to: Za
+      subject: Tema
+      date: Datum
+      no_sent_messages_html: Još uvijek nemate poslanih poruka. Zašto ne biste iskontaktirali
+        s nekim %{people_mapping_nearby_link}?
+      people_mapping_nearby: ljudima u vašoj okolini
+  profiles:
+    edit:
+      title: Uredi profil
+      save: Podnovi profil
+      cancel: Otkaži
+      image: Slika
+      gravatar:
+        gravatar: Koristi Gravatar
+        what_is_gravatar: Šta je Gravatar?
+      new image: Dodaj sliku
+      keep image: Zadrži trenutnu sliku
+      delete image: Ukloni trenutnu sliku
+      replace image: Zamijeni trenutnu sliku
+      image size hint: (kvadratne slike od barem 100x100 piksela su najbolje)
+  sessions:
+    new:
+      title: Prijava
+      heading: Prijava
+      email or username: 'Imejl adresa ili korisničko ime:'
+      password: 'Lozinka:'
+      openid_html: '%{logo} OpenID:'
+      remember: Zapamti me
+      lost password link: Izgubili ste lozinku?
+      login_button: Prijava
+      register now: Registrirajte se sada
+      with external: 'Ili koristite vanjski servis:'
+      no account: Nemate račun?
+      auth failure: Žao nam je, ne možemo vas prijaviti s ovim detaljima.
+      openid_logo_alt: Prijavi se sa OpenID-om
+      auth_providers:
+        openid:
+          title: Prijavi se sa OpenID-om
+          alt: Prijavi se sa URL-om OpenID-a
+    suspended_flash:
+      suspended: Nažalost, vaš je račun obustavljen zbog sumnjive aktivnosti.
+      contact_support_html: Molimo kontaktirajte %{support_link} ako želite razgovarati
+        o ovome.
+      support: podršku
+  shared:
+    richtext_field:
+      edit: Uredi
+      preview: Pregled
+  site:
+    about:
+      next: Sljedeće
+      used_by_html: '%{name} snabdijeva geografskim podacima tisuće internetskih stranica,
+        mobilnih priloga i uređaja'
+      lede_text: OpenStreetMap je izgradila zajednica kartografa koji donose i održavaju
+        podatke o cestama, stazama, kafićima, željezničkim postajama i još mnogo čemu
+        drugom diljem cijelog svijeta.
+      local_knowledge_title: Lokalno znanje
+      local_knowledge_html: |-
+        OpenStreetMap pridodaje posebnu važnost lokalnom znanju. Doprinositelji koriste
+        zračne snimke, GPS-uređaje i vlastite terenske podatke
+        za provjeru točnosti
+        i ažurnosti OSM-podataka.
+      community_driven_title: Vođen zajednicom
+      community_driven_1_html: |-
+        Zajednica OpenStreetMapa je raznolika, strastvena i raste svakim danom.
+        Među našim suradnicima su kartografi amateri, GIS profesionalci, inženjeri koji održavaju OSM servere,
+        humanitarci koji kartiraju područja pogođena
+        katastrofom i mnogi drugi.
+        Kako biste saznali više o zajednici, pogledajte %{osm_blog_link},
+        %{user_diaries_link}, %{community_blogs_link} i veb-stranicu
+        %{osm_foundation_link}.
+      legal_1_1_openstreetmap_foundation: Zadužbina OpenStreetMap
+      legal_1_1_terms_of_use: Uslovi korištenja
+      legal_1_1_privacy_policy: Politika privatnosti
+      partners_title: Partneri
+    copyright:
+      foreign:
+        title: O ovom prijevodu
+        html: U slučaju sukoba između ove prevedene stranice i %{english_original_link},
+          engleska stranica ima prednost
+        english_link: engleskog originala
+      native:
+        title: O ovoj stranici
+      legal_babble:
+        contributors_title_html: Naši suradnici
+        contributors_intro_html: |-
+          Naši suradnici su hiljade pojedinaca. Koristimo također
+          podatke s otvorenom licencom od nacionalnih kartografskih agencija
+          i drugih izvora, među kojima su:
+        contributors_at_austria: Austrija
+        contributors_at_stadt_wien: Stadt Wien
+        contributors_at_cc_by: CC BY
+        contributors_at_land_vorarlberg: Land Vorarlberg
+        contributors_footer_2_html: |-
+          Uvrštavanje podataka u OpenStreetMap ne podrazumijeva da se izvorni
+          davatelj podataka prihvata ili reklamira OpenStreetMap, pruža bilo kakvu garanciju, ili
+          prihvata bilo kakve obaveze.
+        infringement_title_html: Kršenje autorskih prava
+        infringement_1_html: |-
+          Suradnike OSM-a podsjećamo da nikada ne staju
+          podatke s izvora zaštićenih autorskim pravima (npr. Google karte ili tiskane karte) bez
+          izričitog dopuštenja od strane nositelja.
+    index:
+      js_1: Ili koristite internet preglednik koji ne podržava JavaScript, ili ste
+        onemogućili taj program.
+      js_2: OpenStreetMap koristi JavaScript za slippy kartu.
+      permalink: Trajni link
+      shortlink: Kratki link
+      createnote: Dodaj bilješku
+      license:
+        copyright: Autorska prava pripadaju OpenStreetMap-u i doprinositeljima, pod
+          otvorenom licencom
+      remote_failed: Uređivanje nije uspjelo - provjerite da li je JOSM ili Merkaartor
+        učitan i da je udaljeni pristup omogućen
+    edit:
+      not_public: Niste podesili da promjene vam budu javne.
+      not_public_description_html: Ne možete uređivati kartu dok to ne uradite. Možete
+        podesiti izmjene da vam budu javne na svojoj %{user_page}.
+      user_page_link: korisničkoj stranici
+      anon_edits_link_text: Otkrijte zašto je to slučaj.
+      id_not_configured: Uređivački program "iD" nije konfiguriran
+      no_iframe_support: Vaš preglednik ne podržava "iOkvire" (iframes) sa HTML-om,
+        a oni su potrebni za ovu mogućnost.
+    export:
+      title: Izvoz
+      area_to_export: Područje za izvoz
+      manually_select: Ručno izaberi drukčije područje
+      format_to_export: Format za izvoz
+      osm_xml_data: OpenStreetMap XML podaci
+      map_image: Slika karte (prikazuje standardni sloj)
+      embeddable_html: Ugradivi HTML kod
+      licence: Licenca
+      too_large:
+        advice: 'Ako gornji izvoz podataka ne uspije, molimo pokušajte sa nekim od
+          izvora navedenih ispod:'
+        body: 'Područje je preveliko da bi se izvezlo kao XML-podaci. Molimo povećajte
+          prikaz ili izaberite manju površinu. Možete koristiti jedan od izvora navedenih
+          ispod za masovno preuzimanje:'
+    key:
+      table:
+        entry:
+          motorway: Autoput
+          main_road: Glavna cesta
+          trunk: Brza cesta
+          primary: Primarna cesta
+          secondary: Sekundarna cesta
+          unclassified: Nerazvrstana cesta
+          track: Staza
+          bridleway: Konjička staza
+          cycleway: Biciklistička staza
+          cycleway_national: Državna biciklistička staza
+          cycleway_regional: Regionalna biciklistička staza
+          cycleway_local: Lokalna biciklistička staza
+          footway: Pješačka staza
+          rail: Željeznica
+          subway: Podzemna željeznica
+          tram:
+          - Laka željeznica
+          - tramvaj
+          cable:
+          - Kabinska žičara
+          - sedežnica
+          runway:
+          - Aerodromska pista
+          - rulna staza
+          apron:
+          - Parking za avione
+          - terminal
+          admin: Administrativna granica
+          forest: Šuma
+          wood: Šume (prirodne, neodržavane)
+          golf: Golf teren
+          park: Park
+          resident: Stambeno područje
+          common:
+          - Travnjaci
+          - livada
+          retail: Maloprodajno područje
+          industrial: Industrijsko područje
+          commercial: Poslovno područje
+          heathland: Vriština
+          lake:
+          - Jezero
+          - rezervoar
+          farm: Farma
+          brownfield: Gradilište
+          cemetery: Groblje
+          allotments: Vrtovi
+          pitch: Sportski teren
+          centre: Sportski centar
+          reserve: Rezervat prirode
+          military: Vojno područje
+          school:
+          - Škola
+          - univerzitet
+          building: Značajna zgrada
+          station: Željeznička stanica
+          summit:
+          - Vrh
+          - vrh
+    welcome:
+      title: Dobrodošli!
+      introduction: Dobrodošli u OpenStreetMap — slobodnu i uredljivu kartu svijeta.
+        Sada kada ste se prijavili, spremni ste za početak rada. Evo kratkog vodiča
+        s najvažnijim stvarima koje je potrebno znati.
+      whats_on_the_map:
+        title: Što ova karta sadrži
+        on_the_map_html: Na OpenStreetMap-u se mapiraju najrazčičitije %{real_and_current}
+          stvari — milijune objekata i zgrada, cesta i drugih detalja o mjestima.
+          Možete mapirati sve značajke stvarnog svijeta koje su vam zanimljive.
+        real_and_current: realne i trenutne
+        off_the_map_html: Ono što ovdje %{doesnt} uključuje su prosudbe i procjene,
+          povijesne (više ne postojeće) značajke, nagađanja i podaci iz izvora zaštićenih
+          autorskim pravima. Nemojte kopirati i crtati s internetskih karata ili karata
+          iz knjiga i atlasa, osim ako nemate posebno dopuštenje.
+        doesnt: ne
+      basic_terms:
+        title: Osnovni pojmovi za mapiranje
+        editor: uređivač
+  application:
+    settings_menu:
+      account_settings: Podešavanja računa
+      oauth1_settings: OAuth 1 postavke
+      oauth2_applications: OAuth 2 prilozi
+      oauth2_authorizations: OAuth 2 ovlaštenja
+  oauth:
+    authorize:
+      title: Autorizujte pristup svom računu
+      request_access_html: Izvršnik %{app_name} zahtjeva pristup vašem korisničkom
+        računu, %{user}. Odlučite se da li želite da izvršnik ima sljedeće mogućnosti.
+        Možete odabrati koliko joj pristupa želite dopustiti.
+      allow_to: 'Dozvoli klijentskoj aplikaciji da:'
+      allow_read_prefs: vam čita korisnička podešavanja.
+      allow_write_prefs: mijenja vaša korisnička podešavanja.
+      allow_write_diary: pravi unose u dnevniku, komentariše i dodaje prijatelje.
+      allow_write_api: mijenja kartu.
+      allow_read_gpx: vam čita vaše privatne GPS tragove.
+      allow_write_gpx: otprema GPS tragove.
+      allow_write_notes: mijenja bilješke.
+      grant_access: Dozvoli pristup
+    authorize_success:
+      title: Zahtjev za autorizaciju dopušten
+      allowed_html: Dali ste izvršniku %{app_name} pristup svom računu.
+      verification: Kod za potvrdu je %{code}.
+    authorize_failure:
+      title: Zahtjev za autorizaciju neuspješan
+      denied: Odbili ste izvršniku %{app_name} pristup svom računu.
+      invalid: Autorizacijski žeton nije važeći.
+    revoke:
+      flash: Opozvali ste žeton za %{application}
+    permissions:
+      missing: Niste dopustili pristup priloga ovom objektu
+    scopes:
+      read_prefs: Korisnička podešavanja čitanja
+      write_prefs: Promjena korisničkih postavki
+      write_diary: Pravljenje unosa u dnevniku, komentiranje i dodavanje prijatelja
+      write_api: Promjena karte
+      read_gpx: Čitanje privatnih GPS tragova
+      write_gpx: Otpremanje GPS tragova
+      write_notes: Promjena bilješki
+      read_email: Čitanje korisničke imejl adrese
+      skip_authorization: Automatsko odobravanje priloga
+  oauth_clients:
+    new:
+      title: Registriraj novi prilog
+    edit:
+      title: Uredi svoj prilog
+    show:
+      title: OAuth detalji za %{app_name}
+      key: 'Ključ potrošača:'
+      secret: 'Tajna potrošača:'
+  users:
+    new:
+      title: Prijava
+  javascripts:
+    directions:
+      instructions:
+        exit_counts:
+          first: "1."
+          second: "2."
+          third: "3."
+          fourth: "4."
+          fifth: "5."
+          sixth: "6."
+          seventh: "7."
+          eighth: "8."
+          ninth: "9."
+          tenth: "10."
+      time: Vrijeme
+    query:
+      node: Čvor
+      way: Put
+      relation: Relacija
+...
index ebf024269c63862a0cd3e2dd5bb411721150045b..4fba080b7cdba0052eb578398e834fc880a097e5 100644 (file)
@@ -314,6 +314,9 @@ skr-arab:
       comment: رائے
       newer_comments: نویں رائے
       older_comments: پراݨی رائے
+  doorkeeper:
+    scopes:
+      email: آپݨاں ای میل پتہ ݙیکھو
   errors:
     contact:
       contact: رابطہ
index 24f1925ea2e2f6fda3ff3142a6388e03f858507e..f55b5ffeffdca86551aecf1cb9d9ccb5af7dc063 100644 (file)
@@ -24,8 +24,6 @@ sl:
     formats:
       friendly: '%e. %B %Y ob %H:%M'
       blog: '%e %B %Y'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: Izberi datoteko
@@ -627,10 +625,37 @@ sl:
       newer_comments: Novejši komentarji
       older_comments: Starejši komentarji
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Avtorizacijski strežnik zahteva izbiro računa
+          končnega uporabnika
+        consent_required: Avtorizacijski strežnik zahteva soglasje končnega uporabnika
+        interaction_required: Avtorizacijski strežnik zahteva avtentikacijo končnega
+          uporabnika
+        login_required: Avtorizacijski strežnik zahteva avtentikacijo končnega uporabnika
     flash:
       applications:
         create:
           notice: Aplikacija registrirana.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Napaka zaradi manjkajoče konfiguracije
+            Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Napaka zaradi manjkajoče konfiguracije
+            Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Napaka zaradi manjkajoče
+            konfiguracije Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Napaka zaradi manjkajoče
+            konfiguracije Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Generiranje ID-žetona ni uspelo, ker Doorkeeper::OpenidConnect.configure.subject
+            manjka konfiguracija.
+    scopes:
+      address: Ogled vašega fizičnega naslova
+      email: Ogled vašega e-poštnega naslova
+      openid: Preverite pristnost svojega računa
+      phone: Ogled vaše telefonske številke
+      profile: Ogled vaših profilnih podatkov
   errors:
     contact:
       contact_url_title: Razloženi so različni kontaktni kanali
@@ -2637,6 +2662,7 @@ sl:
     permissions:
       missing: Aplikaciji niste dovolili dostopa do te funkcije
     scopes:
+      openid: Vstop z uporabo OpenStreetMap
       read_prefs: Branje uporabniških prilagoditev
       write_prefs: Spreminjanje uporabniških nastavitev
       write_diary: Ustvarjajte dnevniške zapise, komentarje in sklepajte prijateljstva
index b6f09dd7365f59582ecd3aad6f2a7f8998a9620f..81f99e13a73afc471d0edf87c0e57137b81925af 100644 (file)
@@ -41,6 +41,7 @@
 # Author: Sendelbach
 # Author: Sertion
 # Author: Shirayuki
+# Author: Stefan2255
 # Author: Technic2
 # Author: The real emj
 # Author: Tor.klingberg
@@ -260,6 +261,7 @@ sv:
       openid: OpenID
       google: Google
       facebook: Facebook
+      microsoft: Microsoft
       github: GitHub
       wikipedia: Wikipedia
   api:
@@ -275,6 +277,7 @@ sv:
         reopened_at_by_html: Återaktiverades för %{when} av %{user}
       rss:
         title: OpenStreetMap-anteckningar
+        description_all: En lista över rapporterade, kommenterade eller stängda anteckningar
         description_area: En lista med anteckningar som rapporterats, kommenterats
           eller avklarats i närheten av ditt område [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
         description_item: Ett rss-flöde för anteckning %{id}
@@ -339,6 +342,10 @@ sv:
       delete_account: Radera konto...
     go_public:
       heading: Offentlig redigering
+      currently_not_public: För närvarande är dina redigeringar anonyma och andra
+        kan inte skicka meddelanden till dig eller se din plats. För att visa vad
+        du redigerade och tillåta andra att kontakta dig via webbplatsen, klicka på
+        knappen nedan.
       find_out_why: ta reda på varför
       make_edits_public_button: Gör alla mina redigeringar offentliga
     update:
@@ -365,8 +372,8 @@ sv:
       one: '%{count} relation'
       other: '%{count} relationer'
     part_of_ways:
-      one: 1 sätt
-      other: '%{count} sätt'
+      one: '%{count} sträcka'
+      other: '%{count} sträckor'
     download_xml: Ladda ner XML
     view_history: Visa historik
     view_details: Visa detaljer
@@ -400,7 +407,7 @@ sv:
       history_title_html: 'Sträckhistorik: %{name}'
       nodes: Noder
       nodes_count:
-        one: 1 nod
+        one: '%{count} nod'
         other: '%{count} noder'
       also_part_of_html:
         one: del av sträcka %{related_ways}
@@ -574,9 +581,9 @@ sv:
       comment_link: Kommentera detta inlägg
       reply_link: Skicka ett meddelande till skribenten
       comment_count:
-        zero: Inga kommentarer
         one: '%{count} kommentar'
         other: '%{count} kommentarer'
+      no_comments: Inga kommentarer
       edit_link: Redigera detta inlägg
       hide_link: Dölj detta inlägg
       unhide_link: Dölj inte detta inlägg
@@ -613,12 +620,38 @@ sv:
       newer_comments: Nyare kommentarer
       older_comments: Äldre kommentarer
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Auktoriseringsservern kräver val av slutanvändarkonto
+        consent_required: Auktoriseringsservern kräver slutanvändarens samtycke
+        interaction_required: Auktoriseringsservern kräver interaktion med slutanvändaren
+        login_required: Auktoriseringsservern kräver slutanvändarautentisering
     flash:
       applications:
         create:
           notice: Applikation registrerad.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Fel på grund av att Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            saknar konfiguration.
+          reauthenticate_resource_owner_not_configured: Fel på grund av att Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner
+            saknar konfiguration.
+          resource_owner_from_access_token_not_configured: Fel på grund av att Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token
+            saknar konfiguration.
+          select_account_for_resource_owner_not_configured: Fel på grund av att Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            saknar konfiguration.
+          subject_not_configured: Generering av ID-token misslyckades på grund av
+            att Doorkeeper::OpenidConnect.configure.subject saknade konfiguration.
+    scopes:
+      address: Se din fysiska adress
+      email: Visa din e-postadress
+      openid: Autentisera ditt konto
+      phone: Visa ditt telefonnummer
+      profile: Visa din profilinformation
   errors:
     contact:
+      contact_url_title: Olika kontaktkanaler förklaras
       contact: kontakta
     forbidden:
       title: Förbjudet
@@ -1025,7 +1058,7 @@ sv:
           fitness_station: Gym
           garden: Trädgård
           golf_course: Golfbana
-          horse_riding: Ridning
+          horse_riding: Ridcenter
           ice_rink: Isrink
           marina: Marina
           miniature_golf: Minigolf
@@ -1450,9 +1483,9 @@ sv:
     show:
       title: '%{status} Ärende nr %{issue_id}'
       reports:
-        zero: Inga rapporter
-        one: 1 rapport
+        one: '%{count} rapport'
         other: '%{count} rapporter'
+      no_reports: Inga rapporter
       report_created_at: Rapporterades först %{datetime}
       last_resolved_at: Löstes senast %{datetime}
       last_updated_at: Uppdaterades senast %{datetime} av %{displayname}
@@ -1846,6 +1879,8 @@ sv:
       no home location: Du har inte angivit någon hemposition.
       update home location on click: Uppdatera hemposition när jag klickar på kartan?
       show: Visa
+      delete: Radera
+      undelete: Ångra radera
     update:
       success: Profil uppdaterad.
       failure: Kunde inte uppdatera profilen.
@@ -1899,6 +1934,7 @@ sv:
       support: supporten
   shared:
     markdown_help:
+      heading_html: Analyserad med %{kramdown_link}
       headings: Rubriker
       heading: Rubrik
       subheading: Underrubrik
@@ -1917,6 +1953,7 @@ sv:
   site:
     about:
       next: Nästa
+      heading_html: '%{copyright}OpenStreetMap %{br} bidragsgivare'
       used_by_html: '%{name} förser tusentals webbsidor, mobilappar, appar och fysiska
         apparater med kartdata'
       lede_text: OpenStreetMap är byggt av en gemenskap av kartografer som bidrar
@@ -1927,12 +1964,35 @@ sv:
         flygbilder, GPS-enheter och lågteknologiska fältkartor för att kontrollera
         att OSM är korrekt och uppdaterad.
       community_driven_title: Gemenskapsdriven
+      community_driven_1_html: |-
+        OpenStreetMaps community är mångsidigt, passionerat och växer varje dag.
+        Våra bidragsgivare inkluderar entusiaster som kartlägger, GIS-proffs, ingenjörer
+        som driver OSM-servrarna, humanitärer som kartlägger katastrofdrabbade områden,
+        och många fler.
+        För att lära dig mer om communityn, se webbplatserna %{osm_blog_link},
+        %, %{user_diaries_link}, %{community_blogs_link} och
+        %{osm_foundation_link}.
       community_driven_osm_blog: OpenStreetMaps blogg
+      community_driven_user_diaries: användardagböcker
       community_driven_community_blogs: gemenskapsbloggar
+      community_driven_osm_foundation: OSM-Stiftelsen
       open_data_title: Öppna data
+      open_data_open_data: öppen data
+      open_data_copyright_license: Upphovsrätt och licenssida
       legal_title: Juridik
+      legal_1_1_html: |-
+        Den här webbplatsen och många andra relaterade tjänster drivs formellt av
+        %{openstreetmap_foundation_link} (OSMF)
+         på uppdrag av gemenskapen. Användning av alla OSMF-drivna tjänster omfattas
+        av våra %{terms_of_use_link}, %{aup_link} och vår %{privacy_policy_link}.
+      legal_1_1_openstreetmap_foundation: OpenStreetMap-stiftelsen
       legal_1_1_terms_of_use: Användarvillkor
+      legal_1_1_aup: Riktlinjer för tillåten användning
       legal_1_1_privacy_policy: Integritetspolicy
+      legal_2_1_contact_the_osmf: kontakta OSMF
+      legal_2_2_html: OpenStreetMap, förstoringsglas-logotypen och State of the Map
+        är %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: varmärken registrerade av OSMF
       partners_title: Partners
     copyright:
       foreign:
@@ -1949,32 +2009,92 @@ sv:
         mapping_link: börja kartlägga
       legal_babble:
         title_html: Upphovsrätt och licens
+        introduction_1_html: |-
+          OpenStreetMap%{registered_trademark_link} är %{open_data}, licensierad under
+          %{odc_odbl_link} (ODbL) av %{osm_foundation_link} (OSMF).
+        introduction_1_open_data: öppna data
+        introduction_1_osm_foundation: OpenStreetMap-stiftelsen
+        introduction_2_legal_code: juridiska texten
+        introduction_3_html: Vår dokumentation är licensierad under licensen %{creative_commons_link}
+          (CC BY-SA 2.0).
         credit_title_html: Hur du anger OpenStreetMap som källa
         credit_1_html: 'När du använder OpenStreetMap-data, måste du göra dessa två
           saker:'
+        credit_2_2: Gör klart att uppgifterna är tillgängliga under Öppen Database
+          Licensen.
+        credit_3_html: |-
+          För upphovsrättsmeddelandet har vi olika krav på hur detta ska visas, beroende på hur du använder vår data. Exempelvis gäller olika
+          regler för hur upphovsrättsmeddelandet ska visas beroende på om du har
+          skapat en bläddringsbar karta, en utskriven karta eller en statisk bild. Fullständig information om
+          -kraven finns i %{attribution_guidelines_link}.
+        credit_4_1_html: "För att tydliggöra att data är tillgänglig under Öppen\nDatabase
+          Licensen kan du länka till %{this_copyright_page_link}.\nAlternativt, och
+          som ett krav om du distribuerar OSM i en\ndataform kan du namn och länk
+          direkt till licensen/licenserna. I media\ndär länkar inte är möjliga (t.ex.
+          tryckta verk) föreslår vi att du\ndirigerar dina läsare till openstreetmap.org
+          (kanske genom att utöka\n'OpenStreetMap' till denna fullständiga adress)
+          och till opendatacommons.org. \nI det här exemplet visas upphovsrättsinformation
+          i kartans hörn."
+        credit_4_1_this_copyright_page: denna upphovsrättssida
         attribution_example:
           alt: Exempel på hur en webbsida kan ange OpenStreetMap som källa
           title: Exempel på attribuering.
         more_title_html: Mer information
+        more_1_1_osmf_licence_page: OSMF-licenssida
+        more_2_1_html: |-
+          Även om OpenStreetMap är öppen data kan vi inte tillhandahålla ett
+          gratis kart-API för tredje part.
+          Se våra %{api_usage_policy_link}, %{tile_usage_policy_link} och %{nominatim_usage_policy_link}.
         contributors_title_html: Våra bidragsgivare
         contributors_intro_html: |-
           Våra bidragsgivare är tusentals individer. Vi inkluderar också
           öppna data från nationella karttjänster,
           bland annat från:
+        contributors_at_credit_html: |-
+          %{austria}: Innehåller data från %{stadt_wien_link} (under %{cc_by_link}), %{land_vorarlberg_link}
+          och Tyrolen (under %{cc_by_at_with_amendments_link}).
         contributors_at_austria: Österrike
+        contributors_at_stadt_wien: Staden Wien
         contributors_at_cc_by: CC BY
+        contributors_at_land_vorarlberg: Förbundsland Vorarlberg
         contributors_au_australia: Australien
         contributors_ca_canada: Kanada
         contributors_fi_finland: Finland
+        contributors_fi_nlsfi_license: NLSFI-licens
+        contributors_fr_credit_html: |-
+          %{france}: Innehåller data hämtade från
+          Direction Générale des Impôts.
         contributors_fr_france: Frankrike
+        contributors_nl_credit_html: '%{netherlands}: Innehåller &copy; AND data,
+          2007 (%{and_link}).'
         contributors_nl_netherlands: Nederländerna
+        contributors_nz_credit_html: |-
+          %{new_zealand}: Innehåller data hämtade från %{linz_data_service_link}
+          och licensierade för återanvändning under %{cc_by_link}.
         contributors_nz_new_zealand: Nya Zeeland
+        contributors_nz_linz_data_service: LINZ Data Tjänst
         contributors_nz_cc_by: CC BY 4.0
+        contributors_rs_credit_html: |-
+          %{serbia}: Innehåller data från %{rgz_link} och %{open_data_portal}
+          (offentlig information om Serbien), 2018.
+        contributors_rs_serbia: Serbien
         contributors_si_slovenia: Slovenien
+        contributors_si_mkgp: Ministeriet för Jordbruk, Skogsbruk och Livsmedel
+        contributors_es_credit_html: |-
+          %{spain}: Innehåller data hämtade från
+          Spanish National Geographic Institute (%{ign_link}) och
+          National Cartographic System (%{scne_link})
+          licensierad för återanvändning under %{cc_by_link}.
         contributors_es_spain: Spanien
         contributors_es_cc_by: CC BY 4.0
+        contributors_za_credit_html: '%{south_africa}: Innehåller data från %{ngi_link},
+          statens upphovsrätt förbehålls.'
         contributors_za_south_africa: Sydafrika
         contributors_gb_united_kingdom: Storbritannien
+        contributors_2_html: |-
+          För ytterligare information om dessa och andra källor som har använts
+          för att förbättra OpenStreetMap, se %{contributors_page_link} på OpenStreetMap Wiki.
+        contributors_2_contributors_page: Bidragsgivaresidan
         contributors_footer_2_html: "Införandet av uppgifter i OpenStreetMap innebär
           inte att den ursprungliga \ndatagivaren stödjer OpenStreetMap, \nger någon
           som helst garanti eller \ntar på sig något ansvar."
@@ -1983,6 +2103,18 @@ sv:
           Bidragsgivare till OSM påminns om att aldrig lägga till data från
           upphovsrättsskyddade källor (t.ex. Google Maps och tryckta kartor) utan
           uttryckligt tillstånd från upphovsrättsinnehavarna.
+        infringement_2_1_html: |-
+          Om du anser att upphovsrättsskyddat material har lagts till på ett olämpligt sätt
+           i OpenStreetMap-databasen eller den här webbplatsen, vänligen se vår %{takedown_procedure_link} eller registrera direkt på vår
+          %{online_filing_page_link}.
+        infringement_2_1_takedown_procedure: borttagningsförfarande
+        infringement_2_1_online_filing_page: on-line registreringssida
+        trademarks_title: Varumärken
+        trademarks_1_1_html: |-
+          OpenStreetMap, förstoringsglasets logotyp och State of the Map är registrerade varumärken som tillhör
+          OpenStreetMap Foundation. Om du har frågor om din användning av märkena, se vår
+          %{trademark_policy_link}.
+        trademarks_1_1_trademark_policy: Varumärkespolicy
     index:
       js_1: Du använder antingen en webbläsare som inte stöder JavaScript, eller så
         har du inaktiverat JavaScript.
@@ -2013,6 +2145,7 @@ sv:
       map_image: Kartbild (visar vanliga lager)
       embeddable_html: Inbäddad HTML
       licence: Licens
+      licence_details_html: OpenStreetMap-data licensieras under %{odbl_link} (ODbL).
       too_large:
         advice: 'Om ovanstående export misslyckas, vänligen överväg att använda en
           av de källor som anges nedan:'
@@ -2053,8 +2186,18 @@ sv:
           explanation_html: Om du har hittat ett problem med vår kartdata, till exempel
             att en väg eller din adress saknas, är den bästa lösningen att gå med
             i OpenStreetMap-gemenskapen och själv lägga till eller reparera datan.
+        add_a_note:
+          instructions_1_html: |-
+            Klicka bara på %{note_icon} eller samma ikon på kartvisningen.
+            Detta lägger till en markör på kartan som du kan flytta
+            genom att dra. Lägg till ditt meddelande och klicka sedan på spara, så kommer andra kartläggare att undersöka det.
       other_concerns:
         title: Andra farhågor
+        concerns_html: |-
+          Om du är betänkligheter kring hur vår data används eller om innehållet, kontakta vår
+          %{copyright_link} för mer juridisk information, eller kontakta lämplig %{working_group_link}.
+        copyright: upphovsrättssida
+        working_group: OSMF arbetsgrupp
     help:
       title: Få hjälp
       introduction: OpenStreetMap har flera resurser som hjälper dig att lära dig
@@ -2097,10 +2240,19 @@ sv:
       removed: Din standardredigerare på OpenStreetMat är Potlatch. På grund av att
         Adobe Flash Player har dragits tillbaka, kan inte Potlatch längre användas
         i webbläsaren.
+      desktop_application_html: Du kan fortfarande använda Potlatch av %{download_link}.
+      download: ladda ner skrivbordsapplikationen för Mac och Windows
+      id_editor_html: Eller så kan du ange din standardredigerare till iD, vilket
+        kör din webbläsare som Potlatch tidigare gjorde. %{change_preferences_link}.
       change_preferences: Ändra dina inställningar här
     any_questions:
       title: Några frågor?
+      paragraph_1_html: |-
+        OpenStreetMap har flera resurser för att lära sig mer om projektet, ställa och svara på
+        frågor och för att gemensamt diskutera och dokumentera kartläggningsämnen.
+        %{help_link}. Tillhör du en i en organisation som har planerar för OpenStreetMap? %{welcome_mat_link}.
       get_help_here: Skaffa hjälp här
+      welcome_mat: Kolla in välkomstmattan
     sidebar:
       search_results: Sökresultat
       close: Stäng
@@ -2192,14 +2344,38 @@ sv:
         saker. Här är en snabb genomgång av de viktigaste sakerna du behöver veta.
       whats_on_the_map:
         title: Vad finns på kartan
+        on_the_map_html: |-
+          OpenStreetMap är en plats för att kartlägga saker som är både %{real_and_current} -
+          det inkluderar miljontals byggnader, vägar och andra detaljer om platser. Du kan kartlägga
+          vilka verkliga landmärken som är intressanta för dig.
+        real_and_current: konkret och aktuellt
+        off_the_map_html: "Vad det %{doesnt} innehåller är \nkänsliga data som betyg,
+          historiska eller\nhypotetiska egenskaper och data från upphovsrättsskyddade
+          källor. Om du inte har särskilt tillstånd, kopiera inte från online- eller
+          papperskartor."
+        doesnt: inte
       basic_terms:
         title: Grundläggande termer för kartering
         paragraph_1: OpenStreetMap har en del egen jargong. Här är några begrepp som
           kan vara bra att förstå.
+        an_editor_html: En %{editor} är ett program eller en webbplats som du kan
+          använda för att redigera kartan.
+        a_node_html: En %{node} är en punkt på kartan, som en enda restaurang eller
+          ett träd.
+        a_way_html: En %{way} är en linje eller ett område, som en väg, bäck, sjö
+          eller byggnad.
+        a_tag_html: En %{tag} är bit data om en nod eller väg, som en restaurangs
+          namn eller en vägs hastighetsgräns.
         editor: redigerare
         node: nod
+        way: sträcka
       rules:
         title: Regler!
+        para_1_html: |-
+          OpenStreetMap har få formella regler men vi förväntar oss att alla deltagare samarbetar
+          med, och kommunicerar med, gemenskapen. Om du funderar på
+          några andra aktiviteter än att redigera för hand, läs och följ riktlinjerna på
+          %{imports_link} och %{automated_edits_link}.
         imports: Importer
         automated_edits: Automatiserade redigeringar
       start_mapping: Börja kartlägga
@@ -2214,8 +2390,23 @@ sv:
         the_map: kartan
     communities:
       title: Gemenskaper
+      lede_text: "Människor från hela världen bidrar till eller använder OpenStreetMap.\nMedan
+        många deltar som individer har andra bildat gemenskaper.\nDessa grupper finns
+        i en mängd olika storlekar och representerar geografier från små städer till
+        stora regioner med flera länder. \nDe kan också vara formella eller informella."
+      local_chapters:
+        title: Lokalavdelningar
+        about_text: |-
+          Lokala avdelningar är grupper på lands- eller regionnivå som har tagit det formella steget att
+          etablera icke-vinstdrivande juridiska personer. De representerar områdets karta och kartläggare när de har att göra med lokala myndigheter, näringsliv och media. De har också bildat en anslutning
+          till OpenStreetMap Foundation (OSMF), vilket ger dem en länk till det juridiska och upphovsrättsliga styrande organet.
+        list_text: 'Följande gemenskaper är formellt etablerade som lokala avdelningar:'
       other_groups:
         title: Andra grupper
+        other_groups_html: |-
+          Det finns inget behov av att formellt bilda en grupp i samma utsträckning som de lokala avdelningarna.
+          Många grupper existerar faktiskt mycket framgångsrikt som en informell sammankomst av människor eller som en gemenskapsgrupp. Vem som helst kan ställa in eller gå med i dessa. Läs mer på %{communities_wiki_link}.
+        communities_wiki: Gemenskapswikisida
   traces:
     visibility:
       private: Privat (spåret delas anonymt och utan ordning)
@@ -2298,6 +2489,8 @@ sv:
       description: Bläddra bland nyligen uppladdade GPS-spår
       tagged_with: ' taggad med %{tags}'
       empty_title: Inget här ännu
+      empty_upload_html: '%{upload_link} eller läs mer om GPS-spårning på %{wiki_link}.'
+      upload_new: Ladda upp ett nytt spår
       wiki_page: wikisida
       upload_trace: Ladda upp GPS-spår
       all_traces: Alla spår
@@ -2370,6 +2563,7 @@ sv:
     permissions:
       missing: Du har inte gett applikationen åtkomst till den här faciliteten
     scopes:
+      openid: Logga in med OpenStreetMap
       read_prefs: Läs användaralternativ
       write_prefs: Ändra användaralternativ
       write_diary: Skapa dagboksinlägg, kommentarer och hitta vänner.
@@ -2474,8 +2668,16 @@ sv:
       title: Registrera
       no_auto_account_create: Tyvärr kan vi för närvarande inte kan skapa ett konto
         åt dig automatiskt.
+      please_contact_support_html: Kontakta %{support_link} för att ordna att ett
+        konto ska skapas - vi kommer att försöka ta itu med begäran så fort som möjligt.
+      support: support
       about:
         header: Fri och redigerbar
+        paragraph_1: Till skillnad från andra kartor är OpenStreetMap helt skapad
+          av människor som du, och det är gratis för alla att fixa, uppdatera, ladda
+          ner och använda.
+        paragraph_2: Registrera dig för att börja bidra. Vi skickar ett e-postmeddelande
+          för att bekräfta ditt konto.
       display name description: Ditt offentligt visade användarnamn. Du kan ändra
         detta senare i alternativ.
       external auth: 'Tredjepartsautentisering:'
@@ -2485,7 +2687,10 @@ sv:
       continue: Registrera
       terms accepted: Tack för att du accepterat de nya villkoren för bidrag till
         kartan!
+      email_confirmation_help_html: Din adress visas inte offentligt, se vår %{privacy_policy_link}
+        för mer information.
       privacy_policy: integritetspolicy
+      privacy_policy_title: OSMFs integritetspolicy inklusive avsnitt om e-postadresser
     terms:
       title: Villkor för deltagare
       heading: Villkor för deltagare
@@ -2502,6 +2707,10 @@ sv:
       consider_pd: Utöver ovan nämnda avtal, anser jag att mina bidrag är inom allmän
         egendom.
       consider_pd_why: vad är det här?
+      guidance_info_html: 'Information som hjälper dig att förstå dessa termer: en
+        %{readable_summary_link} och några %{informal_translations_link}'
+      readable_summary: mänskligt läsbar sammanfattning
+      informal_translations: informella översättningar
       continue: |2-
 
         Fortsätt
@@ -2545,6 +2754,7 @@ sv:
       remove as friend: Ta bort vän
       add as friend: Lägg till vän
       mapper since: 'Karterar sedan:'
+      uid: 'Användar id:'
       ct status: 'Användarvillkor:'
       ct undecided: Ej bestämda
       ct declined: Avböjda
@@ -2569,6 +2779,7 @@ sv:
       activate_user: Aktivera denna användare
       confirm_user: Bekräfta denna användare
       unconfirm_user: Häv denna användares bekräftelse
+      unsuspend_user: Avaktivera denna användare
       hide_user: Dölj denna användare
       unhide_user: Sluta dölja användare
       delete_user: Radera denna användare
@@ -2593,6 +2804,8 @@ sv:
       support: support
       automatically_suspended: Tyvärr, ditt konto har stängts av automatiskt på grund
         av misstänkt aktivitet.
+      contact_support_html: Detta beslut kommer att granskas av en administratör inom
+        kort, eller så kan du kontakta %{support_link} om du vill diskutera detta.
     auth_failure:
       connection_failed: Anslutning till autentiseringsleverantören misslyckades
       invalid_credentials: Ogiltiga autentiseringsuppgifter
@@ -2735,7 +2948,9 @@ sv:
     index:
       title: Anteckningar skapade eller kommenterade av %{user}
       heading: '%{user}s anteckningar'
-      subheading_html: Anteckningar skapade eller kommenterade av %{user}
+      subheading_html: Anteckningar %{submitted} eller %{commented} av %{user}
+      subheading_submitted: skickade
+      subheading_commented: kommenterade
       no_notes: Inga anteckningar
       id: Id
       creator: Skapare
@@ -2769,6 +2984,8 @@ sv:
         tas bort kan du %{link}.
       other_problems_resolve: För alla andra problem med anteckningen, lös det själv
         med en kommentar.
+      other_problems_resolved: För alla andra problem, är en lösning tillräcklig.
+      disappear_date_html: Denna lösta anteckning försvinner från kartan om %{disappear_in}.
     new:
       title: Ny anteckning
       intro: Upptäckt ett misstag eller något som saknas? Låt andra karterare veta
@@ -2835,8 +3052,10 @@ sv:
       openstreetmap_contributors: OpenStreetMap-bidragsgivare
       make_a_donation: Gör en donation
       website_and_api_terms: Webbplats och API-villkor
+      osm_france: OpenStreetMap Frankrike
       andy_allan: Andy Allan
       memomaps: MeMoMaps
+      hotosm_name: Humanitärt OpenStreetMap-team
     site:
       edit_tooltip: Redigera kartan
       edit_disabled_tooltip: Zooma in för att redigera kartan
@@ -2864,6 +3083,9 @@ sv:
         graphhopper_bicycle: Cykel (GraphHopper)
         graphhopper_car: Bil (GraphHopper)
         graphhopper_foot: Gående (GraphHopper)
+        fossgis_valhalla_bicycle: Cykel (Valhalla)
+        fossgis_valhalla_car: Bil (Valhalla)
+        fossgis_valhalla_foot: Till fots (Valhalla)
       descend: Fallande
       directions: Vägbeskrivning
       distance: Avstånd
index 301b5d8cd29b973af586225673adb8671b98c005..637e0b9ffbb80504bd74875b8378e5d6d510d79d 100644 (file)
@@ -627,10 +627,37 @@ tr:
       newer_comments: Daha Yeni Yorumlar
       older_comments: Daha Eski Yorumlar
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Yetkilendirme sunucusu son kullanıcı hesabı seçimini
+          gerektiriyor
+        consent_required: Yetkilendirme sunucusu son kullanıcının onayını gerektiriyor
+        interaction_required: Yetkilendirme sunucusu son kullanıcı etkileşimini gerektiriyor
+        login_required: Yetkilendirme sunucusu son kullanıcı kimlik doğrulamasını
+          gerektiriyor
     flash:
       applications:
         create:
           notice: Uygulama Kayıtlı.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            eksik yapılandırmasından kaynaklanan hata.
+          reauthenticate_resource_owner_not_configured: Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner
+            eksik yapılandırmasından kaynaklanan hata.
+          resource_owner_from_access_token_not_configured: Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token
+            eksik yapılandırmasından kaynaklanan hata.
+          select_account_for_resource_owner_not_configured: Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner
+            eksik yapılandırmasından kaynaklanan hata.
+          subject_not_configured: Kimlik Belirteci oluşturma, Doorkeeper::OpenidConnect.configure.subject
+            eksik yapılandırması nedeniyle başarısız oldu.
+    scopes:
+      address: Fiziksel adresinizi görüntüleyin
+      email: E-posta adresinizi görüntüleyin
+      openid: Hesabınızı doğrulayın
+      phone: Telefon numaranızı görüntüleyin
+      profile: Profil bilgilerinizi görüntüleyin
   errors:
     contact:
       contact_url_title: Çeşitli iletişim kanalları açıklandı
@@ -2616,6 +2643,7 @@ tr:
     permissions:
       missing: Uygulamanın bu özelliğe erişimine izin vermediniz
     scopes:
+      openid: OpenStreetMap'i kullanarak oturum açın
       read_prefs: Kullanıcı tercihlerini oku
       write_prefs: Kullanıcı tercihlerini değiştir
       write_diary: Günlük girdiler, yorumlar oluştur ve arkadaşlar edin
@@ -3094,6 +3122,7 @@ tr:
         cyclosm: CyclOSM
         cycle_map: Bisiklet Haritası
         transport_map: Ulaşım Haritası
+        tracestracktop_topo: Tracestrack Topo
         hot: İnsancıl
         opnvkarte: ÖPNVKarte
       layers:
@@ -3113,6 +3142,8 @@ tr:
       andy_allan: Andy Allan
       opnvkarte_credit: Döşemeler, %{memomaps_link} katkılarıyla
       memomaps: MeMo Haritaları
+      tracestrack_credit: Döşemeler, %{tracestrack_link} katkılarıyla
+      tracestrack: Tracestrack
       hotosm_credit: '%{osm_france_link} tarafından barındırılan %{hotosm_link} döşeme
         tarzı'
       hotosm_name: İnsani OpenStreetMap Ekibi
index 326c4a77b1878ae032b8e6b6997f6956c9d753fa..1047854f31b8c6d55e9fdbe3066521f8db288539 100644 (file)
@@ -40,6 +40,7 @@
 # Author: Shirayuki
 # Author: SteveR
 # Author: TomH
+# Author: Vil4ckc
 # Author: Vlad5250
 # Author: Ypryima
 # Author: Yurkoy
@@ -51,9 +52,7 @@
 uk:
   time:
     formats:
-      friendly: '%e %B %Y о %H:%M'
-  count:
-    at_least_pattern: '%{count}+'
+      friendly: '%e %B %Y в %H:%M'
   helpers:
     file:
       prompt: Обрати файл
@@ -95,7 +94,7 @@ uk:
       diary_comment: Коментарі щоденника
       diary_entry: Запис щоденника
       friend: Друг
-      issue: Звернення
+      issue: Звіт
       language: Мова
       message: Повідомлення
       node: Точка
@@ -663,10 +662,36 @@ uk:
       newer_comments: Нові коментарі
       older_comments: Старіші коментарі
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: Сервер авторизації вимагає вибору облікового запису
+          кінцевого користувача
+        consent_required: Сервер авторизації вимагає згоди кінцевого користувача
+        interaction_required: Сервер авторизації вимагає взаємодії з кінцевим користувачем
+        login_required: Сервер авторизації вимагає автентифікації кінцевого користувача
     flash:
       applications:
         create:
           notice: Запит зареєстровано.
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: Помилка через відсутність
+            конфігурації Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner.
+          reauthenticate_resource_owner_not_configured: Помилка через відсутність
+            конфігурації Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner.
+          resource_owner_from_access_token_not_configured: Помилка через відсутність
+            конфігурації Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token.
+          select_account_for_resource_owner_not_configured: Помилка через відсутність
+            конфігурації Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner.
+          subject_not_configured: Не вдалося створити маркер ідентифікатора через
+            відсутність конфігурації Doorkeeper::OpenidConnect.configure.subject.
+    scopes:
+      address: Перегляньте свою фізичну адресу
+      email: Перегляньте адресу електронної пошти
+      openid: Автентифікуйте свій обліковий запис
+      phone: Перегляньте свій номер телефону
+      profile: Перегляньте інформацію зі свого профілю
   errors:
     contact:
       contact_url_title: Тут ви можете знайти інформацію про відповідні канали спілкування
@@ -2662,6 +2687,7 @@ uk:
     permissions:
       missing: Ви не дозволили програмі отримати доступ до цієї функції
     scopes:
+      openid: Вхід за допомогою OpenStreetMap
       read_prefs: Отримувати налаштування
       write_prefs: Змінювати налаштування
       write_diary: Створювати записи у щоденнику, коментарі та надсилати запити на
@@ -2832,7 +2858,7 @@ uk:
       heading: Учасника %{user} не існує.
       body: Вибачте, учасника %{user} не існує. Будь ласка, перевірте правильність
         вводу. Можливо, ви перейшли з помилкового посилання.
-      deleted: вилучено
+      deleted: '''Профіль вилучено'''
     show:
       my diary: Мій щоденник
       my edits: Мої редагування
index dca30d8e813375ca742442a1ddaab1bcfdc5f646..5506dbd9cccdcb8df3767287a8890c6773203584 100644 (file)
@@ -63,6 +63,7 @@
 # Author: Wong128cn
 # Author: Wuqianye
 # Author: Xiaomingyan
+# Author: Xyb
 # Author: Yfdyh000
 # Author: Zazzzz
 # Author: Zfshuo
@@ -87,8 +88,6 @@ zh-CN:
     formats:
       friendly: '%Y年%B%e日 %H:%M'
       blog: '%Y年%B%e日'
-  count:
-    at_least_pattern: '%{count}+'
   helpers:
     file:
       prompt: 选择文件
@@ -164,7 +163,7 @@ zh-CN:
         callback_url: 回调 URL
         support_url: 支持 URL
         allow_read_prefs: 读取其用户设置
-        allow_write_prefs: 修改其用户首选项
+        allow_write_prefs: 修改其用户偏好
         allow_write_diary: 创建日记文章、评论并结交朋友。
         allow_write_api: 修改地图
         allow_read_gpx: 读取他们的私人GPS轨迹
@@ -288,7 +287,7 @@ zh-CN:
   auth:
     providers:
       none: 无
-      openid: 开放式身份验证
+      openid: 开放式身份验证(OpenID)
       google: 谷歌
       facebook: 脸书
       microsoft: 微软
@@ -310,7 +309,7 @@ zh-CN:
         description_all: 已报告、评论或关闭的注记列表
         description_area: 在您的区域 [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
           报告、评论或关闭的注记列表
-        description_item: 注记 %{id} 的简易信息聚合馈送
+        description_item: 注记 %{id} 的简易信息聚合馈送(RSS)
         opened: 新注记(靠近 %{place})
         commented: 新评论(靠近 %{place})
         closed: 关闭的注记(靠近 %{place})
@@ -326,7 +325,7 @@ zh-CN:
         delete_account: 删除账户
         delete_introduction: 您可以通过下方的按钮删除您的OpenStreetMap账户。请注意如下细节:
         delete_profile: 您的个人简介,包括您的头像、介绍和家的位置,都将被移除。
-        delete_display_name: 您显示的用户名将被移除,并且可以被其他账户复用。
+        delete_display_name: 您的用户名将被移除,并且可以被其他账户重复使用。
         retain_caveats: 然而,部分关于您的信息仍将被保留在OpenStreetMap里,即使在您的账户被删除后:
         retain_edits: 您对地图数据库的编辑,如果有,将被保留。
         retain_traces: 您上传的轨迹,如果有,将被保留。
@@ -368,7 +367,7 @@ zh-CN:
       not_reversible: 此操作无法撤消,所有新用户现在默认都是公开的。
       make_edits_public_button: 公开我所有的编辑
     update:
-      success_confirm_needed: 成功更新用户信息。 查看您的邮箱以确认您的新邮箱地址。
+      success_confirm_needed: 成功更新用户信息。查看您邮箱中的通知以确认您的新邮箱地址。
       success: 成功更新用户信息。
     destroy:
       success: 账户已删除。
@@ -406,8 +405,8 @@ zh-CN:
       relation: 关系 (%{count})
       relation_paginated: 关系 (%{x}-%{y},共 %{count})
       comment: 评论(%{count})
-      hidden_comment_by_html: 隐藏来自 %{user} %{time_ago} 的评论
-      comment_by_html: 来自 %{user} %{time_ago} 的评论
+      hidden_comment_by_html: '%{user} 于 %{time_ago} 的隐藏评论'
+      comment_by_html: '%{user} 于 %{time_ago} 的评论'
       changesetxml: 变更集 XML
       osmchangexml: osmChange XML
       feed:
@@ -415,7 +414,7 @@ zh-CN:
         title_comment: 变更集 %{id} - %{comment}
       join_discussion: 登录以加入讨论
       discussion: 讨论
-      still_open: 变更集依然有效——一旦变更集关闭将打开讨论
+      still_open: 变更集依然开放——一旦变更集关闭讨论将开放
     node:
       title_html: 节点:%{name}
       history_title_html: 节点历史:%{name}
@@ -423,8 +422,7 @@ zh-CN:
       title_html: 路径:%{name}
       history_title_html: 路径历史:%{name}
       nodes: 节点
-      nodes_count:
-        other: '%{count}个节点'
+      nodes_count: '%{count}个节点'
       also_part_of_html:
         one: 属于路径 %{related_ways}
         other: 属于路径 %{related_ways}
@@ -463,14 +461,14 @@ zh-CN:
         changeset: 变更集
         note: 注记
     redacted:
-      redaction: 编辑 %{id}
-      message_html: 该 %{type} 版本 %{version} 无法显示,因为其已被编辑。详情请见%{redaction_link}。
+      redaction: 删改 %{id}
+      message_html: 该%{type}版本 %{version} 无法显示,因为其已被删改。详情请见%{redaction_link}。
       type:
         node: 节点
         way: 路径
         relation: 关系
     start_rjs:
-      feature_warning: 正在载入 %{num_features} 个要素,这可能使您的浏览器变慢或失去响应。您确定想要显示该数据吗?
+      feature_warning: 正在加载 %{num_features} 个要素,这可能会使您的浏览器变慢或无响应。确定要显示此数据吗?
       load_data: 加载数据
       loading: 加载中…
     tag_details:
@@ -515,7 +513,7 @@ zh-CN:
       empty_user: 无该用户的变更集。
       no_more: 未找到更多变更集。
       no_more_area: 该区域内没有更多变更集。
-      no_more_user: 无该用户的更多修改集合
+      no_more_user: 该用户无更多变更集
       load_more: 加载更多
     timeout:
       sorry: 抱歉,您所请求的变更集列表检索时间过长。
@@ -529,7 +527,7 @@ zh-CN:
       title_all: OpenStreetMap 变更集讨论
       title_particular: 'OpenStreetMap 变更集 #%{changeset_id} 讨论'
     timeout:
-      sorry: 抱歉,您所请求的变更集评论时间区间过长。
+      sorry: 抱歉,您请求的变更集评论列表检索时间过长。
   dashboards:
     contact:
       km away: '%{count}千米外'
@@ -580,10 +578,10 @@ zh-CN:
       login: 登录
     no_such_entry:
       title: 没有这篇日记文章
-      heading: 没有文章ID为:%{id}
+      heading: 没有ID为 %{id} 的文章
       body: 对不起,没有 id 为 %{id} 的日记文章或评论。请检查您的拼写,或是您可能点击了错误的链接。
     diary_entry:
-      posted_by_html: '%{link_user}在%{created}用%{language_link}发布'
+      posted_by_html: '%{link_user} 于 %{created} 以 %{language_link} 发布'
       updated_at_html: 最后一次更新于%{updated}。
       comment_link: 评论该文章
       reply_link: 向作者发送消息
@@ -591,13 +589,13 @@ zh-CN:
         one: '%{count} 个评论'
         other: '%{count} 个评论'
       no_comments: 没有评论
-      edit_link: 编辑文章
-      hide_link: 隐藏文章
-      unhide_link: 取消隐藏此项目
+      edit_link: 编辑文章
+      hide_link: 隐藏文章
+      unhide_link: 取消隐藏此文章
       confirm: 确认
       report: 举报此文章
     diary_comment:
-      comment_from_html: '%{link_user}在%{comment_created_at}的评论'
+      comment_from_html: '%{link_user} 于 %{comment_created_at} 的评论'
       hide_link: 隐藏此评论
       unhide_link: 显示此评论
       confirm: 确认
@@ -611,8 +609,8 @@ zh-CN:
         title: '%{user} 的 OpenStreetMap 日记文章'
         description: '%{user} 最近的 OpenStreetMap 日记文章'
       language:
-        title: '%{language_name} OpenStreetMap 日记文章'
-        description: 最近的 %{language_name} OpenStreetMap 用户日记文章
+        title: 以 %{language_name} 书写的 OpenStreetMap 日记文章
+        description: 最近的以 %{language_name} 书写的 OpenStreetMap 用户日记文章
       all:
         title: OpenStreetMap 日记文章
         description: 最近的 OpenStreetMap 用户日记文章
@@ -627,10 +625,35 @@ zh-CN:
       newer_comments: 较新评论
       older_comments: 较旧评论
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: 授权服务器需要最终用户帐户选择
+        consent_required: 授权服务器需要最终用户同意
+        interaction_required: 授权服务器需要最终用户交互
+        login_required: 授权服务器需要最终用户身份验证
     flash:
       applications:
         create:
           notice: 应用程序已注册。
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: 由于 Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            缺少配置而失败。
+          reauthenticate_resource_owner_not_configured: 由于 Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner
+            缺少配置而失败。
+          resource_owner_from_access_token_not_configured: 由于 Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token
+            缺少配置而失败。
+          select_account_for_resource_owner_not_configured: 由于 Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner
+            缺少配置而失败。
+          subject_not_configured: 由于 Doorkeeper::OpenidConnect.configure.subject 缺少配置,ID
+            令牌生成失败。
+    scopes:
+      address: 查看您的实际地址
+      email: 查看您的电子邮件地址
+      openid: 验证您的帐户
+      phone: 查看您的电话号码
+      profile: 查看您的个人资料信息
   errors:
     contact:
       contact_url: http://wiki.openstreetmap.org/wiki/Contact
@@ -646,7 +669,7 @@ zh-CN:
       description: OpenStreetMap 服务器遇到意外情况,无法满足请求(HTTP 500)
     not_found:
       title: 文件未找到
-      description: 在 OpenStreetMap 服务器上找不到该名称的文件/目录/API 操作(HTTP 404)
+      description: 在 OpenStreetMap 服务器上找不到该名称的文件、目录或API 操作(HTTP 404)
   friendships:
     make_friend:
       heading: 添加 %{user} 为朋友?
@@ -677,7 +700,7 @@ zh-CN:
           pylon: 桥塔
           station: 索道站
           t-bar: T字形电梯
-          "yes": 航空
+          "yes": 空中通道
         aeroway:
           aerodrome: 飞机场
           airstrip: 飞机跑道
@@ -689,7 +712,7 @@ zh-CN:
           navigationaid: 航空导航辅助
           parking_position: 停车位置
           runway: 飞机跑道
-          taxilane: 滑行道
+          taxilane: æ\9cºå\9dªæ»\91è¡\8cé\81\93
           taxiway: 滑行道
           terminal: 机场航站楼
           windsock: 风向袋
@@ -710,7 +733,7 @@ zh-CN:
           boat_rental: 租船处
           brothel: 妓院
           bureau_de_change: 外汇兑换点
-          bus_station: 公共汽车枢纽
+          bus_station: 公交场站
           cafe: 咖啡厅
           car_rental: 汽车租赁
           car_sharing: 汽车共享
@@ -749,8 +772,8 @@ zh-CN:
           language_school: 语言学校
           library: 图书馆
           loading_dock: 装卸码头
-          love_hotel: 爱情旅馆
-          marketplace: å\95\86
+          love_hotel: 情侣旅馆
+          marketplace: å¸\82
           mobile_money_agent: 移动货币代理
           monastery: 修道院
           money_transfer: 汇款处
@@ -797,7 +820,7 @@ zh-CN:
           waste_basket: 垃圾桶
           waste_disposal: 废物处理
           waste_dump_site: 垃圾倾倒场
-          watering_place: 动物饮水处
+          watering_place: 饮水处
           water_point: 引水点
           weighbridge: 地磅
           "yes": 便利设施
@@ -824,15 +847,15 @@ zh-CN:
           cabin: 小屋
           chapel: 教堂
           church: 教堂建筑
-          civic: å\85¬å\85±建筑
+          civic: å¸\82æ\94¿æ\9c\8då\8a¡建筑
           college: 学院建筑
           commercial: 商业建筑物
           construction: 在建建筑
           detached: 独立式住宅
           dormitory: 宿舍
           duplex: 双拼住宅
-          farm: 农场屋
-          farm_auxiliary: 辅助农场建筑
+          farm: 农
+          farm_auxiliary: 辅助农
           garage: 车库
           garages: 车库
           greenhouse: 温室
@@ -852,7 +875,7 @@ zh-CN:
           roof: 屋顶
           ruins: 损毁建筑
           school: 学校建筑物
-          semidetached_house: å\8f\8cæ\8b¼住宅
+          semidetached_house: å\8d\8aç\8b¬ç«\8bå¼\8f住宅
           service: 服务建筑
           shed: 棚
           stable: 马厩
@@ -1710,7 +1733,7 @@ zh-CN:
       new_messages: '%{count} 条新消息'
       old_messages: '%{count} 条旧消息'
       from: 发件人
-      subject: 
+      subject: 
       date: 日期
       no_messages_yet_html: 您还没有消息,何不联系一些%{people_mapping_nearby_link}?
       people_mapping_nearby: 在附近绘制地图的人
@@ -1738,7 +1761,7 @@ zh-CN:
         one: 您有 %{count} 条已发送信息
         other: 您有 %{count} 条已发送信息
       to: 收件人
-      subject: 
+      subject: 
       date: 日期
       no_sent_messages_html: 您尚未发送信息。何不联系一些%{people_mapping_nearby_link}?
       people_mapping_nearby: 在附近绘制地图的人
@@ -2418,6 +2441,7 @@ zh-CN:
     permissions:
       missing: 您未给予应用访问此装置的权限
     scopes:
+      openid: 使用 OpenStreetMap 登录
       read_prefs: 阅读用户首选项
       write_prefs: 修改用户首选项
       write_diary: 创建日记、评论和交朋友
@@ -2991,7 +3015,7 @@ zh-CN:
       heading: 编辑修订
       title: 编辑修订
     index:
-      empty: æ\97 å\8f¯æ\98¾ç¤ºç\9a\84修订
+      empty: æ\97 å\88 æ\94¹å\8f¯æ\98¾ç¤º
       heading: 修订列表
       title: 修订列表
     new:
index 6ffdfedbb8b49cad94f9e0e1b620dd35420b891d..b6f631b5a832298318c169c95873706107470c28 100644 (file)
@@ -593,10 +593,34 @@ zh-TW:
       newer_comments: 較新的評論
       older_comments: 較舊的評論
   doorkeeper:
+    errors:
+      messages:
+        account_selection_required: 授權伺服器需要終端使用者選擇
+        consent_required: 授權伺服器需要終端使用者同意
+        interaction_required: 授權伺服器需要終端使用者互動
+        login_required: 授權伺服器需要終端使用者身份驗證
     flash:
       applications:
         create:
           notice: 應用程式已註冊。
+    openid_connect:
+      errors:
+        messages:
+          auth_time_from_resource_owner_not_configured: 因 Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner
+            缺少設置導致失敗。
+          reauthenticate_resource_owner_not_configured: 因 Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner
+            缺少設置導致失敗。
+          resource_owner_from_access_token_not_configured: 因 Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token
+            缺少設置導致失敗。
+          select_account_for_resource_owner_not_configured: 因 Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner  缺少設置導致失敗。
+          subject_not_configured: 因 Doorkeeper::OpenidConnect.configure.subject 缺少配置,產生
+            ID 權杖失敗。
+    scopes:
+      address: 查看您的實際地址
+      email: 查看您的電子郵件位址
+      openid: 驗證您的帳號
+      phone: 查看您的電話號碼
+      profile: 查看您的個人資訊
   errors:
     contact:
       contact_url_title: 各種聯絡管道說明
@@ -2396,6 +2420,7 @@ zh-TW:
     permissions:
       missing: 您尚未允許應用程式來訪問此設施
     scopes:
+      openid: 使用 OpenStreetMap 登入
       read_prefs: 讀取使用者偏好設定
       write_prefs: 修改使用者偏好設定
       write_diary: 建立日記、評論和加入好友
index 404e7b0a3fcf6345fec4f22af26a022676f91392..43c43a793461242e12541da86ce4531ae43fd7c0 100644 (file)
@@ -5,6 +5,8 @@ OpenStreetMap::Application.routes.draw do
                 :authorized_applications => "oauth2_authorized_applications"
   end
 
+  use_doorkeeper_openid_connect :scope => "oauth2" if Settings.key?(:doorkeeper_signing_key)
+
   # API
   namespace :api do
     get "capabilities" => "capabilities#show" # Deprecated, remove when 0.6 support is removed
index 214f8a284e000168234913326293f7760c96c08d..cffd3bd316e5f53fcf3e4a5b07eb4c04a15f0de6 100644 (file)
@@ -154,3 +154,8 @@ smtp_password: null
 #signup_ip_max_burst:
 #signup_email_per_day:
 #signup_email_max_burst:
+# Private key for signing id_tokens
+#doorkeeper_signing_key: |
+#  -----BEGIN PRIVATE KEY-----
+#  ...
+#  -----END PRIVATE KEY-----
index 5f00259256d6ef81873ad323810657d9ce289c06..0cfa74cd70738ca851244a4830bf2b7bb0ed63fe 100644 (file)
@@ -22,3 +22,33 @@ trace_icon_storage: "test"
 # Lower some rate limits for testing
 max_changeset_comments_per_hour: 30
 moderator_changeset_comments_per_hour: 60
+# Private key for signing id_tokens
+doorkeeper_signing_key: |
+  -----BEGIN PRIVATE KEY-----
+  MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDA4pSRHIicerJQ
+  BvIy9lGJ6ZQA7SAGVM8QeNMBaQftS+ROMY+6CFCJ0kiwb9oDdtFNyo3gpgmlULMC
+  q0C96r0UllKnTSkHSntkKM0wy3TX0pa8QBaJbbcOXU13xu5cR7ffvtn2kQX8RZc9
+  eZtE/bSybNBDSiS4mbP31cSQ71EYsbfD3UiWOpOTbc6Xlw9kCkUjwXk36Jnim7gF
+  1kFjD3Vq94ij4OVNxcFp+btrfhq2tsiXa9IPBlt1xTetHwj5HrxseDu2qNQNgPxY
+  ivFAA3t4BuIuou1HjAdzfqp7Ylsr2b7qx+w+Y9TqhH6AcKd0i1qxh6bYnJezH9JU
+  BjlJvJMhAgMBAAECggEAAID2/gldiqRqunkc1n48iJ2CufKPRAT3r3rT+OvNzf8F
+  6csJAuWKVE8ndR0trBb6L/eooYloJWA4aiLes0BIMyQQs4go5HB7hwTw7ZYycsKF
+  i0NS676iHO2odKN2iZN/CvIO1AKH9KM35GdgvPA5XG1FU/pUbeOqNn+pQ5mkaWnt
+  kt+ndBpJQDPSS7nTY8g2BCh97SJSbxEPAccAqNLSvKQED4QVygC63jYZNPDxkJWI
+  guzNn4wv1AfM0DU4W5fI0UtNSxcWSsefWBJTOKO/uQr/XJglxVh6uKof1dnBZiJD
+  KU6/+bR1cXoKQ05HAcEcf/mtjJGwnze41p1EI22gYQKBgQDB+VZJwvxlME1MgEGJ
+  WFPPKiQspKjS0kgbfBw7Iny+mYM6YLpQyF0NFNRloALW2rHH2QLNSerHMlytZUAd
+  1SluQZ4We6P3hLDi2J3p37lkIdBXhjJi8gdoEfQ1YVcCbPGbR2ZVwYms7BP3yiQY
+  ZLcHLUKPKG6hOZztY1gBYqoKqQKBgQD+kBtR8krdJHPEU3m+d/6NWlGk4KZgCFx5
+  ouN/aHtxE6Ge+mUwbrJun/oVrFjbX7ySYTYYb6SdKUrchyKfJL4Z89WHGwrFTV1/
+  6J2ShXmoeUeic1TS4btcnFmZyCXlADk1eyHZm9wtkwd5e2lBfdRxzErKC42lWdaQ
+  rreP2nZHuQKBgQCiNbVgB6vznrn1kIe9qFylsJMBtkzryCe+vEILfaKd7VhdOEh2
+  h6ew6ctYlL/rFoV3H1YFgJvSKp5v7mz4xapY5oyiNpD+yzr06LrdulaZkuFcX//A
+  2K8y61iyTw1pHNvKw6Gjcy6DqgRkwej/cTHR0ZqIhwJE1x4RMnOE7RJPyQKBgQCM
+  SLYFjtSa0b/KbYYl5NKu6xsbFYIaYgE0NwPP7rA4PG1QwwSIkDhcpmSXFQdSvYuZ
+  z2CUTtIUmfDbXs1BjmoEu07syYZB/MSN/I75c/z7TvqfF5ejLyqlerQV/yqC7ICa
+  bGTXGwFXTDNOSyhSIxm0LLT6ayt/9+Y6jU4zRFzyYQKBgGiScevkv/XNz9MXswJ+
+  2bEIJNIJn0wIeuopifcDQrOTeCK+037t1AQ3lxMXisJABwG1jfw7WTjF3zz4dSUX
+  cK1+/2V+OkM/0nXjxPwPj7LiOediUyZNUn48r29uGOL1S83PSUdyST207CP6mZjc
+  K8aJmnGsVEAcWPzbpNh14q/c
+  -----END PRIVATE KEY-----
index cfab9da8707da840bed030799dfa5b4f5531c8ca..c7c32cda9755571b0528266212639531632f34d1 100644 (file)
@@ -46,6 +46,7 @@ ca:
     contact:facebook: Ca:Key:contact:facebook
     created_by: Ca:Key:created by
     facebook: Ca:Key:facebook
+    foot: Ca:Key:foot
     lgbtq: Ca:Key:lgbtq
     name: Ca:Key:name
     name:ca: Ca:Key:name:ca
@@ -782,7 +783,6 @@ cs:
     shoulder: Cs:Key:shoulder
     sides: Cs:Key:sides
     sidewalk: Cs:Key:sidewalk
-    site_type: Cs:Key:site type
     size: Cs:Key:size
     ski: Cs:Key:ski
     smokefree: Cs:Key:smokefree
@@ -1058,6 +1058,7 @@ cs:
     amenity=parking: Cs:Tag:amenity=parking
     amenity=parking_entrance: Cs:Tag:amenity=parking entrance
     amenity=parking_space: Cs:Tag:amenity=parking space
+    amenity=payment_terminal: Cs:Tag:amenity=payment terminal
     amenity=pharmacy: Cs:Tag:amenity=pharmacy
     amenity=photo_booth: Cs:Tag:amenity=photo booth
     amenity=place_of_worship: Cs:Tag:amenity=place of worship
@@ -2086,7 +2087,6 @@ cs:
     shop=hearing_aids: Cs:Tag:shop=hearing aids
     shop=herbalist: Cs:Tag:shop=herbalist
     shop=hifi: Cs:Tag:shop=hifi
-    shop=household: Cs:Tag:shop=household
     shop=houseware: Cs:Tag:shop=houseware
     shop=hunting: Cs:Tag:shop=hunting
     shop=ice_cream: Cs:Tag:shop=ice cream
@@ -2361,9 +2361,10 @@ da:
   key:
     access: Da:Key:access
     amenity: Da:Key:amenity
+    cycleway: Da:Key:cycleway
     diet:vegan: Da:Key:diet:vegan
     fee: Da:Key:fee
-    lane_markings: DA:Key:lane markings
+    lane_markings: Da:Key:lane markings
     lit: Da:Key:lit
     man_made: Da:Key:man made
     maxheight: Da:Key:maxheight
@@ -2383,7 +2384,11 @@ da:
     highway=track: Da:Tag:highway=track
     highway=unclassified: Da:Tag:highway=unclassified
     landuse=cemetery: Da:Tag:landuse=cemetery
+    landuse=forest: Da:Tag:landuse=forest
     leisure=dog_park: Da:Tag:leisure=dog park
+    natural=grassland: Da:Tag:natural=grassland
+    natural=heath: Da:Tag:natural=heath
+    natural=wood: Da:Tag:natural=wood
     noexit=yes: Da:Tag:noexit=yes
     place=hamlet: Da:Tag:place=hamlet
     place=town: Da:Tag:place=town
@@ -2393,6 +2398,7 @@ da:
     shop=charity: Da:Tag:shop=charity
 de:
   key:
+    4wd_only: DE:Key:4wd only
     AlpinRes_ID: DE:Key:AlpinRes ID
     Animal: DE:Key:Animal
     Annotations: DE:Key:Annotations
@@ -2446,10 +2452,12 @@ de:
     attraction: DE:Key:attraction
     atv:repair: DE:Key:atv:repair
     authentication: DE:Key:authentication
+    authentication:*: DE:Key:authentication:*
     automated: DE:Key:automated
     automatic_door: DE:Key:automatic door
     backcountry: DE:Key:backcountry
     backrest: DE:Key:backrest
+    backup_generator: DE:Key:backup generator
     backward: DE:Key:backward
     bakehouse: DE:Key:bakehouse
     barrier: DE:Key:barrier
@@ -2530,7 +2538,9 @@ de:
     collection_times: DE:Key:collection times
     colour: DE:Key:colour
     comment: DE:Key:comment
+    communication:*: DE:Key:communication:*
     communication:amateur_radio:repeater: DE:Key:communication:amateur radio:repeater
+    communication:amateur_radio:sota: DE:Key:communication:amateur radio:sota
     communication:bos: DE:Key:communication:bos
     communication:microwave: DE:Key:communication:microwave
     communication:mobile_phone: DE:Key:communication:mobile phone
@@ -2541,6 +2551,7 @@ de:
     company: DE:Key:company
     conditional: DE:Key:conditional
     construction: DE:Key:construction
+    construction:*: DE:Key:construction:*
     contact: DE:Key:contact
     'contact:': 'DE:Key:contact:'
     contact:*: DE:Key:contact:*
@@ -2664,6 +2675,7 @@ de:
     fax: DE:Key:fax
     fee: DE:Key:fee
     fence_type: DE:Key:fence type
+    fenced: DE:Key:fenced
     ferry: DE:Key:ferry
     ferry:cable: DE:Key:ferry:cable
     fetish: DE:Key:fetish
@@ -2696,11 +2708,17 @@ de:
     gauge: DE:Key:gauge
     generator:method: DE:Key:generator:method
     generator:output: DE:Key:generator:output
+    generator:output:*: DE:Key:generator:output:*
     generator:output:biogas: DE:Key:generator:output:biogas
+    generator:output:cold_air: DE:Key:generator:output:cold air
+    generator:output:cold_water: DE:Key:generator:output:cold water
+    generator:output:compressed_air: DE:Key:generator:output:compressed air
     generator:output:electricity: DE:Key:generator:output:electricity
     generator:output:heat: DE:Key:generator:output:heat
+    generator:output:hot_air: DE:Key:generator:output:hot air
     generator:output:hot_water: DE:Key:generator:output:hot water
     generator:output:steam: DE:Key:generator:output:steam
+    generator:output:vacuum: DE:Key:generator:output:vacuum
     generator:place: DE:Key:generator:place
     generator:plant: DE:Key:generator:plant
     generator:source: DE:Key:generator:source
@@ -2710,6 +2728,7 @@ de:
     geological: DE:Key:geological
     golf: DE:Key:golf
     golf:course: DE:Key:golf:course
+    golf:par: DE:Key:golf:par
     goods: DE:Key:goods
     government: DE:Key:government
     grades: DE:Key:grades
@@ -2756,6 +2775,7 @@ de:
     intermittent: DE:Key:intermittent
     internet_access: DE:Key:internet access
     internet_access:fee: DE:Key:internet access:fee
+    internet_access:ssid: DE:Key:internet access:ssid
     interval: DE:Key:interval
     is_in: DE:Key:is in
     is_in:continent: DE:Key:is in:continent
@@ -2936,6 +2956,7 @@ de:
       output
     passing_places: DE:Key:passing places
     payment: DE:Key:payment
+    payment:*: DE:Key:payment:*
     permanent_camping: DE:Key:permanent camping
     phone: DE:Key:phone
     pilgrimage: DE:Key:pilgrimage
@@ -2946,9 +2967,25 @@ de:
     plant: DE:Key:plant
     plant:method: DE:Key:plant:method
     plant:output: DE:Key:plant:output
+    plant:output:*: DE:Key:plant:output:*
+    plant:output:biogas: DE:Key:plant:output:biogas
+    plant:output:cold_air: DE:Key:plant:output:cold air
+    plant:output:cold_water: DE:Key:plant:output:cold water
+    plant:output:compressed_air: DE:Key:plant:output:compressed air
     plant:output:electricity: DE:Key:plant:output:electricity
+    plant:output:hot_air: DE:Key:plant:output:hot air
     plant:output:hot_water: DE:Key:plant:output:hot water
+    plant:output:steam: DE:Key:plant:output:steam
+    plant:output:vacuum: DE:Key:plant:output:vacuum
     plant:source: DE:Key:plant:source
+    platform:width: DE:Key:platform:width
+    platform_lift: DE:Key:platform lift
+    platform_lift:maxlength:physical: DE:Key:platform lift:maxlength:physical
+    platform_lift:maxweight: DE:Key:platform lift:maxweight
+    platform_lift:maxwidth:physical: DE:Key:platform lift:maxwidth:physical
+    platform_lift:portable: DE:Key:platform lift:portable
+    platform_lift:seat: DE:Key:platform lift:seat
+    platform_lift:supervised: DE:Key:platform lift:supervised
     playground: DE:Key:playground
     'playground:': 'DE:Key:playground:'
     playground:*: DE:Key:playground:*
@@ -2964,6 +3001,7 @@ de:
     produce: DE:Key:produce
     product: DE:Key:product
     proposed: DE:Key:proposed
+    proposed:*: DE:Key:proposed:*
     protect_class: DE:Key:protect class
     protected: DE:Key:protected
     protection_title: DE:Key:protection title
@@ -2985,6 +3023,11 @@ de:
     railway:tilting: DE:Key:railway:tilting
     railway:track_ref: DE:Key:railway:track ref
     ramp: DE:Key:ramp
+    ramp:portable: DE:Key:ramp:portable
+    ramp:portable:length: DE:Key:ramp:portable:length
+    ramp:portable:maxweight: DE:Key:ramp:portable:maxweight
+    ramp:portable:maxwidth:physical: DE:Key:ramp:portable:maxwidth:physical
+    ramp:portable:supervised: DE:Key:ramp:portable:supervised
     'razed:': 'DE:Key:razed:'
     razed:*: DE:Key:razed:*
     rcn_ref: DE:Key:rcn ref
@@ -2992,6 +3035,7 @@ de:
     recycling_type: DE:Key:recycling type
     ref: DE:Key:ref
     ref:IFOPT: DE:Key:ref:IFOPT
+    ref:WDPA: DE:Key:ref:WDPA
     ref:bufa: DE:Key:ref:bufa
     ref:fgkz: DE:Key:ref:fgkz
     ref:mobil-parken.de: DE:Key:ref:mobil-parken.de
@@ -3041,8 +3085,10 @@ de:
     service:bicycle:rental: DE:Key:service:bicycle:rental
     service:bicycle:repair: DE:Key:service:bicycle:repair
     service:vehicle: DE:Key:service:vehicle
+    'service:vehicle:': 'DE:Key:service:vehicle:'
     service:vehicle:*: DE:Key:service:vehicle:*
     service_times: DE:Key:service times
+    service_times:wheelchair: DE:Key:service times:wheelchair
     settlement_type: DE:Key:settlement type
     shelter: DE:Key:shelter
     shelter_type: DE:Key:shelter type
@@ -3059,6 +3105,7 @@ de:
     social_facility: DE:Key:social facility
     social_facility:for: DE:Key:social facility:for
     socket: DE:Key:socket
+    socket:*: DE:Key:socket:*
     source: DE:Key:source
     source:maxspeed: DE:Key:source:maxspeed
     species: DE:Key:species
@@ -3263,6 +3310,7 @@ de:
     amenity=bicycle_parking: DE:Tag:amenity=bicycle parking
     amenity=bicycle_rental: DE:Tag:amenity=bicycle rental
     amenity=bicycle_repair_station: DE:Tag:amenity=bicycle repair station
+    amenity=bicycle_wash: DE:Tag:amenity=bicycle wash
     amenity=biergarten: DE:Tag:amenity=biergarten
     amenity=boat_rental: DE:Tag:amenity=boat rental
     amenity=boat_storage: DE:Tag:amenity=boat storage
@@ -3417,6 +3465,7 @@ de:
     archaeological_site=roman_villa: DE:Tag:archaeological site=roman villa
     archaeological_site=settlement: DE:Tag:archaeological site=settlement
     archaeological_site=tumulus: DE:Tag:archaeological site=tumulus
+    artwork_type=architecture: DE:Tag:artwork type=architecture
     artwork_type=bust: DE:Tag:artwork type=bust
     artwork_type=mural: DE:Tag:artwork type=mural
     artwork_type=sculpture: DE:Tag:artwork type=sculpture
@@ -3486,6 +3535,7 @@ de:
     bicycle_road=yes: DE:Tag:bicycle road=yes
     biosphärenwirt=yes: DE:Tag:biosphärenwirt=yes
     boundary=administrative: DE:Tag:boundary=administrative
+    boundary=low_emission_zone: DE:Tag:boundary=low emission zone
     boundary=marker: DE:Tag:boundary=marker
     boundary=national_park: DE:Tag:boundary=national park
     boundary=postal_code: DE:Tag:boundary=postal code
@@ -3621,12 +3671,15 @@ de:
     communication=line: DE:Tag:communication=line
     community_centre=community_hall: DE:Tag:community centre=community hall
     community_centre=cultural_centre: DE:Tag:community centre=cultural centre
+    community_centre=family_centre: DE:Tag:community centre=family centre
+    community_centre=parish_hall: DE:Tag:community centre=parish hall
     community_centre=village_hall: DE:Tag:community centre=village hall
     community_centre=youth_centre: DE:Tag:community centre=youth centre
     company=construction: DE:Tag:company=construction
     company=industrial_climbing: DE:Tag:company=industrial climbing
     company=logistics: DE:Tag:company=logistics
     company=transport: DE:Tag:company=transport
+    construction=minor: DE:Tag:construction=minor
     construction=yes: DE:Tag:construction=yes
     consulate=consulate_general: DE:Tag:consulate=consulate general
     consulate=honorary_consul: DE:Tag:consulate=honorary consul
@@ -3762,6 +3815,7 @@ de:
     defensive=keep: DE:Tag:defensive=keep
     defensive_works=bastion: DE:Tag:defensive works=bastion
     defensive_works=battery: DE:Tag:defensive works=battery
+    dennert_fir_tree=yes: DE:Tag:dennert fir tree=yes
     denotation=natural_monument: DE:Tag:denotation=natural monument
     diplomatic=ambassadors_residence: DE:Tag:diplomatic=ambassadors residence
     diplomatic=consulate: DE:Tag:diplomatic=consulate
@@ -3790,6 +3844,7 @@ de:
     emergency=aed: DE:Tag:emergency=aed
     emergency=ambulance_station: DE:Tag:emergency=ambulance station
     emergency=assembly_point: DE:Tag:emergency=assembly point
+    emergency=control_centre: DE:Tag:emergency=control centre
     emergency=defibrillator: DE:Tag:emergency=defibrillator
     emergency=designated: DE:Tag:emergency=designated
     emergency=drinking_water: DE:Tag:emergency=drinking water
@@ -3829,6 +3884,7 @@ de:
     entrance=yes: DE:Tag:entrance=yes
     fast_food=cafeteria: DE:Tag:fast food=cafeteria
     fence_type=railing: DE:Tag:fence type=railing
+    fire_class=*: DE:Tag:fire class=*
     foot=designated: DE:Tag:foot=designated
     foot=yes: DE:Tag:foot=yes
     footway=crossing: DE:Tag:footway=crossing
@@ -3854,6 +3910,7 @@ de:
     generator:method=water-pumped-storage: DE:Tag:generator:method=water-pumped-storage
     generator:method=water-storage: DE:Tag:generator:method=water-storage
     generator:method=wind_turbine: DE:Tag:generator:method=wind turbine
+    generator:source=battery: DE:Tag:generator:source=battery
     generator:source=biofuel: DE:Tag:generator:source=biofuel
     generator:source=biogas: DE:Tag:generator:source=biogas
     generator:source=biomass: DE:Tag:generator:source=biomass
@@ -3889,6 +3946,7 @@ de:
     geological=moraine: DE:Tag:geological=moraine
     geological=outcrop: DE:Tag:geological=outcrop
     geological=palaeontological_site: DE:Tag:geological=palaeontological site
+    geological=rock_glacier: DE:Tag:geological=rock glacier
     geological=volcanic_caldera_rim: DE:Tag:geological=volcanic caldera rim
     geological=volcanic_lava_field: DE:Tag:geological=volcanic lava field
     geological=volcanic_vent: DE:Tag:geological=volcanic vent
@@ -3937,6 +3995,7 @@ de:
     hazard=slippery: DE:Tag:hazard=slippery
     hazmat:water=permissive: DE:Tag:hazmat:water=permissive
     healthcare:speciality=allergology: DE:Tag:healthcare:speciality=allergology
+    healthcare:speciality=anaesthetics: DE:Tag:healthcare:speciality=anaesthetics
     healthcare:speciality=dermatology: DE:Tag:healthcare:speciality=dermatology
     healthcare:speciality=general: DE:Tag:healthcare:speciality=general
     healthcare:speciality=gynaecology: DE:Tag:healthcare:speciality=gynaecology
@@ -3947,6 +4006,7 @@ de:
     healthcare:speciality=paediatric_surgery: DE:Tag:healthcare:speciality=paediatric
       surgery
     healthcare:speciality=paediatrics: DE:Tag:healthcare:speciality=paediatrics
+    healthcare:speciality=psychiatry: DE:Tag:healthcare:speciality=psychiatry
     healthcare:speciality=vaccination: DE:Tag:healthcare:speciality=vaccination
     healthcare=alternative: DE:Tag:healthcare=alternative
     healthcare=audiologist: DE:Tag:healthcare=audiologist
@@ -3965,6 +4025,7 @@ de:
     healthcare=midwife: DE:Tag:healthcare=midwife
     healthcare=occupational_therapist: DE:Tag:healthcare=occupational therapist
     healthcare=physiotherapist: DE:Tag:healthcare=physiotherapist
+    healthcare=podiatrist: DE:Tag:healthcare=podiatrist
     healthcare=rehabilitation: DE:Tag:healthcare=rehabilitation
     healthcare=sample_collection: DE:Tag:healthcare=sample collection
     healthcare=speech_therapist: DE:Tag:healthcare=speech therapist
@@ -4220,6 +4281,7 @@ de:
     line=bay: DE:Tag:line=bay
     line=busbar: DE:Tag:line=busbar
     location:transition=yes: DE:Tag:location:transition=yes
+    location=roof: DE:Tag:location=roof
     location=underground: DE:Tag:location=underground
     lottery=yes: DE:Tag:lottery=yes
     man_made=MDF: DE:Tag:man made=MDF
@@ -4234,7 +4296,9 @@ de:
     man_made=cairn: DE:Tag:man made=cairn
     man_made=carpet_hanger: DE:Tag:man made=carpet hanger
     man_made=cellar_entrance: DE:Tag:man made=cellar entrance
+    man_made=charge_point: DE:Tag:man made=charge point
     man_made=chimney: DE:Tag:man made=chimney
+    man_made=clarifier: DE:Tag:man made=clarifier
     man_made=clearcut: DE:Tag:man made=clearcut
     man_made=column: DE:Tag:man made=column
     man_made=communications_tower: DE:Tag:man made=communications tower
@@ -4274,6 +4338,7 @@ de:
     man_made=obelisk: DE:Tag:man made=obelisk
     man_made=observatory: DE:Tag:man made=observatory
     man_made=offshore_platform: DE:Tag:man made=offshore platform
+    man_made=oxidation_ditch: DE:Tag:man made=oxidation ditch
     man_made=petroleum_well: DE:Tag:man made=petroleum well
     man_made=pier: DE:Tag:man made=pier
     man_made=pipeline: DE:Tag:man made=pipeline
@@ -4441,6 +4506,7 @@ de:
     office=charity: DE:Tag:office=charity
     office=company: DE:Tag:office=company
     office=consulting: DE:Tag:office=consulting
+    office=cooperative: DE:Tag:office=cooperative
     office=diplomatic: DE:Tag:office=diplomatic
     office=educational_institution: DE:Tag:office=educational institution
     office=employment_agency: DE:Tag:office=employment agency
@@ -4494,7 +4560,7 @@ de:
     operator=stadtmobil: DE:Tag:operator=stadtmobil
     operator=teilAuto: DE:Tag:operator=teilAuto
     orchard=meadow_orchard: DE:Tag:orchard=meadow orchard
-    park_ride: DE:Tag:park ride
+    park_ride=hov: DE:Tag:park ride=hov
     parking:lane:hgv=on_street: DE:Tag:parking:lane:hgv=on street
     parking=lane: DE:Tag:parking=lane
     parking=multi-storey: DE:Tag:parking=multi-storey
@@ -4503,9 +4569,11 @@ de:
     parking=underground: DE:Tag:parking=underground
     pipeline=marker: DE:Tag:pipeline=marker
     pipeline=substation: DE:Tag:pipeline=substation
+    pipeline=surge_tank: DE:Tag:pipeline=surge tank
     pipeline=valve: DE:Tag:pipeline=valve
     piste:type=downhill: DE:Tag:piste:type=downhill
     piste:type=nordic: DE:Tag:piste:type=nordic
+    piste:type=sled: DE:Tag:piste:type=sled
     place=archipelago: DE:Tag:place=archipelago
     place=city: DE:Tag:place=city
     place=city_block: DE:Tag:place=city block
@@ -4528,6 +4596,11 @@ de:
     place=town: DE:Tag:place=town
     place=village: DE:Tag:place=village
     placement=transition: DE:Tag:placement=transition
+    plant:method=anaerobic_digestion: DE:Tag:plant:method=anaerobic digestion
+    plant:method=gasification: DE:Tag:plant:method=gasification
+    plant:method=run-of-the-river: DE:Tag:plant:method=run-of-the-river
+    plant:method=thermal: DE:Tag:plant:method=thermal
+    plant:method=water-pumped-storage: DE:Tag:plant:method=water-pumped-storage
     plant:method=water-storage: DE:Tag:plant:method=water-storage
     plant:source=battery: DE:Tag:plant:source=battery
     plant:source=biomass: DE:Tag:plant:source=biomass
@@ -4745,6 +4818,7 @@ de:
     shop=equestrian: DE:Tag:shop=equestrian
     shop=erotic: DE:Tag:shop=erotic
     shop=fabric: DE:Tag:shop=fabric
+    shop=fan: DE:Tag:shop=fan
     shop=farm: DE:Tag:shop=farm
     shop=fashion: DE:Tag:shop=fashion
     shop=fashion_accessories: DE:Tag:shop=fashion accessories
@@ -4814,6 +4888,7 @@ de:
     shop=photo: DE:Tag:shop=photo
     shop=plant_hire: DE:Tag:shop=plant hire
     shop=pottery: DE:Tag:shop=pottery
+    shop=power_tools: DE:Tag:shop=power tools
     shop=radiotechnics: DE:Tag:shop=radiotechnics
     shop=religion: DE:Tag:shop=religion
     shop=repair: DE:Tag:shop=repair
@@ -5003,6 +5078,7 @@ de:
     tomb=pyramid: DE:Tag:tomb=pyramid
     tomb=rock-cut: DE:Tag:tomb=rock-cut
     tomb=sarcophagus: DE:Tag:tomb=sarcophagus
+    tomb=table: DE:Tag:tomb=table
     tomb=tumulus: DE:Tag:tomb=tumulus
     tomb=vault: DE:Tag:tomb=vault
     tomb=war_grave: DE:Tag:tomb=war grave
@@ -5159,6 +5235,7 @@ de:
     transformer=distribution: DE:Tag:transformer=distribution
     tunnel=building_passage: DE:Tag:tunnel=building passage
     tunnel=culvert: DE:Tag:tunnel=culvert
+    type=associatedStreet: DE:Tag:type=associatedStreet
     type=destination_sign: DE:Tag:type=destination sign
     type=enforcement: DE:Tag:type=enforcement
     type=waterway: DE:Tag:type=waterway
@@ -5170,8 +5247,8 @@ de:
     usage=tailrace: DE:Tag:usage=tailrace
     usage=tourism: DE:Tag:usage=tourism
     usage=transmission: DE:Tag:usage=transmission
+    utility=power: DE:Tag:utility=power
     vehicle=no: DE:Tag:vehicle=no
-    vending: DE:Tag:vending
     vending=SIM_cards: DE:Tag:vending=SIM cards
     vending=admission_tickets: DE:Tag:vending=admission tickets
     vending=animal_feed: DE:Tag:vending=animal feed
@@ -5208,6 +5285,7 @@ de:
     vending=ice_cubes: DE:Tag:vending=ice cubes
     vending=ink_cartridges: DE:Tag:vending=ink cartridges
     vending=laundry_detergent: DE:Tag:vending=laundry detergent
+    vending=lottery: DE:Tag:vending=lottery
     vending=milk: DE:Tag:vending=milk
     vending=newspapers: DE:Tag:vending=newspapers
     vending=parcel_mail_in: DE:Tag:vending=parcel mail in
@@ -5435,6 +5513,7 @@ en:
     active_traffic_management: Key:active traffic management
     actuator: Key:actuator
     addr: Key:addr
+    'addr:': 'Key:addr:'
     addr:*: Key:addr:*
     addr:TW:dataset: Key:addr:TW:dataset
     addr:alternatenumber: Key:addr:alternatenumber
@@ -5464,6 +5543,7 @@ en:
     addr:flats: Key:addr:flats
     addr:floor: Key:addr:floor
     addr:full: Key:addr:full
+    addr:ghanapostgps: Key:addr:ghanapostgps
     addr:hamlet: Key:addr:hamlet
     addr:hamlet:de: Key:addr:hamlet:de
     addr:hamlet:it: Key:addr:hamlet:it
@@ -5473,6 +5553,7 @@ en:
     addr:housenumber:ar: Key:addr:housenumber:ar
     addr:inclusion: Key:addr:inclusion
     addr:interpolation: Key:addr:interpolation
+    addr:khasra: Key:addr:khasra
     addr:milestone: Key:addr:milestone
     addr:neighborhood: Key:addr:neighborhood
     addr:neighbourhood: Key:addr:neighbourhood
@@ -5491,7 +5572,9 @@ en:
     addr:province:en: Key:addr:province:en
     addr:province:ur: Key:addr:province:ur
     addr:provisionalnumber: Key:addr:provisionalnumber
+    addr:quarter: Key:addr:quarter
     addr:region: Key:addr:region
+    addr:room: Key:addr:room
     addr:sector: Key:addr:sector
     addr:source: Key:addr:source
     addr:staircase: Key:addr:staircase
@@ -5511,9 +5594,12 @@ en:
     addr:subdistrict:ar: Key:addr:subdistrict:ar
     addr:subdistrict:en: Key:addr:subdistrict:en
     addr:suburb: Key:addr:suburb
+    addr:subward: Key:addr:subward
     addr:town: Key:addr:town
     addr:type: Key:addr:type
     addr:unit: Key:addr:unit
+    addr:village: Key:addr:village
+    addr:ward: Key:addr:ward
     address: Key:address
     admin_level: Key:admin level
     admin_title: Key:admin title
@@ -5614,6 +5700,7 @@ en:
     atv:repair: Key:atv:repair
     atv:sales: Key:atv:sales
     authentication: Key:authentication
+    authentication:*: Key:authentication:*
     authentication:app: Key:authentication:app
     authentication:disc: Key:authentication:disc
     authentication:membership_card: Key:authentication:membership card
@@ -5658,20 +5745,24 @@ en:
     bell_tower: Key:bell tower
     bench: Key:bench
     bench:type: Key:bench:type
+    bettundbike: Key:bettundbike
     bicycle: Key:bicycle
     bicycle:backward: Key:bicycle:backward
     bicycle:both: Key:bicycle:both
     bicycle:class:mtb: Key:bicycle:class:mtb
     bicycle:class:mtb:technical: Key:bicycle:class:mtb:technical
     bicycle:conditional: Key:bicycle:conditional
+    bicycle:description: Key:bicycle:description
     bicycle:designated:type: Key:bicycle:designated:type
     bicycle:forward: Key:bicycle:forward
     bicycle:left: Key:bicycle:left
     bicycle:oneway: Key:bicycle:oneway
+    bicycle:physical: Key:bicycle:physical
     bicycle:right: Key:bicycle:right
     bicycle:type: Key:bicycle:type
     bicycle_bypass: Key:bicycle bypass
     bicycle_parking: Key:bicycle parking
+    bike_friend: Key:bike friend
     bike_ride: Key:bike ride
     bin: Key:bin
     biosphärenwirt: Key:biosphärenwirt
@@ -5683,6 +5774,7 @@ en:
     bollard: Key:bollard
     booking: Key:booking
     books: Key:books
+    boot_scraper: Key:boot scraper
     booth: Key:booth
     border_type: Key:border type
     bot: Key:bot
@@ -5742,6 +5834,7 @@ en:
     building:condition: Key:building:condition
     building:cullis:height: Key:building:cullis:height
     building:design: Key:building:design
+    building:earthquake-resistant: Key:building:earthquake-resistant
     building:facade:colour: Key:building:facade:colour
     building:fireproof: Key:building:fireproof
     building:flats: Key:building:flats
@@ -5758,6 +5851,7 @@ en:
     building:part: Key:building:part
     building:place: Key:building:place
     building:prefabricated: Key:building:prefabricated
+    building:quake-resistant: Key:building:quake-resistant
     building:roof:colour: Key:building:roof:colour
     building:ruian:type: Key:building:ruian:type
     building:soft_storey: Key:building:soft storey
@@ -5770,7 +5864,6 @@ en:
     building:walls: Key:building:walls
     bulk_purchase: Key:bulk purchase
     bunker_type: Key:bunker type
-    bunker_type=bomb_shelter: Key:bunker type=bomb shelter
     buried:wikidata: Key:buried:wikidata
     buried:wikipedia: Key:buried:wikipedia
     bus: Key:bus
@@ -5786,7 +5879,6 @@ en:
     butcher: Key:butcher
     button_operated: Key:button operated
     bygningsnr: Key:bygningsnr
-    cabin:rental: Key:cabin:rental
     cabins: Key:cabins
     cable_number: Key:cable number
     cables: Key:cables
@@ -5808,18 +5900,21 @@ en:
     capacity:cabins: Key:capacity:cabins
     capacity:charging: Key:capacity:charging
     capacity:disabled: Key:capacity:disabled
+    capacity:long: Key:capacity:long
     capacity:men: Key:capacity:men
     capacity:motorcycle: Key:capacity:motorcycle
     capacity:parent: Key:capacity:parent
     capacity:persons: Key:capacity:persons
     capacity:rooms: Key:capacity:rooms
     capacity:seats: Key:capacity:seats
+    capacity:standard: Key:capacity:standard
     capacity:tents: Key:capacity:tents
     capacity:truck: Key:capacity:truck
     capacity:women: Key:capacity:women
     capital: Key:capital
     capital_city: Key:capital city
     car_parts: Key:car parts
+    car_repair: Key:car repair
     car_wash: Key:car wash
     caravan: Key:caravan
     caravans: Key:caravans
@@ -5895,7 +5990,6 @@ en:
     coach: Key:coach
     coastline:survey_quality: Key:coastline:survey quality
     cocktails: Key:cocktails
-    coffee: Key:coffee
     collection_times: Key:collection times
     collection_times:signed: Key:collection times:signed
     collector: Key:collector
@@ -5919,6 +6013,8 @@ en:
     communication:amateur_radio:repeater:power: Key:communication:amateur radio:repeater:power
     communication:amateur_radio:repeater:shift: Key:communication:amateur radio:repeater:shift
     communication:amateur_radio:repeater:toneburst: Key:communication:amateur radio:repeater:toneburst
+    communication:amateur_radio:sota: Key:communication:amateur radio:sota
+    communication:amateur_radio:wca: Key:communication:amateur radio:wca
     communication:bos: Key:communication:bos
     communication:gsm-r: Key:communication:gsm-r
     communication:microwave: Key:communication:microwave
@@ -5941,9 +6037,10 @@ en:
     construction: Key:construction
     'construction:': 'Key:construction:'
     construction:*: Key:construction:*
+    construction:building: Key:construction:building
+    construction:highway: Key:construction:highway
     construction:website: Key:construction:website
     construction_date: Key:construction date
-    construction_end_expected: Key:construction end expected
     construction_start_expected: Key:construction start expected
     consulate: Key:consulate
     consulting: Key:consulting
@@ -5990,10 +6087,12 @@ en:
     conveying: Key:conveying
     cooker: Key:cooker
     cooling:method: Key:cooling:method
+    corbett: Key:corbett
     corners: Key:corners
     cosmha: Key:cosmha
     counselling: Key:counselling
     counselling_type:*: Key:counselling type:*
+    count: Key:count
     country: Key:country
     couplings: Key:couplings
     courts: Key:courts
@@ -6014,6 +6113,7 @@ en:
     crossing:on_demand: Key:crossing:on demand
     crossing:saltire: Key:crossing:saltire
     crossing:signals: Key:crossing:signals
+    crossing:whistle: Key:crossing:whistle
     crossing_ref: Key:crossing ref
     cruising: Key:cruising
     cs_dir:backward: Key:cs dir:backward
@@ -6024,6 +6124,7 @@ en:
     currency:*: Key:currency:*
     currency:BTC: Key:currency:BTC
     currency:CAD: Key:currency:CAD
+    currency:CHF: Key:currency:CHF
     currency:EUR: Key:currency:EUR
     currency:GBP: Key:currency:GBP
     currency:PLN: Key:currency:PLN
@@ -6037,6 +6138,7 @@ en:
     curve:name: Key:curve:name
     curve:ref: Key:curve:ref
     curves: Key:curves
+    customers: Key:customers
     cutting: Key:cutting
     cyclability: Key:cyclability
     cycle: Key:cycle
@@ -6055,16 +6157,21 @@ en:
     cycleway:foot: Key:cycleway:foot
     cycleway:lane: Key:cycleway:lane
     cycleway:left: Key:cycleway:left
+    cycleway:left:buffer: Key:cycleway:left:buffer
     cycleway:left:lane: Key:cycleway:left:lane
     cycleway:left:oneway: Key:cycleway:left:oneway
+    cycleway:left:separation: Key:cycleway:left:separation
     cycleway:left=backward: Key:cycleway:left=backward
     cycleway:oneway: Key:cycleway:oneway
     cycleway:right: Key:cycleway:right
+    cycleway:right:buffer: Key:cycleway:right:buffer
     cycleway:right:lane: Key:cycleway:right:lane
     cycleway:right:oneway: Key:cycleway:right:oneway
+    cycleway:right:separation: Key:cycleway:right:separation
     cycleway:right:surface: Key:cycleway:right:surface
     cycleway:right=forward: Key:cycleway:right=forward
     cycleway:segregated: Key:cycleway:segregated
+    cycleway:separation: Key:cycleway:separation
     cycleway:surface: Key:cycleway:surface
     cycleway:width: Key:cycleway:width
     cycling_width: Key:cycling width
@@ -6077,6 +6184,7 @@ en:
     damage:type: Key:damage:type
     dance:style: Key:dance:style
     dance:teaching: Key:dance:teaching
+    dark_store: Key:dark store
     date: Key:date
     de:amtlicher_gemeindeschluessel: Key:de:amtlicher gemeindeschluessel
     de:regionalschluessel: Key:de:regionalschluessel
@@ -6116,8 +6224,7 @@ en:
     descent: Key:descent
     description: Key:description
     description:ar: Key:description:ar
-    description:restrictions: Key:description:restrictions
-    descriptions:restrictions: Key:descriptions:restrictions
+    description:bicycle: Key:description:bicycle
     design: Key:design
     design:ref: Key:design:ref
     designation: Key:designation
@@ -6202,6 +6309,7 @@ en:
     diet:halal: Key:diet:halal
     diet:kosher: Key:diet:kosher
     diet:lactose_free: Key:diet:lactose free
+    diet:sugar_free: Key:diet:sugar free
     diet:vegan: Key:diet:vegan
     diet:vegetarian: Key:diet:vegetarian
     dinner: Key:dinner
@@ -6215,8 +6323,13 @@ en:
     diplomatic:services:non-immigrant_visas: Key:diplomatic:services:non-immigrant
       visas
     direction: Key:direction
+    direction_*: Key:direction *
+    direction_*:symbol: Key:direction *:symbol
     direction_east: Key:direction east
     direction_north: Key:direction north
+    direction_north:ref: Key:direction north:ref
+    direction_north:route: Key:direction north:route
+    direction_north:symbol: Key:direction north:symbol
     direction_northeast: Key:direction northeast
     direction_northwest: Key:direction northwest
     direction_south: Key:direction south
@@ -6233,6 +6346,11 @@ en:
     display: Key:display
     display_surface: Key:display surface
     disputed_by: Key:disputed by
+    dist: Key:dist
+    dist:blue: Key:dist:blue
+    dist:red: Key:dist:red
+    dist:white: Key:dist:white
+    dist:yellow: Key:dist:yellow
     distance: Key:distance
     disused: Key:disused
     'disused:': 'Key:disused:'
@@ -6252,7 +6370,9 @@ en:
     dock:height: Key:dock:height
     dock:width: Key:dock:width
     dog: Key:dog
+    dog_washing: Key:dog washing
     dominant_taxon: Key:dominant taxon
+    donald: Key:donald
     donation:compensation: Key:donation:compensation
     donation:compensation:payment: Key:donation:compensation:payment
     donation:compensation:vouchers: Key:donation:compensation:vouchers
@@ -6263,7 +6383,6 @@ en:
     draft: Key:draft
     draisine: Key:draisine
     dress_code: Key:dress code
-    drink: Key:drink
     drink:*: Key:drink:*
     drink:afri-cola: Key:drink:afri-cola
     drink:beer: Key:drink:beer
@@ -6298,6 +6417,7 @@ en:
     earthquake:damage: Key:earthquake:damage
     easy_overtaking: Key:easy overtaking
     education: Key:education
+    education_program: Key:education program
     educational: Key:educational
     ekatte: Key:ekatte
     ele: Key:ele
@@ -6356,6 +6476,7 @@ en:
     exit_to: Key:exit to
     expected_rcn_route_relations: Key:expected rcn route relations
     expressway: Key:expressway
+    extinguishing:medium: Key:extinguishing:medium
     facebook: Key:facebook
     faces: Key:faces
     fair_trade: Key:fair trade
@@ -6367,6 +6488,7 @@ en:
     fax: Key:fax
     fcc:registration_number: Key:fcc:registration number
     fcc:unique_system_identifier: Key:fcc:unique system identifier
+    fcode: Key:fcode
     fdep:landuse_code: Key:fdep:landuse code
     fee: Key:fee
     fee:conditional: Key:fee:conditional
@@ -6389,6 +6511,7 @@ en:
     fine: Key:fine
     fire: Key:fire
     fire_boundary: Key:fire boundary
+    fire_class: Key:fire class
     fire_hydrant: Key:fire hydrant
     fire_hydrant:diameter: Key:fire hydrant:diameter
     fire_hydrant:diameter:signed: Key:fire hydrant:diameter:signed
@@ -6424,9 +6547,12 @@ en:
     flow_rate: Key:flow rate
     food: Key:food
     food:*: Key:food:*
+    food:hot_dog: Key:food:hot dog
+    food:pizza: Key:food:pizza
     foot: Key:foot
     foot:backward: Key:foot:backward
     foot:forward: Key:foot:forward
+    foot_traffic: Key:foot traffic
     footway: Key:footway
     footway:surface: Key:footway:surface
     for: Key:for
@@ -6504,6 +6630,7 @@ en:
     gender_segregated: Key:gender segregated
     generator:method: Key:generator:method
     generator:output: Key:generator:output
+    generator:output:*: Key:generator:output:*
     generator:output:biogas: Key:generator:output:biogas
     generator:output:cold_air: Key:generator:output:cold air
     generator:output:cold_water: Key:generator:output:cold water
@@ -6518,7 +6645,9 @@ en:
     generator:place: Key:generator:place
     generator:plant: Key:generator:plant
     generator:solar:modules: Key:generator:solar:modules
+    generator:solar:tracking: Key:generator:solar:tracking
     generator:source: Key:generator:source
+    generator:storage: Key:generator:storage
     generator:type: Key:generator:type
     genus: Key:genus
     genus:ar: Key:genus:ar
@@ -6536,7 +6665,6 @@ en:
     glacier:part: Key:glacier:part
     glacier:type: Key:glacier:type
     glideslope: Key:glideslope
-    gluten_free: Key:gluten free
     gnis:fcode: Key:gnis:fcode
     gnis:feature_id: Key:gnis:feature id
     gnis:ftype: Key:gnis:ftype
@@ -6544,22 +6672,32 @@ en:
     gnis:import_uuid: Key:gnis:import uuid
     golf: Key:golf
     golf:course: Key:golf:course
+    golf:par: Key:golf:par
     golf_cart: Key:golf cart
     goods: Key:goods
     government: Key:government
     grades: Key:grades
+    graham: Key:graham
     grape_variety: Key:grape variety
     grassland: Key:grassland
     grate: Key:grate
     green_roof: Key:green roof
     gritting: Key:gritting
     group_only: Key:group only
+    gtfs:feed: Key:gtfs:feed
+    gtfs:name: Key:gtfs:name
+    gtfs:release_date: Key:gtfs:release date
+    gtfs:route_id: Key:gtfs:route id
+    gtfs:shape_id: Key:gtfs:shape id
     gtfs:stop_id: Key:gtfs:stop id
+    gtfs:trip_id: Key:gtfs:trip id
+    gtfs:trip_id:sample: Key:gtfs:trip id:sample
     guest_house: Key:guest house
     guide: Key:guide
     guide_type: Key:guide type
     guidepost: Key:guidepost
     guidepost:hiking: Key:guidepost:hiking
+    guidepost_shape: Key:guidepost shape
     gun_emplacement_type: Key:gun emplacement type
     gun_turret: Key:gun turret
     gvr:code: Key:gvr:code
@@ -6615,6 +6753,7 @@ en:
     highchair: Key:highchair
     highspeed: Key:highspeed
     highway: Key:highway
+    highway:CN: Key:highway:CN
     highway:category: Key:highway:category
     highway:category:pl: Key:highway:category:pl
     highway:class:pl: Key:highway:class:pl
@@ -6763,6 +6902,7 @@ en:
     lacounty:ain: Key:lacounty:ain
     lacounty:bld_id: Key:lacounty:bld id
     ladder: Key:ladder
+    lamp_flames: Key:lamp flames
     lamp_model: Key:lamp model
     lamp_mount: Key:lamp mount
     lamp_type: Key:lamp type
@@ -6770,6 +6910,7 @@ en:
     landfill:waste: Key:landfill:waste
     landform: Key:landform
     landmark: Key:landmark
+    landslide: Key:landslide
     landuse: Key:landuse
     lane_markings: Key:lane markings
     lanes: Key:lanes
@@ -6781,6 +6922,7 @@ en:
     lanes:psv:backward: Key:lanes:psv:backward
     lanes:psv:forward: Key:lanes:psv:forward
     language: Key:language
+    language:*: Key:language:*
     language:LL: Key:language:LL
     language:ar: Key:language:ar
     language:arc: Key:language:arc
@@ -6804,6 +6946,8 @@ en:
     language:syc: Key:language:syc
     language:ug: Key:language:ug
     language:ur: Key:language:ur
+    lat: Key:lat
+    latitude: Key:latitude
     lawyer: Key:lawyer
     layer: Key:layer
     lcn: Key:lcn
@@ -6816,6 +6960,7 @@ en:
     length: Key:length
     level: Key:level
     level:ref: Key:level:ref
+    levels: Key:levels
     lgbt: Key:lgbt
     lgbtq: Key:lgbtq
     lhv: Key:lhv
@@ -6826,6 +6971,7 @@ en:
     light_rail: Key:light rail
     lighting:perceived: Key:lighting:perceived
     line: Key:line
+    line_arrangement: Key:line arrangement
     line_attachement: Key:line attachement
     line_attachment: Key:line attachment
     line_management: Key:line management
@@ -6833,6 +6979,7 @@ en:
     lit: Key:lit
     lit:perceived: Key:lit:perceived
     lit_by_led: Key:lit by led
+    livestock: Key:livestock
     living_street: Key:living street
     loading_gauge: Key:loading gauge
     loc_name: Key:loc name
@@ -6854,6 +7001,7 @@ en:
     localwiki: Key:localwiki
     location: Key:location
     lock: Key:lock
+    lock:height: Key:lock:height
     lock_name: Key:lock name
     lock_ref: Key:lock ref
     lockable: Key:lockable
@@ -6861,7 +7009,9 @@ en:
     locked:conditional: Key:locked:conditional
     locker: Key:locker
     logainm:*: Key:logainm:*
+    logistics: Key:logistics
     lojic:bgnum: Key:lojic:bgnum
+    lon: Key:lon
     long_name: Key:long name
     long_name:ar: Key:long name:ar
     long_name:arc: Key:long name:arc
@@ -6876,6 +7026,7 @@ en:
     long_name:sr: Key:long name:sr
     long_name:syc: Key:long name:syc
     long_name:ur: Key:long name:ur
+    longitude: Key:longitude
     lottery: Key:lottery
     love_locks: Key:love locks
     lpn_ref: Key:lpn ref
@@ -6894,12 +7045,14 @@ en:
     managed: Key:managed
     manhole: Key:manhole
     manmade: Key:manmade
+    manual: Key:manual
     manufacturer: Key:manufacturer
     manufacturer:wikidata: Key:manufacturer:wikidata
     map_size: Key:map size
     map_type: Key:map type
     mapillary: Key:mapillary
     mapper: Key:mapper
+    marilyn: Key:marilyn
     maritime: Key:maritime
     marker: Key:marker
     mass_times: Key:mass times
@@ -6939,7 +7092,6 @@ en:
     maxspeed:night: Key:maxspeed:night
     maxspeed:practical: Key:maxspeed:practical
     maxspeed:psv:conditional: Key:maxspeed:psv:conditional
-    maxspeed:seasonal:winter: Key:maxspeed:seasonal:winter
     maxspeed:source: Key:maxspeed:source
     maxspeed:tilting: Key:maxspeed:tilting
     maxspeed:trailer: Key:maxspeed:trailer
@@ -6986,7 +7138,6 @@ en:
     min_distance: Key:min distance
     min_height: Key:min height
     min_level: Key:min level
-    minage: Key:minage
     mindistance: Key:mindistance
     mineshaft_type: Key:mineshaft type
     minibus: Key:minibus
@@ -7060,6 +7211,8 @@ en:
     mtb:scale:uphill: Key:mtb:scale:uphill
     mtb:type: Key:mtb:type
     mtb_scale: Key:mtb scale
+    munro: Key:munro
+    munro_number: Key:munro number
     museum: Key:museum
     museum:subject:wikidata: Key:museum:subject:wikidata
     museum_type: Key:museum type
@@ -7073,6 +7226,7 @@ en:
     name:af: Key:name:af
     name:ak: Key:name:ak
     name:aln: Key:name:aln
+    name:alq: Key:name:alq
     name:alt: Key:name:alt
     name:am: Key:name:am
     name:an: Key:name:an
@@ -7096,6 +7250,7 @@ en:
     name:bg: Key:name:bg
     name:bh: Key:name:bh
     name:bi: Key:name:bi
+    name:bjn: Key:name:bjn
     name:bm: Key:name:bm
     name:bn: Key:name:bn
     name:bn-Arab: Key:name:bn-Arab
@@ -7112,22 +7267,27 @@ en:
     name:ceb: Key:name:ceb
     name:ch: Key:name:ch
     name:chm: Key:name:chm
+    name:chp: Key:name:chp
     name:chr: Key:name:chr
     name:chy: Key:name:chy
     name:ckb: Key:name:ckb
+    name:clc: Key:name:clc
     name:co: Key:name:co
+    name:cr: Key:name:cr
     name:cs: Key:name:cs
     name:csb: Key:name:csb
     name:cu: Key:name:cu
     name:cv: Key:name:cv
     name:cy: Key:name:cy
     name:da: Key:name:da
+    name:dak: Key:name:dak
     name:de: Key:name:de
     name:dsb: Key:name:dsb
     name:dv: Key:name:dv
     name:dyu: Key:name:dyu
     name:dz: Key:name:dz
     name:ee: Key:name:ee
+    name:egl: Key:name:egl
     name:el: Key:name:el
     name:en: Key:name:en
     name:eo: Key:name:eo
@@ -7146,6 +7306,7 @@ en:
     name:fur: Key:name:fur
     name:fy: Key:name:fy
     name:ga: Key:name:ga
+    name:gag: Key:name:gag
     name:gcf: Key:name:gcf
     name:gd: Key:name:gd
     name:gem: Key:name:gem
@@ -7234,6 +7395,7 @@ en:
     name:lez: Key:name:lez
     name:lg: Key:name:lg
     name:li: Key:name:li
+    name:lld: Key:name:lld
     name:lmo: Key:name:lmo
     name:ln: Key:name:ln
     name:lo: Key:name:lo
@@ -7242,12 +7404,15 @@ en:
     name:lv: Key:name:lv
     name:mdf: Key:name:mdf
     name:mg: Key:name:mg
+    name:mhn: Key:name:mhn
     name:mhr: Key:name:mhr
     name:mi: Key:name:mi
+    name:mic: Key:name:mic
     name:min: Key:name:min
     name:mk: Key:name:mk
     name:ml: Key:name:ml
     name:mn: Key:name:mn
+    name:moe: Key:name:moe
     name:mos: Key:name:mos
     name:mr: Key:name:mr
     name:ms: Key:name:ms
@@ -7268,9 +7433,11 @@ en:
     name:nl: Key:name:nl
     name:nn: Key:name:nn
     name:no: Key:name:no
+    name:non: Key:name:non
     name:nov: Key:name:nov
     name:nso: Key:name:nso
     name:oc: Key:name:oc
+    name:oj: Key:name:oj
     name:om: Key:name:om
     name:or: Key:name:or
     name:ota: Key:name:ota
@@ -7287,6 +7454,7 @@ en:
     name:pih: Key:name:pih
     name:pjt: Key:name:pjt
     name:pl: Key:name:pl
+    name:pms: Key:name:pms
     name:pnb: Key:name:pnb
     name:pnt: Key:name:pnt
     name:prefix: Key:name:prefix
@@ -7307,6 +7475,7 @@ en:
     name:rm: Key:name:rm
     name:rn: Key:name:rn
     name:ro: Key:name:ro
+    name:rrm: Key:name:rrm
     name:ru: Key:name:ru
     name:ru:word_stress: Key:name:ru:word stress
     name:rue: Key:name:rue
@@ -7328,9 +7497,11 @@ en:
     name:sl: Key:name:sl
     name:sm: Key:name:sm
     name:sma: Key:name:sma
+    name:sms: Key:name:sms
     name:sn: Key:name:sn
     name:so: Key:name:so
     name:sq: Key:name:sq
+    name:squ: Key:name:squ
     name:sr: Key:name:sr
     name:sr-Latn: Key:name:sr-Latn
     name:ss: Key:name:ss
@@ -7365,6 +7536,7 @@ en:
     name:uk: Key:name:uk
     name:ur: Key:name:ur
     name:uz: Key:name:uz
+    name:vep: Key:name:vep
     name:vi: Key:name:vi
     name:vi-Hani: Key:name:vi-Hani
     name:vls: Key:name:vls
@@ -7420,7 +7592,6 @@ en:
     nat_ref:ar: Key:nat ref:ar
     nat_ref:fr: Key:nat ref:fr
     natural: Key:natural
-    naturbase: Key:naturbase
     naturbase:iid: Key:naturbase:iid
     navibot:categorize: Key:navibot:categorize
     navibot:connect: Key:navibot:connect
@@ -7441,13 +7612,15 @@ en:
     network:wikidata: Key:network:wikidata
     network:wikipedia: Key:network:wikipedia
     nev: Key:nev
+    new_donald: Key:new donald
     newspaper_tubes: Key:newspaper tubes
     next_check_date: Key:next check date
     nhd:com_id: Key:nhd:com id
     nhd:fcode: Key:nhd:fcode
     nhd:ftype: Key:nhd:ftype
+    nhd:gnis_id: Key:nhd:gnis id
     nhd:reach_code: Key:nhd:reach code
-    no: Key:no
+    nickname: Key:nickname
     no-barnehage:nsrid: Key:no-barnehage:nsrid
     'no:': 'Key:no:'
     no:*: Key:no:*
@@ -7462,7 +7635,6 @@ en:
     not:*: Key:not:*
     not:brand:wikidata: Key:not:brand:wikidata
     not:name: Key:not:name
-    not:nccod: Key:not:nccod
     not:wikidata: Key:not:wikidata
     not_accepted_import:leisure: Key:not accepted import:leisure
     not_served_by: Key:not served by
@@ -7477,8 +7649,8 @@ en:
     note:name: Key:note:name
     note:pilotage: Key:note:pilotage
     note:project_page: Key:note:project page
-    notes: Key:notes
     nuclear_explosion:country: Key:nuclear explosion:country
+    nuclear_explosion:crater_diameter: Key:nuclear explosion:crater diameter
     nuclear_explosion:hole: Key:nuclear explosion:hole
     nudism: Key:nudism
     nudism:conditional: Key:nudism:conditional
@@ -7547,6 +7719,7 @@ en:
     old_name:fr: Key:old name:fr
     old_name:gr: Key:old name:gr
     old_name:grc: Key:old name:grc
+    old_name:it: Key:old name:it
     old_name:ko: Key:old name:ko
     old_name:ks: Key:old name:ks
     old_name:ku-Arab: Key:old name:ku-Arab
@@ -7611,6 +7784,7 @@ en:
     operator:en: Key:operator:en
     operator:es: Key:operator:es
     operator:fr: Key:operator:fr
+    operator:guid: Key:operator:guid
     operator:phone: Key:operator:phone
     operator:ru: Key:operator:ru
     operator:short: Key:operator:short
@@ -7656,6 +7830,7 @@ en:
     owner: Key:owner
     owner:wikidata: Key:owner:wikidata
     ownership: Key:ownership
+    panoramax: Key:panoramax
     par: Key:par
     parcel_locker:type: Key:parcel locker:type
     parcel_mail_in: Key:parcel mail in
@@ -7684,7 +7859,6 @@ en:
       output
     passenger_lines: Key:passenger lines
     passing_places: Key:passing places
-    paved: Key:paved
     paved:date: Key:paved:date
     paving_stones:colour: Key:paving stones:colour
     payment: Key:payment
@@ -7699,8 +7873,10 @@ en:
     payment:blik: Key:payment:blik
     payment:cards: Key:payment:cards
     payment:cash: Key:payment:cash
+    payment:cash:machine: Key:payment:cash:machine
     payment:cb: Key:payment:cb
     payment:cheque: Key:payment:cheque
+    payment:china_t-union: Key:payment:china t-union
     payment:clipper: Key:payment:clipper
     payment:coins: Key:payment:coins
     payment:coins:denominations: Key:payment:coins:denominations
@@ -7762,6 +7938,7 @@ en:
     payment:wire_transfer: Key:payment:wire transfer
     pcode: Key:pcode
     pedagogy: Key:pedagogy
+    period: Key:period
     permanent_camping: Key:permanent camping
     person:date_of_birth: Key:person:date of birth
     person:date_of_death: Key:person:date of death
@@ -7769,6 +7946,7 @@ en:
     pets: Key:pets
     phoenixbikeguide: Key:phoenixbikeguide
     phone: Key:phone
+    phone:NL: Key:phone:NL
     phone:mnemonic: Key:phone:mnemonic
     photograph: Key:photograph
     photography: Key:photography
@@ -7796,14 +7974,17 @@ en:
     placement:forward: Key:placement:forward
     placement:start: Key:placement:start
     planned: Key:planned
+    planned:*: Key:planned:*
     plant: Key:plant
     plant:method: Key:plant:method
     plant:output: Key:plant:output
+    plant:output:*: Key:plant:output:*
     plant:output:biogas: Key:plant:output:biogas
     plant:output:cold_air: Key:plant:output:cold air
     plant:output:cold_water: Key:plant:output:cold water
     plant:output:compressed_air: Key:plant:output:compressed air
     plant:output:electricity: Key:plant:output:electricity
+    plant:output:gas: Key:plant:output:gas
     plant:output:heat: Key:plant:output:heat
     plant:output:hot_air: Key:plant:output:hot air
     plant:output:hot_water: Key:plant:output:hot water
@@ -7813,6 +7994,14 @@ en:
     plant:storage: Key:plant:storage
     plant:type: Key:plant:type
     plant_community: Key:plant community
+    platform:width: Key:platform:width
+    platform_lift: Key:platform lift
+    platform_lift:maxlength:physical: Key:platform lift:maxlength:physical
+    platform_lift:maxweight: Key:platform lift:maxweight
+    platform_lift:maxwidth:physical: Key:platform lift:maxwidth:physical
+    platform_lift:portable: Key:platform lift:portable
+    platform_lift:seat: Key:platform lift:seat
+    platform_lift:supervised: Key:platform lift:supervised
     platforms: Key:platforms
     playability: Key:playability
     playground: Key:playground
@@ -7822,6 +8011,7 @@ en:
     pmfsefin:idedif: Key:pmfsefin:idedif
     point: Key:point
     pole: Key:pole
+    poles: Key:poles
     police: Key:police
     political_division: Key:political division
     political_party: Key:political party
@@ -7856,6 +8046,7 @@ en:
     produce: Key:produce
     product: Key:product
     project:eurosha_2012: Key:project:eurosha 2012
+    prominence: Key:prominence
     proposed: Key:proposed
     proposed:*: Key:proposed:*
     proposed:highway: Key:proposed:highway
@@ -7890,11 +8081,13 @@ en:
     radio_transponder:signal_frequency: Key:radio transponder:signal frequency
     railing: Key:railing
     railway: Key:railway
+    railway:asfa: Key:railway:asfa
     railway:atb: Key:railway:atb
     railway:etcs: Key:railway:etcs
     railway:kvb: Key:railway:kvb
     railway:lzb: Key:railway:lzb
     railway:position: Key:railway:position
+    railway:position:exact: Key:railway:position:exact
     railway:preserved: Key:railway:preserved
     railway:ref: Key:railway:ref
     railway:scmt: Key:railway:scmt
@@ -7911,6 +8104,11 @@ en:
     ramp: Key:ramp
     ramp:bicycle: Key:ramp:bicycle
     ramp:luggage: Key:ramp:luggage
+    ramp:portable: Key:ramp:portable
+    ramp:portable:length: Key:ramp:portable:length
+    ramp:portable:maxweight: Key:ramp:portable:maxweight
+    ramp:portable:maxwidth:physical: Key:ramp:portable:maxwidth:physical
+    ramp:portable:supervised: Key:ramp:portable:supervised
     ramp:stroller: Key:ramp:stroller
     ramp:wheelchair: Key:ramp:wheelchair
     ramsar: Key:ramsar
@@ -7929,6 +8127,7 @@ en:
     recreation_ground: Key:recreation ground
     recycling:PET: Key:recycling:PET
     recycling:fire_extinguishers: Key:recycling:fire extinguishers
+    recycling:green_waste: Key:recycling:green waste
     recycling:pet_drink_bottles: Key:recycling:pet drink bottles
     recycling:plastic_bottle_caps: Key:recycling:plastic bottle caps
     recycling:plastic_bottle_tops: Key:recycling:plastic bottle tops
@@ -7939,8 +8138,6 @@ en:
     red_turn:right:bicycle: Key:red turn:right:bicycle
     red_turn:straight: Key:red turn:straight
     red_turn:straight:bicycle: Key:red turn:straight:bicycle
-    red_turn:straight:left: Key:red turn:straight:left
-    red_turn:straight:right: Key:red turn:straight:right
     rednap:latitud: Key:rednap:latitud
     reef: Key:reef
     ref: Key:ref
@@ -7963,6 +8160,7 @@ en:
     ref:FR:CEF: Key:ref:FR:CEF
     ref:FR:CRTA: Key:ref:FR:CRTA
     ref:FR:DREAL: Key:ref:FR:DREAL
+    ref:FR:Enedis: Key:ref:FR:Enedis
     ref:FR:FANTOIR:left: Key:ref:FR:FANTOIR:left
     ref:FR:FANTOIR:right: Key:ref:FR:FANTOIR:right
     ref:FR:FINESS: Key:ref:FR:FINESS
@@ -7989,6 +8187,7 @@ en:
     ref:FR:gdo: Key:ref:FR:gdo
     ref:FR:museofile: Key:ref:FR:museofile
     ref:FR:prix-carburants: Key:ref:FR:prix-carburants
+    ref:GB:imher: Key:ref:GB:imher
     ref:GB:mpan: Key:ref:GB:mpan
     ref:GB:nhle: Key:ref:GB:nhle
     ref:GB:nhs_ods: Key:ref:GB:nhs ods
@@ -7997,6 +8196,7 @@ en:
     ref:GB:wpd_site: Key:ref:GB:wpd site
     ref:HMDB: Key:ref:HMDB
     ref:HU:edid: Key:ref:HU:edid
+    ref:HU:om: Key:ref:HU:om
     ref:HU:vatin: Key:ref:HU:vatin
     ref:IE:census2015: Key:ref:IE:census2015
     ref:IE:lenehan: Key:ref:IE:lenehan
@@ -8035,11 +8235,17 @@ en:
     'ref:US-TX:': 'Key:ref:US-TX:'
     ref:US-TX:*: Key:ref:US-TX:*
     ref:US-TX:thc: Key:ref:US-TX:thc
+    ref:US:CIF: Key:ref:US:CIF
     ref:US:EIA: Key:ref:US:EIA
     ref:US:EPA: Key:ref:US:EPA
     ref:US:MA:SARIS: Key:ref:US:MA:SARIS
+    ref:US:MSHA: Key:ref:US:MSHA
+    ref:US:NID: Key:ref:US:NID
+    ref:US:UT:DEQ:DERRID: Key:ref:US:UT:DEQ:DERRID
     ref:UrbIS: Key:ref:UrbIS
+    ref:VE:UBIGEO: Key:ref:VE:UBIGEO
     ref:WDPA: Key:ref:WDPA
+    ref:alp: Key:ref:alp
     ref:ar: Key:ref:ar
     ref:arc: Key:ref:arc
     ref:at:bda: Key:ref:at:bda
@@ -8149,6 +8355,7 @@ en:
     ref:temples.ru: Key:ref:temples.ru
     ref:thc: Key:ref:thc
     ref:udir_nsr: Key:ref:udir nsr
+    ref:us:nid: Key:ref:us:nid
     ref:us:ny:swis: Key:ref:us:ny:swis
     ref:vatin: Key:ref:vatin
     ref:vatin:hu: Key:ref:vatin:hu
@@ -8203,6 +8410,7 @@ en:
     reusable_packaging:accept: Key:reusable packaging:accept
     reusable_packaging:offer: Key:reusable packaging:offer
     revert:id: Key:revert:id
+    review: Key:review
     review_requested: Key:review requested
     rfr: Key:rfr
     rhn_ref: Key:rhn ref
@@ -8248,9 +8456,11 @@ en:
     rpn_ref: Key:rpn ref
     rtc_rate: Key:rtc rate
     rtsa_scale: Key:rtsa scale
+    rubber_tires: Key:rubber tires
     ruined: Key:ruined
     'ruined:': 'Key:ruined:'
     ruined:*: Key:ruined:*
+    ruined:building: Key:ruined:building
     ruins: Key:ruins
     'ruins:': 'Key:ruins:'
     ruins:*: Key:ruins:*
@@ -8287,6 +8497,7 @@ en:
     school:trust:name: Key:school:trust:name
     school:trust:type: Key:school:trust:type
     school:type: Key:school:type
+    school_bus: Key:school bus
     scout: Key:scout
     screen: Key:screen
     scuba_diving:courses: Key:scuba diving:courses
@@ -8490,6 +8701,7 @@ en:
     sells:tobacco: Key:sells:tobacco
     service: Key:service
     service:bicycle: Key:service:bicycle
+    'service:bicycle:': 'Key:service:bicycle:'
     service:bicycle:*: Key:service:bicycle:*
     service:bicycle:Bicycle_Sales_and_Service: Key:service:bicycle:Bicycle Sales and
       Service
@@ -8501,10 +8713,12 @@ en:
     service:bicycle:rental: Key:service:bicycle:rental
     service:bicycle:repair: Key:service:bicycle:repair
     service:bicycle:retail: Key:service:bicycle:retail
+    service:bicycle:sales: Key:service:bicycle:sales
     service:bicycle:second_hand: Key:service:bicycle:second hand
     service:bicycle:spare_parts: Key:service:bicycle:spare parts
     service:electricity: Key:service:electricity
     service:vehicle: Key:service:vehicle
+    'service:vehicle:': 'Key:service:vehicle:'
     service:vehicle:*: Key:service:vehicle:*
     service:vehicle:Car_sales: Key:service:vehicle:Car sales
     service:vehicle:Sale: Key:service:vehicle:Sale
@@ -8564,10 +8778,12 @@ en:
     service:vehicle:windshields: Key:service:vehicle:windshields
     service_branch: Key:service branch
     service_times: Key:service times
+    service_times:wheelchair: Key:service times:wheelchair
     settlement:origin: Key:settlement:origin
     settlement_type: Key:settlement type
     seveso: Key:seveso
     shade: Key:shade
+    shape: Key:shape
     share_taxi: Key:share taxi
     shelter: Key:shelter
     shelter_type: Key:shelter type
@@ -8617,7 +8833,6 @@ en:
     siren:purpose: Key:siren:purpose
     siren:type: Key:siren:type
     site: Key:site
-    site_type: Key:site type
     size: Key:size
     ski: Key:ski
     sl_realtime: Key:sl realtime
@@ -8637,8 +8852,13 @@ en:
     social_facility: Key:social facility
     social_facility:for: Key:social facility:for
     socket: Key:socket
+    socket:*: Key:socket:*
     socket:chademo: Key:socket:chademo
     socket:schuko: Key:socket:schuko
+    socket:sev1011_t13: Key:socket:sev1011 t13
+    socket:sev1011_t15: Key:socket:sev1011 t15
+    socket:sev1011_t23: Key:socket:sev1011 t23
+    socket:sev1011_t25: Key:socket:sev1011 t25
     socket:type1: Key:socket:type1
     socket:type2: Key:socket:type2
     socket:type2:output: Key:socket:type2:output
@@ -8760,6 +8980,7 @@ en:
     source_ref:url: Key:source ref:url
     source_type_imagery: Key:source type imagery
     spacing: Key:spacing
+    specialized_education: Key:specialized education
     species: Key:species
     species:FR: Key:species:FR
     species:ar: Key:species:ar
@@ -8796,7 +9017,6 @@ en:
     step:contrast: Key:step:contrast
     step_count: Key:step count
     steps: Key:steps
-    stile: Key:stile
     stilts: Key:stilts
     stone_type: Key:stone type
     stop: Key:stop
@@ -8828,6 +9048,7 @@ en:
     surface:grade: Key:surface:grade
     surface:middle: Key:surface:middle
     surface:note: Key:surface:note
+    surface_survey: Key:surface survey
     surveillance: Key:surveillance
     surveillance:type: Key:surveillance:type
     surveillance:zone: Key:surveillance:zone
@@ -8983,6 +9204,9 @@ en:
     trolley:deposit: Key:trolley:deposit
     trolley_wire: Key:trolley wire
     trolleybus: Key:trolleybus
+    trolleybus_class:length: Key:trolleybus class:length
+    truck:parts: Key:truck:parts
+    truck:sales: Key:truck:sales
     truck_wash: Key:truck wash
     ts_calle: Key:ts calle
     ts_codigo: Key:ts codigo
@@ -9023,8 +9247,10 @@ en:
     unit: Key:unit
     unsigned: Key:unsigned
     unsigned_ref: Key:unsigned ref
+    urban: Key:urban
     url: Key:url
     url:bathing_water: Key:url:bathing water
+    url:imher: Key:url:imher
     url:registered_building: Key:url:registered building
     url:restrictions: Key:url:restrictions
     us:ny:swis: Key:us:ny:swis
@@ -9035,7 +9261,6 @@ en:
     vaccination: Key:vaccination
     vacuum_cleaner: Key:vacuum cleaner
     validate:ants:yellow: Key:validate:ants:yellow
-    validate:no_name: Key:validate:no name
     valley: Key:valley
     valve: Key:valve
     vegan: Key:vegan
@@ -9046,6 +9271,7 @@ en:
     vehicle:wikipedia: Key:vehicle:wikipedia
     vending: Key:vending
     verge: Key:verge
+    vessel: Key:vessel
     vhf: Key:vhf
     via: Key:via
     via_ferrata_scale: Key:via ferrata scale
@@ -9062,6 +9288,8 @@ en:
     walkup_window: Key:walkup window
     wall: Key:wall
     wall:material: Key:wall:material
+    ward: Key:ward
+    warehouse: Key:warehouse
     'was:': 'Key:was:'
     was:*: Key:was:*
     was:amenity: Key:was:amenity
@@ -9078,6 +9306,7 @@ en:
     waterway: Key:waterway
     weather_protection: Key:weather protection
     website: Key:website
+    'website:': 'Key:website:'
     website:*: Key:website:*
     website:booking: Key:website:booking
     website:map: Key:website:map
@@ -9092,6 +9321,7 @@ en:
     wholesale: Key:wholesale
     width: Key:width
     width:carriageway: Key:width:carriageway
+    width:effective: Key:width:effective
     wifi: Key:wifi
     wiki:symbol: Key:wiki:symbol
     wikidata: Key:wikidata
@@ -9175,7 +9405,6 @@ en:
     abandoned:railway=station: Tag:abandoned:railway=station
     abandoned=yes: Tag:abandoned=yes
     abutters=retail: Tag:abutters=retail
-    access=adherents: Tag:access=adherents
     access=agricultural: Tag:access=agricultural
     access=bdouble: Tag:access=bdouble
     access=customers: Tag:access=customers
@@ -9323,6 +9552,7 @@ en:
     amenity=bicycle_rental: Tag:amenity=bicycle rental
     amenity=bicycle_repair_station: Tag:amenity=bicycle repair station
     amenity=bicycle_trailer_sharing: Tag:amenity=bicycle trailer sharing
+    amenity=bicycle_wash: Tag:amenity=bicycle wash
     amenity=biergarten: Tag:amenity=biergarten
     amenity=bike_parking: Tag:amenity=bike parking
     amenity=binoculars: Tag:amenity=binoculars
@@ -9448,6 +9678,7 @@ en:
     amenity=jobcentre: Tag:amenity=jobcentre
     amenity=juice_bar: Tag:amenity=juice bar
     amenity=karaoke_box: Tag:amenity=karaoke box
+    amenity=kick-scooter_parking: Tag:amenity=kick-scooter parking
     amenity=kick-scooter_rental: Tag:amenity=kick-scooter rental
     amenity=kindergarten: Tag:amenity=kindergarten
     amenity=kiosk: Tag:amenity=kiosk
@@ -9455,6 +9686,7 @@ en:
     amenity=kneipp_water_cure: Tag:amenity=kneipp water cure
     amenity=language_school: Tag:amenity=language school
     amenity=lavoir: Tag:amenity=lavoir
+    amenity=left_luggage: Tag:amenity=left luggage
     amenity=letter_box: Tag:amenity=letter box
     amenity=library: Tag:amenity=library
     amenity=library_dropoff: Tag:amenity=library dropoff
@@ -9593,6 +9825,7 @@ en:
     amenity=veterinary: Tag:amenity=veterinary
     amenity=veterinary_pharmacy: Tag:amenity=veterinary pharmacy
     amenity=vivarium: Tag:amenity=vivarium
+    amenity=warehouse: Tag:amenity=warehouse
     amenity=washing_machine: Tag:amenity=washing machine
     amenity=waste_basket: Tag:amenity=waste basket
     amenity=waste_disposal: Tag:amenity=waste disposal
@@ -9615,7 +9848,9 @@ en:
     animated=trivision_blades: Tag:animated=trivision blades
     animated=winding_posters: Tag:animated=winding posters
     anthropogenic=yes: Tag:anthropogenic=yes
+    aquaculture=fish: Tag:aquaculture=fish
     aquaculture=seaweed: Tag:aquaculture=seaweed
+    archaeological_site=amphitheatre: Tag:archaeological site=amphitheatre
     archaeological_site=baths: Tag:archaeological site=baths
     archaeological_site=city: Tag:archaeological site=city
     archaeological_site=cliff_dwelling: Tag:archaeological site=cliff dwelling
@@ -9721,6 +9956,7 @@ en:
     barrier=czech_hedgehog: Tag:barrier=czech hedgehog
     barrier=debris: Tag:barrier=debris
     barrier=ditch: Tag:barrier=ditch
+    barrier=dug-in_tyres: Tag:barrier=dug-in tyres
     barrier=embankment: Tag:barrier=embankment
     barrier=entrance: Tag:barrier=entrance
     barrier=fence: Tag:barrier=fence
@@ -9765,6 +10001,8 @@ en:
     barrier=wall: Tag:barrier=wall
     barrier=wedge: Tag:barrier=wedge
     barrier=wicket_gate: Tag:barrier=wicket gate
+    barrier=wire_fence: Tag:barrier=wire fence
+    barrier=wood_fence: Tag:barrier=wood fence
     barrier=yes: Tag:barrier=yes
     baseball=softball: Tag:baseball=softball
     basin=aeration: Tag:basin=aeration
@@ -9775,6 +10013,7 @@ en:
     basin=infiltration: Tag:basin=infiltration
     basin=retention: Tag:basin=retention
     basin=settling: Tag:basin=settling
+    basin=stormwater: Tag:basin=stormwater
     basin=water_regeneration: Tag:basin=water regeneration
     bath:type=foot_bath: Tag:bath:type=foot bath
     bath:type=hammam: Tag:bath:type=hammam
@@ -9797,11 +10036,11 @@ en:
     beacon:type=VOR: Tag:beacon:type=VOR
     beacon:type=VORTAC: Tag:beacon:type=VORTAC
     beauty=spa: Tag:beauty=spa
+    bench=wave_lounger: Tag:bench=wave lounger
     bicycle:backward=optional_sidepath: Tag:bicycle:backward=optional sidepath
     bicycle:backward=use_sidepath: Tag:bicycle:backward=use sidepath
     bicycle:forward=optional_sidepath: Tag:bicycle:forward=optional sidepath
     bicycle:forward=use_sidepath: Tag:bicycle:forward=use sidepath
-    bicycle:type=logistics: Tag:bicycle:type=logistics
     bicycle=designated: Tag:bicycle=designated
     bicycle=dismount: Tag:bicycle=dismount
     bicycle=no: Tag:bicycle=no
@@ -9910,13 +10149,16 @@ en:
     bridge=cantilever: Tag:bridge=cantilever
     bridge=covered: Tag:bridge=covered
     bridge=drawbridge: Tag:bridge=drawbridge
+    bridge=log_bridge: Tag:bridge=log bridge
     bridge=movable: Tag:bridge=movable
     bridge=simple_brunnel: Tag:bridge=simple brunnel
     bridge=trestle: Tag:bridge=trestle
     bridge=viaduct: Tag:bridge=viaduct
     building:part=balcony: Tag:building:part=balcony
+    building:part=corridor: Tag:building:part=corridor
     building:part=porch: Tag:building:part=porch
     building:use=stable: Tag:building:use=stable
+    building:use=warehouse: Tag:building:use=warehouse
     building=*: Tag:building=*
     building=Y: Tag:building=Y
     building=abandoned: Tag:building=abandoned
@@ -9951,7 +10193,9 @@ en:
     building=construction: Tag:building=construction
     building=container: Tag:building=container
     building=convent: Tag:building=convent
+    building=corridor: Tag:building=corridor
     building=cowshed: Tag:building=cowshed
+    building=damaged: Tag:building=damaged
     building=data_center: Tag:building=data center
     building=data_centre: Tag:building=data centre
     building=demountable: Tag:building=demountable
@@ -9967,6 +10211,7 @@ en:
     building=farm_auxiliary: Tag:building=farm auxiliary
     building=fire_lookout: Tag:building=fire lookout
     building=fire_station: Tag:building=fire station
+    building=fixme: Tag:building=fixme
     building=font: Tag:building=font
     building=fort: Tag:building=fort
     building=funeral_hall: Tag:building=funeral hall
@@ -10003,6 +10248,7 @@ en:
     building=mosque: Tag:building=mosque
     building=museum: Tag:building=museum
     building=office: Tag:building=office
+    building=other: Tag:building=other
     building=outbuilding: Tag:building=outbuilding
     building=pagoda: Tag:building=pagoda
     building=palace: Tag:building=palace
@@ -10051,6 +10297,7 @@ en:
     building=tent: Tag:building=tent
     building=terrace: Tag:building=terrace
     building=toilets: Tag:building=toilets
+    building=tower: Tag:building=tower
     building=townhall: Tag:building=townhall
     building=train_station: Tag:building=train station
     building=transformer_tower: Tag:building=transformer tower
@@ -10063,11 +10310,13 @@ en:
     building=unidentified: Tag:building=unidentified
     building=university: Tag:building=university
     building=unknown: Tag:building=unknown
+    building=venta: Tag:building=venta
     building=warehouse: Tag:building=warehouse
     building=water_tower: Tag:building=water tower
     building=wayside_shrine: Tag:building=wayside shrine
     building=windmill: Tag:building=windmill
     building=yes: Tag:building=yes
+    bunker_type=bomb_shelter: Tag:bunker type=bomb shelter
     bunker_type=gun_emplacement: Tag:bunker type=gun emplacement
     bunker_type=hardened_aircraft_shelter: Tag:bunker type=hardened aircraft shelter
     bunker_type=munitions: Tag:bunker type=munitions
@@ -10104,6 +10353,7 @@ en:
     camra=yes: Tag:camra=yes
     canal=qanat: Tag:canal=qanat
     canoe=portage: Tag:canoe=portage
+    canoe=put_in: Tag:canoe=put in
     capital=4: Tag:capital=4
     capital=5: Tag:capital=5
     capital=6: Tag:capital=6
@@ -10130,6 +10380,7 @@ en:
     cemetery=grave: Tag:cemetery=grave
     cemetery=sector: Tag:cemetery=sector
     cemetery=war_cemetery: Tag:cemetery=war cemetery
+    cemetery=wood: Tag:cemetery=wood
     center_turn_lane=yes: Tag:center turn lane=yes
     china_class=cun: Tag:china class=cun
     clothes=fashion: Tag:clothes=fashion
@@ -10149,6 +10400,7 @@ en:
     club=amateur_radio: Tag:club=amateur radio
     club=art: Tag:club=art
     club=automobile: Tag:club=automobile
+    club=baduk: Tag:club=baduk
     club=bicycle: Tag:club=bicycle
     club=cadet: Tag:club=cadet
     club=card_games: Tag:club=card games
@@ -10178,6 +10430,7 @@ en:
     coastline:survey_quality=inadequate: Tag:coastline:survey quality=inadequate
     coastline=bogus: Tag:coastline=bogus
     collection_times:signed=no: Tag:collection times:signed=no
+    communication:radio=fm: Tag:communication:radio=fm
     communication:television=dvb-t: Tag:communication:television=dvb-t
     communication:television=dvb-t2: Tag:communication:television=dvb-t2
     communication=line: Tag:communication=line
@@ -10245,6 +10498,7 @@ en:
     cooling:method=air_cooling: Tag:cooling:method=air cooling
     cooling:method=dry_cooling: Tag:cooling:method=dry cooling
     cooling:method=mechanical_draft: Tag:cooling:method=mechanical draft
+    cooperative=agricultural: Tag:cooperative=agricultural
     covered=no: Tag:covered=no
     covered=yes: Tag:covered=yes
     craft=agricultural_engines: Tag:craft=agricultural engines
@@ -10259,6 +10513,7 @@ en:
     craft=brewery: Tag:craft=brewery
     craft=builder: Tag:craft=builder
     craft=cabinet_maker: Tag:craft=cabinet maker
+    craft=candlemaker: Tag:craft=candlemaker
     craft=car_painter: Tag:craft=car painter
     craft=car_repair: Tag:craft=car repair
     craft=carpenter: Tag:craft=carpenter
@@ -10311,6 +10566,7 @@ en:
     craft=paperhanger: Tag:craft=paperhanger
     craft=parquet_layer: Tag:craft=parquet layer
     craft=paver: Tag:craft=paver
+    craft=pest_control: Tag:craft=pest control
     craft=photographer: Tag:craft=photographer
     craft=photographic_laboratory: Tag:craft=photographic laboratory
     craft=piano_tuner: Tag:craft=piano tuner
@@ -10336,6 +10592,7 @@ en:
     craft=sun_protection: Tag:craft=sun protection
     craft=sweep: Tag:craft=sweep
     craft=tailor: Tag:craft=tailor
+    craft=tatami: Tag:craft=tatami
     craft=tiler: Tag:craft=tiler
     craft=tinsmith: Tag:craft=tinsmith
     craft=toolmaker: Tag:craft=toolmaker
@@ -10380,6 +10637,9 @@ en:
     crop=sunflower: Tag:crop=sunflower
     crop=tea: Tag:crop=tea
     crop=wheat: Tag:crop=wheat
+    crossing:whistle=optional: Tag:crossing:whistle=optional
+    crossing:whistle=wayside: Tag:crossing:whistle=wayside
+    crossing:whistle=yes: Tag:crossing:whistle=yes
     crossing=informal: Tag:crossing=informal
     crossing=marked: Tag:crossing=marked
     crossing=no: Tag:crossing=no
@@ -10391,6 +10651,7 @@ en:
     crossing_ref=delineated: Tag:crossing ref=delineated
     crossing_ref=zebra: Tag:crossing ref=zebra
     cuisine=american: Tag:cuisine=american
+    cuisine=arepa: Tag:cuisine=arepa
     cuisine=asian: Tag:cuisine=asian
     cuisine=açaí: Tag:cuisine=açaí
     cuisine=bagel: Tag:cuisine=bagel
@@ -10424,6 +10685,7 @@ en:
     cuisine=gyros: Tag:cuisine=gyros
     cuisine=hot_dog: Tag:cuisine=hot dog
     cuisine=hot_pot: Tag:cuisine=hot pot
+    cuisine=hotdog: Tag:cuisine=hotdog
     cuisine=hotpot: Tag:cuisine=hotpot
     cuisine=ice_cream: Tag:cuisine=ice cream
     cuisine=indian: Tag:cuisine=indian
@@ -10444,13 +10706,16 @@ en:
     cuisine=ramen: Tag:cuisine=ramen
     cuisine=regional: Tag:cuisine=regional
     cuisine=sandwich: Tag:cuisine=sandwich
+    cuisine=sausage: Tag:cuisine=sausage
     cuisine=seafood: Tag:cuisine=seafood
     cuisine=soup: Tag:cuisine=soup
     cuisine=spanish: Tag:cuisine=spanish
+    cuisine=steak: Tag:cuisine=steak
     cuisine=steak_house: Tag:cuisine=steak house
     cuisine=strudel: Tag:cuisine=strudel
     cuisine=sushi: Tag:cuisine=sushi
     cuisine=tapas: Tag:cuisine=tapas
+    cuisine=tea: Tag:cuisine=tea
     cuisine=tea_house: Tag:cuisine=tea house
     cuisine=tea_shop: Tag:cuisine=tea shop
     cuisine=teahouse: Tag:cuisine=teahouse
@@ -10460,7 +10725,9 @@ en:
     cuisine=vietnamese: Tag:cuisine=vietnamese
     cuisine=waffle: Tag:cuisine=waffle
     cuisine=wings: Tag:cuisine=wings
+    culvert=box: Tag:culvert=box
     culvert=inverted_siphon: Tag:culvert=inverted siphon
+    culvert=pipe: Tag:culvert=pipe
     curve=hairpin: Tag:curve=hairpin
     curve=loop: Tag:curve=loop
     curves=extended: Tag:curves=extended
@@ -10533,6 +10800,7 @@ en:
     delivery=shipment: Tag:delivery=shipment
     demolished=yes: Tag:demolished=yes
     dennert_fir_tree=yes: Tag:dennert fir tree=yes
+    denomination=catholic: Tag:denomination=catholic
     denomination=iglesia_filipina_independiente: Tag:denomination=iglesia filipina
       independiente
     denomination=jodo_shinshu: Tag:denomination=jodo shinshu
@@ -10550,6 +10818,7 @@ en:
     denotation=landmark: Tag:denotation=landmark
     denotation=natural_monument: Tag:denotation=natural monument
     denotation=urban: Tag:denotation=urban
+    denotation=windbreak: Tag:denotation=windbreak
     designation=barangay: Tag:designation=barangay
     designation=byway_open_to_all_traffic: Tag:designation=byway open to all traffic
     designation=civil_parish: Tag:designation=civil parish
@@ -10559,6 +10828,7 @@ en:
     designation=public_footpath: Tag:designation=public footpath
     designation=quiet_lane: Tag:designation=quiet lane
     designation=restricted_byway: Tag:designation=restricted byway
+    designation=shared_path: Tag:designation=shared path
     destroyed=yes: Tag:destroyed=yes
     diet:kosher=only: Tag:diet:kosher=only
     diet:kosher=yes: Tag:diet:kosher=yes
@@ -10589,15 +10859,16 @@ en:
     dog=designated: Tag:dog=designated
     dog=leashed: Tag:dog=leashed
     dog=no: Tag:dog=no
+    dog=outside: Tag:dog=outside
     dog=unleashed: Tag:dog=unleashed
     dog=yes: Tag:dog=yes
+    drink=beer: Tag:drink=beer
     driveway=pipestem: Tag:driveway=pipestem
     dual_carriageway=no: Tag:dual carriageway=no
     dual_carriageway=yes: Tag:dual carriageway=yes
     education=centre: Tag:education=centre
     education=exercise_area: Tag:education=exercise area
     education=school: Tag:education=school
-    education_program=specialized_education: Tag:education program=specialized education
     electrified=4th_rail: Tag:electrified=4th rail
     electrified=contact_line: Tag:electrified=contact line
     electrified=rail: Tag:electrified=rail
@@ -10622,6 +10893,7 @@ en:
     emergency=assembly_point: Tag:emergency=assembly point
     emergency=bleed_control_kit: Tag:emergency=bleed control kit
     emergency=coast_guard: Tag:emergency=coast guard
+    emergency=control_centre: Tag:emergency=control centre
     emergency=defibrilator: Tag:emergency=defibrilator
     emergency=defibrillator: Tag:emergency=defibrillator
     emergency=designated: Tag:emergency=designated
@@ -10661,6 +10933,7 @@ en:
     emergency=mountain_rescue: Tag:emergency=mountain rescue
     emergency=phone: Tag:emergency=phone
     emergency=rescue_box: Tag:emergency=rescue box
+    emergency=rescue_buoy: Tag:emergency=rescue buoy
     emergency=ses_station: Tag:emergency=ses station
     emergency=shower: Tag:emergency=shower
     emergency=siamese: Tag:emergency=siamese
@@ -10670,6 +10943,7 @@ en:
     emergency=sprinkler_connection: Tag:emergency=sprinkler connection
     emergency=standpipe: Tag:emergency=standpipe
     emergency=suction_point: Tag:emergency=suction point
+    emergency=throw_bag: Tag:emergency=throw bag
     emergency=water_rescue: Tag:emergency=water rescue
     emergency=water_rescue_station: Tag:emergency=water rescue station
     emergency=water_tank: Tag:emergency=water tank
@@ -10708,6 +10982,7 @@ en:
     fire_mains=dry: Tag:fire mains=dry
     fire_mains=wet: Tag:fire mains=wet
     fire_mains=yes: Tag:fire mains=yes
+    fire_path=yes: Tag:fire path=yes
     fire_service_inlet=underground: Tag:fire service inlet=underground
     fire_service_inlet=wall: Tag:fire service inlet=wall
     fire_sprinkler=dry: Tag:fire sprinkler=dry
@@ -10717,6 +10992,7 @@ en:
     fixme=Position_estimated: Tag:fixme=Position estimated
     fixme=name: Tag:fixme=name
     fixme=position_estimated: Tag:fixme=position estimated
+    fixme=verify_name: Tag:fixme=verify name
     flag:type=advertising: Tag:flag:type=advertising
     flag:type=athletic: Tag:flag:type=athletic
     flag:type=governmental: Tag:flag:type=governmental
@@ -10759,6 +11035,7 @@ en:
     fortification_type=hill_fort: Tag:fortification type=hill fort
     fortification_type=limes: Tag:fortification type=limes
     fortification_type=motte: Tag:fortification type=motte
+    fortification_type=pa: Tag:fortification type=pa
     fortification_type=ring_ditch: Tag:fortification type=ring ditch
     fortification_type=ringfort: Tag:fortification type=ringfort
     fortification_type=sconce: Tag:fortification type=sconce
@@ -10789,6 +11066,17 @@ en:
     generator:method=wind_turbine: Tag:generator:method=wind turbine
     generator:plant=intermediate: Tag:generator:plant=intermediate
     generator:plant=output: Tag:generator:plant=output
+    generator:solar:tracking=alt-azimuth: Tag:generator:solar:tracking=alt-azimuth
+    generator:solar:tracking=dual_axis: Tag:generator:solar:tracking=dual axis
+    generator:solar:tracking=horizontal: Tag:generator:solar:tracking=horizontal
+    generator:solar:tracking=horizontal_tilted: Tag:generator:solar:tracking=horizontal
+      tilted
+    generator:solar:tracking=no: Tag:generator:solar:tracking=no
+    generator:solar:tracking=single_axis: Tag:generator:solar:tracking=single axis
+    generator:solar:tracking=tilted: Tag:generator:solar:tracking=tilted
+    generator:solar:tracking=tip-tilt: Tag:generator:solar:tracking=tip-tilt
+    generator:solar:tracking=vertical: Tag:generator:solar:tracking=vertical
+    generator:solar:tracking=yes: Tag:generator:solar:tracking=yes
     generator:source=battery: Tag:generator:source=battery
     generator:source=biofuel: Tag:generator:source=biofuel
     generator:source=biogas: Tag:generator:source=biogas
@@ -10807,6 +11095,7 @@ en:
     generator:source=waste: Tag:generator:source=waste
     generator:source=wave: Tag:generator:source=wave
     generator:source=wind: Tag:generator:source=wind
+    generator:type=PWR: Tag:generator:type=PWR
     generator:type=boiler: Tag:generator:type=boiler
     generator:type=combined_cycle: Tag:generator:type=combined cycle
     generator:type=francis_turbine: Tag:generator:type=francis turbine
@@ -10815,6 +11104,7 @@ en:
     generator:type=horizontal_axis: Tag:generator:type=horizontal axis
     generator:type=hydrodynamic_screw: Tag:generator:type=hydrodynamic screw
     generator:type=kaplan_turbine: Tag:generator:type=kaplan turbine
+    generator:type=lithium_ion: Tag:generator:type=lithium ion
     generator:type=pelton_turbine: Tag:generator:type=pelton turbine
     generator:type=reciprocating_engine: Tag:generator:type=reciprocating engine
     generator:type=solar_photovoltaic_panel: Tag:generator:type=solar photovoltaic
@@ -10823,18 +11113,26 @@ en:
     generator:type=steam_generator: Tag:generator:type=steam generator
     generator:type=steam_turbine: Tag:generator:type=steam turbine
     generator:type=vertical_axis: Tag:generator:type=vertical axis
+    generator:type=water_wheel: Tag:generator:type=water wheel
     generator:type=zuppinger_water_wheel: Tag:generator:type=zuppinger water wheel
     genus=Acer: Tag:genus=Acer
+    geological=columnar_jointing: Tag:geological=columnar jointing
     geological=fault: Tag:geological=fault
+    geological=giants_kettle: Tag:geological=giants kettle
+    geological=glacial_erratic: Tag:geological=glacial erratic
+    geological=hoodoo: Tag:geological=hoodoo
     geological=meteor_crater: Tag:geological=meteor crater
     geological=moraine: Tag:geological=moraine
     geological=outcrop: Tag:geological=outcrop
     geological=palaeontological_site: Tag:geological=palaeontological site
+    geological=rock_glacier: Tag:geological=rock glacier
     geological=volcanic_caldera: Tag:geological=volcanic caldera
     geological=volcanic_caldera_rim: Tag:geological=volcanic caldera rim
     geological=volcanic_lava_field: Tag:geological=volcanic lava field
+    geological=volcanic_lava_flow: Tag:geological=volcanic lava flow
     geological=volcanic_vent: Tag:geological=volcanic vent
     glacier:type=mountain: Tag:glacier:type=mountain
+    glacier:type=rock: Tag:glacier:type=rock
     glideslope=yes: Tag:glideslope=yes
     golf=bunker: Tag:golf=bunker
     golf=cartpath: Tag:golf=cartpath
@@ -10867,6 +11165,7 @@ en:
     government=healthcare: Tag:government=healthcare
     government=heritage: Tag:government=heritage
     government=it: Tag:government=it
+    government=justice: Tag:government=justice
     government=legislative: Tag:government=legislative
     government=ministry: Tag:government=ministry
     government=parliament: Tag:government=parliament
@@ -10920,6 +11219,8 @@ en:
     hazard=electricity: Tag:hazard=electricity
     hazard=emergency_vehicles: Tag:hazard=emergency vehicles
     hazard=falling_rocks: Tag:hazard=falling rocks
+    hazard=flood: Tag:hazard=flood
+    hazard=flooding: Tag:hazard=flooding
     hazard=fog: Tag:hazard=fog
     hazard=frail_pedestrians: Tag:hazard=frail pedestrians
     hazard=frost_heave: Tag:hazard=frost heave
@@ -10943,6 +11244,7 @@ en:
     hazard=school_zone: Tag:hazard=school zone
     hazard=shooting_range: Tag:hazard=shooting range
     hazard=side_winds: Tag:hazard=side winds
+    hazard=silver_zone: Tag:hazard=silver zone
     hazard=slippery: Tag:hazard=slippery
     hazard=traffic_signals: Tag:hazard=traffic signals
     hazard=turn: Tag:hazard=turn
@@ -10973,6 +11275,7 @@ en:
     healthcare:speciality=cardiothoracic_surgery: Tag:healthcare:speciality=cardiothoracic
       surgery
     healthcare:speciality=child_psychiatry: Tag:healthcare:speciality=child psychiatry
+    healthcare:speciality=chiropractic: Tag:healthcare:speciality=chiropractic
     healthcare:speciality=clinical_pathology: Tag:healthcare:speciality=clinical pathology
     healthcare:speciality=community: Tag:healthcare:speciality=community
     healthcare:speciality=dental_oral_maxillo_facial_surgery: Tag:healthcare:speciality=dental
@@ -11184,11 +11487,15 @@ en:
     historic=fort: Tag:historic=fort
     historic=gallows: Tag:historic=gallows
     historic=heritage: Tag:historic=heritage
+    historic=high_cross: Tag:historic=high cross
     historic=highwater_mark: Tag:historic=highwater mark
     historic=hollow_way: Tag:historic=hollow way
     historic=house: Tag:historic=house
     historic=locomotive: Tag:historic=locomotive
     historic=manor: Tag:historic=manor
+    historic=market_cross: Tag:historic=market cross
+    historic=martello_tower: Tag:historic=martello tower
+    historic=mass_path: Tag:historic=mass path
     historic=memorial: Tag:historic=memorial
     historic=meteor_crater: Tag:historic=meteor crater
     historic=milestone: Tag:historic=milestone
@@ -11197,6 +11504,7 @@ en:
     historic=missile: Tag:historic=missile
     historic=monastery: Tag:historic=monastery
     historic=monument: Tag:historic=monument
+    historic=mosque: Tag:historic=mosque
     historic=ogham_stone: Tag:historic=ogham stone
     historic=optical_telegraph: Tag:historic=optical telegraph
     historic=pa: Tag:historic=pa
@@ -11209,8 +11517,11 @@ en:
     historic=rune_stone: Tag:historic=rune stone
     historic=shieling: Tag:historic=shieling
     historic=ship: Tag:historic=ship
+    historic=stećak: Tag:historic=stećak
+    historic=stećak_necropolis: Tag:historic=stećak necropolis
     historic=stone: Tag:historic=stone
     historic=tank: Tag:historic=tank
+    historic=temple: Tag:historic=temple
     historic=tomb: Tag:historic=tomb
     historic=tower: Tag:historic=tower
     historic=tree_shrine: Tag:historic=tree shrine
@@ -11421,6 +11732,7 @@ en:
     landuse=military: Tag:landuse=military
     landuse=observatory: Tag:landuse=observatory
     landuse=orchard: Tag:landuse=orchard
+    landuse=paddy: Tag:landuse=paddy
     landuse=peat_cutting: Tag:landuse=peat cutting
     landuse=plant_nursery: Tag:landuse=plant nursery
     landuse=plantation: Tag:landuse=plantation
@@ -11458,6 +11770,7 @@ en:
     landuse=yes: Tag:landuse=yes
     lane=buffered: Tag:lane=buffered
     lane_markings=no: Tag:lane markings=no
+    lawyer=bailiff: Tag:lawyer=bailiff
     lawyer=notary: Tag:lawyer=notary
     leaf_cycle=deciduous: Tag:leaf cycle=deciduous
     leaf_cycle=evergreen: Tag:leaf cycle=evergreen
@@ -11487,7 +11800,6 @@ en:
     leisure=club: Tag:leisure=club
     leisure=club_house: Tag:leisure=club house
     leisure=common: Tag:leisure=common
-    leisure=cricket_nets: Tag:leisure=cricket nets
     leisure=dance: Tag:leisure=dance
     leisure=dancing: Tag:leisure=dancing
     leisure=disc_golf_course: Tag:leisure=disc golf course
@@ -11566,6 +11878,14 @@ en:
     line=bay: Tag:line=bay
     line=busbar: Tag:line=busbar
     line=substation: Tag:line=substation
+    line_arrangement=delta: Tag:line arrangement=delta
+    line_arrangement=horizontal: Tag:line arrangement=horizontal
+    line_arrangement=semi_horizontal: Tag:line arrangement=semi horizontal
+    line_arrangement=semi_vertical: Tag:line arrangement=semi vertical
+    line_arrangement=square: Tag:line arrangement=square
+    line_arrangement=triangular: Tag:line arrangement=triangular
+    line_arrangement=unarranged: Tag:line arrangement=unarranged
+    line_arrangement=vertical: Tag:line arrangement=vertical
     line_attachment=anchor: Tag:line attachment=anchor
     line_attachment=pin: Tag:line attachment=pin
     line_attachment=pulley: Tag:line attachment=pulley
@@ -11593,12 +11913,14 @@ en:
     location=underground: Tag:location=underground
     location=underwater: Tag:location=underwater
     logistics=goods_distribution: Tag:logistics=goods distribution
+    logistics=railway: Tag:logistics=railway
     logistics=spaceflight: Tag:logistics=spaceflight
     lottery=yes: Tag:lottery=yes
     maintenance=gritting: Tag:maintenance=gritting
     man_made=MDF: Tag:man made=MDF
     man_made=adit: Tag:man made=adit
     man_made=advertising: Tag:man made=advertising
+    man_made=aircraft: Tag:man made=aircraft
     man_made=animal_trap: Tag:man made=animal trap
     man_made=antenna: Tag:man made=antenna
     man_made=archimedes_screw: Tag:man made=archimedes screw
@@ -11607,6 +11929,7 @@ en:
     man_made=basin: Tag:man made=basin
     man_made=beacon: Tag:man made=beacon
     man_made=beehive: Tag:man made=beehive
+    man_made=bell: Tag:man made=bell
     man_made=bioreactor: Tag:man made=bioreactor
     man_made=bioswale: Tag:man made=bioswale
     man_made=bird_feeder: Tag:man made=bird feeder
@@ -11625,6 +11948,7 @@ en:
     man_made=chute_block: Tag:man made=chute block
     man_made=clarifier: Tag:man made=clarifier
     man_made=clearcut: Tag:man made=clearcut
+    man_made=clothes_line: Tag:man made=clothes line
     man_made=column: Tag:man made=column
     man_made=communications_tower: Tag:man made=communications tower
     man_made=compass_rose: Tag:man made=compass rose
@@ -11633,7 +11957,6 @@ en:
     man_made=cooling_tower: Tag:man made=cooling tower
     man_made=courtyard: Tag:man made=courtyard
     man_made=crane: Tag:man made=crane
-    man_made=cricket_nets: Tag:man made=cricket nets
     man_made=cross: Tag:man made=cross
     man_made=cut_line: Tag:man made=cut line
     man_made=cutline: Tag:man made=cutline
@@ -11642,6 +11965,7 @@ en:
     man_made=dolphin: Tag:man made=dolphin
     man_made=dovecote: Tag:man made=dovecote
     man_made=drinking_fountain: Tag:man made=drinking fountain
+    man_made=duck_decoy: Tag:man made=duck decoy
     man_made=dyke: Tag:man made=dyke
     man_made=embankment: Tag:man made=embankment
     man_made=excavation: Tag:man made=excavation
@@ -11650,6 +11974,7 @@ en:
     man_made=flare: Tag:man made=flare
     man_made=floating_storage: Tag:man made=floating storage
     man_made=footwear_decontamination: Tag:man made=footwear decontamination
+    man_made=foundation: Tag:man made=foundation
     man_made=frost_fan: Tag:man made=frost fan
     man_made=fuel_column: Tag:man made=fuel column
     man_made=fuel_pump: Tag:man made=fuel pump
@@ -11678,6 +12003,7 @@ en:
     man_made=launch_pad: Tag:man made=launch pad
     man_made=levee: Tag:man made=levee
     man_made=lighthouse: Tag:man made=lighthouse
+    man_made=loudspeaker: Tag:man made=loudspeaker
     man_made=manhole: Tag:man made=manhole
     man_made=mast: Tag:man made=mast
     man_made=maypole: Tag:man made=maypole
@@ -11698,6 +12024,7 @@ en:
     man_made=outfall: Tag:man made=outfall
     man_made=oxidation_ditch: Tag:man made=oxidation ditch
     man_made=paifang: Tag:man made=paifang
+    man_made=pavement_light: Tag:man made=pavement light
     man_made=petroleum_well: Tag:man made=petroleum well
     man_made=pier: Tag:man made=pier
     man_made=pillar: Tag:man made=pillar
@@ -11713,10 +12040,13 @@ en:
     man_made=qanat: Tag:man made=qanat
     man_made=quay: Tag:man made=quay
     man_made=reservoir_covered: Tag:man made=reservoir covered
+    man_made=ruins: Tag:man made=ruins
     man_made=satellite_dish: Tag:man made=satellite dish
     man_made=school_sentry: Tag:man made=school sentry
     man_made=septic_tank: Tag:man made=septic tank
     man_made=sewage: Tag:man made=sewage
+    man_made=sewer_vent: Tag:man made=sewer vent
+    man_made=sign: Tag:man made=sign
     man_made=silo: Tag:man made=silo
     man_made=ski_jump: Tag:man made=ski jump
     man_made=slurry_basin: Tag:man made=slurry basin
@@ -11725,6 +12055,7 @@ en:
     man_made=snow_net: Tag:man made=snow net
     man_made=spoil_heap: Tag:man made=spoil heap
     man_made=spring_box: Tag:man made=spring box
+    man_made=stećak: Tag:man made=stećak
     man_made=storage_tank: Tag:man made=storage tank
     man_made=street_cabinet: Tag:man made=street cabinet
     man_made=stupa: Tag:man made=stupa
@@ -11746,6 +12077,7 @@ en:
     man_made=utility_pole: Tag:man made=utility pole
     man_made=ventilation_shaft: Tag:man made=ventilation shaft
     man_made=video_wall: Tag:man made=video wall
+    man_made=warehouse: Tag:man made=warehouse
     man_made=wastewater_basin: Tag:man made=wastewater basin
     man_made=wastewater_plant: Tag:man made=wastewater plant
     man_made=water_tank: Tag:man made=water tank
@@ -11760,6 +12092,7 @@ en:
     man_made=windmill: Tag:man made=windmill
     man_made=windpump: Tag:man made=windpump
     man_made=works: Tag:man made=works
+    man_made_aircraft: Tag:man made aircraft
     manhole=drain: Tag:manhole=drain
     manhole=telecom: Tag:manhole=telecom
     map_type=topo: Tag:map type=topo
@@ -11775,7 +12108,11 @@ en:
     material=epoxy: Tag:material=epoxy
     material=paving_stones: Tag:material=paving stones
     maxheight=default: Tag:maxheight=default
+    maxspeed:type=GB:motorway: Tag:maxspeed:type=GB:motorway
+    maxspeed:type=GB:nsl_dual: Tag:maxspeed:type=GB:nsl dual
     maxspeed:type=GB:nsl_restricted: Tag:maxspeed:type=GB:nsl restricted
+    maxspeed:type=GB:nsl_single: Tag:maxspeed:type=GB:nsl single
+    maxspeed:type=GB:zone20: Tag:maxspeed:type=GB:zone20
     maxspeed:type=NL:living_street: Tag:maxspeed:type=NL:living street
     maxspeed:type=NL:motorroad: Tag:maxspeed:type=NL:motorroad
     maxspeed:type=NL:motorway: Tag:maxspeed:type=NL:motorway
@@ -11783,16 +12120,19 @@ en:
     maxspeed:type=NL:urban: Tag:maxspeed:type=NL:urban
     maxspeed:type=PL:rural: Tag:maxspeed:type=PL:rural
     maxspeed:type=PL:urban: Tag:maxspeed:type=PL:urban
+    maxspeed:type=sign: Tag:maxspeed:type=sign
     maxspeed=implicit: Tag:maxspeed=implicit
     maxweight:signed=no: Tag:maxweight:signed=no
     meadow=paddock: Tag:meadow=paddock
     meadow=pasture: Tag:meadow=pasture
     mechanical_coupling=nodding_donkey: Tag:mechanical coupling=nodding donkey
     mechanical_driver=combustion_engine: Tag:mechanical driver=combustion engine
+    mechanical_driver=cylinder: Tag:mechanical driver=cylinder
     mechanical_driver=electric_motor: Tag:mechanical driver=electric motor
     mechanical_driver=manual: Tag:mechanical driver=manual
     mechanical_driver=reciprocating_solenoid: Tag:mechanical driver=reciprocating
       solenoid
+    mechanical_driver=turbine: Tag:mechanical driver=turbine
     medical=aed: Tag:medical=aed
     medical_system:western=yes: Tag:medical system:western=yes
     megalith_type=alignment: Tag:megalith type=alignment
@@ -11822,6 +12162,7 @@ en:
     memorial=cross: Tag:memorial=cross
     memorial=flood_mark: Tag:memorial=flood mark
     memorial=ghost_bike: Tag:memorial=ghost bike
+    memorial=immortality_tower: Tag:memorial=immortality tower
     memorial=khachkar: Tag:memorial=khachkar
     memorial=obelisk: Tag:memorial=obelisk
     memorial=plaque: Tag:memorial=plaque
@@ -11862,6 +12203,7 @@ en:
     military_service=marines: Tag:military service=marines
     military_service=navy: Tag:military service=navy
     mofa=use_sidepath: Tag:mofa=use sidepath
+    monument=statue: Tag:monument=statue
     mooring=commercial: Tag:mooring=commercial
     mooring=cruise: Tag:mooring=cruise
     mooring=declaration: Tag:mooring=declaration
@@ -11874,6 +12216,7 @@ en:
     mooring=visitor: Tag:mooring=visitor
     moped=use_sidepath: Tag:moped=use sidepath
     motor_vehicle=agricultural: Tag:motor vehicle=agricultural
+    motor_vehicle=delivery: Tag:motor vehicle=delivery
     motor_vehicle=destination: Tag:motor vehicle=destination
     motor_vehicle=forestry: Tag:motor vehicle=forestry
     motor_vehicle=no: Tag:motor vehicle=no
@@ -11933,6 +12276,7 @@ en:
     natural=beach: Tag:natural=beach
     natural=bedrock: Tag:natural=bedrock
     natural=birds_nest: Tag:natural=birds nest
+    natural=blockfield: Tag:natural=blockfield
     natural=blowhole: Tag:natural=blowhole
     natural=caldera: Tag:natural=caldera
     natural=cape: Tag:natural=cape
@@ -12076,6 +12420,7 @@ en:
     network=US:AZ:Loop: Tag:network=US:AZ:Loop
     network=US:AZ:Maricopa: Tag:network=US:AZ:Maricopa
     network=US:AZ:Mohave: Tag:network=US:AZ:Mohave
+    network=US:AZ:Scenic: Tag:network=US:AZ:Scenic
     network=US:BIA: Tag:network=US:BIA
     network=US:CA: Tag:network=US:CA
     network=US:CA:CR: Tag:network=US:CA:CR
@@ -12230,6 +12575,7 @@ en:
     network=US:OH:STA: Tag:network=US:OH:STA
     network=US:OH:SUM: Tag:network=US:OH:SUM
     network=US:OH:SUM:Bath: Tag:network=US:OH:SUM:Bath
+    network=US:OH:TRU: Tag:network=US:OH:TRU
     network=US:OH:TUS: Tag:network=US:OH:TUS
     network=US:OH:UNI: Tag:network=US:OH:UNI
     network=US:OH:VIN: Tag:network=US:OH:VIN
@@ -12242,6 +12588,7 @@ en:
     network=US:OH:WYA: Tag:network=US:OH:WYA
     network=US:OK: Tag:network=US:OK
     network=US:OR: Tag:network=US:OR
+    network=US:OR:Named: Tag:network=US:OR:Named
     network=US:PA: Tag:network=US:PA
     network=US:PA:Turnpike: Tag:network=US:PA:Turnpike
     network=US:RI: Tag:network=US:RI
@@ -12368,6 +12715,7 @@ en:
     office=harbour_master: Tag:office=harbour master
     office=healthcare: Tag:office=healthcare
     office=highway: Tag:office=highway
+    office=information: Tag:office=information
     office=insurance: Tag:office=insurance
     office=interior_design: Tag:office=interior design
     office=international_organization: Tag:office=international organization
@@ -12467,6 +12815,7 @@ en:
     park_ride=hov: Tag:park ride=hov
     parking:both=street_side: Tag:parking:both=street side
     parking:lane:hgv=on_street: Tag:parking:lane:hgv=on street
+    parking:left=lane: Tag:parking:left=lane
     parking:left=street_side: Tag:parking:left=street side
     parking:orientation=perpendicular: Tag:parking:orientation=perpendicular
     parking:right=street_side: Tag:parking:right=street side
@@ -12477,6 +12826,7 @@ en:
     parking=street_side: Tag:parking=street side
     parking=surface: Tag:parking=surface
     parking=underground: Tag:parking=underground
+    parking_space=charging: Tag:parking space=charging
     parking_space=disabled: Tag:parking space=disabled
     passenger=international: Tag:passenger=international
     passenger=local: Tag:passenger=local
@@ -12502,6 +12852,7 @@ en:
     piste:type=nordic: Tag:piste:type=nordic
     piste:type=ski_jump: Tag:piste:type=ski jump
     piste:type=ski_jump_landing: Tag:piste:type=ski jump landing
+    piste:type=sled: Tag:piste:type=sled
     place=allotments: Tag:place=allotments
     place=archipelago: Tag:place=archipelago
     place=borough: Tag:place=borough
@@ -12521,6 +12872,7 @@ en:
     place=neighbourhood: Tag:place=neighbourhood
     place=ocean: Tag:place=ocean
     place=plot: Tag:place=plot
+    place=polder: Tag:place=polder
     place=province: Tag:place=province
     place=quarter: Tag:place=quarter
     place=region: Tag:place=region
@@ -12536,9 +12888,13 @@ en:
     place_of_worship=holy_well: Tag:place of worship=holy well
     place_of_worship=lourdes_grotto: Tag:place of worship=lourdes grotto
     place_of_worship=mass_rock: Tag:place of worship=mass rock
+    place_of_worship=musalla: Tag:place of worship=musalla
     placement=right_of:1: Tag:placement=right of:1
     placement=transition: Tag:placement=transition
+    plant:method=anaerobic_digestion: Tag:plant:method=anaerobic digestion
+    plant:method=barrage: Tag:plant:method=barrage
     plant:method=combustion: Tag:plant:method=combustion
+    plant:method=fission: Tag:plant:method=fission
     plant:method=gasification: Tag:plant:method=gasification
     plant:method=lithium-ion: Tag:plant:method=lithium-ion
     plant:method=photovoltaic: Tag:plant:method=photovoltaic
@@ -12546,19 +12902,26 @@ en:
     plant:method=thermal: Tag:plant:method=thermal
     plant:method=water-pumped-storage: Tag:plant:method=water-pumped-storage
     plant:method=water-storage: Tag:plant:method=water-storage
+    plant:method=wind_turbine: Tag:plant:method=wind turbine
     plant:source=battery: Tag:plant:source=battery
+    plant:source=biogas: Tag:plant:source=biogas
     plant:source=biomass: Tag:plant:source=biomass
     plant:source=coal: Tag:plant:source=coal
+    plant:source=diesel: Tag:plant:source=diesel
+    plant:source=flywheel: Tag:plant:source=flywheel
     plant:source=gas: Tag:plant:source=gas
     plant:source=geothermal: Tag:plant:source=geothermal
     plant:source=hydro: Tag:plant:source=hydro
     plant:source=nuclear: Tag:plant:source=nuclear
     plant:source=oil: Tag:plant:source=oil
     plant:source=solar: Tag:plant:source=solar
+    plant:source=tidal: Tag:plant:source=tidal
     plant:source=waste: Tag:plant:source=waste
     plant:source=wind: Tag:plant:source=wind
     plant:type=combined_cycle: Tag:plant:type=combined cycle
     plant:type=gas_turbine: Tag:plant:type=gas turbine
+    plant:type=lithium_ion: Tag:plant:type=lithium ion
+    plant:type=reciprocating_engine: Tag:plant:type=reciprocating engine
     plant:type=solar_photovoltaic_panel: Tag:plant:type=solar photovoltaic panel
     plant:type=steam_turbine: Tag:plant:type=steam turbine
     playground=balancebeam: Tag:playground=balancebeam
@@ -12593,6 +12956,7 @@ en:
     police=yes: Tag:police=yes
     political_division=NL:kamerkieskring: Tag:political division=NL:kamerkieskring
     political_division=NL:statenkieskring: Tag:political division=NL:statenkieskring
+    political_division=TR:TBMM: Tag:political division=TR:TBMM
     political_division=congressional_district: Tag:political division=congressional
       district
     political_division=euro_const: Tag:political division=euro const
@@ -12634,6 +12998,7 @@ en:
     priority=regional: Tag:priority=regional
     prison_camp=concentration_camp: Tag:prison camp=concentration camp
     prison_camp=extermination_camp: Tag:prison camp=extermination camp
+    private=government: Tag:private=government
     private=members: Tag:private=members
     private=students: Tag:private=students
     product=beer: Tag:product=beer
@@ -12655,6 +13020,7 @@ en:
     protect_class=1b: Tag:protect class=1b
     protect_class=2: Tag:protect class=2
     protect_class=21: Tag:protect class=21
+    protect_class=22: Tag:protect class=22
     protect_class=3: Tag:protect class=3
     protect_class=4: Tag:protect class=4
     protect_class=5: Tag:protect class=5
@@ -12712,6 +13078,7 @@ en:
     railway=abandoned: Tag:railway=abandoned
     railway=border: Tag:railway=border
     railway=buffer_stop: Tag:railway=buffer stop
+    railway=construction: Tag:railway=construction
     railway=crossing: Tag:railway=crossing
     railway=crossing_box: Tag:railway=crossing box
     railway=crossing_controller: Tag:railway=crossing controller
@@ -12776,6 +13143,7 @@ en:
     religion=none: Tag:religion=none
     religion=pagan: Tag:religion=pagan
     religion=self-realization_fellowship: Tag:religion=self-realization fellowship
+    religion=shamanic: Tag:religion=shamanic
     religion=shinto: Tag:religion=shinto
     religion=sikh: Tag:religion=sikh
     religion=taoist: Tag:religion=taoist
@@ -12809,12 +13177,14 @@ en:
     resource=coal: Tag:resource=coal
     resource=gravel: Tag:resource=gravel
     resource=sand: Tag:resource=sand
+    restriction:bicycle=stop: Tag:restriction:bicycle=stop
     restriction=no_right_turn_on_red: Tag:restriction=no right turn on red
     retaining_wall=flood_wall: Tag:retaining wall=flood wall
     road_marking=solid_stop_line: Tag:road marking=solid stop line
     roller_coaster=station: Tag:roller coaster=station
     roller_coaster=support: Tag:roller coaster=support
     roller_coaster=track: Tag:roller coaster=track
+    roof:shape=butterfly: Tag:roof:shape=butterfly
     roof:shape=cone: Tag:roof:shape=cone
     roof:shape=crosspitched: Tag:roof:shape=crosspitched
     roof:shape=dome: Tag:roof:shape=dome
@@ -12824,7 +13194,10 @@ en:
     roof:shape=gambrel: Tag:roof:shape=gambrel
     roof:shape=half-hipped: Tag:roof:shape=half-hipped
     roof:shape=half_hipped: Tag:roof:shape=half hipped
+    roof:shape=hip-and-gable: Tag:roof:shape=hip-and-gable
     roof:shape=hipped: Tag:roof:shape=hipped
+    roof:shape=hipped-and-gable: Tag:roof:shape=hipped-and-gable
+    roof:shape=hipped-and-gabled: Tag:roof:shape=hipped-and-gabled
     roof:shape=mansard: Tag:roof:shape=mansard
     roof:shape=many: Tag:roof:shape=many
     roof:shape=onion: Tag:roof:shape=onion
@@ -12879,6 +13252,8 @@ en:
     route=worship: Tag:route=worship
     rugby=league: Tag:rugby=league
     rugby=union: Tag:rugby=union
+    ruins=mosque: Tag:ruins=mosque
+    ruins=temple: Tag:ruins=temple
     runway=displaced_threshold: Tag:runway=displaced threshold
     sailing:tours=yes: Tag:sailing:tours=yes
     school:gender=female: Tag:school:gender=female
@@ -13067,27 +13442,17 @@ en:
     seamark:fog_signal=yes: Tag:seamark:fog signal=yes
     seamark:harbour:category=fishing: Tag:seamark:harbour:category=fishing
     seamark:harbour:category=marina: Tag:seamark:harbour:category=marina
-    seamark:landmark:category=cairn: Tag:seamark:landmark:category=cairn
     seamark:landmark:category=cemetery: Tag:seamark:landmark:category=cemetery
-    seamark:landmark:category=chimney: Tag:seamark:landmark:category=chimney
     seamark:landmark:category=column: Tag:seamark:landmark:category=column
-    seamark:landmark:category=cross: Tag:seamark:landmark:category=cross
-    seamark:landmark:category=dish_aerial: Tag:seamark:landmark:category=dish aerial
     seamark:landmark:category=dome: Tag:seamark:landmark:category=dome
-    seamark:landmark:category=flagstaff: Tag:seamark:landmark:category=flagstaff
     seamark:landmark:category=flare_stack: Tag:seamark:landmark:category=flare stack
-    seamark:landmark:category=mast: Tag:seamark:landmark:category=mast
     seamark:landmark:category=memorial: Tag:seamark:landmark:category=memorial
     seamark:landmark:category=minaret: Tag:seamark:landmark:category=minaret
-    seamark:landmark:category=monument: Tag:seamark:landmark:category=monument
     seamark:landmark:category=obelisk: Tag:seamark:landmark:category=obelisk
     seamark:landmark:category=radar_scanner: Tag:seamark:landmark:category=radar scanner
-    seamark:landmark:category=spire: Tag:seamark:landmark:category=spire
     seamark:landmark:category=statue: Tag:seamark:landmark:category=statue
-    seamark:landmark:category=tower: Tag:seamark:landmark:category=tower
     seamark:landmark:category=windmill: Tag:seamark:landmark:category=windmill
     seamark:landmark:category=windmotor: Tag:seamark:landmark:category=windmotor
-    seamark:landmark:category=windsock: Tag:seamark:landmark:category=windsock
     seamark:landmark:conspicuity=conspicuous: Tag:seamark:landmark:conspicuity=conspicuous
     seamark:landmark:function=buddhist_temple: Tag:seamark:landmark:function=buddhist
       temple
@@ -13362,7 +13727,9 @@ en:
     shelter_type=pavilion: Tag:shelter type=pavilion
     shelter_type=picnic_shelter: Tag:shelter type=picnic shelter
     shelter_type=public_transport: Tag:shelter type=public transport
+    shelter_type=rock_shelter: Tag:shelter type=rock shelter
     shelter_type=shopping_cart: Tag:shelter type=shopping cart
+    shelter_type=sun_shelter: Tag:shelter type=sun shelter
     shelter_type=weather_shelter: Tag:shelter type=weather shelter
     shelter_type=wetterpilz: Tag:shelter type=wetterpilz
     shelter_type=wildlife_hide: Tag:shelter type=wildlife hide
@@ -13422,6 +13789,7 @@ en:
     shop=cheese: Tag:shop=cheese
     shop=chemist: Tag:shop=chemist
     shop=chocolate: Tag:shop=chocolate
+    shop=christmas: Tag:shop=christmas
     shop=clothes: Tag:shop=clothes
     shop=coffee: Tag:shop=coffee
     shop=collector: Tag:shop=collector
@@ -13446,6 +13814,7 @@ en:
     shop=doors: Tag:shop=doors
     shop=dry_cleaning: Tag:shop=dry cleaning
     shop=e-cigarette: Tag:shop=e-cigarette
+    shop=eggs: Tag:shop=eggs
     shop=electrical: Tag:shop=electrical
     shop=electronics: Tag:shop=electronics
     shop=energy: Tag:shop=energy
@@ -13455,11 +13824,11 @@ en:
     shop=estate_agent: Tag:shop=estate agent
     shop=fabric: Tag:shop=fabric
     shop=fabrics: Tag:shop=fabrics
+    shop=fan: Tag:shop=fan
     shop=farm: Tag:shop=farm
     shop=fashion: Tag:shop=fashion
     shop=fashion_accessories: Tag:shop=fashion accessories
     shop=fast_food: Tag:shop=fast food
-    shop=firearms: Tag:shop=firearms
     shop=fireplace: Tag:shop=fireplace
     shop=fireworks: Tag:shop=fireworks
     shop=fish: Tag:shop=fish
@@ -13528,10 +13897,12 @@ en:
     shop=kiosk: Tag:shop=kiosk
     shop=kitchen: Tag:shop=kitchen
     shop=kitchenware: Tag:shop=kitchenware
+    shop=knives: Tag:shop=knives
     shop=lamps: Tag:shop=lamps
     shop=laundromat: Tag:shop=laundromat
     shop=laundry: Tag:shop=laundry
     shop=leather: Tag:shop=leather
+    shop=leatherworking: Tag:shop=leatherworking
     shop=lighting: Tag:shop=lighting
     shop=locksmith: Tag:shop=locksmith
     shop=lottery: Tag:shop=lottery
@@ -13566,6 +13937,7 @@ en:
     shop=office_supplies: Tag:shop=office supplies
     shop=optician: Tag:shop=optician
     shop=organic: Tag:shop=organic
+    shop=orthopedics: Tag:shop=orthopedics
     shop=outdoor: Tag:shop=outdoor
     shop=outdoor_power_equipment: Tag:shop=outdoor power equipment
     shop=outpost: Tag:shop=outpost
@@ -13574,6 +13946,7 @@ en:
     shop=pasta: Tag:shop=pasta
     shop=pastry: Tag:shop=pastry
     shop=pawnbroker: Tag:shop=pawnbroker
+    shop=peanut_butter: Tag:shop=peanut butter
     shop=perfume: Tag:shop=perfume
     shop=perfumery: Tag:shop=perfumery
     shop=pest_control: Tag:shop=pest control
@@ -13587,6 +13960,7 @@ en:
     shop=plant_hire: Tag:shop=plant hire
     shop=pottery: Tag:shop=pottery
     shop=power_tools: Tag:shop=power tools
+    shop=preserving_glassware: Tag:shop=preserving glassware
     shop=printer_ink: Tag:shop=printer ink
     shop=printing: Tag:shop=printing
     shop=psychic: Tag:shop=psychic
@@ -13599,7 +13973,9 @@ en:
     shop=repair: Tag:shop=repair
     shop=rice: Tag:shop=rice
     shop=robot: Tag:shop=robot
+    shop=safety_equipment: Tag:shop=safety equipment
     shop=salon: Tag:shop=salon
+    shop=sauna: Tag:shop=sauna
     shop=scooter: Tag:shop=scooter
     shop=scuba_diving: Tag:shop=scuba diving
     shop=seafood: Tag:shop=seafood
@@ -13613,6 +13989,7 @@ en:
     shop=shopping_centre: Tag:shop=shopping centre
     shop=skate: Tag:shop=skate
     shop=ski: Tag:shop=ski
+    shop=smartshop: Tag:shop=smartshop
     shop=snack: Tag:shop=snack
     shop=snowmobile: Tag:shop=snowmobile
     shop=solarium: Tag:shop=solarium
@@ -13657,6 +14034,7 @@ en:
     shop=video_games: Tag:shop=video games
     shop=watches: Tag:shop=watches
     shop=water: Tag:shop=water
+    shop=water_filters: Tag:shop=water filters
     shop=water_sports: Tag:shop=water sports
     shop=weapons: Tag:shop=weapons
     shop=wellness: Tag:shop=wellness
@@ -13708,10 +14086,13 @@ en:
     site_type=roman_villa: Tag:site type=roman villa
     site_type=settlement: Tag:site type=settlement
     site_type=tumulus: Tag:site type=tumulus
+    social_facility:for=disabled: Tag:social facility:for=disabled
     social_facility:for=homeless: Tag:social facility:for=homeless
+    social_facility:for=senior: Tag:social facility:for=senior
     social_facility=ambulatory_care: Tag:social facility=ambulatory care
     social_facility=assisted_living: Tag:social facility=assisted living
     social_facility=clothing_bank: Tag:social facility=clothing bank
+    social_facility=dairy_kitchen: Tag:social facility=dairy kitchen
     social_facility=day_care: Tag:social facility=day care
     social_facility=food_bank: Tag:social facility=food bank
     social_facility=group_home: Tag:social facility=group home
@@ -13726,6 +14107,7 @@ en:
     source:addr:postcode=Isle_of_Man_Government_Planning_Applications: Tag:source:addr:postcode=Isle
       of Man Government Planning Applications
     source:addr=GURS: Tag:source:addr=GURS
+    source:addr=ЕГРН: Tag:source:addr=ЕГРН
     source:ele=barometric: Tag:source:ele=barometric
     source:geometry=ACT2016: Tag:source:geometry=ACT2016
     source:geometry=ACTMapiRoads: Tag:source:geometry=ACTMapiRoads
@@ -13742,10 +14124,14 @@ en:
     source:maxspeed=BE-VLG:urban: Tag:source:maxspeed=BE-VLG:urban
     source:maxspeed=BE-WAL:rural: Tag:source:maxspeed=BE-WAL:rural
     source:maxspeed=BE-WAL:urban: Tag:source:maxspeed=BE-WAL:urban
+    source:maxspeed=RU:urban: Tag:source:maxspeed=RU:urban
     source:maxspeed=implicit: Tag:source:maxspeed=implicit
+    source:maxspeed=sign: Tag:source:maxspeed=sign
     source:name=LPI_NSW_Base_Map: Tag:source:name=LPI NSW Base Map
     source:name=NPWS_Estate: Tag:source:name=NPWS Estate
     source:name=NSW_LPI_Base_Map: Tag:source:name=NSW LPI Base Map
+    source:population=IBGE_2010: Tag:source:population=IBGE 2010
+    source:population=IBGE_2022: Tag:source:population=IBGE 2022
     source:position=NPWS_Estate: Tag:source:position=NPWS Estate
     source=ACT2016: Tag:source=ACT2016
     source=ACT2017: Tag:source=ACT2017
@@ -13758,6 +14144,7 @@ en:
     source=Google: Tag:source=Google
     source=Google,_2010-01-21: Tag:source=Google, 2010-01-21
     source=HiRes_aerial_imagery: Tag:source=HiRes aerial imagery
+    source=IBGE: Tag:source=IBGE
     source=Isle_of_Man_Government_1:25000_map_(2007): Tag:source=Isle of Man Government
       1:25000 map (2007)
     source=Isle_of_Man_Government_aerial_imagery_(2001): Tag:source=Isle of Man Government
@@ -13798,6 +14185,7 @@ en:
     sport=badminton: Tag:sport=badminton
     sport=balle_pelote: Tag:sport=balle pelote
     sport=bandy: Tag:sport=bandy
+    sport=barre: Tag:sport=barre
     sport=base: Tag:sport=base
     sport=baseball: Tag:sport=baseball
     sport=basketball: Tag:sport=basketball
@@ -13935,6 +14323,7 @@ en:
     sport=taekwondo: Tag:sport=taekwondo
     sport=team_handball: Tag:sport=team handball
     sport=tennis: Tag:sport=tennis
+    sport=teqball: Tag:sport=teqball
     sport=tetherball: Tag:sport=tetherball
     sport=toboggan: Tag:sport=toboggan
     sport=touch_football: Tag:sport=touch football
@@ -13960,6 +14349,7 @@ en:
     station=monorail: Tag:station=monorail
     station=subway: Tag:station=subway
     statue=animal: Tag:statue=animal
+    statue=buddha: Tag:statue=buddha
     statue=equestrian: Tag:statue=equestrian
     statue=virgin: Tag:statue=virgin
     stile=stepover: Tag:stile=stepover
@@ -14041,6 +14431,7 @@ en:
     surface=rubber: Tag:surface=rubber
     surface=sand: Tag:surface=sand
     surface=sett: Tag:surface=sett
+    surface=shells: Tag:surface=shells
     surface=snow: Tag:surface=snow
     surface=soil: Tag:surface=soil
     surface=stepping_stones: Tag:surface=stepping stones
@@ -14074,6 +14465,7 @@ en:
     switch=disconnector: Tag:switch=disconnector
     switch=earthing: Tag:switch=earthing
     switch=mechanical: Tag:switch=mechanical
+    symbol=Knafelčeva_markacija: Tag:symbol=Knafelčeva markacija
     tactile_paving=incorrect: Tag:tactile paving=incorrect
     tactile_paving=no: Tag:tactile paving=no
     tactile_paving=partial: Tag:tactile paving=partial
@@ -14165,6 +14557,7 @@ en:
     tower:type=anchor: Tag:tower:type=anchor
     tower:type=bell_tower: Tag:tower:type=bell tower
     tower:type=bridge: Tag:tower:type=bridge
+    tower:type=clock: Tag:tower:type=clock
     tower:type=communication: Tag:tower:type=communication
     tower:type=cooling: Tag:tower:type=cooling
     tower:type=defensive: Tag:tower:type=defensive
@@ -14187,6 +14580,8 @@ en:
     tower:type=suspension: Tag:tower:type=suspension
     tower:type=transposing: Tag:tower:type=transposing
     tower:type=watchtower: Tag:tower:type=watchtower
+    townhall:type=barangay: Tag:townhall:type=barangay
+    townhall:type=town: Tag:townhall:type=town
     trade=agricultural_supplies: Tag:trade=agricultural supplies
     trade=building_supplies: Tag:trade=building supplies
     trade=timber: Tag:trade=timber
@@ -14312,6 +14707,7 @@ en:
     traffic_sign=NL:G11: Tag:traffic sign=NL:G11
     traffic_sign=NL:G12a: Tag:traffic sign=NL:G12a
     traffic_sign=NL:G13: Tag:traffic sign=NL:G13
+    traffic_sign=NL:G7: Tag:traffic sign=NL:G7
     traffic_sign=NL:L51: Tag:traffic sign=NL:L51
     traffic_sign=PL:A-1: Tag:traffic sign=PL:A-1
     traffic_sign=PL:A-2: Tag:traffic sign=PL:A-2
@@ -14480,6 +14876,7 @@ en:
     vending=ice_cubes: Tag:vending=ice cubes
     vending=ink_cartridges: Tag:vending=ink cartridges
     vending=laundry_detergent: Tag:vending=laundry detergent
+    vending=lottery: Tag:vending=lottery
     vending=milk: Tag:vending=milk
     vending=news_papers: Tag:vending=news papers
     vending=newspapers: Tag:vending=newspapers
@@ -14537,6 +14934,7 @@ en:
     water=dock: Tag:water=dock
     water=drain: Tag:water=drain
     water=fish_pass: Tag:water=fish pass
+    water=fishpond: Tag:water=fishpond
     water=harbour: Tag:water=harbour
     water=intermittent: Tag:water=intermittent
     water=kolk: Tag:water=kolk
@@ -14556,6 +14954,7 @@ en:
     water=swale: Tag:water=swale
     water=tidal: Tag:water=tidal
     water=wastewater: Tag:water=wastewater
+    water_source=groundwater: Tag:water source=groundwater
     water_source=main: Tag:water source=main
     water_source=river: Tag:water source=river
     waterway=artificial: Tag:waterway=artificial
@@ -14586,7 +14985,6 @@ en:
     waterway=rapids: Tag:waterway=rapids
     waterway=river: Tag:waterway=river
     waterway=riverbank: Tag:waterway=riverbank
-    waterway=riverbed: Tag:waterway=riverbed
     waterway=sanitary_dump_station: Tag:waterway=sanitary dump station
     waterway=seaway: Tag:waterway=seaway
     waterway=security_lock: Tag:waterway=security lock
@@ -14604,6 +15002,7 @@ en:
     waterway=weir: Tag:waterway=weir
     weather_control=launchpad: Tag:weather control=launchpad
     wetland=bog: Tag:wetland=bog
+    wetland=dambo: Tag:wetland=dambo
     wetland=fen: Tag:wetland=fen
     wetland=mangrove: Tag:wetland=mangrove
     wetland=marsh: Tag:wetland=marsh
@@ -14676,8 +15075,6 @@ es:
     abandoned:railway: ES:Key:abandoned:railway
     abutters: ES:Key:abutters
     access: ES:Key:access
-    access:lhv: ES:Key:access:lhv
-    access:roadtrain: ES:Key:access:roadtrain
     addr: ES:Key:addr
     addr:*: ES:Key:addr:*
     addr:city: ES:Key:addr:city
@@ -14727,7 +15124,7 @@ es:
     bench: ES:Key:bench
     bicycle: ES:Key:bicycle
     bicycle_parking: ES:Key:bicycle parking
-    bicycle_road: ES:Key:bicycle road
+    bin: ES:Key:bin
     board:title: ES:Key:board:title
     boat: ES:Key:boat
     bollard: ES:Key:bollard
@@ -14855,6 +15252,7 @@ es:
     'disused:': 'ES:Key:disused:'
     disused:*: ES:Key:disused:*
     disused:railway: ES:Key:disused:railway
+    divipola: ES:Key:divipola
     drain: ES:Key:drain
     drinking_water: ES:Key:drinking water
     drive_in: ES:Key:drive in
@@ -15035,10 +15433,12 @@ es:
     name:es: ES:Key:name:es
     name:etymology: ES:Key:name:etymology
     name:etymology:wikidata: ES:Key:name:etymology:wikidata
+    name:eu-x-gaceria: ES:Key:name:eu-x-gaceria
     name:hop: ES:Key:name:hop
     name:left: ES:Key:name:left
     name:mtp: ES:Key:name:mtp
     name:right: ES:Key:name:right
+    name:signed: ES:Key:name:signed
     narrow: ES:Key:narrow
     nat_name: ES:Key:nat name
     nat_ref: ES:Key:nat ref
@@ -15116,6 +15516,7 @@ es:
     recycling_type: ES:Key:recycling type
     ref: ES:Key:ref
     ref:bic: ES:Key:ref:bic
+    ref:codcat: ES:Key:ref:codcat
     ref:color: ES:Key:ref:color
     ref:colour: ES:Key:ref:colour
     ref:ine: ES:Key:ref:ine
@@ -15163,7 +15564,6 @@ es:
     short_name: ES:Key:short name
     shoulder: ES:Key:shoulder
     sidewalk: ES:Key:sidewalk
-    site_type: ES:Key:site type
     ski: ES:Key:ski
     smoothness: ES:Key:smoothness
     social_facility: ES:Key:social facility
@@ -15492,6 +15892,7 @@ es:
     amenity=stool: ES:Tag:amenity=stool
     amenity=stripclub: ES:Tag:amenity=stripclub
     amenity=studio: ES:Tag:amenity=studio
+    amenity=surf_school: ES:Tag:amenity=surf school
     amenity=swingerclub: ES:Tag:amenity=swingerclub
     amenity=table: ES:Tag:amenity=table
     amenity=taxi: ES:Tag:amenity=taxi
@@ -15535,6 +15936,7 @@ es:
     area=yes: ES:Tag:area=yes
     artwork_type=graffiti: ES:Tag:artwork type=graffiti
     artwork_type=sculpture: ES:Tag:artwork type=sculpture
+    artwork_type=statue: ES:Tag:artwork type=statue
     atm=yes: ES:Tag:atm=yes
     attraction=roller_coaster: ES:Tag:attraction=roller coaster
     attraction=water_slide: ES:Tag:attraction=water slide
@@ -15595,6 +15997,7 @@ es:
     bicycle=no: ES:Tag:bicycle=no
     bicycle=use_sidepath: ES:Tag:bicycle=use sidepath
     bicycle=yes: ES:Tag:bicycle=yes
+    bicycle_road=yes: ES:Tag:bicycle road=yes
     border_type=baseline: ES:Tag:border type=baseline
     border_type=contiguous: ES:Tag:border type=contiguous
     border_type=eez: ES:Tag:border type=eez
@@ -15657,6 +16060,7 @@ es:
     building=construction: ES:Tag:building=construction
     building=container: ES:Tag:building=container
     building=cowshed: ES:Tag:building=cowshed
+    building=data_center: ES:Tag:building=data center
     building=detached: ES:Tag:building=detached
     building=digester: ES:Tag:building=digester
     building=dormitory: ES:Tag:building=dormitory
@@ -15894,6 +16298,7 @@ es:
     cuisine=greek: ES:Tag:cuisine=greek
     cuisine=grill: ES:Tag:cuisine=grill
     cuisine=gyro: ES:Tag:cuisine=gyro
+    cuisine=gyros: ES:Tag:cuisine=gyros
     cuisine=hot_dog: ES:Tag:cuisine=hot dog
     cuisine=hot_pot: ES:Tag:cuisine=hot pot
     cuisine=ice_cream: ES:Tag:cuisine=ice cream
@@ -16184,6 +16589,7 @@ es:
     historic=gallows: ES:Tag:historic=gallows
     historic=heritage: ES:Tag:historic=heritage
     historic=highwater_mark: ES:Tag:historic=highwater mark
+    historic=house: ES:Tag:historic=house
     historic=locomotive: ES:Tag:historic=locomotive
     historic=manor: ES:Tag:historic=manor
     historic=memorial: ES:Tag:historic=memorial
@@ -16235,6 +16641,7 @@ es:
     information=office: ES:Tag:information=office
     information=tactile_map: ES:Tag:information=tactile map
     information=visitor_centre: ES:Tag:information=visitor centre
+    insurance=health: ES:Tag:insurance=health
     internet_access=no: ES:Tag:internet access=no
     internet_access=wlan: ES:Tag:internet access=wlan
     internet_access=yes: ES:Tag:internet access=yes
@@ -16291,6 +16698,7 @@ es:
     landuse=village_green: ES:Tag:landuse=village green
     landuse=vineyard: ES:Tag:landuse=vineyard
     landuse=winter_sports: ES:Tag:landuse=winter sports
+    lawyer=notary: ES:Tag:lawyer=notary
     leaf_cycle=deciduous: ES:Tag:leaf cycle=deciduous
     leaf_cycle=evergreen: ES:Tag:leaf cycle=evergreen
     leaf_cycle=mixed: ES:Tag:leaf cycle=mixed
@@ -16379,6 +16787,7 @@ es:
     man_made=groyne: ES:Tag:man made=groyne
     man_made=guard_stone: ES:Tag:man made=guard stone
     man_made=ice_house: ES:Tag:man made=ice house
+    man_made=insect_hotel: ES:Tag:man made=insect hotel
     man_made=kiln: ES:Tag:man made=kiln
     man_made=lighthouse: ES:Tag:man made=lighthouse
     man_made=manhole: ES:Tag:man made=manhole
@@ -16397,6 +16806,7 @@ es:
     man_made=pump: ES:Tag:man made=pump
     man_made=pumping_rig: ES:Tag:man made=pumping rig
     man_made=pumping_station: ES:Tag:man made=pumping station
+    man_made=quay: ES:Tag:man made=quay
     man_made=reservoir_covered: ES:Tag:man made=reservoir covered
     man_made=silo: ES:Tag:man made=silo
     man_made=snow_fence: ES:Tag:man made=snow fence
@@ -16455,6 +16865,7 @@ es:
     military=trench: ES:Tag:military=trench
     mooring=guest: ES:Tag:mooring=guest
     mountain_pass=yes: ES:Tag:mountain pass=yes
+    name:signed=no: ES:Tag:name:signed=no
     name=Dollarama: ES:Tag:name=Dollarama
     name=Herfy: ES:Tag:name=Herfy
     name=The_Church_of_Jesus_Christ_of_Latter-day_Saints: ES:Tag:name=The Church of
@@ -16608,6 +17019,7 @@ es:
     parking=underground: ES:Tag:parking=underground
     passenger=yes: ES:Tag:passenger=yes
     passing_places=yes: ES:Tag:passing places=yes
+    physically_present=no: ES:Tag:physically present=no
     place=allotments: ES:Tag:place=allotments
     place=archipelago: ES:Tag:place=archipelago
     place=borough: ES:Tag:place=borough
@@ -17392,6 +17804,7 @@ es:
     wetland=reedbed: ES:Tag:wetland=reedbed
     wetland=tidalflat: ES:Tag:wetland=tidalflat
     wetland=wet_meadow: ES:Tag:wetland=wet meadow
+    winter_road=yes: ES:Tag:winter road=yes
     worship=stations_of_the_cross: ES:Tag:worship=stations of the cross
     zoo=falconry: ES:Tag:zoo=falconry
 et:
@@ -17527,6 +17940,7 @@ fi:
     amenity=bureau_de_change: Fi:Tag:amenity=bureau de change
     amenity=car_rental: Fi:Tag:amenity=car rental
     amenity=car_sharing: Fi:Tag:amenity=car sharing
+    amenity=car_wash: Fi:Tag:amenity=car wash
     amenity=carpet_washing: Fi:Tag:amenity=carpet washing
     amenity=cinema: Fi:Tag:amenity=cinema
     amenity=courthouse: Fi:Tag:amenity=courthouse
@@ -17549,6 +17963,8 @@ fi:
     building=church: Fi:Tag:building=church
     building=garage: Fi:Tag:building=garage
     building=garages: Fi:Tag:building=garages
+    hazard=curve: Fi:Tag:hazard=curve
+    hazard=curves: Fi:Tag:hazard=curves
     highway=crossing: Fi:Tag:highway=crossing
     highway=footway: Fi:Tag:highway=footway
     highway=give_way: Fi:Tag:highway=give way
@@ -17609,6 +18025,7 @@ fr:
     aeroway: FR:Key:aeroway
     agrarian: FR:Key:agrarian
     agricultural: FR:Key:agricultural
+    air_conditioning: FR:Key:air conditioning
     alt_name: FR:Key:alt name
     amenity: FR:Key:amenity
     animal: FR:Key:animal
@@ -17619,8 +18036,10 @@ fr:
     armrest: FR:Key:armrest
     artist_name: FR:Key:artist name
     artwork_type: FR:Key:artwork type
+    assembly_point:tornado: FR:Key:assembly point:tornado
     attraction: FR:Key:attraction
     authentication: FR:Key:authentication
+    authentication:*: FR:Key:authentication:*
     avalanche_transceiver: FR:Key:avalanche transceiver
     backcountry: FR:Key:backcountry
     backrest: FR:Key:backrest
@@ -17658,6 +18077,7 @@ fr:
     bulk_purchase: FR:Key:bulk purchase
     bus: FR:Key:bus
     busway: FR:Key:busway
+    cables: FR:Key:cables
     cafe: FR:Key:cafe
     camera:direction: FR:Key:camera:direction
     camp_site: FR:Key:camp site
@@ -17711,6 +18131,7 @@ fr:
     crossing:markings: FR:Key:crossing:markings
     cuisine: FR:Key:cuisine
     currency: FR:Key:currency
+    currency:XLT: FR:Key:currency:XLT
     cutting: FR:Key:cutting
     cycle_barrier: FR:Key:cycle barrier
     cycle_barrier:installation: FR:Key:cycle barrier:installation
@@ -17775,6 +18196,7 @@ fr:
     female: FR:Key:female
     fence_type: FR:Key:fence type
     fire_path: FR:Key:fire path
+    fishing: FR:Key:fishing
     fixme: FR:Key:fixme
     floating: FR:Key:floating
     flood_prone: FR:Key:flood prone
@@ -17835,6 +18257,7 @@ fr:
     intermittent: FR:Key:intermittent
     internet_access:ssid: FR:Key:internet access:ssid
     interval: FR:Key:interval
+    isced:level: FR:Key:isced:level
     junction: FR:Key:junction
     kerb: FR:Key:kerb
     kindergarten:FR: FR:Key:kindergarten:FR
@@ -17852,6 +18275,7 @@ fr:
     level: FR:Key:level
     lgbtq: FR:Key:lgbtq
     lifeguard: FR:Key:lifeguard
+    line_arrangement: FR:Key:line arrangement
     line_attachment: FR:Key:line attachment
     line_management: FR:Key:line management
     lit: FR:Key:lit
@@ -17940,6 +18364,7 @@ fr:
     overtaking:hgv: FR:Key:overtaking:hgv
     owner: FR:Key:owner
     par: FR:Key:par
+    parish: FR:Key:parish
     park_ride: FR:Key:park ride
     parking: FR:Key:parking
     parking_space: FR:Key:parking space
@@ -17948,6 +18373,7 @@ fr:
     payment:MoyenDePaiement: FR:Key:payment:MoyenDePaiement
     payment:credit_cards: FR:Key:payment:credit cards
     payment:foo: FR:Key:payment:foo
+    pedagogy: FR:Key:pedagogy
     permanent: FR:Key:permanent
     phone: FR:Key:phone
     pilgrimage: FR:Key:pilgrimage
@@ -18157,12 +18583,14 @@ fr:
     windings: FR:Key:windings
     windings:auto: FR:Key:windings:auto
     winter_service: FR:Key:winter service
+    wires: FR:Key:wires
     xmas:feature: FR:Key:xmas:feature
     zero_waste: FR:Key:zero waste
     zone:maxspeed: FR:Key:zone:maxspeed
     zoo: FR:Key:zoo
   tag:
     FIXME=Position_estimated: FR:Tag:FIXME=Position estimated
+    Man_made=video_wall: FR:Tag:Man made=video wall
     abandoned:amenity=prison_camp: FR:Tag:abandoned:amenity=prison camp
     abandoned=yes: FR:Tag:abandoned=yes
     access=customers: FR:Tag:access=customers
@@ -18203,6 +18631,7 @@ fr:
     amenity=animal_shelter: FR:Tag:amenity=animal shelter
     amenity=arts_centre: FR:Tag:amenity=arts centre
     amenity=atm: FR:Tag:amenity=atm
+    amenity=baby_hatch: FR:Tag:amenity=baby hatch
     amenity=baking_oven: FR:Tag:amenity=baking oven
     amenity=bank: FR:Tag:amenity=bank
     amenity=bar: FR:Tag:amenity=bar
@@ -18252,6 +18681,7 @@ fr:
     amenity=events_venue: FR:Tag:amenity=events venue
     amenity=fast_food: FR:Tag:amenity=fast food
     amenity=feeding_place: FR:Tag:amenity=feeding place
+    amenity=ferry_terminal: FR:Tag:amenity=ferry terminal
     amenity=fire_hydrant: FR:Tag:amenity=fire hydrant
     amenity=fire_station: FR:Tag:amenity=fire station
     amenity=food_court: FR:Tag:amenity=food court
@@ -18275,11 +18705,13 @@ fr:
     amenity=library: FR:Tag:amenity=library
     amenity=library_dropoff: FR:Tag:amenity=library dropoff
     amenity=loading_dock: FR:Tag:amenity=loading dock
+    amenity=locker: FR:Tag:amenity=locker
     amenity=lounger: FR:Tag:amenity=lounger
     amenity=love_hotel: FR:Tag:amenity=love hotel
     amenity=mailroom: FR:Tag:amenity=mailroom
     amenity=marae: FR:Tag:amenity=marae
     amenity=marketplace: FR:Tag:amenity=marketplace
+    amenity=mist_spraying_cooler: FR:Tag:amenity=mist spraying cooler
     amenity=monastery: FR:Tag:amenity=monastery
     amenity=mortuary: FR:Tag:amenity=mortuary
     amenity=motorcycle_parking: FR:Tag:amenity=motorcycle parking
@@ -18346,6 +18778,7 @@ fr:
     artwork_type=sculpture: FR:Tag:artwork type=sculpture
     atm=yes: FR:Tag:atm=yes
     attraction=animal: FR:Tag:attraction=animal
+    attraction=water_slide: FR:Tag:attraction=water slide
     barrier=bar: FR:Tag:barrier=bar
     barrier=barrier_board: FR:Tag:barrier=barrier board
     barrier=block: FR:Tag:barrier=block
@@ -18396,6 +18829,7 @@ fr:
     bicycle=dismount: FR:Tag:bicycle=dismount
     bicycle=use_sidepath: FR:Tag:bicycle=use sidepath
     bicycle_road=yes: FR:Tag:bicycle road=yes
+    boules=petanque: FR:Tag:boules=petanque
     boundary=administrative: FR:Tag:boundary=administrative
     boundary=religious_administration: FR:Tag:boundary=religious administration
     boundary=special_economic_zone: FR:Tag:boundary=special economic zone
@@ -18450,6 +18884,7 @@ fr:
     building=sports_hall: FR:Tag:building=sports hall
     building=stable: FR:Tag:building=stable
     building=stadium: FR:Tag:building=stadium
+    building=static_caravan: FR:Tag:building=static caravan
     building=stilt_house: FR:Tag:building=stilt house
     building=sty: FR:Tag:building=sty
     building=tent: FR:Tag:building=tent
@@ -18575,6 +19010,7 @@ fr:
     emergency=air_rescue_service: FR:Tag:emergency=air rescue service
     emergency=ambulance_station: FR:Tag:emergency=ambulance station
     emergency=assembly_point: FR:Tag:emergency=assembly point
+    emergency=control_centre: FR:Tag:emergency=control centre
     emergency=defibrillator: FR:Tag:emergency=defibrillator
     emergency=dry_riser_inlet: FR:Tag:emergency=dry riser inlet
     emergency=emergency_ward_entrance: FR:Tag:emergency=emergency ward entrance
@@ -18802,6 +19238,7 @@ fr:
     line_management=termination: FR:Tag:line management=termination
     line_management=transition: FR:Tag:line management=transition
     line_management=transpose: FR:Tag:line management=transpose
+    location=overground: FR:Tag:location=overground
     location=underground: FR:Tag:location=underground
     man_made=adit: FR:Tag:man made=adit
     man_made=architecture_line: FR:Tag:man made=architecture line
@@ -18828,6 +19265,7 @@ fr:
     man_made=mineshaft: FR:Tag:man made=mineshaft
     man_made=monitoring_station: FR:Tag:man made=monitoring station
     man_made=nesting_site: FR:Tag:man made=nesting site
+    man_made=outfall: FR:Tag:man made=outfall
     man_made=petroleum_well: FR:Tag:man made=petroleum well
     man_made=pier: FR:Tag:man made=pier
     man_made=planter: FR:Tag:man made=planter
@@ -18842,6 +19280,7 @@ fr:
     man_made=tower: FR:Tag:man made=tower
     man_made=utility_pole: FR:Tag:man made=utility pole
     man_made=ventilation_shaft: FR:Tag:man made=ventilation shaft
+    man_made=video_wall: FR:Tag:man made=video wall
     man_made=wastewater_plant: FR:Tag:man made=wastewater plant
     man_made=water_tap: FR:Tag:man made=water tap
     man_made=water_tower: FR:Tag:man made=water tower
@@ -18851,7 +19290,6 @@ fr:
     man_made=wildlife_crossing: FR:Tag:man made=wildlife crossing
     man_made=windmill: FR:Tag:man made=windmill
     man_made=windpump: FR:Tag:man made=windpump
-    man_made_chimney: FR:Tag:man made chimney
     marker=aerial: FR:Tag:marker=aerial
     marker=ground: FR:Tag:marker=ground
     marker=pedestal: FR:Tag:marker=pedestal
@@ -18859,7 +19297,10 @@ fr:
     marker=post: FR:Tag:marker=post
     marker=stone: FR:Tag:marker=stone
     material=concrete: FR:Tag:material=concrete
+    mechanical_driver=combustion_engine: FR:Tag:mechanical driver=combustion engine
     mechanical_driver=manual: FR:Tag:mechanical driver=manual
+    mechanical_driver=reciprocating_solenoid: FR:Tag:mechanical driver=reciprocating
+      solenoid
     medical=aed: FR:Tag:medical=aed
     megalith_type=menhir: FR:Tag:megalith type=menhir
     memorial=ghost_bike: FR:Tag:memorial=ghost bike
@@ -18870,6 +19311,7 @@ fr:
     natural=anthill: FR:Tag:natural=anthill
     natural=bare_rock: FR:Tag:natural=bare rock
     natural=beach: FR:Tag:natural=beach
+    natural=blockfield: FR:Tag:natural=blockfield
     natural=cave_entrance: FR:Tag:natural=cave entrance
     natural=cliff: FR:Tag:natural=cliff
     natural=coastline: FR:Tag:natural=coastline
@@ -18921,6 +19363,7 @@ fr:
     office=supervised_injection_site: FR:Tag:office=supervised injection site
     office=surveyor: FR:Tag:office=surveyor
     office=travel_agent: FR:Tag:office=travel agent
+    oneway=yes: FR:Tag:oneway=yes
     opening_hours:signed=no: FR:Tag:opening hours:signed=no
     operator=EDF: FR:Tag:operator=EDF
     operator=ERDF: FR:Tag:operator=ERDF
@@ -18947,13 +19390,19 @@ fr:
     pipeline=valve: FR:Tag:pipeline=valve
     piste:type=nordic: FR:Tag:piste:type=nordic
     place=city: FR:Tag:place=city
+    place=country: FR:Tag:place=country
+    place=county: FR:Tag:place=county
+    place=district: FR:Tag:place=district
     place=hamlet: FR:Tag:place=hamlet
     place=island: FR:Tag:place=island
     place=isolated_dwelling: FR:Tag:place=isolated dwelling
     place=locality: FR:Tag:place=locality
     place=municipality: FR:Tag:place=municipality
     place=neighbourhood: FR:Tag:place=neighbourhood
+    place=province: FR:Tag:place=province
+    place=region: FR:Tag:place=region
     place=square: FR:Tag:place=square
+    place=state: FR:Tag:place=state
     place=suburb: FR:Tag:place=suburb
     place=town: FR:Tag:place=town
     place=village: FR:Tag:place=village
@@ -19011,6 +19460,7 @@ fr:
     railway=platform_section: FR:Tag:railway=platform section
     railway=preserved: FR:Tag:railway=preserved
     railway=rail: FR:Tag:railway=rail
+    railway=signal: FR:Tag:railway=signal
     railway=station: FR:Tag:railway=station
     railway=subway: FR:Tag:railway=subway
     railway=subway_entrance: FR:Tag:railway=subway entrance
@@ -19138,6 +19588,7 @@ fr:
     shop=sewing: FR:Tag:shop=sewing
     shop=shoes: FR:Tag:shop=shoes
     shop=stationery: FR:Tag:shop=stationery
+    shop=storage_rental: FR:Tag:shop=storage rental
     shop=street_vendor: FR:Tag:shop=street vendor
     shop=supermarket: FR:Tag:shop=supermarket
     shop=tattoo: FR:Tag:shop=tattoo
@@ -19168,6 +19619,7 @@ fr:
     sport=hockey: FR:Tag:sport=hockey
     sport=horse_racing: FR:Tag:sport=horse racing
     sport=motocross: FR:Tag:sport=motocross
+    sport=pelota: FR:Tag:sport=pelota
     sport=rugby_league: FR:Tag:sport=rugby league
     sport=rugby_union: FR:Tag:sport=rugby union
     sport=sailing: FR:Tag:sport=sailing
@@ -19290,6 +19742,7 @@ fr:
     vending=sweets: FR:Tag:vending=sweets
     vending=water: FR:Tag:vending=water
     wall=no: FR:Tag:wall=no
+    wall=noise_barrier: FR:Tag:wall=noise barrier
     waste=cigarettes: FR:Tag:waste=cigarettes
     waste=dog_excrement: FR:Tag:waste=dog excrement
     water=pond: FR:Tag:water=pond
@@ -19328,7 +19781,7 @@ gcf:
   key:
     club: Gcf:Key:club
     name: Gcf:Key:name
-    name:gcf: GCF:Key:name:gcf
+    name:gcf: Gcf:Key:name:gcf
     name:ht: Gcf:Key:name:ht
   tag:
     amenity=bench: Gcf:Tag:amenity=bench
@@ -19339,6 +19792,7 @@ gcf:
     amenity=ice_cream: Gcf:Tag:amenity=ice cream
     amenity=lounger: Gcf:Tag:amenity=lounger
     amenity=love_hotel: Gcf:Tag:amenity=love hotel
+    amenity=prison: Gcf:Tag:amenity=prison
     amenity=smoking_area: Gcf:Tag:amenity=smoking area
     amenity=telephone: Gcf:Tag:amenity=telephone
     amenity=toilets: Gcf:Tag:amenity=toilets
@@ -19503,6 +19957,7 @@ hu:
     place: Hu:Key:place
     railway: Hu:Key:railway
     ref:HU:edid: Hu:Key:ref:HU:edid
+    ref:HU:om: Hu:Key:ref:HU:om
     shop: Hu:Key:shop
     smoothness: Hu:Key:smoothness
     surface: Hu:Key:surface
@@ -19562,6 +20017,7 @@ it:
     barrier: IT:Key:barrier
     basin: IT:Key:basin
     beauty: IT:Key:beauty
+    bell_tower: IT:Key:bell tower
     bicycle: IT:Key:bicycle
     bicycle_parking: IT:Key:bicycle parking
     books: IT:Key:books
@@ -19644,6 +20100,7 @@ it:
     maxheight: IT:Key:maxheight
     maxlength: IT:Key:maxlength
     maxspeed: IT:Key:maxspeed
+    maxstay: IT:Key:maxstay
     maxweight: IT:Key:maxweight
     maxwidth: IT:Key:maxwidth
     military: IT:Key:military
@@ -19756,6 +20213,7 @@ it:
     amenity=animal_breeding: IT:Tag:amenity=animal breeding
     amenity=animal_shelter: IT:Tag:amenity=animal shelter
     amenity=atm: IT:Tag:amenity=atm
+    amenity=baby_hatch: IT:Tag:amenity=baby hatch
     amenity=bank: IT:Tag:amenity=bank
     amenity=bar: IT:Tag:amenity=bar
     amenity=bbq: IT:Tag:amenity=bbq
@@ -19842,6 +20300,7 @@ it:
     barrier=toll_booth: IT:Tag:barrier=toll booth
     barrier=turnstile: IT:Tag:barrier=turnstile
     barrier=wall: IT:Tag:barrier=wall
+    barrier=yes: IT:Tag:barrier=yes
     bicycle_road=yes: IT:Tag:bicycle road=yes
     bridge=boardwalk: IT:Tag:bridge=boardwalk
     building=bridge: IT:Tag:building=bridge
@@ -19979,6 +20438,7 @@ it:
     landuse=construction: IT:Tag:landuse=construction
     landuse=flowerbed: IT:Tag:landuse=flowerbed
     landuse=greenhouse_horticulture: IT:Tag:landuse=greenhouse horticulture
+    landuse=residential: IT:Tag:landuse=residential
     landuse=retail: IT:Tag:landuse=retail
     landuse=salt_pond: IT:Tag:landuse=salt pond
     leisure=beach_resort: IT:Tag:leisure=beach resort
@@ -19997,6 +20457,7 @@ it:
     man_made=goods_conveyor: IT:Tag:man made=goods conveyor
     man_made=mast: IT:Tag:man made=mast
     man_made=works: IT:Tag:man made=works
+    meadow=pasture: IT:Tag:meadow=pasture
     memorial=stolperstein: IT:Tag:memorial=stolperstein
     natural=bare_rock: IT:Tag:natural=bare rock
     natural=cape: IT:Tag:natural=cape
@@ -20143,6 +20604,7 @@ ja:
     access:lanes: JA:Key:access:lanes
     addr: JA:Key:addr
     addr:*: JA:Key:addr:*
+    addr:block_number: JA:Key:addr:block number
     addr:city: JA:Key:addr:city
     addr:country: JA:Key:addr:country
     addr:county: JA:Key:addr:county
@@ -20175,6 +20637,7 @@ ja:
     alt_name: JA:Key:alt name
     amenity: JA:Key:amenity
     animated: JA:Key:animated
+    aquaculture: JA:Key:aquaculture
     archaeological_site: JA:Key:archaeological site
     architect: JA:Key:architect
     area: JA:Key:area
@@ -20233,6 +20696,7 @@ ja:
     building: JA:Key:building
     building:architecture: JA:Key:building:architecture
     building:colour: JA:Key:building:colour
+    building:earthquake-resistant: JA:Key:building:earthquake-resistant
     building:fireproof: JA:Key:building:fireproof
     building:flats: JA:Key:building:flats
     building:levels: JA:Key:building:levels
@@ -20241,6 +20705,7 @@ ja:
     building:min_level: JA:Key:building:min level
     building:part: JA:Key:building:part
     building:parts: JA:Key:building:parts
+    building:quake-resistant: JA:Key:building:quake-resistant
     building:units: JA:Key:building:units
     building:use: JA:Key:building:use
     bulk_purchase: JA:Key:bulk purchase
@@ -20254,8 +20719,11 @@ ja:
     camp_type: JA:Key:camp type
     capacity: JA:Key:capacity
     capacity:disabled: JA:Key:capacity:disabled
+    capacity:long: JA:Key:capacity:long
+    capacity:standard: JA:Key:capacity:standard
     capital: JA:Key:capital
     car_wash: JA:Key:car wash
+    carpenter: JA:Key:carpenter
     carriage: JA:Key:carriage
     castle_type: JA:Key:castle type
     cave:name: JA:Key:cave:name
@@ -20272,6 +20740,7 @@ ja:
     comment: JA:Key:comment
     communication:mobile_phone: JA:Key:communication:mobile phone
     community_centre: JA:Key:community centre
+    community_centre:for: JA:Key:community centre:for
     condition: JA:Key:condition
     conditional: JA:Key:conditional
     construction: JA:Key:construction
@@ -20438,6 +20907,7 @@ ja:
     happy_hours: JA:Key:happy hours
     harbour: JA:Key:harbour
     harbour:category: JA:Key:harbour:category
+    hazard: JA:Key:hazard
     hazard_prone: JA:Key:hazard prone
     hazmat: JA:Key:hazmat
     healthcare: JA:Key:healthcare
@@ -20529,6 +20999,7 @@ ja:
     manhole: JA:Key:manhole
     manufacturer: JA:Key:manufacturer
     mapillary: JA:Key:mapillary
+    marker: JA:Key:marker
     massage: JA:Key:massage
     material: JA:Key:material
     max_age: JA:Key:max age
@@ -20775,6 +21246,7 @@ ja:
     tank: JA:Key:tank
     taxi: JA:Key:taxi
     taxon: JA:Key:taxon
+    telecom: JA:Key:telecom
     tenant: JA:Key:tenant
     tents: JA:Key:tents
     theatre:type: JA:Key:theatre:type
@@ -20832,6 +21304,7 @@ ja:
     water_source: JA:Key:water source
     waterway: JA:Key:waterway
     website: JA:Key:website
+    website:*: JA:Key:website:*
     wetland: JA:Key:wetland
     wheelchair: JA:Key:wheelchair
     wholesale: JA:Key:wholesale
@@ -20990,6 +21463,7 @@ ja:
     amenity=game_feeding: JA:Tag:amenity=game feeding
     amenity=grave_yard: JA:Tag:amenity=grave yard
     amenity=grit_bin: JA:Tag:amenity=grit bin
+    amenity=hookah_lounge: JA:Tag:amenity=hookah lounge
     amenity=hospital: JA:Tag:amenity=hospital
     amenity=hunting_stand: JA:Tag:amenity=hunting stand
     amenity=ice_cream: JA:Tag:amenity=ice cream
@@ -21128,6 +21602,7 @@ ja:
     boundary=administrative: JA:Tag:boundary=administrative
     boundary=civil: JA:Tag:boundary=civil
     boundary=economic: JA:Tag:boundary=economic
+    boundary=hazard: JA:Tag:boundary=hazard
     boundary=historic: JA:Tag:boundary=historic
     boundary=local_authority: JA:Tag:boundary=local authority
     boundary=maritime: JA:Tag:boundary=maritime
@@ -21163,6 +21638,7 @@ ja:
     bridge=trestle: JA:Tag:bridge=trestle
     bridge=viaduct: JA:Tag:bridge=viaduct
     building=apartments: JA:Tag:building=apartments
+    building=bakehouse: JA:Tag:building=bakehouse
     building=barn: JA:Tag:building=barn
     building=bridge: JA:Tag:building=bridge
     building=bungalow: JA:Tag:building=bungalow
@@ -21183,6 +21659,7 @@ ja:
     building=entrance: JA:Tag:building=entrance
     building=farm: JA:Tag:building=farm
     building=farm_auxiliary: JA:Tag:building=farm auxiliary
+    building=fire_lookout: JA:Tag:building=fire lookout
     building=garage: JA:Tag:building=garage
     building=garages: JA:Tag:building=garages
     building=greenhouse: JA:Tag:building=greenhouse
@@ -21256,6 +21733,7 @@ ja:
     craft=handicraft: JA:Tag:craft=handicraft
     craft=hvac: JA:Tag:craft=hvac
     craft=insulation: JA:Tag:craft=insulation
+    craft=interior_decorator: JA:Tag:craft=interior decorator
     craft=jeweller: JA:Tag:craft=jeweller
     craft=joiner: JA:Tag:craft=joiner
     craft=key_cutter: JA:Tag:craft=key cutter
@@ -21298,6 +21776,7 @@ ja:
     cuisine=dessert: JA:Tag:cuisine=dessert
     cuisine=dumpling: JA:Tag:cuisine=dumpling
     cuisine=japanese: JA:Tag:cuisine=japanese
+    cuisine=regional: JA:Tag:cuisine=regional
     cuisine=sushi: JA:Tag:cuisine=sushi
     cycle_network=JP:prefectural: JA:Tag:cycle network=JP:prefectural
     cycleway:both=no: JA:Tag:cycleway:both=no
@@ -21327,6 +21806,7 @@ ja:
     emergency=fire_extinguisher: JA:Tag:emergency=fire extinguisher
     emergency=fire_hose: JA:Tag:emergency=fire hose
     emergency=fire_hydrant: JA:Tag:emergency=fire hydrant
+    emergency=fire_lookout: JA:Tag:emergency=fire lookout
     emergency=fire_service_inlet: JA:Tag:emergency=fire service inlet
     emergency=fire_water_pond: JA:Tag:emergency=fire water pond
     emergency=landing_site: JA:Tag:emergency=landing site
@@ -21401,6 +21881,7 @@ ja:
     government=prosecutor: JA:Tag:government=prosecutor
     government=register_office: JA:Tag:government=register office
     government=tax: JA:Tag:government=tax
+    government=transportation: JA:Tag:government=transportation
     guidepost=simple: JA:Tag:guidepost=simple
     healthcare:speciality=gynaecology: JA:Tag:healthcare:speciality=gynaecology
     healthcare=blood_donation: JA:Tag:healthcare=blood donation
@@ -21549,6 +22030,7 @@ ja:
     landuse=meadow: JA:Tag:landuse=meadow
     landuse=military: JA:Tag:landuse=military
     landuse=orchard: JA:Tag:landuse=orchard
+    landuse=paddy: JA:Tag:landuse=paddy
     landuse=peat_cutting: JA:Tag:landuse=peat cutting
     landuse=plant_nursery: JA:Tag:landuse=plant nursery
     landuse=port: JA:Tag:landuse=port
@@ -21668,6 +22150,7 @@ ja:
     man_made=power_hydro: JA:Tag:man made=power hydro
     man_made=pumping_station: JA:Tag:man made=pumping station
     man_made=reservoir_covered: JA:Tag:man made=reservoir covered
+    man_made=satellite_dish: JA:Tag:man made=satellite dish
     man_made=silo: JA:Tag:man made=silo
     man_made=snow_fence: JA:Tag:man made=snow fence
     man_made=snow_net: JA:Tag:man made=snow net
@@ -21783,11 +22266,14 @@ ja:
     office=charity: JA:Tag:office=charity
     office=company: JA:Tag:office=company
     office=construction_company: JA:Tag:office=construction company
+    office=cooperative: JA:Tag:office=cooperative
     office=courier: JA:Tag:office=courier
     office=diplomatic: JA:Tag:office=diplomatic
     office=educational_institution: JA:Tag:office=educational institution
     office=employment_agency: JA:Tag:office=employment agency
     office=estate_agent: JA:Tag:office=estate agent
+    office=financial: JA:Tag:office=financial
+    office=financial_advisor: JA:Tag:office=financial advisor
     office=geodesist: JA:Tag:office=geodesist
     office=government: JA:Tag:office=government
     office=insurance: JA:Tag:office=insurance
@@ -21807,6 +22293,7 @@ ja:
     office=surveyor: JA:Tag:office=surveyor
     office=tax_advisor: JA:Tag:office=tax advisor
     office=telecommunication: JA:Tag:office=telecommunication
+    office=therapist: JA:Tag:office=therapist
     office=tutoring: JA:Tag:office=tutoring
     oneway=alternating: JA:Tag:oneway=alternating
     oneway=reversible: JA:Tag:oneway=reversible
@@ -21834,6 +22321,8 @@ ja:
     place=town: JA:Tag:place=town
     place=village: JA:Tag:place=village
     plant:method=photovoltaic: JA:Tag:plant:method=photovoltaic
+    plant:method=thermal: JA:Tag:plant:method=thermal
+    plant:source=solar: JA:Tag:plant:source=solar
     police=academy: JA:Tag:police=academy
     post_office=post_partner: JA:Tag:post office=post partner
     power=catenary_mast: JA:Tag:power=catenary mast
@@ -21925,6 +22414,7 @@ ja:
     service=spur: JA:Tag:service=spur
     service=yard: JA:Tag:service=yard
     shelter_type=gazebo: JA:Tag:shelter type=gazebo
+    shop=agrarian: JA:Tag:shop=agrarian
     shop=alcohol: JA:Tag:shop=alcohol
     shop=anime: JA:Tag:shop=anime
     shop=antiques: JA:Tag:shop=antiques
@@ -21982,6 +22472,7 @@ ja:
     shop=fireplace: JA:Tag:shop=fireplace
     shop=fishing: JA:Tag:shop=fishing
     shop=fishmonger: JA:Tag:shop=fishmonger
+    shop=flooring: JA:Tag:shop=flooring
     shop=florist: JA:Tag:shop=florist
     shop=frame: JA:Tag:shop=frame
     shop=frozen_food: JA:Tag:shop=frozen food
@@ -21999,6 +22490,7 @@ ja:
     shop=gold_buyer: JA:Tag:shop=gold buyer
     shop=golf: JA:Tag:shop=golf
     shop=greengrocer: JA:Tag:shop=greengrocer
+    shop=grocery: JA:Tag:shop=grocery
     shop=hairdresser: JA:Tag:shop=hairdresser
     shop=hardware: JA:Tag:shop=hardware
     shop=health: JA:Tag:shop=health
@@ -22132,6 +22624,8 @@ ja:
     station=subway: JA:Tag:station=subway
     street_vendor=yes: JA:Tag:street vendor=yes
     surface=asphalt: JA:Tag:surface=asphalt
+    telescope:type=optical: JA:Tag:telescope:type=optical
+    telescope:type=radio: JA:Tag:telescope:type=radio
     theatre:type=concert_hall: JA:Tag:theatre:type=concert hall
     tourism=alpine_hut: JA:Tag:tourism=alpine hut
     tourism=apartment: JA:Tag:tourism=apartment
@@ -22176,6 +22670,8 @@ ja:
     type=public_transport: JA:Tag:type=public transport
     type=waterway: JA:Tag:type=waterway
     usage=irrigation: JA:Tag:usage=irrigation
+    usage=test: JA:Tag:usage=test
+    usage=transportation: JA:Tag:usage=transportation
     utility=chemical: JA:Tag:utility=chemical
     utility=street_lighting: JA:Tag:utility=street lighting
     vehicle=destination: JA:Tag:vehicle=destination
@@ -22220,6 +22716,7 @@ ja:
     waterway=offshore_field: JA:Tag:waterway=offshore field
     waterway=river: JA:Tag:waterway=river
     waterway=seaway: JA:Tag:waterway=seaway
+    waterway=sluice_gate: JA:Tag:waterway=sluice gate
     waterway=stream: JA:Tag:waterway=stream
     waterway=turning_point: JA:Tag:waterway=turning point
     waterway=water_point: JA:Tag:waterway=water point
@@ -22245,40 +22742,54 @@ ko:
     amenity: Ko:Key:amenity
     architect: Ko:Key:architect
     artist_name: Ko:Key:artist name
+    attraction: Ko:Key:attraction
     attribution: Ko:Key:attribution
     automatic_door: Ko:Key:automatic door
     books: Ko:Key:books
+    brand: Ko:Key:brand
     brand:wikidata: Ko:Key:brand:wikidata
     brand:wikipedia: Ko:Key:brand:wikipedia
     building: Ko:Key:building
+    building:earthquake-resistant: Ko:Key:building:earthquake-resistant
     building:levels: Ko:Key:building:levels
-    bunker_type=bomb_shelter: Ko:Key:bunker type=bomb shelter
+    building:quake-resistant: Ko:Key:building:quake-resistant
+    bus_bay: Ko:Key:bus bay
+    busway: Ko:Key:busway
     contact:facebook: Ko:Key:contact:facebook
     contact:twitter: Ko:Key:contact:twitter
+    covered: Ko:Key:covered
     crossing: Ko:Key:crossing
     cuisine: Ko:Key:cuisine
     denotation: Ko:Key:denotation
+    diet:vegan: Ko:Key:diet:vegan
     drink: Ko:Key:drink
     drive_through: Ko:Key:drive through
     ele: Ko:Key:ele
     emergency: Ko:Key:emergency
+    fire_mains: Ko:Key:fire mains
     fuel: Ko:Key:fuel
     healthcare: Ko:Key:healthcare
     heritage: Ko:Key:heritage
     highway: Ko:Key:highway
     historic: Ko:Key:historic
+    indoor: Ko:Key:indoor
     intermittent: Ko:Key:intermittent
+    junction: Ko:Key:junction
     landuse: Ko:Key:landuse
+    lanes:psv: Ko:Key:lanes:psv
     leisure: Ko:Key:leisure
     level: Ko:Key:level
     line: Ko:Key:line
     local_ref: Ko:Key:local ref
     name: Ko:Key:name
     name:ja: Ko:Key:name:ja
+    name:ko: Ko:Key:name:ko
     operator:type: Ko:Key:operator:type
     reservation: Ko:Key:reservation
     residential: Ko:Key:residential
+    review_requested: Ko:Key:review requested
     roundtrip: Ko:Key:roundtrip
+    route_ref: Ko:Key:route ref
     self_service: Ko:Key:self service
     shop: Ko:Key:shop
     smoothness: Ko:Key:smoothness
@@ -22287,11 +22798,16 @@ ko:
     toll: Ko:Key:toll
     townhall:type: Ko:Key:townhall:type
     tracktype: Ko:Key:tracktype
+    traffic_sign: Ko:Key:traffic sign
     traffic_signals: Ko:Key:traffic signals
     traffic_signals:floor_vibration: Ko:Key:traffic signals:floor vibration
     traffic_signals:sound: Ko:Key:traffic signals:sound
+    trolley:deposit: Ko:Key:trolley:deposit
     tunnel: Ko:Key:tunnel
     turn: Ko:Key:turn
+    was:amenity: Ko:Key:was:amenity
+    water: Ko:Key:water
+    waterway: Ko:Key:waterway
     website: Ko:Key:website
     wheelchair: Ko:Key:wheelchair
     wikipedia: Ko:Key:wikipedia
@@ -22336,6 +22852,7 @@ ko:
     amenity=food_court: Ko:Tag:amenity=food court
     amenity=fountain: Ko:Tag:amenity=fountain
     amenity=fuel: Ko:Tag:amenity=fuel
+    amenity=grave_yard: Ko:Tag:amenity=grave yard
     amenity=grit_bin: Ko:Tag:amenity=grit bin
     amenity=hospital: Ko:Tag:amenity=hospital
     amenity=ice_cream: Ko:Tag:amenity=ice cream
@@ -22357,6 +22874,7 @@ ko:
     amenity=public_bookcase: Ko:Tag:amenity=public bookcase
     amenity=restaurant: Ko:Tag:amenity=restaurant
     amenity=school: Ko:Tag:amenity=school
+    amenity=shelter: Ko:Tag:amenity=shelter
     amenity=social_centre: Ko:Tag:amenity=social centre
     amenity=social_facility: Ko:Tag:amenity=social facility
     amenity=studio: Ko:Tag:amenity=studio
@@ -22373,16 +22891,28 @@ ko:
     building=bakehouse: Ko:Tag:building=bakehouse
     building=cabin: Ko:Tag:building=cabin
     building=gatehouse: Ko:Tag:building=gatehouse
+    building=greenhouse: Ko:Tag:building=greenhouse
+    building=house: Ko:Tag:building=house
     building=parking: Ko:Tag:building=parking
     building=shrine: Ko:Tag:building=shrine
+    bunker_type=bomb_shelter: Ko:Tag:bunker type=bomb shelter
+    cemetery=grave: Ko:Tag:cemetery=grave
     content=fuel: Ko:Tag:content=fuel
     craft=tailor: Ko:Tag:craft=tailor
+    crop=rice: Ko:Tag:crop=rice
     crossing=traffic_signals: Ko:Tag:crossing=traffic signals
     cuisine=korean: Ko:Tag:cuisine=korean
+    fire_mains=dry: Ko:Tag:fire mains=dry
+    fire_mains=wet: Ko:Tag:fire mains=wet
     ford=stepping_stones: Ko:Tag:ford=stepping stones
+    geological=columnar_jointing: Ko:Tag:geological=columnar jointing
+    hazard=school_zone: Ko:Tag:hazard=school zone
+    hazard=silver_zone: Ko:Tag:hazard=silver zone
     healthcare=blood_donation: Ko:Tag:healthcare=blood donation
     healthcare=laboratory: Ko:Tag:healthcare=laboratory
     highway=bus_stop: Ko:Tag:highway=bus stop
+    highway=busway: Ko:Tag:highway=busway
+    highway=corridor: Ko:Tag:highway=corridor
     highway=elevator: Ko:Tag:highway=elevator
     highway=motorway: Ko:Tag:highway=motorway
     highway=motorway_link: Ko:Tag:highway=motorway link
@@ -22396,37 +22926,63 @@ ko:
     highway=toll_gantry: Ko:Tag:highway=toll gantry
     highway=track: Ko:Tag:highway=track
     highway=traffic_signals: Ko:Tag:highway=traffic signals
+    highway=trailhead: Ko:Tag:highway=trailhead
     highway=trunk: Ko:Tag:highway=trunk
+    highway=unclassified: Ko:Tag:highway=unclassified
     historic=archaeological_site: Ko:Tag:historic=archaeological site
+    historic=boundary_stone: Ko:Tag:historic=boundary stone
     junction=yes: Ko:Tag:junction=yes
     landuse=allotments: Ko:Tag:landuse=allotments
+    landuse=cemetery: Ko:Tag:landuse=cemetery
     landuse=commercial: Ko:Tag:landuse=commercial
     landuse=construction: Ko:Tag:landuse=construction
     landuse=education: Ko:Tag:landuse=education
     landuse=farmland: Ko:Tag:landuse=farmland
     landuse=farmyard: Ko:Tag:landuse=farmyard
     landuse=forest: Ko:Tag:landuse=forest
+    landuse=greenery: Ko:Tag:landuse=greenery
+    landuse=greenhouse_horticulture: Ko:Tag:landuse=greenhouse horticulture
     landuse=industrial: Ko:Tag:landuse=industrial
+    landuse=meadow: Ko:Tag:landuse=meadow
+    landuse=paddy: Ko:Tag:landuse=paddy
     landuse=residential: Ko:Tag:landuse=residential
     landuse=retail: Ko:Tag:landuse=retail
+    landuse=shrubs: Ko:Tag:landuse=shrubs
     landuse=traffic_island: Ko:Tag:landuse=traffic island
     leisure=disc_golf_course: Ko:Tag:leisure=disc golf course
     leisure=garden: Ko:Tag:leisure=garden
+    leisure=park: Ko:Tag:leisure=park
     man_made=hongsalmun: Ko:Tag:man made=hongsalmun
     man_made=iljumun: Ko:Tag:man made=iljumun
     man_made=mast: Ko:Tag:man made=mast
+    man_made=planter: Ko:Tag:man made=planter
+    man_made=sign: Ko:Tag:man made=sign
     man_made=surveillance: Ko:Tag:man made=surveillance
+    megalith_type=dolmen: Ko:Tag:megalith type=dolmen
     military=range: Ko:Tag:military=range
+    natural=blockfield: Ko:Tag:natural=blockfield
     natural=grassland: Ko:Tag:natural=grassland
+    natural=scree: Ko:Tag:natural=scree
     natural=spring: Ko:Tag:natural=spring
     natural=tree: Ko:Tag:natural=tree
+    natural=wetland: Ko:Tag:natural=wetland
     noname=yes: Ko:Tag:noname=yes
+    office=cooperative: Ko:Tag:office=cooperative
     office=coworking: Ko:Tag:office=coworking
+    parking=underground: Ko:Tag:parking=underground
     place=hamlet: Ko:Tag:place=hamlet
     place=town: Ko:Tag:place=town
     place=village: Ko:Tag:place=village
+    public_transport=platform: Ko:Tag:public transport=platform
     public_transport=stop_area: Ko:Tag:public transport=stop area
     railway=rail: Ko:Tag:railway=rail
+    religion=shamanic: Ko:Tag:religion=shamanic
+    roof:shape=hip-and-gable: Ko:Tag:roof:shape=hip-and-gable
+    roof:shape=hipped-and-gable: Ko:Tag:roof:shape=hipped-and-gable
+    roof:shape=hipped-and-gabled: Ko:Tag:roof:shape=hipped-and-gabled
+    route=foot: Ko:Tag:route=foot
+    service=driveway: Ko:Tag:service=driveway
+    shelter_type=public_transport: Ko:Tag:shelter type=public transport
     shop=baby_goods: Ko:Tag:shop=baby goods
     shop=bag: Ko:Tag:shop=bag
     shop=bakery: Ko:Tag:shop=bakery
@@ -22461,10 +23017,14 @@ ko:
     shop=wine: Ko:Tag:shop=wine
     sport=martial_arts: Ko:Tag:sport=martial arts
     sport=taekwondo: Ko:Tag:sport=taekwondo
+    surface=mud: Ko:Tag:surface=mud
     toll=yes: Ko:Tag:toll=yes
     tourism=attraction: Ko:Tag:tourism=attraction
     traffic_calming=island: Ko:Tag:traffic calming=island
     waterway=ditch: Ko:Tag:waterway=ditch
+    waterway=drain: Ko:Tag:waterway=drain
+    waterway=tidal_channel: Ko:Tag:waterway=tidal channel
+    wetland=bog: Ko:Tag:wetland=bog
 lt:
   key:
     cycleway: Lt:Key:cycleway
@@ -22524,12 +23084,14 @@ nl:
     leaf_cycle: NL:Key:leaf cycle
     leisure: NL:Key:leisure
     man_made: NL:Key:man made
+    mdb_id: NL:Key:mdb id
     military: NL:Key:military
     name: NL:Key:name
     natural: NL:Key:natural
     network: NL:Key:network
     network:type: NL:Key:network:type
     office: NL:Key:office
+    oneway: NL:Key:oneway
     place: NL:Key:place
     playground: NL:Key:playground
     population: NL:Key:population
@@ -22553,6 +23115,7 @@ nl:
     wheelchair: NL:Key:wheelchair
     xmas:feature: NL:Key:xmas:feature
   tag:
+    amenity=baby_hatch: NL:Tag:amenity=baby hatch
     amenity=bank: NL:Tag:amenity=bank
     amenity=bench: NL:Tag:amenity=bench
     amenity=bicycle_parking: NL:Tag:amenity=bicycle parking
@@ -22566,6 +23129,7 @@ nl:
     amenity=vending_machine: NL:Tag:amenity=vending machine
     amenity=waste_basket: NL:Tag:amenity=waste basket
     barrier=bollard: NL:Tag:barrier=bollard
+    barrier=cattle_grid: NL:Tag:barrier=cattle grid
     barrier=fence: NL:Tag:barrier=fence
     barrier=hedge: NL:Tag:barrier=hedge
     barrier=sump_buster: NL:Tag:barrier=sump buster
@@ -22739,6 +23303,7 @@ pl:
     aerialway: Pl:Key:aerialway
     aerialway:drag_lift: Pl:Key:aerialway:drag lift
     aeroway: Pl:Key:aeroway
+    after_school: Pl:Key:after school
     agrarian: Pl:Key:agrarian
     agricultural: Pl:Key:agricultural
     alt_name: Pl:Key:alt name
@@ -22799,6 +23364,7 @@ pl:
     cargo: Pl:Key:cargo
     castle_type: Pl:Key:castle type
     cemetery: Pl:Key:cemetery
+    charge: Pl:Key:charge
     check_date: Pl:Key:check date
     church:type: Pl:Key:church:type
     circuits: Pl:Key:circuits
@@ -22873,6 +23439,7 @@ pl:
     end_date: Pl:Key:end date
     entrance: Pl:Key:entrance
     est_width: Pl:Key:est width
+    faces: Pl:Key:faces
     fair_trade: Pl:Key:fair trade
     farmyard: Pl:Key:farmyard
     fast_food: Pl:Key:fast food
@@ -23008,12 +23575,14 @@ pl:
     moved: Pl:Key:moved
     name: Pl:Key:name
     name:etymology: Pl:Key:name:etymology
+    name:rue: Pl:Key:name:rue
     nat_ref: Pl:Key:nat ref
     natural: Pl:Key:natural
     network: Pl:Key:network
     non_existent_levels: Pl:Key:non existent levels
     note: Pl:Key:note
     nudism: Pl:Key:nudism
+    nursery: Pl:Key:nursery
     office: Pl:Key:office
     old_addr:housenumber: Pl:Key:old addr:housenumber
     old_name: Pl:Key:old name
@@ -23045,6 +23614,7 @@ pl:
     population: Pl:Key:population
     post_box:type: Pl:Key:post box:type
     power: Pl:Key:power
+    preschool: Pl:Key:preschool
     pressure: Pl:Key:pressure
     priority: Pl:Key:priority
     produce: Pl:Key:produce
@@ -23056,6 +23626,7 @@ pl:
     pump: Pl:Key:pump
     railway: Pl:Key:railway
     railway:area: Pl:Key:railway:area
+    railway:position: Pl:Key:railway:position
     ramp: Pl:Key:ramp
     razed: Pl:Key:razed
     'razed:': 'Pl:Key:razed:'
@@ -23075,6 +23646,7 @@ pl:
     reservation: Pl:Key:reservation
     residential: Pl:Key:residential
     resource: Pl:Key:resource
+    river:waterway_distance: Pl:Key:river:waterway distance
     roof:colour: Pl:Key:roof:colour
     roof:direction: Pl:Key:roof:direction
     roof:material: Pl:Key:roof:material
@@ -23101,7 +23673,6 @@ pl:
     shower: Pl:Key:shower
     shrine: Pl:Key:shrine
     sidewalk: Pl:Key:sidewalk
-    site_type: Pl:Key:site type
     size: Pl:Key:size
     smokefree: Pl:Key:smokefree
     smoking: Pl:Key:smoking
@@ -23530,6 +24101,7 @@ pl:
     bunker_type=gun_emplacement: Pl:Tag:bunker type=gun emplacement
     bunker_type=technical: Pl:Tag:bunker type=technical
     busway=lane: Pl:Tag:busway=lane
+    canoe=put_in: Pl:Tag:canoe=put in
     castle_type=castrum: Pl:Tag:castle type=castrum
     castle_type=defensive: Pl:Tag:castle type=defensive
     castle_type=fortress: Pl:Tag:castle type=fortress
@@ -23598,6 +24170,7 @@ pl:
     cycleway=opposite_track: Pl:Tag:cycleway=opposite track
     cycleway=share_busway: Pl:Tag:cycleway=share busway
     cycleway=track: Pl:Tag:cycleway=track
+    diplomatic=consulate: Pl:Tag:diplomatic=consulate
     emergency=ambulance_station: Pl:Tag:emergency=ambulance station
     emergency=defibrillator: Pl:Tag:emergency=defibrillator
     emergency=emergency_ward_entrance: Pl:Tag:emergency=emergency ward entrance
@@ -24029,6 +24602,7 @@ pl:
     office=charity: Pl:Tag:office=charity
     office=company: Pl:Tag:office=company
     office=courier: Pl:Tag:office=courier
+    office=diplomatic: Pl:Tag:office=diplomatic
     office=educational_institution: Pl:Tag:office=educational institution
     office=employment_agency: Pl:Tag:office=employment agency
     office=energy_supplier: Pl:Tag:office=energy supplier
@@ -24255,6 +24829,7 @@ pl:
     shop=fishmonger: Pl:Tag:shop=fishmonger
     shop=flooring: Pl:Tag:shop=flooring
     shop=florist: Pl:Tag:shop=florist
+    shop=food: Pl:Tag:shop=food
     shop=frame: Pl:Tag:shop=frame
     shop=frozen_food: Pl:Tag:shop=frozen food
     shop=fuel: Pl:Tag:shop=fuel
@@ -24267,6 +24842,7 @@ pl:
     shop=gift: Pl:Tag:shop=gift
     shop=golf: Pl:Tag:shop=golf
     shop=greengrocer: Pl:Tag:shop=greengrocer
+    shop=grocery: Pl:Tag:shop=grocery
     shop=haberdashery: Pl:Tag:shop=haberdashery
     shop=hairdresser: Pl:Tag:shop=hairdresser
     shop=hairdresser_supply: Pl:Tag:shop=hairdresser supply
@@ -24317,6 +24893,7 @@ pl:
     shop=pet: Pl:Tag:shop=pet
     shop=pet_grooming: Pl:Tag:shop=pet grooming
     shop=photo: Pl:Tag:shop=photo
+    shop=photo_studio: Pl:Tag:shop=photo studio
     shop=pottery: Pl:Tag:shop=pottery
     shop=power_tools: Pl:Tag:shop=power tools
     shop=printer_ink: Pl:Tag:shop=printer ink
@@ -24386,10 +24963,13 @@ pl:
     sport=aikido: Pl:Tag:sport=aikido
     sport=american_football: Pl:Tag:sport=american football
     sport=calisthenics: Pl:Tag:sport=calisthenics
+    sport=canoe: Pl:Tag:sport=canoe
     sport=climbing: Pl:Tag:sport=climbing
     sport=equestrian: Pl:Tag:sport=equestrian
     sport=ice_hockey: Pl:Tag:sport=ice hockey
     sport=soccer: Pl:Tag:sport=soccer
+    sport=table_soccer: Pl:Tag:sport=table soccer
+    sport=teqball: Pl:Tag:sport=teqball
     sport=weightlifting: Pl:Tag:sport=weightlifting
     surface=asphalt: Pl:Tag:surface=asphalt
     surface=concrete:lanes: Pl:Tag:surface=concrete:lanes
@@ -24432,11 +25012,10 @@ pl:
     traffic_calming=island: Pl:Tag:traffic calming=island
     traffic_calming=table: Pl:Tag:traffic calming=table
     traffic_sign=PL:D-42: Pl:Tag:traffic sign=PL:D-42
-    traffic_sign=PL:D-43: PL:Tag:traffic sign=PL:D-43
+    traffic_sign=PL:D-43: Pl:Tag:traffic sign=PL:D-43
     traffic_sign=city_limit: Pl:Tag:traffic sign=city limit
     tunnel=culvert: Pl:Tag:tunnel=culvert
     type=public_transport: Pl:Tag:type=public transport
-    vending: Pl:Tag:vending
     vending=admission_tickets: Pl:Tag:vending=admission tickets
     vending=bottle_return: Pl:Tag:vending=bottle return
     vending=candles: Pl:Tag:vending=candles
@@ -24526,7 +25105,6 @@ pnb:
     name:pnb: Pnb:Key:name:pnb
 proposal:
   key:
-    gluten_free: Proposal:Key:gluten free
     gtfs:feed: Proposal:Key:gtfs:feed
     gtfs:name: Proposal:Key:gtfs:name
     gtfs:release_date: Proposal:Key:gtfs:release date
@@ -24534,6 +25112,7 @@ proposal:
     gtfs:shape_id: Proposal:Key:gtfs:shape id
     gtfs:trip_id: Proposal:Key:gtfs:trip id
     gtfs:trip_id:sample: Proposal:Key:gtfs:trip id:sample
+    logistics: Proposal:Key:logistics
     operator:guid: Proposal:Key:operator:guid
   tag:
     boundary=economic: Proposal:Tag:boundary=economic
@@ -24928,6 +25507,7 @@ pt:
     building=church: Pt:Tag:building=church
     building=commercial: Pt:Tag:building=commercial
     building=conservatory: Pt:Tag:building=conservatory
+    building=guardhouse: Pt:Tag:building=guardhouse
     building=house: Pt:Tag:building=house
     building=residential: Pt:Tag:building=residential
     building=roof: Pt:Tag:building=roof
@@ -26164,9 +26744,8 @@ ru:
     abutters: RU:Key:abutters
     access: RU:Key:access
     access:lanes: RU:Key:access:lanes
-    access:lhv: RU:Key:access:lhv
-    access:roadtrain: RU:Key:access:roadtrain
     addr: RU:Key:addr
+    'addr:': 'RU:Key:addr:'
     addr:*: RU:Key:addr:*
     addr:block: RU:Key:addr:block
     addr:city: RU:Key:addr:city
@@ -26187,6 +26766,7 @@ ru:
     addr:postcode: RU:Key:addr:postcode
     addr:province: RU:Key:addr:province
     addr:region: RU:Key:addr:region
+    addr:sector: RU:Key:addr:sector
     addr:state: RU:Key:addr:state
     addr:street: RU:Key:addr:street
     addr:streetnumber: RU:Key:addr:streetnumber
@@ -26210,6 +26790,7 @@ ru:
     area: RU:Key:area
     area:aeroway: RU:Key:area:aeroway
     area:highway: RU:Key:area:highway
+    armrest: RU:Key:armrest
     artist_name: RU:Key:artist name
     artwork_type: RU:Key:artwork type
     assisted_trail: RU:Key:assisted trail
@@ -26279,6 +26860,7 @@ ru:
     building:parts: RU:Key:building:parts
     building:place: RU:Key:building:place
     building:prefabricated: RU:Key:building:prefabricated
+    building:quake-resistant: RU:Key:building:quake-resistant
     building:ruian:type: RU:Key:building:ruian:type
     building:soft_storey: RU:Key:building:soft storey
     building:structure: RU:Key:building:structure
@@ -26326,6 +26908,7 @@ ru:
     check_date:opening_hours: RU:Key:check date:opening hours
     checkpoint: RU:Key:checkpoint
     church:type: RU:Key:church:type
+    circumference: RU:Key:circumference
     city_limit: RU:Key:city limit
     class:bicycle: RU:Key:class:bicycle
     clli: RU:Key:clli
@@ -26335,6 +26918,7 @@ ru:
     comment: RU:Key:comment
     communication:bos: RU:Key:communication:bos
     community_centre: RU:Key:community centre
+    community_centre:for: RU:Key:community centre:for
     company: RU:Key:company
     compressed_air: RU:Key:compressed air
     condo: RU:Key:condo
@@ -26375,9 +26959,11 @@ ru:
     cycleway:foot: RU:Key:cycleway:foot
     cycleway:lane: RU:Key:cycleway:lane
     cycleway:left: RU:Key:cycleway:left
+    cycleway:left:buffer: RU:Key:cycleway:left:buffer
     cycleway:left:lane: RU:Key:cycleway:left:lane
     cycleway:left:oneway: RU:Key:cycleway:left:oneway
     cycleway:right: RU:Key:cycleway:right
+    cycleway:right:buffer: RU:Key:cycleway:right:buffer
     cycleway:right:lane: RU:Key:cycleway:right:lane
     cycleway:right:oneway: RU:Key:cycleway:right:oneway
     cycleway:right:surface: RU:Key:cycleway:right:surface
@@ -26400,6 +26986,7 @@ ru:
     diplomatic: RU:Key:diplomatic
     direction: RU:Key:direction
     dispensing: RU:Key:dispensing
+    dist: RU:Key:dist
     disused: RU:Key:disused
     'disused:': 'RU:Key:disused:'
     disused:*: RU:Key:disused:*
@@ -26473,6 +27060,7 @@ ru:
     generator:source: RU:Key:generator:source
     genus: RU:Key:genus
     glideslope: RU:Key:glideslope
+    golf:par: RU:Key:golf:par
     government: RU:Key:government
     grades: RU:Key:grades
     grassland: RU:Key:grassland
@@ -26487,6 +27075,7 @@ ru:
     hazard: RU:Key:hazard
     hazard:animal: RU:Key:hazard:animal
     hazmat: RU:Key:hazmat
+    health_facility:CD: RU:Key:health facility:CD
     healthcare: RU:Key:healthcare
     height: RU:Key:height
     heritage: RU:Key:heritage
@@ -26514,6 +27103,7 @@ ru:
     int_name: RU:Key:int name
     intermittent: RU:Key:intermittent
     internet_access: RU:Key:internet access
+    irrigation: RU:Key:irrigation
     is_in: RU:Key:is in
     isced:level: RU:Key:isced:level
     isced:level:1997: RU:Key:isced:level:1997
@@ -26522,6 +27112,7 @@ ru:
     junction: RU:Key:junction
     karaoke: RU:Key:karaoke
     kerb: RU:Key:kerb
+    kneipp_water_cure: RU:Key:kneipp water cure
     kons:inscription_date: RU:Key:kons:inscription date
     ladder: RU:Key:ladder
     lamp_mount: RU:Key:lamp mount
@@ -26539,6 +27130,7 @@ ru:
     level: RU:Key:level
     level:ref: RU:Key:level:ref
     license_classes: RU:Key:license classes
+    listed_status: RU:Key:listed status
     lit: RU:Key:lit
     living_street: RU:Key:living street
     loc_name: RU:Key:loc name
@@ -26612,6 +27204,7 @@ ru:
     name:ru: RU:Key:name:ru
     name:ru:word_stress: RU:Key:name:ru:word stress
     name:vi-Hani: RU:Key:name:vi-Hani
+    narrow: RU:Key:narrow
     nat_name: RU:Key:nat name
     nat_ref: RU:Key:nat ref
     natural: RU:Key:natural
@@ -26620,6 +27213,7 @@ ru:
     ncn_milepost: RU:Key:ncn milepost
     ncn_ref: RU:Key:ncn ref
     network: RU:Key:network
+    newspaper_tubes: RU:Key:newspaper tubes
     next_check_date: RU:Key:next check date
     no_overtaking: RU:Key:no overtaking
     noaddress: RU:Key:noaddress
@@ -26646,6 +27240,7 @@ ru:
     operator:wikipedia: RU:Key:operator:wikipedia
     orientation: RU:Key:orientation
     origin: RU:Key:origin
+    oven: RU:Key:oven
     overtaking: RU:Key:overtaking
     owner: RU:Key:owner
     ownership: RU:Key:ownership
@@ -26667,6 +27262,7 @@ ru:
     phone: RU:Key:phone
     picnic_table: RU:Key:picnic table
     pipeline: RU:Key:pipeline
+    piste:grooming: RU:Key:piste:grooming
     piste:type: RU:Key:piste:type
     place: RU:Key:place
     place:CN: RU:Key:place:CN
@@ -26705,6 +27301,7 @@ ru:
     recycling_type: RU:Key:recycling type
     ref: RU:Key:ref
     ref:BLfD: RU:Key:ref:BLfD
+    ref:GB:imher: RU:Key:ref:GB:imher
     ref:GB:nhle: RU:Key:ref:GB:nhle
     ref:IE:niah: RU:Key:ref:IE:niah
     ref:RS:nkd: RU:Key:ref:RS:nkd
@@ -26722,6 +27319,7 @@ ru:
     reg_ref: RU:Key:reg ref
     region:type: RU:Key:region:type
     religion: RU:Key:religion
+    removed:building: RU:Key:removed:building
     rental: RU:Key:rental
     research: RU:Key:research
     reservation: RU:Key:reservation
@@ -26729,6 +27327,8 @@ ru:
     residential: RU:Key:residential
     resort: RU:Key:resort
     resource: RU:Key:resource
+    restaurant: RU:Key:restaurant
+    retreat: RU:Key:retreat
     review_requested: RU:Key:review requested
     rhn_ref: RU:Key:rhn ref
     right: RU:Key:right
@@ -26745,6 +27345,7 @@ ru:
     ruined: RU:Key:ruined
     'ruined:': 'RU:Key:ruined:'
     ruined:*: RU:Key:ruined:*
+    ruined:building: RU:Key:ruined:building
     ruins: RU:Key:ruins
     rungs: RU:Key:rungs
     sac_scale: RU:Key:sac scale
@@ -26754,6 +27355,7 @@ ru:
     sauna: RU:Key:sauna
     school: RU:Key:school
     school:type: RU:Key:school:type
+    school_bus: RU:Key:school bus
     scout: RU:Key:scout
     scuba_diving:rental: RU:Key:scuba diving:rental
     sculpture_type: RU:Key:sculpture type
@@ -26783,6 +27385,8 @@ ru:
     smoothness: RU:Key:smoothness
     snowplowing: RU:Key:snowplowing
     social_facility: RU:Key:social facility
+    social_facility:for: RU:Key:social facility:for
+    socket: RU:Key:socket
     sorting_name: RU:Key:sorting name
     source: RU:Key:source
     source:addr: RU:Key:source:addr
@@ -26796,6 +27400,7 @@ ru:
     statue: RU:Key:statue
     step_count: RU:Key:step count
     stove: RU:Key:stove
+    studio: RU:Key:studio
     substance: RU:Key:substance
     supervised: RU:Key:supervised
     surface: RU:Key:surface
@@ -26816,11 +27421,13 @@ ru:
     terrace: RU:Key:terrace
     theatre:genre: RU:Key:theatre:genre
     theatre:type: RU:Key:theatre:type
+    tidal: RU:Key:tidal
     todo: RU:Key:todo
     toilets: RU:Key:toilets
     toilets:wheelchair: RU:Key:toilets:wheelchair
     toll: RU:Key:toll
     tourism: RU:Key:tourism
+    tourist_bus: RU:Key:tourist bus
     tower:type: RU:Key:tower:type
     townhall:type: RU:Key:townhall:type
     tracktype: RU:Key:tracktype
@@ -26980,9 +27587,11 @@ ru:
     amenity=bicycle_rental: RU:Tag:amenity=bicycle rental
     amenity=bicycle_repair_station: RU:Tag:amenity=bicycle repair station
     amenity=bicycle_trailer_sharing: RU:Tag:amenity=bicycle trailer sharing
+    amenity=bicycle_wash: RU:Tag:amenity=bicycle wash
     amenity=biergarten: RU:Tag:amenity=biergarten
     amenity=binoculars: RU:Tag:amenity=binoculars
     amenity=bird_bath: RU:Tag:amenity=bird bath
+    amenity=blood_bank: RU:Tag:amenity=blood bank
     amenity=boat_rental: RU:Tag:amenity=boat rental
     amenity=boat_sharing: RU:Tag:amenity=boat sharing
     amenity=boat_storage: RU:Tag:amenity=boat storage
@@ -26992,6 +27601,8 @@ ru:
     amenity=bureau_de_change: RU:Tag:amenity=bureau de change
     amenity=bus_station: RU:Tag:amenity=bus station
     amenity=cafe: RU:Tag:amenity=cafe
+    amenity=canteen: RU:Tag:amenity=canteen
+    amenity=car_pooling: RU:Tag:amenity=car pooling
     amenity=car_rental: RU:Tag:amenity=car rental
     amenity=car_sharing: RU:Tag:amenity=car sharing
     amenity=car_wash: RU:Tag:amenity=car wash
@@ -27011,13 +27622,18 @@ ru:
     amenity=community_centre: RU:Tag:amenity=community centre
     amenity=compressed_air: RU:Tag:amenity=compressed air
     amenity=concert_hall: RU:Tag:amenity=concert hall
+    amenity=conference_centre: RU:Tag:amenity=conference centre
+    amenity=convention_centre: RU:Tag:amenity=convention centre
     amenity=courthouse: RU:Tag:amenity=courthouse
     amenity=coworking_space: RU:Tag:amenity=coworking space
     amenity=crematorium: RU:Tag:amenity=crematorium
+    amenity=crypt: RU:Tag:amenity=crypt
     amenity=customs: RU:Tag:amenity=customs
     amenity=dancing_school: RU:Tag:amenity=dancing school
     amenity=dentist: RU:Tag:amenity=dentist
     amenity=device_charging_station: RU:Tag:amenity=device charging station
+    amenity=dive_centre: RU:Tag:amenity=dive centre
+    amenity=doctor: RU:Tag:amenity=doctor
     amenity=doctors: RU:Tag:amenity=doctors
     amenity=dog_bin: RU:Tag:amenity=dog bin
     amenity=dog_parking: RU:Tag:amenity=dog parking
@@ -27028,23 +27644,32 @@ ru:
     amenity=drinking_water: RU:Tag:amenity=drinking water
     amenity=driver_training: RU:Tag:amenity=driver training
     amenity=driving_school: RU:Tag:amenity=driving school
+    amenity=dryer: RU:Tag:amenity=dryer
     amenity=education: RU:Tag:amenity=education
     amenity=embassy: RU:Tag:amenity=embassy
+    amenity=emergency_service: RU:Tag:amenity=emergency service
+    amenity=events_centre: RU:Tag:amenity=events centre
     amenity=events_venue: RU:Tag:amenity=events venue
+    amenity=exhibition_centre: RU:Tag:amenity=exhibition centre
     amenity=fast_food: RU:Tag:amenity=fast food
     amenity=feeding_place: RU:Tag:amenity=feeding place
     amenity=ferry_terminal: RU:Tag:amenity=ferry terminal
+    amenity=festival_grounds: RU:Tag:amenity=festival grounds
     amenity=financial_advice: RU:Tag:amenity=financial advice
     amenity=fire_station: RU:Tag:amenity=fire station
     amenity=first_aid_school: RU:Tag:amenity=first aid school
     amenity=fish_spa: RU:Tag:amenity=fish spa
     amenity=food_court: RU:Tag:amenity=food court
+    amenity=food_sharing: RU:Tag:amenity=food sharing
+    amenity=foot_shower: RU:Tag:amenity=foot shower
     amenity=fountain: RU:Tag:amenity=fountain
+    amenity=freeshop: RU:Tag:amenity=freeshop
     amenity=fridge: RU:Tag:amenity=fridge
     amenity=fuel: RU:Tag:amenity=fuel
     amenity=funeral_hall: RU:Tag:amenity=funeral hall
     amenity=gambling: RU:Tag:amenity=gambling
     amenity=game_feeding: RU:Tag:amenity=game feeding
+    amenity=give_box: RU:Tag:amenity=give box
     amenity=grave_yard: RU:Tag:amenity=grave yard
     amenity=grit_bin: RU:Tag:amenity=grit bin
     amenity=harbourmaster: RU:Tag:amenity=harbourmaster
@@ -27055,23 +27680,30 @@ ru:
     amenity=hospital: RU:Tag:amenity=hospital
     amenity=hunting_stand: RU:Tag:amenity=hunting stand
     amenity=ice_cream: RU:Tag:amenity=ice cream
+    amenity=internet_cafe: RU:Tag:amenity=internet cafe
+    amenity=juice_bar: RU:Tag:amenity=juice bar
     amenity=karaoke_box: RU:Tag:amenity=karaoke box
+    amenity=kick-scooter_parking: RU:Tag:amenity=kick-scooter parking
     amenity=kick-scooter_rental: RU:Tag:amenity=kick-scooter rental
     amenity=kindergarten: RU:Tag:amenity=kindergarten
     amenity=kitchen: RU:Tag:amenity=kitchen
     amenity=kneipp_water_cure: RU:Tag:amenity=kneipp water cure
     amenity=language_school: RU:Tag:amenity=language school
+    amenity=lavoir: RU:Tag:amenity=lavoir
     amenity=letter_box: RU:Tag:amenity=letter box
     amenity=library: RU:Tag:amenity=library
     amenity=library_dropoff: RU:Tag:amenity=library dropoff
     amenity=loading_dock: RU:Tag:amenity=loading dock
     amenity=locker: RU:Tag:amenity=locker
     amenity=lost_property_office: RU:Tag:amenity=lost property office
+    amenity=lounger: RU:Tag:amenity=lounger
     amenity=love_hotel: RU:Tag:amenity=love hotel
+    amenity=mailroom: RU:Tag:amenity=mailroom
     amenity=marae: RU:Tag:amenity=marae
     amenity=marketplace: RU:Tag:amenity=marketplace
     amenity=mist_spraying_cooler: RU:Tag:amenity=mist spraying cooler
     amenity=mobile_library: RU:Tag:amenity=mobile library
+    amenity=mobile_money_agent: RU:Tag:amenity=mobile money agent
     amenity=monastery: RU:Tag:amenity=monastery
     amenity=money_transfer: RU:Tag:amenity=money transfer
     amenity=mortuary: RU:Tag:amenity=mortuary
@@ -27079,6 +27711,7 @@ ru:
     amenity=motorcycle_rental: RU:Tag:amenity=motorcycle rental
     amenity=motorcycle_taxi: RU:Tag:amenity=motorcycle taxi
     amenity=music_school: RU:Tag:amenity=music school
+    amenity=music_venue: RU:Tag:amenity=music venue
     amenity=nightclub: RU:Tag:amenity=nightclub
     amenity=nursery: RU:Tag:amenity=nursery
     amenity=nursing_home: RU:Tag:amenity=nursing home
@@ -27091,11 +27724,13 @@ ru:
     amenity=payment_terminal: RU:Tag:amenity=payment terminal
     amenity=pharmacy: RU:Tag:amenity=pharmacy
     amenity=photo_booth: RU:Tag:amenity=photo booth
+    amenity=place_of_mourning: RU:Tag:amenity=place of mourning
     amenity=place_of_worship: RU:Tag:amenity=place of worship
     amenity=planetarium: RU:Tag:amenity=planetarium
     amenity=police: RU:Tag:amenity=police
     amenity=polling_station: RU:Tag:amenity=polling station
     amenity=post_box: RU:Tag:amenity=post box
+    amenity=post_depot: RU:Tag:amenity=post depot
     amenity=post_office: RU:Tag:amenity=post office
     amenity=prep_school: RU:Tag:amenity=prep school
     amenity=preschool: RU:Tag:amenity=preschool
@@ -27106,7 +27741,9 @@ ru:
     amenity=public_bookcase: RU:Tag:amenity=public bookcase
     amenity=public_building: RU:Tag:amenity=public building
     amenity=ranger_station: RU:Tag:amenity=ranger station
+    amenity=reception_desk: RU:Tag:amenity=reception desk
     amenity=recycling: RU:Tag:amenity=recycling
+    amenity=refugee_site: RU:Tag:amenity=refugee site
     amenity=register_office: RU:Tag:amenity=register office
     amenity=rescue_station: RU:Tag:amenity=rescue station
     amenity=research_institute: RU:Tag:amenity=research institute
@@ -27120,8 +27757,11 @@ ru:
     amenity=shelter: RU:Tag:amenity=shelter
     amenity=shop: RU:Tag:amenity=shop
     amenity=shower: RU:Tag:amenity=shower
+    amenity=ski_rental: RU:Tag:amenity=ski rental
     amenity=ski_school: RU:Tag:amenity=ski school
     amenity=smoking_area: RU:Tag:amenity=smoking area
+    amenity=social_centre: RU:Tag:amenity=social centre
+    amenity=social_club: RU:Tag:amenity=social club
     amenity=social_facility: RU:Tag:amenity=social facility
     amenity=stables: RU:Tag:amenity=stables
     amenity=stage: RU:Tag:amenity=stage
@@ -27137,6 +27777,7 @@ ru:
     amenity=television: RU:Tag:amenity=television
     amenity=theatre: RU:Tag:amenity=theatre
     amenity=ticket_validator: RU:Tag:amenity=ticket validator
+    amenity=toilet: RU:Tag:amenity=toilet
     amenity=toilets: RU:Tag:amenity=toilets
     amenity=tourist_bus_parking: RU:Tag:amenity=tourist bus parking
     amenity=townhall: RU:Tag:amenity=townhall
@@ -27162,12 +27803,14 @@ ru:
     amenity=water_point: RU:Tag:amenity=water point
     amenity=watering_place: RU:Tag:amenity=watering place
     amenity=weighbridge: RU:Tag:amenity=weighbridge
+    amenity=whirlpool: RU:Tag:amenity=whirlpool
     amenity=workshop: RU:Tag:amenity=workshop
     animal=horse_walker: RU:Tag:animal=horse walker
     animal=school: RU:Tag:animal=school
     animated=trivision_blades: RU:Tag:animated=trivision blades
     animated=winding_posters: RU:Tag:animated=winding posters
     anthropogenic=yes: RU:Tag:anthropogenic=yes
+    aquaculture=fish: RU:Tag:aquaculture=fish
     aquaculture=seaweed: RU:Tag:aquaculture=seaweed
     archaeological_site=fortification: RU:Tag:archaeological site=fortification
     archaeological_site=grave_field: RU:Tag:archaeological site=grave field
@@ -27195,6 +27838,7 @@ ru:
     attraction=train: RU:Tag:attraction=train
     attraction=water_slide: RU:Tag:attraction=water slide
     baby_hatch=yes: RU:Tag:baby hatch=yes
+    barrier=avalanche_protection: RU:Tag:barrier=avalanche protection
     barrier=block: RU:Tag:barrier=block
     barrier=bollard: RU:Tag:barrier=bollard
     barrier=border_control: RU:Tag:barrier=border control
@@ -27209,6 +27853,7 @@ ru:
     barrier=czech_hedgehog: RU:Tag:barrier=czech hedgehog
     barrier=debris: RU:Tag:barrier=debris
     barrier=ditch: RU:Tag:barrier=ditch
+    barrier=dug-in_tyres: RU:Tag:barrier=dug-in tyres
     barrier=entrance: RU:Tag:barrier=entrance
     barrier=fence: RU:Tag:barrier=fence
     barrier=full-height_turnstile: RU:Tag:barrier=full-height turnstile
@@ -27235,6 +27880,7 @@ ru:
     barrier=tank_trap: RU:Tag:barrier=tank trap
     barrier=toll_booth: RU:Tag:barrier=toll booth
     barrier=turnstile: RU:Tag:barrier=turnstile
+    barrier=tyres: RU:Tag:barrier=tyres
     barrier=wall: RU:Tag:barrier=wall
     barrier=wicket_gate: RU:Tag:barrier=wicket gate
     barrier=yes: RU:Tag:barrier=yes
@@ -27264,6 +27910,7 @@ ru:
     beacon:type=TACAN: RU:Tag:beacon:type=TACAN
     beacon:type=VOR: RU:Tag:beacon:type=VOR
     beacon:type=VORTAC: RU:Tag:beacon:type=VORTAC
+    bench=wave_lounger: RU:Tag:bench=wave lounger
     bicycle:backward=use_sidepath: RU:Tag:bicycle:backward=use sidepath
     bicycle:forward=use_sidepath: RU:Tag:bicycle:forward=use sidepath
     bicycle=designated: RU:Tag:bicycle=designated
@@ -27356,6 +28003,7 @@ ru:
     building=container: RU:Tag:building=container
     building=convent: RU:Tag:building=convent
     building=cowshed: RU:Tag:building=cowshed
+    building=damaged: RU:Tag:building=damaged
     building=data_center: RU:Tag:building=data center
     building=demountable: RU:Tag:building=demountable
     building=detached: RU:Tag:building=detached
@@ -27368,6 +28016,7 @@ ru:
     building=farm_auxiliary: RU:Tag:building=farm auxiliary
     building=fire_lookout: RU:Tag:building=fire lookout
     building=fire_station: RU:Tag:building=fire station
+    building=fixme: RU:Tag:building=fixme
     building=font: RU:Tag:building=font
     building=fort: RU:Tag:building=fort
     building=funeral_hall: RU:Tag:building=funeral hall
@@ -27400,6 +28049,7 @@ ru:
     building=mosque: RU:Tag:building=mosque
     building=museum: RU:Tag:building=museum
     building=office: RU:Tag:building=office
+    building=other: RU:Tag:building=other
     building=outbuilding: RU:Tag:building=outbuilding
     building=palace: RU:Tag:building=palace
     building=parking: RU:Tag:building=parking
@@ -27438,6 +28088,7 @@ ru:
     building=tent: RU:Tag:building=tent
     building=terrace: RU:Tag:building=terrace
     building=toilets: RU:Tag:building=toilets
+    building=tower: RU:Tag:building=tower
     building=train_station: RU:Tag:building=train station
     building=transformer_tower: RU:Tag:building=transformer tower
     building=transportation: RU:Tag:building=transportation
@@ -27454,6 +28105,7 @@ ru:
     building=wayside_shrine: RU:Tag:building=wayside shrine
     building=windmill: RU:Tag:building=windmill
     building=yes: RU:Tag:building=yes
+    bunker_type=nuclear: RU:Tag:bunker type=nuclear
     bunker_type=pillbox: RU:Tag:bunker type=pillbox
     busway=lane: RU:Tag:busway=lane
     cafe=time-cafe: RU:Tag:cafe=time-cafe
@@ -27463,6 +28115,7 @@ ru:
     camp_site=deluxe: RU:Tag:camp site=deluxe
     camp_site=serviced: RU:Tag:camp site=serviced
     camp_site=standard: RU:Tag:camp site=standard
+    canoe=put_in: RU:Tag:canoe=put in
     capital=4: RU:Tag:capital=4
     capital=5: RU:Tag:capital=5
     capital=6: RU:Tag:capital=6
@@ -27480,6 +28133,7 @@ ru:
     cemetery=grave: RU:Tag:cemetery=grave
     cemetery=sector: RU:Tag:cemetery=sector
     cemetery=war_cemetery: RU:Tag:cemetery=war cemetery
+    cemetery=wood: RU:Tag:cemetery=wood
     clothes=motorcycle: RU:Tag:clothes=motorcycle
     clothes=swimwear: RU:Tag:clothes=swimwear
     clothes=vintage: RU:Tag:clothes=vintage
@@ -27497,6 +28151,13 @@ ru:
     club=social: RU:Tag:club=social
     club=sport: RU:Tag:club=sport
     club=student: RU:Tag:club=student
+    community_centre=club_home: RU:Tag:community centre=club home
+    community_centre=community_hall: RU:Tag:community centre=community hall
+    community_centre=cultural_centre: RU:Tag:community centre=cultural centre
+    community_centre=family_centre: RU:Tag:community centre=family centre
+    community_centre=parish_hall: RU:Tag:community centre=parish hall
+    community_centre=village_hall: RU:Tag:community centre=village hall
+    community_centre=youth_centre: RU:Tag:community centre=youth centre
     company=aerospace: RU:Tag:company=aerospace
     company=catalog: RU:Tag:company=catalog
     company=construction: RU:Tag:company=construction
@@ -27510,8 +28171,10 @@ ru:
     construction=apartments: RU:Tag:construction=apartments
     content=sewage: RU:Tag:content=sewage
     content=slurry: RU:Tag:content=slurry
+    content=wastewater: RU:Tag:content=wastewater
     content=water: RU:Tag:content=water
     covered=no: RU:Tag:covered=no
+    covered=yes: RU:Tag:covered=yes
     craft=agricultural_engines: RU:Tag:craft=agricultural engines
     craft=bakery: RU:Tag:craft=bakery
     craft=basket_maker: RU:Tag:craft=basket maker
@@ -27538,9 +28201,15 @@ ru:
     craft=tailor: RU:Tag:craft=tailor
     craft=window_construction: RU:Tag:craft=window construction
     craft=winery: RU:Tag:craft=winery
+    crematorium=pet: RU:Tag:crematorium=pet
     crop=grape: RU:Tag:crop=grape
     crop=hop: RU:Tag:crop=hop
+    crossing=traffic_signals: RU:Tag:crossing=traffic signals
+    crossing=uncontrolled: RU:Tag:crossing=uncontrolled
     cuisine=kebab: RU:Tag:cuisine=kebab
+    culvert=box: RU:Tag:culvert=box
+    culvert=inverted_siphon: RU:Tag:culvert=inverted siphon
+    culvert=pipe: RU:Tag:culvert=pipe
     cycle_network=EuroVelo: RU:Tag:cycle network=EuroVelo
     cycle_network=JP:prefectural: RU:Tag:cycle network=JP:prefectural
     cycle_network=US: RU:Tag:cycle network=US
@@ -27579,12 +28248,14 @@ ru:
     defensive=bergfried: RU:Tag:defensive=bergfried
     defensive=donjon: RU:Tag:defensive=donjon
     defensive=keep: RU:Tag:defensive=keep
+    denomination=catholic: RU:Tag:denomination=catholic
     diplomatic=consulate_general: RU:Tag:diplomatic=consulate general
     disused:landuse=landfill: RU:Tag:disused:landuse=landfill
     disused:landuse=quarry: RU:Tag:disused:landuse=quarry
     dog=designated: RU:Tag:dog=designated
     dog=leashed: RU:Tag:dog=leashed
     dog=no: RU:Tag:dog=no
+    dog=outside: RU:Tag:dog=outside
     dog=unleashed: RU:Tag:dog=unleashed
     dog=yes: RU:Tag:dog=yes
     drain=disperse: RU:Tag:drain=disperse
@@ -27624,6 +28295,7 @@ ru:
     fortification_type=hill_fort: RU:Tag:fortification type=hill fort
     fortification_type=limes: RU:Tag:fortification type=limes
     fortification_type=motte: RU:Tag:fortification type=motte
+    fortification_type=pa: RU:Tag:fortification type=pa
     fortification_type=ring_ditch: RU:Tag:fortification type=ring ditch
     fortification_type=ringfort: RU:Tag:fortification type=ringfort
     fortification_type=sconce: RU:Tag:fortification type=sconce
@@ -27657,6 +28329,7 @@ ru:
     government=healthcare: RU:Tag:government=healthcare
     government=heritage: RU:Tag:government=heritage
     government=it: RU:Tag:government=it
+    government=justice: RU:Tag:government=justice
     government=legislative: RU:Tag:government=legislative
     government=ministry: RU:Tag:government=ministry
     government=parliament: RU:Tag:government=parliament
@@ -27680,10 +28353,12 @@ ru:
     hazard=turn: RU:Tag:hazard=turn
     health_facility:type=office: RU:Tag:health facility:type=office
     healthcare:speciality=abortion: RU:Tag:healthcare:speciality=abortion
+    healthcare=blood_bank: RU:Tag:healthcare=blood bank
     healthcare=blood_donation: RU:Tag:healthcare=blood donation
     healthcare=doctor: RU:Tag:healthcare=doctor
     healthcare=laboratory: RU:Tag:healthcare=laboratory
     healthcare=nurse: RU:Tag:healthcare=nurse
+    healthcare=podiatrist: RU:Tag:healthcare=podiatrist
     healthcare=sample_collection: RU:Tag:healthcare=sample collection
     healthcare=vaccination_centre: RU:Tag:healthcare=vaccination centre
     heritage:operator=BLfD: RU:Tag:heritage:operator=BLfD
@@ -27840,6 +28515,7 @@ ru:
     information=tactile_model: RU:Tag:information=tactile model
     information=terminal: RU:Tag:information=terminal
     information=visitor_centre: RU:Tag:information=visitor centre
+    irrigation=yes: RU:Tag:irrigation=yes
     junction=circular: RU:Tag:junction=circular
     junction=roundabout: RU:Tag:junction=roundabout
     landcover=grass: RU:Tag:landcover=grass
@@ -27887,6 +28563,7 @@ ru:
     landuse=military: RU:Tag:landuse=military
     landuse=observatory: RU:Tag:landuse=observatory
     landuse=orchard: RU:Tag:landuse=orchard
+    landuse=paddy: RU:Tag:landuse=paddy
     landuse=peat_cutting: RU:Tag:landuse=peat cutting
     landuse=plant_nursery: RU:Tag:landuse=plant nursery
     landuse=plantation: RU:Tag:landuse=plantation
@@ -28039,6 +28716,7 @@ ru:
     man_made=gas_well: RU:Tag:man made=gas well
     man_made=geoglyph: RU:Tag:man made=geoglyph
     man_made=guard_stone: RU:Tag:man made=guard stone
+    man_made=insect_hotel: RU:Tag:man made=insect hotel
     man_made=launch_pad: RU:Tag:man made=launch pad
     man_made=lighthouse: RU:Tag:man made=lighthouse
     man_made=mast: RU:Tag:man made=mast
@@ -28098,9 +28776,12 @@ ru:
     military=naval_base: RU:Tag:military=naval base
     military=training_area: RU:Tag:military=training area
     military=trench: RU:Tag:military=trench
+    monument=statue: RU:Tag:monument=statue
     motor_vehicle=agricultural: RU:Tag:motor vehicle=agricultural
+    motor_vehicle=delivery: RU:Tag:motor vehicle=delivery
     motor_vehicle=forestry: RU:Tag:motor vehicle=forestry
     motor_vehicle=no: RU:Tag:motor vehicle=no
+    motor_vehicle=private: RU:Tag:motor vehicle=private
     motorcycle=no: RU:Tag:motorcycle=no
     motorcycle=yes: RU:Tag:motorcycle=yes
     museum=aerospace: RU:Tag:museum=aerospace
@@ -28135,6 +28816,7 @@ ru:
     natural=grassland: RU:Tag:natural=grassland
     natural=gully: RU:Tag:natural=gully
     natural=heath: RU:Tag:natural=heath
+    natural=hill: RU:Tag:natural=hill
     natural=hot_spring: RU:Tag:natural=hot spring
     natural=meteor_crater: RU:Tag:natural=meteor crater
     natural=mud: RU:Tag:natural=mud
@@ -28151,6 +28833,7 @@ ru:
     natural=stone: RU:Tag:natural=stone
     natural=tree: RU:Tag:natural=tree
     natural=tree_row: RU:Tag:natural=tree row
+    natural=tree_stump: RU:Tag:natural=tree stump
     natural=tundra: RU:Tag:natural=tundra
     natural=valley: RU:Tag:natural=valley
     natural=volcano: RU:Tag:natural=volcano
@@ -28259,6 +28942,7 @@ ru:
     parking=street_side: RU:Tag:parking=street side
     parking=surface: RU:Tag:parking=surface
     parking=underground: RU:Tag:parking=underground
+    parking_space=charging: RU:Tag:parking space=charging
     parking_space=disabled: RU:Tag:parking space=disabled
     path=desire: RU:Tag:path=desire
     path=sidewalk: RU:Tag:path=sidewalk
@@ -28266,6 +28950,7 @@ ru:
     pipeline=substation: RU:Tag:pipeline=substation
     pipeline=surge_tank: RU:Tag:pipeline=surge tank
     pipeline=valve: RU:Tag:pipeline=valve
+    piste:type=sled: RU:Tag:piste:type=sled
     place=allotments: RU:Tag:place=allotments
     place=archipelago: RU:Tag:place=archipelago
     place=borough: RU:Tag:place=borough
@@ -28285,6 +28970,7 @@ ru:
     place=neighbourhood: RU:Tag:place=neighbourhood
     place=ocean: RU:Tag:place=ocean
     place=plot: RU:Tag:place=plot
+    place=polder: RU:Tag:place=polder
     place=province: RU:Tag:place=province
     place=quarter: RU:Tag:place=quarter
     place=region: RU:Tag:place=region
@@ -28295,6 +28981,7 @@ ru:
     place=suburb: RU:Tag:place=suburb
     place=town: RU:Tag:place=town
     place=village: RU:Tag:place=village
+    place_of_mourning=yes: RU:Tag:place of mourning=yes
     playground=balancebeam: RU:Tag:playground=balancebeam
     playground=bridge: RU:Tag:playground=bridge
     playground=climbingframe: RU:Tag:playground=climbingframe
@@ -28326,6 +29013,7 @@ ru:
     power=substation: RU:Tag:power=substation
     power=tower: RU:Tag:power=tower
     power=transformer: RU:Tag:power=transformer
+    prison_camp=concentration_camp: RU:Tag:prison camp=concentration camp
     product=beer: RU:Tag:product=beer
     product=bricks: RU:Tag:product=bricks
     product=concrete: RU:Tag:product=concrete
@@ -28338,6 +29026,7 @@ ru:
     product=rice: RU:Tag:product=rice
     product=steel: RU:Tag:product=steel
     product=sugar: RU:Tag:product=sugar
+    protect_class=22: RU:Tag:protect class=22
     public_transport=platform: RU:Tag:public transport=platform
     public_transport=station: RU:Tag:public transport=station
     public_transport=stop_area: RU:Tag:public transport=stop area
@@ -28370,6 +29059,7 @@ ru:
     recycling_type=centre: RU:Tag:recycling type=centre
     recycling_type=container: RU:Tag:recycling type=container
     religion=pagan: RU:Tag:religion=pagan
+    religion=shamanic: RU:Tag:religion=shamanic
     religion=zoroastrian: RU:Tag:religion=zoroastrian
     rental=boat: RU:Tag:rental=boat
     rental=clothes: RU:Tag:rental=clothes
@@ -28400,8 +29090,10 @@ ru:
     route=hiking: RU:Tag:route=hiking
     route=horse: RU:Tag:route=horse
     route=mtb: RU:Tag:route=mtb
+    route=piste: RU:Tag:route=piste
     route=railway: RU:Tag:route=railway
     route=share_taxi: RU:Tag:route=share taxi
+    route=ski: RU:Tag:route=ski
     route=tracks: RU:Tag:route=tracks
     route=train: RU:Tag:route=train
     route=tram: RU:Tag:route=tram
@@ -28422,12 +29114,19 @@ ru:
     service=parts: RU:Tag:service=parts
     service=repair: RU:Tag:service=repair
     service=tyres: RU:Tag:service=tyres
+    shelter_type=Wetterpilz: RU:Tag:shelter type=Wetterpilz
     shelter_type=basic_hut: RU:Tag:shelter type=basic hut
+    shelter_type=changing_rooms: RU:Tag:shelter type=changing rooms
     shelter_type=field_shelter: RU:Tag:shelter type=field shelter
     shelter_type=gazebo: RU:Tag:shelter type=gazebo
     shelter_type=lean_to: RU:Tag:shelter type=lean to
     shelter_type=pavilion: RU:Tag:shelter type=pavilion
+    shelter_type=picnic_shelter: RU:Tag:shelter type=picnic shelter
     shelter_type=public_transport: RU:Tag:shelter type=public transport
+    shelter_type=rock_shelter: RU:Tag:shelter type=rock shelter
+    shelter_type=sun_shelter: RU:Tag:shelter type=sun shelter
+    shelter_type=weather_shelter: RU:Tag:shelter type=weather shelter
+    shelter_type=wetterpilz: RU:Tag:shelter type=wetterpilz
     shop=3d_printing: RU:Tag:shop=3d printing
     shop=agrarian: RU:Tag:shop=agrarian
     shop=alcohol: RU:Tag:shop=alcohol
@@ -28533,6 +29232,7 @@ ru:
     shop=radiotechnics: RU:Tag:shop=radiotechnics
     shop=religion: RU:Tag:shop=religion
     shop=rental: RU:Tag:shop=rental
+    shop=safety_equipment: RU:Tag:shop=safety equipment
     shop=seafood: RU:Tag:shop=seafood
     shop=second_hand: RU:Tag:shop=second hand
     shop=security: RU:Tag:shop=security
@@ -28565,9 +29265,14 @@ ru:
     signpost=forestry_compartment: RU:Tag:signpost=forestry compartment
     sinkhole=bluehole: RU:Tag:sinkhole=bluehole
     site_type=fortification: RU:Tag:site type=fortification
+    social_facility:for=disabled: RU:Tag:social facility:for=disabled
     social_facility:for=homeless: RU:Tag:social facility:for=homeless
+    social_facility:for=senior: RU:Tag:social facility:for=senior
     social_facility=ambulatory_care: RU:Tag:social facility=ambulatory care
+    social_facility=dairy_kitchen: RU:Tag:social facility=dairy kitchen
     social_facility=group_home: RU:Tag:social facility=group home
+    source:addr=ЕГРН: RU:Tag:source:addr=ЕГРН
+    source:maxspeed=sign: RU:Tag:source:maxspeed=sign
     sport=archery: RU:Tag:sport=archery
     sport=cycling: RU:Tag:sport=cycling
     sport=dog_racing: RU:Tag:sport=dog racing
@@ -28589,7 +29294,10 @@ ru:
     statue=animal: RU:Tag:statue=animal
     statue=equestrian: RU:Tag:statue=equestrian
     statue=virgin: RU:Tag:statue=virgin
+    studio=audio: RU:Tag:studio=audio
     studio=radio: RU:Tag:studio=radio
+    studio=television: RU:Tag:studio=television
+    studio=video: RU:Tag:studio=video
     substance=CNG: RU:Tag:substance=CNG
     substance=gas: RU:Tag:substance=gas
     substance=oil: RU:Tag:substance=oil
@@ -28670,6 +29378,8 @@ ru:
     tower:type=launch_tower: RU:Tag:tower:type=launch tower
     tower:type=lighting: RU:Tag:tower:type=lighting
     tower:type=lightning_protection: RU:Tag:tower:type=lightning protection
+    townhall:type=barangay: RU:Tag:townhall:type=barangay
+    townhall:type=town: RU:Tag:townhall:type=town
     trade=agricultural_supplies: RU:Tag:trade=agricultural supplies
     trade=building_supplies: RU:Tag:trade=building supplies
     trade=timber: RU:Tag:trade=timber
@@ -28679,6 +29389,7 @@ ru:
     traffic_calming=table: RU:Tag:traffic calming=table
     traffic_sign=NL:L51: RU:Tag:traffic sign=NL:L51
     traffic_sign=city_limit: RU:Tag:traffic sign=city limit
+    traffic_signals=continuous_green: RU:Tag:traffic signals=continuous green
     trailer:type=motorcycle: RU:Tag:trailer:type=motorcycle
     training=art: RU:Tag:training=art
     training=aviation: RU:Tag:training=aviation
@@ -28698,6 +29409,7 @@ ru:
     usage=flowline: RU:Tag:usage=flowline
     usage=gathering: RU:Tag:usage=gathering
     usage=injection: RU:Tag:usage=injection
+    usage=irrigation: RU:Tag:usage=irrigation
     usage=penstock: RU:Tag:usage=penstock
     usage=spillway: RU:Tag:usage=spillway
     vehicle=no: RU:Tag:vehicle=no
@@ -28738,6 +29450,7 @@ ru:
     vending=ice_cubes: RU:Tag:vending=ice cubes
     vending=ink_cartridges: RU:Tag:vending=ink cartridges
     vending=laundry_detergent: RU:Tag:vending=laundry detergent
+    vending=lottery: RU:Tag:vending=lottery
     vending=milk: RU:Tag:vending=milk
     vending=newspapers: RU:Tag:vending=newspapers
     vending=parcel_mail_in: RU:Tag:vending=parcel mail in
@@ -28791,6 +29504,7 @@ ru:
     water=stream_pool: RU:Tag:water=stream pool
     water=tidal: RU:Tag:water=tidal
     water=wastewater: RU:Tag:water=wastewater
+    water_source=groundwater: RU:Tag:water source=groundwater
     water_source=main: RU:Tag:water source=main
     water_source=river: RU:Tag:water source=river
     waterway=boatyard: RU:Tag:waterway=boatyard
@@ -28864,6 +29578,7 @@ sv:
     amenity=place_of_worship: Sv:Tag:amenity=place of worship
     amenity=recycling: Sv:Tag:amenity=recycling
     amenity=townhall: Sv:Tag:amenity=townhall
+    barrier=hampshire_gate: Sv:Tag:barrier=hampshire gate
     highway=path: Sv:Tag:highway=path
     highway=rest_area: Sv:Tag:highway=rest area
     highway=track: Sv:Tag:highway=track
@@ -28928,6 +29643,7 @@ uk:
     addr:postbox: Uk:Key:addr:postbox
     addr:postcode: Uk:Key:addr:postcode
     addr:province: Uk:Key:addr:province
+    addr:room: Uk:Key:addr:room
     addr:state: Uk:Key:addr:state
     addr:street: Uk:Key:addr:street
     addr:subdistrict: Uk:Key:addr:subdistrict
@@ -29064,6 +29780,7 @@ uk:
     short_name:ru: Uk:Key:short name:ru
     sidewalk: Uk:Key:sidewalk
     smoothness: Uk:Key:smoothness
+    social_facility:for: Uk:Key:social facility:for
     sorting_name: Uk:Key:sorting name
     source: Uk:Key:source
     source:addr: Uk:Key:source:addr
@@ -29072,6 +29789,7 @@ uk:
     surface: Uk:Key:surface
     tracktype: Uk:Key:tracktype
     traffic_sign: Uk:Key:traffic sign
+    traffic_signals: Uk:Key:traffic signals
     tunnel: Uk:Key:tunnel
     turn: Uk:Key:turn
     type: Uk:Key:type
     aeroway=runway: Uk:Tag:aeroway=runway
     aeroway=terminal: Uk:Tag:aeroway=terminal
     allotments=plot: Uk:Tag:allotments=plot
+    amenity=animal_boarding: Uk:Tag:amenity=animal boarding
+    amenity=animal_breeding: Uk:Tag:amenity=animal breeding
+    amenity=animal_shelter: Uk:Tag:amenity=animal shelter
+    amenity=animal_training: Uk:Tag:amenity=animal training
+    amenity=archive: Uk:Tag:amenity=archive
+    amenity=arts_centre: Uk:Tag:amenity=arts centre
     amenity=atm: Uk:Tag:amenity=atm
+    amenity=baby_hatch: Uk:Tag:amenity=baby hatch
+    amenity=baking_oven: Uk:Tag:amenity=baking oven
     amenity=bank: Uk:Tag:amenity=bank
+    amenity=bar: Uk:Tag:amenity=bar
+    amenity=bbq: Uk:Tag:amenity=bbq
+    amenity=bear_box: Uk:Tag:amenity=bear box
     amenity=bench: Uk:Tag:amenity=bench
+    amenity=bicycle_library: Uk:Tag:amenity=bicycle library
     amenity=bicycle_parking: Uk:Tag:amenity=bicycle parking
     amenity=bicycle_rental: Uk:Tag:amenity=bicycle rental
+    amenity=bicycle_repair_station: Uk:Tag:amenity=bicycle repair station
+    amenity=bicycle_trailer_sharing: Uk:Tag:amenity=bicycle trailer sharing
+    amenity=biergarten: Uk:Tag:amenity=biergarten
+    amenity=bird_bath: Uk:Tag:amenity=bird bath
+    amenity=blood_bank: Uk:Tag:amenity=blood bank
+    amenity=boat_rental: Uk:Tag:amenity=boat rental
+    amenity=boat_sharing: Uk:Tag:amenity=boat sharing
+    amenity=boat_storage: Uk:Tag:amenity=boat storage
+    amenity=brothel: Uk:Tag:amenity=brothel
+    amenity=bureau_de_change: Uk:Tag:amenity=bureau de change
+    amenity=bus_station: Uk:Tag:amenity=bus station
+    amenity=cafe: Uk:Tag:amenity=cafe
+    amenity=canteen: Uk:Tag:amenity=canteen
+    amenity=car_pooling: Uk:Tag:amenity=car pooling
+    amenity=car_rental: Uk:Tag:amenity=car rental
+    amenity=car_sharing: Uk:Tag:amenity=car sharing
+    amenity=car_wash: Uk:Tag:amenity=car wash
+    amenity=carpet_washing: Uk:Tag:amenity=carpet washing
+    amenity=casino: Uk:Tag:amenity=casino
+    amenity=chair: Uk:Tag:amenity=chair
+    amenity=charging_station: Uk:Tag:amenity=charging station
+    amenity=childcare: Uk:Tag:amenity=childcare
+    amenity=cinema: Uk:Tag:amenity=cinema
     amenity=clinic: Uk:Tag:amenity=clinic
+    amenity=cloakroom: Uk:Tag:amenity=cloakroom
+    amenity=clock: Uk:Tag:amenity=clock
+    amenity=clothes_dryer: Uk:Tag:amenity=clothes dryer
+    amenity=clubhouse: Uk:Tag:amenity=clubhouse
+    amenity=coast_guard: Uk:Tag:amenity=coast guard
+    amenity=coast_radar_station: Uk:Tag:amenity=coast radar station
+    amenity=college: Uk:Tag:amenity=college
+    amenity=community_centre: Uk:Tag:amenity=community centre
+    amenity=compressed_air: Uk:Tag:amenity=compressed air
+    amenity=concert_hall: Uk:Tag:amenity=concert hall
+    amenity=conference_centre: Uk:Tag:amenity=conference centre
+    amenity=courthouse: Uk:Tag:amenity=courthouse
+    amenity=coworking_space: Uk:Tag:amenity=coworking space
+    amenity=crematorium: Uk:Tag:amenity=crematorium
+    amenity=crypt: Uk:Tag:amenity=crypt
+    amenity=dancing_school: Uk:Tag:amenity=dancing school
     amenity=dentist: Uk:Tag:amenity=dentist
+    amenity=device_charging_station: Uk:Tag:amenity=device charging station
+    amenity=dive_centre: Uk:Tag:amenity=dive centre
+    amenity=doctors: Uk:Tag:amenity=doctors
+    amenity=dog_parking: Uk:Tag:amenity=dog parking
+    amenity=dog_toilet: Uk:Tag:amenity=dog toilet
+    amenity=dojo: Uk:Tag:amenity=dojo
+    amenity=dormitory: Uk:Tag:amenity=dormitory
+    amenity=dressing_room: Uk:Tag:amenity=dressing room
     amenity=drinking_water: Uk:Tag:amenity=drinking water
+    amenity=driver_training: Uk:Tag:amenity=driver training
     amenity=driving_school: Uk:Tag:amenity=driving school
+    amenity=dryer: Uk:Tag:amenity=dryer
+    amenity=emergency_service: Uk:Tag:amenity=emergency service
+    amenity=events_centre: Uk:Tag:amenity=events centre
+    amenity=events_venue: Uk:Tag:amenity=events venue
+    amenity=exhibition_centre: Uk:Tag:amenity=exhibition centre
+    amenity=fast_food: Uk:Tag:amenity=fast food
+    amenity=feeding_place: Uk:Tag:amenity=feeding place
+    amenity=ferry_terminal: Uk:Tag:amenity=ferry terminal
+    amenity=fire_station: Uk:Tag:amenity=fire station
+    amenity=first_aid_school: Uk:Tag:amenity=first aid school
+    amenity=fish_spa: Uk:Tag:amenity=fish spa
+    amenity=food_court: Uk:Tag:amenity=food court
+    amenity=food_sharing: Uk:Tag:amenity=food sharing
     amenity=fountain: Uk:Tag:amenity=fountain
+    amenity=freeshop: Uk:Tag:amenity=freeshop
+    amenity=fridge: Uk:Tag:amenity=fridge
     amenity=fuel: Uk:Tag:amenity=fuel
+    amenity=funeral_hall: Uk:Tag:amenity=funeral hall
+    amenity=gambling: Uk:Tag:amenity=gambling
+    amenity=game_feeding: Uk:Tag:amenity=game feeding
+    amenity=give_box: Uk:Tag:amenity=give box
     amenity=grave_yard: Uk:Tag:amenity=grave yard
+    amenity=grit_bin: Uk:Tag:amenity=grit bin
+    amenity=health_post: Uk:Tag:amenity=health post
     amenity=hitching_post: Uk:Tag:amenity=hitching post
+    amenity=hookah_lounge: Uk:Tag:amenity=hookah lounge
     amenity=hospital: Uk:Tag:amenity=hospital
+    amenity=hunting_stand: Uk:Tag:amenity=hunting stand
+    amenity=ice_cream: Uk:Tag:amenity=ice cream
+    amenity=internet_cafe: Uk:Tag:amenity=internet cafe
+    amenity=juice_bar: Uk:Tag:amenity=juice bar
+    amenity=karaoke_box: Uk:Tag:amenity=karaoke box
     amenity=kindergarten: Uk:Tag:amenity=kindergarten
     amenity=kiosk: Uk:Tag:amenity=kiosk
+    amenity=kitchen: Uk:Tag:amenity=kitchen
+    amenity=kneipp_water_cure: Uk:Tag:amenity=kneipp water cure
+    amenity=language_school: Uk:Tag:amenity=language school
+    amenity=lavoir: Uk:Tag:amenity=lavoir
+    amenity=letter_box: Uk:Tag:amenity=letter box
+    amenity=library: Uk:Tag:amenity=library
+    amenity=library_dropoff: Uk:Tag:amenity=library dropoff
+    amenity=loading_dock: Uk:Tag:amenity=loading dock
+    amenity=locker: Uk:Tag:amenity=locker
+    amenity=lounger: Uk:Tag:amenity=lounger
+    amenity=love_hotel: Uk:Tag:amenity=love hotel
+    amenity=luggage_locker: Uk:Tag:amenity=luggage locker
+    amenity=mailroom: Uk:Tag:amenity=mailroom
+    amenity=marae: Uk:Tag:amenity=marae
+    amenity=marketplace: Uk:Tag:amenity=marketplace
+    amenity=microwave: Uk:Tag:amenity=microwave
+    amenity=mist_spraying_cooler: Uk:Tag:amenity=mist spraying cooler
+    amenity=mobile_library: Uk:Tag:amenity=mobile library
+    amenity=mobile_money_agent: Uk:Tag:amenity=mobile money agent
+    amenity=monastery: Uk:Tag:amenity=monastery
+    amenity=money_transfer: Uk:Tag:amenity=money transfer
+    amenity=mortuary: Uk:Tag:amenity=mortuary
+    amenity=motorcycle_parking: Uk:Tag:amenity=motorcycle parking
+    amenity=motorcycle_rental: Uk:Tag:amenity=motorcycle rental
+    amenity=motorcycle_taxi: Uk:Tag:amenity=motorcycle taxi
     amenity=music_school: Uk:Tag:amenity=music school
+    amenity=music_venue: Uk:Tag:amenity=music venue
+    amenity=nightclub: Uk:Tag:amenity=nightclub
+    amenity=nursing_home: Uk:Tag:amenity=nursing home
+    amenity=osmica: Uk:Tag:amenity=osmica
     amenity=parcel_locker: Uk:Tag:amenity=parcel locker
     amenity=park: Uk:Tag:amenity=park
     amenity=parking: Uk:Tag:amenity=parking
+    amenity=parking_entrance: Uk:Tag:amenity=parking entrance
+    amenity=parking_space: Uk:Tag:amenity=parking space
+    amenity=payment_centre: Uk:Tag:amenity=payment centre
     amenity=payment_terminal: Uk:Tag:amenity=payment terminal
     amenity=pharmacy: Uk:Tag:amenity=pharmacy
+    amenity=photo_booth: Uk:Tag:amenity=photo booth
+    amenity=piano: Uk:Tag:amenity=piano
+    amenity=place_of_mourning: Uk:Tag:amenity=place of mourning
     amenity=place_of_worship: Uk:Tag:amenity=place of worship
+    amenity=planetarium: Uk:Tag:amenity=planetarium
+    amenity=police: Uk:Tag:amenity=police
+    amenity=polling_station: Uk:Tag:amenity=polling station
+    amenity=post_box: Uk:Tag:amenity=post box
+    amenity=post_depot: Uk:Tag:amenity=post depot
     amenity=post_office: Uk:Tag:amenity=post office
+    amenity=prep_school: Uk:Tag:amenity=prep school
+    amenity=printer: Uk:Tag:amenity=printer
+    amenity=prison: Uk:Tag:amenity=prison
+    amenity=prison_camp: Uk:Tag:amenity=prison camp
+    amenity=pub: Uk:Tag:amenity=pub
+    amenity=public_bath: Uk:Tag:amenity=public bath
+    amenity=public_bookcase: Uk:Tag:amenity=public bookcase
+    amenity=public_building: Uk:Tag:amenity=public building
+    amenity=ranger_station: Uk:Tag:amenity=ranger station
+    amenity=reception_desk: Uk:Tag:amenity=reception desk
+    amenity=recycling: Uk:Tag:amenity=recycling
+    amenity=refugee_site: Uk:Tag:amenity=refugee site
+    amenity=relay_box: Uk:Tag:amenity=relay box
+    amenity=rescue_station: Uk:Tag:amenity=rescue station
+    amenity=research_institute: Uk:Tag:amenity=research institute
+    amenity=restaurant: Uk:Tag:amenity=restaurant
+    amenity=retirement_home: Uk:Tag:amenity=retirement home
+    amenity=rv_storage: Uk:Tag:amenity=rv storage
+    amenity=sailing_school: Uk:Tag:amenity=sailing school
+    amenity=sanatorium: Uk:Tag:amenity=sanatorium
+    amenity=sanitary_dump_station: Uk:Tag:amenity=sanitary dump station
     amenity=school: Uk:Tag:amenity=school
+    amenity=scooter_rental: Uk:Tag:amenity=scooter rental
+    amenity=seat: Uk:Tag:amenity=seat
+    amenity=security_booth: Uk:Tag:amenity=security booth
     amenity=shelter: Uk:Tag:amenity=shelter
+    amenity=shower: Uk:Tag:amenity=shower
+    amenity=ski_rental: Uk:Tag:amenity=ski rental
+    amenity=ski_school: Uk:Tag:amenity=ski school
+    amenity=smoking_area: Uk:Tag:amenity=smoking area
+    amenity=snow_removal_station: Uk:Tag:amenity=snow removal station
+    amenity=social_centre: Uk:Tag:amenity=social centre
+    amenity=social_club: Uk:Tag:amenity=social club
+    amenity=social_facility: Uk:Tag:amenity=social facility
+    amenity=stripclub: Uk:Tag:amenity=stripclub
+    amenity=studio: Uk:Tag:amenity=studio
+    amenity=swingerclub: Uk:Tag:amenity=swingerclub
+    amenity=taxi: Uk:Tag:amenity=taxi
+    amenity=telephone: Uk:Tag:amenity=telephone
     amenity=theatre: Uk:Tag:amenity=theatre
+    amenity=toilets: Uk:Tag:amenity=toilets
+    amenity=townhall: Uk:Tag:amenity=townhall
+    amenity=toy_library: Uk:Tag:amenity=toy library
+    amenity=traffic_park: Uk:Tag:amenity=traffic park
+    amenity=training: Uk:Tag:amenity=training
     amenity=university: Uk:Tag:amenity=university
+    amenity=vehicle_inspection: Uk:Tag:amenity=vehicle inspection
+    amenity=vending_machine: Uk:Tag:amenity=vending machine
+    amenity=veterinary: Uk:Tag:amenity=veterinary
+    amenity=waste_basket: Uk:Tag:amenity=waste basket
+    amenity=waste_disposal: Uk:Tag:amenity=waste disposal
+    amenity=waste_transfer_station: Uk:Tag:amenity=waste transfer station
+    amenity=water_point: Uk:Tag:amenity=water point
+    amenity=watering_place: Uk:Tag:amenity=watering place
     barrier=debris: Uk:Tag:barrier=debris
     barrier=entrance: Uk:Tag:barrier=entrance
     barrier=gate: Uk:Tag:barrier=gate
@@ -29142,24 +30037,96 @@ uk:
     boundary=historic: Uk:Tag:boundary=historic
     boundary=political: Uk:Tag:boundary=political
     boundary=postal_code: Uk:Tag:boundary=postal code
+    building=apartments: Uk:Tag:building=apartments
+    building=bakehouse: Uk:Tag:building=bakehouse
     building=barn: Uk:Tag:building=barn
+    building=barracks: Uk:Tag:building=barracks
+    building=beach_hut: Uk:Tag:building=beach hut
+    building=bridge: Uk:Tag:building=bridge
+    building=bungalow: Uk:Tag:building=bungalow
+    building=bunker: Uk:Tag:building=bunker
     building=cabin: Uk:Tag:building=cabin
+    building=carport: Uk:Tag:building=carport
+    building=castle: Uk:Tag:building=castle
+    building=cathedral: Uk:Tag:building=cathedral
+    building=chapel: Uk:Tag:building=chapel
     building=church: Uk:Tag:building=church
+    building=civic: Uk:Tag:building=civic
+    building=college: Uk:Tag:building=college
     building=commercial: Uk:Tag:building=commercial
+    building=conservatory: Uk:Tag:building=conservatory
+    building=construction: Uk:Tag:building=construction
+    building=container: Uk:Tag:building=container
     building=cowshed: Uk:Tag:building=cowshed
     building=detached: Uk:Tag:building=detached
+    building=digester: Uk:Tag:building=digester
     building=dormitory: Uk:Tag:building=dormitory
     building=farm: Uk:Tag:building=farm
     building=farm_auxiliary: Uk:Tag:building=farm auxiliary
+    building=fire_station: Uk:Tag:building=fire station
+    building=garage: Uk:Tag:building=garage
+    building=garages: Uk:Tag:building=garages
+    building=gatehouse: Uk:Tag:building=gatehouse
+    building=ger: Uk:Tag:building=ger
+    building=government: Uk:Tag:building=government
     building=grandstand: Uk:Tag:building=grandstand
     building=greenhouse: Uk:Tag:building=greenhouse
+    building=hangar: Uk:Tag:building=hangar
     building=hospital: Uk:Tag:building=hospital
     building=hotel: Uk:Tag:building=hotel
+    building=house: Uk:Tag:building=house
     building=houseboat: Uk:Tag:building=houseboat
+    building=hut: Uk:Tag:building=hut
+    building=industrial: Uk:Tag:building=industrial
+    building=kindergarten: Uk:Tag:building=kindergarten
+    building=kingdom_hall: Uk:Tag:building=kingdom hall
+    building=kiosk: Uk:Tag:building=kiosk
+    building=livestock: Uk:Tag:building=livestock
+    building=military: Uk:Tag:building=military
+    building=monastery: Uk:Tag:building=monastery
+    building=mosque: Uk:Tag:building=mosque
+    building=museum: Uk:Tag:building=museum
+    building=office: Uk:Tag:building=office
+    building=parking: Uk:Tag:building=parking
+    building=pavilion: Uk:Tag:building=pavilion
+    building=presbytery: Uk:Tag:building=presbytery
+    building=public: Uk:Tag:building=public
+    building=religious: Uk:Tag:building=religious
     building=residential: Uk:Tag:building=residential
+    building=retail: Uk:Tag:building=retail
+    building=riding_hall: Uk:Tag:building=riding hall
+    building=roof: Uk:Tag:building=roof
     building=roundhouse: Uk:Tag:building=roundhouse
+    building=ruins: Uk:Tag:building=ruins
+    building=school: Uk:Tag:building=school
     building=semidetached_house: Uk:Tag:building=semidetached house
+    building=service: Uk:Tag:building=service
+    building=shed: Uk:Tag:building=shed
+    building=shrine: Uk:Tag:building=shrine
+    building=silo: Uk:Tag:building=silo
+    building=slurry_tank: Uk:Tag:building=slurry tank
+    building=sports_hall: Uk:Tag:building=sports hall
     building=stable: Uk:Tag:building=stable
+    building=stadium: Uk:Tag:building=stadium
+    building=static_caravan: Uk:Tag:building=static caravan
+    building=stilt_house: Uk:Tag:building=stilt house
+    building=storage_tank: Uk:Tag:building=storage tank
+    building=sty: Uk:Tag:building=sty
+    building=supermarket: Uk:Tag:building=supermarket
+    building=synagogue: Uk:Tag:building=synagogue
+    building=temple: Uk:Tag:building=temple
+    building=tent: Uk:Tag:building=tent
+    building=terrace: Uk:Tag:building=terrace
+    building=toilets: Uk:Tag:building=toilets
+    building=tower: Uk:Tag:building=tower
+    building=train_station: Uk:Tag:building=train station
+    building=transformer_tower: Uk:Tag:building=transformer tower
+    building=transportation: Uk:Tag:building=transportation
+    building=tree_house: Uk:Tag:building=tree house
+    building=university: Uk:Tag:building=university
+    building=warehouse: Uk:Tag:building=warehouse
+    building=water_tower: Uk:Tag:building=water tower
+    building=yes: Uk:Tag:building=yes
     cemetery=grave: Uk:Tag:cemetery=grave
     cemetery=sector: Uk:Tag:cemetery=sector
     craft=agricultural_engines: Uk:Tag:craft=agricultural engines
@@ -29175,6 +30142,11 @@ uk:
     craft=sewing: Uk:Tag:craft=sewing
     craft=stonemason: Uk:Tag:craft=stonemason
     craft=tailor: Uk:Tag:craft=tailor
+    crossing=traffic_signals: Uk:Tag:crossing=traffic signals
+    crossing=uncontrolled: Uk:Tag:crossing=uncontrolled
+    crossing=unmarked: Uk:Tag:crossing=unmarked
+    cuisine=ukrainian: Uk:Tag:cuisine=ukrainian
+    emergency=assembly_point: Uk:Tag:emergency=assembly point
     emergency=fire_hydrant: Uk:Tag:emergency=fire hydrant
     emergency=fire_water_pond: Uk:Tag:emergency=fire water pond
     emergency=suction_point: Uk:Tag:emergency=suction point
@@ -29199,6 +30171,7 @@ uk:
     highway=busway: Uk:Tag:highway=busway
     highway=construction: Uk:Tag:highway=construction
     highway=corridor: Uk:Tag:highway=corridor
+    highway=crossing: Uk:Tag:highway=crossing
     highway=cycleway: Uk:Tag:highway=cycleway
     highway=escape: Uk:Tag:highway=escape
     highway=footway: Uk:Tag:highway=footway
@@ -29221,6 +30194,7 @@ uk:
     highway=tertiary: Uk:Tag:highway=tertiary
     highway=track: Uk:Tag:highway=track
     highway=traffic_mirror: Uk:Tag:highway=traffic mirror
+    highway=traffic_signals: Uk:Tag:highway=traffic signals
     highway=trunk: Uk:Tag:highway=trunk
     highway=turning_circle: Uk:Tag:highway=turning circle
     highway=unclassified: Uk:Tag:highway=unclassified
@@ -29313,6 +30287,7 @@ uk:
     office=telecommunication: Uk:Tag:office=telecommunication
     office=travel_agent: Uk:Tag:office=travel agent
     oneway=alternating: Uk:Tag:oneway=alternating
+    opening_hours=24/7: Uk:Tag:opening hours=24/7
     place=archipelago: Uk:Tag:place=archipelago
     place=borough: Uk:Tag:place=borough
     place=city: Uk:Tag:place=city
@@ -29341,6 +30316,7 @@ uk:
     place=town: Uk:Tag:place=town
     place=village: Uk:Tag:place=village
     police=offices: Uk:Tag:police=offices
+    post_office=post_partner: Uk:Tag:post office=post partner
     product=food: Uk:Tag:product=food
     pump=powered: Uk:Tag:pump=powered
     railway=abandoned: Uk:Tag:railway=abandoned
@@ -29354,6 +30330,7 @@ uk:
     railway=tram: Uk:Tag:railway=tram
     railway=water_crane: Uk:Tag:railway=water crane
     religion=christian: Uk:Tag:religion=christian
+    request_stop=yes: Uk:Tag:request stop=yes
     residential=apartments: Uk:Tag:residential=apartments
     residential=rural: Uk:Tag:residential=rural
     residential=single_family: Uk:Tag:residential=single family
@@ -29370,6 +30347,7 @@ uk:
     shop=optician: Uk:Tag:shop=optician
     shop=second_hand: Uk:Tag:shop=second hand
     shop=sewing: Uk:Tag:shop=sewing
+    shop=variety_store: Uk:Tag:shop=variety store
     sport=Swimming: Uk:Tag:sport=Swimming
     sport=multi: Uk:Tag:sport=multi
     sport=parachuting: Uk:Tag:sport=parachuting
@@ -29457,6 +30435,7 @@ zh-hans:
   key:
     abutters: Zh-hans:Key:abutters
     access: Zh-hans:Key:access
+    admin_level: Zh-hans:Key:admin level
     amenity: Zh-hans:Key:amenity
     attraction: Zh-hans:Key:attraction
     building: Zh-hans:Key:building
@@ -29546,7 +30525,9 @@ zh-hans:
     bridge:structure=humpback: Zh-hans:Tag:bridge:structure=humpback
     building=apartments: Zh-hans:Tag:building=apartments
     building=detached: Zh-hans:Tag:building=detached
+    building=hospital: Zh-hans:Tag:building=hospital
     building=office: Zh-hans:Tag:building=office
+    building=school: Zh-hans:Tag:building=school
     building=service: Zh-hans:Tag:building=service
     cemetery=grave: Zh-hans:Tag:cemetery=grave
     crossing=traffic_signals: Zh-hans:Tag:crossing=traffic signals
@@ -29594,6 +30575,7 @@ zh-hans:
     landuse=greenhouse_horticulture: Zh-hans:Tag:landuse=greenhouse horticulture
     landuse=industrial: Zh-hans:Tag:landuse=industrial
     landuse=military: Zh-hans:Tag:landuse=military
+    landuse=paddy: Zh-hans:Tag:landuse=paddy
     landuse=residential: Zh-hans:Tag:landuse=residential
     landuse=retail: Zh-hans:Tag:landuse=retail
     leisure=nature_reserve: Zh-hans:Tag:leisure=nature reserve
@@ -29727,6 +30709,7 @@ zh-hant:
     highway=unclassified: Zh-hant:Tag:highway=unclassified
     historic=aircraft: Zh-hant:Tag:historic=aircraft
     landuse=cemetery: Zh-hant:Tag:landuse=cemetery
+    landuse=paddy: Zh-hant:Tag:landuse=paddy
     leisure=adult_gaming_centre: Zh-hant:Tag:leisure=adult gaming centre
     leisure=firepit: Zh-hant:Tag:leisure=firepit
     leisure=fitness_centre: Zh-hant:Tag:leisure=fitness centre
diff --git a/db/migrate/20230830115219_create_doorkeeper_openid_connect_tables.rb b/db/migrate/20230830115219_create_doorkeeper_openid_connect_tables.rb
new file mode 100644 (file)
index 0000000..4924e15
--- /dev/null
@@ -0,0 +1,18 @@
+class CreateDoorkeeperOpenidConnectTables < ActiveRecord::Migration[7.0]
+  def change
+    create_table :oauth_openid_requests do |t|
+      t.references :access_grant, :null => false, :index => true
+      t.string :nonce, :null => false
+    end
+
+    # Avoid validating foreign keys doe to possible deadlock
+    # create a separate migration instead, as suggested by db:migrate
+
+    add_foreign_key(
+      :oauth_openid_requests,
+      :oauth_access_grants,
+      :column => :access_grant_id,
+      :on_delete => :cascade, :validate => false
+    )
+  end
+end
diff --git a/db/migrate/20230830115220_validate_create_doorkeeper_openid_connect_tables.rb b/db/migrate/20230830115220_validate_create_doorkeeper_openid_connect_tables.rb
new file mode 100644 (file)
index 0000000..0596cbe
--- /dev/null
@@ -0,0 +1,6 @@
+class ValidateCreateDoorkeeperOpenidConnectTables < ActiveRecord::Migration[7.0]
+  # Validate foreign key created by CreateDoorkeeperOpenidConnectTables
+  def change
+    validate_foreign_key :oauth_openid_requests, :oauth_access_grants
+  end
+end
diff --git a/db/migrate/20231007141103_add_primary_key_to_changeset_tags.rb b/db/migrate/20231007141103_add_primary_key_to_changeset_tags.rb
new file mode 100644 (file)
index 0000000..6f01865
--- /dev/null
@@ -0,0 +1,13 @@
+class AddPrimaryKeyToChangesetTags < ActiveRecord::Migration[7.0]
+  disable_ddl_transaction!
+
+  def up
+    add_primary_key :changeset_tags, [:changeset_id, :k], :algorithm => :concurrently
+    remove_index :changeset_tags, [:changeset_id]
+  end
+
+  def down
+    add_index :changeset_tags, [:changeset_id], :algorithm => :concurrently
+    remove_primary_key :changeset_tags
+  end
+end
index 1874e64616154aa4e24c41beb9d6403dcb709a70..467d5143cc427a0a9ad45190b9c260a7c6b7ee10 100644 (file)
@@ -1152,6 +1152,36 @@ CREATE SEQUENCE public.oauth_nonces_id_seq
 ALTER SEQUENCE public.oauth_nonces_id_seq OWNED BY public.oauth_nonces.id;
 
 
+--
+-- Name: oauth_openid_requests; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.oauth_openid_requests (
+    id bigint NOT NULL,
+    access_grant_id bigint NOT NULL,
+    nonce character varying NOT NULL
+);
+
+
+--
+-- Name: oauth_openid_requests_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE public.oauth_openid_requests_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+--
+-- Name: oauth_openid_requests_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE public.oauth_openid_requests_id_seq OWNED BY public.oauth_openid_requests.id;
+
+
 --
 -- Name: oauth_tokens; Type: TABLE; Schema: public; Owner: -
 --
@@ -1704,6 +1734,13 @@ ALTER TABLE ONLY public.oauth_applications ALTER COLUMN id SET DEFAULT nextval('
 ALTER TABLE ONLY public.oauth_nonces ALTER COLUMN id SET DEFAULT nextval('public.oauth_nonces_id_seq'::regclass);
 
 
+--
+-- Name: oauth_openid_requests id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.oauth_openid_requests ALTER COLUMN id SET DEFAULT nextval('public.oauth_openid_requests_id_seq'::regclass);
+
+
 --
 -- Name: oauth_tokens id; Type: DEFAULT; Schema: public; Owner: -
 --
@@ -1801,6 +1838,14 @@ ALTER TABLE ONLY public.changeset_comments
     ADD CONSTRAINT changeset_comments_pkey PRIMARY KEY (id);
 
 
+--
+-- Name: changeset_tags changeset_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.changeset_tags
+    ADD CONSTRAINT changeset_tags_pkey PRIMARY KEY (changeset_id, k);
+
+
 --
 -- Name: changesets changesets_pkey; Type: CONSTRAINT; Schema: public; Owner: -
 --
@@ -2033,6 +2078,14 @@ ALTER TABLE ONLY public.oauth_nonces
     ADD CONSTRAINT oauth_nonces_pkey PRIMARY KEY (id);
 
 
+--
+-- Name: oauth_openid_requests oauth_openid_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.oauth_openid_requests
+    ADD CONSTRAINT oauth_openid_requests_pkey PRIMARY KEY (id);
+
+
 --
 -- Name: oauth_tokens oauth_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: -
 --
@@ -2160,13 +2213,6 @@ ALTER TABLE ONLY public.ways
 CREATE INDEX acls_k_idx ON public.acls USING btree (k);
 
 
---
--- Name: changeset_tags_id_idx; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX changeset_tags_id_idx ON public.changeset_tags USING btree (changeset_id);
-
-
 --
 -- Name: changesets_bbox_idx; Type: INDEX; Schema: public; Owner: -
 --
@@ -2573,6 +2619,13 @@ CREATE UNIQUE INDEX index_oauth_applications_on_uid ON public.oauth_applications
 CREATE UNIQUE INDEX index_oauth_nonces_on_nonce_and_timestamp ON public.oauth_nonces USING btree (nonce, "timestamp");
 
 
+--
+-- Name: index_oauth_openid_requests_on_access_grant_id; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_oauth_openid_requests_on_access_grant_id ON public.oauth_openid_requests USING btree (access_grant_id);
+
+
 --
 -- Name: index_oauth_tokens_on_token; Type: INDEX; Schema: public; Owner: -
 --
@@ -2989,6 +3042,14 @@ ALTER TABLE ONLY public.oauth_access_tokens
     ADD CONSTRAINT fk_rails_732cb83ab7 FOREIGN KEY (application_id) REFERENCES public.oauth_applications(id) NOT VALID;
 
 
+--
+-- Name: oauth_openid_requests fk_rails_77114b3b09; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.oauth_openid_requests
+    ADD CONSTRAINT fk_rails_77114b3b09 FOREIGN KEY (access_grant_id) REFERENCES public.oauth_access_grants(id) ON DELETE CASCADE;
+
+
 --
 -- Name: active_storage_variant_records fk_rails_993965df05; Type: FK CONSTRAINT; Schema: public; Owner: -
 --
@@ -3332,119 +3393,122 @@ ALTER TABLE ONLY public.ways
 SET search_path TO "$user", public;
 
 INSERT INTO "schema_migrations" (version) VALUES
-('1'),
-('10'),
-('11'),
-('12'),
-('13'),
-('14'),
-('15'),
-('16'),
-('17'),
-('18'),
-('19'),
-('2'),
-('20'),
-('20100513171259'),
-('20100516124737'),
-('20100910084426'),
-('20101114011429'),
-('20110322001319'),
-('20110508145337'),
-('20110521142405'),
-('20110925112722'),
-('20111116184519'),
-('20111212183945'),
-('20120123184321'),
-('20120208122334'),
-('20120208194454'),
-('20120214210114'),
-('20120219161649'),
-('20120318201948'),
-('20120328090602'),
-('20120404205604'),
-('20120808231205'),
-('20121005195010'),
-('20121012044047'),
-('20121119165817'),
-('20121202155309'),
-('20121203124841'),
-('20130328184137'),
-('20131212124700'),
-('20140115192822'),
-('20140117185510'),
-('20140210003018'),
-('20140507110937'),
-('20140519141742'),
-('20150110152606'),
-('20150111192335'),
-('20150222101847'),
-('20150818224516'),
-('20160822153055'),
-('20161002153425'),
-('20161011010929'),
-('20170222134109'),
-('20180204153242'),
-('20181020114000'),
-('20181031113522'),
-('20190518115041'),
-('20190623093642'),
-('20190702193519'),
-('20190716173946'),
-('20191120140058'),
-('20201004105659'),
-('20201006213836'),
-('20201006220807'),
-('20201214144017'),
-('20210510083027'),
-('20210510083028'),
-('20210511104518'),
-('20211216185316'),
-('20220201183346'),
-('20220223140543'),
-('20230816135800'),
-('20230825162137'),
-('21'),
-('22'),
-('23'),
-('24'),
-('25'),
-('26'),
-('27'),
-('28'),
-('29'),
-('3'),
-('30'),
-('31'),
-('32'),
-('33'),
-('34'),
-('35'),
-('36'),
-('37'),
-('38'),
-('39'),
-('4'),
-('40'),
-('41'),
-('42'),
-('43'),
-('44'),
-('45'),
-('46'),
-('47'),
-('48'),
-('49'),
-('5'),
-('50'),
-('51'),
-('52'),
-('53'),
-('54'),
-('55'),
-('56'),
-('57'),
-('6'),
-('7'),
+('9'),
 ('8'),
-('9');
+('7'),
+('6'),
+('57'),
+('56'),
+('55'),
+('54'),
+('53'),
+('52'),
+('51'),
+('50'),
+('5'),
+('49'),
+('48'),
+('47'),
+('46'),
+('45'),
+('44'),
+('43'),
+('42'),
+('41'),
+('40'),
+('4'),
+('39'),
+('38'),
+('37'),
+('36'),
+('35'),
+('34'),
+('33'),
+('32'),
+('31'),
+('30'),
+('3'),
+('29'),
+('28'),
+('27'),
+('26'),
+('25'),
+('24'),
+('23'),
+('22'),
+('21'),
+('20231007141103'),
+('20230830115220'),
+('20230830115219'),
+('20230825162137'),
+('20230816135800'),
+('20220223140543'),
+('20220201183346'),
+('20211216185316'),
+('20210511104518'),
+('20210510083028'),
+('20210510083027'),
+('20201214144017'),
+('20201006220807'),
+('20201006213836'),
+('20201004105659'),
+('20191120140058'),
+('20190716173946'),
+('20190702193519'),
+('20190623093642'),
+('20190518115041'),
+('20181031113522'),
+('20181020114000'),
+('20180204153242'),
+('20170222134109'),
+('20161011010929'),
+('20161002153425'),
+('20160822153055'),
+('20150818224516'),
+('20150222101847'),
+('20150111192335'),
+('20150110152606'),
+('20140519141742'),
+('20140507110937'),
+('20140210003018'),
+('20140117185510'),
+('20140115192822'),
+('20131212124700'),
+('20130328184137'),
+('20121203124841'),
+('20121202155309'),
+('20121119165817'),
+('20121012044047'),
+('20121005195010'),
+('20120808231205'),
+('20120404205604'),
+('20120328090602'),
+('20120318201948'),
+('20120219161649'),
+('20120214210114'),
+('20120208194454'),
+('20120208122334'),
+('20120123184321'),
+('20111212183945'),
+('20111116184519'),
+('20110925112722'),
+('20110521142405'),
+('20110508145337'),
+('20110322001319'),
+('20101114011429'),
+('20100910084426'),
+('20100516124737'),
+('20100513171259'),
+('20'),
+('2'),
+('19'),
+('18'),
+('17'),
+('16'),
+('15'),
+('14'),
+('13'),
+('12'),
+('11'),
+('10'),
+('1');
index 7ff2ba8b4358428c04814a899d5e8563be0b971b..0456c08732a927eb1c944f74b5ccc969f9971ce4 100644 (file)
@@ -1,6 +1,7 @@
 module Oauth
   SCOPES = %w[read_prefs write_prefs write_diary write_api read_gpx write_gpx write_notes].freeze
   PRIVILEGED_SCOPES = %w[read_email skip_authorization].freeze
+  OAUTH2_SCOPES = %w[openid].freeze
 
   class Scope
     attr_reader :name
@@ -14,9 +15,10 @@ module Oauth
     end
   end
 
-  def self.scopes(privileged: false)
+  def self.scopes(oauth2: false, privileged: false)
     scopes = SCOPES
     scopes += PRIVILEGED_SCOPES if privileged
+    scopes += OAUTH2_SCOPES if oauth2
     scopes.collect { |s| Scope.new(s) }
   end
 end
index a0c4d9c8debc70fb3a39c6a32d7ffecf7b9aa867..56d358bd8dcb2823afa64a7dcb56e62f5a40d589 100644 (file)
@@ -15,7 +15,7 @@ module RichText
     include ActionView::Helpers::TextHelper
     include ActionView::Helpers::OutputSafetyHelper
 
-    def sanitize(text)
+    def sanitize(text, _options = {})
       Sanitize.clean(text, Sanitize::Config::OSM).html_safe
     end
   end
index 70bc391a0ab0672d944dadfa7ad1ec2535babeb8..103e7fcc9aa8312d9d143769264d6c9f71b521be 100644 (file)
@@ -1,7 +1,7 @@
 # NOTE: only doing this in development as some production environments (Heroku)
 # NOTE: are sensitive to local FS writes, and besides -- it's just not proper
 # NOTE: to have a dev-mode tool do its thing in production.
-if Rails.env.development?
+if Rails.env.development? || Rails.env.test?
   task :set_annotation_options => :environment do
     # You can override any of these by setting an environment variable of the
     # same name.
index d34c46008e9363eddfb6bb4d68b98efdfc8bce5f..f19234a8ec0f04ba8b4ac380d85b83734e1c1067 100644 (file)
@@ -19,7 +19,7 @@ apt-get upgrade -y
 apt-get install -y ruby ruby-dev ruby-bundler \
                      libxml2-dev libxslt1-dev nodejs npm \
                      build-essential git-core \
-                     postgresql postgresql-contrib libpq-dev libvips-dev \
+                     postgresql postgresql-contrib libpq-dev libvips-dev libyaml-dev \
                      libsasl2-dev libffi-dev libgd-dev libarchive-dev libbz2-dev
 npm install --global yarn
 
index b4bc4a5abd21345126dd08b75fe88381dfd940fc..802e006e1190e025d898d120d6964b81a817d384 100644 (file)
@@ -134,12 +134,14 @@ module Api
 
     def test_create_wrong_method
       auth_header = basic_authorization_header create(:user).email, "test"
-      assert_raise ActionController::RoutingError do
-        get changeset_create_path, :headers => auth_header
-      end
-      assert_raise ActionController::RoutingError do
-        post changeset_create_path, :headers => auth_header
-      end
+
+      get changeset_create_path, :headers => auth_header
+      assert_response :not_found
+      assert_template "rescues/routing_error"
+
+      post changeset_create_path, :headers => auth_header
+      assert_response :not_found
+      assert_template "rescues/routing_error"
     end
 
     ##
@@ -361,13 +363,13 @@ module Api
 
       auth_header = basic_authorization_header user.email, "test"
 
-      assert_raise ActionController::RoutingError do
-        get changeset_close_path(changeset), :headers => auth_header
-      end
+      get changeset_close_path(changeset), :headers => auth_header
+      assert_response :not_found
+      assert_template "rescues/routing_error"
 
-      assert_raise ActionController::RoutingError do
-        post changeset_close_path(changeset), :headers => auth_header
-      end
+      post changeset_close_path(changeset), :headers => auth_header
+      assert_response :not_found
+      assert_template "rescues/routing_error"
     end
 
     ##
index 9e680dd068cd9c8fa69fdcb37214aa4a137944cb..2d827a077339404c28d8fef9b7feedfa47c85b91 100644 (file)
@@ -138,7 +138,7 @@ module Api
       xml = "<osm><node lat='#{lat}' lon='#{lon}' changeset='#{changeset.id}'><tag k='foo' v='#{'x' * 256}'/></node></osm>"
       put node_create_path, :params => xml, :headers => auth_header
       assert_response :bad_request, "node upload did not return bad_request status"
-      assert_equal ["NodeTag ", " v: is too long (maximum is 255 characters) (\"#{'x' * 256}\")"], @response.body.split(/[0-9]+,foo:/)
+      assert_match(/ v: is too long \(maximum is 255 characters\) /, @response.body)
     end
 
     def test_show
index 468af852b7c2e37b89d802f024b55c8066f39daa..b26782a3f015bdee3c30b98d7570a77375be45b0 100644 (file)
@@ -194,7 +194,7 @@ module Api
 
       # Now authenticated
       create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
-      assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+      assert_not_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
       auth_header = basic_authorization_header user.display_name, "test"
       post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }, :headers => auth_header
       assert_response :success
@@ -206,13 +206,13 @@ module Api
       assert_not trace.inserted
       assert_equal File.new(fixture).read, trace.file.blob.download
       trace.destroy
-      assert_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+      assert_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
 
       # Rewind the file
       file.rewind
 
       # Now authenticated, with the legacy public flag
-      assert_not_equal "public", user.preferences.where(:k => "gps.trace.visibility").first.v
+      assert_not_equal "public", user.preferences.find_by(:k => "gps.trace.visibility").v
       auth_header = basic_authorization_header user.display_name, "test"
       post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 1 }, :headers => auth_header
       assert_response :success
@@ -224,14 +224,14 @@ module Api
       assert_not trace.inserted
       assert_equal File.new(fixture).read, trace.file.blob.download
       trace.destroy
-      assert_equal "public", user.preferences.where(:k => "gps.trace.visibility").first.v
+      assert_equal "public", user.preferences.find_by(:k => "gps.trace.visibility").v
 
       # Rewind the file
       file.rewind
 
       # Now authenticated, with the legacy private flag
       second_user = create(:user)
-      assert_nil second_user.preferences.where(:k => "gps.trace.visibility").first
+      assert_nil second_user.preferences.find_by(:k => "gps.trace.visibility")
       auth_header = basic_authorization_header second_user.display_name, "test"
       post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 0 }, :headers => auth_header
       assert_response :success
@@ -243,7 +243,7 @@ module Api
       assert_not trace.inserted
       assert_equal File.new(fixture).read, trace.file.blob.download
       trace.destroy
-      assert_equal "private", second_user.preferences.where(:k => "gps.trace.visibility").first.v
+      assert_equal "private", second_user.preferences.find_by(:k => "gps.trace.visibility").v
     end
 
     # Check updating a trace through the api
index b505d9cdb8666ed6221b1302512867b0b48e0925..b474468789d342a5e3a71df904518dd22ad14e79 100644 (file)
@@ -135,7 +135,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
         assert_select "input[name=commit][type=submit][value=Publish]", :count => 1
         assert_select "input[name=commit][type=submit][value=Edit]", :count => 1
         assert_select "input[name=commit][type=submit][value=Preview]", :count => 1
-        assert_select "input", :count => 7
+        assert_select "input", :count => 6
       end
     end
   end
@@ -164,7 +164,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template :new
 
-    assert_nil UserPreference.where(:user => user, :k => "diary.default_language").first
+    assert_nil UserPreference.find_by(:user => user, :k => "diary.default_language")
   end
 
   def test_create
@@ -189,7 +189,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     # checks if user was subscribed
     assert_equal 1, entry.subscribers.length
 
-    assert_equal "en", UserPreference.where(:user => user, :k => "diary.default_language").first.v
+    assert_equal "en", UserPreference.find_by(:user => user, :k => "diary.default_language").v
   end
 
   def test_create_german
@@ -216,7 +216,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     # checks if user was subscribed
     assert_equal 1, entry.subscribers.length
 
-    assert_equal "de", UserPreference.where(:user => user, :k => "diary.default_language").first.v
+    assert_equal "de", UserPreference.find_by(:user => user, :k => "diary.default_language").v
   end
 
   def test_new_spammy
@@ -294,7 +294,7 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
         assert_select "input[name=commit][type=submit][value=Update]", :count => 1
         assert_select "input[name=commit][type=submit][value=Edit]", :count => 1
         assert_select "input[name=commit][type=submit][value=Preview]", :count => 1
-        assert_select "input", :count => 8
+        assert_select "input", :count => 7
       end
     end
 
@@ -695,9 +695,9 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest
     assert_template :show
 
     # Try a non-integer ID
-    assert_raise ActionController::RoutingError do
-      get "/user/#{CGI.escape(user.display_name)}/diary/#{diary_entry.id})"
-    end
+    get "/user/#{CGI.escape(user.display_name)}/diary/#{diary_entry.id})"
+    assert_response :not_found
+    assert_template "rescues/routing_error"
 
     # Try a deleted entry
     diary_entry_deleted = create(:diary_entry, :user => user, :visible => false)
index 6273caaf2938a01c969e78c1ee87985bae930934..19de4ae8e6784ad8c4dba37ac5ac242ecb4a8869 100644 (file)
@@ -28,7 +28,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     friend = create(:user)
 
     # Check that the users aren't already friends
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When not logged in a GET should ask us to login
     get make_friend_path(friend)
@@ -37,7 +37,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     # When not logged in a POST should error
     post make_friend_path(friend)
     assert_response :forbidden
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     session_for(user)
 
@@ -49,7 +49,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
       assert_select "input[type='hidden'][name='referer']", 0
       assert_select "input[type='submit']", 1
     end
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When logged in a POST should add the friendship
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
@@ -59,7 +59,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     end
     assert_redirected_to user_path(friend)
     assert_match(/is now your friend/, flash[:notice])
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal friend.email, email.to.first
@@ -73,7 +73,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     end
     assert_redirected_to user_path(friend)
     assert_match(/You are already friends with/, flash[:warning])
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
   end
 
   def test_make_friend_with_referer
@@ -83,7 +83,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     session_for(user)
 
     # Check that the users aren't already friends
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # The GET should preserve any referer
     get make_friend_path(friend), :params => { :referer => "/test" }
@@ -93,7 +93,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
       assert_select "input[type='hidden'][name='referer'][value='/test']", 1
       assert_select "input[type='submit']", 1
     end
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When logged in a POST should add the friendship and refer us
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
@@ -103,7 +103,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     end
     assert_redirected_to "/test"
     assert_match(/is now your friend/, flash[:notice])
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
     email = ActionMailer::Base.deliveries.first
     assert_equal 1, email.to.count
     assert_equal friend.email, email.to.first
@@ -125,7 +125,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     create(:friendship, :befriender => user, :befriendee => friend)
 
     # Check that the users are friends
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When not logged in a GET should ask us to login
     get remove_friend_path(friend)
@@ -134,7 +134,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     # When not logged in a POST should error
     post remove_friend_path, :params => { :display_name => friend.display_name }
     assert_response :forbidden
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
 
     session_for(user)
 
@@ -146,19 +146,19 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
       assert_select "input[type='hidden'][name='referer']", 0
       assert_select "input[type='submit']", 1
     end
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When logged in a POST should remove the friendship
     post remove_friend_path(friend)
     assert_redirected_to user_path(friend)
     assert_match(/was removed from your friends/, flash[:notice])
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # A second POST should report that the friendship does not exist
     post remove_friend_path(friend)
     assert_redirected_to user_path(friend)
     assert_match(/is not one of your friends/, flash[:error])
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
   end
 
   def test_remove_friend_with_referer
@@ -169,7 +169,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     session_for(user)
 
     # Check that the users are friends
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # The GET should preserve any referer
     get remove_friend_path(friend), :params => { :referer => "/test" }
@@ -179,13 +179,13 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
       assert_select "input[type='hidden'][name='referer'][value='/test']", 1
       assert_select "input[type='submit']", 1
     end
-    assert Friendship.where(:befriender => user, :befriendee => friend).first
+    assert Friendship.find_by(:befriender => user, :befriendee => friend)
 
     # When logged in a POST should remove the friendship and refer
     post remove_friend_path(friend), :params => { :referer => "/test" }
     assert_redirected_to "/test"
     assert_match(/was removed from your friends/, flash[:notice])
-    assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
+    assert_nil Friendship.find_by(:befriender => user, :befriendee => friend)
   end
 
   def test_remove_friend_unknown_user
index dd740e57034e749798736eb47f400067fe0aba07..d62eb35b7a19462ab6d7fcbd992f553cafaf141a 100644 (file)
@@ -415,6 +415,6 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template :error
     assert_template :layout => nil
-    assert_select "p.search_results_error", error
+    assert_select ".alert.alert-danger", error
   end
 end
index fe3ecdea67655f56cc5b1de331e25f04fcc84ffa..595284bb6d54fb06636e55c187d09535aa7f337a 100644 (file)
@@ -658,7 +658,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
-    assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_not_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_response :redirect
@@ -672,7 +672,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_not trace.inserted
     assert_equal File.new(fixture).read, trace.file.blob.download
     trace.destroy
-    assert_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
   end
 
   # Test creating a trace with validation errors
@@ -684,7 +684,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
 
     # Now authenticated
     create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
-    assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+    assert_not_equal "trackable", user.preferences.find_by(:k => "gps.trace.visibility").v
     session_for(user)
     post traces_path, :params => { :trace => { :gpx_file => file, :description => "", :tagstring => "new,trace", :visibility => "trackable" } }
     assert_template :new
index e7ef180655463326d59f90f767dd7c262b6e35cb..1be1b72a5847150e595ec7b29333286c2fa4f4a2 100644 (file)
@@ -3,21 +3,21 @@ require "test_helper"
 class GeocoderHelperTest < ActionView::TestCase
   def test_result_to_html
     html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :name => "Name")
-    assert_dom_equal '<a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
+    assert_dom_equal '<a class="set_position stretched-link" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
 
     html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :prefix => "Prefix", :name => "Name")
-    assert_dom_equal 'Prefix <a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
+    assert_dom_equal 'Prefix <a class="set_position stretched-link" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
 
     html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :name => "Name", :suffix => "Suffix")
-    assert_dom_equal '<a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
+    assert_dom_equal '<a class="set_position stretched-link" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
 
     html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :prefix => "Prefix", :name => "Name", :suffix => "Suffix")
-    assert_dom_equal 'Prefix <a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
+    assert_dom_equal 'Prefix <a class="set_position stretched-link" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
 
     html = result_to_html(:type => "node", :id => 123456, :name => "Name")
-    assert_dom_equal '<a class="set_position" data-type="node" data-id="123456" data-name="Name" href="/node/123456">Name</a>', html
+    assert_dom_equal '<a class="set_position stretched-link" data-type="node" data-id="123456" data-name="Name" href="/node/123456">Name</a>', html
 
     html = result_to_html(:min_lat => 1.23, :max_lat => 4.56, :min_lon => -1.23, :max_lon => 2.34, :name => "Name")
-    assert_dom_equal '<a class="set_position" data-min-lat="1.23" data-max-lat="4.56" data-min-lon="-1.23" data-max-lon="2.34" data-name="Name" href="/?bbox=-1.23,1.23,2.34,4.56">Name</a', html
+    assert_dom_equal '<a class="set_position stretched-link" data-min-lat="1.23" data-max-lat="4.56" data-min-lon="-1.23" data-max-lon="2.34" data-name="Name" href="/?bbox=-1.23,1.23,2.34,4.56">Name</a', html
   end
 end
index 287504cb46232239f80f0a00138e8997c259168b..7708d51150d9903b3b11755da34a5a3a45988b74 100644 (file)
@@ -11,10 +11,7 @@ class UserRolesHelperTest < ActionView::TestCase
 
     icon = role_icon(create(:moderator_user), "moderator")
     expected = <<~HTML.delete("\n")
-      <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
       <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
     HTML
     assert_dom_equal expected, icon
   end
@@ -26,10 +23,7 @@ class UserRolesHelperTest < ActionView::TestCase
     icon = role_icon(user, "moderator")
     expected = <<~HTML.delete("\n")
       <a data-confirm="Are you sure you want to grant the role `moderator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant">
-      <picture>
-      <source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml">
       <img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" />
-      </picture>
       </a>
     HTML
     assert_dom_equal expected, icon
@@ -38,10 +32,7 @@ class UserRolesHelperTest < ActionView::TestCase
     icon = role_icon(moderator_user, "moderator")
     expected = <<~HTML.delete("\n")
       <a data-confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke">
-      <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
       <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
       </a>
     HTML
     assert_dom_equal expected, icon
@@ -55,23 +46,14 @@ class UserRolesHelperTest < ActionView::TestCase
 
     icons = role_icons(create(:moderator_user))
     expected = <<~HTML.delete("\n")
-      <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
       <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
     HTML
     assert_dom_equal expected, icons
 
     icons = role_icons(create(:super_user))
     expected = <<~HTML.delete("\n")
-      <picture>
-      <source srcset="/images/roles/administrator.svg" type="image/svg+xml">
       <img srcset="/images/roles/administrator.svg" border="0" alt="This user is an administrator" title="This user is an administrator" src="/images/roles/administrator.png" width="20" height="20" />
-      </picture>
-       <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
       <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
     HTML
     assert_dom_equal expected, icons
   end
@@ -83,16 +65,10 @@ class UserRolesHelperTest < ActionView::TestCase
     icons = role_icons(user)
     expected = <<~HTML.delete("\n")
       <a data-confirm="Are you sure you want to grant the role `administrator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/administrator/grant">
-      <picture>
-      <source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml">
       <img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" />
-      </picture>
       </a>
-       <a data-confirm="Are you sure you want to grant the role `moderator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant">
-      <picture>
-      <source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml">
+      <a data-confirm="Are you sure you want to grant the role `moderator&#39; to the user `#{user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant">
       <img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" />
-      </picture>
       </a>
     HTML
     assert_dom_equal expected, icons
@@ -101,16 +77,10 @@ class UserRolesHelperTest < ActionView::TestCase
     icons = role_icons(moderator_user)
     expected = <<~HTML.delete("\n")
       <a data-confirm="Are you sure you want to grant the role `administrator&#39; to the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/administrator/grant">
-      <picture>
-      <source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml">
       <img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" />
-      </picture>
       </a>
-       <a data-confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke">
-      <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
+      <a data-confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{moderator_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke">
       <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
       </a>
     HTML
     assert_dom_equal expected, icons
@@ -119,16 +89,10 @@ class UserRolesHelperTest < ActionView::TestCase
     icons = role_icons(super_user)
     expected = <<~HTML.delete("\n")
       <a data-confirm="Are you sure you want to revoke the role `administrator&#39; from the user `#{super_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/administrator/revoke">
-      <picture>
-      <source srcset="/images/roles/administrator.svg" type="image/svg+xml">
       <img srcset="/images/roles/administrator.svg" border="0" alt="Revoke administrator access" title="Revoke administrator access" src="/images/roles/administrator.png" width="20" height="20" />
-      </picture>
       </a>
-       <a data-confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{super_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/moderator/revoke">
-      <picture>
-      <source srcset="/images/roles/moderator.svg" type="image/svg+xml">
+      <a data-confirm="Are you sure you want to revoke the role `moderator&#39; from the user `#{super_user.display_name}&#39;?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/moderator/revoke">
       <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
-      </picture>
       </a>
     HTML
     assert_dom_equal expected, icons
index 81f12f7cbef8feb3b635d1085495c4c460ec9bdf..fd6b42fece05ca43f3be92414c8faa7df3af8c52 100644 (file)
@@ -1,4 +1,5 @@
 require "test_helper"
+require "jwt"
 
 class OAuth2Test < ActionDispatch::IntegrationTest
   def test_oauth2
@@ -12,7 +13,8 @@ class OAuth2Test < ActionDispatch::IntegrationTest
 
     token = request_token(client, code)
 
-    test_token(token, user, client)
+    assert_equal "read_prefs", token["scope"]
+    test_token(token["access_token"], user, client)
   end
 
   def test_oauth2_oob
@@ -30,7 +32,8 @@ class OAuth2Test < ActionDispatch::IntegrationTest
 
     token = request_token(client, code)
 
-    test_token(token, user, client)
+    assert_equal "read_prefs", token["scope"]
+    test_token(token["access_token"], user, client)
   end
 
   def test_oauth2_pkce_plain
@@ -46,7 +49,8 @@ class OAuth2Test < ActionDispatch::IntegrationTest
 
     token = request_token(client, code, verifier)
 
-    test_token(token, user, client)
+    assert_equal "read_prefs", token["scope"]
+    test_token(token["access_token"], user, client)
   end
 
   def test_oauth2_pkce_s256
@@ -62,16 +66,95 @@ class OAuth2Test < ActionDispatch::IntegrationTest
 
     token = request_token(client, code, verifier)
 
-    test_token(token, user, client)
+    assert_equal "read_prefs", token["scope"]
+    test_token(token["access_token"], user, client)
+  end
+
+  def test_openid_connect
+    user = create(:user)
+    client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "openid read_prefs")
+    state = SecureRandom.urlsafe_base64(16)
+    verifier = SecureRandom.urlsafe_base64(48)
+    challenge = Base64.urlsafe_encode64(Digest::SHA256.digest(verifier), :padding => false)
+
+    authorize_client(user, client, :state => state, :code_challenge => challenge, :code_challenge_method => "S256", :scope => "openid read_prefs")
+    assert_response :redirect
+    code = validate_redirect(client, state)
+
+    token = request_token(client, code, verifier)
+
+    assert_equal "openid read_prefs", token["scope"]
+
+    access_token = token["access_token"]
+    assert_not_nil access_token
+
+    id_token = token["id_token"]
+    assert_not_nil id_token
+
+    data, _headers = JWT.decode id_token, nil, true, {
+      :algorithm => [Doorkeeper::OpenidConnect.signing_algorithm.to_s],
+      :verify_iss => true,
+      :iss => "#{Settings.server_protocol}://#{Settings.server_url}",
+      :verify_sub => true,
+      :sub => user.id,
+      :verify_aud => true,
+      :aud => client.uid
+    } do |headers, _payload|
+      kid = headers["kid"]
+      get oauth_discovery_keys_path
+      keys = response.parsed_body["keys"]
+      jwk = keys&.detect { |e| e["kid"] == kid }
+      jwk && JWT::JWK::RSA.import(jwk).public_key
+    end
+
+    assert_equal user.id.to_s, data["sub"]
+    assert_not data.key?("preferred_username")
+
+    get oauth_userinfo_path
+    assert_response :unauthorized
+
+    auth_header = bearer_authorization_header(access_token)
+    get oauth_userinfo_path, :headers => auth_header
+    assert_response :success
+
+    userinfo = response.parsed_body
+
+    assert_not_nil userinfo
+    assert_equal user.id.to_s, userinfo["sub"]
+    assert_equal user.display_name, userinfo["preferred_username"]
+  end
+
+  def test_openid_discovery
+    get oauth_discovery_provider_path
+    assert_response :success
+    openid_config = response.parsed_body
+
+    assert_equal "#{Settings.server_protocol}://#{Settings.server_url}", openid_config["issuer"]
+
+    assert_equal oauth_authorization_path, URI(openid_config["authorization_endpoint"]).path
+    assert_equal oauth_token_path, URI(openid_config["token_endpoint"]).path
+    assert_equal oauth_userinfo_path, URI(openid_config["userinfo_endpoint"]).path
+    assert_equal oauth_discovery_keys_path, URI(openid_config["jwks_uri"]).path
+  end
+
+  def test_openid_key
+    get oauth_discovery_keys_path
+    assert_response :success
+    key_info = response.parsed_body
+    assert key_info.key?("keys")
+    assert_equal 1, key_info["keys"].size
+    assert_equal Doorkeeper::OpenidConnect.signing_key.kid, key_info["keys"][0]["kid"]
   end
 
   private
 
   def authorize_client(user, client, options = {})
-    options = options.merge(:client_id => client.uid,
-                            :redirect_uri => client.redirect_uri,
-                            :response_type => "code",
-                            :scope => "read_prefs")
+    options = {
+      :client_id => client.uid,
+      :redirect_uri => client.redirect_uri,
+      :response_type => "code",
+      :scope => "read_prefs"
+    }.merge(options)
 
     get oauth_authorization_path(options)
     assert_response :redirect
@@ -135,9 +218,8 @@ class OAuth2Test < ActionDispatch::IntegrationTest
     assert_response :success
     token = response.parsed_body
     assert_equal "Bearer", token["token_type"]
-    assert_equal "read_prefs", token["scope"]
 
-    token["access_token"]
+    token
   end
 
   def test_token(token, user, client)
index 57a98823bafd607156e481b10775575c34a2fb29..7188afd7a967dea14dacb646a99798e96aaeb45e 100644 (file)
@@ -15,19 +15,7 @@ class UserDiariesTest < ActionDispatch::IntegrationTest
     # We can now login
     post "/login", :params => { "username" => user.email, "password" => "test", :referer => "/diary/new" }
     assert_response :redirect
-
-    # Check that there is some payload alerting the user to the redirect
-    # and allowing them to get to the page they are being directed to
-    assert_select "html:root" do
-      assert_select "body" do
-        assert_select "a[href='http://www.example.com/diary/new']"
-      end
-    end
-    # Required due to a bug in the rails testing framework
-    # http://markmail.org/message/wnslvi5xv5moqg7g
-    @html_document = nil
     follow_redirect!
-
     assert_response :success
     assert_template "diary_entries/new"
 
index 2e61082343d401fe30ed38bfc313d5615da88154..ee0a77649ea995f94f947364133df8c2d2ce11c5 100644 (file)
@@ -87,7 +87,7 @@ class NodeTest < ActiveSupport::TestCase
     assert_equal node_template.timestamp.to_i, node.timestamp.to_i
 
     assert_equal(1, OldNode.where(:node_id => node_template.id).count)
-    old_node = OldNode.where(:node_id => node_template.id).first
+    old_node = OldNode.find_by(:node_id => node_template.id, :version => 1)
     assert_not_nil old_node
     assert_equal node_template.latitude, old_node.latitude
     assert_equal node_template.longitude, old_node.longitude
@@ -120,7 +120,7 @@ class NodeTest < ActiveSupport::TestCase
     # assert_equal node_template.tags, node.tags
 
     assert_equal(2, OldNode.where(:node_id => node_template.id).count)
-    old_node = OldNode.where(:node_id => node_template.id, :version => 2).first
+    old_node = OldNode.find_by(:node_id => node_template.id, :version => 2)
     assert_not_nil old_node
     assert_equal node_template.latitude, old_node.latitude
     assert_equal node_template.longitude, old_node.longitude
@@ -149,7 +149,7 @@ class NodeTest < ActiveSupport::TestCase
     # assert_equal node_template.tags, node.tags
 
     assert_equal(2, OldNode.where(:node_id => node_template.id).count)
-    old_node = OldNode.where(:node_id => node_template.id, :version => 2).first
+    old_node = OldNode.find_by(:node_id => node_template.id, :version => 2)
     assert_not_nil old_node
     assert_equal node_template.latitude, old_node.latitude
     assert_equal node_template.longitude, old_node.longitude
index 66107771ae5a299c7155e0097add0ed06e8800cb..af219db435f47800575217639b4b2b3bc32fa37d 100644 (file)
@@ -202,7 +202,7 @@ class TraceTest < ActiveSupport::TestCase
 
     # Check that the tile has been set prior to the bulk import
     # i.e. that the callbacks have been run correctly
-    assert_equal 3221331576, Tracepoint.where(:trace => trace).first.tile
+    assert_equal 3221331576, Tracepoint.find_by(:trace => trace).tile
   end
 
   def test_import_creates_icon
index bde99b23e26e3c4564fb8a8ff9de0f5da3601c09..4f16353a59d6f268c82419728eecf57b86c34a46 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@8.50.0":
-  version "8.50.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484"
-  integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==
+"@eslint/js@8.52.0":
+  version "8.52.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
+  integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
 
-"@humanwhocodes/config-array@^0.11.11":
-  version "0.11.11"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844"
-  integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
+"@humanwhocodes/config-array@^0.11.13":
+  version "0.11.13"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
+  integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
   dependencies:
-    "@humanwhocodes/object-schema" "^1.2.1"
+    "@humanwhocodes/object-schema" "^2.0.1"
     debug "^4.1.1"
     minimatch "^3.0.5"
 
   resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
   integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
 
-"@humanwhocodes/object-schema@^1.2.1":
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
-  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@humanwhocodes/object-schema@^2.0.1":
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
+  integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
 
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
     "@nodelib/fs.scandir" "2.1.5"
     fastq "^1.6.0"
 
+"@ungap/structured-clone@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+  integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+
 acorn-jsx@^5.3.2:
   version "5.3.2"
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -224,17 +229,18 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
 eslint@^8.0.0:
-  version "8.50.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2"
-  integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==
+  version "8.52.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
+  integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.6.1"
     "@eslint/eslintrc" "^2.1.2"
-    "@eslint/js" "8.50.0"
-    "@humanwhocodes/config-array" "^0.11.11"
+    "@eslint/js" "8.52.0"
+    "@humanwhocodes/config-array" "^0.11.13"
     "@humanwhocodes/module-importer" "^1.0.1"
     "@nodelib/fs.walk" "^1.2.8"
+    "@ungap/structured-clone" "^1.2.0"
     ajv "^6.12.4"
     chalk "^4.0.0"
     cross-spawn "^7.0.2"