]> git.openstreetmap.org Git - rails.git/commitdiff
Merge branch 'pull/3472'
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 2 Mar 2022 15:00:25 +0000 (15:00 +0000)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 2 Mar 2022 15:00:25 +0000 (15:00 +0000)
91 files changed:
.github/workflows/docker.yml
.github/workflows/lint.yml
.github/workflows/tests.yml
.rubocop_todo.yml
Gemfile.lock
app/assets/opensearch/osm.xml
app/controllers/api/changesets_controller.rb
app/controllers/api/notes_controller.rb
app/controllers/api/traces_controller.rb
app/controllers/friendships_controller.rb
app/controllers/messages_controller.rb
app/controllers/traces_controller.rb
app/controllers/user_blocks_controller.rb
app/controllers/users_controller.rb
app/helpers/changesets_helper.rb
app/helpers/user_blocks_helper.rb
app/models/access_token.rb
app/models/changeset.rb
app/models/changeset_comment.rb
app/models/changeset_tag.rb
app/models/client_application.rb
app/models/issue.rb
app/models/issue_comment.rb
app/models/message.rb
app/models/node.rb
app/models/node_tag.rb
app/models/note.rb
app/models/note_comment.rb
app/models/oauth2_verifier.rb
app/models/oauth_token.rb
app/models/old_node.rb
app/models/old_node_tag.rb
app/models/old_relation.rb
app/models/old_relation_tag.rb
app/models/old_way.rb
app/models/old_way_tag.rb
app/models/relation.rb
app/models/relation_tag.rb
app/models/report.rb
app/models/request_token.rb
app/models/trace.rb
app/models/user_block.rb
app/models/user_preference.rb
app/models/user_token.rb
app/models/way.rb
app/models/way_tag.rb
config/application.rb
config/environments/development.rb
config/initializers/new_framework_defaults_7_0.rb
config/locales/eo.yml
config/locales/es.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/fy.yml
config/locales/he.yml
config/locales/hi.yml
config/locales/ia.yml
config/locales/is.yml
config/locales/ko.yml
config/locales/pl.yml
config/locales/ru.yml
config/locales/uk.yml
db/functions/quadtile.c
db/migrate/20220223140543_remove_id_defaults.rb [new file with mode: 0644]
db/structure.sql
lib/gpx.rb
script/statistics
script/update-spam-blocks
test/controllers/api/changeset_comments_controller_test.rb
test/controllers/api/changesets_controller_test.rb
test/controllers/api/notes_controller_test.rb
test/controllers/browse_controller_test.rb
test/controllers/messages_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/factories/messages.rb
test/factories/node.rb
test/factories/old_node.rb
test/factories/old_relation.rb
test/factories/old_way.rb
test/factories/relation.rb
test/factories/tracepoints.rb
test/factories/traces.rb
test/factories/user.rb
test/factories/user_blocks.rb
test/factories/way.rb
test/helpers/application_helper_test.rb
test/helpers/user_blocks_helper_test.rb
test/integration/user_blocks_test.rb
test/models/message_test.rb
test/models/note_test.rb
yarn.lock

index a24c745f248d75b4dbb9a55f22d08321bb770ed7..29ef1e8b807cae238f7ac82779d20913e5bf8f78 100644 (file)
@@ -8,7 +8,7 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
     - name: Checkout source
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Poke config
       run: |
         cp config/example.storage.yml config/storage.yml
index 6ae40a3f5c591e2b7be303aeaccf6396471f83c9..27f93428c89f66f6f9860edd55a74d1bb8ed19d6 100644 (file)
@@ -11,7 +11,7 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
     - name: Check out code
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Setup ruby
       uses: actions/setup-ruby@v1.1.3
       with:
@@ -35,7 +35,7 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
     - name: Check out code
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Setup ruby
       uses: actions/setup-ruby@v1.1.3
       with:
@@ -59,7 +59,7 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
     - name: Check out code
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Setup ruby
       uses: actions/setup-ruby@v1.1.3
       with:
@@ -94,7 +94,7 @@ jobs:
     runs-on: ubuntu-20.04
     steps:
     - name: Check out code
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Setup ruby
       uses: actions/setup-ruby@v1.1.3
       with:
index 1d7c5035041c6c97fced029598a6e50761c8bfe4..ef569e3e17fc56d98453dc0ac3aadc7afa15ba96 100644 (file)
@@ -15,7 +15,7 @@ jobs:
       OPENSTREETMAP_MEMCACHE_SERVERS: 127.0.0.1
     steps:
     - name: Checkout source
-      uses: actions/checkout@v2.4.0
+      uses: actions/checkout@v3
     - name: Setup ruby
       uses: actions/setup-ruby@v1.1.3
       with:
index 2527192f9bcf970f4a6bd5c83d82ee9700dd0075..b8e782553aebb0159ceb2ef3a06abe29e57b3c77 100644 (file)
@@ -196,18 +196,6 @@ Rails/OutputSafety:
     - 'lib/rich_text.rb'
     - 'test/helpers/application_helper_test.rb'
 
-# Offense count: 26
-# Cop supports --auto-correct.
-Rails/RedundantPresenceValidationOnBelongsTo:
-  Enabled: false
-
-# Offense count: 90
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: strict, flexible
-Rails/TimeZone:
-  Enabled: false
-
 # Offense count: 6
 # Cop supports --auto-correct.
 Rake/Desc:
index 6b90fce5008aa7805fb9eaa53b3dc15d0b8beb4c..57896dfbc006fda9599edf799384131d42476016 100644 (file)
@@ -86,17 +86,17 @@ GEM
     autoprefixer-rails (10.4.2.0)
       execjs (~> 2)
     aws-eventstream (1.2.0)
-    aws-partitions (1.556.0)
-    aws-sdk-core (3.126.2)
+    aws-partitions (1.560.0)
+    aws-sdk-core (3.127.0)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.525.0)
       aws-sigv4 (~> 1.1)
       jmespath (~> 1.0)
-    aws-sdk-kms (1.54.0)
-      aws-sdk-core (~> 3, >= 3.126.0)
+    aws-sdk-kms (1.55.0)
+      aws-sdk-core (~> 3, >= 3.127.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.112.0)
-      aws-sdk-core (~> 3, >= 3.126.0)
+    aws-sdk-s3 (1.113.0)
+      aws-sdk-core (~> 3, >= 3.127.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.4)
     aws-sigv4 (1.4.0)
@@ -249,7 +249,7 @@ GEM
       image_optim (~> 0.24)
       railties
       sprockets
-    image_processing (1.12.1)
+    image_processing (1.12.2)
       mini_magick (>= 4.9.5, < 5)
       ruby-vips (>= 2.0.17, < 3)
     image_size (3.0.1)
@@ -358,7 +358,7 @@ GEM
     parallel (1.21.0)
     parser (3.1.1.0)
       ast (~> 2.4.1)
-    pg (1.3.2)
+    pg (1.3.3)
     popper_js (1.16.0)
     progress (3.6.0)
     public_suffix (4.0.6)
index 43e64c7ea6f426be4b79e2a28b678feb6cd5b16b..6e6db73055c94ce8afe2fa908ac98ed85d50aeee 100644 (file)
@@ -3,15 +3,14 @@
                        xmlns:moz="http://www.mozilla.org/2006/browser/search/">
        <ShortName>OpenStreetMap</ShortName>
        <LongName>OpenStreetMap Search</LongName>
-       <Description>Search for a place in OpenStreetMap, the Wiki World Map</Description>
+       <Description>Search for a place in OpenStreetMap</Description>
        <InputEncoding>UTF-8</InputEncoding>
        <OutputEncoding>UTF-8</OutputEncoding>
-       <Image width="16" height="16">data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%06%00%00%00%1F%F3%FFa%00%00%00%19tEXtSoftware%00www.inkscape.org%9B%EE%3C%1A%00%00%01'IDATx%9C%9D%93%B1q%C30%0CE%1F%5Dd%80l%90I%C4*%A7%22%95%CF%85J%97%AE%B2%82%3DC%CE%03%A0%B3%9B%B8f%95%A3%17H%93%05%5C%A7%C8%0A%3F%05E%8A%92l%E7.%D0%E9N%02%81%07%E0Cr%FCaf%A6%FC%BC%5E%AF%DD%F4%3C%3Bt%C5%87%99)%84P%0E%DA%B6%BD%0AI%00%A1%A8%A8%1E%263S%D7u%C9'F%FE%9B%80%0C%C9%C9%22%BD'%B0%0A%AC%86%2CJ%DB%0E%22%11%8F%2F%D4%B3%22%8D%F34%CE%13u%06R%0C%40%D7u%AA%01%C5r%40%0Dq%88%C6%F9i%E8%7C%8CX%5D%A9M%95%D6%A3%A2Ti%C3Xx%CA%9C%F5mf3h%11%B6%07%B8%0APh%97%DD%1E%9E%5E%08!%D0%B6m%F1%87%108%1E%8EY5%007%03%5Cv%7B%00%3E%BF%3E%F8~x%1E%CD%B89l%00%F0I%0FWw%00%20%DB%AEJr%B6%E5%FB%09%80%C6y%CE%7D%91%1AP%B6p%2B%D9%BB%06%18V%3A%B5E%9F%AC%5B%95%AFY%3F%EE%20%A2mW%AA%93%DFN%3F%A0%E1%9B%F0u%E5%BC%BC%89%88%BC.%1F%D5'%DF%FD%C1%EE%F8%FFg%BFp%96%DF%E2%DCw%25%2B%00%00%00%00IEND%AEB%60%82</Image>
+       <Image width="32" height="32">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAHXRFWHRUaXRsZQBPcGVuU3RyZWV0TWFwIGxvZ28gMjAxMbBaqq0AAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAACXBIWXMAAAIJAAACCQGIszliAAADAFBMVEVHcEzJ66zM7KnL5Kap3Y3U7LfR7rLd9KrS8K+99bLG6J/P7a3Z8r7O7KrC6aSswcPT77PW78HH46jJ6KfO7K7X8Lqy4ZXK7KrN66vY87vN7Kuu3ZEkMTHC35/W7byswcGzz67O7azA5aHP67mt35G245na88DB5KC41cXN2KLC4KwvLzbA0M7G5b2brJPT5eKarap6iooxPT3D3K6kurlcUz4tLSPwxTSElXs3NSL14qHL06ra8sFpaVaFl4VUXF6UpqWvxLnE2pvb88LN7avE56S546Da88HM6onM6MrM7KrL6qik24m337na8r/V8LfT8LTU5PLZ7trW8bnJ56fQ77Di8uSg1oXQ7LHO6czU7bjI4dPF46LA2Oze8eDS69PP7K3n8+rH5aTJzJzC56LA56vY8bzj8+bQ6s++1era7d7G4sc4Nzq95qjI6KS24KG846fc6fTX5vLG2+jS77LR4vHU5tei2IjV6d8xMTPW2K7N6qzN5M/R5NW60ueIn4Kox4+31b/T0qs8Oz+nvb1AP0JIRUnC5MPM3qXd7eGuz7PK5cqSv4DIxZnQ7bU7PTG60aK/1+W7456915y+2aPK4qvB3aefuo1TWVCSqZus3JFbY1ZygWfQ6r1BQ0fG487N6dHK3u7X7dfK16Gf04O24Jjo7ua13LjB2tGy0rssLC4xMC/OxqCbzoI1NTWtxrzi8OXF56660Mm0yMPB3p6x3pq+1uCFmHfL577I2dV3h2vM56jAvZS/3ce92L3I4M680t3M0J7U5+zN4O/Z27Owy7DB4r4mJymQoJOtzpSjtaHS4rC30cnW5bSxxqCmv43J6LKcs4aXrIjD3cOZtoe1z5qtwrLB4bRIUklob16Qp3y2zNhvbk13hoXb88JPV12it9BXYmrG393i8OuswpqUyoCx2LWeuYe1uo+TxHyXln6vqIbP5dvQ5dyt0ZrZ8MaZw5mcsZet1q/CzbqkrIeyrK2dsbRCRTeyxtJ6iZGnk1dhbHF+dmKBkJ+ppJCUo7fdGvRRAAAASHRSTlMAi9Bd/klPCBAEJb2KHzftZ6ky+aTOt3OfPvPeCtz2/f2XZ+vqk+V7z3DzJvVs4PbJsD9I4uPTtR2HrvHA88Z91PqX+Kn06tFpmiUEAAADw0lEQVQ4y2NQdGEU4GKAAA5GN2kxJXYIh5NV0B1EC3h5eXkzabJzsPHYOOcWlIezuCryMfAKCCqn3bsnCdIlBVJxUCrNzy/tQkHBrFneMRc/Om6+NnN6QZQfD8gIEaB8R4e3f3BfQX5uwdZJl9a/3bBhQ1bFzpaPfqIgBWxe3t7J3iEJ/sEb8wvyt9ZHV9TWlpXV1tRGnzkhB3IPh7e398HkxTEJEREbgfJvOsuyshYF1dbU7G88c4IVZASTt3dITPLihJKAgKlA/Z1ZYUGL4uMzamq6Vp6xAzsioTokJqQ3yduretr6srJFQVlxcWFxcfHd+7oa5WWACtT8/IL9oqoivJO2bN9bFhcWlJ6eGJYVtsB3edfRTfYMDJJ+aWlRaVFHEmJmLZkZnZWeFfa4qLDoUEW7L1BFowMDA08aUIG//5GQpT5rW4oDiwIDA0uBeOE2oIpnK/kZGESDg4MjIoKbtrD4fJCfCJQrBKKihbF184FGABWwB/j7+0dEVE318fmk0LKt9PChQ4dLD8fGxtZl+/r6NvIzsAYAQXXT6SSfWRunfKtbeDgoqKI4MzY2E2SF714TBuYQ79DQ0DXVeSnXU/J/TswsXhSfsWBiJtCG7mPt8VmGDBzCIUkhCR3JeQk7JjX+/ZE50dPTMzLyUXG0p2dGXLq+EQMDNygg1yRVB8/N3/d/3u26bk9PsJqMRWGJiQbAcBIHRnfvbu/d/vtT9z64/7AuGqzAMz4obNkyHW2gAiFgdG9J9oqZe2D/gQcP235viwQrCFq2LH2FHjhpCefleXUkT8suiZh6t611xv2WBUAl8enLsjafUuAEqZCNyYvZkvy5ac/Nf39ab8yZc7dl04ro6J2bZ7ZcfSIEUsDtHZN0fe/iybPntf26s+vW9lsN51/VX3p+8uq5a1NA6YFdbm53dp8XSH5e852Z0642TL8y/XVDT0/PyaNaoBTF9j6yL7hkyuzWttac7/Vfm5qipk6b8KKh5+XTtZM0QDYIRqbmRk2Z3dzauq5/zpd9t/2bqvpOr5m8NhwI1EEKlFNTL0yY0dzcXNl/80pv9YHLAWerzkYtLV8SXu7DB/JlburcCTNymnMq++dc3BNzuSR7f4B/cEr5Eh8fHxZwqi8oODdjXc66Vf27nu/pPQaMuB0r/P0nAbX7+KiAFDDmvrtRua4SKH9+8m5rCaYEoIrsgJRwoLyPGEgBn7iTbeXq46u3N8hKMAN9xSvOHZodGrOURVoVlqc5rUyPm1kYw7jArKTLyMzLgATYzS1lGHABANfVkEkFerrFAAAAAElFTkSuQmCC</Image>
        <Url type="text/html" method="get" template="https://www.openstreetmap.org/search">
          <Param name="query" value="{searchTerms}"/>
        </Url>
        <Query role="example" searchTerms="Reigate" />
-       <Developer>Jonathan Bennett</Developer>
        <AdultContent>false</AdultContent>
-       <Attribution>Data &amp;copy; OpenStreetMap contributors, Some Rights Reserved. CC by-sa 2.0. Geolocation provided by npemap.org.uk, geocoder.us, geocoder.ca and geonames.org.</Attribution>
+       <Attribution>&amp;copy; OpenStreetMap contributors. ODbL 1.0. Geocoding provided by nominatim.openstreetmap.org.</Attribution>
 </OpenSearchDescription>
index 63fda31bdc297e0e509437da3d6ada61584197bd..df27ab5ca7a1866ea6dfa0577a01d0893978573f 100644 (file)
@@ -307,11 +307,11 @@ module Api
         times = time.split(",")
         raise OSM::APIBadUserInput, "bad time range" if times.size != 2
 
-        from, to = times.collect { |t| Time.parse(t) }
+        from, to = times.collect { |t| Time.parse(t).utc }
         changesets.where("closed_at >= ? and created_at <= ?", from, to)
       else
         # if there is no comma, assume its a lower limit on time
-        changesets.where("closed_at >= ?", Time.parse(time))
+        changesets.where("closed_at >= ?", Time.parse(time).utc)
       end
       # stupid Time seems to throw both of these for bad parsing, so
       # we have to catch both and ensure the correct code path is taken.
@@ -329,7 +329,7 @@ module Api
         changesets
       else
         changesets.where("closed_at >= ? and num_changes <= ?",
-                         Time.now.getutc, Changeset::MAX_ELEMENTS)
+                         Time.now.utc, Changeset::MAX_ELEMENTS)
       end
     end
 
@@ -341,7 +341,7 @@ module Api
         changesets
       else
         changesets.where("closed_at < ? or num_changes > ?",
-                         Time.now.getutc, Changeset::MAX_ELEMENTS)
+                         Time.now.utc, Changeset::MAX_ELEMENTS)
       end
     end
 
index f480b9706102c9a549bc770b5c7064b6fdaa7253..8a41d5db804b2eac4a156404d7213b1d2fadc644 100644 (file)
@@ -277,16 +277,16 @@ module Api
       # Add any date filter
       if params[:from]
         begin
-          from = Time.parse(params[:from])
+          from = Time.parse(params[:from]).utc
         rescue ArgumentError
           raise OSM::APIBadUserInput, "Date #{params[:from]} is in a wrong format"
         end
 
         begin
           to = if params[:to]
-                 Time.parse(params[:to])
+                 Time.parse(params[:to]).utc
                else
-                 Time.now
+                 Time.now.utc
                end
         rescue ArgumentError
           raise OSM::APIBadUserInput, "Date #{params[:to]} is in a wrong format"
@@ -361,7 +361,7 @@ module Api
       elsif closed_since.positive?
         notes.where(:status => "open")
              .or(notes.where(:status => "closed")
-                      .where(notes.arel_table[:closed_at].gt(Time.now - closed_since.days)))
+                      .where(notes.arel_table[:closed_at].gt(Time.now.utc - closed_since.days)))
       else
         notes.where(:status => "open")
       end
index aa8a0600071c9c59546091011f568552f51d4767..6a0ec81ec72d82f698beebecd5773c92ede80ce0 100644 (file)
@@ -108,7 +108,7 @@ module Api
         :visibility => visibility,
         :inserted => false,
         :user => current_user,
-        :timestamp => Time.now.getutc,
+        :timestamp => Time.now.utc,
         :file => file
       )
 
index 93dffb4a366f6d3965aca3614147a57e54f65260..a08ce0b69882017a2719a3cf4309e0b910937e92 100644 (file)
@@ -19,7 +19,7 @@ class FriendshipsController < ApplicationController
         friendship.befriendee = @new_friend
         if current_user.is_friends_with?(@new_friend)
           flash[:warning] = t "friendships.make_friend.already_a_friend", :name => @new_friend.display_name
-        elsif current_user.friendships.where("created_at >= ?", Time.now.getutc - 1.hour).count >= current_user.max_friends_per_hour
+        elsif current_user.friendships.where("created_at >= ?", Time.now.utc - 1.hour).count >= current_user.max_friends_per_hour
           flash.now[:error] = t "friendships.make_friend.limit_exceeded"
         elsif friendship.save
           flash[:notice] = t "friendships.make_friend.success", :name => @new_friend.display_name
index a95e2e5878d6965f31f1ae7b425828c4721017fd..e801915d6e03d9933cd30e919ca8a73237ab5566 100644 (file)
@@ -24,9 +24,9 @@ class MessagesController < ApplicationController
     @message = Message.new(message_params)
     @message.recipient = @user
     @message.sender = current_user
-    @message.sent_on = Time.now.getutc
+    @message.sent_on = Time.now.utc
 
-    if current_user.sent_messages.where("sent_on >= ?", Time.now.getutc - 1.hour).count >= current_user.max_messages_per_hour
+    if current_user.sent_messages.where("sent_on >= ?", Time.now.utc - 1.hour).count >= current_user.max_messages_per_hour
       flash.now[:error] = t ".limit_exceeded"
       render :action => "new"
     elsif @message.save
index a9dbc85396cb675381b074c88cfe8503e020fbe1..741819f65a167c3c8a149955f0d742f19a343a47 100644 (file)
@@ -119,7 +119,7 @@ class TracesController < ApplicationController
                          :description => params[:trace][:description],
                          :visibility => params[:trace][:visibility],
                          :inserted => false, :user => current_user,
-                         :timestamp => Time.now.getutc)
+                         :timestamp => Time.now.utc)
       @trace.valid?
       @trace.errors.add(:gpx_file, "can't be blank")
 
@@ -266,7 +266,7 @@ class TracesController < ApplicationController
       :visibility => visibility,
       :inserted => false,
       :user => current_user,
-      :timestamp => Time.now.getutc,
+      :timestamp => Time.now.utc,
       :file => file
     )
 
index 63fca655750830184e5a0d221326b050426e5fce..63ebdad713b85f5b54785c5d8169a611f89d57dc 100644 (file)
@@ -32,7 +32,7 @@ class UserBlocksController < ApplicationController
   end
 
   def edit
-    params[:user_block_period] = ((@user_block.ends_at - Time.now.getutc) / 1.hour).ceil.to_s
+    params[:user_block_period] = ((@user_block.ends_at - Time.now.utc) / 1.hour).ceil.to_s
   end
 
   def create
@@ -41,7 +41,7 @@ class UserBlocksController < ApplicationController
         :user => @user,
         :creator => current_user,
         :reason => params[:user_block][:reason],
-        :ends_at => Time.now.getutc + @block_period.hours,
+        :ends_at => Time.now.utc + @block_period.hours,
         :needs_view => params[:user_block][:needs_view]
       )
 
@@ -62,7 +62,7 @@ class UserBlocksController < ApplicationController
         flash[:error] = t(".only_creator_can_edit")
         redirect_to :action => "edit"
       elsif @user_block.update(
-        :ends_at => Time.now.getutc + @block_period.hours,
+        :ends_at => Time.now.utc + @block_period.hours,
         :reason => params[:user_block][:reason],
         :needs_view => params[:user_block][:needs_view]
       )
index 39a191d841effafde6ca2a9d4b5a90f70270d57f..3489b4eda9e290c039f8cb61e4117b93bd08c267 100644 (file)
@@ -55,8 +55,8 @@ class UsersController < ApplicationController
     elsif current_user
       unless current_user.terms_agreed?
         current_user.consider_pd = params[:user][:consider_pd]
-        current_user.tou_agreed = Time.now.getutc
-        current_user.terms_agreed = Time.now.getutc
+        current_user.tou_agreed = Time.now.utc
+        current_user.terms_agreed = Time.now.utc
         current_user.terms_seen = true
 
         flash[:notice] = t "users.new.terms accepted" if current_user.save
@@ -73,8 +73,8 @@ class UsersController < ApplicationController
         current_user.description = "" if current_user.description.nil?
         current_user.creation_ip = request.remote_ip
         current_user.languages = http_accept_language.user_preferred_languages
-        current_user.terms_agreed = Time.now.getutc
-        current_user.tou_agreed = Time.now.getutc
+        current_user.terms_agreed = Time.now.utc
+        current_user.tou_agreed = Time.now.utc
         current_user.terms_seen = true
 
         if current_user.auth_uid.blank?
index 4c0236b6b2ab6e8bee86a4cd749be8f37b0ebc2d..5773240ff1d64fbce02d99dc0ac2695c45bf594d 100644 (file)
@@ -10,7 +10,7 @@ module ChangesetsHelper
   end
 
   def changeset_details(changeset)
-    if changeset.closed_at > Time.now
+    if changeset.closed_at > Time.now.utc
       action = :created
       time = time_ago_in_words(changeset.created_at, :scope => :"datetime.distance_in_words_ago")
       title = l(changeset.created_at)
index 95b6cb600c739786701c0cb95c6fe8470c4428a3..3a55e1cdedfcc12d9f3d02ca1135ed7f8f339feb 100644 (file)
@@ -8,7 +8,7 @@ module UserBlocksHelper
     if block.active?
       # if the block hasn't expired yet show the date, if the user just needs to login show that
       if block.needs_view?
-        if block.ends_at > Time.now.getutc
+        if block.ends_at > Time.now.utc
           t("user_blocks.helper.time_future_and_until_login_html", :time => friendly_date(block.ends_at))
         else
           t("user_blocks.helper.until_login")
index 1a5ff8553c825a785ee5fff21fa1aa42dcae618c..d2c0dba1ce85a93e39b7838f0e6b1bcbd24f88e5 100644 (file)
@@ -36,8 +36,8 @@
 #
 
 class AccessToken < OauthToken
-  belongs_to :user
-  belongs_to :client_application
+  belongs_to :user, :optional => true
+  belongs_to :client_application, :optional => true
 
   scope :valid, -> { where(:invalidated_at => nil) }
 
@@ -52,6 +52,6 @@ class AccessToken < OauthToken
   protected
 
   def set_authorized_at
-    self.authorized_at = Time.now
+    self.authorized_at = Time.now.utc
   end
 end
index aa674ea7fc5391ec781119e20f07d5bcef478332..2659eaeeacf1ad6bf4c59f37a64da5c18bcc1703 100644 (file)
@@ -44,8 +44,6 @@ class Changeset < ApplicationRecord
 
   validates :id, :uniqueness => true, :presence => { :on => :update },
                  :numericality => { :on => :update, :only_integer => true }
-  validates :user_id, :presence => true,
-                      :numericality => { :only_integer => true }
   validates :num_changes, :presence => true,
                           :numericality => { :only_integer => true,
                                              :greater_than_or_equal_to => 0 }
@@ -73,11 +71,11 @@ class Changeset < ApplicationRecord
     # note that this may not be a hard limit - due to timing changes and
     # concurrency it is possible that some changesets may be slightly
     # longer than strictly allowed or have slightly more changes in them.
-    ((closed_at > Time.now.getutc) && (num_changes <= MAX_ELEMENTS))
+    ((closed_at > Time.now.utc) && (num_changes <= MAX_ELEMENTS))
   end
 
   def set_closed_time_now
-    self.closed_at = Time.now.getutc if is_open?
+    self.closed_at = Time.now.utc if is_open?
   end
 
   def self.from_xml(xml, create: false)
@@ -97,7 +95,7 @@ class Changeset < ApplicationRecord
   def self.from_xml_node(pt, create: false)
     cs = Changeset.new
     if create
-      cs.created_at = Time.now.getutc
+      cs.created_at = Time.now.utc
       # initial close time is 1h ahead, but will be increased on each
       # modification.
       cs.closed_at = cs.created_at + IDLE_TIMEOUT
@@ -193,7 +191,7 @@ class Changeset < ApplicationRecord
       self.closed_at = if (closed_at - created_at) > (MAX_TIME_OPEN - IDLE_TIMEOUT)
                          created_at + MAX_TIME_OPEN
                        else
-                         Time.now.getutc + IDLE_TIMEOUT
+                         Time.now.utc + IDLE_TIMEOUT
                        end
     end
   end
index ceb7d35597f75e816811214fbfa252eddd7470d0..1b78f98e8d2da289ddefa3c25262ffc70e790af3 100644 (file)
@@ -25,8 +25,8 @@ class ChangesetComment < ApplicationRecord
 
   validates :id, :uniqueness => true, :presence => { :on => :update },
                  :numericality => { :on => :update, :only_integer => true }
-  validates :changeset, :presence => true, :associated => true
-  validates :author, :presence => true, :associated => true
+  validates :changeset, :associated => true
+  validates :author, :associated => true
   validates :visible, :inclusion => [true, false]
   validates :body, :characters => true
 
index 600ace4a6e498affc37cce96160289753fbd880e..672e6f76ca90c1e6cbdeebeb51d57174e68be239 100644 (file)
@@ -20,7 +20,7 @@ class ChangesetTag < ApplicationRecord
 
   belongs_to :changeset
 
-  validates :changeset, :presence => true, :associated => true
+  validates :changeset, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => :changeset_id }
 end
index 1b2faafbb1d79c96b63da5303bf20f0ba8ae785b..d9d6b2df8ca60d11ecfe404d1bc6ef94cfe7178f 100644 (file)
@@ -31,7 +31,7 @@
 #
 
 class ClientApplication < ApplicationRecord
-  belongs_to :user
+  belongs_to :user, :optional => true
   has_many :tokens, :class_name => "OauthToken", :dependent => :delete_all
   has_many :access_tokens
   has_many :oauth2_verifiers
index c94fe56a7d47b30c33f9ac3d51cfe6c1bee81afd..54947be303d569e76691e7959b17b7568a7e69ab 100644 (file)
@@ -32,9 +32,9 @@
 
 class Issue < ApplicationRecord
   belongs_to :reportable, :polymorphic => true
-  belongs_to :reported_user, :class_name => "User"
-  belongs_to :user_resolved, :class_name => "User", :foreign_key => :resolved_by
-  belongs_to :user_updated, :class_name => "User", :foreign_key => :updated_by
+  belongs_to :reported_user, :class_name => "User", :optional => true
+  belongs_to :user_resolved, :class_name => "User", :foreign_key => :resolved_by, :optional => true
+  belongs_to :user_updated, :class_name => "User", :foreign_key => :updated_by, :optional => true
 
   has_many :reports, :dependent => :destroy
   has_many :comments, :class_name => "IssueComment", :dependent => :destroy
@@ -70,7 +70,7 @@ class Issue < ApplicationRecord
     event :resolve do
       transitions :from => :open, :to => :resolved
       after do
-        self.resolved_at = Time.now.getutc
+        self.resolved_at = Time.now.utc
       end
     end
 
index 69aa8bde931b398ff18e134412ba3886a259849f..07647d67946f221564dc7667065ee8f737c99aa0 100644 (file)
@@ -25,6 +25,4 @@ class IssueComment < ApplicationRecord
   belongs_to :user
 
   validates :body, :presence => true, :characters => true
-  validates :user, :presence => true
-  validates :issue, :presence => true
 end
index 44b1d8745e6fdf8600b6ff307c789599f08c7262..49c11e900898923beb558d78d8d2b6e35845a158 100644 (file)
@@ -29,7 +29,7 @@ class Message < ApplicationRecord
   belongs_to :recipient, :class_name => "User", :foreign_key => :to_user_id
 
   validates :title, :presence => true, :utf8 => true, :length => 1..255
-  validates :body, :sent_on, :sender, :recipient, :presence => true
+  validates :body, :sent_on, :presence => true
   validates :title, :body, :characters => true
 
   def self.from_mail(mail, from, to)
index f6f0f258e4d3e9ef7eb10324cdd72858b7e3c4cd..ad4318487b722839771e0a94b9cfc62561a966bd 100644 (file)
@@ -49,8 +49,6 @@ class Node < ApplicationRecord
                  :numericality => { :on => :update, :only_integer => true }
   validates :version, :presence => true,
                       :numericality => { :only_integer => true }
-  validates :changeset_id, :presence => true,
-                           :numericality => { :only_integer => true }
   validates :latitude, :presence => true,
                        :numericality => { :only_integer => true }
   validates :longitude, :presence => true,
@@ -238,7 +236,7 @@ class Node < ApplicationRecord
   private
 
   def save_with_history!
-    t = Time.now.getutc
+    t = Time.now.utc
 
     self.version += 1
     self.timestamp = t
index fa21b1ff6fdd60b2c813e7bd7979ee6b5a140837..d76a1a0ae865a7e8e86cd3f8c93e3c87c75a1928 100644 (file)
@@ -17,7 +17,7 @@ class NodeTag < ApplicationRecord
 
   belongs_to :node
 
-  validates :node, :presence => true, :associated => true
+  validates :node, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => :node_id }
 end
index 24ba6854dea3ec7efb646fca01b267dc4d33b14e..8c61374790af4cf2b65c8099d544753136e9b995 100644 (file)
@@ -45,7 +45,7 @@ class Note < ApplicationRecord
   # Close a note
   def close
     self.status = "closed"
-    self.closed_at = Time.now.getutc
+    self.closed_at = Time.now.utc
     save
   end
 
index eed917eee3c868d2bf6ec19deb258c4481bc54f7..635a5b0def53444f6b5ead14c4d11685a4af6d63 100644 (file)
 
 class NoteComment < ApplicationRecord
   belongs_to :note, :touch => true
-  belongs_to :author, :class_name => "User"
+  belongs_to :author, :class_name => "User", :optional => true
 
   validates :id, :uniqueness => true, :presence => { :on => :update },
                  :numericality => { :on => :update, :only_integer => true }
-  validates :note, :presence => true, :associated => true
+  validates :note, :associated => true
   validates :visible, :inclusion => [true, false]
   validates :author, :associated => true
   validates :event, :inclusion => %w[opened closed reopened commented hidden]
index 3eca1038c22333263f8d213974d90ba78066395f..1613eabeb516701976889d4550a8fa715126f074 100644 (file)
@@ -67,6 +67,6 @@ class Oauth2Verifier < OauthToken
   def generate_keys
     self.token = OAuth::Helper.generate_key(20)[0, 20]
     self.expires_at = 10.minutes.from_now
-    self.authorized_at = Time.now
+    self.authorized_at = Time.now.utc
   end
 end
index affdcdeb815b45b3c6d6ad32bf9c6526064ee45b..ae15dc658e73ec726bc78d989505ad34ce8fac88 100644 (file)
@@ -36,8 +36,8 @@
 #
 
 class OauthToken < ApplicationRecord
-  belongs_to :client_application
-  belongs_to :user
+  belongs_to :client_application, :optional => true
+  belongs_to :user, :optional => true
 
   scope :authorized, -> { where("authorized_at IS NOT NULL and invalidated_at IS NULL") }
 
@@ -52,7 +52,7 @@ class OauthToken < ApplicationRecord
   end
 
   def invalidate!
-    update(:invalidated_at => Time.now)
+    update(:invalidated_at => Time.now.utc)
   end
 
   def authorized?
index 1324c8139bc933bd05589fadc91ba883c8a3270a..4f5f074abf4b65600db82cc9de719bf736f30494 100644 (file)
@@ -35,7 +35,7 @@ class OldNode < ApplicationRecord
   # the queries generated by Redactable will use the wrong table name.
   include Redactable
 
-  validates :changeset, :presence => true, :associated => true
+  validates :changeset, :associated => true
   validates :latitude, :presence => true,
                        :numericality => { :only_integer => true }
   validates :longitude, :presence => true,
@@ -46,7 +46,7 @@ class OldNode < ApplicationRecord
   validate :validate_position
 
   belongs_to :changeset
-  belongs_to :redaction
+  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
index 11a2efd5a4b0749c42cea1f6bc67110eee92f0a2..c710e48f133db67436fbe0b86ff9f94ce4c2a9ea 100644 (file)
@@ -18,7 +18,7 @@ class OldNodeTag < ApplicationRecord
 
   belongs_to :old_node, :foreign_key => [:node_id, :version], :inverse_of => :old_tags
 
-  validates :old_node, :presence => true, :associated => true
+  validates :old_node, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => [:node_id, :version] }
 end
index 71bd4b73dad7594acf0c6e8fac5f4b77259c7109..7f9a747e64c84ef99aee35d4f7117056a4ca7ce6 100644 (file)
@@ -31,13 +31,13 @@ class OldRelation < ApplicationRecord
   include Redactable
 
   belongs_to :changeset
-  belongs_to :redaction
+  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
 
-  validates :changeset, :presence => true, :associated => true
+  validates :changeset, :associated => true
   validates :timestamp, :presence => true
   validates :visible, :inclusion => [true, false]
 
index 1fccdf7a841a52b559df91e4886b91438b4e4732..c3a1838912cbfb65ccd57492e4c60bfb05214c78 100644 (file)
@@ -18,7 +18,7 @@ class OldRelationTag < ApplicationRecord
 
   belongs_to :old_relation, :foreign_key => [:relation_id, :version], :inverse_of => :old_tags
 
-  validates :old_relation, :presence => true, :associated => true
+  validates :old_relation, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => [:relation_id, :version] }
 end
index 1f00c46ba6a3fbf8cd279235e873fa5ded52177e..acf88ddcf61bc61fab89f925a40be62f7c48509f 100644 (file)
@@ -31,13 +31,13 @@ class OldWay < ApplicationRecord
   include Redactable
 
   belongs_to :changeset
-  belongs_to :redaction
+  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
 
-  validates :changeset, :presence => true, :associated => true
+  validates :changeset, :associated => true
   validates :timestamp, :presence => true
   validates :visible, :inclusion => [true, false]
 
index e684199bf4f49873c0960629064b7f1390cd6f47..0342cf34485c165d2f2ec8ecfd9466f855c7a257 100644 (file)
@@ -18,7 +18,7 @@ class OldWayTag < ApplicationRecord
 
   belongs_to :old_way, :foreign_key => [:way_id, :version], :inverse_of => :old_tags
 
-  validates :old_way, :presence => true, :associated => true
+  validates :old_way, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => [:way_id, :version] }
 end
index 61ae45c99d24b65512ce480c55b70ad7dc9a81da..0a4a660a6fa536c52a025a4b337c521e85ab59be 100644 (file)
@@ -39,8 +39,6 @@ class Relation < ApplicationRecord
                  :numericality => { :on => :update, :only_integer => true }
   validates :version, :presence => true,
                       :numericality => { :only_integer => true }
-  validates :changeset_id, :presence => true,
-                           :numericality => { :only_integer => true }
   validates :timestamp, :presence => true
   validates :changeset, :associated => true
   validates :visible, :inclusion => [true, false]
@@ -265,7 +263,7 @@ class Relation < ApplicationRecord
   private
 
   def save_with_history!
-    t = Time.now.getutc
+    t = Time.now.utc
 
     self.version += 1
     self.timestamp = t
index ad9a932661bddc63e75eeb428fe00330c327e47b..758ed37cc0d5afd0c9b6b5fa4eb4f9e2a08f3c3c 100644 (file)
@@ -17,7 +17,7 @@ class RelationTag < ApplicationRecord
 
   belongs_to :relation
 
-  validates :relation, :presence => true, :associated => true
+  validates :relation, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => :relation_id }
 end
index 346c5eea95c3d13205f1bb5ad5bc3d4b6ce9436e..77a96764125bbc8e839d73773a3fbfa50a5d9aa9 100644 (file)
@@ -25,8 +25,6 @@ class Report < ApplicationRecord
   belongs_to :issue, :counter_cache => true
   belongs_to :user
 
-  validates :issue, :presence => true
-  validates :user, :presence => true
   validates :details, :presence => true, :characters => true
   validates :category, :presence => true
 
index f7c9501b56b3c84ce938a98b4966c4c3d8ac11d3..adeabb18497ff4fd7e0556df56aecd16579a9be1 100644 (file)
@@ -42,7 +42,7 @@ class RequestToken < OauthToken
     return false if authorized?
 
     self.user = user
-    self.authorized_at = Time.now
+    self.authorized_at = Time.now.utc
     self.verifier = OAuth::Helper.generate_key(20)[0, 20] unless oauth10?
     save
   end
index feefc077387b9ca32ea05ad247c2184de992ae8d..f2d81e31aa861f7d700cb546f680af906e1d4a5f 100644 (file)
@@ -43,7 +43,7 @@ class Trace < ApplicationRecord
   has_one_attached :image, :service => Settings.trace_image_storage
   has_one_attached :icon, :service => Settings.trace_icon_storage
 
-  validates :user, :presence => true, :associated => true
+  validates :user, :associated => true
   validates :name, :presence => true, :length => 1..255, :characters => true
   validates :description, :presence => { :on => :create }, :length => 1..255, :characters => true
   validates :timestamp, :presence => true
index 47ff9ff08abcb4359476f830da79fa714b2d344c..7af1f9bdc2d009a562bb910a6d560c6e7ae1846a 100644 (file)
@@ -30,14 +30,14 @@ class UserBlock < ApplicationRecord
 
   belongs_to :user, :class_name => "User"
   belongs_to :creator, :class_name => "User"
-  belongs_to :revoker, :class_name => "User"
+  belongs_to :revoker, :class_name => "User", :optional => true
 
   PERIODS = Settings.user_block_periods
 
   ##
   # scope to match active blocks
   def self.active
-    where("needs_view or ends_at > ?", Time.now.getutc)
+    where("needs_view or ends_at > ?", Time.now.utc)
   end
 
   ##
@@ -50,7 +50,7 @@ class UserBlock < ApplicationRecord
   # returns true if the block is currently active (i.e: the user can't
   # use the API).
   def active?
-    needs_view || ends_at > Time.now.getutc
+    needs_view || ends_at > Time.now.utc
   end
 
   ##
@@ -65,7 +65,7 @@ class UserBlock < ApplicationRecord
   # is the user object who is revoking the ban.
   def revoke!(revoker)
     update(
-      :ends_at => Time.now.getutc,
+      :ends_at => Time.now.utc,
       :revoker_id => revoker.id,
       :needs_view => false
     )
index d5cad3978c81f087cacee2b13f3e152aa87df506..741aa335aca9c2f2375cb09bbe0093912e07115e 100644 (file)
@@ -16,6 +16,6 @@ class UserPreference < ApplicationRecord
 
   belongs_to :user
 
-  validates :user, :presence => true, :associated => true
+  validates :user, :associated => true
   validates :k, :v, :length => 1..255, :characters => true
 end
index 8c9bf4aeb36de68479d11533e406f9106877da4b..f927563a948694b80197a2cdf1523f9f9ec126e4 100644 (file)
@@ -24,7 +24,7 @@ class UserToken < ApplicationRecord
   after_initialize :set_defaults
 
   def expired?
-    expiry < Time.now
+    expiry < Time.now.utc
   end
 
   private
index 0c6e645b7e2ce40f89bf81ca2002a5c056550cf2..b11c225ddb1cfd0a6fb604174d4e39354eab0276 100644 (file)
@@ -41,8 +41,6 @@ class Way < ApplicationRecord
                  :numericality => { :on => :update, :only_integer => true }
   validates :version, :presence => true,
                       :numericality => { :only_integer => true }
-  validates :changeset_id, :presence => true,
-                           :numericality => { :only_integer => true }
   validates :timestamp, :presence => true
   validates :changeset, :associated => true
   validates :visible, :inclusion => [true, false]
@@ -229,7 +227,7 @@ class Way < ApplicationRecord
   private
 
   def save_with_history!
-    t = Time.now.getutc
+    t = Time.now.utc
 
     self.version += 1
     self.timestamp = t
index 0d32d8c41631402f7b104b6b60b881308a9ab6c5..93c4cdece779776f8a35c09e05636092bbe04bc7 100644 (file)
@@ -17,7 +17,7 @@ class WayTag < ApplicationRecord
 
   belongs_to :way
 
-  validates :way, :presence => true, :associated => true
+  validates :way, :associated => true
   validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true
   validates :k, :uniqueness => { :scope => :way_id }
 end
index 7b576d38f835f30289ee8968d1bf070c99794a83..10a2372dbca005f2d1afbe5e3f0bc5caa6c0e395 100644 (file)
@@ -35,10 +35,6 @@ module OpenStreetMap
     # This has defaulted to false since rails 6.0
     config.action_view.default_enforce_utf8 = true
 
-    # This defaults to true from rails 5.0 but our code doesn't comply
-    # with it at all so we turn it off
-    config.active_record.belongs_to_required_by_default = false unless Settings.status == "database_offline"
-
     # 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,
     # like if you have constraints or database-specific column types
index 750a596b4378007829ed71ea9e9b961e6e97d72c..36a6f28204cb149371be89245b4c578c1c2bf18c 100644 (file)
@@ -56,6 +56,11 @@ Rails.application.configure do
   # Highlight code that triggered database queries in logs.
   config.active_record.verbose_query_logs = true unless Settings.status == "database_offline"
 
+  # Debug mode disables concatenation and preprocessing of assets.
+  # This option may cause significant delays in view rendering with a large
+  # number of complex assets.
+  config.assets.debug = true
+
   # Suppress logger output for asset requests.
   config.assets.quiet = true
 
index a5edd72ff47776aabec083eafe7e8f5d1eb5275c..e41b6c7d1f759e06402392aa2a8e1cd725148544 100644 (file)
@@ -73,7 +73,7 @@ Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true
 Rails.application.config.active_record.partial_inserts = false
 
 # Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
-Rails.application.config.action_controller.raise_on_open_redirects = true
+Rails.application.config.action_controller.raise_on_open_redirects = true
 
 # Change the variant processor for Active Storage.
 # Changing this default means updating all places in your code that
index 67823a23fefbf61405610884650681dd063cc280..3c741c9141811e064426ce5ee60cd3722a209086 100644 (file)
@@ -264,6 +264,31 @@ eo:
       entry:
         comment: Komento
         full: Tuta rimarko
+  account:
+    deletions:
+      show:
+        title: Forigi mian konton
+        warning: Averto! La procedo de forigo de konto estas definitiva kaj neinversigebla.
+        delete_account: Forigi konton
+        delete_introduction: 'Vi povas forigi vian OpenStreetMap-konton per la butono
+          sube. Estu konscia, ke:'
+        delete_profile: informoj pri via profilo – profilbildo, priskribo kaj hejma
+          pozicio – estos forigitaj;
+        delete_display_name: via montra nomo estos forigita kaj povos esti uzata de
+          aliaj kontoj.
+        retain_caveats: 'Tamen iuj informoj pri vi plue estos konservitaj en OpenStreetMap,
+          eĉ post forigi konton:'
+        retain_edits: viaj (eventualaj) redaktoj al la map-datumbazo estos konservitaj;
+        retain_traces: viaj (eventualaj) alŝutitaj spuroj estos konservitaj;
+        retain_diary_entries: viaj (eventualaj) afiŝoj kaj komentoj en la taglibro
+          estos konservitaj, sed kaŝitaj;
+        retain_notes: viaj (eventualaj) rimarkoj kaj komentoj pri rimarkoj estos konservitaj,
+          sed kaŝitaj;
+        retain_changeset_discussions: viaj (eventualaj) komentoj pri ŝanĝaroj estos
+          konservitaj;
+        retain_email: via retpoŝta adreso estos konservita.
+        confirm_delete: Ĉu vi certas?
+        cancel: Nuligi
   accounts:
     edit:
       title: Redakti konton
@@ -272,12 +297,12 @@ eo:
       external auth: Ekstera aŭtentigo
       openid:
         link: https://wiki.openstreetmap.org/wiki/OpenID
-        link text: kio estas tio?
+        link text: Pliaj informoj
       public editing:
         heading: Publika redaktado
         enabled: Ebligita. Ne anonima kaj rajtas redakti.
         enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
-        enabled link text: Kio estas tio ?
+        enabled link text: Pliaj informoj
         disabled: Malebligita kaj ne rajtas redakti, ĉiuj antaŭaj redaktoj naŭ estas
           publikaj.
         disabled link text: kial mi ne povas redakti?
@@ -298,13 +323,16 @@ eo:
         agreed_with_pd: Vi ankaŭ deklaris, ke viaj kontribuaĵoj estas en la publika
           havaĵo.
         link: https://www.osmfoundation.org/wiki/License/Contributor_Terms
-        link text: kio estas tio?
+        link text: Pliaj informoj
       save changes button: Konservi ŝanĝojn
       make edits public button: Publikigu ĉiujn miajn redaktojn.
+      delete_account: Forigi konton…
     update:
       success_confirm_needed: Uzantinformoj sukcese freŝigitaj. Kontrolu vian retpoŝtilon
         por iu mesaĝo kiu konfirmos vian novan retadreso.
       success: Uzantinformoj sukcese freŝigitaj.
+    destroy:
+      success: Via konto estas forigita.
   browse:
     created: Kreita
     closed: Fermita
@@ -2613,7 +2641,7 @@ eo:
       read_tou: Mi legis kaj konsentas la Uzkondiĉojn
       consider_pd: Krom la ĉi-supro, mi konfirmas, ke miaj kontribuaĵoj apartenas
         al la publika havaĵo
-      consider_pd_why: kio estas tio?
+      consider_pd_why: Pliaj informoj
       consider_pd_why_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
       guidance_html: 'Informoj por helpi kompreni ĉi tiun interkonsenton: <a href="%{summary}">simpla
         mallongigo</a> kaj kelkaj <a href="%{translations}">neoficialaj tradukoj</a>'
index bb9a401d4d0edc6da4c5923717c49e425931a7c8..82b3d1653bd0bea61998d18f0af637c7849631e5 100644 (file)
@@ -325,6 +325,32 @@ es:
       entry:
         comment: Comentario
         full: Nota completa
+  account:
+    deletions:
+      show:
+        title: Eliminar mi cuenta
+        warning: ¡Advertencia! El proceso de eliminación de la cuenta es definitivo
+          y no puede ser revertido.
+        delete_account: Eliminar cuenta
+        delete_introduction: 'Puede eliminar su cuenta de OpenStreetMap utilizando
+          el botón que aparece a continuación. Tenga en cuenta los siguientes detalles:'
+        delete_profile: Se eliminará la información de su perfil, incluido su avatar,
+          descripción y ubicación de inicio.
+        delete_display_name: Su nombre para mostrar será eliminado, y puede ser reutilizado
+          por otras cuentas.
+        retain_caveats: 'Sin embargo, algunos datos sobre usted se conservarán en
+          OpenStreetMap, incluso después de que se elimine su cuenta:'
+        retain_edits: Sus ediciones en la base de datos de mapas, si las hay, se conservarán.
+        retain_traces: Sus trazas subidas, si las hay, se conservarán.
+        retain_diary_entries: Las entradas y los comentarios de tu diario, si los
+          hay, se conservarán pero estarán ocultos.
+        retain_notes: Las notas del mapa y los comentarios de las notas, si los hay,
+          se conservarán pero estarán ocultos.
+        retain_changeset_discussions: Sus discusiones sobre el conjunto de cambios,
+          si las hay, se conservarán.
+        retain_email: Su dirección de correo electrónico se conservará.
+        confirm_delete: ¿Está seguro?
+        cancel: Cancelar
   accounts:
     edit:
       title: Editar cuenta
@@ -364,11 +390,14 @@ es:
         link text: ¿Qué es esto?
       save changes button: Guardar cambios
       make edits public button: Hacer que todas mis ediciones sean públicas
+      delete_account: Eliminar cuenta...
     update:
       success_confirm_needed: La información del usuario se ha actualizado correctamente.
         Compruebe su correo electrónico para ver una nota sobre cómo confirmar su
         nueva dirección de correo electrónico.
       success: La información del usuario se ha actualizado correctamente.
+    destroy:
+      success: Cuenta eliminada.
   browse:
     created: Creado
     closed: Cerrado
index 628318744aab91c695917607a3c9c6fe1dc94505..142b1d083da8c0b5a88955e29143521c0d96d839 100644 (file)
@@ -286,6 +286,17 @@ fi:
       entry:
         comment: Kommentti
         full: Koko karttailmoitus
+  account:
+    deletions:
+      show:
+        title: Poista käyttäjäni
+        warning: Varoitus! Käyttäjän poistaminen on lopullinen, eikä sitä voi peruuttaa.
+        delete_account: Poista käyttäjä
+        delete_profile: Käyttäjätietosi, avatar, kuvaus ja kotisijainti mukaan lukien
+          poistetaan.
+        retain_edits: Mahdolliset karttatietokantaan tekemäsi muutokset säilytetään.
+        confirm_delete: Oletko varma?
+        cancel: Peruuta
   accounts:
     edit:
       title: Asetusten muokkaus
@@ -324,10 +335,13 @@ fi:
         link text: Mitä tämä tarkoittaa?
       save changes button: Tallenna muutokset
       make edits public button: Tee muokkauksistani julkisia
+      delete_account: Poista käyttäjä...
     update:
       success_confirm_needed: Käyttäjätietojen muutokset on tallennettu. Vahvista
         uusi sähköpostiosoite siihen lähetettyjen ohjeiden mukaisesti.
       success: Käyttäjätietojen muutokset on tallennettu.
+    destroy:
+      success: Käyttäjä poistettu.
   browse:
     created: Luotu
     closed: Ratkaistu
index edb05f1629848cdd64c6f6834d9933afcae65fe4..c9ebc688e6bd9f3f9b9633c7e8b8f1acff2495fc 100644 (file)
@@ -106,7 +106,7 @@ fr:
       message:
         create: Envoyer
       client_application:
-        create: Enregistrer
+        create: S’inscrire
         update: Mettre à jour
       doorkeeper_application:
         create: S’inscrire
@@ -132,7 +132,7 @@ fr:
       country: Pays
       diary_comment: Commentaire du journal
       diary_entry: Entrée du journal
-      friend: Ami
+      friend: Ami(e)
       issue: Problème
       language: Langue
       message: Message
@@ -190,7 +190,7 @@ fr:
         scopes: Autorisations
       friend:
         user: Utilisateur
-        friend: Ami
+        friend: Ami(e)
       trace:
         user: Utilisateur
         visible: Visible
@@ -221,7 +221,7 @@ fr:
         email_confirmation: Confirmation du courriel
         new_email: Nouvelle adresse de courriel
         active: Actif
-        display_name: Pseudonyme
+        display_name: Nom affiché
         description: Description du profil
         home_lat: Latitude
         home_lon: Longitude
@@ -452,7 +452,7 @@ fr:
       osmchangexml: XML osmChange
       feed:
         title: Groupe de modifications %{id}
-        title_comment: Groupe de modifications %{id} — %{comment}
+        title_comment: 'Groupe de modifications %{id} : %{comment}'
       join_discussion: Se connecter pour rejoindre la discussion
       discussion: Discussion
       still_open: Ensemble de modifications toujours ouvert – la discussion s’ouvrira
@@ -557,7 +557,7 @@ fr:
     changeset_paging_nav:
       showing_page: Page %{page}
       next: Suivant ››
-      previous: â\80¹â\80¹Â Précédent
+      previous: â\97\82 Précédent
     changeset:
       anonymous: Anonyme
       no_edits: (aucune modification)
@@ -623,7 +623,7 @@ fr:
     new:
       title: Nouvelle entrée du journal
     form:
-      location: Lieu
+      location: Emplacement
       use_map_link: Utiliser la carte
     index:
       title: Journaux des utilisateurs
@@ -674,7 +674,7 @@ fr:
       confirm: Confirmer
       report: Signaler ce commentaire
     location:
-      location: 'Lieu :'
+      location: 'Emplacement :'
       view: Afficher
       edit: Modifier
       coordinates: '%{latitude} ; %{longitude}'
@@ -1272,7 +1272,7 @@ fr:
         place:
           allotments: Jardins familiaux
           archipelago: Archipel
-          city: Ville
+          city: Grande ville
           city_block: Bloc urbain
           country: Pays
           county: Comté
@@ -1295,7 +1295,7 @@ fr:
           state: État / province
           subdivision: Subdivision
           suburb: Quartier
-          town: Ville
+          town: Petite ville
           village: Village
           "yes": Lieu
         railway:
@@ -1484,7 +1484,7 @@ fr:
           lock_gate: Porte d’écluse
           mooring: Mouillage
           rapids: Rapides
-          river: Rivière
+          river: Cours d’eau
           stream: Ruisseau
           wadi: Oued
           waterfall: Chute d’eau
@@ -1994,10 +1994,10 @@ fr:
         ligne</a> si vous voulez en discuter.
       auth failure: Désolé, mais les informations fournies n’ont pas permis de vous
         identifier.
-      openid_logo_alt: Se connecter avec un OpenID
+      openid_logo_alt: Se connecter avec OpenID
       auth_providers:
         openid:
-          title: Se connecter avec OpenID
+          title: Connexion avec OpenID
           alt: Se connecter avec une URL OpenID
         google:
           title: Connexion avec Google
@@ -2045,7 +2045,7 @@ fr:
   site:
     about:
       next: Suivant
-      copyright_html: © Contributeurs<br /> d’OpenStreetMap
+      copyright_html: <span>©</span> Contributeurs<br /> d’OpenStreetMap
       used_by_html: '%{name} fournit les données cartographiques pour des milliers
         de sites web, d’applications mobiles et d’appareils'
       lede_text: OpenStreetMap est bâti par une communauté de cartographes bénévoles
@@ -2112,8 +2112,8 @@ fr:
         intro_3_1_html: "Notre documentation est disponible sous la licence \n<a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">Creative\nCommons
           paternité – partage à l’identique 2.0</a> (CC-BY-SA 2.0)."
         credit_title_html: Comment créditer OpenStreetMap
-        credit_1_html: Nous demandons que votre crédit comporte la mention « © les
-          contributeurs d’OpenStreetMap ».
+        credit_1_html: Nous demandons que votre crédit comporte la mention « © Contributeurs
+          d’OpenStreetMap ».
         credit_2_1_html: |-
           Vous devez également préciser clairement que les données sont disponibles sous la licence
           ODbL (Open Database License) et, si vous utilisez les tuiles de notre carte, que la carte est sous la
@@ -2990,7 +2990,7 @@ fr:
       time_future: Ce blocage se terminera dans %{time}.
       past: Ce blocage s’est terminé à %{time} et ne peut plus être annulé.
       confirm: Êtes-vous sûr de vouloir annuler ce blocage ?
-      revoke: Débloquer !
+      revoke: Révoquer !
       flash: Ce blocage a été annulé.
     helper:
       time_future_html: Prends fin dans %{time}.
@@ -3114,7 +3114,7 @@ fr:
         gps: Traces GPS publiques
         overlays: Autoriser les superpositions pour réparer la carte
         title: Couches
-      copyright: © <a href='%{copyright_url}'>Contributeurs de OpenStreetMap</a>
+      copyright: © <a href="%{copyright_url}">Contributeurs d’OpenStreetMap</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Faire un don</a>
       terms: <a href="%{terms_url}" target="_blank">Conditions du site web et de l’API</a>
       cyclosm: Style de briques par <a href="%{cyclosm_url}" target="_blank">CyclOSM</a>
index 51d10627f6a0e141b1af768c581159c72f1befae..b12cb7508a92723a864b3cff748e3b5278d71a24 100644 (file)
@@ -51,10 +51,12 @@ fy:
       diary_comment: Deiboekreäksje
       diary_entry: Deiboekstik
       friend: Freon
+      issue: Probleem
       language: Taal
       message: Berjocht
       node: Punt
       node_tag: Puntlebel
+      notifier: Melder
       old_node: Ald punt
       old_node_tag: Ald puntlebel
       old_relation: Alde relaasje
@@ -152,6 +154,11 @@ fy:
       trace:
         tagstring: skaat mei komma's
       user_block:
+        reason: De reden wêrom't de meidogger útsletten wurdt. Bliuw sa kalm en ridlik
+          mooglik, en jou oer de sitewaasje safolle bysûnderheden as jo kinne, mei
+          yn 'e efterholle dat it berjocht iepenbier sichtber wêze sil. Betink dat
+          net alle meidoggers it mienskipsjargon begripe, dus besykje graach gewoaneminsketaal
+          te brûken.
         needs_view: Moat de meidogger oanmelde foar't dizze útsluting ferfalt?
       user:
         email_confirmation: Jo adres wurdt net publikelik toand; sjoch ús <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy"
@@ -353,7 +360,7 @@ fy:
         title_comment: Wizigingsset %{id} - %{comment}
       join_discussion: Meld jo oan en oerlis mei
       discussion: Oerlis
-      still_open: Wizigingsset net ree - it oerlis iepenet sadree't de wizigingsset
+      still_open: Wizigingsset net ree - it oerlis iepenet sa gau't de wizigingsset
         ôfdien is.
     node:
       title_html: 'Punt: %{name}'
@@ -1384,7 +1391,7 @@ fy:
         level6: Distrikts-/greefskipsgrins
         level7: Gemeentegrins
         level8: Gemeente-/stedsgrins
-        level9: Doarpsgrins
+        level9: Steds-/doarpsgrins
         level10: Wenplak-/dielgebietsgrins
         level11: Wyk-/buertgrins
       types:
@@ -1395,17 +1402,83 @@ fy:
       no_results: Gjin treffers fûn
       more_results: Mear treffers
   issues:
+    index:
+      title: Problemen
+      select_status: Status selektearje
+      select_type: Type selektearje
+      select_last_updated_by: Lêst bywurke troch selektearje
+      reported_user: Melde meidogger
+      not_updated: Net bywurke
+      search: Sykje
+      search_guidance: 'Problemen trochsykje:'
+      user_not_found: Meidogger bestiet net
+      issues_not_found: Gjin oerienkommende problemen fûn
+      status: Status
+      reports: Meldings
+      last_updated: Lêst bywurke
+      last_updated_time_html: <abbr title='%{title}'>%{time}</abbr>
+      last_updated_time_user_html: <abbr title='%{title}'>%{time}</abbr> troch %{user}
+      link_to_reports: Meldings besjen
+      reports_count:
+        one: 1 melding
+        other: '%{count} meldings'
+      reported_item: Meld elemint
+      states:
+        ignored: Negearre
+        open: Iepen
+        resolved: Oplost
     update:
       new_report: It fêstlizzen fan jo melding is slagge
       successful_update: It bywurkjen fan jo melding is slagge
       provide_details: Graach de ferplichte details oanjaan
+    show:
+      title: '%{status} probleem #%{issue_id}'
+      reports:
+        one: 1 melding
+        other: '%{count} meldings'
+      report_created_at: Earst meld op %{datetime}
+      last_resolved_at: Lêst oplost op %{datetime}
+      last_updated_at: Lêst bywurke op %{datetime} troch %{displayname}
+      resolve: Oplosse
+      ignore: Negearje
+      reopen: Weriepenje
+      reports_of_this_issue: Meldings fan dit probleem
+      read_reports: Meldings lêze
+      new_reports: Nije meldings
+      other_issues_against_this_user: Oare problemen mei dizze meidogger
+      no_other_issues: Gjin oare problemen mei dizze meidogger.
+      comments_on_this_issue: Reäksjes by dit probleem
+    resolve:
+      resolved: De probleemstatus is op 'Oplost' set
+    ignore:
+      ignored: De probleemstatus is op 'Negearre' set
+    reopen:
+      reopened: De probleemstatus is op 'Iepen' set
+    comments:
+      comment_from_html: Reäksje fan %{user_link} op %{comment_created_at}
+      reassign_param: Probleem weryndiele?
+    reports:
+      reported_by_html: Meld as %{category} troch %{user} op %{updated_at}
     helper:
       reportable_title:
+        diary_comment: '%{entry_title}, reäksje #%{comment_id}'
         note: 'Notysje #%{note_id}'
+  issue_comments:
+    create:
+      comment_created: It oanmeitsjen fan jo reäksje is slagge
   reports:
     new:
       title_html: '%{link} melde'
       missing_params: Kin gjin nije melding oanmeitsje
+      disclaimer:
+        intro: 'Foar''t jo melding dogge by it websteetafersjoch, moat it neikommende
+          fêststean:'
+        not_just_mistake: Jo binne der wis fan dat it probleem net gewoan in fersin
+          is
+        unable_to_fix: Jo binne net by steat en ferhelp it probleem sels, of mei help
+          fan jo meileden út 'e mienskip
+        resolve_with_user: Jo hawwe al besocht om mei de belutsen meidogger it probleem
+          op te lossen
       categories:
         diary_entry:
           spam_label: Dit deiboekstik is/befettet spam
@@ -1444,6 +1517,7 @@ fy:
     edit: Bewurkje
     history: Skiednis
     export: Eksportearje
+    issues: Problemen
     data: Gegevens
     export_data: Data eksportearje
     gps_traces: GPS-trajekten
@@ -1463,6 +1537,10 @@ fy:
     partners_bytemark: Bytemark Hosting
     partners_partners: partners
     tou: Gebrûksbetingsten
+    osm_offline: De OpenStreetMap-databank is op it stuit ôfline, wylst der it nedige
+      ûnderhâldswurk útfierd wurdt.
+    osm_read_only: De OpenStreetMap-databank is op it stuit allinnich yn lêsmodus,
+      wylst der it nedige ûnderhâldswurk útfierd wurdt.
     donate: Stypje OpenStreetMap en %{link} oan it Fernijingsfûns foar Kompjûtersystemen.
     help: Help
     about: Oer
@@ -1518,6 +1596,7 @@ fy:
       failed_to_import: 'net ymportearre wurde koe. Hjir is de foutmelding:'
       more_info_html: Mear ynformaasje oer GPX-ymportflaters, en hoe't se tefoaren
         kommen wurde kinne, fine jo op %{url}.
+      import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures
       subject: '[OpenStreetMap] GPX ymportearjen mislearre'
     gpx_success:
       hi: Goeie %{to_user},
@@ -1793,7 +1872,7 @@ fy:
       account not active: Spitich, jo akkount is noch net aktyf.<br />Brûk de keppeling
         yn 'e akkountbefêstigingsmail en aktivearje jo akkount, of <a href="%{reconfirm}">freegje
         in nije befêstigingsmail</a>.
-      account is suspended: Spitich, jo akkount is stillein fanwegen fertochte aktiviteiten.<br
+      account is suspended: Spitich, jo akkount is skoattele fanwegen fertochte aktiviteiten.<br
         />Nim kontakt op mei <a href="%{webmaster}">Stipe</a> at jo dat beprate wolle.
       auth failure: Spitich, koe jo net oanmelde mei dy gegevens.
       openid_logo_alt: Meld jo oan mei in openID
@@ -2024,6 +2103,15 @@ fy:
         url: https://wiki.openstreetmap.org/
         title: OpenStreetMap-wiki
         description: De wiki trochsjen foar wiidweidige dokumintaasje oer OpenStreetMap.
+    potlatch:
+      removed: Jo standertbewurker foar OpenStreetMap is ynsteld op Potlatch. Om't
+        Adobe Flash Player weifallen is, is Potlatch net mear beskikber foar gebrûk
+        yn in webblêder.
+      desktop_html: Jo kinne Potlatch nog brûke troch <a href="https://www.systemed.net/potlatch/">it
+        kompjûterprogramma foar Mac as Windows yn te laden</a>.
+      id_html: As alternatyf kinne jo jo standertbewurker ynstelle op iD, dat yn jo
+        webblêder draait krekt as Potlatch foarhinne. <a href="%{settings_url}">Feroarje
+        hjir jo foarkarren</a>.
     sidebar:
       search_results: Sykresultaten
       close: Slute
@@ -2177,6 +2265,15 @@ fy:
       trace_uploaded: Jo GPX-bestân is opladen en wachtet op databankynfiering. Dat
         bart trochstrings binnen in heal oere, en der wurdt jo in e-mail tastjoerd
         at it dien is.
+      upload_failed: Spitich, it opladen fan 'e GPX gong mis. In behearder is op 'e
+        flater wiisd. Besykje it nochris
+      traces_waiting:
+        one: Jo hawwe %{count} trajekt foar opladen yn 'e wacht. Wachtsje oant dy
+          klear is foar't jo noch mear oplade, om 'e wachtrige net te ferstopjen foar
+          oare meidoggers.
+        other: Jo hawwe %{count} trajekten foar opladen yn 'e wacht. Wachtsje oant
+          dy klear binne foar't jo noch mear oplade, om 'e wachtrige net te ferstopjen
+          foar oare meidoggers.
     edit:
       cancel: Annulearje
       title: Trajekt %{name} bewurkje
@@ -2243,6 +2340,12 @@ fy:
       scheduled_for_deletion: Trajekt ynplend om te wiskjen
     make_public:
       made_public: Trajekt iepenbier makke
+    offline_warning:
+      message: It systeem foar opladen fan GPX-bestannen is op it stuit net beskikber
+    offline:
+      heading: GPX-opslach ôfline
+      message: It systeem foar opslach en opladen fan GPX-bestannen is op it stuit
+        net beskikber.
     georss:
       title: OpenStreetMap GPS-trajekten
     description:
@@ -2251,12 +2354,18 @@ fy:
         other: GPX-bestân mei %{count} punten fan %{user}
       description_without_count: GPX-bestân fan %{user}
   application:
+    permission_denied: Jo hawwe net de rjochten foar tagong ta dy hanneling
+    require_cookies:
+      cookies_needed: It liket dat jo 'koekjes' út stean hawwe - set koekjes oan yn
+        jo webblêder foar't jo trochgeane.
+    require_admin:
+      not_an_admin: Jo moatte behearder wêze om dy hanneling útfiere te kinnen.
     setup_user_auth:
       blocked_zero_hour: Jo hawwe in driuwend berjocht op it OpenStreetMap-webstee.
         Jo moatte it berjocht lêze foar't jo jo bewurkings fêstlizze kinne.
-      blocked: Jo tagong ta de API is útsletten. Meld jo oan op 'e webside om der
-        mear oer te witten.
-      need_to_see_terms: Jo tagong ta de API is tydlik stillein. Meld jo oan op 'e
+      blocked: Jo binne útsletten fan tagong ta de API. Meld jo oan op 'e webside
+        om der mear oer te witten.
+      need_to_see_terms: Jo tagong ta de API is tydlik skoattele. Meld jo oan op 'e
         webside om de Bydragersbetingsten te besjen. Jo hoege net akkoart te gean,
         mar jo moatte se besjen.
     settings_menu:
@@ -2265,10 +2374,32 @@ fy:
       oauth2_applications: Applikaasjes OAuth 2
       oauth2_authorizations: Autorisaasjes OAuth 2
   oauth:
+    authorize:
+      title: Tagong ta jo akkount autorisearje
+      request_access_html: De applikaasje %{app_name} freget tagong ta jo akkount,
+        %{user}. Gean nei oft jo wolle dat de applikaasje de neikommende mooglikheden
+        kriget. Jo meie der sa folle of sa min kieze as jo wolle.
+      allow_to: 'De kliïnt-applikaasje tastean om:'
+      allow_read_prefs: jo meidoggerfoarkarren te lêzen.
+      allow_write_prefs: jo meidoggerfoarkarren te wizigjen.
+      allow_write_diary: deiboekstikken, reäksjes en freonen te meitsjen.
+      allow_write_api: de kaart te wizigjen.
+      allow_read_gpx: jo privee-GPS-trajekten te lêzen.
+      allow_write_gpx: GPS-trajekten op te laden.
+      allow_write_notes: notysjes te wizigjen.
+      grant_access: Tagong jaan
+    authorize_success:
+      title: Autorisaasjefersyk tastien
+      allowed_html: Jo hawwe de applikaasje %{app_name} tagong ta jo akkount jûn.
+      verification: De ferifikaasjekoade is %{code}.
     authorize_failure:
+      title: Autorisaasjefersyk mislearre
+      denied: Jo hawwe de applikaasje %{app_name} tagong ta jo akkount wegere.
       invalid: De autorisaasjekaai is net jildich.
     revoke:
       flash: Jo hawwe de kaai foar %{application} ynlutsen
+    permissions:
+      missing: Jo hawwe de applikaasje de tagong ta dizze foarsjenning net tastien
     scopes:
       read_prefs: Meidoggerfoarkarren lêzen
       write_prefs: Meidoggerfoarkarren wizigjen
@@ -2282,9 +2413,15 @@ fy:
   oauth_clients:
     new:
       title: In nije applikaasje registrearje
+    edit:
+      title: Jo applikaasje bewurkje
     show:
+      title: OAuth-gegevens foar %{app_name}
       support_notice: Wy stypje ûndertekeningen mei HMAC-SHA1 (oanret) en RSA-SHA1.
+      edit: Gegevens bewurkje
+      delete: Kliïnt wiskje
       confirm: Seker witte?
+      requests: 'Freget de neikommende rjochten fan ''e meidogger:'
     index:
       title: Myn OAuth-gegevens
       my_tokens: Myn autorisearre applikaasjes
@@ -2301,6 +2438,12 @@ fy:
       register_new: Jo applikaasje registrearje
     form:
       requests: 'Freegje de neikommende rjochten fan ''e meidogger:'
+    create:
+      flash: Registrearjen fan 'e ynformaasje slagge
+    update:
+      flash: Bywurkjen fan 'e kliïnt-ynformaasje slagge
+    destroy:
+      flash: Registraasje fan 'e kliïnt-applikaasje ferneatige
   oauth2_applications:
     index:
       title: Myn kliïnt-applikaasjes
@@ -2437,7 +2580,7 @@ fy:
       edits: Bewurkings
       traces: Trajekten
       notes: Kaartnotysjes
-      remove as friend: Freon ôf
+      remove as friend: Freon ôffiere
       add as friend: Freon tafoegje
       mapper since: 'Kaartmakker sûnt:'
       ct status: 'Bydragersbetingsten:'
@@ -2445,12 +2588,14 @@ fy:
       ct declined: ôfwiisd
       latest edit: 'Lêste bewurking (%{ago}):'
       email address: 'E-mailadres:'
+      created from: 'Oanmakke fan:'
       status: 'Status:'
+      spam score: 'Spamskoare:'
       description: Beskriuwing
       user location: Lokaasje meidogger
       role:
-        administrator: Dizze meidogger is in behearder
-        moderator: Dizze meidogger is in tafersjochhâlder
+        administrator: Dizze meidogger is behearder
+        moderator: Dizze meidogger is tafersjochhâlder
         grant:
           administrator: Behearder meitsje
           moderator: Tafersjochhâlder meitsje
@@ -2461,8 +2606,13 @@ fy:
       moderator_history: Utslutings útdield
       comments: Reäksjes
       create_block: Dizze meidogger útslute
+      activate_user: Dizze meidogger aktivearje
+      deactivate_user: Dizze meidogger deäktivearje
       confirm_user: Dizze meidogger befêstigje
+      unconfirm_user: Dizze meidogger ûnbefêstigje
+      unsuspend_user: Dizze meidogger ûntskoattelje
       hide_user: Dizze meidogger ferbergje
+      unhide_user: Dizze meidogger werompleatse
       delete_user: Dizze meidogger wiskje
       confirm: Befêstigje
       report: Dizze meidogger melde
@@ -2476,18 +2626,18 @@ fy:
       showing:
         one: Side %{page} (%{first_item} fan %{items})
         other: Side %{page} (%{first_item}-%{last_item} fan %{items})
-      summary_html: '%{name} oanmakke fan %{ip_address} ôf op %{date}'
+      summary_html: '%{name} oanmakke fan %{ip_address} op %{date}'
       summary_no_ip_html: '%{name} oanmakke op %{date}'
       confirm: Selektearre meidoggers befêstigje
       hide: Selektearre meidoggers ferbergje
       empty: Gjin oerienkommende meidoggers fûn
     suspended:
-      title: Akkount stillein
-      heading: Akkount stillein
+      title: Akkount skoattele
+      heading: Akkount skoattele
       support: Stipe
       body_html: |-
         <p>
-          Spitich, jo akkount is automatysk stillein fanwegen
+          Spitich, jo akkount is automatysk skoattele fanwegen
           fertochte aktiviteiten.
         </p>
         <p>
@@ -2510,6 +2660,29 @@ fy:
         At jo al in akkount hawwe, kinne jo jo oanmelde op jo akkount
         mei jo meidochnamme en wachtwurd, en dan it akkount ferbine
         oan jo ID yn jo meidoggerynstellings.
+  user_role:
+    filter:
+      not_a_role: De tekenrige '%{role}' is net in jildige rol.
+      already_has_role: De meidogger hat al de rol fan %{role}.
+      doesnt_have_role: De meidogger hat net de rol fan %{role}.
+      not_revoke_admin_current_user: Kin de beheardersrol fan dizze meidogger net
+        ynlûke.
+    grant:
+      title: Rol takennen befêstigje
+      heading: Rol takennen befêstigje
+      are_you_sure: Witte jo seker dat jo de rol fan '%{role}' oan 'e meidogger '%{name}'
+        takenne wolle?
+      confirm: Befêstigje
+      fail: Koe de rol fan '%{role}' oan 'e meidogger '%{name}' net takenne. Gean
+        nei oft meidogger en rol beide jildich binne.
+    revoke:
+      title: Rol ynlûken befêstigje
+      heading: Rol ynlûken befêstigje
+      are_you_sure: Witte jo seker dat jo de rol fan '%{role}' fan 'e meidogger '%{name}'
+        ynlûke wolle?
+      confirm: Befêstigje
+      fail: Koe de rol fan '%{role}' fan 'e meidogger '%{name}' net ynlûke. Gean nei
+        oft meidogger en rol beide jildich binne.
   user_blocks:
     model:
       non_moderator_update: Moat tafersjochhâlder wêze om in útsluting oanmeitsje
index 288bfc4ead0e2afdfb17b8571084ae081250ab64..77247be6103799a739dd75aafb27603a1486b3c9 100644 (file)
@@ -313,9 +313,14 @@ he:
         retain_caveats: 'אבל חלק מהמידע עליך יישמר ב־OpenStreetMap, אפילו אחרי מחיקת
           חשבונך:'
         retain_edits: העריכות שלך לבסיס הנתונים של המפה, אם קיימות, יישמרו.
+        retain_traces: ההקלטות (traces) שהעליתם, יישמרו.
         retain_diary_entries: יומן הכניסות ויומן התגובות שלך, אם קיימים, יישמרו, אך
           לא ניתן יהיה לצפות בהם.
+        retain_notes: הערות המפה ותגובות להערות, אם יש כאלה, יישמרו, אבל יוסתרו.
+        retain_changeset_discussions: הדיונים שלכם על ערכות השינויים, אם יש כאלה,
+          יישמרו.
         retain_email: כתובת הדואר האלקטרוני שלך תישמר.
+        confirm_delete: להמשיך?
         cancel: ביטול
   accounts:
     edit:
index 4cefa721e235b3b6112153e8e463c9bb65478df9..cae49769f0c246276a483a413aaf6eb928e6a255 100644 (file)
@@ -11,6 +11,7 @@
 # Author: Nitin1485
 # Author: Prong$31
 # Author: Rajatkatiyar10
+# Author: Saurmandal
 # Author: Sfic
 # Author: Shubhamkanodia
 # Author: Siddhartha Ghai
@@ -237,6 +238,11 @@ hi:
       entry:
         comment: टिप्पणी
         full: पूरा नोट
+  account:
+    deletions:
+      show:
+        confirm_delete: क्या आप निश्चित है?
+        cancel: रद्द करें
   accounts:
     edit:
       public editing:
index 1e9f29d3a681f50957a250eb460663a9b89707a4..d536777d62926bd0ad9033f29128c5d0d483096d 100644 (file)
@@ -248,6 +248,12 @@ ia:
       entry:
         comment: Commento
         full: Nota complete
+  account:
+    deletions:
+      show:
+        title: Deler mi conto
+        warning: Attention! Le deletion de un conto es definitive e irreversibile.
+        delete_account: Deler conto
   accounts:
     edit:
       title: Modificar conto
index 220c56794d771c55210ffef83791faa78ec11212..043bc8e487af695363a507915e205a473f45fb29 100644 (file)
@@ -1,6 +1,7 @@
 # Messages for Icelandic (íslenska)
 # Exported from translatewiki.net
 # Export driver: phpyaml
+# Author: LoveIceLang
 # Author: Macofe
 # Author: McDutchie
 # Author: Nemo bis
@@ -34,6 +35,9 @@ is:
       client_application:
         create: Nýskrá
         update: Uppfæra
+      doorkeeper_application:
+        create: Nýskrá
+        update: Uppfæra
       redaction:
         create: Búa til leiðréttingu
         update: Vista leiðréttingu
@@ -106,6 +110,11 @@ is:
         latitude: Breiddargráða
         longitude: Lengdargráða
         language: Tungumál
+      doorkeeper/application:
+        name: Nafn
+        redirect_uri: Tilvísa tengslar
+        confidential: Leynilegur umsókn?
+        scopes: Réttindi
       friend:
         user: Notandi
         friend: Vinur
@@ -133,6 +142,7 @@ is:
         category: Veldu ástæðu fyrir að þú gerir skýrslu
         details: Tilgreindu öll nauðsynleg atriði um vandamálið (nauðsynlegt).
       user:
+        auth_provider: Auðkenningaraðili
         email: Netfang
         email_confirmation: Staðfesting póstfangs
         new_email: Nýtt póstfang
@@ -146,11 +156,24 @@ is:
         pass_crypt: Lykilorð
         pass_crypt_confirmation: Staðfestu lykilorð
     help:
+      doorkeeper/application:
+        confidential: Forritið verður ekki notuð þar sem leyni viðskiptavinsins er
+          hægt að halda trúnaði (innfæddur farsímaforrit og smásíðuforrit eru ekki
+          trúnaðarmál)
+        redirect_uri: Notaðu einn röð á URI
       trace:
         tagstring: aðskilið með kommum
       user_block:
+        reason: Ástæðan til af hverju Notandinn verði falinn. Vinsamlegast vertu eins
+          rólegur og eins sanngjarn og mögulegt er, gefa eins miklar upplýsingar og
+          þú getur um ástandið, muna að skilaboðin verða sýnileg opinberlega. Hafðu
+          í huga að ekki allir notendur skilja orðalag samfélagsins, svo vinsamlegast
+          reyndu að nota skilmála leikmanna.
         needs_view: Notandinn þarf að innskrá sig áður en bannið fellur úr gildi.
       user:
+        email_confirmation: Netfangið þitt er ekki birt opinberlega, sjá kaflann <a
+          href="https://wiki.osmfoundation.org/wiki/Privacy_Policy" title=Meðferð
+          OSMF á persónuupplýsingum, þar með töldum netföngum">um meðferð persónuupplýsinga</a>
         new_email: (aldrei sýnt opinberlega)
   datetime:
     distance_in_words_ago:
@@ -235,6 +258,32 @@ is:
       entry:
         comment: Athugasemd
         full: Allur minnispunkturinn
+  account:
+    deletions:
+      show:
+        title: Eyði Aðgangi
+        warning: Viðvörun! Eyðing aðgangs er óbreytanlegt, og ekki hægt að afturkalla.
+        delete_account: Eyði Aðgangi
+        delete_introduction: 'Þú getur eytt OpenStreetMap aðgangin þínum með því að
+          nota takkann hér að neðan. Vinsamlegast athugaðu eftirfarandi upplýsingar:'
+        delete_profile: Notenduupplýsingarnar þínar, þar á meðal notandaútlit, lýsing
+          og heimastaðsetning verða fjarlægðar.
+        delete_display_name: Sýningarnafnið þitt verður fjarlægt, og get verið notuð
+          frá öðrum aðgöngum.
+        retain_caveats: 'Hins vegar verða sumar upplýsingar um þig geymdar á OpenStreetMap,
+          jafnvel eftir að aðgangið þitt hefur verið eytt:'
+        retain_edits: Breytingar þínar á kortagagnagrunninum, ef einhverjar eru, verða
+          geymdar.
+        retain_traces: Hlöðuð ummerki þín, ef einhverjar eru, verða geymdar.
+        retain_diary_entries: Dagbókarfærslur þínar og dagbókarathugasemdir, ef einhverjar
+          eru, verða geymdar en falin.
+        retain_notes: Kortaskýrslur þínar og athugasemdir, ef einhverjar eru, verða
+          geymdar en falin.
+        retain_changeset_discussions: Umræður þínar um breytingar, ef einhverjar eru,
+          verða geymdar.
+        retain_email: Netfangið þitt verður geymt.
+        confirm_delete: Ertu viss?
+        cancel: Hætta við
   accounts:
     edit:
       title: Stillingar
@@ -276,11 +325,14 @@ is:
         link text: Hvað er þetta?
       save changes button: Vista breytingar
       make edits public button: Gera allar breytingarnar mínar opinberar
+      delete_account: Eyði Aðgangi
     update:
       success_confirm_needed: Stillingarnar þínar voru uppfærðar. Póstur var sendur
         á netfangið þitt sem þú þarft að bregðast við til að netfangið þitt verði
         staðfest.
       success: Stillingarnar þínar voru uppfærðar.
+    destroy:
+      success: Aðgangi eytt...
   browse:
     created: Búið til
     closed: Lokað
@@ -368,6 +420,7 @@ is:
         changeset: breytingasett
         note: minnispunktur
     timeout:
+      title: Hlé Villa
       sorry: Ekki var hægt að ná í gögn fyrir %{type} með kennitöluna %{id}, það tók
         of langan tíma að ná í gögnin.
       type:
@@ -477,6 +530,10 @@ is:
       nearby mapper: Nálægur notandi
       friend: Vinur
     show:
+      title: Stjórnborðið Mitt
+      no_home_location_html: '%{edit_profile_link} og stilltu heimastaðsetninguna
+        þína til að sjá nálæga notendur.'
+      edit_your_profile: Breyttu notandaaðgang þínum
       my friends: Vinir mínir
       no friends: Þú átt enga vini
       nearby users: Aðrir nálægir notendur
@@ -555,11 +612,20 @@ is:
         title: OpenStreetMap bloggfærslur
         description: Nýjustu bloggfærslur frá notendum OpenStreetMap
     comments:
+      title: Dagbók Athugasemdir bætt við af %{user}
+      heading: Athugasemdir dagbókar %{user}
+      subheading_html: Dagbóka Athugasemdir bætt við af %{user}
+      no_comments: Engar athugasemdir við dagbók
       post: Senda
       when: Þegar
       comment: Athugasemd
       newer_comments: Nýrri athugasemdir
       older_comments: Eldri athugasemdir
+  doorkeeper:
+    flash:
+      applications:
+        create:
+          notice: Umsókn skráð.
   friendships:
     make_friend:
       heading: Bæta %{user} við sem vini?
@@ -567,6 +633,8 @@ is:
       success: '%{name} er núna vinur þinn!'
       failed: Gat ekki bætt %{name} á vinalistann þinn.
       already_a_friend: '%{name} er þegar vinur þinn.'
+      limit_exceeded: Þú hefur vingast við marga notendur nýlega. Vinsamlegast bíddu
+        aðeins áður en þú reynir að vingast fleiri.
     remove_friend:
       heading: Hætta að vera vinur %{user}?
       button: fjarlægja úr vinahópi
@@ -812,6 +880,7 @@ is:
           window_construction: Gluggasmíði
           winery: Víngerð
           "yes": Handverkshús
+        crossing: Götugangur
         emergency:
           access_point: Aðgangspunktur
           ambulance_station: Sjúkrabílastöð
@@ -871,6 +940,7 @@ is:
           trailhead: Upphaf slóða
           trunk: Stofnbraut (Hringvegurinn)
           trunk_link: Stofnbraut (Hringvegurinn)
+          turning_circle: Beygjuhringur
           turning_loop: Snúningsslaufa
           unclassified: Óflokkaður vegur
           "yes": Vegur
@@ -901,6 +971,7 @@ is:
           railway: Sögulegt lestarspor
           roman_road: Rómverskur vegur
           ruins: Rústir
+          rune_stone: Rúnasteinn
           stone: Steinn
           tomb: Gröf
           tower: Turn
@@ -1079,10 +1150,13 @@ is:
           sand: Sandur
           scree: Skriða
           scrub: Kjarr
+          shingle: Riðuströnd
           spring: Lind
           stone: Steinn
           strait: Sund
           tree: Tré
+          tree_row: Trjáröð
+          tundra: Freðmýri
           valley: Dalur
           volcano: Eldfjall
           water: Vatn
@@ -1118,6 +1192,7 @@ is:
           "yes": Skrifstofa
         place:
           allotments: Úthlutuð svæði
+          archipelago: Eyjagarður
           city: Borg
           city_block: Götureitur
           country: Land
@@ -1159,6 +1234,7 @@ is:
           platform: Brautarpallur
           preserved: Varðveitt lestarspor
           proposed: Tillaga um lestarteinalagningu
+          rail: Járnbraut
           spur: Lestarteinastubbur
           station: Lestarstöð
           stop: Stöðvunarsvæði lestar
@@ -1480,11 +1556,13 @@ is:
     edit_with: Breyta með %{editor}
     tag_line: Frjálsa wiki heimskortið
     intro_header: Velkomin í OpenStreetMap!
-    intro_text: OpenStreetMap er heimskort búið til af fólki eins og þér. Það er gefið
+    intro_text: OpenStreetMap er heimskort gert af fólki eins og þér. Það er gefið
       út með opnu hugbúnaðarleyfi og það kostar ekkert að nota það.
     intro_2_create_account: Búa til notandaaðgang
-    hosting_partners_html: Vefhýsing er studd af %{ucl}, %{bytemark} og öðrum %{partners}.
+    hosting_partners_html: Vefhýsing er studd af %{ucl},%{fastly}, %{bytemark} og
+      öðrum %{partners}.
     partners_ucl: UCL
+    partners_fastly: Fastly
     partners_bytemark: Bytemark Hosting
     partners_partners: samstarfsaðilum
     tou: Notkunarskilmálar
@@ -1511,11 +1589,20 @@ is:
       hi: Hæ %{to_user},
       header: '%{from_user} hefur bætt við athugasemd á OpenStreetMap bloggfærsluna
         með titlinum „%{subject}“:'
+      header_html: '%{from_user} hefur bætt við athugasemd á OpenStreetMap dagbókarfærslu
+        með titlinum „%{subject}“:'
       footer: Þú getur einnig lesið athugasemdina á %{readurl} og skrifað athugasemd
         á %{commenturl} eða sent skilaboð til höfundarins á %{replyurl}
+      footer_html: Þú getur einnig lesið athugasemdina á %{readurl} og skrifað athugasemd
+        á %{commenturl} eða sent skilaboð til höfundarins á %{replyurl}
     message_notification:
+      subject: '[OpenStreetMap] %{message_title}'
       hi: Hæ %{to_user},
       header: '%{from_user} hefur send þér skilaboð á OpenStreetMap með titlinum „%{subject}“:'
+      header_html: '%{from_user} hefur sent eitt skilaboð gegnum OpenStreetMap með
+        efninu %{subject}:'
+      footer: Þú getur einnig lesið skilaboðin á %{readurl} og sent skilaboð til höfundarins
+        á %{replyurl}
       footer_html: Þú getur einnig lesið skilaboðin á %{readurl} og sent skilaboð
         til höfundarins á %{replyurl}
     friendship_notification:
@@ -1524,12 +1611,23 @@ is:
       had_added_you: Notandinn %{user} hefur bætt þér við sem vini á OpenStreetMap.
       see_their_profile: Þú getur séð notandasíðu notandans á %{userurl} og jafnvel
         bætt honum við sem vini líka.
+      see_their_profile_html: Þú getur séð notandasíðu notandans á %{userurl}.
       befriend_them: Þú getur líka bætt þeim við sem vinum á %{befriendurl}.
+      befriend_them_html: Þú getur líka bætt þeim við sem vinum á %{befriendurl}.
+    gpx_description:
+      description_with_tags_html: 'Hitt sér út sem að þinn GPX-fil %{trace_name} með
+        lýsingunni %{trace_description} og eftirfarandi merki: %{tags}'
+      description_with_no_tags_html: Hitt sér út sem að þinn GPX-fil %{trace_name}
+        með lýsingunni %{trace_description} og engin merki
     gpx_failure:
+      hi: Hæ %{to_user},
       failed_to_import: 'Lenti í villu þegar átti að flytja hana inn, hérna er villan::'
+      more_info_html: Meir upplýsingar Um misheppnaðir GPX-innflutningur og hvernig
+        maður forðast þau finnst á %{url}.
       import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures
       subject: '[OpenStreetMap] Villa við að flytja inn GPX skrá'
     gpx_success:
+      hi: Hæ %{to_user},
       loaded_successfully:
         one: var hlaðið inn með %{trace_points} af 1 punkti mögulegum.
         other: var hlaðið inn með %{trace_points} punktum af %{possible_points} mögulegum.
@@ -1567,8 +1665,12 @@ is:
           sem þú hefur áhuga á'
         your_note: '%{commenter} hefur sett athugasemd við einn af minnispunktunum
           þínum nálægt %{place}.'
+        your_note_html: '%{commenter} hefur sett athugasemd við einn af minnispunktunum
+          þínum nálægt %{place}.'
         commented_note: '%{commenter} hefur sett athugasemd við minnispunkt á korti
           sem þú hefur gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
+        commented_note_html: '%{commenter} hefur sett athugasemd við minnispunkt á
+          korti sem þú hefur gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
       closed:
         subject_own: '[OpenStreetMap] %{commenter} hefur leyst einn af minnispunktunum
           þínum'
@@ -1576,8 +1678,12 @@ is:
           þú hefur áhuga á'
         your_note: '%{commenter} hefur leyst einn af minnispunktunum þínum nálægt
           %{place}.'
+        your_note_html: '%{commenter} hefur leyst einn af minnispunktunum þínum nálægt
+          %{place}.'
         commented_note: '%{commenter} hefur leyst minnispunkt á korti sem þú hefur
           gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
+        commented_note_html: '%{commenter} hefur leyst minnispunkt á korti sem þú
+          hefur gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
       reopened:
         subject_own: '[OpenStreetMap] %{commenter} hefur endurvirkjað einn af minnispunktunum
           þínum'
@@ -1585,9 +1691,14 @@ is:
           sem þú hefur áhuga á'
         your_note: '%{commenter} hefur endurvirkjað einn af minnispunktunum þínum
           nálægt %{place}.'
+        your_note_html: '%{commenter} hefur endurvirkjað einn af minnispunktunum þínum
+          nálægt %{place}.'
         commented_note: '%{commenter} hefur endurvirkjað minnispunkt á korti sem þú
           hefur gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
+        commented_note_html: '%{commenter} hefur endurvirkjað minnispunkt á korti
+          sem þú hefur gert athugasemd við. Minnispunkturinn er nálægt %{place}.'
       details: Nánari upplýsingar um minnispunktinn er að finna á %{url}.
+      details_html: Nánari upplýsingar um minnispunktinn er að finna á %{url}.
     changeset_comment_notification:
       hi: Hæ %{to_user},
       greeting: Hæ,
@@ -1598,13 +1709,21 @@ is:
           sem þú hefur áhuga á'
         your_changeset: '%{commenter} hefur sett athugasemd við eitt af breytingasettunum
           þínum sem búið var til %{time}'
+        your_changeset_html: '%{commenter} hefur sett athugasemd við eitt af breytingasettunum
+          þínum sem búið var til %{time}'
         commented_changeset: '%{commenter} hefur sett athugasemd %{time} við breytingasett
           á korti sem þú fylgist með og var búið til af %{changeset_author}'
+        commented_changeset_html: '%{commenter} hefur sett athugasemd %{time} við
+          breytingasett á korti sem þú fylgist með og var gerð af %{changeset_author}'
         partial_changeset_with_comment: með umsögninni '%{changeset_comment}'
+        partial_changeset_with_comment_html: með umsögninni '%{changeset_comment}'
         partial_changeset_without_comment: án athugasemdar
       details: Nánari upplýsingar um breytingasettið er að finna á %{url}.
+      details_html: Nánari upplýsingar um breytingasettið er að finna á %{url}.
       unsubscribe: Til að hætta áskrift að uppfærslum á þessu breytingasetti, farðu
         þá á %{url} og smelltu á "Segja upp áskrift".
+      unsubscribe_html: Til að hætta áskrift að uppfærslum á þessu breytingasetti,
+        farðu þá á %{url} og smelltu á "Segja upp áskrift".
   confirmations:
     confirm:
       heading: Athuga með tölvupóstinn þinn!
@@ -1628,10 +1747,17 @@ is:
       success: Breyting á netfanginu þínu hefur verið staðfest.
       failure: Netfang hefur þegar verið staðfest með þessum lykli.
       unknown_token: Þessi staðfestingarkóði er útrunninn eða er ekki til staðar.
+    resend_success_flash:
+      confirmation_sent: Við höfum sent nýja staðfestingarmiða til %{email} og um
+        leið og þú staðfestir aðganginn þinn muntu geta fengið kortlagningu.
+      whitelist: Ef þú notar ruslpóstskerfi sem sendir staðfestingarbeiðnir, vinsamlegast
+        vertu viss um að þú skráir %{sender} á hvítlista þar sem við getum ekki svarað
+        neinum staðfestingarbeiðnum.
   messages:
     inbox:
       title: Innhólf
       my_inbox: Innhólfið mitt
+      my_outbox: Úthólfið mitt
       messages: Þú átt %{new_messages} og %{old_messages}
       new_messages:
         one: '%{count} ný skilaboð'
@@ -1666,6 +1792,8 @@ is:
       body: Því miður er ekkert skilaboð með þetta auðkenni.
     outbox:
       title: Úthólf
+      my_inbox: Innhólfið mitt
+      my_outbox: Úthólfið mitt
       messages:
         one: Þú hefur sent %{count} skilaboð
         other: Þú hefur sent %{count} skilaboð
@@ -1715,8 +1843,24 @@ is:
       reset: Endurstilla lykilorð
       flash changed: Lykilorðinu þínu hefur verið breytt
       flash token bad: Þessi leynistrengur fannst ekki, kannski er slóðin röng?
+  preferences:
+    show:
+      title: Kjörstillingar
+      preferred_editor: 'Uppáhaldsritill:'
+      preferred_languages: Ákjósanleg tungumál
+      edit_preferences: Kjörstillingar
+    edit:
+      save: Uppfæra kjörstillingar
+      cancel: Hætta við
+    update:
+      failure: Gat ekki uppfært kjörstillingar.
+    update_success_flash:
+      message: Kjörstillingar uppfærðir
   profiles:
     edit:
+      title: Breyta Notandasíðu
+      save: Uppfæra Notandasíðu
+      cancel: Hætta við
       image: Mynd
       gravatar:
         gravatar: Nota Gravatar-auðkennismynd
@@ -1732,6 +1876,9 @@ is:
       home location: Upphafsstaðsetning
       no home location: Þú hefur ekki stillt staðsetningu þína.
       update home location on click: Uppfæra staðsetninguna þegar ég smelli á kortið
+    update:
+      success: Notandasíða uppfært.
+      failure: Gat ekki uppfært kjörstillingar.
   sessions:
     new:
       title: Innskrá
@@ -1754,8 +1901,8 @@ is:
       account not active: Þessi reikningur er ekki virkur.<br />Vinsamlegast smelltu
         á tengilinn í staðfestingarpóstinum sem þú fékkst til að virkja reikninginn,
         eða <a href="%{reconfirm}">óskaðu eftir nýjum staðfestingarpósti</a>.
-      account is suspended: Því miður, notandaaðgangurinn þinn hefur verið frystur
-        vegna grunsamlegrar virkni.<br />Hafðu samband við <a href="%{webmaster}">vefstjóra</a>
+      account is suspended: Því miður, notandaaðgangurinn þinn hefur verið lokuð vegna
+        grunsamlegrar virkni.<br />Hafðu samband við <a href="%{webmaster}">vefstjóra</a>
         ef þú vilt ræða þetta mál.
       auth failure: Þetta notandanafn eða lykilorð er rangt.
       openid_logo_alt: Skrá inn með OpenID-aðgangi
@@ -1790,6 +1937,7 @@ is:
       logout_button: Útskráning
   shared:
     markdown_help:
+      title_html: Þáttað með <a href="https://kramdown.gettalong.org/quickref.html">kramdown</a>
       headings: Fyrirsagnir
       heading: Fyrirsögn
       subheading: Undirfyrirsögn
@@ -2123,6 +2271,10 @@ is:
         title: Wiki-vefur OpenStreetMap
         description: Vafraðu um wiki/kvikuna til að sjá greinargóðar leiðbeiningar
           varðandi OpenStreetMap.
+    potlatch:
+      removed: Sjálfgefinn OpenStreetMap ritstjóri er stilltur sem Potlatch. Þar sem
+        Adobe Flash Player er ekki til lengur, er Potlatch ekki lengur hægt að nota
+        í vafra.
     sidebar:
       search_results: Leitarniðurstöður
       close: Loka
@@ -2336,13 +2488,14 @@ is:
       in: í
     index:
       public_traces: Allir ferlar
-      my_traces: GPS-ferlarnir mínir
+      my_traces: Ferlarnir mínir
       public_traces_from: Ferlar eftir %{user}
       description: Skoða nýlega innsenda GPS-ferla
       tagged_with: ' með merkið %{tags}'
       empty_html: Ekkert hér ennþá. <a href='%{upload_link}'>Sendu inn nýjan feril</a>
         eða lærðu meira um GPS-ferlun á <a href='https://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>wiki-síðunni</a>.
       upload_trace: Senda inn feril
+      all_traces: Allar ferlar
     destroy:
       scheduled_for_deletion: Þessum feril verður eitt
     make_public:
@@ -2448,6 +2601,21 @@ is:
       flash: Uppfærði upplýsingar biðlaraforritsins
     destroy:
       flash: Eyðilagði skráningu biðlaraforritsins
+  oauth2_applications:
+    index:
+      name: Nafn
+      permissions: Réttindi
+    application:
+      edit: Breyta
+      delete: Eyða
+      confirm_delete: Eyða þessu forriti?
+    new:
+      title: Skrá nýtt forrit
+    edit:
+      title: Breyta forritinu þínu
+    show:
+      edit: Breyta
+      delete: Eyða
   users:
     new:
       title: Nýskrá
@@ -2763,8 +2931,8 @@ is:
       tooltip_disabled: Kortaskýringar ekki tiltækar fyrir þetta lag
     map:
       zoom:
-        in: Renna að
-        out: Renna frá
+        in: Þysja Inn
+        out: Þysja Út
       locate:
         title: Birta staðsetningu mína
         metersPopup:
@@ -2798,18 +2966,18 @@ is:
         France</a>
     site:
       edit_tooltip: Breyta kortinu
-      edit_disabled_tooltip: Renndu að til að breyta kortinu
+      edit_disabled_tooltip: Þysja inn til að breyta kortinu
       createnote_tooltip: Bæta við minnispunkti á kortið
-      createnote_disabled_tooltip: Renndu að til að bæta minnispunkti á kortið
-      map_notes_zoom_in_tooltip: Renndu að til að sjá minnispunkta á kortinu
-      map_data_zoom_in_tooltip: Renndu að til að skoða gögn kortsins
+      createnote_disabled_tooltip: Þysja inn til að bæta minnispunkti á kortið
+      map_notes_zoom_in_tooltip: Þysja inn til að sjá minnispunkta á kortinu
+      map_data_zoom_in_tooltip: Þysja inn til að skoða gögn kortsins
       queryfeature_tooltip: Rannsaka fitjur
-      queryfeature_disabled_tooltip: Renndu inn til að rannsaka fitjur
+      queryfeature_disabled_tooltip: Þysja inn til að rannsaka fitjur
     changesets:
       show:
         comment: Athugasemd
         subscribe: Gerast áskrifandi
-        unsubscribe: Segja upp áskrift
+        unsubscribe: Hætta í áskrift
         hide_comment: fela
         unhide_comment: hætta að fela
     notes:
index 5eb7574d03a0c9b13f757244baa403a0e0cd9b18..75223723a670e3aac24b2e13c0bc5161fba122df 100644 (file)
@@ -248,6 +248,13 @@ ko:
       entry:
         comment: 의견
         full: 전체 참고
+  account:
+    deletions:
+      show:
+        title: 내 계정 삭제
+        delete_account: 계정 삭제
+        confirm_delete: 확실합니까?
+        cancel: 취소
   accounts:
     edit:
       title: 계정 편집
@@ -281,9 +288,12 @@ ko:
         link text: 무엇인가요?
       save changes button: 변경사항 저장
       make edits public button: 내 편집을 공개하기
+      delete_account: 계정 삭제...
     update:
       success_confirm_needed: 사용자 정보를 성공적으로 업데이트했습니다. 새 이메일 주소를 확인하기 위해 이메일을 확인하세요.
       success: 사용자 정보를 성공적으로 업데이트했습니다.
+    destroy:
+      success: 계정이 삭제되었습니다.
   browse:
     created: 만들어짐
     closed: 닫힘
index dabbe3ddd1156fe08e7d10f32d0353ef311ad972..cdba0f8fa83c5c34c9a71173b1d83e344f926559 100644 (file)
@@ -1828,8 +1828,8 @@ pl:
   messages:
     inbox:
       title: Wiadomości odebrane
-      my_inbox: skrzynka odbiorcza
-      my_outbox: skrzynka nadawcza
+      my_inbox: wiadomości odebrane
+      my_outbox: wiadomości wysłane
       messages: Masz %{new_messages} i %{old_messages}
       new_messages:
         few: '%{count} nowe wiadomości'
@@ -1867,9 +1867,9 @@ pl:
       heading: Nie ma takiej wiadomości
       body: Niestety nie ma wiadomości o tym identyfikatorze.
     outbox:
-      title: Wysłane
-      my_inbox: Wiadomości odebrane
-      my_outbox: Wiadomości wysłane
+      title: Wiadomości wysłane
+      my_inbox: wiadomości odebrane
+      my_outbox: wiadomości wysłane
       messages:
         one: '%{count} wysłana wiadomość'
         few: '%{count} wysłane wiadomości'
index 2d8458aa658b537c7c3f53db72652d72f2efbdeb..ffcb2c18340c796a97dfbee85759ab6431a38dc8 100644 (file)
@@ -40,6 +40,7 @@
 # Author: G0rn
 # Author: Happy13241
 # Author: Helpau
+# Author: Ice bulldog
 # Author: Ignatus
 # Author: Iluvatar
 # Author: Infovarius
@@ -421,7 +422,7 @@ ru:
         link text: что это?
       save changes button: Сохранить изменения
       make edits public button: Сделать все мои правки доступными
-      delete_account: Удалить учётную запись...
+      delete_account: Удалить учётную запись
     update:
       success_confirm_needed: Информация о пользователе успешно обновлена. Проверьте
         свою электронную почту для подтверждения вашего нового адреса.
index 09b935e952f49d83fb6a748d39709ef2040dc712..3624daab7eaea5f5b17fcc8ccc4a1643419a7026 100644 (file)
@@ -21,6 +21,7 @@
 # Author: Esk78
 # Author: Green Zero
 # Author: Gzhegozh
+# Author: Ice bulldog
 # Author: KEL
 # Author: Kareyac
 # Author: Lxlalexlxl
@@ -315,6 +316,32 @@ uk:
       entry:
         comment: Коментар
         full: Повний текст
+  account:
+    deletions:
+      show:
+        title: Видалити мій обліковий запис
+        warning: Увага! Процес видалення облікового запису є остаточним і не може
+          бути скасований.
+        delete_account: Видалити обліковий запис
+        delete_introduction: 'Ви можете видалити свій обліковий запис OpenStreetMap
+          за допомогою кнопки нижче. Будь ласка, зверніть увагу на такі деталі:'
+        delete_profile: Інформацію вашого профілю, включаючи ваш аватар, опис і домашнє
+          місцезнаходження, буде вилучено.
+        delete_display_name: Ваше відображуване ім’я буде вилучено, і його можна буде
+          повторно використовувати іншими обліковими записами.
+        retain_caveats: 'Однак деяка інформація про вас буде збережена на OpenStreetMap,
+          навіть після того, як ваш обліковий запис буде видалено:'
+        retain_edits: Ваші зміни до бази даних мап, якщо такі є, будуть збережені.
+        retain_traces: Ваші завантажені сліди, якщо такі є, будуть збережені.
+        retain_diary_entries: Ваші щоденникові записи та коментарі до щоденника, якщо
+          такі є, будуть збережені, але приховані від перегляду.
+        retain_notes: Ваші примітки до мапи та коментарі до приміток, якщо такі є,
+          будуть збережені, але приховані від перегляду.
+        retain_changeset_discussions: Ваші обговорення набору змін, якщо такі є, будуть
+          збережені.
+        retain_email: Ваша електронна адреса буде збережена.
+        confirm_delete: Ви впевнені?
+        cancel: Скасувати
   accounts:
     edit:
       title: Редагувати обліковий запис
@@ -353,10 +380,13 @@ uk:
         link text: що це?
       save changes button: Зберегти зміни
       make edits public button: Зробити всі мої редагування загальнодоступними
+      delete_account: Видалити обліковий запис…
     update:
       success_confirm_needed: Інформацію про учасника успішно оновлено. Перевірте
         свою електронну пошту, щоб підтвердити вашу нову адресу е-пошти.
       success: Інформацію про учасника успішно оновлено.
+    destroy:
+      success: Обліковий запис видалено.
   browse:
     created: Створено
     closed: Закрито
index 748e0b9aa211f3a8e371a57bcba5c8ce0274585b..0f787b7395d20145a6e7ab96d7e08c6bd90e2858 100644 (file)
@@ -23,3 +23,7 @@ PG_FUNCTION_INFO_V1(tile_for_point);
  *
  * (without all the *s)
  */
+
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
diff --git a/db/migrate/20220223140543_remove_id_defaults.rb b/db/migrate/20220223140543_remove_id_defaults.rb
new file mode 100644 (file)
index 0000000..5ce01f9
--- /dev/null
@@ -0,0 +1,13 @@
+class RemoveIdDefaults < ActiveRecord::Migration[7.0]
+  def change
+    # Remove defaults from foreign key references
+    change_column_default :gpx_file_tags, :gpx_id, :from => 0, :to => nil
+    change_column_default :relation_members, :relation_id, :from => 0, :to => nil
+    change_column_default :relation_tags, :relation_id, :from => 0, :to => nil
+    change_column_default :way_tags, :way_id, :from => 0, :to => nil
+
+    # Remove defaults from primary keys
+    change_column_default :relations, :relation_id, :from => 0, :to => nil
+    change_column_default :ways, :way_id, :from => 0, :to => nil
+  end
+end
index 63aa17353a7071df5c0ed8efc1e10e8d15879bb7..dd0165ee08aabbe1ce35fc460a78cc14725f2a01 100644 (file)
@@ -753,7 +753,7 @@ CREATE TABLE public.gps_points (
 --
 
 CREATE TABLE public.gpx_file_tags (
-    gpx_id bigint DEFAULT 0 NOT NULL,
+    gpx_id bigint NOT NULL,
     tag character varying NOT NULL,
     id bigint NOT NULL
 );
@@ -1274,7 +1274,7 @@ ALTER SEQUENCE public.redactions_id_seq OWNED BY public.redactions.id;
 --
 
 CREATE TABLE public.relation_members (
-    relation_id bigint DEFAULT 0 NOT NULL,
+    relation_id bigint NOT NULL,
     member_type public.nwr_enum NOT NULL,
     member_id bigint NOT NULL,
     member_role character varying NOT NULL,
@@ -1288,7 +1288,7 @@ CREATE TABLE public.relation_members (
 --
 
 CREATE TABLE public.relation_tags (
-    relation_id bigint DEFAULT 0 NOT NULL,
+    relation_id bigint NOT NULL,
     k character varying DEFAULT ''::character varying NOT NULL,
     v character varying DEFAULT ''::character varying NOT NULL,
     version bigint NOT NULL
@@ -1300,7 +1300,7 @@ CREATE TABLE public.relation_tags (
 --
 
 CREATE TABLE public.relations (
-    relation_id bigint DEFAULT 0 NOT NULL,
+    relation_id bigint NOT NULL,
     changeset_id bigint NOT NULL,
     "timestamp" timestamp without time zone NOT NULL,
     version bigint NOT NULL,
@@ -1541,7 +1541,7 @@ CREATE TABLE public.way_nodes (
 --
 
 CREATE TABLE public.way_tags (
-    way_id bigint DEFAULT 0 NOT NULL,
+    way_id bigint NOT NULL,
     k character varying NOT NULL,
     v character varying NOT NULL,
     version bigint NOT NULL
@@ -1553,7 +1553,7 @@ CREATE TABLE public.way_tags (
 --
 
 CREATE TABLE public.ways (
-    way_id bigint DEFAULT 0 NOT NULL,
+    way_id bigint NOT NULL,
     changeset_id bigint NOT NULL,
     "timestamp" timestamp without time zone NOT NULL,
     version bigint NOT NULL,
@@ -3427,6 +3427,7 @@ INSERT INTO "schema_migrations" (version) VALUES
 ('20210511104518'),
 ('20211216185316'),
 ('20220201183346'),
+('20220223140543'),
 ('21'),
 ('22'),
 ('23'),
index 3dc448e4632cd85c9221d701f1c8386eca2b8151..274ece7d9a3160e6eba8f194fcbe6eb7956bffbc 100644 (file)
@@ -22,7 +22,7 @@ module GPX
           elsif reader.name == "ele" && point
             point.altitude = reader.read_string.to_f
           elsif reader.name == "time" && point
-            point.timestamp = Time.parse(reader.read_string)
+            point.timestamp = Time.parse(reader.read_string).utc
           end
         when XML::Reader::TYPE_END_ELEMENT
           if reader.name == "trkpt" && point && point.valid?
index ffc672b0bdf3f34925f6eb919ac855a2c67529e6..05ed637a866eb8a4152bf0657295f92089894d11 100755 (executable)
@@ -2,7 +2,7 @@
 
 require File.join(File.dirname(__FILE__), "..", "config", "environment")
 
-start_time = Time.now
+start_time = Time.now.utc
 
 puts "<html>"
 puts "<head>"
@@ -87,7 +87,7 @@ rescue StandardError => e
   puts "<p><em>Exception: #{e}</em><br />#{e.backtrace.join('<br />')}</p>"
 end
 
-puts "<p>Report took #{Time.new - start_time} seconds to run</p>"
+puts "<p>Report took #{Time.now.utc - start_time} seconds to run</p>"
 puts "</body>"
 puts "</html>"
 
index 40f2cb03c5715f4b89dece59964ad7ebb13bd16b..b5656f6ac0b5b7aad20208084b990789985fdc9b 100755 (executable)
@@ -6,7 +6,7 @@ require "generator"
 addresses = User.count(
   :conditions => {
     :status => %w[suspended deleted],
-    :creation_time => Time.now - 28.days..Time.now
+    :creation_time => Time.now.utc - 28.days..Time.now.utc
   },
   :group => :creation_ip
 )
index 64871baa3c4fed59e8fe705792a291641baf71e0..ce7c08a659d8b63269b7d8fb353d486e1eb6f15a 100644 (file)
@@ -214,7 +214,7 @@ module Api
       assert_response :forbidden
 
       # Try again, after agreement with the terms
-      user.terms_agreed = Time.now
+      user.terms_agreed = Time.now.utc
       user.save!
 
       assert_difference "ChangesetComment.count", 1 do
@@ -237,7 +237,7 @@ module Api
       assert_response :forbidden
 
       # Try again, after agreement with the terms
-      user.terms_agreed = Time.now
+      user.terms_agreed = Time.now.utc
       user.save!
 
       assert_difference "ChangesetComment.count", 1 do
index f3de0682b53ad1ca28da38b400f1436f1fb7dd7f..e61831fbd2feec5dd25cedee8848322537331a33 100644 (file)
@@ -206,7 +206,7 @@ module Api
       # test that it really is closed now
       cs = Changeset.find(changeset.id)
       assert_not(cs.is_open?,
-                 "changeset should be closed now (#{cs.closed_at} > #{Time.now.getutc}.")
+                 "changeset should be closed now (#{cs.closed_at} > #{Time.now.utc}.")
     end
 
     ##
index fe9127029e8125cf9b09a03f066b6903e587c8c4..7dbcdc816e8ae965b007e8445a0b5572633c99d4 100644 (file)
@@ -345,7 +345,7 @@ module Api
       end
       assert_response :gone
 
-      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc)
 
       assert_no_difference "NoteComment.count" do
         post comment_note_path(:id => closed_note_with_comment, :text => "This is an additional comment"), :headers => auth_header
@@ -406,14 +406,14 @@ module Api
       post close_note_path(:id => hidden_note_with_comment), :headers => auth_header
       assert_response :gone
 
-      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc)
 
       post close_note_path(:id => closed_note_with_comment), :headers => auth_header
       assert_response :conflict
     end
 
     def test_reopen_success
-      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+      closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc)
       user = create(:user)
 
       post reopen_note_path(:id => closed_note_with_comment, :text => "This is a reopen comment", :format => "json")
@@ -748,8 +748,8 @@ module Api
     end
 
     def test_index_closed
-      create(:note_with_comments, :status => "closed", :closed_at => Time.now - 5.days)
-      create(:note_with_comments, :status => "closed", :closed_at => Time.now - 100.days)
+      create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc - 5.days)
+      create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc - 100.days)
       create(:note_with_comments, :status => "hidden")
       create(:note_with_comments)
 
index 9a77e803417c2ac1b7b73f3d182c7ab3baf36e5c..7ad16dcd982ee8020a583c3cbcf5bc97414a0057 100644 (file)
@@ -153,7 +153,7 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest
 
   def test_read_closed_note
     user = create(:user)
-    closed_note = create(:note_with_comments, :status => "closed", :closed_at => Time.now, :comments_count => 2) do |note|
+    closed_note = create(:note_with_comments, :status => "closed", :closed_at => Time.now.utc, :comments_count => 2) do |note|
       create(:note_comment, :event => "closed", :note => note, :author => user)
     end
 
index c3d7645789f22f744ed632100e446cb791b48619..1193d3b25ec90187279e63b4ecb7a1d84dace48a 100644 (file)
@@ -191,7 +191,7 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
     m = Message.last
     assert_equal user.id, m.from_user_id
     assert_equal recipient_user.id, m.to_user_id
-    assert_in_delta Time.now, m.sent_on, 2
+    assert_in_delta Time.now.utc, m.sent_on, 2
     assert_equal "Test Message", m.title
     assert_equal "Test message body", m.body
     assert_equal "markdown", m.body_format
index 3e2be801da33e903bf4db4d874ae67c3051ed43c..16a77624c75ee8dabc02fb62bb85242e44ee6631 100644 (file)
@@ -240,9 +240,9 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to user_block_path(:id => id)
     assert_equal "Created a block on user #{target_user.display_name}.", flash[:notice]
     b = UserBlock.find(id)
-    assert_in_delta Time.now, b.created_at, 1
-    assert_in_delta Time.now, b.updated_at, 1
-    assert_in_delta Time.now + 12.hours, b.ends_at, 1
+    assert_in_delta Time.now.utc, b.created_at, 1
+    assert_in_delta Time.now.utc, b.updated_at, 1
+    assert_in_delta Time.now.utc + 12.hours, b.ends_at, 1
     assert_not b.needs_view
     assert_equal "Vandalism", b.reason
     assert_equal "markdown", b.reason_format
@@ -311,7 +311,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to user_block_path(active_block)
     assert_equal "Block updated.", flash[:notice]
     b = UserBlock.find(active_block.id)
-    assert_in_delta Time.now, b.updated_at, 1
+    assert_in_delta Time.now.utc, b.updated_at, 1
     assert b.needs_view
     assert_equal "Vandalism", b.reason
 
@@ -356,13 +356,13 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "revoke"
     b = UserBlock.find(active_block.id)
-    assert b.ends_at - Time.now > 100
+    assert b.ends_at - Time.now.utc > 100
 
     # Check that revoking a block works using POST
     post revoke_user_block_path(:id => active_block, :confirm => true)
     assert_redirected_to user_block_path(active_block)
     b = UserBlock.find(active_block.id)
-    assert_in_delta Time.now, b.ends_at, 1
+    assert_in_delta Time.now.utc, b.ends_at, 1
 
     # We should get an error if the block doesn't exist
     get revoke_user_block_path(:id => 99999)
index 57a434fa1e739fb8ec32ee56922419631d32f95c..cd148c7896a2f80720258ab27262a66127a767a4 100644 (file)
@@ -2,7 +2,7 @@ FactoryBot.define do
   factory :message do
     sequence(:title) { |n| "Message #{n}" }
     sequence(:body) { |n| "Body text for message #{n}" }
-    sent_on { Time.now }
+    sent_on { Time.now.utc }
 
     association :sender, :factory => :user
     association :recipient, :factory => :user
index ae32926cdc0a2c81be54e89f36756249e71badc1..392d67a846d0401f6243681cf451294add3859c7 100644 (file)
@@ -6,7 +6,7 @@ FactoryBot.define do
     changeset
 
     visible { true }
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     version { 1 }
 
     trait :deleted do
index e129b62f7b7a5b6118f6cf9f136964c193aecb65..a2ca0a2ee3c7780389d2f11ead22ba60455574a8 100644 (file)
@@ -7,7 +7,7 @@ FactoryBot.define do
     association :current_node, :factory => :node
 
     visible { true }
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     version { 1 }
   end
 end
index 8fdb23f58e3b65752aed5e819edca7aaec4b6be7..1bc1b36cf0c94e7fe2ee2978d10e0df88eaca640 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :old_relation do
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     visible { true }
     version { 1 }
 
index 4fc0721d798d14e2c64d9c5579aee9360df4dc44..265a477d3022c278a5ee11fbd93a2b69397980b5 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :old_way do
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     visible { true }
     version { 1 }
 
index 8bb00e287e4045e3ada93f7a154b9f26412660e1..6d43df0a37290dbfb3750b6d3c36f52e2b0d769a 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :relation do
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     visible { true }
     version { 1 }
 
index 4ba152f6e05c73244b9860483a31afddf4676f40..86d2aea57a630a601969df31dd2703409ad1bdeb 100644 (file)
@@ -4,7 +4,7 @@ FactoryBot.define do
     latitude { 1 * GeoRecord::SCALE }
     longitude { 1 * GeoRecord::SCALE }
     # tile { QuadTile.tile_for_point(1,1) }
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
 
     trace
   end
index 687339e7f49a5ae1ce9212ba626b94ea51b78979..88c57745b1db17e41e00a738b126f5b375402efd 100644 (file)
@@ -5,7 +5,7 @@ FactoryBot.define do
 
     user
 
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     inserted { true }
     size { 10 }
 
index 07f1ef679b8a6470bee38c3c986f185e7157a007..cdc606cf1d66f6087514156b5192fc6e55eb3238 100644 (file)
@@ -11,7 +11,7 @@ FactoryBot.define do
     end
 
     terms_seen { true }
-    terms_agreed { Time.now.getutc }
+    terms_agreed { Time.now.utc }
     data_public { true }
 
     trait :with_home_location do
index 53864bb0eb6fc5bbf75cf19b36e8d8b50875a6f1..fefbba45ace1b61fbd3932ea1851ba6e5a69fd67 100644 (file)
@@ -1,7 +1,7 @@
 FactoryBot.define do
   factory :user_block do
     sequence(:reason) { |n| "User Block #{n}" }
-    ends_at { Time.now + 1.day }
+    ends_at { Time.now.utc + 1.day }
 
     user
     association :creator, :factory => :moderator_user
@@ -11,7 +11,7 @@ FactoryBot.define do
     end
 
     trait :expired do
-      ends_at { Time.now - 1.day }
+      ends_at { Time.now.utc - 1.day }
     end
 
     trait :revoked do
index 1b6b18dc98a0aedae7821791d9831c0c3c4549ce..f2093e305ca8c32807939c06a362c7bf4b534dc0 100644 (file)
@@ -1,6 +1,6 @@
 FactoryBot.define do
   factory :way do
-    timestamp { Time.now }
+    timestamp { Time.now.utc }
     visible { true }
     version { 1 }
 
index 43e27c5295bc1cf4adbd01414b1b5e8e2e7deaea..d3e4d4f072b3006a53bed6a36f95063f665d95d5 100644 (file)
@@ -56,19 +56,19 @@ class ApplicationHelperTest < ActionView::TestCase
   end
 
   def test_friendly_date
-    date = friendly_date(Time.new(2014, 3, 5, 18, 58, 23))
+    date = friendly_date(Time.new(2014, 3, 5, 18, 58, 23).utc)
     assert_match %r{^<span title=" *5 March 2014 at 18:58">.*</span>$}, date
 
-    date = friendly_date(Time.now - 1.hour)
+    date = friendly_date(Time.now.utc - 1.hour)
     assert_match %r{^<span title=".*">about 1 hour</span>$}, date
 
-    date = friendly_date(Time.now - 2.days)
+    date = friendly_date(Time.now.utc - 2.days)
     assert_match %r{^<span title=".*">2 days</span>$}, date
 
-    date = friendly_date(Time.now - 3.weeks)
+    date = friendly_date(Time.now.utc - 3.weeks)
     assert_match %r{^<span title=".*">21 days</span>$}, date
 
-    date = friendly_date(Time.now - 4.months)
+    date = friendly_date(Time.now.utc - 4.months)
     assert_match %r{^<span title=".*">4 months</span>$}, date
   end
 
index c4afa6c83b6e7e991d8ad8b869903af75d7932f9..0c2ab42b5810ad13683a5e317ea43fd81964ecdf 100644 (file)
@@ -4,13 +4,13 @@ class UserBlocksHelperTest < ActionView::TestCase
   include ApplicationHelper
 
   def test_block_status
-    block = create(:user_block, :needs_view, :ends_at => Time.now.getutc)
+    block = create(:user_block, :needs_view, :ends_at => Time.now.utc)
     assert_equal "Active until the user logs in.", block_status(block)
 
-    block = create(:user_block, :needs_view, :ends_at => Time.now.getutc + 1.hour)
+    block = create(:user_block, :needs_view, :ends_at => Time.now.utc + 1.hour)
     assert_match %r{^Ends in <span title=".*">about 1 hour</span> and after the user has logged in\.$}, block_status(block)
 
-    block = create(:user_block, :ends_at => Time.now.getutc + 1.hour)
+    block = create(:user_block, :ends_at => Time.now.utc + 1.hour)
     assert_match %r{^Ends in <span title=".*">about 1 hour</span>\.$}, block_status(block)
   end
 
index ecadaad534f8a0d732114d860a73d1110a4fd2c5..96dd879ee08273309e9cba75cffad8ec131e5551 100644 (file)
@@ -15,7 +15,7 @@ class UserBlocksTest < ActionDispatch::IntegrationTest
       :user_id => blocked_user.id,
       :creator_id => create(:moderator_user).id,
       :reason => "testing",
-      :ends_at => Time.now.getutc + 5.minutes
+      :ends_at => Time.now.utc + 5.minutes
     )
     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
     assert_response :forbidden
@@ -29,7 +29,7 @@ class UserBlocksTest < ActionDispatch::IntegrationTest
       :user_id => blocked_user.id,
       :creator_id => moderator.id,
       :reason => "testing",
-      :ends_at => Time.now.getutc + 5.minutes
+      :ends_at => Time.now.utc + 5.minutes
     )
     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
     assert_response :forbidden
index 3a25c1a4b53162e6bf0acc1220cbaeacbe0dfe8b..1a12410916775e2ed67cb1ff67069c0f68161b18 100644 (file)
@@ -75,7 +75,7 @@ class MessageTest < ActiveSupport::TestCase
       from "from@example.com"
       to "to@example.com"
       subject "Test message"
-      date Time.now
+      date Time.now.utc
       content_type "text/plain; charset=utf-8"
       body "This is a test & a message"
     end
@@ -95,7 +95,7 @@ class MessageTest < ActiveSupport::TestCase
       from "from@example.com"
       to "to@example.com"
       subject "Test message"
-      date Time.now
+      date Time.now.utc
       content_type "text/html; charset=utf-8"
       body "<p>This is a <b>test</b> &amp; a message</p>"
     end
@@ -115,7 +115,7 @@ class MessageTest < ActiveSupport::TestCase
       from "from@example.com"
       to "to@example.com"
       subject "Test message"
-      date Time.now
+      date Time.now.utc
 
       text_part do
         content_type "text/plain; charset=utf-8"
@@ -139,7 +139,7 @@ class MessageTest < ActiveSupport::TestCase
       from "from@example.com"
       to "to@example.com"
       subject "Test message"
-      date Time.now
+      date Time.now.utc
 
       html_part do
         content_type "text/html; charset=utf-8"
@@ -162,7 +162,7 @@ class MessageTest < ActiveSupport::TestCase
       from "from@example.com"
       to "to@example.com"
       subject "[OpenStreetMap] Test message"
-      date Time.now
+      date Time.now.utc
       content_type "text/plain; charset=utf-8"
       body "This is a test & a message"
     end
index 2385125b5487e85bf64ad7637e3847f9d2c7170a..b74cebcc4cc4d2da028f451eb97e0a5bf57ff0ce 100644 (file)
@@ -28,7 +28,7 @@ class NoteTest < ActiveSupport::TestCase
   end
 
   def test_reopen
-    note = create(:note, :status => "closed", :closed_at => Time.now)
+    note = create(:note, :status => "closed", :closed_at => Time.now.utc)
     assert_equal "closed", note.status
     assert_not_nil note.closed_at
     note.reopen
@@ -43,7 +43,7 @@ class NoteTest < ActiveSupport::TestCase
   end
 
   def test_closed?
-    assert create(:note, :status => "closed", :closed_at => Time.now).closed?
+    assert create(:note, :status => "closed", :closed_at => Time.now.utc).closed?
     assert_not create(:note, :status => "open", :closed_at => nil).closed?
   end
 
index d76a2c4ace3d567baea812b1c9414be5026203d1..0e6b00c06476781fd83872b66f4daa5dbc283d78 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,10 +2,10 @@
 # yarn lockfile v1
 
 
-"@eslint/eslintrc@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3"
-  integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==
+"@eslint/eslintrc@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a"
+  integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==
   dependencies:
     ajv "^6.12.4"
     debug "^4.3.2"
@@ -189,11 +189,11 @@ eslint-visitor-keys@^3.3.0:
   integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
 
 eslint@^8.0.0:
-  version "8.9.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb"
-  integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==
+  version "8.10.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d"
+  integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==
   dependencies:
-    "@eslint/eslintrc" "^1.1.0"
+    "@eslint/eslintrc" "^1.2.0"
     "@humanwhocodes/config-array" "^0.9.2"
     ajv "^6.10.0"
     chalk "^4.0.0"