]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5064' master
authorTom Hughes <tom@compton.nu>
Sun, 2 Feb 2025 12:44:27 +0000 (12:44 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 2 Feb 2025 12:44:27 +0000 (12:44 +0000)
194 files changed:
.github/workflows/tests.yml
.rubocop.yml
.rubocop_todo.yml
Gemfile
Gemfile.lock
app/abilities/ability.rb
app/assets/config/manifest.js
app/assets/javascripts/application.js
app/assets/javascripts/edit/id.js.erb
app/assets/javascripts/embed.js.erb
app/assets/javascripts/index.js
app/assets/javascripts/index/contextmenu.js
app/assets/javascripts/index/directions-endpoint.js
app/assets/javascripts/index/directions.js
app/assets/javascripts/index/export.js
app/assets/javascripts/index/layers/data.js
app/assets/javascripts/index/layers/notes.js
app/assets/javascripts/index/query.js
app/assets/javascripts/index/search.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/leaflet.share.js
app/assets/javascripts/osm.js.erb
app/assets/javascripts/router.js
app/assets/javascripts/user.js
app/assets/stylesheets/common.scss
app/controllers/api/maps_controller.rb [moved from app/controllers/api/map_controller.rb with 82% similarity]
app/controllers/api/notes_controller.rb
app/controllers/api/relations_controller.rb
app/controllers/api/ways_controller.rb
app/controllers/api_controller.rb
app/controllers/application_controller.rb
app/controllers/changeset_subscriptions_controller.rb [new file with mode: 0644]
app/controllers/changesets_controller.rb
app/controllers/export_controller.rb
app/controllers/issues_controller.rb
app/controllers/messages/mutes_controller.rb [new file with mode: 0644]
app/controllers/messages/read_marks_controller.rb [new file with mode: 0644]
app/controllers/messages_controller.rb
app/controllers/traces/data_controller.rb [new file with mode: 0644]
app/controllers/traces_controller.rb
app/controllers/user_blocks_controller.rb
app/helpers/social_share_button_helper.rb
app/mailers/user_mailer.rb
app/models/note.rb
app/views/api/maps/_bounds.json.jbuilder [moved from app/views/api/map/_bounds.json.jbuilder with 100% similarity]
app/views/api/maps/_bounds.xml.builder [moved from app/views/api/map/_bounds.xml.builder with 100% similarity]
app/views/api/maps/show.json.jbuilder [moved from app/views/api/map/index.json.jbuilder with 100% similarity]
app/views/api/maps/show.xml.builder [moved from app/views/api/map/index.xml.builder with 100% similarity]
app/views/changeset_subscriptions/_heading.html.erb [moved from app/views/changesets/_heading.html.erb with 100% similarity]
app/views/changeset_subscriptions/no_such_entry.html.erb [new file with mode: 0644]
app/views/changeset_subscriptions/show.html.erb [new file with mode: 0644]
app/views/changesets/no_such_entry.html.erb [deleted file]
app/views/changesets/subscribe.html.erb [deleted file]
app/views/changesets/unsubscribe.html.erb [deleted file]
app/views/issues/_page.html.erb
app/views/layouts/_head.html.erb
app/views/layouts/_meta.html.erb
app/views/messages/mailboxes/_message.html.erb
app/views/messages/show.html.erb
app/views/user_mailer/changeset_comment_notification.html.erb
app/views/user_mailer/changeset_comment_notification.text.erb
config/initializers/browser.rb [deleted file]
config/locales/af.yml
config/locales/aln.yml
config/locales/ar.yml
config/locales/arz.yml
config/locales/ast.yml
config/locales/az.yml
config/locales/ba.yml
config/locales/be-Tarask.yml
config/locales/be.yml
config/locales/bg.yml
config/locales/bn.yml
config/locales/br.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/ce.yml
config/locales/cs.yml
config/locales/cy.yml
config/locales/da.yml
config/locales/de.yml
config/locales/diq.yml
config/locales/dsb.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fit.yml
config/locales/fr.yml
config/locales/fur.yml
config/locales/fy.yml
config/locales/ga.yml
config/locales/gcf.yml
config/locales/gd.yml
config/locales/gl.yml
config/locales/gsw.yml
config/locales/gu.yml
config/locales/he.yml
config/locales/hi.yml
config/locales/hr.yml
config/locales/hsb.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/id.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ka.yml
config/locales/kab.yml
config/locales/kk-cyrl.yml
config/locales/km.yml
config/locales/kn.yml
config/locales/ko.yml
config/locales/ksh.yml
config/locales/ku-Latn.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/mo.yml
config/locales/mr.yml
config/locales/ms.yml
config/locales/my.yml
config/locales/nb.yml
config/locales/nds.yml
config/locales/ne.yml
config/locales/nl.yml
config/locales/nn.yml
config/locales/nqo.yml
config/locales/oc.yml
config/locales/pa.yml
config/locales/pl.yml
config/locales/pnb.yml
config/locales/ps.yml
config/locales/pt-PT.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sat.yml
config/locales/sc.yml
config/locales/scn.yml
config/locales/sco.yml
config/locales/sh.yml
config/locales/sk.yml
config/locales/skr-arab.yml
config/locales/sl.yml
config/locales/sq.yml
config/locales/sr-Latn.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/ta.yml
config/locales/te.yml
config/locales/th.yml
config/locales/tl.yml
config/locales/tr.yml
config/locales/tt.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/xmf.yml
config/locales/zh-CN.yml
config/locales/zh-HK.yml
config/locales/zh-TW.yml
config/routes.rb
test/abilities/api_abilities_test.rb
test/abilities/api_capability_test.rb
test/controllers/api/maps_controller_test.rb [moved from test/controllers/api/map_controller_test.rb with 91% similarity]
test/controllers/api/notes_controller_test.rb
test/controllers/changeset_subscriptions_controller_test.rb [new file with mode: 0644]
test/controllers/changesets_controller_test.rb
test/controllers/export_controller_test.rb
test/controllers/messages/mutes_controller_test.rb [new file with mode: 0644]
test/controllers/messages/read_marks_controller_test.rb [new file with mode: 0644]
test/controllers/messages_controller_test.rb
test/controllers/oauth2_authorized_applications_controller_test.rb
test/controllers/traces/data_controller_test.rb [new file with mode: 0644]
test/controllers/traces_controller_test.rb
test/factories/oauth_access_grant.rb
test/factories/oauth_access_token.rb
test/helpers/social_share_button_helper_test.rb
test/mailers/user_mailer_test.rb
test/models/note_test.rb
test/models/user_test.rb
test/system/issues_test.rb
test/system/note_layer_test.rb [new file with mode: 0644]
test/test_helper.rb
vendor/assets/leaflet/leaflet.osm.js
vendor/assets/polyfill/es6.js [deleted file]
yarn.lock

index 25722c1f48fc471abd09f8a6b2dfb2dbe8704bc1..bfeb3d33abba3a2118d1597a277559339b9d2a66 100644 (file)
@@ -65,7 +65,7 @@ jobs:
     - name: Run javascript tests
       run: bundle exec teaspoon
     - name: Report completion to Coveralls
-      uses: coverallsapp/github-action@v2.3.4
+      uses: coverallsapp/github-action@v2.3.6
       with:
         github-token: ${{ secrets.github_token }}
         flag-name: ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}
@@ -77,7 +77,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
     - name: Report completion to Coveralls
-      uses: coverallsapp/github-action@v2.3.4
+      uses: coverallsapp/github-action@v2.3.6
       with:
         github-token: ${{ secrets.github_token }}
         parallel-finished: true
index d1b961dd5c66c2325a99c7782cc34f2dc859c865..68a7ca003eeacb82f949eb247fc3a4a6aaecff02 100644 (file)
@@ -146,7 +146,6 @@ Rails/SpecificActionNames:
     - 'app/controllers/export_controller.rb'
     - 'app/controllers/geocoder_controller.rb'
     - 'app/controllers/issues_controller.rb'
-    - 'app/controllers/messages_controller.rb'
     - 'app/controllers/site_controller.rb'
     - 'app/controllers/traces_controller.rb'
     - 'app/controllers/users_controller.rb'
index fa15ea90a0d5a1ba00019d93f94bc52a157a7fda..3d7cea500fec5826176e028bf5e13d19ec0ae79a 100644 (file)
@@ -106,19 +106,6 @@ Minitest/EmptyLineBeforeAssertionMethods:
 Minitest/MultipleAssertions:
   Max: 60
 
-# Offense count: 10
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Rails/ActionControllerFlashBeforeRender:
-  Exclude:
-    - 'app/controllers/application_controller.rb'
-    - 'app/controllers/confirmations_controller.rb'
-    - 'app/controllers/issue_comments_controller.rb'
-    - 'app/controllers/messages_controller.rb'
-    - 'app/controllers/passwords_controller.rb'
-    - 'app/controllers/traces_controller.rb'
-    - 'app/controllers/user_blocks_controller.rb'
-    - 'app/controllers/users_controller.rb'
-
 # Offense count: 2
 # Configuration parameters: Include.
 # Include: app/models/**/*.rb
diff --git a/Gemfile b/Gemfile
index 60a8fcaceae8671347e148a61b2a756f1ca62f33..2765b1ae71fe39b643993629b70adc69dc0bec7a 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -130,9 +130,6 @@ gem "ffi-libarchive"
 gem "gd2-ffij", ">= 0.4.0"
 gem "marcel"
 
-# Used for browser detection
-gem "browser", "< 6" # for ruby 3.1 support
-
 # Used for S3 object storage
 gem "aws-sdk-s3"
 
index 615787927535ff0866783ab0cdbd4c7d6e68f4e5..761beefa3a0555cab7acda87d1585bb7b98df05e 100644 (file)
@@ -92,8 +92,8 @@ GEM
     autoprefixer-rails (10.4.19.0)
       execjs (~> 2)
     aws-eventstream (1.3.0)
-    aws-partitions (1.1040.0)
-    aws-sdk-core (3.216.0)
+    aws-partitions (1.1043.0)
+    aws-sdk-core (3.217.0)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.992.0)
       aws-sigv4 (~> 1.9)
@@ -134,13 +134,12 @@ GEM
     brakeman (7.0.0)
       racc
     brotli (0.6.0)
-    browser (5.3.1)
     builder (3.3.0)
     bzip2-ffi (1.1.1)
       ffi (~> 1.0)
     cancancan (3.6.1)
-    canonical-rails (0.2.16)
-      actionview (>= 4.1, < 7.3)
+    canonical-rails (0.2.17)
+      actionview (>= 4.1, < 8.1)
     capybara (3.40.0)
       addressable
       matrix
@@ -291,7 +290,7 @@ GEM
       rchardet (~> 1.8)
     globalid (1.2.1)
       activesupport (>= 6.1)
-    google-protobuf (3.25.5)
+    google-protobuf (3.25.6)
     hashdiff (1.1.2)
     hashie (5.0.0)
     highline (3.1.2)
@@ -329,7 +328,7 @@ GEM
     in_threads (1.6.0)
     iniparse (1.5.0)
     io-console (0.8.0)
-    irb (1.15.0)
+    irb (1.15.1)
       pp (>= 0.6.0)
       rdoc (>= 4.0.0)
       reline (>= 0.4.2)
@@ -349,7 +348,7 @@ GEM
       rexml (>= 3.3.9)
     kramdown-parser-gfm (1.1.0)
       kramdown (~> 2.0)
-    language_server-protocol (3.17.0.3)
+    language_server-protocol (3.17.0.4)
     libv8-node (18.19.0.0)
     libxml-ruby (5.0.3)
     listen (3.9.0)
@@ -452,7 +451,7 @@ GEM
     open4 (1.3.4)
     openstreetmap-deadlock_retry (1.3.1)
     ostruct (0.6.1)
-    overcommit (0.64.1)
+    overcommit (0.65.0)
       childprocess (>= 0.6.3, < 6)
       iniparse (~> 1.4)
       rexml (>= 3.3.9)
@@ -550,7 +549,7 @@ GEM
     rouge (4.5.1)
     rtlcss (0.2.1)
       mini_racer (>= 0.6.3)
-    rubocop (1.70.0)
+    rubocop (1.71.0)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
       parallel (~> 1.10)
@@ -560,7 +559,7 @@ GEM
       rubocop-ast (>= 1.36.2, < 2.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 2.4.0, < 4.0)
-    rubocop-ast (1.37.0)
+    rubocop-ast (1.38.0)
       parser (>= 3.3.1.0)
     rubocop-capybara (2.21.0)
       rubocop (~> 1.41)
@@ -572,7 +571,7 @@ GEM
     rubocop-performance (1.23.1)
       rubocop (>= 1.48.1, < 2.0)
       rubocop-ast (>= 1.31.1, < 2.0)
-    rubocop-rails (2.29.0)
+    rubocop-rails (2.29.1)
       activesupport (>= 4.2.0)
       rack (>= 1.1)
       rubocop (>= 1.52.0, < 2.0)
@@ -683,7 +682,6 @@ DEPENDENCIES
   bootstrap (~> 5.3.2)
   bootstrap_form (~> 5.0)
   brakeman
-  browser (< 6)
   bzip2-ffi
   cancancan
   canonical-rails
index 3ba2ab7071cf763a5fe37b50e277aa7914ab1a47..3116bc5cdd451501ccbaebe66d3034f0178c2887 100644 (file)
@@ -32,7 +32,7 @@ class Ability
       can :read, [:deletion, :account_terms]
 
       if Settings.status != "database_offline"
-        can [:subscribe, :unsubscribe], Changeset
+        can [:read, :create, :destroy], :changeset_subscription
         can [:read, :create, :update, :destroy], :oauth2_application
         can [:read, :destroy], :oauth2_authorized_application
         can [:read, :create, :destroy], :oauth2_authorization
@@ -43,7 +43,7 @@ class Ability
         can :update, DiaryEntry, :user => user
         can [:create], DiaryComment
         can [:show, :create, :destroy], Follow
-        can [:read, :create, :mark, :unmute, :destroy], Message
+        can [:read, :create, :destroy], Message
         can [:close, :reopen], Note
         can [:read, :update], :preference
         can :update, :profile
index 85b5cb86045491ce6576b0c0d859598216131655..3b1f63f8b065342fba5bfd0ed8acf6a7a16b8795 100644 (file)
@@ -17,8 +17,6 @@
 
 //= link_tree ../../../vendor/assets/leaflet .png
 
-//= link_directory ../../../vendor/assets/polyfill .js
-
 //= link leaflet/dist/images/marker-icon.png
 //= link leaflet/dist/images/marker-icon-2x.png
 //= link leaflet/dist/images/marker-shadow.png
index ead01a8ff8e0dcfef8e9c2235c2e9198700cd515..29563cb4a0020fa520d56ddcd1c0f0f05a78b0d8 100644 (file)
 //= require richtext
 //= require qs/dist/qs
 
+{
+  const application_data = $("head").data();
+
+  I18n.default_locale = OSM.DEFAULT_LOCALE;
+  I18n.locale = application_data.locale;
+  I18n.fallbacks = true;
+
+  OSM.preferred_editor = application_data.preferredEditor;
+  OSM.preferred_languages = application_data.preferredLanguages;
+
+  if (application_data.user) {
+    OSM.user = application_data.user;
+
+    if (application_data.userHome) {
+      OSM.home = application_data.userHome;
+    }
+  }
+
+  if (application_data.location) {
+    OSM.location = application_data.location;
+  }
+}
+
 /*
  * Called as the user scrolls/zooms around to manipulate hrefs of the
  * view tab and various other links
@@ -122,27 +145,6 @@ $(document).ready(function () {
     $("header").toggleClass("closed");
   });
 
-  var application_data = $("head").data();
-
-  I18n.default_locale = OSM.DEFAULT_LOCALE;
-  I18n.locale = application_data.locale;
-  I18n.fallbacks = true;
-
-  OSM.preferred_editor = application_data.preferredEditor;
-  OSM.preferred_languages = application_data.preferredLanguages;
-
-  if (application_data.user) {
-    OSM.user = application_data.user;
-
-    if (application_data.userHome) {
-      OSM.home = application_data.userHome;
-    }
-  }
-
-  if (application_data.location) {
-    OSM.location = application_data.location;
-  }
-
   $("#edit_tab")
     .attr("title", I18n.t("javascripts.site.edit_disabled_tooltip"));
 });
index 90318788c72de8342527aaeb3ab7b944d0d86ecf..08e04dcf377dacb0f868fde3a52fae1311cb4feb 100644 (file)
@@ -10,15 +10,15 @@ $(document).ready(function () {
     var params = {};
 
     if (mapParams.object) {
-      params.id = mapParams.object.type + '/' + mapParams.object.id;
+      params.id = mapParams.object.type + "/" + mapParams.object.id;
       mapParams = OSM.parseHash(location.hash);
       if (mapParams.center) {
-        params.map = mapParams.zoom + '/' + mapParams.center.lat + '/' + mapParams.center.lng;
+        params.map = mapParams.zoom + "/" + mapParams.center.lat + "/" + mapParams.center.lng;
       }
     } else if (id.data("lat") && id.data("lon")) {
       params.map = "16/" + id.data("lat") + "/" + id.data("lon");
     } else {
-      params.map = (mapParams.zoom || 17) + '/' + mapParams.lat + '/' + mapParams.lon;
+      params.map = (mapParams.zoom || 17) + "/" + mapParams.lat + "/" + mapParams.lon;
     }
 
     if (hashParams.background) params.background = hashParams.background;
index b9e9a2eaf41ee7607881ef681003080bd0456090..34a8b68bcf8740e880fcb6e7574ce8adc169e75b 100644 (file)
@@ -1,5 +1,6 @@
 //= depend_on settings.yml
 //= depend_on settings.local.yml
+//= depend_on layers.yml
 //= require leaflet/dist/leaflet-src
 //= require leaflet.osm
 //= require i18n
@@ -15,74 +16,73 @@ I18n.default_locale = <%= I18n.default_locale.to_json %>;
 I18n.fallbacks = true;
 
 window.onload = function () {
-  var query = (window.location.search || '?').slice(1),
-      args  = {};
+  const args = Object.fromEntries(new URLSearchParams(window.location.search));
 
-  var pairs = query.split('&');
-  for (var i = 0; i < pairs.length; i++) {
-    var parts = pairs[i].split('=');
-    args[parts[0]] = decodeURIComponent(parts[1] || '');
-  }
-
-  var mapnikOptions = {
+  const tileOptions = {
+    mapnik: {
 <% if Settings.key?(:tile_cdn_url) %>
-    url: <%= Settings.tile_cdn_url.to_json %>
+      url: <%= Settings.tile_cdn_url.to_json %>
 <% end %>
+    }
   };
 
-  var thunderforestOptions = {
+  const apiKeys = {
 <% if Settings.key?(:thunderforest_key) %>
-    apikey: <%= Settings.thunderforest_key.to_json %>
+    THUNDERFOREST_KEY: <%= Settings.thunderforest_key.to_json %>
 <% end %>
   };
 
   var map = L.map("map");
-  map.attributionControl.setPrefix('');
+  map.attributionControl.setPrefix("");
   map.removeControl(map.attributionControl);
 
-  if (args.layer === "cyclosm") {
-    new L.OSM.CyclOSM().addTo(map);
-  } else if (args.layer === "cyclemap" || args.layer === "cycle map") {
-    new L.OSM.CycleMap(thunderforestOptions).addTo(map);
-  } else if (args.layer === "transportmap") {
-    new L.OSM.TransportMap(thunderforestOptions).addTo(map);
-  } else if (args.layer === "hot") {
-    new L.OSM.HOT().addTo(map);
-  } else {
-    new L.OSM.Mapnik(mapnikOptions).addTo(map);
-  }
+  const isDarkTheme = args.theme === "dark" || (args.theme !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
+  const layers = <%=
+    YAML.load_file(Rails.root.join("config/layers.yml"))
+      .select { |entry| entry["canEmbed"] }
+      .each_with_object({}) do |entry, obj|
+        obj[entry["layerId"]] = {
+          layer: entry["leafletOsmId"],
+          darkLayer: entry["leafletOsmDarkId"],
+          apiKeyId: entry["apiKeyId"]
+        }.compact
+      end.to_json
+    %>;
+  const layerId = (args.layer || "").replaceAll(" ", "");
+  const layerConfig = layers[layerId] || layers.mapnik;
+  const { layer, ...options } = {
+    layer: layerConfig.darkLayer && isDarkTheme ? layerConfig.darkLayer : layerConfig.layer,
+    apikey: apiKeys[layerConfig.apiKeyId],
+    ...tileOptions[layerId]
+  };
+  new L.OSM[layer](options).addTo(map);
 
   if (args.marker) {
-    L.marker(args.marker.split(','), {icon: L.icon({
+    L.marker(args.marker.split(","), { icon: L.icon({
       iconUrl: <%= asset_path('leaflet/dist/images/marker-icon.png').to_json %>,
       iconSize: new L.Point(25, 41),
       iconAnchor: new L.Point(12, 41),
       shadowUrl: <%= asset_path('leaflet/dist/images/marker-shadow.png').to_json %>,
       shadowSize: new L.Point(41, 41)
-    })}).addTo(map);
+    }) }).addTo(map);
   }
 
-  if (args.bbox) {
-    var bbox = args.bbox.split(',');
-    map.fitBounds([L.latLng(bbox[1], bbox[0]),
-                   L.latLng(bbox[3], bbox[2])]);
-  } else {
-    map.fitWorld();
-  }
+  const bbox = (args.bbox || "-180,-90,180,90").split(",");
+  map.fitBounds([[bbox[1], bbox[0]], [bbox[3], bbox[2]]]);
 
   map.addControl(new L.Control.OSMReportAProblem());
 };
 
 L.Control.OSMReportAProblem = L.Control.Attribution.extend({
   options: {
-    position: 'bottomright',
-    prefix: '<a href="https://www.openstreetmap.org/fixthemap?lat={x}&lon={y}&zoom={z}" target="_blank">'+I18n.t('javascripts.embed.report_problem')+'</a>'
+    position: "bottomright",
+    prefix: `<a href="https://www.openstreetmap.org/fixthemap?lat={x}&lon={y}&zoom={z}" target="_blank">${I18n.t("javascripts.embed.report_problem")}</a>`
   },
 
   onAdd: function (map) {
     var container = L.Control.Attribution.prototype.onAdd.call(this, map);
 
-    map.on('moveend', this._update, this);
+    map.on("moveend", this._update, this);
 
     return container;
   },
@@ -92,8 +92,8 @@ L.Control.OSMReportAProblem = L.Control.Attribution.extend({
 
     this._container.innerHTML =
       this._container.innerHTML
-        .replace('{x}', this._map.getCenter().lat)
-        .replace('{y}', this._map.getCenter().lng)
-        .replace('{z}', this._map.getZoom());
+        .replace("{x}", this._map.getCenter().lat)
+        .replace("{y}", this._map.getCenter().lng)
+        .replace("{z}", this._map.getZoom());
   }
 });
index 56495b31a31c87fd18ca8b864ac492b84f1f0240..d61191fb43ab3e669417c7dd2c2246a65b969501 100644 (file)
@@ -173,7 +173,7 @@ $(document).ready(function () {
   var expiry = new Date();
   expiry.setYear(expiry.getFullYear() + 10);
 
-  map.on("moveend layeradd layerremove", function () {
+  map.on("moveend baselayerchange overlayadd overlayremove", function () {
     updateLinks(
       map.getCenter().wrap(),
       map.getZoom(),
@@ -205,7 +205,7 @@ $(document).ready(function () {
   });
 
   if (OSM.MATOMO) {
-    map.on("layeradd", function (e) {
+    map.on("baselayerchange overlayadd", function (e) {
       if (e.layer.options) {
         var goal = OSM.MATOMO.goals[e.layer.options.layerId];
 
index ea284f29b97d87f0ee2508697b6afb1228c8a5b2..51ec87723b0a18ecc871a0bdd5d5a8993c6a7562 100644 (file)
@@ -4,13 +4,10 @@ OSM.initializeContextMenu = function (map) {
   map.contextmenu.addItem({
     text: I18n.t("javascripts.context.directions_from"),
     callback: function directionsFromHere(e) {
-      var precision = OSM.zoomPrecision(map.getZoom()),
-          latlng = e.latlng.wrap(),
-          lat = latlng.lat.toFixed(precision),
-          lng = latlng.lng.toFixed(precision);
+      const latlng = OSM.cropLocation(e.latlng, map.getZoom());
 
       OSM.router.route("/directions?" + Qs.stringify({
-        from: lat + "," + lng,
+        from: latlng.join(","),
         to: getDirectionsEndpointCoordinatesFromInput($("#route_to"))
       }));
     }
@@ -19,14 +16,11 @@ OSM.initializeContextMenu = function (map) {
   map.contextmenu.addItem({
     text: I18n.t("javascripts.context.directions_to"),
     callback: function directionsToHere(e) {
-      var precision = OSM.zoomPrecision(map.getZoom()),
-          latlng = e.latlng.wrap(),
-          lat = latlng.lat.toFixed(precision),
-          lng = latlng.lng.toFixed(precision);
+      const latlng = OSM.cropLocation(e.latlng, map.getZoom());
 
       OSM.router.route("/directions?" + Qs.stringify({
         from: getDirectionsEndpointCoordinatesFromInput($("#route_from")),
-        to: lat + "," + lng
+        to: latlng.join(",")
       }));
     }
   });
@@ -34,36 +28,27 @@ OSM.initializeContextMenu = function (map) {
   map.contextmenu.addItem({
     text: I18n.t("javascripts.context.add_note"),
     callback: function addNoteHere(e) {
-      var precision = OSM.zoomPrecision(map.getZoom()),
-          latlng = e.latlng.wrap(),
-          lat = latlng.lat.toFixed(precision),
-          lng = latlng.lng.toFixed(precision);
+      const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());
 
-      OSM.router.route("/note/new?lat=" + lat + "&lon=" + lng);
+      OSM.router.route("/note/new?" + Qs.stringify({ lat, lon }));
     }
   });
 
   map.contextmenu.addItem({
     text: I18n.t("javascripts.context.show_address"),
     callback: function describeLocation(e) {
-      var precision = OSM.zoomPrecision(map.getZoom()),
-          latlng = e.latlng.wrap(),
-          lat = latlng.lat.toFixed(precision),
-          lng = latlng.lng.toFixed(precision);
+      const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom()).map(encodeURIComponent);
 
-      OSM.router.route("/search?lat=" + encodeURIComponent(lat) + "&lon=" + encodeURIComponent(lng));
+      OSM.router.route("/search?" + Qs.stringify({ lat, lon }));
     }
   });
 
   map.contextmenu.addItem({
     text: I18n.t("javascripts.context.query_features"),
     callback: function queryFeatures(e) {
-      var precision = OSM.zoomPrecision(map.getZoom()),
-          latlng = e.latlng.wrap(),
-          lat = latlng.lat.toFixed(precision),
-          lng = latlng.lng.toFixed(precision);
+      const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());
 
-      OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
+      OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
     }
   });
 
index 7fe4b4ea7f4803053f816d2f9d7986817e798aab..30d499ad731707b404dc1ca3448af2e215cfb7d7 100644 (file)
@@ -34,11 +34,15 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
   };
 
   function markerDragListener(e) {
-    var latlng = convertLatLngToZoomPrecision(e.target.getLatLng());
+    const latlng = L.latLng(OSM.cropLocation(e.target.getLatLng(), map.getZoom()));
+
+    if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
+    delete endpoint.geocodeRequest;
 
     setLatLng(latlng);
     setInputValueFromLatLng(latlng);
     endpoint.value = input.val();
+    if (e.type === "dragend") getReverseGeocode();
     dragCallback(e.type === "drag");
   }
 
@@ -52,26 +56,54 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
     endpoint.setValue(value);
   }
 
-  endpoint.setValue = function (value, latlng) {
+  endpoint.setValue = function (value) {
+    if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
+    delete endpoint.geocodeRequest;
+    input.removeClass("is-invalid");
+
+    var coordinatesMatch = value.match(/^\s*([+-]?\d+(?:\.\d*)?)(?:\s+|\s*[/,]\s*)([+-]?\d+(?:\.\d*)?)\s*$/);
+    var latlng = coordinatesMatch && L.latLng(coordinatesMatch[1], coordinatesMatch[2]);
+
+    if (latlng && endpoint.cachedReverseGeocode && endpoint.cachedReverseGeocode.latlng.equals(latlng)) {
+      setLatLng(latlng);
+      if (endpoint.cachedReverseGeocode.notFound) {
+        endpoint.value = value;
+        input.addClass("is-invalid");
+      } else {
+        endpoint.value = endpoint.cachedReverseGeocode.value;
+      }
+      input.val(endpoint.value);
+      changeCallback();
+      return;
+    }
+
     endpoint.value = value;
     removeLatLng();
-    input.removeClass("is-invalid");
     input.val(value);
 
     if (latlng) {
       setLatLng(latlng);
       setInputValueFromLatLng(latlng);
+      getReverseGeocode();
       changeCallback();
     } else if (endpoint.value) {
       getGeocode();
     }
   };
 
+  endpoint.swapCachedReverseGeocodes = function (otherEndpoint) {
+    var g0 = endpoint.cachedReverseGeocode;
+    var g1 = otherEndpoint.cachedReverseGeocode;
+    delete endpoint.cachedReverseGeocode;
+    delete otherEndpoint.cachedReverseGeocode;
+    if (g0) otherEndpoint.cachedReverseGeocode = g0;
+    if (g1) endpoint.cachedReverseGeocode = g1;
+  };
+
   function getGeocode() {
     var viewbox = map.getBounds().toBBoxString(); // <sw lon>,<sw lat>,<ne lon>,<ne lat>
     var geocodeUrl = OSM.NOMINATIM_URL + "search?q=" + encodeURIComponent(endpoint.value) + "&format=json&viewbox=" + viewbox;
 
-    if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
     endpoint.geocodeRequest = $.getJSON(geocodeUrl, function (json) {
       delete endpoint.geocodeRequest;
       if (json.length === 0) {
@@ -82,12 +114,30 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
 
       setLatLng(L.latLng(json[0]));
 
+      endpoint.value = json[0].display_name;
       input.val(json[0].display_name);
 
       changeCallback();
     });
   }
 
+  function getReverseGeocode() {
+    var latlng = endpoint.latlng.clone();
+    var reverseGeocodeUrl = OSM.NOMINATIM_URL + "reverse?lat=" + latlng.lat + "&lon=" + latlng.lng + "&format=json";
+
+    endpoint.geocodeRequest = $.getJSON(reverseGeocodeUrl, function (json) {
+      delete endpoint.geocodeRequest;
+      if (!json || !json.display_name) {
+        endpoint.cachedReverseGeocode = { latlng: latlng, notFound: true };
+        return;
+      }
+
+      endpoint.value = json.display_name;
+      input.val(json.display_name);
+      endpoint.cachedReverseGeocode = { latlng: latlng, value: endpoint.value };
+    });
+  }
+
   function setLatLng(ll) {
     input
       .attr("data-lat", ll.lat)
@@ -109,11 +159,5 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
     input.val(latlng.lat + ", " + latlng.lng);
   }
 
-  function convertLatLngToZoomPrecision(latlng) {
-    var precision = OSM.zoomPrecision(map.getZoom());
-
-    return L.latLng(latlng.lat.toFixed(precision), latlng.lng.toFixed(precision));
-  }
-
   return endpoint;
 };
index 391c1f9315c7fe945d822d49380f9578729e79c0..0847318cf9440ac49d1768710a5f4a6a5db5dfe4 100644 (file)
@@ -65,10 +65,9 @@ OSM.Directions = function (map) {
     if (coordTo) {
       routeTo = coordTo.lat + "," + coordTo.lng;
     }
+    endpoints[0].swapCachedReverseGeocodes(endpoints[1]);
 
     OSM.router.route("/directions?" + Qs.stringify({
-      from: $("#route_to").val(),
-      to: $("#route_from").val(),
       route: routeTo + ";" + routeFrom
     }));
   });
@@ -116,18 +115,14 @@ OSM.Directions = function (map) {
     // Cancel any route that is already in progress
     if (routeRequest) routeRequest.abort();
 
-    var o = endpoints[0].latlng,
-        d = endpoints[1].latlng;
+    const points = endpoints.map(p => p.latlng);
 
-    if (!o || !d) return;
+    if (!points[0] || !points[1]) return;
     $("header").addClass("closed");
 
-    var precision = OSM.zoomPrecision(map.getZoom());
-
     OSM.router.replace("/directions?" + Qs.stringify({
       engine: chosenEngine.id,
-      route: o.lat.toFixed(precision) + "," + o.lng.toFixed(precision) + ";" +
-             d.lat.toFixed(precision) + "," + d.lng.toFixed(precision)
+      route: points.map(p => OSM.cropLocation(p, map.getZoom()).join()).join(";")
     }));
 
     // copy loading item to sidebar and display it. we copy it, rather than
@@ -136,7 +131,7 @@ OSM.Directions = function (map) {
     $("#sidebar_content").html($(".directions_form .loader_copy").html());
     map.setSidebarOverlaid(false);
 
-    routeRequest = chosenEngine.getRoute([o, d], function (err, route) {
+    routeRequest = chosenEngine.getRoute(points, function (err, route) {
       routeRequest = null;
 
       if (err) {
@@ -285,19 +280,15 @@ OSM.Directions = function (map) {
       var pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present
       pt.y += 20;
       var ll = map.containerPointToLatLng(pt);
-      var precision = OSM.zoomPrecision(map.getZoom());
-      var value = ll.lat.toFixed(precision) + ", " + ll.lng.toFixed(precision);
-      var llWithPrecision = L.latLng(ll.lat.toFixed(precision), ll.lng.toFixed(precision));
-      endpoints[type === "from" ? 0 : 1].setValue(value, llWithPrecision);
+      const llWithPrecision = OSM.cropLocation(ll, map.getZoom());
+      endpoints[type === "from" ? 0 : 1].setValue(llWithPrecision.join(", "));
     });
 
     endpoints[0].enable();
     endpoints[1].enable();
 
     var params = Qs.parse(location.search.substring(1)),
-        route = (params.route || "").split(";"),
-        from = route[0] && L.latLng(route[0].split(",")),
-        to = route[1] && L.latLng(route[1].split(","));
+        route = (params.route || "").split(";");
 
     if (params.engine) {
       var engineIndex = findEngine(params.engine);
@@ -307,10 +298,10 @@ OSM.Directions = function (map) {
       }
     }
 
-    endpoints[0].setValue(params.from || "", from);
-    endpoints[1].setValue(params.to || "", to);
+    endpoints[0].setValue(params.from || route[0] || "");
+    endpoints[1].setValue(params.to || route[1] || "");
 
-    map.setSidebarOverlaid(!from || !to);
+    map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
   };
 
   page.load = function () {
index a953920f895d8fe62cefafdd3927f90f040ea62d..3b23b9cbf3abba23e53375f89cabf95eeea2d9b3 100644 (file)
@@ -36,16 +36,16 @@ OSM.Export = function (map) {
   }
 
   function setBounds(bounds) {
-    var precision = OSM.zoomPrecision(map.getZoom());
-    $("#minlon").val(bounds.getWest().toFixed(precision));
-    $("#minlat").val(bounds.getSouth().toFixed(precision));
-    $("#maxlon").val(bounds.getEast().toFixed(precision));
-    $("#maxlat").val(bounds.getNorth().toFixed(precision));
+    const truncated = [bounds.getSouthWest(), bounds.getNorthEast()]
+      .map(c => OSM.cropLocation(c, map.getZoom()));
+    $("#minlon").val(truncated[0][1]);
+    $("#minlat").val(truncated[0][0]);
+    $("#maxlon").val(truncated[1][1]);
+    $("#maxlat").val(truncated[1][0]);
 
     $("#export_overpass").attr("href",
                                "https://overpass-api.de/api/map?bbox=" +
-                               $("#minlon").val() + "," + $("#minlat").val() + "," +
-                               $("#maxlon").val() + "," + $("#maxlat").val());
+                               truncated.map(p => p.reverse()).join());
   }
 
   function validateControls() {
index 0a996f0c70c27244e7769f765f4586b425a9879c..dc522af418d809f6e16c90ccf5b91a67bf211494 100644 (file)
@@ -1,6 +1,6 @@
 OSM.initializeDataLayer = function (map) {
-  var loadedBounds;
-  var dataLayer = map.dataLayer;
+  let dataLoader, loadedBounds;
+  const dataLayer = map.dataLayer;
 
   dataLayer.setStyle({
     way: {
@@ -25,18 +25,18 @@ OSM.initializeDataLayer = function (map) {
     onSelect(e.layer);
   });
 
-  map.on("layeradd", function (e) {
-    if (e.layer === dataLayer) {
-      map.on("moveend", updateData);
-      updateData();
-    }
+  dataLayer.on("add", function () {
+    map.fire("overlayadd", { layer: this });
+    map.on("moveend", updateData);
+    updateData();
   });
 
-  map.on("layerremove", function (e) {
-    if (e.layer === dataLayer) {
-      map.off("moveend", updateData);
-      $("#browse_status").empty();
-    }
+  dataLayer.on("remove", function () {
+    if (dataLoader) dataLoader.abort();
+    dataLoader = null;
+    map.off("moveend", updateData);
+    $("#browse_status").empty();
+    map.fire("overlayremove", { layer: this });
   });
 
   function updateData() {
@@ -46,7 +46,7 @@ OSM.initializeDataLayer = function (map) {
     }
   }
 
-  function displayFeatureWarning(count, limit, add, cancel) {
+  function displayFeatureWarning(num_features, add, cancel) {
     $("#browse_status").html(
       $("<div class='p-3'>").append(
         $("<div class='d-flex'>").append(
@@ -57,13 +57,25 @@ OSM.initializeDataLayer = function (map) {
               .attr("aria-label", I18n.t("javascripts.close"))
               .click(cancel))),
         $("<p class='alert alert-warning'>")
-          .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })),
+          .text(I18n.t("browse.start_rjs.feature_warning", { num_features })),
         $("<input type='submit' class='btn btn-primary d-block mx-auto'>")
           .val(I18n.t("browse.start_rjs.load_data"))
           .click(add)));
   }
 
-  var dataLoader;
+  function displayLoadError(message, close) {
+    $("#browse_status").html(
+      $("<div class='p-3'>").append(
+        $("<div class='d-flex'>").append(
+          $("<h2 class='flex-grow-1 text-break'>")
+            .text(I18n.t("browse.start_rjs.load_data")),
+          $("<div>").append(
+            $("<button type='button' class='btn-close'>")
+              .attr("aria-label", I18n.t("javascripts.close"))
+              .click(close))),
+        $("<p class='alert alert-warning'>")
+          .text(I18n.t("browse.start_rjs.feature_error", { message: message }))));
+  }
 
   function getData() {
     var bounds = map.getBounds();
@@ -71,27 +83,19 @@ OSM.initializeDataLayer = function (map) {
 
     /*
      * Modern browsers are quite happy showing far more than 100 features in
-     * the data browser, so increase the limit to 2000 by default, but keep
-     * it restricted to 500 for IE8 and 100 for older IEs.
+     * the data browser, so increase the limit to 4000 by default.
      */
-    var maxFeatures = 2000;
-
-    /*@cc_on
-      if (navigator.appVersion < 8) {
-        maxFeatures = 100;
-      } else if (navigator.appVersion < 9) {
-        maxFeatures = 500;
-      }
-    @*/
+    const maxFeatures = 4000;
 
     if (dataLoader) dataLoader.abort();
 
     dataLoader = $.ajax({
       url: url,
-      success: function (xml) {
+      dataType: "json",
+      success: function (data) {
         dataLayer.clearLayers();
 
-        var features = dataLayer.buildFeatures(xml);
+        var features = dataLayer.buildFeatures(data);
 
         function addFeatures() {
           $("#browse_status").empty();
@@ -106,7 +110,7 @@ OSM.initializeDataLayer = function (map) {
         if (features.length < maxFeatures) {
           addFeatures();
         } else {
-          displayFeatureWarning(features.length, maxFeatures, addFeatures, cancelAddFeatures);
+          displayFeatureWarning(features.length, addFeatures, cancelAddFeatures);
         }
 
         if (map._objectLayer) {
@@ -114,6 +118,22 @@ OSM.initializeDataLayer = function (map) {
         }
 
         dataLoader = null;
+      },
+      error: function (XMLHttpRequest, textStatus) {
+        dataLoader = null;
+        if (textStatus === "abort") { return; }
+
+        function closeError() {
+          $("#browse_status").empty();
+        }
+
+        if (XMLHttpRequest.status === 400 && XMLHttpRequest.responseText) {
+          displayLoadError(XMLHttpRequest.responseText, closeError);
+        } else if (XMLHttpRequest.statusText) {
+          displayLoadError(XMLHttpRequest.statusText, closeError);
+        } else {
+          displayLoadError(String(XMLHttpRequest.status), closeError);
+        }
       }
     });
   }
index 4676aa425ea312b4f0a098d993fd306909c250d6..24bf969b3380581e9e3b07f35873b36a9fe6a170 100644 (file)
@@ -1,6 +1,7 @@
 OSM.initializeNotesLayer = function (map) {
-  var noteLayer = map.noteLayer,
-      notes = {};
+  let noteLoader;
+  const noteLayer = map.noteLayer;
+  let notes = {};
 
   var noteIcons = {
     "new": L.icon({
@@ -23,10 +24,14 @@ OSM.initializeNotesLayer = function (map) {
   noteLayer.on("add", () => {
     loadNotes();
     map.on("moveend", loadNotes);
+    map.fire("overlayadd", { layer: noteLayer });
   }).on("remove", () => {
+    if (noteLoader) noteLoader.abort();
+    noteLoader = null;
     map.off("moveend", loadNotes);
     noteLayer.clearLayers();
     notes = {};
+    map.fire("overlayremove", { layer: noteLayer });
   }).on("click", function (e) {
     if (e.layer.id) {
       OSM.router.route("/note/" + e.layer.id);
@@ -38,9 +43,16 @@ OSM.initializeNotesLayer = function (map) {
     if (marker) {
       marker.setIcon(noteIcons[feature.properties.status]);
     } else {
+      let title;
+      const description = feature.properties.comments[0];
+
+      if (description?.action === "opened") {
+        title = description.text;
+      }
+
       marker = L.marker(feature.geometry.coordinates.reverse(), {
         icon: noteIcons[feature.properties.status],
-        title: feature.properties.comments[0].text,
+        title,
         opacity: 0.8,
         interactive: true
       });
@@ -54,8 +66,6 @@ OSM.initializeNotesLayer = function (map) {
     return marker.id;
   };
 
-  var noteLoader;
-
   function loadNotes() {
     var bounds = map.getBounds();
     var size = bounds.getSize();
index 09e4de31e0c6e78faf57444534b55fa3c5653292..672f650fa2145ee8832beead533b5a9161a61765 100644 (file)
@@ -272,18 +272,18 @@ OSM.Query = function (map) {
   function queryOverpass(lat, lng) {
     var latlng = L.latLng(lat, lng).wrap(),
         bounds = map.getBounds().wrap(),
-        precision = OSM.zoomPrecision(map.getZoom()),
-        bbox = bounds.getSouth().toFixed(precision) + "," +
-               bounds.getWest().toFixed(precision) + "," +
-               bounds.getNorth().toFixed(precision) + "," +
-               bounds.getEast().toFixed(precision),
-        radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
-        around = "around:" + radius + "," + lat + "," + lng,
-        nodes = "node(" + around + ")",
-        ways = "way(" + around + ")",
-        relations = "relation(" + around + ")",
-        nearby = "(" + nodes + ";" + ways + ";);out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
-        isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
+        zoom = map.getZoom(),
+        bbox = [bounds.getSouthWest(), bounds.getNorthEast()]
+          .map(c => OSM.cropLocation(c, zoom))
+          .join(),
+        geombbox = "geom(" + bbox + ");",
+        radius = 10 * Math.pow(1.5, 19 - zoom),
+        around = "(around:" + radius + "," + lat + "," + lng + ")",
+        nodes = "node" + around,
+        ways = "way" + around,
+        relations = "relation" + around,
+        nearby = "(" + nodes + ";" + ways + ";);out tags " + geombbox + relations + ";out " + geombbox,
+        isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids " + geombbox + "relation(pivot.a);out tags bb;";
 
     $("#sidebar_content .query-intro")
       .hide();
@@ -299,12 +299,9 @@ OSM.Query = function (map) {
   }
 
   function clickHandler(e) {
-    var precision = OSM.zoomPrecision(map.getZoom()),
-        latlng = e.latlng.wrap(),
-        lat = latlng.lat.toFixed(precision),
-        lng = latlng.lng.toFixed(precision);
+    const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());
 
-    OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
+    OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
   }
 
   function enableQueryMode() {
index 2bfbb2e1c6d4fa9bc18c7264cdbb65651785899a..7f93cca69a9257bbfa714fe2489a785cfdd6d4ef 100644 (file)
@@ -33,12 +33,9 @@ OSM.Search = function (map) {
   $(".describe_location").on("click", function (e) {
     e.preventDefault();
     $("header").addClass("closed");
-    var center = map.getCenter().wrap(),
-        precision = OSM.zoomPrecision(map.getZoom()),
-        lat = center.lat.toFixed(precision),
-        lng = center.lng.toFixed(precision);
+    const [lat, lon] = OSM.cropLocation(map.getCenter(), map.getZoom()).map(encodeURIComponent);
 
-    OSM.router.route("/search?lat=" + encodeURIComponent(lat) + "&lon=" + encodeURIComponent(lng));
+    OSM.router.route("/search?" + Qs.stringify({ lat, lon }));
   });
 
   $("#sidebar_content")
index 35b958c7aaa097652ccebf1f392087c8a31801b7..3f577b532d3ba707dbf487277ce17d2bb1592883 100644 (file)
@@ -61,18 +61,16 @@ L.OSM.layers = function (options) {
 
       input.on("click", function () {
         layers.forEach(function (other) {
-          if (other === layer) {
-            map.addLayer(other);
-          } else {
+          if (other !== layer) {
             map.removeLayer(other);
           }
         });
-        map.fire("baselayerchange", { layer: layer });
+        map.addLayer(layer);
       });
 
       item.on("dblclick", toggle);
 
-      map.on("layeradd layerremove", function () {
+      map.on("baselayerchange", function () {
         input.prop("checked", map.hasLayer(layer));
       });
     });
@@ -121,10 +119,9 @@ L.OSM.layers = function (options) {
           } else {
             map.removeLayer(layer);
           }
-          map.fire("overlaylayerchange", { layer: layer });
         });
 
-        map.on("layeradd layerremove", function () {
+        map.on("overlayadd overlayremove", function () {
           input.prop("checked", map.hasLayer(layer));
         });
 
index 7929ea0ac7f33545f34c2a73de64150b1ed0f231..91d9efbde9c708999428a8f4d1355fb874d2b348 100644 (file)
@@ -40,6 +40,9 @@ L.OSM.Map = L.Map.extend({
       }
 
       const layer = new layerConstructor(layerOptions);
+      layer.on("add", () => {
+        this.fire("baselayerchange", { layer: layer });
+      });
       this.baseLayers.push(layer);
     }
 
@@ -53,8 +56,14 @@ L.OSM.Map = L.Map.extend({
       pane: "overlayPane",
       code: "G"
     });
+    this.gpsLayer.on("add", () => {
+      this.fire("overlayadd", { layer: this.gpsLayer });
+    }).on("remove", () => {
+      this.fire("overlayremove", { layer: this.gpsLayer });
+    });
+
 
-    this.on("layeradd", function (event) {
+    this.on("baselayerchange", function (event) {
       if (this.baseLayers.indexOf(event.layer) >= 0) {
         this.setMaxZoom(event.layer.options.maxZoom);
       }
@@ -106,19 +115,19 @@ L.OSM.Map = L.Map.extend({
   },
 
   updateLayers: function (layerParam) {
-    var layers = layerParam || "M",
-        layersAdded = "";
-
-    for (var i = this.baseLayers.length - 1; i >= 0; i--) {
-      if (layers.indexOf(this.baseLayers[i].options.code) >= 0) {
-        this.addLayer(this.baseLayers[i]);
-        layersAdded = layersAdded + this.baseLayers[i].options.code;
-      } else if (i === 0 && layersAdded === "") {
-        this.addLayer(this.baseLayers[i]);
-      } else {
-        this.removeLayer(this.baseLayers[i]);
+    const oldBaseLayer = this.getMapBaseLayer();
+    let newBaseLayer;
+
+    for (const layer of this.baseLayers) {
+      if (!newBaseLayer || layerParam.includes(layer.options.code)) {
+        newBaseLayer = layer;
       }
     }
+
+    if (newBaseLayer !== oldBaseLayer) {
+      if (oldBaseLayer) this.removeLayer(oldBaseLayer);
+      if (newBaseLayer) this.addLayer(newBaseLayer);
+    }
   },
 
   getLayersCode: function () {
@@ -143,13 +152,10 @@ L.OSM.Map = L.Map.extend({
   },
 
   getUrl: function (marker) {
-    var precision = OSM.zoomPrecision(this.getZoom()),
-        params = {};
+    const params = {};
 
     if (marker && this.hasLayer(marker)) {
-      var latLng = marker.getLatLng().wrap();
-      params.mlat = latLng.lat.toFixed(precision);
-      params.mlon = latLng.lng.toFixed(precision);
+      [params.mlat, params.mlon] = OSM.cropLocation(marker.getLatLng(), this.getZoom());
     }
 
     var url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
@@ -227,21 +233,14 @@ L.OSM.Map = L.Map.extend({
   },
 
   getGeoUri: function (marker) {
-    var precision = OSM.zoomPrecision(this.getZoom()),
-        latLng,
-        params = {};
+    let latLng = this.getCenter();
+    const zoom = this.getZoom();
 
     if (marker && this.hasLayer(marker)) {
-      latLng = marker.getLatLng().wrap();
-    } else {
-      latLng = this.getCenter();
+      latLng = marker.getLatLng();
     }
 
-    params.lat = latLng.lat.toFixed(precision);
-    params.lon = latLng.lng.toFixed(precision);
-    params.zoom = this.getZoom();
-
-    return "geo:" + params.lat + "," + params.lon + "?z=" + params.zoom;
+    return `geo:${OSM.cropLocation(latLng, zoom).join(",")}?z=${zoom}`;
   },
 
   addObject: function (object, callback) {
@@ -297,12 +296,13 @@ L.OSM.Map = L.Map.extend({
       }
 
       if (callback) callback(this._objectLayer.getBounds());
+      this.fire("overlayadd", { layer: this._objectLayer });
     } else { // element handled by L.OSM.DataLayer
       var map = this;
       this._objectLoader = $.ajax({
         url: OSM.apiUrl(object),
-        dataType: "xml",
-        success: function (xml) {
+        dataType: "json",
+        success: function (data) {
           map._object = object;
 
           map._objectLayer = new L.OSM.DataLayer(null, {
@@ -324,10 +324,11 @@ L.OSM.Map = L.Map.extend({
             }
           };
 
-          map._objectLayer.addData(xml);
+          map._objectLayer.addData(data);
           map._objectLayer.addTo(map);
 
           if (callback) callback(map._objectLayer.getBounds());
+          map.fire("overlayadd", { layer: map._objectLayer });
         }
       });
     }
@@ -337,6 +338,7 @@ L.OSM.Map = L.Map.extend({
     this._object = null;
     if (this._objectLoader) this._objectLoader.abort();
     if (this._objectLayer) this.removeLayer(this._objectLayer);
+    this.fire("overlayremove", { layer: this._objectLayer });
   },
 
   getState: function () {
index 7713a6b147228d66f2ab1d426188dd6740af7a53..1eed2151a9ed3a9adb7d4fa7e63dc63f1458a04d 100644 (file)
@@ -269,7 +269,7 @@ L.OSM.share = function (options) {
 
     marker.on("dragend", movedMarker);
     map.on("move", movedMap);
-    map.on("moveend layeradd layerremove", update);
+    map.on("moveend baselayerchange overlayadd overlayremove", update);
 
     $ui
       .on("show", shown)
index e9c09c79f9ae995575030ad9231167c64983f974..4eebbe871f85e85bbd76f7e41c10fcccc1f72281 100644 (file)
@@ -58,16 +58,16 @@ OSM = {
     return url;
   },
 
-  params: function(search) {
+  params: function (search) {
     var params = {};
 
-    search = (search || window.location.search).replace('?', '').split(/&|;/);
+    search = (search || window.location.search).replace("?", "").split(/&|;/);
 
     for (var i = 0; i < search.length; ++i) {
       var pair = search[i],
-        j = pair.indexOf('='),
-        key = pair.slice(0, j),
-        val = pair.slice(++j);
+          j = pair.indexOf("="),
+          key = pair.slice(0, j),
+          val = pair.slice(++j);
 
       try {
         params[key] = decodeURIComponent(val);
@@ -80,7 +80,7 @@ OSM = {
   },
 
   mapParams: function (search) {
-    var params = OSM.params(search), mapParams = {}, loc, match;
+    var params = OSM.params(search), mapParams = {}, match;
 
     if (params.mlon && params.mlat) {
       mapParams.marker = true;
@@ -90,24 +90,26 @@ OSM = {
 
     // Old-style object parameters; still in use for edit links e.g. /edit?way=1234
     if (params.node) {
-      mapParams.object = {type: 'node', id: parseInt(params.node)};
+      mapParams.object = { type: "node", id: parseInt(params.node, 10) };
     } else if (params.way) {
-      mapParams.object = {type: 'way', id: parseInt(params.way)};
+      mapParams.object = { type: "way", id: parseInt(params.way, 10) };
     } else if (params.relation) {
-      mapParams.object = {type: 'relation', id: parseInt(params.relation)};
+      mapParams.object = { type: "relation", id: parseInt(params.relation, 10) };
     } else if (params.note) {
-      mapParams.object = {type: 'note', id: parseInt(params.note)};
+      mapParams.object = { type: "note", id: parseInt(params.note, 10) };
     }
 
     var hash = OSM.parseHash(location.hash);
 
+    const loc = Cookies.get("_osm_location")?.split("|");
+
     // Decide on a map starting position. Various ways of doing this.
     if (hash.center) {
       mapParams.lon = hash.center.lng;
       mapParams.lat = hash.center.lat;
       mapParams.zoom = hash.zoom;
     } else if (params.bbox) {
-      var bbox = params.bbox.split(',');
+      var bbox = params.bbox.split(",");
       mapParams.bounds = L.latLngBounds(
         [parseFloat(bbox[1]), parseFloat(bbox[0])],
         [parseFloat(bbox[3]), parseFloat(bbox[2])]);
@@ -118,29 +120,27 @@ OSM = {
     } else if (params.mlon && params.mlat) {
       mapParams.lon = parseFloat(params.mlon);
       mapParams.lat = parseFloat(params.mlat);
-      mapParams.zoom = parseInt(params.zoom || 12);
-    } else if (loc = Cookies.get('_osm_location')) {
-      loc = loc.split("|");
+      mapParams.zoom = parseInt(params.zoom || 12, 10);
+    } else if (loc) {
       mapParams.lon = parseFloat(loc[0]);
       mapParams.lat = parseFloat(loc[1]);
-      mapParams.zoom = parseInt(loc[2]);
+      mapParams.zoom = parseInt(loc[2], 10);
     } else if (OSM.home) {
       mapParams.lon = OSM.home.lon;
       mapParams.lat = OSM.home.lat;
       mapParams.zoom = 10;
     } else if (OSM.location) {
       mapParams.bounds = L.latLngBounds(
-        [OSM.location.minlat,
-         OSM.location.minlon],
-        [OSM.location.maxlat,
-         OSM.location.maxlon]);
+        [OSM.location.minlat, OSM.location.minlon],
+        [OSM.location.maxlat, OSM.location.maxlon]
+      );
     } else {
       mapParams.lon = -0.1;
       mapParams.lat = 51.5;
-      mapParams.zoom = parseInt(params.zoom || 5);
+      mapParams.zoom = parseInt(params.zoom || 5, 10);
     }
 
-    mapParams.layers = hash.layers || (loc && loc[3]) || '';
+    mapParams.layers = hash.layers || (loc && loc[3]) || "";
 
     var scale = parseFloat(params.scale);
     if (scale > 0) {
@@ -150,20 +150,20 @@ OSM = {
     return mapParams;
   },
 
-  parseHash: function(hash) {
+  parseHash: function (hash) {
     var args = {};
 
-    var i = hash.indexOf('#');
+    var i = hash.indexOf("#");
     if (i < 0) {
       return args;
     }
 
     hash = Qs.parse(hash.slice(i + 1));
 
-    var map = (hash.map || '').split('/'),
-      zoom = parseInt(map[0], 10),
-      lat = parseFloat(map[1]),
-      lon = parseFloat(map[2]);
+    var map = (hash.map || "").split("/"),
+        zoom = parseInt(map[0], 10),
+        lat = parseFloat(map[1]),
+        lon = parseFloat(map[2]);
 
     if (!isNaN(zoom) && !isNaN(lat) && !isNaN(lon)) {
       args.center = new L.LatLng(lat, lon);
@@ -177,7 +177,7 @@ OSM = {
     return args;
   },
 
-  formatHash: function(args) {
+  formatHash: function (args) {
     var center, zoom, layers;
 
     if (args instanceof L.Map) {
@@ -187,44 +187,45 @@ OSM = {
     } else {
       center = args.center || L.latLng(args.lat, args.lon);
       zoom = args.zoom;
-      layers = args.layers || '';
+      layers = args.layers || "";
     }
 
-    center = center.wrap();
-    layers = layers.replace('M', '');
+    layers = layers.replace("M", "");
 
-    var precision = OSM.zoomPrecision(zoom),
-      hash = '#map=' + zoom +
-        '/' + center.lat.toFixed(precision) +
-        '/' + center.lng.toFixed(precision);
+    let hash = "#map=" + [zoom, ...OSM.cropLocation(center, zoom)].join("/");
 
     if (layers) {
-      hash += '&layers=' + layers;
+      hash += "&layers=" + layers;
     }
 
     return hash;
   },
 
-  zoomPrecision: function(zoom) {
+  zoomPrecision: function (zoom) {
     var pixels = Math.pow(2, 8 + zoom);
     var degrees = 180;
     return Math.ceil(Math.log10(pixels / degrees));
   },
 
-  locationCookie: function(map) {
-    var center = map.getCenter().wrap(),
-      zoom = map.getZoom(),
-      precision = OSM.zoomPrecision(zoom);
-    return [center.lng.toFixed(precision), center.lat.toFixed(precision), zoom, map.getLayersCode()].join('|');
+  cropLocation: function (latLng, zoom) {
+    const precision = OSM.zoomPrecision(zoom),
+          wrapped = latLng.wrap();
+    return [wrapped.lat, wrapped.lng].map(c => c.toFixed(precision));
+  },
+
+  locationCookie: function (map) {
+    const zoom = map.getZoom(),
+          center = OSM.cropLocation(map.getCenter(), zoom).reverse();
+    return [...center, zoom, map.getLayersCode()].join("|");
   },
 
-  distance: function(latlng1, latlng2) {
+  distance: function (latlng1, latlng2) {
     var lat1 = latlng1.lat * Math.PI / 180,
-      lng1 = latlng1.lng * Math.PI / 180,
-      lat2 = latlng2.lat * Math.PI / 180,
-      lng2 = latlng2.lng * Math.PI / 180,
-      latdiff = lat2 - lat1,
-      lngdiff = lng2 - lng1;
+        lng1 = latlng1.lng * Math.PI / 180,
+        lat2 = latlng2.lat * Math.PI / 180,
+        lng2 = latlng2.lng * Math.PI / 180,
+        latdiff = lat2 - lat1,
+        lngdiff = lng2 - lng1;
 
     return 6372795 * 2 * Math.asin(
       Math.sqrt(
index c4e52417004c5c50871f23fe28edf967596c68b7..a8659d308762024606b7f1aa0df85398839326a6 100644 (file)
@@ -190,7 +190,7 @@ OSM.Router = function (map, rts) {
     currentRoute = routes.recognize(currentPath);
   };
 
-  map.on("moveend baselayerchange overlaylayerchange", router.updateHash);
+  map.on("moveend baselayerchange overlayadd overlayremove", router.updateHash);
   $(window).on("hashchange", router.hashUpdated);
 
   return router;
index b94db8b557e8fe7430be8e14fe490887fa107918..1d167d977fb70e85481179b0671e963c9bc1c08a 100644 (file)
@@ -64,12 +64,10 @@ $(document).ready(function () {
       map.on("click", function (e) {
         if (!$("#updatehome").is(":checked")) return;
 
-        var zoom = map.getZoom(),
-            precision = OSM.zoomPrecision(zoom),
-            location = e.latlng.wrap();
+        const [lat, lon] = OSM.cropLocation(e.latlng);
 
-        $("#home_lat").val(location.lat.toFixed(precision));
-        $("#home_lon").val(location.lng.toFixed(precision));
+        $("#home_lat").val(lat);
+        $("#home_lon").val(lon);
 
         deleted_lat = null;
         deleted_lon = null;
index 098370689a0ec29215550527b4c08f0f58352a13..92b9f72409caebbe20fadaad52e55e5f26fc4ded 100644 (file)
@@ -816,6 +816,14 @@ tr.turn {
   }
 }
 
+/* Rules for the issues page */
+
+.issues.issues-index {
+  td.reporter_users {
+    max-width: 5rem;
+  }
+}
+
 /* Rules for the account confirmation page */
 
 .accounts-terms-show {
similarity index 82%
rename from app/controllers/api/map_controller.rb
rename to app/controllers/api/maps_controller.rb
index da8138597ae7b269fbb983a7eda8a4347c8a9ae7..439585462eba7e1e7f760183789eec960feffd12 100644 (file)
@@ -1,5 +1,5 @@
 module Api
-  class MapController < ApiController
+  class MapsController < ApiController
     authorize_resource :class => false
 
     before_action :set_request_formats
@@ -13,7 +13,7 @@ module Api
     # Then all the relations that reference the already found nodes and ways are
     # fetched. All the nodes and ways that are referenced by those ways are then
     # fetched. Finally all the xml is returned.
-    def index
+    def show
       # Figure out the bbox
       # check boundary is sane and area within defined
       # see /config/application.yml
@@ -46,10 +46,7 @@ module Api
         way_ids = way_nodes.collect { |way_node| way_node.id[0] }
         ways = Way.preload(:way_nodes, :way_tags).find(way_ids)
 
-        list_of_way_nodes = ways.collect do |way|
-          way.way_nodes.collect(&:node_id)
-        end
-        list_of_way_nodes.flatten!
+        list_of_way_nodes = ways.flat_map { |way| way.way_nodes.map(&:node_id) }
       end
 
       # - [0] in case some thing links to node 0 which doesn't exist. Shouldn't actually ever happen but it does. FIXME: file a ticket for this
@@ -57,26 +54,12 @@ module Api
 
       nodes += Node.includes(:node_tags).find(nodes_to_fetch) unless nodes_to_fetch.empty?
 
-      visible_nodes = {}
-      @nodes = []
-      nodes.each do |node|
-        if node.visible?
-          visible_nodes[node.id] = node
-          @nodes << node
-        end
-      end
+      @nodes = nodes.filter(&:visible?)
 
-      @ways = []
-      way_ids = []
-      ways.each do |way|
-        if way.visible?
-          way_ids << way.id
-          @ways << way
-        end
-      end
+      @ways = ways.filter(&:visible?)
 
-      @relations = Relation.nodes(visible_nodes.keys).visible +
-                   Relation.ways(way_ids).visible
+      @relations = Relation.nodes(@nodes).visible +
+                   Relation.ways(@ways).visible
 
       # we do not normally return the "other" partners referenced by an relation,
       # e.g. if we return a way A that is referenced by relation X, and there's
index 7e2e7fb793babed86952313cc1d0703043d2f760..eca0728b65700d90d7ea2f38126c9e06fe961d7c 100644 (file)
@@ -384,11 +384,7 @@ module Api
     def add_comment(note, text, event, notify: true)
       attributes = { :visible => true, :event => event, :body => text }
 
-      if doorkeeper_token
-        author = current_user if scope_enabled?(:write_notes)
-      else
-        author = current_user
-      end
+      author = current_user if scope_enabled?(:write_notes)
 
       if author
         attributes[:author_id] = author.id
index a9b85de7dc3f68d40fa84cab7b782b0766fda9e9..ae101f373762b0c282ed1b6218b1bbe875cfc5b7 100644 (file)
@@ -102,14 +102,11 @@ module Api
         node_ids += way_node_ids.flatten
         nodes = Node.where(:id => node_ids.uniq).includes(:node_tags)
 
-        visible_nodes = {}
-
         @nodes = []
         nodes.each do |node|
           next unless node.visible? # should be unnecessary if data is consistent.
 
           @nodes << node
-          visible_nodes[node.id] = node
         end
 
         @ways = []
index 27c4a1fcc7a319ce21e5e629aeeebbe9f81dc765..632fdb9a629637d1112831012e803e3f145605ba 100644 (file)
@@ -76,15 +76,10 @@ module Api
       @way = Way.includes(:nodes => :node_tags).find(params[:id])
 
       if @way.visible
-        visible_nodes = {}
-
         @nodes = []
 
         @way.nodes.uniq.each do |node|
-          if node.visible
-            @nodes << node
-            visible_nodes[node.id] = node
-          end
+          @nodes << node if node.visible
         end
 
         # Render the result
index 5a112b3cf61c4e4e35605b16086cf7bef6a6cc3e..23f35a40eeaf73662765d1d8cf137f2605f40f9c 100644 (file)
@@ -170,4 +170,10 @@ class ApiController < ApplicationController
 
     raise OSM::APIRateLimitExceeded if new_changes > max_changes
   end
+
+  def scope_enabled?(scope)
+    doorkeeper_token&.includes_scope?(scope)
+  end
+
+  helper_method :scope_enabled?
 end
index f6006fe5e4ccdc7139a6db14d5e0cf7adf5ee748..176fd8c2e060213d8264c1ccd1dd8cddca281df6 100644 (file)
@@ -304,10 +304,7 @@ class ApplicationController < ActionController::Base
   end
 
   def deny_access(_exception)
-    if doorkeeper_token
-      set_locale
-      report_error t("oauth.permissions.missing"), :forbidden
-    elsif current_user
+    if current_user
       set_locale
       respond_to do |format|
         format.html { redirect_to :controller => "/errors", :action => "forbidden" }
@@ -354,10 +351,4 @@ class ApplicationController < ActionController::Base
 
     referer&.to_s
   end
-
-  def scope_enabled?(scope)
-    doorkeeper_token&.includes_scope?(scope)
-  end
-
-  helper_method :scope_enabled?
 end
diff --git a/app/controllers/changeset_subscriptions_controller.rb b/app/controllers/changeset_subscriptions_controller.rb
new file mode 100644 (file)
index 0000000..6e0ad52
--- /dev/null
@@ -0,0 +1,38 @@
+class ChangesetSubscriptionsController < ApplicationController
+  layout "site"
+
+  before_action :authorize_web
+  before_action :set_locale
+  before_action :check_database_writable
+
+  authorize_resource :class => :changeset_subscription
+
+  around_action :web_timeout
+
+  def show
+    @changeset = Changeset.find(params[:changeset_id])
+    @subscribed = @changeset.subscribed?(current_user)
+  rescue ActiveRecord::RecordNotFound
+    render :action => "no_such_entry", :status => :not_found
+  end
+
+  def create
+    @changeset = Changeset.find(params[:changeset_id])
+
+    @changeset.subscribe(current_user) unless @changeset.subscribed?(current_user)
+
+    redirect_to changeset_path(@changeset)
+  rescue ActiveRecord::RecordNotFound
+    render :action => "no_such_entry", :status => :not_found
+  end
+
+  def destroy
+    @changeset = Changeset.find(params[:changeset_id])
+
+    @changeset.unsubscribe(current_user)
+
+    redirect_to changeset_path(@changeset)
+  rescue ActiveRecord::RecordNotFound
+    render :action => "no_such_entry", :status => :not_found
+  end
+end
index aa9d81343a1c61764bb8637d3b4d7e7a6421a080..d5ac49d4ccc04dafa68534158470872c3132f3b9 100644 (file)
@@ -7,9 +7,8 @@ class ChangesetsController < ApplicationController
 
   before_action :authorize_web
   before_action :set_locale
-  before_action -> { check_database_readable(:need_api => true) }, :only => [:index, :feed, :show]
+  before_action -> { check_database_readable(:need_api => true) }
   before_action :require_oauth, :only => :show
-  before_action :check_database_writable, :only => [:subscribe, :unsubscribe]
 
   authorize_resource
 
@@ -107,34 +106,6 @@ class ChangesetsController < ApplicationController
     render :template => "browse/not_found", :status => :not_found, :layout => map_layout
   end
 
-  ##
-  # subscribe to a changeset
-  def subscribe
-    @changeset = Changeset.find(params[:id])
-
-    if request.post?
-      @changeset.subscribe(current_user) unless @changeset.subscribed?(current_user)
-
-      redirect_to changeset_path(@changeset)
-    end
-  rescue ActiveRecord::RecordNotFound
-    render :action => "no_such_entry", :status => :not_found
-  end
-
-  ##
-  # unsubscribe from a changeset
-  def unsubscribe
-    @changeset = Changeset.find(params[:id])
-
-    if request.post?
-      @changeset.unsubscribe(current_user)
-
-      redirect_to changeset_path(@changeset)
-    end
-  rescue ActiveRecord::RecordNotFound
-    render :action => "no_such_entry", :status => :not_found
-  end
-
   private
 
   #------------------------------------------------------------
index 5a2b159ef6f991b96992367b3fd69e7c074de5a2..fdae75b9a5cee812b137a82ad947c627498f5c31 100644 (file)
@@ -19,7 +19,7 @@ class ExportController < ApplicationController
     case style
     when "osm"
       # redirect to API map get
-      redirect_to :controller => "api/map", :action => "index", :bbox => bbox
+      redirect_to api_map_path(:bbox => bbox)
 
     when "mapnik"
       # redirect to a special 'export' cgi script
index 5cedb3c705b5eeaeb42647057cb8de3c3cec7c8b..298f7c37450a6376cd43e95013cebba99442c2a5 100644 (file)
@@ -44,6 +44,15 @@ class IssuesController < ApplicationController
     end
 
     @issues, @newer_issues_id, @older_issues_id = get_page_items(@issues, :limit => @params[:limit])
+
+    @unique_reporters = @issues.each_with_object({}) do |issue, reporters|
+      user_ids = issue.reports.order(:created_at => :desc).pluck(:user_id).uniq
+      reporters[issue.id] = {
+        :count => user_ids.size,
+        :users => User.in_order_of(:id, user_ids.first(3))
+      }
+    end
+
     render :partial => "page" if turbo_frame_request_id == "pagination"
   end
 
diff --git a/app/controllers/messages/mutes_controller.rb b/app/controllers/messages/mutes_controller.rb
new file mode 100644 (file)
index 0000000..0d0ef7d
--- /dev/null
@@ -0,0 +1,33 @@
+module Messages
+  class MutesController < ApplicationController
+    layout "site"
+
+    before_action :authorize_web
+    before_action :set_locale
+
+    authorize_resource :message
+
+    before_action :check_database_readable
+    before_action :check_database_writable
+
+    # Moves message into Inbox by unsetting the muted-flag
+    def destroy
+      message = current_user.muted_messages.find(params[:message_id])
+
+      if message.unmute
+        flash[:notice] = t(".notice")
+      else
+        flash[:error] = t(".error")
+      end
+
+      if current_user.muted_messages.none?
+        redirect_to messages_inbox_path
+      else
+        redirect_to messages_muted_inbox_path
+      end
+    rescue ActiveRecord::RecordNotFound
+      @title = t "messages.no_such_message.title"
+      render :template => "messages/no_such_message", :status => :not_found
+    end
+  end
+end
diff --git a/app/controllers/messages/read_marks_controller.rb b/app/controllers/messages/read_marks_controller.rb
new file mode 100644 (file)
index 0000000..2db0b89
--- /dev/null
@@ -0,0 +1,39 @@
+module Messages
+  class ReadMarksController < ApplicationController
+    layout "site"
+
+    before_action :authorize_web
+    before_action :set_locale
+
+    authorize_resource :message
+
+    before_action :check_database_readable
+    before_action :check_database_writable
+
+    def create
+      mark true
+    end
+
+    def destroy
+      mark false
+    end
+
+    private
+
+    def mark(message_read)
+      @message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
+      @message.message_read = message_read
+      if @message.save
+        flash[:notice] = t ".notice"
+        if @message.muted?
+          redirect_to messages_muted_inbox_path, :status => :see_other
+        else
+          redirect_to messages_inbox_path, :status => :see_other
+        end
+      end
+    rescue ActiveRecord::RecordNotFound
+      @title = t "messages.no_such_message.title"
+      render :template => "messages/no_such_message", :status => :not_found
+    end
+  end
+end
index cc5f6c56d19dd4a6481534bc082eace36fa403ef..1979c9edc5f7bf8feba00f9901150af9420c4038 100644 (file)
@@ -10,7 +10,7 @@ class MessagesController < ApplicationController
 
   before_action :lookup_user, :only => [:new, :create]
   before_action :check_database_readable
-  before_action :check_database_writable, :only => [:new, :create, :mark, :destroy]
+  before_action :check_database_writable, :only => [:new, :create, :destroy]
 
   allow_thirdparty_images :only => [:new, :create, :show]
 
@@ -73,47 +73,6 @@ class MessagesController < ApplicationController
     render :action => "no_such_message", :status => :not_found
   end
 
-  # Set the message as being read or unread.
-  def mark
-    @message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
-    if params[:mark] == "unread"
-      message_read = false
-      notice = t ".as_unread"
-    else
-      message_read = true
-      notice = t ".as_read"
-    end
-    @message.message_read = message_read
-    if @message.save
-      flash[:notice] = notice
-      if @message.muted?
-        redirect_to messages_muted_inbox_path, :status => :see_other
-      else
-        redirect_to messages_inbox_path, :status => :see_other
-      end
-    end
-  rescue ActiveRecord::RecordNotFound
-    @title = t "messages.no_such_message.title"
-    render :action => "no_such_message", :status => :not_found
-  end
-
-  # Moves message into Inbox by unsetting the muted-flag
-  def unmute
-    message = current_user.muted_messages.find(params[:message_id])
-
-    if message.unmute
-      flash[:notice] = t(".notice")
-    else
-      flash[:error] = t(".error")
-    end
-
-    if current_user.muted_messages.none?
-      redirect_to messages_inbox_path
-    else
-      redirect_to messages_muted_inbox_path
-    end
-  end
-
   private
 
   ##
diff --git a/app/controllers/traces/data_controller.rb b/app/controllers/traces/data_controller.rb
new file mode 100644 (file)
index 0000000..76ed051
--- /dev/null
@@ -0,0 +1,41 @@
+module Traces
+  class DataController < ApplicationController
+    layout "site"
+
+    before_action :authorize_web
+    before_action :set_locale
+    before_action :check_database_readable
+
+    authorize_resource :class => Trace
+
+    before_action :offline_redirect
+
+    def show
+      trace = Trace.visible.find(params[:trace_id])
+
+      if trace.public? || (current_user && current_user == trace.user)
+        if Acl.no_trace_download(request.remote_ip)
+          head :forbidden
+        elsif request.format == Mime[:xml]
+          send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
+        elsif request.format == Mime[:gpx]
+          send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
+        elsif trace.file.attached?
+          redirect_to rails_blob_path(trace.file, :disposition => "attachment")
+        else
+          send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
+        end
+      else
+        head :not_found
+      end
+    rescue ActiveRecord::RecordNotFound
+      head :not_found
+    end
+
+    private
+
+    def offline_redirect
+      render :template => "traces/offline" if Settings.status == "gpx_offline"
+    end
+  end
+end
index 14648dc9c37eea68d78bb9b255ede055cbca15c1..53c1dedd6aeecb27e0c82dceaeb0184ffd12816e 100644 (file)
@@ -12,7 +12,7 @@ class TracesController < ApplicationController
 
   before_action :check_database_writable, :only => [:new, :create, :edit, :destroy]
   before_action :offline_warning, :only => [:mine, :show]
-  before_action :offline_redirect, :only => [:new, :create, :edit, :destroy, :data]
+  before_action :offline_redirect, :only => [:new, :create, :edit, :destroy]
 
   # Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.).
   #  target_user - if set, specifies the user to fetch traces for.  if not set will fetch all traces
@@ -116,7 +116,7 @@ class TracesController < ApplicationController
         @trace.schedule_import
         redirect_to :action => :index, :display_name => current_user.display_name
       else
-        flash[:error] = t(".upload_failed") if @trace.valid?
+        flash.now[:error] = t(".upload_failed") if @trace.valid?
 
         render :action => "new"
       end
@@ -170,28 +170,6 @@ class TracesController < ApplicationController
     redirect_to :action => :index, :display_name => current_user.display_name
   end
 
-  def data
-    trace = Trace.visible.find(params[:id])
-
-    if trace.public? || (current_user && current_user == trace.user)
-      if Acl.no_trace_download(request.remote_ip)
-        head :forbidden
-      elsif request.format == Mime[:xml]
-        send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
-      elsif request.format == Mime[:gpx]
-        send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
-      elsif trace.file.attached?
-        redirect_to rails_blob_path(trace.file, :disposition => "attachment")
-      else
-        send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
-      end
-    else
-      head :not_found
-    end
-  rescue ActiveRecord::RecordNotFound
-    head :not_found
-  end
-
   private
 
   def do_create(file, tags, description, visibility)
index a526f529e9e1fb2da92e982708106898e56b9e46..ec85aef38407be690f68781f02626bf2643a1626 100644 (file)
@@ -37,7 +37,7 @@ class UserBlocksController < ApplicationController
   end
 
   def new
-    @user_block = UserBlock.new
+    @user_block = UserBlock.new(:needs_view => true)
   end
 
   def edit
index da49347c3054a56f32a063e54cb44faf84bc2e79..13a9f9e9ea0c6be158bc8677bd6e7533ee96543a 100644 (file)
@@ -35,8 +35,8 @@ module SocialShareButtonHelper
 
   def generate_share_url(site, title, url)
     site = site.to_sym
-    title = URI.encode_www_form_component(title)
-    url = URI.encode_www_form_component(url)
+    title = URI.encode_uri_component(title)
+    url = URI.encode_uri_component(url)
 
     case site
     when :email
index 6098162852039a0078c927b7fce5b717e681196c..e466b694a76f204ec23d6334f3a480dc037680e0 100644 (file)
@@ -177,7 +177,7 @@ class UserMailer < ApplicationMailer
       @changeset_comment = comment.changeset.tags["comment"].presence
       @time = comment.created_at
       @changeset_author = comment.changeset.user.display_name
-      @unsubscribe_url = unsubscribe_changeset_url(comment.changeset)
+      @changeset_subscription_url = changeset_subscription_url(comment.changeset)
       @author = @commenter
 
       subject = if @owner
@@ -193,8 +193,8 @@ class UserMailer < ApplicationMailer
       set_list_headers(
         "#{comment.changeset.id}.changeset.www.openstreetmap.org",
         t(".description", :id => comment.changeset.id),
-        :subscribe => subscribe_changeset_url(comment.changeset),
-        :unsubscribe => @unsubscribe_url,
+        :subscribe => @changeset_subscription_url,
+        :unsubscribe => @changeset_subscription_url,
         :archive => @changeset_url
       )
 
index 17b57c0fa689ff5d6691d71b05ce6539a5770688..376516e9b4e8841a0ef9f132102d41ec2fd04c36 100644 (file)
@@ -99,16 +99,6 @@ class Note < ApplicationRecord
     comments.first.author
   end
 
-  # Return the note's author ID, derived from the first comment
-  def author_id
-    comments.first.author_id
-  end
-
-  # Return the note's author IP address, derived from the first comment
-  def author_ip
-    comments.first.author_ip
-  end
-
   private
 
   # Fill in default values for new notes
diff --git a/app/views/changeset_subscriptions/no_such_entry.html.erb b/app/views/changeset_subscriptions/no_such_entry.html.erb
new file mode 100644 (file)
index 0000000..ff7d98f
--- /dev/null
@@ -0,0 +1,5 @@
+<% content_for :heading do %>
+  <h1><%= t ".heading", :id => h(params[:changeset_id]) %></h1>
+<% end %>
+
+<p><%= t ".body", :id => h(params[:changeset_id]) %></p>
diff --git a/app/views/changeset_subscriptions/show.html.erb b/app/views/changeset_subscriptions/show.html.erb
new file mode 100644 (file)
index 0000000..e3ddb73
--- /dev/null
@@ -0,0 +1,12 @@
+<% content_for :heading do %>
+  <h1><%= @subscribed ? t(".unsubscribe.heading") : t(".subscribe.heading") %></h1>
+<% end %>
+
+<%= render :partial => "heading", :object => @changeset, :as => "changeset" %>
+
+<%= bootstrap_form_tag :method => (@subscribed ? :delete : :post) do |f| %>
+  <% if params[:referer] -%>
+  <%= f.hidden_field :referer, :value => params[:referer] %>
+  <% end -%>
+  <%= f.primary @subscribed ? t(".unsubscribe.button") : t(".subscribe.button") %>
+<% end %>
diff --git a/app/views/changesets/no_such_entry.html.erb b/app/views/changesets/no_such_entry.html.erb
deleted file mode 100644 (file)
index da7d185..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<% content_for :heading do %>
-  <h1><%= t ".heading", :id => h(params[:id]) %></h1>
-<% end %>
-
-<p><%= t ".body", :id => h(params[:id]) %></p>
diff --git a/app/views/changesets/subscribe.html.erb b/app/views/changesets/subscribe.html.erb
deleted file mode 100644 (file)
index 6a65e5f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<% content_for :heading do %>
-  <h1><%= t ".heading" %></h1>
-<% end %>
-
-<%= render :partial => "heading", :object => @changeset, :as => "changeset" %>
-
-<%= bootstrap_form_tag do |f| %>
-  <% if params[:referer] -%>
-  <%= f.hidden_field :referer, :value => params[:referer] %>
-  <% end -%>
-  <%= f.primary t(".button") %>
-<% end %>
diff --git a/app/views/changesets/unsubscribe.html.erb b/app/views/changesets/unsubscribe.html.erb
deleted file mode 100644 (file)
index 6a65e5f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<% content_for :heading do %>
-  <h1><%= t ".heading" %></h1>
-<% end %>
-
-<%= render :partial => "heading", :object => @changeset, :as => "changeset" %>
-
-<%= bootstrap_form_tag do |f| %>
-  <% if params[:referer] -%>
-  <%= f.hidden_field :referer, :value => params[:referer] %>
-  <% end -%>
-  <%= f.primary t(".button") %>
-<% end %>
index f625f0e0434ece3dcf3e8f244f65cfd50e6c30ab..6b291e58d082708362d28e32d05861c0d893c76f 100644 (file)
@@ -13,6 +13,7 @@
           <th><%= t ".reports" %></th>
           <th><%= t ".reported_item" %></th>
           <th><%= t ".reported_user" %></th>
+          <th class="reporter_users"><%= t ".reporter_users" %></th>
           <th><%= t ".last_updated" %></th>
         </tr>
       </thead>
             <td class="text-nowrap"><%= link_to t(".reports_count", :count => issue.reports_count), issue %></td>
             <td><%= link_to reportable_title(issue.reportable), reportable_url(issue.reportable) %></td>
             <td><%= link_to issue.reported_user.display_name, issue.reported_user if issue.reported_user %></td>
+            <td class="reporter_users text-truncate">
+              <% @unique_reporters[issue.id][:users].each do |reporter| %>
+                <%= link_to reporter.display_name, reporter, :class => "d-block text-truncate", :title => reporter.display_name %>
+              <% end %>
+              <% if @unique_reporters[issue.id][:count] > 3 %>
+                <p class="m-0"><%= t ".more_reporters", :count => @unique_reporters[issue.id][:count] - 3 %></p>
+              <% end %>
+            </td>
             <td>
               <% if issue.user_updated %>
                 <%= t ".last_updated_time_ago_user_html", :user => link_to(issue.user_updated.display_name, issue.user_updated),
index bab19c217191fb089bc1681a5e93851c3df965dd..e6d709b27f7de74192a36af8760c9c96dc88febe 100644 (file)
@@ -1,7 +1,6 @@
 <%= tag.head :data => application_data do %>
   <meta http-equiv="X-UA-Compatible" content="IE=edge" />
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <%= javascript_include_tag "es6" unless browser.es6? %>
   <%= javascript_include_tag "turbo", :type => "module" %>
   <%= javascript_include_tag "application" %>
   <%= javascript_include_tag "i18n/#{I18n.locale}" %>
index 790d13fc380b03161f8ee59c0ed679559a68b31d..4c88887f920d4462c1650759a3801c4d0ccb4ec5 100644 (file)
@@ -1,4 +1,3 @@
-<%= favicon_link_tag "favicon.ico" if browser.ie? %>
 <% [57, 60, 72, 76, 114, 120, 144, 152, 180].each do |size| -%>
 <%= favicon_link_tag "apple-touch-icon-#{size}x#{size}.png", :rel => "apple-touch-icon", :sizes => "#{size}x#{size}", :type => "image/png" %>
 <% end -%>
index 7213cf80dcedb66c8a20c2ecf06d4671ba372fc5..5c9c4eb49104529cb685d99c2a26ae9aea3c1c65 100644 (file)
@@ -4,11 +4,11 @@
   <td class="text-nowrap"><%= l message.sent_on, :format => :friendly %></td>
   <td class="text-nowrap">
     <div class="d-flex justify-content-end gap-1">
-      <%= button_to t(".unread_button"), message_mark_path(message, :mark => "unread"), :class => "btn btn-sm btn-primary", :form => { :data => { :turbo => true }, :class => "inbox-mark-unread", :hidden => !message.message_read? } %>
-      <%= button_to t(".read_button"), message_mark_path(message, :mark => "read"), :class => "btn btn-sm btn-primary", :form => { :data => { :turbo => true }, :class => "inbox-mark-read", :hidden => message.message_read? } %>
+      <%= button_to t(".unread_button"), message_read_mark_path(message), :method => :delete, :class => "btn btn-sm btn-primary", :form => { :data => { :turbo => true }, :hidden => !message.message_read? } %>
+      <%= button_to t(".read_button"), message_read_mark_path(message), :method => :post, :class => "btn btn-sm btn-primary", :form => { :data => { :turbo => true }, :hidden => message.message_read? } %>
       <%= button_to t(".destroy_button"), message_path(message, :referer => request.fullpath), :method => :delete, :class => "btn btn-sm btn-danger", :form => { :data => { :turbo => true }, :class => "destroy-message" } %>
       <% if message.muted? %>
-        <%= button_to t(".unmute_button"), message_unmute_path(message), :method => :patch, :class => "btn btn-sm btn-secondary", :form => { :data => { :turbo => true } } %>
+        <%= button_to t(".unmute_button"), message_mute_path(message), :method => :delete, :class => "btn btn-sm btn-secondary", :form => { :data => { :turbo => true } } %>
       <% end %>
     </div>
   </td>
index d3147c9699c3c24c95b1a12aa2c7d74acf24be0c..ff403b099b28d3206bc44c69d5a77b7e1777606c 100644 (file)
@@ -20,7 +20,7 @@
 <div>
   <%= link_to t(".reply_button"), new_message_reply_path(@message), :class => "btn btn-primary" %>
   <% if current_user == @message.recipient %>
-    <%= link_to t(".unread_button"), message_mark_path(@message, :mark => "unread"), :method => "post", :class => "btn btn-primary" %>
+    <%= link_to t(".unread_button"), message_read_mark_path(@message), :method => "delete", :class => "btn btn-primary" %>
     <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
   <% else %>
     <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
index efba71eb651d47a865a9b99059fbb347e8881fe2..d0f27a1438445cab94d9f8140b0e6d7402b490dc 100644 (file)
@@ -24,6 +24,6 @@
 
 <% content_for :footer do %>
   <p>
-    <%= t ".unsubscribe_html", :url => link_to(@unsubscribe_url, @unsubscribe_url) %>
+    <%= t ".unsubscribe_html", :url => link_to(@changeset_subscription_url, @changeset_subscription_url) %>
   </p>
 <% end %>
index 8c0727583a717552655460944dd7389b64aca07a..91278a3c17959a9e6f970a83178abb398ed6fa38 100644 (file)
@@ -17,4 +17,4 @@
 
 <%= t '.details', :url => @changeset_url %>
 
-<%= t '.unsubscribe', :url => @unsubscribe_url %>
+<%= t '.unsubscribe', :url => @changeset_subscription_url %>
diff --git a/config/initializers/browser.rb b/config/initializers/browser.rb
deleted file mode 100644 (file)
index 5e8c57c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module OpenStreetMap
-  module Browser
-    module Features
-      def es6?
-        chrome?(">44") || firefox?(">24") || safari?(">7") || edge?(">11") || generic_webkit?
-      end
-
-      def generic_webkit?
-        webkit? && !chrome? && !safari? && !edge? && !phantom_js?
-      end
-    end
-  end
-end
-
-Browser::Base.include(OpenStreetMap::Browser::Features)
index f3ff7a0c464c8cbbadc45a708683e22325b60cf0..c8ace82236eca6361e30d24d09296a993e41c119 100644 (file)
@@ -242,11 +242,6 @@ af:
       my settings: My instellings
       current email address: Huidige e-posadres
       external auth: Ekserne veriviering.
-      public editing:
-        heading: Openbare redigerings
-        enabled: Geaktiveer. Nie anoniem nie en kan data redigeer.
-        enabled link text: wat is dié?
-        disabled link text: hoekom kan ek nie redigeer nie?
       contributor terms:
         heading: Bydraervoorwaardes
         link text: wat is dié?
@@ -278,6 +273,8 @@ af:
           france: Frankryk
           italy: Italië
           rest_of_world: Die res van die wêreld
+      update:
+        terms accepted: Dankie dat u die nuwe bydraerooreenkoms aanvaar het!
       terms_declined_flash:
         terms_declined_link: diehier wiki-bladsy
   browse:
@@ -387,7 +384,6 @@ af:
     index:
       title: Wysigingstelle
       title_user: Veranderings deur %{user}
-      title_friend: Wysigingstelle deur my vriende
       title_nearby: Veranderings deur gebruikers naby
       empty: Geen wysigingstelle gevind nie.
       empty_area: Geen wysigingstelle in hierdie gebied.
@@ -433,16 +429,12 @@ af:
     popup:
       your location: U ligging
       nearby mapper: Nabygeleë karteerder
-      friend: Vriend
     show:
       title: My paneelbord
       edit_your_profile: Wysig u profiel
-      my friends: My vriende
-      no friends: U het nog geen vriende bygevoeg nie.
       nearby users: Ander gebruikers naby
       no nearby users: Daar is nog geen ander gebruikers wat sê dat hulle in die nabye
         omgewing karteer nie.
-      friends_changesets: Wysigingstelle deur my vriende
       nearby_changesets: gebruikerswysigingstelle naby
   diary_entries:
     new:
@@ -452,7 +444,6 @@ af:
       use_map_link: Kies op kaart
     index:
       title: Gebruikersdagboeke
-      title_friends: Dagboeke van vriende
       title_nearby: Gebruikers in die omgewing se dagboeke
       user_title: '%{user} se dagboek'
       in_language_title: Dagboekinkrywings in %{language}
@@ -508,32 +499,11 @@ af:
       all:
         title: OpenStreetMap-dagboekinskrywings
         description: Onlangse dagboekinskrywings van OpenStreetMap-gebruikers
-  diary_comments:
-    index:
-      no_comments: Geen dagboekkommentaar
-    page:
-      post: Inskrywing
-      when: Wanneer
-      comment: Kommentaar
   doorkeeper:
     flash:
       applications:
         create:
           notice: Program geregistreer.
-  friendships:
-    make_friend:
-      heading: '%{user} as vriend toevoeg?'
-      button: As vriend byvoeg
-      success: '%{name} is nou u vriend!'
-      failed: Jammer, kon nie %{name} as 'n vriend byvoeg nie.
-      already_a_friend: U is reeds met %{name} bevriend.
-      limit_exceeded: U het onlangs baie vriendskapsversoeke gestuur. Wag 'n tyd voordat
-        u nuwe versoeke probeer stuur.
-    remove_friend:
-      heading: '%{user} as vriend verwyder?'
-      button: Verwyder as vriend
-      success: '%{name} is uit u vriendekring verwyder.'
-      not_a_friend: '%{name} is nie een van u vriende nie.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1396,9 +1366,8 @@ af:
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Hallo %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: Hallo %{to_user},
-      subject: '[OpenStreetMap] %{user} het u as ''n vriend bygevoeg'
     gpx_failure:
       hi: Hallo %{to_user},
     gpx_success:
@@ -1460,11 +1429,13 @@ af:
       unread_button: Merk as ongelees
       destroy_button: Skrap
       back: Terug
-    mark:
-      as_read: Boodskap as gelees gemerk
-      as_unread: Boodskap as ongelees gemerk
     destroy:
       destroyed: Boodskap is verwyder
+    read_marks:
+      create:
+        notice: Boodskap as gelees gemerk
+      destroy:
+        notice: Boodskap as ongelees gemerk
     mailboxes:
       heading:
         my_inbox: My in-vakkie
@@ -1808,7 +1779,6 @@ af:
       display name description: U gebruikernaam wat openbaar verskyn. U kan dit wel
         later nog onder voorkeure wysig.
       continue: Meld aan
-      terms accepted: Dankie dat u die nuwe bydraerooreenkoms aanvaar het!
       use external auth: Gebruik andersins 'n derde party om mee aan te meld
     no_such_user:
       title: Geen so 'n gebruiker nie
@@ -1834,8 +1804,6 @@ af:
       edits: Wysigings
       traces: Spore
       notes: Kaartnotas
-      remove as friend: Verwyder as vriend
-      add as friend: Voeg by as vriend
       mapper since: 'Karteerder sedert:'
       ct status: 'Bydraervoorwaardes:'
       email address: 'E-posadres:'
@@ -1883,6 +1851,13 @@ af:
       user:
         summary_html: '%{name} geskep vanaf %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} geskep op %{date}'
+    changeset_comments:
+      page:
+        when: Wanneer
+        comment: Kommentaar
+    diary_comments:
+      page:
+        post: Inskrywing
     auth_failure:
       no_authorization_code: Geen matigingskode
   user_blocks:
index 86356376da2d24b0680925d7b37e319368870f7e..97dec6710b78f02d155aee64db81b7007b797faf 100644 (file)
@@ -125,13 +125,6 @@ aln:
       title: Ndrysho akountin
       my settings: Preferencat e mia
       current email address: 'Email adresa e tanishme:'
-      public editing:
-        heading: Duke ndryshue publikisht
-        enabled: E pranishme. Jo anonime dhe muni me i ndryshue t'dhanat.
-        enabled link text: çka osht kjo?
-        disabled: E çkyckur dhe smuni me i ndryshu të dhanat, të gjitha ndryshimet
-          e ma hershme jan anonime.
-        disabled link text: pse spo muj me i ndryshue?
       save changes button: Ruaj Ndryshimet
     go_public:
       heading: 'Ndryshime publike:'
@@ -197,9 +190,7 @@ aln:
     popup:
       your location: Vendi juej
       nearby mapper: Hartues i aftërt
-      friend: Shoq
     show:
-      no friends: Hala nuk ke shtue asni shoq.
       nearby users: Shfrytëzuesit e tjer që jan afër
       no nearby users: Hala nuk ka shfrytëzues që pranon hartimin e aftërt.
   diary_entries:
@@ -258,17 +249,6 @@ aln:
       all:
         title: hyra OpenStreetMap ditar
         description: Shënimet mat fundit të ditarit nga anëtarët e OpenStreetMap
-  diary_comments:
-    page:
-      comment: Koment
-  friendships:
-    make_friend:
-      success: '%{name} është shok/shoqe jot/e.'
-      failed: Na vjen keq, dështuam ta shtojm %{name} si shok/qe.
-      already_a_friend: Ju tashma jeni shok me %{name}.
-    remove_friend:
-      success: '%{name} u hek pi shokve tu'
-      not_a_friend: '%{name} nuk osht njoni pi shokve tu.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -659,11 +639,8 @@ aln:
       hi: Tung %{to_user},
       header: '%{from_user} ju ka dërgu një mesazh përmes OpenStreetMap me titullin
         %{subject}:'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} ju ka shtu juve si një shok'
-      had_added_you: '%{user} ju ka shtu juve si një shok në OpenStreetMap.'
+    follow_notification:
       see_their_profile: Ju muni me pa profilin e tyre tek %{userurl}.
-      befriend_them: Ju muni gjithashtu me i shtu ata si shokë tek %{befriendurl}.
     gpx_failure:
       failed_to_import: 'nuk arriti të importit. Këtu është gabim:'
       subject: '[OpenStreetMap] te re dështimit Import'
@@ -715,11 +692,13 @@ aln:
       wrong_user: Ju keni hy si `%{user}' por mesazhi që po doni me lexu nuk u dërgu
         për ose nga ai anëtar. Ju lutem hyni si anëtari korrekt nëse doni me lexu
         atë mesazh.
-    mark:
-      as_read: Mesazhi u bo si i lexum
-      as_unread: Mesazhi u bo si i palexum
     destroy:
       destroyed: Mesazhi u fshi
+    read_marks:
+      create:
+        notice: Mesazhi u bo si i lexum
+      destroy:
+        notice: Mesazhi u bo si i palexum
     mailboxes:
       heading:
         my_inbox: postë e mia
@@ -1006,8 +985,6 @@ aln:
       diary: ditari
       edits: ndryshimet
       traces: gjurmet
-      remove as friend: heke si shok
-      add as friend: shtoje si shoq
       mapper since: 'Hartues qe prej:'
       email address: 'Email Adresa:'
       created from: 'U krijue prej:'
@@ -1055,6 +1032,9 @@ aln:
       user:
         summary_html: '%{name} u kriju prej %{ip_address} në %{date}'
         summary_no_ip_html: '%{name} u krijue me %{date}'
+    changeset_comments:
+      page:
+        comment: Koment
     suspended:
       title: Llogaria u Suspendu
       heading: Llogaria u Suspendu
index 06268112885654d6ae1daaab81bacf81e4df9850..2055e06ceb6f2fa68e1655e6b1bed7439f365d46 100644 (file)
@@ -41,6 +41,7 @@
 # Author: OsamaK
 # Author: Ruila
 # Author: TTMTT
+# Author: XIDME
 # Author: Yahya Sakhnini
 # Author: Zaher kadour
 # Author: Zpizza
@@ -135,7 +136,7 @@ ar:
         support_url: رابط الدعم
         allow_read_prefs: قراءة تفضيلات المستخدم الخاصة بهم
         allow_write_prefs: تعديل تفضيلات المستخدم الخاصة بهم
-        allow_write_diary: إنشاء إدخالات اليوميات والتعليقات وتكوين صداقات
+        allow_write_diary: إنشاء إدخالات اليوميات والتعليقات
         allow_write_api: تعديل الخريطة.
         allow_read_gpx: قراءة آثار جي بي إس الخاصة بهم
         allow_write_gpx: رفع آثار جي بي إس.
@@ -346,12 +347,6 @@ ar:
       external auth: مصادقة خارجية
       openid:
         link text: ما هذا؟
-      public editing:
-        heading: تعديل عام
-        enabled: مفعَّل، غير مجهول ويمكنك تعديل البيانات.
-        enabled link text: ما هذا؟
-        disabled: مُعطل ولا يمكن تعديل البيانات، جميع التعديلات السابقة مجهولة الهوية.
-        disabled link text: لماذا لا أستطيع التعديل؟
       contributor terms:
         heading: شروط المساهم
         agreed: لقد وافقت على شروط المساهم الجديدة.
@@ -431,6 +426,8 @@ ar:
           france: فرنسا
           italy: إيطاليا
           rest_of_world: بقية العالم
+      update:
+        terms accepted: نشكرك على قبول شروط المساهم الجديدة!
   browse:
     deleted_ago_by_html: تم حذف %{time_ago} بواسطة %{user}
     edited_ago_by_html: تم تحرير %{time_ago} بواسطة %{user}
@@ -539,7 +536,6 @@ ar:
       title: حزم التغييرات
       title_user: حزم التغييرات بواسطة %{user}
       title_user_link_html: التغييرات بواسطة %{user_link}
-      title_friend: مجموعات تغييرات بواسطة أصدقائي
       title_nearby: تغييرات مِن قِبَل مستخدمين قريبين
       empty: لم يُعثَر على أية مجموعات تغييرات.
       empty_area: لم يُعثَر على أية مجموعات تغييرات في هذه المنطقة.
@@ -554,19 +550,6 @@ ar:
         created: تم الإنشاء
         closed: تم الإغلاق
         belongs_to: الصانع
-    subscribe:
-      heading: الاشتراك في مناقشة التغييرات التالية؟
-      button: الاشتراك في المناقشة
-    unsubscribe:
-      heading: الاشتراك في مناقشة التغييرات التالية؟
-      button: إلغاء الاشتراك من المناقشة
-    heading:
-      title: تغييرات %{id}
-      created_by_html: تم إنشاؤه بواسطة %{link_user} على %{created}.
-    no_such_entry:
-      heading: 'لا يوجد إدخال بالمعرف: %{id}'
-      body: عذرًا، لا يوجد مجموعة تغيير بالمعرف %{id}. يرجى التحقق من الإملاء، أو
-        ربما الرابط الذي قمت بالنقر عليه خاطئ.
     show:
       title: حزمة التغييرات %{id}
       created: 'تم إنشاؤه: %{when}'
@@ -597,6 +580,21 @@ ar:
       relations_paginated: الصلات (%{x}-%{y} من %{count})
     timeout:
       sorry: عذرا، لقد استغرقت قائمة مجموعات التغييرات اللتي طلبتها وقتا طويلا لاستردادها.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: الاشتراك في مناقشة التغييرات التالية؟
+        button: الاشتراك في المناقشة
+      unsubscribe:
+        heading: الاشتراك في مناقشة التغييرات التالية؟
+        button: إلغاء الاشتراك من المناقشة
+    heading:
+      title: تغييرات %{id}
+      created_by_html: تم إنشاؤه بواسطة %{link_user} على %{created}.
+    no_such_entry:
+      heading: 'لا يوجد إدخال بالمعرف: %{id}'
+      body: عذرًا، لا يوجد مجموعة تغيير بالمعرف %{id}. يرجى التحقق من الإملاء، أو
+        ربما الرابط الذي قمت بالنقر عليه خاطئ.
   dashboards:
     contact:
       km away: على بعد %{count}كم
@@ -605,18 +603,13 @@ ar:
     popup:
       your location: مكانك
       nearby mapper: مخطط بالجوار
-      friend: صديق
     show:
       title: لوحة بياناتي
       no_home_location_html: '%{edit_profile_link} وعيّن موقع منزلك لمشاهدة المستخدمين
         القريبين.'
       edit_your_profile: عدل ملفك
-      my friends: أصدقائي
-      no friends: لم تقم بإضافة أي أصدقاء بعد.
       nearby users: مستخدمون آخرون قريبون
       no nearby users: لا يوجد بعد المزيد من المستخدمين أفصحوا عن تخطيطهم بالجوار.
-      friends_changesets: مجموعات تغييرات الأصدقاء
-      friends_diaries: مدخلات مدونات الأصدقاء
       nearby_changesets: حزم تغييرات المستخدمين القريبين
       nearby_diaries: إدخالات يوميات المستخدمين القريبين
   diary_entries:
@@ -627,7 +620,6 @@ ar:
       use_map_link: استخدم الخريطة
     index:
       title: يوميات المستخدمين
-      title_friends: يوميات الأصدقاء
       title_nearby: يوميات المستخدمين القريبين
       user_title: يومية %{user}
       in_language_title: مدخلات اليومية باللغة %{language}
@@ -694,16 +686,6 @@ ar:
     unsubscribe:
       heading: إلغاء الاشتراك في مناقشة إدخال اليوميات التالية؟
       button: إلغاء الاشتراك من المناقشة
-  diary_comments:
-    index:
-      title: تمت إضافة تعليقات اليوميات بواسطة %{user}
-      heading: تعليقات يوميات %{user}
-      subheading_html: تمت إضافة تعليقات اليوميات بواسطة %{user}
-      no_comments: لا توجد تعليقات اليوميات
-    page:
-      post: إرسال
-      when: متى
-      comment: التعليق
   doorkeeper:
     errors:
       messages:
@@ -728,20 +710,6 @@ ar:
       title: لم يتم العثور على الملف
       description: تعذر العثور على ملف / دليل / عملية API بهذا الاسم على خادم OpenStreetMap
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: إضافة %{user} كصديق؟
-      button: أضف كصديق
-      success: '%{name} الآن صديقك.'
-      failed: عفوًا، تعذرت إضافة %{name} كصديق.
-      already_a_friend: حاليًا أنت و%{name} أصدقاء.
-      limit_exceeded: لقد انضممت إلى الكثير من المستخدمين مؤخرًا. يرجى الانتظار قليلاً
-        قبل محاولة الصداقة بعد الآن.
-    remove_friend:
-      heading: إلغاء صداقة %{user}؟
-      button: إلغاء الصداقة
-      success: تمت إزالة %{name} من قائمة أصدقائك.
-      not_a_friend: '%{name} ليس أحد أصدقائك.'
   geocoder:
     search:
       title:
@@ -1640,14 +1608,10 @@ ar:
       footer: يمكنك أيضًا قراءة الرسالة على %{readurl} ويمكنك إرسال رسالة إلى المؤلف
         على %{replyurl}
       footer_html: يمكنك أيضا قراءة الرسالة في %{readurl} ويمكنك الرد في %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: مرحبًا %{to_user}،
-      subject: '[خريطة الشارع المفتوحة] %{user} أضافك كصديق.'
-      had_added_you: '%{user} قام بإضافتك كصديق على خريطة الشارع المفتوحة.'
       see_their_profile: يمكنك أن تشاهد ملفهم الشخصي على %{userurl}.
       see_their_profile_html: يمكنك مشاهدة ملفهم الشخصي على %{userurl}.
-      befriend_them: "\uFEFFيمكنك أيضًا إضافتهم كصديق على %{befriendurl}."
-      befriend_them_html: يمكنك أيضًا إضافتهم كصديق على %{befriendurl}.
     gpx_failure:
       hi: مرحبًا %{to_user}،
       failed_to_import: يبدو أن ملفك فشل في الاستيراد كملف تتبع GPS.
@@ -1790,13 +1754,16 @@ ar:
       wrong_user: لقد قمت بتسجيل الدخول باسم '%{user}' ولكن الرسالة التي طلبت قراءتها
         لم يتم إرسالها من قبل هذا المستخدم أو إليه. يرجى تسجيل الدخول باسم المستخدم
         الصحيح حتى تتمكن من قراءتها.
-    mark:
-      as_read: عُلِّمت الرسالة كمقروءة
-      as_unread: عُلِّمت الرسالة كغير مقروءة
-    unmute:
-      error: لم يتم نقل الرسالة إلى صندوق البريد
     destroy:
       destroyed: حُذِفت الرسالة
+    read_marks:
+      create:
+        notice: عُلِّمت الرسالة كمقروءة
+      destroy:
+        notice: عُلِّمت الرسالة كغير مقروءة
+    mutes:
+      destroy:
+        error: لم يتم نقل الرسالة إلى صندوق البريد
     mailboxes:
       heading:
         my_inbox: الوارد
@@ -2320,11 +2287,12 @@ ar:
     offline:
       heading: مخزن جي بي إكس غير متصل
       message: مخزن ونظام رفع ملفات جي بي إكس غير متاح حاليًا.
-    georss:
-      title: GPS آثار من خريطة الشارع المفتوحة
-    description:
-      description_with_count: ملف GPX ب%{count} نقطة من %{user}
-      description_without_count: ملف GPX من %{user}
+    feeds:
+      show:
+        title: GPS آثار من خريطة الشارع المفتوحة
+      description:
+        description_with_count: ملف GPX ب%{count} نقطة من %{user}
+        description_without_count: ملف GPX من %{user}
   application:
     permission_denied: أنت ليس لديك السماح للوصول لذلك الفعل
     require_cookies:
@@ -2388,7 +2356,6 @@ ar:
       display name description: اسم المستخدم الخاص بك الظاهر علنًا، يمكنك تغيير هذا
         في التفضيلات في وقت لاحق.
       continue: أنشئ حسابًا
-      terms accepted: نشكرك على قبول شروط المساهم الجديدة!
       use external auth: أو قم بالتسجيل مع طرف ثالث
     no_such_user:
       title: لا يوجد مستخدم كهذا
@@ -2413,8 +2380,6 @@ ar:
       edits: مساهمات
       traces: آثار
       notes: ملاحظات الخريطة
-      remove as friend: إلغاء الصداقة
-      add as friend: أضف كصديق
       mapper since: 'مُخطط منذ:'
       ct status: 'شروط المساهم:'
       ct undecided: متردد
@@ -2466,6 +2431,15 @@ ar:
       user:
         summary_html: '%{name} تم إنشاؤها من %{ip_address} في %{date}'
         summary_no_ip_html: '%{name} تم إنشاؤه في %{date}'
+    changeset_comments:
+      page:
+        when: متى
+        comment: التعليق
+    diary_comments:
+      index:
+        title: تمت إضافة تعليقات اليوميات بواسطة %{user}
+      page:
+        post: إرسال
     suspended:
       title: حساب معلق
       heading: حساب معلق
@@ -2634,7 +2608,7 @@ ar:
     close: أغلق
     share:
       title: شارك
-      cancel: Ø£Ù\84غ
+      cancel: Ø¥Ù\84غاء
       image: صورة
       link: وصلة أو HTML
       long_link: وصلة
index 24d543d1639b6b37e86148e847042276fe6b93b4..6296e9400974f1eaf0126316a14766187ece40b5 100644 (file)
@@ -106,12 +106,6 @@ arz:
     edit:
       title: عدّل الحساب
       my settings: إعداداتي
-      public editing:
-        heading: تعديل عام
-        enabled: مفعّل. غير مجهول ويمكنك تعديل البيانات.
-        enabled link text: ما هذا؟
-        disabled: مُعطل ولا يمكن تعديل البيانات، جميع التعديلات السابقه مجهوله الهويه.
-        disabled link text: لماذا لا أستطيع التعديل؟
       save changes button: حفظ التغييرات
     go_public:
       heading: 'تعديل عام:'
@@ -156,7 +150,6 @@ arz:
       your location: موقعك
       nearby mapper: مخطط بالجوار
     show:
-      no friends: لم تقم بإضافه أى أصدقاء بعد.
       nearby users: 'مستخدمين بالجوار:'
       no nearby users: لا يوجد بعد مستخدمين أفصحوا عن تخطيطهم بالجوار.
   diary_entries:
@@ -217,14 +210,6 @@ arz:
       all:
         title: مدخلات اليوميه فى خريطه الشارع المفتوحة
         description: المدخلات الحديثه فى يوميه مستخدمى خريطه الشارع المفتوحة
-  friendships:
-    make_friend:
-      success: '%{name} الآن صديقك!'
-      failed: عفوًا، تعذر إضافه %{name} كصديق.
-      already_a_friend: حاليًا أنت و %{name} أصدقاء.
-    remove_friend:
-      success: تم إزاله %{name} من قائمه أصدقائك.
-      not_a_friend: '%{name} ليس من أحد أصدقائك.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -584,9 +569,7 @@ arz:
       hi: مرحبًا %{to_user}،
       header: '%{from_user} قام بإرسال رساله لك عبر خريطه الشارع المفتوحه بالعنوان
         %{subject}:'
-    friendship_notification:
-      subject: '[خريطه الشارع المفتوحة] %{user} أضافك كصديق.'
-      had_added_you: '%{user} قام بإضافتك كصديق على خريطه الشارع المفتوحه.'
+    follow_notification:
       see_their_profile: يمكنك أن تشاهد ملفه الشخصى على %{userurl} وإضافته كصديق أيضًا
         إن كنت ترغب فى ذلك.
     gpx_failure:
@@ -634,11 +617,13 @@ arz:
       title: اقرأ الرسالة
       reply_button: رد
       unread_button: علّم كغير مقروءة
-    mark:
-      as_read: عُلّمت الرساله مقروءة
-      as_unread: عُلّمت الرساله كغير مقروءة
     destroy:
       destroyed: حُذفت الرسالة
+    read_marks:
+      create:
+        notice: عُلّمت الرساله مقروءة
+      destroy:
+        notice: عُلّمت الرساله كغير مقروءة
     mailboxes:
       heading:
         my_inbox: الوارد
@@ -851,8 +836,6 @@ arz:
       diary: يومية
       edits: مساهمات
       traces: آثار
-      remove as friend: أزل كصديق
-      add as friend: أضف كصديق
       mapper since: 'مُخطط منذ:'
       email address: 'عنوان البريد الإلكتروني:'
       created from: 'أُنشىء من:'
index e0e68ce3e3c968ca56c8e3d31a3ac0708f4e8869..1dff4a175d2ddc96c78deb8aba4b731b30966e9e 100644 (file)
@@ -218,13 +218,6 @@ ast:
       external auth: Autenticación esterna
       openid:
         link text: ¿qué ye esto?
-      public editing:
-        heading: Edición pública
-        enabled: Activaes. Nun yes anónimu y puedes editar los datos.
-        enabled link text: ¿qué ye esto?
-        disabled: Desactivaes y nun puedes editar los datos; toles ediciones anteriores
-          son anónimes.
-        disabled link text: ¿por qué nun puedo editar?
       contributor terms:
         heading: Términos de collaboración
         agreed: Aceutasti los nuevos términos de collaboración.
@@ -273,6 +266,8 @@ ast:
           france: Francia
           italy: Italia
           rest_of_world: Restu del mundu
+      update:
+        terms accepted: ¡Gracies por aceutar les condiciones de collaboración!
   browse:
     version: Versión
     in_changeset: Conxuntu de cambios
@@ -366,7 +361,6 @@ ast:
     index:
       title: Conxuntos de cambeos
       title_user: Conxuntos de cambeos de %{user}
-      title_friend: Conxuntos de cambeos de los mios collacios
       title_nearby: Conxuntos de cambeos d'usuarios cercanos
       empty: Nun s'alcontró nengún conxuntu de cambeos.
       empty_area: Nun hai conxuntos de cambeos nesta área.
@@ -411,14 +405,9 @@ ast:
     popup:
       your location: El to allugamientu
       nearby mapper: Mapeador próximu
-      friend: Amigu
     show:
-      my friends: Los mios amigos
-      no friends: Entá nun amestasti dengún amigu.
       nearby users: Otros usuarios próximos
       no nearby users: Entá nun hai otros usuarios que tean mapeando cerca de ti.
-      friends_changesets: conxuntos de cambios de los amigos
-      friends_diaries: entraes de diariu de los amigos
       nearby_changesets: conxuntos de cambios d'usuarios cercanos
       nearby_diaries: entraes de diariu d'usuarios cercanos
   diary_entries:
@@ -429,7 +418,6 @@ ast:
       use_map_link: usar mapa
     index:
       title: Diarios d'usuarios
-      title_friends: Diarios de collacios
       title_nearby: Diarios d'usuarios cercanos
       user_title: Diariu de %{user}
       in_language_title: Entraes del diariu en %{language}
@@ -484,28 +472,11 @@ ast:
       all:
         title: Entraes nel diariu d'OpenStreetMap
         description: Entraes recién nel diariu d'usuarios d'OpenStreetMap
-  diary_comments:
-    page:
-      post: Publicar
-      when: Cuándo
-      comment: Comentariu
   errors:
     internal_server_error:
       title: Error na aplicación
     not_found:
       title: Nun s’alcontró’l ficheru
-  friendships:
-    make_friend:
-      heading: ¿Amestar a %{user} a los amigos?
-      button: Amestar como amigu
-      success: ¡%{name} agora ye'l to amigu!
-      failed: Lo sentimos, hebo un fallu al amestar a %{name} como collaciu.
-      already_a_friend: Yá yes collaciu de %{name}.
-    remove_friend:
-      heading: ¿Desaniciar como amigu a %{user}?
-      button: Desaniciar como amigu
-      success: '%{name} desanicióse de los tos amigos.'
-      not_a_friend: '%{name} nun ye unu de los tos amigos.'
   geocoder:
     search:
       title:
@@ -1235,12 +1206,9 @@ ast:
       hi: Bones %{to_user},
       header: '%{from_user} unvióte un mensax per OpenStreetMap col asuntu %{subject}:'
       footer_html: Tamién pue lleer el mensaxe en %{readurl} y pue responder en %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Bones %{to_user},
-      subject: '[OpenStreetMap] %{user} amestóte como amigu'
-      had_added_you: '%{user} amestóte como amigu n''OpenStreetMap.'
       see_their_profile: Pues ver el so perfil en %{userurl}.
-      befriend_them: Tamién pues amestalos como amigos en %{befriendurl}.
     gpx_failure:
       failed_to_import: 'falló la importación. Esti ye''l fallu:'
       subject: '[OpenStreetMap] fallu d''importación GPX'
@@ -1351,11 +1319,13 @@ ast:
       back: Anterior
       wrong_user: Tas coneutáu como `%{user}' pero'l mensaxe que quies lleer nun s'unvió
         por o a esi usuariu. Anicia sesión col usuariu correchu pa contestar.
-    mark:
-      as_read: Mensaxe marcáu como lleíu
-      as_unread: Mensaxe marcáu como non lleíu
     destroy:
       destroyed: Mensaxe desaniciáu
+    read_marks:
+      create:
+        notice: Mensaxe marcáu como lleíu
+      destroy:
+        notice: Mensaxe marcáu como non lleíu
     mailboxes:
       heading:
         my_inbox: El mio buzón
@@ -1768,13 +1738,14 @@ ast:
       heading: Almacenamientu GPX desconectáu
       message: El sistema d'almacenamientu y xuba de ficheros GPX nun ta disponible
         anguaño.
-    georss:
-      title: Traces GPS d'OpenStreetMap
-    description:
-      description_with_count:
-        one: Ficheru GPX con un puntu de %{user}
-        other: Ficheru GPX con %{count} puntos de %{user}
-      description_without_count: Ficheru GPX de %{user}
+    feeds:
+      show:
+        title: Traces GPS d'OpenStreetMap
+      description:
+        description_with_count:
+          one: Ficheru GPX con un puntu de %{user}
+          other: Ficheru GPX con %{count} puntos de %{user}
+        description_without_count: Ficheru GPX de %{user}
   application:
     permission_denied: Nun tienes permisu d'accesu pa esta aición.
     require_cookies:
@@ -1823,7 +1794,6 @@ ast:
       display name description: El nome d'usuariu que s'amuesa en público. Pue camudalo
         más sero nes preferencies.
       continue: Date d'alta
-      terms accepted: ¡Gracies por aceutar les condiciones de collaboración!
       use external auth: Alternativamente, usa un terceru p'aniciar sesión
     no_such_user:
       title: Nun esiste l'usuariu
@@ -1847,8 +1817,6 @@ ast:
       edits: Ediciones
       traces: Traces
       notes: Notes de mapa
-      remove as friend: Desaniciar como amigu
-      add as friend: Amestar como amigu
       mapper since: 'Mapeador dende:'
       ct status: 'Términos de collaboración:'
       ct undecided: Indecisu
@@ -1901,6 +1869,13 @@ ast:
       user:
         summary_html: '%{name} creáu dende %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creáu el %{date}'
+    changeset_comments:
+      page:
+        when: Cuándo
+        comment: Comentariu
+    diary_comments:
+      page:
+        post: Publicar
     suspended:
       title: Cuenta suspendida
       heading: Cuenta suspendida
index 9d8035df7d1cb39552faa66538ce7c921e64f170..2d6b251fd639ed5cb6a5854e89ad2f2954c24e62 100644 (file)
@@ -163,9 +163,6 @@ az:
       current email address: Hazırki E-Poçt Ünvanı
       openid:
         link text: bu nədir?
-      public editing:
-        enabled link text: Bu nədir?
-        disabled link text: Niyə mən redaktə edə bilmirəm?
       contributor terms:
         link text: bu nədir?
       save changes button: Dəyişiklikləri yadda saxla
@@ -236,7 +233,6 @@ az:
     index:
       title: Dəyişikliklər dəsti
       title_user: '%{user} tərəfindən edilmiş dəyişikliklər dəsti'
-      title_friend: Dostlarınız tərəfindən edilmiş dəyişikliklər dəsti
       title_nearby: Yaxınlıqdakı istifadəçilər tərəfindən edilmiş dəyişikliklər dəsti
       feed:
         title: Dəyişikliklər dəsti  %{id}
@@ -259,11 +255,8 @@ az:
       latest_edit_html: 'Son redaktə (%{ago}):'
     popup:
       your location: Yerləşdiyin yer
-      friend: Dost
     show:
       edit_your_profile: Profilinizi redaktə edin
-      my friends: Dostlarım
-      no friends: Hələ heç bir dost əlavə etməmisiniz.
       nearby users: Yaxınlıqdakı digər istifadəçilər
   diary_entries:
     new:
@@ -273,7 +266,6 @@ az:
       use_map_link: Xəritədən istifadə et
     index:
       title: İstifadəçi gündəlikləri
-      title_friends: Dostların gündəlikləri
       title_nearby: Yaxınlıqdakı İstifadəçilərin Gündəlikləri
       user_title: '%{user}''nin gündəliyi'
       in_language_title: '%{language} dilində gündəlik qeydlər'
@@ -325,24 +317,9 @@ az:
       all:
         title: OpenStreetMap gündəlik yazısı
         description: OpenStreetMap istifadəçilərinin axırıncı gündəlik yazıları
-  diary_comments:
-    page:
-      post: Post
-      when: Nə vaxt
-      comment: Şərh
   errors:
     not_found:
       title: Fayl tapılmadı
-  friendships:
-    make_friend:
-      heading: '%{user}-i(ı) dostluğa əlavə edək?'
-      button: Dostluğa əlavə et
-      success: '%{name} indi sənin dostundur.'
-      failed: Bağışlayın, %{name}-i(ı) dostluğa əlavə etmədə xəta yarandı.
-      already_a_friend: Siz artıq %{name} dostsunuz.
-    remove_friend:
-      heading: '%{user} dostluqdan silək?'
-      button: Dostluqdan sil
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -855,11 +832,13 @@ az:
       title: Mesajı oxu
       reply_button: Geri göndər
       unread_button: Oxunulmamış kimi işarələ
-    mark:
-      as_read: Mesaj oxunulmuş kimi işarələndi
-      as_unread: Mesaj oxunulmamış kimi işarələndi
     destroy:
       destroyed: Mesaj silindi
+    read_marks:
+      create:
+        notice: Mesaj oxunulmuş kimi işarələndi
+      destroy:
+        notice: Mesaj oxunulmamış kimi işarələndi
     mailboxes:
       heading:
         my_inbox: Mənim gələnlər
@@ -1033,8 +1012,6 @@ az:
       my comments: mənim şərhlərim
       send message: mesaj göndər
       diary: gündəlik
-      remove as friend: dostluqdan silinmiş
-      add as friend: dostluğa əlavə edilmiş
       email address: 'E-poçt ünvanı:'
       status: 'Status:'
       create_block: bu istifadəçini blokla
@@ -1054,6 +1031,13 @@ az:
           one: '%{count} istifadəçi tapıldı'
           other: '%{count} istifadəçi tapıldı'
         hide: Seçilmiş istifadəçiləri gizlət
+    changeset_comments:
+      page:
+        when: Nə vaxt
+        comment: Şərh
+    diary_comments:
+      page:
+        post: Post
   user_blocks:
     create:
       flash: '%{name} adlı istifadəçiyə blok yaradılıb.'
index f27a90857d15deebd1eda8cbd8bd6a6e2dfb4d55..6b887205e39e1979b3b5a736aa42a895f7d63a1f 100644 (file)
@@ -259,13 +259,6 @@ ba:
       external auth: Тышҡы аутентификация
       openid:
         link text: был нимә?
-      public editing:
-        heading: Дөйөм ҡулланыусылар өсөн мөхәррирләү
-        enabled: Ҡабыҙылған. Мөхәррирләргә була. Төҙәтеүҙәр аноним түгел.
-        enabled link text: был нимә?
-        disabled: Һүндерелгән һәм мәғлүмәтте мөхәррирләп булмай, бөтә алдағы төҙәтеүҙәр
-          аноним.
-        disabled link text: Ни өсөн мөхәррирләй алмайым?
       contributor terms:
         heading: Ҡатнашыу шарттары
         agreed: Һеҙ яңы Ҡатнашыу шарттарына ризалыҡ бирҙегеҙ.
@@ -447,7 +440,6 @@ ba:
       title: Төҙәтеүҙәр пакеты
       title_user: ' %{user} ҡулланыусыһының төҙәтеүҙәр пакеты'
       title_user_link_html: 'Үҙгәртеүҙәр йыйылмаһы: %{user_link} тарафынан'
-      title_friend: Дуҫтарҙың төҙәтеүҙәр пакеты
       title_nearby: Эргәләге ҡатнашыусыларҙың төҙәтеүҙәр пакеты
       empty: Төҙәтеүҙәр пакеты табылманы.
       empty_area: Был өлкәлә төҙәтеүҙәр пакеты юҡ.
@@ -462,19 +454,6 @@ ba:
         created: Булдырылған
         closed: Ябыҡ
         belongs_to: Автор
-    subscribe:
-      heading: Киләһе үҙгәртеүҙәр йыйылмаһы буйынса фекер алышыуға яҙылырға теләйһегеҙме?
-      button: Фекер алышыуға яҙылырға
-    unsubscribe:
-      heading: Киләһе үҙгәртеүҙәр йыйылмаһы буйынса фекер алышыуҙан баш тартырға?
-      button: Фекер алышыуҙан баш тартырға
-    heading:
-      title: Үҙгәртеүҙәр йыйылмаһы %{id}
-      created_by_html: '%{created} көндө %{link_user} тарафынан булдырылған.'
-    no_such_entry:
-      heading: '%{id} һанлы яҙма табылманы'
-      body: Ғәфү итегеҙ, %{id} һанлы үҙгәртеүҙәр йыйылмаһы юҡ. Яҙыуығыҙҙы тикшерегеҙ
-        йәки бәлки һеҙ баҫҡан һылтанма дөрөҫ түгелдер.
     show:
       title: 'Төҙәтеүҙәр пакеты: %{id}'
       created: 'Булдырылған: %{when}'
@@ -506,6 +485,21 @@ ba:
     timeout:
       sorry: Ҡыҙғанысҡа ҡаршы, һеҙ һораған төҙәтмә пакеттары исемлеген алыу өсөн күп
         ваҡыт талап итә.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Киләһе үҙгәртеүҙәр йыйылмаһы буйынса фекер алышыуға яҙылырға теләйһегеҙме?
+        button: Фекер алышыуға яҙылырға
+      unsubscribe:
+        heading: Киләһе үҙгәртеүҙәр йыйылмаһы буйынса фекер алышыуҙан баш тартырға?
+        button: Фекер алышыуҙан баш тартырға
+    heading:
+      title: Үҙгәртеүҙәр йыйылмаһы %{id}
+      created_by_html: '%{created} көндө %{link_user} тарафынан булдырылған.'
+    no_such_entry:
+      heading: '%{id} һанлы яҙма табылманы'
+      body: Ғәфү итегеҙ, %{id} һанлы үҙгәртеүҙәр йыйылмаһы юҡ. Яҙыуығыҙҙы тикшерегеҙ
+        йәки бәлки һеҙ баҫҡан һылтанма дөрөҫ түгелдер.
   dashboards:
     contact:
       km away: '%{count}км һеҙҙән'
@@ -514,19 +508,14 @@ ba:
     popup:
       your location: Һеҙҙең урынығыҙ
       nearby mapper: Яҡындағы картограф
-      friend: Дуҫ
     show:
       title: Минең панель
       no_home_location_html: Яҡындағы ҡулланыусыларҙы күреү өсөн %{edit_profile_link}
         баҫып, урынлашҡан урынығыҙҙы билдәләгеҙ.
       edit_your_profile: Профильде үҙгәртеү
-      my friends: Дуҫтарым
-      no friends: Һеҙ әле бер дуҫта өҫтәмәнегеҙ.
       nearby users: Яҡындағы башҡа ҡулланыусылар
       no nearby users: Әлегә яҡында карталау менән шөғөлләнгән башҡа ҡулланыусылар
         юҡ.
-      friends_changesets: дуҫтарҙың үҙгәртеүҙәр йыйылмалары
-      friends_diaries: дуҫтар көндәлеге
       nearby_changesets: күршеләрҙең үҙгәртеүҙәр йыйылмалары
       nearby_diaries: күршеләрҙең көндәлек яҙмалары
   diary_entries:
@@ -537,7 +526,6 @@ ba:
       use_map_link: Картаны ҡулланырға
     index:
       title: Көндәлектәр
-      title_friends: Дуҫтар көндәлектәре
       title_nearby: Йәнәш ҡатнашыусыларҙың көндәлектәре
       user_title: '%{user} ҡулланыусының көндәлеге'
       in_language_title: Көндәлектәге яҙмалар телдә %{language}
@@ -603,15 +591,6 @@ ba:
       heading: Көндәлек яҙмаһы буйынса фекер алышыуҙан баш тартырға теләйһегеҙме?
       button: Фекер алышыуҙан баш тартырға
   diary_comments:
-    index:
-      title: '%{user} тарафынан өҫтәлгән көндәлек комментарийҙары'
-      heading: '%{user} көндәлек комментарийҙары'
-      subheading_html: '%{user} тарафынан өҫтәлгән көндәлеккә комментарийҙар'
-      no_comments: Көндәлектә комментарийҙар юҡ
-    page:
-      post: Post
-      when: Ҡасан
-      comment: Комментарий
     new:
       heading: Көндәлек яҙмаһы буйынса фекер алышыуға комментарий өҫтәргәме?
   doorkeeper:
@@ -668,20 +647,6 @@ ba:
       title: Файл табылманы
       description: OpenStreetMap серверында был исем менән файл/директория/API операцияһы
         табылманы (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} дуҫтарға өҫтәргә?'
-      button: Дуҫтарға өҫтәргә
-      success: '%{name} хәҙер һеҙҙең дуҫ!'
-      failed: Ғәфү итегеҙ, %{name} дуҫтарға өҫтәп булманы.
-      already_a_friend: Һеҙ %{name} менән әле дуҫтарһығыҙ.
-      limit_exceeded: Һуңғы ваҡытта һеҙ күп ҡулланыусыларҙы дуҫ итеп өҫтәнегеҙ. Яңы
-        дуҫтар өҫтәр алдынан бер аҙ көтөгөҙ.
-    remove_friend:
-      heading: '%{user} дуҫтарҙан алып ташларға?'
-      button: Дуҫтарҙан алып ташларға
-      success: '%{name} дуҫтарҙан алып ташланды.'
-      not_a_friend: '%{name} һеҙҙең дуҫ түгел.'
   geocoder:
     search:
       title:
@@ -1628,15 +1593,10 @@ ba:
         %{replyurl} адресы буйынса яуап ебәрә алаһығыҙ
       footer_html: Хәбәрҙе шулай уҡ %{readurl} адресы буйынса уҡый алаһығыҙ һәм авторға
         %{replyurl} адресы буйынса хәбәр ебәрә алаһығыҙ
-    friendship_notification:
+    follow_notification:
       hi: Сәләм, %{to_user},
-      subject: '[OpenStreetMap] %{user} һеҙҙе дуҫ итеп өҫтәне'
-      had_added_you: '%{user} OpenStreetMap-та һеҙҙе дуҫ итеп өҫтәне.'
       see_their_profile: Уның профилен %{userurl} адресы буйынса ҡарай алаһығыҙ.
       see_their_profile_html: Уларҙың профилен %{userurl} адресы буйынса ҡарай алаһығыҙ.
-      befriend_them: Һеҙ уларҙы дуҫ итеп %{befriendurl} адресы буйынса өҫтәй алаһығыҙ.
-      befriend_them_html: Һеҙ уларҙы дуҫ итеп %{befriendurl} адресы буйынса өҫтәй
-        алаһығыҙ.
     gpx_failure:
       hi: Сәләм, %{to_user},
       failed_to_import: 'импортлау мөмкин түгел. Бына хата:'
@@ -1659,6 +1619,16 @@ ba:
       too_large:
         planet:
           title: OSM планетаһы
+  users:
+    changeset_comments:
+      page:
+        when: Ҡасан
+        comment: Комментарий
+    diary_comments:
+      index:
+        title: '%{user} тарафынан өҫтәлгән көндәлек комментарийҙары'
+      page:
+        post: Post
   notes:
     show:
       title: ' %{id} искәрмәһе'
index 65cec17872f6e95fd3709f26297439113a91f38d..9dfa0aa9547720f32c15fbf23028dbc090791b3f 100644 (file)
@@ -253,13 +253,6 @@ be-Tarask:
       current email address: Цяперашні адрас электроннай пошты
       openid:
         link text: што гэта?
-      public editing:
-        heading: Публічнае рэдагаваньне
-        enabled: Уключана. Вы не ананім і можаце рэдагаваць зьвесткі.
-        enabled link text: што гэта?
-        disabled: Забаронены і ня можа рэдагаваць зьвесткі, усе папярэднія рэдагаваньні
-          былі ананімнымі.
-        disabled link text: чаму я не магу рэдагаваць?
       contributor terms:
         heading: Умовы супрацоўніцтва
         agreed: Вы пагадзіліся з новымі ўмовамі супрацоўніцтва.
@@ -298,6 +291,8 @@ be-Tarask:
           france: Францыя
           italy: Італія
           rest_of_world: Астатні сьвет
+      update:
+        terms accepted: Дзякуй за тое, што прынялі новыя ўмовы супрацоўніцтва!
   browse:
     version: Вэрсія
     in_changeset: Набор зьменаў
@@ -378,7 +373,6 @@ be-Tarask:
     index:
       title: Наборы зьменаў
       title_user: Набор зьменаў %{user}
-      title_friend: Наборы зьменаў маіх сяброў
       title_nearby: Наборы зьменаў для суседніх удзельнікаў
       feed:
         title: Набор зьменаў %{id}
@@ -408,14 +402,10 @@ be-Tarask:
     popup:
       your location: Вашае месцазнаходжаньне
       nearby mapper: Бліжэйшы стваральнік мапаў
-      friend: Сябар
     show:
-      no friends: Пакуль што Вы не дадалі нікога ў сябры.
       nearby users: Іншыя бліжэйшыя карыстальнікі
       no nearby users: Няма іншых карыстальнікаў, якія прызнаюць, што займаюцца складаньнем
         мапы каля Вас.
-      friends_changesets: наборы зьменаў сяброў
-      friends_diaries: запісы сяброўскіх дзёньнікаў
       nearby_changesets: наборы зьменаў суседніх удзельнікаў
       nearby_diaries: запісы дзёньнікаў суседніх удзельнікаў
   diary_entries:
@@ -426,7 +416,6 @@ be-Tarask:
       use_map_link: Выкарыстаць мапу
     index:
       title: Дзёньнікі карыстальнікаў
-      title_friends: Дзёньнікі сяброў
       title_nearby: Дзёньнікі суседніх удзельнікаў
       user_title: Дзёньнік %{user}
       in_language_title: Дзёньнік запісаў у %{language}
@@ -477,17 +466,6 @@ be-Tarask:
       all:
         title: Запісы ў дзёньніку OpenStreetMap
         description: Апошнія запісы ў дзёньніку карыстальнікаў OpenStreetMap
-  diary_comments:
-    page:
-      post: Запіс
-  friendships:
-    make_friend:
-      success: Цяпер %{name} — Ваш сябар!
-      failed: Прабачце, немагчыма дадаць %{name} да сьпісу сяброў.
-      already_a_friend: Вы ўжо сябруеце з %{name}.
-    remove_friend:
-      success: '%{name} быў выдалены з Вашага сьпісу сяброў.'
-      not_a_friend: '%{name} не зьяўляецца Вашым сябрам.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -906,11 +884,8 @@ be-Tarask:
     message_notification:
       hi: Вітаем, %{to_user},
       header: '%{from_user} даслаў Вам паведамленьне праз OpenStreetMap з тэмай %{subject}:'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} дадаў Вас у сьпіс сваіх сяброў'
-      had_added_you: '%{user} дадаў Вас у сьпіс сяброў на OpenStreetMap.'
+    follow_notification:
       see_their_profile: Вы можаце прагледзець яго профіль на %{userurl}.
-      befriend_them: Вы таксама можаце дадаць іх у якасьці сябраў на %{befriendurl}.
     gpx_failure:
       failed_to_import: 'немагчыма імпартаваць як файл GPS-сьледу. Праверце, ці сапраўды
         гэты файл ёсьць GPX альбо архівам з файлам(і) GPX падтрымліванага фармату
@@ -972,11 +947,13 @@ be-Tarask:
       wrong_user: Вы ўвайшлі ў сыстэму як '%{user}', але паведамленьне, якое жадаеце
         прачытаць, было дасланае ня гэтым ці гэтаму карыстальніку. Калі ласка, увайдзіце
         як карыстальнік, адпаведна запыту, каб прачытаць.
-    mark:
-      as_read: Паведамленьне пазначанае як прачытанае
-      as_unread: Паведамленьне пазначанае як непрачытанае
     destroy:
       destroyed: Паведамленьне выдаленае
+    read_marks:
+      create:
+        notice: Паведамленьне пазначанае як прачытанае
+      destroy:
+        notice: Паведамленьне пазначанае як непрачытанае
     mailboxes:
       heading:
         my_inbox: Мае ўваходзячыя
@@ -1270,7 +1247,6 @@ be-Tarask:
       display name description: Вашае імя, якое будзе бачнае ўсім. Вы можаце зьмяніць
         яго потым ў Вашых наладах.
       continue: Зарэгістравацца
-      terms accepted: Дзякуй за тое, што прынялі новыя ўмовы супрацоўніцтва!
     no_such_user:
       title: Няма такога карыстальніка
       heading: Удзельнік %{user} не існуе
@@ -1287,8 +1263,6 @@ be-Tarask:
       diary: Дзёньнік
       edits: Рэдагаваньні
       traces: Трэкі
-      remove as friend: Выдаліць зь сяброў
-      add as friend: Дадаць у сябры
       mapper since: 'Стварае мапы з:'
       ct status: 'Умовы супрацоўніцтва:'
       ct undecided: Нявырашана
@@ -1339,6 +1313,9 @@ be-Tarask:
       user:
         summary_html: '%{name} створаны з %{ip_address}, %{date}'
         summary_no_ip_html: '%{name} створаны %{date}'
+    diary_comments:
+      page:
+        post: Запіс
     suspended:
       title: Рахунак заблякаваны
       heading: Рахунак заблякаваны
index f19f82c7728687832521ad507bf5d0ee9efb51db..3ec005ee67c6816bb57304fb13e99d99d8d7efc3 100644 (file)
@@ -298,14 +298,6 @@ be:
       openid:
         link: http://wiki.openstreetmap.org/wiki/OpenID
         link text: што гэта?
-      public editing:
-        heading: Агульнае рэдагаванне
-        enabled: Уключана. Вы - не ананімны і можаце рэдагаваць даныя.
-        enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
-        enabled link text: што гэта?
-        disabled: Адключана. Вы не можаце больш рэдагаваць, але ўсе ранейшыя змены
-          ананімныя.
-        disabled link text: чаму я не магу рэдагаваць?
       contributor terms:
         heading: Умовы ўдзелу
         agreed: Вы пагадзіліся на новыя ўмовы ўдзелу.
@@ -392,6 +384,8 @@ be:
           france: Францыя
           italy: Італія
           rest_of_world: Астатні свет
+      update:
+        terms accepted: Дзякуй за прыняцце новых умоў ўдзелу!
   browse:
     deleted_ago_by_html: Выдалена %{time_ago} карыстальнікам %{user}
     edited_ago_by_html: Адрэдагавана %{time_ago} карыстальнікам %{user}
@@ -530,7 +524,6 @@ be:
       title: Пакет правак
       title_user: Пакет правак ад %{user}
       title_user_link_html: Змены ад %{user_link}
-      title_friend: Пакеты правак ад вашых сяброў
       title_nearby: Пакеты правак ад карыстальнікаў паблізу
       empty: Пакеты правак не знойдзены.
       empty_area: Няма пакетаў правак у гэтай вобласці.
@@ -545,19 +538,6 @@ be:
         created: Створаны
         closed: Зачынены
         belongs_to: Аўтар
-    subscribe:
-      heading: Падпісацца на наступнае абмеркаванне зменаў?
-      button: Падпісацца на абмеркаванне
-    unsubscribe:
-      heading: Скасаваць падпіску на наступнае абмеркаванне зменаў?
-      button: Адпісацца ад абмеркавання
-    heading:
-      title: Набор змен %{id}
-      created_by_html: Створана %{link_user} %{created}.
-    no_such_entry:
-      heading: 'Няма запісу з нумарам: %{id}'
-      body: На жаль, няма змяненняў з нумарам %{id}. Калі ласка, праверце, ці карэктна
-        уведзены нумар, або магчыма вам далі няслушную спасылку.
     show:
       title: 'Набор змен: %{id}'
       created: 'Створана: %{when}'
@@ -588,6 +568,21 @@ be:
       relations_paginated: Дачыненні (%{x}-%{y} з %{count})
     timeout:
       sorry: Выбачайце, спіс набораў правак, што Вы запыталі, занадта вялікі для атрымання.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Падпісацца на наступнае абмеркаванне зменаў?
+        button: Падпісацца на абмеркаванне
+      unsubscribe:
+        heading: Скасаваць падпіску на наступнае абмеркаванне зменаў?
+        button: Адпісацца ад абмеркавання
+    heading:
+      title: Набор змен %{id}
+      created_by_html: Створана %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Няма запісу з нумарам: %{id}'
+      body: На жаль, няма змяненняў з нумарам %{id}. Калі ласка, праверце, ці карэктна
+        уведзены нумар, або магчыма вам далі няслушную спасылку.
   dashboards:
     contact:
       km away: '%{count} км ад вас'
@@ -596,19 +591,14 @@ be:
     popup:
       your location: Ваша месцазнаходжанне
       nearby mapper: Карыстальнік
-      friend: Сябар
     show:
       title: Мая панэль
       no_home_location_html: '%{edit_profile_link} і ўсталюйце вашае месцазнаходжанне,
         каб бачыць карыстальнікаў паблізу.'
       edit_your_profile: Адрэдагуйце свой профіль
-      my friends: Мае сябры
-      no friends: Вы пакуль не дадалі нікога ў сябры.
       nearby users: 'Карыстальнікі паблізу:'
       no nearby users: Пакуль што няма карыстальнікаў, якія пазначылі сваё месцазнаходжанне
         паблізу.
-      friends_changesets: наборы зменаў сяброў
-      friends_diaries: запісы дзёньнікаў сяброў
       nearby_changesets: наборы зменаў удзельнікаў паблізу
       nearby_diaries: запісы дзённікаў карыстальнікаў паблізу
   diary_entries:
@@ -619,7 +609,6 @@ be:
       use_map_link: Карыстацца мапай
     index:
       title: Дзённікі карыстальнікаў
-      title_friends: Дзённікі сяброў
       title_nearby: Дзённікі карыстальнікаў паблізу
       user_title: Дзённік %{user}
       in_language_title: Дзённік запісаў на %{language}
@@ -689,15 +678,6 @@ be:
       heading: Адпісацца ад абмеркавання наступнага запісу ў дзённіку?
       button: Адпісацца ад абмеркавання
   diary_comments:
-    index:
-      title: Каментары да запісаў у дзённіку, дадазеныя карыстальнікам %{user}
-      heading: Каментары да запісаў у дзённіку карыстальніка %{user}
-      subheading_html: Каментары да запісаў у дзённіку, дадазеныя карыстальнікам %{user}
-      no_comments: Няма каментароў у дзённіку
-    page:
-      post: Апублікаваць
-      when: Калі
-      comment: Каментар
     new:
       heading: Дадаць каментар да абмеркавання наступнага запісу ў дзённіку?
   doorkeeper:
@@ -756,20 +736,6 @@ be:
       title: Файл не знойдзены
       description: Не ўдалося знайсці файл/тэчку/аперацыю API з такім імем на серверы
         OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Пасябраваць з %{user}?
-      button: Пасябраваць
-      success: '%{name} пасябраваў з вамі.'
-      failed: Прабачце, немагчыма пасябраваць з %{name}.
-      already_a_friend: Вы ўжо сябруеце з %{name}.
-      limit_exceeded: Апошнім часам вы пасябравалі з вялікай колькасцю карыстальнікаў.
-        Калі ласка, пачакайце пэўны час, перш чым спрабаваць пасябравацца зноўку.
-    remove_friend:
-      heading: Перастаць сябраваць з %{user}?
-      button: Выдаліць з сяброў
-      success: '%{name} выдалены са спіса сяброў.'
-      not_a_friend: '%{name} не з’яўляецца вашым сябрам.'
   geocoder:
     search:
       title:
@@ -1712,15 +1678,11 @@ be:
         адказаць на %{replyurl}
       footer_html: Вы можаце таксама прачытаць паведамленне на %{readurl}, і вы можаце
         адказаць на %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Прывітанне, %{to_user},
-      subject: '[OpenStreetMap] %{user} дадаў вас у спіс сваіх сяброў'
-      had_added_you: '%{user} пасябраваў з Вамі на OpenStreetMap.'
       see_their_profile: Вы можаце прагледзець профіль на %{userurl} і дадаць, як
         сябра, у адказ, калі хочаце.
       see_their_profile_html: Вы можаце прагледзець профіль на %{userurl}.
-      befriend_them: Вы таксама можаце пасябраваць з імі на %{befriendurl}.
-      befriend_them_html: Вы таксама можаце дадаць як сябра па спасылцы %{befriendurl}.
     gpx_failure:
       hi: Прывітанне, %{to_user},
       failed_to_import: 'збой імпарту. Адбылася памылка:'
@@ -1868,14 +1830,17 @@ be:
       wrong_user: Вы ўвайшлі ў сістэму пад імем "%{user}", але паведамленне, якое
         вы жадаеце прачытаць, не было адпраўленае гэтым карыстальнікам. Калі ласка,
         увайдзіце ў сістэму пад правільным імем, каб прачытаць яго.
-    mark:
-      as_read: Паведамленне адмечана прачытаным
-      as_unread: Паведамленне адмечана нечытаным
-    unmute:
-      notice: Паведамленне было перамешчана ў папку "Уваходныя".
-      error: Паведамленне не можа быць перамешчана ў папку "Уваходныя".
     destroy:
       destroyed: Паведамленне выдалена
+    read_marks:
+      create:
+        notice: Паведамленне адмечана прачытаным
+      destroy:
+        notice: Паведамленне адмечана нечытаным
+    mutes:
+      destroy:
+        notice: Паведамленне было перамешчана ў папку "Уваходныя".
+        error: Паведамленне не можа быць перамешчана ў папку "Уваходныя".
     mailboxes:
       heading:
         my_inbox: Мае уваходныя
@@ -2442,13 +2407,14 @@ be:
     offline:
       heading: Сховішча GPX-файлаў адключана
       message: Сховішча і сістэма загрузкі GPX-файлаў ў бягучы момант недаступныя
-    georss:
-      title: GPS-сляды OpenStreetMap
-    description:
-      description_with_count:
-        one: GPX-файл з %{count} пунктам ад %{user}
-        other: GPX-файл з %{count} пунктамі ад %{user}
-      description_without_count: GPX-файл ад %{user}
+    feeds:
+      show:
+        title: GPS-сляды OpenStreetMap
+      description:
+        description_with_count:
+          one: GPX-файл з %{count} пунктам ад %{user}
+          other: GPX-файл з %{count} пунктамі ад %{user}
+        description_without_count: GPX-файл ад %{user}
   application:
     permission_denied: У вас няма правоў для выканання гэтага дзеяння
     require_cookies:
@@ -2521,7 +2487,6 @@ be:
         privacy_policy: палітыкай прыватнасці
         contributor_terms: умовамі ўдзелу
       continue: Зарэгістравацца
-      terms accepted: Дзякуй за прыняцце новых умоў ўдзелу!
       email_help:
         privacy_policy: палітыкі прыватнасці
         html: Адрас вашай электроннай пошты не будзе паказвацца іншым карыстальнікам,
@@ -2555,8 +2520,6 @@ be:
       edits: Змены
       traces: Сляды
       notes: Заўвагі на карце
-      remove as friend: Выдаліць з сяброў
-      add as friend: Пасябраваць
       mapper since: 'Малюе карту з:'
       last map edit: 'Апошняе рэдагаванне карты:'
       no activity yet: Актыўнасці пакуль няма
@@ -2617,6 +2580,15 @@ be:
       user:
         summary_html: '%{name} створана з %{ip_address} %{date}'
         summary_no_ip_html: '%{name} створаны %{date}'
+    changeset_comments:
+      page:
+        when: Калі
+        comment: Каментар
+    diary_comments:
+      index:
+        title: Каментары да запісаў у дзённіку, дадазеныя карыстальнікам %{user}
+      page:
+        post: Апублікаваць
     suspended:
       title: Уліковы запіс прыпынены
       heading: Уліковы запіс прыпынены
index abed268f1c603381e0cf18cf17234ca01b1f3364..a321bf54abab308da4c81f865e2094de6769b99b 100644 (file)
@@ -237,10 +237,6 @@ bg:
       external auth: Удостоверяване от външен източник
       openid:
         link text: какво е това?
-      public editing:
-        enabled: Разрешено. Не е анонимно и можете да променяте данните.
-        enabled link text: какво е това?
-        disabled link text: защо не мога да редактирам?
       contributor terms:
         heading: Условия за сътрудничество
         agreed: Приели сте новите условия за сътрудничество.
@@ -297,6 +293,8 @@ bg:
           france: Франция
           italy: Италия
           rest_of_world: В останалата част на света
+      update:
+        terms accepted: Благодарим Ви, че приемате новите условия за сътрудничество!
   browse:
     edited_ago_by_html: Редактирано %{time_ago} от %{user}
     version: Версия
@@ -384,7 +382,6 @@ bg:
     index:
       title: Списък с промени
       title_user: Списък с промените на %{user}
-      title_friend: Списъци с промени на мои приятели
       title_nearby: Списъци с промени от потребители в близост
       empty: Няма списъци с промени.
       empty_area: Няма списъци с промени в този район.
@@ -432,17 +429,12 @@ bg:
     popup:
       your location: Моето местоположение
       nearby mapper: Картографи в близост
-      friend: Приятел
     show:
       no_home_location_html: '%{edit_profile_link} и задайте домашното си местоположение,
         за да видите потребителите наблизо.'
       edit_your_profile: Редактиране на профила
-      my friends: Моите приятели
-      no friends: Все още нямате добавени приятели.
       nearby users: Други потребители в близост
       no nearby users: Все още няма други потребители, които картографират в близост.
-      friends_changesets: набори с промени на приятели
-      friends_diaries: записи в дневника на приятели
   diary_entries:
     new:
       title: Нова публикация в дневника
@@ -451,7 +443,6 @@ bg:
       use_map_link: Използвай карта
     index:
       title: Дневници на потребителите
-      title_friends: Дневници на приятели
       title_nearby: Дневници на потребители в близост
       user_title: Дневник на %{user}
       in_language_title: Записи на %{language} в дневника
@@ -506,31 +497,12 @@ bg:
           %{language_name}
       all:
         title: Записи в дневника на OpenStreetMap
-  diary_comments:
-    index:
-      no_comments: Няма коментари в дневника
-    page:
-      post: Публикация
-      when: Кога
-      comment: Коментар
   doorkeeper:
     scopes:
       address: Вижте вашия физически адрес
   errors:
     contact:
       contact: контакт
-  friendships:
-    make_friend:
-      heading: Добави %{user} като приятел?
-      button: Добави като приятел
-      success: Сега сте приятели с %{name}!
-      failed: Съжаляваме, неуспешно добавяне на %{name} като приятел.
-      already_a_friend: Вие вече сте приятел с %{name}.
-    remove_friend:
-      heading: Премахни %{user} от приятели?
-      button: Премахване от приятели
-      success: '%{name} беше премахнат от списъка с приятелите.'
-      not_a_friend: '%{name} не е между вашите приятели.'
   geocoder:
     search:
       title:
@@ -1253,12 +1225,9 @@ bg:
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Здравейте %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: Здравейте %{to_user},
-      subject: '[OpenStreetMap] %{user} ви добави като приятел'
-      had_added_you: '%{user} ви добави като приятел на OpenStreetMap.'
       see_their_profile: Можете да видите профила му на %{userurl}.
-      befriend_them: Можете да ги добавите като приятел на %{befriendurl}.
     gpx_failure:
       hi: Здравейте %{to_user},
       failed_to_import: 'не е внесен. Това е грешката:'
@@ -1350,11 +1319,13 @@ bg:
       unread_button: Отбелязване като непрочетено
       destroy_button: Изтриване
       back: Назад
-    mark:
-      as_read: Съобщението е отбелязано като прочетено
-      as_unread: Съобщението е отбелязано като непрочетено
     destroy:
       destroyed: Съобщението беше изтрито
+    read_marks:
+      create:
+        notice: Съобщението е отбелязано като прочетено
+      destroy:
+        notice: Съобщението е отбелязано като непрочетено
     mailboxes:
       heading:
         my_inbox: Входяща кутия
@@ -1837,13 +1808,14 @@ bg:
       upload_trace: Качване на следи от GPS
       all_traces: Всички следи
       my_traces: Моите следи
-    georss:
-      title: OpenStreetMap GPS трасета
-    description:
-      description_with_count:
-        one: файл от GPX с %{count} точка от %{user}
-        other: файл от GPX с %{count} точки от %{user}
-      description_without_count: Файл на GPX от %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS трасета
+      description:
+        description_with_count:
+          one: файл от GPX с %{count} точка от %{user}
+          other: файл от GPX с %{count} точки от %{user}
+        description_without_count: Файл на GPX от %{user}
   application:
     permission_denied: Нямате разрешение за достъп до това действие
     auth_providers:
@@ -1880,7 +1852,6 @@ bg:
           хора като Вас и е безплатна за всеки, който иска да я поправи, актуализира,
           изтегли и използва.
       continue: Регистриране
-      terms accepted: Благодарим Ви, че приемате новите условия за сътрудничество!
       use external auth: Или използвайте удостоверяване от външен източник
     no_such_user:
       title: Няма такъв потребител
@@ -1905,8 +1876,6 @@ bg:
       edits: Промени
       traces: Следи
       notes: Бележки
-      remove as friend: Премахване от приятели
-      add as friend: Добавяне в приятели
       mapper since: 'Картограф от:'
       ct status: 'Условия за сътрудничество:'
       ct undecided: Неопределени
@@ -1941,6 +1910,13 @@ bg:
         hide: Скрий избраните потребители
       user:
         summary_no_ip_html: '%{name} създадено на %{date}'
+    changeset_comments:
+      page:
+        when: Кога
+        comment: Коментар
+    diary_comments:
+      page:
+        post: Публикация
     suspended:
       support: поддръжка
   user_blocks:
index b0242e88405dd6c33b4351589a4d25a9378a3776..74d28315c7f732a1165a6b3b273ec854e06da4d5 100644 (file)
@@ -274,13 +274,6 @@ bn:
       external auth: বাহ্যিক প্রমাণীকরণ
       openid:
         link text: এটি কী?
-      public editing:
-        heading: পাবলিক সম্পাদনা
-        enabled: সক্রিয়। বেনামী নয় এবং উপাত্ত সম্পাদনা করতে পারবে।
-        enabled link text: এটি কী?
-        disabled: নিস্ক্রিয় এবং ডেটা সম্পাদনা করতে পারবেন না, সমস্ত পূর্ববর্তী সম্পাদনা
-          বেনামী।
-        disabled link text: আমি সম্পাদনা করতে পারছি না কেন?
       contributor terms:
         heading: অবদানকারীর জন্য নিয়মাবলি
         agreed: আপনি নতুন অবদানকারীর শর্তাবলীতে সম্মত।
@@ -362,6 +355,8 @@ bn:
           france: ফ্রান্স
           italy: ইতালি
           rest_of_world: অন্যান্য দেশসমূহ
+      update:
+        terms accepted: নতুন অবদানকারী শর্তাবলী গ্রহণ করার জন্য ধন্যবাদ!
       terms_declined_flash:
         terms_declined_html: আমরা দুঃখিত যে আপনি নতুন অবদানকারী শর্তাবলী গ্রহণ না
           করার সিদ্ধান্ত নিয়েছেন। আরও তথ্যের জন্য, অনুগ্রহ করে %{terms_declined_link}
@@ -504,7 +499,6 @@ bn:
       title: পরিবর্তনধার্য
       title_user: '%{user} কর্তৃক পরিবর্তন ধার্য'
       title_user_link_html: '%{user_link}-এর দ্বারা পরিবর্তনগুলি'
-      title_friend: আমার বন্ধুদের দ্বারা পরিবর্তনসেট
       title_nearby: কাছকাছি ব্যবহারকারীর পরিবর্তনধার্য
       empty: কোনো পরিবর্তনধার্য পাওয়া যায়নি।
       empty_area: এই এলাকায় কোনো পরিবর্তনধার্য নেই।
@@ -519,12 +513,6 @@ bn:
         created: তৈরি হয়েছে
         closed: বন্ধ হয়েছে
         belongs_to: লেখক
-    subscribe:
-      button: আলোচনায় সাবস্ক্রাইব করুন
-    unsubscribe:
-      button: আলোচনায় আনসাবস্ক্রাইব করুন
-    no_such_entry:
-      heading: '%{id} আইডির কোনো ভুক্তি নেই'
     show:
       title: 'পরিবর্তনধার্য: %{id}'
       created: 'তৈরি করা হয়েছে: %{when}'
@@ -552,6 +540,14 @@ bn:
     timeout:
       sorry: দুঃখিত, আপনি যেই পরিবর্তনসেটটির জন্য আবেদন করছেন সেটি ফিরিয়ে আনতে আরও
         সময় লাগবে।
+  changeset_subscriptions:
+    show:
+      subscribe:
+        button: আলোচনায় সাবস্ক্রাইব করুন
+      unsubscribe:
+        button: আলোচনায় আনসাবস্ক্রাইব করুন
+    no_such_entry:
+      heading: '%{id} আইডির কোনো ভুক্তি নেই'
   dashboards:
     contact:
       km away: '%{count}কিমি দূরে'
@@ -560,19 +556,14 @@ bn:
     popup:
       your location: আপনার অবস্থান
       nearby mapper: কাছাকাছি অবস্থানকারী ম্যাপার
-      friend: বন্ধু
     show:
       title: আমার ড্যাশবোর্ড
       no_home_location_html: '%{edit_profile_link} এবং কাছাকাছি ব্যবহারকারীদের দেখতে
         আপনার বাড়ির অবস্থান নির্ধারণ করুন।'
       edit_your_profile: আপনার প্রোফাইল সম্পাদনা করুন
-      my friends: আমার বন্ধুগণ
-      no friends: আপনি বন্ধুতালিকায় কাউকে যুক্ত করেননি।
       nearby users: কাছাকাছি অন্য ব্যবহারকারী
       no nearby users: কাছাকাছি কেউ মানচিত্রাঙ্কন করছেন এমন কোনও ব্যবহারকারী এখনো
         নেই।
-      friends_changesets: বন্ধুদের পরিবর্তন
-      friends_diaries: বন্ধুর দিনলিপি ভুক্তি
       nearby_changesets: কাছাকাছি ব্যবহারকারীদের পরিবর্তনসেট
       nearby_diaries: কাছাকাছি ব্যবহারকারীর ডায়েরি এন্ট্রি
   diary_entries:
@@ -583,7 +574,6 @@ bn:
       use_map_link: মানচিত্র ব্যবহার করুন
     index:
       title: ব্যবহারকারীর দিনলিপি
-      title_friends: বন্ধুর দিনলিপি
       title_nearby: নিকটবর্তী ব্যবহারকারীর দিনলিপি
       user_title: '%{user}-এর দিনলিপি'
       in_language_title: '%{language} ভাষায় দিনলিপির ভুক্তি'
@@ -646,16 +636,6 @@ bn:
         description: ওপেনস্ট্রিটম্যাপ ব্যবহারকারীগণ কর্তৃক সাম্প্রতিক দিনলিপির ভুক্তি
     subscribe:
       button: আলোচনায় সাবস্ক্রাইব করুন
-  diary_comments:
-    index:
-      title: '%{user}-এর কৃত দিনলিপি ভুক্তি'
-      heading: '%{user}-এর দিনলিপি মন্তব্য'
-      subheading_html: '%{user}-এর করা দিনলিপি মন্তব্য'
-      no_comments: কোনও দিনলিপি মন্তব্য নেই
-    page:
-      post: পোস্ট
-      when: কখন
-      comment: মন্তব্য
   doorkeeper:
     flash:
       applications:
@@ -677,20 +657,6 @@ bn:
         যার ফলে অনুরোধ পূরণ করা যাচ্ছে না (HTTP ৫০০)
     not_found:
       title: ফাইল পাওয়া যায়নি
-  friendships:
-    make_friend:
-      heading: বন্ধু হিসেবে %{user} কে যুক্ত করবেন?
-      button: বন্ধু হিসাবে যোগ করুন
-      success: '%%{name} এখন আপনার বন্ধু!'
-      failed: দুঃখিত, %{name} কে বন্ধু হিসাবে যোগ করতে ব্যর্থ।
-      already_a_friend: '%{name} ইতিমধ্যে আপনার বন্ধু।'
-      limit_exceeded: আপনি ইতিমধ্যে বহু বন্ধু বানিয়েছেন। কিছুক্ষণ অপেক্ষা করে তারপর
-        চেষ্টা করুন।
-    remove_friend:
-      heading: '%{user} কে বন্ধু থেকে বাদ দিবেন?'
-      button: বন্ধু থেকে বাদ দিন
-      success: আপনার বন্ধু থেকে %{name} কে বাদ দেয়া হয়েছে।
-      not_a_friend: '%{name} আপনার বন্ধুদের একজন নন।'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1451,15 +1417,10 @@ bn:
         যার বিষয় হল %{subject}:'
       footer_html: এছাড়া আপনি %{readurl} এ মন্তব্যটি পড়তে পারেন এবং আপনি %{replyurl}
         এ লেখককে একটি বার্তা দিতে পারেন
-    friendship_notification:
+    follow_notification:
       hi: প্রিয় %{to_user},
-      had_added_you: '%{user} আপনাকে ওপেনস্ট্রিটম্যাপে বন্ধু হিসেবে যোগ করেছেন।'
       see_their_profile: আপনি %{userurl}-এ তাদের প্রোফাইল দেখতে পারেন।
       see_their_profile_html: আপনি %{userurl} এ তার প্রোফাইল দেখতে পারেন।
-      befriend_them: আপনি %{befriendurl} এ ক্লিক করে তাকেও আপনার বন্ধু হিসেবে যোগ
-        করতে পারেন।
-      befriend_them_html: আপনি %{befriendurl} এ ক্লিক করে তাকেও আপনার বন্ধু হিসেবে
-        যোগ করতে পারেন।
     gpx_failure:
       hi: সুপ্রিয় %{to_user},
       failed_to_import: 'GPS ট্রেস ফাইল হিসাবে আমদানি করা ব্যর্থ হয়েছে। অনুগ্রহ করে
@@ -1522,11 +1483,13 @@ bn:
       unread_button: অপঠিত হিসেবে চিহ্নিত করুন
       destroy_button: অপসারণ
       back: পিছনে
-    mark:
-      as_read: বার্তা পঠিত হিসেবে চিহ্নিত করুন
-      as_unread: বার্তা অপঠিত হিসেবে চিহ্নিত করুন
     destroy:
       destroyed: বার্তা মোছা হয়েছে
+    read_marks:
+      create:
+        notice: বার্তা পঠিত হিসেবে চিহ্নিত করুন
+      destroy:
+        notice: বার্তা অপঠিত হিসেবে চিহ্নিত করুন
     mailboxes:
       heading:
         my_inbox: আমার ইনবক্স
@@ -1882,8 +1845,9 @@ bn:
       message: জিপিএক্স ফাইল আপলোড বর্তমানে সম্ভব নয়
     offline:
       message: জিপিএক্স ফাইল সংরক্ষণ এবং আপলোড বর্তমানে সম্ভব নয়
-    description:
-      description_without_count: '%{user} থেকে GPX ফাইল'
+    feeds:
+      description:
+        description_without_count: '%{user} থেকে GPX ফাইল'
   application:
     settings_menu:
       account_settings: অ্যাকাউন্ট সেটিংস
@@ -1935,7 +1899,6 @@ bn:
       by_signing_up:
         privacy_policy: গোপনীয়তার নীতি
       continue: নিবন্ধন করুন
-      terms accepted: নতুন অবদানকারী শর্তাবলী গ্রহণ করার জন্য ধন্যবাদ!
       email_help:
         privacy_policy: গোপনীয়তার নীতি
       or: বা
@@ -1958,8 +1921,6 @@ bn:
       send message: বার্তা পাঠান
       diary: দিনলিপি
       edits: সম্পাদনাসমূহ
-      remove as friend: বন্ধু থেকে বাদ দিন
-      add as friend: বন্ধু যোগ করুন
       mapper since: 'এ থেকে মানচিত্র বানাচ্ছেন:'
       ct status: 'অবদানকারী শর্তাবলী:'
       ct undecided: সিদ্ধান্তহীন
@@ -2003,6 +1964,15 @@ bn:
       user:
         summary_html: '%{ip_address} থেকে %{date} তারিখে %{name} তৈরি করেছেন'
         summary_no_ip_html: '%{date}-এ %{name} তৈরি হয়েছে'
+    changeset_comments:
+      page:
+        when: কখন
+        comment: মন্তব্য
+    diary_comments:
+      index:
+        title: '%{user}-এর কৃত দিনলিপি ভুক্তি'
+      page:
+        post: পোস্ট
     suspended:
       title: অ্যাকাউন্ট স্থগিত করা হয়েছে
       heading: অ্যাকাউন্ট স্থগিত করা হয়েছে
index d2720372a560cdf7ac94527db99f76b1c4093e21..c02eaa77f8d7ad01b4914619fe7d3735ba4520cc 100644 (file)
@@ -293,13 +293,6 @@ br:
       external auth: Dilesadur diavaez
       openid:
         link text: petra eo an dra-se ?
-      public editing:
-        heading: Kemm foran
-        enabled: Gweredekaet. N'eo ket dizanv ha gallout a ra aozañ roadennoù.
-        enabled link text: petra eo an dra-se ?
-        disabled: Diweredekaet ha ne c'hall ket aozañ roadennoù ; diznav eo an holl
-          aozadennoù kent.
-        disabled link text: Perak n'on ket evit aozañ ?
       contributor terms:
         heading: Diferadennoù ar c'henlabourer
         agreed: Degemeret hoc'h eus diferadennoù nevez ar c'henlabourer.
@@ -365,6 +358,9 @@ br:
           france: Bro-C'hall
           italy: Italia
           rest_of_world: Peurrest ar bed
+      update:
+        terms accepted: Trugarez deoc'h evit bezañ asantet da ziferadennoù nevez ar
+          c'henlabourer !
       terms_declined_flash:
         terms_declined_link: ar bejenn-mañ eus ar wiki
   browse:
@@ -507,7 +503,6 @@ br:
       title: Hollad cheñchamantoù
       title_user: Hollad cheñchamantoù %{user}
       title_user_link_html: Hollad cheñchamantoù %{user_link}
-      title_friend: Hollad cheñchamantoù degaset gant ma mignoned
       title_nearby: Hollad cheñchamantoù graet gant implijerien a-dost
       empty: N'eus bet kavet hollad cheñchamant ebet.
       empty_area: Hollad cheñchamant ebet en takad-mañ.
@@ -522,17 +517,6 @@ br:
         created: Krouet
         closed: Serret
         belongs_to: Aozer
-    subscribe:
-      heading: Koumanantiñ da gaozeadenn an hollad cheñchamantoù-mañ?
-      button: Koumanantiñ ouzh ar gaozeadenn
-    unsubscribe:
-      heading: Digoumanantiñ diouzh kaozeadenn an hollad cheñchamantoù-mañ?
-      button: Digoumanantiñ diouzh ar gaozeadenn
-    heading:
-      title: Hollad cheñchamantoù %{id}
-      created_by_html: Bet krouet gant %{link_user} d'an %{created}.
-    no_such_entry:
-      heading: 'Enmont ebet gant an id: %{id}'
     show:
       title: 'Hollad cheñchamantoù: %{id}'
       created: 'Krouet: %{when}'
@@ -563,6 +547,19 @@ br:
       relations_paginated: Darempredoù (%{x}-%{y} diwar %{count})
     timeout:
       sorry: Ho tigarez, re hir eo adtapout ar roll cheñchamantoù hoc'h eus goulennet.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Koumanantiñ da gaozeadenn an hollad cheñchamantoù-mañ?
+        button: Koumanantiñ ouzh ar gaozeadenn
+      unsubscribe:
+        heading: Digoumanantiñ diouzh kaozeadenn an hollad cheñchamantoù-mañ?
+        button: Digoumanantiñ diouzh ar gaozeadenn
+    heading:
+      title: Hollad cheñchamantoù %{id}
+      created_by_html: Bet krouet gant %{link_user} d'an %{created}.
+    no_such_entry:
+      heading: 'Enmont ebet gant an id: %{id}'
   dashboards:
     contact:
       km away: war-hed %{count} km
@@ -571,18 +568,13 @@ br:
     popup:
       your location: Ho lec'hiadur
       nearby mapper: Kartennour en ardremez
-      friend: Mignon
     show:
       title: Ma zaolenn-vourzh
       no_home_location_html: '%{edit_profile_link} ha termenit ho chomlec''h evit
         gwelout an implijerien en ardremez.'
       edit_your_profile: Aozañ ho profil
-      my friends: Ma mignoned
-      no friends: N'hoc'h eus ouzhpennet mignon ebet c'hoazh.
       nearby users: 'Implijerien all tost deoc''h :'
       no nearby users: N'eus implijer ebet all en ardremez c'hoazh.
-      friends_changesets: Strolladoù kemmoù graet gant mignoned
-      friends_diaries: Enmonedoù deizlevr ar vignoned
       nearby_changesets: Strolladoù kemmoù an implijer tro-war-dro
       nearby_diaries: Enmonedoù deizlevr an implijerien tro-war-dro
   diary_entries:
@@ -593,7 +585,6 @@ br:
       use_map_link: Implijout ar gartenn
     index:
       title: Deizlevrioù an implijerien
-      title_friends: Deizlevrioù ar vignoned
       title_nearby: Deizlevrioù ar vignoned tost
       user_title: Deizlevr %{user}
       in_language_title: Enmontoù en deizlevr e %{language}
@@ -662,16 +653,6 @@ br:
       button: Koumanantiñ ouzh ar gaozeadenn
     unsubscribe:
       button: Digoumanantiñ diouzh ar gaozeadenn
-  diary_comments:
-    index:
-      title: Kemennadennoù skrivet en deizlevr gant %{user}
-      heading: Kemennadennoù-deizlevr %{user}
-      subheading_html: Kemennadennoù skrivet en deizlevr gant %{user}
-      no_comments: Kemennadenn deizlevr ebet
-    page:
-      post: Embann
-      when: Pegoulz
-      comment: Evezhiadenn
   doorkeeper:
     flash:
       applications:
@@ -694,20 +675,6 @@ br:
       title: Fazi an arload
     not_found:
       title: N'eo ket bet kavet ar restr
-  friendships:
-    make_friend:
-      heading: ↓Ouzhpennañ %{user} evel mignon ?
-      button: Ozhpennañ evel mignon
-      success: '%{name} eo ho mignon bremañ !'
-      failed: Ho tigarez, n'eus ket bet gallet ouzhpennañ %{name} evel mignon.
-      already_a_friend: Mignon oc'h gant %{name} dija.
-      limit_exceeded: Graet ho peus kalz a vignoned nevez zo. Gortozit ur pennadig
-        a-raok klask kavout re all.
-    remove_friend:
-      heading: Lemel %{user} eus ar vignoned ?
-      button: Lemel eus ar vignoned
-      success: '%{name} zo bet lamet eus ho mignoned.'
-      not_a_friend: '%{name} n''eo ket unan eus ho mignoned.'
   geocoder:
     search:
       title:
@@ -1662,14 +1629,10 @@ br:
       footer: Gallout a rit ivez lenn ar gemennadenn e %{readurl} ha respont e %{replyurl}
       footer_html: Gallout a rit ivez lenn ar gemennadenn e %{readurl} ha respont
         e %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Demat dit %{to_user},
-      subject: '[OpenStreetMap] %{user} en deus hoc''h ouzhpennet evel mignon'
-      had_added_you: '%{user} en deus hoc''h ouzhpennet evel mignon war OpenStreetMap.'
       see_their_profile: 'Gallout a rit gwelet o frofil amañ : %{userurl}.'
       see_their_profile_html: 'Gallout a rit gwelet o frofil amañ : %{userurl}.'
-      befriend_them: 'Gallout a rit o ouzhpennañ e-touez ho mignoned amañ : %{befriendurl}.'
-      befriend_them_html: 'Gallout a rit o ouzhpennañ e-touez ho mignoned amañ : %{befriendurl}.'
     gpx_failure:
       hi: Demat %{to_user},
       failed_to_import: 'n''en deus ket gallet bezañ enporzhiet. Setu amañ ar fazi
@@ -1817,14 +1780,17 @@ br:
       wrong_user: Kevreet oc'h evel "%{user}", met ar gemennadenn a fell deoc'h lenn
         n'eo ket bet kaset na gant na d'an implijer-se. Mar plij kevreit gant ar gont
         reizh evit gellout lenn anezhi.
-    mark:
-      as_read: Kemennadenn merket evel lennet
-      as_unread: Merkañ evel anlennet
-    unmute:
-      notice: Dilec'hiet eo bet ar gemennadenn d'ar voest resev
-      error: Ne c'haller ket dilec'hiañ ar gemennadenn d'ar voest resev.
     destroy:
       destroyed: Kemennadenn dilamet
+    read_marks:
+      create:
+        notice: Kemennadenn merket evel lennet
+      destroy:
+        notice: Merkañ evel anlennet
+    mutes:
+      destroy:
+        notice: Dilec'hiet eo bet ar gemennadenn d'ar voest resev
+        error: Ne c'haller ket dilec'hiañ ar gemennadenn d'ar voest resev.
     mailboxes:
       heading:
         my_inbox: Ma boest resev
@@ -2476,13 +2442,14 @@ br:
     offline:
       heading: Stokañ GPX ezlinenn
       message: Ne'z a ket ar sistem stokañ hag enporzhiañ GPX en-dro evit poent.
-    georss:
-      title: Roudoù GPS eus OpenStreetMap
-    description:
-      description_with_count:
-        one: restr GPX gant %{count} poent digant %{user}
-        other: restr GPX gant %{count} poent digant {user}
-      description_without_count: Restr GPX digant %{user}
+    feeds:
+      show:
+        title: Roudoù GPS eus OpenStreetMap
+      description:
+        description_with_count:
+          one: restr GPX gant %{count} poent digant %{user}
+          other: restr GPX gant %{count} poent digant {user}
+        description_without_count: Restr GPX digant %{user}
   application:
     permission_denied: N'emañ ket an aotreoù ret ganeoc'h evit seveniñ an ober-se.
     require_cookies:
@@ -2624,8 +2591,6 @@ br:
         privacy_policy: reolennoù prevezded
         contributor_terms: reolennoù ar genlabourerien
       continue: En em enskrivañ
-      terms accepted: Trugarez deoc'h evit bezañ asantet da ziferadennoù nevez ar
-        c'henlabourer !
       email_help:
         privacy_policy: Politikerezh prevezded
         html: Ho chomlec'h ne vo ket hewel d'an holl, sellit ouzh %{privacy_policy_link}
@@ -2660,8 +2625,6 @@ br:
       edits: Kemmoù
       traces: roudoù
       notes: Notennoù kartenn
-      remove as friend: Lemel eus ar vignoned
-      add as friend: Ouzhpennañ d'ar vignoned
       mapper since: 'Kartennour abaoe :'
       last map edit: 'Kemm diwezhañ ar gartenn:'
       no activity yet: Obererezh ebet c'hoazh
@@ -2743,6 +2706,15 @@ br:
       user:
         summary_html: '%{name} krouet eus %{ip_address} d''an %{date}'
         summary_no_ip_html: '%{name} krouet d''an %{date}'
+    changeset_comments:
+      page:
+        when: Pegoulz
+        comment: Evezhiadenn
+    diary_comments:
+      index:
+        title: Kemennadennoù skrivet en deizlevr gant %{user}
+      page:
+        post: Embann
     suspended:
       title: Kont arsavet
       heading: Kont arsavet
index a1f002364337182c4b6867a52ccedff9eaa338c3..3914223727b5d16c61a30f372a24ab6c597afa32 100644 (file)
@@ -155,13 +155,6 @@ bs:
       current email address: Trenutna adresa e-pošte
       openid:
         link text: Šta je ovo?
-      public editing:
-        heading: 'Javno uređivanje:'
-        enabled: Omogućeno. Nije anonimno i mogu se uređivati podaci.
-        enabled link text: Šta je ovo?
-        disabled: Onemogućno i ne mogu se uređivati podaci, sva prethodna uređivanja
-          su anonimna.
-        disabled link text: Zašto ja ne mogu uređivati?
       contributor terms:
         heading: Uslovi za doprinosioce
         agreed: Prihvatili ste nove uslove za doprinosioce.
@@ -192,6 +185,8 @@ bs:
           france: Francuska
           italy: Italija
           rest_of_world: Ostatak svijeta
+      update:
+        terms accepted: Hvala za prihvatanje novih uslova za doprinosioce!
   browse:
     version: Verzija
     in_changeset: Skup izmjena
@@ -252,7 +247,6 @@ bs:
     index:
       title: Setovi promjena
       title_user: Setovi promjena od %{user}
-      title_friend: Setovi promjena vaših prijatelja
       title_nearby: Setovi promjena obližnjih korisnika
       load_more: Učitaj više
       feed:
@@ -284,14 +278,10 @@ bs:
     popup:
       your location: Vaša lokacija
       nearby mapper: Obližnji maper
-      friend: Prijatelj
     show:
-      no friends: Niste dodali nijednog prijatelja.
       nearby users: Drugi obližnji korisnici
       no nearby users: Još uvijek nema drugih korisnika koji ucrtavaju na kartu u
         blizini.
-      friends_changesets: promjena spiska prijatelja
-      friends_diaries: unosi u dnevnik prijatelja
       nearby_changesets: promjene spiska obližnjih korisnika
       nearby_diaries: unosi u dnevnik obližnjih korisnika
   diary_entries:
@@ -302,7 +292,6 @@ bs:
       use_map_link: korisititi kartu
     index:
       title: Dnevnici korisnika
-      title_friends: Dnevnici prijatelja
       title_nearby: Dnevnici obližnjih korisnika
       user_title: Dnevnik od %{user}
       in_language_title: 'Unosi u dnevnik na jeziku: %{language}'
@@ -352,23 +341,6 @@ bs:
       all:
         title: Unosi u OpenStreetMap dnevniku
         description: Nedavni unosi u dnevnik OpenStreetMap korisnika
-  diary_comments:
-    page:
-      post: Post
-      when: Kada
-      comment: Komentar
-  friendships:
-    make_friend:
-      heading: Dodati %{user} kao prijatelja?
-      button: Dodati kao prijatelja
-      success: '%{name} je sada Vaš prijatelj!'
-      failed: Žao mi je, nije uspjelo dodavanje %{name} kao prijatelja.
-      already_a_friend: Već ste prijatelj sa %{name}.
-    remove_friend:
-      heading: Ukloniti %{user} iz prijatelja?
-      button: Ukloniti prijatelja
-      success: '%{name} je uklonjen iz prijatelja.'
-      not_a_friend: '%{name} nije jedan od Vaših prijatelja.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -866,11 +838,8 @@ bs:
       hi: Zdravo %{to_user},
       header: '%{from_user} Vam je poslao poruku preko OpenStreetMap sa predmetom
         %{subject}:'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} Vas je dodao kao prijatelja'
-      had_added_you: '%{user} Vas je dodao kao prijatelja na OpenStreetMap-u.'
+    follow_notification:
       see_their_profile: Možete vidjeti njihov profil na %{userurl}.
-      befriend_them: Takođe, možete ih dodati kao prijatelja na %{befriendurl}.
     gpx_failure:
       failed_to_import: 'Import nije uspio. Evo greške:'
       subject: '[OpenStreetMap] GPX Import nije uspio'
@@ -938,11 +907,13 @@ bs:
       wrong_user: 'Prijavljeni ste kao: `%{user}'', ali poruka za koju ste tražili
         da pročitate nije poslana od strane ili tom korisniku. Molimo, prijavite se
         kao ispravan korisnik kako bi ste je pročitali.'
-    mark:
-      as_read: Poruka označena kao pročitana
-      as_unread: Poruka označena kao nepročitana
     destroy:
       destroyed: Poruka izbrisana
+    read_marks:
+      create:
+        notice: Poruka označena kao pročitana
+      destroy:
+        notice: Poruka označena kao nepročitana
     mailboxes:
       heading:
         my_inbox: Moja dolazna pošta
@@ -1268,7 +1239,6 @@ bs:
       display name description: Vaše javno prikazano korisničko ime. Možete ga promjeniti
         kasnije u postavkama.
       continue: Otvorite račun
-      terms accepted: Hvala za prihvatanje novih uslova za doprinosioce!
     no_such_user:
       title: Taj korisnik ne postoji.
       heading: Korisnik %{user} ne postoji
@@ -1287,8 +1257,6 @@ bs:
       diary: dnevnik
       edits: uređivanja
       traces: trase
-      remove as friend: ukloniti kao prijatelja
-      add as friend: dodati prijatelja
       mapper since: 'Maper od:'
       ct status: 'Uslovi za doprinosioce:'
       ct undecided: Neodlučen
@@ -1339,6 +1307,13 @@ bs:
       user:
         summary_html: '%{name} napravljeno sa %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
+    changeset_comments:
+      page:
+        when: Kada
+        comment: Komentar
+    diary_comments:
+      page:
+        post: Post
     suspended:
       title: Račun suspendiran
       heading: Račun suspendiran
index 5ca6ecb6dfc8ac995ec070edb0296e63723cab44..ffc88f6567e353b11177c8f6558146ddd40dfa4d 100644 (file)
@@ -289,13 +289,6 @@ ca:
       external auth: Autenticació externa
       openid:
         link text: què és això?
-      public editing:
-        heading: Modificació pública
-        enabled: Activades. No anònim i amb permís per editar dades.
-        enabled link text: què és això?
-        disabled: Desactivades i sense permís per a editar; les modificacions anteriors
-          són anònimes.
-        disabled link text: per què no puc editar?
       contributor terms:
         heading: Termes de col·laboració
         agreed: Heu acceptat els nous termes de col·laboració.
@@ -376,6 +369,7 @@ ca:
         readable_summary: resum llegible per humans
         informal_translations: traduccions informals
         continue: Continua
+        cancel: Cancel·la
         you need to accept or decline: Per a poder continuar, llegiu i després accepteu
           o rebutgeu els nous termes de col·laboració .
         legale_select: 'País de residència:'
@@ -383,6 +377,8 @@ ca:
           france: França
           italy: Itàlia
           rest_of_world: Resta del món
+      update:
+        terms accepted: Gràcies per acceptar els nous termes de col·laboració.
       terms_declined_flash:
         terms_declined_html: Ens sap greu que hàgiu decidit no acceptar els nous termes
           de les contribucions. Per més informació, vegeu %{terms_declined_link}.
@@ -499,7 +495,6 @@ ca:
       title: Conjunts de canvis
       title_user: Conjunts de canvis de %{user}
       title_user_link_html: Conjunts de canvis de %{user_link}
-      title_friend: Conjunts de canvis dels meus amics
       title_nearby: Conjunts de canvis d'usuaris propers
       empty: No s'ha trobat cap conjunt de canvis.
       empty_area: No hi ha cap conjunt de canvis en aquesta àrea.
@@ -553,18 +548,13 @@ ca:
     popup:
       your location: La vostra ubicació
       nearby mapper: Cartògraf proper
-      friend: Amic
     show:
       title: El meu tauler
       no_home_location_html: '%{edit_profile_link} i establiu la ubicació de casa
         vostra per veure usuaris propers.'
       edit_your_profile: Editeu el vostre perfil
-      my friends: Les meves amistats
-      no friends: Encara no has afegit cap amic.
       nearby users: Altres usuaris propers
       no nearby users: Cap usuari manifesta cartografiar a prop.
-      friends_changesets: conjunts de canvis dels vostres amics
-      friends_diaries: entrades de diari dels vostres amics
       nearby_changesets: conjunts de canvis d'usuaris propers
       nearby_diaries: entrades de diari d'usuaris propers
   diary_entries:
@@ -575,7 +565,6 @@ ca:
       use_map_link: Useu el mapa
     index:
       title: Diaris dels usuaris
-      title_friends: Diaris d'amics
       title_nearby: Diaris d'usuaris propers
       user_title: Diari de %{user}
       in_language_title: Entrades de diari en %{language}
@@ -592,6 +581,8 @@ ca:
       title: Diari de %{user} | %{title}
       user_title: Diari de %{user}
       discussion: Discussió
+      subscribe: Subscriu
+      unsubscribe: Cancel·la la subscripció
       leave_a_comment: Feu un comentari
       login_to_leave_a_comment_html: '%{login_link} per a fer un comentari'
       login: Inicia sessió
@@ -632,21 +623,14 @@ ca:
       all:
         title: Entrades de diari d'OpenStreetMap
         description: Entrades de diari recents dels usuaris d'OpenStreetMap
-  diary_comments:
-    index:
-      title: Comentaris del diari afegits per %{user}
-      heading: Comentaris del diari de %{user}
-      subheading_html: Comentaris del diari afegits per %{user}
-      no_comments: Sense comentaris al diari
-    page:
-      post: Publicar
-      when: Quan
-      comment: Comentari
   doorkeeper:
     flash:
       applications:
         create:
           notice: S'ha registrat l'aplicació.
+    scopes:
+      openid: Autentiqueu el vostre compte
+      phone: Vegeu el vostre número de telèfon
   errors:
     contact:
       contact_url_title: Diferents canals de contacte explicats
@@ -654,6 +638,8 @@ ca:
       contact_the_community_html: No dubteu a %{contact_link} la comunitat d'OpenStreetMap
         si heu trobat un enllaç trencat / error. Anoteu l'URL exacte de la vostra
         sol·licitud.
+    bad_request:
+      title: Petició incorrecta
     forbidden:
       title: Prohibit
       description: L'operació que heu sol·licitat al servidor OpenStreetMap només
@@ -666,20 +652,12 @@ ca:
       title: No s'ha trobat el fitxer
       description: No s'ha pogut trobar cap operació de fitxer/directori/API amb aquest
         nom al servidor d'OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Voleu afegir %{user} com un amic?
-      button: Afegeix als amics
-      success: '%{name} és ara el vostre amic!'
-      failed: Ho sentim, no afegir %{name} com un amic.
-      already_a_friend: Que ja sou amics amb %{name}.
-      limit_exceeded: Us heu amistat amb molts usuaris recentment. Espereu una mica
-        abans de fer-ho amb algú més.
-    remove_friend:
-      heading: Voleu suprimir %{user} dels amics?
-      button: Suprimeix dels amics
-      success: '%{name} s''ha suprimit dels teus amics.'
-      not_a_friend: '%{name} no és un dels seus amics.'
+  follows:
+    show:
+      follow:
+        button: Segueix l'usuari
+      unfollow:
+        button: Deixa de seguir l'usuari
   geocoder:
     search:
       title:
@@ -849,6 +827,7 @@ ca:
           college: Edifici universitari
           commercial: Edifici comercial
           construction: Edifici en construcció
+          cowshed: Estable
           detached: Casa unifamiliar
           dormitory: Residència Universitària
           duplex: Dúplex
@@ -878,6 +857,7 @@ ca:
           shed: Cobert
           stable: Estable
           static_caravan: Caravana
+          sty: Porquera
           temple: Edifici d'un temple
           terrace: Edifici de terrasses
           train_station: Edifici d'estació de trens
@@ -1014,6 +994,13 @@ ca:
           wayside_shrine: Oratori
           wreck: Derelicte
           "yes": Lloc històric
+        information:
+          board: Tauler d'informació
+          map: Mapa
+          office: Oficina de turisme
+          terminal: Terminal d'informació
+          sign: Cartell informatiu
+          stele: Estela d'informació
         junction:
           "yes": Intersecció
         landuse:
@@ -1086,6 +1073,8 @@ ca:
           track: Pista d'atletisme
           water_park: Parc aquàtic
           "yes": Oci
+        lock:
+          "yes": Resclosa
         man_made:
           adit: Galeria d'accés
           advertising: Publicitat
@@ -1426,6 +1415,16 @@ ca:
           building_passage: Passatge en edifici
           culvert: Desguàs
           "yes": Túnel
+        water:
+          lake: Llac
+          pond: Bassa
+          reservoir: Embassament
+          fishpond: Estany de peixos
+          lagoon: Llacuna
+          wastewater: Aigües residuals
+          oxbow: Braç mort
+          stream_pool: Gorg
+          lock: Resclosa
         waterway:
           artificial: Curs d'aigua artificial
           boatyard: Drassana
@@ -1610,14 +1609,10 @@ ca:
         a l'autor a %{replyurl}
       footer_html: També podeu llegir el missatge a %{readurl} i podeu enviar un missatge
         a l'autor a %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hola %{to_user},
-      subject: '[OpenStreetMap] %{user} us ha afegit a la llista d''amics'
-      had_added_you: '%{user} us ha afegit com a amic a l''OpenStreetMap.'
       see_their_profile: Podeu veure el seu perfil a %{userurl}.
       see_their_profile_html: Podeu veure el seu perfil a %{userurl}.
-      befriend_them: També el podeu afegir com a amic a %{befriendurl}.
-      befriend_them_html: També el podeu afegir com a amic a %{befriendurl}.
     gpx_failure:
       hi: Hola %{to_user},
       failed_to_import: 'no es pot importar. L''error ha estat:'
@@ -1763,14 +1758,17 @@ ca:
       wrong_user: Heu iniciat la sessió com a «%{user}», però aquest usuari no ha
         escrit ni ha rebut el missatge que voleu llegir. Per a poder llegir-lo, inicieu
         la sessió amb l'usuari correcte.
-    mark:
-      as_read: Missatge marcat com a llegit
-      as_unread: Missatge marcat com a no llegit
-    unmute:
-      notice: El missatge s'ha mogut a la safata d'entrada
-      error: No s'ha pogut moure el missatge a la safata d'entrada.
     destroy:
       destroyed: Missatge suprimit
+    read_marks:
+      create:
+        notice: Missatge marcat com a llegit
+      destroy:
+        notice: Missatge marcat com a no llegit
+    mutes:
+      destroy:
+        notice: El missatge s'ha mogut a la safata d'entrada
+        error: No s'ha pogut moure el missatge a la safata d'entrada.
     mailboxes:
       heading:
         my_inbox: La meva safata d'entrada
@@ -1836,6 +1834,16 @@ ca:
   preferences:
     show:
       title: Les meves preferències
+      preferred_site_color_scheme: Esquema de colors preferit pel web
+      site_color_schemes:
+        auto: Auto
+        light: Clar
+        dark: Fosc
+      preferred_map_color_scheme: Esquema de colors preferit pel mapa
+      map_color_schemes:
+        auto: Auto
+        light: Clar
+        dark: Fosc
       save: Actualitza les preferències
     update:
       failure: No s'han pogut actualitzar les preferències.
@@ -2295,6 +2303,9 @@ ca:
           hospital: Hospital
           building: Edifici significatiu
           station: Estació de tren
+          railway_halt: Parada del ferrocarril
+          subway_station: Estació de metro
+          tram_stop: Parada de tramvia
           summit: Cim
           peak: Cim
           tunnel: Línia discontínua = túnel
@@ -2474,13 +2485,14 @@ ca:
       heading: Emmagatzematge GPX fora de línia
       message: El sistema d'emmagatzematge i pujada de fitxers GPX no està disponible
         actualment.
-    georss:
-      title: Traces GPS d'OpenStreetMap
-    description:
-      description_with_count:
-        one: Fitxer GPX amb %{count} punt de %{user}
-        other: Fitxer GPX amb %{count} punts de %{user}
-      description_without_count: Fitxer GPX de %{user}
+    feeds:
+      show:
+        title: Traces GPS d'OpenStreetMap
+      description:
+        description_with_count:
+          one: Fitxer GPX amb %{count} punt de %{user}
+          other: Fitxer GPX amb %{count} punts de %{user}
+        description_without_count: Fitxer GPX de %{user}
   application:
     permission_denied: No tens permís per a accedir aquesta acció
     require_cookies:
@@ -2518,6 +2530,19 @@ ca:
       wikipedia:
         title: Inicieu la sessió amb Viquipèdia
         alt: Logotip de Viquipèdia
+    share:
+      email:
+        alt: Icona de correu electrònic
+      bluesky:
+        alt: Icona de Bluesky
+      linkedin:
+        alt: Icona de LinkedIn
+      mastodon:
+        alt: Icona de Mastodon
+      telegram:
+        alt: Icona de Telegram
+      x:
+        alt: Icona de X
   oauth:
     permissions:
       missing: No heu permès l'accés de l'aplicació a aquesta característica
@@ -2606,7 +2631,6 @@ ca:
           adreces de correu electrònic
         contributor_terms: condicions de col·laboració
       continue: Registreu-vos-hi
-      terms accepted: Gràcies per acceptar els nous termes de col·laboració.
       email_help:
         html: La vostra adreça no es mostrarà públicament, consulteu la nostra %{privacy_policy_link}
           per obtenir més informació.
@@ -2639,8 +2663,6 @@ ca:
       edits: Edicions
       traces: Traces
       notes: Notes de mapa
-      remove as friend: Deixa l'amistat
-      add as friend: Afegeix com a amic
       mapper since: 'Cartografiant des de:'
       uid: 'ID d''usuari:'
       ct status: 'Termes de col·laboració:'
@@ -2700,6 +2722,15 @@ ca:
       user:
         summary_html: '%{name} creat a partir de %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creat el %{date}'
+    changeset_comments:
+      page:
+        when: Quan
+        comment: Comentari
+    diary_comments:
+      index:
+        title: Comentaris del diari afegits per %{user}
+      page:
+        post: Publicar
     suspended:
       title: Compte suspès
       heading: Compte suspès
index e1ab33c204f269fdbe106042c12e1675670de126..779fa591f5ce2fa6818d023a8b7ecb0abff45d33 100644 (file)
@@ -248,13 +248,6 @@ ce:
       external auth: Арахьара аутентификаци
       openid:
         link text: хӀун йу хӀара?
-      public editing:
-        heading: Йукъара нисайар
-        enabled: ДӀахӀоттийна. Аноним йац, нисайа йиш ю.
-        enabled link text: хӀун йу хӀара?
-        disabled: ДӀасакъаьстина а, нисайа йиш йоцуш а, хьалха дина массо а хийцамаш
-          анониман ду.
-        disabled link text: Соьга хьунда ца йало нийсарш?
       contributor terms:
         heading: Дакъалацарна хьоьлаш
         agreed: Хьо реза хила керлачу дакъалацаран низаман.
@@ -333,7 +326,6 @@ ce:
         readable_summary: адамо еша йиш йолу чулацам
         informal_translations: формалан доцу гочдар
         continue: Кхин дӀа
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=ce
         you need to accept or decline: Дехар ду, деша, тӀаккха реза хила йа йухатоха
           керла дакъалацаран хьелаш.
         legale_select: 'Дехар ду, шу деха пачхьалкх хьаржар:'
@@ -341,6 +333,8 @@ ce:
           france: Французийн
           italy: Италийн
           rest_of_world: Дисна дуьйне
+      update:
+        terms accepted: Баркалла хьуна, керла лелоран биллам тӀеэцарна!
       terms_declined_flash:
         terms_declined_html: Тхуна хала хетта, ахь керла Лелоран хьелаш тӀе ца эца
           сацам барна. Кхин дӀа хаа лууш волчунна, хьажа  %{terms_declined_link}.
@@ -469,7 +463,6 @@ ce:
       title: Нисдарш
       title_user: Декъашхочун %{user} нисдарш
       title_user_link_html: Декъашхочун  %{user_link} нисдарш
-      title_friend: Хьан доттагӀийн нисдарш
       title_nearby: Уллера декъашхойн нисдарш
       empty: Нисдарш цакарий.
       empty_area: Кхузахь нисдарш дина дац.
@@ -484,19 +477,6 @@ ce:
         created: Кхоьллина
         closed: ДӀачӀагӀа
         belongs_to: Автор
-    subscribe:
-      heading: ТIевазалур вуй хийцамийн дийцар тIе?
-      button: ТIевазало дийцар тIе
-    unsubscribe:
-      heading: ХӀокху хийцамийн дийцар тIера дӀакъаста?
-      button: ДӀакъаста дийцар тIера
-    heading:
-      title: 'Нисдарш: %{id}'
-      created_by_html: Кхоьлина %{link_user} on %{created}.
-    no_such_entry:
-      heading: 'ДӀайазайина йац id: %{id}'
-      body: Бехк ма билла, id %{id} хийцамаш бац. Дехар ду, нийса йазийни хьажа, хьо
-        чоьха ваьла ссылка нийса ца хила а тарло.
     show:
       title: 'Нисдарш: %{id}'
       created: Кхоьллина %{when}
@@ -528,6 +508,21 @@ ce:
     timeout:
       sorry: Бехк ма билла, ахьа бихина нисдарийн могӀа, арабаккха тӀехь сов хьан
         оьшу.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: ТIевазалур вуй хийцамийн дийцар тIе?
+        button: ТIевазало дийцар тIе
+      unsubscribe:
+        heading: ХӀокху хийцамийн дийцар тIера дӀакъаста?
+        button: ДӀакъаста дийцар тIера
+    heading:
+      title: 'Нисдарш: %{id}'
+      created_by_html: Кхоьлина %{link_user} on %{created}.
+    no_such_entry:
+      heading: 'ДӀайазайина йац id: %{id}'
+      body: Бехк ма билла, id %{id} хийцамаш бац. Дехар ду, нийса йазийни хьажа, хьо
+        чоьха ваьла ссылка нийса ца хила а тарло.
   dashboards:
     contact:
       km away: Хьун тIера %{count} км
@@ -536,19 +531,14 @@ ce:
     popup:
       your location: Хьо волу/йолу меттиг
       nearby mapper: Уллера картадилархо
-      friend: ДоттагӀ
     show:
       title: Сан панель
       no_home_location_html: '%{edit_profile_link} а, хьо волу меттиг а хӀоттае, уллера
         декъашхо гарахьам.'
       edit_your_profile: Хьайн профиль нисайе
-      my friends: ДоттагӀий
-      no friends: Цкъачунна цхьа а доттагӀ тӀетоьхна вац ахь.
       nearby users: Кхибола уллера декъашхой
       no nearby users: Кхин цхьа а декъашхо вац цкъачунна уллех карта хӀоттош болх
         беш.
-      friends_changesets: доттагӀийн хийцамаш
-      friends_diaries: доттагӀийн тептарш
       nearby_changesets: лулара хийцамаш
       nearby_diaries: лулара тептаран йаздарш
   diary_entries:
@@ -559,7 +549,6 @@ ce:
       use_map_link: Карта лела де
     index:
       title: Тептарш
-      title_friends: ДоттагӀийн тептарш
       title_nearby: Уллера декъашхойн тептарш
       user_title: Декъашхочун тептар %{user}
       in_language_title: '%{language} маттахь дневникан дӀайаздарш'
@@ -626,15 +615,6 @@ ce:
       heading: РoгӀepa йаззам йазъечу дискуссина тIера дӀакъастий?
       button: ДӀакъаста дийцар тIера
   diary_comments:
-    index:
-      title: Декъашхочо тӀетоьхначу дневникан йаздаршна комментареш %{user}
-      heading: '%{user} тептар тIе комментареш'
-      subheading_html: тдекъашхочо тептар тIе комментареш тоьхна %{user}
-      no_comments: цхьа комментари йац тептартех
-    page:
-      post: Хаам
-      when: Маца
-      comment: Коммент
     new:
       heading: Дневник йазъйаран дискуссе комментари тӀетоха?
   doorkeeper:
@@ -695,20 +675,6 @@ ce:
       title: Файл цакарий
       description: Цу цӀарца йолу файл/каталог/API операци ца карийра OpenStreetMap
         сервер тӀехь (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} доттагӀ санна тӀетохий?'
-      button: ТӀетоха доттагӀ сана
-      success: '%{name} хIинца хьа доттагI ву!'
-      failed: Бехк ма билла,  %{name} доттагӀ санна тӀе цатохавела.
-      already_a_friend: Хьо хӀинца %{name} доттагӀ ву .
-      limit_exceeded: Дукха юзершца доттагӀалла лелийна ахь тӀаьхьарчу хенахь. Кхин
-        доттагӀалла лело гӀертале жимма собар дехьа.
-    remove_friend:
-      heading: ДоттагӀ %{user} дӀаваккхий?
-      button: ДоттагӀ дӀаваккха
-      success: '%{name} хьан доттагIшна йукъара дӀаваьккхина.'
-      not_a_friend: '%{name} хIинца хьа доттагI вац.'
   geocoder:
     search:
       title:
@@ -1649,14 +1615,10 @@ ce:
         ду %{replyurl} тӀера
       footer_html: Иштта хьа %{readurl} тӀера хаам еша йиш йу, авторе хаам бахьийта
         мегар ду %{replyurl} тӀера
-    friendship_notification:
+    follow_notification:
       hi: Маршалла ду %{to_user},
-      subject: '[OpenStreetMap] %{user} хьо доттагӀ санна тӀетоьхна'
-      had_added_you: '%{user} -о OpenStreetMap чохь хьо доттагӀ санна тӀетоьхна.'
       see_their_profile: Хьан церан профиль ган йиш йу %{userurl} тӀехь.
       see_their_profile_html: Хьан церан профиль ган йиш йу %{userurl} тӀехь.
-      befriend_them: Иштта %{befriendurl} чохь доттагӀ санна тӀетоха йиш йу хьан.
-      befriend_them_html: Иштта %{befriendurl} чохь доттагӀ санна тӀетоха йиш йу хьан.
     gpx_failure:
       hi: Маршалла ду %{to_user},
       failed_to_import: 'импорт ян аьтто ца баьлла. Кхузахь гӀалат ду:'
@@ -1809,14 +1771,17 @@ ce:
       wrong_user: Хьо `%{user}' санна чуваьлла ву, амма ахь деша дехна хаам цу декъашхочо
         я цуьнга дӀа ца бахьийтина. Дехар ду, нийса лелош верг санна чу вала, иза
         ешара а.
-    mark:
-      as_read: Хаам баьшна аьлла билгалбаьккхина
-      as_unread: Хаам ца баьшна аьлла билгалбаьккхина
-    unmute:
-      notice: Хаам дӀабаькхна "Чудохурша" чура
-      error: Хаам дӀа ца бахийтина "Чудохурша" чу.
     destroy:
       destroyed: Хаам дӀабаьккхина
+    read_marks:
+      create:
+        notice: Хаам баьшна аьлла билгалбаьккхина
+      destroy:
+        notice: Хаам ца баьшна аьлла билгалбаьккхина
+    mutes:
+      destroy:
+        notice: Хаам дӀабаькхна "Чудохурша" чура
+        error: Хаам дӀа ца бахийтина "Чудохурша" чу.
     mailboxes:
       heading:
         my_inbox: Сан чудохурша
@@ -2562,13 +2527,14 @@ ce:
     offline:
       heading: GPX дуо дIайайина
       message: GPX файлан дуо а, чуйакхаран а система карарчу хенахь болх беш йац.
-    georss:
-      title: OpenStreetMap GPS-трекаш
-    description:
-      description_with_count:
-        one: GPX файл %{count}-тIера тIадам %{user}-ах
-        other: -ах GPX файл %{count}-тIера тIадамаш %{user}-ах
-      description_without_count: GPX файл %{user} декъашхочун
+    feeds:
+      show:
+        title: OpenStreetMap GPS-трекаш
+      description:
+        description_with_count:
+          one: GPX файл %{count}-тIера тIадам %{user}-ах
+          other: -ах GPX файл %{count}-тIера тIадамаш %{user}-ах
+        description_without_count: GPX файл %{user} декъашхочун
   application:
     permission_denied: Хьан бакъо йац и гӀуллакх кхочушдан.
     require_cookies:
@@ -2706,7 +2672,6 @@ ce:
           адресех лаьцна дакъа а
         contributor_terms: дакъалацархочун хьелаш
       continue: Кхин дӀа
-      terms accepted: Баркалла хьуна, керла лелоран биллам тӀеэцарна!
       email_help:
         privacy_policy: Къайлаха политика
         privacy_policy_title: OSMF къайленан политика, цу йукъахь электронан почтан
@@ -2744,8 +2709,6 @@ ce:
       edits: Нисдарш
       traces: Трекаш
       notes: Билгалонаш
-      remove as friend: ДӀаваккха доттагӀийн йукъара
-      add as friend: ДоттагӀийн йукъатоха
       mapper since: 'ДӀавазвелла:'
       last map edit: 'ТӀаьххьара карта хийцин:'
       no activity yet: Цкъачунна жигаралла йац
@@ -2821,6 +2784,15 @@ ce:
       user:
         summary_html: '%{name} кхоьллина %{date}, %{ip_address} адрес чуьра'
         summary_no_ip_html: '%{name} кхоьллина %{date}'
+    changeset_comments:
+      page:
+        when: Маца
+        comment: Коммент
+    diary_comments:
+      index:
+        title: Декъашхочо тӀетоьхначу дневникан йаздаршна комментареш %{user}
+      page:
+        post: Хаам
     suspended:
       title: Аккаунт сацийна
       heading: Аккаунт сацийна
index 2698b768a65e070e647131caafa805dbc3710bb0..0a76eab2e92ce273001dc595c30e9144ab7524b5 100644 (file)
@@ -41,6 +41,7 @@
 # Author: Paxt
 # Author: Reaperman
 # Author: Robins7
+# Author: Segoulas
 # Author: ShaggyCZ - Main
 # Author: Spotter
 # Author: StenSoft
@@ -135,7 +136,7 @@ cs:
         support_url: URL s podporou
         allow_read_prefs: číst jejich uživatelské nastavení
         allow_write_prefs: měnit jejich uživatelské nastavení
-        allow_write_diary: vytvářet deníkové záznamy, komentovat a navazovat přátelství
+        allow_write_diary: vytvářet deníkové záznamy a komentáře
         allow_write_api: upravovat mapu
         allow_read_gpx: číst jejich soukromé GPS stopy
         allow_write_gpx: nahrávat GPS stopy
@@ -324,13 +325,6 @@ cs:
       openid:
         link: https://wiki.openstreetmap.org/wiki/Cs:OpenID
         link text: co to znamená?
-      public editing:
-        heading: Veřejné editace
-        enabled: Aktivní. Není anonym, smí editovat data.
-        enabled link text: co to znamená?
-        disabled: Deaktivováno, nemůže editovat data, všechny předchozí editace jsou
-          anonymní.
-        disabled link text: proč nemůžu editovat?
       contributor terms:
         heading: Podmínky pro přispěvatele
         agreed: Odsouhlasili jste nové Podmínky pro přispěvatele.
@@ -408,7 +402,6 @@ cs:
         readable_summary: lidsky čitelné shrnutí
         informal_translations: neoficiální překlady
         continue: Pokračovat
-        declined: http://wiki.openstreetmap.org/wiki/CS:Contributor_Terms_Declined?uselang=cs
         cancel: Zrušit
         you need to accept or decline: Pro pokračování si prosím přečtěte a přijměte
           nebo odmítněte nové Podmínky pro přispěvatele.
@@ -417,6 +410,8 @@ cs:
           france: Francie
           italy: Itálie
           rest_of_world: Zbytek světa
+      update:
+        terms accepted: Děkujeme za odsouhlasení nových podmínek pro přispěvatele!
       terms_declined_flash:
         terms_declined_html: Je nám líto, že jste se rozhodli nepřijmout nové Podmínky
           pro přispěvatele. Podrobnější informace najdete na %{terms_declined_link}.
@@ -575,7 +570,7 @@ cs:
       title: Sady změn
       title_user: Sady změn uživatele %{user}
       title_user_link_html: Sady změn uživatele %{user_link}
-      title_friend: Sady změn mých přátel
+      title_followed: Sady změn sledovaných
       title_nearby: Sady změn uživatelů poblíž
       empty: Nebyly nalezeny žádné sady změn.
       empty_area: Pro tuto oblast neexistují žádné sady změn.
@@ -590,19 +585,6 @@ cs:
         created: Vytvořeno
         closed: Uzavřeno
         belongs_to: Autor
-    subscribe:
-      heading: Přihlásit se k odběru následující diskuse o sadě změn?
-      button: Odebírat diskusi
-    unsubscribe:
-      heading: Zrušit odběr následující diskuse o sadě změn?
-      button: Zrušit odběr diskuse
-    heading:
-      title: Sada změn %{id}
-      created_by_html: Vytvořil uživatel %{link_user} %{created}.
-    no_such_entry:
-      heading: Záznam s ID %{id} neexistuje
-      body: Je nám líto, ale sada změn s ID %{id} neexistuje. Zkontrolujte překlepy
-        nebo jste možná klikli na chybný odkaz.
     show:
       title: 'Sada změn: %{id}'
       created: 'Vytvořeno: %{when}'
@@ -635,6 +617,21 @@ cs:
       sorry: 'Je nám líto, ale sada změn #%{id} neexistuje.'
     timeout:
       sorry: Omlouváme se, ale vámi požadovaný seznam sad změn se načítal příliš dlouho.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Přihlásit se k odběru následující diskuse o sadě změn?
+        button: Odebírat diskusi
+      unsubscribe:
+        heading: Zrušit odběr následující diskuse o sadě změn?
+        button: Zrušit odběr diskuse
+    heading:
+      title: Sada změn %{id}
+      created_by_html: Vytvořil uživatel %{link_user} %{created}.
+    no_such_entry:
+      heading: Záznam s ID %{id} neexistuje
+      body: Je nám líto, ale sada změn s ID %{id} neexistuje. Zkontrolujte překlepy
+        nebo jste možná klikli na chybný odkaz.
   dashboards:
     contact:
       km away: '%{count} km'
@@ -643,19 +640,19 @@ cs:
     popup:
       your location: Vaše poloha
       nearby mapper: Nedaleký uživatel
-      friend: Přítel
+      following: Sledovaný
     show:
       title: Moje nástěnka
       no_home_location_html: '%{edit_profile_link} a nastavte si domovskou lokaci,
         abyste viděli uživatele ve vašem okolí.'
       edit_your_profile: Upravte si profil
-      my friends: Moji přátelé
-      no friends: Zatím jste nepřidali žádné přátele.
+      followings: Sledovaní
+      no followings: Zatím nesledujete žádného uživatele.
       nearby users: Další uživatelé poblíž
       no nearby users: Nejsou známi žádní uživatelé, kteří by uvedli domov blízko
         vás.
-      friends_changesets: sady změn přátel
-      friends_diaries: záznamy v denících přátel
+      followed_changesets: sady změn
+      followed_diaries: deníkové záznamy
       nearby_changesets: sady změn uživatelů poblíž
       nearby_diaries: záznamy v denících uživatelů poblíž
   diary_entries:
@@ -666,7 +663,7 @@ cs:
       use_map_link: Použít mapu
     index:
       title: Deníky uživatelů
-      title_friends: Deníky přátel
+      title_followed: Deníky sledovaných
       title_nearby: Deníky uživatelů poblíž
       user_title: Deník uživatele %{user}
       in_language_title: Deníkové záznamy v jazyce %{language}
@@ -734,15 +731,6 @@ cs:
       heading: Odhlásit odběr následující diskuse k deníkovému záznamu?
       button: Zrušit odběr diskuse
   diary_comments:
-    index:
-      title: Komentáře k deníkům přidané uživatelem %{user}
-      heading: Deníkové komentáře uživatele %{user}
-      subheading_html: Komentáře k deníkům přidané uživatelem %{user}
-      no_comments: Žádné komentáře k deníkům
-    page:
-      post: Záznam
-      when: Kdy
-      comment: Komentář
     new:
       heading: Přidat komentář do následující diskuse k deníkovému záznamu?
   doorkeeper:
@@ -799,20 +787,23 @@ cs:
       title: Soubor nenalezen
       description: Na serveru OpenStreetMap se nepodařilo najít soubor/adresář/operaci
         API s tímto názvem (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Přidat uživatele %{user} jako přítele?
-      button: Přidat jako přítele
-      success: '%{name} je nyní váš přítel!'
-      failed: Je mi líto, nepodařilo se přidat %{name} jako přítele.
-      already_a_friend: Již jste přátelé s %{name}.
-      limit_exceeded: V poslední době jste přidali spoustu přátel. Před dalším přidáváním
-        přátel chvíli počkejte.
-    remove_friend:
-      heading: Odebrat uživatele %{user} z přátel?
-      button: Odebrat z přátel
-      success: '%{name} byl odstraněn z vašich přátel.'
-      not_a_friend: '%{name} není mezi vašimi přáteli.'
+  follows:
+    show:
+      follow:
+        heading: Chcete sledovat uživatele %{user}?
+        button: Sledovat uživatele
+      unfollow:
+        heading: Chcete přestat sledovat uživatele %{user}?
+        button: Přestat sledovat uživatele
+    create:
+      success: Nyní sledujete uživatele %{name}!
+      failed: Je nám líto, ale váš požadavek sledovat uživatele %{name} selhal.
+      already_followed: Uživatele %{name} už sledujete.
+      limit_exceeded: V poslední době jste začali sledovat spoustu uživatelů. Před
+        sledováním dalších prosím chvíli počkejte.
+    destroy:
+      success: Úspěšně jste přestali sledovat uživatele %{name}.
+      not_followed: Uživatele %{name} nesledujete.
   geocoder:
     search:
       title:
@@ -1785,14 +1776,14 @@ cs:
         na %{replyurl}
       footer_html: Můžete si také přečíst zprávu na %{readurl} a můžete poslat zprávu
         autorovi na %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Dobrý den, uživateli %{to_user},
-      subject: '[OpenStreetMap] %{user} si vás přidal jako přítele'
-      had_added_you: '%{user} si vás na OpenStreetMap přidal(a) jako přítele.'
+      subject: '[OpenStreetMap] Uživatel %{user} vás začal sledovat'
+      followed_you: Uživatel %{user} vás nyní na OpenStreetMap sleduje.
       see_their_profile: Jeho/její profil si můžete prohlédnout na %{userurl}.
       see_their_profile_html: Jeho/její profil si můžete prohlédnout na %{userurl}.
-      befriend_them: Můžete si ho/ji také přidat jako přítele na %{befriendurl}.
-      befriend_them_html: Můžete si ho/ji také přidat jako přítele na %{befriendurl}.
+      follow_them: Můžete ho také začít sledovat na %{followurl}.
+      follow_them_html: Můžete ho také začít sledovat na %{followurl}.
     gpx_details:
       details: 'Podrobnosti o vašem souboru:'
       filename: Název souboru
@@ -1817,6 +1808,8 @@ cs:
       subject: '[OpenStreetMap] Neúspěšný import GPX'
     gpx_success:
       hi: Ahoj %{to_user},
+      imported_successfully: Vypadá to, že se váš soubor úspěšně naimportoval jako
+        GPS stopa.
       all_your_traces: Všechny úspěšně načtené GPX stopy můžete najít na %{url}
       all_your_traces_html: Všechny úspěšně načtené GPX stopy můžete najít na %{url}.
       subject: '[OpenStreetMap] Úspěšný import GPX'
@@ -1959,14 +1952,17 @@ cs:
       wrong_user: Jste přihlášeni jako „%{user}“, ale zpráva, kterou si chcete přečíst,
         není ani od, ani pro tohoto uživatele. Pokud si ji chcete přečíst, přihlaste
         se pod správným účtem.
-    mark:
-      as_read: Zpráva označena jako přečtená
-      as_unread: Zpráva označena jako nepřečtená
-    unmute:
-      notice: Zpráva byla přesunuta do doručené pošty
-      error: Zprávu se nepodařilo přesunout do doručené pošty.
     destroy:
       destroyed: Zpráva smazána
+    read_marks:
+      create:
+        notice: Zpráva označena jako přečtená
+      destroy:
+        notice: Zpráva označena jako nepřečtená
+    mutes:
+      destroy:
+        notice: Zpráva byla přesunuta do doručené pošty
+        error: Zprávu se nepodařilo přesunout do doručené pošty.
     mailboxes:
       heading:
         my_inbox: Má doručená pošta
@@ -2128,6 +2124,9 @@ cs:
       preview: Náhled
       help: Nápověda
     pagination:
+      changeset_comments:
+        older: Starší komentáře
+        newer: Novější komentáře
       diary_comments:
         older: Starší komentáře
         newer: Novější komentáře
@@ -2739,13 +2738,14 @@ cs:
     offline:
       heading: GPX úložiště offline
       message: Úložiště GPX souborů a systém pro nahrávání jsou momentálně mimo provoz.
-    georss:
-      title: GPS stopy z OpenStreetMap
-    description:
-      description_with_count:
-        one: GPX soubor s %{count} bodem od uživatele %{user}
-        other: GPX soubor s %{count} body od uživatele %{user}
-      description_without_count: GPX soubor od uživatele %{user}
+    feeds:
+      show:
+        title: GPS stopy z OpenStreetMap
+      description:
+        description_with_count:
+          one: GPX soubor s %{count} bodem od uživatele %{user}
+          other: GPX soubor s %{count} body od uživatele %{user}
+        description_without_count: GPX soubor od uživatele %{user}
   application:
     permission_denied: Pro přístup k této akci nemáte oprávnění
     require_cookies:
@@ -2814,7 +2814,7 @@ cs:
       openid: Přihlaste se pomocí OpenStreetMap
       read_prefs: Číst preference uživatele
       write_prefs: Měnit preference uživatele
-      write_diary: Vytvářet deníkové záznamy, komentovat a navazovat přátelství
+      write_diary: Vytvářet deníkové záznamy a komentáře
       write_api: Upravovat mapu
       read_gpx: Číst soukromé GPS stopy
       write_gpx: Nahrávat GPS stopy
@@ -2907,7 +2907,6 @@ cs:
           e-mailových adresách
         contributor_terms: podmínkami pro přispěvatele
       continue: Zaregistrovat se
-      terms accepted: Děkujeme za odsouhlasení nových podmínek pro přispěvatele!
       email_help:
         privacy_policy: pravidly ochrany osobních údajů
         privacy_policy_title: Pravidla ochrany osobních údajů OSMF, včetně části o
@@ -2945,8 +2944,8 @@ cs:
       edits: Úpravy
       traces: Stopy
       notes: Poznámky k mapě
-      remove as friend: Odebrat z přátel
-      add as friend: Přidat do přátel
+      unfollow: Přestat sledovat
+      follow: Sledovat
       mapper since: 'Účastník projektu od:'
       last map edit: 'Poslední úprava mapy:'
       no activity yet: Zatím žádná činnost
@@ -3025,6 +3024,26 @@ cs:
       user:
         summary_html: '%{name} vytvořeno %{date} z %{ip_address}'
         summary_no_ip_html: '%{name} vytvořen %{date}'
+    comments:
+      index:
+        heading_html: Komentáře uživatele %{user}
+        changesets: Sady změn
+        diary_entries: Deníkové záznamy
+        no_comments: Žádné komentáře
+    changeset_comments:
+      index:
+        title: Komentáře k sadám změn přidané uživatelem %{user}
+      page:
+        changeset: Sada změn
+        when: Kdy
+        comment: Komentář
+    diary_comments:
+      index:
+        title: Komentáře k deníkům přidané uživatelem %{user}
+      page:
+        post: Záznam
+        when: Kdy
+        comment: Komentář
     suspended:
       title: Účet pozastaven
       heading: Účet pozastaven
@@ -3242,6 +3261,19 @@ cs:
         k vaší poznámce, %{log_in} nebo %{sign_up}.
       anonymous_warning_log_in: přihlaste se
       anonymous_warning_sign_up: se zaregistrujte
+      counter_warning_html: Už jste odeslali nejméně %{x_anonymous_notes}, to je pro
+        komunitu skvělé, děkujeme! Co kdybyste zkusili %{contribute_by_yourself},
+        není to tak složité a %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} anonymní poznámku'
+        few: '%{count} anonymní poznámky'
+        many: '%{count} anonymní poznámky'
+        other: '%{count} anonymních poznámek'
+      counter_warning_guide_link:
+        text: přispívat sami
+        url: https://wiki.openstreetmap.org/wiki/Cs:Pr%C5%AFvodce_za%C4%8D%C3%A1te%C4%8Dn%C3%ADka
+      counter_warning_forum_link:
+        text: komunita vám může pomoci
       advice: Vaše poznámka je veřejná a může sloužit k úpravám mapy, proto nevkládejte
         žádné osobní údaje ani informace z autorskoprávně chráněných map či adresářů.
       add: Přidat poznámku
index adba509ca6d0e79de1e2fc7a53dee3c2f44001b3..8ff98d7e6c557d2db888613938b8abfaee91021b 100644 (file)
@@ -88,7 +88,7 @@ cy:
         support_url: URL Cefnogaeth
         allow_read_prefs: darllen eu dewisiadau defnyddiwr
         allow_write_prefs: addasu eu dewisiadau defnyddiwr
-        allow_write_diary: creu cofnodion dyddiadur, sylwadau a gwneud ffrindiau
+        allow_write_diary: creu cofnodion dyddiadur a sylwadau
         allow_write_api: golygu'r map
         allow_read_gpx: darllen eu harllwybrau GPS
         allow_write_gpx: uwchlwytho olion GPS
@@ -297,11 +297,6 @@ cy:
       external auth: Dilysu Allanol
       openid:
         link text: beth yw hwn?
-      public editing:
-        heading: Golygu cyhoeddus
-        enabled: Galluogwyd. Ddim yn anhysbys ac yn gallu golygu data.
-        enabled link text: beth yw hwn?
-        disabled link text: pam na allaf olygu?
       contributor terms:
         heading: Telerau Cyfranwyr
         agreed: Rydych chi wedi cytuno â'r Telerau Cyfranwyr newydd.
@@ -371,13 +366,14 @@ cy:
         readable_summary: crynodeb darllenadwy
         informal_translations: cyfieithiadau anffurfiol
         continue: Parhau
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Canslo
         legale_select: 'Gwlad breswyl:'
         legale_names:
           france: Ffrainc
           italy: Yr Eidal
           rest_of_world: Gweddill y byd
+      update:
+        terms accepted: Diolch am dderbyn telerau newydd cyfranwyr!
       terms_declined_flash:
         terms_declined_link: y dudalen wici hon
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
@@ -540,7 +536,6 @@ cy:
       title: Grwpiau newid
       title_user: Grwpiau newid gan %{user}
       title_user_link_html: Grwpiau newid gan %{user_link}
-      title_friend: Grwpiau newid gan fy ffrindiau
       title_nearby: Grwpiau newid gan ddefnyddwyr gerllaw
       empty: Heb ganfod grwpiau newid.
       empty_area: Heb ganfod grwpiau newid yn yr ardal hon.
@@ -555,19 +550,6 @@ cy:
         created: Crëwyd
         closed: Caëwyd
         belongs_to: Awdur
-    subscribe:
-      heading: Tanysgrifio i'r drafodaeth grŵp newid ganlynol?
-      button: Tanysgrifio i drafodaeth
-    unsubscribe:
-      heading: Dad-danysgrifio i'r drafodaeth grŵp newid ganlynol?
-      button: Dad-danysgrifio o'r drafodaeth
-    heading:
-      title: Grŵp newid %{id}
-      created_by_html: Crëwyd gan %{link_user} ar %{created}.
-    no_such_entry:
-      heading: 'Dim cofnod gyda''r id: %{id}'
-      body: Mae'n ddrwg gennym, nid oes grŵp newid gyda'r id %{id}. Gwiriwch eich
-        sillafu, neu efallai bod y ddolen rydych chi wedi ei chlicio arni'n anghywir.
     show:
       title: 'Grŵp newid: %{id}'
       created: 'Crëwyd: %{when}'
@@ -599,6 +581,21 @@ cy:
     timeout:
       sorry: Sori, cymerodd y rhestr o grwpiau newid y gofynnoch amdanynt rhy hir
         i'w hadalw.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Tanysgrifio i'r drafodaeth grŵp newid ganlynol?
+        button: Tanysgrifio i drafodaeth
+      unsubscribe:
+        heading: Dad-danysgrifio i'r drafodaeth grŵp newid ganlynol?
+        button: Dad-danysgrifio o'r drafodaeth
+    heading:
+      title: Grŵp newid %{id}
+      created_by_html: Crëwyd gan %{link_user} ar %{created}.
+    no_such_entry:
+      heading: 'Dim cofnod gyda''r id: %{id}'
+      body: Mae'n ddrwg gennym, nid oes grŵp newid gyda'r id %{id}. Gwiriwch eich
+        sillafu, neu efallai bod y ddolen rydych chi wedi ei chlicio arni'n anghywir.
   dashboards:
     contact:
       km away: '%{count}km i ffwrdd'
@@ -607,18 +604,18 @@ cy:
     popup:
       your location: Eich lleoliad
       nearby mapper: Mapiwr gerllaw
-      friend: Ffrind
+      following: Yn dilyn
     show:
       title: Fy Nangosfwrdd
       no_home_location_html: '%{edit_profile_link} a gosodwch eich lleoliad i weld
         defnyddwyr cyfagos.'
       edit_your_profile: Golygwch eich proffil
-      my friends: Fy ffrindiau
-      no friends: Nid ydych wedi ychwanegu unrhyw ffrindiau eto.
+      followings: Yn dilyn
+      no followings: Nid ydych wedi dilyn unrhyw ddefnyddwyr eto.
       nearby users: Defnyddwyr eraill gerllaw
       no nearby users: Nid oes defnyddwyr gerllaw sy'n dweud eu bod yn mapio eto.
-      friends_changesets: grwpiau newid eich ffrindiau
-      friends_diaries: cofnodion dyddiaduron ffrindiau
+      followed_changesets: grwpiau newid
+      followed_diaries: cofnodion dyddiadur
       nearby_changesets: grwpiau newid defnyddwyr gerllaw
       nearby_diaries: cofnodion dyddiaduron defnyddwyr gerllaw
   diary_entries:
@@ -629,7 +626,7 @@ cy:
       use_map_link: Defnyddio Map
     index:
       title: Dyddiaduron Defnyddwyr
-      title_friends: Dyddiaduron Ffrindiau
+      title_followed: Dyddiaduron eich Yn Dilyn
       title_nearby: Dyddiaduron Defnyddwyr Gerllaw
       user_title: Dyddiadur %{user}
       in_language_title: Cofnodion Dyddiadur %{language}
@@ -701,15 +698,6 @@ cy:
       heading: Dad-danysgrifio o'r drafodaeth cofnod dyddiadur ganlynol?
       button: Dad-danysgrifio o'r drafodaeth
   diary_comments:
-    index:
-      title: Sylwadau Dyddiadur wedi'u hychwanegu gan %{user}
-      heading: Sylwadau Dyddiadur %{user}
-      subheading_html: Sylwadau Dyddiadur wedi'u hychwanegu gan %{user}
-      no_comments: Dim sylwadau dyddiadur
-    page:
-      post: Post
-      when: Pryd
-      comment: Sylw
     new:
       heading: Ychwanegu sylw at y drafodaeth cofnod dyddiadur canlynol?
   doorkeeper:
@@ -753,18 +741,16 @@ cy:
       title: Gwall ap
     not_found:
       title: Heb ganfod ffeil
-  friendships:
-    make_friend:
-      heading: Ychwanegu %{user} fel ffrind?
-      button: Ychwanegu fel ffrind
-      success: Mae %{name} nawr yn ffrind i chi!
-      failed: Sori, methwyd ychwanegu %{name} fel ffrind.
-      already_a_friend: Rydych chi eisoes yn ffrindiau gyda %{name}.
-    remove_friend:
-      heading: Dad-ffrindio %{user}?
-      button: Dad-ffrindio
-      success: Tynnwyd %{name} o'ch ffrindiau.
-      not_a_friend: Nid yw %{name} yn un o'ch ffrindiau.
+  follows:
+    show:
+      follow:
+        heading: Ydych chi am ddilyn %{user}?
+        button: Dilyn Defnyddiwr
+      unfollow:
+        button: Dad-ddilyn Defnyddiwr
+    create:
+      success: Rydych nawr yn dilyn %{name}!
+      already_followed: Rydych chi eisoes yn dilyn %{name}.
   geocoder:
     search:
       title:
@@ -1094,9 +1080,9 @@ cy:
           stone: Carreg
           tomb: Beddrod
           tower: Tŵr
-          wayside_chapel: Capel Min Ffordd
-          wayside_cross: Croes Min Ffordd
-          wayside_shrine: Cysegrfa Min y Ffordd
+          wayside_chapel: Capel Min Ffordd
+          wayside_cross: Croes Min Ffordd
+          wayside_shrine: Cysegr Min Ffordd
           wreck: Llongddrylliad
           "yes": Safle Hanesyddol
         information:
@@ -1725,18 +1711,16 @@ cy:
         yr awdur yn %{replyurl}
       footer_html: Gallwch hefyd ddarllen y neges yn %{readurl} a gallwch anfon neges
         at yr awdur yn %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Helo %{to_user},
-      subject: '[OpenStreetMap] Ychwanegodd %{user} chi fel ffrind'
-      had_added_you: Mae %{user} wedi eich ychwanegu fel ffrind ar OpenStreetMap.
+      subject: '[OpenStreetMap] Mae %{user} wedi eich dilyn'
       see_their_profile: 'Gallwch weld eu proffil yma: %{userurl}.'
       see_their_profile_html: 'Gallwch weld eu proffil yma: %{userurl}.'
-      befriend_them: Gallwch hefyd eu hychwanegu fel ffrind ar %{befriendurl}.
-      befriend_them_html: Gallwch hefyd eu hychwanegu fel ffrind ar %{befriendurl}.
     gpx_details:
       details: 'Manylion eich ffeil:'
       filename: Enw ffeil
       url: URL
+      description: Disgrifiad
       tags: Tagiau
     gpx_failure:
       hi: Helo %{to_user},
@@ -1862,14 +1846,17 @@ cy:
       unread_button: Marcio fel heb ei ddarllen
       destroy_button: Dileu
       back: Yn ôl
-    mark:
-      as_read: Nodwyd fod y neges wedi ei ddarllen
-      as_unread: Nodwyd nad yw'r neges wedi ei ddarllen
-    unmute:
-      notice: Symudwyd y neges i'r Mewnflwch
-      error: Nid oedd modd symud y neges i'r Mewnflwch.
     destroy:
       destroyed: Neges wedi'i dileu
+    read_marks:
+      create:
+        notice: Nodwyd fod y neges wedi ei ddarllen
+      destroy:
+        notice: Nodwyd nad yw'r neges wedi ei ddarllen
+    mutes:
+      destroy:
+        notice: Symudwyd y neges i'r Mewnflwch
+        error: Nid oedd modd symud y neges i'r Mewnflwch.
     mailboxes:
       heading:
         my_inbox: Fy Mewnflwch
@@ -2028,6 +2015,9 @@ cy:
       preview: Rhagolwg
       help: Cymorth
     pagination:
+      changeset_comments:
+        older: Sylwadau Hŷn
+        newer: Sylwadau Diweddarach
       diary_comments:
         older: Sylwadau Hŷn
         newer: Sylwadau Diweddarach
@@ -2605,17 +2595,18 @@ cy:
     offline:
       heading: Storio GPX All-lein
       message: Nid yw'r system uwchlwytho a storio ffeiliau GPX ar gael ar hyn o bryd.
-    georss:
-      title: Olion GPS OpenStreetMap
-    description:
-      description_with_count:
-        zero: Ffeil GPX â %{count} pwynt gan %{user}
-        one: Ffeil GPX ag %{count} pwynt gan %{user}
-        two: Ffeil GPX â %{count} bwynt gan %{user}
-        few: Ffeil GPX â %{count} phwynt gan %{user}
-        many: Ffeil GPX â %{count} pwynt gan %{user}
-        other: Ffeil GPX â %{count} pwynt gan %{user}
-      description_without_count: Ffeil GPX gan %{user}
+    feeds:
+      show:
+        title: Olion GPS OpenStreetMap
+      description:
+        description_with_count:
+          zero: Ffeil GPX â %{count} pwynt gan %{user}
+          one: Ffeil GPX ag %{count} pwynt gan %{user}
+          two: Ffeil GPX â %{count} bwynt gan %{user}
+          few: Ffeil GPX â %{count} phwynt gan %{user}
+          many: Ffeil GPX â %{count} pwynt gan %{user}
+          other: Ffeil GPX â %{count} pwynt gan %{user}
+        description_without_count: Ffeil GPX gan %{user}
   application:
     permission_denied: Nid oes gennych ganiatâd i gael mynediad at y weithred honno
     require_cookies:
@@ -2682,7 +2673,7 @@ cy:
       openid: Mewngofnodi ag OpenStreetMap
       read_prefs: Darllen dewisiadau defnyddwyr
       write_prefs: Addasu dewisiadau defnyddwyr
-      write_diary: Creu cofnodion dyddiadur, sylwadau a gwneud ffrindiau
+      write_diary: Creu cofnodion dyddiadur a sylwadau
       write_api: Golygu'r map
       read_gpx: Darllen olion GPS preifat
       write_gpx: Uwchlwytho olion GPS
@@ -2750,7 +2741,6 @@ cy:
         privacy_policy: polisi preifatrwydd
         contributor_terms: thelerau cyfranwyr
       continue: Cofrestru
-      terms accepted: Diolch am dderbyn telerau newydd cyfranwyr!
       email_help:
         privacy_policy: polisi preifatrwydd
         html: Ni chaiff eich cyfeiriad e-bost ei arddangos yn gyhoeddus, gweler ein
@@ -2784,8 +2774,8 @@ cy:
       edits: Golygiadau
       traces: Olion
       notes: Nodiadau Map
-      remove as friend: Dad-ffrindio
-      add as friend: Ychwanegu ffrind
+      unfollow: Dad-ddilyn
+      follow: Dilyn
       mapper since: 'Yn mapio ers:'
       last map edit: 'Golygiad map diwethaf:'
       no activity yet: Dim gweithgaredd eto
@@ -2869,6 +2859,25 @@ cy:
       user:
         summary_html: Crëwyd %{name} o %{ip_address} ar %{date}
         summary_no_ip_html: '%{name} wedi''i greu ar %{date}'
+    comments:
+      index:
+        changesets: Grwpiau newid
+        diary_entries: Cofnodion dyddiadur
+        no_comments: Dim sylwadau
+    changeset_comments:
+      index:
+        title: Sylwadau Grŵp Newid wedi'u hychwanegu gan %{user}
+      page:
+        changeset: Grŵp newid
+        when: Pryd
+        comment: Sylw
+    diary_comments:
+      index:
+        title: Sylwadau Dyddiadur wedi'u hychwanegu gan %{user}
+      page:
+        post: Post
+        when: Pryd
+        comment: Sylw
     suspended:
       title: Cyfrif wedi'i atal
       heading: Cyfrif wedi'i atal
@@ -3070,6 +3079,10 @@ cy:
         os ydych chi eisiau derbyn diweddariadau am eich nodyn.
       anonymous_warning_log_in: Mewngofnodwch
       anonymous_warning_sign_up: gofrestrwch
+      counter_warning_guide_link:
+        url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
+      counter_warning_forum_link:
+        url: https://community.openstreetmap.org/
       advice: Mae eich nodyn yn gyhoeddus a gellid ei ddefnyddio i ddiweddaru'r map,
         felly peidiwch ag ysgrifennu gwybodaeth bersonol, na gwybodaeth o fapiau hawlfreintiedig
         neu gyfeiriaduron.
index c0251460ad22e46845d31f46f70d6a81735cd204..e007915bedc3dc46ab2b20c153a7befef80c74a3 100644 (file)
@@ -117,7 +117,7 @@ da:
         support_url: Support URL
         allow_read_prefs: læse deres brugerpræferencer
         allow_write_prefs: ændre deres brugeralternativer
-        allow_write_diary: oprette blogindlæg, kommentarer og indgå venskaber
+        allow_write_diary: oprette blogindlæg og kommentarer
         allow_write_api: ændre kortet
         allow_read_gpx: læse deres private GPS-spor
         allow_write_gpx: overføre GPS-spor
@@ -280,13 +280,6 @@ da:
       external auth: Ekstern godkendelse
       openid:
         link text: hvad er dette?
-      public editing:
-        heading: Offentlig redigering
-        enabled: Aktiveret. Ikke anonym og kan ændre data.
-        enabled link text: hvad er dette?
-        disabled: Deaktiveret og kan ikke ændre data, alle tidligere ændringer er
-          anonyme.
-        disabled link text: hvorfor kan jeg ikke redigere?
       contributor terms:
         heading: 'Vilkår for bidragsydere:'
         agreed: Du har accepteret de nye vilkår for bidragsydere.
@@ -374,11 +367,14 @@ da:
           france: Frankrig
           italy: Italien
           rest_of_world: Resten af verden
+      update:
+        terms accepted: Tak for at du accepterede de nye vilkår for bidragsydere!
       terms_declined_flash:
         terms_declined_html: Vi er kede af at du har besluttet at du ikke kan acceptere
           de nye vilkår for bidragsydere. For yderligere oplysninger, se venligst
           %{terms_declined_link}.
         terms_declined_link: denne wiki-side
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/Da:Contributor_Terms_Declined
   browse:
     deleted_ago_by_html: Slettet %{time_ago} af %{user}
     edited_ago_by_html: Redigeret %{time_ago} af %{user}
@@ -447,6 +443,7 @@ da:
       feature_warning: Indlæser %{num_features} kortobjekter, hvilket kan gøre din
         browser langsom eller få den til ikke at svare. Er du sikker på, at du ønsker
         at få vist disse data?
+      feature_error: 'Kortobjekter kunne ikke indlæses: %{message}'
       load_data: Indlæs data
       loading: Indlæser...
     tag_details:
@@ -526,7 +523,7 @@ da:
       title: Ændringssæt
       title_user: Ændringssæt af %{user}
       title_user_link_html: Ændringssæt af %{user_link}
-      title_friend: Ændringssæt af mine venner
+      title_followed: Ændringssæt af dem, du følger
       title_nearby: Ændringssæt af brugere i nærheden
       empty: Ingen ændringssæt fundet.
       empty_area: Ingen ændringssæt i dette område.
@@ -541,19 +538,6 @@ da:
         created: Oprettet
         closed: Lukket
         belongs_to: Forfatter
-    subscribe:
-      heading: Abonner på den følgende ændringssæt-diskussion?
-      button: Abonner på diskussion
-    unsubscribe:
-      heading: Vil du afmelde følgende diskussion om ændringssæt?
-      button: Afmeld diskussion
-    heading:
-      title: Ændringssæt %{id}
-      created_by_html: Oprettet af %{link_user} %{created}.
-    no_such_entry:
-      heading: 'Intet indlæg med id: %{id}'
-      body: Der findes desværre intet ændringssæt med id %{id}. Tjek stavningen, eller
-        måske er linket du trykkede på forkert.
     show:
       title: 'Ændringssæt: %{id}'
       created: 'Oprettet: %{when}'
@@ -587,6 +571,21 @@ da:
     timeout:
       sorry: Desværre tog det for lang tid at indlæse den liste af ændringssæt du
         har bedt om.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Abonner på følgende ændringssæt-diskussion?
+        button: Abonner på diskussion
+      unsubscribe:
+        heading: Afmeld abonnement på følgende ændringssæt-diskussion?
+        button: Afmeld diskussion
+    heading:
+      title: Ændringssæt %{id}
+      created_by_html: Oprettet af %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Intet indlæg med id: %{id}'
+      body: Der findes desværre intet ændringssæt med id %{id}. Tjek stavningen, eller
+        måske er linket du trykkede på forkert.
   dashboards:
     contact:
       km away: '%{count}km væk'
@@ -595,19 +594,19 @@ da:
     popup:
       your location: Din position
       nearby mapper: Bruger i nærheden
-      friend: Ven
+      following: Følger
     show:
       title: Mit kontrolpanel
       no_home_location_html: '%{edit_profile_link} og angiv din hjemmeposition for
         at se brugere i nærheden.'
       edit_your_profile: Rediger din profil
-      my friends: Mine venner
-      no friends: Du har ikke tilføjet nogle venner endnu.
+      followings: Følger
+      no followings: Du har ikke fulgt nogen bruger endnu.
       nearby users: 'Andre brugere i nærheden:'
       no nearby users: Der er ingen andre brugere der har angivet at de kortlægger
         i nærheden.
-      friends_changesets: venners ændringssæt
-      friends_diaries: venners blogindlæg
+      followed_changesets: ændringssæt
+      followed_diaries: blogindlæg
       nearby_changesets: ændringssæt af brugere i nærheden
       nearby_diaries: blogindlæg af brugere i nærheden
   diary_entries:
@@ -618,7 +617,7 @@ da:
       use_map_link: Brug kort
     index:
       title: Brugerblogs
-      title_friends: Venners blogs
+      title_followed: Blogindlæg fra dem, du følger
       title_nearby: Blogs fra brugere i nærheden
       user_title: Blog for %{user}
       in_language_title: Blogindlæg på %{language}
@@ -684,15 +683,6 @@ da:
       heading: Vil du afmelde følgende blogindlægsdiskussion?
       button: Afmeld diskussion
   diary_comments:
-    index:
-      title: Kommentarer til blogindlæg tilføjet af %{user}
-      heading: '%{user}s kommentarer til blogindlæg'
-      subheading_html: Kommentarer til blogindlæg tilføjet af %{user}
-      no_comments: Ingen blogkommentarer
-    page:
-      post: Indsend
-      when: Hvornår
-      comment: Kommentar
     new:
       heading: Vil du tilføje en kommentar til følgende blogindlægsdiskussion?
   doorkeeper:
@@ -748,20 +738,23 @@ da:
       title: Fil ikke fundet
       description: En fil/mappe/API-handling ved dette navn findes ikke på OpenStreetMap-serveren
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Tilføj %{user} som en ven?
-      button: Tilføj som en ven
-      success: '%{name} er nu din ven!'
-      failed: Desværre, kunne ikke tilføje %{name} som din ven.
-      already_a_friend: Du er allerede ven med %{name}.
-      limit_exceeded: Du er blevet venner med en del brugere for nylig. Vent venligst
-        lidt før du forsøger at blive ven med flere.
-    remove_friend:
-      heading: Fjern %{user} som ven?
-      button: Fjern som ven
-      success: '%{name} blev fjernet fra din liste af venner.'
-      not_a_friend: '%{name} er ikke en af dine venner.'
+  follows:
+    show:
+      follow:
+        heading: Vil du følge %{user}?
+        button: Følg bruger
+      unfollow:
+        heading: Vil du ikke længere følge %{user}?
+        button: Følg ikke længere bruger
+    create:
+      success: Du følger nu %{name}!
+      failed: Beklager, din anmodning om at følge %{name} mislykkedes.
+      already_followed: Du følger allerede %{name}.
+      limit_exceeded: Du har fulgt mange brugere på det seneste. Vent venligst lidt,
+        før du prøver at følge flere.
+    destroy:
+      success: Du følger ikke længere %{name}.
+      not_followed: Du følger ikke %{name}.
   geocoder:
     search:
       title:
@@ -1290,7 +1283,7 @@ da:
           water: Vand
           wetland: Vådområde
           wood: Skov
-          "yes": Naturseværdighed
+          "yes": Naturligt element
         office:
           accountant: Revisor
           administrative: Administration
@@ -1586,9 +1579,11 @@ da:
       reports: Rapporter
       last_updated: Sidst opdateret
       last_updated_time_ago_user_html: '%{time_ago} af %{user}'
+      reporter_users: Rapporterende brugere
       reports_count:
         one: '%{count} rapport'
         other: '%{count} rapporter'
+      more_reporters: og %{count} mere
       reported_item: Rapporteret element
       states:
         ignored: Ignoreret
@@ -1731,14 +1726,14 @@ da:
         forfatteren på %{replyurl}
       footer_html: Du kan også læse beskeden på %{readurl} og du kan sende en besked
         til forfatteren på %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hej %{to_user},
-      subject: '[OpenStreetMap] %{user} tilføjede dig som ven'
-      had_added_you: '%{user} har tilføjet dig som ven på OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} fulgte dig'
+      followed_you: '%{user} følger dig nu på OpenStreetMap.'
       see_their_profile: Du kan se deres profil på %{userurl}.
       see_their_profile_html: Du kan se deres profil på %{userurl}.
-      befriend_them: Du kan også tilføje dem som ven på %{befriendurl}.
-      befriend_them_html: Du kan også tilføje dem som ven på %{befriendurl}.
+      follow_them: Du kan også følge dem på %{followurl}.
+      follow_them_html: Du kan også følge dem på %{followurl}.
     gpx_details:
       details: 'Dine filoplysninger:'
       filename: Filnavn
@@ -1905,14 +1900,17 @@ da:
       wrong_user: Du er logget på som '%{user}', men den besked du har bedt om at
         læse, er ikke sendt af eller til den bruger. Log venligst på som den korrekte
         bruger for at læse den.
-    mark:
-      as_read: Besked markeret som læst
-      as_unread: Besked markeret som ulæst
-    unmute:
-      notice: Beskeden er flyttet til Indbakke
-      error: Beskeden kunne ikke flyttes til Indbakke.
     destroy:
       destroyed: Besked slettet
+    read_marks:
+      create:
+        notice: Besked markeret som læst
+      destroy:
+        notice: Besked markeret som ulæst
+    mutes:
+      destroy:
+        notice: Beskeden er flyttet til Indbakke
+        error: Beskeden kunne ikke flyttes til Indbakke.
     mailboxes:
       heading:
         my_inbox: Min indbakke
@@ -2071,6 +2069,9 @@ da:
       preview: Forhåndsvisning
       help: Hjælp
     pagination:
+      changeset_comments:
+        older: Ældre kommentarer
+        newer: Nyere kommentarer
       diary_comments:
         older: Ældre kommentarer
         newer: Nyere kommentarer
@@ -2679,13 +2680,14 @@ da:
       heading: GPX-lagring ikke tilgængelig
       message: Systemet der håndterer overførsel og lagring af GPX-filer er på nuværende
         tidspunkt ikke tilgængeligt
-    georss:
-      title: OpenStreetMap GPS-spor
-    description:
-      description_with_count:
-        one: GPX fil med %{count} punkt fra %{user}
-        other: GPX fil med %{count} punkter fra %{user}
-      description_without_count: GPX fil fra %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-spor
+      description:
+        description_with_count:
+          one: GPX fil med %{count} punkt fra %{user}
+          other: GPX fil med %{count} punkter fra %{user}
+        description_without_count: GPX fil fra %{user}
   application:
     permission_denied: Du har ikke rettigheder til at udføre den handling
     require_cookies:
@@ -2754,7 +2756,7 @@ da:
       openid: Log ind med OpenStreetMap
       read_prefs: Læse brugerpræferencer
       write_prefs: Ændre brugerpræferencer
-      write_diary: Udgiv brugerblogs, kommenter og få venner
+      write_diary: Udgiv blogindlæg og kommentarer
       write_api: Ændre kortet
       read_gpx: Læse private GPS-spor
       write_gpx: Overføre GPS-spor
@@ -2844,7 +2846,6 @@ da:
         privacy_policy_title: OSMF privatlivs-politik inklusiv afsnit om e-mailadresser
         contributor_terms: vilkår for bidragsydere
       continue: Opret konto
-      terms accepted: Tak for at du accepterede de nye vilkår for bidragsydere!
       email_help:
         privacy_policy: privatlivspolitik
         privacy_policy_title: OSMF privatlivspolitik inklusiv afsnit om e-mailadresser
@@ -2881,8 +2882,8 @@ da:
       edits: Redigeringer
       traces: GPS-spor
       notes: Kortbemærkninger
-      remove as friend: Fjern som ven
-      add as friend: Tilføj som ven
+      unfollow: Følg ikke længere
+      follow: Følg
       mapper since: 'Kortlægger siden:'
       last map edit: 'Sidste kortredigering:'
       no activity yet: Ingen aktivitet endnu
@@ -2958,6 +2959,26 @@ da:
       user:
         summary_html: '%{name} oprettet fra %{ip_address} på %{date}'
         summary_no_ip_html: '%{name} oprettet på %{date}'
+    comments:
+      index:
+        heading_html: '%{user}s kommentarer'
+        changesets: Ændringssæt
+        diary_entries: Blogindlæg
+        no_comments: Ingen kommentarer
+    changeset_comments:
+      index:
+        title: Kommentarer til ændringssæt tilføjet af %{user}
+      page:
+        changeset: Ændringssæt
+        when: Hvornår
+        comment: Kommentar
+    diary_comments:
+      index:
+        title: Kommentarer til blogindlæg tilføjet af %{user}
+      page:
+        post: Indsend
+        when: Hvornår
+        comment: Kommentar
     suspended:
       title: Konto suspenderet
       heading: Konto suspenderet
@@ -3182,8 +3203,10 @@ da:
         other: '%{count} Anonyme bemærkninger'
       counter_warning_guide_link:
         text: bidrage selv
+        url: https://wiki.openstreetmap.org/wiki/Da:Beginners%27_guide
       counter_warning_forum_link:
         text: fællesskabet kan hjælpe dig
+        url: https://community.openstreetmap.org/c/communities/dk/77
       advice: Din bemærkning er offentlig og vil måske blive brugt til at opdatere
         kortet, så indtast ikke personlige oplysninger eller oplysninger fra kort
         beskyttet af ophavsret eller katalogfortegnelser.
index 11ddcbaf8b9160e0b80c99337f0dfbd7b6435127..e6344830cc56b009fb1551186f8dc3b75e1e04d1 100644 (file)
@@ -199,7 +199,7 @@ de:
         support_url: Support-URL
         allow_read_prefs: Ihre Benutzereinstellungen auslesen.
         allow_write_prefs: Ihre Benutzereinstellungen verändern
-        allow_write_diary: Blogeinträge und Kommentare schreiben und Freunde finden
+        allow_write_diary: Blogeinträge und Kommentare erstellen
         allow_write_api: Karte bearbeiten
         allow_read_gpx: Zugriff auf ihre privaten GPS-Tracks
         allow_write_gpx: GPS-Track hochladen
@@ -364,13 +364,6 @@ de:
       openid:
         link: https://wiki.openstreetmap.org/wiki/DE:OpenID
         link text: Was bedeutet dies?
-      public editing:
-        heading: Öffentliches Bearbeiten
-        enabled: Aktiviert. Normales Bearbeiten der Kartendaten ist möglich.
-        enabled link text: Was bedeutet dies?
-        disabled: Deaktiviert. Das Bearbeiten von Kartendaten ist NICHT möglich, alle
-          bisherigen Bearbeitungen sind anonym.
-        disabled link text: Warum kann ich nichts bearbeiten?
       contributor terms:
         heading: Bedingungen für Mitwirkende
         agreed: Du hast den neuen Bedingungen für Mitwirkende zugestimmt.
@@ -457,7 +450,6 @@ de:
         readable_summary: menschenlesbare Zusammenfassung
         informal_translations: informelle Übersetzung
         continue: Weiter
-        declined: https://wiki.openstreetmap.org/wiki/DE:Contributor_Terms_Declined
         cancel: Abbrechen
         you need to accept or decline: Bitte lies die neuen Bedingungen für Mitwirkende
           und nimm sie an oder lehne sie ab, bevor du weitermachst.
@@ -466,6 +458,9 @@ de:
           france: Frankreich
           italy: Italien
           rest_of_world: Rest der Welt
+      update:
+        terms accepted: Vielen Dank, dass du den neuen Bedingungen für Mitwirkende
+          zugestimmt hast!
       terms_declined_flash:
         terms_declined_html: Wir bedauern es, dass du dich dazu entschieden hast,
           den neuen Bedingungen für Mitwirkende nicht zuzustimmen. Weitere Informationen
@@ -541,6 +536,7 @@ de:
       feature_warning: Lade %{num_features} Funktionen, was deinen Browser verlangsamen
         oder nicht mehr reagieren lassen könnte. Bist du sicher, dass du diese Daten
         anzeigen möchtest?
+      feature_error: 'Funktionen konnten nicht geladen werden: %{message}'
       load_data: Daten laden
       loading: Lade …
     tag_details:
@@ -629,7 +625,7 @@ de:
       title: Änderungssätze
       title_user: Änderungssätze von %{user}
       title_user_link_html: Änderungssätze von %{user_link}
-      title_friend: Änderungssätze von meinen Freunden
+      title_followed: Änderungssätze der abonnierten Benutzer
       title_nearby: Änderungssätze von Benutzern in der Nähe
       empty: Keine Änderungssätze gefunden.
       empty_area: Keine Änderungssätze in diesem Bereich.
@@ -644,20 +640,6 @@ de:
         created: Erstellt
         closed: Geschlossen
         belongs_to: Autor
-    subscribe:
-      heading: Die folgende Änderungssatz-Diskussion abonnieren?
-      button: Diskussion abonnieren
-    unsubscribe:
-      heading: Von der folgenden Änderungssatz-Diskussion abmelden?
-      button: Von der Diskussion abmelden
-    heading:
-      title: Änderungssatz %{id}
-      created_by_html: Erstellt von %{link_user} am %{created}.
-    no_such_entry:
-      heading: 'Kein Eintrag mit der ID: %{id}'
-      body: Es existiert leider kein Änderungssatz mit der ID %{id}. Bitte überprüfe
-        deine Rechtschreibung, oder vielleicht ist der Link, auf den du geklickt hast,
-        falsch.
     show:
       title: 'Änderungssatz: %{id}'
       created: 'Erstellt: %{when}'
@@ -690,6 +672,22 @@ de:
       sorry: 'Leider konnte das Changeset #%{id} nicht gefunden werden.'
     timeout:
       sorry: Es hat leider zu lange gedauert, die angeforderten Änderungssätze abzurufen.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Die folgende Änderungssatz-Diskussion abonnieren?
+        button: Diskussion abonnieren
+      unsubscribe:
+        heading: Von der folgenden Änderungssatz-Diskussion abmelden?
+        button: Von der Diskussion abmelden
+    heading:
+      title: Änderungssatz %{id}
+      created_by_html: Erstellt von %{link_user} am %{created}.
+    no_such_entry:
+      heading: 'Kein Eintrag mit der ID: %{id}'
+      body: Es existiert leider kein Änderungssatz mit der ID %{id}. Bitte überprüfe
+        deine Rechtschreibung, oder vielleicht ist der Link, auf den du geklickt hast,
+        falsch.
   dashboards:
     contact:
       km away: '%{count} km entfernt'
@@ -698,19 +696,19 @@ de:
     popup:
       your location: Standort
       nearby mapper: Mapper in der Nähe
-      friend: Freund
+      following: Abonniert
     show:
       title: Meine Übersichtsseite
       no_home_location_html: '%{edit_profile_link} und lege deinen Wohnort fest, um
         Benutzer in der Nähe zu sehen.'
       edit_your_profile: Bearbeite dein Profil
-      my friends: Meine Freunde
-      no friends: Du hast noch keine Freunde hinzugefügt.
+      followings: Abonnierte Benutzer
+      no followings: Du bist noch keinem Benutzer gefolgt.
       nearby users: Mapper in der Nähe
       no nearby users: Es existieren bisher keine Benutzer, die einen Standort in
         deiner Nähe angegeben haben.
-      friends_changesets: Änderungssätze deiner Freunde
-      friends_diaries: Blogs deiner Freunde
+      followed_changesets: Änderungssätze
+      followed_diaries: Blogeinträge
       nearby_changesets: Änderungssätze von Benutzern in der Nähe
       nearby_diaries: Blogs von Benutzern in der Nähe
   diary_entries:
@@ -721,7 +719,7 @@ de:
       use_map_link: Karte benutzen
     index:
       title: Benutzer-Blogs
-      title_friends: Blogs deiner Freunde
+      title_followed: Benutzereinträge der abonnierten Benutzer
       title_nearby: Blogs von Nutzern in der Nähe
       user_title: Blog von %{user}
       in_language_title: Blog-Einträge in %{language}
@@ -788,15 +786,6 @@ de:
       heading: Von der folgenden Tagebucheintragsdiskussion abmelden?
       button: Von der Diskussion abmelden
   diary_comments:
-    index:
-      title: Tagebuch-Kommentare hinzugefügt von %{user}
-      heading: '%{user}s Tagebuch-Kommentare'
-      subheading_html: Tagebuch-Kommentare hinzugefügt von %{user}
-      no_comments: Keine Blog-Kommentare
-    page:
-      post: Blogeintrag
-      when: Zeitpunkt
-      comment: Kommentar
     new:
       heading: Einen Kommentar zur folgenden Tagebucheintragsdiskussion hinzufügen?
   doorkeeper:
@@ -855,20 +844,23 @@ de:
       title: Datei nicht gefunden
       description: Konnte keine Datei-/Verzeichnis-/API-Operation mit diesem Namen
         auf dem OpenStreetMap-Server finden (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} als Freund hinzufügen?'
-      button: Als Freund hinzufügen
-      success: '%{name} ist nun dein Freund!'
-      failed: Sorry, %{name} konnte nicht als dein Freund hinzugefügt werden.
-      already_a_friend: Du bist bereits mit %{name} befreundet.
-      limit_exceeded: Du hast dich in letzter Zeit mit vielen Benutzern angefreundet.
-        Bitte warte eine Weile, bevor du versuchst, weitere Freunde zu finden.
-    remove_friend:
-      heading: Freund %{user} entfernen?
-      button: Freund entfernen
-      success: '%{name} wurde als Freund entfernt.'
-      not_a_friend: '%{name} ist nicht dein Freund.'
+  follows:
+    show:
+      follow:
+        heading: Möchtest du %{user} folgen?
+        button: Benutzer folgen
+      unfollow:
+        heading: Möchtest du %{user} nicht mehr folgen?
+        button: Benutzer entfolgen
+    create:
+      success: Du folgst jetzt %{name}!
+      failed: Deine Anfrage, %{name} zu folgen, ist leider fehlgeschlagen.
+      already_followed: Du folgst bereits %{name}.
+      limit_exceeded: Du bist in letzter Zeit vielen Nutzern gefolgt. Bitte warte
+        eine Weile, bevor du versuchst, noch mehr zu folgen.
+    destroy:
+      success: Du hast %{name} erfolgreich entfolgt.
+      not_followed: Du folgst %{name} nicht.
   geocoder:
     search:
       title:
@@ -1691,9 +1683,11 @@ de:
       reports: Meldungen
       last_updated: Zuletzt aktualisiert
       last_updated_time_ago_user_html: '%{time_ago} von %{user}'
+      reporter_users: Reporter-Benutzer
       reports_count:
         one: Eine Meldung
         other: '%{count} Meldungen'
+      more_reporters: und %{count} mehr
       reported_item: Gemeldetes Objekt
       states:
         ignored: Ignoriert
@@ -1840,14 +1834,14 @@ de:
         %{replyurl} antworten
       footer_html: Du kannst auch die Nachricht unter %{readurl} lesen und dem Autor
         unter %{replyurl} antworten
-    friendship_notification:
+    follow_notification:
       hi: Hallo %{to_user},
-      subject: '[OpenStreetMap] %{user} hat dich als Freund hinzugefügt'
-      had_added_you: '%{user} hat dich als Freund hinzugefügt.'
+      subject: '[OpenStreetMap] %{user} ist dir gefolgt'
+      followed_you: '%{user} folgt dir jetzt auf OpenStreetMap.'
       see_their_profile: Du kannst sein/ihr Profil unter %{userurl} ansehen.
       see_their_profile_html: Du kannst sein/ihr Profil unter %{userurl} ansehen.
-      befriend_them: Du kannst sie/ihn unter %{befriendurl} ebenfalls als Freund hinzufügen.
-      befriend_them_html: Du kannst sie/ihn unter %{befriendurl} auch als Freund hinzufügen.
+      follow_them: Du kannst ihnen auch unter %{followurl} folgen.
+      follow_them_html: Du kannst ihnen auch unter %{followurl} folgen.
     gpx_details:
       details: 'Deine Dateidetails:'
       filename: Dateiname
@@ -2026,14 +2020,17 @@ de:
       wrong_user: Du bist als '%{user}' angemeldet, aber die Nachricht, die du lesen
         möchtest, wurde nicht von diesem Benutzer oder an diesen gesendet. Bitte melde
         dich mit dem korrekten Benutzer an, um sie zu lesen.
-    mark:
-      as_read: Nachricht als gelesen markiert
-      as_unread: Nachricht als ungelesen markiert
-    unmute:
-      notice: Die Nachricht wurde in den Posteingang verschoben
-      error: Die Nachricht konnte nicht in den Posteingang verschoben werden.
     destroy:
       destroyed: Nachricht gelöscht
+    read_marks:
+      create:
+        notice: Nachricht als gelesen markiert
+      destroy:
+        notice: Nachricht als ungelesen markiert
+    mutes:
+      destroy:
+        notice: Die Nachricht wurde in den Posteingang verschoben
+        error: Die Nachricht konnte nicht in den Posteingang verschoben werden.
     mailboxes:
       heading:
         my_inbox: Posteingang
@@ -2195,6 +2192,9 @@ de:
       preview: Vorschau
       help: Hilfe
     pagination:
+      changeset_comments:
+        older: Ältere Kommentare
+        newer: Neuere Kommentare
       diary_comments:
         older: Ältere Kommentare
         newer: Neuere Kommentare
@@ -2835,13 +2835,14 @@ de:
       heading: Speicher für GPX-Dateien ist Offline
       message: Das Upload-System und der Speicher für GPX-Dateien ist derzeit nicht
         verfügbar
-    georss:
-      title: OpenStreetMap-GPS-Tracks
-    description:
-      description_with_count:
-        one: GPX-Datei mit einem Punkt von %{user}
-        other: GPX-Datei mit %{count} Punkten von %{user}
-      description_without_count: GPX-Datei von %{user}
+    feeds:
+      show:
+        title: OpenStreetMap-GPS-Tracks
+      description:
+        description_with_count:
+          one: GPX-Datei mit einem Punkt von %{user}
+          other: GPX-Datei mit %{count} Punkten von %{user}
+        description_without_count: GPX-Datei von %{user}
   application:
     permission_denied: Du hast keine Berechtigung, um auf diese Aktion zuzugreifen.
     require_cookies:
@@ -2910,7 +2911,7 @@ de:
       openid: Melde Dich mit OpenStreetMap an
       read_prefs: Benutzereinstellungen lesen
       write_prefs: Benutzereinstellungen verändern
-      write_diary: Tagebucheinträge und Kommentare erstellen und Freunde finden
+      write_diary: Benutzereinträge und Kommentare erstellen
       write_api: Karte bearbeiten
       read_gpx: Private GPS-Tracks lesen
       write_gpx: GPS-Tracks hochladen
@@ -3005,8 +3006,6 @@ de:
           zu E-Mail-Adressen
         contributor_terms: Bedingungen für Mitwirkende
       continue: Registrieren
-      terms accepted: Vielen Dank, dass du den neuen Bedingungen für Mitwirkende zugestimmt
-        hast!
       email_help:
         privacy_policy: Datenschutzrichtlinie
         privacy_policy_title: OSMF-Datenschutzrichtlinie mit Abschnitt über E-Mail-Adressen
@@ -3043,8 +3042,8 @@ de:
       edits: Bearbeitungen
       traces: Tracks
       notes: Fehler-Hinweise
-      remove as friend: Freund entfernen
-      add as friend: Freund hinzufügen
+      unfollow: Entfolgen
+      follow: Folgen
       mapper since: 'Mapper seit:'
       last map edit: 'Letzte Kartenbearbeitung:'
       no activity yet: Noch keine Aktivität
@@ -3120,6 +3119,26 @@ de:
       user:
         summary_html: '%{name} erstellt von %{ip_address} am %{date}'
         summary_no_ip_html: '%{name} erstellt am %{date}'
+    comments:
+      index:
+        heading_html: '%{user}s Blogeintrag-Kommentare'
+        changesets: Änderungssätze
+        diary_entries: Blogeinträge
+        no_comments: Keine Kommentare
+    changeset_comments:
+      index:
+        title: Blogeintrag-Kommentare hinzugefügt von %{user}
+      page:
+        changeset: Änderungssatz
+        when: Zeitpunkt
+        comment: Kommentar
+    diary_comments:
+      index:
+        title: Tagebuch-Kommentare hinzugefügt von %{user}
+      page:
+        post: Blogeintrag
+        when: Wann
+        comment: Kommentar
     suspended:
       title: Benutzerkonto gesperrt
       heading: Benutzerkonto gesperrt
index 4c04cfcb3a239fd0b00f8b507c0752be66d06c9a..2d82989c33454fbf9bfa431fac515d76df03046b 100644 (file)
@@ -1,4 +1,4 @@
-# Messages for Zazaki (Zazaki)
+# Messages for Dimli (Zazaki)
 # Exported from translatewiki.net
 # Export driver: phpyaml
 # Author: 1917 Ekim Devrimi
@@ -189,10 +189,6 @@ diq:
       current email address: 'E-postay şımaya newki:'
       openid:
         link text: no çıko?
-      public editing:
-        heading: 'Pêron rê akerde vurnayış:'
-        enabled link text: no çıko?
-        disabled link text: Ezo çı nêşena bıvurna?
       contributor terms:
         link text: no çıko?
       save changes button: Vurnayışan qeyd ke
@@ -284,7 +280,6 @@ diq:
     index:
       title: Qeydê vurnayışan
       title_user: Vurriyayışê qeydi %{user}
-      title_friend: Qeydê vurnayışê embazan
       title_nearby: Nezdıra vurriyayışê setê karberi
       load_more: Tayêna bar ke
       feed:
@@ -325,16 +320,11 @@ diq:
     popup:
       your location: Heruna mı
       nearby mapper: Xeritoğo emıryan
-      friend: Embaz
     show:
       title: Panel Asengeni
       edit_your_profile: Wecê ho bıvurnên
-      my friends: Alwazê mı
-      no friends: Hona şoma qet alwazê neweyi nêkerdê cı
       nearby users: Nezdık ran yobina karkeri
       no nearby users: Nezdık ran qet alwazê neweyi nıka çıniyê
-      friends_changesets: Qeydê vurnayışê alwazan
-      friends_diaries: Qeydê rocek anê alwazan
   diary_entries:
     new:
       title: Roceko newe definayış
@@ -343,7 +333,6 @@ diq:
       use_map_link: Xerita bıgurene
     index:
       title: Rocekê Karberi
-      title_friends: Rocekê embazan
       title_nearby: Nezdı ra rocekê karberan
       user_title: '%{user} rocek'
       in_language_title: '%{language} dekewtekê roci'
@@ -371,21 +360,11 @@ diq:
       report: Nê mışewreyi rapor ke
     location:
       location: 'Lokasyon:'
-  diary_comments:
-    page:
-      post: Rışte
-      when: Key
-      comment: Mışewre
   errors:
     contact:
       contact: irtibat
     forbidden:
       title: Qedexe
-  friendships:
-    make_friend:
-      button: Xo rê embaz ke
-    remove_friend:
-      button: Embazan ra vec
   geocoder:
     search:
       title:
@@ -1003,8 +982,6 @@ diq:
       diary: Rocek
       edits: Vurnayışi
       traces: Rêçi
-      remove as friend: Embazan ra vec
-      add as friend: Embazi cı ke
       mapper since: 'Demê herdnigarwaniye:'
       ct undecided: Darıdeyo
       ct declined: Red kerd
@@ -1048,6 +1025,14 @@ diq:
       user:
         summary_html: '%{name} %{ip_address} ra %{date} dı vıraşt'
         summary_no_ip_html: '%{name} %{date} dı vıraşt'
+    changeset_comments:
+      page:
+        when: Key
+        comment: Mışewre
+    diary_comments:
+      page:
+        post: Rışte
+        comment: Mışewre
     suspended:
       title: Hesab Darideyo
       heading: Hesab Darideyo
index ae6e2e4d257d06d6434dfe63bf7423214d53ba1f..d2d6f536f96f6ca263bbc4609ad8267a239ffe47 100644 (file)
@@ -161,13 +161,6 @@ dsb:
       current email address: 'Aktualna e-mailowa adresa:'
       openid:
         link text: Co to jo?
-      public editing:
-        heading: Zjawne wobźěłowanje
-        enabled: Zmóžnjony. Nic anonymny, daty daju se wobźěłaś.
-        enabled link text: Co to jo?
-        disabled: Znjemóžnjony, daty njedaju se wobźěłas, wše pjerwjejšne změny su
-          anonymne.
-        disabled link text: Cogodla njamógu wobźěłas?
       contributor terms:
         heading: 'Wuměnjenja za sobustatkujucych:'
         agreed: Sy nowe wuměnjenja za sobuskutkujucych akceptěrował.
@@ -201,6 +194,8 @@ dsb:
           france: Francojska
           italy: Italska
           rest_of_world: Zbytk swěta
+      update:
+        terms accepted: Źěkujomy se, až sy nowe wuměnjenja za sobuskutkajucuch akceptěrował!
   browse:
     version: Wersija
     in_changeset: Sajźba změnow
@@ -276,7 +271,6 @@ dsb:
     index:
       title: Sajźby změnow
       title_user: Sajźby změnow wót %{user}
-      title_friend: Změny twójich pśijaśelow
       title_nearby: Sajźby změnow wužywarjow w bliskosći
       empty: Žedne sajźby změnow namakane.
       empty_area: Žedne sajźby změnow w toś tom wobcerku.
@@ -313,14 +307,10 @@ dsb:
     popup:
       your location: Twójo městno
       nearby mapper: Kartěrowaŕ w bliskosći
-      friend: Pśijaśel
     show:
       title: Mój pśeglědowy bok
-      no friends: Hyšći njejsy žednych pśijaśelow pśidał.
       nearby users: Druge wužywarje w bliskosći
       no nearby users: Hyšći njejsu žedne wužywarje, kótarež kartěruju w bliskosći.
-      friends_changesets: Sajźby změnow twójich pśijaśelow
-      friends_diaries: dnjownikowe zapiski pśijaśelow
       nearby_changesets: sajźby změnow wužywarjow w bliskosći
       nearby_diaries: dnjownikowe zapiski wužywarjow w bliskosći
   diary_entries:
@@ -331,7 +321,6 @@ dsb:
       use_map_link: kórtu wužywaś
     index:
       title: Dnjowniki wužywarjow
-      title_friends: Dnjowniki pśijaśelow
       title_nearby: Dnjowniki wužywarjow w bliskosći
       user_title: dnjownik wužywarja %{user}
       in_language_title: Zapiski dnjownika w %{language}
@@ -383,23 +372,6 @@ dsb:
       all:
         title: Zapiski dnjownika OpenStreetMap
         description: Nejnowše zapiski dnjownika wót wužywarjow OpenStreetMap
-  diary_comments:
-    page:
-      post: Powěsć
-      when: Cas
-      comment: Komentar
-  friendships:
-    make_friend:
-      heading: '%{user} ako pśijaśela pśidaś?'
-      button: Ako pśijaśela pśidaś
-      success: '%{name} jo něnto twój pśijaśel!'
-      failed: Bóžko njejo se raźiło, %{name} ako twójogo pśijaśela pśidaś.
-      already_a_friend: Sy južo z %{name} spśijaśelony.
-    remove_friend:
-      heading: '%{user} ako pśijaśela wótpóraś?'
-      button: Pśijaśela wótpóraś
-      success: '%{name} jo se z twójich pśijaśelow wótpórał.'
-      not_a_friend: '%{name} njejo twój pśijaśel.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -897,11 +869,8 @@ dsb:
       header: '%{from_user} jo śi pósłał powěsć pśez OpenStreetMap z temowym nadpismom
         %{subject}:'
       footer_html: Móžoš powěsć pód %{readurl} cytaś a móžoš pód %{replyurl} wótegroniś
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} jo śi ako pśijaśela pśidał.'
-      had_added_you: '%{user} jo śi na OpenStreetMap ako pśijaśela pśidał.'
+    follow_notification:
       see_their_profile: Móžoš profil na %{userurl} wiźeś.
-      befriend_them: Móžoš někogo na %{befriendurl} ako pśijaśela pśidaś.
     gpx_failure:
       failed_to_import: 'njejo se dał importěrowaś. How jo zmólka:'
       subject: '[OpenStreetMap] GPX-import jo se njeraźił'
@@ -1000,11 +969,13 @@ dsb:
       wrong_user: Sy ako `%{user} pśizjawjony, ale powěsć, kótaruž sy kśěł cytaś,
         njejo se pósłała wót togo wužywarja abo k tomu wužywarjeju. Pšosym pśizjaw
         se ako korektny wužywaŕ, aby ju cytał.
-    mark:
-      as_read: Powěsć jo se markěrowała ako pśecytana
-      as_unread: Powěsć jo se markěrowała ako njepśecytana
     destroy:
       destroyed: Powěsć wulašowana
+    read_marks:
+      create:
+        notice: Powěsć jo se markěrowała ako pśecytana
+      destroy:
+        notice: Powěsć jo se markěrowała ako njepśecytana
     mailboxes:
       heading:
         my_inbox: Mój post
@@ -1382,15 +1353,16 @@ dsb:
     offline:
       heading: Składowanje GPX offline
       message: Składowanje a nagrawański system GPX-datajow njestoj tuchylu k dispoziciji.
-    georss:
-      title: OpenStreetMap GPS-slědy
-    description:
-      description_with_count:
-        few: GPX-dataja z %{count} dypkami wót %{user}
-        one: GPX-dataja z %{count} dypkom wót %{user}
-        two: GPX-dataja z %{count} dypkoma wót %{user}
-        other: GPX-dataja z %{count} dypkami wót %{user}
-      description_without_count: GPX-dataja wót %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-slědy
+      description:
+        description_with_count:
+          few: GPX-dataja z %{count} dypkami wót %{user}
+          one: GPX-dataja z %{count} dypkom wót %{user}
+          two: GPX-dataja z %{count} dypkoma wót %{user}
+          other: GPX-dataja z %{count} dypkami wót %{user}
+        description_without_count: GPX-dataja wót %{user}
   application:
     require_cookies:
       cookies_needed: Zda se, až cookieje su znjemóžnjone - pšosym zmóžni cookieje
@@ -1410,7 +1382,6 @@ dsb:
       display name description: Sy wužywarske mě zjawnje pokazał. Móžoš to pózdźej
         w nastajenjach změniś.
       continue: Registrěrowaś
-      terms accepted: Źěkujomy se, až sy nowe wuměnjenja za sobuskutkajucuch akceptěrował!
     no_such_user:
       title: Toś ten wužywaŕ njejo
       heading: Wužywaŕ %{user} njeeksistěrujo
@@ -1434,8 +1405,6 @@ dsb:
       edits: Změny
       traces: Slědy
       notes: Pokazki kórty
-      remove as friend: Ako pśijaśela wótpóraś
-      add as friend: Pśijaśela pśidaś
       mapper since: 'Kartěrowaŕ wót:'
       ct status: 'Wuměnjenja za sobustatkujucych:'
       ct undecided: Njerozsuźony
@@ -1486,6 +1455,13 @@ dsb:
       user:
         summary_html: '%{name} wót %{ip_address} dnja %{date} napórany'
         summary_no_ip_html: '%{name} dnja %{date} napórany'
+    changeset_comments:
+      page:
+        when: Cas
+        comment: Komentar
+    diary_comments:
+      page:
+        post: Powěsć
     suspended:
       title: Konto wupowěźone
       heading: Konto wupowěźone
index 150b1b0358c5d171099c82a18a075b66b13c52a3..1aec9c3a504cd4f168b46932ad190b354dfb52d0 100644 (file)
@@ -128,8 +128,7 @@ el:
         support_url: URL Υποστήριξης
         allow_read_prefs: ανάγνωση των προτιμήσεων χρήστη
         allow_write_prefs: τροποποίηση των προτιμήσεων χρήστη
-        allow_write_diary: δημιουργία καταχωρήσεων ημερολογίου, σχόλια και δημιουργία
-          φίλων
+        allow_write_diary: δημιουργία καταχωρήσεων ημερολογίου και σχολίων
         allow_write_api: τροποποίηση του χάρτη
         allow_read_gpx: ανάγνωση των προσωπικών ιχνών GPS
         allow_write_gpx: μεταφόρτωση ιχνών GPS
@@ -293,14 +292,6 @@ el:
       external auth: Εξωτερική επαλήθευση ταυτότητας
       openid:
         link text: τι είναι αυτό;
-      public editing:
-        heading: Δημόσια επεξεργασία
-        enabled: Ενεργοποιήθηκε. Δεν είστε πια ανώνυμοι και μπορείτε να επεξεργαστείτε
-          δεδομένα.
-        enabled link text: τι είναι αυτό;
-        disabled: Απενεργοποιήθηκε και δεν μπορείτε να επεξεργαστείτε δεδομένα, όλες
-          οι προηγούμενες επεξεργασίες είναι ανώνυμες.
-        disabled link text: γιατί δεν μπορώ να επεξεργαστώ τον χάρτη;
       contributor terms:
         heading: Όροι Συνεισφοράς
         agreed: Έχετε αποδεχτεί τους νέους Όρους Συνεισφοράς.
@@ -393,6 +384,8 @@ el:
           france: Γαλλία
           italy: Ιταλία
           rest_of_world: Υπόλοιπος κόσμος
+      update:
+        terms accepted: Ευχαριστούμε για την αποδοχή των νέων όρων συνεισφοράς!
       terms_declined_flash:
         terms_declined_html: Λυπούμαστε που αποφασίσατε να μην αποδεχτείτε τους νέους
           Όρους Συνεισφοράς. Για περισσότερες πληροφορίες, ανατρέξτε στο %{terms_declined_link}.
@@ -551,7 +544,7 @@ el:
       title: Σύνολα αλλαγών
       title_user: Σύνολα αλλαγών από %{user}
       title_user_link_html: Σύνολα αλλαγών από %{user_link}
-      title_friend: Σύνολα αλλαγών από τους φίλους μου
+      title_followed: Σύνολα αλλαγών από χρήστες που ακολουθείτε
       title_nearby: Σύνολα αλλαγών από κοντινούς χρήστες
       empty: Δε βρέθηκαν σύνολα αλλαγών.
       empty_area: Χωρίς σύνολα αλλαγών σε αυτήν την περιοχή.
@@ -566,19 +559,6 @@ el:
         created: Δημιουργήθηκε
         closed: Έκλεισε
         belongs_to: Συντάκτης
-    subscribe:
-      heading: Εγγραφή στην ακόλουθη συζήτηση συνόλου αλλαγών;
-      button: Εγγραφή στη συζήτηση
-    unsubscribe:
-      heading: Απεγγραφή από την ακόλουθη συζήτηση συνόλο αλλαγών;
-      button: Απεγγραφή από τη συζήτηση
-    heading:
-      title: Σύνολο αλλαγών %{id}
-      created_by_html: Δημιουργήθηκε από %{link_user} στις %{created}.
-    no_such_entry:
-      heading: 'Δεν υπάρχει καταχώρηση με id: %{id}'
-      body: Λυπούμαστε, δεν υπάρχει σύνολο αλλαγών με το id %{id}. Παρακαλούμε ελέγξτε
-        για τυχόν ορθογραφικά λάθη ή ίσως ο σύνδεσμος που πατήσατε να είναι λάθος.
     show:
       title: 'Σύνολο αλλαγών: %{id}'
       created: 'Δημιουργήθηκε: %{when}'
@@ -612,6 +592,21 @@ el:
     timeout:
       sorry: Λυπόμαστε, ο κατάλογος των αλλαγών που ζητήσατε χρειάστηκε πολύ χρόνο
         για να ανακτηθεί.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Εγγραφή στην ακόλουθη συζήτηση συνόλου αλλαγών;
+        button: Εγγραφή στη συζήτηση
+      unsubscribe:
+        heading: Απεγγραφή από την ακόλουθη συζήτηση συνόλο αλλαγών;
+        button: Απεγγραφή από τη συζήτηση
+    heading:
+      title: Σύνολο αλλαγών %{id}
+      created_by_html: Δημιουργήθηκε από %{link_user} στις %{created}.
+    no_such_entry:
+      heading: 'Δεν υπάρχει καταχώρηση με id: %{id}'
+      body: Λυπούμαστε, δεν υπάρχει σύνολο αλλαγών με το id %{id}. Παρακαλούμε ελέγξτε
+        για τυχόν ορθογραφικά λάθη ή ίσως ο σύνδεσμος που πατήσατε να είναι λάθος.
   dashboards:
     contact:
       km away: '%{count} χλμ. μακριά'
@@ -620,19 +615,19 @@ el:
     popup:
       your location: Η τοποθεσία σας
       nearby mapper: Κοντινός χαρτογράφος
-      friend: Φίλος
+      following: Ακολουθείτε
     show:
       title: Το ταμπλό μου
       no_home_location_html: '%{edit_profile_link} και βάλτε την τοποθεσία σας για
         να δείτε κοντινούς χρήστες.'
       edit_your_profile: Επεξεργαστείτε το προφίλ σας
-      my friends: Οι φίλοι μου
-      no friends: Δεν έχετε προσθέσει φίλους ακόμα.
+      followings: Χρήστες που ακολουθείτε
+      no followings: Δεν έχετε ακολουθήσει ακόμη κανέναν χρήστη.
       nearby users: Άλλοι κοντινοί χρήστες
       no nearby users: Δεν υπάρχουν άλλοι χρήστες που δήλωσαν ότι χαρτογραφούν κοντά
         σας προς το παρόν.
-      friends_changesets: σύνολα αλλαγών φίλων
-      friends_diaries: καταχωρήσεις ημερολογίου φίλων
+      followed_changesets: σύνολα αλλαγών
+      followed_diaries: καταχωρήσεις ημερολογίου
       nearby_changesets: σύνολα αλλαγών από κοντινούς χρήστες
       nearby_diaries: καταχωρήσεις ημερολογίου από κοντινούς χρήστες
   diary_entries:
@@ -643,7 +638,7 @@ el:
       use_map_link: Χρησιμοποιήστε τον χάρτη
     index:
       title: Ημερολόγια χρηστών
-      title_friends: Ημερολόγια φίλων
+      title_followed: Ημερολόγια χρηστών που ακολουθείτε
       title_nearby: Ημερολόγια κοντινών χρηστών
       user_title: Ημερολόγιο του χρήστη %{user}
       in_language_title: Καταχωρήσεις ημερολογίων στα %{language}
@@ -711,15 +706,6 @@ el:
       heading: Απεγγραφή από την ακόλουθη συζήτηση καταχώρισης ημερολογίου;
       button: Απεγγραφή από τη συζήτηση
   diary_comments:
-    index:
-      title: Σχόλια ημερολογίου που προστέθηκαν από τον/την %{user}
-      heading: Σχόλια Ημερολογίου %{user}
-      subheading_html: Σχόλια ημερολογίου που προστέθηκαν από τον/την %{user}
-      no_comments: Χωρίς σχόλια ημερολογίου
-    page:
-      post: Καταχώρηση
-      when: Πότε
-      comment: Σχόλιο
     new:
       heading: Προσθήκη σχολίου στην ακόλουθη συζήτηση καταχώρισης ημερολογίου;
   doorkeeper:
@@ -783,20 +769,23 @@ el:
       title: Το αρχείο δε βρέθηκε
       description: Δεν ήταν δυνατή η εύρεση αρχείου/καταλόγου/λειτουργίας API με αυτό
         το όνομα στο διακομιστή OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Προσθήκη του %{user} ως φίλου;
-      button: Προσθήκη ως φίλο
-      success: Ο %{name} είναι τώρα φίλος σου!
-      failed: Λυπούμαστε, απέτυχε η προσθήκη του/της %{name} ως φίλου.
-      already_a_friend: Είστε ήδη φίλοι με τον/την %{name}.
-      limit_exceeded: Έκανες πολλούς φίλους τελευταία. Παρακαλώ περίμενε λίγο πριν
-        προσπαθήσεις να κάνεις περισσότερους φίλους.
-    remove_friend:
-      heading: Αφαίρεση φίλου %{user};
-      button: Αφαίρεση φίλου
-      success: Ο/Η %{name} αφαιρέθηκε από τους φίλους.
-      not_a_friend: Ο/Η %{name} δεν είναι ένας από τους φίλους σας.
+  follows:
+    show:
+      follow:
+        heading: Θέλετε να ακολουθήσετε τον/την %{user};
+        button: Ακολουθήστε τον χρήστη
+      unfollow:
+        heading: Θέλετε να καταργήσετε την ακολούθηση του/της %{user};
+        button: Κατάργηση ακολούθησης χρήστη
+    create:
+      success: Τώρα ακολουθείτε τον/την %{name}!
+      failed: Λυπούμαστε, το αίτημα σας να ακολουθήσετε τον/την %{name} απέτυχε.
+      already_followed: Ακολουθείτε ήδη τον/την %{name}.
+      limit_exceeded: Έχετε ακολουθήσει πολλούς χρήστες πρόσφατα. Παρακαλούμε περιμένετε
+        λίγο πριν προσπαθήσετε να ακολουθήσετε περισσότερους.
+    destroy:
+      success: Καταργήσατε επιτυχώς την ακολούθηση του/της %{name}.
+      not_followed: Δεν ακολουθείτε τον/την %{name}.
   geocoder:
     search:
       title:
@@ -1766,20 +1755,22 @@ el:
         μήνυμα στον συγγραφέα στο %{replyurl}
       footer_html: Μπορείτε επίσης να διαβάσετε το μήνυμα στο %{readurl} και να στείλετε
         μήνυμα στον συγγραφέα στο %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Γεια σας %{to_user},
-      subject: '[OpenStreetMap] Ο/Η %{user} σας πρόσθεσε ως φίλο'
-      had_added_you: Ο/Η %{user} σας πρόσθεσε ως φίλο στο OpenStreetMap.
+      subject: '[OpenStreetMap] %{user} σας ακολούθησε'
+      followed_you: '%{user} σας ακολουθεί τώρα στο OpenStreetMap.'
       see_their_profile: Μπορείτε να δείτε το προφίλ του/της στο %{userurl}.
       see_their_profile_html: Μπορείτε να δείτε το προφίλ του/της στο %{userurl}.
-      befriend_them: Μπορείτε επίσης να τον/την προσθέσετε ως φίλο στο %{befriendurl}.
-      befriend_them_html: Μπορείτε επίσης να τον/την προσθέσετε ως φίλο στο %{befriendurl}.
+      follow_them: Μπορείτε επίσης να τους ακολουθήσετε στο %{followurl}.
+      follow_them_html: Μπορείτε επίσης να τους ακολουθήσετε στο %{followurl}.
     gpx_details:
       details: 'Οι λεπτομέρειες του αρχείου σας:'
       filename: Όνομα αρχείου
       url: URL
       description: Περιγραφή
       tags: Ετικέτες
+      total_points: Συνολικός αριθμός σημείων
+      imported_points: Αριθμός εισαγόμενων σημείων
     gpx_failure:
       hi: Γεια σας %{to_user},
       failed_to_import: Φαίνεται ότι το αρχείο σας απέτυχε να εισαχθεί ως ίχνος GPS.
@@ -1794,6 +1785,8 @@ el:
       subject: '[OpenStreetMap] Αποτυχία εισαγωγής GPX'
     gpx_success:
       hi: Γεια σας %{to_user},
+      imported_successfully: Φαίνεται ότι το αρχείο σας εισήχθη με επιτυχία ως ίχνος
+        GPS.
       all_your_traces: Όλα τα επιτυχώς ανεβασμένα ίχνη GPX σας μπορούν να βρεθούν
         στο %{url}
       all_your_traces_html: Όλα τα επιτυχώς ανεβασμένα ίχνη GPX σας μπορούν να βρεθούν
@@ -1949,14 +1942,17 @@ el:
       wrong_user: Έχετε συνδεθεί ως «%{user}» αλλά το μήνυμα που ζητάτε να διαβάσετε
         δεν έχει σταλεί σε εσάς ούτε από εσάς. Παρακαλούμε συνδεθείτε με το σωστό
         όνομα χρήστη ώστε να μπορέσετε να το διαβάσετε.
-    mark:
-      as_read: Το μήνυμα σημειώθηκε ως αναγνωσμένο
-      as_unread: Το μήνυμα σημειώθηκε ως μη αναγνωσμένο
-    unmute:
-      notice: Το μήνυμα μετακινήθηκε στα Εισερχόμενα
-      error: Δεν ήταν δυνατή η μετακίνηση του μηνύματος στα Εισερχόμενα.
     destroy:
       destroyed: Το μήνυμα διαγράφηκε
+    read_marks:
+      create:
+        notice: Το μήνυμα σημειώθηκε ως αναγνωσμένο
+      destroy:
+        notice: Το μήνυμα σημειώθηκε ως μη αναγνωσμένο
+    mutes:
+      destroy:
+        notice: Το μήνυμα μετακινήθηκε στα Εισερχόμενα
+        error: Δεν ήταν δυνατή η μετακίνηση του μηνύματος στα Εισερχόμενα.
     mailboxes:
       heading:
         my_inbox: Τα εισερχόμενα μου
@@ -2116,6 +2112,9 @@ el:
       preview: Προεπισκόπηση
       help: Βοήθεια
     pagination:
+      changeset_comments:
+        older: Παλαιότερα σχόλια
+        newer: Νεότερα σχόλια
       diary_comments:
         older: Παλαιότερα σχόλια
         newer: Νεότερα σχόλια
@@ -2747,13 +2746,14 @@ el:
       heading: Αποθήκευση GPX εκτός σύνδεσης
       message: Το σύστημα αποθήκευσης και μεταφόρτωσης αρχείων GPX δεν είναι διαθέσιμο
         αυτή την στιγμή
-    georss:
-      title: Ίχνη GPS OpenStreetMap
-    description:
-      description_with_count:
-        one: αρχείο GPX με %{count} σημείο από %{user}
-        other: αρχείο GPX με %{count} σημεία από %{user}
-      description_without_count: Αρχείο GPX από τον/την %{user}
+    feeds:
+      show:
+        title: Ίχνη GPS OpenStreetMap
+      description:
+        description_with_count:
+          one: αρχείο GPX με %{count} σημείο από %{user}
+          other: αρχείο GPX με %{count} σημεία από %{user}
+        description_without_count: Αρχείο GPX από τον/την %{user}
   application:
     permission_denied: Δεν έχετε τα απαραίτητα δικαιώματα για πρόσβαση σε αυτήν την
       ενέργεια
@@ -2824,7 +2824,7 @@ el:
       openid: Συνδεθείτε χρησιμοποιώντας το OpenStreetMap
       read_prefs: Διαβάζει τις προτιμήσεις χρήστη
       write_prefs: Τροποποιεί τις προτιμήσεις χρήστη
-      write_diary: Î\94ημιοÏ\85Ï\81γήÏ\83Ï\84ε ÎºÎ±Ï\84αÏ\87Ï\89Ï\81ήÏ\83ειÏ\82 Î·Î¼ÎµÏ\81ολογίοÏ\85, Ï\83Ï\87Ï\8cλια ÎºÎ±Î¹ ÎºÎ¬Î½Ï\84ε Ï\86ίλοÏ\85Ï\82
+      write_diary: Î\94ημιοÏ\85Ï\81γεί ÎºÎ±Ï\84αÏ\87Ï\89Ï\81ήÏ\83ειÏ\82 Î·Î¼ÎµÏ\81ολογίοÏ\85 ÎºÎ±Î¹ Ï\83Ï\87Ï\8cλια
       write_api: Τροποποίηση του χάρτη
       read_gpx: Ανάγνωση προσωπικών ιχνών GPS
       write_gpx: Μεταφόρτωση ιχνών GPS
@@ -2919,7 +2919,6 @@ el:
           για τις διευθύνσεις ηλεκτρονικού ταχυδρομείου
         contributor_terms: όρους συνεισφοράς
       continue: Εγγραφή
-      terms accepted: Ευχαριστούμε για την αποδοχή των νέων όρων συνεισφοράς!
       email_help:
         privacy_policy: πολιτική απορρήτου
         privacy_policy_title: Πολιτική απορρήτου OSMF, συμπεριλαμβανομένης της ενότητας
@@ -2958,8 +2957,8 @@ el:
       edits: Επεξεργασίες
       traces: Ίχνη
       notes: Σημειώσεις χάρτη
-      remove as friend: Αφαίρεση φίλου
-      add as friend: Προσθήκη φίλου
+      unfollow: Κατάργηση ακολούθησης
+      follow: Ακολούθηση
       mapper since: 'Χαρτογράφος από:'
       last map edit: 'Τελευταία επεξεργασία χάρτη:'
       no activity yet: Καμία δραστηριότητα ακόμη
@@ -3036,6 +3035,26 @@ el:
         summary_html: '%{name} δημιουργήθηκε από την διεύθυνση IP %{ip_address} στις
           %{date}'
         summary_no_ip_html: '%{name} δημιουργήθηκε στις %{date}'
+    comments:
+      index:
+        heading_html: Σχόλια %{user}
+        changesets: Σύνολα αλλαγών
+        diary_entries: Καταχωρήσεις ημερολογίου
+        no_comments: Κανένα σχόλιο
+    changeset_comments:
+      index:
+        title: Σχόλιο συνόλου αλλαγών προστέθηκε από %{user}
+      page:
+        changeset: Σύνολο αλλαγών
+        when: Πότε
+        comment: Σχόλιο
+    diary_comments:
+      index:
+        title: Σχόλια ημερολογίου που προστέθηκαν από τον/την %{user}
+      page:
+        post: Καταχώρηση
+        when: Πότε
+        comment: Σχόλιο
     suspended:
       title: Ο λογαριασμός έχει ανασταλεί
       heading: Ο λογαριασμός έχει ανασταλεί
@@ -3247,9 +3266,21 @@ el:
         ώστε να λυθεί το πρόβλημα. Μετακινείστε το δείκτη στη σωστή θέση και γράψτε
         μια περιγραφή του προβλήματος ως εξήγηση.
       anonymous_warning_html: Δεν έχετε συνδεθεί. Παρακαλούμε κάντε %{log_in} ή %{sign_up}
-        αν θέλετε να λαμβάνετε ενημερώσεις για την σημείωσή σας.
+        για να λαμβάνετε ενημερώσεις για την σημείωσή σας και να βοηθάτε τους χαρτογράφους
+        για την επίλυση της.
       anonymous_warning_log_in: σύνδεση
       anonymous_warning_sign_up: εγγραφή
+      counter_warning_html: Έχετε ήδη δημοσιεύσει τουλάχιστον %{x_anonymous_notes},
+        αυτό είναι ωραίο για την κοινότητα, ευχαριστούμε! Τώρα σας ενθαρρύνουμε να
+        %{contribute_by_yourself}, δεν είναι τόσο πολύπλοκο, και %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} ανώνυμη σημείωση'
+        other: '%{count} ανώνυμες σημειώσεις'
+      counter_warning_guide_link:
+        text: συνεισφέρετε μόνοι σας
+        url: https://wiki.openstreetmap.org/wiki/El:Οδηγός_για_αρχάριους
+      counter_warning_forum_link:
+        text: η κοινότητα μπορεί να σας βοηθήσει
       advice: Η σημείωση σας είναι δημόσια και μπορεί να χρησιμοποιηθεί για την ενημέρωση
         του χάρτη, γι'αυτό μην προστέθετε προσωπικές πληροφορίες, ή πληροφορίες από
         χάρτες που καλύπτονται από πνευματικά δικαιώματα ή καταχωρήσεις καταλόγου.
index a4a52aeba2c7d69816315e3a31659da8cdecf5df..f49316f0cffbd471140922bf187442894813ca62 100644 (file)
@@ -241,12 +241,6 @@ en-GB:
       external auth: External Authentication
       openid:
         link text: what is this?
-      public editing:
-        heading: Public editing
-        enabled: Enabled. Not anonymous and can edit data.
-        enabled link text: what is this?
-        disabled: Disabled and cannot edit data, all previous edits are anonymous.
-        disabled link text: why can't I edit?
       contributor terms:
         heading: Contributor Terms
         agreed: You have agreed to the new Contributor Terms.
@@ -276,6 +270,8 @@ en-GB:
           france: France
           italy: Italy
           rest_of_world: Rest of the world
+      update:
+        terms accepted: Thanks for accepting the new contributor terms!
       terms_declined_flash:
         terms_declined_html: We are sorry that you have decided to not accept the
           new Contributor Terms. For more information, please see %{terms_declined_link}.
@@ -370,7 +366,6 @@ en-GB:
     index:
       title: Changesets
       title_user: Changesets by %{user}
-      title_friend: Changesets by my friends
       title_nearby: Changesets by nearby users
       empty: No changesets found.
       empty_area: No changesets in this area.
@@ -415,13 +410,9 @@ en-GB:
     popup:
       your location: Your location
       nearby mapper: Nearby mapper
-      friend: Friend
     show:
-      no friends: You have not added any friends yet.
       nearby users: Other nearby users
       no nearby users: There are no other users who admit to mapping nearby yet.
-      friends_changesets: friends' changesets
-      friends_diaries: friends' diary entries
       nearby_changesets: nearby user changesets
       nearby_diaries: nearby user diary entries
   diary_entries:
@@ -478,11 +469,6 @@ en-GB:
       all:
         title: OpenStreetMap diary entries
         description: Recent diary entries from users of OpenStreetMap
-  diary_comments:
-    page:
-      post: Post
-      when: When
-      comment: Comment
   doorkeeper:
     errors:
       messages:
@@ -491,18 +477,6 @@ en-GB:
         consent_required: The authorisation server requires end-user consent
         interaction_required: The authorisation server requires end-user interaction
         login_required: The authorisation server requires end-user authentication
-  friendships:
-    make_friend:
-      heading: Add %{user} as a friend?
-      button: Add as friend
-      success: '%{name} is now your friend!'
-      failed: Sorry, failed to add %{name} as a friend.
-      already_a_friend: You are already friends with %{name}.
-    remove_friend:
-      heading: Unfriend %{user}?
-      button: Unfriend
-      success: '%{name} was removed from your friends.'
-      not_a_friend: '%{name} is not one of your friends.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1128,12 +1102,9 @@ en-GB:
         subject %{subject}:'
       footer_html: You can also read the message at %{readurl} and you can send a
         message to the author at %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hi %{to_user},
-      subject: '[OpenStreetMap] %{user} added you as a friend'
-      had_added_you: '%{user} has added you as a friend on OpenStreetMap.'
       see_their_profile: You can see their profile at %{userurl}.
-      befriend_them: You can also add them as a friend at %{befriendurl}.
     gpx_failure:
       subject: '[OpenStreetMap] GPX Import failure'
     gpx_success:
@@ -1225,11 +1196,13 @@ en-GB:
       unread_button: Mark as unread
       destroy_button: Delete
       back: Back
-    mark:
-      as_read: Message marked as read
-      as_unread: Message marked as unread
     destroy:
       destroyed: Message deleted
+    read_marks:
+      create:
+        notice: Message marked as read
+      destroy:
+        notice: Message marked as unread
     mailboxes:
       heading:
         my_inbox: My Inbox
@@ -1603,13 +1576,14 @@ en-GB:
     offline:
       heading: GPX Storage Offline
       message: The GPX file storage and upload system is currently unavailable.
-    georss:
-      title: OpenStreetMap GPS Traces
-    description:
-      description_with_count:
-        one: GPX file with %{count} point from %{user}
-        other: GPX file with %{count} points from %{user}
-      description_without_count: GPX file from %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS Traces
+      description:
+        description_with_count:
+          one: GPX file with %{count} point from %{user}
+          other: GPX file with %{count} points from %{user}
+        description_without_count: GPX file from %{user}
   application:
     require_cookies:
       cookies_needed: You appear to have cookies disabled - please enable cookies
@@ -1634,7 +1608,6 @@ en-GB:
       display name description: Your publicly displayed username. You can change this
         later in the preferences.
       continue: Sign Up
-      terms accepted: Thanks for accepting the new contributor terms!
     no_such_user:
       title: No such user
       heading: The user %{user} does not exist
@@ -1657,8 +1630,6 @@ en-GB:
       edits: Edits
       traces: Traces
       notes: Map Notes
-      remove as friend: Unfriend
-      add as friend: Add Friend
       mapper since: 'Mapper since:'
       ct status: 'Contributor terms:'
       ct undecided: Undecided
@@ -1706,6 +1677,13 @@ en-GB:
       user:
         summary_html: '%{name} created from %{ip_address} on %{date}'
         summary_no_ip_html: '%{name} created on %{date}'
+    changeset_comments:
+      page:
+        when: When
+        comment: Comment
+    diary_comments:
+      page:
+        post: Post
     suspended:
       title: Account Suspended
       heading: Account Suspended
index 50c9cc754da25a053298903e39272b3e9f4697d0..172c6618232aedb1927e280e0cc55cd504e0aa18 100644 (file)
@@ -392,6 +392,7 @@ en:
         relation: "relation"
     start_rjs:
       feature_warning: "Loading %{num_features} features, which may make your browser slow or unresponsive. Are you sure you want to display this data?"
+      feature_error: "Features could not be loaded: %{message}"
       load_data: "Load Data"
       loading: "Loading..."
     tag_details:
@@ -484,18 +485,6 @@ en:
         created: "Created"
         closed: "Closed"
         belongs_to: "Author"
-    subscribe:
-      heading: Subscribe to the following changeset discussion?
-      button: Subscribe to discussion
-    unsubscribe:
-      heading: Unsubscribe from the following changeset discussion?
-      button: Unsubscribe from discussion
-    heading:
-      title: "Changeset %{id}"
-      created_by_html: "Created by %{link_user} on %{created}."
-    no_such_entry:
-      heading: "No entry with the id: %{id}"
-      body: "Sorry, there is no changeset with the id %{id}. Please check your spelling, or maybe the link you clicked is wrong."
     show:
       title: "Changeset: %{id}"
       created: "Created: %{when}"
@@ -527,6 +516,20 @@ en:
       sorry: "Sorry, changeset #%{id} could not be found."
     timeout:
       sorry: "Sorry, the list of changesets you requested took too long to retrieve."
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Subscribe to the following changeset discussion?
+        button: Subscribe to discussion
+      unsubscribe:
+        heading: Unsubscribe from the following changeset discussion?
+        button: Unsubscribe from discussion
+    heading:
+      title: "Changeset %{id}"
+      created_by_html: "Created by %{link_user} on %{created}."
+    no_such_entry:
+      heading: "No entry with the id: %{id}"
+      body: "Sorry, there is no changeset with the id %{id}. Please check your spelling, or maybe the link you clicked is wrong."
   dashboards:
     contact:
       km away: "%{count}km away"
@@ -1509,9 +1512,11 @@ en:
       reports: Reports
       last_updated: Last Updated
       last_updated_time_ago_user_html: "%{time_ago} by %{user}"
+      reporter_users: Reporter Users
       reports_count:
         one: "%{count} Report"
         other: "%{count} Reports"
+      more_reporters: "and %{count} more"
       reported_item: Reported Item
       states:
         ignored: Ignored
@@ -1780,14 +1785,17 @@ en:
       destroy_button: "Delete"
       back: "Back"
       wrong_user: "You are logged in as '%{user}' but the message you have asked to read was not sent by or to that user. Please log in as the correct user in order to read it."
-    mark:
-      as_read: "Message marked as read"
-      as_unread: "Message marked as unread"
-    unmute:
-      notice: "Message has been moved to Inbox"
-      error: "The message could not be moved to the Inbox."
     destroy:
       destroyed: "Message deleted"
+    read_marks:
+      create:
+        notice: "Message marked as read"
+      destroy:
+        notice: "Message marked as unread"
+    mutes:
+      destroy:
+        notice: "Message has been moved to Inbox"
+        error: "The message could not be moved to the Inbox."
     mailboxes:
       heading:
         my_inbox: "My Inbox"
index 147146e67db929ccf28c46a8e488832391031b54..bd692caa74f73e691b930af69b03772b5d580110 100644 (file)
@@ -109,7 +109,7 @@ eo:
         support_url: Subtena retadreso
         allow_read_prefs: legi preferojn de uzantoj
         allow_write_prefs: modifi preferojn de uzantoj
-        allow_write_diary: afiŝi en taglibro, komenti kaj amikiĝi
+        allow_write_diary: afiŝi en taglibro kaj komenti
         allow_write_api: redakti la mapon
         allow_read_gpx: legi privatajn GPS-spurojn
         allow_write_gpx: alŝuti GPS-spurojn
@@ -270,13 +270,6 @@ eo:
       external auth: Ekstera aŭtentigo
       openid:
         link text: Pliaj informoj
-      public editing:
-        heading: Publika redaktado
-        enabled: Ebligita. Ne anonima kaj rajtas redakti.
-        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?
       contributor terms:
         heading: Interkonsento pri kontribuado
         agreed: Vi konsentis la novan interkonsenton pri kontribuado.
@@ -363,6 +356,8 @@ eo:
           france: Francujo
           italy: Italujo
           rest_of_world: Resto de la mondo
+      update:
+        terms accepted: Dankon por akcepto de nova interkonsento pri kontribuado!
       terms_declined_flash:
         terms_declined_html: Bedaŭrinde vi ne akceptis la novan interkonsenton pri
           kontribuado. Por pli da informoj, ekkonu kun %{terms_declined_link}.
@@ -521,7 +516,7 @@ eo:
       title: Ŝanĝaroj
       title_user: Ŝanĝaroj de %{user}
       title_user_link_html: Ŝanĝaroj de %{user_link}
-      title_friend: Ŝanĝaroj de miaj amikoj
+      title_followed: Ŝanĝaroj de uloj, kiujn mi sekvas
       title_nearby: Ŝanĝaroj de proksimaj uzantoj
       empty: Neniu trovita ŝanĝaro.
       empty_area: Neniu ŝanĝaro en tiu ĉi areo.
@@ -536,19 +531,6 @@ eo:
         created: Kreita
         closed: Fermita
         belongs_to: Aŭtoro
-    subscribe:
-      heading: Ĉu aboni diskuton pri tiu ĉi ŝanĝaro?
-      button: Aboni diskuton
-    unsubscribe:
-      heading: Ĉu malaboni diskuton pri tiu ĉi ŝanĝaro?
-      button: Malaboni diskuton
-    heading:
-      title: Ŝanĝaro %{id}
-      created_by_html: Kreita de %{link_user} je %{created}.
-    no_such_entry:
-      heading: 'Neniu ŝanĝaro kun la identigilo: %{id}'
-      body: Bedaŭrinde ne ekzistas ŝanĝaro kun la identigilo %{id}. Kontrolu pri liter-eraroj
-        aŭ eble vi alklakis eraran ligilon.
     show:
       title: 'Ŝanĝaro: %{id}'
       created: Kreita je %{when}
@@ -581,6 +563,21 @@ eo:
       sorry: 'Ne trovis ŝanĝaron #%{id}.'
     timeout:
       sorry: Bedaŭrinde daŭris tro longe kompili la petitan liston de ŝanĝaroj.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Ĉu aboni diskuton pri tiu ĉi ŝanĝaro?
+        button: Aboni diskuton
+      unsubscribe:
+        heading: Ĉu malaboni diskuton pri tiu ĉi ŝanĝaro?
+        button: Malaboni diskuton
+    heading:
+      title: Ŝanĝaro %{id}
+      created_by_html: Kreita de %{link_user} je %{created}.
+    no_such_entry:
+      heading: 'Neniu ŝanĝaro kun la identigilo: %{id}'
+      body: Bedaŭrinde ne ekzistas ŝanĝaro kun la identigilo %{id}. Kontrolu pri liter-eraroj
+        aŭ eble vi alklakis eraran ligilon.
   dashboards:
     contact:
       km away: '%{count} km for'
@@ -589,20 +586,20 @@ eo:
     popup:
       your location: Via loko
       nearby mapper: Proksima uzanto
-      friend: Amiko
+      following: Sekvata de mi
     show:
       title: Mia panelo
       no_home_location_html: '%{edit_profile_link} kaj agordu vian hejmlokon por vidi
         proksimajn uzantojn.'
       edit_your_profile: Redaktu vian profilon
-      my friends: Miaj amikoj
-      no friends: Vi ne aldonis iun amikon ankoraŭ.
+      followings: Uzantoj sekvataj de mi
+      no followings: Vi ankoraŭ sekvas neniun uzanton.
       nearby users: Plej proksimaj uzantoj
       no nearby users: Neniu alia uzanto, kiu deklaris mapigadon en tiu ĉi areo.
-      friends_changesets: ŝanĝaroj de amikoj
-      friends_diaries: afiŝoj en taglibroj de amikoj
-      nearby_changesets: ŝanĝaroj de proksimuloj
-      nearby_diaries: afiŝoj en taglibroj de proksimuloj
+      followed_changesets: ŝanĝaroj
+      followed_diaries: afiŝoj en taglibroj
+      nearby_changesets: ŝanĝaroj
+      nearby_diaries: afiŝoj en taglibroj
   diary_entries:
     new:
       title: Nova taglibra afiŝo
@@ -611,7 +608,7 @@ eo:
       use_map_link: Montri sur mapo
     index:
       title: Taglibroj de uzantoj
-      title_friends: Taglibroj de amikoj
+      title_followed: Taglibroj de sekvataj uzantoj
       title_nearby: Taglibroj de proksimaj uzantoj
       user_title: Taglibro de %{user}
       in_language_title: Taglibraj afiŝoj en %{language}
@@ -677,15 +674,6 @@ eo:
       heading: Ĉu malaboni diskuton pri tiu ĉi taglibra afiŝo?
       button: Malaboni diskuton
   diary_comments:
-    index:
-      title: Komentoj de %{user} sub taglibraj afiŝoj
-      heading: Komentoj de %{user}
-      subheading_html: Komentoj de %{user} sub taglibraj afiŝoj
-      no_comments: Neniu taglibra komento
-    page:
-      post: Afiŝi
-      when: Kiam
-      comment: Komento
     new:
       heading: Ĉu aldoni komenton al la diskuto pri tiu ĉi taglibra afiŝo?
   doorkeeper:
@@ -741,20 +729,23 @@ eo:
       title: Paĝo ne trovita
       description: Ne povis trovi dosieron/dosierujon/API-peton kun tiu ĉi nomo ĉe
         la OpenStreetMap-servilo (HTTP 404).
-  friendships:
-    make_friend:
-      heading: Ĉu aldoni %{user} al amikoj?
-      button: Aldoni kiel amikon
-      success: '%{name} nun estas via amiko.'
-      failed: Bedaŭrinde malsukcesis aldoni %{name} kiel amiko.
-      already_a_friend: Vi jam estas amiko de %{name}.
-      limit_exceeded: Vi antaŭtempe aldonis multajn uzantojn al la listo de amikoj.
-        Atendu iom da tempo antaŭ aldoni pliajn uzantojn al la listo.
-    remove_friend:
-      heading: Ĉu eksamikigi %{user}?
-      button: Eksamikigi
-      success: '%{name} estis forviŝita el viaj amikoj.'
-      not_a_friend: '%{name} ne estas amiko via.'
+  follows:
+    show:
+      follow:
+        heading: Ĉu vi volas aldoni la uzanton %{user} al sekvataj?
+        button: Aldoni al sekvataj uzantoj
+      unfollow:
+        heading: Ĉu vi volas forigi la uzanton %{user} el sekvataj?
+        button: Forigi el sekvataj uzantoj
+    create:
+      success: Vi nun sekvas la uzanton %{name}!
+      failed: Bedaŭrinde malsukcesis aldoni la uzanton %{name} al viaj sekvataj uzantoj.
+      already_followed: Vi jam sekvas la uzanton %{name}.
+      limit_exceeded: Vi antaŭtempe aldonis multajn uzantojn al via listo de sekvataj
+        uzantoj. Atendu iom da tempo antaŭ aldoni pliajn.
+    destroy:
+      success: Vi nun ne sekvas la uzanton %{name}.
+      not_followed: Vi ne sekvas la uzanton %{name}.
   geocoder:
     search:
       title:
@@ -1721,20 +1712,23 @@ eo:
         aŭtoro ĉe %{replyurl}
       footer_html: Vi ankaŭ povas legi la mesaĝon ĉe %{readurl} kaj sendi mesaĝon
         al la aŭtoro ĉe %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Saluton %{to_user},
-      subject: '[OpenStreetMap] %{user} aldonis vin kiel amikon'
-      had_added_you: '%{user} aldonis vin kiel amikon je OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} sekvas vin'
+      followed_you: La uzanto %{user} nun aldonis vin al sia listo de sekvataj uzantoj
+        sur OpenStreetMap.
       see_their_profile: Vi povas vidi ties profilon ĉe %{userurl}.
       see_their_profile_html: Vi povas vidi ties profilon ĉe %{userurl}.
-      befriend_them: Vi ankaŭ povas aldoni vin kiel amikon ĉe %{befriendurl}.
-      befriend_them_html: Vi ankaŭ povas aldoni ilin kiel amiko ĉe %{befriendurl}
+      follow_them: Vi ankaŭ povas sekvi lin ĉe %{followurl}.
+      follow_them_html: Vi ankaŭ povas sekvi lin ĉe %{followurl}.
     gpx_details:
       details: 'Detaloj pri via dosiero:'
       filename: Dosiernomo
       url: Retadreso
       description: Priskribo
       tags: Etikedoj
+      total_points: Punktoj tute
+      imported_points: Enportitaj punktoj
     gpx_failure:
       hi: Saluton %{to_user},
       failed_to_import: Malsukcesis enporti vian dosieron kun GPS-spuro.
@@ -1749,6 +1743,7 @@ eo:
       subject: '[OpenStreetMap] Eraro dum enportado de GPX-dosiero'
     gpx_success:
       hi: Saluton %{to_user},
+      imported_successfully: Via dosiero estas sukcese enportita kiel GPS-spuro.
       all_your_traces: Ĉiuj viaj sukcese alŝutitaj GPX-spuroj troveblas ĉe %{url}
       all_your_traces_html: Ĉiuj viaj sukcese alŝutitaj GPX-spuroj troveblas ĉe %{url}.
       subject: '[OpenStreetMap] GPX-dosiero enportita sukcese'
@@ -1879,14 +1874,17 @@ eo:
       wrong_user: Vi estas ensalutinta kiel '%{user}', sed la mesaĝo – kiun vi volas
         legi – ne estas sendita al aŭ el tiu uzanto. Ensalutu kiel propra uzanto por
         legi ĝin.
-    mark:
-      as_read: Mesaĝo markita kiel legitan
-      as_unread: Mesaĝo markita kiel nelegitan
-    unmute:
-      notice: Movis mesaĝon al ricevujo
-      error: La mesaĝo ne povis esti movita al la ricevujo.
     destroy:
       destroyed: Mesaĝo forigita
+    read_marks:
+      create:
+        notice: Mesaĝo markita kiel legitan
+      destroy:
+        notice: Mesaĝo markita kiel nelegitan
+    mutes:
+      destroy:
+        notice: Movis mesaĝon al ricevujo
+        error: La mesaĝo ne povis esti movita al la ricevujo.
     mailboxes:
       heading:
         my_inbox: Ricevujo
@@ -2043,6 +2041,9 @@ eo:
       preview: Antaŭvidi
       help: Helpo
     pagination:
+      changeset_comments:
+        older: Pli malnovaj komentoj
+        newer: Pli novaj komentoj
       diary_comments:
         older: Pli malnovaj komentoj
         newer: Pli novaj komentoj
@@ -2602,8 +2603,8 @@ eo:
       description: 'Priskribo:'
       tags: 'Etikedoj:'
       none: Neniu
-      edit_trace: Redakti ĉi tiun spuron
-      delete_trace: Forviŝi ĉi tiun spuron
+      edit_trace: Redakti tiun ĉi spuron
+      delete_trace: Forigi tiun ĉi spuron
       trace_not_found: Spuro ne trovebla!
       visibility: 'Videbleco:'
       confirm_delete: Ĉu forigi tiun ĉi spuron?
@@ -2644,13 +2645,14 @@ eo:
     offline:
       heading: GPX-konservejo malaktiva
       message: La sistemo por alŝutado kaj konservado de GPX-dosieroj estas nune nedisponebla.
-    georss:
-      title: OpenStreetMap GPS-spuroj
-    description:
-      description_with_count:
-        one: GPX-dosiero kun %{count} punkto de %{user}
-        other: GPX-dosiero kun %{count} punktoj de %{user}
-      description_without_count: GPX-dosiero de %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-spuroj
+      description:
+        description_with_count:
+          one: GPX-dosiero kun %{count} punkto de %{user}
+          other: GPX-dosiero kun %{count} punktoj de %{user}
+        description_without_count: GPX-dosiero de %{user}
   application:
     permission_denied: Vi ne rajtas fari tiun ĉi agon
     require_cookies:
@@ -2719,7 +2721,7 @@ eo:
       openid: ensaluti uzante OpenStreetMap
       read_prefs: legi preferojn de uzanto
       write_prefs: modifi preferojn de uzanto
-      write_diary: afiŝi en taglibro, komenti kaj aldoni amikojn
+      write_diary: afiŝi en taglibro kaj komenti
       write_api: redakti la mapon
       read_gpx: legi privatajn GPS-spurojn
       write_gpx: alŝuti GPS-spurojn
@@ -2810,7 +2812,6 @@ eo:
           de retpoŝta adreso
         contributor_terms: Interkonsento pri kontribuado
       continue: Registriĝi
-      terms accepted: Dankon por akcepto de nova interkonsento pri kontribuado!
       email_help:
         privacy_policy: privatecan politikon
         privacy_policy_title: privateca politiko de OSMF enhavanta sekcion pri uzo
@@ -2848,8 +2849,8 @@ eo:
       edits: Redaktoj
       traces: Spuroj
       notes: Map-rimarkoj
-      remove as friend: Eksamikigi
-      add as friend: Aldoni kiel amikon
+      unfollow: Ne sekvi
+      follow: Sekvi
       mapper since: 'Mapigisto ekde:'
       last map edit: 'Antaŭa map-redakto:'
       no activity yet: ankoraŭ neniu agado
@@ -2922,6 +2923,26 @@ eo:
       user:
         summary_html: '%{name} kreita de %{ip_address} je %{date}'
         summary_no_ip_html: '%{name} kreita je %{date}'
+    comments:
+      index:
+        heading_html: Komentoj de %{user}
+        changesets: pri ŝanĝaroj
+        diary_entries: pri taglibraj afiŝoj
+        no_comments: Neniu komento
+    changeset_comments:
+      index:
+        title: Komentoj pri ŝanĝaroj skribitaj de %{user}
+      page:
+        changeset: Ŝanĝaro
+        when: Kiam
+        comment: Komento
+    diary_comments:
+      index:
+        title: Komentoj de %{user} sub taglibraj afiŝoj
+      page:
+        post: Afiŝi
+        when: Kiam
+        comment: Komento
     suspended:
       title: Konto haltigita
       heading: Konto haltigita
@@ -3126,9 +3147,19 @@ eo:
         povos ripari tion. Movu la markon al la respektivan pozicion kaj enmetu la
         rimarkon priskribantan la problemon.
       anonymous_warning_html: Vi ne estas ensalutinta. %{log_in} aŭ %{sign_up} por
-        ricevi sciigojn pri via rimarko.
+        ricevi sciigojn pri via rimarko kaj por helpi al mapigistoj solvi ĝin.
       anonymous_warning_log_in: Ensalutu
       anonymous_warning_sign_up: registriĝu
+      counter_warning_html: Vi jam publikigis almenaŭ %{x_anonymous_notes}, tio ĉi
+        estas bonega por la komunumo, dankon! Nun ni instigas vin al %{contribute_by_yourself},
+        tio ĉi ne estas tiel malsimpla kaj la %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} anoniman rimarkon'
+        other: '%{count} anonimajn rimarkojn'
+      counter_warning_guide_link:
+        text: kontribui mem
+      counter_warning_forum_link:
+        text: komunumo povas helpi vin
       advice: Via rimarko estas publika kaj povas esti uzita por ĝisdatigi la mapon,
         do ne enmetu privatajn informojn kaj informojn el kopirajtaj mapoj aŭ aliaj
         datumbazoj.
index 0ad07a2f16a1cdf47dee42e8d86593634a9756e8..e0592a87b3ce610e18a64b2baaaaeb7e61735f93 100644 (file)
@@ -346,14 +346,6 @@ es:
       openid:
         link: https://wiki.openstreetmap.org/wiki/ES:OpenID
         link text: ¿Qué es esto?
-      public editing:
-        heading: Edición pública
-        enabled: Activadas. No es anónimo y puedes editar datos.
-        enabled link: https://wiki.openstreetmap.org/wiki/ES:Ediciones_an%C3%B3nimas
-        enabled link text: ¿Qué es esto?
-        disabled: Desactivadas y no puedes editar datos; todas las ediciones anteriores
-          son anónimas.
-        disabled link text: ¿Por qué no puedo editar?
       contributor terms:
         heading: Términos de Colaborador
         agreed: Has aceptado los nuevos Términos de Colaborador.
@@ -438,7 +430,6 @@ es:
         readable_summary: resumen legible por humanos
         informal_translations: traducciones informales
         continue: Continuar
-        declined: https://wiki.openstreetmap.org/wiki/ES:Términos_de_contribuidor_rechazados
         cancel: Cancelar
         you need to accept or decline: Lee y luego acepta o rechaza los nuevos Términos
           de Colaborador para continuar.
@@ -447,6 +438,8 @@ es:
           france: Francia
           italy: Italia
           rest_of_world: Resto del mundo
+      update:
+        terms accepted: ¡Gracias por aceptar los nuevos Términos de Colaborador!
       terms_declined_flash:
         terms_declined_html: Lamentamos que haya decidido no aceptar los nuevos Términos
           de Colaborador. Para obtener más información, consulte %{terms_declined_link}.
@@ -598,7 +591,6 @@ es:
       title: Conjuntos de Cambios
       title_user: Conjunto de cambios de %{user}
       title_user_link_html: Conjunto de cambios de %{user_link}
-      title_friend: Conjuntos de cambios realizados por mis amigos
       title_nearby: Conjuntos de cambios realizados por usuarios cercanos
       empty: No se han encontrado conjuntos de cambios.
       empty_area: No hay conjuntos de cambios en este área.
@@ -613,19 +605,6 @@ es:
         created: Creado
         closed: Cerrado
         belongs_to: Autor
-    subscribe:
-      heading: ¿Deseas suscribirte a la siguiente discusión del conjunto de cambios?
-      button: Suscribirse a la discusión
-    unsubscribe:
-      heading: ¿Deseas desuscribirte de la siguiente discusión del conjunto de cambios?
-      button: Desuscribirse de la discusión
-    heading:
-      title: Conjunto de Cambios %{id}
-      created_by_html: Creado por %{link_user} el %{created}.
-    no_such_entry:
-      heading: 'No hay entrada con id: %{id}'
-      body: Lo sentimos, no existe algún conjunto de cambios con id %{id}. Revisa
-        los dígitos, o tal vez el enlace en el que hiciste clic sea incorrecto.
     show:
       title: 'Conjunto de Cambios: %{id}'
       created: 'Creado: %{when}'
@@ -657,6 +636,21 @@ es:
     timeout:
       sorry: Lo sentimos, la lista de conjuntos de cambios que solicitó tardó demasiado
         en obtenerse.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: ¿Deseas suscribirte a la siguiente discusión del conjunto de cambios?
+        button: Suscribirse a la discusión
+      unsubscribe:
+        heading: ¿Deseas desuscribirte de la siguiente discusión del conjunto de cambios?
+        button: Desuscribirse de la discusión
+    heading:
+      title: Conjunto de Cambios %{id}
+      created_by_html: Creado por %{link_user} el %{created}.
+    no_such_entry:
+      heading: 'No hay entrada con id: %{id}'
+      body: Lo sentimos, no existe algún conjunto de cambios con id %{id}. Revisa
+        los dígitos, o tal vez el enlace en el que hiciste clic sea incorrecto.
   dashboards:
     contact:
       km away: '%{count} km. de distancia'
@@ -665,18 +659,13 @@ es:
     popup:
       your location: Tu ubicación
       nearby mapper: Mapeadores cercanos
-      friend: Amigo
     show:
       title: Mi Tablero
       no_home_location_html: '%{edit_profile_link} y establece tu ubicación de origen
         para ver los usuarios cercanos.'
       edit_your_profile: Edita tu perfil
-      my friends: Mis amigos
-      no friends: No has añadido amigos aún.
       nearby users: Otros usuarios cercanos
       no nearby users: Todavía no hay usuarios que admitan mapear cerca.
-      friends_changesets: conjuntos de cambios realizados por amigos
-      friends_diaries: entradas de diarios de amigos
       nearby_changesets: conjuntos de cambios de los usuarios cercanos
       nearby_diaries: entradas de diarios de usuarios cercanos
   diary_entries:
@@ -687,7 +676,6 @@ es:
       use_map_link: Usar mapa
     index:
       title: Diarios de Usuarios
-      title_friends: Diarios de Amigos
       title_nearby: Diarios de Usuarios Cercanos
       user_title: Diario de %{user}
       in_language_title: Entradas de diario en %{language}
@@ -754,15 +742,6 @@ es:
       heading: ¿Deseas desuscribirte de la siguiente discusión de entrada de diario?
       button: Desuscribirse de la discusión
   diary_comments:
-    index:
-      title: Comentarios de Diario añadidos por %{user}
-      heading: Comentarios del diario de %{user}
-      subheading_html: Comentarios de diario añadidos por %{user}
-      no_comments: Ningún comentario de diario
-    page:
-      post: Publicación
-      when: Cuando
-      comment: Comentario
     new:
       heading: ¿Añadir un comentario a la siguiente discusión de entrada en el diario?
   doorkeeper:
@@ -823,20 +802,6 @@ es:
       title: No se encontró el archivo
       description: No se pudo encontrar un archivo, directorio u operación de API
         con ese nombre en el servidor de OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: ¿Añadir a %{user} como un amigo?
-      button: Añadir como amigo
-      success: ¡%{name} ahora es tu amigo!
-      failed: Lo sentimos, no se ha podido añadir a %{name} como un amigo.
-      already_a_friend: Ya eres amigo de %{name}.
-      limit_exceeded: Has agregado a muchos amigos recientemente. Por favor espera
-        un poco antes de intentar agregar más amigos.
-    remove_friend:
-      heading: ¿Quitar a %{user} de tus amigos?
-      button: Quitar como amigo
-      success: Has quitado a %{name} de tus amigos.
-      not_a_friend: '%{name} no es uno de tus amigos.'
   geocoder:
     search:
       title:
@@ -1808,14 +1773,10 @@ es:
         autor en %{replyurl}
       footer_html: También puedes leer el mensaje en %{readurl} y puede responder
         en %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hola %{to_user},
-      subject: '[OpenStreetMap] %{user} te ha añadido como amigo'
-      had_added_you: '%{user} te ha añadido como amigo en OpenStreetMap'
       see_their_profile: Puedes ver su perfil en %{userurl}.
       see_their_profile_html: Puedes ver su perfil en %{userurl}.
-      befriend_them: También puedes añadirlo como amigo en %{befriendurl}.
-      befriend_them_html: También puedes añadirlo como amigo en %{befriendurl}.
     gpx_failure:
       hi: Hola %{to_user},
       failed_to_import: 'falló en la importación como un archivo de traza GPS. Verifica
@@ -1975,14 +1936,17 @@ es:
       wrong_user: Estás conectado como '%{user}' pero el mensaje que quieres leer
         no se ha enviado por o a dicho usuario. Por favor, inicia sesión con el usuario
         correcto para leer el mensaje.
-    mark:
-      as_read: Mensaje marcado como leído
-      as_unread: Mensaje marcado como no leído
-    unmute:
-      notice: El mensaje se ha trasladado a la bandeja de entrada
-      error: No se pudo trasladar el mensaje a la bandeja de entrada.
     destroy:
       destroyed: Mensaje eliminado
+    read_marks:
+      create:
+        notice: Mensaje marcado como leído
+      destroy:
+        notice: Mensaje marcado como no leído
+    mutes:
+      destroy:
+        notice: El mensaje se ha trasladado a la bandeja de entrada
+        error: No se pudo trasladar el mensaje a la bandeja de entrada.
     mailboxes:
       heading:
         my_inbox: Mi buzón
@@ -2777,13 +2741,14 @@ es:
       heading: Almacenamiento GPX desconectado
       message: El sistema de almacenamiento y subida de archivos GPX no se encuentra
         disponible en este momento.
-    georss:
-      title: Trazas GPS de OpenStreetMap
-    description:
-      description_with_count:
-        one: Archivo GPX con %{count} punto de %{user}
-        other: Archivo GPX con %{count} puntos de %{user}
-      description_without_count: Archivo GPX de %{user}
+    feeds:
+      show:
+        title: Trazas GPS de OpenStreetMap
+      description:
+        description_with_count:
+          one: Archivo GPX con %{count} punto de %{user}
+          other: Archivo GPX con %{count} puntos de %{user}
+        description_without_count: Archivo GPX de %{user}
   application:
     permission_denied: No tienes permisos para realizar esa acción
     require_cookies:
@@ -2943,7 +2908,6 @@ es:
           sobre direcciones de correo electrónico
         contributor_terms: términos de colaborador
       continue: Registrarse
-      terms accepted: ¡Gracias por aceptar los nuevos Términos de Colaborador!
       email_help:
         privacy_policy: política de privacidad
         privacy_policy_title: Política de privacidad de la OSMF, incluida la sección
@@ -2982,8 +2946,6 @@ es:
       edits: Ediciones
       traces: Trazas
       notes: Notas del mapa
-      remove as friend: Eliminar como amigo
-      add as friend: Añadir como amigo
       mapper since: 'Mapeando desde:'
       last map edit: Última edición del mapa
       no activity yet: Sin actividad todavía
@@ -3059,6 +3021,15 @@ es:
       user:
         summary_html: '%{name} creado desde %{ip_address} el %{date}'
         summary_no_ip_html: '%{name} creado el %{date}'
+    changeset_comments:
+      page:
+        when: Cuando
+        comment: Comentario
+    diary_comments:
+      index:
+        title: Comentarios de Diario añadidos por %{user}
+      page:
+        post: Publicación
     suspended:
       title: Cuenta Suspendida
       heading: Cuenta suspendida
index 6da91338363e2df2387abe91d47b014ad06aade1..a52a0e19ea909d26fe6b52505f4710c76713e380 100644 (file)
@@ -93,7 +93,7 @@ et:
         support_url: Toe URL
         allow_read_prefs: lugeda tema kasutajaeelistusi
         allow_write_prefs: muuta tema kasutajaeelistusi
-        allow_write_diary: luua päevikusissekandeid, kommenteerida ja lisada sõpru
+        allow_write_diary: luua päevikusissekandeid ja -kommentaare
         allow_write_api: muuta kaarti
         allow_read_gpx: lugeda tema isiklikke GPS-radu
         allow_write_gpx: laadida üles GPS-radu
@@ -248,12 +248,6 @@ et:
       external auth: Väline autentimine
       openid:
         link text: mis see on?
-      public editing:
-        heading: Avalik toimetamine
-        enabled: Lubatud. Pole anonüümne ja saab andmeid muuta.
-        enabled link text: mis see on?
-        disabled: Keelatud ja ei saa andmeid muuta, kõik varasemad muudatused on anonüümsed.
-        disabled link text: Miks ma ei saa kaarti töödelda?
       contributor terms:
         heading: Kaastöötingimused
         agreed: Oled nõustunud uute kaastöötingimustega.
@@ -339,6 +333,8 @@ et:
           france: Prantsusmaa
           italy: Itaalia
           rest_of_world: Muu maailm
+      update:
+        terms accepted: Täname, et nõustusid uute kaastöötingimustega!
       terms_declined_flash:
         terms_declined_html: Meil on kahju, et otsustasid kaastöötingimustega mitte
           nõustutada. Lisateavet leiad %{terms_declined_link}.
@@ -387,7 +383,7 @@ et:
         way: joon
         relation: relatsioon
     containing_relation:
-      entry_role_html: Relatsioon %{relation_name} (kui %{relation_role})
+      entry_role_html: '%{relation_name} (kui %{relation_role})'
     not_found:
       title: Ei leidu
     timeout:
@@ -468,7 +464,6 @@ et:
       title: Muudatuskogumid
       title_user: Kasutaja %{user} muudatuskogumid
       title_user_link_html: Kasutaja %{user_link} muudatuskogumid
-      title_friend: Sõprade muudatuskogumid
       title_nearby: Läheduses asuvate kasutajate muudatuskogumid
       empty: Muudatuskogumeid ei leitud.
       empty_area: Selles alas ei ole muudatuskogumeid.
@@ -483,20 +478,6 @@ et:
         created: Loodud
         closed: Suletud
         belongs_to: Autor
-    subscribe:
-      heading: Kas soovid selle muudatuskogumi arutelu tellida?
-      button: Telli arutelu
-    unsubscribe:
-      heading: Kas soovid selle muudatuskogumi arutelu tellimusest loobuda?
-      button: Loobu arutelu jälgimisest
-    heading:
-      title: Muudatuskogum %{id}
-      created_by_html: Loonud %{link_user} kuupäeval %{created}
-    no_such_entry:
-      heading: Ei leidu kirjet identifikaatoriga %{id}
-      body: Vabandust, muudatuskogumit identifikaatoriga %{id} ei ole olemas. Palun
-        kontrolli, kas kirjutasid selle õigesti või kas link millel klõpsasid, on
-        vale.
     show:
       title: 'Muudatuskogum: %{id}'
       created: 'Loodud: %{when}'
@@ -527,6 +508,22 @@ et:
       relations_paginated: Relatsioonid (%{x}–%{y} %{count}-st)
     timeout:
       sorry: Kahjuks võttis taotletud muudatuskogumite laadimine liiga kaua aega.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Kas soovid selle muudatuskogumi arutelu tellida?
+        button: Telli arutelu
+      unsubscribe:
+        heading: Kas soovid selle muudatuskogumi arutelu tellimusest loobuda?
+        button: Loobu arutelu jälgimisest
+    heading:
+      title: Muudatuskogum %{id}
+      created_by_html: Loonud %{link_user} kuupäeval %{created}
+    no_such_entry:
+      heading: Ei leidu kirjet identifikaatoriga %{id}
+      body: Vabandust, muudatuskogumit identifikaatoriga %{id} ei ole olemas. Palun
+        kontrolli, kas kirjutasid selle õigesti või kas link millel klõpsasid, on
+        vale.
   dashboards:
     contact:
       km away: '%{count} kilomeetri kaugusel'
@@ -535,19 +532,14 @@ et:
     popup:
       your location: Sinu asukoht
       nearby mapper: Lähedaloevad kaardistajad
-      friend: Sõber
     show:
       title: Minu andmelaud
       no_home_location_html: '%{edit_profile_link} ja määra enda asukoht, et näha
         ümberkaudseid kasutajaid.'
       edit_your_profile: Muuda profiili
-      my friends: Minu sõbrad
-      no friends: Sa ei ole lisanud veel ühtegi sõpra.
       nearby users: Teised lähedal asuvad kasutajad
       no nearby users: Puuduvad teised kasutajad, kes tunnistavad, et kaardistavad
         läheduses.
-      friends_changesets: sõprade muudatuskogumid
-      friends_diaries: sõprade päevikusissekanded
       nearby_changesets: lähedalasuvate kasutajate muudatuskogumid
       nearby_diaries: lähedalasuvate kasutajate päevikusissekanded
   diary_entries:
@@ -558,7 +550,6 @@ et:
       use_map_link: Kasuta kaarti
     index:
       title: Kasutajate päevikud
-      title_friends: Sõprade päevikud
       title_nearby: Lähedalasuvate kasutajate päevikud
       user_title: Kasutaja %{user} päevik
       in_language_title: Päevikusissekanded (%{language})
@@ -624,16 +615,6 @@ et:
     unsubscribe:
       heading: Kas soovid selle päevikusissekande arutelu tellimusest loobuda?
       button: Loobu arutelu jälgimisest
-  diary_comments:
-    index:
-      title: Kasutaja %{user} lisatud päevikukommentaarid
-      heading: Kasutaja %{user} päevikukommentaarid
-      subheading_html: Päevikukommentaarid, mille on lisanud kasutaja %{user}
-      no_comments: Päevikukommentaarid puuduvad.
-    page:
-      post: Postitus
-      when: Millal
-      comment: Kommentaar
   doorkeeper:
     flash:
       applications:
@@ -663,20 +644,6 @@ et:
       title: Faili ei leidu
       description: Sellise nimega faili/kataloogi/API meetodit ei leidu OpenStreetMapi
         serveris (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Lisada %{user} sõbraks?
-      button: Lisa sõbraks
-      success: '%{name} on nüüd sinu sõber.'
-      failed: Vabandust, kasutaja %{name} sõbraks lisamine ebaõnnestus.
-      already_a_friend: Sa oled kasutajaga %{name} juba sõber.
-      limit_exceeded: Sa oled endale hiljuti lisanud palju sõpru. Palun oota mõnda
-        aega, enne kui proovid veel sõpru lisada.
-    remove_friend:
-      heading: Eemaldada %{user} sõprade hulgast?
-      button: Eemalda sõprade hulgast
-      success: '%{name} eemaldati sinu sõprade hulgast.'
-      not_a_friend: '%{name} ei ole üks sinu sõpradest.'
   geocoder:
     search:
       title:
@@ -1542,6 +1509,7 @@ et:
       vajalikke hooldustöid.
     osm_read_only: OpenStreetMapi andmebaas on hetkel oluliste hooldustööde tõttu
       ligipääsetav ainult lugemiseks.
+    nothing_to_preview: Eelvaates pole midagi näidata.
     help: Juhend
     about: Teave
     copyright: Autoriõigused
@@ -1573,25 +1541,34 @@ et:
         aadressil %{replyurl}.
       footer_html: Saad lugeda sõnumit ka aadressil %{readurl} ja saata autorile sõnumi
         aadressil %{replyurl}.
-    friendship_notification:
+    follow_notification:
       hi: Tere, %{to_user}
-      subject: '[OpenStreetMap] %{user} lisas sind oma sõbraks'
-      had_added_you: '%{user} lisas sind OpenStreetMapis sõbraks.'
       see_their_profile: Tema profiiliga võid tutvuda aadressil %{userurl}.
       see_their_profile_html: Tema profiiliga saad tutvuda aadressil %{userurl}.
-      befriend_them: Sa võid ta lisada oma sõbraks aadressil %{befriendurl}.
-      befriend_them_html: Saad ta ka enda sõbraks lisada aadressil %{befriendurl}.
+    gpx_details:
+      details: 'Sinu faili üksikasjad:'
+      filename: Failinimi
+      description: Kirjeldus
+      tags: Sildid
+      total_points: Punktide koguarv
+      imported_points: Imporditud punktide arv
     gpx_failure:
       hi: Tere, %{to_user}
-      failed_to_import: 'importimine GPS-rajafailiks ebaõnnestus. Palun veendu, et
-        sinu fail on korrektne GPX-fail või arhiiv, mis sisaldab GPX-faili või GPX-faile
-        ja mille vorming on toetatud (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
-        Kas sinu failis võib olla vormingu- või süntaksiviga? Siin on importimisviga:'
+      failed_to_import: Paistab, et sinu faili ei õnnestunud GPS-rajana importida.
+      verify: 'Palun veendu, et sinu fail on korrektne GPX-fail või arhiiv, mis sisaldab
+        GPX-faili või GPX-faile ja mille vorming on toetatud (.tar.gz, .tar.bz2, .tar,
+        .zip, .gpx.gz, .gpx.bz2). Kas sinu failis võib olla vormingu- või süntaksiviga?
+        Siin on importimisviga:'
+      more_info: Rohkem teavet GPX-failide importimise ja sellega seotud tõrgete vältimise
+        kohta leiad aadressilt %{url}
       more_info_html: Rohkem teavet GPX-failide importimise funktsiooni ja nende vältimise
         kohta leiad aadressilt %{url}.
       subject: '[OpenStreetMap] GPX-faili importimine nurjus'
     gpx_success:
       hi: Tere, %{to_user}
+      imported_successfully: Paistab, et sinu fail on GPS-rajana edukalt imporditud.
+      all_your_traces: Kõik GPX-rajad, mille oled edukalt üles laadinud, on leitavad
+        aadressil %{url}
       all_your_traces_html: Kõik sinu üles laaditud GPX-rajad on leitavad aadressil
         %{url}.
       subject: '[OpenStreetMap] GPX-faili importimine õnnestus'
@@ -1728,14 +1705,17 @@ et:
       wrong_user: Oled sisse loginud kui "%{user}" aga sõnum, mida soovid lugeda ei
         ole sellele kasutajale saadetud ega selle kasutaja poolt saadetud. Lugemiseks
         palun logi sisse õige kasutajana.
-    mark:
-      as_read: Sõnum on märgitud loetud sõnumiks.
-      as_unread: Sõnum on märgitud lugemata sõnumiks.
-    unmute:
-      notice: Sõnum on teisaldatud postkasti.
-      error: Sõnumit ei õnnestunud postkasti teisaldada.
     destroy:
       destroyed: Sõnum kustutatud.
+    read_marks:
+      create:
+        notice: Sõnum on märgitud loetud sõnumiks.
+      destroy:
+        notice: Sõnum on märgitud lugemata sõnumiks.
+    mutes:
+      destroy:
+        notice: Sõnum on teisaldatud postkasti.
+        error: Sõnumit ei õnnestunud postkasti teisaldada.
     mailboxes:
       heading:
         my_inbox: Saabunud sõnumid
@@ -2476,13 +2456,14 @@ et:
     offline:
       heading: GPX-failide salvestamine hetkel ei tööta
       message: GPX-failide salvestamise ja üleslaadimise süsteem pole hetkel kasutatav.
-    georss:
-      title: OpenStreetMapi GPS-rajad
-    description:
-      description_with_count:
-        one: Kasutaja %{user} %{count}-punktline GPX-fail
-        other: Kasutaja %{user} %{count}-punktline GPX-fail
-      description_without_count: Kasutaja %{user} GPX-fail
+    feeds:
+      show:
+        title: OpenStreetMapi GPS-rajad
+      description:
+        description_with_count:
+          one: Kasutaja %{user} %{count}-punktline GPX-fail
+          other: Kasutaja %{user} %{count}-punktline GPX-fail
+        description_without_count: Kasutaja %{user} GPX-fail
   application:
     require_cookies:
       cookies_needed: Paistab, et sul on küpsised keelatud. Enne jätkamist luba palun
@@ -2523,7 +2504,7 @@ et:
       openid: Sisse logida kasutades OpenStreetMapi
       read_prefs: Lugeda kasutajaeelistusi
       write_prefs: Muuta kasutajaeelistusi
-      write_diary: Luua päevikusissekandeid, kommenteerida ja lisada sõpru
+      write_diary: Luua päevikusissekandeid ja -kommentaare
       write_api: Muuta kaarti
       read_gpx: Lugeda isiklikke GPS-radu
       write_gpx: Laadida üles GPS-radu
@@ -2599,7 +2580,6 @@ et:
           aadresside kohta
         contributor_terms: kaastöötingimustega
       continue: Registreeru
-      terms accepted: Täname, et nõustusid uute kaastöötingimustega!
       email_help:
         privacy_policy: andmekaitsereeglitega
         privacy_policy_title: OSMF-i andmekaitsereeglid, sealhulgas peatükk e-posti
@@ -2635,8 +2615,6 @@ et:
       edits: Muudatused
       traces: Rajaloend
       notes: Märkused
-      remove as friend: Eemalda sõprade hulgast
-      add as friend: Lisa sõbraks
       mapper since: 'Kaardistaja alates:'
       last map edit: 'Viimane muudatus kaardil:'
       uid: 'Kasutaja ID:'
@@ -2695,6 +2673,15 @@ et:
       user:
         summary_html: '%{name} loodud IP-aadressilt %{ip_address} (%{date})'
         summary_no_ip_html: '%{name} loodud (%{date})'
+    changeset_comments:
+      page:
+        when: Millal
+        comment: Kommentaar
+    diary_comments:
+      index:
+        title: Kasutaja %{user} lisatud päevikukommentaarid
+      page:
+        post: Postitus
     suspended:
       title: Konto peatatud
       heading: Konto peatatud
@@ -2870,7 +2857,7 @@ et:
         kaardistajatele teada, et nad saaksid seda parandada. Lohista marker õigele
         kohale ja kirjuta märkus, et probleemi selgitada.
       anonymous_warning_html: Sa pole sisse logitud. Palun %{log_in} või %{sign_up},
-        kui soovid saada enda märkuse kohta uuendusi.
+        et saada enda märkuse kohta uuendusi ja et aidada kaardistajatel seda lahendada.
       anonymous_warning_log_in: logi sisse
       anonymous_warning_sign_up: registreeru
       advice: Märkus on avalik ja seda võidakse kasutada kaardi uuendamiseks. Seega
index badd07ad5dd96324143246a386147616c029e0db..c7ce429d51fc0ed5f973a8fbfb4e1dff85f0cc8b 100644 (file)
@@ -265,13 +265,6 @@ eu:
       external auth: Kanpoko Autentifikazioa
       openid:
         link text: zer da hau?
-      public editing:
-        heading: Aldaketa publikoa
-        enabled: Gaituta. Ez da anonimoa eta datuak editatu ditzake.
-        enabled link text: zer da hau?
-        disabled: Ezgaituta dago eta ezin ditu datuak editatu, aurreko aldaketa guztiak
-          anonimoak dira.
-        disabled link text: Zergatik ezin dut aldatu?
       contributor terms:
         heading: Kolaboratzaile Terminoak
         agreed: Kolaboratzaile-termino berriak onartu dituzu.
@@ -357,6 +350,8 @@ eu:
           france: Frantzia
           italy: Italy
           rest_of_world: Gainerako mundua
+      update:
+        terms accepted: Eskerrik asko laguntzaileen termino berriak onartzeagatik!
       terms_declined_flash:
         terms_declined_html: Sentitzen dugu Laguntzaile Baldintza berriak ez onartzea
           erabaki izana. Informazio gehiago lortzeko, ikusi %{terms_declined_link}.
@@ -482,7 +477,6 @@ eu:
       title: Aldaketak
       title_user: '%{user}k egindako aldaketak'
       title_user_link_html: '%{user_link}-(e)k eginiko aldaketak'
-      title_friend: Nire lagunek egindako aldaketak
       title_nearby: Hurbil dauden erabiltzaileek egindako aldaketak
       empty: Ez da aldaketarik aurkitu.
       empty_area: Inguru honetan ez dago aldaketarik.
@@ -497,10 +491,6 @@ eu:
         created: Sortua
         closed: Itxita
         belongs_to: Egilea
-    subscribe:
-      heading: Aldaketa multzoko eztabaida honetara harpidetu nahi duzu?
-    unsubscribe:
-      button: Eztabaidatik harpidetza kendu
     show:
       title: 'Aldaketa: %{id}'
       created_ago_html: Sortua orain dela %{time_ago}
@@ -530,6 +520,12 @@ eu:
     timeout:
       sorry: Barkatu, zuk eskatutako aldaketen zerrenda berreskuratzeko denbora gehiegi
         behar izan da.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Aldaketa multzoko eztabaida honetara harpidetu nahi duzu?
+      unsubscribe:
+        button: Eztabaidatik harpidetza kendu
   dashboards:
     contact:
       km away: '%{count} km-tara'
@@ -538,18 +534,13 @@ eu:
     popup:
       your location: Zure kokapena
       nearby mapper: Hurbileko mapeatzaileak
-      friend: Laguna
     show:
       title: Nire Arbela
       no_home_location_html: '%{edit_profile_link} eta ezarri zure etxeko kokapena
         inguruko erabiltzaileak ikusteko.'
       edit_your_profile: Zure perfila aldatu
-      my friends: Nire lagunak
-      no friends: Oraindik ez duzu lagunik gehitu.
       nearby users: Gertuko beste erabiltzaile batzuk
       no nearby users: Ez dago oraindik hurbileko mapa editatzea onartzen duen erabiltzailerik.
-      friends_changesets: Lagunen aldaketak
-      friends_diaries: Lagunen eguneroko sarrerak
       nearby_changesets: inguruko erabiltzaileen aldaketak
       nearby_diaries: inguruko erabiltzaileen eguneroko sarrerak
   diary_entries:
@@ -560,7 +551,6 @@ eu:
       use_map_link: Erabili mapa
     index:
       title: Erabiltzaileen egunerokoak
-      title_friends: Lagunen egunerokoak
       title_nearby: Hurbileko erabiltzaileen egunerokoak
       user_title: '%{user}(r)en egunerokoa'
       in_language_title: Eguneroko Sarrerak %{language} hizkuntzan
@@ -619,16 +609,6 @@ eu:
       all:
         title: OpenStreetMap eguneroko sarrerak
         description: OpenStreetMap erabiltzaileek azkenaldian egindako eguneroko sarrerak
-  diary_comments:
-    index:
-      title: '%{user} erabiltzaileak gehitutako egunkariko iruzkinak'
-      heading: '%{user} erabiltzailearen egunkariko iruzkinak'
-      subheading_html: '%{user} erabiltzaileak gehitutako egunkariko iruzkinak'
-      no_comments: Ez dago egunkariko iruzkinik
-    page:
-      post: Argitaratu
-      when: Noiz
-      comment: Iruzkina
   doorkeeper:
     errors:
       messages:
@@ -668,20 +648,6 @@ eu:
       title: Fitxategia ez da aurkitu
       description: Ezin izan da izen hori duen fitxategi/karpeta/API eragiketarik
         OpenStreetMap zerbitzarian aurkitu (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Gehitu %{user} adiskidetzat?
-      button: Gehitu lagun gisa
-      success: '%{name} zure laguna de orain!'
-      failed: Barkatu, ezin izan da %{name} adiskidetzat gehitu.
-      already_a_friend: '%{name} eta zuk lagunak zarete jada.'
-      limit_exceeded: Erabiltzaile askoren lagun egin zara azkenaldian. Mesedez, itxaron
-        pixka bat lagun gehiago egiten saiatu aurretik.
-    remove_friend:
-      heading: '%{user} lagun moduan kendu?'
-      button: Kendu adiskidetzat
-      success: '%{name} kendu duzu zure adiskide zerrendatik.'
-      not_a_friend: '%{name} ez da zure laguna.'
   geocoder:
     search:
       title:
@@ -1610,15 +1576,10 @@ eu:
       footer: Mezua %{readurl} helbidean ere irakur dezakezu eta egileari mezu bat
         bidal diezaiokezu %{replyurl} helbidean
       footer_html: Mezua irakurri dezakezu %{readurl}-n ere eta erantzun %{replyurl}-n
-    friendship_notification:
+    follow_notification:
       hi: Kaixo %{to_user},
-      subject: '[OpenStreetMap] %{user} erabiltzaileak adiskidetzat gehitu zaitu'
-      had_added_you: '%{user} lagun bezala gehitu zaitu OpenStreetMap-en.'
       see_their_profile: Haien profila %{userurl}n ikusi dezakezu.
       see_their_profile_html: Haien profila %{userurl} helbidean ikusi dezakezu.
-      befriend_them: Hura adiskidetzat gehitzeko aukera ere baduzu, %{befriendurl}
-        orrian.
-      befriend_them_html: Lagun gisa ere gehi ditzakezu %{befriendurl} helbidean.
     gpx_failure:
       hi: Kaixo %{to_user},
       failed_to_import: 'inportzean kale egin du. Hemen dago akatsa:'
@@ -1766,14 +1727,17 @@ eu:
       wrong_user: '''%{user}'' bezala saioa hasi duzu baina irakurtzeko eskatu duzun
         mezua ez da erabiltzaile horri bidali edo berak ez du bidali. Hasi saioa erabiltzaile
         zuzenarekin irakurtzeko.'
-    mark:
-      as_read: Mezua irakurrita gisa markatu da
-      as_unread: Mezua irakurri gabe gisa markatu da
-    unmute:
-      notice: Mezua Sarrera-ontzira eraman dugu
-      error: Mezua ezin izan da postontzira eraman.
     destroy:
       destroyed: Mezua ezabatuta
+    read_marks:
+      create:
+        notice: Mezua irakurrita gisa markatu da
+      destroy:
+        notice: Mezua irakurri gabe gisa markatu da
+    mutes:
+      destroy:
+        notice: Mezua Sarrera-ontzira eraman dugu
+        error: Mezua ezin izan da postontzira eraman.
     mailboxes:
       heading:
         my_inbox: Nire sarrera-ontzia
@@ -2405,13 +2369,14 @@ eu:
     offline:
       heading: Offline GPX Biltegia
       message: GPX fitxategien biltegiratze eta kargatze sistema ez dago erabilgarri.
-    georss:
-      title: OpenStreetMap GPS Aztarnak
-    description:
-      description_with_count:
-        one: '%{user} %{count} puntua duen GPX fitxategia'
-        other: '%{user} %{count} puntuak dituen GPX fitxategia'
-      description_without_count: '%{user}ren GPX fitxategia'
+    feeds:
+      show:
+        title: OpenStreetMap GPS Aztarnak
+      description:
+        description_with_count:
+          one: '%{user} %{count} puntua duen GPX fitxategia'
+          other: '%{user} %{count} puntuak dituen GPX fitxategia'
+        description_without_count: '%{user}ren GPX fitxategia'
   application:
     permission_denied: Ez duzu baimenik ekintza hori burutzeko
     require_cookies:
@@ -2529,7 +2494,6 @@ eu:
         privacy_policy_title: OSMF pribatutasun-politika helbide elektronikoei buruzko
           atala barne
       continue: Eman izena
-      terms accepted: Eskerrik asko laguntzaileen termino berriak onartzeagatik!
       email_help:
         html: Zure helbidea ez da publikoki bistaratzen, ikusi gure %{privacy_policy_link}
           informazio gehiago lortzeko.
@@ -2559,8 +2523,6 @@ eu:
       edits: Aldaketak
       traces: Aztarnak
       notes: Mapa Oharrak
-      remove as friend: Kendu adiskidetzat
-      add as friend: Gehitu adiskidetzat
       mapper since: 'Noiztik mapatzaile:'
       uid: 'Erabiltzaile ID:'
       ct status: 'Kolaboratzaile terminoak:'
@@ -2616,6 +2578,15 @@ eu:
       user:
         summary_html: '%{date}n %{ip_address}tik %{name} sortu da'
         summary_no_ip_html: '%{name} %{date} datan sortua'
+    changeset_comments:
+      page:
+        when: Noiz
+        comment: Iruzkina
+    diary_comments:
+      index:
+        title: '%{user} erabiltzaileak gehitutako egunkariko iruzkinak'
+      page:
+        post: Argitaratu
     suspended:
       title: Kontua bertan behera geratu da
       heading: Kontua bertan behera geratu da
index 71e3beefa8786fcbb7d0e8aa3b1189983f9936bc..fb523f63b738808c9f92f74a54855a47138781b1 100644 (file)
@@ -284,13 +284,6 @@ fa:
       external auth: احراز هویت خارجی
       openid:
         link text: این چیست؟
-      public editing:
-        heading: ویرایش عمومی
-        enabled: فعال. گمنام نیستید و می‌توانید داده را ویرایش کنید.
-        enabled link text: این چیست؟
-        disabled: غیرفعال شده و نمی‌توان داده را ویرایش کرد، همهٔ ویرایش‌های قبلی
-          گمنام هستند.
-        disabled link text: چرا من نمی‌توانم ویرایش کنم؟
       contributor terms:
         heading: شرایط مشارکت‌کننده
         agreed: شما شرایط جدید مشارکت‌کننده را پذیرفته‌اید.
@@ -369,6 +362,8 @@ fa:
           france: فرانسه
           italy: ایتالیا
           rest_of_world: دیگر نقاط جهان
+      update:
+        terms accepted: از اینکه شرایط جدید مشارکت‌کننده را پذیرفتید، سپاسگزاریم!
       terms_declined_flash:
         terms_declined_html: از اینکه تصمیم گرفته‌اید شرایط جدید مشارکت‌کننده را نپذیرید،
           متأسف هستیم. برای اطلاعات بیشتر، لطفاً %{terms_declined_link} را ببینید.
@@ -484,7 +479,6 @@ fa:
       title: بسته‌های تغییر
       title_user: بسته‌های تغییر %{user}
       title_user_link_html: بسته‌های تغییر %{user_link}
-      title_friend: بسته‌های تغییر دوستان من
       title_nearby: بسته‌های تغییر کاربران نزدیک
       empty: هیچ بستۀ تغییری یافت نشد.
       empty_area: هیچ بستهٔ تغییری در این ناحیه یافت نشد.
@@ -534,18 +528,13 @@ fa:
     popup:
       your location: مکان شما
       nearby mapper: نقشه‌کش نزدیک
-      friend: دوست
     show:
       title: پیشخوان من
       no_home_location_html: '%{edit_profile_link} و موقعیت خانهٔ خود را تنظیم کنید
         تا کاربران نزدیک را ببینید.'
       edit_your_profile: ویرایش پروفایل
-      my friends: دوستان من
-      no friends: هنوز هیچ دوستی اضافه نکرده‌اید
       nearby users: دیگر کاربران نزدیک
       no nearby users: در این حوالی هیچ کاربری  نقشه  ترسیم نکرده است
-      friends_changesets: بسته‌های تغییر دوستان
-      friends_diaries: روزنوشت‌های دوستان
       nearby_changesets: ویرایش‌های کاربران نزدیک
       nearby_diaries: روزنوشت‌های کاربران نزدیک
   diary_entries:
@@ -556,7 +545,6 @@ fa:
       use_map_link: استفاده از نقشه
     index:
       title: روزنوشت‌های کاربران
-      title_friends: روزنوشت‌های دوستان
       title_nearby: روزنوشت‌های کاربران نزدیک
       user_title: روزنوشت‌های %{user}
       in_language_title: روزنوشت‌های %{language}
@@ -616,16 +604,6 @@ fa:
       button: اشتراک در بحث
     unsubscribe:
       button: لغو اشتراک در بحث
-  diary_comments:
-    index:
-      title: نظراتی که %{user} به روزنوشت‌ها داده است
-      heading: نظرات %{user} به روزنوشت‌ها
-      subheading_html: نظراتی که %{user} به روزنوشت‌ها داده است
-      no_comments: به روزنوشت‌ها نظری نداده است
-    page:
-      post: فرسته
-      when: زمان
-      comment: نظر
   doorkeeper:
     flash:
       applications:
@@ -650,20 +628,6 @@ fa:
       title: پرونده پیدا نشد
       description: پرونده/پوشه/عملیات API با آن نام در سرور OpenStreetMap پیدا نشد
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} به‌عنوان دوست افزوده شود؟'
-      button: افزودن به‌عنوان دوست
-      success: '%{name} اکنون دوست شماست!'
-      failed: پوزش، افزودن %{name} به دوستان شما انجام نشد.
-      already_a_friend: شما و %{name}از قبل دوست هستید.
-      limit_exceeded: تازگی افراد خیلی زیادی را به‌عنوان دوست اضافه کرده‌اید. لطفاً
-        تا مدتی دست نگه دارید.
-    remove_friend:
-      heading: لغو دوستی %{user}؟
-      button: لغو دوستی
-      success: '%{name} از دوستان شما حذف شد.'
-      not_a_friend: '%{name} یکی از دوستان شما نیست.'
   geocoder:
     search:
       title:
@@ -1527,18 +1491,12 @@ fa:
         به نویسنده پیام بدهید: %{replyurl} ‬'
       footer_html: '‫همچنین می‌توانید این پیام را در اینجا بخوانید: %{readurl} و از
         اینجا به نویسنده پیام بدهید: %{replyurl} ‬'
-    friendship_notification:
+    follow_notification:
       hi: ‫سلام %{to_user}،‬
-      subject: '[OpenStreetMap] ‫%{user} شما را به‌عنوان دوست اضافه کرد‬'
-      had_added_you: ‫%{user} در اوپن‌استریت‌مپ شما را به‌عنوان دوست اضافه کرد.‬
       see_their_profile: '‫می‌توانید نمایهٔ کاربری او را در اینجا ببینید: %{userurl}
         ‬'
       see_their_profile_html: '‫می‌توانید نمایهٔ کاربری او را در اینجا ببینید: %{userurl}
         ‬'
-      befriend_them: '‫شما نیز می‌توانید از اینجا او را به‌عنوان دوست اضافه کنید:
-        %{befriendurl} ‬'
-      befriend_them_html: '‫شما نیز می‌توانید از اینجا او را به‌عنوان دوست اضافه کنید:
-        %{befriendurl} ‬'
     gpx_failure:
       hi: ‫سلام %{to_user}،‬
       failed_to_import: 'درون‌برد انجام نشد. این خطا رخ داد:'
@@ -1652,6 +1610,9 @@ fa:
       success: ' تشکر بابت ثبت نام! حساب کاربری شما تأیید شد.'
       already active: این حساب کاربری قبلاً تأیید شده است.
       unknown token: کد تأیید منقضی شده یا وجود ندارد.
+      if_need_resend: اگر می‌خواهید ایمیل تأییدیه را دوباره برای شما بفرستیم، روی
+        دکمهٔ زیر کلیک کنید.
+      resend_button: ارسال مجدد ایمیل تأییدیه
     confirm_resend:
       failure: کاربر %{name} پیدا نشد.
     confirm_email:
@@ -1689,11 +1650,13 @@ fa:
       wrong_user: شما با نام کاربری %{user} وارد سامانه شده‌اید، اما پیامی که درخواست
         خواندن آن را دارید از/به این کابر ارسال نشده است. لطفاً با نام کاربری صحیح
         وارد سامانه شوید تا بتوانید آن را بخوانید.
-    mark:
-      as_read: پیام به‌عنوان خوانده علامت‌گذاری شد
-      as_unread: پیام به عنوان نخوانده علامت‌گذاری شد
     destroy:
       destroyed: پیام حذف شد
+    read_marks:
+      create:
+        notice: پیام به‌عنوان خوانده علامت‌گذاری شد
+      destroy:
+        notice: پیام به عنوان نخوانده علامت‌گذاری شد
     mailboxes:
       heading:
         my_inbox: صندوق دریافت
@@ -2172,13 +2135,14 @@ fa:
     offline:
       heading: ذخیره‌گاه GPX برون‌خط است
       message: ذخیره‌گاه پروندهٔ GPX و سامانهٔ بارگذاری هم‌اکنون در دسترس نیستند.
-    georss:
-      title: ‫ردهای جی‌پی‌اس OpenStreetMap‬
-    description:
-      description_with_count:
-        one: ‫فایل GPX با %{count} نقطه از %{user}‬
-        other: ' ‫فایل GPX با %{count} نقطه از %{user}‬'
-      description_without_count: پروندهٔ GPX از %{user}
+    feeds:
+      show:
+        title: ‫ردهای جی‌پی‌اس OpenStreetMap‬
+      description:
+        description_with_count:
+          one: ‫فایل GPX با %{count} نقطه از %{user}‬
+          other: ' ‫فایل GPX با %{count} نقطه از %{user}‬'
+        description_without_count: پروندهٔ GPX از %{user}
   application:
     permission_denied: شما اجازهٔ دسترسی به آن کنش را ندارید.
     require_cookies:
@@ -2288,7 +2252,6 @@ fa:
       by_signing_up:
         privacy_policy: سیاست محرمانگی
       continue: ثبت نام
-      terms accepted: از اینکه شرایط جدید مشارکت‌کننده را پذیرفتید، سپاسگزاریم!
       use external auth: به‌جای ثبت نام، از روش شخص ثالث استفاده کنید
     no_such_user:
       title: چنین کاربری وجود ندارد
@@ -2315,8 +2278,6 @@ fa:
       edits: ویرایش‌ها
       traces: ردها
       notes: یادداشت‌های نقشه
-      remove as friend: لغو دوستی
-      add as friend: افزودن دوست
       mapper since: 'آغاز نقشه‌کشی از:'
       ct status: 'شرایط مشارکت‌کننده:'
       ct undecided: بلاتکلیف
@@ -2371,6 +2332,15 @@ fa:
       user:
         summary_html: '%{name} با آی‌پی %{ip_address} در %{date} ایجاد شد'
         summary_no_ip_html: '%{name} در %{date} ایجاد شد'
+    changeset_comments:
+      page:
+        when: زمان
+        comment: نظر
+    diary_comments:
+      index:
+        title: نظراتی که %{user} به روزنوشت‌ها داده است
+      page:
+        post: فرسته
     suspended:
       title: حساب معلق شده است
       heading: تعلیق حساب
index 0181b50c00b4a6266a97a9a23ea16de043c94b2b..56f392b433e192ca12e6dec25a13b3f5065ac98d 100644 (file)
@@ -296,12 +296,6 @@ fi:
       openid:
         link: https://wiki.openstreetmap.org/wiki/Fi:OpenID
         link text: Mitä tämä tarkoittaa?
-      public editing:
-        heading: Julkinen muokkaus
-        enabled: Kyllä. Karttatietojen muokkaus sallittu.
-        enabled link text: Mitä tämä tarkoittaa?
-        disabled: Ei. Karttatietojen muokkaus estetty. Aiemmat karttamuutokset anonyymejä.
-        disabled link text: Miksen voi enää muokata karttaa?
       contributor terms:
         heading: Osallistumisehdot
         agreed: Olet hyväksynyt osallistumisehdot.
@@ -368,7 +362,6 @@ fi:
         readable_summary: selkokielinen yhteenveto (englanniksi)
         informal_translations: epäviralliset käännökset
         continue: Seuraava
-        declined: https://wiki.openstreetmap.org/wiki/Fi:Contributor_Terms_Declined
         cancel: Peruuta
         you need to accept or decline: Ennen jatkamista lue läpi osallistumisehdot
           ja hyväksy tai hylkää se.
@@ -377,6 +370,8 @@ fi:
           france: Ranska
           italy: Italia
           rest_of_world: Muu maailma
+      update:
+        terms accepted: Kiitos uusien osallistujaehtojen hyväksymisestä!
       terms_declined_flash:
         terms_declined_link: tämä wikisivu
         terms_declined_url: https://wiki.openstreetmap.org/wiki/Fi:Contributor_Terms_Declined
@@ -490,7 +485,6 @@ fi:
       title: Muutoskokoelmat
       title_user: Käyttäjän %{user} muutoskokoelmat
       title_user_link_html: Käyttäjän %{user_link} muutoskokoelmat
-      title_friend: Kaverien muutoskokoelmat
       title_nearby: Lähellä olevien käyttäjien muutoskokoelmat
       empty: Muutosryhmiä ei löytynyt.
       empty_area: Ei muutosryhmiä tällä alueella.
@@ -544,18 +538,13 @@ fi:
     popup:
       your location: Oma sijaintisi
       nearby mapper: Lähellä oleva kartoittaja
-      friend: Kaveri
     show:
       title: Tapahtumat
       no_home_location_html: '%{edit_profile_link} ja aseta kotisijaintisi, jotta
         näet lähellä olevat käyttäjät.'
       edit_your_profile: Muokkaa profiiliasi
-      my friends: Kaverit
-      no friends: Sinulla ei ole vielä kavereita.
       nearby users: Muut lähialueen käyttäjät
       no nearby users: Valitun sijainnin lähellä ei ole tiedossa muita käyttäjiä.
-      friends_changesets: kaverien muutoskokoelmat
-      friends_diaries: kaverien päiväkirjamerkinnät
       nearby_changesets: lähialueen käyttäjien muutoskokoelmat
       nearby_diaries: lähialueen käyttäjien päiväkirjamerkinnät
   diary_entries:
@@ -566,7 +555,6 @@ fi:
       use_map_link: Käytä karttaa
     index:
       title: Käyttäjien päiväkirjamerkinnät
-      title_friends: Kaverien päiväkirjat
       title_nearby: Lähellä olevien käyttäjien päiväkirjat
       user_title: Käyttäjän %{user} päiväkirja
       in_language_title: Päiväkirjamerkinnät kielellä %{language}
@@ -624,16 +612,6 @@ fi:
       all:
         title: OpenStreetMap-päiväkirjamerkinnät
         description: Tuoreimmat OpenStreetMapin käyttäjien päiväkirjamerkinnät
-  diary_comments:
-    index:
-      title: Käyttäjän %{user} lisäämät päiväkirjamerkinnät
-      heading: Päiväkirjamerkinnät käyttäjältä %{user}
-      subheading_html: Käyttäjän %{user} lisäämät päiväkirjamerkinnät
-      no_comments: Ei päiväkirjamerkintöjä
-    page:
-      post: Kommentti
-      when: Päiväys
-      comment: Kommentti
   doorkeeper:
     flash:
       applications:
@@ -654,18 +632,6 @@ fi:
         sitä täyttämästä pyyntöä (HTTP 500)
     not_found:
       title: Tiedostoa ei löydy
-  friendships:
-    make_friend:
-      heading: Lisätäänkö %{user} kaveriksi?
-      button: Lisää kaveriksi
-      success: '%{name} on nyt kaverisi.'
-      failed: Käyttäjää %{name} ei voitu lisätä kaverilistaasi.
-      already_a_friend: '%{name} on jo kaverisi.'
-    remove_friend:
-      heading: Poistetaanko kaveri %{user}?
-      button: Poista kaveri
-      success: '%{name} poistettiin kaverilistastasi.'
-      not_a_friend: '%{name} ei ole enää kaverisi.'
   geocoder:
     search:
       title:
@@ -1580,14 +1546,10 @@ fi:
         %{subject}:'
       footer_html: Lue viesti osoitteessa %{readurl} ja lähetä viesti tekijälle osoitteessa
         %{replyurl}.
-    friendship_notification:
+    follow_notification:
       hi: Hei %{to_user}!
-      subject: '[OpenStreetMap] %{user} lisäsi sinut kaverikseen'
-      had_added_you: Käyttäjä %{user} lisäsi sinut kaverikseen OpenStreetMapissa.
       see_their_profile: Voit tutustua hänen käyttäjäsivuunsa osoitteessa %{userurl}.
       see_their_profile_html: Tutustu hänen käyttäjäsivuunsa osoitteessa %{userurl}.
-      befriend_them: Voit myös lisätä lähettäjän kaveriksi osoitteessa %{befriendurl}.
-      befriend_them_html: Voit myös lisätä lähettäjän kaveriksi osoitteessa %{befriendurl}.
     gpx_failure:
       hi: Hei %{to_user}!
       failed_to_import: 'epäonnistui tuoda. Tässä virhe:'
@@ -1723,11 +1685,13 @@ fi:
       wrong_user: Olet kirjautunut sisään tunnuksella `%{user}' mutta viestiä, jonka
         tahdot lukea, ei ole lähetetty kyseiselle käyttäjälle. Ole hyvä ja kirjaudu
         sisään oikealla käyttäjätunnukselle lukeaksesi sen.
-    mark:
-      as_read: Viesti on merkitty luetuksi.
-      as_unread: Viesti on merkitty lukemattomaksi.
     destroy:
       destroyed: Viesti on poistettu.
+    read_marks:
+      create:
+        notice: Viesti on merkitty luetuksi.
+      destroy:
+        notice: Viesti on merkitty lukemattomaksi.
     mailboxes:
       heading:
         my_inbox: Saapuneet
@@ -2362,13 +2326,14 @@ fi:
     offline:
       heading: GPX-jälkien tallennus ei ole käytettävissä
       message: GPX-jälkien tallennusjärjestelmä ei ole tällä hetkellä käytettävissä
-    georss:
-      title: OpenStreetMapin GPS-jäljet
-    description:
-      description_with_count:
-        one: GPX-tiedosto, jossa on %{count} piste käyttäjältä %{user}
-        other: GPX-tiedosto, jossa on %{count} pistettä käyttäjältä %{user}
-      description_without_count: GPX-tiedosto käyttäjältä %{user}
+    feeds:
+      show:
+        title: OpenStreetMapin GPS-jäljet
+      description:
+        description_with_count:
+          one: GPX-tiedosto, jossa on %{count} piste käyttäjältä %{user}
+          other: GPX-tiedosto, jossa on %{count} pistettä käyttäjältä %{user}
+        description_without_count: GPX-tiedosto käyttäjältä %{user}
   application:
     permission_denied: Sinulla ei ole oikeutta käyttää tätä toimintoa
     require_cookies:
@@ -2488,7 +2453,6 @@ fi:
         privacy_policy: tietosuojakäytäntö
         contributor_terms: osallistumisehdot
       continue: Rekisteröidy
-      terms accepted: Kiitos uusien osallistujaehtojen hyväksymisestä!
       email_help:
         privacy_policy: tietosuojakäytäntö
         html: Osoitetta ei näytetä julkisesti, lisätietoja on sivulla %{privacy_policy_link}.
@@ -2519,8 +2483,6 @@ fi:
       edits: Muokkaukset
       traces: Jäljet
       notes: Karttailmoitukset
-      remove as friend: Poista kavereista
-      add as friend: Lisää kaveriksi
       mapper since: 'Rekisteröitynyt:'
       last map edit: 'Viimeisin karttamuokkaus:'
       ct status: 'Osallistumisehdot:'
@@ -2575,6 +2537,15 @@ fi:
       user:
         summary_html: '%{name} luotu %{date} osoitteesta %{ip_address}'
         summary_no_ip_html: '%{name} luotu %{date}'
+    changeset_comments:
+      page:
+        when: Päiväys
+        comment: Kommentti
+    diary_comments:
+      index:
+        title: Käyttäjän %{user} lisäämät päiväkirjamerkinnät
+      page:
+        post: Kommentti
     suspended:
       title: Käyttäjätili jäädytetty
       heading: Käyttäjätili jäädytetty
index 3fd5f01126582dec83e32719f82c3d2ec5c38fac..c189db11b7df9fa1fbf8ba75e0dd53d2d7d41df2 100644 (file)
@@ -184,10 +184,6 @@ fit:
       title: Mookkaa konttua
       my settings: Minun inställninkit
       current email address: 'Nykynen e-postiatressi:'
-      public editing:
-        heading: Julkinen mookkaus
-        enabled: Joo. Karttatietojen mookkaus sallittu.
-        disabled link text: miksi en voi mookata?
       save changes button: Säästä muutokset
     go_public:
       heading: 'Mookkaukset julkisia:'
@@ -291,7 +287,6 @@ fit:
     index:
       title: Muutoskokoelmat
       title_user: Käyttäjän %{user} muutoskokoelmat
-      title_friend: Minun ystävien muutoskokoelmat
       title_nearby: Lähelä olevien käyttäjitten muutoskokoelmat
       empty: Muutosryhmiä ei löytynyt.
       empty_area: Ei muutosryhmiä tällä alueella.
@@ -331,9 +326,6 @@ fit:
       latest_edit_html: 'Viimeisin muutos (%{ago}):'
     popup:
       your location: Sinun paikka
-      friend: Kaveri
-    show:
-      my friends: Minun ystävät
   diary_entries:
     new:
       title: Uusi päiväkirjamerkintä
@@ -342,7 +334,6 @@ fit:
       use_map_link: valitte kartalta
     index:
       title: Käyttäjitten päiväkirjamerkinnät
-      title_friends: Ystävien päiväkirjat
       title_nearby: Lähelä olevien käyttäjitten päiväkirjat
       user_title: Käyttäjän %{user} päiväkirja
       in_language_title: Päiväkirjamerkinnät kielellä %{language}
@@ -397,22 +388,6 @@ fit:
       all:
         title: OpenStreetMap-päiväkirjamerkinnät
         description: Verekset OpenStreetMapin käyttäjitten päiväkirjamerkinnät
-  diary_comments:
-    page:
-      post: Kommentti
-      when: Taatumi
-      comment: Kommentti
-  friendships:
-    make_friend:
-      button: Lissää ystäväksi
-      success: '%{name} oon nyt sinun ystävä!'
-      failed: Käyttäjää %{name} ei voitu lisätä sinun ystävälistaan.
-      already_a_friend: '%{name} oon jo sinun ystävä.'
-    remove_friend:
-      heading: Poistetaanko ystävä %{user}?
-      button: Ota poies ystävä
-      success: '%{name} otettiin poies sinun ystävistä.'
-      not_a_friend: '%{name} ei ole enää sinun ystävä.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -566,7 +541,7 @@ fit:
       hi: Hei %{to_user},
     message_notification:
       hi: Hei %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: Hei %{to_user},
     gpx_failure:
       failed_to_import: 'epäonnistui importeerata. Tässä virhe:'
@@ -620,11 +595,13 @@ fit:
       unread_button: Markeeraa lukemattomaksi
       destroy_button: Ota poies
       back: Takashiin
-    mark:
-      as_read: Viesti markeerattu luetuksi.
-      as_unread: Viesti markeerattu lukemattomaksi.
     destroy:
       destroyed: Viesti otettu poies
+    read_marks:
+      create:
+        notice: Viesti markeerattu luetuksi.
+      destroy:
+        notice: Viesti markeerattu lukemattomaksi.
     mailboxes:
       heading:
         my_inbox: Saapuneet
@@ -833,10 +810,16 @@ fit:
       my comments: Minun kommentit
       send message: Lähätä viesti
       edits: Mookkaukset
-      add as friend: Lissää ystäväksi
       email address: 'E-postiatressi:'
     go_public:
       flash success: Kaikki tekemäsi mookkaukset ovat nyt julkisia.
+    changeset_comments:
+      page:
+        when: Taatumi
+        comment: Kommentti
+    diary_comments:
+      page:
+        post: Kommentti
     auth_failure:
       no_authorization_code: Ei käyttöoikeuskootia
   user_blocks:
index a6804b773e8fd008d668429cd97ef691f12eb8f9..30be25d1785f84c28014546e3120e59a84ddcc28 100644 (file)
@@ -6,6 +6,7 @@
 # Author: Adriendelucca
 # Author: Ajeje Brazorf
 # Author: Alno
+# Author: AnatoleeSV
 # Author: Antimuonium
 # Author: BlueCamille
 # Author: Boniface
@@ -201,8 +202,7 @@ fr:
         support_url: URL de l’assistance
         allow_read_prefs: lire les préférences de l’utilisateur
         allow_write_prefs: modifier les préférences de l’utilisateur
-        allow_write_diary: créer des entrées du journal, des commentaires et des liens
-          d’amitié
+        allow_write_diary: créer des entrées du journal et des commentaires
         allow_write_api: modifier la carte
         allow_read_gpx: lire ses traces GPS privées
         allow_write_gpx: téléverser des traces GPS
@@ -370,14 +370,6 @@ fr:
       openid:
         link: https://wiki.openstreetmap.org/wiki/FR:OpenID
         link text: qu’est-ce ?
-      public editing:
-        heading: Modification publique
-        enabled: Activée. Non anonyme et peut modifier les données.
-        enabled link: https://wiki.openstreetmap.org/wiki/FR:Modifications_anonymes
-        enabled link text: qu’est-ce ?
-        disabled: Désactivée et ne peut pas modifier les données ; toutes les précédentes
-          modifications sont anonymes.
-        disabled link text: pourquoi ne puis-je pas modifier ?
       contributor terms:
         heading: Conditions de contribution
         agreed: Vous avez accepté les nouvelles Conditions de contribution.
@@ -461,12 +453,12 @@ fr:
         consider_pd: En plus de l’accord ci-dessus, je considère mes contributions
           comme étant dans le domaine public.
         consider_pd_why: qu’est-ce que ceci ?
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 'Informations pour aider à comprendre ces termes : un
           %{readable_summary_link} et quelques %{informal_translations_link}'
         readable_summary: résumé lisible par un humain
         informal_translations: traductions informelles
         continue: Continuer
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Annuler
         you need to accept or decline: Veuillez lire et ensuite soit accepter ou refuser
           les nouvelles Conditions du contributeur pour continuer.
@@ -475,11 +467,14 @@ fr:
           france: France
           italy: Italie
           rest_of_world: Reste du monde
+      update:
+        terms accepted: Merci d’avoir accepté les nouveaux termes du contributeur !
       terms_declined_flash:
         terms_declined_html: Nous sommes désolés que vous ayez décidé de ne pas accepter
           les nouvelles Conditions de contribution. Pour plus d’informations, veuillez
           consulter %{terms_declined_link}.
         terms_declined_link: cette page du wiki
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
   browse:
     deleted_ago_by_html: Supprimé %{time_ago} par %{user}
     edited_ago_by_html: Modifié %{time_ago} par %{user}
@@ -582,6 +577,8 @@ fr:
       view_redacted_data: Afficher les données masquées
       view_redaction_message: Afficher le message de masquage
   nodes:
+    not_found_message:
+      sorry: 'Désolé, node #%{id} n''a pas pu être trouvé'
     timeout:
       sorry: Désolé, l'extraction des données du nœud avec l'identifiant %{id} a pris
         trop de temps.
@@ -591,6 +588,8 @@ fr:
     timeout:
       sorry: Désolé, l'historique du nœud avec l'ID %{id} a pris trop de temps à récupérer.
   ways:
+    not_found_message:
+      sorry: 'Désolé, le chemin #%{id} n''a pas pu être trouvé.'
     timeout:
       sorry: Désolé, les données du chemin avec l'ID %{id} ont pris trop de temps
         à récupérer.
@@ -601,6 +600,8 @@ fr:
       sorry: Désolé, l'historique du chemin avec l'identifiant %{id} a pris trop de
         temps pour être récupéré.
   relations:
+    not_found_message:
+      sorry: 'Désolé, la relation #%{id} n''a pas pu être trouvé.'
     timeout:
       sorry: Désolé, l'extraction des données de la relation avec l'identifiant %{id}
         a pris trop de temps.
@@ -631,7 +632,7 @@ fr:
       title: Groupes de modifications
       title_user: Groupes de modifications par %{user}
       title_user_link_html: Groupes de modifications par %{user_link}
-      title_friend: Groupes de modifications par mes amis
+      title_followed: Modifications par suivi
       title_nearby: Groupes de modifications par des utilisateurs à proximité
       empty: Aucun groupe de modifications trouvé.
       empty_area: Aucun groupe de modifications dans cette zone.
@@ -646,19 +647,6 @@ fr:
         created: Créé
         closed: Fermé
         belongs_to: Auteur
-    subscribe:
-      heading: S’abonner à la discussion sur l’ensemble de modifications suivant ?
-      button: S’abonner à la discussion
-    unsubscribe:
-      heading: Se désabonner de la discussion du groupe de modifications suivant ?
-      button: Se désinscrire de la discussion
-    heading:
-      title: Groupe de modifications %{id}
-      created_by_html: Créé par %{link_user} le %{created}.
-    no_such_entry:
-      heading: 'Aucune entrée avec l’identifiant : %{id}'
-      body: Désolé, il n’y a aucun groupe de modifications avec l’identifiant %{id}.
-        Peut-être avez-vous fait une erreur en le recopiant ou suivi un lien erroné ?
     show:
       title: 'Groupe de modifications : %{id}'
       created: 'Créé : %{when}'
@@ -687,9 +675,26 @@ fr:
       ways_paginated: Chemins (%{x} à %{y} sur %{count})
       relations: Relations (%{count})
       relations_paginated: Relations (%{x} à %{y} sur %{count})
+    not_found_message:
+      sorry: 'Désolé, la modification #%{id} n''a pas pu être trouvé.'
     timeout:
       sorry: Désolé, récupérer la liste des groupes de modifications que vous avez
         demandée a pris trop de temps.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: S’abonner à la discussion sur l’ensemble de modifications suivant ?
+        button: S’abonner à la discussion
+      unsubscribe:
+        heading: Se désabonner de la discussion du groupe de modifications suivant ?
+        button: Se désinscrire de la discussion
+    heading:
+      title: Groupe de modifications %{id}
+      created_by_html: Créé par %{link_user} le %{created}.
+    no_such_entry:
+      heading: 'Aucune entrée avec l’identifiant : %{id}'
+      body: Désolé, il n’y a aucun groupe de modifications avec l’identifiant %{id}.
+        Peut-être avez-vous fait une erreur en le recopiant ou suivi un lien erroné ?
   dashboards:
     contact:
       km away: à %{count} km
@@ -698,19 +703,19 @@ fr:
     popup:
       your location: Votre emplacement
       nearby mapper: Cartographe à proximité
-      friend: Ami(e)
+      following: Suivant
     show:
       title: Mon tableau de bord
       no_home_location_html: '%{edit_profile_link} et définissez l’emplacement de
         votre domicile pour voir les utilisateurs à proximité.'
       edit_your_profile: Modifiez votre profil
-      my friends: Mes amis
-      no friends: Vous n’avez encore ajouté aucun ami.
+      followings: Suivis
+      no followings: Vous n'avez encore suivi aucun utilisateur.
       nearby users: Autres utilisateurs à proximité
       no nearby users: Aucun utilisateur n’a encore signalé qu’il cartographiait à
         proximité.
-      friends_changesets: groupes de modifications des amis
-      friends_diaries: entrées de journal des amis
+      followed_changesets: groupe de modifications
+      followed_diaries: entrées de journal
       nearby_changesets: groupes de modifications des utilisateurs à proximité
       nearby_diaries: entrées de journal des utilisateurs à proximité
   diary_entries:
@@ -721,7 +726,7 @@ fr:
       use_map_link: Utiliser la carte
     index:
       title: Journaux des utilisateurs
-      title_friends: Journaux des amis
+      title_followed: Journaux suivants
       title_nearby: Journaux des utilisateurs à proximité
       user_title: Journal de %{user}
       in_language_title: Entrées du journal en %{language}
@@ -790,15 +795,6 @@ fr:
       heading: Se désinscrire de la discussion suivante sur les entrées du journal ?
       button: Se désinscrire de la discussion
   diary_comments:
-    index:
-      title: Commentaires de journal ajoutés par %{user}
-      heading: Commentaires de journal de %{user}
-      subheading_html: Commentaires de journal ajoutés par %{user}
-      no_comments: Aucun commentaire de journal
-    page:
-      post: Billet
-      when: Quand
-      comment: Commentaire
     new:
       heading: Ajouter un commentaire à cette discussion ?
   doorkeeper:
@@ -859,20 +855,23 @@ fr:
       title: Fichier introuvable
       description: Impossible de trouver un fichier, un répertoire ou une opération
         de l’API portant ce nom sur le serveur OpenStreetMap (HTTP 404).
-  friendships:
-    make_friend:
-      heading: Ajouter %{user} en tant qu’ami(e) ?
-      button: Ajouter en tant qu’ami(e)
-      success: '%{name} est désormais votre ami(e) !'
-      failed: Désolé, échec lors de l’ajout de %{name} en tant qu’ami(e).
-      already_a_friend: Vous et %{name} êtes déjà ami(e)s.
-      limit_exceeded: Vous avez récemment déclaré beaucoup d’utilisateurs comme ami(e)s.
-        Veuillez attendre un peu avant d’essayer d’en déclarer d’autres.
-    remove_friend:
-      heading: Supprimer %{user} en tant qu’ami(e) ?
-      button: Supprimer en tant qu’ami(e)
-      success: '%{name} a été retiré de vos ami(e)s.'
-      not_a_friend: '%{name} n’est pas parmi vos ami(e)s.'
+  follows:
+    show:
+      follow:
+        heading: Voulez-vous suivre %{user} ?
+        button: Suivre l'utilisateur
+      unfollow:
+        heading: Voulez-vous vous désabonner de %{user} ?
+        button: Ne plus suivre l'utilisateur
+    create:
+      success: Vous suivez désormais %{name} !
+      failed: Désolé, votre demande de suivi à %{name} a échoué.
+      already_followed: Vous suivez déjà %{name}.
+      limit_exceeded: Vous avez suivit beaucoup d'utilisateurs récemment. Veuillez
+        patienter avant de réessayer.
+    destroy:
+      success: Vous vous êtes désabonné de %{name}.
+      not_followed: Vous suivez désormais %{name} !
   geocoder:
     search:
       title:
@@ -1849,21 +1848,16 @@ fr:
         à l’auteur sur %{replyurl}
       footer_html: Vous pouvez aussi lire le message sur %{readurl} ou envoyer un
         message à l'auteur sur %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Bonjour %{to_user},
-      subject: '[OpenStreetMap] %{user} vous a ajouté comme ami'
-      had_added_you: '%{user} vous a ajouté comme ami dans OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} vous a suivi'
+      followed_you: '%{user} vous suit désormais sur OpenStreetMap.'
       see_their_profile: 'Vous pouvez voir son profil ici : %{userurl}.'
       see_their_profile_html: Vous pouvez voir son profil sur %{userurl}.
-      befriend_them: 'Vous pouvez également l’ajouter comme ami(e) ici : %{befriendurl}.'
-      befriend_them_html: Vous pouvez aussi l’ajouter comme ami à l’adresse %{befriendurl}.
     gpx_failure:
       hi: Bonjour %{to_user},
-      failed_to_import: 'échec de l''importation en tant que fichier de trace GPS.
-        Veuillez vérifier que votre fichier est un fichier GPX valide ou une archive
-        contenant des fichiers GPX au format pris en charge (.tar.gz, .tar.bz2, .tar,
-        .zip, .gpx.gz, .gpx.bz2). Votre fichier pourrait-il présenter un problème
-        de format ou de syntaxe ? Voici l''erreur d''importation :'
+      failed_to_import: Il semble que votre fichier n'ait pas pu être importé en tant
+        que trace GPS.
       more_info: Vous trouverez plus d’informations sur les échecs d’import GPX et
         comment les éviter à l’adresse %{url}.
       more_info_html: Vous trouverez plus d’informations sur les échecs d’import GPX
@@ -2017,14 +2011,17 @@ fr:
       wrong_user: Vous êtes identifié(e) sous le nom « %{user} » mais le message que
         vous souhaitez lire n’a pas été envoyé par ou à cet utilisateur. Veuillez
         vous connecter avec le bon identifiant pour pouvoir le voir.
-    mark:
-      as_read: Message marqué comme lu
-      as_unread: Message marqué comme non lu
-    unmute:
-      notice: Le message a été déplacé dans la boîte de réception
-      error: Le message n'a pas pu être déplacé vers la boîte de réception.
     destroy:
       destroyed: Message supprimé
+    read_marks:
+      create:
+        notice: Message marqué comme lu
+      destroy:
+        notice: Message marqué comme non lu
+    mutes:
+      destroy:
+        notice: Le message a été déplacé dans la boîte de réception
+        error: Le message n'a pas pu être déplacé vers la boîte de réception.
     mailboxes:
       heading:
         my_inbox: Ma boîte de réception
@@ -2833,13 +2830,14 @@ fr:
       heading: Stockage GPX hors ligne
       message: Le système de stockage et de téléversement des fichiers GPX est actuellement
         indisponible.
-    georss:
-      title: Traces GPS d’OpenStreetMap
-    description:
-      description_with_count:
-        one: Fichier GPX avec %{count} point de %{user}
-        other: Fichier GPX avec %{count} points de %{user}
-      description_without_count: Fichier GPX de %{user}
+    feeds:
+      show:
+        title: Traces GPS d’OpenStreetMap
+      description:
+        description_with_count:
+          one: Fichier GPX avec %{count} point de %{user}
+          other: Fichier GPX avec %{count} points de %{user}
+        description_without_count: Fichier GPX de %{user}
   application:
     permission_denied: Vous n’avez pas le droit d’accéder à cette action
     require_cookies:
@@ -2908,8 +2906,7 @@ fr:
       openid: Se connecter avec OpenStreetMap
       read_prefs: Lire les préférences de l’utilisateur
       write_prefs: Modifier les préférences de l’utilisateur
-      write_diary: Créer des entrées de journal, des commentaires et se faire des
-        amis
+      write_diary: créer des entrées du journal et des commentaires
       write_api: Modifier la carte
       read_gpx: Lire les traces GPC privées
       write_gpx: Mettre à jour les traces GPC
@@ -3004,7 +3001,6 @@ fr:
         contributor_terms_url: https://osmfoundation.org/wiki/Licence/Contributor_Terms/FR
         contributor_terms: Conditions de contribution
       continue: S’inscrire
-      terms accepted: Merci d’avoir accepté les nouveaux termes du contributeur !
       email_help:
         privacy_policy: politique de confidentialité
         privacy_policy_title: Politique de confidentialité d'OSMF, y compris une section
@@ -3042,8 +3038,6 @@ fr:
       edits: Modifications
       traces: Traces
       notes: Notes de carte
-      remove as friend: Supprimer en tant qu’ami
-      add as friend: Ajouter en tant qu’ami
       mapper since: 'Cartographe depuis :'
       last map edit: 'Dernière modification de la carte :'
       no activity yet: Pas encore d'activité
@@ -3119,6 +3113,15 @@ fr:
       user:
         summary_html: '%{name} créé depuis %{ip_address} le %{date}'
         summary_no_ip_html: '%{name} créé le %{date}'
+    changeset_comments:
+      page:
+        when: Quand
+        comment: Commentaire
+    diary_comments:
+      index:
+        title: Commentaires de journal ajoutés par %{user}
+      page:
+        post: Billet
     suspended:
       title: Compte suspendu
       heading: Compte suspendu
@@ -3330,7 +3333,8 @@ fr:
         cartographes afin qu’ils puissent y remédier. Déplacez le marqueur à la position
         exacte et écrivez une note pour expliquer le problème.
       anonymous_warning_html: Vous n'êtes pas connecté. Veuillez %{log_in} ou %{sign_up}
-        si vous souhaitez recevoir des mises à jour pour votre note.
+        pour recevoir des mises à jour de votre note et aider les cartographes à la
+        résoudre.
       anonymous_warning_log_in: se connecter
       anonymous_warning_sign_up: créer un compte
       advice: Votre note est publique et peut être utilisée pour mettre à jour la
index 1d2713fef582ee66df5ee560e97a4333ce843dd4..aa38503fa62ca97775cef870ce6a023fbbd54ab1 100644 (file)
@@ -221,13 +221,6 @@ fur:
       external auth: Autenticazion esterne
       openid:
         link text: ce isal chest?
-      public editing:
-        heading: Modifiche publiche
-        enabled: Ativâts. No anonims e si pues cambiâ i dâts.
-        enabled link text: ce isal chest?
-        disabled: Disativâts e no si pues cambiâ i dâts, ducj i cambiaments precedents
-          a son anonims.
-        disabled link text: parcè no puedio cambiâ?
       contributor terms:
         heading: Tiermins par contribuî
         agreed: Tu âs acetât i gnûfs tiermins di contribuzion.
@@ -269,6 +262,8 @@ fur:
           france: France
           italy: Italie
           rest_of_world: Rest dal mont
+      update:
+        terms accepted: Graziis par vê acetât i gnûfs tiermins par contribuî!
   browse:
     deleted_ago_by_html: Eliminât di %{user} %{time_ago}
     edited_ago_by_html: Modificât di %{user} %{time_ago}
@@ -372,7 +367,6 @@ fur:
       title: Grups di cambiaments
       title_user: Grups di cambiaments di %{user}
       title_user_link_html: Grups di cambiaments di %{user_link}
-      title_friend: Grups di cambiaments dai tiei amîs
       title_nearby: Grups di cambiaments dai utents dongje
       empty: Nissun grup di cambiaments cjatât.
       empty_area: Nissun grup di cambiaments in cheste zone.
@@ -422,19 +416,14 @@ fur:
     popup:
       your location: La tô posizion
       nearby mapper: Mapadôr dongje
-      friend: Amì
     show:
       title: La mê pagjine iniziâl
       no_home_location_html: '%{edit_profile_link} e impueste il to lûc iniziâl par
         viodi utents dongje di te.'
       edit_your_profile: Cambie il to profîl
-      my friends: I miei amîs
-      no friends: No tu âs ancjemò nissun amì.
       nearby users: Altris utents dongje
       no nearby users: Nol è ancjemò nissun utent che al declare di mapâ dongje di
         te.
-      friends_changesets: grups di cambiaments dai amîs
-      friends_diaries: vôs di diari dai amîs
       nearby_changesets: grups di cambiaments dai utents dongje
       nearby_diaries: vôs di diari dai utents dongje
   diary_entries:
@@ -445,7 +434,6 @@ fur:
       use_map_link: Dopre mape
     index:
       title: Diaris dai utents
-      title_friends: Diaris dai amîs
       title_nearby: Diaris dai utents dongje
       user_title: Diari di %{user}
       in_language_title: Vôs dai diaris par %{language}
@@ -499,16 +487,6 @@ fur:
       all:
         title: Vôs dai diaris di OpenStreetMap
         description: Lis ultimis vôs dai diaris dai utents di OpenStreetMap
-  diary_comments:
-    index:
-      title: Coments ai diaris zontâts par %{user}
-      heading: Coments ai diaris di %{user}
-      subheading_html: Coments ai diaris zontâts di %{user}
-      no_comments: Nissun coment ai diaris
-    page:
-      post: Messaç
-      when: Cuant
-      comment: Coment
   doorkeeper:
     flash:
       applications:
@@ -519,17 +497,6 @@ fur:
       title: Proibît
     not_found:
       title: File no cjatât
-  friendships:
-    make_friend:
-      heading: Zontâ %{user} ai amîs?
-      button: Zonte ai amîs
-      success: '%{name} al è cumò to amì!'
-      already_a_friend: Tu sês za amì di %{name}.
-    remove_friend:
-      heading: Vuelistu gjavâ dai amîs %{user}?
-      button: Gjave dai amîs
-      success: '%{name} al è stât gjavât dai tiei amîs.'
-      not_a_friend: '%{name} nol è un dai tiei amîs.'
   geocoder:
     search:
       title:
@@ -972,11 +939,8 @@ fur:
       header: '%{from_user} ti à mandât un messaç su OpenStreetMap cun sogjet %{subject}:'
       footer_html: Tu puedis ancje lei il messaç su %{readurl} e tu puedis rispuindi
         su %{replyurl}
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} ti à zontât come amì su OpenStreetMap.'
-      had_added_you: '%{user} ti à zontât come amì su OpenStreetMap.'
+    follow_notification:
       see_their_profile: Tu puedis viodi il sô profîl su %{userurl}.
-      befriend_them: Tu puedis ancje zontâlu/le come amì su %{befriendurl}.
     gpx_success:
       subject: '[OpenStreetMap] Impuartazion GPX completade cun sucès'
     signup_confirm:
@@ -1027,11 +991,13 @@ fur:
       unread_button: Segne come di lei
       destroy_button: Elimine
       back: Indaûr
-    mark:
-      as_read: Messaç segnât come za let
-      as_unread: Messaç segnât come di lei
     destroy:
       destroyed: Messaç eliminât
+    read_marks:
+      create:
+        notice: Messaç segnât come za let
+      destroy:
+        notice: Messaç segnât come di lei
     mailboxes:
       heading:
         my_inbox: I miei messaçs in jentrade
@@ -1367,10 +1333,11 @@ fur:
       all_traces: Ducj i percors
       my_traces: I miei percors
       traces_from_html: Percors publics di %{user}
-    georss:
-      title: Percors GPS di OpenStreetMap
-    description:
-      description_without_count: File GPS di %{user}
+    feeds:
+      show:
+        title: Percors GPS di OpenStreetMap
+      description:
+        description_without_count: File GPS di %{user}
   application:
     settings_menu:
       account_settings: Impostazions dal profîl
@@ -1446,7 +1413,6 @@ fur:
       display name description: Il non utent che al vignarà mostrât a ducj. Tu podarâs
         gambiâlu plui tart tes preferencis.
       continue: Regjistriti
-      terms accepted: Graziis par vê acetât i gnûfs tiermins par contribuî!
       use external auth: In alternative, dopre une tierce part par jentrâ
     no_such_user:
       title: Utent no cjatât
@@ -1473,8 +1439,6 @@ fur:
       edits: Cambiaments
       traces: Percors
       notes: Notis ae mape
-      remove as friend: Gjave dai amîs
-      add as friend: Zonte ai amîs
       mapper since: 'Al mape dai:'
       ct status: 'Tiermins par contribuî:'
       ct undecided: Nol à decidût
@@ -1522,6 +1486,15 @@ fur:
       user:
         summary_html: '%{name} creât di %{ip_address} ai %{date}'
         summary_no_ip_html: '%{name} creât ai %{date}'
+    changeset_comments:
+      page:
+        when: Cuant
+        comment: Coment
+    diary_comments:
+      index:
+        title: Coments ai diaris zontâts par %{user}
+      page:
+        post: Messaç
     suspended:
       support: assistence
     auth_failure:
index 65552c64fd288b186fa0e9e64c38ce0c2b7a7712..17a85d5e86cf6f5f7ab7c31d32c19738ef1a4424 100644 (file)
@@ -237,13 +237,6 @@ fy:
       external auth: Autentifikaasje om utens
       openid:
         link text: wat is dat?
-      public editing:
-        heading: Iepenbier bewurkjen
-        enabled: Ynskeakele. Net anonym en kin data bewurkje.
-        enabled link text: wat is dat?
-        disabled: Utskeakele en kin gjin data bewurkje, alle eardere bewurkings binne
-          anonym.
-        disabled link text: wêrom kin ik net bewurkje?
       contributor terms:
         heading: Bydragersbetingsten
         agreed: Jo binne akkoart gien mei de nije Bydragersbetingsten.
@@ -316,6 +309,8 @@ fy:
           france: Frankryk
           italy: Itaalje
           rest_of_world: Rest fan 'e wrâld
+      update:
+        terms accepted: Tankjewol foar it akseptearjen fan 'e nije bydragersbetingsten!
       terms_declined_flash:
         terms_declined_html: It muoit ús dat jo de nije Bydragersbetingsten net akseptearje
           wolle. Sjoch %{terms_declined_link} foar mear ynformaasje.
@@ -426,7 +421,6 @@ fy:
     index:
       title: Wizigingssets
       title_user: Wizigingssets fan %{user}
-      title_friend: Wizigingssets fan myn freonen
       title_nearby: Wizigingssets fan meidoggers yn 'e omkriten
       empty: Gjin wizigingssets fûn.
       empty_area: Gjin wizigingssets yn dizze krite.
@@ -472,18 +466,13 @@ fy:
     popup:
       your location: Jo lokaasje
       nearby mapper: Kaartmakker fuortby
-      friend: Freon
     show:
       title: Myn oersjochpaniel
       no_home_location_html: '%{edit_profile_link} en stel jo fêste lokaasje yn, om
         meidoggers yn ''e omkriten te sjen.'
       edit_your_profile: Bewurkje jo profyl
-      my friends: Myn freonen
-      no friends: Jo hawwe noch gjin freonen tafoege.
       nearby users: Oare meidoggers yn 'e omkriten
       no nearby users: Noch gjin oare kaartmakker hat oanjûn fuort by jo om te sitten.
-      friends_changesets: wizigingssets fan freonen
-      friends_diaries: deiboekstikken fan freonen
       nearby_changesets: wizigingssets fan meidoggers fuortby
       nearby_diaries: deiboekstikken fan meidoggers fuortby
   diary_entries:
@@ -494,7 +483,6 @@ fy:
       use_map_link: Kaart brûke
     index:
       title: Deiboeken fan meidoggers
-      title_friends: Deiboeken fan freonen
       title_nearby: Deiboeken fan meidoggers fuortby
       user_title: Deiboek fan %{user}
       in_language_title: Deiboekstikken yn it %{language}
@@ -549,35 +537,11 @@ fy:
       all:
         title: OpenStreetMap Deiboekstikken
         description: Nije deiboekstikken fan meidoggers oan OpenStreetMap
-  diary_comments:
-    index:
-      title: Troch %{user} taheakke deiboekreäksjes
-      heading: Deiboekreäksjes fan %{user}
-      subheading_html: Troch %{user} taheakke deiboekreäksjes
-      no_comments: Gjin deiboekreäksjes
-    page:
-      post: Stik
-      when: Wannear
-      comment: Reäksje
   doorkeeper:
     flash:
       applications:
         create:
           notice: Applikaasje registrearre.
-  friendships:
-    make_friend:
-      heading: '%{user} as freon tafoegje?'
-      button: As freon tafoegje
-      success: '%{name} is no jo freon(dinne)!'
-      failed: Spitich, %{name} as freon tafoegjen mislearre.
-      already_a_friend: Jo binne al freonen mei %{name}.
-      limit_exceeded: Jo hawwe de lêste tiid in soad meidoggers freon makke. Wachtsje
-        in skoftke mei noch mear te meitsjen.
-    remove_friend:
-      heading: '%{user} as freon ôffiere?'
-      button: Offiere
-      success: '%{name} is ôffierd fan jo freonen.'
-      not_a_friend: '%{name} is net ien fan jo freonen.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1502,14 +1466,10 @@ fy:
         werom jaan op %{replyurl}
       footer_html: Jo kinne it berjocht ek lêze op %{readurl} en de ôfstjoerder in
         berjocht werom jaan op %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Goeie %{to_user},
-      subject: '[OpenStreetMap] %{user} hat jo as freon tafoege'
-      had_added_you: '%{user} hat jo as freon tafoege op OpenStreetMap.'
       see_their_profile: Jo kinne syn/har profyl besjen op %{userurl}.
       see_their_profile_html: Jo kinne syn/har profyl besjen op %{userurl}.
-      befriend_them: Jo kinne him/har ek as freon tafoegje op %{befriendurl}.
-      befriend_them_html: Jo kinne him/har ek as freon tafoegje op %{befriendurl}.
     gpx_failure:
       hi: Goeie %{to_user},
       failed_to_import: 'net ymportearre wurde koe. Hjir is de foutmelding:'
@@ -1655,11 +1615,13 @@ fy:
       wrong_user: Jo binne oanmeld as '%{user}', mar it berjocht dat jo lêze wolle
         is net troch/nei dy meidogger stjoerd. Meld jo oan as de krekte meidogger
         om it lêze te kinnen.
-    mark:
-      as_read: Berjocht as lêzen oanmurken
-      as_unread: Berjocht as net-lêzen oanmurken
     destroy:
       destroyed: Berjocht wiske
+    read_marks:
+      create:
+        notice: Berjocht as lêzen oanmurken
+      destroy:
+        notice: Berjocht as net-lêzen oanmurken
     mailboxes:
       heading:
         my_inbox: Myn ynfek
@@ -2105,13 +2067,14 @@ fy:
       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:
-      description_with_count:
-        one: GPX-bestân mei %{count} punt fan %{user}
-        other: GPX-bestân mei %{count} punten fan %{user}
-      description_without_count: GPX-bestân fan %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-trajekten
+      description:
+        description_with_count:
+          one: GPX-bestân mei %{count} punt fan %{user}
+          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:
@@ -2220,7 +2183,6 @@ fy:
       display name description: Jo meidochnamme dy't elkenien sjen kin. Jo kinne dy
         letter yn 'e foarkarren feroarje.
       continue: Ynskriuwe
-      terms accepted: Tankjewol foar it akseptearjen fan 'e nije bydragersbetingsten!
       use external auth: Brûk oars in treddepartij om jo oan te melden
     no_such_user:
       title: Meidogger ûnbekend
@@ -2247,8 +2209,6 @@ fy:
       edits: Bewurkings
       traces: Trajekten
       notes: Kaartnotysjes
-      remove as friend: Freon ôffiere
-      add as friend: Freon tafoegje
       mapper since: 'Kaartmakker sûnt:'
       ct status: 'Bydragersbetingsten:'
       ct undecided: neat besletten
@@ -2302,6 +2262,15 @@ fy:
       user:
         summary_html: '%{name} oanmakke fan %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} oanmakke op %{date}'
+    changeset_comments:
+      page:
+        when: Wannear
+        comment: Reäksje
+    diary_comments:
+      index:
+        title: Troch %{user} taheakke deiboekreäksjes
+      page:
+        post: Stik
     suspended:
       title: Akkount skoattele
       heading: Akkount skoattele
index 217ff11ff13e37cad50262d01cfcba1ffc1a428e..fe46865fc351f9b0c10556eccce06458b89385aa 100644 (file)
@@ -188,8 +188,6 @@ ga:
       external auth: Fíordheimhniú Seachtrach
       openid:
         link text: céard é seo?
-      public editing:
-        enabled link text: céard é seo?
       contributor terms:
         heading: Téarmaí do Rannchuiditheoirí
         agreed: D'aontaigh tú leis na Téarmaí nua do Rannchuiditheoirí.
@@ -209,6 +207,8 @@ ga:
           france: An Fhrainc
           italy: An Iodáil
           rest_of_world: An chuid eile den Domhan
+      update:
+        terms accepted: Go raibh maith agat as glacadh leis na téarmaí nua do rannchuiditheoirí.
   browse:
     version: Leagan
     in_changeset: Tacar athruithe
@@ -299,7 +299,6 @@ ga:
     index:
       title: Tacair athruithe
       title_user: Tacair athruithe de chuid %{user}
-      title_friend: Tacair athruithe de chuid mo chairde
       title_nearby: Tacair athruithe a rinne úsáideoirí in aice láimhe
       empty: Níor aimsíodh aon tacar athruithe.
       empty_area: Níl aon tacar athruithe sa limistéar seo.
@@ -342,10 +341,8 @@ ga:
       latest_edit_html: 'An t-athrú is déanaí (%{ago}):'
     popup:
       nearby mapper: Léarscálaí in aice láimhe
-      friend: Cara
     show:
       nearby users: Úsáideoirí eile in aice láimhe
-      friends_diaries: iontrálacha dialainne do chairde
   diary_entries:
     new:
       title: Iontráil Nua Dialainne
@@ -354,7 +351,6 @@ ga:
       use_map_link: An Léarscáil a Úsáid
     index:
       title: Dialanna úsáideoirí
-      title_friends: Dialanna cairde
       title_nearby: Dialann de chuid Úsáideoirí In Aice Láimhe
       user_title: Dialann %{user}
       in_language_title: 'Iontrálacha Dialainne i: %{language}'
@@ -414,20 +410,6 @@ ga:
       all:
         title: Iontrálacha dialainne OpenStreetMap
         description: Iontrálacha dialainne le déanaí ó úsáideoirí OpenStreetMap
-  diary_comments:
-    index:
-      no_comments: Níl aon nóta tráchta dialainne ann
-    page:
-      post: Postáil
-      when: Cá huair
-      comment: Nóta tráchta
-  friendships:
-    make_friend:
-      heading: Cuir %{user} leis mar chara?
-      button: Cuir leis mar chara
-      success: Is cara leat %{name} anois!
-      failed: Ár leithscéal, níorbh fhéidir %{name} a chur leis mar chara.
-      already_a_friend: Is cairde tú féin agus %{name} cheana féin
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1086,13 +1068,9 @@ ga:
         ábhar %{subject}:'
       footer_html: Is féidir leat an teachtaireacht a léamh ag %{readurl} freisin
         agus is féidir leat freagra a scríobh ag %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: A %{to_user}, a chara,
-      subject: '[OpenStreetMap] Chuir %{user} ar liosta na gcairde thú'
-      had_added_you: Chuir %{user} ar liosta na gcairde atá acu ar OpenStreetMap thú.
       see_their_profile: Is féidir leat a p(h)róifíl a fheiceáil ag %{userurl}.
-      befriend_them: Is féidir an duine sin a chur ar liosta na gcairde atá agatsa
-        ag %{befriendurl}.
     gpx_failure:
       failed_to_import: ', theip ar an iompórtáil. Seo an earráid:'
       subject: '[OpenStreetMap] Theip ar Iompórtáil GPX'
@@ -1211,11 +1189,13 @@ ga:
       wrong_user: Tá tú logáilte isteach mar '%{user}' ach níor seoladh an teachtaireacht
         atá tú ag iarraidh léamh chuig an úsáideoir sin agus ní hé a sheol é ach an
         oiread. Logáil isteach mar an t-úsáideoir ceart chun é a léamh.
-    mark:
-      as_read: Teachtaireacht marcáilte mar léite
-      as_unread: Teachtaireacht marcáilte mar neamhléite
     destroy:
       destroyed: Teachtaireacht scriosta
+    read_marks:
+      create:
+        notice: Teachtaireacht marcáilte mar léite
+      destroy:
+        notice: Teachtaireacht marcáilte mar neamhléite
     mailboxes:
       heading:
         my_inbox: Mo Bhosca Isteach
@@ -1586,15 +1566,16 @@ ga:
     offline:
       heading: Stóráil GPX As Líne
       message: Níl córas uaslódála agus stórála na gcomhad GPX ar fáil faoi láthair
-    georss:
-      title: Loirg GPX OpenStreetMap
-    description:
-      description_with_count:
-        one: Comhad GPX a bhfuil %{count} phointe ann ó %{user}
-        few: Comhad GPX a bhfuil %{count} phointe ann ó %{user}}
-        many: Comhad GPX a bhfuil %{count} bpointe ann ó %{user}}
-        other: Comhad GPX a bhfuil %{count} pointe ann ó %{user}
-      description_without_count: Comhad GPX ó %{user}
+    feeds:
+      show:
+        title: Loirg GPX OpenStreetMap
+      description:
+        description_with_count:
+          one: Comhad GPX a bhfuil %{count} phointe ann ó %{user}
+          few: Comhad GPX a bhfuil %{count} phointe ann ó %{user}}
+          many: Comhad GPX a bhfuil %{count} bpointe ann ó %{user}}
+          other: Comhad GPX a bhfuil %{count} pointe ann ó %{user}
+        description_without_count: Comhad GPX ó %{user}
   application:
     require_cookies:
       cookies_needed: Is cosúil go bhfuil fianáin díchumasaithe agat - cumasaigh fianáin
@@ -1643,7 +1624,6 @@ ga:
       display name description: An t-ainm úsáideora atá agat a thaispeántar go poiblí.
         Is féidir leat é seo a athrú níos moille sna sainroghanna.
       continue: Cláraigh
-      terms accepted: Go raibh maith agat as glacadh leis na téarmaí nua do rannchuiditheoirí.
       use external auth: Nó, bain úsáid as tríú páirtí le logáil isteach
     no_such_user:
       title: Níl an t-úsáideoir sin ann
@@ -1664,8 +1644,6 @@ ga:
       edits: Athruithe
       traces: Loirg
       notes: Nótaí Léarscáile
-      remove as friend: Bris cairdeas
-      add as friend: Cuir Cara Leis
       mapper since: 'Ag léarscáiliú ó:'
       ct status: 'Téarmaí do rannchuiditheoirí:'
       ct declined: Diúltaithe
@@ -1688,6 +1666,13 @@ ga:
       show:
         title: Úsáideoirí
         heading: Úsáideoirí
+    changeset_comments:
+      page:
+        when: Cá huair
+        comment: Nóta tráchta
+    diary_comments:
+      page:
+        post: Postáil
   user_blocks:
     helper:
       block_duration:
index 64f20fed561088939536ccbf39b615645c4b22fc..c87a81354284bde6c82682dc8e85606287b6c135 100644 (file)
@@ -84,11 +84,6 @@ gcf:
       my settings: Mes options
       openid:
         link text: Ka sa yé?
-      public editing:
-        enabled: Aktif. Y pa anonnim, y pé édité doné.
-        enabled link text: Ka sa yé?
-        disabled: Inaktif y pé pa édité doné ; tout édision pasé anonim.
-        disabled link text: Pouki an pé pa modifyé?
       contributor terms:
         link text: Ka sa yé?
       save changes button: Enrèjisré tout chanjman
@@ -171,10 +166,7 @@ gcf:
     popup:
       your location: Koté ou yé
       nearby mapper: Arpantè owa aw
-      friend: Zanmi
     show:
-      my friends: Zanmi a-w
-      no friends: Ou poko ni pon zanmi
       nearby users: 'Itilizatè owa a-w :'
       no nearby users: Ou poko ni itilizatè owa a-w.
   diary_entries:
@@ -212,30 +204,12 @@ gcf:
       comment_from_html: Komantè a %{link_user} koté %{comment_created_at}
       hide_link: Dévwè komantasyon-lasa
       confirm: Konfirmé
-  diary_comments:
-    page:
-      comment: Komantasyon
   doorkeeper:
     scopes:
       phone: Vwè liméwo a téléfòn a-w
   errors:
     forbidden:
       title: Défandi
-  friendships:
-    make_friend:
-      heading: Mèt %{user} adan sé zanmi a-w la?
-      button: Jouté on zanmi
-      success: Alè-la %{name} sé sendika a-w la!
-      failed: Malérèzsò, Zingchap toupannan joutaj a %{name} adan sé zanmi a-w la
-      already_a_friend: '%{name} ja zanmi a-w'
-      limit_exceeded: |-
-        Pa ni enpé tan ou jwenn zanmi kon tilili.
-        Atann tibwen avan ou ka séyé trapé dòt ankò.
-    remove_friend:
-      heading: Kasé-lo èvè %{user}?
-      button: Woté on zanmi
-      success: '%{name} pa zanmi a-w ankò.'
-      not_a_friend: '%{name} pa zanmi a-w'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -464,10 +438,8 @@ gcf:
       hi: Yéla %{to_user},
     message_notification:
       hi: Yéla %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: Yéla %{to_user},
-      subject: '[OpenStreetMap] %{user} jouté-w kon on zanmi'
-      had_added_you: '%{user} jouté-w kontèl on zanmi adan OpenStreetMap.'
     gpx_failure:
       hi: Yéla %{to_user},
     gpx_success:
@@ -643,12 +615,13 @@ gcf:
       diary: Jounal
       edits: Édision
       traces: Chimen
-      remove as friend: Woté on zanmi
-      add as friend: Ajouté on zanmi
       mapper since: 'Arpantè dèpi:'
       comments: Komantasyon
     go_public:
       flash success: Tou sa ou fè jis alè ki lé piblik ou pa otorizé édité.
+    changeset_comments:
+      page:
+        comment: Komantasyon
     suspended:
       support: janmdifòs
   user_mutes:
index 140fe25d2b630a07a54e8ba45c109d6b308e5db2..083612acc7d2a358666a679e9bdffef541c5951c 100644 (file)
@@ -237,13 +237,6 @@ gd:
       external auth: Dearbhadh taobh a-muigh
       openid:
         link text: dè th`ann?
-      public editing:
-        heading: Deasachadh poblach
-        enabled: An comas. Nochdaidh d' ainm agus faodaidh tu dàta a dheasachadh.
-        enabled link text: dè th`ann?
-        disabled: À comas agus chan fhaod thu dàta a dheasachadh, bith gach deasachadh
-          a rinn thu roimhe gun urra.
-        disabled link text: Carson nach urrainn dhomh deasachadh?
       contributor terms:
         heading: 'Teirmichean a'' chom-pàirtiche:'
         agreed: Dh'aontaich thu ri teirmichean ùra a' chom-pàirtiche.
@@ -280,6 +273,8 @@ gd:
           france: An Fhraing
           italy: An Eadailt
           rest_of_world: An corr dhen t-saoghail
+      update:
+        terms accepted: Mòran taing gun do dh'aontaich thu ri teirmichean a' chom-pàirtiche!
   browse:
     version: Tionndadh
     in_changeset: Seata atharraichean
@@ -391,7 +386,6 @@ gd:
       title: Seataichean atharraichean
       title_user: Seataichean atharraichean le %{user}
       title_user_link_html: Seataichean atharraichean le %{user_link}
-      title_friend: Seataichean atharraichean le mo charaidean
       title_nearby: Seataichean atharraichean le cleachdaichean am fagas
       empty: Cha deach seata atharraichean a lorg.
       empty_area: Chan eil seata atharraichean san raon seo.
@@ -407,8 +401,6 @@ gd:
         created: Air a chruthachadh
         closed: Dùinte
         belongs_to: Ùghdar
-    heading:
-      title: Seata atharraichean %{id}
     show:
       title: 'Seata atharraichean: %{id}'
       created: 'Air a chruthachadh: %{when}'
@@ -433,6 +425,9 @@ gd:
     timeout:
       sorry: Duilich ach thug e ro fhada gus an seata atharraichean a dh'iarr thu
         fhaighinn.
+  changeset_subscriptions:
+    heading:
+      title: Seata atharraichean %{id}
   dashboards:
     contact:
       km away: '%{count}km air falbh'
@@ -441,14 +436,10 @@ gd:
     popup:
       your location: Far a bheil thu
       nearby mapper: Neach-mapachaidh am fagas
-      friend: Caraid
     show:
-      no friends: Cha do chuir thu caraid ris fhathast.
       nearby users: Cleachdaichean am fagas eile
       no nearby users: Chan eil cleachdaiche sam bith eile ann a dh'innis gu bheil
         iad ris an obair-mhapa am fagas.
-      friends_changesets: seata atharraichean nan caraidean
-      friends_diaries: clàran leabhair-latha nan caraidean
       nearby_changesets: seata atharraichean nan cleachdaichean am fagas
       nearby_diaries: clàran leabhair-latha am fagas
   diary_entries:
@@ -459,7 +450,6 @@ gd:
       use_map_link: Cleachd mapa
     index:
       title: Leabhraichean-latha
-      title_friends: Leabhraichean-latha do charaidean
       title_nearby: Leabhraichean-latha am fagas
       user_title: An leabhar-latha aig %{user}
       in_language_title: Is %{language} cànan nan clàran san leabhar-latha
@@ -513,26 +503,9 @@ gd:
         title: Clàran san leabhar-latha OpenStreetMap
         description: Clàran leabhair-latha le cleachdaichean OpenStreetMap o chionn
           goirid
-  diary_comments:
-    page:
-      post: Post
-      when: Àm
-      comment: Beachd
   errors:
     forbidden:
       title: Toirmisgte
-  friendships:
-    make_friend:
-      heading: An cuir thu %{user} ris na caraidean agad?
-      button: Cuir caraid ris
-      success: Chaidh %{name} a chur ris na caraidean agad!
-      failed: Duilich ach cha deach leinn %{name} a chur ris na caraidean agad.
-      already_a_friend: Tha càirdeas eadar thu fhèin agus %{name} mar-thà.
-    remove_friend:
-      heading: An toir thu %{user} air falbh o na caraidean agad?
-      button: Thoir an càirdeas air falbh
-      success: Chaidh %{name} a thoirt air falbh o na caraidean agad.
-      not_a_friend: Chan eil càirdeas eadar thu fhèin agus %{name}.
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1092,14 +1065,10 @@ gd:
         bheil an cuspair "%{subject}":'
       footer_html: '''S urrainn dhut an teachdaireachd a leughadh air %{readurl} cuideachd
         agus freagairt a sgrìobhadh air %{replyurl}'
-    friendship_notification:
+    follow_notification:
       hi: Shin thu, %{to_user},
-      subject: '[OpenStreetMap] Chuir %{user} ''na charaid ris thu'
-      had_added_you: '[OpenStreetMap] Chuir %{user} ''na charaid ris thu air OpenStreetMap.'
       see_their_profile: '''S urrainn dhut a'' phròifil aig an neach ud a shealltainn
         air %{userurl}.'
-      befriend_them: '''S urrainn dhut an neach ud a a chur ''nad caraid ris air %{befriendurl}
-        cuideachd.'
     gpx_failure:
       hi: Shin thu, %{to_user},
       failed_to_import: 'ion-phortachadh. Seo a'' mhearachd:'
@@ -1219,11 +1188,13 @@ gd:
       wrong_user: Rinn thu clàradh a-steach mar `%{user}' ach cha deach an teachdaireachd
         a tha thu a' feuchainn ri leughadh a chur gun neach-chleachdaidh ud. Feuch
         an clàraich thu a-steach 'na chleachdaiche a bu chòir airson a leughadh.
-    mark:
-      as_read: Chuir thu comharra gun deach an teachdaireachd a leughadh
-      as_unread: Chuir thu comharra nach deach an teachdaireachd a leughadh
     destroy:
       destroyed: Chaidh an teachdaireachd a sguabadh às
+    read_marks:
+      create:
+        notice: Chuir thu comharra gun deach an teachdaireachd a leughadh
+      destroy:
+        notice: Chuir thu comharra nach deach an teachdaireachd a leughadh
     mailboxes:
       heading:
         my_inbox: Am bogsa a-steach agam
@@ -1637,15 +1608,16 @@ gd:
       heading: Tha stòras GPX far loidhne
       message: Chan eil stòras no siostam luchdaidh suas nam faidhlichean GPX ri fhaighinn
         an-dràsta
-    georss:
-      title: Lorgaidhean GPS aig OpenStreetMap
-    description:
-      description_with_count:
-        one: faidhle GPX le %{count} phuing o %{user}
-        two: faidhle GPX le %{count} phuing o %{user}
-        few: faidhle GPX le %{count} puingean o %{user}
-        other: faidhle GPX le %{count} puing o %{user}
-      description_without_count: Faidhle GPX o %{user}
+    feeds:
+      show:
+        title: Lorgaidhean GPS aig OpenStreetMap
+      description:
+        description_with_count:
+          one: faidhle GPX le %{count} phuing o %{user}
+          two: faidhle GPX le %{count} phuing o %{user}
+          few: faidhle GPX le %{count} puingean o %{user}
+          other: faidhle GPX le %{count} puing o %{user}
+        description_without_count: Faidhle GPX o %{user}
   application:
     require_cookies:
       cookies_needed: Tha coltas gun do chuir thu briosgaidean à comas - feuch an
@@ -1686,7 +1658,6 @@ gd:
       display name description: An t-ainm-cleachdaiche agad a thèid a shealltainn
         gu poblach. 'S urrainn dhut seo atharrachadh uair sam bith sna roghainnean.
       continue: Clàraich
-      terms accepted: Mòran taing gun do dh'aontaich thu ri teirmichean a' chom-pàirtiche!
       or: "no"
       use external auth: No cleachd treas-phàrtaidh airson clàradh a-steach
     no_such_user:
@@ -1712,8 +1683,6 @@ gd:
       edits: Deasachaidhean
       traces: Lorgaidhean
       notes: Nòtaichean a' mhapa
-      remove as friend: Thoir an càirdeas air falbh
-      add as friend: Cuir caraid ris
       mapper since: 'Ris an obair-mhapa o:'
       ct status: 'Teirmichean a'' chom-pàirtiche:'
       ct undecided: Gun taghadh
@@ -1765,6 +1734,13 @@ gd:
       user:
         summary_html: Chaidh %{name} a chruthachadh o %{ip_address} %{date}
         summary_no_ip_html: Chaidh %{name} a chruthachadh %{date}
+    changeset_comments:
+      page:
+        when: Àm
+        comment: Beachd
+    diary_comments:
+      page:
+        post: Post
     suspended:
       title: Chaidh an cunntas a chur à rèim
       heading: Chaidh an cunntas a chur à rèim
index 6773a78ddff1b378efc0d9ee21401becfc9d2daa..e677b49c10b5eaa3057347f077e2c6d822d7a7c9 100644 (file)
@@ -103,7 +103,7 @@ gl:
         support_url: URL de apoio
         allow_read_prefs: ler as súas preferencias de usuario
         allow_write_prefs: modificar as súas preferencias de usuario
-        allow_write_diary: crear entradas de diario, comentarios e facer amizades
+        allow_write_diary: crear entradas de diario e comentarios
         allow_write_api: modificar o mapa
         allow_read_gpx: ler as súas pistas GPS privadas
         allow_write_gpx: subir pistas GPS
@@ -267,13 +267,6 @@ gl:
       external auth: Autenticación externa
       openid:
         link text: que é isto?
-      public editing:
-        heading: Edición pública
-        enabled: Activado. Non es anónimo e podes editar os datos.
-        enabled link text: que é isto?
-        disabled: Desactivado e non pode editar os datos. Tódalas anteriores edicións
-          son anónimas.
-        disabled link text: por que non podo editar?
       contributor terms:
         heading: Termos do colaborador
         agreed: Aceptaches os novos termos do colaborador.
@@ -356,7 +349,6 @@ gl:
         readable_summary: resumo lexible por humanos
         informal_translations: traducións informais
         continue: Continuar
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Cancelar
         you need to accept or decline: Le e, deseguido, acepta ou rexeita os novos
           termos do colaborador para continuar.
@@ -365,6 +357,8 @@ gl:
           france: Francia
           italy: Italia
           rest_of_world: Resto do mundo
+      update:
+        terms accepted: Grazas por aceptar os novos termos do colaborador!
       terms_declined_flash:
         terms_declined_html: Lamentamos que decidises non aceptar as novas condicións
           dos colaboradores. Para obter máis información, consulta %{terms_declined_link}.
@@ -519,9 +513,9 @@ gl:
       view_changeset_details: Ollar os detalles do conxunto de modificacións
     index:
       title: Conxuntos de modificacións
-      title_user: Conxuntos de modificacións por %{user}
-      title_user_link_html: Conxuntos de modificacións por %{user_link}
-      title_friend: Conxuntos de modificacións das amizades
+      title_user: Conxuntos de modificacións de %{user}
+      title_user_link_html: Conxuntos de modificacións de %{user_link}
+      title_followed: Conxuntos de modificacións das persoas que segues
       title_nearby: Conxuntos de modificacións dos usuarios de lugares preto de ti
       empty: Non se atoparon conxuntos de modificacións.
       empty_area: Non hai conxuntos de modificacións nesta zona.
@@ -536,20 +530,6 @@ gl:
         created: Creado
         closed: Pechado
         belongs_to: Autor
-    subscribe:
-      heading: Queres subscribirte á seguinte conversa sobre o conxunto de modificacións?
-      button: Subscribirse á conversa
-    unsubscribe:
-      heading: Queres cancelar a subscrición á seguinte conversa sobre o conxunto
-        de modificacións?
-      button: Cancelar a subscrición á conversa
-    heading:
-      title: Conxunto de modificacións %{id}
-      created_by_html: Creado por %{link_user} o %{created}.
-    no_such_entry:
-      heading: 'Non hai ningunha entrada co ID: %{id}'
-      body: Non existe ningún conxunto de modificacións co identificador %{id}. Comproba
-        a ortografía ou que a ligazón que seguiches estea ben.
     show:
       title: 'Conxunto de modificacións: %{id}'
       created: 'Creado: %{when}'
@@ -583,6 +563,22 @@ gl:
     timeout:
       sorry: Sentímolo, a lista dos conxuntos de modificacións que solicitaches tardou
         moito en obterse.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Queres subscribirte á seguinte conversa sobre o conxunto de modificacións?
+        button: Subscribirse á conversa
+      unsubscribe:
+        heading: Queres cancelar a subscrición á seguinte conversa sobre o conxunto
+          de modificacións?
+        button: Cancelar a subscrición á conversa
+    heading:
+      title: Conxunto de modificacións %{id}
+      created_by_html: Creado por %{link_user} o %{created}.
+    no_such_entry:
+      heading: 'Non hai ningunha entrada co ID: %{id}'
+      body: Non existe ningún conxunto de modificacións co identificador %{id}. Comproba
+        a ortografía ou que a ligazón que seguiches estea ben.
   dashboards:
     contact:
       km away: a %{count}km de distancia
@@ -591,18 +587,18 @@ gl:
     popup:
       your location: A túa localización
       nearby mapper: Cartógrafo preto de ti
-      friend: Amizade
+      following: Seguindo
     show:
       title: O meu panel de control
       no_home_location_html: '%{edit_profile_link} e define a localización da túa
         casa para ver usuarios preto de ti.'
       edit_your_profile: Editar o teu perfil
-      my friends: As miñas amizades
-      no friends: Aínda non engadiu ningunha amizade.
+      followings: Persoas que segues
+      no followings: Aínda non segues a ningunha persoa.
       nearby users: Outros usuarios preto de ti
       no nearby users: Aínda non hai usuarios que estean situados preto de ti.
-      friends_changesets: conxuntos de modificacións das amizades
-      friends_diaries: entradas de diario das amizades
+      followed_changesets: conxuntos de modificacións
+      followed_diaries: entradas no diario
       nearby_changesets: conxuntos de modificacións dos usuarios de lugares preto
         de ti
       nearby_diaries: entradas de diario dos usuarios de lugares preto de ti
@@ -614,7 +610,7 @@ gl:
       use_map_link: Empregar mapa
     index:
       title: Diarios dos usuarios
-      title_friends: Diarios das amizades
+      title_followed: Diarios das persoas que segues
       title_nearby: Diarios dos usuarios de lugares preto de ti
       user_title: Diario de %{user}
       in_language_title: Entradas do diario en %{language}
@@ -682,15 +678,6 @@ gl:
         diario?
       button: Cancelar a subscrición á conversa
   diary_comments:
-    index:
-      title: Comentarios do diario engadidos por %{user}
-      heading: Comentarios do diario de %{user}
-      subheading_html: Comentarios do diario engadidos por %{user}
-      no_comments: Sen comentarios no diario
-    page:
-      post: Artigo
-      when: Cando
-      comment: Comentario
     new:
       heading: Queres engadir un comentario á seguinte conversa sobre a entrada no
         diario?
@@ -751,20 +738,23 @@ gl:
       title: Non se atopou o ficheiro
       description: Non se puido atopar unha operación de ficheiro/directorio/API con
         ese nome no servidor do OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Queres engadir a %{user} coma amizade?
-      button: Engadir coma amizade
-      success: '%{name} xa é a túa amizade!'
-      failed: Houbo un erro ó engadir a %{name} coma amizade.
-      already_a_friend: Xa é amizade de %{name}.
-      limit_exceeded: Estivo enviando unha morea de peticións de amizade recentemente.
-        Agarde uns intres denantes de tentar enviar máis.
-    remove_friend:
-      heading: Queres eliminar a %{user} das amizades?
-      button: Eliminar coma amizade
-      success: '%{name} foi eliminado das túas amizades.'
-      not_a_friend: '%{name} non é unha das túas amizades.'
+  follows:
+    show:
+      follow:
+        heading: Queres seguir a %{user}?
+        button: Seguir a persoa
+      unfollow:
+        heading: Queres deixar de seguir a %{user}?
+        button: Deixar de seguir a persoa
+    create:
+      success: Agora segues a %{name}!
+      failed: Sentímolo, fallou a túa solicitude para seguir a %{name}.
+      already_followed: Xa segues a %{name}.
+      limit_exceeded: Estiveches seguindo a moitas persoas recentemente. Agarda uns
+        intres antes de intentar seguir a máis.
+    destroy:
+      success: Deixaches de seguir a %{name}.
+      not_followed: Non segues a %{name}.
   geocoder:
     search:
       title:
@@ -1733,14 +1723,14 @@ gl:
         en %{replyurl}
       footer_html: Tamén podes ler a mensaxe en %{readurl} e enviar unha mensaxe ó
         autor en %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: 'Ola %{to_user}:'
-      subject: '[OpenStreetMap] %{user} engadiuno coma amizade'
-      had_added_you: '%{user} engadiuno coma amizade no OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} seguiute'
+      followed_you: '%{user} está a seguirte no OpenStreetMap.'
       see_their_profile: Podes ollar o seu perfil en %{userurl}.
       see_their_profile_html: Podes ollar o seu perfil en %{userurl}.
-      befriend_them: Tamén pode engadilo coma amizade no %{befriendurl}.
-      befriend_them_html: Tamén podes engadilo como amizade no %{befriendurl}.
+      follow_them: Tamén podes seguir a esta persoa en %{followurl}.
+      follow_them_html: Tamén podes seguir a esta persoa en %{followurl}.
     gpx_details:
       details: 'Detalles do teu ficheiro:'
       filename: Nome do ficheiro
@@ -1910,14 +1900,17 @@ gl:
       wrong_user: Accediches ó sistema como "%{user}", pero a mensaxe que pediches
         ler non a enviou ese usuario nin foi enviada a ese usuario. Accede co usuario
         correcto para ler a mensaxe.
-    mark:
-      as_read: Mensaxe marcada coma lida
-      as_unread: Mensaxe marcada coma non lida
-    unmute:
-      notice: A mensaxe moveuse á caixa de entrada
-      error: Non se puido mover a mensaxe á caixa de entrada.
     destroy:
       destroyed: Mensaxe eliminada
+    read_marks:
+      create:
+        notice: Mensaxe marcada coma lida
+      destroy:
+        notice: Mensaxe marcada coma non lida
+    mutes:
+      destroy:
+        notice: A mensaxe moveuse á caixa de entrada
+        error: Non se puido mover a mensaxe á caixa de entrada.
     mailboxes:
       heading:
         my_inbox: A miña caixa de entrada
@@ -2078,6 +2071,9 @@ gl:
       preview: Vista previa
       help: Axuda
     pagination:
+      changeset_comments:
+        older: Comentarios máis vellos
+        newer: Comentarios máis recentes
       diary_comments:
         older: Comentarios máis vellos
         newer: Comentarios máis recentes
@@ -2710,13 +2706,14 @@ gl:
     offline:
       heading: Almacenamento GPX fóra de liña
       message: O sistema de subida e almacenaxe de ficheiros GPX non está dispoñíbel.
-    georss:
-      title: Pistas GPS do OpenStreetMap
-    description:
-      description_with_count:
-        one: Ficheiro GPX cun punto de %{user}
-        other: Ficheiro GPX con %{count} puntos de %{user}
-      description_without_count: Ficheiro GPX de %{user}
+    feeds:
+      show:
+        title: Pistas GPS do OpenStreetMap
+      description:
+        description_with_count:
+          one: Ficheiro GPX cun punto de %{user}
+          other: Ficheiro GPX con %{count} puntos de %{user}
+        description_without_count: Ficheiro GPX de %{user}
   application:
     permission_denied: Non ten permisos para acceder a esa acción
     require_cookies:
@@ -2785,7 +2782,7 @@ gl:
       openid: Iniciar sesión usando OpenStreetMap
       read_prefs: Ler preferencias de usuario
       write_prefs: Modificar preferencias de usuario
-      write_diary: Crear entradas de diario, comentarios e amizades
+      write_diary: Crear entradas de diario e comentarios
       write_api: Modificar o mapa
       read_gpx: Ler pistas GPS privadas
       write_gpx: Subir pistas GPS
@@ -2878,7 +2875,6 @@ gl:
           unha sección sobre os enderezos de correo electrónico
         contributor_terms: termos do colaborador
       continue: Rexistrarse
-      terms accepted: Grazas por aceptar os novos termos do colaborador!
       email_help:
         privacy_policy: política de protección de datos
         privacy_policy_title: Política de protección de datos da OSMF, que contén
@@ -2916,8 +2912,8 @@ gl:
       edits: Edicións
       traces: Pistas
       notes: Notas do mapa
-      remove as friend: Eliminar coma amizade
-      add as friend: Engadir coma amizade
+      unfollow: Deixar de seguir
+      follow: Seguir
       mapper since: 'Cartógrafo dende:'
       last map edit: 'Última edición do mapa:'
       no activity yet: Aínda non hai actividade
@@ -2993,6 +2989,26 @@ gl:
       user:
         summary_html: '%{name} creado dende %{ip_address} o %{date}'
         summary_no_ip_html: '%{name} creado o %{date}'
+    comments:
+      index:
+        heading_html: Comentarios de %{user}
+        changesets: Conxuntos de modificacións
+        diary_entries: Entradas no diario
+        no_comments: Sen comentarios
+    changeset_comments:
+      index:
+        title: Conxuntos de modificacións engadidos por %{user}
+      page:
+        changeset: Conxunto de modificacións
+        when: Cando
+        comment: Comentario
+    diary_comments:
+      index:
+        title: Comentarios do diario engadidos por %{user}
+      page:
+        post: Artigo
+        when: Cando
+        comment: Comentario
     suspended:
       title: Conta suspendida
       heading: Conta suspendida
index fa9d2aa200bef7c9f3c71ba5fda50c146dfc4931..618651a1857c6f5b937ed71c4d62ebc755e2ed0e 100644 (file)
@@ -169,11 +169,6 @@ gsw:
     popup:
       your location: Dyy Standort
       nearby mapper: Mapper in dr Nechi
-  friendships:
-    make_friend:
-      success: '%{name} isch jetz Dyy Frynd.'
-      failed: Excusez, %{name} het nit as Frynd chenne zuegfiegt wäre.
-      already_a_friend: Du bisch scho ne Frynd vu %{name}.
   confirmations:
     confirm_email:
       heading: Änderig vu dr E-Mail-Adräss bstetige
index ce8a64e018144be103a22c85ac62f0bc428fdffd..f5ed5efd30083d5db85a45c96f63df76b9a6c6f2 100644 (file)
@@ -117,9 +117,6 @@ gu:
     edit:
       openid:
         link text: આ શું છે?
-      public editing:
-        enabled link text: આ શું છે?
-        disabled link text: હું શા માટે સંપાદન કરી શકતો નથી?
       contributor terms:
         link text: આ શું છે?
       save changes button: ફેરફારો સાચવો
@@ -178,15 +175,9 @@ gu:
     contact:
       km away: '%{count} કિમી દૂર'
       m away: '%{count} મીટર દૂર'
-    popup:
-      friend: મિત્ર
-    show:
-      my friends: મારા મિત્રો
-      no friends: તમે હજુ સુધી કોઈ મિત્ર ઉમેર્યા નથી.
   diary_entries:
     index:
       title: વપરાશકર્તાઓની ડાયરી
-      title_friends: મિત્રોની ડાયરી
       title_nearby: નજીકના વપરાશકર્તાઓની ડાયરી
       user_title: '%{user}ની ડાયરી'
       in_language_title: '%{language} ભાષામાં ડાયરીની નોંધણીઓ'
@@ -203,10 +194,6 @@ gu:
       discussion: ચર્ચા
     diary_comment:
       confirm: ખાતરી કરો
-  diary_comments:
-    page:
-      when: ક્યારે
-      comment: ટિપ્પણી
   doorkeeper:
     scopes:
       address: તમારું ભૌતિક સરનામું જુઓ
@@ -218,17 +205,6 @@ gu:
       contact: સંપર્ક
     bad_request:
       title: ખરાબ વિનંતી
-  friendships:
-    make_friend:
-      button: મિત્ર તરીકે ઉમેરો
-      success: '%{name} હવે તમારા મિત્ર છે!'
-      failed: માફ કરશો, %{name}ને મિત્ર તરીકે ઉમેરવામાં અસફળ.
-      already_a_friend: તમે પહેલેથી જ %{name} સાથે મિત્ર છો.
-    remove_friend:
-      heading: '%{user}ને મિત્ર માંથી દૂર કરો?'
-      button: મિત્ર માંથી દૂર કરો
-      success: '%{name}ને તમારા મિત્રોમાંથી દૂર કરવામાં આવ્યા છે.'
-      not_a_friend: '%{name} એ તમારા મિત્રોમાં નથી.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -599,10 +575,8 @@ gu:
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: નમસ્તે %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: નમસ્તે %{to_user},
-      subject: '[OpenStreetMap] %{user} એ તમને મિત્ર તરીકે ઉમેર્યા'
-      had_added_you: '%{user} એ તમને મિત્ર તરીકે ઉમેર્યા છે.'
       see_their_profile: તમે તેમની પ્રોફાઇલ %{userurl} પર જોઈ શકો છો.
       see_their_profile_html: તમે તેમની પ્રોફાઇલ %{userurl} પર જોઈ શકો છો.
     gpx_failure:
@@ -779,8 +753,6 @@ gu:
       my edits: મારા સંપાદનો
       diary: ડાયરી
       edits: સંપાદનો
-      remove as friend: મિત્ર માંથી દૂર કરો
-      add as friend: મિત્ર તરીકે ઉમેરો
       uid: 'વપરાશકર્તા id:'
       email address: 'ઇમેઇલ સરનામું:'
       status: 'સ્થિતિ:'
@@ -807,6 +779,10 @@ gu:
       show:
         title: વપરાશકર્તાઓ
         heading: વપરાશકર્તાઓ
+    changeset_comments:
+      page:
+        when: ક્યારે
+        comment: ટિપ્પણી
     suspended:
       title: ખાતું નિલંબિત
       heading: ખાતું નિલંબિત
index 4c38fd420319137d5602e4008f07998c8ab99e2d..742bd726f7b954cec084b184ef3aa2b226cbf971 100644 (file)
@@ -307,12 +307,6 @@ he:
       external auth: אימות חיצוני
       openid:
         link text: מה זה?
-      public editing:
-        heading: עריכה ציבורית
-        enabled: מופעלת. לא אלמוני ויכול לערוך מידע.
-        enabled link text: מה זה?
-        disabled: לא מופעלת, אין אפשרות לערוך נתונים וכל העריכות הקודמות אלמוניות.
-        disabled link text: מדוע איני יכול לערוך?
       contributor terms:
         heading: תנאי תרומה
         agreed: הסכמת לתנאי התרומה החדשים.
@@ -384,7 +378,6 @@ he:
         readable_summary: תקציר קריא לבני־אדם
         informal_translations: תרגומים בלתי־פורמליים
         continue: להמשיך
-        declined: https://wiki.openstreetmap.org/wiki/He:Contributor_Terms_Declined
         cancel: ביטול
         you need to accept or decline: נא לקרוא ולקבל או לדחות את תנאי התרומה החדשים
           כדי להמשיך.
@@ -393,6 +386,8 @@ he:
           france: צרפת
           italy: איטליה
           rest_of_world: שאר העולם
+      update:
+        terms accepted: תודה על קבלת תנאי התרומה החדשים!
       terms_declined_flash:
         terms_declined_html: מתנצלים שהחלטת לא לאשר את תנאי השימוש החדשים. למידע נוסף,
           נא לפנות אל %{terms_declined_link}
@@ -505,6 +500,8 @@ he:
       view_redacted_data: הצגת הנתונים שהוסרו
       view_redaction_message: הצגת הודעת הסרה
   nodes:
+    not_found_message:
+      sorry: מצטערים, לא ניתן למצוא את הנקודה %{id}.
     timeout:
       sorry: מצטערים, אחזור הנתונים עבור הנקודה מספר %{id} ארך זמן רב מדי.
   old_nodes:
@@ -547,7 +544,6 @@ he:
       title: ערכות שינויים
       title_user: ערכות שינויים מאת %{user}
       title_user_link_html: ערכות שינויים מאת %{user_link}
-      title_friend: ערכות שינויים של החברים שלי
       title_nearby: ערכות שינויים של משתמשים בסביבה
       empty: לא נמצאה אף ערכת שינויים.
       empty_area: אין ערכות שינויים באזור הזה.
@@ -562,19 +558,6 @@ he:
         created: נוצרה
         closed: נסגרה
         belongs_to: יוצר
-    subscribe:
-      heading: לעשות מינוי לדיון בערכת השינויים הבאה?
-      button: מינוי לדיון
-    unsubscribe:
-      heading: לבטל את המינוי לדיון בערכת השינויים הבאה?
-      button: ביטול המינוי לדיון
-    heading:
-      title: ערכת שינויים %{id}
-      created_by_html: נוצרה על־ידי %{link_user} ב־%{created}.
-    no_such_entry:
-      heading: 'אין רשומה עם המזהה: %{id}'
-      body: מצטערים, אין ערכת שינויים עם המזהה %{id}. אולי האיות לא נכון ואולי לחצת
-        על קישור שגוי.
     show:
       title: 'ערכת שינויים: %{id}'
       created: 'נוצרה: %{when}'
@@ -604,6 +587,21 @@ he:
       relations_paginated: יחסים (%{x}–%{y} מתוך %{count})
     timeout:
       sorry: מצטערים, קבלת רשימת ערכות השינויים שביקשת אורכת זמן רב מדי.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: לעשות מינוי לדיון בערכת השינויים הבאה?
+        button: מינוי לדיון
+      unsubscribe:
+        heading: לבטל את המינוי לדיון בערכת השינויים הבאה?
+        button: ביטול המינוי לדיון
+    heading:
+      title: ערכת שינויים %{id}
+      created_by_html: נוצרה על־ידי %{link_user} ב־%{created}.
+    no_such_entry:
+      heading: 'אין רשומה עם המזהה: %{id}'
+      body: מצטערים, אין ערכת שינויים עם המזהה %{id}. אולי האיות לא נכון ואולי לחצת
+        על קישור שגוי.
   dashboards:
     contact:
       km away: במרחק %{count} ק״מ
@@ -612,18 +610,13 @@ he:
     popup:
       your location: מיקומך
       nearby mapper: ממפה סמוך
-      friend: חבר
     show:
       title: לוח הבקרה שלי
       no_home_location_html: '%{edit_profile_link} והגדרת מיקום הבית שלך לצפייה במשתמשים
         קרובים.'
       edit_your_profile: עריכת הפרופיל שלך
-      my friends: החברים שלי
-      no friends: עדיין לא הוספת חברים.
       nearby users: עוד משתמשים בסביבה
       no nearby users: אין עדיין עוד משתמשים שמודים שהם מיפו בסביבה.
-      friends_changesets: ערכות שינויים של חברים
-      friends_diaries: רשומות יומן של חברים
       nearby_changesets: ערכות השינויים של משתמשים בסביבה
       nearby_diaries: רשומות יומן של משתמשים בסביבה
   diary_entries:
@@ -634,7 +627,6 @@ he:
       use_map_link: להשתמש במפה
     index:
       title: יומנים של המשתמש
-      title_friends: יומנים של חברים
       title_nearby: יומנים של משתמשים בסביבה
       user_title: היומן של %{user}
       in_language_title: רשומות יומן ב%{language}
@@ -702,15 +694,6 @@ he:
       heading: לבטל את המינוי לדיון ברשומת היומן הבאה?
       button: ביטול המינוי לדיון
   diary_comments:
-    index:
-      title: הערות יומן שנוספו על־ידי %{user}
-      heading: הערות ביומן של %{user}
-      subheading_html: הערות יומן שנוספו על־ידי %{user}
-      no_comments: אין הערות יומן
-    page:
-      post: רשומה
-      when: מתי
-      comment: תגובה
     new:
       heading: להוסיף הערה לדיון ברשומת היומן הבאה?
   doorkeeper:
@@ -762,20 +745,6 @@ he:
       title: הקובץ לא נמצא
       description: איתור קובץ/תיקייה/פעולת API בשם הזה בשרת של OpenStreetMap לא הצליחה
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: להוסיף את %{user} בתור חבר?
-      button: להוסיף כחבר
-      success: '%{name} חבר שלך עכשיו!'
-      failed: מצטערים, הוספת %{name} כחבר נכשלה.
-      already_a_friend: '%{name} כבר חבר שלך.'
-      limit_exceeded: שלחת בקשות חברות רבות לאחרונה. נא להמתין לפני שליחת בקשות חברות
-        נוספות
-    remove_friend:
-      heading: להסיר את %{user} מרשימת החברים?
-      button: להסיר מרשימת החברים
-      success: '%{name} הוסר מרשימת החברים שלך.'
-      not_a_friend: '%{name} אינו אחד מהחברים שלך.'
   geocoder:
     search:
       title:
@@ -1742,14 +1711,10 @@ he:
       footer: ניתן גם לקרוא את ההודעה בכתובת %{readurl} ולשלוח הודעה לשולח דרך %{replyurl}
       footer_html: ניתן גם לקרוא את ההודעה בכתובת %{readurl} ולשלוח הודעה ליוצר דרך
         %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: שלום %{to_user},
-      subject: '[אופן סטריט מאפ OpenStreetMap] נוספת לרשימת החברים של %{user}'
-      had_added_you: '%{user} הוסיף אותך כחבר ב־OpenStreetMap.'
       see_their_profile: באפשרותך לצפות בפרופיל שלו בכתובת %{userurl}.
       see_their_profile_html: באפשרותך לצפות בפרופיל שלו בכתובת %{userurl}.
-      befriend_them: באפשרותך לסמנו כחבר בכתובת %{befriendurl}.
-      befriend_them_html: באפשרותך לסמנו כחבר בכתובת %{befriendurl}.
     gpx_failure:
       hi: שלום %{to_user},
       failed_to_import: 'הייבוא כקובץ מסלול GPS נכשל. נא לוודא שהקובץ שלך הוא קובץ
@@ -1891,14 +1856,17 @@ he:
       back: חזרה
       wrong_user: נכנסת בשם „%{user}”, אבל ההודעה שביקשת לקרוא לא נשלחה לאותו המשתמש.
         נא להיכנס לחשבון הנכון כדי לקרוא אותה.
-    mark:
-      as_read: ההודעה סומנה כהודעה שנקראה
-      as_unread: ההודעה סומנה כהודעה שלא נקראה
-    unmute:
-      notice: הודעה הועברה לדואר הנכנס
-      error: אי־אפשר להעביר את ההודעה לדואר הנכנס.
     destroy:
       destroyed: ההודעה נמחקה
+    read_marks:
+      create:
+        notice: ההודעה סומנה כהודעה שנקראה
+      destroy:
+        notice: ההודעה סומנה כהודעה שלא נקראה
+    mutes:
+      destroy:
+        notice: הודעה הועברה לדואר הנכנס
+        error: אי־אפשר להעביר את ההודעה לדואר הנכנס.
     mailboxes:
       heading:
         my_inbox: תיבת הדואר הנכנס שלי
@@ -2659,13 +2627,14 @@ he:
     offline:
       heading: אחסון GPX בלתי־מקוון
       message: מערכת האחסון וההעלאה של קובצי GPX אינה זמינה עכשיו.
-    georss:
-      title: מסלולי GPS של OpenStreetMap
-    description:
-      description_with_count:
-        one: קובץ GPS עם נקודה אחת מאת %{user}
-        other: קובץ GPS עם %{count} נקודות מאת %{user}
-      description_without_count: קובץ GPS מאת %{user}
+    feeds:
+      show:
+        title: מסלולי GPS של OpenStreetMap
+      description:
+        description_with_count:
+          one: קובץ GPS עם נקודה אחת מאת %{user}
+          other: קובץ GPS עם %{count} נקודות מאת %{user}
+        description_without_count: קובץ GPS מאת %{user}
   application:
     permission_denied: אין לך הרשאה לגשת לפעולה הזאת
     require_cookies:
@@ -2817,7 +2786,6 @@ he:
         privacy_policy_title: מדיניות הפרטיות של OSMF כוללת סעיף על כתובות דוא״ל
         contributor_terms: תנאי התרומה
       continue: הרשמה
-      terms accepted: תודה על קבלת תנאי התרומה החדשים!
       email_help:
         privacy_policy: מדיניות פרטיות
         privacy_policy_title: מדיניות הפרטיות של OSMF כוללת סעיף על כתובות דוא״ל
@@ -2854,8 +2822,6 @@ he:
       edits: עריכות
       traces: מסלולים
       notes: הערות מפה
-      remove as friend: הסרה מרשימת חברים
-      add as friend: הוספה כחבר
       mapper since: 'ממפה מאז:'
       last map edit: 'עריכת מפה אחרונה:'
       no activity yet: עדיין אין פעילות
@@ -2934,6 +2900,15 @@ he:
       user:
         summary_html: '%{name} נוצר מכתובת %{ip_address} ב־%{date}'
         summary_no_ip_html: '%{name} נוצר ב־%{date}'
+    changeset_comments:
+      page:
+        when: מתי
+        comment: תגובה
+    diary_comments:
+      index:
+        title: הערות יומן שנוספו על־ידי %{user}
+      page:
+        post: רשומה
     suspended:
       title: החשבון הושעה
       heading: החשבון הושעה
index 8039883f20647b40c1ab3bfb07a1398b266d7911..3aa0502814a24e7d7c4197aaf9c6b989e6dfa18c 100644 (file)
@@ -251,9 +251,6 @@ hi:
         full: पूरा नोट
   accounts:
     edit:
-      public editing:
-        enabled link text: यह क्या है?
-        disabled link text: मैं नक्षे में बदलाव क्यों नहीं कर पा रहा हूँ?
       contributor terms:
         link text: यह क्या है?
       save changes button: बदलाव सहेजें
@@ -381,7 +378,6 @@ hi:
     index:
       title: चेंजसेट
       title_user: '%{user} द्वारा चेंजसेट'
-      title_friend: मेरे दोस्तों के चेंजसेट
       title_nearby: आस-पास के सदस्यों द्वारा चेंजसेट
       empty: कोई चेंजसेट नहीं मिला।
       empty_area: इस इलाके में कोई चेंजसेट नहीं है।
@@ -415,11 +411,6 @@ hi:
     timeout:
       sorry: माफ़ कीजिए, जिन चेंजसेट की आपने अनुरोध की थी उन्हें लाने में कुछ ज़्यादा
         ही वक्त लग गया।
-  dashboards:
-    popup:
-      friend: दोस्त
-    show:
-      my friends: मेरे मित्र
   diary_entries:
     new:
       title: नई डायरी प्रवेश
@@ -428,7 +419,6 @@ hi:
       use_map_link: नक्शा का इस्तेमाल
     index:
       title: सदस्यों की दैनिकी
-      title_friends: दोस्तों के डायरी
       title_nearby: आस-पास के सदस्यों के डायरी
       user_title: '%{user} की दैनिकी'
       in_language_title: '%{language} में सदस्यों के डायरी'
@@ -483,26 +473,9 @@ hi:
       all:
         title: ओपनस्ट्रीटमैप डायरी एंट्री
         description: ओपनस्ट्रीटमैप के सदस्यों से नई डायरी एंट्रियाँ
-  diary_comments:
-    page:
-      post: पोस्ट
-      when: कब
-      comment: टिप्पणी
   errors:
     contact:
       contact: संपर्क
-  friendships:
-    make_friend:
-      heading: क्या आप %{user} को दोस्त बनाना चाहेते हैं?
-      button: दोस्त बनाएं
-      success: '%{name} अब आपके दोस्त हैं!'
-      failed: माफ़ी चाहते हैं, हम %{name} को दोस्त नहीं बना पाए।
-      already_a_friend: आप पहले से ही %{name} के दोस्त हैं।
-    remove_friend:
-      heading: क्या आप %{user} से दोस्ती तोड़ना चाहते हैं?
-      button: दोस्ती तोड़ें
-      success: '%{name} अब आपके दोस्त नहीं हैं।'
-      not_a_friend: '%{name} आपके दोस्त नहीं हैं।'
   geocoder:
     search:
       title:
@@ -899,10 +872,6 @@ hi:
   user_mailer:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user} ने एक दैनिकी पर प्रतिक्रिया दी'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} ने आपको अपने दोस्तों में शामिल किया है'
-      had_added_you: '%{user} ने आपको OpenStreetMap पर अपने दोस्तों में शामिल किया
-        है।'
     note_comment_notification:
       greeting: नमस्कार,
   messages:
@@ -1035,6 +1004,13 @@ hi:
       page:
         confirm: इन सदस्यों को चुनें
         hide: इन सदस्यों को न दिखाएं
+    changeset_comments:
+      page:
+        when: कब
+        comment: टिप्पणी
+    diary_comments:
+      page:
+        post: पोस्ट
     suspended:
       title: खाता निलंबित
       heading: खाता निलंबित
index b89057001aae4c212183ae85cd43e993c9fd75bb..57cf45a2ef35e5065b771516438614cf24a2bfab 100644 (file)
@@ -235,13 +235,6 @@ hr:
       current email address: Trenutna adresa e-pošte
       openid:
         link text: što je ovo?
-      public editing:
-        heading: Javno uređivanje
-        enabled: Omogućeno. Nije anonimno i mogu se uređivati podaci.
-        enabled link text: što je ovo?
-        disabled: Onemogućno i ne mogu se uređivati podaci, sve prethodne promjene
-          su anonimne.
-        disabled link text: zašto ne mogu uređivati?
       contributor terms:
         heading: Uvjeti doprinositelja
         agreed: Prihvatio/la si nove Uvjete doprinositelja.
@@ -273,6 +266,8 @@ hr:
           france: Francuska
           italy: Italija
           rest_of_world: Ostatak svijeta
+      update:
+        terms accepted: Hvala za prihvaćanje novih pridonositeljskih uvjeta!
   browse:
     version: Inačica
     in_changeset: Set promjena
@@ -376,7 +371,6 @@ hr:
     index:
       title: Setovi promjena
       title_user: Setovi promjena od %{user}
-      title_friend: Setovi promjena mojih prijatelja
       title_nearby: Setovi promjena obližnjih korisnika
       empty: Nisu pronađeni setovi promjena.
       empty_area: Nema setova promjena na ovom području.
@@ -419,14 +413,10 @@ hr:
     popup:
       your location: Vaša lokacija
       nearby mapper: Obližnji maper
-      friend: Prijatelj
     show:
-      my friends: Moji prijatelji
-      no friends: Nisi dodao niti jednog prijatelja.
       nearby users: Drugi korisnici u blizini
       no nearby users: Još uvijek nema drugih korisnika koji kartiraju-mapiraju u
         blizini.
-      friends_changesets: changesetovi prijatelja
   diary_entries:
     new:
       title: Novi zapis u dnevnik
@@ -435,7 +425,6 @@ hr:
       use_map_link: Koristi kartu
     index:
       title: Dnevnici korisnika
-      title_friends: Dnevnici prijatelja
       title_nearby: Dnevnici obližnjih članova
       user_title: '%{user}ov dnevnik'
       in_language_title: 'Zapisi u dnevniku na jeziku: %{language}'
@@ -488,21 +477,6 @@ hr:
       all:
         title: Zapisi u OpenStreetMap dnevniku
         description: Nedavni zapisi u dnevnik korisnika OpenStreetMapa
-  diary_comments:
-    page:
-      post: Pošalji
-      when: Kada
-      comment: Komentar
-  friendships:
-    make_friend:
-      heading: Dodaj %{user} kao prijatelja?
-      button: Dodaj u prijatelje
-      success: '%{name} je sada tvoj prijatelj!'
-      failed: Žao mi je, nije uspjelo dodavanje %{name} kao prijatelja.
-      already_a_friend: Već jesi prijatelj s %{name}.
-    remove_friend:
-      success: '%{name} je izbačen iz prijatelja.'
-      not_a_friend: '%{name} nije tvoj prijatelj.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1047,11 +1021,8 @@ hr:
     message_notification:
       hi: Bok %{to_user},
       header: '%{from_user} ti je poslao poruku preko OpenStreetMap sa predmetom %{subject}:'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} te je dodao kao prijatelja'
-      had_added_you: '%{user} te je dodao kao prijatelja na OpenStreetMap-u.'
+    follow_notification:
       see_their_profile: Možeš vidjeti njihov profil na %{userurl}.
-      befriend_them: Također, možete ih dodati kao prijatelja na %{befriendurl}.
     gpx_failure:
       failed_to_import: 'Import nije uspio. Ovdje je greška:'
       subject: '[OpenStreetMap] GPX Import nije uspio'
@@ -1128,11 +1099,13 @@ hr:
       wrong_user: 'Prijavljeni ste kao: `%{user}'', ali poruka za koju ste zamoljeni
         da pročitate nije poslana od ili prema tom korisniku. Molimo, prijavite se
         kao ispravan korisnik kako bi ste pročitali.'
-    mark:
-      as_read: Poruka označena pročitanom
-      as_unread: Poruka označena nepročitanom
     destroy:
       destroyed: Poruka obrisana
+    read_marks:
+      create:
+        notice: Poruka označena pročitanom
+      destroy:
+        notice: Poruka označena nepročitanom
     mailboxes:
       heading:
         my_inbox: Dolazna pošta
@@ -1492,10 +1465,11 @@ hr:
     offline:
       heading: GPX spremište Offline
       message: Sustav za GPX spremanje i upload trenutno nisu u funkciji.
-    georss:
-      title: OpenStreetMap GNSS tragovi
-    description:
-      description_without_count: GPX datoteka od %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GNSS tragovi
+      description:
+        description_without_count: GPX datoteka od %{user}
   application:
     require_cookies:
       cookies_needed: Čini se da su vam cookie-i onemogućeni, molim omogućite cookie
@@ -1532,7 +1506,6 @@ hr:
       display name description: Javno prikazano korisničko ime. Možete ga promjeniti
         i kasnije u postavkama.
       continue: Otvori račun
-      terms accepted: Hvala za prihvaćanje novih pridonositeljskih uvjeta!
       use external auth: Alternativno, koristite drugi servis za prijavljivanje
     no_such_user:
       title: Nema takvog korisnika
@@ -1556,8 +1529,6 @@ hr:
       edits: Promjene
       traces: Tragovi
       notes: Bilješke karte
-      remove as friend: Prekini prijateljstvo
-      add as friend: Dodaj prijatelja
       mapper since: 'Maper od:'
       ct status: 'Uvjeti doprinositelja:'
       ct undecided: Neopredjeljen
@@ -1609,6 +1580,13 @@ hr:
       user:
         summary_html: '%{name} napravljeno sa %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
+    changeset_comments:
+      page:
+        when: Kada
+        comment: Komentar
+    diary_comments:
+      page:
+        post: Pošalji
     suspended:
       title: Račun suspendiran
       heading: Račun suspendiran
index e8563df2da7fb0f7cd972dfce6f02eb5246caf03..948af6ff266f96e71dd6444a3e4b82afd3998c0b 100644 (file)
@@ -267,13 +267,6 @@ hsb:
       external auth: Eksterna awtentifikacija
       openid:
         link text: Što to je?
-      public editing:
-        heading: Zjawne wobdźěłowanje
-        enabled: Zmóžnjene. Nic anonymne a daty hodźa so wobdźěłać.
-        enabled link text: Što to je?
-        disabled: Znjemóžnjeny a daty njehodźa so wobdźěłać, wšě prjedawše změny su
-          anonymne.
-        disabled link text: čehodla njemóžu wobdźěłać?
       contributor terms:
         heading: Wuměnjenja za sobuskutkowarjow
         agreed: Sy do nowych wuměnjenjow za sobuskutkowarjow zwolił.
@@ -316,7 +309,6 @@ hsb:
           za powšitkownosći wužitne.
         consider_pd_why: Što to je?
         continue: Dale
-        declined: https://wiki.openstreetmap.org/wiki/DE:Contributor_Terms_Declined
         you need to accept or decline: Prošu přečitaj nowe wužiwarske wuměnjenja a
           akceptuj abo wotpokazaj je, prjedy hač dale činiš.
         legale_select: 'Prošu wubjer kraj swojeho bydlišća:'
@@ -324,6 +316,8 @@ hsb:
           france: Francoska
           italy: Italska
           rest_of_world: Zbytk swěta
+      update:
+        terms accepted: Dźakujemy so, zo sy nowe wuměnjenja za sobuskutkowarjow akceptował!
       terms_declined_flash:
         terms_declined_html: Wobžarujemy, zo sy so rozsudźił, nowe wuměnjenja za sobuskutkowarjow
           njeakceptować. Za dalše informacije hlej prošu %{terms_declined_link}.
@@ -445,7 +439,6 @@ hsb:
     index:
       title: Sadźby změnow
       title_user: Sadźby změnow wot %{user}
-      title_friend: Změny mojich přećelow
       title_nearby: Sadźby změnow wužiwarjow w bliskosći
       empty: Žane sadźby změnow namakane.
       empty_area: Žane sadźby změnow w tutej kónčinje.
@@ -460,10 +453,6 @@ hsb:
         created: Wutworjeny
         closed: 'Začinjeny:'
         belongs_to: Awtor
-    subscribe:
-      button: Diskusiju abonować
-    unsubscribe:
-      button: Diskusiju wotskazać
     show:
       title: 'Sadźba změnow: %{id}'
       created: 'Wutworjeny: %{when}'
@@ -494,6 +483,12 @@ hsb:
       relations_paginated: Relacije (%{x}-%{y} z %{count})
     timeout:
       sorry: Bohužel je předołho trało, požadanu lisćinu změnow wotwołać.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        button: Diskusiju abonować
+      unsubscribe:
+        button: Diskusiju wotskazać
   dashboards:
     contact:
       km away: '%{count} km zdaleny'
@@ -502,18 +497,13 @@ hsb:
     popup:
       your location: Twoje městno
       nearby mapper: Kartěrowar w bliskosći
-      friend: Přećel
     show:
       title: Moja přehladna strona
       no_home_location_html: '%{edit_profile_link} a nastaj swoje ródne město, zo
         by wužiwarjow w bliskosći widźał.'
       edit_your_profile: Wobdźěłaj swój profil
-      my friends: Moji přećeljo
-      no friends: Hišće njejsy přećelow přidał.
       nearby users: Druzy wužiwarjo w bliskosći
       no nearby users: Njejsu druzy wužiwarjo, kotřiž w bliskosći kartěruja.
-      friends_changesets: Sadźby změnow twojich přećelow
-      friends_diaries: Dźenikowe zapiski přećelow
       nearby_changesets: sadźby změnow wužiwarjow w bliskosći
       nearby_diaries: dźenikowe zapiski wužiwarjow w bliskosći
   diary_entries:
@@ -524,7 +514,6 @@ hsb:
       use_map_link: Kartu wužiwać
     index:
       title: Wužiwarske dźeniki
-      title_friends: Dźeniki přećelow
       title_nearby: Dźeniki wužiwarjow w bliskosći
       user_title: dźenik wužiwarja %{user}
       in_language_title: Dźenikowe zapiski w rěči %{language}
@@ -588,16 +577,6 @@ hsb:
       button: Diskusiju abonować
     unsubscribe:
       button: Diskusiju wotskazać
-  diary_comments:
-    index:
-      title: Dźenikowe komentary přidate wot wužiwarja %{user}
-      heading: Dźenikowe komentary wot wužiwarja %{user}
-      subheading_html: Dźenikowe komentary přidate wot wužiwarja %{user}
-      no_comments: Žane dźenikowe komentary
-    page:
-      post: Zapisk
-      when: Hdy
-      comment: Komentar
   doorkeeper:
     flash:
       applications:
@@ -617,20 +596,6 @@ hsb:
       title: Nałoženski zmylk
     not_found:
       title: Dataja njeje so namakała
-  friendships:
-    make_friend:
-      heading: '%{user} jako přećela přidać?'
-      button: Jako přećela přidać
-      success: '%{name} je nětko twój přećel!'
-      failed: Wodaj, %{name} njeda so jako přećel přidać.
-      already_a_friend: Sy hižo přećel wužiwarja %{name}.
-      limit_exceeded: Sy so njedawno z wjele přećelemi spřećeliłm prošu dočakaj chwilku,
-        prjedy hač pospytuješ dalšich přećelow namakać.
-    remove_friend:
-      heading: '%{user} jako přećela wotstronić?'
-      button: Přećela wotstronić
-      success: '%{name} je so jako přećel wotstronił.'
-      not_a_friend: '%{name} twój přećel njeje.'
   geocoder:
     search:
       title:
@@ -1530,14 +1495,10 @@ hsb:
       footer: Móžeš tež powěsć na %{readurl} čitać a móžeš awtorej powěsć na %{replyurl}
         pósłać
       footer_html: Móžeš powěsć tež pod %{readurl} čitać a pod %{replyurl} wotmołwić
-    friendship_notification:
+    follow_notification:
       hi: Witaj %{to_user},
-      subject: '[OpenStreetMap] %{user} je će jako přećela přidał'
-      had_added_you: '%{user} je će na OpenStreetMap jako přećela přidał.'
       see_their_profile: Móžeš sej jeho abo jeje profil na %{userurl} wobhladać.
       see_their_profile_html: Móžeš sej jeho abo jeje profil na %{userurl} wobhladać.
-      befriend_them: Móžeš jeho/nju na %{befriendurl} jako přećela přidać.
-      befriend_them_html: Móžeš jeho/ju na %{befriendurl} jako přećela přidać.
     gpx_failure:
       hi: Witaj %{to_user},
       failed_to_import: 'njemóhło so importować. Zmylk je:'
@@ -1679,11 +1640,13 @@ hsb:
       back: Wróćo
       wrong_user: Sy jako `%{user}' přizjewjeny, ale powěsć, kotruž chceš čitać, bu
         na druheho wužiwarja pósłana. Prošu přizjew so z prawym kontom, zo by ju čitał(a).
-    mark:
-      as_read: Powěsć jako přečitanu markěrowana
-      as_unread: Powěsć jako njepřečitanu markěrowana
     destroy:
       destroyed: Powěsć wotstronjena
+    read_marks:
+      create:
+        notice: Powěsć jako přečitanu markěrowana
+      destroy:
+        notice: Powěsć jako njepřečitanu markěrowana
     mailboxes:
       heading:
         my_inbox: Moja póšta
@@ -2210,15 +2173,16 @@ hsb:
       heading: Składowanje offline GPX
       message: Składowanje a nahrawanski system GPX-datajow tuchwilu k dispoziciji
         steji.
-    georss:
-      title: OpenStreetMap GPS-slědy
-    description:
-      description_with_count:
-        few: GPX-dataja z %{count} dypkami wot %{user}
-        one: GPX-dataja z %{count} dypkom wot %{user}
-        two: GPX-dataja z %{count} dypkomaj wot %{user}
-        other: GPX-dataja z %{count} dypkami wot %{user}
-      description_without_count: GPX-dataja wot %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-slědy
+      description:
+        description_with_count:
+          few: GPX-dataja z %{count} dypkami wot %{user}
+          one: GPX-dataja z %{count} dypkom wot %{user}
+          two: GPX-dataja z %{count} dypkomaj wot %{user}
+          other: GPX-dataja z %{count} dypkami wot %{user}
+        description_without_count: GPX-dataja wot %{user}
   application:
     require_cookies:
       cookies_needed: Zda so, zo maš placki znjemóžnjene - prošu zmóžń placki w swojim
@@ -2318,7 +2282,6 @@ hsb:
       by_signing_up:
         privacy_policy: prawidła priwatnosće
       continue: Registrować
-      terms accepted: Dźakujemy so, zo sy nowe wuměnjenja za sobuskutkowarjow akceptował!
       use external auth: Jako alternatiwa wužij třeću stronu za přizjewjenje
     no_such_user:
       title: Wužiwar njeeksistuje
@@ -2347,8 +2310,6 @@ hsb:
       edits: Změny
       traces: Ćěrje
       notes: Pokazki
-      remove as friend: Přećela wotstronić
-      add as friend: Přećela přidać
       mapper since: 'Kartěrowar wot:'
       uid: 'Wužiwarski ID:'
       ct status: 'Wuměnjenja za sobuskutkowarjow:'
@@ -2412,6 +2373,15 @@ hsb:
       user:
         summary_html: '%{name} wot %{ip_address} dnja %{date} wutworjeny'
         summary_no_ip_html: '%{name} dnja %{date} wutworjeny'
+    changeset_comments:
+      page:
+        when: Hdy
+        comment: Komentar
+    diary_comments:
+      index:
+        title: Dźenikowe komentary přidate wot wužiwarja %{user}
+      page:
+        post: Zapisk
     suspended:
       title: Konto wupowědźene
       heading: Konto wupowědźene
index f48a7bf0cd031fe941e68f8309787e4f02433be6..372f7faae3a6a438acb72711fd85a45f26c35b14 100644 (file)
@@ -279,13 +279,6 @@ hu:
       external auth: Külső hitelesítés
       openid:
         link text: mi ez?
-      public editing:
-        heading: Nyilvános szerkesztés
-        enabled: Engedélyezve. Nem vagy névtelen, így szerkesztheted az adatokat.
-        enabled link text: mi ez?
-        disabled: Tiltva, így nem szerkesztheted az adatokat, az összes eddigi szerkesztés
-          névtelen.
-        disabled link text: miért nem tudok szerkeszteni?
       contributor terms:
         heading: Hozzájárulási feltételek
         agreed: Elfogadtad az új közreműködési feltételeket.
@@ -372,6 +365,8 @@ hu:
           france: Franciaország
           italy: Olaszország
           rest_of_world: A világ többi része
+      update:
+        terms accepted: Köszönjük, hogy elfogadtad az új közreműködési feltételeket!
       terms_declined_flash:
         terms_declined_html: Sajnáljuk, hogy úgy döntöttél, nem fogadod el az új közreműködési
           feltételeket. További információkért lásd %{terms_declined_link}.
@@ -420,7 +415,7 @@ hu:
         way: 'Vonal:'
         relation: 'Kapcsolat:'
     containing_relation:
-      entry_role_html: '%{relation_name} kapcsolat (mint %{relation_role})'
+      entry_role_html: '%{relation_name} (mint %{relation_role})'
     not_found:
       title: Nem található
     timeout:
@@ -474,6 +469,8 @@ hu:
       view_redacted_data: Módosított előzményeket megtekintése
       view_redaction_message: Adattörlési üzenet megtekintése
   nodes:
+    not_found_message:
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú pont nem található.
     timeout:
       sorry: Sajnáljuk, a(z) %{id} azonosítójú pont adatainak lekérése túl sokáig
         tartott.
@@ -484,6 +481,8 @@ hu:
       sorry: Sajnáljuk, a(z) %{id} azonosítójú pont előzményeinek lekérése túl sokáig
         tartott.
   ways:
+    not_found_message:
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú vonal nem található.
     timeout:
       sorry: Sajnáljuk, a %{id} azonosítójú úthoz tartozó adatok lekérése túl sokáig
         tartott.
@@ -494,6 +493,8 @@ hu:
       sorry: Sajnáljuk, a(z) %{id} azonosítójú út előzményeinek lekérése túl sokáig
         tartott.
   relations:
+    not_found_message:
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú kapcsolat nem található.
     timeout:
       sorry: Sajnáljuk, a %{id} azonosítójú reláció adatainak lekérése túl sokáig
         tartott.
@@ -523,7 +524,6 @@ hu:
       title: Módosításcsomagok
       title_user: '%{user} módosításcsomagjai'
       title_user_link_html: '%{user_link} módosításcsomagjai'
-      title_friend: Ismerősök módosításcsomagjai
       title_nearby: Közeli felhasználók módosításcsomagjai
       empty: Nem található módosításcsomag.
       empty_area: Ezen a területen nincs módosításcsomag.
@@ -538,19 +538,6 @@ hu:
         created: Létrehozva
         closed: Lezárva
         belongs_to: Szerző
-    subscribe:
-      heading: Feliratkozol a következő módosításcsomag-megbeszélésére?
-      button: Feliratkozás a megbeszélésre
-    unsubscribe:
-      heading: Leiratkozol a következő módosításcsomag-megbeszéléséről?
-      button: Leiratkozás a megbeszélésről
-    heading:
-      title: '%{id} számú módosításcsomag'
-      created_by_html: 'Létrehozta: %{link_user} (%{created}).'
-    no_such_entry:
-      heading: Nincs %{id} azonosítójú naplóbejegyzés
-      body: Sajnáljuk, nincs %{id} azonosítójú módosításcsomag. Ellenőrizd, hogy jól
-        írtad-e. Az is lehet, hogy rossz linkre kattintottál.
     show:
       title: 'Módosításcsomag: %{id}'
       created: 'Létrehozva: %{when}'
@@ -579,9 +566,26 @@ hu:
       ways_paginated: 'Vonalak (%{x}-%{y} ennyiből: %{count})'
       relations: Kapcsolatok (%{count})
       relations_paginated: 'Kapcsolatok (%{x}-%{y} ennyiből: %{count})'
+    not_found_message:
+      sorry: Sajnáljuk, a(z) %{id} azonosítójú módosításcsomag nem található.
     timeout:
       sorry: Sajnáljuk, az általad kért módosításcsomagok listájának lekérése túl
         sokáig tartott.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Feliratkozol a következő módosításcsomag-megbeszélésére?
+        button: Feliratkozás a megbeszélésre
+      unsubscribe:
+        heading: Leiratkozol a következő módosításcsomag-megbeszéléséről?
+        button: Leiratkozás a megbeszélésről
+    heading:
+      title: '%{id} számú módosításcsomag'
+      created_by_html: 'Létrehozta: %{link_user} (%{created}).'
+    no_such_entry:
+      heading: Nincs %{id} azonosítójú naplóbejegyzés
+      body: Sajnáljuk, nincs %{id} azonosítójú módosításcsomag. Ellenőrizd, hogy jól
+        írtad-e. Az is lehet, hogy rossz linkre kattintottál.
   dashboards:
     contact:
       km away: '%{count} km távolságra'
@@ -590,19 +594,14 @@ hu:
     popup:
       your location: Helyed
       nearby mapper: Közeli térképszerkesztő
-      friend: Ismerős
     show:
       title: Irányítópult
       no_home_location_html: '%{edit_profile_link}, és add meg az otthoni tartózkodási
         helyed, hogy lásd a közeli felhasználókat.'
       edit_your_profile: Szerkeszd a profilodat
-      my friends: Ismerősök
-      no friends: Még nem adtál meg egyetlen ismerőst sem.
       nearby users: További közeli felhasználók
       no nearby users: Még nincsenek más felhasználók, akik megadták, hogy a közelben
         szerkesztenek.
-      friends_changesets: ismerősök módosításcsomagjai
-      friends_diaries: ismerősök naplóbejegyzései
       nearby_changesets: közeli felhasználók módosításcsomagjai
       nearby_diaries: közeli felhasználók naplóbejegyzései
   diary_entries:
@@ -613,7 +612,6 @@ hu:
       use_map_link: térkép használata
     index:
       title: Felhasználók naplói
-      title_friends: Ismerősök naplói
       title_nearby: Közeli felhasználók naplói
       user_title: '%{user} naplója'
       in_language_title: Naplóbejegyzések %{language} nyelven
@@ -680,15 +678,6 @@ hu:
       heading: Leiratkozol a következő naplóbejegyzés-megbeszélésről?
       button: Leiratkozás a megbeszélésről
   diary_comments:
-    index:
-      title: '%{user} naplóhozzászólásai'
-      heading: '%{user} naplóhozzászólásai'
-      subheading_html: '%{user} naplóhozzászólásai'
-      no_comments: Nincs naplóhozzászólás
-    page:
-      post: Bejegyzés
-      when: Mikor
-      comment: Hozzászólás
     new:
       heading: Hozzáfűzől egy megjegyzést a következő naplóhozzászóláshoz?
   doorkeeper:
@@ -746,20 +735,6 @@ hu:
       title: A fájl nem található
       description: Nem található ilyen nevű fájl/könyvtár/API-művelet az OpenStreetMap
         szerveren (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} hozzáadása ismerősként?'
-      button: Hozzáadás ismerősként
-      success: '%{name} mostantól az ismerősöd.'
-      failed: Sajnáljuk, sikertelen volt %{name} felvétele ismerősnek.
-      already_a_friend: '%{name} már az ismerősöd.'
-      limit_exceeded: Sok felhasználóval barátkoztál az utóbbi időben. Kérjük, várj
-        egy kicsit, mielőtt további ismerősöket próbálnál találni.
-    remove_friend:
-      heading: '%{user} eltávolítása az ismerőseid közül?'
-      button: Ismerős eltávolítása
-      success: '%{name} eltávolítva az ismerőseid közül.'
-      not_a_friend: '%{name} nem tartozik az ismerőseid közé.'
   geocoder:
     search:
       title:
@@ -1094,6 +1069,8 @@ hu:
           wayside_shrine: Út menti kegyhely
           wreck: Hajóroncs
           "yes": Történelmi hely
+        information:
+          map: Térkép
         junction:
           "yes": Csomópont
         landuse:
@@ -1699,14 +1676,15 @@ hu:
         a szerzőnek (%{replyurl}).
       footer_html: 'Az üzenet a %{readurl} címen is elolvashatod, vagy válaszolhatsz
         rá itt: %{replyurl}'
-    friendship_notification:
+    follow_notification:
       hi: Szia %{to_user}!
-      subject: '[OpenStreetMap] %{user} felvett az ismerősei közé'
-      had_added_you: '%{user} felvett az ismerősei közé az OpenStreetMapen.'
       see_their_profile: 'Megnézheted a profilját itt: %{userurl}.'
       see_their_profile_html: 'A felhasználó profilját megtekintheti itt: %{userurl}'
-      befriend_them: 'Te is hozzáadhatod ismerősként itt: %{befriendurl}.'
-      befriend_them_html: 'Te is hozzáadhatod ismerősként itt: %{befriendurl}'
+    gpx_details:
+      filename: Fájlnév
+      url: URL
+      description: Leírás
+      tags: Címkék
     gpx_failure:
       hi: Szia %{to_user}!
       failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Ellenőrizd,
@@ -1858,14 +1836,17 @@ hu:
       wrong_user: „%{user}” néven jelentkeztél be, de az üzenetet, amelyet el szeretnél
         olvasni, nem ez a felhasználó küldte vagy kapta. Az elolvasásához jelentkezz
         be a helyes felhasználónévvel.
-    mark:
-      as_read: Üzenet megjelölve olvasottként
-      as_unread: Üzenet megjelölve olvasatlanként
-    unmute:
-      notice: Az üzenet átkerült a Beérkezett üzenetek mappába
-      error: Az üzenetet nem sikerült áthelyezni a Beérkezett üzenetek mappába.
     destroy:
       destroyed: Üzenet törölve
+    read_marks:
+      create:
+        notice: Üzenet megjelölve olvasottként
+      destroy:
+        notice: Üzenet megjelölve olvasatlanként
+    mutes:
+      destroy:
+        notice: Az üzenet átkerült a Beérkezett üzenetek mappába
+        error: Az üzenetet nem sikerült áthelyezni a Beérkezett üzenetek mappába.
     mailboxes:
       heading:
         my_inbox: Beérkezett üzenetek
@@ -2628,11 +2609,12 @@ hu:
     offline:
       heading: A GPX-tároló offline
       message: A GPX-fájltároló és -feltöltő rendszer jelenleg nem érhető el.
-    georss:
-      title: OpenStreetMap GPS-nyomvonalak
-    description:
-      description_with_count: '%{user} GPX fájlja %{count} ponttal'
-      description_without_count: GPX fájl %{user} felhasználótól
+    feeds:
+      show:
+        title: OpenStreetMap GPS-nyomvonalak
+      description:
+        description_with_count: '%{user} GPX fájlja %{count} ponttal'
+        description_without_count: GPX fájl %{user} felhasználótól
   application:
     permission_denied: Nincs megfelelő jogosultságod a művelet végrehajtásához
     require_cookies:
@@ -2672,6 +2654,28 @@ hu:
       wikipedia:
         title: Bejelentkezés Wikipédiával
         alt: Wikipédia logó
+    share:
+      email:
+        title: Megosztás e-mailben
+        alt: E-mail ikon
+      bluesky:
+        title: Megosztás Bluesky-on
+        alt: Bluesky ikon
+      facebook:
+        title: Megosztás Facebookon
+        alt: Facebook ikon
+      linkedin:
+        title: Megosztás LinkedInen
+        alt: LinkedIn ikon
+      mastodon:
+        title: Megosztás Mastodonon
+        alt: Mastodon ikon
+      telegram:
+        title: Megosztás Telegramon
+        alt: Telegram ikon
+      x:
+        title: Megosztás X-en
+        alt: X ikon
   oauth:
     permissions:
       missing: Nem engedted meg az alkalmazás számára, hogy hozzáférjen ehhez a létesítményhez
@@ -2773,7 +2777,6 @@ hu:
           címekről szóló részt
         contributor_terms: közreműködői feltételek
       continue: Regisztráció
-      terms accepted: Köszönjük, hogy elfogadtad az új közreműködési feltételeket!
       email_help:
         privacy_policy: adatvédelmi irányelvek
         privacy_policy_title: Az OSMF adatvédelmi szabályzata, beleértve az e-mail
@@ -2812,8 +2815,6 @@ hu:
       edits: Szerkesztések
       traces: Nyomvonalak
       notes: Térképjegyzetek
-      remove as friend: Ismerős eltávolítása
-      add as friend: Felvétel ismerősnek
       mapper since: 'Térképszerkesztő ezóta:'
       last map edit: 'Legutóbbi térképszerkesztés:'
       no activity yet: Még nincs tevékenység
@@ -2889,6 +2890,15 @@ hu:
       user:
         summary_html: '%{name} létrejött innen: %{ip_address}, ekkor: %{date}'
         summary_no_ip_html: '%{name} letrejött ekkor: %{date}'
+    changeset_comments:
+      page:
+        when: Mikor
+        comment: Hozzászólás
+    diary_comments:
+      index:
+        title: '%{user} naplóhozzászólásai'
+      page:
+        post: Bejegyzés
     suspended:
       title: Felhasználói fiók felfüggesztve
       heading: Felhasználói fiók felfüggesztve
index 010667d7b22ef477c5617cb80a09679da8097359..90dcb1bffb1aca29170370cdc29702076a4b3b5a 100644 (file)
@@ -89,7 +89,7 @@ ia:
         support_url: URl de supporto
         allow_read_prefs: leger su preferentias de usator
         allow_write_prefs: modificar su preferentias de usator
-        allow_write_diary: crear entratas de diario, commentos e adder amicos
+        allow_write_diary: crear entratas de diario e commentos
         allow_write_api: modificar le carta
         allow_read_gpx: leger su tracias GPS private
         allow_write_gpx: incargar tracias GPS
@@ -252,13 +252,6 @@ ia:
       external auth: Authentication externe
       openid:
         link text: que es isto?
-      public editing:
-        heading: Modification public
-        enabled: Activate. Non anonyme e pote modificar datos.
-        enabled link text: que es isto?
-        disabled: Disactivate e non pote modificar datos, tote le previe modificationes
-          es anonyme.
-        disabled link text: proque non pote io modificar?
       contributor terms:
         heading: Conditiones de contributor
         agreed: Tu ha acceptate le nove Conditiones de Contributor.
@@ -341,7 +334,6 @@ ia:
         readable_summary: summario legibile per humanos
         informal_translations: traductiones informal
         continue: Continuar
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Cancellar
         you need to accept or decline: Per favor lege e postea accepta o declina le
           nove Conditiones del Contributor pro continuar.
@@ -350,6 +342,8 @@ ia:
           france: Francia
           italy: Italia
           rest_of_world: Resto del mundo
+      update:
+        terms accepted: Gratias pro acceptar le nove conditiones de contributor!
       terms_declined_flash:
         terms_declined_html: Nos regretta que tu ha decidite de non acceptar le nove
           Conditiones de contributor. Pro plus informationes, per favor vide %{terms_declined_link}.
@@ -509,7 +503,7 @@ ia:
       title: Gruppos de modificationes
       title_user: Gruppos de modificationes facite per %{user}
       title_user_link_html: Gruppos de modificationes facite per %{user_link}
-      title_friend: Gruppos de modificationes facite per mi amicos
+      title_followed: Gruppos de modificationes de personas que tu seque
       title_nearby: Gruppos de modificationes facite per usatores vicin
       empty: Nulle gruppo de modificationes trovate.
       empty_area: Nulle gruppo de modificationes in iste area.
@@ -524,19 +518,6 @@ ia:
         created: Create a
         closed: Claudite a
         belongs_to: Autor
-    subscribe:
-      heading: Abonar te al sequente discussion de gruppo de modificationes?
-      button: Abonar te al discussion
-    unsubscribe:
-      heading: Disabonar te del sequente discussion de gruppo de modificationes?
-      button: Disabonar te del discussion
-    heading:
-      title: Gruppo de modificationes %{id}
-      created_by_html: Create per %{link_user} le %{created}.
-    no_such_entry:
-      heading: 'Nulle entrata con le ID: %{id}'
-      body: Non existe un gruppo de modificationes con le ID %{id}. Per favor verifica
-        le orthographia, o pote esser que le ligamine que tu sequeva es incorrecte.
     show:
       title: 'Gruppo de modificationes: %{id}'
       created: 'Create: %{when}'
@@ -570,6 +551,21 @@ ia:
     timeout:
       sorry: Le lista de gruppos de modificationes que tu requestava tardava troppo
         de tempore pro esser recuperate.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Abonar te al sequente discussion de gruppo de modificationes?
+        button: Abonar te al discussion
+      unsubscribe:
+        heading: Disabonar te del sequente discussion de gruppo de modificationes?
+        button: Disabonar te del discussion
+    heading:
+      title: Gruppo de modificationes %{id}
+      created_by_html: Create per %{link_user} le %{created}.
+    no_such_entry:
+      heading: 'Nulle entrata con le ID: %{id}'
+      body: Non existe un gruppo de modificationes con le ID %{id}. Per favor verifica
+        le orthographia, o pote esser que le ligamine que tu sequeva es incorrecte.
   dashboards:
     contact:
       km away: a %{count} km de distantia
@@ -578,18 +574,18 @@ ia:
     popup:
       your location: Tu position
       nearby mapper: Cartographo vicin
-      friend: Amico
+      following: Tu seque
     show:
       title: Mi pannello
       no_home_location_html: '%{edit_profile_link} e defini tu loco de residentia
         pro vider le usatores a proximitate.'
       edit_your_profile: Modifica tu profilo
-      my friends: Mi amicos
-      no friends: Tu non ha ancora addite alcun amico.
+      followings: Personas que tu seque
+      no followings: Tu non ancora seque alcun usator.
       nearby users: Altere usatores vicin
       no nearby users: Il non ha ancora altere cartographos in le vicinitate.
-      friends_changesets: gruppos de modificationes de tu amicos
-      friends_diaries: articulos de diario de tu amicos
+      followed_changesets: gruppos de modificationes
+      followed_diaries: entratas de diario
       nearby_changesets: gruppos de modificationes de usatores a proximitate
       nearby_diaries: articulos de diario per usatores a proximitate
   diary_entries:
@@ -600,7 +596,7 @@ ia:
       use_map_link: Usar le carta
     index:
       title: Diarios de usatores
-      title_friends: Diarios de amicos
+      title_followed: Diarios de personas que tu seque
       title_nearby: Diarios de usatores vicin
       user_title: Diario de %{user}
       in_language_title: Entratas de diario in %{language}
@@ -666,15 +662,6 @@ ia:
       heading: Disabonar te del sequente discussion de entrata de diario?
       button: Disabonar te del discussion
   diary_comments:
-    index:
-      title: Commentos de diario addite per %{user}
-      heading: Commento de diario de %{user}
-      subheading_html: Commentos de diario addite per %{user}
-      no_comments: Nulle commento de diario
-    page:
-      post: Articulo
-      when: Quando
-      comment: Commento
     new:
       heading: Adder un commento al sequente discussion de entrata de diario?
   doorkeeper:
@@ -734,20 +721,23 @@ ia:
       title: File non trovate
       description: Non poteva trovar un file, directorio o operation API con iste
         nomine sur le servitor de OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Adder %{user} como amico?
-      button: Adder como amico
-      success: '%{name} es ora tu amico!'
-      failed: Pardono, non poteva adder %{name} como amico.
-      already_a_friend: Tu es ja amico de %{name}.
-      limit_exceeded: Tu ha addite multe personas al lista de amicos recentemente.
-        Per favor attende un momento ante de tentar adder alteres.
-    remove_friend:
-      heading: Remover %{user} como amico?
-      button: Remover amico
-      success: '%{name} ha essite removite de tu amicos.'
-      not_a_friend: '%{name} non es un de tu amicos.'
+  follows:
+    show:
+      follow:
+        heading: Vole tu sequer %{user}?
+        button: Sequer usator
+      unfollow:
+        heading: Vole tu cessar de sequer %{user}?
+        button: Non plus sequer le usator
+    create:
+      success: Tu ora seque %{name}!
+      failed: Regrettabilemente, le requesta de sequer %{name} ha fallite.
+      already_followed: Tu ja seque %{name}.
+      limit_exceeded: Tu ha comenciate a sequer multe personas recentemente. Per favor
+        attende un momento ante de tentar sequer alteres.
+    destroy:
+      success: Tu ha cessate de sequer %{name}.
+      not_followed: Tu non seque %{name}.
   geocoder:
     search:
       title:
@@ -1511,6 +1501,9 @@ ia:
           pond: Stagno
           reservoir: Reservoir
           basin: Bassino de aqua
+          fishpond: Stagno de pisces
+          lagoon: Laguna
+          wastewater: Aqua residual
         waterway:
           artificial: Via aquatic artificial
           boatyard: Cantier naval
@@ -1709,14 +1702,10 @@ ia:
         al autor sur %{replyurl}
       footer_html: Tu pote etiam leger le message a %{readurl} e tu pote inviar un
         message al autor a %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Salute %{to_user},
-      subject: '[OpenStreetMap] %{user} te ha addite como amico'
-      had_added_you: '%{user} te ha addite como amico in OpenStreetMap.'
       see_their_profile: Tu pote vider su profilo a %{userurl}.
       see_their_profile_html: Tu pote vider su profilo a %{userurl}.
-      befriend_them: Tu pote equalmente adder le/la como amico a %{befriendurl}.
-      befriend_them_html: Tu pote equalmente adder le/la como amico a %{befriendurl}.
     gpx_failure:
       hi: Salute %{to_user},
       failed_to_import: Pare que tu file non poteva esser importate como file de tracia
@@ -1872,14 +1861,17 @@ ia:
       wrong_user: Tu es authenticate como ‘%{user}’, ma le message que tu vole leger
         non ha essite inviate per o a iste usator. Per favor aperi session como le
         usator correcte pro poter leger lo.
-    mark:
-      as_read: Message marcate como legite
-      as_unread: Message marcate como non legite
-    unmute:
-      notice: Le message ha essite displaciate al cassa de entrata
-      error: Le message non poteva esser displaciate al cassa de entrata.
     destroy:
       destroyed: Message delite
+    read_marks:
+      create:
+        notice: Message marcate como legite
+      destroy:
+        notice: Message marcate como non legite
+    mutes:
+      destroy:
+        notice: Le message ha essite displaciate al cassa de entrata
+        error: Le message non poteva esser displaciate al cassa de entrata.
     mailboxes:
       heading:
         my_inbox: Mi cassa de entrata
@@ -2645,13 +2637,14 @@ ia:
     offline:
       heading: Immagazinage GPX foras de linea
       message: Le systema pro immagazinar e incargar files GPX es actualmente indisponibile.
-    georss:
-      title: Tracias GPS de OpenStreetMap
-    description:
-      description_with_count:
-        one: File GPX con %{count} puncto de %{user}
-        other: File GPX con %{count} punctos de %{user}
-      description_without_count: File GPX de %{user}
+    feeds:
+      show:
+        title: Tracias GPS de OpenStreetMap
+      description:
+        description_with_count:
+          one: File GPX con %{count} puncto de %{user}
+          other: File GPX con %{count} punctos de %{user}
+        description_without_count: File GPX de %{user}
   application:
     permission_denied: Tu non ha le permission de acceder a iste action
     require_cookies:
@@ -2698,7 +2691,7 @@ ia:
       openid: Aperir session con OpenStreetMap
       read_prefs: Leger preferentias de usator
       write_prefs: Modificar preferentias de usator
-      write_diary: Crear entratas de diario, commentos e adder amicos
+      write_diary: Crear entratas de diario e commentos
       write_api: Modificar le carta
       read_gpx: Leger tracias GPS private
       write_gpx: Incargar tracias GPS
@@ -2791,7 +2784,6 @@ ia:
           sur adresses de e-mail
         contributor_terms: conditiones de contributor
       continue: Crear conto
-      terms accepted: Gratias pro acceptar le nove conditiones de contributor!
       email_help:
         privacy_policy: politica de confidentialitate
         privacy_policy_title: Politica de confidentialitate del OSMF con un section
@@ -2829,8 +2821,6 @@ ia:
       edits: Modificationes
       traces: Tracias
       notes: Notas de carta
-      remove as friend: Remover amico
-      add as friend: Adder amico
       mapper since: 'Cartographo depost:'
       last map edit: 'Ultime modification del carta:'
       no activity yet: Necun activitate ancora
@@ -2906,6 +2896,15 @@ ia:
       user:
         summary_html: '%{name} create ab %{ip_address} le %{date}'
         summary_no_ip_html: '%{name} create le %{date}'
+    changeset_comments:
+      page:
+        when: Quando
+        comment: Commento
+    diary_comments:
+      index:
+        title: Commentos de diario addite per %{user}
+      page:
+        post: Articulo
     suspended:
       title: Conto suspendite
       heading: Conto suspendite
@@ -3095,7 +3094,8 @@ ia:
         a fin que nos pote corriger lo. Displacia le marcator al position correcte
         e scribe un nota pro explicar le problema.
       anonymous_warning_html: Tu non ha aperite session. Per favor %{log_in} o %{sign_up}
-        si tu vole reciper actualisationes pro tu nota.
+        si tu vole reciper actualisationes pro tu nota e adjutar le cartographos a
+        resolver lo.
       anonymous_warning_log_in: aperi session
       anonymous_warning_sign_up: crea un conto
       advice: Tu nota es public e pote esser usate pro actualisar le carta. Dunque,
index f7e7350d4fb2fd002189374a03a9db708b68bfd2..3d9165fc07ba3f8a6824c8fc8c69f0480317294e 100644 (file)
@@ -272,13 +272,6 @@ id:
       external auth: Autentikasi Eksternal
       openid:
         link text: Apa ini?
-      public editing:
-        heading: Mengedit secara publik
-        enabled: Diaktifkan. Tidak anonim dan dapat mengedit data.
-        enabled link text: Apa ini?
-        disabled: Dinonaktifkan dan tidak dapat mengedit data, seluruh hasil edit
-          sebelumnya anonim.
-        disabled link text: mengapa saya tidak bisa mengedit?
       contributor terms:
         heading: Syarat-syarat Kontributor
         agreed: Anda telah menyetujui Persyaratan Kontributor yang baru.
@@ -366,6 +359,8 @@ id:
           france: Perancis
           italy: Italia
           rest_of_world: Bagian lain dari dunia
+      update:
+        terms accepted: Terima kasih telah menerima persyaratan kontributor yang baru!
       terms_declined_flash:
         terms_declined_html: Kami mohon maaf Anda tidak menerima Persyaratan Kontributor
           baru. Untuk informasi lebih lanjut, silakan lihat %{terms_declined_link}.
@@ -485,7 +480,6 @@ id:
       title: Set perubahan
       title_user: Set perubahan oleh %{user}
       title_user_link_html: Set perubahan oleh %{user_link}
-      title_friend: Set perubahan oleh teman saya
       title_nearby: Set perubahan oleh pengguna terdekat
       empty: Tidak ada set perubahan yang ditemukan.
       empty_area: Tidak ada set perubahan di daerah ini.
@@ -537,19 +531,14 @@ id:
     popup:
       your location: Lokasi Anda
       nearby mapper: Pembuat peta disekitar Anda
-      friend: Teman
     show:
       title: Dasborku
       no_home_location_html: '%{edit_profile_link} dan atur lokasi rumah Anda untuk
         melihat pengguna yang ada di sekitar.'
       edit_your_profile: Sunting profil Anda
-      my friends: Teman saya
-      no friends: Anda belum menambahkan teman.
       nearby users: Pengguna lain terdekat
       no nearby users: Tidak ada pengguna lain yang mengaku untuk melakukan pemetaan
         terdekat.
-      friends_changesets: Telusuri semua set perubahan yang dibuat oleh teman-teman
-      friends_diaries: Telusuri seluruh entri catatan harian oleh teman-teman
       nearby_changesets: Telusuri seluruh set perubahan oleh pengguna terdekat
       nearby_diaries: Telurusi seluruh entri catatan harian oleh pengguna terdekat
   diary_entries:
@@ -560,7 +549,6 @@ id:
       use_map_link: Gunakan Peta
     index:
       title: Catatan harian pengguna
-      title_friends: Catatan harian teman
       title_nearby: Catatan harian pengguna terdekat
       user_title: Catatan harian %{user}
       in_language_title: Entri catatan harian dalam %{language}
@@ -617,16 +605,6 @@ id:
       all:
         title: Entri catatan harian OpenStreetMap
         description: Entri catatan harian terbaru dari pengguna OpenStreetMap
-  diary_comments:
-    index:
-      title: Komentar Buku Harian ditambahkan oleh %{user}
-      heading: Komentar Buku Harian %{user}
-      subheading_html: Komentar Buku Harian yang ditambahkan oleh %{user}
-      no_comments: Tidak ada komentar buku harian
-    page:
-      post: Artikel
-      when: Kapan
-      comment: Komentar
   doorkeeper:
     errors:
       messages:
@@ -676,20 +654,6 @@ id:
       title: Berkas tidak ditemukan
       description: Gagal menemukan operasi berkas/direktori/API dengan nama itu di
         server OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Tambahkan %{user} sebagai teman?
-      button: Tambahkan sebagai teman
-      success: '%{name} sekarang adalah teman Anda!'
-      failed: Maaf, gagal menambahkan %{name} sebagai teman.
-      already_a_friend: Anda sudah berteman dengan %{name}.
-      limit_exceeded: Anda telah berteman dengan banyak sekali penggunan akhir-akhir
-        ini. Silahkan tunggu sebentar sebelum mencoba berteman lagi.
-    remove_friend:
-      heading: Hapus %{user} sebagai teman?
-      button: Hapus sebagai teman
-      success: '%{name} telah dihapus dari daftar teman Anda.'
-      not_a_friend: '%{name} bukanlah salah satu dari teman Anda.'
   geocoder:
     search:
       title:
@@ -1621,14 +1585,10 @@ id:
         kepada penulis di %{replyurl}
       footer_html: Anda juga dapat membaca pesan di  %{readurl} dan membalasnya di
         %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Halo %{to_user},
-      subject: '[OpenStreetMap] %{user} menambahkan Anda sebagai teman'
-      had_added_you: '%{user} telah menambahkan Anda sebagai teman pada OpenStreetMap.'
       see_their_profile: Anda dapat melihat profilnya pada %{userurl}.
       see_their_profile_html: Anda dapat melihat profil mereka di %{userurl}.
-      befriend_them: Anda juga dapat menambahkannua sebagai teman di %{befriendurl}.
-      befriend_them_html: Anda juga bisa menambahkan mereka sebagai teman di %{befriendurl}.
     gpx_failure:
       hi: Halo %{to_user},
       failed_to_import: 'gagal melakukan impor. Berikut ini adalah kesalahannya:'
@@ -1787,14 +1747,17 @@ id:
       wrong_user: Anda masuk log sebagai '%{user}' tetapi pesan yang anda balas tidak
         dikirim oleh atau untuk pengguna tersebut. Silahkan masuk log sebagai pengguna
         yang benar untuk membacanya.
-    mark:
-      as_read: Pesan ditandai sebagai telah dibaca
-      as_unread: Pesan ditandai sebagai belum dibaca
-    unmute:
-      notice: Pesan berhasil dipindahkan ke Kotak Masuk
-      error: Pesan tidak berhasil dipindahkan ke Kotak Masuk
     destroy:
       destroyed: Pesan dihapus
+    read_marks:
+      create:
+        notice: Pesan ditandai sebagai telah dibaca
+      destroy:
+        notice: Pesan ditandai sebagai belum dibaca
+    mutes:
+      destroy:
+        notice: Pesan berhasil dipindahkan ke Kotak Masuk
+        error: Pesan tidak berhasil dipindahkan ke Kotak Masuk
     mailboxes:
       heading:
         my_inbox: Kotak Masuk Saya
@@ -2524,13 +2487,14 @@ id:
     offline:
       heading: Penyimpanan GPX Offline
       message: Sistem upload dan penyimpanan file GPX saat ini tidak tersedia.
-    georss:
-      title: Jejak GPS OpenStreetMap
-    description:
-      description_with_count:
-        one: Berkas GPX dengan %{count} titik dari %{user}
-        other: Berkas GPX dengan %{count} titik dari %{user}
-      description_without_count: Berkas GPX dari %{user}
+    feeds:
+      show:
+        title: Jejak GPS OpenStreetMap
+      description:
+        description_with_count:
+          one: Berkas GPX dengan %{count} titik dari %{user}
+          other: Berkas GPX dengan %{count} titik dari %{user}
+        description_without_count: Berkas GPX dari %{user}
   application:
     permission_denied: Anda tidak memiliki izin untuk melakukan tindakan ini.
     require_cookies:
@@ -2657,7 +2621,6 @@ id:
         privacy_policy_title: Kebijakan privasi OSMF meliputi aturan soal alamat surat
           elektronik
       continue: Mendaftar
-      terms accepted: Terima kasih telah menerima persyaratan kontributor yang baru!
       email_help:
         html: Alamat Anda tidak dapat dilihat publik. Lihat %{privacy_policy_link}
           kami untuk info lebih lanjut.
@@ -2689,8 +2652,6 @@ id:
       edits: Suntingan
       traces: Jejak
       notes: Catatan Peta
-      remove as friend: Hapus pertemanan
-      add as friend: Jadikan Teman
       mapper since: 'Melakukan pemetaan sejak:'
       uid: 'ID pengguna:'
       ct status: 'Syarat-syarat kontributor:'
@@ -2760,6 +2721,15 @@ id:
       user:
         summary_html: '%{name} dibuat dari %{ip_address} pada %{date}'
         summary_no_ip_html: '%{name} dibuat pada %{date}'
+    changeset_comments:
+      page:
+        when: Kapan
+        comment: Komentar
+    diary_comments:
+      index:
+        title: Komentar Buku Harian ditambahkan oleh %{user}
+      page:
+        post: Artikel
     suspended:
       title: Akun Ditangguhkan
       heading: Akun Ditangguhkan
index ff8861f84f9b5cffa41f4ee331134268c3275200..805a3069ee3e8b11bd94294c2458610ef33aeeff 100644 (file)
@@ -267,14 +267,6 @@ is:
       openid:
         link: https://wiki.openstreetmap.org/wiki/OpenID
         link text: hvað er openID?
-      public editing:
-        heading: Nafngreindar breytingar
-        enabled: Virkt. Ekki nafnlaus og getur breytt gögnum.
-        enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
-        enabled link text: Hvað er þetta?
-        disabled: Óvirkur og getur ekki breytt gögnum, allar fyrri breytingar eru
-          ónafngreindar.
-        disabled link text: af hverju get ég ekki breytt neinu?
       contributor terms:
         heading: Skilmálar vegna framlags
         agreed: Þú hefur samþykkt nýju skilmálana vegna framlags þíns.
@@ -358,7 +350,6 @@ is:
         readable_summary: læsilegt yfirlit
         informal_translations: óformlegar þýðingar
         continue: Halda áfram
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         you need to accept or decline: Endilega lestu og samþykktu eða hafnaðu nýju
           skilmálunum vegna framlags þíns, áður en þú heldur áfram.
         legale_select: 'Búseta (land):'
@@ -366,6 +357,9 @@ is:
           france: Frakkland
           italy: Ítalía
           rest_of_world: Restin af heiminum
+      update:
+        terms accepted: Bestu þakkir fyrir að samþykkja nýju skilmálana vegna framlags
+          þíns!
       terms_declined_flash:
         terms_declined_html: Okkur þykir miður að þú hafir ákveðið að samþykkja ekki
           nýja skilmála vegna framlags (contributor terms). Til að sjá ítarlegri upplýsingar,
@@ -501,7 +495,6 @@ is:
       title: Breytingasett
       title_user: Breytingar eftir %{user}
       title_user_link_html: Breytingasett eftir %{user_link}
-      title_friend: Breytingar eftir vini mína
       title_nearby: Breytingar eftir nálæga notendur
       empty: Engin breytingasett fundust.
       empty_area: Engin breytingasett á þessu svæði.
@@ -516,19 +509,6 @@ is:
         created: Búið til
         closed: Lokað
         belongs_to: Höfundur
-    subscribe:
-      heading: Gerast áskrifandi að umræðu með breytingasetti?
-      button: Gerast áskrifandi að umræðu
-    unsubscribe:
-      heading: Hætta áskrift að umræðu með breytingasetti?
-      button: Hætta áskrift að umræðu
-    heading:
-      title: Breytingasett %{id}
-      created_by_html: Útbúið af %{link_user} þann %{created}.
-    no_such_entry:
-      heading: 'Engin færsla er til með auðkennið: %{id}'
-      body: Breytingasett númerið %{id} er ekki til. Kannski settirðu inn rangt stafsetta
-        slóð eða fylgdir ógildum tengli.
     show:
       title: 'Breytingasett: %{id}'
       created: 'Búið til: %{when}'
@@ -560,6 +540,21 @@ is:
     timeout:
       sorry: Því miður, það tók of langan tíma að ná í listann yfir þau breytingasett
         sem þú baðst um.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Gerast áskrifandi að umræðu með breytingasetti?
+        button: Gerast áskrifandi að umræðu
+      unsubscribe:
+        heading: Hætta áskrift að umræðu með breytingasetti?
+        button: Hætta áskrift að umræðu
+    heading:
+      title: Breytingasett %{id}
+      created_by_html: Útbúið af %{link_user} þann %{created}.
+    no_such_entry:
+      heading: 'Engin færsla er til með auðkennið: %{id}'
+      body: Breytingasett númerið %{id} er ekki til. Kannski settirðu inn rangt stafsetta
+        slóð eða fylgdir ógildum tengli.
   dashboards:
     contact:
       km away: í %{count} km fjarlægð
@@ -568,19 +563,14 @@ is:
     popup:
       your location: Staðsetning þín
       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ðgangnum þínum
-      my friends: Vinir mínir
-      no friends: Þú hefur ekki bætt við neinum vinum ennþá.
       nearby users: Aðrir nálægir notendur
       no nearby users: Engir notendur hafa stillt staðsetningu sína á korti nálægt
         þér.
-      friends_changesets: breytingasett vina
-      friends_diaries: bloggfærslur vina
       nearby_changesets: breytingasett vina í næsta nágrenni
       nearby_diaries: bloggfærslur vina í næsta nágrenni
   diary_entries:
@@ -591,7 +581,6 @@ is:
       use_map_link: Nota kort
     index:
       title: Blogg notenda
-      title_friends: Blogg vina
       title_nearby: Blogg notenda í nágrenninu
       user_title: Blogg frá %{user}
       in_language_title: Bloggfærslur á %{language}
@@ -658,15 +647,6 @@ is:
       heading: Hætta áskrift að umræðu með bloggfærslu?
       button: Hætta áskrift að umræðu
   diary_comments:
-    index:
-      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
-    page:
-      post: Senda
-      when: Þegar
-      comment: Athugasemd
     new:
       heading: Bæta athugasemd við umræðu með bloggfærslu?
   doorkeeper:
@@ -725,20 +705,6 @@ is:
       title: Skrá fannst ekki
       description: Gat ekki fundið skrá/skrá/API-aðgerð með því nafni á OpenStreetMap-þjóninum
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Bæta %{user} við sem vini?
-      button: Bæta við sem vini
-      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. Bíddu aðeins áður
-        en þú reynir að vingast fleiri.
-    remove_friend:
-      heading: Hætta að vera vinur %{user}?
-      button: Fjarlægja úr vinum
-      success: '%{name} er ekki lengur vinur þinn.'
-      not_a_friend: '%{name} er ekki einn af vinum þínum.'
   geocoder:
     search:
       title:
@@ -1681,15 +1647,11 @@ is:
         á %{replyurl}
       footer_html: Þú getur einnig lesið skilaboðin á %{readurl} og sent skilaboð
         til höfundarins á %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hæ %{to_user},
-      subject: '[OpenStreetMap] %{user} bætti þér við sem vin'
-      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_failure:
       hi: Hæ %{to_user},
       failed_to_import: 'tókst ekki að flytja inn. Hér er villan:'
@@ -1846,14 +1808,17 @@ is:
       wrong_user: Þú hefur skráð þig inn sem `%{user}' en skilaboðin sem þú baðst
         um að lesa voru ekki send af eða til þess notanda. Skráðu þig inn sem réttan
         notanda til að geta svarað.
-    mark:
-      as_read: Skilaboðin voru merkt sem lesin
-      as_unread: Skilaboðin voru merkt sem ólesin
-    unmute:
-      notice: Skilaboð voru færð í Innhólf
-      error: Ekki var hægt að færa skilaboðin í innhólfið.
     destroy:
       destroyed: Skilaboðunum var eytt
+    read_marks:
+      create:
+        notice: Skilaboðin voru merkt sem lesin
+      destroy:
+        notice: Skilaboðin voru merkt sem ólesin
+    mutes:
+      destroy:
+        notice: Skilaboð voru færð í Innhólf
+        error: Ekki var hægt að færa skilaboðin í innhólfið.
     mailboxes:
       heading:
         my_inbox: Innhólfið mitt
@@ -2673,13 +2638,14 @@ is:
     offline:
       heading: Ekki hægt að hlaða upp GPX
       message: Ekki er hægt að hlaða upp GPX í augnablikinu vegna viðhalds.
-    georss:
-      title: OpenStreetMap GPS-ferlar
-    description:
-      description_with_count:
-        one: GPX-skrá með %{count} punkti frá %{user}
-        other: GPX-skrá með %{count} punktum frá %{user}
-      description_without_count: GPX-skrá frá %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-ferlar
+      description:
+        description_with_count:
+          one: GPX-skrá með %{count} punkti frá %{user}
+          other: GPX-skrá með %{count} punktum frá %{user}
+        description_without_count: GPX-skrá frá %{user}
   application:
     permission_denied: Þú hefur ekki réttindi til að nota þessa aðgerð
     require_cookies:
@@ -2823,8 +2789,6 @@ is:
         contributor_terms_url: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
         contributor_terms: skilmálar vegna framlags
       continue: Nýskrá
-      terms accepted: Bestu þakkir fyrir að samþykkja nýju skilmálana vegna framlags
-        þíns!
       email_help:
         privacy_policy: stefna vegna meðferðar persónuupplýsinga
         privacy_policy_url: https://wiki.osmfoundation.org/wiki/Privacy_Policy
@@ -2864,8 +2828,6 @@ is:
       edits: Breytingar
       traces: Ferlar
       notes: Minnispunktar á korti
-      remove as friend: Fjarlægja úr vinum
-      add as friend: Bæta við sem vini
       mapper since: 'Í kortlagningu síðan:'
       last map edit: 'Síðasta breyting á korti:'
       no activity yet: Engin virkni ennþá
@@ -2940,6 +2902,15 @@ is:
       user:
         summary_html: '%{name} var útbúinn frá %{ip_address} þann %{date}'
         summary_no_ip_html: '%{name} útbúinn þann %{date}'
+    changeset_comments:
+      page:
+        when: Þegar
+        comment: Athugasemd
+    diary_comments:
+      index:
+        title: Dagbók Athugasemdir bætt við af %{user}
+      page:
+        post: Senda
     suspended:
       title: Aðgangur frystur
       heading: Aðgangur frystur
index 93d72a005e1db6ae53602c7097f734d8bf193b8f..f3561e59ce3c608833e6ca118a5ef78f7f6d5245 100644 (file)
@@ -148,7 +148,7 @@ it:
         support_url: Indirizzo URL di supporto
         allow_read_prefs: leggi le sue preferenze utente
         allow_write_prefs: modifica le sue preferenze utente
-        allow_write_diary: creare pagine di diario, commenti e stringere amicizie
+        allow_write_diary: creare pagine di diario e commenti
         allow_write_api: modificare la mappa
         allow_read_gpx: visualizza le sue tracce GPS private
         allow_write_gpx: carica tracce GPS
@@ -313,13 +313,6 @@ it:
       openid:
         link: https://wiki.openstreetmap.org/wiki/IT:OpenID
         link text: che cos'è questo?
-      public editing:
-        heading: Modifica pubblica
-        enabled: Abilitate. Non anonimo con il permesso di modificare i dati.
-        enabled link text: che cos'è questo?
-        disabled: Disabilitate senza il permesso di modificare i dati, tutte le modifiche
-          precedenti sono anonime.
-        disabled link text: perché non posso modificare?
       contributor terms:
         heading: Regole per contribuire
         agreed: Hai accettato le nuove regole per contribuire.
@@ -411,6 +404,8 @@ it:
           france: Francia
           italy: Italia
           rest_of_world: Resto del mondo
+      update:
+        terms accepted: Grazie di aver accettato le nuove regole per contribuire!
       terms_declined_flash:
         terms_declined_html: Siamo spiacenti che tu abbia deciso di non accettare
           i nuovi termini di contribuzione. Per ulteriori informazioni consultare
@@ -569,7 +564,7 @@ it:
       title: Gruppi di modifiche
       title_user: Gruppi di modifiche di %{user}
       title_user_link_html: Gruppi di modifiche di %{user_link}
-      title_friend: Gruppi di modifiche dei miei amici
+      title_followed: Gruppi di modifiche delle persone che segui
       title_nearby: Gruppi di modifiche da parte di utenti nelle vicinanze
       empty: Nessun gruppo di modifiche trovato.
       empty_area: Nessun gruppo di modifiche in quest'area.
@@ -584,19 +579,6 @@ it:
         created: Creato
         closed: Chiuso
         belongs_to: Autore
-    subscribe:
-      heading: Vuoi iscriverti alla seguente discussione del gruppo di modifiche?
-      button: Iscriviti alla discussione
-    unsubscribe:
-      heading: Annullare l'iscrizione alla seguente discussione del gruppo di modifiche?
-      button: Annulla l'iscrizione alla discussione
-    heading:
-      title: Gruppo di modifiche %{id}
-      created_by_html: Creato da %{link_user} il %{created}.
-    no_such_entry:
-      heading: 'Nessuna voce con l''ID: %{id}'
-      body: Non esiste alcun gruppo di modifiche con l’ID %{id}. Controlla la digitazione
-        o che il collegamento sul quale hai cliccato non sia errato.
     show:
       title: 'Gruppo di modifiche: %{id}'
       created: 'Creato: %{when}'
@@ -630,6 +612,21 @@ it:
     timeout:
       sorry: Spiacenti, l'elenco dei gruppi di modifiche che hai richiesto ha impiegato
         troppo tempo per poter essere recuperato.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Vuoi iscriverti alla seguente discussione del gruppo di modifiche?
+        button: Iscriviti alla discussione
+      unsubscribe:
+        heading: Annullare l'iscrizione alla seguente discussione del gruppo di modifiche?
+        button: Annulla l'iscrizione alla discussione
+    heading:
+      title: Gruppo di modifiche %{id}
+      created_by_html: Creato da %{link_user} il %{created}.
+    no_such_entry:
+      heading: 'Nessuna voce con l''ID: %{id}'
+      body: Non esiste alcun gruppo di modifiche con l’ID %{id}. Controlla la digitazione
+        o che il collegamento sul quale hai cliccato non sia errato.
   dashboards:
     contact:
       km away: distante %{count} km
@@ -638,19 +635,19 @@ it:
     popup:
       your location: Propria posizione
       nearby mapper: Mappatore vicino
-      friend: Amico
+      following: Utenti che ti seguono
     show:
       title: La mia dashboard
       no_home_location_html: '%{edit_profile_link} e imposta la posizione di casa
         per vedere gli utenti vicini.'
       edit_your_profile: Modifica il tuo profilo
-      my friends: I miei amici
-      no friends: Non ci sono ancora amici.
+      followings: Utenti che segui
+      no followings: Non stai ancora seguendo alcun utente.
       nearby users: Altri utenti nelle vicinanze
       no nearby users: Non ci sono ancora altri utenti che ammettono di mappare nelle
         vicinanze.
-      friends_changesets: gruppi di modifiche degli amici
-      friends_diaries: note dei diari degli amici
+      followed_changesets: gruppi di modifiche
+      followed_diaries: voci del diario
       nearby_changesets: gruppi di modifiche da parte degli utenti nelle vicinanze
       nearby_diaries: note dei diari degli utenti nelle vicinanze
   diary_entries:
@@ -661,7 +658,7 @@ it:
       use_map_link: Utilizza mappa
     index:
       title: Diari degli utenti
-      title_friends: Diari degli amici
+      title_followed: Diari delle persone che segui
       title_nearby: Diari degli utenti nelle vicinanze
       user_title: Diario di %{user}
       in_language_title: Voci del diario in %{language}
@@ -728,15 +725,6 @@ it:
       heading: Annullare l'iscrizione alla seguente discussione sul diario?
       button: Annulla l'iscrizione alla discussione
   diary_comments:
-    index:
-      title: Commenti del diario aggiunti da %{user}
-      heading: I commenti del diario di %{user}
-      subheading_html: Commenti del diario aggiunti da %{user}
-      no_comments: Nessun commento al diario
-    page:
-      post: Messaggio
-      when: Quando
-      comment: Commento
     new:
       heading: Aggiungere un commento alla discussione sulla seguente voce del diario?
   doorkeeper:
@@ -796,20 +784,23 @@ it:
       title: File non trovato
       description: Impossibile trovare un file/cartella/operazione API con questo
         nome sul server OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Aggiungere %{user} agli amici?
-      button: Aggiungi come amico
-      success: '%{name} è ora tuo amico!'
-      failed: Spiacenti, non è stato possibile aggiungere %{name} come un amico.
-      already_a_friend: Sei già amico di %{name}.
-      limit_exceeded: Recentemente hai aggiunto un sacco di utenti come amici. Aspetta
-        un po’ di tempo prima di aggiungerne altri.
-    remove_friend:
-      heading: Rimuovere ${user} dagli amici?
-      button: Rimuovi dagli amici
-      success: '%{name} è stato rimosso dai tuoi amici.'
-      not_a_friend: '%{name} non è uno dei tuoi amici.'
+  follows:
+    show:
+      follow:
+        heading: Vuoi seguire %{user}?
+        button: Segui utente
+      unfollow:
+        heading: Vuoi smettere di seguire %{user}?
+        button: Smetti di seguire utente
+    create:
+      success: Adesso stai seguendo %{name}!
+      failed: La tua richiesta di seguire %{name} è fallita.
+      already_followed: Stai già seguendo %{name}.
+      limit_exceeded: Hai iniziato a seguire molti utenti di recente. Attendi un po’
+        prima di tentare di seguirne altri.
+    destroy:
+      success: Hai smesso di seguire con successo %{name}.
+      not_followed: Non stai seguendo %{name}.
   geocoder:
     search:
       title:
@@ -1778,14 +1769,14 @@ it:
         all'autore al %{replyurl}
       footer_html: Puoi anche leggere il messaggio al %{readurl} e puoi inviare un
         messaggio all'autore al %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Ciao %{to_user},
-      subject: '[OpenStreetMap] %{user} ti ha aggiunto come amico'
-      had_added_you: '%{user} ti ha aggiunto come suo amico su OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} ha iniziato a seguirti'
+      followed_you: '%{user} ora ti segue su OpenStreetMap.'
       see_their_profile: Puoi vedere il suo profilo su %{userurl}.
       see_their_profile_html: Puoi vedere il suo profilo su %{userurl}.
-      befriend_them: Puoi anche aggiungerli come amici in %{befriendurl}.
-      befriend_them_html: Puoi anche aggiungerli come amici in %{befriendurl}.
+      follow_them: Puoi seguirli anche su %{followurl}.
+      follow_them_html: Puoi seguirli anche su %{followurl}.
     gpx_details:
       details: 'I dettagli del tuo file:'
       filename: Nome del file
@@ -1793,6 +1784,7 @@ it:
       description: Descrizione
       tags: Etichette
       total_points: Numero totale di punti
+      imported_points: Numero di punti importati
     gpx_failure:
       hi: Ciao %{to_user},
       failed_to_import: Sembra che l'importazione del file come traccia GPS non sia
@@ -1955,14 +1947,17 @@ it:
       wrong_user: Hai effettuato l'accesso come '%{user}', ma il messaggio che hai
         chiesto di leggere non era diretto a quell'utente. Se vuoi leggerlo, per favore
         accedi con l'utenza interessata.
-    mark:
-      as_read: Messaggio marcato come già letto
-      as_unread: Messaggio marcato come non letto
-    unmute:
-      notice: Il messaggio è stato spostato nella Posta in arrivo
-      error: Non è stato possibile spostare il messaggio nella Posta in arrivo.
     destroy:
       destroyed: Messaggio eliminato
+    read_marks:
+      create:
+        notice: Messaggio marcato come già letto
+      destroy:
+        notice: Messaggio marcato come non letto
+    mutes:
+      destroy:
+        notice: Il messaggio è stato spostato nella Posta in arrivo
+        error: Non è stato possibile spostare il messaggio nella Posta in arrivo.
     mailboxes:
       heading:
         my_inbox: Posta in arrivo
@@ -2120,6 +2115,9 @@ it:
       preview: Anteprima
       help: Aiuto
     pagination:
+      changeset_comments:
+        older: Commenti meno recenti
+        newer: Commenti più recenti
       diary_comments:
         older: Commenti più vecchi
         newer: Commenti più recenti
@@ -2743,13 +2741,14 @@ it:
       heading: Archiviazione GPX non in linea
       message: L'archiviazione dei file GPX ed il sistema di upload al momento non
         sono disponibili.
-    georss:
-      title: Tracce GPS di OpenStreetMap
-    description:
-      description_with_count:
-        one: File GPX con %{count} punto da %{user}
-        other: File GPX con %{count} punti da %{user}
-      description_without_count: File GPX da %{user}
+    feeds:
+      show:
+        title: Tracce GPS di OpenStreetMap
+      description:
+        description_with_count:
+          one: File GPX con %{count} punto da %{user}
+          other: File GPX con %{count} punti da %{user}
+        description_without_count: File GPX da %{user}
   application:
     permission_denied: Non si dispone dei permessi necessari per eseguire questa azione
     require_cookies:
@@ -2818,7 +2817,7 @@ it:
       openid: Accedi utilizzando OpenStreetMap
       read_prefs: Leggere le preferenze dell'utente
       write_prefs: Modificare le preferenze dell'utente
-      write_diary: Creare voci del diario, commenti e stringere amicizie
+      write_diary: Creare voci del diario e commenti
       write_api: Modificare la mappa
       read_gpx: Leggere tracciati GPS privati
       write_gpx: Caricare tracciati GPS
@@ -2909,7 +2908,6 @@ it:
           la sezione sugli indirizzi e-mail
         contributor_terms: regole per contribuire
       continue: Registrati
-      terms accepted: Grazie di aver accettato le nuove regole per contribuire!
       email_help:
         privacy_policy: informativa sulla privacy
         privacy_policy_title: Normativa sulla privacy dell'OSMF, inclusa la sezione
@@ -2947,8 +2945,8 @@ it:
       edits: Modifiche
       traces: Tracciati
       notes: Note sulla mappa
-      remove as friend: Rimuovi amico
-      add as friend: Aggiungi amico
+      unfollow: Smetti di seguire
+      follow: Segui
       mapper since: 'Mappatore dal:'
       last map edit: 'Ultima modifica della mappa:'
       no activity yet: Non ci sono ancora attività
@@ -3024,6 +3022,26 @@ it:
       user:
         summary_html: '%{name} creato da %{ip_address} il %{date}'
         summary_no_ip_html: '%{name} creato il %{date}'
+    comments:
+      index:
+        heading_html: Commenti di %{user}
+        changesets: Gruppi di modifiche
+        diary_entries: Voci del diario
+        no_comments: Nessun commento
+    changeset_comments:
+      index:
+        title: Commenti del diario aggiunti da %{user}
+      page:
+        changeset: Gruppo di modifiche
+        when: Quando
+        comment: Commento
+    diary_comments:
+      index:
+        title: Commenti del diario aggiunti da %{user}
+      page:
+        post: Messaggio
+        when: Quando
+        comment: Commento
     suspended:
       title: Account sospeso
       heading: Account sospeso
@@ -3235,10 +3253,14 @@ it:
         per ricevere aggiornamenti sulla tua nota e aiutare i mappatori a risolverla.
       anonymous_warning_log_in: entra
       anonymous_warning_sign_up: registrati
+      counter_warning_html: Hai già pubblicato almeno %{x_anonymous_notes}, è fantastico
+        per la comunità, grazie! Adesso ti incoraggiamo a %{contribute_by_yourself},
+        non è così complicato e %{community_can_help}.
       x_anonymous_notes:
         one: '%{count} nota anonima'
         other: '%{count} note anonime'
       counter_warning_guide_link:
+        text: contribuire personalmente
         url: https://wiki.openstreetmap.org/wiki/IT:Beginners%27_guide
       counter_warning_forum_link:
         text: la comunità può aiutarti
index da47e260012736b25c95b77f032d5102f5af2f92..b990b01b369e1bdf95acd2be0ad5b3da0c164590 100644 (file)
@@ -294,13 +294,6 @@ ja:
       openid:
         link: https://wiki.openstreetmap.org/wiki/JA:OpenID?uselang=ja
         link text: これは何ですか?
-      public editing:
-        heading: 公開編集
-        enabled: 有効。匿名ではなく、データを編集できます。
-        enabled link: http://wiki.openstreetmap.org/wiki/JA:Anonymous_edits?uselang=ja
-        enabled link text: これは何ですか?
-        disabled: 無効。データを編集できず、これまでの編集はすべて匿名です。
-        disabled link text: なぜ編集できないのですか?
       contributor terms:
         heading: 協力者規約
         agreed: あなたは、新しい協力者規約を承諾しています。
@@ -358,13 +351,14 @@ ja:
         readable_summary: 人間が読める要約
         informal_translations: 非公式の翻訳
         continue: 続行
-        declined: http://wiki.openstreetmap.org/wiki/JA:Contributor_Terms_Declined
         you need to accept or decline: 続行するには新しい協力者規約を読んで承諾または拒否してください。
         legale_select: 'お住まいの国:'
         legale_names:
           france: フランス
           italy: イタリア
           rest_of_world: それ以外の国
+      update:
+        terms accepted: 新しい協力者規約を承諾していただき、ありがとうございます!
       terms_declined_flash:
         terms_declined_html: 新しい投稿者規約に同意しないことを決定されたことを残念に思います。詳細については、%{terms_declined_link}
           を参照してください。
@@ -502,7 +496,6 @@ ja:
       title: 変更セット
       title_user: '%{user} による変更セット'
       title_user_link_html: '%{user_link} による変更セット'
-      title_friend: 友達による変更セット
       title_nearby: 周辺の利用者による変更セット
       empty: 変更セットが見つかりませんでした。
       empty_area: この領域には変更セットはありません。
@@ -517,18 +510,6 @@ ja:
         created: 作成
         closed: クローズ
         belongs_to: 著者
-    subscribe:
-      heading: この変更セットのディスカッションの通知を受け取りますか?
-      button: 議論に参加する
-    unsubscribe:
-      heading: この変更セットの議論の通知を解除しますか?
-      button: 議論の通知を解除
-    heading:
-      title: 変更セット %{id}
-      created_by_html: ユーザ %{link_user} によって %{created} に作成されました。
-    no_such_entry:
-      heading: 'ID番号: %{id} のエントリはありません'
-      body: 申し訳ありませんが、ID %{id} という変更セットはありません。入力した文字列が誤っているか、クリックしたリンクが間違っている可能性があります。
     show:
       title: '変更セット: %{id}'
       created: '作成日: %{when}'
@@ -558,6 +539,20 @@ ja:
       relations_paginated: リレーション (%{x}-%{y} / %{count})
     timeout:
       sorry: 申し訳ありませんが、要求した変更セットの一覧は時間がかかりすぎたため取得できませんでした。
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: この変更セットのディスカッションの通知を受け取りますか?
+        button: 議論に参加する
+      unsubscribe:
+        heading: この変更セットの議論の通知を解除しますか?
+        button: 議論の通知を解除
+    heading:
+      title: 変更セット %{id}
+      created_by_html: ユーザ %{link_user} によって %{created} に作成されました。
+    no_such_entry:
+      heading: 'ID番号: %{id} のエントリはありません'
+      body: 申し訳ありませんが、ID %{id} という変更セットはありません。入力した文字列が誤っているか、クリックしたリンクが間違っている可能性があります。
   dashboards:
     contact:
       km away: 距離 %{count} km
@@ -566,17 +561,12 @@ ja:
     popup:
       your location: 自分の位置
       nearby mapper: 周辺のマッパー
-      friend: 友達
     show:
       title: 私のダッシュボード
       no_home_location_html: '%{edit_profile_link}そして、近くの利用者が表示されるように自宅の場所を設定します。'
       edit_your_profile: プロフィールの編集
-      my friends: 友達
-      no friends: あなたはまだ誰も友達として登録していません。
       nearby users: 周辺にいるその他の利用者
       no nearby users: あなたの活動地域周辺に他のマッパーはいないようです。
-      friends_changesets: 友達による変更セット
-      friends_diaries: 友達の日記エントリ
       nearby_changesets: 周辺の利用者の変更セット
       nearby_diaries: 周辺の利用者の日記エントリ
   diary_entries:
@@ -587,7 +577,6 @@ ja:
       use_map_link: 地図を使用
     index:
       title: 利用者の日記
-      title_friends: 友達の日記
       title_nearby: 周辺の利用者の日記
       user_title: '%{user}さんの日記'
       in_language_title: '%{language}の日記エントリ'
@@ -651,15 +640,6 @@ ja:
       heading: この日記エントリの議論の通知を解除しますか?
       button: 議論の通知を解除
   diary_comments:
-    index:
-      title: '%{user}が追加した日記コメント'
-      heading: '%{user}の日記コメント'
-      subheading_html: '%{user}が追加した日記コメント'
-      no_comments: 日記のコメントはありません
-    page:
-      post: 投稿
-      when: 日時
-      comment: コメント
     new:
       heading: この日記エントリの議論にコメントを追加しますか?
   doorkeeper:
@@ -709,19 +689,6 @@ ja:
     not_found:
       title: ファイルが見つかりません
       description: OpenStreetMapサーバ上に、その名称のファイル/ディレクトリ/API操作はありません (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} を友達に追加しますか?'
-      button: 友達に追加
-      success: '%{name} と友達になりました!'
-      failed: '%{name} を友達として登録できませんでした。'
-      already_a_friend: あなたは %{name} と既に友達です。
-      limit_exceeded: 短い間隔で大量の友達申請を送っていますね。しばらくしてから友達申請してください。
-    remove_friend:
-      heading: '%{user} を友達から削除しますか?'
-      button: 友達を解除
-      success: '%{name} を友達から解除しました。'
-      not_a_friend: '%{name} は友達ではありません。'
   geocoder:
     search:
       title:
@@ -1668,14 +1635,10 @@ ja:
       header_html: '%{from_user} さんが、OpenStreetMap であなたに件名 %{subject} のメッセージを送信しました:'
       footer: メッセージを読むにはこちら %{readurl}、筆者に返信するにはこちら %{replyurl}
       footer_html: メッセージを読むにはこちら %{readurl}、筆者に返信するにはこちら %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: '%{to_user},'
-      subject: '[OpenStreetMap] %{user} さんがあなたを友達に追加しました。'
-      had_added_you: OpenStreetMap で %{user} さんがあなたを友達に追加しました。
       see_their_profile: '%{userurl} でプロフィールを閲覧できます。'
       see_their_profile_html: '%{userurl} でプロフィールを閲覧できます。'
-      befriend_them: '%{befriendurl} で友達になることができます。'
-      befriend_them_html: '%{befriendurl} で友達になることができます。'
     gpx_failure:
       hi: こんにちは、%{to_user} さん。
       failed_to_import: 'GPS トレース ファイルとしてインポートできませんでした。ファイルが有効な GPXファイル、または、GPX ファイルを含む圧縮ファイル(対応形式は.tar.gz,
@@ -1789,14 +1752,17 @@ ja:
       destroy_button: 削除
       back: 戻る
       wrong_user: あなたは「%{user}」としてログインしていますが、閲覧しようとしたメッセージは、この利用者が送信したものでも、この利用者宛てのものでもありません。メッセージを閲覧するには、正しい利用者としてログインしてください。
-    mark:
-      as_read: 既読メッセージ
-      as_unread: 未読メッセージ
-    unmute:
-      notice: メッセージは受信箱に移動されました
-      error: メッセージを受信箱に移動できませんでした。
     destroy:
       destroyed: メッセージを削除しました
+    read_marks:
+      create:
+        notice: 既読メッセージ
+      destroy:
+        notice: 未読メッセージ
+    mutes:
+      destroy:
+        notice: メッセージは受信箱に移動されました
+        error: メッセージを受信箱に移動できませんでした。
     mailboxes:
       heading:
         my_inbox: 自分の受信箱
@@ -2428,12 +2394,13 @@ ja:
     offline:
       heading: GPX のストレージが利用できません
       message: GPX ファイルのストレージとアップロード システムは現在利用できません。
-    georss:
-      title: OpenStreetMap GPSトレース
-    description:
-      description_with_count: '{{%{user}|GPX ファイルによる地 %{count}件と%{user}による地点%{count}件を含む{PLURAL|one=GPX
-        ファイル}}'
-      description_without_count: '%{user} による GPX ファイル'
+    feeds:
+      show:
+        title: OpenStreetMap GPSトレース
+      description:
+        description_with_count: '{{%{user}|GPX ファイルによる地 %{count}件と%{user}による地点%{count}件を含む{PLURAL|one=GPX
+          ファイル}}'
+        description_without_count: '%{user} による GPX ファイル'
   application:
     permission_denied: その処理をする権限がありません
     require_cookies:
@@ -2553,7 +2520,6 @@ ja:
         privacy_policy_title: OSMFのプライバシーポリシー(電子メールアドレスに関するセクションを含む)
         contributor_terms: 協力者規約
       continue: 利用者登録
-      terms accepted: 新しい協力者規約を承諾していただき、ありがとうございます!
       email_help:
         privacy_policy: プライバシー・ポリシー
         privacy_policy_title: OSMFのプライバシーポリシー(メールアドレスに関するセクションを含む)
@@ -2588,8 +2554,6 @@ ja:
       edits: 編集
       traces: トレース
       notes: 地図メモ
-      remove as friend: 友達を解除
-      add as friend: 友達として追加
       mapper since: 'マッパー歴:'
       last map edit: '地図の最後の編集:'
       no activity yet: 活動がありません
@@ -2648,6 +2612,15 @@ ja:
       user:
         summary_html: '%{name} は %{ip_address}から%{date}に作成されました。'
         summary_no_ip_html: '%{name} は%{date}に作成されました。'
+    changeset_comments:
+      page:
+        when: 日時
+        comment: コメント
+    diary_comments:
+      index:
+        title: '%{user}が追加した日記コメント'
+      page:
+        post: 投稿
     suspended:
       title: アカウント停止
       heading: アカウント停止
index 7a733dfefec1d55851be349dfdc3e2cc07d08023..9d5524b72479cb98da9f2ff61acff104e064d8a9 100644 (file)
@@ -127,9 +127,6 @@ ka:
       openid:
         link: http://wiki.openstreetmap.org/wiki/KA:OpenID
         link text: რა არის ეს?
-      public editing:
-        enabled link text: რა არის ეს?
-        disabled link text: რატომ არ შემიძლია რედაქტირება?
       contributor terms:
         link text: რა არის ეს?
       save changes button: ცვლილებების შენახვა
@@ -230,7 +227,6 @@ ka:
       latest_edit_html: 'ბოლო რედაქტირება %{ago}:'
     popup:
       your location: თქვენი ადგილმდებარეობა
-      friend: მეგობარი
   diary_entries:
     new:
       title: დღიურში ახალი ჩანაწერის გაკეთება
@@ -239,7 +235,6 @@ ka:
       use_map_link: რუკაზე ჩვენება
     index:
       title: მომხმარებლების დღიურები
-      title_friends: მეგობრების დღიურები
       title_nearby: მეზობელი მომხმარებლების დღიურები
       user_title: '%{user}-ის დღიური'
       in_language_title: დღიურის ჩანაწერები %{language}
@@ -270,19 +265,6 @@ ka:
       confirm: დადასტურება
     location:
       location: 'მდებარეობა:'
-  diary_comments:
-    page:
-      post: პოსტი
-      when: როდის
-      comment: კომენტარი
-  friendships:
-    make_friend:
-      heading: დავამატო %{user} მეგობრებში?
-      button: მეგობრებში დამატება
-      success: '%{name} ახლა უკვე თქვენი მეგობარია!'
-    remove_friend:
-      heading: წავშალო მეგობრებიდან %{user}?
-      button: მეგობრებიდან წაშლა
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -745,8 +727,6 @@ ka:
       hi: გამარჯობა %{to_user},
     message_notification:
       hi: გამარჯობა %{to_user},
-    friendship_notification:
-      subject: '[OpenStreetMap]-ის მომხმარებელმა %{user} დაგამატათ მეგობრებში'
     signup_confirm:
       subject: '[OpenStreetMap] მოგესალმებით OpenStreetMap-ში'
       greeting: გამარჯობა!
@@ -787,11 +767,13 @@ ka:
       wrong_user: თქვენ შეხვედით როგორც `%{user}' მაგრამ შეტყობინება რომლის წაკითხვაც
         გსურთ, არ არის გაგზავნილი ამ მომხმარებელთან, ან მის მიერ. გთხოვთ, შეხვიდეთ,
         როგორც შესაბამისი მომხმარებელი, რათა წაიკითხოთ ის.
-    mark:
-      as_read: შეტყობინება მონიშნულია როგორც წაკითხული
-      as_unread: შეტყობინება მონიშნულია როგორც წაუკითხავი
     destroy:
       destroyed: შეტყობინება წაშლილია
+    read_marks:
+      create:
+        notice: შეტყობინება მონიშნულია როგორც წაკითხული
+      destroy:
+        notice: შეტყობინება მონიშნულია როგორც წაუკითხავი
     mailboxes:
       heading:
         my_inbox: ჩემი მიღებული
@@ -968,8 +950,6 @@ ka:
       send message: შეტყობინების გაგზავნა
       diary: დღიური
       edits: რედაქტირებები
-      remove as friend: მეგობრებიდან წაშლა
-      add as friend: მეგობრებში დამატება
       email address: 'ელ. ფოსტის მისამართი:'
       created from: 'შექმნილია:'
       status: 'სტატუსი:'
@@ -998,6 +978,13 @@ ka:
       show:
         title: მომხმარებლები
         heading: მომხმარებლები
+    changeset_comments:
+      page:
+        when: როდის
+        comment: კომენტარი
+    diary_comments:
+      page:
+        post: პოსტი
   user_blocks:
     new:
       title: მომხმარებელ %{name} ბლოკირების შექმნა
index 06fb6067486f0cffbfbf5d5ae1a7ba56e028bd9b..81e2e2b5ed4bacbe814e75a8b4b03c23a4aeabca 100644 (file)
@@ -210,10 +210,6 @@ kab:
       current email address: Tansa imayl n tura
       openid:
         link text: d acu-t wa?
-      public editing:
-        heading: Taẓrigt tazayezt
-        enabled link text: d acu-t wa?
-        disabled link text: Acu zemreɣ ad beddleɣ?
       contributor terms:
         heading: 'Tiwtilin n iwiziw:'
         link text: what is this?
@@ -324,7 +320,6 @@ kab:
     index:
       title: Agraw n usnifel
       title_user: Igrawen n usnifel sɣur %{user}
-      title_friend: Igrawen n usnifel n imdukal-ik
       title_nearby: Igrawen n usnifel n iseqdacen iqeṛben
       empty: Ulac agraw n usnifel yettwafen.
       empty_area: Ulac agraw n ubeddel di temnaḍt-agi.
@@ -369,12 +364,8 @@ kab:
       latest_edit_html: 'Asnifel aneggaru %{ago} :'
     popup:
       your location: Adig-ik
-      friend: Amdakkel
     show:
-      my friends: Imeddukal-iw
       nearby users: Iseqdacen-nniḍen iqeṛben
-      friends_changesets: Igrawen n usnifel n yidukkal
-      friends_diaries: Inekcam n uɣmis n yimdukkal
       nearby_changesets: Ihrawen n usnifel n iseqdacen iqeṛben
       nearby_diaries: Inekcam n uɣmis n iseqdacen iqeṛben
   diary_entries:
@@ -385,7 +376,6 @@ kab:
       use_map_link: Seqdec takarḍa
     index:
       title: Iɣmisen n yiseqdacen
-      title_friends: Iɣmisen n yimeddukal
       title_nearby: Iɣmisen n yiseqdacen iqeṛben
       user_title: Aɣmis n %{user}
       in_language_title: Inekcam n uɣmis s %{language}
@@ -440,22 +430,6 @@ kab:
       all:
         title: Imagraden n iɣmisen OpenStreetMap
         description: Imagraden inegguran n iɣmisen n iseqdacen OpenStreetMap
-  diary_comments:
-    page:
-      post: Amagrad
-      when: Melmi
-      comment: Awennit
-  friendships:
-    make_friend:
-      heading: Rnu %{user} d amdakkel?
-      button: Rnu d aseqdac
-      success: '%{name} d amdakkel-ik tura!'
-      already_a_friend: Telliḍ yakan d amdakul n %{name}.
-    remove_friend:
-      heading: Kkes  %{user} seg yimdukkal?
-      button: Kkes seg imdukkal
-      success: '%{name} yettwakkes seg yimdukkal.'
-      not_a_friend: '%{name} ur yelli ara d amdakkel.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -792,12 +766,9 @@ kab:
       header: '%{from_user} yuzen-ak-d izen si OpenStreetMap s usentel %{subject} :'
       footer_html: Tzemreḍ daɣen ad teɣreḍ izen di %{readurl} sakin ad tizmireḍ ad
         terreḍ i %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Azul %{to_user},
-      subject: '[OpenStreetMap] %{user} yerna-k d amdakkel'
-      had_added_you: '%{user} yerna-k d amdakkel di OpenStreetMap.'
       see_their_profile: 'Tzemred ad twaliḍ amaɣnu-is dagi : %{userurl}.'
-      befriend_them: 'Tzemred daɣed ad tt-rnuḍ-t d amdakkel dagi : %{befriendurl}.'
     gpx_failure:
       failed_to_import: 'ur d-yettwakter ara. Hatta tuccḍa:'
       subject: '[OpenStreetMap] Akter GPX ur yeddi ara'
@@ -881,11 +852,13 @@ kab:
       unread_button: Creḍ yettwaɣra
       destroy_button: Kkes
       back: Uɣal
-    mark:
-      as_read: Izen yettwacred yettwaɣra
-      as_unread: Izen yettwacred ur yettwaɣra ara
     destroy:
       destroyed: Izen yettwakkes
+    read_marks:
+      create:
+        notice: Izen yettwacred yettwaɣra
+      destroy:
+        notice: Izen yettwacred ur yettwaɣra ara
     mailboxes:
       heading:
         my_inbox: Tanaka-iw n urmas
@@ -1094,13 +1067,14 @@ kab:
     offline:
       heading: Asekles GPX n war tuqqna
       message: Anagraw n usekles d tuzna n ifuyla GPX ulac-it tura.
-    georss:
-      title: Lǧerrat GPS n OpenStreetMap
-    description:
-      description_with_count:
-        one: Afaylu GPX s %{count} n tneqqiḍt n %{user}
-        other: Afaylu GPX s %{count} n tneqqiḍin n %{user}
-      description_without_count: Afaylu GPX n %{user}
+    feeds:
+      show:
+        title: Lǧerrat GPS n OpenStreetMap
+      description:
+        description_with_count:
+          one: Afaylu GPX s %{count} n tneqqiḍt n %{user}
+          other: Afaylu GPX s %{count} n tneqqiḍin n %{user}
+        description_without_count: Afaylu GPX n %{user}
   application:
     require_cookies:
       cookies_needed: Yettban d akken inagan n tuqqna nsan ɣef iminig-ik. Rmed-iten
@@ -1154,8 +1128,6 @@ kab:
       edits: Tiẓrigin
       traces: Lǧeṛṛat
       notes: Tizmilin n tkarḍa
-      remove as friend: Kkes seg imdukkal
-      add as friend: Rnu amdakkel
       ct status: 'Tiwtilin n iwiziw:'
       ct declined: Yettwagi
       email address: 'Tansa imayl:'
@@ -1198,6 +1170,13 @@ kab:
       user:
         summary_html: '%{name} yettwarna si %{ip_address} di %{date}'
         summary_no_ip_html: '%{name} yettwarna di  %{date}'
+    changeset_comments:
+      page:
+        when: Melmi
+        comment: Awennit
+    diary_comments:
+      page:
+        post: Amagrad
     suspended:
       title: Amiḍan yettwaseḥbes
       heading: Amiḍan yettwaseḥbes
index 4e71d674392ac90fc7a9649e1e8bfa9175231dad..34fd149fd591cc4e9f4d8d75a8b0635adb972d2e 100644 (file)
@@ -203,10 +203,6 @@ kk-cyrl:
       current email address: Ағымдағы е-пошта мекенжайы
       openid:
         link text: бұл не?
-      public editing:
-        heading: Жария өңдеу
-        enabled link text: бұл не?
-        disabled link text: Неге өзгерістер енгізе алмаймын?
       contributor terms:
         heading: Жобаға қатысу шарттары
         link text: бұл не?
@@ -320,14 +316,11 @@ kk-cyrl:
       title: Өңдеме дестелері
       title_user: '%{user} жасаған өңдемелер дестелері'
       title_user_link_html: '%{user_link} жасаған өңдеме дестелері'
-      title_friend: Достарымның өңдемелер дестелері
       load_more: Көбірек жүктеу
       feed:
         title: Өңдеме дестесі %{id}
         closed: Жабық
         belongs_to: Автор
-    heading:
-      title: Өңдеме дестесі %{id}
     show:
       title: 'Өңдеме дестесі: %{id}'
       discussion: Талқылау
@@ -340,18 +333,17 @@ kk-cyrl:
       nodes: Нүктелер (%{count})
       ways: Сызықтар (%{count})
       relations: Қатынастар (%{count})
+  changeset_subscriptions:
+    heading:
+      title: Өңдеме дестесі %{id}
   dashboards:
     contact:
       km away: Бұдан %{count} км жерде
       m away: Бұдан %{count} м жерде
     popup:
       your location: Орналасқан жеріңіз
-      friend: Дос
     show:
       title: Ақпарат панелім
-      my friends: Достарым
-      friends_changesets: достардың өңдеме дестелері
-      friends_diaries: Достардың күнделік жазбалары
   diary_entries:
     new:
       title: Жаңа күнделік жазбасы
@@ -359,7 +351,6 @@ kk-cyrl:
       location: Орналасуы
     index:
       title: Қолданушылардың күнделіктері
-      title_friends: Достардың күнделіктері
       user_title: '%{user} күнделігі'
       in_language_title: '%{language} тіліндегі күнделік жазбалары'
       new: Жаңа күнделік жазбасы
@@ -388,10 +379,6 @@ kk-cyrl:
       confirm: Құптау
     subscribe:
       button: Талқыға жазылу
-  diary_comments:
-    page:
-      when: Қашан
-      comment: Пікір
   doorkeeper:
     flash:
       applications:
@@ -404,15 +391,6 @@ kk-cyrl:
   errors:
     not_found:
       title: Файл табылмады
-  friendships:
-    make_friend:
-      heading: '%{user} достарға қосу керек пе?'
-      button: Достарға қосу
-    remove_friend:
-      heading: '%{user} достардан жою керек пе?'
-      button: Достардан жою
-      success: '%{name} достардан жойылды.'
-      not_a_friend: '%{name} досыңыз емес.'
   geocoder:
     search:
       title:
@@ -917,7 +895,7 @@ kk-cyrl:
       hi: Сәлеметсіз бе, %{to_user},
       header: 'OpenStreetMap қолданушысы %{from_user} сізге хат жіберді. Тақырыбы:
         %{subject}'
-    friendship_notification:
+    follow_notification:
       hi: Сәлеметсіз бе, %{to_user},
     gpx_failure:
       hi: Сәлеметсіз бе, %{to_user},
@@ -943,9 +921,11 @@ kk-cyrl:
       unread_button: Оқылмаған деп белгілеу
       destroy_button: Жою
       back: Артқа
-    mark:
-      as_read: Хатқа оқылды деген белгі қойдыңыз
-      as_unread: Хатқа оқылмады деген белгі қойдыңыз
+    read_marks:
+      create:
+        notice: Хатқа оқылды деген белгі қойдыңыз
+      destroy:
+        notice: Хатқа оқылмады деген белгі қойдыңыз
     mailboxes:
       messages_table:
         from: Кімнен
@@ -1186,12 +1166,15 @@ kk-cyrl:
       send message: Хат жіберу
       diary: Күнделік
       traces: Бағдарлары
-      remove as friend: Достардан жою
       mapper since: 'Тіркелген күні:'
     lists:
       show:
         title: Қолданушылар
         heading: Қолданушылар
+    changeset_comments:
+      page:
+        when: Қашан
+        comment: Пікір
   user_blocks:
     helper:
       block_duration:
index d7ad551fc1e3dced5e657aacb23ed5e9c83033e9..918b9d6836e2cd55061c2bd39236769eaf0da9bd 100644 (file)
@@ -98,8 +98,6 @@ km:
   accounts:
     edit:
       title: កែប្រែគណនី​
-      public editing:
-        disabled link text: មូលហេតុអ្វី​ ខ្ញុំមិនអាចកែប្រែបាន​?
     update:
       success_confirm_needed: ព័ត៌មានអ្នកប្រើប្រាស់​ បានបន្ទាន់សម័យដោយជោគជ័យ​។ សូមពិនិត្យមើលអ៊ីមែលរបស់អ្នក
         ដើម្បីបញ្ជាក់អាសយដ្ឋានអ៊ីមែលថ្មីរបស់អ្នក។
@@ -166,7 +164,6 @@ km:
     index:
       title: សំណុំបន្លាស់ប្ដូរ
       title_user: សំណុំបន្លាស់ប្ដូរធ្វើដោយ %{user}
-      title_friend: សំណុំបន្លាស់ប្ដូរធ្វើដោយមិត្តភក្ដិខ្ញុំ
       title_nearby: សំណុំបន្លាស់ប្ដូរធ្វើដោយអ្នកប្រើប្រាស់ក្បែរៗអ្នក
       empty: រកមិនឃើញសំណុំបន្លាស់ប្ដូរទេ។
       empty_area: គ្មានសំណុំបន្លាស់ប្ដូរនៅក្នុងតំបន់នេះទេ។
@@ -197,8 +194,6 @@ km:
     contact:
       km away: ចម្ងាយ %{count} គ.ម.
       m away: ចម្ងាយ %{count} ម.
-    show:
-      no friends: អ្នកមិនទាន់បានបន្ថែមមិត្តណាមួយនៅឡើយទេ​។
   diary_entries:
     new:
       title: ប្រកាសកំណត់ហេតុថ្មី
@@ -207,7 +202,6 @@ km:
       use_map_link: ប្រើផែនទី​
     index:
       title: កំណត់ហេតុរបស់អ្នកប្រើប្រាស់
-      title_friends: កំណត់ហេតុរបស់មិត្តភក្ដិ
       title_nearby: កំណត់ហេតុរបស់អ្នកប្រើប្រាស់នៅក្បែរៗ
       user_title: កំណត់ហេតុរបស់ %{user}
       in_language_title: ប្រកាសន៍កំណត់ហេតុជា %{language}
@@ -236,13 +230,6 @@ km:
       confirm: បញ្ជាក់​
     location:
       location: ទីតាំង​៖​
-  friendships:
-    make_friend:
-      success: '%{name} ឥឡូវនេះជាមិត្តរបស់អ្នក​។'
-      failed: អភ័យទោស, បរាជ័យក្នុងការបន្ដែម %{name} ជាមិត្ត​។
-      already_a_friend: អ្នកគឺជាមិត្តជាមួយ %{name} រួចហើយ​។
-    remove_friend:
-      not_a_friend: '%{name} មិនមែនជាមិត្តរបស់អ្នកទេ​។'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -606,9 +593,7 @@ km:
       hi: សួស្ដី %{to_user},
     message_notification:
       hi: សួស្ដី %{to_user},
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} បានបន្ថែមអ្នកជា​មិត្ត​'
-      had_added_you: '%{user} បានបន្ថែមអ្នកជា​មិត្ត​នៅ [OpenStreetMap] ។'
+    follow_notification:
       see_their_profile: អ្នកអាចមើល​ប្រវត្តិរូប​របស់ពួកគេនៅ %{userurl} និងបន្ថែម​ពួកគេជាមិត្តរបស់អ្នកវិញបើអ្នកចង់​។
     signup_confirm:
       subject: '[OpenStreetMap] សូមស្វាគមន៍មកកាន់ OpenStreetMap'
@@ -730,8 +715,6 @@ km:
     show:
       my edits: កំណែប្រែ​របស់ខ្ញុំ​
       edits: កំណែប្រែ​
-      remove as friend: ដកចេញជាមិត្ត​
-      add as friend: បន្ថែមជាមិត្ត​
   notes:
     show:
       title: កំណត់សម្គាល់៖ %{id}
index a58c4e3af0de2bba8605b4a2a96633a7e6154464..4327fb8e162e9307e4498bfbb4254f027aee697c 100644 (file)
@@ -195,8 +195,6 @@ kn:
       external auth: ಬಾಹ್ಯ ದೃಢೀಕರಣ
       openid:
         link text: ಇದು ಏನು?
-      public editing:
-        enabled link text: ಇದು ಏನು?
       contributor terms:
         link text: ಇದು ಏನು?
       save changes button: ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿ
@@ -281,7 +279,6 @@ kn:
     index:
       title: ಬದಲಾವಣೆಗಳು
       title_user: '%{user}ಅವರಿಂದಾದ ಬದಲಾವಣೆಗಳು'
-      title_friend: ನನ್ನ ಗೆಳೆಯರಿಂದಾದ ಬದಲಾವಣೆಗಳು
       title_nearby: ಹತ್ತಿರದ ಬಳಕೆದಾರರಿಂದಾದ ಬದಲಾವಣೆಗಳು
       empty: ಯಾವುದೇ ಬದಲಾವಣೆಗಳು ಸಿಗುತ್ತಿಲ್ಲ.
       empty_area: ಈ ಪ್ರದೇಶದಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲ.
@@ -315,10 +312,6 @@ kn:
       m away: '%{count} ಮೀ ದೂರ'
     popup:
       your location: ನಿಮ್ಮ ಸ್ಥಳ
-      friend: ಗೆಳೆಯ
-    show:
-      my friends: ನನ್ನ ಗೆಳೆಯರು
-      no friends: ನೀವು ಇನ್ನೂ ಯಾವ ಗೆಳೆಯರನ್ನೂ ಸೇರಿಸಿಲ್ಲ.
   diary_entries:
     new:
       title: ದಿನಚರಿಯಲ್ಲಿ ಹೊಸದಾದ ದಾಖಲೆ
@@ -327,7 +320,6 @@ kn:
       use_map_link: ನಕ್ಷೆ ಬಳಸು
     index:
       title: ಬಳಕೆದಾರರ ದಿನಚರಿಗಳು
-      title_friends: ಗೆಳೆಯರ ದಿನಚರಿಗಳು
       title_nearby: ಹತ್ತಿರದ ಬಳಕೆದಾರರ ದಿನಚರಿಗಳು
       user_title: '%{user}ರ ದಿನಚರಿ'
       in_language_title: ದಿನಚರಿ ದಾಖಲಾತಿ %{language}ನಲ್ಲಿ
@@ -370,14 +362,6 @@ kn:
         description: ಓಪನ್‍ಸ್ಟ್ರೀಟ್‍ಮ್ಯಾಪ್ ನಲ್ಲಿ %{user} ಅವರ ಇತ್ತೀಚಿನ ದಿನಚರಿ ದಾಖಲಾತಿಗಳು
       language:
         title: '%{language_name} ಭಾಷೆಯಲ್ಲಿ ಓಪನ್‍ಸ್ಟ್ರೀಟ್‍ಮ್ಯಾಪ್‍ನ ದಿನಚರಿ ದಾಖಲಾತಿಗಳು'
-  diary_comments:
-    page:
-      post: ಪೋಸ್ಟ್ ಮಾಡಿ
-      when: ಯಾವಾಗ
-      comment: ಟಿಪ್ಪಣಿ
-  friendships:
-    make_friend:
-      button: ಸ್ನೇಹಿತರಾಗಿ ಸೇರಿಸಿ
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -691,11 +675,13 @@ kn:
       unread_button: ಓದಿಲ್ಲವೆಂದು ಗುರುತು ಮಾಡಿ
       destroy_button: ಅಳಿಸು
       back: ಹಿಂದಕ್ಕೆ
-    mark:
-      as_read: ಸಂದೇಶ ಓದಾಲಾಗಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ
-      as_unread: ಸಂದೇಶ ಓದಾಲಾಗಿಲ್ಲ ಎಂದು ಗುರುತು ಮಾಡಿ
     destroy:
       destroyed: ಸಂದೇಶವನ್ನು ಅಳಿಸಿ ಹಾಕಲಾಗಿದೆ
+    read_marks:
+      create:
+        notice: ಸಂದೇಶ ಓದಾಲಾಗಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ
+      destroy:
+        notice: ಸಂದೇಶ ಓದಾಲಾಗಿಲ್ಲ ಎಂದು ಗುರುತು ಮಾಡಿ
     mailboxes:
       messages_table:
         from: ಇಂದ
@@ -855,6 +841,13 @@ kn:
     show:
       my messages: ನನ್ನ ಸಂದೇಶಗಳು
       edits: ಸಂಪಾದನೆಗಳು
+    changeset_comments:
+      page:
+        when: ಯಾವಾಗ
+        comment: ಟಿಪ್ಪಣಿ
+    diary_comments:
+      page:
+        post: ಪೋಸ್ಟ್ ಮಾಡಿ
   user_blocks:
     show:
       created: 'ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ:'
index 900a0c2a81181a92344a52a56fc0858ee30c5537..60949e64046cec258add75b1869658d310b51662 100644 (file)
@@ -280,12 +280,6 @@ ko:
       external auth: 외부 인증
       openid:
         link text: 무엇인가요?
-      public editing:
-        heading: 공개 편집
-        enabled: 활성화했습니다. 익명이 아니며 데이터를 편집할 수 있습니다.
-        enabled link text: 무엇인가요?
-        disabled: 바활성화되어 데이터를 편집할 수 없으며, 모든 이전 편집은 익명입니다.
-        disabled link text: 왜 편집할 수 없나요?
       contributor terms:
         heading: 기여자 약관
         agreed: 새 기여자 약관에 동의했습니다.
@@ -346,7 +340,6 @@ ko:
         readable_summary: 해석 요약본
         informal_translations: 비공식 번역
         continue: 계속
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: 취소
         you need to accept or decline: 계속하려면 새 기여자 약관을 읽고 나서 동의나 거부하세요.
         legale_select: '거주 국가:'
@@ -354,6 +347,8 @@ ko:
           france: 프랑스
           italy: 이탈리아
           rest_of_world: 나머지 국가
+      update:
+        terms accepted: 새 기여자 약관에 동의해 주셔서 감사합니다!
       terms_declined_flash:
         terms_declined_html: 새 기여자 약관에 동의하지 않기로 결정하셨습니다. 자세한 내용은 %{terms_declined_link}를
           참조하세요.
@@ -492,7 +487,6 @@ ko:
       title: 바뀜집합
       title_user: '%{user}님의 바뀜집합'
       title_user_link_html: '%{user_link}님의 바뀜집합'
-      title_friend: 내 친구의 바뀜집합
       title_nearby: 근처 사용자의 바뀜집합
       empty: 찾는 바뀜집합이 없습니다.
       empty_area: 이 지역에 바뀜집합이 없습니다.
@@ -507,17 +501,6 @@ ko:
         created: 만들어짐
         closed: 닫힘
         belongs_to: 저자
-    subscribe:
-      heading: 다음 바뀜집합 토론을 구독하시겠습니까?
-      button: 토론 구독
-    unsubscribe:
-      heading: 다음 바뀜집합 토론의 구독을 취소하시겠습니까?
-      button: 토론 구독 취소
-    heading:
-      title: 바뀜집합 %{id}
-      created_by_html: '%{created}에 의해 %{link_user}이(가) 생성되었습니다.'
-    no_such_entry:
-      heading: 'id에 해당하는 엔트리 없음: %{id}'
     show:
       title: '바뀜집합: %{id}'
       created: '생성 시기: %{when}'
@@ -547,6 +530,19 @@ ko:
       relations_paginated: 관계(%{count}개 중 %{x}-%{y})
     timeout:
       sorry: 죄송합니다, 요청하는 바뀜집합 목록을 가져오는 데 너무 오래 걸렸습니다.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: 다음 바뀜집합 토론을 구독하시겠습니까?
+        button: 토론 구독
+      unsubscribe:
+        heading: 다음 바뀜집합 토론의 구독을 취소하시겠습니까?
+        button: 토론 구독 취소
+    heading:
+      title: 바뀜집합 %{id}
+      created_by_html: '%{created}에 의해 %{link_user}이(가) 생성되었습니다.'
+    no_such_entry:
+      heading: 'id에 해당하는 엔트리 없음: %{id}'
   dashboards:
     contact:
       km away: '%{count}km 거리'
@@ -555,17 +551,12 @@ ko:
     popup:
       your location: 내 위치
       nearby mapper: 근처 매퍼
-      friend: 친구
     show:
       title: 내 대시보드
       no_home_location_html: '%{edit_profile_link}을 하여 집 위치를 설정하면 주변 사용자를 볼 수 있습니다.'
       edit_your_profile: 내 프로파일 편집
-      my friends: 내 친구
-      no friends: 아직 어떠한 친구도 추가하지 않았습니다.
       nearby users: 기타 근처 사용자
       no nearby users: 아직 근처에 매핑을 인정하는 다른 사용자가 없습니다.
-      friends_changesets: 친구의 바뀜집합
-      friends_diaries: 친구의 일기 항목
       nearby_changesets: 근처 사용자의 바뀜집합
       nearby_diaries: 근처 사용자의 일기 항목
   diary_entries:
@@ -576,7 +567,6 @@ ko:
       use_map_link: 지도 사용
     index:
       title: 사용자의 일기
-      title_friends: 친구의 일기
       title_nearby: 근처 사용자의 일기
       user_title: '%{user}의 일기'
       in_language_title: '%{language}의 일기 항목'
@@ -638,16 +628,6 @@ ko:
       button: 토론 구독
     unsubscribe:
       button: 토론 구독 취소
-  diary_comments:
-    index:
-      title: '%{user}님이 추가한 일기 댓글'
-      heading: '%{user}의 일기 댓글'
-      subheading_html: '%{user}님이 추가한 일기 댓글'
-      no_comments: 일기 댓글이 없습니다.
-    page:
-      post: 게시물
-      when: 날짜
-      comment: 의견
   doorkeeper:
     errors:
       messages:
@@ -688,19 +668,6 @@ ko:
     not_found:
       title: 파일을 찾을 수 없습니다
       description: 오픈스트리트맵 서버에서 해당 이름으로 파일/디렉토리/API 작업을 찾을 수 없습니다(HTTP 404).
-  friendships:
-    make_friend:
-      heading: '%{user} 님을 친구로 추가할까요?'
-      button: 친구 추가
-      success: '%{name}님은 이제 친구입니다!'
-      failed: 죄송합니다, %{name}님을 친구로 추가하는 데 실패했습니다.
-      already_a_friend: 이미 %{name}님과 친구입니다.
-      limit_exceeded: 최근에 많은 사용자와 친구가 되었습니다. 친구 추가를 시도하기 전에 잠시 기다리십시오.
-    remove_friend:
-      heading: '%{user}님을 친구 제거할까요?'
-      button: 친구 제거
-      success: '%{name}님을 친구에서 제거했습니다.'
-      not_a_friend: '%{name}님은 친구가 아닙니다.'
   geocoder:
     search:
       title:
@@ -1613,14 +1580,10 @@ ko:
       header_html: '%{from_user}님이 오픈스트리트맵을 통해 %{subject} 제목으로 된 메시지를 보냈습니다:'
       footer: 또한 %{readurl}에서 메시지를 읽을 수 있고 %{replyurl}에서 저자에게 메시지를 보낼 수 있습니다.
       footer_html: 또한 %{readurl}에서 메시지를 읽을 수 있고 %{replyurl}에서 저자에게 메시지를 보낼 수 있습니다.
-    friendship_notification:
+    follow_notification:
       hi: 안녕하세요 %{to_user}님,
-      subject: '[OpenStreetMap] %{user}님이 당신을 친구로 추가했습니다'
-      had_added_you: '%{user}님이 당신을 오픈스트리트맵 친구로 추가했습니다.'
       see_their_profile: '%{userurl}에서 그들의 프로필을 볼 수 있습니다.'
       see_their_profile_html: '%{userurl}에서 그들의 프로필을 볼 수 있습니다.'
-      befriend_them: 또한 %{befriendurl}에서 친구로 추가할 수 있습니다.
-      befriend_them_html: 또한 %{befriendurl}에서 친구로 추가할 수 있습니다.
     gpx_details:
       details: '파일 세부 정보:'
       filename: 파일 이름
@@ -1629,7 +1592,7 @@ ko:
       tags: 태그
     gpx_failure:
       hi: 안녕하세요 %{to_user}님,
-      failed_to_import: '가져오기에 실패했습니다. 오류는 다음과 같습니다:'
+      failed_to_import: GPS 트레이스로 파일을 가져오지 못한 것 같습니다.
       subject: '[OpenStreetMap] GPX 가져오기 실패'
     gpx_success:
       hi: 안녕하세요 %{to_user}님,
@@ -1751,11 +1714,13 @@ ko:
       back: 뒤로
       wrong_user: '''%{user}''님으로 로그인하고 있지만 읽기를 요청한 메시지가 해당 사용자에게 보내지지 않았습니다. 읽으려면
         올바른 사용자로 로그인하세요.'
-    mark:
-      as_read: 메시지를 읽은 것으로 표시
-      as_unread: 메시지를 읽지 않은 것으로 표시
     destroy:
       destroyed: 메시지가 삭제됨
+    read_marks:
+      create:
+        notice: 메시지를 읽은 것으로 표시
+      destroy:
+        notice: 메시지를 읽지 않은 것으로 표시
     mailboxes:
       heading:
         my_inbox: 받은 쪽지함
@@ -1906,6 +1871,8 @@ ko:
       preview: 미리 보기
       help: 도움말
     pagination:
+      changeset_comments:
+        newer: 새 의견
       diary_comments:
         older: 이전 의견
         newer: 새 의견
@@ -2439,13 +2406,14 @@ ko:
     offline:
       heading: GPX 저장소 오프라인
       message: GPX 파일 저장소와 올리기 시스템은 현재 사용할 수 없습니다.
-    georss:
-      title: OpenStreetMap GPS 궤적
-    description:
-      description_with_count:
-        one: '%{user}에서의 점 %{count}개로 된 GPX 파일'
-        other: '%{user}에서의 점 %{count}개으로 된 GPX 파일'
-      description_without_count: '%{user}에서의 GPX 파일'
+    feeds:
+      show:
+        title: OpenStreetMap GPS 궤적
+      description:
+        description_with_count:
+          one: '%{user}에서의 점 %{count}개로 된 GPX 파일'
+          other: '%{user}에서의 점 %{count}개으로 된 GPX 파일'
+        description_without_count: '%{user}에서의 GPX 파일'
   application:
     permission_denied: 이 작업에 접근할 권한이 없습니다
     require_cookies:
@@ -2590,7 +2558,6 @@ ko:
         privacy_policy_title: 이메일 주소 섹션을 포함한 OSMF 개인 정보 보호 정책
         contributor_terms: 기여자 약관
       continue: 가입하기
-      terms accepted: 새 기여자 약관에 동의해 주셔서 감사합니다!
       email_help:
         privacy_policy: 개인정보처리방침
         privacy_policy_title: 이메일 주소 섹션을 포함한 OSMF 개인 정보 보호 정책
@@ -2625,8 +2592,6 @@ ko:
       edits: 편집
       traces: 궤적
       notes: 지도 참고
-      remove as friend: 친구 제거
-      add as friend: 친구 추가
       mapper since: '가입일:'
       last map edit: '마지막 지도 편집:'
       no activity yet: 아직 활동이 없습니다
@@ -2694,6 +2659,20 @@ ko:
       user:
         summary_html: '%{name}님이 %{date}에 %{ip_address}에서 만들어짐'
         summary_no_ip_html: '%{name}이(가) %{date}에 만들어짐'
+    comments:
+      index:
+        heading_html: '%{user}님의 의견'
+        no_comments: 의견 없음
+    changeset_comments:
+      page:
+        when: 날짜
+        comment: 의견
+    diary_comments:
+      index:
+        title: '%{user}님이 추가한 일기 댓글'
+      page:
+        post: 게시물
+        comment: 의견
     suspended:
       title: 계정 정지
       heading: 계정 정지
index cedeb1d3c68aaf08574dd1370b45cdac5ab42ffe..56c6360cca71576fc634ec8413927747e974c7fe 100644 (file)
@@ -339,7 +339,6 @@ ksh:
       heading: Mer han keine Metmaacher, dä „%{user} “ heiße däät.
     show:
       traces: Opnahme
-      remove as friend: uß dä Frünndschaffs-Leß nämme
       create_block: Donn heh dä Metmaacher schpärre
       activate_user: Donn heh dä Metmaacher aktevehre
       confirm_user: Donn heh dä Metmaacher beschtähtejje
index be1fb5158157d13ff145c889647a6f7050064ef3..fb54e55ffec88f6f44434337e0fec81e3629d6c3 100644 (file)
@@ -251,13 +251,6 @@ ku-Latn:
       external auth: Teyîdkirina xaricî
       openid:
         link text: Ev çi ye?
-      public editing:
-        heading: Guherandina ji her kesê re vekirî
-        enabled: Çalak e. Ne anonîm e û dikare daneyan biguherîne.
-        enabled link text: Ev çiye?
-        disabled: Neçalak e û nikare daneyan biguherîne, hemû guherandinên berê anonîm
-          in.
-        disabled link text: Ez çima nikarim biguherînim?
       contributor terms:
         heading: Şertên beşdariyê
         agreed: Te Şertên Beşdariyê ya nû qebûl kir
@@ -336,6 +329,9 @@ ku-Latn:
           france: Frensa
           italy: Îtalya
           rest_of_world: Cihên din ên dinyayê
+      update:
+        terms accepted: Em spasiya te dikin ji bo ku te şertên beşdariyê yê nû qebûl
+          kirǃ
       terms_declined_flash:
         terms_declined_html: Em xengîn bûn ji ber te qerar da ku Şertûmercên Bikaranînê
           qebûl nekî. Ji bo agahiyên zêdetir, ji kerema xwe binêre %{terms_declined_link}.
@@ -451,7 +447,6 @@ ku-Latn:
       title: Desteya guhartinan
       title_user: Desteyên guhartinan yên ji alî %{user} ve
       title_user_link_html: Desteyên guhartinan yên ji alî %{user_link} ve
-      title_friend: Desteyên guhartinan yên ji aliyê hevalên te ve
       title_nearby: Desteyên guhartinan yên ji alî bikarhênerên nêz ve
       empty: Desteyên guhartinan nehate dîtin.
       empty_area: Li vê derê desteyên guhartinan tine ne.
@@ -499,19 +494,14 @@ ku-Latn:
     popup:
       your location: Cihê te
       nearby mapper: Nexşesazên nêz
-      friend: Heval
     show:
       title: Panela Kontrolê
       no_home_location_html: '%{edit_profile_link} û cihê mala xwe saz bike ji bo
         dîtina bikarhênerên nêzî xwe.'
       edit_your_profile: Profîla xwe biguherîne
-      my friends: Hevalên min
-      no friends: Te hêj ji xwe re hevalek çênekiriye.
       nearby users: Bikarhênerên din ên nêz
       no nearby users: Li nêzî te bikarhênerekî din yê ku cihê xwe diyar kiribe tine
         ye.
-      friends_changesets: desteyên guhartinan yên hevalan
-      friends_diaries: nivîsên rojane yên hevalan
       nearby_changesets: desteyên guhartinan yên bikarhênerên nêz
       nearby_diaries: nivîsên rojane yên bikarhênerên nêz
   diary_entries:
@@ -522,7 +512,6 @@ ku-Latn:
       use_map_link: Nexşeyê bi kar bîne
     index:
       title: Rojnivîskên bikarhêneran
-      title_friends: Rojnivîskên hevalan
       title_nearby: Rojnivîskên Bikarhênerên nêzîk
       user_title: Rojnivîska %{user}
       in_language_title: Nivîsên Rojane yên bi %{language}
@@ -579,16 +568,6 @@ ku-Latn:
       all:
         title: Nivîsên rojane yên OpenStreetMapê
         description: Nivîsên rojane yên bikarhênerên OpenStreetMapê
-  diary_comments:
-    index:
-      title: Şîroveyên Rojnivîskê ji aliyê %{user} ve hatiye kirin
-      heading: Şîroveyên Rojnivîskê yên %{user}
-      subheading_html: Şîroveyên Rojnivîskê ji aliyê %{user} ve hatiye tevlîkirin
-      no_comments: Ti şîroveyeke rojnivîskê nîne
-    page:
-      post: Nivîs
-      when: Kengê
-      comment: Şîrove
   doorkeeper:
     flash:
       applications:
@@ -613,21 +592,6 @@ ku-Latn:
       title: Dosye peyda nebû
       description: Ti kiryara dosye/pelrêç/APIyê peyda nebû bi wê navê li ser servera
         OpenStreetMapê (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Bila %{user} li hevalên te were zêdekirin?
-      button: Bibe heval
-      success: '%{name} niha hevalê te yeǃ'
-      failed: Bibore, %{name} li hevalên te nikarîbû were zêdekirin.
-      already_a_friend: Tu bi %{name} re jixwe heval î.
-      limit_exceeded: Te vê dawiyê bi gelek bikarhêneran re bû heval. Ji kerema xwe
-        berî ku hevalbûna bi zêdetir bikarhêneran re biceribînî, hinekî bêhna xwe
-        vede.
-    remove_friend:
-      heading: Bila %{user} ji hevaltiyê were derxistin?
-      button: Ji hevaltiyê derxe
-      success: '%{name} ji hevalên te hate derxistin.'
-      not_a_friend: '%{name} ne hevalekî/eke te ye.'
   geocoder:
     search:
       title:
@@ -1560,16 +1524,10 @@ ku-Latn:
         dikarî bersiv bidî ê go ji te re şand.
       footer_html: Tu dikarî peyamê li ser %{readurl} jî bixwînî û li ser %{replyurl}
         jî dikarî cewab bidî ê ku ji te re şand.
-    friendship_notification:
+    follow_notification:
       hi: Merheba %{to_user},
-      subject: '[OpenStreetMap] %{user} te wek heval lê zêde kir'
-      had_added_you: Bikarhêner %{user} li ser OpenStreetMapê te wek heval lê zêde
-        kir.
       see_their_profile: Ji ser %{userurl} dikarî binêrî profîlê wan.
       see_their_profile_html: Ji ser %{userurl} dikarî binêrî profîlê wan.
-      befriend_them: Herwiha ji ser %{befriendurl} wan dikarî wek heval lê zêde bikî.
-      befriend_them_html: Herwiha ji ser %{befriendurl} wan dikarî wek heval lê zêde
-        bikî.
     gpx_failure:
       hi: Merheba %{to_user},
       failed_to_import: 'anîna dosyeyê bi ser neket. Çewtî ev e:'
@@ -1723,11 +1681,13 @@ ku-Latn:
       wrong_user: Te wek `%{user}' têket, lê peyama ku dihate xwestin ku tu wê bixwînî
         ji aliyê wî/wê bikarhênerê ve an jî ji wî/wê bikarhênerê re nehatiye şandin.
         Xêra xwe ji bo xwendinê wekî bikarhênerê rast têkeve.
-    mark:
-      as_read: Peyam wek xwendî hate nîşankirin
-      as_unread: Peyam wek nexwendî hate nîşankirin
     destroy:
       destroyed: Payam hate jêbirin
+    read_marks:
+      create:
+        notice: Peyam wek xwendî hate nîşankirin
+      destroy:
+        notice: Peyam wek nexwendî hate nîşankirin
     mailboxes:
       heading:
         my_inbox: Qutiya min a hatiyan
@@ -2203,13 +2163,14 @@ ku-Latn:
     offline:
       heading: Xizmeta depokirinê ya dosyeyên GPXê offline ye
       message: Sîstema barkirin û depokirina dosyeyên GPXê niha neberdest e
-    georss:
-      title: Şopên GPSê yê OpenStreetMapê
-    description:
-      description_with_count:
-        one: Dosyeya GPXê yê bi %{count} nuqteyê ya ji %{user}
-        other: Dosyeya GPXê yê bi %{count} nuqteyan ya ji %{user}
-      description_without_count: Dosyeya GPXê yê ji %{user}
+    feeds:
+      show:
+        title: Şopên GPSê yê OpenStreetMapê
+      description:
+        description_with_count:
+          one: Dosyeya GPXê yê bi %{count} nuqteyê ya ji %{user}
+          other: Dosyeya GPXê yê bi %{count} nuqteyan ya ji %{user}
+        description_without_count: Dosyeya GPXê yê ji %{user}
   application:
     permission_denied: Destûra te tine ji bo gihîna vê kiryarê
     require_cookies:
@@ -2323,8 +2284,6 @@ ku-Latn:
       display name description: Navê te yê ku ji her kesê re tê xuyan. Tu paşê dikarî
         vê navê ji hevyazên xwe biguherînî.
       continue: Qeyd bibe
-      terms accepted: Em spasiya te dikin ji bo ku te şertên beşdariyê yê nû qebûl
-        kirǃ
       use external auth: An bi yek ji aplîkasyonên alîyê sêyem qeyd bibe
     no_such_user:
       title: Bikarhênerek wek vê tine
@@ -2351,8 +2310,6 @@ ku-Latn:
       edits: Guhartin
       traces: Şop
       notes: Notên nexşeyê
-      remove as friend: Ji hevaltiyê derxe
-      add as friend: Bibe heval
       mapper since: Destpêka nexşesaziyêː
       ct status: Şertên beşdariyêː
       ct undecided: Bêqerar
@@ -2407,6 +2364,15 @@ ku-Latn:
       user:
         summary_html: '%{name} ji aliyê %{ip_address} ve di %{date} de hate çêkirin'
         summary_no_ip_html: '%{name} di %{date} de hate çêkirin'
+    changeset_comments:
+      page:
+        when: Kengê
+        comment: Şîrove
+    diary_comments:
+      index:
+        title: Şîroveyên Rojnivîskê ji aliyê %{user} ve hatiye kirin
+      page:
+        post: Nivîs
     suspended:
       title: Hesab hatiye rawestandin
       heading: Hesab hatiye rawestandin
index 83c635c61a2bc4a47e40d74f1cf91273057ac464..b65dc29e52616d9c42303add9196df2f9eeadb5a 100644 (file)
@@ -16,7 +16,8 @@
 lb:
   time:
     formats:
-      friendly: '%e %B %Y um %H:%M Auer'
+      friendly: '%-d. %B %Y um %H:%M Auer'
+      blog: '%-d. %B %Y'
   helpers:
     file:
       prompt: Fichier eraussichen
@@ -43,6 +44,10 @@ lb:
         create: Spären
         update: Spär aktualiséieren
   activerecord:
+    errors:
+      models:
+        user_mute:
+          is_already_muted: ass scho stommgeschalt
     models:
       acl: Zougrëffssteierlëscht
       changeset: Set vun Ännerungen
@@ -246,13 +251,6 @@ lb:
       external auth: Extern Authentifikatioun
       openid:
         link text: wat ass dat?
-      public editing:
-        heading: Ëffentlecht Beaarbechten
-        enabled: Aktivéiert. Net anonym a kann Daten änneren.
-        enabled link text: wat ass dëst?
-        disabled: Déaktivéiert an kann keng Daten änneren, all vireg Beaarbeschtungen
-          sinn anonym.
-        disabled link text: Firwat kann ech net änneren?
       contributor terms:
         heading: Bedéngungen fir Matwierkender
         agreed: Dir hutt den neien Bedéngungen fir Matwierkender zougestëmmt.
@@ -267,6 +265,7 @@ lb:
       delete_account: Benotzerkont läschen...
     go_public:
       heading: Ëffentlecht Beaarbechten
+      find_out_why: fannt eraus firwat
       make_edits_public_button: All meng Ännerunge ëffentlech maachen
     update:
       success_confirm_needed: Benotzerinformatioun aktualiséiert. Checkt Är E-Mail
@@ -306,6 +305,7 @@ lb:
         consider_pd: Zousätzlech zu den uewe genannte Konditioune betruechten ech
           meng Bäiträg als gemengfräi (domaine public).
         consider_pd_why: wat ass dat?
+        informal_translations: informell Iwwersetzungen
         continue: Weider
         cancel: Ofbriechen
         legale_select: 'Sicht wgl. d''Land eraus wou Dir wunnt:'
@@ -316,6 +316,8 @@ lb:
       terms_declined_flash:
         terms_declined_link: dës Wiki-Säit
   browse:
+    deleted_ago_by_html: '%{time_ago} vum %{user} geläscht'
+    edited_ago_by_html: '%{time_ago} vum %{user} geännert'
     version: Versioun
     in_changeset: Set vun Ännerungen
     anonymous: anonym
@@ -360,8 +362,8 @@ lb:
       title: Net fonnt
     timeout:
       title: Zäitdepassementsfeeler
-      sorry: Et huet leider ze laang gedauert, 'Donnéeën fir %{type} mat der ID %{id}
-        ofzeruffen.
+      sorry: Et huet leider ze laang gedauert, d'Donnéeë fir den Objet vum Typ %{type}
+        mat der ID %{id} opzeruffen.
       type:
         node: Knuet
         way: Wee
@@ -397,7 +399,7 @@ lb:
       title: Objetsoffro
       introduction: Klick op d'Kaart, fir Objeten an der Noperschaft ze fannen.
       nearby: Objeten an der Noperschaft
-      enclosing: Ëmschléißend Objeten
+      enclosing: Ëmschléissend Objeten
   old_elements:
     index:
       node:
@@ -408,25 +410,52 @@ lb:
         title_html: 'Versioune vun der Relatioun: %{name}'
   nodes:
     not_found_message:
-      sorry: 'Entschëllegt, den Node #%{id} konnt net fonnt ginn.'
+      sorry: 'De Knuet #%{id} gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, d'Donnéeë fir de Knuet mat der ID %{id}
+        opzeruffen.
+  old_nodes:
+    not_found_message:
+      sorry: 'De Knuet #%{id}, Versioun %{version}, gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, den Historique vum Knuet mat der ID
+        %{id} opzeruffen.
   ways:
     not_found_message:
-      sorry: 'Entschëllegt, de Wee #%{id} konnt net fonnt ginn.'
+      sorry: 'De Wee #%{id} gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, d'Donnéeë fir de Wee mat der ID %{id}
+        opzeruffen.
+  old_ways:
+    not_found_message:
+      sorry: 'De Wee #%{id}, Versioun %{version}, gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, den Historique vum Wee mat der ID %{id}
+        opzeruffen.
   relations:
     not_found_message:
-      sorry: 'Entschëllegt, d''Relatioun #%{id} konnt net fonnt ginn.'
+      sorry: 'D''Relatioun #%{id} gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, d'Donnéeë fir d'Relatioun mat der ID
+        %{id} opzeruffen.
+  old_relations:
+    not_found_message:
+      sorry: 'D''Relatioun #%{id}, Versioun %{version}, gouf leider net fonnt.'
+    timeout:
+      sorry: Et huet leider ze laang gedauert, den Historique vun der Relatioun mat
+        der ID %{id} opzeruffen.
   changeset_comments:
     feeds:
       comment:
-        comment: 'Neien Diskussiounsbäitrag zum Ännerungssaz #%{changeset_id} vun
+        comment: 'Neien Diskussiounsbäitrag zum Ännerungssaz #%{changeset_id} vum
           %{author}'
         commented_at_by_html: '%{when} vum %{user} aktualiséiert'
       show:
         title_all: Diskussioun iwwer den OpenStreetMap-Ännerungssaz
         title_particular: 'Diskussioun iwwer den OpenStreetMap-Ännerungssaz #%{changeset_id}'
       timeout:
-        sorry: Leider ass d'Lëscht mat de Commentairë vun den Ännerungssätz, déis
-          du ugefuerdert hues, fir den Ofruff ze laang.
+        sorry: Leider huet et ze laang gedauert fir d'Lëscht mat de Commentairë vun
+          den Ännerungssätz, déi Dir ugefrot hutt, opzeruffen.
   changesets:
     changeset:
       no_edits: (keng Ännerungen)
@@ -435,7 +464,6 @@ lb:
       title: Sette vun Ännerungen
       title_user: Sette vun Ännerunge vum %{user}
       title_user_link_html: Ännerunge vum %{user_link}
-      title_friend: Ännerungs-Sette vu menge Frënn
       title_nearby: Gruppe vun Ännerunge vu Benotzer nobäi
       empty: Keng Gruppe vun Ännerunge fonnt.
       empty_area: Keng Gruppe vun Ännerungen an dëser Géigend.
@@ -482,6 +510,16 @@ lb:
       sorry: 'Entschëllegt, den Changeset #%{id} konnt net fonnt ginn.'
     timeout:
       sorry: Et leider ze laang gedauert, déi ugefuerdert Ännerungssätz ofzeruffen.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Déi follgend Ännerungssaz-Diskussioun abonéieren?
+        button: Diskussioun abonéieren
+      unsubscribe:
+        heading: Déi follgend Ännerungssaz-Diskussioun ofbestellen?
+        button: Diskussioun ofbestellen
+    no_such_entry:
+      heading: 'Keen Antrag mat der ID: %{id}'
   dashboards:
     contact:
       km away: '%{count} km ewech'
@@ -490,19 +528,14 @@ lb:
     popup:
       your location: Äre Standuert
       nearby mapper: Mapper an der Emgéigend
-      friend: Frënn
     show:
       title: Meng Iwwersiichtssäit
       no_home_location_html: '%{edit_profile_link} a lee deng Heemecht fest, fir Benotzer
         an der Noperschaft ze gesinn.'
       edit_your_profile: Äre Profil änneren
-      my friends: Meng Frënn
-      no friends: Dir hutt nach keng Frënn derbäigesat.
       nearby users: Aner Benotzer nobäi
       no nearby users: Et gi keng aner Benotzer déi hiren Standort an der Géigend
         hunn.
-      friends_changesets: Ännerungssätz vun dénge Frënn
-      friends_diaries: Blogs vun denge Frënn
       nearby_changesets: Ännerungssätz vu Benotzer an der Noperschaft
       nearby_diaries: Blogs vun Benotzer an der Emgéigend.
   diary_entries:
@@ -513,7 +546,6 @@ lb:
       use_map_link: Kaart benotzen
     index:
       title: Blogge vun de Benotzer
-      title_friends: Blogge vun dénge Frënn
       title_nearby: Blogge vu Benotzer an dénger Noperschaft
       user_title: Blog vum %{user}
       in_language_title: Blog-Anträg op %{language}
@@ -538,8 +570,8 @@ lb:
     no_such_entry:
       title: Blogantrag net fonnt
       heading: Kee Blogantrag mat der Nummer %{id}
-      body: Mir konnte leider kee Blogantrag oder Commentaire mat der Nummer %{id}
-        fannen. Du hues dech méiglecherweis vertippt oder hues en ongëltege Link opgemaach.
+      body: Leider gëtt et kee Blogantrag oder Commentaire mat der ID %{id}. Dir hutt
+        Iech méiglecherweis vertippt oder op en ongültege Link geklickt.
     diary_entry:
       posted_by_html: Vum %{link_user} matgedeelt de(n) %{created} op %{language_link}.
       updated_at_html: Lescht Aktualiséierung de(n) %{updated}
@@ -572,21 +604,21 @@ lb:
       all:
         title: OpenStreetMap Blogbäiträg
         description: Neiest Bloganträg vun OpenStreetMap-Benotzer
-  diary_comments:
-    index:
-      title: Tagebuch Kommentarer bäigefüügt vum %{user}
-      heading: '%{user}''s Tagebuch Kommentarer'
-      subheading_html: Tagebuch Kommentarer bäigefüügt vum %{user}
-      no_comments: Keng Blog-Commentairen
-    page:
-      post: Blogantrag
-      when: Wéini
-      comment: Bemierkung
+    subscribe:
+      button: Diskussioun abonéieren
+    unsubscribe:
+      button: Diskussioun ofbestellen
   doorkeeper:
     flash:
       applications:
         create:
           notice: Applikatioun registréiert.
+    scopes:
+      address: Är physesch Adress weisen
+      email: Är E-Mail-Adress weisen
+      openid: Äre Kont authentifizéieren
+      phone: Är Telefonsnummer weisen
+      profile: Är Profilinformatioune weisen
   errors:
     contact:
       contact_url_title: Erklärung vu verschiddene Kontaktkanäl
@@ -594,24 +626,16 @@ lb:
       contact_the_community_html: Dir kënnt gären d'OpenStreetMap-Communautéit %{contact_link},
         wann Dir ee futtisse Link oder e Feeler fannt. Notéiert Iech déi exakt URL
         vun Ärer Ufro.
+    bad_request:
+      title: Ongülteg Ufro
+      description: D'Operatioun, déi Dir um OpenStreetMap-Server ugefrot hutt, ass
+        ongülteg (HTTP 400)
     forbidden:
       title: Verbueden
+      description: D'Operatioun, déi Dir um OpenStreetMap-Server ugefrot hutt, ass
+        nëmme fir Administrateure verfügbar (HTTP 403)
     not_found:
       title: Fichier gouf net fonnt
-  friendships:
-    make_friend:
-      heading: '%{user} als Frënd derbäisetzen?'
-      button: Als Frënd derbäisetzen
-      success: '%{name} ass elo Äre Frënd!'
-      failed: Pardon, %{name} konnt net als Frënd derbäigesat ginn.
-      already_a_friend: Dir sidd schonn de Frënd vum %{name}.
-      limit_exceeded: Du hues dech a leschter Zäit mat ville Benotzer ugefrënnt. Wannechgelift
-        waart eng Zäit, iers de versichs, weider Frënn ze fannen.
-    remove_friend:
-      heading: Frënd %{user} ewechmaachen?
-      button: Frënd ewechmaachen
-      success: '%{name} gouf als Äre Frënd ewechgeholl.'
-      not_a_friend: '%{name} ass kee vun Äre Frënn.'
   geocoder:
     search:
       title:
@@ -947,7 +971,9 @@ lb:
           wreck: Wrack
           "yes": Historesch Plaz
         information:
+          board: Informatiounstafel
           map: Kaart
+          office: Touristebüro
           terminal: Informatiounsterminal
           sign: Informatiounsschëld
         junction:
@@ -1478,12 +1504,12 @@ lb:
       disclaimer:
         intro: 'Iers de deng Meldung un d''Websäitmoderatore schécks, stell wannechgelift
           sécher, datt:'
-        not_just_mistake: Du bass dir sécher, datt däi Problem net nëmmen e Feeler
-          ass.
-        unable_to_fix: Du kanns dëse Problem selwer oder mat Hëllef vun eise Communautéitsmemberen
-          net léisen
-        resolve_with_user: Du hues ewell versicht, de Problem mam zoustännege Benotzer
-          ze léisen.
+        not_just_mistake: Dir sidd Iech sécher, datt de Problem net nëmmen e Feeler
+          ass
+        unable_to_fix: Dir kritt de Problem net selwer oder mat der Hëllef vu Communautéitsmembere
+          geléist
+        resolve_with_user: Dir hutt ewell probéiert de Problem mam betraffene Benotzer
+          ze léisen
       categories:
         diary_entry:
           spam_label: Dëse Blogantrag ass/enthält Spam
@@ -1548,10 +1574,11 @@ lb:
         kommentéiert:'
       header_html: '%{from_user} huet den OpenStreetMap-Blogantrag mam Theema %{subject}
         kommentéiert:'
-      footer: Hei geet et zum Commentaire %{readurl}, du kanns e kommentéieren %{commenturl}
-        oder dem Auteur ënner %{replyurl} äntferen.
-      footer_html: Du kanns och de Commentaire ënner %{readurl} an en ënnert %{commenturl}
-        kommentéieren oder dem Auteur ënner %{replyurl} e Message schécken.
+      footer: Dir kënnt de Commentaire och ënner %{readurl} liesen an Dir kënnt ënner
+        %{commenturl} kommentéieren oder dem Auteur ënner %{replyurl} e Message schécken
+      footer_html: Dir kënnt de Commentaire och ënner %{readurl} liesen an Dir kënnt
+        ënner %{commenturl} kommentéieren oder dem Auteur ënner %{replyurl} e Message
+        schécken
     message_notification:
       subject: '[OpenStreetMap] %{message_title}'
       hi: Salut %{to_user},
@@ -1559,36 +1586,43 @@ lb:
         geschéckt:'
       header_html: '%{from_user} huet dir e Message iwwer OpenStreetMap mat dem Betreff
         %{subject} geschéckt:'
-      footer: Du kanns de Message och ënner %{readurl} liesen an dem Auteur ënner
-        %{replyurl} äntferen
+      footer: Dir kënnt de Message och ënner %{readurl} liesen an Dir kënnt dem Auteur
+        ënner %{replyurl} e Message schécken
       footer_html: Dir kënnt de Message och op %{readurl} liesen an Dir kënnt op %{replyurl}
         äntwerten
-    friendship_notification:
+    follow_notification:
       hi: Salut %{to_user},
-      subject: '[OpenStreetMap] %{user} huet dech als Frënd bäigefügt'
-      had_added_you: '%{user} hat Iech als Frënd op OpenStreet Map derbäigesat.'
       see_their_profile: Dir kënnt säin/hire Profil op %{userurl} kucken.
       see_their_profile_html: Dir kënnt säin/hire Profil ënner %{userurl} kucken.
-      befriend_them: Dir kënnt hien/si och als Frënd op %{befriendurl} derbäisetzen.
-      befriend_them_html: Dir kënnt hien/si och als Frënd ënner %{befriendurl} derbäisetzen.
     gpx_details:
+      details: 'Detailer vun Ärem Fichier:'
+      filename: Numm vum Fichier
       url: URL
       description: Beschreiwung
+      total_points: Gesamtzuel vu Punkten
+      imported_points: Zuel vun importéierte Punkten
     gpx_failure:
       hi: Salut %{to_user},
-      failed_to_import: 'konnt net importéiert ginn. Hei ass de Feeler:'
+      failed_to_import: Et schéngt, datt Äre Fichier net als GPS-Spuer konnt importéiert
+        ginn.
       more_info_html: Weider Informatiounen iwwer Feeler bei GPX-Importer a wéi se
         vermidde kënne gi fanne sech ënner %{url}
       import_failures_url: https://wiki.openstreetmap.org/wiki/LB:GPX
       subject: '[OpenStreetMap] GPX-Import Feeler'
     gpx_success:
       hi: Salut %{to_user},
+      imported_successfully: Et schéngt, datt Äre Fichier erfollegräich als GPS-Spuer
+        importéiert gouf.
+      all_your_traces: All Är erfollegräich importéiert GPX-Spuere fannt Dir ënner
+        %{url}
+      all_your_traces_html: All Är erfollegräich importéiert GPX-Spuere fannt Dir
+        ënner %{url}.
       subject: '[OpenStreetMap] GPX-Import erfollegräich'
     signup_confirm:
       subject: '[OpenStreetMap] Wëllkomm bei OpenStreetMap'
       greeting: Moien!
-      created: Iergendeen (hoffentlech du) huet grad bei %{site_url} e Benotzerkont
-        erstallt
+      created: Iergendeen (hoffentlech Dir selwer) huet grad bei %{site_url} e Benotzerkont
+        ugeluecht.
       confirm: Ier mir eppes ënnerhuelen, brauche mir eng Bestätegung, datt dës Ufro
         vun dir staamt. Falls jo, klick wannechgelift op den ënne stoende Link, fir
         däi Kont ze bestätegen.
@@ -1597,15 +1631,15 @@ lb:
     email_confirm:
       subject: '[OpenStreetMap] Confirméiert Är E-Mailadress'
       greeting: Salut,
-      hopefully_you: Iergendeen (hoffentlech du) wëll seng E-Mail-Adress op %{server_url}
-        zu %{new_address} änneren.
+      hopefully_you: Iergendeen (hoffentlech Dir selwer) wëll seng E-Mail-Adress op
+        %{server_url} op %{new_address} änneren.
       click_the_link: Wann Dir dat sidd, da klickt op de Link hei drënner fir d'Ännerung
         ze confirméieren.
     lost_password:
       subject: '[OpenStreetMap] Ufro fir d''Passwuert zréckzesetzen'
       greeting: Salut,
-      hopefully_you: Iergendeen (hoffentlech du) huet eng Zerécksetzung vum Passwuert
-        fir den OpenStreetMap.org-Kont vun dëser E-Mail-Adress ugefuerdert.
+      hopefully_you: Iergendeen (hoffentlech Dir selwer) huet ugefrot fir d'Passwuert
+        vum openstreetmap.org-Kont vun dëser E-Mail-Adress zréckzesetzen.
       click_the_link: Wann Dir dat sidd da klickt wgl. op de Link hei drënner fir
         Äert Passwuert zréckzesetzen.
     note_comment_notification:
@@ -1614,57 +1648,57 @@ lb:
       commented:
         subject_own: '[OpenStreetMap] %{commenter} huet ee vun déngen Hiweiser kommentéiert'
         subject_other: '[OpenStreetMap] %{commenter} huet en Hiweis kommentéiert,
-          un deems du interesséiert bass'
+          un deem Dir interesséiert sidd'
         your_note: '%{commenter} huet ee vun dir gemellten Hiweis an der Noperschaft
           vu(n) %{place} kommentéiert.'
         your_note_html: '%{commenter} huet ee vun dir gemellten Hiweis an der Noperschaft
           vu(n) %{place} kommentéiert.'
-        commented_note: '%{commenter} huet zu engem Hiweis, deens du kommentéiert
-          has, e weidere Commentaire hannerluecht. Den Hiweis ass an der Noperschaft
+        commented_note: '%{commenter} huet zu engem Kaartenhiweis, deen Dir kommentéiert
+          hutt, e weidere Commentaire hannerluecht. Den Hiweis ass an der Géigend
           vu(n) %{place}.'
-        commented_note_html: '%{commenter} huet zu engem Hiweis, denns du kommentéiert
-          has, e weidere Commentaire hannerluecht. Dësen Hiweis ass an der Noperschaft
+        commented_note_html: '%{commenter} huet zu engem Kaartenhiweis, deen Dir kommentéiert
+          hutt, e weidere Commentaire hannerluecht. Den Hiweis ass an der Géigend
           vu(n) %{place}.'
       closed:
         subject_own: '[OpenStreetMap] %{commenter} huet ee vun dengen Hiweiser kommentéiert'
         subject_other: '[OpenStreetMap] %{commenter} huet e gemellte Problem geléist,
-          un deems du interesséiert bass.'
+          un deem Dir interesséiert sidd'
         your_note: '%{commenter} huet ee vun Iech gemellte Problem an der Noperschaft
           vu(n) %{place} geléist.'
         your_note_html: '%{commenter} huet ee vun dir gemellte Problem an der Noperschaft
           vu(n) %{place} geléist.'
-        commented_note: '%{commenter} huet e Problem geléist, deens du kommentéiert
-          has. Den Hiweis war an der Noperschaft vu(n) %{place}.'
+        commented_note: '%{commenter} huet e Kaartenhiweis geléist, deen Dir kommentéiert
+          hutt. Den Hiweis ass an der Géigend vu(n) %{place}.'
         commented_note_html: '%{commenter} huet e Problem/Theema geléist, zu deem
           Dir e Kommentar gemaach hutt. Den Hiweis war an der Géigend vu(n) %{place}.'
       reopened:
         subject_own: '[OpenStreetMap] %{commenter} huet ee vun dengen Hiweiser kommentéiert'
-        subject_other: '[OpenStreetMap] %{commenter} huet en Hiweis, un deems du interesséiert
-          bass, reaktivéiert.'
+        subject_other: '[OpenStreetMap] %{commenter} huet en Hiweis, un deem Dir interesséiert
+          sidd, reaktivéiert'
         your_note: '%{commenter} huet ee vun Iech gemellte Problem an der Noperschaft
           vu(n) %{place} geléist.'
         your_note_html: '%{commenter} huet ee vun Iech gemellten Hiweis an der Noperschaft
           vu(n) %{place} kommentéiert.'
-        commented_note: '%{commenter} huet en Hiweis an der Noperschaft vu(n) %{place},
-          deens du kommentéiert has, reaktivéiert.'
-        commented_note_html: '%{commenter} huet en Hiweis an der Noperschaft vu(n)
-          %{place}, deens du kommentéiert has, reaktivéiert.'
+        commented_note: '%{commenter} huet e Kaartenhiweis, deen Dir kommentéiert
+          hutt, reaktivéiert. Den Hiweis ass an der Géigend vu(n) %{place}.'
+        commented_note_html: '%{commenter} huet e Kaartenhiweis, deen Dir kommentéiert
+          hutt, reaktivéiert. Den Hiweis ass an der Géigend vu(n) %{place}.'
       details: Äntweren oder méi gewuer ginn iwwer d'Notiz op %{url}.
-      details_html: Méi Detailer iwwer d'Notiz fannt Dir op %{url}.
+      details_html: Äntwert oder gitt méi gewuer iwwer d'Notiz ënner %{url}.
     changeset_comment_notification:
       hi: Salut %{to_user},
       commented:
         subject_own: '[OpenStreetMap] %{commenter} huet ee vun dengen Ännerungssätz
           kommentéiert.'
         subject_other: '[OpenStreetMap] %{commenter} huet en Ännerungssaz kommentéiert,
-          un deems du interesséiert bass'
+          un deem Dir interesséiert sidd'
         your_changeset: '%{commenter} huet e Commentaire um %{time} zu engem vun dengen
           Ännerungssätz hannerlooss'
         your_changeset_html: '%{commenter} huet um %{time} zu engem vun dengen Ännerungssätz
           en Diskussiounsbäitrag hannerlooss'
-        commented_changeset: '%{commenter} huet en Diskussiounsbäitrag um %{time}
-          zu engem Kaartenännerungssaz hannerlooss, deens du observéiert hues, erstallt
-          vu(m) %{changeset_author}'
+        commented_changeset: '%{commenter} huet um %{time} e Commentaire zu engem
+          Ännerungssaz hannerlooss, deen Dir observéiert an dee vu(m) %{changeset_author}
+          ugeluecht gouf'
         commented_changeset_html: '%{commenter} huet um %{time} en Diskussiounsbäitrag
           zu engem vun dir observéierten Ännerungssaz vu(m) %{changeset_author} hannerlooss'
         partial_changeset_with_comment: mat der Bemierkung „%{changeset_comment}“
@@ -1681,9 +1715,8 @@ lb:
     confirm:
       heading: Iwwerpréift Är E-Mail!
       introduction_1: Mir hunn Iech eng Confirmatiouns-E-Mail geschéckt.
-      introduction_2: Wannechgelift bestäteg däi Benotzerkont, an deems du de Link
-        an der Bestätegungs-E-Mail uklicks. Da kanns du domat ufänken, bei OpenStreetMap
-        matzeschaffen.
+      introduction_2: Confirméiert wgl. Äre Benotzerkont, andeems Dir op de Link an
+        der E-Mail klickt, an da kënnt Dir domat ufänke bei OpenStreetMap matzeschaffen.
       press confirm button: Klickt wgl. op de Knäppchen confirméieren fir Äre Benotzerkont
         z'aktivéieren.
       button: Confirméieren
@@ -1706,9 +1739,9 @@ lb:
     resend_success_flash:
       confirmation_sent: Mir hunn eng nei Bestätegungsnotiz un %{email} geschéckt
         a soubal Dir Äre Kont confirméiert hutt, kënnt Dir mam kartograféieren ufänken.
-      whitelist: Wanns du en Antispam-System verwenns, dee Bestätegungsufroe sent,
-        stell wannechgelift sécher, dass du %{sender} op eng Erlaabnislëscht setz,
-        well mir keng Bestätegungsufroë beäntwere kënnen.
+      whitelist: Wann Dir en Antispam-System benotzt, dee Bestätegungsufroe verschéckt,
+        stellt wgl. sécher, datt Dir %{sender} op eng Erlaabnislëscht setzt, well
+        mir op keng Bestätegungsufroen äntwere kënnen.
   messages:
     new:
       title: Noriicht schécken
@@ -1731,15 +1764,18 @@ lb:
       wrong_user: Dir sidd als '%{user}' ugemellt, awer d'Noriicht, déi Dir liese
         wollt, gouf net vun an net un dëse Benotzer geschéckt. Mellt Iech wgl. mat
         dem richtege Benotzerkont u fir se ze liesen.
-    mark:
-      as_read: Message als gelies markéiert
-      as_unread: Message als net gelies markéiert
     destroy:
       destroyed: Message geläscht
+    read_marks:
+      create:
+        notice: Message als gelies markéiert
+      destroy:
+        notice: Message als net gelies markéiert
     mailboxes:
       heading:
         my_inbox: Mäi Postagang
         my_outbox: Mäi Postausgang
+        muted_messages: Stommgeschalt Noriichten
       messages_table:
         from: Vu(n)
         to: Un
@@ -1760,18 +1796,24 @@ lb:
         old_messages:
           one: '%{count} ale Message'
           other: '%{count} al Messagen'
-        no_messages_yet_html: Du hues nach keng Noriichte versent. Wëlls de mat %{people_mapping_nearby_link}
-          Kontakt ophuelen?
+        no_messages_yet_html: Dir hutt nach keng Messagë verschéckt. Wëllt Dir mat
+          %{people_mapping_nearby_link} Kontakt ophuelen?
         people_mapping_nearby: Mapperen an der Noperschaft
+    muted_inboxes:
+      show:
+        title: Stommgeschalt Noriichten
+        messages:
+          one: '%{count} stommgeschalte Message'
+          other: Dir hutt %{count} stommgeschalt Messagen
     outboxes:
       show:
         title: Outbox
         messages:
-          one: Du hues %{count} Noriicht gesent
-          other: Du hues %{count} Noriichte gesent
-        no_sent_messages_html: Du hues nach keng Noriichte versent. Wëlls de mat %{people_mapping_nearby_link}
-          Kontakt ophuelen?
-        people_mapping_nearby: Mapperen an der Noperschaft
+          one: Dir hutt %{count} verschéckte Message
+          other: Dir hutt %{count} verschéckte Messagen
+        no_sent_messages_html: Dir hutt nach keng Messagë verschéckt. Wëll Dir mat
+          %{people_mapping_nearby_link} Kontakt ophuelen?
+        people_mapping_nearby: Mapperen an Ärer Géigend
       message:
         destroy_button: Läschen
     replies:
@@ -1785,24 +1827,26 @@ lb:
       heading: Passwuert vergiess?
       email address: E-Mail-Adress
       new password button: Passwuert zrécksetzen
-      help_text: Wannechgelift gëff deng E-Mail-Adress an, mat däers du dech ugemellt
-        has. Mir wäerten dir dann e Link schécken, mat dems du däi Passwuert zerécksetze
-        kanns.
+      help_text: Gitt d'E-Mail-Adress an, mat där Dir Iech ugemellt hutt. Mir wäerten
+        dann op déi Adress e Link schécken, mat deem Dir Äert Passwuert zrécksetze
+        kënnt.
     edit:
       title: Passwuert zrécksetzen
       heading: Passwuert fir %{user} zrécksetzen
       reset: Passwuert zrécksetzen
-      flash token bad: Mir konnten dëst Kierzel leider net fannen. Du hues dech méiglecherweis
-        vertippt oder du hues en ongëltege Link opgemaach.
+      flash token bad: Mir konnten dëst Kierzel leider net fannen, iwwerpréift villäicht
+        d'URL?
     update:
       flash changed: Äert Passwuert gouf geännert.
   preferences:
     show:
       title: Meng Benotzerastellungen
+      preferred_site_color_scheme: Preferéiert Faarfschema fir d'Websäit
       site_color_schemes:
         auto: Automatesch
         light: Hell
         dark: Däischter
+      preferred_map_color_scheme: Preferéiert Faarfscheema fir d'Kaarten
       map_color_schemes:
         auto: Automatesch
         light: Hell
@@ -1811,28 +1855,28 @@ lb:
     update:
       failure: D'Benotzerastellunge konnten net aktualiséiert ginn.
     update_success_flash:
-      message: Astellungen aktualiséiert.
+      message: Benotzerastellungen aktualiséiert.
   profiles:
     edit:
-      title: Profil beaarbechten
+      title: Profil änneren
       save: Profil aktualiséieren
       cancel: Ofbriechen
       image: Bild
       gravatar:
-        gravatar: Gravatar verwenden
+        gravatar: Gravatar benotzen
         link: https://wiki.openstreetmap.org/wiki/DE:Gravatar
         what_is_gravatar: Wat ass Gravatar?
         disabled: Gravatar gouf desaktivéiert.
         enabled: D'Weise vun Ärem Gravatar gouf aktivéiert.
       new image: E Bild derbäisetzen
-      keep image: Dat aktuellt Bild behalen
+      keep image: Dat aktuellt Bild halen
       delete image: Dat aktuellt Bild ewechhuelen
       replace image: Dat aktuellt Bild ersetzen
-      image size hint: (quadratesch Biller mat zumindest 100x100 Pixel funktionéieren
+      image size hint: (quadratesch Biller mat mindestens 100x100 Pixel funktionéieren
         am beschten)
-      home location: Heemecht
-      no home location: Du hues nach keng Heemecht aginn.
-      update home location on click: Heemecht beim Klick op d'Kaart aktualiséieren
+      home location: Heemechtsplaz
+      no home location: Dir hutt nach keng Heemechtsplaz aginn.
+      update home location on click: Heemechtsplaz beim Klicken op d'Kaart aktualiséieren?
       show: Weisen
       delete: Läschen
       undelete: Läsche réckgängeg maachen
@@ -1842,12 +1886,13 @@ lb:
   sessions:
     new:
       tab_title: Aloggen
+      login_to_authorize_html: Op OpenStreetMap alogge fir op %{client_app_name} zouzegräifen.
       email or username: E-Mail-Adress oder Benotzernumm
       password: Passwuert
       remember: Sech u mech erënneren
       lost password link: Hutt Dir Äert Passwuert vergiess?
       login_button: Aloggen
-      with external: 'Benotzt alternativ eng Drëtt Partei fir anzeloggen:'
+      with external: oder loggt Iech mat engem Drëttubidder an
       or: oder
       auth failure: Mat dëssen Daten ass leider keng Umeldung méiglech.
     destroy:
@@ -1855,7 +1900,7 @@ lb:
       heading: Vun OpenStreetMap ofmellen
       logout_button: Ofmellen
     suspended_flash:
-      suspended: Entschëllegt, Äre Kont gouf wéinst verdächteger Aktivitéit suspendéiert.
+      suspended: Äre Kont gouf leider wéinst verdächtegen Aktivitéite suspendéiert.
       contact_support_html: Kontaktéiert w.e.g. %{support_link} wann Dir dëst diskutéiere
         wëllt.
       support: support
@@ -1873,30 +1918,35 @@ lb:
       image: Bild
       alt: Alternativen Text
       url: URL
+      codeblock: Code-Block
     richtext_field:
       edit: Änneren
       preview: Virschau
       help: Hëllef
     pagination:
       diary_comments:
-        older: Méi al Bemierkungen
+        older: Eeler Bemierkungen
         newer: Méi nei Bemierkungen
       diary_entries:
         older: Eeler Anträg
         newer: Méi nei Anträg
       issues:
-        older: Méi al Problemer
+        older: Eeler Problemer
         newer: Méi nei Problemer
       traces:
         older: Eeler Spueren
         newer: Méi nei Spueren
+      user_blocks:
+        older: Eeler Spären
+        newer: Méi nei Spären
       users:
         older: Eeler Benotzer
         newer: Méi nei Benotzer
   site:
     about:
-      used_by_html: '%{name} stellt Kaartendonnéeë fir dausende vu Websäiten, Appen
-        an anere Geräter zur Verfügung'
+      heading_html: '%{copyright}OpenStreetMap %{br} Mataarbechter'
+      used_by_html: '%{name} stellt Kaartendonnéeë fir dausende vu Websäiten, mobil
+        Appen an Hardware-Geräter zur Verfügung'
       lede_text: OpenStreetMap gëtt vun enger Panoplie vu Mapperen erstallt, déi Donnéeën
         zu Weeër, Gebaier an allerlee Weiderem weltwäit erfaassen a fleegen.
       local_knowledge_title: Lokaalt Wëssen
@@ -1904,9 +1954,12 @@ lb:
         Loftbiller, GPS-Geräter a Feldkaarte fir d'Verifizéierung, sou dass OSM korrekt
         an aktuell ass.
       community_driven_title: Communautéitsbedriwwen
+      community_driven_osm_blog: OpenStreetMap-Blog
+      community_driven_community_blogs: Communautéits-Bloggen
       open_data_title: Open Data
       legal_title: Rechtlech Hiweiser
       legal_1_1_privacy_policy: Dateschutzrichtlinnen
+      legal_2_1_contact_the_osmf: d'OSMF kontaktéieren
       partners_title: Partneren
     copyright:
       title: Copyright a Lizenz
@@ -1920,11 +1973,11 @@ lb:
         native_link: lëtzebuergesch Versioun
         mapping_link: mat dem Kaartéieren ufänken
       legal_babble:
-        credit_title_html: Wéi et op d'Urhiewerschaft vun OpenStreetMap hinzeweise
-          gëllt
-        credit_1_html: 'Wann Dir Donnéeë vun OpenStreetMap benotz muss Dir dës zwou
+        credit_title_html: Wéi een op d'Urhiewerschaft vun OpenStreetMap hiweist
+        credit_1_html: 'Wann Dir Donnéeë vun OpenStreetMap benotzt, muss Dir dës zwou
           Saache respektéieren:'
         more_title_html: Fir méi ze wëssen
+        more_1_1_osmf_licence_page: OSMF-Lizenzsäit
         contributors_title_html: Eis Matwierkend
         contributors_intro_html: 'Eis Matwierkend sinn dausende vun eenzele Mënschen.
           Mir bezéien och oppe lizenzéiert Donnéeë vu nationale Kaartenagenturen an
@@ -1937,6 +1990,7 @@ lb:
         contributors_ca_canada: Kanada
         contributors_cz_czechia: Tschechien
         contributors_fi_finland: Finnland
+        contributors_fi_nlsfi_license: NLSFI-Lizenz
         contributors_fr_france: Frankräich
         contributors_hr_croatia: Kroatien
         contributors_nl_netherlands: Holland
@@ -1958,10 +2012,14 @@ lb:
       not_public: Dir hutt net agestallt datt Är Ännerungen ëffentlech sinn.
       user_page_link: Benotzersäit
       anon_edits_link_text: Fannt eraus firwat dat de Fall ass.
+      id_not_configured: iD gouf net konfiguréiert
     export:
       title: Exportéieren
       manually_select: Sicht manuell eng aner Géigend eraus
       licence: Lizenz
+      licence_details_html: OpenStreetMap-Donnéeë sinn ënnert der %{odbl_link} (ODbL)
+        lizenzéiert.
+      odbl: Open-Data-Commons-Open-Database-Lizenz
       too_large:
         body: Dëse Beräich ass ze grouss, fir als OpenStreetMap-XML-Donnéeën exportéiert
           ze ginn. Wannechgelift vergréisseren, e méi klenge Beräich wielen oder eng
@@ -1984,6 +2042,7 @@ lb:
           title: Maacht bei eis mat
       other_concerns:
         title: Aner Uleies
+        working_group: OSMF-Aarbechtsgrupp
     help:
       title: Hëllef kréien
       welcome:
@@ -1999,8 +2058,11 @@ lb:
         title: Fir Organisatiounen
       wiki:
         title: OpenStreetMap Wiki
+    potlatch:
+      change_preferences: Ännert Är Benotzerastellungen hei
     any_questions:
       title: Nach Froen?
+      get_help_here: Hei kritt Dir gehollef
     sidebar:
       search_results: Resultater vum Sichen
     search:
@@ -2040,23 +2102,30 @@ lb:
           vineyard: Wéngert
           forest: Bësch
           wood: Bësch
+          farmland: Akerland
           grass: Wiss
+          meadow: Wiss
+          bare_rock: Plakege Fiels
           sand: Sand
           golf: Golfterrain
           park: Park
           common: ëffentlech Gréngfläch (brit.)
+          resident: Wunngéigend
           retail: Akaafszentrum
           industrial: Industriezone
           commercial: Commercëgebitt
           heathland: Heed
           lake: Séi
+          reservoir: Reservoir
           glacier: Gletscher
+          wetland: Fiichtgebitt
           farm: Bauerenhaff
           brownfield: Broochland
           cemetery: Kierfecht
           allotments: Klenggäert
           pitch: Sportsterrain
           centre: Sportszenter
+          beach: Plage
           reserve: Naturschutzgebitt
           military: Militärgebitt
           school: Schoul
@@ -2064,6 +2133,7 @@ lb:
           hospital: Spidol
           building: Bedeitend Gebai
           station: Gare (Eisebunn)
+          tram_stop: Tramshalt
           summit: Spëtzt
           private: Privaten Terrain
           destination: Nëmme fir Leit mat Uleies
@@ -2076,6 +2146,8 @@ lb:
       title: Wëllkomm!
       whats_on_the_map:
         title: Wat ass op der Kaart
+      basic_terms:
+        node: Knuet
       rules:
         title: Reegelen!
       add_a_note:
@@ -2101,11 +2173,10 @@ lb:
     create:
       upload_trace: GPS-Spuer eroplueden
       traces_waiting:
-        one: Du hues momentan %{count} Spuer an der Waardeschleef. Wannechgelift waart,
-          bis e fäerdeg ass, fir d'Veraarbechtung net fir aner Benotzer ze blockéieren.
-        other: Du hues momentan %{count} Spueren an der Waardeschleef. Wannechgelift
-          waart, bis dës fäerdeg sinn, fir d'Veraarbechtung net fir aner Benotzer
-          ze blockéieren.
+        one: Dir hutt momentan %{count} Spuer an der Waardeschleef. Wgl. waart, bis
+          e fäerdeg ass, fir d'Veraarbechtung net fir aner Benotzer ze blockéieren.
+        other: Dir hutt momentan %{count} Spueren an der Waardeschleef. Wgl. waart,
+          bis dës fäerdeg sinn, fir d'Veraarbechtung net fir aner Benotzer ze blockéieren.
     edit:
       cancel: Ofbriechen
       heading: Spuer %{name} beaarbechten
@@ -2150,10 +2221,11 @@ lb:
       remove_tag_filter: Tag-Filter ewechhuelen
     destroy:
       scheduled_for_deletion: Fir d'Läsche bestëmmt Spuer
-    georss:
-      title: OpenStreetMap-GPS-Spueren
-    description:
-      description_without_count: GPX-Fichier vum %{user}
+    feeds:
+      show:
+        title: OpenStreetMap-GPS-Spueren
+      description:
+        description_without_count: GPX-Fichier vum %{user}
   application:
     settings_menu:
       account_settings: Astellunge vum Benotzerkont
@@ -2229,12 +2301,13 @@ lb:
       delete: Läschen
       confirm_delete: Dës Applikatioun läschen?
       client_id: Client ID
-      client_secret_warning: Späichert dëse Code - en ass duerno net méi accessibel
+      client_secret_warning: Späichert dëse Code  en ass duerno net méi accessibel
       permissions: Autorisatiounen
   oauth2_authorizations:
     new:
       title: Autorisatioun erfuerderlech
       authorize: Autoriséieren
+      deny: Refuséieren
     error:
       title: Et ass e Feeler geschitt
     show:
@@ -2282,8 +2355,6 @@ lb:
       edits: Ännerungen
       traces: Spueren
       notes: Notizen op der Kaart
-      remove as friend: Frënd ewechhuelen
-      add as friend: Frënd derbäisetzen
       no activity yet: Nach keng Aktivitéit
       email address: 'E-Mail-Adress:'
       status: 'Status:'
@@ -2329,6 +2400,15 @@ lb:
           other: '%{count} Benotzer fonnt'
         confirm: Erausgesicht Benotzer confirméieren
         hide: Erausgesicht Benotzer vrstoppen
+    changeset_comments:
+      page:
+        when: Wéini
+        comment: Bemierkung
+    diary_comments:
+      index:
+        title: Tagebuch Kommentarer bäigefüügt vum %{user}
+      page:
+        post: Blogantrag
     suspended:
       support: Ënnerstëtzung
     auth_failure:
@@ -2421,6 +2501,8 @@ lb:
       comment: Kommentéieren
     new:
       title: Nei Notiz
+      counter_warning_forum_link:
+        text: d'Communautéit kann Iech hëllefen
       add: Notiz derbäisetzen
     notes_paging_nav:
       showing_page: Säit %{page}
@@ -2480,8 +2562,8 @@ lb:
       map_data_zoom_in_tooltip: Vergréisser d'Kaart, fir 'Donnéeën ze gesinn
       queryfeature_tooltip: Objetsoffro
       queryfeature_disabled_tooltip: Fir Objetsoffro vergréisseren
-    edit_help: Vergréisser a verschib d'Kaart un en Uert, deens du beaarbechte wëlls,
-      a klick hei
+    edit_help: Réckelt d'Kaart a vergréissert op eng Plaz, déi Dir ännere wëllt, a
+      klickt dann hei.
     directions:
       ascend: Vu kleng op grouss
       engines:
@@ -2551,5 +2633,5 @@ lb:
       flash: Ännerunge gespäichert.
   validations:
     leading_whitespace: huet en Espace am Ufank
-    invalid_characters: huet net valabel Zeechen
+    invalid_characters: enthält ongülteg Zeechen
 ...
index 2b2bc158766385e3c899ccb6ad4024ba9d0c129c..37ae4edb716d74b46c904bef89e006d8560088ad 100644 (file)
@@ -293,13 +293,6 @@ lt:
       external auth: Išorinė autentikacija
       openid:
         link text: kas tai?
-      public editing:
-        heading: Viešas keitimas
-        enabled: Įjungtas. Nėra anoniminis ir gali keisti duomenis.
-        enabled link text: kas tai?
-        disabled: Išjungtas ir negali keisti duomenų, visi ankstesni pakeitimai yra
-          anonimiški.
-        disabled link text: kodėl aš negaliu redaguoti?
       contributor terms:
         heading: Talkininkų sąlygos
         agreed: Jūs sutikote su naujomis talkininkų sąlygomis.
@@ -386,6 +379,8 @@ lt:
           france: Prancūzija
           italy: Italija
           rest_of_world: Likęs pasaulis
+      update:
+        terms accepted: Ačiū, kad patvirtinote naująsias talkininkų sąlygas!
       terms_declined_flash:
         terms_declined_html: Apgailestaujame, kad nusprendėte nesutikti su naujomis
           bendraautoriu sąlygomis. Norėdami gauti daugiau informacijos, žr. %{terms_declined_link}.
@@ -529,7 +524,6 @@ lt:
       title: Pakeitimai
       title_user: Naudotojo %{user} pakeitimai
       title_user_link_html: '%{user_link} pakeitimai'
-      title_friend: Mano draugų pakeitimai
       title_nearby: Netoliese esančių naudotojų pakeitimai
       empty: Nerasta pakeitimų.
       empty_area: Nėra šios vietos pakeitimų.
@@ -544,19 +538,6 @@ lt:
         created: Sukurtas
         closed: Uždarytas
         belongs_to: Autorius
-    subscribe:
-      heading: Prenumeruoti šią pakeitimų rinkinio diskusiją?
-      button: Prenumeruokite diskusiją
-    unsubscribe:
-      heading: Atsisakyti šio pakeitimų rinkinio diskusijos prenumeratos?
-      button: Atsisakyti diskusijos prenumeratos
-    heading:
-      title: Pakeitimų rinkinys %{id}
-      created_by_html: Sukūrė %{link_user} %{created}.
-    no_such_entry:
-      heading: 'Nėra įrašo su id: %{id}'
-      body: Atsiprašome, nėra pakeitimų rinkinio su id %{id}. Patikrinkite rašybą,
-        o gal nuoroda, kurią spustelėjote, yra neteisinga.
     show:
       title: 'Pakeitimas: %{id}'
       created: 'Sukurta: %{when}'
@@ -587,6 +568,21 @@ lt:
       relations_paginated: Ryšiai (%{x}-%{y} iš %{count})
     timeout:
       sorry: Atsiprašome, bet jūsų prašytų pakeitimų ištraukimas užtruko per ilgai.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Prenumeruoti šią pakeitimų rinkinio diskusiją?
+        button: Prenumeruokite diskusiją
+      unsubscribe:
+        heading: Atsisakyti šio pakeitimų rinkinio diskusijos prenumeratos?
+        button: Atsisakyti diskusijos prenumeratos
+    heading:
+      title: Pakeitimų rinkinys %{id}
+      created_by_html: Sukūrė %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Nėra įrašo su id: %{id}'
+      body: Atsiprašome, nėra pakeitimų rinkinio su id %{id}. Patikrinkite rašybą,
+        o gal nuoroda, kurią spustelėjote, yra neteisinga.
   dashboards:
     contact:
       km away: Nutolęs %{count}km
@@ -595,19 +591,14 @@ lt:
     popup:
       your location: Jūsų pozicija
       nearby mapper: Šalia esantis žemėlapių kūrėjas
-      friend: Draugas
     show:
       title: Valdymo skydas
       no_home_location_html: '%{edit_profile_link} ir nurodykite savo namų vietą,
         kad matytumėte netoliese esančius naudotojus.'
       edit_your_profile: Redaguoti profilį
-      my friends: Mano draugai
-      no friends: Jūs dar nepridėjote nei vieno draugo.
       nearby users: Kiti greta esantys naudotojai
       no nearby users: Dar nėra jokių kitų naudotojų, kurie būtų pakviesti į žemėlapio
         pildymus.
-      friends_changesets: draugų keitimai
-      friends_diaries: draugų dienoraščių įrašai
       nearby_changesets: greta esančių naudotojų keitimai
       nearby_diaries: greta esančių naudotojų dienoraščių įrašai
   diary_entries:
@@ -618,7 +609,6 @@ lt:
       use_map_link: Naudoti žemėlapį
     index:
       title: Naudotojo dienoraščiai
-      title_friends: Draugų dienoraščiai
       title_nearby: Netoliese esančių naudotojų dienoraščiai
       user_title: '%{user} dienoraštis'
       in_language_title: 'Dienoraščio įrašai: %{language}'
@@ -685,15 +675,6 @@ lt:
       heading: Atsisakyti šios dienoraščio įrašo diskusijos prenumeratos?
       button: Atsisakyti diskusijos prenumeratos
   diary_comments:
-    index:
-      title: Dienoraščio komentarus pridėjo %{user}
-      heading: Naudotojo %{user} dienoraščio komentarai
-      subheading_html: Dienoraščio komentarus pridėjo %{user}
-      no_comments: Nėra dienoraščio komentarų
-    page:
-      post: Įrašas
-      when: Kada
-      comment: Komentaras
     new:
       heading: Pridėti komentarą prie šios dienoraščio įrašo diskusijos?
   doorkeeper:
@@ -739,20 +720,6 @@ lt:
       title: Failas nerastas
       description: OpenStreetMap serveryje nepavyko rasti failo, katalogo ar API veiksmo
         su nurodytu pavadinimu (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Pridėti „%{user}“ kaip draugą?
-      button: Pridėti kaip draugą
-      success: '%{name} dabar jau yra jūsų draugas.'
-      failed: Atsiprašome, nepavyko pridėti naudotojo %{name} į draugų sąrašą.
-      already_a_friend: Jūs jau draugaujate su %{name}.
-      limit_exceeded: Pastaruoju metu Jūs pridėjote daug naudotojų į draugų sąrašą.
-        Prašome šiek tiek palaukti prieš pridedant daugiau naudotojų.
-    remove_friend:
-      heading: Nebedraugauti su naudotoju „%{user}“?
-      button: Nebedraugauti
-      success: '%{name} pašalintas iš jūsų draugų sąrašo.'
-      not_a_friend: '%{name} nėra jūsų draugas.'
   geocoder:
     search:
       title:
@@ -1671,14 +1638,10 @@ lt:
         autoriui %{replyurl}
       footer_html: Pranešimą galite skaityti čia %{readurl}, o nusiųsti žinutę autoriui
         galite čia %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Labas, %{to_user},
-      subject: '[OpenStreetMap] %{user} prisidėjo jus kaip draugą'
-      had_added_you: '%{user} pridėjo jus į savo OpenStreetMap draugų sąrašą.'
       see_their_profile: Galite peržiūrėti jo profilį adresu %{userurl}.
       see_their_profile_html: Galite peržiūrėti jų profilį %{userurl}
-      befriend_them: 'Galite pridėti juos prie draugų: %{befriendurl}'
-      befriend_them_html: Galite pridėti juos prie draugų %{befriendurl}
     gpx_failure:
       hi: Sveiki, %{to_user},
       failed_to_import: 'nepavyko importuoti kaip GPS sekimo failas. Patvirtinkite,
@@ -1829,14 +1792,17 @@ lt:
       wrong_user: Jūs prisijungę kaip „%{user}“, bet pranešimas, kuri prašėte perskaityti,
         nebuvo siųstas tam naudotojui. Prisijunkite prie teisingos naudotojo paskyros,
         jei norite perskaityti.
-    mark:
-      as_read: Pranešimas pažymėtas kaip skaitytas
-      as_unread: Pranešimas pažymėtas kaip neskaitytas
-    unmute:
-      notice: Žinutė perkelta į gautuosius
-      error: Žinutės nepavyko perkelti į gautuosius.
     destroy:
       destroyed: Pranešimas ištrintas
+    read_marks:
+      create:
+        notice: Pranešimas pažymėtas kaip skaitytas
+      destroy:
+        notice: Pranešimas pažymėtas kaip neskaitytas
+    mutes:
+      destroy:
+        notice: Žinutė perkelta į gautuosius
+        error: Žinutės nepavyko perkelti į gautuosius.
     mailboxes:
       heading:
         my_inbox: Mano gauti
@@ -2556,13 +2522,14 @@ lt:
     offline:
       heading: GPX laikmena išjungta
       message: GPX pėdsakų saugojimo ir įkėlimo sistema šiuo metu neveikia.
-    georss:
-      title: OpenStreetMap GPS pėdsakai
-    description:
-      description_with_count:
-        one: GPX failas su %{count} tašku, naudotojo %{user}
-        other: GPX failas su %{count} taškais, naudotojo %{user}
-      description_without_count: Naudotojo %{user} GPX failas
+    feeds:
+      show:
+        title: OpenStreetMap GPS pėdsakai
+      description:
+        description_with_count:
+          one: GPX failas su %{count} tašku, naudotojo %{user}
+          other: GPX failas su %{count} taškais, naudotojo %{user}
+        description_without_count: Naudotojo %{user} GPX failas
   application:
     permission_denied: Jūs neturite teisių vykdyti šį veiksmą
     require_cookies:
@@ -2699,7 +2666,6 @@ lt:
         privacy_policy: privatumo politika
         contributor_terms: bendraautorių sąlygos
       continue: Užsiregistruoti
-      terms accepted: Ačiū, kad patvirtinote naująsias talkininkų sąlygas!
       email_help:
         privacy_policy: privatumo politika
         privacy_policy_title: OSMF privatumo politika, įskaitant skyrių apie el. pašto
@@ -2736,8 +2702,6 @@ lt:
       edits: Keitimai
       traces: Pėdsakai
       notes: Žemėlapio pastabos
-      remove as friend: Nebedraugauti
-      add as friend: Pridėti draugą
       mapper since: 'Žymi nuo:'
       last map edit: 'Paskutinis žemėlapio keitimas:'
       no activity yet: Kol kas nėra veiklos
@@ -2806,6 +2770,15 @@ lt:
       user:
         summary_html: '%{name} sukurta %{ip_address} %{date}'
         summary_no_ip_html: '%{name} sukurta %{date}'
+    changeset_comments:
+      page:
+        when: Kada
+        comment: Komentaras
+    diary_comments:
+      index:
+        title: Dienoraščio komentarus pridėjo %{user}
+      page:
+        post: Įrašas
     suspended:
       title: Paskyra sustabdyta
       heading: Paskyra sustabdyta
index 6f2d1516324139535f3450713fc2035b1198e7da..ff8e971378b425477be2697eeac531c524a0e926 100644 (file)
@@ -201,12 +201,6 @@ lv:
       external auth: Ārējā autentifikācija
       openid:
         link text: Kas tas ir?
-      public editing:
-        heading: Publiska rediģēšana
-        enabled: Ieslēgts. Nav anonīms, un var rediģēt datus.
-        enabled link text: Kas tas ir?
-        disabled: Atspējots un nevar labot datus, visi iepriekšējie labojumi ir anonīmi.
-        disabled link text: Kāpēc nevar rediģēt?
       contributor terms:
         heading: Devuma noteikumi
         agreed: Tu esi pieņēmis jaunos Veidotāju Noteikumus.
@@ -256,6 +250,8 @@ lv:
           france: Francija
           italy: Itālija
           rest_of_world: Pārējā pasaule
+      update:
+        terms accepted: Paldies, ka pieņēmāt jaunos devuma noteikumus!
   browse:
     version: Versija
     in_changeset: Izmaiņu kopa
@@ -346,7 +342,6 @@ lv:
     index:
       title: Izmaiņu kopas
       title_user: Lietotāja %{user} izmaiņu kopas
-      title_friend: Tavu draugu izmaiņu kopas
       title_nearby: Tuvējo lietotāju izmaiņu kopas
       empty: Nav atrasta neviena izmaiņu kopa.
       empty_area: Šajā apgabalā nav izmaiņu kopu.
@@ -392,17 +387,12 @@ lv:
     popup:
       your location: Jūsu atrašanās vieta
       nearby mapper: Kartētājs tuvējā apkārtnē
-      friend: Draugs
     show:
       title: Mans vadības panelis
       no_home_location_html: '%{edit_profile_link} un iestatiet savu atrašanās vietu,
         lai redzētu tuvumā esošos lietotājus.'
-      my friends: Mani draugi
-      no friends: Tu  vēl neesi pievienojis draugus.
       nearby users: Citi tuvumā esoši lietotāji
       no nearby users: Nav citu lietotāju kas tuvumā kartētu.
-      friends_changesets: Skatīt visas draugu izmaiņu kopas
-      friends_diaries: Skatīt visus draugu dienasgrāmatu ierakstus
       nearby_changesets: Skatīt visas tuvējo lietotāju izmaiņu kopas
       nearby_diaries: Skatīt visus tuvējo lietotāju dienasgrāmatu ierakstus
   diary_entries:
@@ -413,7 +403,6 @@ lv:
       use_map_link: Izmantot karti
     index:
       title: Lietotāju dienasgrāmatas
-      title_friends: Draugu dienasgrāmatas
       title_nearby: Tuvumā esošu lietotāju dienasgrāmatas
       user_title: '%{user} dienasgrāmata'
       in_language_title: Dienasgrāmatas ieraksti valodā %{language}
@@ -469,23 +458,6 @@ lv:
       all:
         title: OpenStreetMap dienasgrāmatu ieraksti
         description: Pēdējie dienasgrāmatu ieraksti no OpenStreetMap lietotājiem
-  diary_comments:
-    page:
-      post: Publicēt
-      when: Kad
-      comment: Komentārs
-  friendships:
-    make_friend:
-      heading: Pievienot %{user} kā draugu?
-      button: Pievienot kā draugu
-      success: '%{name} tagad ir jūsu draugs.'
-      failed: Atvainojiet, neizdevās pievienot %{name} kā draugu.
-      already_a_friend: Jūs jau esat draugos ar %{name}.
-    remove_friend:
-      heading: Noņemt %{user} kā draugu?
-      button: Atcelt draudzību
-      success: '%{name} tika izņemts no jūsu draugiem.'
-      not_a_friend: '%{name} nav no jūsu draugs.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1213,12 +1185,9 @@ lv:
       header: 'OpenStreetMap lietotājs %{from_user} ir jums nosūtījis ziņu ar tematu
         %{subject}:'
       footer_html: Tu arī vari izlasīt ziņojumu iekš %{readurl} un atbildēt iekš %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Sveiks, %{to_user}
-      subject: '[OpenStreetMap] %{user} pievienoja Jūs kā draugu'
-      had_added_you: '%{user} pievienoja jūs kā draugu OpenStreetMap.'
       see_their_profile: Jūs variet redzēt viņu profilu %{userurl}.
-      befriend_them: Jūs variet viņus arī pievienot par draugiem %{befriendurl}.
     gpx_failure:
       failed_to_import: 'imports neizdevās. Kļūda:'
       subject: '[OpenStreetMap] GPX importēšanas kļūme'
@@ -1335,11 +1304,13 @@ lv:
       wrong_user: Jūs esat autorizējies kā `%{user}', bet ziņojums, kuru vēlaties
         izlasīt, nav sūtīts šim lietotājam. Lūdzu autorizējaties kā pareizais lietotājs,
         lai izlasītu to.
-    mark:
-      as_read: Ziņa atzīmēta kā lasīta
-      as_unread: Ziņa atzīmēta kā nelasīta
     destroy:
       destroyed: Ziņa izdzēsta
+    read_marks:
+      create:
+        notice: Ziņa atzīmēta kā lasīta
+      destroy:
+        notice: Ziņa atzīmēta kā nelasīta
     mailboxes:
       heading:
         my_inbox: Mana iesūtne
@@ -1784,13 +1755,14 @@ lv:
     offline:
       heading: GPX bezsaistes glabātuve
       message: GPX datņu glabātuve un augšupielādes sistēma pašlaik nav pieejama.
-    georss:
-      title: OpenStreetMap GPS Trases
-    description:
-      description_with_count:
-        one: GPX fails ar %{count} punktu no %{user}
-        other: GPX fails ar %{count} punktiem no %{user}
-      description_without_count: GPX fails no %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS Trases
+      description:
+        description_with_count:
+          one: GPX fails ar %{count} punktu no %{user}
+          other: GPX fails ar %{count} punktiem no %{user}
+        description_without_count: GPX fails no %{user}
   application:
     require_cookies:
       cookies_needed: Izskatā, ka jums cookies ir atslēgti, pirms turpināt, lūdzu,
@@ -1834,7 +1806,6 @@ lv:
       display name description: Vārds, kas tiks rādīts publiski. Jūs to vēlāk varēsiet
         izmainīt iestatījumos.
       continue: Reģistrēties
-      terms accepted: Paldies, ka pieņēmāt jaunos devuma noteikumus!
       use external auth: Alternatīvi, varat izmantot trešās puses 'ielogošanās' opciju
     no_such_user:
       title: Neesošs lietotājs
@@ -1860,8 +1831,6 @@ lv:
       edits: Labojumi
       traces: Trases
       notes: Kartes piezīmes
-      remove as friend: Atcelt draudzību
-      add as friend: Pievienot kā draugu
       mapper since: 'Kartētājs kopš:'
       ct status: 'Dalībnieka noteikumi:'
       ct undecided: Nav izlēmis
@@ -1913,6 +1882,13 @@ lv:
       user:
         summary_html: '%{name} izveidoja no %{ip_address} @ %{date}'
         summary_no_ip_html: '%{name} izveidoja @ %{date}'
+    changeset_comments:
+      page:
+        when: Kad
+        comment: Komentārs
+    diary_comments:
+      page:
+        post: Publicēt
     suspended:
       title: Konta darbība apturēta
       heading: Konta darbība apturēta
index f589a06213c19992f315ae427881283fb3b693ca..0257cc4eeb43a3c14f30b8a6f13f25eb92c3be05 100644 (file)
@@ -253,13 +253,6 @@ mk:
       openid:
         link: https://wiki.openstreetmap.org/wiki/MK:OpenID?uselang=mk
         link text: што е ова?
-      public editing:
-        heading: Јавно уредување
-        enabled: Овозможено. Сега не е анонимно и може да се уредуваат податоци.
-        enabled link text: што е ова?
-        disabled: Оневозможено и не може да се уредуваат податоци, сите претходни
-          уредувања се анонимни.
-        disabled link text: зошто не можам да уредувам?
       contributor terms:
         heading: Услови за учество
         agreed: Се согласивте на новите Услови за учество.
@@ -334,7 +327,6 @@ mk:
         readable_summary: човечки читлив опис
         informal_translations: неформални преводи
         continue: Продолжи
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=mk
         cancel: Откажи
         you need to accept or decline: Прочитајте ги новите Услови за учество, а потоа
           согласете се или одбијте ги.
@@ -343,6 +335,8 @@ mk:
           france: Франција
           italy: Италија
           rest_of_world: Остатокот од светот
+      update:
+        terms accepted: Ви благодариме што ги прифативте новите услови за учество!
       terms_declined_flash:
         terms_declined_html: Жалиме што не се согласувате со новите Услови за учество.
           Повеќе информации ќе најдете на %{terms_declined_link}.
@@ -498,7 +492,6 @@ mk:
       title: Измени
       title_user: Измени на %{user}
       title_user_link_html: Промени од %{user_link}
-      title_friend: Измени од мои пријатели
       title_nearby: Измени од соседни корисници
       empty: Не пронајдов промени.
       empty_area: Нема промени на ова подрачје.
@@ -513,19 +506,6 @@ mk:
         created: Создадено
         closed: Затворено
         belongs_to: Автор
-    subscribe:
-      heading: Да ве претплатам на слединов разговор за измени?
-      button: Претплати се на разговорот
-    unsubscribe:
-      heading: Да ве отпишам од претплатата на следниов разговор за измени?
-      button: Отпиши се од разговорот
-    heading:
-      title: Измени %{id}
-      created_by_html: Создадено од %{link_user} на %{created}.
-    no_such_entry:
-      heading: 'Нема ставка со назнаката: %{id}'
-      body: Жалиме, но не постојат измени со назнаката %{id}. Проверете да не сте
-        згрешиле во пишувањето, или пак да не сте стиснале на погрешна врска.
     show:
       title: 'Измена: %{id}'
       created: 'Создадено: %{when}'
@@ -559,6 +539,21 @@ mk:
     timeout:
       sorry: За жал, на списокот на промени што го побаравте му требаше предолго за
         да се добие.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Да ве претплатам на слединов разговор за измени?
+        button: Претплати се на разговорот
+      unsubscribe:
+        heading: Да ве отпишам од претплатата на следниов разговор за измени?
+        button: Отпиши се од разговорот
+    heading:
+      title: Измени %{id}
+      created_by_html: Создадено од %{link_user} на %{created}.
+    no_such_entry:
+      heading: 'Нема ставка со назнаката: %{id}'
+      body: Жалиме, но не постојат измени со назнаката %{id}. Проверете да не сте
+        згрешиле во пишувањето, или пак да не сте стиснале на погрешна врска.
   dashboards:
     contact:
       km away: '%{count} км од вас'
@@ -567,19 +562,14 @@ mk:
     popup:
       your location: Ваша местоположба
       nearby mapper: Соседен картограф
-      friend: Пријател
     show:
       title: Моја управувачница
       no_home_location_html: '%{edit_profile_link} и задајте ја вашата матична местоположба
         за да гледате корисници во близина.'
       edit_your_profile: Уредете си го профилот
-      my friends: Мои пријатели
-      no friends: Сè уште немате додадено пријатели.
       nearby users: Други соседни корисници
       no nearby users: Сè уште нема други корисници во вашата околина што признаваат
         дека работат на карти.
-      friends_changesets: измени на пријателите
-      friends_diaries: дневнички ставки на пријателите
       nearby_changesets: измени на соседните корисници
       nearby_diaries: дневнички ставки на сосед. корисн.
   diary_entries:
@@ -590,7 +580,6 @@ mk:
       use_map_link: На карта
     index:
       title: Дневници на корисници
-      title_friends: Дневници на пријателите
       title_nearby: Дневници на соседните корисници
       user_title: Дневникот на %{user}
       in_language_title: Дневнички написи на %{language}
@@ -657,15 +646,6 @@ mk:
       heading: Да ве отпишам од претплатата на разговорот во следната дневничка ставка?
       button: Отпиши се од разговорот
   diary_comments:
-    index:
-      title: Дневнички коментари додадени од %{user}
-      heading: Дневнички коментари на %{user}
-      subheading_html: Дневнички коментари додадени од %{user}
-      no_comments: Нема дневнички коментари
-    page:
-      post: Објава
-      when: Кога
-      comment: Коментар
     new:
       heading: Ставате коментар во следниов разговор за дневничка ставка?
   doorkeeper:
@@ -723,20 +703,6 @@ mk:
       title: Податотеката не е пронајдена
       description: Не можев да најдам постапка со податотека/папка/приложник со тоа
         име на опслужувачот на OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Да го додадам корисникот %{user} како пријател?
-      button: Додај како пријател
-      success: Сега сте пријатели со %{name}!
-      failed: Жалам, не можев да го додадам корисникот %{name} како пријател.
-      already_a_friend: Веќе сте пријатели со %{name}.
-      limit_exceeded: Во последно време се имате спријателено со многу корисници.
-        Почекајте малку, за да можете да се спријателувате со други.
-    remove_friend:
-      heading: Да го отстранам корисникот %{user} од пријатели?
-      button: Отстрани од пријатели
-      success: Корисникот %{name} е отстранет од вашите пријатели.
-      not_a_friend: '%{name} не е меѓу вашите пријатели.'
   geocoder:
     search:
       title:
@@ -1705,14 +1671,10 @@ mk:
         на авторот на %{replyurl}
       footer_html: Можете и да ја прочитате пораката на %{readurl} и да му испратите
         порака на авторот на %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Здраво %{to_user},
-      subject: '[OpenStreetMap] %{user} ве додаде како пријател'
-      had_added_you: '%{user} ве додаде како пријател на OpenStreetMap.'
       see_their_profile: Можете да го погледате профилот на оваа личност на %{userurl}.
       see_their_profile_html: Можете да го погледате профилот на оваа личност на %{userurl}.
-      befriend_them: Можете личноста и да ја додадете како пријател на %{befriendurl}.
-      befriend_them_html: Можете личноста и да ја додадете како пријател на %{befriendurl}.
     gpx_failure:
       hi: Здраво %{to_user},
       failed_to_import: 'не можеше да се увезе. Проверете дали е важечка GPX-податотека
@@ -1866,14 +1828,17 @@ mk:
       wrong_user: Најавени сте како „%{user}“, но пораката што побаравте да ја прочитате
         не е испратена до или од тој корисник. Најавете се под правилно корисничко
         име за да ја прочитате.
-    mark:
-      as_read: Пораката е означена како прочитана
-      as_unread: Пораката е означена како непрочитана
-    unmute:
-      notice: Пораката е преместена во Примени
-      error: Пораката не можеше да се премести во Примени.
     destroy:
       destroyed: Пораката е избришана
+    read_marks:
+      create:
+        notice: Пораката е означена како прочитана
+      destroy:
+        notice: Пораката е означена како непрочитана
+    mutes:
+      destroy:
+        notice: Пораката е преместена во Примени
+        error: Пораката не можеше да се премести во Примени.
     mailboxes:
       heading:
         my_inbox: Примени
@@ -2648,13 +2613,14 @@ mk:
     offline:
       heading: GPX-складиштето е исклучено
       message: Системот за складирање и подигање на GPX-податотеки моментално е недостапен.
-    georss:
-      title: ГПС-траги од OpenStreetMap
-    description:
-      description_with_count:
-        one: GPX-податотека со %{count} точка од %{user}
-        other: GPX-податотеки со %{count} точки од %{user}
-      description_without_count: GPX-податотека од %{user}
+    feeds:
+      show:
+        title: ГПС-траги од OpenStreetMap
+      description:
+        description_with_count:
+          one: GPX-податотека со %{count} точка од %{user}
+          other: GPX-податотеки со %{count} точки од %{user}
+        description_without_count: GPX-податотека од %{user}
   application:
     permission_denied: Немате дозвола за ова дејство
     require_cookies:
@@ -2814,7 +2780,6 @@ mk:
         contributor_terms_url: https://osmfoundation.org/wiki/Licence/Contributor_Terms
         contributor_terms: услови на учество
       continue: Зачленување
-      terms accepted: Ви благодариме што ги прифативте новите услови за учество!
       email_help:
         privacy_policy: правила за личните податоци
         privacy_policy_title: Правилата за лични податоци на OSMF, со одделот за е-поштенски
@@ -2851,8 +2816,6 @@ mk:
       edits: Уредувања
       traces: Траги
       notes: Белешки на картата
-      remove as friend: Отстрани од пријатели
-      add as friend: Додај во пријатели
       mapper since: 'Картограф од:'
       last map edit: 'Последно уредување на картата:'
       no activity yet: Сè уште нема активности
@@ -2927,6 +2890,15 @@ mk:
       user:
         summary_html: '%{name} создадено од %{ip_address} на %{date}'
         summary_no_ip_html: '%{name} создадено на %{date}'
+    changeset_comments:
+      page:
+        when: Кога
+        comment: Коментар
+    diary_comments:
+      index:
+        title: Дневнички коментари додадени од %{user}
+      page:
+        post: Објава
     suspended:
       title: Сметката е закочена
       heading: Сметката е закочена
index 72976ebf442d195fbbe7ecd95a541608955cedf6..5c70eb0bec8dc35d4fa5b451b399477f27254c3b 100644 (file)
@@ -85,8 +85,6 @@ mo:
       external auth: 'Ынтраря ын конт екстернэ:'
       openid:
         link text: че май есте ши аста?
-      public editing:
-        enabled link text: че май есте ши аста?
       contributor terms:
         link text: че май есте ши аста?
       save changes button: Апликаря модификэрилор
@@ -147,9 +145,6 @@ mo:
       ways_paginated: Кэй (%{x}-%{y} дин %{count})
       relations: Релаций (%{count})
       relations_paginated: Релаций (%{x}-%{y} дин %{count})
-  dashboards:
-    show:
-      my friends: Приетений мей
   diary_entries:
     form:
       location: 'Ситуаре:'
@@ -159,11 +154,6 @@ mo:
       confirm: Конфирмаре
     diary_comment:
       confirm: Конфирмаре
-  diary_comments:
-    page:
-      post: Месаж
-      when: Кынд
-      comment: Коментариу
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -576,6 +566,13 @@ mo:
       my profile: Профилул меу
       my settings: Реглажеле меле
       my comments: Коментарииле меле
+    changeset_comments:
+      page:
+        when: Кынд
+        comment: Коментариу
+    diary_comments:
+      page:
+        post: Месаж
   notes:
     show:
       title: 'Нотэ: %{id}'
index 7d48e0b2f6cf4aeeb825f381b9af2e0a1e66ba62..6847422d749592ece8868da182e8bb07e301b495 100644 (file)
@@ -181,9 +181,6 @@ mr:
       current email address: वर्तमान ईमेल पत्ता
       openid:
         link text: हे काय आहे?
-      public editing:
-        enabled link text: हे काय आहे?
-        disabled link text: मी संपादन कां करू शकत नाही?
       contributor terms:
         link text: हे काय आहे?
       save changes button: बदल जतन करा
@@ -280,7 +277,6 @@ mr:
     index:
       title: बदलसंच
       title_user: '%{user}चे बदलसंच'
-      title_friend: आपल्या मित्रांचे बदलसंच
       title_nearby: जवळपासच्या सदस्यांचे बदलसंच
       empty: बदलसंच सापडले नाहीत.
       empty_area: या भागात बदलसंच नाहीत.
@@ -318,13 +314,9 @@ mr:
     popup:
       your location: आपले ठिकाण
       nearby mapper: जवळपासचे नकाशाकार
-      friend: मित्र
     show:
       title: माझे फलक
-      my friends: माझे मित्र
       nearby users: जवळपासचे इतर सदस्य
-      friends_changesets: मित्रांचे बदलसंच
-      friends_diaries: मित्रांच्या अनुदिनीतील नोंदी
       nearby_changesets: जवळपासच्या सदस्यांचे बदलसंच
       nearby_diaries: जवळपासच्या सदस्यांच्या अनुदिनीतील नोंदी
   diary_entries:
@@ -335,7 +327,6 @@ mr:
       use_map_link: नकाशा वापरा
     index:
       title: सदस्यांच्या अनुदिनी
-      title_friends: मित्रांच्या अनुदिनी
       title_nearby: जवळपासच्या सदस्यांच्या अनुदिनी
       user_title: '%{user}ची अनुदिनी'
       in_language_title: '%{language} भाषेतील अनुदिनीतील नोंदी'
@@ -386,11 +377,6 @@ mr:
       all:
         title: ओपनस्ट्रीटमॅप अनुदिनीतील नोंदी
         description: ओपनस्ट्रीटमॅप सदस्यांकडून अलीकडील अनुदिनी-नोंदी
-  diary_comments:
-    page:
-      post: पाठवा
-      when: कधी
-      comment: टिप्पणी
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -907,11 +893,13 @@ mr:
       wrong_user: आपण '%{user}' म्हणून दाखल झालेले आहात, पण आपण जो संदेश वाचू इच्छिता,
         तो संदेश वेगळ्या सदस्यास पाठविण्यात आला आहे. कृपया संदेश वाचण्यासाठी बरोबर
         सदस्य म्हणून दाखल व्हा.
-    mark:
-      as_read: संदेश वाचला आहे अशी खूण केली
-      as_unread: संदेश वाचला नाही अशी खूण केली
     destroy:
       destroyed: संदेश वगळला
+    read_marks:
+      create:
+        notice: संदेश वाचला आहे अशी खूण केली
+      destroy:
+        notice: संदेश वाचला नाही अशी खूण केली
     mailboxes:
       heading:
         my_inbox: माझी अंतर्पेटी
@@ -1233,8 +1221,9 @@ mr:
       upload_trace: अनुरेख चढवा
       all_traces: सर्व अनुरेख
       my_traces: माझे अनुरेख
-    georss:
-      title: OpenStreetMap GPS अनुरेखा
+    feeds:
+      show:
+        title: OpenStreetMap GPS अनुरेखा
   application:
     settings_menu:
       account_settings: खाते मांडण्या
@@ -1271,7 +1260,6 @@ mr:
       edits: संपादने
       traces: अनुरेख
       notes: नकाशावरील टीपा
-      add as friend: मित्र जोडा
       mapper since: 'ह्या दिनांकपासून मानचित्रकार:'
       ct status: 'योगदात्यांसाठी अटी:'
       ct undecided: अनिर्णीत
@@ -1283,6 +1271,13 @@ mr:
       show:
         title: सदस्य
         heading: सदस्य
+    changeset_comments:
+      page:
+        when: कधी
+        comment: टिप्पणी
+    diary_comments:
+      page:
+        post: पाठवा
   user_blocks:
     helper:
       block_duration:
index ad71a336ceb01f0eaee7b366ea50eebebce1130b..70a857720cb3729142f8c239eb68f989c11852a2 100644 (file)
@@ -225,13 +225,6 @@ ms:
       external auth: Pengesahan Luaran
       openid:
         link text: apakah ini?
-      public editing:
-        heading: Penyuntingan umum
-        enabled: Dihidupkan. Tidak tanpa nama, data boleh disunting.
-        enabled link text: apakah ini?
-        disabled: Dimatikan, data tidak boleh disunting, semua suntingan yang sebelumnya
-          adalah tanpa nama.
-        disabled link text: mengapa tak boleh sunting?
       contributor terms:
         heading: Syarat Penyumbang
         agreed: Anda telah bersetuju dengan Terma-Terma Penyumbang yang baru.
@@ -277,6 +270,8 @@ ms:
           france: Perancis
           italy: Itali
           rest_of_world: Negara lain
+      update:
+        terms accepted: Terima kasih kerana menerima terma-terma penyumbang yang baru!
       terms_declined_flash:
         terms_declined_link: laman wiki ini
   browse:
@@ -366,7 +361,6 @@ ms:
     index:
       title: Set perubahan
       title_user: Set perubahan oleh %{user}
-      title_friend: Set perubahan oleh kawan anda
       title_nearby: Set perubahan pengguna berdekatan
       empty: Tiada set perubahan ditemui.
       empty_area: Tiada set perubahan di kawasan ini.
@@ -410,15 +404,10 @@ ms:
     popup:
       your location: Lokasi anda
       nearby mapper: Pemeta berdekatan
-      friend: Kawan
     show:
       edit_your_profile: Sunting profil anda
-      my friends: Kawan saya
-      no friends: Anda belum mencari kawan lagi.
       nearby users: Pengguna lain yang berdekatan
       no nearby users: Belum ada pengguna lain yang mengaku memetakan kawasan berdekatan.
-      friends_changesets: set ubah kawan-kawan
-      friends_diaries: catatan diari kawan-kawan
       nearby_changesets: set ubah pengguna berdekatan
       nearby_diaries: catatan diari pengguna berdekatan
   diary_entries:
@@ -429,7 +418,6 @@ ms:
       use_map_link: Guna Peta
     index:
       title: Diari pengguna
-      title_friends: Diari kawan
       title_nearby: Diari pengguna berdekatan
       user_title: Diari %{user}
       in_language_title: Catatan Diari dalam %{language}
@@ -482,13 +470,6 @@ ms:
       all:
         title: Catatan diari OpenStreetMap
         description: Catatan-catatan diari terbaru oleh pengguna OpenStreetMap
-  diary_comments:
-    index:
-      no_comments: Tiada ulasan diari
-    page:
-      post: Muat Naik
-      when: Bila
-      comment: Komen
   doorkeeper:
     flash:
       applications:
@@ -501,18 +482,6 @@ ms:
       title: Ralat aplikasi
     not_found:
       title: Fail tidak dijumpai
-  friendships:
-    make_friend:
-      heading: Jadikan %{user} sebagai kawan?
-      button: Jadikan kawan
-      success: '%{name} kini kawan anda!'
-      failed: Maaf, %{name} tidak dapat ditambahkan sebagai kawan.
-      already_a_friend: Anda sudah berkawan dengan %{name}.
-    remove_friend:
-      heading: Gugurkan %{user} sebagai kawan?
-      button: Gugurkan kawan
-      success: '%{name} telah dibuang daripada senarai kawan anda.'
-      not_a_friend: '%{name} bukan kawan anda.'
   geocoder:
     search:
       title:
@@ -1215,13 +1184,10 @@ ms:
         dengan subjek %{subject}:'
       footer_html: Anda juga boleh membaca pesanan ini di %{readurl} dan anda boleh
         membalasnya di %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Apa khabar %{to_user},
-      subject: '[OpenStreetMap] %{user} menjadikan anda sebagai rakannya'
-      had_added_you: '%{user} telah menjadikan anda sebagai kawan di OpenStreetMap.'
       see_their_profile: Anda boleh membaca profilnya di %{userurl}.
       see_their_profile_html: Anda boleh melihat profilnya di %{userurl}.
-      befriend_them: Anda juga boleh menjadikannya sebagai kawan di %{befriendurl}.
     gpx_failure:
       hi: Hai %{to_user},
       failed_to_import: 'tidak dapat diimport. Berikut ialah ralatnya:'
@@ -1332,11 +1298,13 @@ ms:
       wrong_user: Anda telah log masuk sebagai `%{user}' tetapi pesanan yang anda
         pohon untuk membaca itu tidak dihantar oleh/kepada pengguna itu. Sila log
         masuk sebagai pengguna yang betul untuk membacanya.
-    mark:
-      as_read: Pesanan ditandai sebagai sudah dibaca
-      as_unread: Pesanan ditandai sebagai belum dibaca
     destroy:
       destroyed: Pesanan dihapuskan
+    read_marks:
+      create:
+        notice: Pesanan ditandai sebagai sudah dibaca
+      destroy:
+        notice: Pesanan ditandai sebagai belum dibaca
     mailboxes:
       heading:
         my_inbox: Peti masuk saya
@@ -1788,12 +1756,13 @@ ms:
     offline:
       heading: Storan GPX di Luar Talian
       message: Sistem storan dan muat naik fail GPX kini tidak boleh digunakan.
-    georss:
-      title: Jejak OpenStreetMap GPS
-    description:
-      description_with_count:
-        other: GPX fail dengan %{count} mata dari %{user}
-      description_without_count: Fail GPX daripada %{user}
+    feeds:
+      show:
+        title: Jejak OpenStreetMap GPS
+      description:
+        description_with_count:
+          other: GPX fail dengan %{count} mata dari %{user}
+        description_without_count: Fail GPX daripada %{user}
   application:
     permission_denied: Anda tidak mempunyai keizinan untuk melakukan tindakan ini.
     require_cookies:
@@ -1859,7 +1828,6 @@ ms:
       display name description: Nama pengguna anda yang dipaparkan kepada awam. Anda
         boleh menukarnya dalam keutamaan anda pada bila-bila masa.
       continue: Daftar
-      terms accepted: Terima kasih kerana menerima terma-terma penyumbang yang baru!
       use external auth: Secara alternatif, gunakan khidmat pihak ketiga untuk log
         masuk
     no_such_user:
@@ -1887,8 +1855,6 @@ ms:
       edits: Suntingan
       traces: Jejak
       notes: Nota Peta
-      remove as friend: Gugurkan Kawan
-      add as friend: Jadikan Kawan
       mapper since: 'Pemeta sejak:'
       ct status: 'Terma-terma penyumbang:'
       ct undecided: Belum diputuskan
@@ -1941,6 +1907,13 @@ ms:
       user:
         summary_html: '%{name} diwujudkan dari %{ip_address} pada %{date}'
         summary_no_ip_html: '%{name} diwujudkan pada %{date}'
+    changeset_comments:
+      page:
+        when: Bila
+        comment: Komen
+    diary_comments:
+      page:
+        post: Muat Naik
     suspended:
       title: Akaun Digantung
       heading: Akaun Digantung
index c8ca92e604299eedb69210d1c6002842e7814dda..81abd6ab95a777fa9c91c6ab2c3276fc90b5f467 100644 (file)
@@ -189,14 +189,12 @@ my:
       m away: '%{count}မိုင် အကွာ'
     popup:
       your location: သင်၏ တည်နေရာ
-      friend: သူငယ်ချင်း
   diary_entries:
     form:
       location: တည်နေရာ
       use_map_link: မြေပုံကို အသုံးချရန်
     index:
       title: အသုံးပြုသူများ၏ နေ့စဉ်မှတ်တမ်းများ
-      title_friends: မိတ်ဆွေများ၏ နေ့စဉ်မှတ်တမ်းများ
       title_nearby: အနီးအနားရှိ အသုံးပြု၏နေ့စဉ်မှတ်တမ်းများ
       user_title: '%{user}၏ နေ့စဉ်မှတ်တမ်း'
     show:
@@ -214,9 +212,6 @@ my:
       report: ဤမှတ်ချက်ကို အစီရင်ခံတင်ပြရန်
     location:
       location: 'တည်နေရာ:'
-  diary_comments:
-    page:
-      comment: မှတ်ချက်
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -527,7 +522,7 @@ my:
       hi: ဟိုင်း %{to_user}၊
     message_notification:
       hi: ဟိုင်း %{to_user}၊
-    friendship_notification:
+    follow_notification:
       hi: ဟိုင်း %{to_user}၊
     email_confirm:
       greeting: ဟိုင်း၊
@@ -720,6 +715,9 @@ my:
       show:
         title: အသုံးပြုသူများ
         heading: အသုံးပြုသူများ
+    changeset_comments:
+      page:
+        comment: မှတ်ချက်
   user_blocks:
     helper:
       block_duration:
index 15c63977e431af2d78f0a7309a0754125add27a6..b67bd1db3b16b1b7a30662e8dd68fbb0b3766e90 100644 (file)
@@ -271,13 +271,6 @@ nb:
       external auth: Ekstern autentisering
       openid:
         link text: hva er dette?
-      public editing:
-        heading: Offentlig redigering
-        enabled: Aktivert. Ikke anonym og kan redigere data.
-        enabled link text: hva er dette?
-        disabled: Deaktivert og kan ikke redigere data. Alle tidligere redigeringer
-          er anonyme.
-        disabled link text: hvorfor kan jeg ikke redigere?
       contributor terms:
         heading: Bidragsytervilkår
         agreed: Du har godkjent de nye Bidragsytervilkårene.
@@ -339,6 +332,8 @@ nb:
           france: Frankrike
           italy: Italia
           rest_of_world: Resten av verden
+      update:
+        terms accepted: Takk for at du godtok de nye bidragsytervilkårene!
   browse:
     deleted_ago_by_html: Slettet %{time_ago} av %{user}
     edited_ago_by_html: Redigert %{time_ago} av %{user}
@@ -444,7 +439,6 @@ nb:
     index:
       title: Endringssett
       title_user: Endringssett av %{user}
-      title_friend: Mine venners endringssett
       title_nearby: Endringssett av brukere i nærheten
       empty: Fant ingen endringssett.
       empty_area: Ingen endringssett i dette området.
@@ -459,8 +453,6 @@ nb:
         created: Opprettet
         closed: Lukket
         belongs_to: Forfatter
-    no_such_entry:
-      heading: 'Ingen oppføring med ID-en: %{id}'
     show:
       title: 'Endringssett: %{id}'
       discussion: Diskusjon
@@ -483,6 +475,9 @@ nb:
       relations_paginated: Forbindelser (%{x}-%{y} av %{count})
     timeout:
       sorry: Listen over endringssett du ba om tok for lang tid å hente.
+  changeset_subscriptions:
+    no_such_entry:
+      heading: 'Ingen oppføring med ID-en: %{id}'
   dashboards:
     contact:
       km away: '%{count}km unna'
@@ -491,15 +486,10 @@ nb:
     popup:
       your location: Din posisjon
       nearby mapper: Bruker i nærheten
-      friend: Venn
     show:
-      my friends: Vennene mine
-      no friends: Du har ikke lagt til noen venner ennå.
       nearby users: Andre nærliggende brukere
       no nearby users: Det er ingen andre brukere som innrømmer kartlegging i ditt
         område ennå.
-      friends_changesets: venners endringssett
-      friends_diaries: venners dagbokoppføringer
       nearby_changesets: endringssett av brukere i nærheten
       nearby_diaries: dagbokoppføringer av brukere i nærheten
   diary_entries:
@@ -510,7 +500,6 @@ nb:
       use_map_link: Bruk kart
     index:
       title: Brukeres dagbøker
-      title_friends: Dine venners dagbøker
       title_nearby: Dagbøkene til brukere i nærheten
       user_title: Dagboken til %{user}
       in_language_title: Dagboksoppføringer på %{language}
@@ -567,11 +556,6 @@ nb:
       all:
         title: Innlegg i OpenStreetMap-dagboka
         description: Nye innlegg i dagbøkene til OpenStreetMap-brukere
-  diary_comments:
-    page:
-      post: Artikkel
-      when: Når
-      comment: Kommentar
   errors:
     contact:
       contact: kontakt
@@ -579,18 +563,6 @@ nb:
       title: Forbudt
     not_found:
       title: Fil ikke funnet
-  friendships:
-    make_friend:
-      heading: Legge til %{user} som venn?
-      button: Legg til som venn
-      success: '%{name} er nå din venn!'
-      failed: Klarte ikke legge til %{name} som venn.
-      already_a_friend: Du og %{name} er allerede venner.
-    remove_friend:
-      heading: Fjerne %{user} som venn?
-      button: Fjern venn
-      success: '%{name} ble fjernet fra dine venner'
-      not_a_friend: '%{name} er ikke en av dine venner.'
   geocoder:
     search:
       title:
@@ -1415,14 +1387,10 @@ nb:
         %{subject}:'
       footer_html: Du kan også lese meldingen på %{readurl}, eller sende forfatteren
         en melding på %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hei %{to_user},
-      subject: '[OpenStreetMap] %{user} la deg til som en venn'
-      had_added_you: '%{user} har lagt deg til som venn på OpenStreetMap.'
       see_their_profile: Du kan se profilen deres på %{userurl}.
       see_their_profile_html: Du kan se profilen hens på %{userurl}.
-      befriend_them: Du kan også legge dem til som venn på %{befriendurl}.
-      befriend_them_html: Du kan også legge hen til som venn på %{befriendurl}.
     gpx_failure:
       hi: Hei, %{to_user},
       failed_to_import: 'klarte ikke importere. Her er feilen:'
@@ -1533,14 +1501,17 @@ nb:
       back: Tilbake
       wrong_user: Du er logget inn som «%{user}», men meldingen du ønsker å lese ble
         ikke sendt fra eller til den brukeren. Logg inn som korrekt bruker for å lese.
-    mark:
-      as_read: Melding markert som lest
-      as_unread: Melding markert som ulest
-    unmute:
-      notice: Meldingen har blitt flyttet til innboksen
-      error: Meldingen kunne ikke flyttes til innboksen.
     destroy:
       destroyed: Melding slettet
+    read_marks:
+      create:
+        notice: Melding markert som lest
+      destroy:
+        notice: Melding markert som ulest
+    mutes:
+      destroy:
+        notice: Meldingen har blitt flyttet til innboksen
+        error: Meldingen kunne ikke flyttes til innboksen.
     mailboxes:
       heading:
         my_inbox: Min innboks
@@ -2015,13 +1986,14 @@ nb:
       heading: GPX-lagring er utilgjengelig
       message: Systemet for opplasting og lagring av GPX-filer er ikke tilgjengelig
         for øyeblikket.
-    georss:
-      title: OpenStreetMap GPS-spor
-    description:
-      description_with_count:
-        one: GPX-fil med %{count} punkt fra %{user}
-        other: GPX-fil med %{count} punkter fra %{user}
-      description_without_count: GPX-fil fra %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-spor
+      description:
+        description_with_count:
+          one: GPX-fil med %{count} punkt fra %{user}
+          other: GPX-fil med %{count} punkter fra %{user}
+        description_without_count: GPX-fil fra %{user}
   application:
     permission_denied: Du har ikke tilgang til å utføre denne handlingen
     require_cookies:
@@ -2088,7 +2060,6 @@ nb:
       display name description: Ditt offentlig fremviste brukernavn. Du kan endre
         dette senere i alternativ.
       continue: Registrer deg
-      terms accepted: Takk for at du godtok de nye bidragsytervilkårene!
       use external auth: Alternativt kan du bruke en tredjepart til å logge inn
     no_such_user:
       title: Ingen bruker funnet
@@ -2112,8 +2083,6 @@ nb:
       edits: Redigeringer
       traces: Spor
       notes: Kartmerknader
-      remove as friend: Fjern venn
-      add as friend: Legg til venn
       mapper since: 'Bruker siden:'
       ct status: 'Bidragsyters vilkår:'
       ct undecided: Usikker
@@ -2165,6 +2134,13 @@ nb:
       user:
         summary_html: '%{name} opprettet fra %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} opprettet %{date}'
+    changeset_comments:
+      page:
+        when: Når
+        comment: Kommentar
+    diary_comments:
+      page:
+        post: Artikkel
     suspended:
       title: Konto stengt
       heading: Konto stengt
index 8eb6b2501361a9eec873e06ec4c45666e2be1e23..27261ee3e91edac5f6155ac6d980797a191f5102 100644 (file)
@@ -75,9 +75,6 @@ nds:
   accounts:
     edit:
       title: Brukerkonto ännern
-      public editing:
-        enabled link text: Wat is dat?
-        disabled link text: Worüm kann ik nix ännern?
       save changes button: Ännern spiekern
     go_public:
       make_edits_public_button: All mien Ännern apen wiesen
@@ -102,7 +99,6 @@ nds:
     popup:
       your location: Dien Standoort
       nearby mapper: Koortenmaker in de Neegd
-      friend: Fründ
     show:
       nearby users: Annere Brukers in de Neegd
   diary_entries:
@@ -136,14 +132,6 @@ nds:
         one: 1 Kommentar
         other: '%{count} Kommentare'
       edit_link: Dissen Indrag ännern
-  friendships:
-    make_friend:
-      success: '%{name} ist nu dien Fründ.'
-      failed: Dat hett nich klappt,  %{name} as Fründ totofögen.
-      already_a_friend: '%{name} is al dien Fründ.'
-    remove_friend:
-      success: '%{name} is rutnahmen bi de Frünn.'
-      not_a_friend: '%{name} is keen von dien Frünn.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -554,8 +542,6 @@ nds:
       send message: Naricht sennen
       diary: Dagbook
       edits: Ännern
-      remove as friend: as Fründ rutnehmen
-      add as friend: as Fründ tofögen
       mapper since: 'Koortenmaker sied:'
       email address: 'E-Mail-Adress:'
   user_blocks:
index 8e6e7c6e90dc1e5736bcbfa03cb6fcc61d09eb32..50b2d4359a68486f28c50e437bf1e86bb2b5aafa 100644 (file)
@@ -234,11 +234,6 @@ ne:
       openid:
         link: https://wiki.openstreetmap.org/wiki/OpenID
         link text: यो के हो ?
-      public editing:
-        heading: सार्वजनिक सम्पादन
-        enabled: सक्रिय। Not anonymous and can edit data.
-        enabled link text: यो के हो ?
-        disabled link text: म किन सम्पादन गर्न सक्दिन?
       contributor terms:
         heading: योगदानकर्ता सर्तहरू
         agreed: तपाईँले नयाँ योगदानकर्ता सर्तहरू स्वीकार गर्नुभएको छ।
@@ -359,7 +354,6 @@ ne:
     index:
       title: परिवर्नहरू
       title_user: '%{user}द्वरा गरिएका परिवर्तनहरू'
-      title_friend: तपाईको मित्रहरूद्वारा गरिएका परिवर्तनहरू
       title_nearby: तपाईँको नजिक हुनुभएका प्रयोगकर्ताहरूद्वारा गरिएका परिवर्तनहरू
       empty: कुनै पनि परिवर्तनहरू भेटिएनन्।
       empty_area: यो क्षेत्रमा कुनै परिवर्तनहरू छैनन्।
@@ -374,10 +368,6 @@ ne:
         created: सृजना गरिएको
         closed: समापन भएको
         belongs_to: रचयिता
-    heading:
-      title: 'परिवर्तनहरू: %{id}'
-    no_such_entry:
-      heading: '%{id} आइडी भएको कुनै अभिलेख भेटिएन'
     show:
       title: 'परिवर्तनहरू: %{id}'
       discussion: छलफल
@@ -398,6 +388,11 @@ ne:
     timeout:
       sorry: माफ गर्नुहोला, तपाईँले खोज्नुभएको परिवर्तनहरूको सूची प्राप्त गर्न निकै
         समय लाग्यो ।
+  changeset_subscriptions:
+    heading:
+      title: 'परिवर्तनहरू: %{id}'
+    no_such_entry:
+      heading: '%{id} आइडी भएको कुनै अभिलेख भेटिएन'
   dashboards:
     contact:
       km away: '%{count}किमि टाढा'
@@ -405,10 +400,7 @@ ne:
     popup:
       your location: तपाईँको स्थान
       nearby mapper: नजिकको मानचित्रकर्मी
-      friend: साथी
     show:
-      my friends: मेरा साथीहरू
-      no friends: तपाईँ कुनै साथीहरूलाई थप्नु भएको छैन
       nearby users: अन्य नजिकका प्रयोगकर्ताहरू
   diary_entries:
     new:
@@ -418,7 +410,6 @@ ne:
       use_map_link: नक्सा प्रयोग गर्ने
     index:
       title: प्रयोगकर्ताका डायरीहरू
-      title_friends: साथीहरूका डायरीहरू
       title_nearby: नजिकका प्रयोगकर्ताहरूका डायरीहरू
       user_title: '%{user}को डायरी'
       in_language_title: '%{language} भाषामा भएका दैनिकीहरू'
@@ -483,11 +474,6 @@ ne:
       button: छलफलको लागि सदस्यता लिनुहोस्
     unsubscribe:
       button: छलफलबाट सदस्यता रद्द गर्नुहोस्
-  diary_comments:
-    page:
-      post: पोष्ट
-      when: कहिले
-      comment: टिप्पणी
   errors:
     contact:
       contact: सम्पर्क
@@ -497,16 +483,6 @@ ne:
       title: अनुप्रयोगसम्बन्धी त्रुटि
     not_found:
       title: फाइल फेला परेन
-  friendships:
-    make_friend:
-      button: साथीको रूपमा थप्नुहोस्
-      success: '%{name} अब तपाईँको साथी हुनुभएको छ!'
-      failed: माफ गर्नुहोला, %{name}लाई मित्रको रुपमा थप्न सकिएन।
-      already_a_friend: '%{name} सँग तपाईँले पहिले साथी हुनुहुन्छ।'
-      limit_exceeded: तपाईँले हालसालै थुप्रै प्रयोगकर्ताहरूलाई साथी बनाउनु भएको छ।
-        Please wait a while before trying to friend any more.
-    remove_friend:
-      button: साथीबाट हटाउने
   geocoder:
     search:
       title:
@@ -1057,9 +1033,8 @@ ne:
       hi: नमस्ते %{to_user},
     message_notification:
       hi: नमस्ते %{to_user},
-    friendship_notification:
+    follow_notification:
       hi: नमस्ते %{to_user},
-      subject: '[OpenStreetMap] %{user} ले तपाईँलाई मित्रको रूपमा थप्नु भयो'
     gpx_failure:
       hi: नमस्ते %{to_user},
     gpx_success:
@@ -1443,8 +1418,6 @@ ne:
       edits: सम्पादनहरू
       traces: ट्रेसहरू
       notes: म्याप टिप्पणीहरू
-      remove as friend: साथीबाट हटाउने
-      add as friend: साथी जोड्नुहोस्
       status: 'स्थिति:'
       role:
         administrator: यी प्रयोगकर्ता प्रबन्धक हुनुहुन्छ
@@ -1457,6 +1430,13 @@ ne:
       show:
         title: प्रयोगकर्ताहरू
         heading: प्रयोगकर्ताहरू
+    changeset_comments:
+      page:
+        when: कहिले
+        comment: टिप्पणी
+    diary_comments:
+      page:
+        post: पोष्ट
   user_role:
     filter:
       not_a_role: '`%{role}''  मान्य भूमिका हैन ।'
index 22f1641a1dbf0a0081f4d512c201ac67b8e78346..d23780f2ab2a2a83d424727be9b9ce70299f862f 100644 (file)
@@ -148,10 +148,10 @@ nl:
         support_url: Ondersteunings-URL
         allow_read_prefs: gebruikersvoorkeuren lezen
         allow_write_prefs: gebruikersvoorkeuren wijzigen
-        allow_write_diary: dagboekberichten schrijven, reacties en vrienden toevoegen
+        allow_write_diary: dagboekberichten schrijven en reacties toevoegen
         allow_write_api: de kaart wijzigen
-        allow_read_gpx: privé-GPS-trajecten lezen
-        allow_write_gpx: GPS-trajecten uploaden
+        allow_read_gpx: privé-gps-trajecten lezen
+        allow_write_gpx: gps-trajecten uploaden
         allow_write_notes: opmerkingen wijzigen
       diary_comment:
         body: Tekst
@@ -179,7 +179,7 @@ nl:
         longitude: Lengtegraad
         public: Openbaar
         description: Beschrijving
-        gpx_file: Kies GPS-trajectbestand
+        gpx_file: Kies gps-trajectbestand
         visibility: Zichtbaarheid
         tagstring: Labels
       message:
@@ -311,13 +311,6 @@ nl:
       external auth: Externe authenticatie
       openid:
         link text: wat is dit?
-      public editing:
-        heading: Openbaar bewerken
-        enabled: Ingeschakeld. U bent niet anoniem en u kunt bewerken.
-        enabled link text: wat is dit?
-        disabled: Uitgeschakeld. U kunt niet bewerken en al uw eerdere bewerkingen
-          zijn anoniem.
-        disabled link text: waarom kan ik niets bewerken?
       contributor terms:
         heading: Bijdragersvoorwaarden
         agreed: U bent akkoord gegaan met de nieuwe Bijdragersovereenkomst.
@@ -409,10 +402,13 @@ nl:
           france: Frankrijk
           italy: Italië
           rest_of_world: Rest van de wereld
+      update:
+        terms accepted: Dank u wel voor het aanvaarden van de nieuwe bijdragersovereenkomst!
       terms_declined_flash:
         terms_declined_html: We vinden het jammer dat u hebt besloten de nieuwe Bijdragersvoorwaarden
           niet te accepteren. Zie %{terms_declined_link} voor meer informatie.
         terms_declined_link: deze wiki-pagina
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/NL:Contributor_Terms_Declined
   browse:
     deleted_ago_by_html: '%{time_ago} verwijderd door %{user}'
     edited_ago_by_html: '%{time_ago} bewerkt door %{user}'
@@ -512,29 +508,35 @@ nl:
       view_redacted_data: Geredigeerde gegevens bekijken
       view_redaction_message: Redactiebericht bekijken
   nodes:
+    not_found_message:
+      sorry: 'Knooppunt #%{id} kon helaas niet gevonden worden.'
     timeout:
       sorry: Het ophalen van de gegevens voor het ID %{id} duurde te lang.
   old_nodes:
     not_found_message:
-      sorry: 'Sorry, knooppunt #%{id} versie %{version} kon niet worden gevonden.'
+      sorry: 'Sorry, knooppunt #%{id} versie %{version} kon niet gevonden worden.'
     timeout:
       sorry: Het ophalen van de gegevens voor knooppunt met het ID %{id} duurde te
         lang.
   ways:
+    not_found_message:
+      sorry: 'Weg #%{id} kon helaas niet gevonden worden.'
     timeout:
       sorry: Het ophalen van de gegevens voor de weg met het ID %{id} duurde te lang.
   old_ways:
     not_found_message:
-      sorry: 'Sorry, weg #%{id} versie %{version} niet kon worden gevonden.'
+      sorry: 'Sorry, weg #%{id} versie %{version} niet kon gevonden worden.'
     timeout:
       sorry: Het ophalen van de geschiedenis voor de weg met het ID %{id} duurde te
         lang.
   relations:
+    not_found_message:
+      sorry: 'Relatie #%{id} kon helaas niet gevonden worden.'
     timeout:
       sorry: Het ophalen van de relatie met het ID %{id} duurde te lang.
   old_relations:
     not_found_message:
-      sorry: 'Sorry, relatie #%{id} versie %{version} kon niet worden gevonden.'
+      sorry: 'Sorry, relatie #%{id} versie %{version} kon niet gevonden worden.'
     timeout:
       sorry: Het ophalen van de geschiedenis voor de relatie met het ID %{id} duurde
         te lang.
@@ -557,7 +559,7 @@ nl:
       title: Wijzigingensets
       title_user: Wijzigingensets door %{user}
       title_user_link_html: Wijzigingensets door %{user_link}
-      title_friend: Wijzigingensets van mijn vrienden
+      title_followed: Wijzigingensets door gevolgde kaartmakers
       title_nearby: Wijzigingensets van gebruikers in de buurt
       empty: Geen wijzigingensets gevonden.
       empty_area: Geen wijzigingensets in dit gebied.
@@ -572,19 +574,6 @@ nl:
         created: Aangemaakt
         closed: Gesloten
         belongs_to: Auteur
-    subscribe:
-      heading: Abonneren op de volgende discussie over wijzigingenreeks?
-      button: Op discussie abonneren
-    unsubscribe:
-      heading: Afmelden voor de volgende discussie over wijzigingenreeks
-      button: Van discussie afmelden
-    heading:
-      title: Wijzigingenreeks %{id}
-      created_by_html: Gemaakt door %{link_user} op %{created}.
-    no_such_entry:
-      heading: 'Geen gegevens met de id: %{id}'
-      body: Er is geen wijzigingenreeks met de id %{id}. Controleer uw spelling, of
-        wellicht is de lijk die u hebt gevolgd foutief.
     show:
       title: 'Wijzigingenset: %{id}'
       created: 'Aangemaakt: %{when}'
@@ -613,9 +602,26 @@ nl:
       ways_paginated: Wegen (%{x}-%{y} van %{count})
       relations: Relaties (%{count})
       relations_paginated: Relaties (%{x}-%{y} van %{count})
+    not_found_message:
+      sorry: 'Wijzigingenset #%{id} kon helaas niet gevonden worden.'
     timeout:
       sorry: Het oproepen van de lijst met wijzigingensets die u hebt opgevraagd duurde
         te lang.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Abonneren op de volgende discussie over wijzigingenset?
+        button: Op discussie abonneren
+      unsubscribe:
+        heading: Afmelden voor de volgende discussie over wijzigingenset
+        button: Van discussie afmelden
+    heading:
+      title: Wijzigingenset %{id}
+      created_by_html: Gemaakt door %{link_user} op %{created}.
+    no_such_entry:
+      heading: 'Geen gegevens met de id: %{id}'
+      body: Er is geen wijzigingenset met de id %{id}. Controleer uw spelling, of
+        wellicht is de lijk die u hebt gevolgd foutief.
   dashboards:
     contact:
       km away: '%{count} km verwijderd'
@@ -624,19 +630,19 @@ nl:
     popup:
       your location: Uw locatie
       nearby mapper: Nabije kaartmaker
-      friend: Vriend
+      following: Gevolgde kaartmaker
     show:
       title: Mijn dashboard
       no_home_location_html: '%{edit_profile_link} en stel uw thuislocatie in om gebruikers
         in de buurt te zien.'
       edit_your_profile: Pas uw profiel aan
-      my friends: Mijn vrienden
-      no friends: U hebt nog geen vrienden toegevoegd.
+      followings: Gevolgde kaartmakers
+      no followings: Je volgt nog geen andere kaartmakers.
       nearby users: Andere nabije gebruikers
       no nearby users: Er zijn nog geen andere gebruikers die hebben opgegeven in
         de buurt te mappen.
-      friends_changesets: wijzigingensets van vrienden
-      friends_diaries: dagboekberichten van vrienden
+      followed_changesets: wijzigingensets
+      followed_diaries: dagboekberichten
       nearby_changesets: wijzigingensets van gebruikers in de buurt
       nearby_diaries: dagboekberichten van gebruikers in de buurt
   diary_entries:
@@ -647,7 +653,7 @@ nl:
       use_map_link: Kaart gebruiken
     index:
       title: Gebruikersdagboeken
-      title_friends: Dagboeken van vrienden
+      title_followed: Dagboeken van gevolgde kaartmakers
       title_nearby: Dagboeken van gebruikers in de buurt
       user_title: Dagboek van %{user}
       in_language_title: Dagboekberichten in het %{language}
@@ -714,15 +720,6 @@ nl:
       heading: Afmelden voor de volgende dagboekaantekeningendiscussie?
       button: Van discussie afmelden
   diary_comments:
-    index:
-      title: Dagboekreacties toegevoegd door %{user}
-      heading: Dagboekreacties van %{user}
-      subheading_html: Dagboekreacties toegevoegd door %{user}
-      no_comments: Geen dagboekreacties
-    page:
-      post: Dagboekbericht
-      when: Wanneer
-      comment: Reactie
     new:
       heading: Een reactie toevoegen aan de volgende dagboekaantekening?
   doorkeeper:
@@ -780,20 +777,23 @@ nl:
       title: Bestand niet gevonden
       description: Kon een bestand/directory/API-bewerking met die naam niet vinden
         op de OpenStreetMap-server (HTTP 404)
-  friendships:
-    make_friend:
-      heading: '%{user} als vriend toevoegen?'
-      button: Als vriend toevoegen
-      success: '%{name} is nu uw vriend.'
-      failed: Het toevoegen van %{name} als vriend is helaas mislukt.
-      already_a_friend: U bent al bevriend met %{name}.
-      limit_exceeded: U hebt recentelijk veel vriendschapsverzoeken verstuurd. Wacht
-        even voordat u nieuwe verzoeken kunt versturen.
-    remove_friend:
-      heading: '%{user} als vriend verwijderen?'
-      button: Als vriend verwijderen
-      success: '%{name} is verwijderd uit uw vriendenlijst.'
-      not_a_friend: '%{name} staat niet in uw vriendelijst.'
+  follows:
+    show:
+      follow:
+        heading: Wil je %{user} volgen?
+        button: Gebruiker volgen
+      unfollow:
+        heading: Wil je %{user} niet langer volgen?
+        button: Gebruiker niet langer volgen
+    create:
+      success: Je volgt vanaf nu %{name}!
+      failed: Het beginnen volgen van %{name} is helaas mislukt.
+      already_followed: Je volgt %{name} al.
+      limit_exceeded: Je bent recentelijk veel gebruikers beginnen volgen. Gelieve
+        even te wachten alvorens nog meer gebruikers te proberen volgen.
+    destroy:
+      success: Je volgt nu niet langer %{name}.
+      not_followed: Je volgt %{name} niet.
   geocoder:
     search:
       title:
@@ -1766,18 +1766,30 @@ nl:
         naar de auteur via %{replyurl}
       footer_html: U kunt het bericht ook lezen op %{readurl} en u kunt een bericht
         sturen naar de auteur via %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hoi %{to_user},
-      subject: '[OpenStreetMap] %{user} heeft u als vriend toegevoegd'
-      had_added_you: '%{user} heeft u toegevoegd als vriend op OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} volgt je'
+      followed_you: '%{user} volgt je nu op OpenStreetMap.'
       see_their_profile: U kunt zijn/haar profiel weergeven op %{userurl}.
       see_their_profile_html: U kunt zijn/haar profiel weergeven op %{userurl}.
-      befriend_them: U kunt deze gebruiker ook als vriend toevoegen op %{befriendurl}.
-      befriend_them_html: U kunt deze gebruiker ook als vriend toevoegen op %{befriendurl}.
+      follow_them: Je kunt hen terugvolgen op %{followurl}.
+      follow_them_html: Je kunt hen terugvolgen op %{followurl}.
+    gpx_details:
+      details: 'Details van je bestand:'
+      filename: Bestandsnaam
+      url: URL
+      description: Beschrijving
+      tags: Labels
+      total_points: Totaal aantal punten
+      imported_points: Aantal geïmporteerde punten
     gpx_failure:
       hi: Hallo %{to_user},
-      failed_to_import: Het lijkt erop dat het importeren van uw bestand als GPS-tracering
+      failed_to_import: Het lijkt erop dat het importeren van uw bestand als gps-traject
         mislukt is.
+      verify: 'Controleer of je bestand een geldig GPX-bestand of een archief met
+        GPX-bestand(en) in een ondersteund formaat is (.tar.gz, .tar.bz2, .tar, .zip,
+        .gpx.gz, .gpx.bz2). Is er misschien een formatterings- of syntaxisprobleem
+        met het bestand? Dit is de importfoutmelding:'
       more_info: Meer informatie over mislukte GPX-imports en hoe u ze kunt vermijden,
         kunt u vinden op %{url}
       more_info_html: Meer informatie over mislukte GPX-imports en hoe u ze kunt vermijden,
@@ -1785,6 +1797,7 @@ nl:
       subject: '[OpenStreetMap] GPX-import mislukt'
     gpx_success:
       hi: Hallo %{to_user},
+      imported_successfully: Je bestand is toegevoegd als gps-traject.
       all_your_traces: Al uw succesvol geüploade GPX-traces zijn te vinden op %{url}.
       all_your_traces_html: Alle succesvol geüploade GPX-traces zijn te vinden op
         %{url}.
@@ -1858,7 +1871,7 @@ nl:
       details: Reageer of lees meer over de opmerking op %{url}.
       details_html: Reageer of lees meer over de opmerking op %{url}.
     changeset_comment_notification:
-      description: 'OpenStreetMap-wijzigingenreeks #%{id}'
+      description: 'OpenStreetMap-wijzigingenset #%{id}'
       hi: Hoi %{to_user},
       commented:
         subject_own: '[OpenStreetMap] %{commenter} heeft gereageerd op één van uw
@@ -1893,6 +1906,8 @@ nl:
       success: Uw registratie is bevestigd. Dank u wel voor het registreren!
       already active: Dit account is al bevestigd.
       unknown token: De opgegeven bevestigingscode is verlopen of bestaat niet.
+      if_need_resend: Als we de bevestigingsmail opnieuw moeten zenden, gebruik dan
+        de onderstaande knop.
       resend_button: Stuur de bevestigingsmail opnieuw
     confirm_resend:
       failure: De gebruiker %{name} is niet gevonden.
@@ -1932,14 +1947,17 @@ nl:
       wrong_user: |-
         U bent aangemeld als "%{user}", maar het bericht dat u wilt lezen is niet door die gebruiker gestuurd of aan die gebruiker gericht.
         Meld u aan als de juiste gebruiker om het te lezen.
-    mark:
-      as_read: Gemarkeerd als gelezen
-      as_unread: Gemarkeerd als ongelezen
-    unmute:
-      notice: Bericht is verplaatst naar Inbox
-      error: Het bericht kon niet naar de Inbox worden verplaatst.
     destroy:
       destroyed: Het bericht is verwijderd
+    read_marks:
+      create:
+        notice: Gemarkeerd als gelezen
+      destroy:
+        notice: Gemarkeerd als ongelezen
+    mutes:
+      destroy:
+        notice: Bericht is verplaatst naar Inbox
+        error: Het bericht kon niet naar de Inbox worden verplaatst.
     mailboxes:
       heading:
         my_inbox: Mijn Postvak IN
@@ -2708,13 +2726,13 @@ nl:
       details_without_tags_html: '%{time_ago} door %{user}'
     index:
       public_traces: Openbare gps-trajecten
-      my_gps_traces: Mijn GPS-traces
+      my_gps_traces: Mijn gps-trajecten
       public_traces_from: Openbare gps-trajecten van %{user}
       description: Door recente gps-traject-uploads bladeren
       tagged_with: ' gelabeld met %{tags}'
       empty_title: Hier nog niets
-      empty_upload_html: '%{upload_link} of lees meer over GPS-tracering op de %{wiki_link}.'
-      upload_new: Upload een nieuwe tracering
+      empty_upload_html: '%{upload_link} of lees meer over gps-trajecten op de %{wiki_link}.'
+      upload_new: Upload een nieuw traject
       wiki_page: wikipagina
       upload_trace: Traject uploaden
       all_traces: Alle trajecten
@@ -2729,13 +2747,14 @@ nl:
       heading: De opslag van GPX-bestanden is niet beschikbaar
       message: Het systeem voor het opslaan en uploaden van GPX-bestanden is momenteel
         niet beschikbaar.
-    georss:
-      title: OpenStreetMap gps-trajecten
-    description:
-      description_with_count:
-        one: GPX-bestand met één punt van %{user}
-        other: GPX-bestand met %{count} punten van %{user}
-      description_without_count: GPX-bestand van %{user}
+    feeds:
+      show:
+        title: OpenStreetMap gps-trajecten
+      description:
+        description_with_count:
+          one: GPX-bestand met één punt van %{user}
+          other: GPX-bestand met %{count} punten van %{user}
+        description_without_count: GPX-bestand van %{user}
   application:
     permission_denied: U hebt geen toestemming om toegang te krijgen tot die handeling
     require_cookies:
@@ -2804,7 +2823,7 @@ nl:
       openid: Aanmelden met OpenStreetMap
       read_prefs: Gebruikersvoorkeuren lezen
       write_prefs: Gebruikersvoorkeuren wijzigen
-      write_diary: Dagboekberichten schrijven, reacties geven en vrienden maken
+      write_diary: Dagboekberichten schrijven en reacties bij dagboekberichten plaatsen
       write_api: De kaart wijzigen
       read_gpx: Persoonlijke gps-trajecten lezen
       write_gpx: Gps-trajecten uploaden
@@ -2845,7 +2864,7 @@ nl:
       permissions: Rechten
       redirect_uris: Omleidings-URI's
     not_found:
-      sorry: Die toepassing kon helaas niet worden gevonden.
+      sorry: Die toepassing kon helaas niet gevonden worden.
   oauth2_authorizations:
     new:
       title: Autorisatie vereist
@@ -2897,7 +2916,6 @@ nl:
         privacy_policy_title: OSMF-privacybeleid, met een kopje over e-mailadressen
         contributor_terms: bijdragevoorwaarden
       continue: Registreren
-      terms accepted: Dank u wel voor het aanvaarden van de nieuwe bijdragersovereenkomst!
       email_help:
         privacy_policy: privacybeleid
         privacy_policy_title: OSMF-privacybeleid, met een sectie over e-mailadressen
@@ -2934,8 +2952,8 @@ nl:
       edits: Bewerkingen
       traces: Trajecten
       notes: Kaartopmerkingen
-      remove as friend: Vriend verwijderen
-      add as friend: Vriend toevoegen
+      unfollow: Niet langer volgen
+      follow: Volgen
       mapper since: 'Kaartmaker sinds:'
       last map edit: 'Recentste bewerking:'
       no activity yet: Nog geen activiteit
@@ -3010,6 +3028,21 @@ nl:
       user:
         summary_html: '%{name} aangemaakt vanaf %{ip_address} op %{date}'
         summary_no_ip_html: '%{name} aangemaakt op %{date}'
+    comments:
+      index:
+        changesets: Wijzigingensets
+        diary_entries: Dagboekberichten
+    changeset_comments:
+      page:
+        changeset: Wijzigingenset
+        when: Wanneer
+        comment: Reactie
+    diary_comments:
+      index:
+        title: Dagboekreacties toegevoegd door %{user}
+      page:
+        post: Dagboekbericht
+        when: Wanneer
     suspended:
       title: Gebruiker opgeschort
       heading: Account opgeschort
@@ -3051,7 +3084,7 @@ nl:
         of bijwerken.
       non_moderator_revoke: U moet moderator zijn om een blokkade te kunnen verwijderen.
     not_found:
-      sorry: De gebruikersblokkade met het ID %{id} kon helaas niet worden gevonden.
+      sorry: De gebruikersblokkade met het ID %{id} kon helaas niet gevonden worden.
       back: Terug naar de index
     new:
       title: Blokkade aanmaken voor %{name}
@@ -3108,6 +3141,7 @@ nl:
         ended: beëindigd
         revoked_html: ingetrokken door %{name}
         active: actief
+        active_until_read: actief tot gelezen
         read_html: gelezen op %{time}
         time_in_future_title: '%{time_absolute}; in %{time_relative}'
         time_in_past_title: '%{time_absolute}; %{time_relative}'
@@ -3166,9 +3200,9 @@ nl:
     index:
       title: Opmerkingen gemaakt door %{user}
       heading: Opmerkingen van %{user}
-      subheading_html: Opmerkingen %{submitted} of %{commented} door %{user}
-      subheading_submitted: verzonden
-      subheading_commented: gereageerd op
+      subheading_html: Opmerkingen %{submitted} door %{user} of waar %{user} op %{commented}
+      subheading_submitted: geplaatst
+      subheading_commented: reageerde
       no_notes: Geen opmerkingen
       id: Id
       creator: Auteur
@@ -3220,10 +3254,23 @@ nl:
       intro: Een fout gezien? Ontbreekt er iets? Laat het andere kaartmakers weten
         zodat wij het kunnen verbeteren. Verplaats de markering naar de juiste positie
         en beschrijf het probleem.
-      anonymous_warning_html: U bent niet aangemeld. Als u updates van uw aantekening
-        wilt ontvangen, kunt u %{log_in} of %{sign_up}.
-      anonymous_warning_log_in: aanmelden
-      anonymous_warning_sign_up: registreren
+      anonymous_warning_html: Je bent niet aangemeld. Het is aanbevolen %{log_in}
+        of %{sign_up} zodat u reacties van andere kaartmakers kunt ontvangen en uw
+        opmerking beter opgevolgd kan worden.
+      anonymous_warning_log_in: je aan te melden
+      anonymous_warning_sign_up: je te registreren
+      counter_warning_html: Je hebt meer dan %{x_anonymous_notes} geplaatst, dat is
+        geweldig voor de community, bedankt! We willen je graag uitnodigen om %{contribute_by_yourself},
+        het is niet zo heel ingewikkeld en %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} anonieme opmerking'
+        other: '%{count} anonieme opmerkingen'
+      counter_warning_guide_link:
+        text: zelf de kaart te bewerken
+        url: https://wiki.openstreetmap.org/wiki/NL:Beginnershandleiding
+      counter_warning_forum_link:
+        text: de community helpt je graag
+        url: https://community.openstreetmap.org/
       advice: Deze opmerking is openbaar en kan gebruikt worden om de kaart bij te
         werken. Vul hier dus geen persoonlijke informatie in, en ook geen informatie
         uit kaarten of telefoonboeken waar auteursrechtelijke bescherming op rust.
@@ -3236,6 +3283,8 @@ nl:
       showing_page: Pagina %{page}
       next: Volgende
       previous: Vorige
+    not_found_message:
+      sorry: 'Opmerking #%{id} kon helaas niet gevonden worden.'
   javascripts:
     close: Sluiten
     share:
index 114e0323ad96d22ce4fc1017f783a48361cc94a5..f9ec23dc1fba10f9022992d6331242c13c0b9246 100644 (file)
@@ -224,13 +224,6 @@ nn:
       external auth: Ekstern autentisering
       openid:
         link text: kva er dette?
-      public editing:
-        heading: Offentleg redigering
-        enabled: Aktivert. Ikkje anonym og kan redigere data.
-        enabled link text: kva er dette?
-        disabled: Deaktivert og kan ikkje redigere data. Alle tidlegare redigeringar
-          er anonyme.
-        disabled link text: kvifor can eg ikkje redigere?
       contributor terms:
         heading: Vilkår for bidragsytarar
         agreed: Du har godkjent dei nye bidragsytervilkåra
@@ -299,6 +292,8 @@ nn:
           france: Frankrike
           italy: Italia
           rest_of_world: Resten av verda
+      update:
+        terms accepted: Takk for at du godtok dei nye bidragsytervilkårene!
   browse:
     deleted_ago_by_html: Sletta %{time_ago} av %{user}
     edited_ago_by_html: Redigert %{time_ago} av %{user}
@@ -407,7 +402,6 @@ nn:
       title: Endringssett
       title_user: Endringssett av %{user}
       title_user_link_html: Endringssett av %{user_link}
-      title_friend: Endringssett av venene dine
       title_nearby: Endringssett av brukarar i nærleiken
       empty: Fann ingen endringssett.
       empty_area: Ingen endringssett i dette området.
@@ -458,19 +452,14 @@ nn:
     popup:
       your location: Posisjonen din
       nearby mapper: Brukarar i nærleiken
-      friend: Ven
     show:
       title: Kontrollpanelet mitt
       no_home_location_html: '%{edit_profile_link} og set heimestaden din for å sjå
         brukarar i nærleiken.'
       edit_your_profile: Endra profilen din
-      my friends: Mine vener
-      no friends: Du har ikkje lagt til nokon venner enno.
       nearby users: Andre brukarar i nærleiken
       no nearby users: Det er ingen andre brukarar som innrømmer kartlegging i området
         ditt enno.
-      friends_changesets: endringssett av vener
-      friends_diaries: dagbokoppføringar av vener
       nearby_changesets: endringssett av naboar
       nearby_diaries: dagbokoppføringar av naboar
   diary_entries:
@@ -481,7 +470,6 @@ nn:
       use_map_link: Bruk kart
     index:
       title: Brukardagbøker
-      title_friends: Dagbøkene til venane dine
       title_nearby: Dagbøkene til brukarar i nærleiken
       user_title: '%{user} si dagbok'
       in_language_title: Dagbokoppføringar på %{language}
@@ -537,30 +525,6 @@ nn:
       all:
         title: Oppføringar OpenStreetMap-dagboka
         description: Nylege oppføringar i dagbøkene til OpenStreetMap-brukarar
-  diary_comments:
-    index:
-      title: Kommentarar i dagboka frå %{user}
-      heading: '%{user} sine kommentarar til dagboksoppføringar'
-      subheading_html: Kommentarar i dagboka frå %{user}
-      no_comments: Ingen kommentarar i dagboka
-    page:
-      post: Oppføring
-      when: Når
-      comment: Kommentar
-  friendships:
-    make_friend:
-      heading: Legg til %{user} som ein ven?
-      button: Legg til som ven
-      success: '%{name} er no venen din!'
-      failed: Klarte ikkje leggje til %{name} som ven.
-      already_a_friend: Du er allereie venner med %{name}.
-      limit_exceeded: Du har lagt til mange venar i det siste. Ver venleg og vent
-        litt før du legg til fleire.
-    remove_friend:
-      heading: Fjern %{user} som ein ven?
-      button: Fjern som ein ven
-      success: '%{name} vart fjerna frå venene dine'
-      not_a_friend: '%{name} er ikkje ein av venene dine.'
   geocoder:
     search:
       title:
@@ -1486,14 +1450,10 @@ nn:
         forfattaren på %{replyurl}
       footer_html: Du kan òg lesa meldinga på %{readurl}, og du kan senda ei melding
         til forfattaren på %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hei %{to_user},
-      subject: '[OpenStreetMap] %{user} la deg til som ein ven'
-      had_added_you: '%{user} har lagt deg til som ven på OpenStreetMap.'
       see_their_profile: Du kan sjå profilen deira på %{userurl}.
       see_their_profile_html: Du kan sjå profilen hens på %{userurl}.
-      befriend_them: Du kan òg leggje dei til som ven på %{befriendurl}.
-      befriend_them_html: Du kan òg legga hen til som ein ven på %{befriendurl}.
     gpx_failure:
       hi: Hei, %{to_user}
       failed_to_import: 'klarte ikkje importere. Her er feilen:'
@@ -1640,11 +1600,13 @@ nn:
       back: Tilbake
       wrong_user: Du er logga inn som «%{user}», men meldinga du ynskjer å lese vart
         ikkje send til den brukaren. Logg inn som korrekt brukar for å lese.
-    mark:
-      as_read: Melding markert som lese
-      as_unread: Melding markert som ulese
     destroy:
       destroyed: Melding sletta
+    read_marks:
+      create:
+        notice: Melding markert som lese
+      destroy:
+        notice: Melding markert som ulese
     mailboxes:
       heading:
         my_inbox: Mottekne
@@ -2206,10 +2168,11 @@ nn:
       heading: GPX-lagring er utilgjengelig
       message: Systemet for opplasting og lagring av GPX-filer er ikkje tilgjengeleg
         for augneblunken.
-    georss:
-      title: OpenStreetMap GPS-spor
-    description:
-      description_without_count: GPX-fil frå %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-spor
+      description:
+        description_without_count: GPX-fil frå %{user}
   application:
     require_cookies:
       cookies_needed: Du ser ut til å ha deaktivert informasjonskapsler. Aktivar informasjonskapsler
@@ -2252,7 +2215,6 @@ nn:
       display name description: Ditt offentleg framviste brukernavn. Du kan endre
         dette seinare i innstellingane.
       continue: Registrer deg
-      terms accepted: Takk for at du godtok dei nye bidragsytervilkårene!
     no_such_user:
       title: Ingen brukar funnet
       heading: Brukaren %{user} finst ikkje
@@ -2275,8 +2237,6 @@ nn:
       edits: Endringar
       traces: Spor
       notes: Kartmerknadar
-      remove as friend: Fjern ven
-      add as friend: Legg til ven
       mapper since: 'Brukar sidan:'
       ct status: 'Bidragsytarvilkår:'
       ct undecided: Usikker
@@ -2329,6 +2289,15 @@ nn:
       user:
         summary_html: '%{name} oppretta frå %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} oppretta %{date}'
+    changeset_comments:
+      page:
+        when: Når
+        comment: Kommentar
+    diary_comments:
+      index:
+        title: Kommentarar i dagboka frå %{user}
+      page:
+        post: Oppføring
     suspended:
       title: Konto stengt
       heading: Konto stengt
index 966738bd123fffa6d133115c6d88548b2fc75e79..a8272a4a5a8958ad8a3a2912559280ff554df7ab 100644 (file)
@@ -202,14 +202,6 @@ nqo:
       external auth: ߞߐߞߊ߲ߠߊ ߕߎ߬ߡߊ߬ߢߐ߲߰ߦߊ߬ߟߌ
       openid:
         link text: ߡߎ߲߬ ߦߋ߫ ߣߌ߲߬ ߘߌ߫؟
-      public editing:
-        heading: ߖߊ߬ߡߊ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲
-        enabled: ߓߘߊ߫ ߓߌ߬ߟߴߊ߬ ߟߊ߫. ߊ߬ ߕߍ߫ ߘߋ߬ ߞߏ߫ ߕߐ߯ߒߕߊ߲ ߛߋ߫ ߕߐ߫ ߓߍ߫ ߟߐ߲ߕߊ ߡߊߦߟߍ߬ߡߊ߲߫
-          ߠߊ߫.
-        enabled link text: ߣߌ߲߬ ߦߋ߫ ߡߎ߲߬ ߘߌ߫؟
-        disabled: ߊ߬ ߓߘߊ߫ ߓߴߊ߬ ߟߊ߫ ߊ߬ ߘߏ߲߬ ߕߍ߫ ߛߋ߫ ߟߐ߲ߕߊ ߡߊߦߟߍ߬ߡߊ߲߫ ߠߊ߫߸ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲
-          ߛߎ߯-ߎ-ߛߎ߫ ߞߐ߲߬ߣߍ߲߫ ߦߋ߫ ߢߍ ߘߐ߫߸ ߏ߬ ߓߍ߯ ߦߋ߫ ߕߐ߯ߒߕߊ߲ ߠߋ߬ ߘߌ߫.
-        disabled link text: ߡߎ߲߬ߠߊ߫ ߒߠߋ ߕߍ߫ ߛߋ߫ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߫ ߞߍ߫ ߟߊ߫؟
       contributor terms:
         heading: ߓߟߏߓߌߟߊߢߐ߲߯ߞߊ߲ ߛߙߊߕߌ ߟߎ߬
         agreed: ߌ ߓߘߊ߫ ߘߌ߬ߢߍ߫ ߓߟߏߓߌߟߊߢߐ߲߯ߞߊ߲ߠߊ߫ ߞߎߘߊ ߛߙߊߕߌ ߟߎ߬ ߡߊ߬.
@@ -285,6 +277,8 @@ nqo:
           france: ߝߊ߬ߙߊ߲߬ߛߌ߫
           italy: ߌߕߊߟߌ߫
           rest_of_world: ߘߎߢߊ߫ ߕߐ߬ ߕߏߣߍ߲
+      update:
+        terms accepted: ߌ ߣߌ߫ ߗߋ߫ ߓߟߏߡߊߜߍ߲ ߛߙߊߕߌ߫ ߞߎߘߊ ߟߊߡߌ߬ߘߊ ߟߊ߫߹
       terms_declined_flash:
         terms_declined_html: ߊ߲ ߓߘߊ߫ ߖߌ߰ߡߊߖߊ߲߬ߝߊ߫ ߞߊ߬ ߓߍ߲߬ ߌ ߓߊ߲߭ ߡߊ߬ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫
           ߞߎߘߊ ߞߎߘߊ ߛߙߊߕߌ ߟߊߡߌ߬ߣߊ߫ ߟߊ߫. ߛߴߌ ߘߌ߫ ߞߎ߲߬ߠߊ߬ߝߏ߬ߣߌ߲߫ ߛߌߦߊߡߊ߲߫ ߞߏ ߘߐ߫߸ %{terms_declined_link}
@@ -386,7 +380,6 @@ nqo:
       title: ߟߊ߬ߘߏ߲߬ߠߌ߲ ߠߎ߬ ߡߊߝߊ߬ߟߋ߲߫
       title_user: '%{user} ߓߘߊ߫ ߟߊ߬ߘߏ߲߬ߠߌ߲ ߡߊߝߊ߬ߟߋ߲߫'
       title_user_link_html: ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߫ ߞߙߎ %{user_link} ߓߟߏ߫
-      title_friend: ߒ ߕߋߙߌ ߓߘߊ߫ ߟߊ߬ߘߏ߲߬ߠߌ߲ ߡߊߝߊ߬ߟߋ߲߫
       title_nearby: ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߟߊߘߏ߲߬ߣߍ߲߫ ߛߌ߬ߢߐ߲߰ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߎ߬ ߓߟߏ߫
       empty: ߟߊ߬ߘߏ߲߬ߠߌ߲߬ ߡߊ߬ߝߊ߬ߟߋ߲߬ߠߌ߲߬ ߡߊ߫ ߛߐ߬ߘߐ߲߫
       empty_area: ߟߊ߬ߘߏ߲߬ߠߌ߲߬ ߡߊ߬ߝߊ߬ߟߋ߲߬ߠߌ߲߬ ߕߍ߫ ߕߌ߲߬ߞߎߘߎ߲ ߘߐ߫.
@@ -437,15 +430,10 @@ nqo:
     popup:
       your location: ߌ ߘߌ߲߬ߞߌߙߊ
       nearby mapper: ߛߌ߰ߢߐ߲߮ ߔߊ߬ߔߘߊ߬ߦߊ߬ߟߊ
-      friend: ߕߋߙߌ
     show:
       edit_your_profile: ߌ ߢߊߞߙߍ ߡߊߦߟߍ߬ߡߊ߲߫
-      my friends: ߒ ߕߋߙߌ ߟߎ߬
-      no friends: ߌ ߡߊ߫ ߕߋߙߌ߫ ߛߌ߫ ߝߙߊ߬ ߡߎߣߎ߲߬.
       nearby users: ߛߌ߰ߢߐ߲߮ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߜߘߍ ߟߎ߬
       no nearby users: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߜߘߍ߫ ߛߌ߫ ߟߊߞߙߐ߬ߛߌ߫ ߔߊ߬ߔߘߊ߬ߦߊ߬ߟߊ ߘߴߌ ߕߙߐߝߍ߬ ߡߎߣߎ߲߬.
-      friends_changesets: ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬
-      friends_diaries: ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߕߋ߬ߟߋ߲ ߓߊ߯ߙߊ ߟߎ߬
       nearby_changesets: ߞߙߍ߬ߝߍ߬ ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬
       nearby_diaries: ߛߌ߰ߢߐ߲߰ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߊ߫ ߕߋ߬ߟߋ߲ ߟߊ߬ߘߏ߬ߠߌ߲߬ߣߐ ߟߎ߬
   diary_entries:
@@ -456,7 +444,6 @@ nqo:
       use_map_link: ߔߊ߬ߔߘߊ ߟߊߓߊ߯ߙߊ߫
     index:
       title: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߎ߬ ߕߋ߬ߟߋ߲
-      title_friends: ߕߋߙߌ ߟߎ߬ ߕߋ߬ߟߋ߲
       title_nearby: ߛߌ߰ߢߐ߲߮ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߎ߬ ߕߋ߬ߟߋ߲
       user_title: '%{user} ߕߋ߬ߟߋ߲'
       in_language_title: '%{language} ߕߋ߬ߟߋ߲ ߟߊ߬ߘߏ߲߬ߠߌ߲ ߠߎ߬'
@@ -509,16 +496,6 @@ nqo:
       all:
         title: ߏߔߌ߲ߛߕߑߙߌߕߑߡߊߔ ߕߋ߬ߟߋ߲ ߟߊ߬ߘߏ߲߬ߠߌ߲ ߠߎ߬
         description: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߟߊ߫ ߕߋ߬ߟߋ߲ ߟߊ߬ߘߏ߲߬ߠߌ߲ ߏߔߌ߲ߛߕߑߙߌߕߑߡߊߔ ߞߊ߲߬
-  diary_comments:
-    index:
-      title: ߕߋ߬ߟߋ߲ ߡߙߌߣߊ߲߲߫ ߝߙߊ߬ߣߍ߲ %{user} ߓߟߏ߫
-      heading: '%{user} ߟߊ߫ ߕߋ߬ߟߋ߲ ߡߙߌߣߊ߲߲ ߠߎ߬'
-      subheading_html: ߕߋ߬ߟߋ߲ ߡߙߌߣߊ߲߲ ߝߙߊ߬ߣߍ߲ %{user} ߓߟߏ߫
-      no_comments: ߕߋ߬ߟߋ߲ ߡߙߌߣߊ߲߲߫ ߕߴߦߋ߲߬
-    page:
-      post: ߗߋߓߏ߲
-      when: ߕߎ߬ߡߊ߫ ߖߐ߲߬
-      comment: ߡߙߌߣߊ߲ߦߌߘߊ
   doorkeeper:
     flash:
       applications:
@@ -533,20 +510,6 @@ nqo:
       title: ߟߥߊ߬ߟߌ߬ߟߌ ߝߎ߬ߕߎ߲߬ߕߌ
     not_found:
       title: ߞߐߕߐ߮ ߡߊ߬ ߛߐ߬ߘߐ߲߬
-  friendships:
-    make_friend:
-      heading: ' ߞߊ߬ %{user} ߞߍ߫ ߌ ߕߋߙߌ ߘߌ߫؟'
-      button: ߞߍ߫ ߕߋߙߌ ߘߌ߫
-      success: '%{name} ߓߘߊ߫ ߞߴߌ ߕߋߙߌ ߘߌ߫߹'
-      failed: ߤߊߞߍ߬ߕߏ߫߸ %{name} ߓߘߊ߫ ߗߌߙߏ߲߫ ߝߊ߬ߙߊ ߘߐ߫ ߕߋߙߌ ߟߎ߬ ߟߊ߫
-      already_a_friend: ߌ ߕߋߙߌ ߟߋ߬ ߦߋ߫ %{name} ߘߌ߫ ߞߘߐ߬ߡߊ߲߫
-      limit_exceeded: ߌ ߓߊ߲߫ ߛߊ߲߮ ߠߋ߬ ߦߋ߫ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߥߙߍߓߊߓߊ ߞߍ߫ ߟߴߌ ߕߋߙߌ ߘߌ߫ ߣߌ߲߬.
-        ߒ߬ߓߊ߬ ߥߛߎ߬ߣߍ߲߫ ߘߐߞߐ߬ߣߐ߲߫ ߖߊ߰ߣߌ߲߫ ߦߊ߬ߣߴߌ ߞߍߕߐ߫ ߦߋ߫ ߕߋߙߌ߫ ߜߘߍ߫ ߟߊߘߊ߲߫ ߠߊ߫.
-    remove_friend:
-      heading: ߡߍ߲ ߕߴߌ ߕߋߙߌ߫ ߘߌ߫ %{user}؟
-      button: ߌ ߕߋߙߌ߫ ߕߍ߫
-      success: '%{name} ߓߘߊ߫ ߓߊ߲߫ ߓߐ߫ ߟߴߌ ߕߋߙߌߦߊ ߟߊ߫'
-      not_a_friend: '%{name} ߕߴߌ ߕߋߙߌ ߝߋ߲߫ ߘߌ߫.'
   geocoder:
     search:
       title:
@@ -1113,15 +1076,10 @@ nqo:
         ߟߴߊ߬ ߛߓߍߓߊ߮ ߡߊ߬ %{replyurl} ߟߊ߫
       footer_html: ߌ ߘߌ߫ ߛߋ߫ ߗߋߛߓߍ ߘߐߞߊ߬ߙߊ߲߬ ߠߊ߫ %{readurl} ߟߊ߫ ߊ߬ ߣߴߌ ߘߌ߫ ߛߋ߫ ߗߋߛߓߍ
         ߗߋ߫ ߟߴߊ߬ ߛߓߍߓߊ߮ ߡߊ߬ %{replyurl} ߟߊ߫
-    friendship_notification:
+    follow_notification:
       hi: '%{to_user} ߣߌ߫ ߕߎ߬ߡߊ߬'
-      subject: '[ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ] %{user} ߓߘߴߌ ߝߙߊ߬ ߕߋߙߌ ߟߎ߬ ߟߊ߫'
-      had_added_you: '%{user} ߓߘߴߌ ߝߙߊ߬ ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ ߞߊ߲߬.'
       see_their_profile: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߬ ߢߊߞߙߍ ߦߋ߫ ߟߊ߫ ߦߊ߲߬ %{userurl}.
       see_their_profile_html: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߬ ߢߊߞߙߍ ߦߋ߫ ߟߊ߫ ߦߊ߲߬ %{userurl}.
-      befriend_them: ߌ ߝߣߊ߫ ߘߌ߫ ߛߴߊ߬ߟߎ߫ ߝߙߊ߬ ߟߊ߫ ߕߋߙߌ ߟߎ߬ ߟߊ߫ %{befriendurl} ߘߐ߫
-      befriend_them_html: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߫ ߝߙߊ߬ ߟߊ߫ ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߝߣߊ߫ %{befriendurl}
-        ߘߐ߫
     gpx_failure:
       hi: '%{to_user} ߣߌ߫ ߕߎ߬ߡߊ߬'
       failed_to_import: 'ߟߊ߬ߛߣߍ߬ߟߌ߬ ߗߌߙߏ߲ߣߍ߲. ߝߎ߬ߕߎ߲߬ߕߌ ߦߋ߫ ߦߊ߲߬:'
@@ -1236,11 +1194,13 @@ nqo:
       wrong_user: ߌ ߜߊ߲߬ߞߎ߲߬ߣߍ߲߬ ߦߋ߫ %{user} ߟߋ߬ ߘߌ߫ ߒ߬ߞߊ߬ ߌ ߢߌ߬ߣߊ߬ߣߍ߲߫ ߗߋߛߓߍ ߡߍ߲
         ߘߐߞߊ߬ߙߊ߲߬ ߞߏ ߡߊ߬߸ ߏ߬ ߗߋߣߍ߲߫ ߕߴߏ߬ ߓߟߏ߫ ߥߟߊ߫ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߏ߬ ߡߊ߬. ߌ ߜߊ߲߬ߞߎ߲߫
         ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߖߐ߲ߖߐ߲ ߘߌ߫ ߖߊ߰ߣߌ߲߫ ߛߴߌ ߘߌ߫ ߛߴߊ߬ ߘߐߞߊ߬ߙߊ߲߬ ߠߊ߫.
-    mark:
-      as_read: ߗߋߛߓߍ ߓߘߊ߫ ߣߐ߫ߣߐ߫ ߘߐ߬ߞߊ߬ߙߊ߲߬ߣߍ߲ ߘߌ߫
-      as_unread: ߗߋߛߓߍ ߓߘߊ߫ ߣߐ߬ߣߐ߬ ߞߊ߬ߙߊ߲߬ߓߊߟߌ ߘߌ߫
     destroy:
       destroyed: ߗߋߛߓߍ ߓߘߊ߫ ߖߏ߬ߛߌ߫
+    read_marks:
+      create:
+        notice: ߗߋߛߓߍ ߓߘߊ߫ ߣߐ߫ߣߐ߫ ߘߐ߬ߞߊ߬ߙߊ߲߬ߣߍ߲ ߘߌ߫
+      destroy:
+        notice: ߗߋߛߓߍ ߓߘߊ߫ ߣߐ߬ߣߐ߬ ߞߊ߬ߙߊ߲߬ߓߊߟߌ ߘߌ߫
     mailboxes:
       heading:
         my_inbox: ߒ ߠߊ߫ ߞߏ߲߬ߘߏ ߞߣߐߟߊ
@@ -1545,10 +1505,11 @@ nqo:
     offline:
       heading: GPX ߟߊߡߙߊ߬ߦߙߐ ߜߊ߲߬ߞߎ߲߬ߓߊߟߌ ߟߋ߬
       message: GPX ߞߐߕߐ߮ ߟߊߡߙߊ߬ߦߙߐ ߣߴߊ߬ ߟߊ߬ߦߟߍ߬ߟߌ߬ ߞߊ߲ߞߋ ߟߎ߬ ߕߴߊ߬ ߟߊ߫ ߕߊ߲߬.
-    georss:
-      title: ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ GPS ߜߋ߬ߙߋ
-    description:
-      description_without_count: GPX ߞߐߕߐ߮ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
+    feeds:
+      show:
+        title: ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ GPS ߜߋ߬ߙߋ
+      description:
+        description_without_count: GPX ߞߐߕߐ߮ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
   application:
     permission_denied: ߘߌ߬ߢߍ߬ ߞߍߣߍ߲߫ ߕߴߌ ߡߊ߬ ߞߏ߫ ߛߎ߮ ߏ߬ ߟߊߛߐ߬ߘߐ߲ ߘߐ߫
     require_cookies:
@@ -1640,7 +1601,6 @@ nqo:
       display name description: ߌ ߓߘߊ߫ ߕߐ߮ ߟߊߓߊ߯ߙߕߊ ߟߊߓߊ߯ߙߊ߫ ߖߊ߬ߡߊ ߢߊߞߘߐ߫.ߌ ߘߌ߫ ߛߴߏ߬
         ߡߊߝߊ߬ߟߋ߲߬ ߠߊ߫ ߦߟߌߡߊߛߙߋ ߞߣߐ߫ ߞߐߝߍ߬.
       continue: ߖߊ߬ߕߋ߬ߘߊ ߟߊߞߊ߬
-      terms accepted: ߌ ߣߌ߫ ߗߋ߫ ߓߟߏߡߊߜߍ߲ ߛߙߊߕߌ߫ ߞߎߘߊ ߟߊߡߌ߬ߘߊ ߟߊ߫߹
     no_such_user:
       title: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߛߎ߮ ߏ߬ ߕߍ߫ ߦߋ߲߬
       heading: ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ %{user} ߕߍ߫ ߦߋ߲߬
@@ -1665,8 +1625,6 @@ nqo:
       edits: ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬
       traces: ߝߏ߲߬ߝߏ߲ ߠߎ߬
       notes: ߡߊߔ ߦߟߌߣߐ ߟߎ߬
-      remove as friend: ߕߋߙߌߦߊ ߝߘߊ߫
-      add as friend: ߕߋߙߌ ߝߙߊ߬
       mapper since: 'ߔߊ߬ߔߘߊ߬ߦߊ߬ߟߊ ߘߌ߫ ߞߊ߬ߦߌ߯:'
       ct status: 'ߓߟߏߓߌߟߊߢߐ߲߯ߞߊ߲ ߛߙߊߕߌ ߟߎ߬:'
       email address: 'ߢߎߡߍߙߋ߲߫ߞߏ߲ߘߏ ߛߊ߲߬ߓߊ߬ߕߐ߮:'
@@ -1692,6 +1650,15 @@ nqo:
       user:
         summary_html: '%{name} ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ %{ip_address} ߟߋ߬ ߡߊ߬ %{date} ߟߊ߫'
         summary_no_ip_html: '%{name} ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ %{date} ߟߋ߬ ߟߊ߫'
+    changeset_comments:
+      page:
+        when: ߕߎ߬ߡߊ߫ ߖߐ߲߬
+        comment: ߡߙߌߣߊ߲ߦߌߘߊ
+    diary_comments:
+      index:
+        title: ߕߋ߬ߟߋ߲ ߡߙߌߣߊ߲߲߫ ߝߙߊ߬ߣߍ߲ %{user} ߓߟߏ߫
+      page:
+        post: ߗߋߓߏ߲
     suspended:
       title: ߖߊ߬ߕߋ߬ߘߊ߬ ߟߊߘߎ߲ߣߍ߲
       heading: ߖߊ߬ߕߋ߬ߘߊ߬ ߟߊߘߎ߲ߣߍ߲
index ebbcd90c27de524d77a53deac0280139b5705565..88812243ad50a79a811515398ab25fe052cd2dc4 100644 (file)
@@ -250,13 +250,6 @@ oc:
       external auth: 'Autentificacion extèrna:'
       openid:
         link text: qu’es aquò ?
-      public editing:
-        heading: Modificacion publica
-        enabled: Activat. Pas anonim e pòt modificar lei donadas.
-        enabled link text: qu’es aquò ?
-        disabled: Desactivadas e sensa permés per editar; lei modificacions anterioras
-          son anonimas.
-        disabled link text: perqué pòdi pas modificar ?
       contributor terms:
         heading: Tèrmes de collaboracion
         agreed: Avètz acceptat lei tèrmes novèus dau contributor.
@@ -320,6 +313,8 @@ oc:
           france: França
           italy: Itàlia
           rest_of_world: Rèsta del mond
+      update:
+        terms accepted: Mercé d’aver acceptat los novèls tèrmes del contributor !
   browse:
     version: Version
     in_changeset: Grop de modificacions
@@ -430,7 +425,6 @@ oc:
     index:
       title: Gropes de modificacions
       title_user: Gropes de modificacions per %{user}
-      title_friend: Grops de modificacions deis amics
       title_nearby: Gropes de modificacions deis utilizaires a proximitat
       empty: Ges de grop de modificacions trobat.
       empty_area: Ges de grop de modificacions dins aquesta zòna.
@@ -476,19 +470,14 @@ oc:
     popup:
       your location: Vòstre emplaçament
       nearby mapper: Mapaire dins los environs
-      friend: Amic
     show:
       title: Tablèu de bòrd
       no_home_location_html: '%{edit_profile_link} E establissètz la posicion de vòstre
         domicili per veire leis usatgiers vesins.'
       edit_your_profile: Modificar lo perfiu
-      my friends: los mens amics
-      no friends: Avètz pas encara ajustat d'amics
       nearby users: Autreis utilizaires pròches
       no nearby users: Ges d'utilizaire a pas encara senhalat que cartografiava a
         proximitat.
-      friends_changesets: Percórrer totes los gropes de modificacions dels amics
-      friends_diaries: Entradas de jornal dels amics
       nearby_changesets: Percórrer totes los gropes de modificacions dels utilizaires
         a proximitat
       nearby_diaries: Entradas de jornal dels utilizaires a proximitat
@@ -500,7 +489,6 @@ oc:
       use_map_link: Utilizar la mapa
     index:
       title: Jornaus deis utilizaires
-      title_friends: Jornaus deis amics
       title_nearby: Jornaus deis utilizaires pròches
       user_title: Jornau de %{user}
       in_language_title: Entradas de jornau en %{language}
@@ -557,16 +545,6 @@ oc:
       all:
         title: Entradas de jornau d'OpenStreetMap
         description: Entradas recentas de jornau deis utilizaires d'OpenStreetMap
-  diary_comments:
-    index:
-      title: Comentaris ajustats au jornau per %{user}
-      heading: Comentaris dau jornau de %{user}
-      subheading_html: Comentaris dau jornau ajustats per %{user}
-      no_comments: Ges de comentaris au jornau
-    page:
-      post: Mandar
-      when: Quand
-      comment: Comentari
   doorkeeper:
     flash:
       applications:
@@ -575,20 +553,6 @@ oc:
   errors:
     contact:
       contact_url: https://wiki.openstreetmap.org/wiki/Contact
-  friendships:
-    make_friend:
-      heading: Ajustar %{user} per amic ?
-      button: Ajustar per amic
-      success: d'ara enlà, %{name} es vòstre amic.
-      failed: O planhèm, fracàs al moment de l'ajust de %{name} per amic
-      already_a_friend: Sètz ja amic amb %{name}.
-      limit_exceeded: Avètz enviat tròp de de messatges recentament, esperatz un moment
-        abans d'assajar tornarmai.
-    remove_friend:
-      heading: Suprimir %{user} per amic ?
-      button: Suprimir per amic
-      success: '%{name} es estat levat de vòstres amics.'
-      not_a_friend: '%{name} es pas de vòstres amics.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1509,14 +1473,10 @@ oc:
         a l'autor a %{replyurl}
       footer_html: Tanben podètz legir lo messatge a %{readurl} e i podètz respondre
         a %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Bonjorn %{to_user},
-      subject: '[OpenStreetMap] %{user} vos a ajustat per amic'
-      had_added_you: '%{user} vos a ajustat per amic dins OpenStreetMap.'
       see_their_profile: 'Podètz veire son perfiu aicí : %{userurl}.'
       see_their_profile_html: 'Podètz veire son perfiu aicí : %{userurl}.'
-      befriend_them: 'Tanben, lo podètz ajustar per amic aicí : %{befriendurl}.'
-      befriend_them_html: 'Tanben, lo podètz ajustar coma amic-ga aicí : %{befriendurl}.'
     gpx_failure:
       hi: Bonjorn %{to_user},
       failed_to_import: 'a pas pogut èsser importat. Aquí l''error :'
@@ -1654,11 +1614,13 @@ oc:
       wrong_user: Sètz identificat(-ada) coma « %{user} » mas lo messatge qu'ensajatz
         de legir es pas estat enviat a vos o a aqueste utilizaire. Connectatz-vos
         amb l'identificant corrècte per lo poder legir.
-    mark:
-      as_read: Messatge marcat coma legit
-      as_unread: Messatge marcat coma pas legit
     destroy:
       destroyed: Messatge suprimit
+    read_marks:
+      create:
+        notice: Messatge marcat coma legit
+      destroy:
+        notice: Messatge marcat coma pas legit
     mailboxes:
       heading:
         my_inbox: Ma bóstia de recepcion
@@ -2078,13 +2040,14 @@ oc:
     offline:
       heading: Emmagazinatge GPX fòra linha
       message: Lo sistèma d'emmagazinatge GPX es actualament indisponible.
-    georss:
-      title: Traças GPS d'OpenStreetMap
-    description:
-      description_with_count:
-        one: Fichièr GPX file amb %{count} punt de %{user}
-        other: Fichièr GPX amb %{count} punts de %{user}
-      description_without_count: Fichièr GPX de %{user}
+    feeds:
+      show:
+        title: Traças GPS d'OpenStreetMap
+      description:
+        description_with_count:
+          one: Fichièr GPX file amb %{count} punt de %{user}
+          other: Fichièr GPX amb %{count} punts de %{user}
+        description_without_count: Fichièr GPX de %{user}
   application:
     permission_denied: Vos es pas permés de realizar aquesta accion.
     require_cookies:
@@ -2124,7 +2087,6 @@ oc:
       display name description: Vòstre nom d'utilizaire afichat publicament. Podètz
         cambiar aquò ulteriorament dins las preferéncias.
       continue: S’inscriure
-      terms accepted: Mercé d’aver acceptat los novèls tèrmes del contributor !
       use external auth: A la plaça, utilizatz un tèrç per vos connectar
     no_such_user:
       title: Utilizaire inexistent
@@ -2146,8 +2108,6 @@ oc:
       edits: Modificacions
       traces: Traças
       notes: Nòtas de mapa
-      remove as friend: Suprimir en tant qu'amic
-      add as friend: Apondre en tant qu'amic
       mapper since: 'Mapaire dempuèi :'
       ct status: 'Condicions del contributor :'
       ct undecided: Pas decidit
@@ -2197,6 +2157,15 @@ oc:
       user:
         summary_html: '%{name} creat dempuèi %{ip_address} lo %{date}'
         summary_no_ip_html: '%{name} creat lo %{date}'
+    changeset_comments:
+      page:
+        when: Quand
+        comment: Comentari
+    diary_comments:
+      index:
+        title: Comentaris ajustats au jornau per %{user}
+      page:
+        post: Mandar
     suspended:
       title: Compte suspendut
       heading: Compte suspendut
index 90ecea69e793052eb80db533f06b5b2bfde10b7c..9c6e1102ec9d2705016c4295e65295d4f4b6cdba 100644 (file)
@@ -247,12 +247,6 @@ pa:
       external auth: ਬਾਹਰੀ ਪ੍ਰਮਾਣਿਕਤਾ
       openid:
         link text: ਇਹ ਕੀ ਹੈ?
-      public editing:
-        heading: ਜਨਤਕ ਸੁਧਾਈ
-        enabled: ਯੋਗ ਕੀਤਾ। ਅਗਿਆਤ ਨਹੀਂ ਹੈ ਅਤੇ ਡਾਟਾ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ।
-        enabled link text: ਇਹ ਕੀ ਹੈ?
-        disabled: ਅਯੋਗ ਹੈ ਅਤੇ ਡੇਟਾ ਨੂੰ ਸੋਧ ਨਹੀਂ ਸਕਦਾ ਹੈ, ਸਾਰੇ ਪਿਛਲੇ ਸੋਧ ਅਗਿਆਤ ਹਨ।
-        disabled link text: ਮੈਂ ਸੋਧ ਕਿਉਂ ਨਹੀਂ ਕਰ ਸਕਦਾ?
       contributor terms:
         heading: 'ਯੋਗਦਾਨ ਦੀਆਂ ਸ਼ਰਤਾਂ:'
         agreed: ਤੁਸੀਂ ਯੋਗਦਾਨੀ ਦੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨਾਲ਼ ਸਹਿਮਤੀ ਜਤਾਈ ਹੈ।
@@ -340,6 +334,8 @@ pa:
           france: ਫ਼ਰਾਂਸ
           italy: ਇਟਲੀ
           rest_of_world: ਬਾਕੀ ਦੁਨੀਆਂ
+      update:
+        terms accepted: ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਲਈ ਧੰਨਵਾਦ!
       terms_declined_flash:
         terms_declined_html: ਸਾਨੂੰ ਅਫ਼ਸੋਸ ਹੈ ਕਿ ਤੁਸੀਂ ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ
           ਨੂੰ ਸਵੀਕਾਰ ਨਾ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕੀਤਾ ਹੈ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ %{terms_declined_link}
@@ -466,7 +462,6 @@ pa:
       title: ਤਬਦੀਲੀ-ਲੜੀਆਂ
       title_user: '%{user} ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ'
       title_user_link_html: '%{user_link} ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ'
-      title_friend: ਮੇਰੇ ਦੋਸਤਾਂ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
       title_nearby: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
       empty: ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਮਿਲਿਆਂ।
       empty_area: ਇਸ ਖੇਤਰ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਨਹੀਂ ਹਨ।
@@ -481,19 +476,6 @@ pa:
         created: ਬਣਾਇਆ ਗਿਆ
         closed: ਬੰਦ ਹੋਇਆ
         belongs_to: ਲੇਖਕ
-    subscribe:
-      heading: ਹੇਠਾਂ ਦਿੱਤੀ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀ ਗੱਲਬਾਤ ਲਈ ਗਾਹਕ ਬਣੋ?
-      button: ਚਰਚਾ ਲਈ ਗਾਹਕ ਬਣੋ
-    unsubscribe:
-      heading: ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ?
-      button: ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ
-    heading:
-      title: ਤਬਦੀਲੀ-ਲੜੀ %{id}
-      created_by_html: '%{link_user} ਵੱਲੋਂ %{created} ਨੂੰ ਬਣਾਇਆ ਗਿਆ।'
-    no_such_entry:
-      heading: ਸ਼ਿਨਾਖਤ:%{id} ਨਾਲ ਕੋਈ ਇੰਦਰਾਜ ਨਹੀਂ ਹੈ
-      body: ਮਾਫ਼ ਕਰਨਾ, id %{id} ਨਾਲ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸ਼ਬਦ-ਜੋੜ ਦੀ
-        ਜਾਂਚ ਕਰੋ, ਜਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਲਿੱਕ ਕੀਤੀ ਗਈ ਕੜੀ ਗਲਤ ਹੈ।
     show:
       title: 'ਤਬਦੀਲੀ ਲੜੀ: %{id}'
       created: 'ਬਣਾਇਆ ਗਿਆ: %{when}'
@@ -522,6 +504,21 @@ pa:
     timeout:
       sorry: ਮੁਆਫ ਕਰਨਾ, ਤੁਹਾਡੇ ਵੱਲੋਂ ਬੇਨਤੀ ਕੀਤੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ
         ਵਿੱਚ ਬਹੁਤ ਲੰਬਾ ਸਮਾਂ ਲੱਗ ਗਿਆ।
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: ਹੇਠਾਂ ਦਿੱਤੀ ਵੱਲੋਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਦੀ ਗੱਲਬਾਤ ਲਈ ਗਾਹਕ ਬਣੋ?
+        button: ਚਰਚਾ ਲਈ ਗਾਹਕ ਬਣੋ
+      unsubscribe:
+        heading: ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ?
+        button: ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ
+    heading:
+      title: ਤਬਦੀਲੀ-ਲੜੀ %{id}
+      created_by_html: '%{link_user} ਵੱਲੋਂ %{created} ਨੂੰ ਬਣਾਇਆ ਗਿਆ।'
+    no_such_entry:
+      heading: ਸ਼ਿਨਾਖਤ:%{id} ਨਾਲ ਕੋਈ ਇੰਦਰਾਜ ਨਹੀਂ ਹੈ
+      body: ਮਾਫ਼ ਕਰਨਾ, id %{id} ਨਾਲ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸ਼ਬਦ-ਜੋੜ ਦੀ
+        ਜਾਂਚ ਕਰੋ, ਜਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਲਿੱਕ ਕੀਤੀ ਗਈ ਕੜੀ ਗਲਤ ਹੈ।
   dashboards:
     contact:
       km away: '%{count}ਕਿ.ਮੀ. ਪਰ੍ਹਾਂ'
@@ -530,19 +527,14 @@ pa:
     popup:
       your location: ਤੁਹਾਡਾ ਟਿਕਾਣਾ
       nearby mapper: ਨੇਡ਼ਲੇ ਨਕਸ਼ਾ-ਨਵੀਸ਼
-      friend: ਦੋਸਤ
     show:
       title: ਮੇਰਾ ਡੈਸ਼ਬੋਰਡ
       no_home_location_html: '%{edit_profile_link} ਅਤੇ ਨੇਡ਼ਲੇ ਵਰਤੋਂਕਾਰ ਨੂੰ ਵੇਖਣ ਲਈ
         ਆਪਣੇ ਘਰ ਦਾ ਟਿਕਾਣਾ ਕਾਇਮ ਕਰੋ।'
       edit_your_profile: ਆਪਣਾ ਪ੍ਰੋਫਾਈਲ ਸੋਧੋ
-      my friends: ਮੇਰੇ ਦੋਸਤ
-      no friends: ਤੁਸੀਂ ਅਜੇ ਕੋਈ ਮਿੱਤਰ ਨਹੀਂ ਜੋੜਿਆ।
       nearby users: ਨੇੜੇ-ਤੇੜੇ ਦੇ ਹੋਰ ਵਰਤੋਂਕਾਰ
       no nearby users: ਅਜੇ ਤੱਕ ਇੱਥੇ ਨੇੜੇ ਕੋਈ ਹੋਰ ਵਰਤੋਂਕਾਰ ਨਹੀਂ ਹਨ ਜੋ  ਨਕਸ਼ਾ-ਉਲੀਕਣ
         ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੇ ਹਨ।
-      friends_changesets: ਦੋਸਤਾਂ ਦਿਆਂ ਤਬਦੀਲੀ-ਲੜੀਆਂ
-      friends_diaries: ਦੋਸਤਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼
       nearby_changesets: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰ ਦੀ ਤਬਦੀਲੀ-ਲੜੀਆਂ
       nearby_diaries: ਨੇੜਲੇ ਵਰਤੋਂਕਾਰ ਦੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼
   diary_entries:
@@ -553,7 +545,6 @@ pa:
       use_map_link: ਨਕਸ਼ਾ ਵਰਤੋ
     index:
       title: ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
-      title_friends: ਦੋਸਤਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
       title_nearby: ਨੇਡ਼ਲੇ ਵਰਤੋਂਕਾਰਾਂ ਦੇ ਰੋਜ਼ਨਾਮਚੇ
       user_title: '%{user} ਦੇ ਰੋਜ਼ਨਾਮਚੇ'
       in_language_title: '%{language} ਵਿੱਚ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ਼'
@@ -622,15 +613,6 @@ pa:
       heading: ਹੇਠ ਲਿਖੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ?
       button: ਚਰਚਾ ਤੋਂ ਗਾਹਕੀ ਹਟਾਓ
   diary_comments:
-    index:
-      title: ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ %{user} ਵੱਲੋਂ ਜੋੜੀਆਂ ਗਈਆਂ
-      heading: '%{user} ਦੀਆਂ ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ'
-      subheading_html: ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ %{user} ਵੱਲੋਂ ਜੋੜੀਆਂ ਗਈਆਂ
-      no_comments: ਕੋਈ ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ ਨਹੀਂ ਹਨ
-    page:
-      post: ਡਾਕ
-      when: ਕਦੋਂ
-      comment: ਟਿੱਪਣੀ
     new:
       heading: ਹੇਠ ਲਿਖੇ ਰੋਜ਼ਨਾਮਚਾ ਇੰਦਰਾਜ ਚਰਚਾ ਵਿੱਚ ਕੋਈ ਟਿੱਪਣੀ ਸ਼ਾਮਲ ਕਰੋ?
   doorkeeper:
@@ -672,20 +654,6 @@ pa:
       title: ਆਦੇਸ਼ਕਾਰੀ ਦੀ ਗਲਤੀ
     not_found:
       title: ਫਾਇਲ ਨਹੀਂ ਲੱਭੀ
-  friendships:
-    make_friend:
-      heading: '%{user} ਨਾਲ਼ ਯਾਰੀ ਪਾਉਣੀ ਹੈ?'
-      button: ਦੋਸਤ ਵਜੋਂ ਜੋੜੋ
-      success: '%{name} ਹੁਣ ਤੁਹਾਡਾ ਦੋਸਤ ਹੈ!'
-      failed: ਮੁਆਫ ਕਰਨਾ,%{name} ਨੂੰ ਦੋਸਤ ਵਜੋਂ ਜੋਡ਼ਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ।
-      already_a_friend: ਤੁਸੀਂ ਪਹਿਲੋਂ ਹੀ %{name} ਨਾਲ਼ ਯਾਰੀ ਪਾ ਚੁੱਕੇ ਹੋ।
-      limit_exceeded: ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨਾਲ ਦੋਸਤੀ ਕੀਤੀ ਹੈ। ਕਿਰਪਾ
-        ਕਰਕੇ ਹੋਰ ਦੋਸਤੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਸਮਾਂ ਉਡੀਕ ਕਰੋ।
-    remove_friend:
-      heading: '%{user} ਨਾਲ਼ ਯਾਰੀ ਤੋੜਨੀ ਹੈ?'
-      button: ਯਾਰੀ ਤੋੜੋ
-      success: '%{name} ਨੂੰ ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਵਿੱਚੋਂ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਸੀ।'
-      not_a_friend: '%{name} ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨਹੀਂ ਹੈ।'
   geocoder:
     search:
       title:
@@ -1451,11 +1419,8 @@ pa:
         ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ।'
       header_html: '%{from_user} ਨੇ ਤੁਹਾਨੂੰ %{subject} ਵਿਸ਼ੇ ਦੇ ਨਾਲ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ
         ਰਾਹੀਂ ਇੱਕ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ:'
-    friendship_notification:
+    follow_notification:
       hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
-      subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] %{user} ਨੇ ਤੁਹਾਨੂੰ ਇੱਕ ਦੋਸਤ ਵਜੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ'
-      had_added_you: '%{user} ਨੇ ਤੁਹਾਨੂੰ ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ ''ਤੇ ਇੱਕ ਦੋਸਤ ਵਜੋਂ ਸ਼ਾਮਲ
-        ਕੀਤਾ ਹੈ।'
     gpx_failure:
       hi: ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{to_user}
       subject: '[ਖੁੱਲ੍ਹਾ-ਗਲੀ-ਨਕਸ਼ਾ] GPX ਦਰਾਮਦ ਅਸਫਲਤਾ'
@@ -1504,11 +1469,13 @@ pa:
       unread_button: ਨਹੀਂ-ਪੜ੍ਹਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਾਓ
       destroy_button: ਮਿਟਾਓ
       back: ਪਿਛਾਂਹ
-    mark:
-      as_read: ਸੁਨੇਹੇ ਨੂੰ ਪਡ਼੍ਹਿਆ ਗਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
-      as_unread: ਸੁਨੇਹੇ ਨੂੰ ਨਹੀਂ-ਪਡ਼੍ਹਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
     destroy:
       destroyed: ਸੁਨੇਹਾ ਮਿਟਾਇਆ ਗਿਆ
+    read_marks:
+      create:
+        notice: ਸੁਨੇਹੇ ਨੂੰ ਪਡ਼੍ਹਿਆ ਗਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
+      destroy:
+        notice: ਸੁਨੇਹੇ ਨੂੰ ਨਹੀਂ-ਪਡ਼੍ਹਿਆ ਵਜੋਂ ਨਿਸ਼ਾਨਬੱਧ ਕੀਤਾ ਗਿਆ
     mailboxes:
       heading:
         my_inbox: ਮੇਰਾ ਇਨਬਾਕਸ
@@ -1870,10 +1837,11 @@ pa:
       all_traces: ਸਾਰੇ ਖੁਰਾ-ਖੋਜ
       my_traces: ਮੇਰੇ ਖੁਰਾ-ਖੋਜ
       traces_from_html: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
-    georss:
-      title: OpenStreetMap GPS ਖੁਰਾ-ਖੋਜ
-    description:
-      description_without_count: '%{user} ਤੋਂ GPX ਫ਼ਾਈਲ'
+    feeds:
+      show:
+        title: OpenStreetMap GPS ਖੁਰਾ-ਖੋਜ
+      description:
+        description_without_count: '%{user} ਤੋਂ GPX ਫ਼ਾਈਲ'
   application:
     permission_denied: ਤੁਹਾਨੂੰ ਉਸ ਕਾਰਵਾਈ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ
     settings_menu:
@@ -1972,7 +1940,6 @@ pa:
           ਹਨ
         contributor_terms: ਯੋਗਦਾਨੀ ਦੀਆਂ ਸ਼ਰਤਾਂ
       continue: ਖਾਤਾ ਬਣਾਓ
-      terms accepted: ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੀਆਂ ਨਵੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਲਈ ਧੰਨਵਾਦ!
       email_help:
         privacy_policy: ਨਿੱਜਤਾ ਨੀਤੀ
         privacy_policy_title: OSMF ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਜਿਸ ਵਿੱਚ ਈਮੇਲ ਪਤੇ 'ਤੇ ਭਾਗ ਸ਼ਾਮਲ
@@ -2008,8 +1975,6 @@ pa:
       edits: ਸੋਧਾਂ
       traces: ਖੁਰਾ-ਖੋਜ
       notes: ਨਕਸ਼ੇ ਦੇ ਨੋਟ
-      remove as friend: ਯਾਰੀ ਤੋੜੋ
-      add as friend: ਯਾਰੀ ਪਾਉ
       mapper since: 'ਕਦੋਂ ਤੋਂ ਨਕਸ਼ਾ-ਨਵੀਸ਼:'
       last map edit: ਆਖ਼ਰੀ ਨਕਸ਼ਾ ਸੋਧਃ
       no activity yet: ਹਾਲੇ ਕੋਈ ਗਤੀਵਿਧੀ ਨਹੀਂ ਹੈ
@@ -2081,6 +2046,15 @@ pa:
       user:
         summary_html: '%{date} ਨੂੰ %{ip_address} ਤੋਂ %{name} ਬਣਾਇਆ ਗਿਆ'
         summary_no_ip_html: '%{name} ਨੂੰ %{date} ਨੂੰ ਬਣਾਇਆ ਗਿਆ'
+    changeset_comments:
+      page:
+        when: ਕਦੋਂ
+        comment: ਟਿੱਪਣੀ
+    diary_comments:
+      index:
+        title: ਰੋਜ਼ਨਾਮਚਾ ਟਿੱਪਣੀਆਂ %{user} ਵੱਲੋਂ ਜੋੜੀਆਂ ਗਈਆਂ
+      page:
+        post: ਡਾਕ
     suspended:
       title: ਖਾਤਾ ਮੁਅੱਤਲ ਕੀਤਾ ਗਿਆ
       heading: ਖਾਤਾ ਮੁਅੱਤਲ ਕੀਤਾ ਗਿਆ
index a4a64c05d845a92177426c58d151d1fc41d79fd6..3712d0e42263bd53967d3d3475cfaa13c19e86ce 100644 (file)
@@ -159,8 +159,7 @@ pl:
         support_url: Adres URL pomocy technicznej
         allow_read_prefs: Odczytywanie ich ustawień
         allow_write_prefs: Modyfikowanie ich ustawień
-        allow_write_diary: Tworzenie wpisów w dzienniku, dodawanie komentarzy i nawiązywanie
-          kontaktów
+        allow_write_diary: Tworzenie wpisów w dzienniku i dodawanie komentarzy
         allow_write_api: Modyfikowanie mapy
         allow_read_gpx: Odczytywanie ich prywatnych śladów GPS
         allow_write_gpx: Przesyłanie śladów GPS
@@ -352,14 +351,6 @@ pl:
       openid:
         link: https://wiki.openstreetmap.org/wiki/Pl:OpenID
         link text: co to jest?
-      public editing:
-        heading: Edycje publiczne
-        enabled: Włączone. Nieanonimowy i uprawniony do edycji danych.
-        enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
-        enabled link text: co to jest?
-        disabled: Wyłączone i nieuprawniony do edycji danych, wszystkie wcześniejsze
-          edycje są anonimowe.
-        disabled link text: dlaczego nie mogę mapować?
       contributor terms:
         heading: Warunki uczestnictwa
         agreed: Wyrażono zgodę na nowe Warunki Uczestnictwa.
@@ -440,7 +431,6 @@ pl:
         readable_summary: czytelne podsumowanie
         informal_translations: tłumaczenia nieformalne
         continue: Dalej
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Anuluj
         you need to accept or decline: Prosimy przeczytać i następnie przyjąć lub
           odrzucić nowe Warunki uczestnictwa, aby kontynuować.
@@ -449,6 +439,8 @@ pl:
           france: Francja
           italy: Włochy
           rest_of_world: Reszta świata
+      update:
+        terms accepted: Dziękujemy za przyjęcie nowych Warunków uczestnictwa!
       terms_declined_flash:
         terms_declined_html: Jest nam przykro, że zdecydowałeś się nie przyjmować
           nowych Warunków uczestnictwa. Więcej informacji możesz znaleźć %{terms_declined_link}.
@@ -615,7 +607,7 @@ pl:
       title: Zestawy zmian
       title_user: Zestawy zmian użytkownika %{user}
       title_user_link_html: Zestawy zmian użytkownika %{user_link}
-      title_friend: Zestawy zmian moich znajomych
+      title_followed: Zestawy zmian moich znajomych
       title_nearby: Zestawy zmian pobliskich użytkowników
       empty: Nie odnaleziono zestawów zmian.
       empty_area: Brak zestawów zmian na tym obszarze.
@@ -630,19 +622,6 @@ pl:
         created: Utworzone
         closed: Zamknięte
         belongs_to: Autor
-    subscribe:
-      heading: Zasubskrybować następującą dyskusję dotyczącą zmian ?
-      button: Zasubskrybuj dyskusję
-    unsubscribe:
-      heading: Wypisać się z poniższej dyskusji na temat zestawu zmian?
-      button: Wypisz się z dyskusji
-    heading:
-      title: Zestaw zmian %{id}
-      created_by_html: Utworzony przez %{link_user} w %{created}.
-    no_such_entry:
-      heading: Brak wpisu o identyfikatorze %{id}
-      body: Niestety nie odnaleziono zestawu zmian o identyfikatorze %{id}. Sprawdź
-        pisownię. Być może skorzystano z nieprawidłowego odnośnika.
     show:
       title: 'Zestaw zmian: %{id}'
       created: 'Utworzony: %{when}'
@@ -675,6 +654,21 @@ pl:
       sorry: Nie odnaleziono zestawu zmian %{id}.
     timeout:
       sorry: Niestety, pobieranie listy żądanych zestawów zmian trwało zbyt długo.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Zasubskrybować następującą dyskusję dotyczącą zmian ?
+        button: Zasubskrybuj dyskusję
+      unsubscribe:
+        heading: Wypisać się z poniższej dyskusji na temat zestawu zmian?
+        button: Wypisz się z dyskusji
+    heading:
+      title: Zestaw zmian %{id}
+      created_by_html: Utworzony przez %{link_user} w %{created}.
+    no_such_entry:
+      heading: Brak wpisu o identyfikatorze %{id}
+      body: Niestety nie odnaleziono zestawu zmian o identyfikatorze %{id}. Sprawdź
+        pisownię. Być może skorzystano z nieprawidłowego odnośnika.
   dashboards:
     contact:
       km away: '%{count} km stąd'
@@ -683,19 +677,19 @@ pl:
     popup:
       your location: Twoje położenie
       nearby mapper: Mapujący z okolicy
-      friend: Znajomy
+      following: Znajomy
     show:
       title: Mój panel
       no_home_location_html: '%{edit_profile_link} i podaj swoją lokalizację, aby
         zobaczyć użytkowników w pobliżu.'
       edit_your_profile: Edytuj swój profil
-      my friends: Moi znajomi
-      no friends: Nie dodano jeszcze żadnych znajomych.
+      followings: Moi znajomi
+      no followings: Nie dodano jeszcze żadnych znajomych.
       nearby users: Najbliżsi użytkownicy
       no nearby users: Nie ma innych użytkowników, którzy przyznają się do mapowania
         w tej okolicy.
-      friends_changesets: zestawy zmian znajomych
-      friends_diaries: wpisy w dziennikach znajomych
+      followed_changesets: zestawy zmian znajomych
+      followed_diaries: wpisy w dziennikach znajomych
       nearby_changesets: pobliskie zestawy zmian
       nearby_diaries: pobliskie wpisy w dziennikach
   diary_entries:
@@ -706,7 +700,7 @@ pl:
       use_map_link: wskaż na mapie
     index:
       title: Dzienniki użytkowników
-      title_friends: Dzienniki znajomych
+      title_followed: Dzienniki znajomych
       title_nearby: Dzienniki pobliskich użytkowników
       user_title: Dziennik użytkownika %{user}
       in_language_title: Wpisy w języku %{language}
@@ -776,15 +770,6 @@ pl:
       heading: Wypisać się z poniższej dyskusji na temat wpisu dziennika?
       button: Wypisz się z dyskusji
   diary_comments:
-    index:
-      title: Komentarze do dzienników dodane przez %{user}
-      heading: Komentarze do dzienników użytkownika %{user}
-      subheading_html: Komentarze do dzienników dodane przez %{user}
-      no_comments: Brak komentarzy
-    page:
-      post: Wpis
-      when: Kiedy
-      comment: Komentarz
     new:
       heading: Czy dodać komentarz do tej dyskusji o wpisie dziennika?
   doorkeeper:
@@ -842,20 +827,23 @@ pl:
       title: Nie znaleziono strony
       description: Nie udało się znaleźć pliku / katalogu / operacji API o tej nazwie
         na serwerze OpenStreetMap (HTTP 404).
-  friendships:
-    make_friend:
-      heading: Dodać %{user} do grona znajomych?
-      button: Dodaj do listy znajomych
+  follows:
+    show:
+      follow:
+        heading: Dodać %{user} do grona znajomych?
+        button: Dodaj do listy znajomych
+      unfollow:
+        heading: Usunąć %{user} z grona znajomych?
+        button: Usuń ze znajomych
+    create:
       success: '%{name} należy teraz do grona znajomych!'
       failed: Nie udało się dodać %{name} do grona znajomych.
-      already_a_friend: '%{name} już jest znajomym.'
+      already_followed: '%{name} już jest znajomym.'
       limit_exceeded: Wysłałeś ostatnio wiele zaproszeń do znajomych. Poczekaj chwilę
         przed wysłaniem następnych.
-    remove_friend:
-      heading: Usunąć %{user} z grona znajomych?
-      button: Usuń ze znajomych
+    destroy:
       success: Usunięto %{name} z grona znajomych.
-      not_a_friend: '%{name} nie należy do grona znajomych.'
+      not_followed: '%{name} nie należy do grona znajomych.'
   geocoder:
     search:
       title:
@@ -1835,14 +1823,14 @@ pl:
         do autora na %{replyurl}
       footer_html: Możesz również przeczytać wiadomość na %{readurl} i wysłać wiadomość
         do autora na %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Cześć, %{to_user},
       subject: '[OpenStreetMap] %{user} dodał cię jako znajomego'
-      had_added_you: '%{user} dodał(a) cię jako swojego znajomego na OpenStreetMap.'
+      followed_you: '%{user} dodał(a) cię jako swojego znajomego na OpenStreetMap.'
       see_their_profile: Możesz zobaczyć jego profil na stronie %{userurl}.
       see_their_profile_html: Możesz zobaczyć jego profil na stronie %{userurl}.
-      befriend_them: Możesz również dodać go jako znajomego na %{befriendurl}.
-      befriend_them_html: Możesz również dodać go jako znajomego na %{befriendurl}.
+      follow_them: Możesz również dodać go jako znajomego na %{followurl}.
+      follow_them_html: Możesz również dodać go jako znajomego na %{followurl}.
     gpx_details:
       details: 'Szczegóły twojego pliku:'
       filename: Nazwa pliku
@@ -2010,14 +1998,17 @@ pl:
       wrong_user: Jesteś zalogowany jako %{user}, ale wiadomość, którą chcesz przeczytać,
         nie została wysłana przez tego użytkownika ani do niego. Zaloguj się jako
         właściwy użytkownik, aby ją przeczytać.
-    mark:
-      as_read: Wiadomość została oznaczona jako przeczytana
-      as_unread: Wiadomość została oznaczona jako nieprzeczytana
-    unmute:
-      notice: Wiadomość przeniesiono do wiadomości odebranych
-      error: Nie można było przenieść wiadomości do skrzynki odbiorczej.
     destroy:
       destroyed: Wiadomość usunięta
+    read_marks:
+      create:
+        notice: Wiadomość została oznaczona jako przeczytana
+      destroy:
+        notice: Wiadomość została oznaczona jako nieprzeczytana
+    mutes:
+      destroy:
+        notice: Wiadomość przeniesiono do wiadomości odebranych
+        error: Nie można było przenieść wiadomości do skrzynki odbiorczej.
     mailboxes:
       heading:
         my_inbox: wiadomości odebrane
@@ -2185,6 +2176,9 @@ pl:
       preview: Podgląd
       help: Pomoc
     pagination:
+      changeset_comments:
+        older: Starsze komentarze
+        newer: Nowsze komentarze
       diary_comments:
         older: Starsze komentarze
         newer: Nowsze komentarze
@@ -2835,13 +2829,14 @@ pl:
     offline:
       heading: Przechowywanie danych GPX jest wyłączone
       message: System przechowywania i przesyłania plików GPX jest obecnie niedostępny
-    georss:
-      title: Ślady GPS OpenStreetMap
-    description:
-      description_with_count:
-        one: Plik GPX z %{count} punktem od %{user}
-        other: Plik GPX z %{count} punktami od %{user}
-      description_without_count: Plik GPX od %{user}
+    feeds:
+      show:
+        title: Ślady GPS OpenStreetMap
+      description:
+        description_with_count:
+          one: Plik GPX z %{count} punktem od %{user}
+          other: Plik GPX z %{count} punktami od %{user}
+        description_without_count: Plik GPX od %{user}
   application:
     permission_denied: Nie masz uprawnień do wykonywania tej akcji
     require_cookies:
@@ -2910,8 +2905,7 @@ pl:
       openid: Zaloguj się za pomocą OpenStreetMap
       read_prefs: Odczytywanie preferencji użytkownika
       write_prefs: Modyfikowanie preferencji użytkownika
-      write_diary: Tworzenie wpisów w dzienniku, dodawanie komentarzy i nawiązywanie
-        kontaktów
+      write_diary: Tworzenie wpisów w dzienniku i dodawanie komentarzy
       write_api: Modyfikowanie mapy
       read_gpx: Odczytywanie ich prywatnych śladów GPS
       write_gpx: Przesyłanie śladów GPS
@@ -3007,7 +3001,6 @@ pl:
         contributor_terms_url: https://osmfoundation.org/wiki/Licence/Contributor_Terms
         contributor_terms: warunki uczestnictwa
       continue: Zarejestruj się
-      terms accepted: Dziękujemy za przyjęcie nowych Warunków uczestnictwa!
       email_help:
         privacy_policy: politykę prywatności
         privacy_policy_url: https://osmfoundation.org/wiki/Privacy_Policy
@@ -3048,8 +3041,8 @@ pl:
       edits: edycje
       traces: ślady
       notes: uwagi
-      remove as friend: usuń ze znajomych
-      add as friend: dodaj do znajomych
+      unfollow: usuń ze znajomych
+      follow: dodaj do znajomych
       mapper since: 'Mapuje od:'
       last map edit: 'Ostatnia edycja mapy:'
       no activity yet: —
@@ -3129,6 +3122,26 @@ pl:
       user:
         summary_html: '%{name} utworzony z adresu %{ip_address} dnia %{date}'
         summary_no_ip_html: '%{name} utworzony %{date}'
+    comments:
+      index:
+        heading_html: Komentarze użytkownika %{user}
+        changesets: Zestawy zmian
+        diary_entries: Dzienniki
+        no_comments: Brak komentarzy
+    changeset_comments:
+      index:
+        title: Komentarze do zestawów zmian dodane przez %{user}
+      page:
+        changeset: Zestaw zmian
+        when: Kiedy
+        comment: Komentarz
+    diary_comments:
+      index:
+        title: Komentarze do dzienników dodane przez %{user}
+      page:
+        post: Wpis
+        when: Kiedy
+        comment: Komentarz
     suspended:
       title: Konto zawieszone
       heading: Konto zawieszone
index 0d5fe0d39edab606316512ad6a9cc60b06fb4407..4b06ba18a8048201ad0988f1606eaae8789689a7 100644 (file)
@@ -235,12 +235,6 @@ pnb:
       external auth: باہرلی تصدیق
       openid:
         link text: اِیہہ کی اے؟
-      public editing:
-        heading: جنتک سدھائی
-        enabled: چالو اے۔ تہاڈے ناں ویکھدے تے تسیں ڈیٹا سودھ سکدے۔
-        enabled link text: اِیہہ کی اے؟
-        disabled: بند اے۔ تہاڈے ناں لُکادے تے سودھ نہیں سکدے۔
-        disabled link text: میں سودھ کیوں نہیں کر سکدا؟
       contributor terms:
         heading: لیکھکاں لئی شرطنامہ
         agreed: تسیں یوگدانی دیاں نویاں شرتاں نال سہمتی جتائی اےـ
@@ -385,7 +379,6 @@ pnb:
     index:
       title: تبدیلیاں
       title_user: '%{user} دیاں تبدیلیاں'
-      title_friend: میرے دوست دیاں تبدیلیاں
       title_nearby: نیڑے تیڑے تے نقشے والے دیاں تبدیلیاں
       empty: تبدیلیاں نہیں لبھیاں
       empty_area: اِتھے تبدیلیاں نہیں اے۔
@@ -426,18 +419,13 @@ pnb:
     popup:
       your location: تہاڈیاں ستھتی
       nearby mapper: نیڑے تیڑے دا نقشہ والا
-      friend: دوست
     show:
       title: ڈیش بورڈ
       no_home_location_html: '%{edit_profile_link} تے جے تسیں ستھتی پایو،  نیڑے تیڑے
         دے نقشے والے لبھ سکدیئے گئی اے۔'
       edit_your_profile: تہاڈے صفحہ سودھو
-      my friends: میرے دوست
-      no friends: حالیہ تسیں اجے کوئی دوست نہیں جوڑیئے۔
       nearby users: نیڑے تیڑے دے نقشے والے
       no nearby users: نیڑے تیڑے تے نقشے والے نہیں لبھیئے۔
-      friends_changesets: دوست دیاں تبدیلیاں
-      friends_diaries: دوستاں دے لیکھ
       nearby_changesets: نیڑے تیڑے تے نقشے والے دیاں تبدیلیاں
       nearby_diaries: نیڑے تیڑے تے نقشے والے دے روزنامچے
   diary_entries:
@@ -448,7 +436,6 @@ pnb:
       use_map_link: نقشہ ورتو
     index:
       title: روزنامچے
-      title_friends: دوست دے لیکھ
       title_nearby: نیڑے تیڑے تے نقشے والے دے روزنامچے
       user_title: ایہہ «%{user}» روزنامچے دے لیکھ
       in_language_title: ایہہ %{language} وچ روزنامچے دے لیکھ
@@ -506,34 +493,11 @@ pnb:
       all:
         title: نقشے بارے وچ روزنامچے دے لیکھ
         description: حالیہ نقشے بارے وچ روزنامچے دے لیکھ
-  diary_comments:
-    index:
-      title: ایہہ روزنامچے وچ «%{user}» دیاں ٹپݨیاں پائیاں
-      heading: روزنامچے وچ «%{user}» دیاں ٹپݨیاں
-      subheading_html: ایہہ روزنامچے وچ «%{user}» دیاں ٹپݨیاں پائیاں
-      no_comments: روزنامچے وچ ٹپݨیاں نہیں اے
-    page:
-      post: لیکھ
-      when: کدوں
-      comment: ٹپݨی
   doorkeeper:
     flash:
       applications:
         create:
           notice: اِیپ پکا کیتا سی۔
-  friendships:
-    make_friend:
-      heading: تسیں «%{user}» دوست چاہیدے ہوگیئے؟
-      button: دوست وجوں جوڑو
-      success: ہݨے «%{name}» دوست ہووۓ گیئے سی!
-      failed: ایہہ «%{name}» دوست جوڑ نہیں سکدا سی۔
-      already_a_friend: تسیں پہلوں ہی «%{name}» نال یاری پا چُکّے او۔
-      limit_exceeded: حالیہ تسیں ورتنوالے بہت کوڑیا گیا۔
-    remove_friend:
-      heading: تسیں «%{user}» نال یاری روڑنی اے؟
-      button: یاری توڑو
-      success: دوست دی فہرست وچ «%{name}» ہٹایا
-      not_a_friend: تہاڈے دوست «%{name}» نہیں اے۔
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1213,14 +1177,10 @@ pnb:
     message_notification:
       subject: '[⁠اوایس‌ایم⁠] %{message_title}'
       hi: سالام %{to_user}،
-    friendship_notification:
+    follow_notification:
       hi: سالام %{to_user}،
-      subject: '[⁠اوایس‌ایم⁠] تسیں ہُݨ «⁠%{user}⁠» دوستاں دی فہرست او'
-      had_added_you: تسیں ہُݨ «%{user}» دوستاں دی فہرست او۔
       see_their_profile: ایہدے صفحے %{userurl}۔
       see_their_profile_html: ایہدے صفحے %{userurl}۔
-      befriend_them: 'تسیں وی دوست دی لست وچ ایہہ پا سکدے اے: %{befriendurl}'
-      befriend_them_html: 'تسیں وی دوست دی لست وچ ایہہ پا سکدے اے: %{befriendurl}'
     gpx_failure:
       hi: سالام %{to_user}،
       failed_to_import: 'کھرا اِمپورٹ کر نہیں سکیا۔ اِتھے ویروے بارے پڑھیو:'
@@ -1323,11 +1283,13 @@ pnb:
       unread_button: اݨ پڑھا نشان لاؤ
       destroy_button: مٹاؤ
       back: پچھے
-    mark:
-      as_read: سنیہا پڑھا نشان لایا گیا
-      as_unread: سنیہا اݨ پڑھا نشان لایا گیا
     destroy:
       destroyed: سُنیہا مٹائا گیا
+    read_marks:
+      create:
+        notice: سنیہا پڑھا نشان لایا گیا
+      destroy:
+        notice: سنیہا اݨ پڑھا نشان لایا گیا
     mailboxes:
       heading:
         my_inbox: اینباکس
@@ -1691,10 +1653,11 @@ pnb:
       my_traces: میرے کھرے
       traces_from_html: «%{user}» دے عوام کھرے
       remove_tag_filter: فلٹر ہٹاؤ
-    georss:
-      title: کھرے کھوجاں
-    description:
-      description_without_count: '%{user} دی گی پی ایکس فایل'
+    feeds:
+      show:
+        title: کھرے کھوجاں
+      description:
+        description_without_count: '%{user} دی گی پی ایکس فایل'
   application:
     settings_menu:
       account_settings: کھاتے دیاں سیٹنگاں
@@ -1795,8 +1758,6 @@ pnb:
       edits: سودھاں
       traces: کھرے کھوجاں
       notes: نقشے دے نوٹ
-      remove as friend: دوست توڑو
-      add as friend: دوست پایو
       mapper since: 'نقشہ والا پہلا آیا گیا:'
       ct status: 'لیکھک قواعد:'
       ct undecided: دچتی وچ
@@ -1833,6 +1794,15 @@ pnb:
       page:
         confirm: چݨے ہوۓ ورتنوالیاں دی تصدیق کرو
         hide: چݨے ہوۓ ورتنوالے لُکاؤ
+    changeset_comments:
+      page:
+        when: کدوں
+        comment: ٹپݨی
+    diary_comments:
+      index:
+        title: ایہہ روزنامچے وچ «%{user}» دیاں ٹپݨیاں پائیاں
+      page:
+        post: لیکھ
     suspended:
       title: کھاتہ مواتل کیتا گیا
       heading: کھاتہ مواتل کیتا گیا
index 985180fe1937a513c516be6b92d85f686e4b6be6..c5efeea4c52d62a8f22b49fdfa3c7fde87b02567 100644 (file)
@@ -85,8 +85,6 @@ ps:
       my settings: زما امستنې
       openid:
         link text: دا څه دی؟
-      public editing:
-        enabled link text: دا څه دی؟
       contributor terms:
         link text: دا څه دی؟
       save changes button: بدلونونه خوندي کول
@@ -114,9 +112,6 @@ ps:
       feed:
         created: جوړ شو
         closed: تړل شوی
-  dashboards:
-    popup:
-      friend: ملگری
   diary_entries:
     form:
       location: 'ځای:'
@@ -132,13 +127,6 @@ ps:
       confirm: تاييد
     location:
       location: 'ځای:'
-  diary_comments:
-    page:
-      when: کله
-      comment: تبصره
-  friendships:
-    make_friend:
-      button: د ملگري په توگه ورگډول
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -387,7 +375,6 @@ ps:
       my messages: زما پيغامونه
       send message: پيغام لېږل
       edits: سمونونه
-      add as friend: ملگری ورگډول
       email address: 'برېښليک پته:'
       status: 'دريځ:'
       block_history: فعاله بنديزونه
@@ -404,6 +391,10 @@ ps:
       show:
         title: کارنان
         heading: کارنان
+    changeset_comments:
+      page:
+        when: کله
+        comment: تبصره
   user_blocks:
     show:
       created: جوړ شو
index 4080324e91cd5f0ac183bd704cecc02bc7e35192..594808b91e08f3e881f87dd922c1d82d8ff9ccab 100644 (file)
@@ -291,13 +291,6 @@ pt-PT:
       external auth: Autenticação externa
       openid:
         link text: o que é isto?
-      public editing:
-        heading: Edição pública
-        enabled: Ativado. Não é anónimo e pode editar dados.
-        enabled link: https://wiki.openstreetmap.org/wiki/Pt:Anonymous_edits
-        enabled link text: o que é isto?
-        disabled: Desativado e não pode editar. Todas as edições anteriores são anónimas.
-        disabled link text: porque não posso editar?
       contributor terms:
         heading: Termos de contribuidor
         agreed: Aceitaste os novos Termos de Contribuidor.
@@ -380,7 +373,6 @@ pt-PT:
         readable_summary: sumário legível por humanos
         informal_translations: traduções informais
         continue: Continuar
-        declined: https://wiki.openstreetmap.org/wiki/Pt:Contributor_Terms_Declined
         cancel: Cancelar
         you need to accept or decline: Por favor, lê e, em seguida, aceita ou recusa
           os novos Termos do Contribuidor para continuar.
@@ -389,6 +381,8 @@ pt-PT:
           france: França
           italy: Itália
           rest_of_world: Resto do mundo
+      update:
+        terms accepted: Obrigado por aceitares os novos termos de contribuidor!
       terms_declined_flash:
         terms_declined_html: Lamentamos que não tenhas aceitado os novos Termos de
           Contribuidor. Para mais informações, consulta %{terms_declined_link}.
@@ -540,7 +534,6 @@ pt-PT:
       title: Conjuntos de alterações
       title_user: Conjuntos de alterações de %{user}
       title_user_link_html: Conjuntos de alterações de %{user_link}
-      title_friend: Conjuntos de alterações feitos pelos meus amigos
       title_nearby: Conjuntos de alterações feitos por utilizadores próximos
       empty: Não foi encontrado nenhum conjunto de alterações.
       empty_area: Não há nenhum conjunto de alterações nesta área.
@@ -555,19 +548,6 @@ pt-PT:
         created: Criado
         closed: Fechado
         belongs_to: Autor
-    subscribe:
-      heading: Deseja subscrever à seguinte discussão do conjunto de mudanças?
-      button: Inscreva-se na discussão
-    unsubscribe:
-      heading: Cancelar a inscrição na seguinte discussão do conjunto de alterações?
-      button: Cancelar inscrição da discussão
-    heading:
-      title: Conjunto de alterações %{id}
-      created_by_html: Criado por %{link_user} em %{created}.
-    no_such_entry:
-      heading: 'Nenhuma entrada com o id: %{id}'
-      body: Desculpe, não há conjunto de alterações com o id %{id}. Verifique a ortografia,
-        ou talvez o link em que clicou esteja errado.
     show:
       title: 'Conjunto de alterações: %{id}'
       created: 'Criado: %{when}'
@@ -599,6 +579,21 @@ pt-PT:
     timeout:
       sorry: Lamentamos, mas a lista de conjuntos de alterações que pediste excedeu
         o tempo limite de resposta.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Deseja subscrever à seguinte discussão do conjunto de mudanças?
+        button: Inscreva-se na discussão
+      unsubscribe:
+        heading: Cancelar a inscrição na seguinte discussão do conjunto de alterações?
+        button: Cancelar inscrição da discussão
+    heading:
+      title: Conjunto de alterações %{id}
+      created_by_html: Criado por %{link_user} em %{created}.
+    no_such_entry:
+      heading: 'Nenhuma entrada com o id: %{id}'
+      body: Desculpe, não há conjunto de alterações com o id %{id}. Verifique a ortografia,
+        ou talvez o link em que clicou esteja errado.
   dashboards:
     contact:
       km away: '%{count} km de distância'
@@ -607,19 +602,14 @@ pt-PT:
     popup:
       your location: A tua localização
       nearby mapper: Mapeador próximo de ti
-      friend: Amigo
     show:
       title: Painel de Controlo
       no_home_location_html: '%{edit_profile_link} e define a localização da tua morada
         para veres utilizadores próximos.'
       edit_your_profile: Editar perfil
-      my friends: Os meus amigos
-      no friends: Ainda não adicionaste nenhum amigo.
       nearby users: Outros mapeadores nas redondezas
       no nearby users: Não há outros mapeadores que admitam estar a editar o mapa
         nas redondezas.
-      friends_changesets: conjuntos de alterações dos amigos
-      friends_diaries: publicações nos diários dos amigos
       nearby_changesets: conjuntos de alterações de utilizadores próximos
       nearby_diaries: publicações no diário de utilizadores próximos
   diary_entries:
@@ -630,7 +620,6 @@ pt-PT:
       use_map_link: Usar mapa
     index:
       title: Diários dos Utilizadores
-      title_friends: Diários dos amigos
       title_nearby: Diários dos utilizadores próximos
       user_title: Diário de %{user}
       in_language_title: Publicações em Diários em %{language}
@@ -699,15 +688,6 @@ pt-PT:
         no diário?
       button: Deixar de acompanhar a discussão
   diary_comments:
-    index:
-      title: Comentários no Diário feitos por %{user}
-      heading: Comentários no Diário de %{user}
-      subheading_html: Comentários no Diário feitos por %{user}
-      no_comments: Sem comentários no diário
-    page:
-      post: Publicação
-      when: Quando
-      comment: Comentário
     new:
       heading: Adicionar um comentário à seguinte discussão de entrada no diário?
   doorkeeper:
@@ -767,20 +747,6 @@ pt-PT:
       title: Ficheiro não encontrado
       description: Não foi possível encontrar uma operação de ficheiro/diretório/API
         com esse nome no servidor do OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Adicionar %{user} à lista de amigos?
-      button: Adicionar aos amigos
-      success: '%{name} entrou para a tua lista de amigos!'
-      failed: Lamentamos, não foi possível adicionar %{name} à tua lista de amigos.
-      already_a_friend: Já és amigo de %{name}.
-      limit_exceeded: Recentemente, adicionaste muitos utilizadores à tua lista de
-        amigos. Por favor, aguarda um pouco até poderes voltar a fazê-lo.
-    remove_friend:
-      heading: Remover %{user}da lista de amigos?
-      button: Remover amigo
-      success: '%{name} foi removido(a) da tua lista de amigos.'
-      not_a_friend: '%{name} não é um dos teus amigos.'
   geocoder:
     search:
       title:
@@ -1746,14 +1712,10 @@ pt-PT:
         em %{replyurl}
       footer_html: Também podes ler a mensagem em %{readurl} e enviar mensagem ao
         autor em %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Olá, %{to_user}.
-      subject: '[OpenStreetMap] %{user} adicionou-te como amigo'
-      had_added_you: '%{user} adicionou-te como amigo no OpenStreetMap.'
       see_their_profile: Podes ver o perfil dele em %{userurl}.
       see_their_profile_html: Podes ver o seu perfil em %{userurl}.
-      befriend_them: Também podes adicioná-lo como amigo em %{befriendurl}.
-      befriend_them_html: Também podes adicionar este utilizador como amigo em %{befriendurl}.
     gpx_failure:
       hi: Olá, %{to_user}.
       failed_to_import: 'não pôde ser importado como ficheiro de rota GPS. Verifica
@@ -1910,14 +1872,17 @@ pt-PT:
       wrong_user: Iniciaste sessão como `%{user}', mas a mensagem que pediste para
         ler não foi enviada por ou para esse utilizador. Por favor, entra na conta
         correta para poderes ler a mensagem.
-    mark:
-      as_read: Mensagem marcada como lida
-      as_unread: Mensagem marcada como não lida
-    unmute:
-      notice: A mensagem foi movida para a caixa de entrada
-      error: A mensagem não pôde ser movida para a caixa de entrada.
     destroy:
       destroyed: Mensagem eliminada
+    read_marks:
+      create:
+        notice: Mensagem marcada como lida
+      destroy:
+        notice: Mensagem marcada como não lida
+    mutes:
+      destroy:
+        notice: A mensagem foi movida para a caixa de entrada
+        error: A mensagem não pôde ser movida para a caixa de entrada.
     mailboxes:
       heading:
         my_inbox: Caixa de entrada
@@ -2679,13 +2644,14 @@ pt-PT:
     offline:
       heading: Armazenamento de GPX indisponível
       message: O sistema de envio e armazenamento de ficheiros GPX encontra-se indisponível.
-    georss:
-      title: Rotas de GPS do OpenStreetMap
-    description:
-      description_with_count:
-        one: Ficheiro GPX com %{count} ponto de %{user}
-        other: Ficheiro GPX com %{count} pontos de %{user}
-      description_without_count: Ficheiro GPX de %{user}
+    feeds:
+      show:
+        title: Rotas de GPS do OpenStreetMap
+      description:
+        description_with_count:
+          one: Ficheiro GPX com %{count} ponto de %{user}
+          other: Ficheiro GPX com %{count} pontos de %{user}
+        description_without_count: Ficheiro GPX de %{user}
   application:
     permission_denied: Não tens permissões para realizar essa operação
     require_cookies:
@@ -2824,7 +2790,6 @@ pt-PT:
           endereços de correio eletrónico
         contributor_terms: Termos de Contribuidor
       continue: Criar conta
-      terms accepted: Obrigado por aceitares os novos termos de contribuidor!
       email_help:
         privacy_policy: política de privacidade
         privacy_policy_title: Política de privacidade da OSMF incluindo seção sobre
@@ -2863,8 +2828,6 @@ pt-PT:
       edits: Edições
       traces: Rotas
       notes: Notas no mapa
-      remove as friend: Remover amigo
-      add as friend: Adicionar aos amigos
       mapper since: 'A mapear desde:'
       last map edit: 'Última edição do mapa:'
       no activity yet: Ainda sem atividade
@@ -2940,6 +2903,15 @@ pt-PT:
       user:
         summary_html: '%{name} criado com o ip %{ip_address} em %{date}'
         summary_no_ip_html: '%{name} criado em %{date}'
+    changeset_comments:
+      page:
+        when: Quando
+        comment: Comentário
+    diary_comments:
+      index:
+        title: Comentários no Diário feitos por %{user}
+      page:
+        post: Publicação
     suspended:
       title: Conta suspensa
       heading: Conta Suspensa
index 88e5598ae7b28f6a3d62c038902690d20b0c55d2..9e32f458c6e34b418c253fdf5f6ac2830f11b089 100644 (file)
@@ -313,14 +313,6 @@ pt:
       external auth: Autenticação externa
       openid:
         link text: o que é isto?
-      public editing:
-        heading: Edição pública
-        enabled: Ativado. Não é anônimo e pode editar dados.
-        enabled link: https://wiki.openstreetmap.org/wiki/Pt:Anonymous_edits
-        enabled link text: o que é isso?
-        disabled: Desativado e não pode editar dados, todas as edições anteriores
-          são anônimas.
-        disabled link text: porque não posso editar?
       contributor terms:
         heading: Termos do contribuidor
         agreed: Você aceitou os novos termos do contribuidor.
@@ -400,7 +392,6 @@ pt:
         readable_summary: resumo legível para humanos
         informal_translations: traduções informais
         continue: Continuar
-        declined: https://wiki.openstreetmap.org/wiki/Pt:Contributor_Terms_Declined?uselang=pt-br
         cancel: Cancelar
         you need to accept or decline: Por favor leia e, em seguida, aceite ou recuse
           os novos termos do contribuidor para continuar.
@@ -409,6 +400,8 @@ pt:
           france: França
           italy: Itália
           rest_of_world: Outros países
+      update:
+        terms accepted: Obrigado por aceitar os novos termos de contribuição!
       terms_declined_flash:
         terms_declined_html: Lamentamos que não tenha aceitado os novos termos de
           contribuidor. Para mais informações, consulta %{terms_declined_link}.
@@ -559,7 +552,6 @@ pt:
       title: Conjuntos de alterações
       title_user: Conjuntos de alterações de %{user}
       title_user_link_html: Conjuntos de alterações de %{user_link}
-      title_friend: Conjuntos de alterações feitos pelos meus amigos
       title_nearby: Conjuntos de alterações de usuários próximos
       empty: Nenhum conjunto de alterações encontrado.
       empty_area: Nenhum conjunto de alterações nesta área.
@@ -574,19 +566,6 @@ pt:
         created: Criado
         closed: Fechado
         belongs_to: Autor
-    subscribe:
-      heading: Deseja se inscrever à seguinte discussão do conjunto de alterações?
-      button: Inscreva-se na discussão
-    unsubscribe:
-      heading: Deseja cancelar a inscrição na seguinte discussão do conjunto de alterações?
-      button: Cancelar inscrição da discussão
-    heading:
-      title: Conjunto de alterações %{id}
-      created_by_html: Criado por %{link_user} em %{created}.
-    no_such_entry:
-      heading: 'Não há postagens no diário com o id: %{id}'
-      body: Desculpe, não há conjunto de alterações com o id %{id}. Verifique a ortografia,
-        ou talvez o link que que você clicou esteja errado.
     show:
       title: 'Conjunto de alterações: %{id}'
       created: 'Criado: %{when}'
@@ -618,6 +597,22 @@ pt:
     timeout:
       sorry: A lista de conjuntos de alterações solicitada está demorando demais para
         chegar.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Deseja se inscrever à seguinte discussão do conjunto de alterações?
+        button: Inscreva-se na discussão
+      unsubscribe:
+        heading: Deseja cancelar a inscrição na seguinte discussão do conjunto de
+          alterações?
+        button: Cancelar inscrição da discussão
+    heading:
+      title: Conjunto de alterações %{id}
+      created_by_html: Criado por %{link_user} em %{created}.
+    no_such_entry:
+      heading: 'Não há postagens no diário com o id: %{id}'
+      body: Desculpe, não há conjunto de alterações com o id %{id}. Verifique a ortografia,
+        ou talvez o link que que você clicou esteja errado.
   dashboards:
     contact:
       km away: '%{count}km de distância'
@@ -626,18 +621,13 @@ pt:
     popup:
       your location: Sua localização
       nearby mapper: Mapeador próximo
-      friend: Amigo
     show:
       title: Meu painel
       no_home_location_html: '%{edit_profile_link} e defina seu local de origem para
         ver usuários próximos.'
       edit_your_profile: Editar seu perfil
-      my friends: Meus amigos
-      no friends: Você ainda não adicionou amigos.
       nearby users: Outros usuários próximos
       no nearby users: Ainda não há outros usuários mapeando por perto.
-      friends_changesets: conjuntos de alterações dos amigos
-      friends_diaries: publicações no diário dos amigos
       nearby_changesets: conjuntos de alterações de usuários próximos
       nearby_diaries: publicações no diário dos usuários próximos
   diary_entries:
@@ -648,7 +638,6 @@ pt:
       use_map_link: Usar mapa
     index:
       title: Diários dos usuários
-      title_friends: Diários dos amigos
       title_nearby: Diários dos usuários próximos
       user_title: Diário de %{user}
       in_language_title: Publicações de Diário em %{language}
@@ -715,15 +704,6 @@ pt:
       heading: Cancelar a in=inscrição da seguinte discussão de entrada de diário?
       button: Cancelar a inscrição na discussão
   diary_comments:
-    index:
-      title: Comentários no diário feitos por %{user}
-      heading: Comentários no diário de %{user}
-      subheading_html: Comentários no diário feitos por %{user}
-      no_comments: Sem comentários no diário.
-    page:
-      post: Entrada
-      when: Quando
-      comment: Comentário
     new:
       heading: Deseja adicionar um comentário na seguinte discussão sobre a entrada
         de diário?
@@ -785,20 +765,6 @@ pt:
       title: Arquivo não encontrado
       description: Não foi possível encontrar uma operação de arquivo/diretório/API
         com esse nome no servidor OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Adicionar %{user} como amigo?
-      button: Adicionar como amigo
-      success: '%{name} agora é seu amigo!'
-      failed: Falha ao adicionar %{name} como seu amigo.
-      already_a_friend: Você já é amigo de %{name}.
-      limit_exceeded: Você tornou amigo de muitos usuários recentemente. Por favor,
-        espere um pouco antes de tentar mais amigo.
-    remove_friend:
-      heading: Desfazer amizade com %{user}?
-      button: Desfazer amizade
-      success: '%{name} foi removido dos seus amigos.'
-      not_a_friend: '%{name} não é um dos seus amigos.'
   geocoder:
     search:
       title:
@@ -1762,14 +1728,10 @@ pt:
         mensagem ao autor em %{replyurl}
       footer_html: Você pode também ler a mensagem em %{readurl} e você pode enviar
         uma mensagem ao autor em %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Olá %{to_user},
-      subject: '[OpenStreetMap] %{user} adicionou você como amigo(a)'
-      had_added_you: '%{user} adicionou você como amigo(a) no OpenStreetMap.'
       see_their_profile: Você pode ver o perfil dele(a) em %{userurl}.
       see_their_profile_html: Você pode ver o perfil dele(a) em %{userurl}.
-      befriend_them: Você também pode adicioná-lo(a) como amigo em %{befriendurl}.
-      befriend_them_html: Você também pode adicioná-lo(a) como amigo em %{befriendurl}.
     gpx_failure:
       hi: Olá %{to_user},
       failed_to_import: 'falha na importação do arquivo de rastreamento de GPS. Por
@@ -1928,14 +1890,17 @@ pt:
       wrong_user: Você está conectado como '%{user}' mas a mensagem que você quer
         ler não foi enviada para ou por este usuário. Entre com o usuário correto
         para poder ler.
-    mark:
-      as_read: Mensagem marcada como lida
-      as_unread: Mensagem marcada como não lida
-    unmute:
-      notice: A mensagem foi movida para a caixa de entrada
-      error: A mensagem não pôde ser movida para a caixa de entrada.
     destroy:
       destroyed: Mensagem apagada
+    read_marks:
+      create:
+        notice: Mensagem marcada como lida
+      destroy:
+        notice: Mensagem marcada como não lida
+    mutes:
+      destroy:
+        notice: A mensagem foi movida para a caixa de entrada
+        error: A mensagem não pôde ser movida para a caixa de entrada.
     mailboxes:
       heading:
         my_inbox: Minha caixa de entrada
@@ -2713,13 +2678,14 @@ pt:
       heading: Armazenamento de GPX Desligado
       message: O sistema de armazenamento e envio de arquivos GPX está atualmente
         indisponível.
-    georss:
-      title: Trilhas de GPS do OpenStreetMap
-    description:
-      description_with_count:
-        one: Arquivo GPX com %{count} ponto de %{user}
-        other: Arquivo GPX com %{count} pontos de %{user}
-      description_without_count: Arquivo GPX de %{user}
+    feeds:
+      show:
+        title: Trilhas de GPS do OpenStreetMap
+      description:
+        description_with_count:
+          one: Arquivo GPX com %{count} ponto de %{user}
+          other: Arquivo GPX com %{count} pontos de %{user}
+        description_without_count: Arquivo GPX de %{user}
   application:
     permission_denied: Você não tem permissão para acessar essa ação
     require_cookies:
@@ -2880,7 +2846,6 @@ pt:
         contributor_terms_url: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
         contributor_terms: termos do contribuidor
       continue: Registrar-se
-      terms accepted: Obrigado por aceitar os novos termos de contribuição!
       email_help:
         privacy_policy: política de privacidade
         privacy_policy_title: Política de privacidade da OSMF incluindo seção sobre
@@ -2918,8 +2883,6 @@ pt:
       edits: Edições
       traces: Trilhas
       notes: Notas de Mapa
-      remove as friend: Desfazer amizade
-      add as friend: Adicionar como amigo
       mapper since: 'Mapeador desde:'
       last map edit: 'Última edição do mapa:'
       no activity yet: Ainda sem atividade
@@ -2995,6 +2958,15 @@ pt:
       user:
         summary_html: '%{name} criado no computador %{ip_address} em %{date}'
         summary_no_ip_html: '%{name} criado em %{date}'
+    changeset_comments:
+      page:
+        when: Quando
+        comment: Comentário
+    diary_comments:
+      index:
+        title: Comentários no diário feitos por %{user}
+      page:
+        post: Entrada
     suspended:
       title: Conta suspensa
       heading: Conta suspensa
index ec250e05ed98b07561cda160f728e8f68f36fec4..4cd541f672c193830accbce8377e01167666d7f5 100644 (file)
@@ -281,13 +281,6 @@ ro:
       external auth: Autentificare externă
       openid:
         link text: Ce este aceasta?
-      public editing:
-        heading: 'Editarea publică:'
-        enabled: Activat. Nu este anonim și poate edita date.
-        enabled link text: Ce este aceasta?
-        disabled: Dezactivat și nu poate edita date, toate editările anterioare sunt
-          anonime.
-        disabled link text: de ce nu pot edita?
       contributor terms:
         heading: Termenii contribuitorului
         agreed: Ați fost de acord cu noii Termeni ai Contributorului.
@@ -377,6 +370,8 @@ ro:
           france: Franța
           italy: Italia
           rest_of_world: Restul lumii
+      update:
+        terms accepted: Vă mulțumim pentru acceptarea noilor termeni de contribuire!
       terms_declined_flash:
         terms_declined_html: Ne pare rău că ați decis să nu acceptați noii Termeni
           de Contributor. Pentru mai multe informații, consultați %{terms_declined_link}.
@@ -497,7 +492,6 @@ ro:
       title: Set de modificări
       title_user: Seturi de modificări făcute de %{user}
       title_user_link_html: Seturi de modificări făcute de %{user_link}
-      title_friend: Seturi de modificări făcute de prietenii mei
       title_nearby: Modificări făcute de utilizatori din apropiere
       empty: Niciun set de modificări găsit.
       empty_area: Niciun set de modificări în această zonă.
@@ -512,10 +506,6 @@ ro:
         created: Creat
         closed: Închis
         belongs_to: Autor
-    subscribe:
-      button: Abonează-te la discuție
-    unsubscribe:
-      button: Dezabonează-te de la discuție
     show:
       title: 'Set de modificări: %{id}'
       created: 'Creat: %{when}'
@@ -547,6 +537,12 @@ ro:
     timeout:
       sorry: Ne pare rău, preluarea listei de modificări pe care ați solicitat-o a
         durat prea mult.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        button: Abonează-te la discuție
+      unsubscribe:
+        button: Dezabonează-te de la discuție
   dashboards:
     contact:
       km away: '%{count} km depărtare'
@@ -555,19 +551,14 @@ ro:
     popup:
       your location: Locația utilizatorului
       nearby mapper: Cartograful din apropiere
-      friend: Prieten
     show:
       title: Dashboardul meu
       no_home_location_html: '%{edit_profile_link} și setați locația de acasă pentru
         a vedea utilizatorii din apropiere.'
       edit_your_profile: Editați-vă profilul
-      my friends: Prietenii mei
-      no friends: Nu ați adăugat încă niciun prieten.
       nearby users: Alți utilizatori din apropriere
       no nearby users: Nu există alți utilizatori care să admită cartografiere în
         apropiere.
-      friends_changesets: changeset prieteni
-      friends_diaries: intrările prietenilor în jurnal
       nearby_changesets: schimbări de setări ale utilizatorilor
       nearby_diaries: intrările în jurnalul utilizatorului din apropiere
   diary_entries:
@@ -578,7 +569,6 @@ ro:
       use_map_link: Utilizează Harta
     index:
       title: Jurnalele utilizatorilor
-      title_friends: Jurnalele prietenilor
       title_nearby: Jurnalele utilizatorilor aflați în apropiere
       user_title: Jurnalul utilizatorului %{user}
       in_language_title: Înregistrări de jurnal în %{language}
@@ -647,15 +637,6 @@ ro:
       heading: Te dezabonezi de la următoarea discuție de intrare a jurnalului?
       button: Dezabonează-te de la discuție
   diary_comments:
-    index:
-      title: Comentarii din jurnal adăugate de %{user}
-      heading: Comentariile la jurnal a lui %{user}
-      subheading_html: Comentarii din jurnal adăugate de %{user}
-      no_comments: Fără comentarii din jurnal
-    page:
-      post: Postează
-      when: Când
-      comment: Comentariu
     new:
       heading: Adaugi un comentariu la următoarea discuție de intrare a jurnalului?
   doorkeeper:
@@ -711,20 +692,6 @@ ro:
       title: Fișierul nu a fost găsit
       description: Nu s-a putut găsi o operație de file/directory/API operation cu
         acest nume pe serverul OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Adăugați %{user} ca prieten?
-      button: Adaugă ca prieten
-      success: '%{name} este acum prietenul tău!'
-      failed: Ne pare rău, nu a reușit să adăugați %{name} ca prieten.
-      already_a_friend: Sunteți deja prieteni cu %{name}
-      limit_exceeded: V-ați împrietenit cu mulți utilizatori recent. Vă rugăm să așteptați
-        puțin înainte de a încerca să vă mai împrieteniți.
-    remove_friend:
-      heading: Scoate de la prieteni pe %{user}?
-      button: Scoate din lista de prieteni
-      success: '%{name} a fost scos de la lista de prieteni.'
-      not_a_friend: '%{name} nu este unul din prietenii tăi.'
   geocoder:
     search:
       title:
@@ -1667,14 +1634,10 @@ ro:
         la %{replyurl}
       footer_html: De asemenea, puteți citi mesajul la %{readurl} și puteți răspunde
         la %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Salut %{to_user},
-      subject: '[OpenStreetMap] %{user} te-a adaugat ca prieten'
-      had_added_you: '%{user} te-a adăugat ca prieten pe OpenStreetMap.'
       see_their_profile: Puteți vedea profilul lor la %{userurl}.
       see_their_profile_html: Puteți vedea profilul respectiv la %{userurl}.
-      befriend_them: De asemenea, îi puteți adăuga ca prieten la %{befriendurl}
-      befriend_them_html: Le puteți adăuga și ca prieten la %{befriendurl}.
     gpx_failure:
       hi: Salut %{to_user},
       failed_to_import: 'nu a putut fi importat ca fișier de urmărire GPS. Verificați
@@ -1825,14 +1788,17 @@ ro:
       wrong_user: Sunteți conectat ca `%{user}', dar mesajul pe care ați solicitat
         să îl citiți nu a fost trimis de către sau către respectivul utilizator. Conectați-vă
         ca utilizatorul corect pentru a-l citi.
-    mark:
-      as_read: Mesaj marcat ca fiind citit
-      as_unread: Mesaj marcat ca necitit
-    unmute:
-      notice: Mesajul a fost mutat în Primite
-      error: Mesajul nu a putut fi mutat în Primite
     destroy:
       destroyed: Mesaj șters
+    read_marks:
+      create:
+        notice: Mesaj marcat ca fiind citit
+      destroy:
+        notice: Mesaj marcat ca necitit
+    mutes:
+      destroy:
+        notice: Mesajul a fost mutat în Primite
+        error: Mesajul nu a putut fi mutat în Primite
     mailboxes:
       heading:
         my_inbox: Mesaje primite
@@ -2598,13 +2564,14 @@ ro:
       heading: Stocare offline GPX
       message: În prezent, sistemul de stocare și încărcare a fișierelor GPX nu este
         disponibil.
-    georss:
-      title: Urmele GPS OpenStreetMap
-    description:
-      description_with_count:
-        one: Fișier GPX cu %{count} puncte de la %{user}
-        other: Fișier GPX cu %{count} puncte de la %{user}
-      description_without_count: Fișier GPX de la %{user}
+    feeds:
+      show:
+        title: Urmele GPS OpenStreetMap
+      description:
+        description_with_count:
+          one: Fișier GPX cu %{count} puncte de la %{user}
+          other: Fișier GPX cu %{count} puncte de la %{user}
+        description_without_count: Fișier GPX de la %{user}
   application:
     permission_denied: Nu aveți permisiuni pentru a efectua această acțiune
     require_cookies:
@@ -2735,7 +2702,6 @@ ro:
         privacy_policy_title: Politica de confidențialitate OSMF, inclusiv secțiunea
           privind adresele de e-mail
       continue: Înregistrare
-      terms accepted: Vă mulțumim pentru acceptarea noilor termeni de contribuire!
       email_help:
         html: Adresa dvs. nu este afișată public, consultați %{privacy_policy_link}
           pentru mai multe informații.
@@ -2765,8 +2731,6 @@ ro:
       edits: Modificare
       traces: Urme
       notes: Notițe hartă
-      remove as friend: Scoate din lista de prieteni
-      add as friend: Adaugă Prieten
       mapper since: 'Cartograf din:'
       last map edit: 'Ultima editare a hărții:'
       no activity yet: Nicio activitate încă
@@ -2827,6 +2791,15 @@ ro:
       user:
         summary_html: '%{name} creat de %{ip_address} pe %{date}'
         summary_no_ip_html: '%{name} creat pe %{date}'
+    changeset_comments:
+      page:
+        when: Când
+        comment: Comentariu
+    diary_comments:
+      index:
+        title: Comentarii din jurnal adăugate de %{user}
+      page:
+        post: Postează
     suspended:
       title: Cont Suspendat
       heading: Cont Suspendat
index a23fe6021703d8f0089f80979190d99a02473a6b..8da1c2400a387e5140b816e39b34638202663dc1 100644 (file)
@@ -53,6 +53,7 @@
 # Author: Kareyac
 # Author: Katunchik
 # Author: Kirill-224
+# Author: Knxb
 # Author: Komzpa
 # Author: Link2xt
 # Author: Lockal
@@ -200,8 +201,7 @@ ru:
         support_url: URL пользовательской поддержки
         allow_read_prefs: читать пользовательские настройки
         allow_write_prefs: изменять пользовательские настройки
-        allow_write_diary: создавать записи в дневнике, комментировать и заводить
-          друзей
+        allow_write_diary: создавать записи в дневнике и комментарии
         allow_write_api: редактировать карту
         allow_read_gpx: читать частные GPS-треки
         allow_write_gpx: загружать GPS-треки
@@ -389,13 +389,6 @@ ru:
       openid:
         link: https://wiki.openstreetmap.org/wiki/RU:OpenID
         link text: что это?
-      public editing:
-        heading: Общедоступная правка
-        enabled: Включено. Можно редактировать. Правки не анонимны.
-        enabled link: https://wiki.openstreetmap.org/wiki/RU:%D0%90%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8
-        enabled link text: что это?
-        disabled: Отключён и не может вносить правки, все предыдущие изменения анонимны.
-        disabled link text: почему я не могу вносить изменения?
       contributor terms:
         heading: Условия участия
         agreed: Вы согласились с новыми Условиями участия.
@@ -472,9 +465,12 @@ ru:
         consider_pd: В дополнение к вышеизложенному, я принимаю во внимание, что мой
           вклад находится в общественном достоянии
         consider_pd_why: что это значит?
-        readable_summary: удобочитаемое резюме
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
+        guidance_info_html: 'Информация, помогающая понять эти условия: %{readable_summary_link}
+          и некоторые %{informal_translations_link}'
+        readable_summary: краткое содержание
+        informal_translations: неформальные переводы
         continue: Продолжить
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=ru
         cancel: Отмена
         you need to accept or decline: Пожалуйста, прочитайте, а затем согласитесь
           или отклоните новые Условия участия.
@@ -483,6 +479,8 @@ ru:
           france: На французском
           italy: На итальянском
           rest_of_world: Остальной мир
+      update:
+        terms accepted: Спасибо за принятие новых условий участия!
       terms_declined_flash:
         terms_declined_html: Нам жаль, что вы решили не принимать Новые Условия участия.
           Для получения дополнительной информации смотрите %{terms_declined_link}.
@@ -648,7 +646,6 @@ ru:
       title: Пакеты правок
       title_user: Пакеты правок пользователя %{user}
       title_user_link_html: Пакеты правок пользователя %{user_link}
-      title_friend: Пакеты правок друзей
       title_nearby: Пакеты правок соседних участников
       empty: Пакеты правок не найдены.
       empty_area: Нет пакетов правок в этой области.
@@ -663,19 +660,6 @@ ru:
         created: Создано
         closed: Закрыто
         belongs_to: Автор
-    subscribe:
-      heading: Подписаться на следующее обсуждение пакета правок?
-      button: Подписаться на обсуждение
-    unsubscribe:
-      heading: Отписаться от следующего обсуждения пакета правок?
-      button: Отписаться от обсуждения
-    heading:
-      title: Пакет правок %{id}
-      created_by_html: Создал %{link_user} %{created}.
-    no_such_entry:
-      heading: 'Нет записи с номером: %{id}'
-      body: К сожалению, пакета правок с идентификатором %{id} нет. Пожалуйста, проверьте
-        правильность написания, возможно, ссылка, по которой вы перешли, неверна.
     show:
       title: 'Пакет правок: %{id}'
       created: 'Создан: %{when}'
@@ -709,6 +693,21 @@ ru:
     timeout:
       sorry: К сожалению, список пакетов правок, который вы запросили, требует слишком
         много времени для извлечения.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Подписаться на следующее обсуждение пакета правок?
+        button: Подписаться на обсуждение
+      unsubscribe:
+        heading: Отписаться от следующего обсуждения пакета правок?
+        button: Отписаться от обсуждения
+    heading:
+      title: Пакет правок %{id}
+      created_by_html: Создал %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Нет записи с номером: %{id}'
+      body: К сожалению, пакета правок с идентификатором %{id} нет. Пожалуйста, проверьте
+        правильность написания, возможно, ссылка, по которой вы перешли, неверна.
   dashboards:
     contact:
       km away: '%{count} км от вас'
@@ -717,19 +716,14 @@ ru:
     popup:
       your location: Ваше местоположение
       nearby mapper: Ближайший картограф
-      friend: Друг
     show:
       title: Мой пульт
       no_home_location_html: '%{edit_profile_link} и установите ваше местоположение,
         чтобы видеть близлежащих  пользователей.'
       edit_your_profile: Отредактируйте свой профиль
-      my friends: Мои друзья
-      no friends: Вы не добавили ещё ни одного друга.
       nearby users: Другие ближайшие пользователи
       no nearby users: Пока нет других пользователей, которые признают, что занимаются
         составлением карты поблизости.
-      friends_changesets: пакеты правок друзей
-      friends_diaries: дневники друзей
       nearby_changesets: пакеты правок соседей
       nearby_diaries: дневники соседей
   diary_entries:
@@ -740,7 +734,6 @@ ru:
       use_map_link: Использовать карту
     index:
       title: Дневники
-      title_friends: Дневники друзей
       title_nearby: Дневники соседних участников
       user_title: Дневник пользователя %{user}
       in_language_title: Дневниковые записи на языке %{language}
@@ -809,16 +802,6 @@ ru:
       heading: Отписаться от обсуждения следующей записи в дневнике?
       button: Отписаться от обсуждения
   diary_comments:
-    index:
-      title: Комментарии к записям в дневнике, добавленные пользователем %{user}
-      heading: Комментарии к записям в дневнике пользователя %{user}
-      subheading_html: Комментарии к записям в дневнике, добавленные пользователем
-        %{user}
-      no_comments: Никаких комментариев в дневнике
-    page:
-      post: Сообщение
-      when: Когда
-      comment: Комментарий
     new:
       heading: Добавить комментарий к следующему обсуждению записи в дневнике?
   doorkeeper:
@@ -875,20 +858,6 @@ ru:
       title: Файл не найден
       description: Не удалось найти файл/каталог/операцию API с таким именем на сервере
         OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Добавить %{user} в друзья?
-      button: Добавить в друзья
-      success: '%{name} теперь ваш друг!'
-      failed: Не удалось добавить %{name} в друзья.
-      already_a_friend: Вы уже друзья с %{name}.
-      limit_exceeded: В последнее время вы подружились со многими пользователями.
-        Пожалуйста, подождите некоторое время, прежде чем пытаться снова дружить.
-    remove_friend:
-      heading: Удалить %{user} из друзей?
-      button: Удалить из друзей
-      success: '%{name} удалён из друзей.'
-      not_a_friend: '%{name} не является вашим другом.'
   geocoder:
     search:
       title:
@@ -1224,6 +1193,8 @@ ru:
           wreck: Остов судна
           "yes": Памятное место
         information:
+          guidepost: Указательный столб
+          board: Информационная доска
           map: Карта
         junction:
           "yes": Перекрёсток
@@ -1297,6 +1268,8 @@ ru:
           track: Спортивная дорожка
           water_park: Аквапарк
           "yes": Досуг
+        lock:
+          "yes": Шлюз
         man_made:
           adit: Штольня
           advertising: Реклама
@@ -1637,6 +1610,15 @@ ru:
           building_passage: Проезд через здание
           culvert: Водопропускная труба, кульверт
           "yes": Тоннель
+        water:
+          lake: Озеро
+          pond: Пруд
+          reservoir: Водохранилище
+          lagoon: Лагуна
+          wastewater: Сточные воды
+          oxbow: Старица
+          stream_pool: Ручьевой плёс
+          lock: Шлюз
         waterway:
           artificial: Искусственный водоток
           boatyard: Верфь
@@ -1804,6 +1786,7 @@ ru:
       необходимое техническое обслуживание.
     osm_read_only: База данных OpenStreetMap в данный момент доступна только для чтения,
       так как проводится необходимое техническое обслуживание.
+    nothing_to_preview: Нечего предпросматривать.
     help: Помощь
     about: О проекте
     copyright: Авторские права
@@ -1812,6 +1795,7 @@ ru:
     more: Ещё
   user_mailer:
     diary_comment_notification:
+      description: 'Запись в дневнике OpenStreetMap #%{id}'
       subject: Пользователь [OpenStreetMap] %{user} оставил комментарий в дневнике
       hi: Здравствуйте, %{to_user},
       header: '%{from_user} прокомментировал на OpenStreetMap с темой %{subject}:'
@@ -1833,16 +1817,16 @@ ru:
         на него на %{replyurl}
       footer_html: Вы можете также прочитать сообщение на странице %{readurl} и ответить
         на него на %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Здравствуйте, %{to_user},
-      subject: Пользователь [OpenStreetMap] %{user} добавил вас в список своих друзей
-      had_added_you: '%{user} добавил вас в друзья на OpenStreetMap.'
       see_their_profile: 'Вы можете просмотреть информацию о них по ссылке: %{userurl}.'
       see_their_profile_html: 'Вы можете просмотреть информацию о них по ссылке: %{userurl}.'
-      befriend_them: Вы также можете добавить их в качестве друзей в %{befriendurl}.
-      befriend_them_html: Вы также можете добавить их в качестве друзей в %{befriendurl}.
     gpx_details:
+      details: 'Подробности вашего файла:'
+      filename: Имя файла
+      url: URL
       description: Описание
+      tags: Теги
     gpx_failure:
       hi: Здравствуйте, %{to_user},
       failed_to_import: 'сбой импорта. Произошла ошибка:'
@@ -1995,13 +1979,16 @@ ru:
       wrong_user: Вы вошли в систему под именем '%{user}', но сообщение, которое вы
         просили прочитать, не было отправлено этим пользователем. Пожалуйста, войдите
         в систему под правильным именем, чтобы прочитать его.
-    mark:
-      as_read: Сообщение отмечено как прочитанное
-      as_unread: Сообщение отмечено как непрочитанное
-    unmute:
-      notice: Сообщение перемещено во Входящие
     destroy:
       destroyed: Сообщение удалено
+    read_marks:
+      create:
+        notice: Сообщение отмечено как прочитанное
+      destroy:
+        notice: Сообщение отмечено как непрочитанное
+    mutes:
+      destroy:
+        notice: Сообщение перемещено во Входящие
     mailboxes:
       heading:
         my_inbox: Мои входящие
@@ -2140,6 +2127,7 @@ ru:
       support: поддержка
   shared:
     markdown_help:
+      heading_html: Синтаксис %{kramdown_link}
       headings: Заголовки
       heading: Заголовок
       subheading: Подзаголовок
@@ -2152,6 +2140,7 @@ ru:
       image: Изображение
       alt: Альтернативный текст
       url: URL
+      codeblock: Блок кода
     richtext_field:
       edit: Править
       preview: Предпросмотр
@@ -2163,6 +2152,9 @@ ru:
       diary_entries:
         older: Более старые записи
         newer: Более новые записи
+      issues:
+        older: Более старые проблемы
+        newer: Более новые проблемы
       traces:
         older: Более старые треки
         newer: Более новые треки
@@ -2174,6 +2166,7 @@ ru:
         newer: Новые участники
   site:
     about:
+      heading_html: '%{copyright}Авторы%{br}OpenStreetMap'
       used_by_html: '%{name} предоставляет данные для тысяч сайтов, мобильных приложений
         и устройств'
       lede_text: OpenStreetMap создан сообществом картографов, которые добавляют и
@@ -2702,13 +2695,14 @@ ru:
     offline:
       heading: GPX хранилище отключено
       message: Хранилище GPX файлов и система их загрузки в настоящий момент недоступна.
-    georss:
-      title: OpenStreetMap GPS-треки
-    description:
-      description_with_count:
-        one: GPX-файл с %{count} точкой от %{user}}
-        other: GPX-файл с %{count} точками от %{user}
-      description_without_count: GPX-файл от %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-треки
+      description:
+        description_with_count:
+          one: GPX-файл с %{count} точкой от %{user}}
+          other: GPX-файл с %{count} точками от %{user}
+        description_without_count: GPX-файл от %{user}
   application:
     permission_denied: У вас нет прав для выполнения этого действия
     require_cookies:
@@ -2836,7 +2830,6 @@ ru:
         privacy_policy_title: Политика конфиденциальности OSMF, включая раздел об
           адресах электронной почты
       continue: Зарегистрироваться
-      terms accepted: Спасибо за принятие новых условий участия!
       email_help:
         html: Ваш адрес не отображается публично, см. нашу %{privacy_policy_link}
           для получения дополнительной информации.
@@ -2869,9 +2862,9 @@ ru:
       edits: Правки
       traces: Треки
       notes: Заметки
-      remove as friend: Удалить из друзей
-      add as friend: Добавить в друзья
       mapper since: 'Зарегистрирован:'
+      last map edit: Последняя правка карты
+      no activity yet: Пока нет активности
       uid: 'ID пользователя:'
       ct status: 'Условия участия:'
       ct undecided: Неопределено
@@ -2926,6 +2919,15 @@ ru:
       user:
         summary_html: '%{name} создан %{date}, с адреса %{ip_address}'
         summary_no_ip_html: '%{name} создан %{date}'
+    changeset_comments:
+      page:
+        when: Когда
+        comment: Комментарий
+    diary_comments:
+      index:
+        title: Комментарии к записям в дневнике, добавленные пользователем %{user}
+      page:
+        post: Сообщение
     suspended:
       title: Учётная запись приостановлена
       heading: Учётная запись приостановлена
@@ -3074,6 +3076,7 @@ ru:
           muted_user: Заглушённый пользователь
           actions: Действия
         tbody:
+          unmute: Отменить заглушение
           send_message: Отправить сообщение
     create:
       notice: Вы заглушили пользователя %{name}.
@@ -3095,6 +3098,7 @@ ru:
       all: Все
       open: Незакрытые
       closed: Закрытые
+      status: Статус
     show:
       title: 'Заметка: %{id}'
       description: Описание
@@ -3107,6 +3111,8 @@ ru:
       event_commented_by_anonymous_html: Анонимный комментарий %{time_ago}
       event_closed_by_html: Решено %{user} %{time_ago}
       event_closed_by_anonymous_html: Решено анонимно %{time_ago}
+      event_reopened_by_html: Вновь активировано %{user} %{time_ago}
+      event_reopened_by_anonymous_html: Вновь активировано анонимом %{time_ago}
       event_hidden_by_html: Скрыто %{user} %{time_ago}
       report: пожаловаться на эту заметку
       anonymous_warning: Заметка содержит комментарии анонимных участников. Требуется
@@ -3119,6 +3125,7 @@ ru:
       reactivate: Открыть снова
       comment_and_resolve: Закрыть с комментарием
       comment: Комментировать
+      log_in_to_comment: Войдите чтобы прокомментировать эту заметку
       report_link_html: Если эта заметка содержит чувствительную информацию, которую
         нужно удалить, вы можете %{link}.
       other_problems_resolve: При всех других проблемах с заметкой, закройте её, пожалуйста,
@@ -3132,14 +3139,22 @@ ru:
         и напечатайте сообщение, объясняющее проблему.
       anonymous_warning_log_in: войти
       anonymous_warning_sign_up: зарегистрироваться
+      counter_warning_guide_link:
+        url: https://wiki.openstreetmap.org/wiki/RU:%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0
       advice: Ваша заметка является общедоступной и может использоваться для обновления
         карты, поэтому не вводите личную информацию, информацию из защищённых авторскими
         правами карт или справочников.
       add: Добавить заметку
+    new_readonly:
+      title: Новая заметка
+      warning: Новые заметки не могут быть созданы, поскольку API OpenStreetMap в
+        настоящий момент находится в режиме только для чтения.
     notes_paging_nav:
       showing_page: Страница %{page}
       next: Следующая
       previous: Предыдущая
+    not_found_message:
+      sorry: 'К сожалению, заметка #%{id} не найдена.'
   javascripts:
     close: Закрыть
     share:
@@ -3176,12 +3191,12 @@ ru:
       locate:
         title: Показать мое местоположение
         metersPopup:
-          one: Вы находитесь в одном метре от этой точки
+          one: Вы находитесь в %{count} метре от этой точки
           few: 'Вы находитесь в %{count} метрах от этой точки '
           many: Вы находитесь в %{count} метрах от этой точки
           other: Вы находитесь в %{count} метрах от этой точки
         feetPopup:
-          one: Вы находитесь в одном футе от этой точки
+          one: Вы находитесь в %{count} футе от этой точки
           few: Вы находитесь в %{count} футах от этой точки
           many: Вы находитесь в %{count} футах от этой точки
           other: Вы находитесь в %{count} футах от этой точки
@@ -3189,6 +3204,7 @@ ru:
         standard: Стандартный
         cycle_map: Велосипедная карта
         transport_map: Карта транспорта
+        tracestracktop_topo: Топографическая
         hot: Гуманитарная
       layers:
         header: Слои карты
@@ -3199,10 +3215,12 @@ ru:
         title: Слои
       openstreetmap_contributors: Авторы OpenStreetMap
       make_a_donation: Сделать пожертвование
+      website_and_api_terms: Условия сайта и API
       cyclosm_credit: Стиль тайлов от %{cyclosm_link} размещен на %{osm_france_link}
       osm_france: OpenStreetMap Франция
       thunderforest_credit: Тайлы предоставлены %{thunderforest_link}
       andy_allan: Энди Аллан
+      tracestrack_credit: Тайлы предоставлены %{tracestrack_link}
       hotosm_credit: Стиль тайлов от %{hotosm_link} размещен на %{osm_france_link}
     site:
       edit_tooltip: Править карту
index ce6137c5c317f75789aa4b8b45bad31e94c846c9..b300df57183fa85811c6157b0ea666880e1716c8 100644 (file)
@@ -131,8 +131,6 @@ sat:
       current email address: 'ᱱᱮᱛᱚᱜ-ᱟᱜ ᱤᱢᱮᱞ ᱴᱷᱤᱠᱟᱹᱬᱟ:'
       openid:
         link text: ᱱᱤᱭᱟᱹ ᱫᱚ ᱪᱮᱫ?
-      public editing:
-        enabled link text: ᱱᱤᱭᱟᱹ ᱫᱚ ᱪᱮᱫ?
       contributor terms:
         link text: ᱱᱤᱭᱟᱹ ᱫᱚ ᱪᱮᱫ?
       save changes button: ᱵᱚᱫᱚᱞᱠᱚ ᱪᱟᱺᱪᱟᱣ ᱢᱮ
@@ -213,10 +211,6 @@ sat:
   dashboards:
     popup:
       your location: ᱟᱢᱟᱜ ᱡᱟᱭᱜᱟ
-      friend: ᱜᱟᱛᱮ
-    show:
-      my friends: ᱤᱧᱭᱟᱜ ᱜᱟᱛᱮ ᱠᱚ
-      no friends: ᱱᱤᱛ ᱫᱷᱟᱹᱵᱤᱡ ᱢᱤᱛᱴᱮᱱ ᱜᱟᱛᱮᱠᱩ ᱦᱚᱸ ᱵᱟᱢ ᱥᱮᱞᱮᱫ ᱠᱟᱛ ᱠᱚᱣᱟ᱾
   diary_entries:
     new:
       title: ᱱᱟᱶᱟ ᱰᱟᱭᱨᱤ ᱟᱫᱮᱨ
@@ -225,7 +219,6 @@ sat:
       use_map_link: ᱱᱚᱠᱥᱟ ᱵᱮᱵᱷᱟᱨ ᱢᱮ
     index:
       title: ᱵᱮᱵᱷᱟᱨᱤᱡ ᱠᱚᱣᱟ ᱰᱟᱭᱨᱤᱠᱚ
-      title_friends: ᱜᱟᱛᱮ ᱠᱚᱣᱟ ᱰᱟᱭᱨᱤᱠᱚ
       new: ᱱᱟᱶᱟ ᱰᱟᱭᱨᱤ ᱟᱫᱮᱨ
       my_diary: ᱤᱧᱭᱟᱜ ᱰᱟᱭᱨᱤ
       no_entries: ᱰᱟᱭᱨᱤ ᱟᱫᱮᱨᱠᱚ ᱵᱟᱹᱱᱩᱜ-ᱟ
@@ -248,14 +241,6 @@ sat:
       report: ᱱᱚᱶᱟ ᱚᱠᱛᱟ ᱨᱤᱯᱚᱴ ᱢᱮ
     location:
       location: 'ᱡᱟᱭᱜᱟ:'
-  diary_comments:
-    page:
-      when: ᱛᱤᱥ
-      comment: ᱚᱠᱛᱟ
-  friendships:
-    make_friend:
-      button: ᱜᱟᱛᱤ ᱞᱮᱠᱟ ᱥᱮᱞᱮᱫ ᱮᱢ
-      success: '%{name} ᱱᱤᱛᱚᱜ ᱫᱚ ᱟᱢᱨᱮᱱ ᱜᱟᱛᱮ ᱦᱚᱭ ᱱᱟ'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -607,7 +592,6 @@ sat:
       diary: ᱰᱟᱭᱨᱤ
       edits: ᱥᱟᱯᱲᱟᱣᱠᱚ
       notes: ᱱᱚᱠᱥᱟ ᱠᱷᱟᱴᱟᱹ ᱚᱞᱠᱚ
-      add as friend: ᱜᱟᱛᱮ ᱥᱮᱞᱮᱫᱮᱢ
       email address: 'ᱤᱢᱮᱞ ᱴᱷᱤᱠᱟᱹᱬᱟ:'
       status: 'ᱫᱚᱥᱟ:'
       comments: ᱚᱠᱛᱟᱠᱚ
@@ -616,6 +600,10 @@ sat:
       show:
         title: ᱵᱮᱵᱦᱟᱨᱤᱡᱽᱠᱩ
         heading: ᱵᱮᱵᱦᱟᱨᱤᱡᱽᱠᱩ
+    changeset_comments:
+      page:
+        when: ᱛᱤᱥ
+        comment: ᱚᱠᱛᱟ
   user_blocks:
     show:
       status: ᱫᱚᱥᱟ
index 23101155233c2ad66c28324e0986dec8c70064ca..11de24943beb48040556bfeb572c838cccfc027d 100644 (file)
@@ -247,14 +247,6 @@ sc:
       external auth: Autenticatzione esterna
       openid:
         link text: ite est custu?
-      public editing:
-        heading: Modificatzione pùblica
-        enabled: Abilitada. No anònimu e podet modificare datos.
-        enabled link: https://wiki.openstreetmap.org/wiki/Sc:Anonymous_edits
-        enabled link text: ite est custu?
-        disabled: Inabilitadu e chene permissu de mudare sos datos; totu sas modìficas
-          antepostas sunt anònimas.
-        disabled link text: pro ite non potzo fàghere modìficas?
       contributor terms:
         heading: Règulas po contribuire
         agreed: As atzetadu sos tèrmines noos de collaboratzione.
@@ -347,6 +339,9 @@ sc:
           france: Frantza
           italy: Itàlia
           rest_of_world: Restu de su mundu
+      update:
+        terms accepted: Ti torramus gràtzias pro àere atzetadu sas cunditziones noas
+          de collaboratzione.
       terms_declined_flash:
         terms_declined_html: Nos dipraghet chi apas isseberadu de no atzetare sos
           tèrmines de contributzione noos. Pro àteras informatziones pòmpia·ti %{terms_declined_link}.
@@ -464,7 +459,6 @@ sc:
       title: Annantos de modìficas
       title_user: Annantos de modìficas de %{user}
       title_user_link_html: Annantos de modìficas de %{user_link}
-      title_friend: Annantos de modìficas de sos amigos meos
       title_nearby: Annantos de modìficas de utentes a curtzu
       empty: Perunu annantu de modìficas agatadu.
       empty_area: Perunu grupu de modìficas in custa àrea.
@@ -516,19 +510,14 @@ sc:
     popup:
       your location: Sa positzione tua
       nearby mapper: Mapadore a curtzu
-      friend: Amigu
     show:
       title: Su pannellu de controllu meu
       no_home_location_html: '%{edit_profile_link} e imposta sa positzione de domo
         tua pro bìdere sos utentes a curtzu.'
       edit_your_profile: Modìfica su profilu tuo
-      my friends: Amigos meos
-      no friends: No as galu annantu perunu amigu.
       nearby users: Àteros utentes a curtzu
       no nearby users: Non b'at perunu àteru utente chi ammitat de mapare a curtzu
         a inoghe.
-      friends_changesets: annantos de modìficas de sos amigos
-      friends_diaries: intradas de diàriu de sos amigos
       nearby_changesets: annantos de modìficas de utentes a curtzu
       nearby_diaries: intradas de diàriu de utentes a curtzu
   diary_entries:
@@ -539,7 +528,6 @@ sc:
       use_map_link: Imprea sa mapa
     index:
       title: Diàrios de sos utentes
-      title_friends: Diàrios de sos amigos
       title_nearby: Diàrios de sos utentes a curtzu
       user_title: Diàriu de %{user}
       in_language_title: Intradas de diàriu in %{language}
@@ -596,16 +584,6 @@ sc:
       all:
         title: Intradas de diàriu de OpenStreetMap
         description: Intradas de diàriu reghentes de sos utentes de OpenStreetMap
-  diary_comments:
-    index:
-      title: Cummentos de su diàriu annantos dae %{user}
-      heading: Cummentos de su diàriu de %{user}
-      subheading_html: Cummentos de su diàriu annantos dae %{user}
-      no_comments: Perunu cummentu a su diàriu
-    page:
-      post: Publicatzione
-      when: Cando
-      comment: Cummentu
   doorkeeper:
     errors:
       messages:
@@ -659,20 +637,6 @@ sc:
       title: Documentu no agatadu
       description: No at fatu a agatare unu documentu/cartella/operatzione API cun
         custu nùmene in de su serbidore de OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Annànghere %{user} a sos amigos?
-      button: Annanghe a sos amigos
-      success: '%{name} como est amigu tuo!'
-      failed: Annanta de %{name} a sos amigos fallida.
-      already_a_friend: Ses giai amigu de %{name}.
-      limit_exceeded: In custu ùrtimu perìodu as annantu utentes medas a sos amigos
-        tuos. Iseta unu pagu in antis de proare a nde annànghere àteros.
-    remove_friend:
-      heading: Bogare %{user} dae sos amigos?
-      button: Boga dae sos amigos
-      success: '%{name} est istadu bogadu dae sos amigos tuos.'
-      not_a_friend: '%{name} no est unu de sos amigos tuos.'
   geocoder:
     search:
       title:
@@ -1608,14 +1572,10 @@ sc:
         messàgiu a s'autore in %{replyurl}
       footer_html: Podes lèghere su messàgiu fintzas in %{readurl} e podes imbiare
         unu messàgiu a s'autore in %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Salude %{to_user},
-      subject: '[OpenStreetMap] %{user} t''at annantu a sa lista de amigos'
-      had_added_you: '%{user} t''at annantu comente a amigu in OpenStreetMap.'
       see_their_profile: Podes bìdere su profilu suo in %{userurl}.
       see_their_profile_html: Podes bìdere su profilu suo in %{userurl}.
-      befriend_them: Lu podes fintzas annànghere comente amigu in %{befriendurl}.
-      befriend_them_html: Lu podes fintzas annànghere comente amigu in %{befriendurl}.
     gpx_failure:
       hi: Salude %{to_user},
       failed_to_import: 'non si podet importare. Sa faddina est istada:'
@@ -1766,11 +1726,13 @@ sc:
       wrong_user: Ti ses autenticadu comente `%{user}', ma su messàgiu chi as pedidu
         de pòdere lèghere no est istadu imbiadu a cussu utente. Faghe s'atzessu comente
         s'utente curretu pro lu lèghere.
-    mark:
-      as_read: Messàgiu marcadu comente lèghidu
-      as_unread: Messàgiu marcadu comente non lèghidu
     destroy:
       destroyed: Messàgiu iscantzelladu
+    read_marks:
+      create:
+        notice: Messàgiu marcadu comente lèghidu
+      destroy:
+        notice: Messàgiu marcadu comente non lèghidu
     mailboxes:
       heading:
         my_inbox: Posta in intrada mea
@@ -2511,13 +2473,14 @@ sc:
       heading: Archiviatzione GPX non in lìnia
       message: Su sistema de archiviatzione e carrigamentu de archìvios GPX no est
         a disponimentu in custu momentu.
-    georss:
-      title: Rastas GPS de OpenStreetMap
-    description:
-      description_with_count:
-        one: archìviu GPX cun %{count} puntu de %{user}
-        other: archìviu GPX cun %{count} puntos de %{user}
-      description_without_count: Archìviu GPX de %{user}
+    feeds:
+      show:
+        title: Rastas GPS de OpenStreetMap
+      description:
+        description_with_count:
+          one: archìviu GPX cun %{count} puntu de %{user}
+          other: archìviu GPX cun %{count} puntos de %{user}
+        description_without_count: Archìviu GPX de %{user}
   application:
     permission_denied: Non tenes su permissu pro atzèdere a custa atzione
     require_cookies:
@@ -2648,8 +2611,6 @@ sc:
         privacy_policy_title: Informativa subra de sa riservadesa de sa Fundatzione
           OSM chi incluet sa setzione subra de sos indiritzos de posta eletrònica
       continue: Iscrie·ti
-      terms accepted: Ti torramus gràtzias pro àere atzetadu sas cunditziones noas
-        de collaboratzione.
       email_help:
         html: S'indiritzu tuo no est ammustradu in manera pùblica, consulta sa %{privacy_policy_link}
           pro àteras informatziones.
@@ -2679,8 +2640,6 @@ sc:
       edits: Modìficas
       traces: Rastas
       notes: Notas de sa mapa
-      remove as friend: Boga dae sos amigos
-      add as friend: Annanghe comente amigu
       mapper since: 'Mapadore dae su:'
       uid: 'ID utente:'
       ct status: 'Tèrmines de collaboratzione:'
@@ -2739,6 +2698,15 @@ sc:
       user:
         summary_html: '%{name} creadu dae %{ip_address} su %{date}'
         summary_no_ip_html: '%{name} creadu su %{date}'
+    changeset_comments:
+      page:
+        when: Cando
+        comment: Cummentu
+    diary_comments:
+      index:
+        title: Cummentos de su diàriu annantos dae %{user}
+      page:
+        post: Publicatzione
     suspended:
       title: Contu suspesu
       heading: Contu suspesu
index 5231dfd9e5b7b016f307d18a5ee73fe779434ccf..6258090a2a0fb142acf7d8626bd66e75706f733f 100644 (file)
@@ -220,13 +220,6 @@ scn:
       openid:
         link: http://wiki.openstreetmap.org/wiki/OpenID
         link text: zoccu è chissu?
-      public editing:
-        heading: Canciu pùbblicu
-        enabled: Abbilitati. Senza anònimu e cû pirmisu pi canciari i dati.
-        enabled link text: zoccu è chissu?
-        disabled: Disabbilitati e senza u pirmisu pi canciari i dati, tutti i canci
-          d’avanti sunnu anònimi.
-        disabled link text: picchì nun pozzu fari canci?
       contributor terms:
         heading: Règuli pî cuntribbuti
         agreed: Accittasti i règuli pî cuntribbuti novi.
@@ -267,6 +260,9 @@ scn:
           france: Francia
           italy: Italia
           rest_of_world: Restu dû munnu
+      update:
+        terms accepted: T'arringrazziamu d'aviri accittatu li cunnizzioni di cuntribbuzzioni
+          novi!
       terms_declined_flash:
         terms_declined_link: sta pàggina wiki
   browse:
@@ -367,7 +363,6 @@ scn:
     index:
       title: Gruppi di canciamenti
       title_user: Gruppi di canciamenti di %{user}
-      title_friend: Gruppi di canciamenti dî tò amici
       title_nearby: Gruppi di canciamenti di l'utenti vicini
       empty: Nuḍḍu gruppu di canciamenti attruvatu.
       empty_area: Nuḍḍu gruppu di canciamenti nta st’ària.
@@ -411,16 +406,11 @@ scn:
     popup:
       your location: La tò pusizzioni
       nearby mapper: Mappaturi vicinu
-      friend: Amicu
     show:
       edit_your_profile: Cancia lu tò prufilu
-      my friends: Li mè amici
-      no friends: Ancora nun agghiuncisti nuḍḍu amicu.
       nearby users: Àutri utenti vicinu
       no nearby users: Ancora nun ci sunnu àutri utenti chi si dichiàranu mappatura
         ccà vicinu.
-      friends_changesets: gruppa di canciamenti di l'amici
-      friends_diaries: vuci dî diarî di l'amici
       nearby_changesets: gruppa di canciamenti di l'utenti vicini
       nearby_diaries: vuci dî diarî di l'utenti vicini
   diary_entries:
@@ -431,7 +421,6 @@ scn:
       use_map_link: Usa la cartina
     index:
       title: Diarî di l'utenti
-      title_friends: Diarî di l'amici
       title_nearby: Diarî di l'utenti vicini
       user_title: Diariu di %{user}
       in_language_title: Vuci dô diariu n %{language}
@@ -483,23 +472,6 @@ scn:
       all:
         title: Vuci dû diariu d'OpenStreetMap
         description: Vuci ricenti dû diariu di l'utenti d'OpenStreetMap
-  diary_comments:
-    page:
-      post: Missaggiu
-      when: Quannu
-      comment: Cummentu
-  friendships:
-    make_friend:
-      heading: Agghiùnciri a %{user} comu amicu?
-      button: Agghiunci comu amicu
-      success: Ora %{name} è amicu tò!
-      failed: Purtroppu la junta di %{name} comu amicu nun arriniscìu.
-      already_a_friend: Già siti amici cu %{name}.
-    remove_friend:
-      heading: Livari %{user} di l'amici?
-      button: Leva di l'amici
-      success: '%{name} fu livatu dî tò amici.'
-      not_a_friend: '%{name} nun è amicu tò.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1074,14 +1046,10 @@ scn:
         cu l''oggettu %{subject}:'
       footer_html: Poi lèggiri lu missaggiu macari nta %{readurl} e ci poi arrispùnniri
         di %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Salutamu %{to_user},
-      subject: '[OpenStreetMap] %{user} t''agghiuncìu comu amicu'
-      had_added_you: '%{user} t''agghiuncìu comu amicu nta OpenStreetMap.'
       see_their_profile: Poi taliari lu sò prufilu nta %{userurl}.
       see_their_profile_html: Poi taliari lu sò prufilu nta %{userurl}.
-      befriend_them: Lu poi macari agghiùnciri comu amicu nta %{befriendurl}.
-      befriend_them_html: Lu poi macari agghiùnciri comu amicu nta %{befriendurl}.
     gpx_failure:
       hi: Salutamu %{to_user},
       failed_to_import: 'nun arriniscìu a èssiri mpurtatu. Ccà c''è l''erruri:'
@@ -1199,11 +1167,13 @@ scn:
       back: Torna n arreri
       wrong_user: Trasisti comu «%{user}» pirò lu missaggiu chi vulivi lèggiri nun
         fu mannatu a dd'utenti. Pi favuri trasi comu l'utenti giustu pi putiri liggìrilu.
-    mark:
-      as_read: Missaggiu signatu comu già liggiutu
-      as_unread: Missaggiu marcatu comu di lèggiri
     destroy:
       destroyed: Missaggiu cancillatu
+    read_marks:
+      create:
+        notice: Missaggiu signatu comu già liggiutu
+      destroy:
+        notice: Missaggiu marcatu comu di lèggiri
     mailboxes:
       heading:
         my_inbox: La mè posta arrivata
@@ -1616,13 +1586,14 @@ scn:
       heading: Mimurizzazzioni dî GPX fora sirvizziu
       message: Lu sistema di mimurizzazzioni e carricamentu dî file GPX pi com'ora
         è fora sirvizziu.
-    georss:
-      title: Tracciati GPS d'OpenStreetMap
-    description:
-      description_with_count:
-        one: File GPX cu %{count} punti di %{user}
-        other: File GPX cu %{count} punti di %{user}
-      description_without_count: File GPX di %{user}
+    feeds:
+      show:
+        title: Tracciati GPS d'OpenStreetMap
+      description:
+        description_with_count:
+          one: File GPX cu %{count} punti di %{user}
+          other: File GPX cu %{count} punti di %{user}
+        description_without_count: File GPX di %{user}
   application:
     require_cookies:
       cookies_needed: Pari chi hai li cookie disattivati; pi favuri attìvali ntô tò
@@ -1680,8 +1651,6 @@ scn:
       display name description: Lu tò nomu d'utenti comu veni ammustratu pubblicamenti.
         Appoi lu poi canciari ntê prifirenzi.
       continue: Scrìviti
-      terms accepted: T'arringrazziamu d'aviri accittatu li cunnizzioni di cuntribbuzzioni
-        novi!
       use external auth: O puru, trasi pi menzu di na terza parti
     no_such_user:
       title: St'utenti nun c'è
@@ -1707,8 +1676,6 @@ scn:
       edits: Canciamenti
       traces: Tracciati
       notes: Noti dâ cartina
-      remove as friend: Leva di l'amici
-      add as friend: Agghiunci a l'amici
       mapper since: 'Mappaturi di:'
       ct status: 'Cunnizzioni di cuntribbuzzioni:'
       ct undecided: Nun dicisi
@@ -1760,6 +1727,13 @@ scn:
       user:
         summary_html: '%{name} criatu di %{ip_address} lu %{date}'
         summary_no_ip_html: '%{name} criatu lu %{date}'
+    changeset_comments:
+      page:
+        when: Quannu
+        comment: Cummentu
+    diary_comments:
+      page:
+        post: Missaggiu
     suspended:
       title: Cuntu suspinnutu
       heading: Cuntu suspinnutu
index ac1a0816872f6ed285b4b9d743cab89bc2803387..d3024c0db8e589f7ec6d7eae4ff7fb7618d72cb0 100644 (file)
@@ -180,7 +180,6 @@ sco:
     index:
       title: Chyngesets
       title_user: Chyngesets bi %{user}
-      title_friend: Chyngesets bi yer friends
       title_nearby: Chyngesets bi nearbi uisers
       empty: No chyngesets foond.
       empty_area: No chyngesets in this aurie.
@@ -218,7 +217,6 @@ sco:
       use_map_link: uise map
     index:
       title: Uisers' diaries
-      title_friends: Friends' diaries
       title_nearby: Nearbi Uisers' diaries
       user_title: '%{user}''s diary'
       in_language_title: Diary Entries in %{language}
@@ -268,11 +266,6 @@ sco:
       all:
         title: OpenStreetMap diary entries
         description: Recent diary entries frae uisers o OpenStreetMap
-  diary_comments:
-    page:
-      post: Post
-      when: When
-      comment: Comment
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -896,6 +889,13 @@ sco:
     show:
       edits: Edits
       created from: 'Made frae:'
+    changeset_comments:
+      page:
+        when: When
+        comment: Comment
+    diary_comments:
+      page:
+        post: Post
   notes:
     show:
       title: 'Note: %{id}'
index 44ce49f8c1e7a46dcdc24031567037009f259be3..7d4d9dfda7fe136ea5c00d14986514f18ca3c859 100644 (file)
@@ -185,13 +185,6 @@ sh:
       current email address: Trenutna adresa e-pošte
       openid:
         link text: šta je ovo?
-      public editing:
-        heading: Javno uređivanje
-        enabled: Omogućeno. Nije anonimno i mogu se uređivati podaci.
-        enabled link text: šta je ovo?
-        disabled: Onemogućeno i ne mogu se uređivati podaci, sve prethodne izmjene
-          su anonimne.
-        disabled link text: zašto ne mogu uređivati?
       contributor terms:
         heading: Uslovi za doprinosioce
         agreed: Prihvatili ste nove Uslove za doprinosioce.
@@ -254,7 +247,6 @@ sh:
       title: Setovi promjena
       title_user: Setovi promjena od %{user}
       title_user_link_html: Setovi promjena od %{user_link}
-      title_friend: Promjene mojih prijatelja
       title_nearby: Promjene obližnjih korisnika
     show:
       discussion: Razgovor
@@ -267,7 +259,6 @@ sh:
       use_map_link: Koristi kartu
     index:
       title: Dnevnici korisnika
-      title_friends: Dnevnici prijatelja
       title_nearby: Dnevnici obližnjih članova
       user_title: Dnevnik korisnika %{user}
       in_language_title: 'Zapisi u dnevniku na jeziku: %{language}'
@@ -335,20 +326,6 @@ sh:
       title: Datoteka nije pronađena
       description: Nije moguće pronaći operaciju za datoteku/direktorij/priložnik
         pod im imenom na poslužitelju OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Dodati %{user} kao prijatelja?
-      button: Dodaj kao prijatelja
-      success: '%{name} je sada vaš prijatelj!'
-      failed: Žao mi je, nije uspjelo dodavanje %{name} kao prijatelja.
-      already_a_friend: Već ste prijatelj sa %{name}.
-      limit_exceeded: Nedavno ste se sprijateljili s mnogo korisnika. Molimo sačekajte
-        neko vrijeme, prije nego što se više pokušate sprijateljiti.
-    remove_friend:
-      heading: Ukloniti %{user} iz prijatelja?
-      button: Ukloniti prijatelja
-      success: '%{name} je uklonjen iz prijatelja.'
-      not_a_friend: '%{name} nije vaš prijatelj.'
   geocoder:
     search_osm_nominatim:
       prefix:
index b4b5ce78f81f54d6472682eca82093d418766262..7f975badcd89d5609a4f69a71e4fe0c27cf3aa2a 100644 (file)
@@ -293,13 +293,6 @@ sk:
       openid:
         link: http://wiki.openstreetmap.org/wiki/CS:OpenID
         link text: čo to znamená?
-      public editing:
-        heading: Verejné editácie
-        enabled: Zapnuté. Nie je anonym a môže upravovať údaje.
-        enabled link text: čo to znamená?
-        disabled: Vypnutý a nemôže upravovať údaje, všetky predchádzajúce úpravy sú
-          anonymné.
-        disabled link text: prečo nemôžem upravovať?
       contributor terms:
         heading: Podmienky prispievania
         agreed: Súhlasili ste s novými Podmienkami prispievania.
@@ -375,6 +368,8 @@ sk:
           france: Francúzsko
           italy: Taliansko
           rest_of_world: Zvyšok sveta
+      update:
+        terms accepted: Ďakujeme za odsúhlasenie nových podmienok prispievania!
       terms_declined_flash:
         terms_declined_link: tejto wiki stránke
   browse:
@@ -509,7 +504,6 @@ sk:
       title: Sady zmien
       title_user: Sady zmien používateľa %{user}
       title_user_link_html: Sady zmien od %{user_link}
-      title_friend: Sady zmien vašich priateľov
       title_nearby: Sady zmien používateľov v okolí
       empty: Neboli nájdené žiadne sady zmien.
       empty_area: V tejto oblasti neexistujú žiadne sady zmien.
@@ -524,19 +518,6 @@ sk:
         created: Vytvorené
         closed: Uzavreté
         belongs_to: Autor
-    subscribe:
-      heading: Prihlásiť sa na odber nasledujúcej diskusie o zmenách?
-      button: Odoberať diskusiu
-    unsubscribe:
-      heading: Odhlásiť sa z odberu nasledujúcej diskusie o zmenách?
-      button: Zrušiť odber diskusie
-    heading:
-      title: Sada zmien %{id}
-      created_by_html: Vytvoril %{link_user} dňa %{created}.
-    no_such_entry:
-      heading: 'Žiadna položka s ID: %{id}'
-      body: Ľutujeme, neexistuje žiadna sada zmien s ID %{id}. Skontrolujte si pravopis,
-        alebo možno je odkaz, na ktorý ste klikli, nesprávny.
     show:
       title: 'Sada zmien: %{id}'
       created: 'Vytvorená: %{when}'
@@ -567,6 +548,21 @@ sk:
       relations_paginated: Relácie (%{x}–%{y} z %{count})
     timeout:
       sorry: Ľutujeme, ale vami požadovaný zoznam sád zmien sa načítaval príliš dlho.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Prihlásiť sa na odber nasledujúcej diskusie o zmenách?
+        button: Odoberať diskusiu
+      unsubscribe:
+        heading: Odhlásiť sa z odberu nasledujúcej diskusie o zmenách?
+        button: Zrušiť odber diskusie
+    heading:
+      title: Sada zmien %{id}
+      created_by_html: Vytvoril %{link_user} dňa %{created}.
+    no_such_entry:
+      heading: 'Žiadna položka s ID: %{id}'
+      body: Ľutujeme, neexistuje žiadna sada zmien s ID %{id}. Skontrolujte si pravopis,
+        alebo možno je odkaz, na ktorý ste klikli, nesprávny.
   dashboards:
     contact:
       km away: vzdialený %{count}km
@@ -575,18 +571,13 @@ sk:
     popup:
       your location: Vaša poloha
       nearby mapper: Používateľ v okolí
-      friend: Priateľ
     show:
       title: Moja nástenka
       no_home_location_html: '%{edit_profile_link} a nastavte svoju domovskú polohu,
         aby ste mohli vidieť používateľov vo vašom okolí.'
       edit_your_profile: Upraviť váš profil
-      my friends: Moji priatelia
-      no friends: Ešte nemáte pridaných žiadnych priateľov.
       nearby users: Ďalší používatelia v okolí
       no nearby users: Nie je tu iný používateľ, ktorý priznáva mapovanie v okolí.
-      friends_changesets: Prechádzať všetky sady zmien priateľov
-      friends_diaries: Prechádzať všetky denníkové záznamy priateľov
       nearby_changesets: Prechádzať všetky sady zmien používateľov v okolí
       nearby_diaries: Prechádzať všetky denníkové záznamy používateľov v okolí
   diary_entries:
@@ -597,7 +588,6 @@ sk:
       use_map_link: Použiť mapu
     index:
       title: Denníky používateľov
-      title_friends: Denníky priateľov
       title_nearby: Denníky používateľov v okolí
       user_title: Denník používateľa %{user}
       in_language_title: Záznamy denníka v jazyku %{language}
@@ -664,16 +654,6 @@ sk:
       button: Odoberať diskusiu
     unsubscribe:
       button: Zrušiť odber diskusie
-  diary_comments:
-    index:
-      title: Komentáre k denníkom pridané používateľom %{user}
-      heading: Komentáre v denníku používateľa %{user}
-      subheading_html: Komentáre v denníku pridané používateľom %{user}
-      no_comments: Žiadne komentáre k denníku
-    page:
-      post: Príspevok
-      when: Kedy
-      comment: Komentár
   doorkeeper:
     flash:
       applications:
@@ -705,20 +685,6 @@ sk:
       title: Súbor nenájdený
       description: Nepodarilo sa nájsť súbor/adresár/operáciu API s týmto názvom na
         serveri OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Pridať používateľa %{user} ako priateľa?
-      button: Pridať ako priateľa
-      success: '%{name} je teraz váš priateľ!'
-      failed: Ľutujeme, nepodarilo sa pridať %{name} ako priateľa.
-      already_a_friend: Ste už priatelia s %{name}.
-      limit_exceeded: V poslednej dobe ste pridali veľa priateľov. Pred nastavením
-        ďalších priateľov prosím chvíľu počkajte.
-    remove_friend:
-      heading: Odobrať používateľa %{user} zo zoznamu priateľov?
-      button: Odobrať z priateľov
-      success: '%{name} bol z vašich priateľov vymazaný.'
-      not_a_friend: '%{name} nie je nikto z vašich priateľov.'
   geocoder:
     search:
       title:
@@ -1655,14 +1621,10 @@ sk:
         na %{replyurl}
       footer_html: Správu si môžete prečítať aj na %{readurl} a môžete odpovedať autorovi
         na %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Ahoj %{to_user},
-      subject: '[OpenStreetMap] %{user} vás pridal ako priateľa'
-      had_added_you: '%{user} vás pridal ako priateľa na OpenStreetMap.'
       see_their_profile: Jeho/jej profil si môžete pozrieť na %{userurl}.
       see_their_profile_html: Jeho/jej profil si môžete pozrieť na %{userurl}.
-      befriend_them: Môžete ich tiež pridať ako priateľov na %{befriendurl}.
-      befriend_them_html: Môžete ho/ju tiež pridať ako priateľov na %{befriendurl}.
     gpx_failure:
       hi: Ahoj %{to_user},
       failed_to_import: 'sa nepodarilo naimportovať. Chybové hlásenie:'
@@ -1808,14 +1770,17 @@ sk:
       wrong_user: Ste prihlásený ako „%{user}“, ale správa, ktorú si chcete prečítať,
         nie je ani od, ani pre tohoto používateľa. Ak si ju chcete prečítať, prihláste
         sa pod príslušným kontom.
-    mark:
-      as_read: Správa označená ako prečítaná
-      as_unread: Správa označená ako neprečítaná
-    unmute:
-      notice: Správa bola presunutá do doručenej pošty
-      error: Správa nemohla byť presunutá do doručenej pošty.
     destroy:
       destroyed: Správa vymazaná
+    read_marks:
+      create:
+        notice: Správa označená ako prečítaná
+      destroy:
+        notice: Správa označená ako neprečítaná
+    mutes:
+      destroy:
+        notice: Správa bola presunutá do doručenej pošty
+        error: Správa nemohla byť presunutá do doručenej pošty.
     mailboxes:
       heading:
         my_inbox: Doručená pošta
@@ -2485,10 +2450,11 @@ sk:
     offline:
       heading: GPX úložisko je offline
       message: GPX úložisko a nahrávanie GPX súborov je momentálne nedostupné.
-    georss:
-      title: OpenStreetMap GPS Stopy
-    description:
-      description_without_count: GPX súbor od používateľa %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS Stopy
+      description:
+        description_without_count: GPX súbor od používateľa %{user}
   application:
     permission_denied: Nemáte oprávnenie na prístup k tejto akcii
     require_cookies:
@@ -2618,7 +2584,6 @@ sk:
           o e-mailových adresách
         contributor_terms: Podmienky prispievania
       continue: Zaregistrujte sa
-      terms accepted: Ďakujeme za odsúhlasenie nových podmienok prispievania!
       email_help:
         html: Vaša adresa sa nezobrazuje verejne, pre ďalšie informácie venujte pozornosť
           našim %{privacy_policy_link}.
@@ -2653,8 +2618,6 @@ sk:
       edits: Úpravy
       traces: Stopy
       notes: Poznámky k mape
-      remove as friend: Odstrániť z priateľov
-      add as friend: Pridať priateľa
       mapper since: 'Mapuje od:'
       last map edit: 'Posledná úprava mapy:'
       no activity yet: Zatiaľ žiadna aktivita
@@ -2715,6 +2678,15 @@ sk:
       user:
         summary_html: '%{name} založené %{date} z %{ip_address}'
         summary_no_ip_html: '%{name} založený %{date}'
+    changeset_comments:
+      page:
+        when: Kedy
+        comment: Komentár
+    diary_comments:
+      index:
+        title: Komentáre k denníkom pridané používateľom %{user}
+      page:
+        post: Príspevok
     suspended:
       title: Konto bolo pozastavené
       heading: Konto bolo pozastavené
index eb3b384c03f67a553b2c0a29fc0b3e97f748c607..1c8284a7808593031340c6cac40a781202412dea 100644 (file)
@@ -162,10 +162,6 @@ skr-arab:
       external auth: باہرلی تصدیق
       openid:
         link text: ایہ کیا ہے؟
-      public editing:
-        heading: عوامی تبدیلیاں
-        enabled link text: ایہ کیا ہے؟
-        disabled link text: میں تبدیلی کیوں کائنی کر سڳداں؟
       contributor terms:
         link text: ایہ کیا ہے؟
       save changes button: تبدیلیاں محفوظ کرو
@@ -271,11 +267,9 @@ skr-arab:
       m away: '%{count} میٹر دور'
     popup:
       your location: تہاݙا مقام
-      friend: دوست
     show:
       title: میݙا ڈیش بورڈ
       edit_your_profile: آپݨی پروفائل وچ تبدیلی کرو
-      my friends: میݙے یار
   diary_entries:
     form:
       location: محل وقوع
@@ -303,11 +297,6 @@ skr-arab:
       confirm: تصدیق
     location:
       location: 'محل وقوع:'
-  diary_comments:
-    page:
-      post: پوسٹ
-      when: کڈݨ
-      comment: رائے
   doorkeeper:
     scopes:
       email: آپݨاں ای میل پتہ ݙیکھو
@@ -1009,7 +998,7 @@ skr-arab:
       hi: سلام %{to_user}،
     message_notification:
       hi: سلام %{to_user}،
-    friendship_notification:
+    follow_notification:
       hi: سلام %{to_user}،
     gpx_details:
       filename: 'فائل ناں:'
@@ -1338,6 +1327,15 @@ skr-arab:
       my profile: میݙی پروفائل
       my settings: میݙیاں ترتیباں
       my comments: میݙے تبصرے
+    changeset_comments:
+      page:
+        when: کڈݨ
+        comment: رائے
+    diary_comments:
+      page:
+        post: پوسٹ
+        when: کݙݨ
+        comment: تبصرہ
   user_blocks:
     edit:
       revoke: بلاک منسوخ کرو
index 118b6355051bb6126ce238d02b5af87eccb8ec82..9aa4e06547f1ba67944d6ffef8541819af2de340 100644 (file)
@@ -287,13 +287,6 @@ sl:
       external auth: Zunanja avtentikacija
       openid:
         link text: kaj je to?
-      public editing:
-        heading: Javno urejanje
-        enabled: Omogočeno. Niste anonimni in lahko urejate podatke.
-        enabled link text: Kaj je to?
-        disabled: Onemogočeno in ne morete urejati podatkov. Vsi vaši prejšnji prispevki
-          so anonimni.
-        disabled link text: Zakaj ne morem urejati?
       contributor terms:
         heading: Pogoji sodelovanja
         agreed: Sprejeli ste nove pogoje sodelovanja.
@@ -372,7 +365,6 @@ sl:
         readable_summary: človeško berljiv povzetek
         informal_translations: neuradnih prevodov
         continue: Nadaljuj
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
         cancel: Prekliči
         you need to accept or decline: Prosimo, preberite in nato sprejmite ali odklonite
           nove Pogoje za sodelovanje.
@@ -381,6 +373,8 @@ sl:
           france: Francija
           italy: Italija
           rest_of_world: Ostali svet
+      update:
+        terms accepted: Hvala za sprejem novih pogojev prispevanja!
       terms_declined_flash:
         terms_declined_html: Žal nam je, da ste se odločili, da ne sprejmete novih
           pogojev za sodelavce. Za več informacij glejte %{terms_declined_link}.
@@ -517,7 +511,6 @@ sl:
       title: Sklopi sprememb
       title_user: Sklopi sprememb od %{user}
       title_user_link_html: Sklopi sprememb uporabnika_ce %{user_link}
-      title_friend: Množice sprememb mojih prijateljev
       title_nearby: Sklopi sprememb bližnjih uporabnikov
       empty: Ni najdenih množic sprememb.
       empty_area: Na tem območju ni naborov sprememb.
@@ -532,19 +525,6 @@ sl:
         created: Ustvarjeno
         closed: Zaprto
         belongs_to: Avtor
-    subscribe:
-      heading: Se želite prijaviti na naslednjo razprave o naboru sprememb?
-      button: Prijava na razpravo
-    unsubscribe:
-      heading: Se želite odjaviti od naslednje razprave o naboru sprememb?
-      button: Odjava od razprave
-    heading:
-      title: Nabor sprememb %{id}
-      created_by_html: Ustvaril %{link_user} dne %{created}.
-    no_such_entry:
-      heading: Zapisa z id-jem %{id} ni
-      body: Oprostite, nabora sprememb z oznako %{id} ni. Prosimo, preverite črkovanje
-        in povezavo, ki ste jo kliknili.
     show:
       title: 'Nabor sprememb: %{id}'
       created: 'Ustvarjeno: %{when}'
@@ -575,6 +555,21 @@ sl:
       relations_paginated: Zveze (%{x}-%{y} od %{count})
     timeout:
       sorry: Žal je trajalo pridobivanje zahtevanega nabora sprememb predolgo.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Se želite prijaviti na naslednjo razprave o naboru sprememb?
+        button: Prijava na razpravo
+      unsubscribe:
+        heading: Se želite odjaviti od naslednje razprave o naboru sprememb?
+        button: Odjava od razprave
+    heading:
+      title: Nabor sprememb %{id}
+      created_by_html: Ustvaril %{link_user} dne %{created}.
+    no_such_entry:
+      heading: Zapisa z id-jem %{id} ni
+      body: Oprostite, nabora sprememb z oznako %{id} ni. Prosimo, preverite črkovanje
+        in povezavo, ki ste jo kliknili.
   dashboards:
     contact:
       km away: oddaljen %{count} km
@@ -583,19 +578,14 @@ sl:
     popup:
       your location: Vaša lokacija
       nearby mapper: Bližnji kartograf
-      friend: Prijatelj
     show:
       title: Moja nadzorna plošča
       no_home_location_html: '%{edit_profile_link} in nastavite svojo domačo lokacijo
         za prikaz bližnjih uporabnikov.'
       edit_your_profile: Uredite svoj profil
-      my friends: Moji prijatelji
-      no friends: Niste še dodali nobenih prijateljev.
       nearby users: Drugi bližnji uporabniki
       no nearby users: Ni drugih uporabnikov, ki bi sporočili, da kartirajo v vaši
         bližini.
-      friends_changesets: sklopi sprememb prijateljev
-      friends_diaries: dnevniki prijateljev
       nearby_changesets: sklopi sprememb bližnjih uporabnikov
       nearby_diaries: dnevniški vnosi bližnjih uporabnikov
   diary_entries:
@@ -606,7 +596,6 @@ sl:
       use_map_link: Uporabi zemljevid
     index:
       title: Dnevniki uporabnikov
-      title_friends: Dnevniki vaših prijateljev
       title_nearby: Dnevniki bližnjih uporabnikov
       user_title: Dnevnik uporabnika %{user}
       in_language_title: Dnevniški zapisi v jeziku %{language}
@@ -665,16 +654,6 @@ sl:
       all:
         title: Dnevniški zapisi OpenStreetMap
         description: Nedavni dnevniški zapisi uporabnikov OpenStreetmap
-  diary_comments:
-    index:
-      title: Dnevniški komentarji, ki jih je dodal_a %{user}
-      heading: Dnevniški komentarji %{user}
-      subheading_html: Dnevniški komentarji, ki jih je dodal_a %{user}
-      no_comments: Brez dnevniških komentarjev
-    page:
-      post: Objavi
-      when: Kdaj
-      comment: Komentar
   doorkeeper:
     errors:
       messages:
@@ -725,20 +704,6 @@ sl:
       title: Datoteka ni bila najdena
       description: Datoteke/imenika/API-operacije s tem imenom v strežniku OpenStreetMap
         ni bilo mogoče najti (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Dodaj %{user} med prijatelje?
-      button: Dodaj prijatelja
-      success: '%{name} je sedaj vaš prijatelj!'
-      failed: Oprostite, uporabnika %{name} ni bilo mogoče dodati med prijatelje.
-      already_a_friend: Z uporabnikom %{name} sta že prijatelja.
-      limit_exceeded: V kratkem času ste se spoprijateljili s številnimi uporabniki.
-        Prosimo, nekoliko počakajte, preden dodate nove prijatelje.
-    remove_friend:
-      heading: Odstrani %{user} iz prijateljev?
-      button: Odstrani prijatelja
-      success: Uporabnika %{name} ste odstranili izmed svojih prijateljev.
-      not_a_friend: Uporabnika %{name} ni med vašimi prijatelji.
   geocoder:
     search:
       title:
@@ -1673,14 +1638,10 @@ sl:
         %{replyurl}
       footer_html: Lahko tudi preberete sporočilo na %{readurl} in lahko odgovorite
         na %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Pozdravljeni, %{to_user},
-      subject: '[OpenStreetMap] %{user} vas je dodal med prijatelje'
-      had_added_you: '%{user} vas je dodal med prijatelje na OpenStreetMap.'
       see_their_profile: Njegov profil si lahko ogledate na %{userurl}.
       see_their_profile_html: Njegov profil si lahko ogledate na %{userurl}.
-      befriend_them: Lahko ga tudi dodate kot prijatelja na %{befriendurl}.
-      befriend_them_html: Lahko ga tudi dodate kot prijatelja na %{befriendurl}.
     gpx_failure:
       hi: Pozdravljeni, %{to_user},
       failed_to_import: ' vsebovala neko napako, zaradi katere je ni bilo mogoče uvoziti.
@@ -1830,14 +1791,17 @@ sl:
       back: Nazaj
       wrong_user: Prijavljeni ste kot '%{user}', ampak sporočilo, ko ga \elite prebrati
         ni bilo poslano vam. Prosimo, prijavite se, kot pravi uporabnik za branje.
-    mark:
-      as_read: Sporočilo označeno kot prebrano
-      as_unread: Sporočilo označeno kot neprebrano
-    unmute:
-      notice: Sporočilo je bilo prestavljeno v mapo »Prejeto«.
-      error: Sporočila ni bilo mogoče premakniti v mapo »Prejeto«.
     destroy:
       destroyed: Sporočilo izbrisano
+    read_marks:
+      create:
+        notice: Sporočilo označeno kot prebrano
+      destroy:
+        notice: Sporočilo označeno kot neprebrano
+    mutes:
+      destroy:
+        notice: Sporočilo je bilo prestavljeno v mapo »Prejeto«.
+        error: Sporočila ni bilo mogoče premakniti v mapo »Prejeto«.
     mailboxes:
       heading:
         my_inbox: Prejeta pošta
@@ -2595,14 +2559,15 @@ sl:
     offline:
       heading: GPX-sistem trenutno ni dostopen.
       message: Sistem za nalaganje GPX-datotek in GPX-sistem trenutno nista na voljo.
-    georss:
-      title: OpenStreetMap-sledi GPS
-    description:
-      description_with_count:
-        one: Datoteka GPX z %{count} točko uporabnika %{user}
-        two: Datoteka GPX z %{count} točkama uporabnika %{user}
-        other: Datoteka GPX z %{count} točkami uporabnika %{user}
-      description_without_count: Datoteka GPX uporabnika %{user}
+    feeds:
+      show:
+        title: OpenStreetMap-sledi GPS
+      description:
+        description_with_count:
+          one: Datoteka GPX z %{count} točko uporabnika %{user}
+          two: Datoteka GPX z %{count} točkama uporabnika %{user}
+          other: Datoteka GPX z %{count} točkami uporabnika %{user}
+        description_without_count: Datoteka GPX uporabnika %{user}
   application:
     permission_denied: Za dostop do tega dejanja nimate dovoljenja.
     require_cookies:
@@ -2740,7 +2705,6 @@ sl:
           e-poštnih naslovih
         contributor_terms: pogoji sodelovanja
       continue: Registracija
-      terms accepted: Hvala za sprejem novih pogojev prispevanja!
       email_help:
         privacy_policy: pravilnik o zasebnosti
         privacy_policy_title: Pravilnik o zasebnosti OSMF, vključno z razdelkom o
@@ -2777,8 +2741,6 @@ sl:
       edits: Prispevki
       traces: Sledi
       notes: Opombe na zemljevidu
-      remove as friend: Odstrani prijatelja
-      add as friend: Dodaj med prijatelje
       mapper since: 'Kartograf od:'
       uid: 'ID uporabnika:'
       ct status: 'Pogoji sodelovanja:'
@@ -2850,6 +2812,15 @@ sl:
       user:
         summary_html: '%{name} ustvarjen iz %{ip_address} dne %{date}'
         summary_no_ip_html: '%{name} ustvarjen dne %{date}'
+    changeset_comments:
+      page:
+        when: Kdaj
+        comment: Komentar
+    diary_comments:
+      index:
+        title: Dnevniški komentarji, ki jih je dodal_a %{user}
+      page:
+        post: Objavi
     suspended:
       title: Račun zaklenjen
       heading: Račun zaklenjen
@@ -3107,13 +3078,13 @@ sl:
       hotosm_name: Humanitarna ekipa OpenStreetMap
     site:
       edit_tooltip: Urejanje zemljevida
-      edit_disabled_tooltip: Približajte za urejanje zemljevida
+      edit_disabled_tooltip: Približaj za urejanje zemljevida
       createnote_tooltip: Dodaj opombo na zemljevid
       createnote_disabled_tooltip: Približajte za dodajanje opomb na zemljevid
-      map_notes_zoom_in_tooltip: Približajte za ogled opomb zemljevida
-      map_data_zoom_in_tooltip: Približajte za ogled podatkov zemljevida
+      map_notes_zoom_in_tooltip: Približaj za ogled opomb zemljevida
+      map_data_zoom_in_tooltip: Približaj za ogled podatkov zemljevida
       queryfeature_tooltip: Preveri značilnosti
-      queryfeature_disabled_tooltip: Približajte za preverjanje značilnosti
+      queryfeature_disabled_tooltip: Približaj za preverjanje značilnosti
       embed_html_disabled: Za ta sloj zemljevida vdelava HTML ni na voljo
     edit_help: Premaknite zemljevid in približajte lokacijo, ki jo želite urediti,
       nato pa kliknite tukaj.
index 9444e923764cb36c9bd9185e251bee93b4cecf9d..05915f2284869028e42d2da3b0e1bc8af9635c71 100644 (file)
@@ -128,13 +128,6 @@ sq:
       current email address: Adresa e Tanishme e Emailit
       openid:
         link text: çfarë është kjo?
-      public editing:
-        heading: Redaktim publik
-        enabled: I aktivizuar. Jo anonim dhe mund të redaktojë të dhënat.
-        enabled link text: çfarë është kjo?
-        disabled: I çaktivizuar dhe nuk mund të redaktojë të dhënat, të gjitha redaktimet
-          e mëparshme janë anonime.
-        disabled link text: pse nuk mund të redaktoj?
       contributor terms:
         heading: Kushtet e kontribuesit
         agreed: Ti je pajtuar me kushtet e reja për kontribues.
@@ -164,6 +157,8 @@ sq:
           france: Francë
           italy: Itali
           rest_of_world: Pjesa tjetër e botës
+      update:
+        terms accepted: Faleminderit për pranimin kushteve të reja për kontribues!
   browse:
     version: Versioni
     in_changeset: Grupi i Ndryshimeve
@@ -253,7 +248,6 @@ sq:
     index:
       title: Ndryshimet
       title_user: Ndryshime fjalish nga %{user}
-      title_friend: Ndryshime nga miqtë e mi
       title_nearby: Ndryshime nga përdorues të zonës
       empty: Asnjë ndryshim nuk u gjet.
       empty_area: Asnjë ndryshim në këtë zonë.
@@ -291,9 +285,7 @@ sq:
     popup:
       your location: Vendndodhja e jote
       nearby mapper: Hartuesi aty pranë
-      friend: Mik
     show:
-      no friends: Akoma nuk ke shtuar ndonjë mik.
       nearby users: Përdoruesit e tjerë aty pranë
       no nearby users: Nuk ka përdorues tjerë aty pranë, të cilët pranojnë të hartografojnë.
   diary_entries:
@@ -304,7 +296,6 @@ sq:
       use_map_link: Përdor Hartën
     index:
       title: Ditarët e përdoruesëve
-      title_friends: Ditarët e miqve
       title_nearby: Ditarët e përdoruesve këtu pranë
       user_title: Ditari i %{user}
       in_language_title: Shënimet në Ditar në %{language}
@@ -355,19 +346,6 @@ sq:
       all:
         title: Shënimet e ditarit të OpenStreetMap
         description: Shënimet e fundit në ditar nga përdoruesit e OpenStreetMap
-  diary_comments:
-    page:
-      post: Posto
-      when: Kur
-      comment: Koment
-  friendships:
-    make_friend:
-      success: '%{name} është tani mik i juaj.'
-      failed: Na vjen keq, nuk arritëm të shtojmë %{name} si mik.
-      already_a_friend: Ju tashmë jeni miq me %{name}.
-    remove_friend:
-      success: '%{name} u hoq nga miqtë tuaj.'
-      not_a_friend: '%{name} nuk është një nga miqtë tuaj.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -955,9 +933,11 @@ sq:
       wrong_user: 'TI je identifikuar si: "%{user}'', por mesazhi që ke kërkuar për
         të lexuar nuk ishte dërguar nga ose për atë përdorues. Të lutem identifikohu
         si përdorues i saktë për të lexuar atë.'
-    mark:
-      as_read: Mesazhi është shënuar si të lexuar
-      as_unread: Mesazhi është shënuar si i palexuar
+    read_marks:
+      create:
+        notice: Mesazhi është shënuar si të lexuar
+      destroy:
+        notice: Mesazhi është shënuar si i palexuar
     mailboxes:
       heading:
         my_inbox: Kutia ime mbërritëse
@@ -1237,7 +1217,6 @@ sq:
         header: E lirë dhe e redaktueshme
       display name description: Emri yt publik. Ti mund ta ndryshosh më vonë në preferenca.
       continue: Vazhdo
-      terms accepted: Faleminderit për pranimin kushteve të reja për kontribues!
     no_such_user:
       title: Nuk ka përdorues të tillë
       heading: Përdoruesi %{user} nuk ekziston
@@ -1259,8 +1238,6 @@ sq:
       edits: Redaktimet
       traces: Gjurmët
       notes: Shënimet e hartës
-      remove as friend: Largo mikun
-      add as friend: Shto si mik
       mapper since: 'Hartues që prej:'
       email address: 'Adresa e emailit:'
       created from: 'Krijuar nga:'
@@ -1299,6 +1276,13 @@ sq:
       user:
         summary_html: '%{name} krijuar nga %{ip_address} më %{date}'
         summary_no_ip_html: '%{name} krijuar më %{date}'
+    changeset_comments:
+      page:
+        when: Kur
+        comment: Koment
+    diary_comments:
+      page:
+        post: Posto
   user_role:
     filter:
       not_a_role: Vargu `%{role}' nuk është një rol i vlefshëm.
index c40a1cac0fa8476bb2b072e1fbf7d467a82bb291..df1a4ead68e0fd4d2d86e7acab9fee08e71df071 100644 (file)
@@ -123,13 +123,6 @@ sr-Latn:
       current email address: 'Trenutna e-adresa:'
       openid:
         link text: šta je ovo?
-      public editing:
-        heading: Javno uređivanje
-        enabled: Omogućeno. Nije anonimno i mogu se uređivati podaci.
-        enabled link text: šta je ovo?
-        disabled: Onemogućeno i ne mogu se uređivati podaci. Sve prethodne izmene
-          su anonimne.
-        disabled link text: zašto ne mogu da uređujem?
       contributor terms:
         heading: 'Uslovi uređivanja:'
         agreed: Prihvatili ste nove uslove uređivanja.
@@ -153,7 +146,6 @@ sr-Latn:
         consider_pd: Prema gorenavedenom ugovoru, smatram da moji doprinosi pripadaju
           javnom vlasništvu
         consider_pd_why: šta je ovo?
-        declined: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=sr-ec
         you need to accept or decline: Molimo vas da pročitate ugovor pre nego što
           ga prihvatite.
         legale_select: 'Izaberite zemlju prebivališta:'
@@ -161,6 +153,8 @@ sr-Latn:
           france: Francuska
           italy: Italija
           rest_of_world: Ostatak sveta
+      update:
+        terms accepted: Hvala vam što prihvatate nove uslove uređivanja.
       terms_declined_flash:
         terms_declined_url: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=sr-ec
   browse:
@@ -203,7 +197,6 @@ sr-Latn:
     index:
       title: Skupovi izmena
       title_user: Skupovi izmena korisnika %{user}
-      title_friend: Izmene vaših prijatelja
       title_nearby: Izmene od okolnih korisnika
       feed:
         title: Skup izmena %{id}
@@ -222,13 +215,9 @@ sr-Latn:
     popup:
       your location: Vaša lokacija
       nearby mapper: Obližnji kartograf
-      friend: Prijatelj
     show:
-      no friends: Niste dodali nijednog prijatelja.
       nearby users: 'Ostali obližnji korisnici:'
       no nearby users: Još uvek nema obližnjih korisnika koji mapiraju.
-      friends_changesets: Sve izmene prijatelja
-      friends_diaries: Pregled svih zapisa u dnevniku prijatelja
       nearby_changesets: Pregled svih izmena okolnih korisnika
       nearby_diaries: Pregled svih zapisa u dnevniku okolnih korisnika
   diary_entries:
@@ -239,7 +228,6 @@ sr-Latn:
       use_map_link: koristi mapu
     index:
       title: Korisnički dnevnici
-      title_friends: Dnevnici prijatelja
       title_nearby: Dnevnici okolnih korisnika
       user_title: Dnevnik korisnika %{user}
       in_language_title: Dnevnici na %{language}
@@ -288,23 +276,6 @@ sr-Latn:
       all:
         title: Unosi u dnevniku Openstritmapa
         description: Skorašnji unosi u dnevniku od korisnika Openstritmapa
-  diary_comments:
-    page:
-      post: Postavi
-      when: Kada
-      comment: Komentar
-  friendships:
-    make_friend:
-      heading: Dodati korisnika %{user} kao prijatelja?
-      button: Dodaj kao prijatelja
-      success: '%{name} je sada vaš prijatelj.'
-      failed: Ne mogu da dodam %{name} kao prijatelja.
-      already_a_friend: Već ste prijatelj sa %{name}.
-    remove_friend:
-      heading: Ukloniti korisnika %{user} iz prijatelja?
-      button: Ukloni iz prijatelja
-      success: '%{name} je izbačen iz prijatelja.'
-      not_a_friend: '%{name} nije vaš prijatelj.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -759,11 +730,8 @@ sr-Latn:
     message_notification:
       hi: Pozdrav, %{to_user},
       header: '%{from_user} vam posla poruku preko Openstritmapa pod naslovom %{subject}:'
-    friendship_notification:
-      subject: '[Openstritmap] %{user} vas je dodao kao prijatelja'
-      had_added_you: '%{user} vas je dodao kao prijatelja na Openstritmapu.'
+    follow_notification:
       see_their_profile: Možete videti njegov/njen profil na %{userurl}.
-      befriend_them: Možete ga/je dodati i kao prijatelja na %{befriendurl}.
     gpx_failure:
       import_failures_url: http://wiki.openstreetmap.org/wiki/GPX_Import_Failures?uselang=sr-ec
       subject: '[OpenStreetMap] GPX uvoz nije uspeo'
@@ -816,11 +784,13 @@ sr-Latn:
       wrong_user: Prijavljeni ste kao %{user}, ali poruka koju ste želeli da pročitate
         nije poslata tom korisniku. Prijavite se kao ispravan korisnik da biste je
         pročitali.
-    mark:
-      as_read: Poruka je označena kao pročitana
-      as_unread: Poruka je označena kao nepročitana
     destroy:
       destroyed: Poruka je obrisana
+    read_marks:
+      create:
+        notice: Poruka je označena kao pročitana
+      destroy:
+        notice: Poruka je označena kao nepročitana
     mailboxes:
       heading:
         my_inbox: Primljene
@@ -1108,7 +1078,6 @@ sr-Latn:
       display name description: Javno prikazano korisničko ime. Kasnije ga možete
         promeniti u postavkama.
       continue: Nastavi
-      terms accepted: Hvala vam što prihvatate nove uslove uređivanja.
     no_such_user:
       title: Nema takvog korisnika
       heading: Korisnik %{user} ne postoji
@@ -1126,8 +1095,6 @@ sr-Latn:
       diary: dnevnik
       edits: izmene
       traces: tragovi
-      remove as friend: ukloni kao prijatelja
-      add as friend: dodaj kao prijatelja
       mapper since: 'Kartograf od:'
       ct status: 'Uslovi za učešće:'
       ct undecided: Neodlučeno
@@ -1178,6 +1145,13 @@ sr-Latn:
       user:
         summary_html: '%{name} napravljeno od %{ip_address} dana %{date}'
         summary_no_ip_html: '%{name} napravljeno %{date}'
+    changeset_comments:
+      page:
+        when: Kada
+        comment: Komentar
+    diary_comments:
+      page:
+        post: Postavi
     suspended:
       title: Suspendovan nalog
       heading: Suspendovan nalog
index 6988bdae8820836ce491181a80f020017d8d92e1..82e9c870d83fcdaa2ac080755ab9c431d6dcc89a 100644 (file)
@@ -99,7 +99,7 @@ sr:
         support_url: Адреса подршке
         allow_read_prefs: чита њихове корисничке поставке
         allow_write_prefs: мења њихове корисничке поставке
-        allow_write_diary: прави дневничке записе, коментарише и додаје пријатеље
+        allow_write_diary: прави дневничке записе и коментарише
         allow_write_api: мења мапу
         allow_read_gpx: чита њихове приватне GPS трагове
         allow_write_gpx: отпрема GPS трагове
@@ -264,13 +264,6 @@ sr:
       external auth: Спољна аутентификација
       openid:
         link text: шта је ово?
-      public editing:
-        heading: Јавно уређивање
-        enabled: Омогућено. Није анонимно и могу се уређивати подаци.
-        enabled link text: шта је ово?
-        disabled: Онемогућено и не могу се уређивати подаци. Све претходне измене
-          су анонимне.
-        disabled link text: зашто не могу да уређујем?
       contributor terms:
         heading: Услови уређивања
         agreed: Прихватили сте нове услове уређивања.
@@ -314,7 +307,6 @@ sr:
         readable_summary: сумарум
         informal_translations: неформални преводи
         continue: Настави
-        declined: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=sr-ec
         cancel: Откажи
         you need to accept or decline: Молимо вас да прочитате уговор пре него што
           га прихватите.
@@ -323,6 +315,8 @@ sr:
           france: Француска
           italy: Италија
           rest_of_world: Остатак света
+      update:
+        terms accepted: Хвала вам што прихватате нове услове уређивања.
       terms_declined_flash:
         terms_declined_url: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=sr-ec
   browse:
@@ -421,7 +415,6 @@ sr:
       title: Скупови промена
       title_user: Скупови промена корисника %{user}
       title_user_link_html: Сетови промена за %{user_link}
-      title_friend: Скупови промена мојих пријатеља
       title_nearby: Скупови промена корисника у близини
       empty: Скупови промена нису пронађени.
       empty_area: Нема скупова промена у овој области.
@@ -472,16 +465,11 @@ sr:
     popup:
       your location: Ваша локација
       nearby mapper: Оближњи картограф
-      friend: Пријатељ
     show:
       title: Tабла
       edit_your_profile: Уредите Ваш профил
-      my friends: Моји пријатељи
-      no friends: Нисте додали ниједног пријатеља.
       nearby users: 'Остали оближњи корисници:'
       no nearby users: Још увек нема оближњих корисника који мапирају.
-      friends_changesets: Спискови промена пријатеља
-      friends_diaries: Дневник пријатеља
       nearby_changesets: Спискови промена корисника у околини
       nearby_diaries: Дневници корисника у околини
   diary_entries:
@@ -492,7 +480,6 @@ sr:
       use_map_link: Користи мапу
     index:
       title: Кориснички дневници
-      title_friends: Дневници пријатеља
       title_nearby: Дневници корисника у близини
       user_title: Дневник корисника %{user}
       in_language_title: Уноси у дневнику на %{language}
@@ -554,11 +541,6 @@ sr:
       button: Прати дискусију
     unsubscribe:
       button: Прекини праћење дискусије
-  diary_comments:
-    page:
-      post: Објава
-      when: Када
-      comment: Коментар
   doorkeeper:
     scopes:
       address: Види своју физичку адресу
@@ -574,18 +556,6 @@ sr:
       title: Грешка у апликацији
     not_found:
       title: Датотека није пронађена
-  friendships:
-    make_friend:
-      heading: Додати корисника %{user} као пријатеља?
-      button: Додај као пријатеља
-      success: '%{name} је сада твој пријатељ.'
-      failed: Не могу да додам %{name} као пријатеља.
-      already_a_friend: Већ сте пријатељ са %{name}.
-    remove_friend:
-      heading: Уклонити %{user} из списка пријатеља?
-      button: Уклони из списка пријатеља
-      success: '%{name} је избачен из пријатеља.'
-      not_a_friend: '%{name} није ваш пријатељ.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1406,18 +1376,17 @@ sr:
       header: '%{from_user} вам посла поруку преко Опенстритмапа под насловом %{subject}:'
       footer_html: Такође можете да прочитате поруку на %{readurl} и можете да одговорите
         на %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Поздрав, %{to_user},
-      subject: '[OpenStreetMap] %{user} вас је додао као пријатеља'
-      had_added_you: '%{user} вас је додао као пријатеља на Опенстритмапу.'
       see_their_profile: Можете видети његов/њен профил на %{userurl}.
-      befriend_them: Можете га/је додати и као пријатеља на %{befriendurl}.
     gpx_details:
       details: 'Детаљи ваше датотеке:'
       filename: Назив датотеке
       url: URL
       description: Опис
       tags: Ознаке
+      total_points: Укупан број тачака
+      imported_points: Број увезених тачака
     gpx_failure:
       hi: Здраво %{to_user},
       import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures?uselang=sr-ec
@@ -1534,11 +1503,13 @@ sr:
       wrong_user: Пријављени сте као '%{user}', али порука коју сте желели да прочитате
         нисте послали ви или том кориснику. Пријавите се као исправан корисник да
         бисте је прочитали.
-    mark:
-      as_read: Порука је означена као прочитана
-      as_unread: Порука је означена као непрочитана
     destroy:
       destroyed: Порука је обрисана
+    read_marks:
+      create:
+        notice: Порука је означена као прочитана
+      destroy:
+        notice: Порука је означена као непрочитана
     mailboxes:
       heading:
         my_inbox: Примљене
@@ -2059,13 +2030,14 @@ sr:
     offline:
       heading: GPX остава је ван мреже
       message: GPX остава и отпремање тренутно нису доступни.
-    georss:
-      title: OpenStreetMap GPS трасе
-    description:
-      description_with_count:
-        one: GPX датотека са %{count} тачком од %{user}
-        other: GPX датотека са %{count} тачака од %{user}
-      description_without_count: GPX датотека од %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS трасе
+      description:
+        description_with_count:
+          one: GPX датотека са %{count} тачком од %{user}
+          other: GPX датотека са %{count} тачака од %{user}
+        description_without_count: GPX датотека од %{user}
   application:
     permission_denied: Немате дозволу да приступите тој радњи
     require_cookies:
@@ -2156,7 +2128,6 @@ sr:
       by_signing_up:
         privacy_policy: политика приватности
       continue: Отвори налог
-      terms accepted: Хвала вам што прихватате нове услове уређивања.
       email_help:
         privacy_policy: политика приватности
       consider_pd: јавно власништво
@@ -2187,8 +2158,6 @@ sr:
       edits: Измене
       traces: Трагови
       notes: Белешке на карти
-      remove as friend: Избаци из пријатеља
-      add as friend: Додај пријатеља
       mapper since: 'Картограф од:'
       uid: 'ID корисника:'
       ct status: 'Услови за учешће:'
@@ -2246,6 +2215,13 @@ sr:
       user:
         summary_html: '%{name} направљено од %{ip_address} дана %{date}'
         summary_no_ip_html: '%{name} направљено %{date}'
+    changeset_comments:
+      page:
+        when: Када
+        comment: Коментар
+    diary_comments:
+      page:
+        post: Објава
     suspended:
       title: Суспендован налог
       heading: Суспендован налог
index 72d9c53675bea2ed63beebe952de0a62f9cd8ee9..717716290b97fe23eb9089d889235c5c35f2ce57 100644 (file)
@@ -297,13 +297,6 @@ sv:
       external auth: Extern autentisering
       openid:
         link text: vad är detta?
-      public editing:
-        heading: Offentlig redigering
-        enabled: Aktiverat, du är inte anonym och kan redigera data.
-        enabled link text: vad är detta?
-        disabled: Avstängt och kan inte redigera data, alla redigeringar som gjorts
-          är anonyma.
-        disabled link text: varför kan jag inte redigera?
       contributor terms:
         heading: Bidragsgivarvillkor
         agreed: Du har godkänt de nya bidragsgivarvillkoren.
@@ -393,6 +386,9 @@ sv:
           france: Frankrike
           italy: Italien
           rest_of_world: Övriga världen
+      update:
+        terms accepted: Tack för att du accepterat de nya villkoren för bidrag till
+          kartan!
       terms_declined_flash:
         terms_declined_html: Vi beklagar att du bestämt dig för att inte acceptera
           de nya användarvillkoren. För mer information, se %{terms_declined_link}.
@@ -544,7 +540,6 @@ sv:
       title: Ändringsuppsättningar
       title_user: Ändringsuppsättningar av %{user}
       title_user_link_html: Ändringsuppsättningar av %{user_link}
-      title_friend: Ändringsuppsättningar av mina vänner
       title_nearby: Ändringsuppsättningar av närbelägna användare
       empty: Inga ändringsuppsättningar hittades.
       empty_area: Inga ändringsuppsättningar i det här området.
@@ -559,19 +554,6 @@ sv:
         created: Skapad
         closed: Stängd
         belongs_to: Författare
-    subscribe:
-      heading: Prenumerera på följande diskussion om ändringsuppsättning?
-      button: Prenumerera på diskussion
-    unsubscribe:
-      heading: Avsluta prenumeration på följande diskussion om ändringsuppsättning?
-      button: Sluta prenumerera på diskussion
-    heading:
-      title: Ändringsuppsättning %{id}
-      created_by_html: Skapades av %{link_user} %{created}.
-    no_such_entry:
-      heading: 'Inget inlägg med ID: %{id}'
-      body: Det finns tyvärr ingen ändringsuppsättning med ID:t %{id}. Kontrollera
-        stavningen eller så kanske du tryckt på fel länk.
     show:
       title: 'Ändringsuppsättning: %{id}'
       created: 'Skapades: %{when}'
@@ -605,6 +587,21 @@ sv:
     timeout:
       sorry: Kunde tyvärr inte lista begärda ändringsuppsättningar. Begäran tog för
         lång tid att hämta.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Prenumerera på följande diskussion om ändringsuppsättning?
+        button: Prenumerera på diskussion
+      unsubscribe:
+        heading: Avsluta prenumeration på följande diskussion om ändringsuppsättning?
+        button: Sluta prenumerera på diskussion
+    heading:
+      title: Ändringsuppsättning %{id}
+      created_by_html: Skapades av %{link_user} %{created}.
+    no_such_entry:
+      heading: 'Inget inlägg med ID: %{id}'
+      body: Det finns tyvärr ingen ändringsuppsättning med ID:t %{id}. Kontrollera
+        stavningen eller så kanske du tryckt på fel länk.
   dashboards:
     contact:
       km away: '%{count}km bort'
@@ -613,19 +610,14 @@ sv:
     popup:
       your location: Din position
       nearby mapper: Användare i närheten
-      friend: Vän
     show:
       title: Min kontrollpanel
       no_home_location_html: '%{edit_profile_link} och sätt din hemposition för att
         se närliggande användare.'
       edit_your_profile: Redigera din profil
-      my friends: Mina vänner
-      no friends: Du har inte lagt till några vänner ännu.
       nearby users: Andra användare nära dig
       no nearby users: Det är ännu inga andra användare som uppgett att de kartlägger
         nära dig.
-      friends_changesets: vänners ändringsuppsättningar
-      friends_diaries: vänners dagboksinlägg
       nearby_changesets: närbelägna användares ändringsuppsättningar
       nearby_diaries: närbelägna användares dagboksinlägg
   diary_entries:
@@ -636,7 +628,6 @@ sv:
       use_map_link: Använd karta
     index:
       title: Användardagböcker
-      title_friends: Vänners dagböcker
       title_nearby: Närbelägna användares dagböcker
       user_title: '%{user}s dagbok'
       in_language_title: Dagboksinlägg på %{language}
@@ -702,15 +693,6 @@ sv:
       heading: Avsluta prenumeration på följande diskussion om dagboksinlägg?
       button: Avsluta prenumeration på diskussion
   diary_comments:
-    index:
-      title: Dagbokskommentarer tillagda av %{user}
-      heading: '%{user}s dagbokskommentarer'
-      subheading_html: Dagbokskommentarer tillagda av %{user}
-      no_comments: Inga dagbokskommentarer
-    page:
-      post: Inlägg
-      when: När
-      comment: Kommentar
     new:
       heading: Lägg en kommentar på följande diskussion om dagboksinlägg?
   doorkeeper:
@@ -765,20 +747,6 @@ sv:
       title: Filen hittades inte
       description: Det gick inte att hitta en fil/katalog/API-operation med det namnet
         på OpenStreetMap-servern (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Lägg till %{user} som en vän?
-      button: Lägg till som vän
-      success: '%{name} är nu din vän!'
-      failed: Misslyckades med att lägga till %{name} som en vän.
-      already_a_friend: Du är redan vän med %{name}.
-      limit_exceeded: Du har lagt till många vänner nyligen. Var snäll och vänta ett
-        tag innan du lägger till fler vänner.
-    remove_friend:
-      heading: Ta bort %{user} som vän?
-      button: Ta bort som vän
-      success: '%{name} togs bort från dina vänner.'
-      not_a_friend: '%{name} är inte en av dina vänner.'
   geocoder:
     search:
       title:
@@ -1747,14 +1715,10 @@ sv:
         till författaren på %{replyurl}
       footer_html: Du kan också läsa meddelandet på %{readurl} och du kan skicka ett
         meddelande till författaren på %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Hej %{to_user},
-      subject: '[OpenStreetMap] %{user} lade till dig som en vän'
-      had_added_you: '%{user} har lagt till dig som vän på OpenStreetMap.'
       see_their_profile: Du kan se deras profil på %{userurl}.
       see_their_profile_html: Du kan se deras profil på %{userurl}.
-      befriend_them: Du kan också lägga till dem som en vän på %{befriendurl}.
-      befriend_them_html: Du kan också lägga till dem som en vän på %{befriendurl}.
     gpx_details:
       details: 'Dina fildetaljer:'
       filename: Filnamn
@@ -1919,14 +1883,17 @@ sv:
       wrong_user: Du är inloggad som '%{user}', men meddelandet du har bett om att
         få läsa skickades inte till eller av den användaren. Logga in med korrekt
         användare för att läsa det.
-    mark:
-      as_read: Meddelandet markerat som läst
-      as_unread: Meddelandet markerat som oläst
-    unmute:
-      notice: Meddelandet har flyttats till inkorgen
-      error: Meddelandet kunde inte flyttas till inkorgen.
     destroy:
       destroyed: Meddelande raderat
+    read_marks:
+      create:
+        notice: Meddelandet markerat som läst
+      destroy:
+        notice: Meddelandet markerat som oläst
+    mutes:
+      destroy:
+        notice: Meddelandet har flyttats till inkorgen
+        error: Meddelandet kunde inte flyttas till inkorgen.
     mailboxes:
       heading:
         my_inbox: Min inkorg
@@ -2698,13 +2665,14 @@ sv:
     offline:
       heading: GPX-lagring offline
       message: GPX-uppladdningssystemet är för närvarande inte tillgängligt.
-    georss:
-      title: OpenStreetMap GPS-spår
-    description:
-      description_with_count:
-        one: GPX-fil med %{count} punkt från %{user}
-        other: GPX-fil med %{count} punkter från %{user}
-      description_without_count: GPX-fil från %{user}
+    feeds:
+      show:
+        title: OpenStreetMap GPS-spår
+      description:
+        description_with_count:
+          one: GPX-fil med %{count} punkt från %{user}
+          other: GPX-fil med %{count} punkter från %{user}
+        description_without_count: GPX-fil från %{user}
   application:
     permission_denied: Du har inte behörighet för denna åtgärd
     require_cookies:
@@ -2866,8 +2834,6 @@ sv:
         privacy_policy_title: OSMFs integritetspolicy inklusive avsnitt om e-postadresser
         contributor_terms: bidragsvillkor
       continue: Registrera
-      terms accepted: Tack för att du accepterat de nya villkoren för bidrag till
-        kartan!
       email_help:
         privacy_policy: integritetspolicy
         privacy_policy_title: OSMF:s integritetspolicy inkluderingsavsnitt om e-postadresser
@@ -2904,8 +2870,6 @@ sv:
       edits: Redigeringar
       traces: Spår
       notes: Kartanteckningar
-      remove as friend: Ta bort vän
-      add as friend: Lägg till vän
       mapper since: 'Karterar sedan:'
       last map edit: 'Senaste kartredigering:'
       no activity yet: Ännu ingen aktivitet
@@ -2980,6 +2944,15 @@ sv:
       user:
         summary_html: '%{name} skapades från %{ip_address} den %{date}'
         summary_no_ip_html: '%{name} skapad den %{date}'
+    changeset_comments:
+      page:
+        when: När
+        comment: Kommentar
+    diary_comments:
+      index:
+        title: Dagbokskommentarer tillagda av %{user}
+      page:
+        post: Inlägg
     suspended:
       title: Kontot avstängt
       heading: Kontot avstängt
index c789980fffef5a61f911141d5727f224ebbe5c9d..bf942625b1d73dc567e5c00fc9eda6f1835afccd 100644 (file)
@@ -180,8 +180,6 @@ ta:
       current email address: 'தற்பொழுதுள்ள மின்னஞ்சல் முகவரி:'
       openid:
         link text: இது என்ன?
-      public editing:
-        enabled link text: இது என்ன?
       contributor terms:
         link text: இது என்ன?
       save changes button: மாற்றங்களைச் சேமி
@@ -272,10 +270,7 @@ ta:
       latest_edit_html: 'தற்போதைய  திருத்தம் %{ago}:'
     popup:
       your location: உங்களது இருப்பிடம்
-      friend: நண்பர்
     show:
-      my friends: எனது நண்பர்கள்
-      no friends: நீங்கள் இதுவரை எந்த நண்பர்களையும் சேர்க்கவில்லை
       nearby users: மற்ற அருகிலுள்ள பயனர்கள்
   diary_entries:
     new:
@@ -285,7 +280,6 @@ ta:
       use_map_link: வரைபடத்தைப் பயன்படுத்தவும்
     index:
       title: பயனரின் நாட்குறிப்பேடுகள்
-      title_friends: நண்பர்களின் நாட்குறிப்பேடுகள்
       title_nearby: அருகிலுள்ள பயனர்களின் நாட்குறிப்பேடுகள்
       user_title: '%{user}''ரின் நாட்குறிப்பேடு'
       in_language_title: '%{language}ல் நாட்குறிப்பேடு உள்ளீடுகள்'
@@ -318,11 +312,6 @@ ta:
       report: இந்தப் பின்னூட்டத்தை முறையிடுக
     location:
       location: 'இடம்:'
-  diary_comments:
-    page:
-      post: பதியவும்
-      when: எப்பொழுது
-      comment: கருத்துரை
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -609,10 +598,11 @@ ta:
       reply_button: பதிலளி
       unread_button: வாசிக்கப்படாததாக  குறியிடு
       destroy_button: நீக்கு
-    unmute:
-      notice: தகவல் வருமஞ்சலுக்கு நகர்த்தப்பட்டுள்ளது
     destroy:
       destroyed: தகவல் நீக்கப்பட்டது
+    mutes:
+      destroy:
+        notice: தகவல் வருமஞ்சலுக்கு நகர்த்தப்பட்டுள்ளது
     mailboxes:
       heading:
         muted_messages: மௌனித்த தகவல்கள்
@@ -788,7 +778,6 @@ ta:
       destroy_mute: இப்பயனரை ஓசையாக்கு
       diary: நாட்குறிப்பேடு
       edits: தொகுப்புகள்
-      add as friend: நண்பராக சேர்
       ct status: 'பங்களிப்பாளர் விதிமுறைகள்:'
       ct undecided: முடிவு செய்யப்படாத
       ct declined: நிராகரிக்கப்பட்டது
@@ -817,6 +806,13 @@ ta:
       show:
         title: பயனர்கள்
         heading: பயனர்கள்
+    changeset_comments:
+      page:
+        when: எப்பொழுது
+        comment: கருத்துரை
+    diary_comments:
+      page:
+        post: பதியவும்
     suspended:
       title: கணக்கு இடைநீக்கம் செய்யப்பட்டுள்ளது
       heading: கணக்கு இடைநீக்கம் செய்யப்பட்டுள்ளது
index 1f8c4e8c94d9361a2a2daab5a26f443f1be4e1a1..edcdce0aa1fef4e7289350a9b72f245e854a812a 100644 (file)
@@ -245,13 +245,6 @@ te:
       external auth: బయటి ఆథెంటికేషను
       openid:
         link text: ఇది ఏమిటి?
-      public editing:
-        heading: బహిరంగ ఎడిటింగు
-        enabled: చేతనం. అజ్ఞాతగా లేరు, అంచేత దిద్దుబాట్లు చెయ్యవచ్చు.
-        enabled link text: ఇది ఏమిటి?
-        disabled: అచేతనంగా ఉంది, అంచేత దిద్దుబాట్లు చెయ్యలేరు. ఇంతకుముందు చేసిన దిద్దుబాట్లన్నీ
-          అజ్ఞాతగా చేసినవే.
-        disabled link text: నేను ఎందుకు మార్చలేను?
       contributor terms:
         heading: తోడ్పాటు నియమాలు
         agreed: మీరు కొత్త తోడ్పాటు నియమాలకు అంగీకరించారు.
@@ -408,7 +401,6 @@ te:
     index:
       title: మార్పుల సమితులు
       title_user: '%{user} చేసిన మార్పులసమితులు'
-      title_friend: నా మిత్రుల మార్పులసమితులు
       title_nearby: దగ్గర్లోని వాడుకరుల మార్పులసమితులు
       empty: మార్పులసమితులేమీ కనబడలేదు.
       empty_area: ఈ ప్రాంతంలో మార్పులసమితులేమీ లేవు.
@@ -452,18 +444,13 @@ te:
     popup:
       your location: మీ ప్రాంతం
       nearby mapper: సమీపం లోని మ్యాపరు
-      friend: మిత్రుడు
     show:
       title: నా డ్యాష్‌బోర్డు
       no_home_location_html: మీ సమీపం లోని వాడూకరులను చూసేందుకు %{edit_profile_link}
         కు వెళ్ళి మీ స్థానాన్ని సెట్ చేసుకోండి.
       edit_your_profile: మీ  ప్రొఫైలును సవరించండి
-      my friends: నా మిత్రులు
-      no friends: మీరు ఇంకా స్నేహితులెవరినీ చేర్చలేదు.
       nearby users: 'దగ్గరలోని వాడుకరులు:'
       no nearby users: మ్యాపింగు చేస్తామని చెబుతున్న వాడుకరులు సమీపంలో ఇంకా ఎవరూ లేరు.
-      friends_changesets: మిత్రుల మార్పులసమితులు
-      friends_diaries: మిత్రుల డైరీ పద్దులు
       nearby_changesets: దగ్గర్లోని వాడుకరుల మార్పులసమితులు
       nearby_diaries: సమీపం లోని వాడుకరుల డైరీ పద్దులు
   diary_entries:
@@ -474,7 +461,6 @@ te:
       use_map_link: పటాన్ని వాడు
     index:
       title: వాడుకరుల డైరీలు
-      title_friends: స్నేహితుల దినచర్యలు
       title_nearby: చుట్టుపక్కల వాడుకరుల డైరీలు
       user_title: '%{user} దినచర్య'
       in_language_title: '%{language}లో ఉన్న డైరీ పద్దులు'
@@ -531,35 +517,11 @@ te:
       all:
         title: OpenStreetMap డైరీ పద్దులు
         description: OpenStreetMap వాడుకరులు ఇటీవల చేర్చిన డైరీ పద్దులు
-  diary_comments:
-    index:
-      title: '%{user} చేర్చిన డైరీ వ్యాఖ్యలు'
-      heading: '%{user} గారి డైరీ వ్యాఖ్యలు'
-      subheading_html: '%{user} డైరీ వ్యాఖ్యలను చేర్చారు'
-      no_comments: డైరీ వ్యాఖ్యలేమీ లేవు
-    page:
-      post: పంపించు
-      when: ఎప్పుడు
-      comment: వ్యాఖ్య
   doorkeeper:
     flash:
       applications:
         create:
           notice: అనువర్తనం నమోదైంది.
-  friendships:
-    make_friend:
-      heading: '%{user} ను మిత్రులుగా చేర్చాలా?'
-      button: మిత్రులుగా చేర్చు
-      success: '%{name} ఇప్పుడు మీ మిత్రులు!'
-      failed: సారీ, %{name} ను మిత్రులుగా చేర్చలేకపోయాం.
-      already_a_friend: '%{name} మీకు ఇప్పటికే స్నేహితులు.'
-      limit_exceeded: మీరు ఈ మధ్య చాలామందితో మైత్రి కలుపుకున్నారు. మరింత మందితో మైత్రి
-        కలుపుకునే ముందు కాస్త ఆగండి.
-    remove_friend:
-      heading: '%{user} తో మైత్రి ఆపేస్తారా?'
-      button: మైత్రిని ఆపు
-      success: '%{name} ను మీ మిత్రుల జాబితా నుండి తీసేసాం.'
-      not_a_friend: '%{name} మీ మిత్రులు కాదు.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1476,14 +1438,10 @@ te:
         సందేశం పంపించవచ్చు
       footer_html: ఆ సందేశాన్ని %{readurl} వద్ద కూడా చదవవచ్చు, %{replyurl} వద్ద వారికి
         సందేశం పంపించవచ్చు
-    friendship_notification:
+    follow_notification:
       hi: నమస్కారం %{to_user} గారూ,
-      subject: '[OpenStreetMap] %{user} మిమ్మల్ని మిత్రులుగా చేర్చుకున్నారు'
-      had_added_you: '%{user} మిమ్మల్ని OpenStreetMap లో మిత్రులుగా చేర్చుకున్నారు.'
       see_their_profile: '%{userurl} వద్ద వారి ప్రొఫైలును చూడవచ్చు.'
       see_their_profile_html: '%{userurl} వద్ద వారి ప్రొఫైలును చూడవచ్చు.'
-      befriend_them: '%{befriendurl} వద్ద వారిని మీరు కూడా మిత్రులుగా చేసుకోవచ్చు.'
-      befriend_them_html: అలాగే, %{befriendurl} వద్ద వారిని మీ మిత్రులుగా చేర్చుకోవచ్చు.
     gpx_failure:
       hi: నమస్కారం %{to_user} గారూ,
       failed_to_import: 'దిగుమతి విఫలమైంది. లోపం ఇది:'
@@ -1619,11 +1577,13 @@ te:
       back: వెనుకకు
       wrong_user: మీరు `%{user}' గా లాగినై ఉన్నారు. కానీ మీరు చదవదలచిన సందేశం ఆ వాడుకరి
         పంపలేదు, ఆ వాడుకరికి రాలేదు. సరైన వాడుకరిగా లాగినై చదవండి.
-    mark:
-      as_read: సందేశాన్ని చదివినట్లుగా గుర్తుపెట్టాం
-      as_unread: సందేశాన్ని చదవనట్లుగా గుర్తుపెట్టాం
     destroy:
       destroyed: సందేశాన్ని తొలగించాం
+    read_marks:
+      create:
+        notice: సందేశాన్ని చదివినట్లుగా గుర్తుపెట్టాం
+      destroy:
+        notice: సందేశాన్ని చదవనట్లుగా గుర్తుపెట్టాం
     mailboxes:
       heading:
         my_inbox: నా ఇన్‌బాక్స్
@@ -2038,13 +1998,14 @@ te:
     offline:
       heading: GPX స్టోరేజీ ఆఫ్‌లైను లోకి పోయింది
       message: ఫైలు స్టోరేజీ, ఎక్కింపు వ్యవస్థ ప్రస్తుతం అందుబాటులో లేదు.
-    georss:
-      title: OpenStreetMap GPS ట్రేసులు
-    description:
-      description_with_count:
-        one: '%{count} బిందువుతో %{user} గారి GPX ఫైలు'
-        other: '%{count} బిందువులతో %{user} గారి GPX ఫైలు'
-      description_without_count: '%{user} గారి GPX ఫైలు'
+    feeds:
+      show:
+        title: OpenStreetMap GPS ట్రేసులు
+      description:
+        description_with_count:
+          one: '%{count} బిందువుతో %{user} గారి GPX ఫైలు'
+          other: '%{count} బిందువులతో %{user} గారి GPX ఫైలు'
+        description_without_count: '%{user} గారి GPX ఫైలు'
   application:
     permission_denied: ఈ చర్య చేసేందుకు మీకు అనుమతి లేదు
     require_cookies:
@@ -2125,8 +2086,6 @@ te:
       edits: మార్పులు
       traces: ట్రేసులు
       notes: పటపు గమనికలు
-      remove as friend: స్నేహితునిగా తొలగించు
-      add as friend: స్నేహితునిగా చేర్చు
       mapper since: 'ఇప్పటినుండి మ్యాపరు:'
       ct status: 'తోడ్పాటు నియమాలు:'
       ct undecided: నిర్ణయించుకోలేదు
@@ -2179,6 +2138,15 @@ te:
       user:
         summary_html: '%{name}, %{date} న %{ip_address} నుండి సృష్టించారు'
         summary_no_ip_html: '%{name} %{date} న సృష్టించారు'
+    changeset_comments:
+      page:
+        when: ఎప్పుడు
+        comment: వ్యాఖ్య
+    diary_comments:
+      index:
+        title: '%{user} చేర్చిన డైరీ వ్యాఖ్యలు'
+      page:
+        post: పంపించు
     suspended:
       title: ఖాతాను సస్పెండు చేసారు
       heading: సస్పెండు చేసిన ఖాతా
index 0d249b243ed5901c1dd1c80aaba88f5534987dcf..9d6d402b612b6547b0d00193e8298ee25f3cc485 100644 (file)
@@ -245,12 +245,6 @@ th:
       external auth: การยืนยันตัวตนด้วยบริการภายนอก
       openid:
         link text: นี่คืออะไร?
-      public editing:
-        heading: การแก้ไขสาธารณะ
-        enabled: 'เปิดใช้: สามารถแก้ไขแผนที่ได้โดยเปิดเผยนาม'
-        enabled link text: นี่คืออะไร?
-        disabled: ปิดใช้ และไม่สามารถแก้ไขแผนที่ได้อีก โดยการแก้ไขในอดีตทั้งหมดจะยังคงความนิรนามไว้
-        disabled link text: ทำไมถึงแก้ไขไม่ได้?
       contributor terms:
         heading: ข้อกำหนดผู้ร่วมให้ข้อมูล
         agreed: คุณได้ยอมรับข้อกำหนดผู้ร่วมให้ข้อมูลใหม่แล้ว
@@ -310,6 +304,8 @@ th:
           france: ฝรั่งเศส
           italy: อิตาลี
           rest_of_world: พื้นที่อื่น ๆ ในโลก
+      update:
+        terms accepted: ขอบคุณสำหรับการตอบรับเงื่อนไขผู้ร่วมให้ข้อมูล!
   browse:
     deleted_ago_by_html: ลบเมื่อ %{time_ago} โดย %{user}
     edited_ago_by_html: แก้ไขเมื่อ %{time_ago} โดย %{user}
@@ -428,7 +424,6 @@ th:
       title: ชุดการเปลี่ยนแปลง
       title_user: ชุดการเปลี่ยนแปลงที่ทำโดย %{user}
       title_user_link_html: ชุดการเปลี่ยนแปลงที่ทำโดย %{user_link}
-      title_friend: ชุดการเปลี่ยนแปลงที่ทำโดยเพื่อนของฉัน
       title_nearby: ชุดการเปลี่ยนแปลงที่ทำโดยผู้ใช้ที่อยู่ใกล้เคียง
       empty: ไม่พบชุดการเปลี่ยนแปลง
       empty_area: ไม่พบชุดการเปลี่ยนแปลงในพื้นที่นี้
@@ -443,19 +438,6 @@ th:
         created: สร้างเมื่อ
         closed: ปิดเมื่อ
         belongs_to: ผู้สร้าง
-    subscribe:
-      heading: สมัครสมาชิกการอภิปรายเซ็ตการแก้ไขต่อไปนี้หรือไม่
-      button: สมัครสมาชิกการอภิปราย
-    unsubscribe:
-      heading: ยกเลิกการสมัครสมาชิกการอภิปรายต่อไปนี้หรือไม่
-      button: ยกเลิกการสมัครสมาชิกการอภิปราย
-    heading:
-      title: ชุดการเปลี่ยนแปลง %{id}
-      created_by_html: สร้างโดย %{link_user} บน %{created}
-    no_such_entry:
-      heading: 'ไม่มีรายการที่มีรหัส: %{id}'
-      body: ขออภัย ไม่มีชุดการเปลี่ยนแปลงที่มีรหัส %{id} โปรดตรวจสอขความถูกต้องของการสะกด
-        หรือลิงก์ที่กดมานั้นมีข้อผิดพลาด
     show:
       title: 'ชุดการเปลี่ยนแปลง: %{id}'
       created: 'สร้างเมื่อ: %{when}'
@@ -485,6 +467,21 @@ th:
       relations_paginated: ความสัมพันธ์ (%{x}-%{y} จาก %{count})
     timeout:
       sorry: ขออภัย รายการชุดการเปลี่ยนแปลงที่ร้องขอใช้เวลานานเกินสมควรในการสืบค้น
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: สมัครสมาชิกการอภิปรายเซ็ตการแก้ไขต่อไปนี้หรือไม่
+        button: สมัครสมาชิกการอภิปราย
+      unsubscribe:
+        heading: ยกเลิกการสมัครสมาชิกการอภิปรายต่อไปนี้หรือไม่
+        button: ยกเลิกการสมัครสมาชิกการอภิปราย
+    heading:
+      title: ชุดการเปลี่ยนแปลง %{id}
+      created_by_html: สร้างโดย %{link_user} บน %{created}
+    no_such_entry:
+      heading: 'ไม่มีรายการที่มีรหัส: %{id}'
+      body: ขออภัย ไม่มีชุดการเปลี่ยนแปลงที่มีรหัส %{id} โปรดตรวจสอขความถูกต้องของการสะกด
+        หรือลิงก์ที่กดมานั้นมีข้อผิดพลาด
   dashboards:
     contact:
       km away: ห่างออกไป %{count} กม.
@@ -493,17 +490,12 @@ th:
     popup:
       your location: ตำแหน่งของคุณ
       nearby mapper: คนทำแผนที่ ที่อยู่ใกล้เคียง
-      friend: เพื่อน
     show:
       title: แผงควบคุมของฉัน
       no_home_location_html: '%{edit_profile_link} และตั้งตำแหน่งบ้านของให้ผู้ใช้ไกล้เคียงเห็น'
       edit_your_profile: แก้ไขโปรไฟล์ของคุณ
-      my friends: รายการเพื่อน
-      no friends: ท่านยังไม่ได้เพิ่มเพื่อนใด ๆ
       nearby users: ผู้ใช้อื่นที่ใกล้เคียง
       no nearby users: ไม่ได้มีผู้ใดแสดงตัวว่าทำแผนที่อยู่ใกล้เคียง
-      friends_changesets: ชุดการเปลี่ยนแปลงของเพื่อน
-      friends_diaries: บันทึกของเพื่อน
       nearby_changesets: ชุดการเปลี่ยนแปลงของผู้ใช้ใกล้เคียง
       nearby_diaries: บันทึกของผู้ใช้ใกล้เคียง
   diary_entries:
@@ -514,7 +506,6 @@ th:
       use_map_link: ใช้แผนที่
     index:
       title: บันทึกของผู้ใช้
-      title_friends: บันทึกของเพื่อน
       title_nearby: บันทึกของผู้ใช้ที่อยู่ใกล้เคียง
       user_title: บันทึกของ %{user}
       in_language_title: รายการบันทึกทั้งหมดในภาษา %{language}
@@ -578,16 +569,6 @@ th:
     unsubscribe:
       heading: เลิกติดตามการอภิปรายต่อไปนี้หรือไม่
       button: เลิกติดตามการอภิปราย
-  diary_comments:
-    index:
-      title: ความคิดเห็นในรายการบันทึกที่เพิ่มโดย %{user}
-      heading: ความคิดเห็นในรายการบันทึกของ %{user}
-      subheading_html: ความคิดเห็นในรายการบันทึกที่เพิ่มโดย %{user}
-      no_comments: ไม่มีความคิดเห็นในรายการบึกทึก
-    page:
-      post: เผยแพร่
-      when: เมื่อ
-      comment: แสดงความเห็น
   doorkeeper:
     errors:
       messages:
@@ -640,19 +621,6 @@ th:
       title: ไม่พบไฟล์
       description: ไม่พบการดำเนินการของไฟล์/ไดเรกทอรี/API ตามชื่อนั้นบนเซิร์ฟเวอร์
         OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: เพิ่มผู้ใช้ %{user} ในรายการเพื่อนหรือไม่?
-      button: เพิ่มในรายการเพื่อน
-      success: ผู้ใช้ %{name} อยู่ในรายการเพื่อนเรียบร้อย!
-      failed: ขออภัย ไม่สามารถเพิ่มผู้ใช้ %{name} ในรายการเพื่อน
-      already_a_friend: มีผู้ใช้ %{name}ในรายการเพื่อนอยู่แล้ว
-      limit_exceeded: คุณได้เป็นเพื่อนกับผู้ใช้จำนวนมากเมื่อไม่นานมานี้ โปรดรอสักครู่ก่อนที่จะพยายามเป็นเพื่อนต่อไป
-    remove_friend:
-      heading: ต้องการลบผู้ใช้ %{user} ออกจากรายการเพื่อนหรือไม่?
-      button: ลบจากรายการเพื่อน
-      success: ท่านได้ลบผู้ใช้ %{name} ออกจากรายการเพื่อน
-      not_a_friend: ผู้ใช้ %{name} ไม่ได้อยู่ในรายการเพื่อน
   geocoder:
     search:
       title:
@@ -1579,14 +1547,10 @@ th:
         %{replyurl} หากต้องการ
       footer_html: คุณสามารถอ่านข้อความที่ลิงก์ %{readurl} และถ้าต้องการสามารถตอบกลับที่ลิงก์
         %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: เรียนคุณ %{to_user},
-      subject: '[OpenStreetMap] %{user} เพิ่มคุณในรายการเพื่อน'
-      had_added_you: ผู้ใช้ %{user} เพิ่มคุณในรายการเพื่อนบน OpenStreetMap
       see_their_profile: สามารถดูหน้าโปรไฟล์ของผู้ใช้นี้ได้ที่ %{userurl}
       see_their_profile_html: สามารถดูหน้าโปรไฟล์ของผู้ใช้นี้ได้ที่ %{userurl}
-      befriend_them: นอกจากนี้ คุณสามารถเพิ่มผู้ใช้นี้ในรายการเพื่อนได้ที่ %{befriendurl}.
-      befriend_them_html: คุณยังสามารถเพิ่มผู้ใช้นี้ไปในรายการเพื่อนได้ที่ %{befriendurl}
     gpx_failure:
       hi: เรียนคุณ %{to_user},
       failed_to_import: 'การนำเข้าล้มเหลว เนื่องจาก:'
@@ -1690,11 +1654,13 @@ th:
       back: ย้อนกลับ
       wrong_user: ท่านเข้าระบบโดยใช้ชื่อผู้ใช้ `%{user}' แต่ข้อความที่ท่านกำลังจะตอบกลับไม่ได้ส่งโดยหรือส่งถึงผู้ใช้ดังกล่าว
         โปรดเข้าระบบใหม่โดยใช้ชื่อผู้ใช้นั้นเพื่อตอบกลับ
-    mark:
-      as_read: ข้อความถูกทำเครื่องหมายว่าอ่านแล้ว
-      as_unread: ข้อความถูกทำเครื่องหมายว่ายังไม่ได้อ่าน
     destroy:
       destroyed: ข้อความถูกลบแล้ว
+    read_marks:
+      create:
+        notice: ข้อความถูกทำเครื่องหมายว่าอ่านแล้ว
+      destroy:
+        notice: ข้อความถูกทำเครื่องหมายว่ายังไม่ได้อ่าน
     mailboxes:
       heading:
         my_inbox: จดหมายรับส่วนตัว
@@ -2056,9 +2022,10 @@ th:
       message: ระบบอัปโหลดแฟ้มข้อมูล GPX ไม่พร้อมใช้งานในขณะนี้
     offline:
       message: หน่วยจัดเก็บแฟ้มข้อมูล GPX และระบบอัปโหลดไม่พร้อมใช้งานในขณะนี้
-    description:
-      description_with_count: แฟ้มข้อมูล GPX จำนวน %{count} จุด จากผู้ใช้ %{user}
-      description_without_count: แฟ้มข้อมูล GPX จากผู้ใช้ %{user}
+    feeds:
+      description:
+        description_with_count: แฟ้มข้อมูล GPX จำนวน %{count} จุด จากผู้ใช้ %{user}
+        description_without_count: แฟ้มข้อมูล GPX จากผู้ใช้ %{user}
   application:
     require_cookies:
       cookies_needed: ดูเหมือนว่าคุณปิดใช้งานคุกกี้อยู่, กรุณาเปิดใช้งานคุกกี้ในบราวเซอร์ของคุณก่อนจะดำเนินการต่อ
@@ -2101,7 +2068,6 @@ th:
         header: เสรีและแก้ไขได้
       display name description: ชื่อที่แสดงต่อสาธารณะ ท่านสามารถเปลี่ยนในภายหลังได้ในหน้าการตั้งค่า
       continue: สมัครบัญชี
-      terms accepted: ขอบคุณสำหรับการตอบรับเงื่อนไขผู้ร่วมให้ข้อมูล!
       use external auth: นอกจากนี้ ท่านสามารถใช้บัญชีผู้ใช้จากเว็บอื่นในการเข้าใช้งานได้
     no_such_user:
       title: ไม่มีผู้ใช้ที่ระบุ
@@ -2124,8 +2090,6 @@ th:
       edits: การแก้ไข
       traces: รอยทาง
       notes: หมายเหตุแผนที่
-      remove as friend: ลบจากรายการเพื่อน
-      add as friend: เพิ่มเข้ารายการเพื่อน
       mapper since: 'ทำแผนที่นี้ตั้งแต่:'
       ct status: 'เงื่อนไขผู้ร่วมให้ข้อมูล:'
       ct undecided: ยังไม่ตัดสินใจ
@@ -2170,6 +2134,15 @@ th:
         hide: ซ่อนผู้ใช้ที่เลือก
       user:
         summary_html: '%{name} สร้างจากไอพี %{ip_address} เมื่อ %{date}'
+    changeset_comments:
+      page:
+        when: เมื่อ
+        comment: แสดงความเห็น
+    diary_comments:
+      index:
+        title: ความคิดเห็นในรายการบันทึกที่เพิ่มโดย %{user}
+      page:
+        post: เผยแพร่
     suspended:
       title: บัญชีถูกระงับ
       heading: บัญชีถูกระงับ
index cb6ed4f66b5a78976ba224708ab4a5aeac6db958..aaed64210a87677c404604d2d92fbe616e81297d 100644 (file)
@@ -228,13 +228,6 @@ tl:
       external auth: Panlabas na Pagpapatunay
       openid:
         link text: ano ba ito?
-      public editing:
-        heading: Pangmadlang pamamatnugot
-        enabled: Pinagana. Nagpakilala at maaaring magbago ng dato.
-        enabled link text: ano ba ito?
-        disabled: Hindi pinagana at hindi makapagbabago ng dato, lahat ng nakaraang
-          mga pagbabago ay bilang hindi nagpapakilala.
-        disabled link text: bakit hindi ako makapamatnugot?
       contributor terms:
         heading: Mga Tuntunin sa Tagapag-ambag
         agreed: Sumang-ayon ka sa bagong mga Tuntunin na Pangtagapag-ambag.
@@ -277,6 +270,8 @@ tl:
           france: Pransiya
           italy: Italya
           rest_of_world: Iba pang bahagi ng mundo
+      update:
+        terms accepted: Salamat sa pagtanggap ng bagong mga tuntunin ng tagapag-ambag!
       terms_declined_flash:
         terms_declined_html: Ikinalulungkot namin na nagpasya kang hindi tanggapin
           ang bagong Mga Tuntunin sa Tagapag-ambag. Para sa karagdagang impormasyon,
@@ -382,7 +377,6 @@ tl:
     index:
       title: Mga pangkat ng pagbabago
       title_user: Mga pangkat ng pagbabago ayon sa %{user}
-      title_friend: Mga pangkat ng pagbabago ng mga kaibigan mo
       title_nearby: Mga pangkat ng pagbabago ng kalapit na mga tagagamit
       empty: Walang natagpuang mga aparato/gadyet.
       empty_area: Walang pangkat ng pagbabago sa lugar na ito.
@@ -427,16 +421,11 @@ tl:
     popup:
       your location: Kinalalagyan mo
       nearby mapper: Malapit na tagapagmapa
-      friend: Kaibigan
     show:
       title: Aking Tapalodo
       edit_your_profile: Baguhin ang iyong balangkas
-      my friends: Aking mga kaibigan
-      no friends: Hindi ka pa nagdaragdag ng sinumang mga kaibigan.
       nearby users: Iba pang kalapit na mga tagagamit
       no nearby users: Wala pang ibang mga tagagamit na umaamin sa pagmamapa ng malapitan.
-      friends_changesets: mga pagbabago ng mga kaibigan
-      friends_diaries: mga lahok ng mga kaibigan
       nearby_changesets: mga pagtatakda ng pagbabago mula sa kalapit na mga tagagamit
       nearby_diaries: mga inilahok sa talaarawan ng kalapit na mga tagagamit
   diary_entries:
@@ -447,7 +436,6 @@ tl:
       use_map_link: Gamitin ang Mapa
     index:
       title: Mga talaarawan ng mga tagagamit
-      title_friends: Mga talaarawan ng mga kaibigan
       title_nearby: Mga talaarawan ng Kanugnog na mga Tagagamit
       user_title: Talaarawan ni %{user}
       in_language_title: Mga Pagpapasok sa Talaarawan na nasa %{language}
@@ -504,28 +492,6 @@ tl:
         title: Mga ipinasok sa talaarawan ng OpenStreetMap
         description: Kamakailang mga pagpapasok sa talaarawan mula sa mga tagagamit
           ng OpenStreetMap
-  diary_comments:
-    index:
-      title: Mga Puna sa Talaarawan ay idinagdag ni %{user}
-      heading: Mga Puna sa Talaarawan ni %{user}
-      subheading_html: Mga Puna sa Talaarawan ay idinagdag ni %{user}
-      no_comments: Walang mga puna sa talaarawan
-    page:
-      post: Ipaskil
-      when: Kailan
-      comment: Puna
-  friendships:
-    make_friend:
-      heading: Idagdag si %{user} bilang isang kaibigan?
-      button: idagdag bilang kaibigan
-      success: Kaibigan mo na ngayon si %{name}!
-      failed: Paumanhin, nabigong maidagdag si %{name} bilang isang kaibigan.
-      already_a_friend: Kaibigan ka na ni %{name}.
-    remove_friend:
-      heading: Tanggalin bilang isang kaibigan si %{user}?
-      button: Tanggalin bilang kaibigan
-      success: Si %{name} ay tinanggal mula sa mga kaibigan mo.
-      not_a_friend: Si %{name} ay hindi isa sa mga kaibigan mo.
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1224,15 +1190,10 @@ tl:
         ng OpenStreetMap na may paksang %{subject}:'
       header_html: 'Si %{from_user} ay nagpadala sa iyo ng isang mensahe sa pamamagitan
         ng OpenStreetMap na may paksang %{subject}:'
-    friendship_notification:
+    follow_notification:
       hi: Kumusta %{to_user},
-      subject: '[OpenStreetMap] Idinagdag ka ni %{user} bilang isang kaibigan'
-      had_added_you: Idinagdag ka ni %{user} bilang isang kaibigan doon sa OpenStreetMap.
       see_their_profile: Maaari mong makita ang kaniyang balangkas sa %{userurl}.
       see_their_profile_html: Maaari mong makita ang kaniyang balangkas sa %{userurl}.
-      befriend_them: Maaari mong rin siyang idagdag bilang isang kaibigan sa %{befriendurl}.
-      befriend_them_html: Maaari mong rin siyang idagdag bilang isang kaibigan sa
-        %{befriendurl}.
     gpx_failure:
       hi: Kumusta %{to_user},
       failed_to_import: 'nabigo sa pag-angkat. Narito ang kamalian:'
@@ -1359,11 +1320,13 @@ tl:
       wrong_user: Lumagda ka bilang si `%{user}' ngunit ang mensaheng hiniling mong
         basahin ay hindi ipinadala ni o papunta sa tagagamit na iyan. Mangyaring lumagda
         bilang ang tamang tagagamit upang mabasa ito.
-    mark:
-      as_read: Minarkahan ang mensahe bilang nabasa na
-      as_unread: Minarkahan ang mensahe bilang hindi pa nababasa
     destroy:
       destroyed: Binura ang mensahe
+    read_marks:
+      create:
+        notice: Minarkahan ang mensahe bilang nabasa na
+      destroy:
+        notice: Minarkahan ang mensahe bilang hindi pa nababasa
     mailboxes:
       heading:
         my_inbox: Kahong-tanggapan Ko
@@ -1821,7 +1784,6 @@ tl:
       display name description: Ang iyong pangalan ng tagagamit na ipinapakita sa
         madla. Maaari mo itong baguhin mamaya sa loob ng mga kanaisan.
       continue: Magpatala
-      terms accepted: Salamat sa pagtanggap ng bagong mga tuntunin ng tagapag-ambag!
       use external auth: Bilang alternatibo, gumamit ng serbisyo ikatlong partido
         para lumagda
     no_such_user:
@@ -1846,8 +1808,6 @@ tl:
       edits: mga pagbabago
       traces: mga bakas
       notes: Mga tala ng mapa
-      remove as friend: tanggalin bilang kaibigan
-      add as friend: idagdag bilang kaibigan
       mapper since: 'Tagapagmapa mula pa noong:'
       ct status: 'Mga tuntunin sa taga-ambag:'
       ct undecided: Walang kapasyahan
@@ -1899,6 +1859,15 @@ tl:
       user:
         summary_html: Nilikha ang %{name} mula sa %{ip_address} noong %{date}
         summary_no_ip_html: Nilikha ang %{name} noong %{date}
+    changeset_comments:
+      page:
+        when: Kailan
+        comment: Puna
+    diary_comments:
+      index:
+        title: Mga Puna sa Talaarawan ay idinagdag ni %{user}
+      page:
+        post: Ipaskil
     suspended:
       title: Naantalang Akawnt
       heading: Inantala ang Akawnt
index e7a1997484e07a6097a6fa8d203a1468c48a9460..111630be491c97f19fb9a914d9c19ebe3ec90c0e 100644 (file)
@@ -38,6 +38,7 @@
 # Author: SalihB
 # Author: Sayginer
 # Author: Sezgin İbiş
+# Author: Slickdaddy
 # Author: Stonecy
 # Author: Sucsuzz
 # Author: Szoszv
@@ -299,14 +300,6 @@ tr:
       openid:
         link: https://wiki.openstreetmap.org/wiki/Tr:OpenID
         link text: bu nedir?
-      public editing:
-        heading: Herkese açık düzenleme modu
-        enabled: Etkin. Anonim değil ve verileri düzenleyebilir.
-        enabled link: https://wiki.openstreetmap.org/wiki/Tr:Anonymous_edits
-        enabled link text: bu nedir?
-        disabled: Devre dışı bırakıldı ve verileri düzenleyemiyor, önceki tüm düzenlemeler
-          anonim.
-        disabled link text: neden düzenleyemiyorum?
       contributor terms:
         heading: Katılımcı Şartları
         agreed: Yeni katılımcı şartlarını kabul ettin.
@@ -386,7 +379,6 @@ tr:
         readable_summary: okunabilir özet
         informal_translations: resmî olmayan çeviriler
         continue: Devam
-        declined: https://wiki.openstreetmap.org/wiki/Tr:Contributor_Terms_Declined
         cancel: İptal
         you need to accept or decline: Lütfen katılımcı şartlarını okuyunuz ve şartları
           kabul ya da ret ediniz.
@@ -395,6 +387,8 @@ tr:
           france: Fransa
           italy: İtalya
           rest_of_world: Dünyanın geri kalanı
+      update:
+        terms accepted: Yeni katılımcı şartları kabul ettiğin için teşekkür ederiz!
       terms_declined_flash:
         terms_declined_html: Yeni Katılımcı Şartlarına kabul etmediğiniz için üzgünüz.
           Daha fazla bilgi için lütfen %{terms_declined_link} sayfasına bakınız.
@@ -547,7 +541,6 @@ tr:
       title: Değişiklik Kayıtları
       title_user: '%{user} kullanıcısının değişiklik kayıtları'
       title_user_link_html: '%{user_link} kullanıcısının değişiklik kayıtları'
-      title_friend: Arkadaşlarımın değişiklik kayıtları
       title_nearby: Yakındaki kullanıcıların değişiklik kayıtları
       empty: Değişiklik kayıtları bulunamadı.
       empty_area: Bu alanda değişiklik kaydı bulunmuyor.
@@ -562,19 +555,6 @@ tr:
         created: Oluşturulma
         closed: Kapandı
         belongs_to: Yazar
-    subscribe:
-      heading: Aşağıdaki değişiklik kaydı tartışmasına abone olmak ister misiniz?
-      button: Tartışmaya abone ol
-    unsubscribe:
-      heading: Aşağıdaki değişiklik kaydı tartışmasının aboneliği iptal edilsin mi?
-      button: Tartışma aboneliğinden çık
-    heading:
-      title: Değişiklik Kaydı %{id}
-      created_by_html: '%{link_user} tarafından %{created} tarihinde oluşturuldu.'
-    no_such_entry:
-      heading: 'Şu kimliğe sahip girdi yok: %{id}'
-      body: Üzgünüz, %{id} kimliğine sahip herhangi bir değişiklik kaydı yok. Lütfen
-        yazımınızı kontrol edin ya da tıkladığınız bağlantı yanlış olabilir.
     show:
       title: 'Değişiklik kaydı: %{id}'
       created: 'Oluşturma: %{when}'
@@ -607,6 +587,22 @@ tr:
       sorry: 'Üzgünüz, #%{id} değişiklik kümesi bulunamadı.'
     timeout:
       sorry: Üzgünüz, değişiklik kayıtlarının listelenmesi fazla sürdü.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Aşağıdaki değişiklik kaydı tartışmasına abone olmak ister misiniz?
+        button: Tartışmaya abone ol
+      unsubscribe:
+        heading: Aşağıdaki değişiklik kaydı tartışmasının aboneliği iptal edilsin
+          mi?
+        button: Tartışma aboneliğinden çık
+    heading:
+      title: Değişiklik Kaydı %{id}
+      created_by_html: '%{link_user} tarafından %{created} tarihinde oluşturuldu.'
+    no_such_entry:
+      heading: 'Şu kimliğe sahip girdi yok: %{id}'
+      body: Üzgünüz, %{id} kimliğine sahip herhangi bir değişiklik kaydı yok. Lütfen
+        yazımınızı kontrol edin ya da tıkladığınız bağlantı yanlış olabilir.
   dashboards:
     contact:
       km away: '%{count} km uzak'
@@ -615,18 +611,13 @@ tr:
     popup:
       your location: Konumum
       nearby mapper: Yakındaki haritacı
-      friend: Arkadaş
     show:
       title: Gösterge Panelim
       no_home_location_html: '%{edit_profile_link} ve yakındaki kullanıcıları görmek
         için bulunduğunuz konumu ayarlayın.'
       edit_your_profile: Profilinizi düzenleyin
-      my friends: Arkadaşlarım
-      no friends: Henüz herhangi bir arkadaş eklemediniz.
       nearby users: Yakın çevrede bulunan kullanıcılar
       no nearby users: Yakın çevrede herhangi başka kullanıcı henüz yok.
-      friends_changesets: arkadaşların değişiklik kayıtları
-      friends_diaries: arkadaşların günlük girdileri
       nearby_changesets: yakınlarındaki kullanıcıların bütün değişiklik kayıtları
       nearby_diaries: yakınlarındaki kullanıcıların günlük girdileri
   diary_entries:
@@ -637,7 +628,6 @@ tr:
       use_map_link: Haritayı Kullan
     index:
       title: Kullanıcı Günlükleri
-      title_friends: Arkadaşların günlükleri
       title_nearby: Yakındaki kullanıcıların günlükleri
       user_title: '%{user} Kullanıcısının Günlüğü'
       in_language_title: '%{language} dillindeki günlük girdiler'
@@ -706,15 +696,6 @@ tr:
       heading: Aşağıdaki günlük girdisi tartışmasının aboneliği iptal edilsin mi?
       button: Tartışma aboneliğinden çık
   diary_comments:
-    index:
-      title: '%{user} tarafından yapılan günlük yorumları'
-      heading: '%{user} Kullanıcısının Günlük Yorumları'
-      subheading_html: '%{user} tarafından yapılan günlük yorumları'
-      no_comments: Günlük yorumu yok
-    page:
-      post: Gönderi
-      when: Tarih
-      comment: Yorum
     new:
       heading: Aşağıdaki günlük girdisinin tartışmasına bir yorum ekle?
   doorkeeper:
@@ -772,20 +753,10 @@ tr:
       title: Dosya bulunamadı
       description: OpenStreetMap sunucusunda (HTTP 404) bu ada sahip bir dosya/dizin/API
         işlemi bulunamadı
-  friendships:
-    make_friend:
-      heading: '%{user}, arkadaş olarak eklensin mi?'
-      button: Arkadaş olarak ekle
-      success: '%{name}, arkadaş listesine eklendi!'
-      failed: Üzgünüz, %{name} arkadaş olarak eklenemedi.
-      already_a_friend: '%{name} ile zaten arkadaşsın.'
-      limit_exceeded: Son zamanlarda çok sayıda kullanıcıyla arkadaş oldunuz. Lütfen
-        daha fazla arkadaş olmaya çalışmadan önce bir süre bekleyin.
-    remove_friend:
-      heading: '%{user}, arkadaşlıktan çıkarılsın mı?'
-      button: Arkadaşlıktan Çıkar
-      success: '%{name}, arkadaş listesinden çıkarıldı.'
-      not_a_friend: '%{name}, arkadaşın değil.'
+  follows:
+    show:
+      follow:
+        button: Kullanıcıyı Takip Et
   geocoder:
     search:
       title:
@@ -1757,14 +1728,10 @@ tr:
         adresinden mesaj gönderebilirsiniz.
       footer_html: İletiyi %{readurl} adresinden de okuyabilir ve yazara %{replyurl}
         adresinden ileti gönderebilirsiniz.
-    friendship_notification:
+    follow_notification:
       hi: Merhaba %{to_user},
-      subject: '[OpenStreetMap] kullanıcı %{user} seni arkadaş olarak ekledi'
-      had_added_you: Kullanıcı %{user} seni arkadaş olarak OpenStreetMap'te ekledi.
       see_their_profile: '%{userurl} üzerinden profillerini görebilirsiniz.'
       see_their_profile_html: '%{userurl} üzerinden profilini görebilirsiniz.'
-      befriend_them: '%{befriendurl} üzerinden arkadaş olarak da ekleyebilirsiniz.'
-      befriend_them_html: '%{befriendurl} üzerinden arkadaş olarak da ekleyebilirsiniz.'
     gpx_details:
       details: 'Dosya bilgileriniz:'
       filename: Dosya adı
@@ -1941,14 +1908,17 @@ tr:
       wrong_user: '''%{user}'' olarak giriş yaptınız ancak okumak istediğiniz mesaj
         o kullanıcı tarafından veya o kullanıcıya gönderilmedi. Lütfen okumak için
         doğru kullanıcı olarak giriş yapın.'
-    mark:
-      as_read: Mesaj okundu olarak işaretlendi
-      as_unread: Mesaj okunmadı olarak işaretlendi
-    unmute:
-      notice: Mesaj, gelen kutusuna taşındı
-      error: Mesaj, gelen kutusuna taşınamadı.
     destroy:
       destroyed: Mesaj silindi
+    read_marks:
+      create:
+        notice: Mesaj okundu olarak işaretlendi
+      destroy:
+        notice: Mesaj okunmadı olarak işaretlendi
+    mutes:
+      destroy:
+        notice: Mesaj, gelen kutusuna taşındı
+        error: Mesaj, gelen kutusuna taşınamadı.
     mailboxes:
       heading:
         my_inbox: Gelen kutusu
@@ -2725,13 +2695,14 @@ tr:
     offline:
       heading: GPX Yükleme Servisi Çevrimdışı
       message: GPX dosya depolama ve yükleme sistemi şu anda kullanılamıyor.
-    georss:
-      title: OpenStreetMap GPS İzleri
-    description:
-      description_with_count:
-        one: '%{user} tarafından %{count} noktalı GPX dosyası'
-        other: '%{user} tarafından %{count} noktalı GPX dosyası'
-      description_without_count: '%{user} tarafından GPX dosyası'
+    feeds:
+      show:
+        title: OpenStreetMap GPS İzleri
+      description:
+        description_with_count:
+          one: '%{user} tarafından %{count} noktalı GPX dosyası'
+          other: '%{user} tarafından %{count} noktalı GPX dosyası'
+        description_without_count: '%{user} tarafından GPX dosyası'
   application:
     permission_denied: Bu eyleme erişme izniniz yok
     require_cookies:
@@ -2893,7 +2864,6 @@ tr:
           politikası
         contributor_terms: katılımcı şartları
       continue: Kaydol
-      terms accepted: Yeni katılımcı şartları kabul ettiğin için teşekkür ederiz!
       email_help:
         privacy_policy: gizlilik politikası
         privacy_policy_title: E-posta adresleriyle ilgili bölümü içeren OSMF gizlilik
@@ -2931,8 +2901,6 @@ tr:
       edits: Düzenlemeler
       traces: İzler
       notes: Harita Notları
-      remove as friend: Arkadaşlıktan Çıkar
-      add as friend: Arkadaş Olarak Ekle
       mapper since: 'Haritacılığa başlama tarihi:'
       last map edit: 'Son harita düzenlemesi:'
       no activity yet: Henüz herhangi bir etkinlik yok
@@ -3008,6 +2976,18 @@ tr:
       user:
         summary_html: '%{name}, %{date} tarihinde %{ip_address} tarafından oluşturuldu.'
         summary_no_ip_html: '%{name} %{date} tarihinde oluşturuldu.'
+    comments:
+      index:
+        no_comments: Yorum yok
+    changeset_comments:
+      page:
+        when: Tarih
+        comment: Yorum
+    diary_comments:
+      index:
+        title: '%{user} tarafından yapılan günlük yorumları'
+      page:
+        post: Gönderi
     suspended:
       title: Hesap Askıda
       heading: Hesap Askıda
index dc76c083a622f3b531c19390864b38fe405c4a8d..6938e45459c4403cf78f30566f09a99b3c4f0280 100644 (file)
@@ -242,13 +242,6 @@ tt:
       external auth: Тышкы аутентификация
       openid:
         link text: бу нәрсә?
-      public editing:
-        heading: Барысына күренерлек үзгәртүләр
-        enabled: Кабызылган. Мөхәррирләргә була. Үзгәртүләр аноним түгел.
-        enabled link text: бу нәрсә?
-        disabled: Сүндерелгән һәм яңа кертемнәр ясый алмый, моңарчы ясалган үзгәртүләр
-          аноним була кала.
-        disabled link text: мин ник үзгәртүләр кертә алмыйм?
       contributor terms:
         heading: Катнашу шартлары
         agreed: Сез яңа Катнашу Шартлары белән ризалаштыгыз.
@@ -416,17 +409,12 @@ tt:
   dashboards:
     contact:
       latest_edit_html: 'Соңгы төзәтмә (%{ago}):'
-    popup:
-      friend: Дус
-    show:
-      my friends: Дусларым
   diary_entries:
     form:
       location: Урын
       use_map_link: Хаританы кулланырга
     index:
       title: Көндәлекләр
-      title_friends: Дуслар көндәлекләре
       user_title: '%{user} кулланучының көндәлеге'
     show:
       user_title: '%{user} кулланучының көндәлеге'
@@ -438,10 +426,6 @@ tt:
       confirm: Раслау
     location:
       location: 'Урын:'
-  diary_comments:
-    page:
-      when: Кайчан
-      comment: Шәрех
   errors:
     contact:
       contact: элемтә
@@ -900,6 +884,10 @@ tt:
       show:
         title: Кулланучылар
         heading: Кулланучылар
+    changeset_comments:
+      page:
+        when: Кайчан
+        comment: Шәрех
   user_blocks:
     helper:
       block_duration:
index 768f6282b058c0654960113dc46efa85b0629940..d54a3cf528e77e19b8635b92ace8cfaeab76d413 100644 (file)
@@ -133,7 +133,7 @@ uk:
         support_url: URL підтримки
         allow_read_prefs: отримувати налаштування
         allow_write_prefs: змінювати налаштування
-        allow_write_diary: створювати записи у щоденнику, коментарі та заводити друзів
+        allow_write_diary: створювати записи у щоденнику та залишати коментарі
         allow_write_api: змінювати мапу
         allow_read_gpx: отримувати приватні GPS-треки.
         allow_write_gpx: надсилати GPS-треки на сервер
@@ -323,13 +323,6 @@ uk:
       openid:
         link: https://wiki.openstreetmap.org/wiki/Uk:OpenID
         link text: що це?
-      public editing:
-        heading: Загальнодоступне редагування
-        enabled: Увімкнено. Можна редагувати. Зміни не анонімні.
-        enabled link: https://wiki.openstreetmap.org/wiki/Uk:Anonymous_edits
-        enabled link text: що це?
-        disabled: Вимкнено й не можна редагувати дані, всі попередні редагування анонімні.
-        disabled link text: чому я не можу вносити зміни?
       contributor terms:
         heading: Умови Співпраці
         agreed: Ви погодилися на нові Умови Співпраці.
@@ -406,12 +399,12 @@ uk:
         consider_pd: На додачу до зазначеного, прошу вважати мій внесок суспільним
           надбанням
         consider_pd_why: що це?
+        consider_pd_why_url: https://wiki.openstreetmap.org/wiki/Uk:Чому_я_хочу,_щоб_мої_внески_були_суспільним_надбанням
         guidance_info_html: 'Інформація, що допоможе зрозуміти ці терміни: %{readable_summary_link}
           та %{informal_translations_link}'
         readable_summary: простою мовою
         informal_translations: неофіційні переклади
         continue: Продовжити
-        declined: https://wiki.openstreetmap.org/wiki/Uk:Contributor_Terms_Declined
         cancel: Скасувати
         you need to accept or decline: Будь ласка, прочитайте, а потім або прийміть
           або відхиліть нові Умови Участі.
@@ -420,6 +413,8 @@ uk:
           france: Франція
           italy: Італія
           rest_of_world: Решта світу
+      update:
+        terms accepted: Дякуємо за прийняття нових умов співпраці!
       terms_declined_flash:
         terms_declined_html: Нам шкода, що ви не погодились з новими Умовами Співпраці.
           Докладніше дивіться %{terms_declined_link}.
@@ -533,6 +528,8 @@ uk:
       view_redacted_data: Переглянути очищені дані
       view_redaction_message: Переглянути повідомлення про очищення
   nodes:
+    not_found_message:
+      sorry: 'Вибачте, не вдалося знайти точку #%{id}.'
     timeout:
       sorry: На жаль, отримання даних для точки з ідентифікатором %{id} тривало занадто
         довго.
@@ -543,6 +540,8 @@ uk:
       sorry: На жаль, отримання історії точки з ідентифікатором %{id} потребує багато
         часу.
   ways:
+    not_found_message:
+      sorry: 'На жаль, лінію #%{id} не знайдено.'
     timeout:
       sorry: На жаль, отримання даних для лінії з ідентифікатором %{id} зайняло занадто
         багато часу.
@@ -553,6 +552,8 @@ uk:
       sorry: На жаль, отримання історії лінії з ідентифікатором %{id} потребує багато
         часу.
   relations:
+    not_found_message:
+      sorry: 'На жаль, зв''язок #%{id} не знайдено.'
     timeout:
       sorry: На жаль, отримання даних для зв’язку з ідентифікатором %{id} зайняло
         занадто багато часу.
@@ -581,7 +582,7 @@ uk:
       title: Набори змін
       title_user: Набори змін від %{user}
       title_user_link_html: Набори змін від %{user_link}
-      title_friend: Набори змін друзів
+      title_followed: Набори змін від тих за ким слідкуєш
       title_nearby: Набори змін маперів поряд з вами
       empty: Жодного набору змін не знайдено.
       empty_area: На цій ділянці набори змін відсутні.
@@ -596,19 +597,6 @@ uk:
         created: Створено
         closed: Закрито
         belongs_to: Автор
-    subscribe:
-      heading: Підписатися на обговорення набору змін?
-      button: Підписатись на обговорення
-    unsubscribe:
-      heading: Відписатись від обговорення набору змін?
-      button: Відписатися від обговорення
-    heading:
-      title: Набір змін %{id}
-      created_by_html: Створений %{link_user} %{created}.
-    no_such_entry:
-      heading: Немає запису з id %{id}
-      body: На жаль, немає набору змін %{id}. Будь ласка, перевірте посилання, або,
-        можливо, посилання, яке ви натиснули, неправильне.
     show:
       title: 'Набір змін: %{id}'
       created: 'Створено: %{when}'
@@ -637,9 +625,26 @@ uk:
       ways_paginated: Лінії (%{x}-%{y} з %{count})
       relations: Зв’язки (%{count})
       relations_paginated: Зв’язки (%{x}-%{y} з %{count})
+    not_found_message:
+      sorry: 'На жаль, набір змін #%{id} не знайдено.'
     timeout:
       sorry: На жаль, перелік наборів змін, який ви запросили, потребує забагато часу
         для завантаження.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Підписатися на обговорення набору змін?
+        button: Підписатись на обговорення
+      unsubscribe:
+        heading: Відписатись від обговорення набору змін?
+        button: Відписатися від обговорення
+    heading:
+      title: Набір змін %{id}
+      created_by_html: Створений %{link_user} %{created}.
+    no_such_entry:
+      heading: Немає запису з id %{id}
+      body: На жаль, немає набору змін %{id}. Будь ласка, перевірте посилання, або,
+        можливо, посилання, яке ви натиснули, неправильне.
   dashboards:
     contact:
       km away: '%{count} км від вас'
@@ -648,18 +653,18 @@ uk:
     popup:
       your location: Ваше місце розташування
       nearby mapper: Мапери поруч з вами
-      friend: Друг
+      following: Відслідковуєш
     show:
       title: Інфо панель
       no_home_location_html: '%{edit_profile_link} і встановіть своє місце розташування,
         щоб бачити маперів поруч.'
       edit_your_profile: Редагувати свій профіль
-      my friends: Друзі
-      no friends: Ви ще не додали жодного друга.
+      followings: Відслідковуєш
+      no followings: Ви поки що не слідкуєте за жодним учасником.
       nearby users: Інші мапери поруч
       no nearby users: Поблизу поки немає маперів, які позначили своє розташування.
-      friends_changesets: набори змін друзів
-      friends_diaries: дописи в щоденниках друзів
+      followed_changesets: набори змін
+      followed_diaries: щоденники
       nearby_changesets: набори змін від маперів, що знаходяться поруч
       nearby_diaries: дописи в щоденниках маперів, що знаходяться поруч з вами
   diary_entries:
@@ -670,7 +675,7 @@ uk:
       use_map_link: Вказати на мапі
     index:
       title: Щоденники учасників
-      title_friends: Щоденники друзів
+      title_followed: Щоденники тих, за ким слідкуєш
       title_nearby: Щоденники учасників поряд з вами
       user_title: Щоденник %{user}
       in_language_title: Записи щоденника мовою %{language}
@@ -738,15 +743,6 @@ uk:
       heading: Відписатись від обговорення цього допису щоденника?
       button: Відписатися від обговорення
   diary_comments:
-    index:
-      title: Коментарі до щоденника додав %{user}
-      heading: Коментарі щоденника %{user}
-      subheading_html: Коментарі до щоденника додав %{user}
-      no_comments: Немає коментарів до допису
-    page:
-      post: Повідомлення
-      when: Коли
-      comment: Коментар
     new:
       heading: Додати коментар до обговорення запису в щоденнику?
   doorkeeper:
@@ -803,20 +799,23 @@ uk:
       title: Файл не знайдено
       description: Не вдалося знайти файл/теку/дію API з такою назвою на сервері OpenStreetMap
         (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Додати %{user} як друга?
-      button: Додати як друга
-      success: Тепер %{name} є вашим другом!
-      failed: На жаль, %{name} не вдалось додати до списку друзів.
-      already_a_friend: Ви вже товаришуєте з %{name}.
-      limit_exceeded: Ви надіслали багато запитів на додавання друзів. Почекайте трохи
-        перед тим, надсилати нові.
-    remove_friend:
-      heading: Вилучити %{user} з друзів?
-      button: Вилучити із списку друзів
-      success: '%{name} вилучений з вашого списку друзів.'
-      not_a_friend: '%{name} не є вашим другом.'
+  follows:
+    show:
+      follow:
+        heading: Хочете слідкувати за %{user}?
+        button: Слідкувати за учасником
+      unfollow:
+        heading: Хочете припинити слідкувати за %{user}?
+        button: Не слідкувати за учасником
+    create:
+      success: Тепер ви слідкуєте за %{name}!
+      failed: Вибачте, ваш запит на слідкування за %{name} зазнав невдачі.
+      already_followed: Ви вже слідкуєте за %{name}.
+      limit_exceeded: Ви надіслали багато запитів на слідкування за учасниками. Почекайте
+        трохи перед тим, як надсилати нові.
+    destroy:
+      success: Ви більше не слідкуєте за %{name}.
+      not_followed: Ви не слідкуєте за %{name}.
   geocoder:
     search:
       title:
@@ -1153,6 +1152,14 @@ uk:
           wayside_shrine: Придорожній храм
           wreck: Місце катастрофи
           "yes": Історичне місце
+        information:
+          guidepost: Вказівник напрямку
+          board: Інформаційна дошка
+          map: Карта
+          office: Туристичний офіс
+          terminal: Інформаційний термінал
+          sign: Інформаційний знак
+          stele: Інформаційна стела
         junction:
           "yes": Перехресття
         landuse:
@@ -1225,6 +1232,8 @@ uk:
           track: Бігова доріжка
           water_park: Аквапарк
           "yes": Дозвілля
+        lock:
+          "yes": Шлюз
         man_made:
           adit: Штольня
           advertising: Реклама
@@ -1565,6 +1574,17 @@ uk:
           building_passage: Проїзд через будівлю
           culvert: Дренажна труба
           "yes": Тунель
+        water:
+          lake: Озеро
+          pond: Ставок
+          reservoir: Водосховище
+          basin: Водонакопичувач
+          fishpond: Ставок для риби
+          lagoon: Лагуна
+          wastewater: Відстійник очисних споруд
+          oxbow: Стариця
+          stream_pool: Плес
+          lock: Шлюз
         waterway:
           artificial: Штучні водний шлях
           boatyard: Верф
@@ -1633,6 +1653,10 @@ uk:
         open: Відкрито
         resolved: Вирішено
     show:
+      title:
+        open: 'Відкрити тікет #%{issue_id}'
+        ignored: 'Проігнорований тікет #%{issue_id}'
+        resolved: 'Розвʼязаний тікет #%{issue_id}'
       reports:
         one: '%{count} скарга'
         few: '%{count} скарги'
@@ -1768,21 +1792,29 @@ uk:
         %{replyurl}
       footer_html: Ви також можете прочитати повідомлення в %{readurl} і ви можете
         відповісти на %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Привіт, %{to_user},
-      subject: '[OpenStreetMap] %{user} додав Вас як друга'
-      had_added_you: '%{user} додав Вас як друга в OpenStreetMap.'
+      subject: '[OpenStreetMap] %{user} слідкує за вами'
+      followed_you: '%{user} тепер слідкує за вашим мапінгом на OpenStreetMap.'
       see_their_profile: Ви можете побачити їх профіль на %{userurl}.
       see_their_profile_html: Ви можете ознайомитись з його/її профілем - %{userurl}.
-      befriend_them: Ви також можете додати їх як друзів %{befriendurl}.
-      befriend_them_html: Ви також можете додати його/її до друзів %{befriendurl}.
+      follow_them: Ви також можете слідувати у відповідь за посиланням %{followurl}.
+      follow_them_html: Ви також можете слідувати у відповідь за посиланням %{followurl}.
+    gpx_details:
+      details: 'Деталі вашого файлу:'
+      filename: Назва файлу
+      url: URL
+      description: Опис
+      tags: Теґи
+      total_points: Загальна кількість точок
+      imported_points: Кількість імпортованих точок
     gpx_failure:
       hi: Привіт, %{to_user},
-      failed_to_import: 'не вдалося імпортувати як файл GPS-треку. Переконайтеся,
-        що ваш файл є відповідним файлом GPX або архівом, який містить файл(и) GPX
-        Ñ\83 Ð¿Ñ\96дÑ\82Ñ\80имÑ\83ваномÑ\83 Ñ\84оÑ\80маÑ\82Ñ\96 (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
-        Чи може виникнути проблема з форматом або синтаксисом вашого файлу? Ось помилка
-        імпорту:'
+      failed_to_import: Схоже, що ваш файл не вдалося імпортувати як GPS-трек.
+      verify: 'Переконайтеся, що ваш файл є вірним файлом GPX або архівом, який містить
+        Ñ\84айл(и) GPX Ñ\83 Ð¿Ñ\96дÑ\82Ñ\80имÑ\83ваномÑ\83 Ñ\84оÑ\80маÑ\82Ñ\96 (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz,
+        .gpx.bz2). Чи може виникнути проблема з форматом або синтаксисом вашого файлу?
+        Ось помилка імпорту:'
       more_info: Більше інформації про помилки імпорту GPX та способи їх уникнення
         можна знайти за посиланням %{url}.
       more_info_html: Докладна інформація про проблеми імпорту GPX та шляхи їх вирішення
@@ -1790,6 +1822,7 @@ uk:
       subject: '[OpenStreetMap] Збій імпорту GPX'
     gpx_success:
       hi: Привіт, %{to_user},
+      imported_successfully: Схоже, ваш файл успішно імпортовано як GPS-трек.
       all_your_traces: Усі ваші успішно завантажені GPX-треки можна знайти за посиланням
         %{url}.
       all_your_traces_html: Усі успішно завантажені треки GPX можна знайти за адресою
@@ -1893,6 +1926,9 @@ uk:
       success: Ваш обліковий запис підтверджено, дякуємо за реєстрацію!
       already active: Цей обліковий запис вже підтверджений.
       unknown token: Термін дії коду підтвердження вже минув або його не існує.
+      if_need_resend: Якщо вам потрібно, щоб ми повторно надіслали електронного листа
+        з підтвердженням, натисніть кнопку нижче.
+      resend_button: Повторно надіслати електронного листа з підтвердженням
     confirm_resend:
       failure: Учасника %{name} не знайдено.
     confirm_email:
@@ -1931,14 +1967,17 @@ uk:
       wrong_user: Ви увійшли як „%{user}“, але повідомлення, яке вас попросили прочитати,
         не було надіслане вами, чи призначено для вас. Будь ласка, увійдіть до відповідного
         облікового запису, щоб прочитати його.
-    mark:
-      as_read: Повідомлення позначене як прочитане
-      as_unread: Повідомлення позначене як непрочитане
-    unmute:
-      notice: Повідомлення переміщено до "Вхідних".
-      error: Не вдалося перемістити повідомлення до "Вхідних".
     destroy:
       destroyed: Повідомлення вилучено
+    read_marks:
+      create:
+        notice: Повідомлення позначене як прочитане
+      destroy:
+        notice: Повідомлення позначене як непрочитане
+    mutes:
+      destroy:
+        notice: Повідомлення переміщено до "Вхідних".
+        error: Не вдалося перемістити повідомлення до "Вхідних".
     mailboxes:
       heading:
         my_inbox: Вхідні
@@ -2020,6 +2059,16 @@ uk:
   preferences:
     show:
       title: Вподобання
+      preferred_site_color_scheme: Бажана колірна схема вебсайту
+      site_color_schemes:
+        auto: Авто
+        light: Світла
+        dark: Темна
+      preferred_map_color_scheme: Бажана колірна схема мапи
+      map_color_schemes:
+        auto: Авто
+        light: Світла
+        dark: Темна
       save: Зберегти вподобання
     update:
       failure: Неможливо зберегти вподобання.
@@ -2710,15 +2759,16 @@ uk:
       heading: Сховище GPX відключено
       message: Доступ до сховища GPX-файлів та системи завантаження на поточний момент
         відсутній.
-    georss:
-      title: GPS-Треки OpenStreetMap
-    description:
-      description_with_count:
-        one: Файл GPX з %{count} точкою від %{user}
-        few: Файл GPX з %{count} точками від %{user}
-        many: Файл GPX з %{count} точками від %{user}
-        other: ""
-      description_without_count: GPX файл від %{user}
+    feeds:
+      show:
+        title: GPS-Треки OpenStreetMap
+      description:
+        description_with_count:
+          one: Файл GPX з %{count} точкою від %{user}
+          few: Файл GPX з %{count} точками від %{user}
+          many: Файл GPX з %{count} точками від %{user}
+          other: ""
+        description_without_count: GPX файл від %{user}
   application:
     permission_denied: Вибачте, у вас недостатньо прав для виконання цієї дії.
     require_cookies:
@@ -2758,6 +2808,28 @@ uk:
       wikipedia:
         title: Увійти через Вікіпедію
         alt: Wikipedia лого
+    share:
+      email:
+        title: Поділитися через електронну пошту
+        alt: Піктограма електронної пошти
+      bluesky:
+        title: Поділитися у Bluesky
+        alt: Піктограма Bluesky
+      facebook:
+        title: Поділитися у Facebook
+        alt: Піктограма Facebook
+      linkedin:
+        title: Поділитися у LinkedIn
+        alt: Піктограма LinkedIn
+      mastodon:
+        title: Поділитися на Mastodon
+        alt: Піктограма Mastodon
+      telegram:
+        title: "Поділитися в Telegram \U0001F9CC"
+        alt: Піктограма Telegram
+      x:
+        title: Поділитися в X
+        alt: Піктограма X
   oauth:
     permissions:
       missing: Ви не дозволили програмі отримати доступ до цієї функції
@@ -2765,8 +2837,7 @@ uk:
       openid: Вхід за допомогою OpenStreetMap
       read_prefs: Отримувати налаштування
       write_prefs: Змінювати налаштування
-      write_diary: Створювати записи у щоденнику, коментарі та надсилати запити на
-        додавання друзів
+      write_diary: Створювати записи у щоденнику та залишати коментарі
       write_api: Змінювати мапу
       read_gpx: Отримувати приватні GPS-треки
       write_gpx: Завантажувати GPS-треки
@@ -2861,7 +2932,6 @@ uk:
           адреси електронної пошти
         contributor_terms: умови співпраці
       continue: Зареєструватись
-      terms accepted: Дякуємо за прийняття нових умов співпраці!
       email_help:
         privacy_policy: Політикою конфіденційності
         privacy_policy_title: Політика конфіденційності OSMF, має розділ про адреси
@@ -2900,8 +2970,8 @@ uk:
       edits: Редагування
       traces: Треки
       notes: Нотатки
-      remove as friend: Вилучити зі списку друзів
-      add as friend: Додати до списку друзів
+      unfollow: Не відслідковувати
+      follow: Слідкувати
       mapper since: 'Обліковий запис створено:'
       last map edit: 'Останнє редагування мапи:'
       no activity yet: Ще немає активності
@@ -2981,6 +3051,15 @@ uk:
       user:
         summary_html: '%{name} зареєстровано з %{ip_address}, %{date}'
         summary_no_ip_html: '%{name} зареєстровано %{date}'
+    changeset_comments:
+      page:
+        when: Коли
+        comment: Коментар
+    diary_comments:
+      index:
+        title: Коментарі до щоденника додав %{user}
+      page:
+        post: Повідомлення
     suspended:
       title: Обліковий запис призупинено
       heading: Обліковий запис призупинено
@@ -3083,6 +3162,14 @@ uk:
           few: '%{count} роки'
           many: '%{count} років'
           other: ""
+      short:
+        ended: закінчилось
+        revoked_html: відкликано %{name}
+        active: активне
+        active_until_read: активне до моменту ознайомлення
+        read_html: прочитано о %{time}
+        time_in_future_title: '%{time_absolute}; в %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     show:
       title: '%{block_on} був (була) заблокований(а) %{block_by}'
       heading_html: '%{block_on} був (була) заблокований(а) %{block_by}'
@@ -3099,6 +3186,8 @@ uk:
       display_name: Заблокований учасник
       creator_name: Автор
       reason: Причина блокування
+      start: Початок
+      end: Кінець
       status: Стан
     navigation:
       all_blocks: Всі блокування
@@ -3191,17 +3280,38 @@ uk:
         можна було це виправити. Перемістіть позначку в потрібне місце та додайте
         пояснення проблеми.
       anonymous_warning_html: Ви не ввійшли в систему. Будь ласка, %{log_in} або %{sign_up},
-        якщо ви хочете отримувати оновлення щодо своєї нотатки.
+        якщо ви хочете отримувати оновлення щодо своєї нотатки та допомогти маперам
+        розвʼязати її.
       anonymous_warning_log_in: увійдіть
       anonymous_warning_sign_up: зареєструйтесь
+      counter_warning_html: Ви вже опублікували не менше %{x_anonymous_notes}, це
+        чудово для спільноти, дякую! Тепер ми заохочуємо вас %{contribute_by_yourself},
+        це не так складно, а %{community_can_help}.
+      x_anonymous_notes:
+        one: '%{count} анонімну нотатку'
+        few: '%{count} анонімні нотатки'
+        many: '%{count} анонімних нотаток'
+        other: ""
+      counter_warning_guide_link:
+        text: зробити власний внесок
+        url: http://wiki.openstreetmap.org/wiki/Uk:Beginners%27_guide
+      counter_warning_forum_link:
+        text: спільнота допоможе вам
+        url: https://community.openstreetmap.org/c/communities/ua/66
       advice: Ваша нотатка є публічною та може бути використана для оновлення мапи.
         Будь ласка, не додавайте персональні дані або інформацію, яка міститься на
         захищених авторським правом мапах чи каталогах.
       add: Додати нотатку
+    new_readonly:
+      title: Нова нотатка
+      warning: Неможливо створити нові нотатки, оскільки API OpenStreetMap зараз у
+        режимі лише для читання.
     notes_paging_nav:
       showing_page: Сторінка %{page}
       next: Далі
       previous: Назад
+    not_found_message:
+      sorry: 'Вибачте, не вдалося знайти точку #%{id}.'
   javascripts:
     close: Закрити
     share:
@@ -3223,6 +3333,7 @@ uk:
       center_marker: Центрувати мапу на маркері
       paste_html: HTML-код для вбудування у сайт
       view_larger_map: Переглянути більшу мапу
+      only_layers_exported_as_image: 'Лише наступні шари можна експортувати як зображення:'
     embed:
       report_problem: Повідомити про проблему
     key:
index 3555d04c7ffde233ed9c481caf6e69340b0c3f03..0508588f9c44843b5f2fdf901523bbfff130bd48 100644 (file)
@@ -258,14 +258,6 @@ vi:
       external auth: Xác minh Bên ngoài
       openid:
         link text: đây là gì?
-      public editing:
-        heading: Sửa đổi công khai
-        enabled: Kích hoạt. Không vô danh và có thể sửa đổi dữ liệu.
-        enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits?uselang=vi
-        enabled link text: đây là gì?
-        disabled: Vô hiệu. Không thể sửa đổi dữ liệu. Tất cả các sửa đổi truớc là
-          vô danh.
-        disabled link text: tại sao không thể sửa đổi?
       contributor terms:
         heading: Các Điều khoản Đóng góp
         agreed: Bạn đã đồng ý với các Điều khoản Đóng góp mới.
@@ -347,7 +339,6 @@ vi:
         readable_summary: bản tóm tắt dễ đọc
         informal_translations: bản dịch không chính thức
         continue: Tiếp tục
-        declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined?uselang=vi
         cancel: Hủy bỏ
         you need to accept or decline: Để tiếp tục, xin vui lòng đọc các Điều khoản
           Đóng góp mới và chấp nhận hoặc từ chối chúng.
@@ -356,6 +347,8 @@ vi:
           france: Pháp
           italy: Ý
           rest_of_world: Các nước khác
+      update:
+        terms accepted: Cám ơn bạn đã chấp nhận các điều khoản đóng góp mới!
       terms_declined_flash:
         terms_declined_html: Chúng tôi rất tiếc rằng bạn đã quyết định không chấp
           nhận các Điều khoản Đóng góp mới. Vui lòng xem chi tiết tại %{terms_declined_link}.
@@ -499,7 +492,6 @@ vi:
       title: Bộ thay đổi
       title_user: Những bộ thay đổi bởi %{user}
       title_user_link_html: Những bộ thay đổi bởi %{user_link}
-      title_friend: Những bộ thay đổi bởi bạn bè của bạn
       title_nearby: Những bộ thay đổi bởi người dùng ở gần
       empty: Không tìm thấy bộ thay đổi.
       empty_area: Không có bộ thay đổi trong khu vực này.
@@ -514,19 +506,6 @@ vi:
         created: Tạo
         closed: Đóng
         belongs_to: Tác giả
-    subscribe:
-      heading: Theo dõi cuộc thảo luận về bộ thay đổi sau đây?
-      button: Theo dõi cuộc thảo luận
-    unsubscribe:
-      heading: Ngừng theo dõi cuộc thảo luận về bộ thay đổi sau đây?
-      button: Ngừng theo dõi cuộc thảo luận
-    heading:
-      title: Bộ thay đổi %{id}
-      created_by_html: Được %{link_user} tạo %{created}.
-    no_such_entry:
-      heading: 'Không tìm thấy mục có số: %{id}'
-      body: Rất tiếc, không có bộ thay đổi với số %{id}. Xin hãy kiểm tra chính tả,
-        hoặc có lẽ bạn đã theo một liên kết sai.
     show:
       title: 'Bộ thay đổi: %{id}'
       created: 'Lúc tạo: %{when}'
@@ -557,6 +536,21 @@ vi:
       relations_paginated: Các quan hệ (%{x}–%{y} trên %{count})
     timeout:
       sorry: Rất tiếc, việc lấy danh sách bộ thay đổi tốn quá nhiều thì giờ.
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: Theo dõi cuộc thảo luận về bộ thay đổi sau đây?
+        button: Theo dõi cuộc thảo luận
+      unsubscribe:
+        heading: Ngừng theo dõi cuộc thảo luận về bộ thay đổi sau đây?
+        button: Ngừng theo dõi cuộc thảo luận
+    heading:
+      title: Bộ thay đổi %{id}
+      created_by_html: Được %{link_user} tạo %{created}.
+    no_such_entry:
+      heading: 'Không tìm thấy mục có số: %{id}'
+      body: Rất tiếc, không có bộ thay đổi với số %{id}. Xin hãy kiểm tra chính tả,
+        hoặc có lẽ bạn đã theo một liên kết sai.
   dashboards:
     contact:
       km away: cách %{count} km
@@ -565,18 +559,13 @@ vi:
     popup:
       your location: Vị trí của bạn
       nearby mapper: Người vẽ bản đồ ở gần
-      friend: Người bạn
     show:
       title: Bảng điều khiển
       no_home_location_html: '%{edit_profile_link} và đặt vị trí nhà ở để xem những
         người dùng lân cận.'
       edit_your_profile: Sửa đổi hồ sơ của bạn
-      my friends: Bạn bè của tôi
-      no friends: Bạn chưa thêm bạn bè.
       nearby users: Người dùng khác ở gần
       no nearby users: Không có người dùng nào nhận rằng họ ở gần.
-      friends_changesets: bộ thay đổi của bạn bè
-      friends_diaries: mục nhật ký của bạn bè
       nearby_changesets: bộ thay đổi của người dùng ở gần
       nearby_diaries: mục nhật ký của người dùng ở gần
   diary_entries:
@@ -587,7 +576,6 @@ vi:
       use_map_link: Sử dụng Bản đồ
     index:
       title: Các nhật ký của các người dùng
-      title_friends: Các nhật ký của bạn bè
       title_nearby: Các nhật ký của người dùng ở gần
       user_title: Nhật ký của %{user}
       in_language_title: Các mục nhật ký bằng %{language}
@@ -652,15 +640,6 @@ vi:
       heading: Ngừng theo dõi cuộc thảo luận về mục nhật ký sau đây?
       button: Ngừng theo dõi cuộc thảo luận
   diary_comments:
-    index:
-      title: Bình luận Nhật ký do %{user} Đăng
-      heading: Bình luận Nhật ký của %{user}
-      subheading_html: Bình luận Nhật ký do %{user} Đăng
-      no_comments: Không có bình luận nhật ký
-    page:
-      post: Mục nhật ký
-      when: Lúc đăng
-      comment: Nhận xét
     new:
       heading: Thêm bình luận vào cuộc thảo luận về mục nhật ký sau đây?
   doorkeeper:
@@ -717,20 +696,6 @@ vi:
       title: Không tìm thấy tập tin
       description: Không thể tìm thấy thao tác tập tin/thư mục/API có tên đó trên
         máy chủ OpenStreetMap (HTTP 404)
-  friendships:
-    make_friend:
-      heading: Kết bạn với %{user}?
-      button: Thêm là người bạn
-      success: '%{name} bây giờ là bạn bè của bạn!'
-      failed: Rất tiếc, thất bại khi kết bạn với %{name}.
-      already_a_friend: '%{name} đã là người bạn.'
-      limit_exceeded: Bạn đã kết bạn với rất nhiều người dùng gần đây. Vui lòng đợi
-        một lúc trước khi cố gắng kết bạn nữa.
-    remove_friend:
-      heading: Hủy kết nối bạn với %{user}?
-      button: Hủy kết nối bạn
-      success: '%{name} đã được xóa khỏi danh sách bạn của bạn.'
-      not_a_friend: '%{name} đã không phải người bạn.'
   geocoder:
     search:
       title:
@@ -1588,15 +1553,10 @@ vi:
         giả tại %{replyurl}
       footer_html: Bạn cũng có thể đọc thư này tại %{readurl} và có thể nhắn tin cho
         tác giả tại %{replyurl}
-    friendship_notification:
+    follow_notification:
       hi: Chào %{to_user},
-      subject: '[OpenStreetMap] %{user} đã kết bạn với bạn'
-      had_added_you: '%{user} đã thêm bạn vào danh sách bạn tại OpenStreetMap.'
       see_their_profile: Có thể xem trang cá nhân của họ tại %{userurl}.
       see_their_profile_html: Có thể xem trang cá nhân của họ tại %{userurl}.
-      befriend_them: Bạn cũng có thể thêm họ vào danh sách bạn bè của bạn tại %{befriendurl}.
-      befriend_them_html: Bạn cũng có thể thêm họ vào danh sách bạn bè của bạn tại
-        %{befriendurl}.
     gpx_failure:
       hi: Chào %{to_user},
       failed_to_import: 'không nhập thành công là tập tin tuyến GPS. Vui lòng kiểm
@@ -1750,14 +1710,17 @@ vi:
       wrong_user: Bạn đã đăng nhập dùng tài khoản “%{user}” nhưng vừa yêu cầu đọc
         một thư không được gửi từ hay đến bạn. Xin hãy đăng nhập với nhận diện chính
         xác để đọc nó.
-    mark:
-      as_read: Thư đã đọc
-      as_unread: Thư chưa đọc
-    unmute:
-      notice: Thư đã được chuyển vào Hộp thư đến
-      error: Không thể chuyển thư vào Hộp thư đến.
     destroy:
       destroyed: Đã xóa thư
+    read_marks:
+      create:
+        notice: Thư đã đọc
+      destroy:
+        notice: Thư chưa đọc
+    mutes:
+      destroy:
+        notice: Thư đã được chuyển vào Hộp thư đến
+        error: Không thể chuyển thư vào Hộp thư đến.
     mailboxes:
       heading:
         my_inbox: Hộp thư đến
@@ -2463,12 +2426,13 @@ vi:
     offline:
       heading: Kho GPX Ngoại tuyến
       message: Hệ thống lưu giữ và tải lên tập tin GPX tạm ngừng hoạt động.
-    georss:
-      title: Tuyến đường GPS OpenStreetMap
-    description:
-      description_with_count:
-        other: Tập tin GPX của %{user} có %{count} địa điểm
-      description_without_count: Tập tin GPX của %{user}
+    feeds:
+      show:
+        title: Tuyến đường GPS OpenStreetMap
+      description:
+        description_with_count:
+          other: Tập tin GPX của %{user} có %{count} địa điểm
+        description_without_count: Tập tin GPX của %{user}
   application:
     permission_denied: Bạn không có quyền thực hiện tác vụ này
     require_cookies:
@@ -2605,7 +2569,6 @@ vi:
           địa chỉ thư điện tử
         contributor_terms: các điều kiện đóng góp
       continue: Mở tài khoản
-      terms accepted: Cám ơn bạn đã chấp nhận các điều khoản đóng góp mới!
       email_help:
         privacy_policy: quy định về quyền riêng tư
         privacy_policy_title: Quy định về quyền riêng tư của OSMF, bao gồm phần về
@@ -2643,8 +2606,6 @@ vi:
       edits: Đóng góp
       traces: Tuyến đường
       notes: Ghi chú trên Bản đồ
-      remove as friend: Hủy Kết Bạn
-      add as friend: Kết Bạn
       mapper since: 'Tham gia:'
       last map edit: 'Sửa đổi bản đồ cuối cùng:'
       no activity yet: Chưa có hoạt động nào
@@ -2718,6 +2679,15 @@ vi:
       user:
         summary_html: '%{name} do %{ip_address} mở ngày %{date}'
         summary_no_ip_html: '%{name} mở ngày %{date}'
+    changeset_comments:
+      page:
+        when: Lúc đăng
+        comment: Nhận xét
+    diary_comments:
+      index:
+        title: Bình luận Nhật ký do %{user} Đăng
+      page:
+        post: Mục nhật ký
     suspended:
       title: Tài khoản bị Cấm
       heading: Tài khoản bị Cấm
index 3a0c330af6e77969710c4a32e29360da9363c92d..44527ddf361e23fdc4fa8c86cd5ba82af7e702a2 100644 (file)
@@ -232,9 +232,6 @@ xmf:
       openid:
         link: http://wiki.openstreetmap.org/wiki/KA:OpenID
         link text: მუ რე თენა?
-      public editing:
-        enabled link text: მუ რე თენა?
-        disabled link text: მუშენ ვეშემლებუ რედაქტირაფა?
       contributor terms:
         link text: მუ რე თენა?
       save changes button: თირუეფიშ ჩუალა
@@ -366,7 +363,6 @@ xmf:
     index:
       title: თირუეფიშ პაკეტი
       title_user: მახვარებუ %{user}-შ თირუეფიშ პაკეტეფი
-      title_friend: მაჸალეფიშ თირუეფიშ პაკეტეფი
       title_nearby: გოხოლუაშ მახვარებუეფიშ თირუეფიშ პაკეტეფი
       empty: თირუეფიშ პაკეტეფქ ვეგორუ.
       empty_area: თე ტერიტორიას თირუეფიშ პაკეტეფი ვა რე.
@@ -408,12 +404,9 @@ xmf:
     popup:
       your location: თქვანი ორენი
       nearby mapper: უახოლაში კარტოგრაფი
-      friend: მაჸალე
     show:
       title: ჩქიმი პანელი
       edit_your_profile: თქვანი პროფილიშ რედაქტირაფა
-      my friends: ჩქიმი მაჸალეეფი
-      no friends: დიო აკა მაჸალე ვეგეიძინჷნა.
       nearby users: შხვა უახოლაში მახვარებუ
   diary_entries:
     new:
@@ -423,7 +416,6 @@ xmf:
       use_map_link: რუკას ძირაფა
     index:
       title: მახვარებუეფიშ დღარეფი
-      title_friends: მაჸალეეფიშ დღარეფი
       title_nearby: გოხოლუაშ მაჸალეეფიშ დღარეფი
       user_title: '%{user}-იშ დღარი'
       in_language_title: დღარიშ დინნაჭარა %{language}-შა
@@ -467,13 +459,6 @@ xmf:
         title: OpenStreetMap დღარიშ დინნაჭარეფი გეჸვენჯი ნინაშა %{language_name}
       all:
         title: OpenStreetMap დღარიშ დინნაჭარეფი
-  diary_comments:
-    index:
-      no_comments: დღარი კომენტარეფი ვა რე
-    page:
-      post: პოსტი
-      when: მუჟამს
-      comment: კომენტარი
   errors:
     contact:
       contact: კონტაქტი
@@ -481,16 +466,6 @@ xmf:
       title: აპლიკაციაშ ჩილათა
     not_found:
       title: ფაილქ ვეგორჷ
-  friendships:
-    make_friend:
-      heading: ქეგუძინაო %{user} მაჸალეთ?
-      button: მაჸალეთ გეძინა
-      success: '%{name} ასე უკვე თქვანი მაჸალე რე!'
-      already_a_friend: თქვა დო %{name} უკვე მაჸალეეფი რეთ.
-    remove_friend:
-      heading: გეშაბლასათო მაჸალეეფშე %{user}?
-      button: მაჸალეეფშე ლასუა
-      success: '%{name} ეშალასირი რე თქვანი მაჸალეეფშე.'
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1040,6 +1015,13 @@ xmf:
         older: ჯვეში კომენტარეფი
         newer: უახალაში კომენტარეფი
   users:
+    changeset_comments:
+      page:
+        when: მუჟამს
+        comment: კომენტარი
+    diary_comments:
+      page:
+        post: პოსტი
     auth_failure:
       unknown_error: ავთენტიფიკაციაქ ვეგშართჷ
   user_blocks:
index 226e9e0d7e8dbd7a8171c3fdb0272fe521e90b1c..03bd6202446d899b603ab2440484b00f451871ab 100644 (file)
@@ -11,6 +11,7 @@
 # Author: Assoc
 # Author: Boyuan Yang
 # Author: C933103
+# Author: Chimes
 # Author: David S. Hwang
 # Author: Deathkon
 # Author: Dimension
@@ -73,6 +74,7 @@
 # Author: Zazzzz
 # Author: Zfshuo
 # Author: Zhang8569
+# Author: 七八年再来一次
 # Author: 乌拉跨氪
 # Author: 予弦
 # Author: 列维劳德
@@ -327,12 +329,6 @@ zh-CN:
       external auth: 外部身份验证
       openid:
         link text: 这是什么?
-      public editing:
-        heading: 公开编辑
-        enabled: 启用。非匿名用户,可以编辑数据。
-        enabled link text: 这是什么?
-        disabled: 禁用且无法编辑数据,所有过去的编辑均为匿名。
-        disabled link text: 我为什么不能编辑?
       contributor terms:
         heading: 贡献者条款
         agreed: 您已同意新的贡献者条款。
@@ -385,6 +381,7 @@ zh-CN:
         read_tou: 我已阅读并同意使用条款
         consider_pd: 除了上述协议,我同意将我的贡献释于公有领域
         consider_pd_why: 这是什么?
+        consider_pd_why_url: https://osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 有助于理解这些术语的信息:一个 %{readable_summary_link} 和一些 %{informal_translations_link}
         readable_summary: 人类可读的摘要
         informal_translations: 非正式翻译
@@ -396,9 +393,12 @@ zh-CN:
           france: 法国
           italy: 意大利
           rest_of_world: 世界其他地区
+      update:
+        terms accepted: 感谢您接受新的贡献条款!
       terms_declined_flash:
         terms_declined_html: 我们很遗憾您已决定不接受新的贡献者条款。有关详细信息,请参阅%{terms_declined_link}。
         terms_declined_link: 此wiki页面
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
   browse:
     deleted_ago_by_html: 由 %{user} 删除于 %{time_ago}
     edited_ago_by_html: 由%{user} 编辑于 %{time_ago}
@@ -492,6 +492,8 @@ zh-CN:
       view_redacted_data: 查看已隐删的数据
       view_redaction_message: 查看隐删消息
   nodes:
+    not_found_message:
+      sorry: '抱歉,未能找到编号为 #%{id} 的节点。'
     timeout:
       sorry: 抱歉,检索id为%{id}的节点数据花费时间过长。
   old_nodes:
@@ -500,6 +502,8 @@ zh-CN:
     timeout:
       sorry: 抱歉,检索id为%{id}的节点历史花费时间过长。
   ways:
+    not_found_message:
+      sorry: '抱歉,未能找到编号为 #%{id} 的路径。'
     timeout:
       sorry: 抱歉,检索id为%{id}的路径数据花费时间过长。
   old_ways:
@@ -508,6 +512,8 @@ zh-CN:
     timeout:
       sorry: 抱歉,检索id为%{id}的路径历史花费时间过长。
   relations:
+    not_found_message:
+      sorry: '抱歉,未能找到编号为 #%{id} 的关联关系。'
     timeout:
       sorry: 抱歉,检索id为%{id}的关系数据花费时间过长。
   old_relations:
@@ -533,7 +539,6 @@ zh-CN:
       title: 变更集
       title_user: '%{user}的变更集'
       title_user_link_html: '%{user_link}的变更集'
-      title_friend: 由我的朋友所做的变更集
       title_nearby: 附近用户的变更集
       empty: 未找到变更集。
       empty_area: 该区域内没有变更集。
@@ -548,18 +553,6 @@ zh-CN:
         created: 创建于
         closed: 关闭于
         belongs_to: 作者
-    subscribe:
-      heading: 订阅以下变更集讨论吗?
-      button: 订阅讨论
-    unsubscribe:
-      heading: 退订以下变更集讨论吗?
-      button: 退订讨论
-    heading:
-      title: 变更集 %{id}
-      created_by_html: 由 %{link_user} 在 %{created} 创建。
-    no_such_entry:
-      heading: 找不到ID为%{id}的文章
-      body: 对不起,没有ID为 %{id} 的变更集。请检查您的拼写,或者可能是点击了错误的链接。
     show:
       title: 变更集:%{id}
       created: 创建于:%{when}
@@ -587,8 +580,24 @@ zh-CN:
       ways_paginated: 路径 (%{x}-%{y},共 %{count})
       relations: 关系 (%{count})
       relations_paginated: 关系 (%{x}-%{y},共 %{count})
+    not_found_message:
+      sorry: '抱歉,未能找到编号为 #%{id} 的更改集。'
     timeout:
       sorry: 抱歉,您所请求的变更集列表检索时间过长。
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: 订阅以下变更集讨论吗?
+        button: 订阅讨论
+      unsubscribe:
+        heading: 退订以下变更集讨论吗?
+        button: 退订讨论
+    heading:
+      title: 变更集 %{id}
+      created_by_html: 由 %{link_user} 在 %{created} 创建。
+    no_such_entry:
+      heading: 找不到ID为%{id}的文章
+      body: 对不起,没有ID为 %{id} 的变更集。请检查您的拼写,或者可能是点击了错误的链接。
   dashboards:
     contact:
       km away: '%{count}千米外'
@@ -597,17 +606,12 @@ zh-CN:
     popup:
       your location: 您的位置
       nearby mapper: 附近绘图者
-      friend: 朋友
     show:
       title: 我的综合面板
       no_home_location_html: '%{edit_profile_link}并设定你的家庭地址来查看附近的用户。'
       edit_your_profile: 编辑你的档案
-      my friends: 我的朋友
-      no friends: 您还没有添加任何好友。
       nearby users: 其他附近的用户
       no nearby users: 附近没有在进行制图的用户。
-      friends_changesets: 朋友的变更集
-      friends_diaries: 朋友的日记文章
       nearby_changesets: 附近用户的变更集
       nearby_diaries: 附近用户的日记文章
   diary_entries:
@@ -618,7 +622,6 @@ zh-CN:
       use_map_link: 使用地图
     index:
       title: 用户日记
-      title_friends: 朋友的日记
       title_nearby: 附近用户的日记
       user_title: '%{user}的日记'
       in_language_title: '%{language}日记文章'
@@ -683,15 +686,6 @@ zh-CN:
       heading: 退订以下日记讨论吗?
       button: 退订讨论
   diary_comments:
-    index:
-      title: '%{user} 已添加日记评论'
-      heading: '%{user} 的日记评论'
-      subheading_html: '%{user} 已添加日记评论'
-      no_comments: 没有日记评论
-    page:
-      post: 发布
-      when: 时间
-      comment: 评论
     new:
       heading: 在以下日记条目的讨论中留言吗?
   doorkeeper:
@@ -743,19 +737,6 @@ zh-CN:
     not_found:
       title: 文件未找到
       description: 在 OpenStreetMap 服务器上找不到该名称的文件、目录或API 操作(HTTP 404)
-  friendships:
-    make_friend:
-      heading: 添加 %{user} 为朋友?
-      button: 添加为朋友
-      success: '%{name} 现在已成为您的朋友!'
-      failed: 对不起,未能添加 %{name} 为朋友。
-      already_a_friend: 您和 %{name} 已经是朋友了。
-      limit_exceeded: 您刚新添加了很多用户为好友。在尝试添加更多好友之前,请稍等一会儿。
-    remove_friend:
-      heading: 删除朋友 %{user}?
-      button: 删除朋友
-      success: '%{name} 已从您的朋友中删除。'
-      not_a_friend: '%{name} 不是您的朋友。'
   geocoder:
     search:
       title:
@@ -1092,7 +1073,12 @@ zh-CN:
           "yes": 古迹
         information:
           guidepost: 指路牌
+          board: 信息板
           map: 地图
+          office: 游客服务中心
+          terminal: 信息终端
+          sign: 信息标志
+          stele: 信息牌
         junction:
           "yes": 交叉点
         landuse:
@@ -1165,6 +1151,8 @@ zh-CN:
           track: 跑道
           water_park: 水上公园
           "yes": 闲暇
+        lock:
+          "yes": 水闸
         man_made:
           adit: 平坑
           advertising: 广告牌
@@ -1509,6 +1497,13 @@ zh-CN:
           lake: 湖
           pond: 池塘
           reservoir: 水库
+          basin: 蓄水池
+          fishpond: 鱼塘
+          lagoon: 泻湖
+          wastewater: 污水池
+          oxbow: 牛弓
+          stream_pool: 流水池
+          lock: 水闸
         waterway:
           artificial: 人工航道
           boatyard: 船坞
@@ -1573,6 +1568,10 @@ zh-CN:
         open: 开放
         resolved: 已解决
     show:
+      title:
+        open: '尚未解决的问题 #%{issue_id}'
+        ignored: '忽略的问题 #%{issue_id}'
+        resolved: '已解决的问题 #%{issue_id}'
       reports:
         one: '%{count}个举报'
         other: '%{count}个举报'
@@ -1691,22 +1690,28 @@ zh-CN:
       header_html: '%{from_user} 已经通过 OpenStreetMap 给您发送了一条主题为 %{subject} 的信息:'
       footer: 您也可以在%{readurl}阅读此消息并在%{replyurl}向作者发送信息
       footer_html: 您还可以在%{readurl}阅读这条信息并在%{replyurl}向作者发送信息
-    friendship_notification:
+    follow_notification:
       hi: 您好,%{to_user}:
-      subject: '[OpenStreetMap] %{user} 添加您为朋友'
-      had_added_you: '%{user} 已经在 OpenStreetMap 添加您为朋友。'
       see_their_profile: 您可以在%{userurl}查看他们的个人资料。
       see_their_profile_html: 您可以在%{userurl}查看他们的个人资料。
-      befriend_them: 您也可以在 %{befriendurl} 添加他们为朋友。
-      befriend_them_html: 您也可以在%{befriendurl}把他们添加为朋友。
+    gpx_details:
+      details: 文件详细信息:
+      filename: 文件名
+      url: URL
+      description: 描述
+      tags: 标签
+      total_points: 总积分
+      imported_points: 导入积分数量
     gpx_failure:
       hi: 您好,%{to_user}:
-      failed_to_import: 无法导入为GPS轨迹文件。请验证您的文件是否为有效的GPX文件或包含GPX文件的受支持格式(.tar.gz、.tar.bz2、.tar、.zip、.gpx.gz、.gpx.bz2)的存档。您的文件是否存在格式或语法问题?以下是导入错误信息:
-      more_info: 更多有关GPX导入失败的信息及如何避免这些问题,可以在%{url}找到。
+      failed_to_import: 看起来您的文件不能作为GPS轨迹导入。
+      verify: '请核实您的文件是否为有效的GPX文件,或者是否为包含GPX文件的受支持格式的压缩包(.tar.gz、.tar.bz2、.tar、.zip、.gpx.gz、.gpx.bz2)。您的文件是否存在格式或语法问题?以下是导入错误信息:'
+      more_info: 关于GPX导入失败的原因及避免方法的更多信息,可以在%{url}找到。
       more_info_html: 更多关于 GPX 导入失败的信息,以及如何避免失败可在%{url}找到。
       subject: '[OpenStreetMap] GPX 导入失败'
     gpx_success:
       hi: 您好,%{to_user}:
+      imported_successfully: 看起来您的文件已成功作为GPS轨迹导入。
       all_your_traces: 您可以在%{url}找到所有您成功上传的GPX轨迹
       all_your_traces_html: 您可以在 %{url} 找到所有您成功上传的 GPX 轨迹。
       subject: '[OpenStreetMap] GPX 导入成功'
@@ -1780,6 +1785,7 @@ zh-CN:
       success: 已确认您的账户,感谢您的注册!
       already active: 该账户已经确认。
       unknown token: 确认码已经过期或不存在。
+      if_need_resend: 如果您需要我们重新发送确认电子邮件,请点击下方按钮。
       resend_button: 重新发送确认电子邮件
     confirm_resend:
       failure: 用户 %{name} 未找到。
@@ -1812,14 +1818,17 @@ zh-CN:
       destroy_button: 删除
       back: 返回
       wrong_user: 您已经以 '%{user}' 的身份登录,但是您想要阅读的消息并非寄给这个用户。请以正确的用户身份登录以阅读这个消息。
-    mark:
-      as_read: 标记消息为已读
-      as_unread: 标记消息为未读
-    unmute:
-      notice: 消息已移至收件箱
-      error: 无法将消息移至收件箱。
     destroy:
       destroyed: 消息已删除
+    read_marks:
+      create:
+        notice: 标记消息为已读
+      destroy:
+        notice: 标记消息为未读
+    mutes:
+      destroy:
+        notice: 消息已移至收件箱
+        error: 无法将消息移至收件箱。
     mailboxes:
       heading:
         my_inbox: 我的收件箱
@@ -2466,13 +2475,14 @@ zh-CN:
     offline:
       heading: GPX 脱机存储
       message: GPX 文件存储和上传系统当前不可用。
-    georss:
-      title: OpenStreetMap GPS 轨迹
-    description:
-      description_with_count:
-        one: 来自 %{user} 的带 %{count} 点的GPX文件
-        other: 来自 %{user} 的带 %{count} 点的GPX文件
-      description_without_count: 来自 %{user} 的 GPX 文件
+    feeds:
+      show:
+        title: OpenStreetMap GPS 轨迹
+      description:
+        description_with_count:
+          one: 来自 %{user} 的带 %{count} 点的GPX文件
+          other: 来自 %{user} 的带 %{count} 点的GPX文件
+        description_without_count: 来自 %{user} 的 GPX 文件
   application:
     permission_denied: 您没有权限来执行此操作
     require_cookies:
@@ -2615,7 +2625,6 @@ zh-CN:
         privacy_policy_title: OSM基金会隐私政策包括电子邮件地址部分
         contributor_terms: 贡献者条款
       continue: 注册
-      terms accepted: 感谢您接受新的贡献条款!
       email_help:
         privacy_policy: 隐私政策
         privacy_policy_title: OSM基金会隐私政策包括电子邮件地址部分
@@ -2651,8 +2660,6 @@ zh-CN:
       edits: 编辑
       traces: 轨迹
       notes: 地图注记
-      remove as friend: 删除朋友
-      add as friend: 添加朋友
       mapper since: 绘图者注册于:
       last map edit: 最后地图编辑于:
       no activity yet: 尚无活动
@@ -2727,6 +2734,15 @@ zh-CN:
       user:
         summary_html: '%{name}在%{date}从%{ip_address}创建'
         summary_no_ip_html: '%{name} 创建于 %{date}'
+    changeset_comments:
+      page:
+        when: 时间
+        comment: 评论
+    diary_comments:
+      index:
+        title: '%{user} 已添加日记评论'
+      page:
+        post: 发布
     suspended:
       title: 帐户已暂停
       heading: 帐户已暂停
@@ -2809,7 +2825,10 @@ zh-CN:
         ended: 已结束
         revoked_html: 被%{name}撤销
         active: 有效
+        active_until_read: 直到读取后才激活
         read_html: 已读于%{time}
+        time_in_future_title: '%{time_absolute}; 于 %{time_relative}'
+        time_in_past_title: '%{time_absolute}; %{time_relative}'
     show:
       title: '%{block_on} 被 %{block_by} 封禁'
       heading_html: '%{block_on} 被 %{block_by} 封禁'
@@ -2910,17 +2929,31 @@ zh-CN:
     new:
       title: 新注记
       intro: 发现错误或遗漏了什么?请告诉其他绘图者以便于我们更正错误。将标记移动到正确的位置并输入备注说明问题。
-      anonymous_warning_html: 您尚未登录。如果您想接收笔记的更新信息,请%{log_in}或%{sign_up}
+      anonymous_warning_html: 您尚未登录。请%{log_in}或%{sign_up},以便接收关于您留言的更新信息,并帮助地图制作者解决该问题
       anonymous_warning_log_in: 登录
       anonymous_warning_sign_up: 注册
+      counter_warning_html: 您已至少发布了 %{x_anonymous_notes}条匿名留言,这对社区来说很棒,谢谢!现在我们鼓励您
+        %{contribute_by_yourself},这并不复杂,而且 %{community_can_help}。
+      x_anonymous_notes:
+        one: '%{count} 个匿名注释'
+        other: '%{count} 个匿名注释'
+      counter_warning_guide_link:
+        text: 自己贡献
+        url: https://wiki.openstreetmap.org/wiki/Beginners%27_guide
+      counter_warning_forum_link:
+        text: 社区可以帮助你
+        url: https://community.openstreetmap.org/
       advice: 您的注释会公开,并可能用于更新地图,所以不要输入个人信息,或是来自版权保护地图的信息或目录列表。
       add: 添加注记
     new_readonly:
       title: 新注记
+      warning: 无法创建新注释,因为 OpenStreetMap API 当前处于只读模式。
     notes_paging_nav:
       showing_page: 第 %{page} 页
       next: 下一页
       previous: 上一页
+    not_found_message:
+      sorry: '抱歉,未能找到编号为 #%{id} 的留言。'
   javascripts:
     close: 关闭
     share:
@@ -2942,6 +2975,7 @@ zh-CN:
       center_marker: 以标记作为地图中心
       paste_html: 粘贴HTML以嵌入网站
       view_larger_map: 查看更大的地图
+      only_layers_exported_as_image: 仅以下图层可以导出为图像:
     embed:
       report_problem: 报告问题
     key:
index c1492efb829d11e6631a84309575ab613108ddcc..5a325dfb70874e733b072eaacd4d3a49514b4f2d 100644 (file)
@@ -226,12 +226,6 @@ zh-HK:
       external auth: 外部認證
       openid:
         link text: 這是什麼?
-      public editing:
-        heading: 公開編輯
-        enabled: 已啟用。並非匿名而可以編輯資料。
-        enabled link text: 這是什麼?
-        disabled: 已停用而不能編輯資料,所有以往的編輯為匿名。
-        disabled link text: 為什麼我不能編輯?
       contributor terms:
         heading: 貢獻者條款
         agreed: 您已同意新的貢獻者條款。
@@ -279,6 +273,8 @@ zh-HK:
           france: 法國
           italy: 意大利
           rest_of_world: 世界其他地方
+      update:
+        terms accepted: 感謝您接受新的貢獻條款!
   browse:
     version: 版本
     in_changeset: 變更集
@@ -358,17 +354,6 @@ zh-HK:
         description: 近期以%{language_name}撰寫的OpenStreetMap用戶日記文章
       all:
         description: 近期的OpenStreetMap用戶日記文章
-  diary_comments:
-    page:
-      post: 貼文
-      when: 於
-      comment: 評論
-  friendships:
-    make_friend:
-      heading: 將%{user}加為好友?
-      button: 加入為好友
-    remove_friend:
-      heading: 刪除好友%{user}?
   geocoder:
     search_osm_nominatim:
       prefix:
@@ -1033,8 +1018,7 @@ zh-HK:
   user_mailer:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user}在日記中留下了評論'
-    friendship_notification:
-      subject: '[OpenStreetMap] %{user} 添加了您成為好友'
+    follow_notification:
       see_their_profile: 您可以在 %{userurl} 查看他的個人檔案。
     email_confirm:
       greeting: 您好,
@@ -1149,7 +1133,6 @@ zh-HK:
         header: 自由而可編輯
       display name description: 您公開顯示的用戶名稱。以後還可以在設定中更換。
       continue: 註冊
-      terms accepted: 感謝您接受新的貢獻條款!
     no_such_user:
       title: 沒有這用戶
       body: 抱歉,沒有名為%{user}的用戶。請檢查您的拼寫,或者您可能按到了錯誤的連結。
@@ -1162,6 +1145,13 @@ zh-HK:
       show:
         title: 用戶
         heading: 用戶
+    changeset_comments:
+      page:
+        when: 於
+        comment: 評論
+    diary_comments:
+      page:
+        post: 貼文
     auth_association:
       option_2: 如果您已經有帳號,您可以用該帳號的用戶名稱和密碼登入,然後到用戶設定中把您的ID和帳號關聯到一起。
   notes:
index 9122615b376e1abf2dd888942dee3a99132388cc..aad7bfc043c7fa8126cba3e172d93372a9f5fbf3 100644 (file)
@@ -21,6 +21,7 @@
 # Author: Learnerq
 # Author: Lepus
 # Author: Liuxinyu970226
+# Author: LowensteinYang
 # Author: Mikepanhu
 # Author: Mmyangfl
 # Author: Mstar
@@ -103,6 +104,7 @@ zh-TW:
       message: 訊息
       node: 節點
       node_tag: 節點標籤
+      note: 註解
       old_node: 舊的節點
       old_node_tag: 舊的節點標籤
       old_relation: 舊的關聯
@@ -133,7 +135,7 @@ zh-TW:
         support_url: 支援 URL
         allow_read_prefs: 讀取使用者偏好設定
         allow_write_prefs: 修改使用者偏好設定
-        allow_write_diary: 建立日記、評論和加入好友
+        allow_write_diary: 建立日記、評論
         allow_write_api: 修改地圖
         allow_read_gpx: 讀取個人 GPS 軌跡
         allow_write_gpx: 上傳 GPS 軌跡
@@ -279,12 +281,6 @@ zh-TW:
       external auth: 外部認證
       openid:
         link text: 這是什麼?
-      public editing:
-        heading: 公開編輯
-        enabled: 已開啟。非匿名且可以編輯資料。
-        enabled link text: 這是什麼?
-        disabled: 已停用且不能編輯資料,所有你先前的編輯都會成為匿名的。
-        disabled link text: 為什麼我不能編輯?
       contributor terms:
         heading: 貢獻者條款
         agreed: 你已同意新的貢獻者條款。
@@ -338,6 +334,7 @@ zh-TW:
         read_tou: 我已經閱讀過並同意使用條款
         consider_pd: 除上述內容之外,我同意將我的貢獻放到公共領域
         consider_pd_why: 這是什麼?
+        consider_pd_why_url: https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Why_would_I_want_my_contributions_to_be_public_domain
         guidance_info_html: 有助於理解這些術語的資訊:一個%{readable_summary_link}和一些%{informal_translations_link}
         readable_summary: 人類可讀的摘要
         informal_translations: 非正式翻譯
@@ -349,9 +346,12 @@ zh-TW:
           france: 法國
           italy: 義大利
           rest_of_world: 世界其他地區
+      update:
+        terms accepted: 感謝你接受新的貢獻條款!
       terms_declined_flash:
         terms_declined_html: 我們很遺憾你已決定不接受新的貢獻者條款。有關詳細資訊,請參閱 %{terms_declined_link}。
         terms_declined_link: 此 wiki 頁面
+        terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
   browse:
     deleted_ago_by_html: 由%{user}%{time_ago}刪除
     edited_ago_by_html: 由%{user}%{time_ago}編輯
@@ -396,7 +396,7 @@ zh-TW:
         way: 路徑
         relation: 關聯
     containing_relation:
-      entry_role_html: 關聯 %{relation_name} (作為 %{relation_role})
+      entry_role_html: '%{relation_name} (作為 %{relation_role})'
     not_found:
       title: 找不到
     timeout:
@@ -447,6 +447,8 @@ zh-TW:
       view_redacted_data: 查看編修資料
       view_redaction_message: 查看密文訊息
   nodes:
+    not_found_message:
+      sorry: '抱歉,找不到此節點 #%{id}。'
     timeout:
       sorry: 很抱歉,索取 id 為 %{id} 的節點資料花費時間過長。
   old_nodes:
@@ -455,6 +457,8 @@ zh-TW:
     timeout:
       sorry: 很抱歉,索取 id 為 %{id} 的節點歷史花費時間過長。
   ways:
+    not_found_message:
+      sorry: '抱歉,找不到此路徑 #%{id}。'
     timeout:
       sorry: 很抱歉,索取 id 為 %{id} 的路徑資料花費時間過長。
   old_ways:
@@ -463,6 +467,8 @@ zh-TW:
     timeout:
       sorry: 很抱歉,索取 id 為 %{id} 的路徑歷史花費時間過長。
   relations:
+    not_found_message:
+      sorry: '抱歉,找不到此關聯 #%{id}。'
     timeout:
       sorry: 很抱歉,索取 id 為 %{id} 的關聯資料花費時間過長。
   old_relations:
@@ -488,7 +494,6 @@ zh-TW:
       title: 變更集
       title_user: '%{user} 的變更集'
       title_user_link_html: '%{user_link} 的變更集'
-      title_friend: 好友的變更集
       title_nearby: 附近使用者的變更集
       empty: 查無變更集。
       empty_area: 此區域沒有變更集。
@@ -503,18 +508,6 @@ zh-TW:
         created: 建立於
         closed: 關閉於
         belongs_to: 作者
-    subscribe:
-      heading: 訂閱以下變更集討論?
-      button: 訂閱討論
-    unsubscribe:
-      heading: 取消訂閱以下變更集討論?
-      button: 取消訂閱討論
-    heading:
-      title: 變更集 %{id}
-      created_by_html: 由 %{link_user} 在 %{created} 建立。
-    no_such_entry:
-      heading: 沒有 id 為 %{id} 的項目
-      body: 抱歉,沒有 id 為 %{id} 的變更集。請檢查你的拼字,或者可能是你按到錯誤的連結。
     show:
       title: 變更集:%{id}
       created: 建立於:%{when}
@@ -542,8 +535,24 @@ zh-TW:
       ways_paginated: 路線 (%{count} 的 %{x}-%{y})
       relations: 關聯 (%{count})
       relations_paginated: 關聯 (%{count} 的 %{x}-%{y})
+    not_found_message:
+      sorry: '抱歉,找不到此變更集 #%{id}。'
     timeout:
       sorry: 很抱歉,你請求的變更集清單過長無法讀取。
+  changeset_subscriptions:
+    show:
+      subscribe:
+        heading: 訂閱以下變更集討論?
+        button: 訂閱討論
+      unsubscribe:
+        heading: 取消訂閱以下變更集討論?
+        button: 取消訂閱討論
+    heading:
+      title: 變更集 %{id}
+      created_by_html: 由 %{link_user} 在 %{created} 建立。
+    no_such_entry:
+      heading: 沒有 id 為 %{id} 的項目
+      body: 抱歉,沒有 id 為 %{id} 的變更集。請檢查你的拼字,或者可能是你按到錯誤的連結。
   dashboards:
     contact:
       km away: '%{count} 公里遠'
@@ -552,17 +561,12 @@ zh-TW:
     popup:
       your location: 你的位置
       nearby mapper: 附近的製圖者
-      friend: 好友
     show:
       title: 我的功能面板
       no_home_location_html: '%{edit_profile_link}並編輯你的家位置,來查看附近的使用者。'
       edit_your_profile: 編輯你的個人檔案
-      my friends: 我的好友
-      no friends: 你尚未加入任何好友。
       nearby users: 其他附近的使用者
       no nearby users: 附近沒有已加入製圖的使用者。
-      friends_changesets: 好友的變更集
-      friends_diaries: 好友的日記項目
       nearby_changesets: 附近使用者的變更集
       nearby_diaries: 附近使用者的日記項目
   diary_entries:
@@ -573,7 +577,6 @@ zh-TW:
       use_map_link: 使用地圖
     index:
       title: 使用者日記
-      title_friends: 好友日記
       title_nearby: 附近的使用者的日記
       user_title: '%{user} 的日記'
       in_language_title: 語言為%{language}的日記項目
@@ -638,15 +641,6 @@ zh-TW:
       heading: 取消訂閱以下日記項目討論?
       button: 取消訂閱討論
   diary_comments:
-    index:
-      title: 日記評論由%{user}添加
-      heading: '%{user}的日記評論'
-      subheading_html: 日記評論由%{user}添加
-      no_comments: 沒有日記評論
-    page:
-      post: 貼文
-      when: 於
-      comment: 評論
     new:
       heading: 在以下日記項目討論添加評論?
   doorkeeper:
@@ -696,19 +690,6 @@ zh-TW:
     not_found:
       title: 檔案未找到
       description: 在 OpenStreetMap 伺服器上找不到該名稱的檔案/目錄/API 操作 (HTTP 404)
-  friendships:
-    make_friend:
-      heading: 將 %{user} 加入為好友?
-      button: 加入為好友
-      success: '%{name} 現在已成為你的好友!'
-      failed: 抱歉,無法將 %{name} 加入為好友。
-      already_a_friend: 你已經是 %{name} 的好友了。
-      limit_exceeded: 你最近與許多使用者成為朋友,要再與其他人成為朋友前請稍候。
-    remove_friend:
-      heading: 移除好友 %{user}?
-      button: 移除好友
-      success: '%{name} 已從你的好友中移除。'
-      not_a_friend: '%{name} 並不是你的好友。'
   geocoder:
     search:
       title:
@@ -1045,6 +1026,14 @@ zh-TW:
           wayside_shrine: 小祠堂
           wreck: 沈船
           "yes": 古蹟
+        information:
+          guidepost: 指標
+          board: 資訊板
+          map: 地圖
+          office: 旅遊服務中心
+          terminal: 資訊終端
+          sign: 資訊標誌
+          stele: 資訊碑
         junction:
           "yes": 路口
         landuse:
@@ -1117,6 +1106,8 @@ zh-TW:
           track: 跑道
           water_park: 水上樂園
           "yes": 休閒娛樂
+        lock:
+          "yes": 水閘
         man_made:
           adit: 坑口
           advertising: 廣告
@@ -1457,6 +1448,17 @@ zh-TW:
           building_passage: 建築物穿堂
           culvert: 涵管
           "yes": 隧道
+        water:
+          lake: 湖泊
+          pond: 池塘
+          reservoir: 水庫
+          basin: 蓄水池
+          fishpond: 魚池
+          lagoon: 潟湖
+          wastewater: 廢水池
+          oxbow: 牛弓
+          stream_pool: 流水池
+          lock: 水閘
         waterway:
           artificial: 人工水道
           boatyard: 船廠
@@ -1521,6 +1523,8 @@ zh-TW:
         open: 開放
         resolved: 已解決
     show:
+      title:
+        open: '未決問題 #%{issue_id}'
       reports:
         one: '%{count} 份回報'
         other: '%{count} 份回報'
@@ -1642,18 +1646,14 @@ zh-TW:
       header_html: '%{from_user} 透過 OpenStreetMap 寄給你主旨為 %{subject} 的訊息:'
       footer: 你也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 發送訊息給作者
       footer_html: 你也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 發送訊息給作者
-    friendship_notification:
+    follow_notification:
       hi: 嗨 %{to_user},
-      subject: '[OpenStreetMap] %{user} 將你加為好友'
-      had_added_you: '%{user} 已在 OpenStreetMap 將你加為好友。'
       see_their_profile: 你可以在 %{userurl} 查看他的基本資料。
       see_their_profile_html: 你可以在 %{userurl} 查看他的基本資料。
-      befriend_them: 你可以在 %{befriendurl} 把他加入為好友。
-      befriend_them_html: 你可以在 %{befriendurl} 把他加入為好友。
     gpx_failure:
       hi: '%{to_user} 你好,'
-      failed_to_import: 匯入成 GPS 軌跡檔案失敗。請驗證您的檔案是否為有效的 GPX 檔案,或是否為含有 GPX 檔案的支援格式存檔(.tar.gz、.tar.bz2、.tar、.zip、.gpx.gz、.gpx.bz2)。您的檔案是否有格式或語法問題?此為匯入的錯誤內容:
-      more_info: æ\9b´å¤\9aé\97\9cæ\96¼ GPX å\8c¯å\85¥å¤±æ\95\97ç\9a\84è³\87è¨\8aè\88\87å¦\82ä½\95é\81¿å\85\8dï¼\8cå\8f¯å\9c¨ %{url} æ\9f¥è©¢ã\80\82
+      failed_to_import: 您的文件似乎無法以GPS軌跡匯入。
+      more_info: æ\9c\89æ\9b´å¤\9aé\97\9cæ\96¼GPXå\8c¯å\85¥å¤±æ\95\97ç\9a\84è³\87è¨\8aè\88\87å¦\82ä½\95é\81¿å\85\8dï¼\8cå\8f¯å\9c¨ %{url} æ\9f¥è©¢
       more_info_html: 更多關於 GPX 匯入失敗的資訊與如何避免,可在 %{url} 查詢。
       subject: '[OpenStreetMap] GPX 匯入失敗'
     gpx_success:
@@ -1763,15 +1763,18 @@ zh-TW:
       unread_button: 標記為未讀
       destroy_button: 刪除
       back: 返回
-      wrong_user: 你已經以「%{user}」的身份登入,但是你想要閱讀的訊息並非寄給那個使用者。請以正確的使用者身份登入以閱讀它。
-    mark:
-      as_read: 訊息標記為已讀
-      as_unread: 訊息標記為未讀
-    unmute:
-      notice: 訊息已移至收件匣
-      error: 無法將訊息移至收件匣。
+      wrong_user: 你已經以「%{user}」的身份登入,但是你想要閱讀的訊息並非是寄給那個或是來自那個使用者。請以正確的使用者身份登入以閱讀它。
     destroy:
       destroyed: 訊息已刪除
+    read_marks:
+      create:
+        notice: 訊息標記為已讀
+      destroy:
+        notice: 訊息標記為未讀
+    mutes:
+      destroy:
+        notice: 訊息已移至收件匣
+        error: 無法將訊息移至收件匣。
     mailboxes:
       heading:
         my_inbox: 我的收件匣
@@ -1839,6 +1842,10 @@ zh-TW:
   preferences:
     show:
       title: 我的偏好設定
+      map_color_schemes:
+        auto: 自動
+        light: 明亮
+        dark: 深色
       save: 更新偏好
     update:
       failure: 無法更新偏好設定。
@@ -2418,13 +2425,14 @@ zh-TW:
     offline:
       heading: GPX 離線儲存
       message: GPX 檔案儲存,上傳系統目前無法使用。
-    georss:
-      title: OpenStreetMap GPS 軌跡
-    description:
-      description_with_count:
-        one: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
-        other: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
-      description_without_count: 由 %{user} 上傳的 GPX 檔案
+    feeds:
+      show:
+        title: OpenStreetMap GPS 軌跡
+      description:
+        description_with_count:
+          one: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
+          other: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
+        description_without_count: 由 %{user} 上傳的 GPX 檔案
   application:
     permission_denied: 你沒有權限來存取該操作。
     require_cookies:
@@ -2459,6 +2467,28 @@ zh-TW:
       wikipedia:
         title: 使用維基百科登入
         alt: 維基百科標誌
+    share:
+      email:
+        title: 透過電子郵件分享
+        alt: 電子郵件圖示
+      bluesky:
+        title: 分享到藍天
+        alt: 藍天圖示
+      facebook:
+        title: 分享到 Facebook
+        alt: Facebook 圖示
+      linkedin:
+        title: 分享到 LinkedIn
+        alt: LinkedIn 圖示
+      mastodon:
+        title: 分享到乳齒象
+        alt: 乳齒象圖示
+      telegram:
+        title: 分享到 Telegram
+        alt: Telegram 圖示
+      x:
+        title: 分享到 X
+        alt: X 圖示
   oauth:
     permissions:
       missing: 你尚未允許應用程式來訪問此設施
@@ -2466,7 +2496,7 @@ zh-TW:
       openid: 使用 OpenStreetMap 登入
       read_prefs: 讀取使用者偏好設定
       write_prefs: 修改使用者偏好設定
-      write_diary: 建立日記、評論和加入好友
+      write_diary: 建立日記並評論
       write_api: 修改地圖
       read_gpx: 讀取私人 GPS 軌跡
       write_gpx: 上傳 GPS 軌跡
@@ -2547,7 +2577,6 @@ zh-TW:
         contributor_terms_url: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
         contributor_terms: 貢獻者條款
       continue: 註冊
-      terms accepted: 感謝你接受新的貢獻條款!
       email_help:
         privacy_policy: 隱私權政策
         privacy_policy_title: OSMF 隱私權政策包含電子郵件地址部份
@@ -2583,8 +2612,6 @@ zh-TW:
       edits: 編輯
       traces: 軌跡
       notes: 地圖註記
-      remove as friend: 移除好友
-      add as friend: 加入為好友
       mapper since: 註冊為製圖者日期:
       last map edit: 最後地圖編輯於:
       no activity yet: 尚無活動
@@ -2659,6 +2686,15 @@ zh-TW:
       user:
         summary_html: '%{name} 由 %{ip_address} 於 %{date} 建立'
         summary_no_ip_html: '%{name} 建立於:%{date}'
+    changeset_comments:
+      page:
+        when: 於
+        comment: 評論
+    diary_comments:
+      index:
+        title: 日記評論由%{user}添加
+      page:
+        post: 貼文
     suspended:
       title: 帳號已暫停
       heading: 帳號已暫停
@@ -2678,14 +2714,14 @@ zh-TW:
       option_2: 如果你已擁有一個帳號,可以用你的使用者名稱與密碼登入你的帳號,並在使用者設定中關連你的 ID。
   user_role:
     filter:
-      not_a_role: 字串 "%{role}" 不是有效的身份。
+      not_a_role: 字串 '%{role}' 不是有效的身份。
       already_has_role: 這個使用者已經有 %{role} 身份。
       doesnt_have_role: 這個使用者沒有 %{role} 身份。
       not_revoke_admin_current_user: 無法撤銷目前使用者的管理員身份。
     grant:
-      are_you_sure: 你確定要授予使用者 "%{name}"  "%{role}" 的身份?
+      are_you_sure: 你確定要授予使用者 '%{name}' '%{role}' 的身份?
     revoke:
-      are_you_sure: 你確定要撤銷使用者 "%{name}"  "%{role}" 的身份?
+      are_you_sure: 你確定要撤銷使用者 '%{name}' '%{role}' 的身份?
   user_blocks:
     model:
       non_moderator_update: 只有仲裁員才可作出或更新封鎖。
@@ -2737,6 +2773,11 @@ zh-TW:
         years:
           one: '%{count} 年'
           other: '%{count} 年'
+      short:
+        ended: 已結束
+        revoked_html: 已被 %{name} 撤銷
+        active: 活躍的
+        active_until_read: 直到讀取後才活躍
     show:
       title: '%{block_by}封鎖了%{block_on}'
       heading_html: '%{block_by}封鎖了%{block_on}'
@@ -2827,7 +2868,7 @@ zh-TW:
     new:
       title: 新增註記
       intro: 發現錯誤或缺少些什麼東西嗎?請告訴其他地圖製作者以便於我們處理。將標記移動到正確的位置並輸入註記,以解釋問題。
-      anonymous_warning_html: ä½ å°\9aæ\9cªç\99»å\85¥ã\80\82è\8b¥æ\83³æ\94¶å\88°ä½ ç\9a\84註è¨\98æ\9b´æ\96°å\85§å®¹ï¼\8cè«\8b%{log_in}æ\88\96%{sign_up}
+      anonymous_warning_html: ä½ å°\9aæ\9cªç\99»å\85¥ã\80\82è«\8b%{log_in}æ\88\96%{sign_up}以便æ\94¶å\88°ä½ ç\9a\84註è¨\98ç\9a\84æ\9b´æ\96°å\85§å®¹ä¸¦å\8d\94å\8a©å\85¶ä»\96ç\9a\84å\9c°å\9c\96編輯è\80\85解決å\95\8fé¡\8c
       anonymous_warning_log_in: 登入
       anonymous_warning_sign_up: 註冊
       advice: 你的註記已公開並可用於更新地圖,因此請不要輸入個人訊息,或是來自於具版權保護地圖的訊息以及目錄清單。
index 242423996f5687e75b13ac1cdb05f9c62f21accf..19dfc9a7729519c26285160ff1d3d68a36c157c7 100644 (file)
@@ -62,11 +62,11 @@ OpenStreetMap::Application.routes.draw do
     put "relation/:id" => "relations#update", :id => /\d+/
     delete "relation/:id" => "relations#delete", :id => /\d+/
     get "relations" => "relations#index"
-
-    get "map" => "map#index"
   end
 
   namespace :api, :path => "api/0.6" do
+    resource :map, :only => :show
+
     resources :tracepoints, :path => "trackpoints", :only => :index
 
     resources :users, :only => :index
@@ -124,14 +124,16 @@ OpenStreetMap::Application.routes.draw do
   get "/relation/:id" => "relations#show", :id => /\d+/, :as => :relation
   get "/relation/:id/history" => "old_relations#index", :id => /\d+/, :as => :relation_history
   resources :old_relations, :path => "/relation/:id/history", :id => /\d+/, :version => /\d+/, :param => :version, :only => :show
-  resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do
-    match :subscribe, :on => :member, :via => [:get, :post]
-    match :unsubscribe, :on => :member, :via => [:get, :post]
 
+  resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do
+    resource :subscription, :controller => :changeset_subscriptions, :only => [:show, :create, :destroy]
     namespace :changeset_comments, :as => :comments, :path => :comments do
       resource :feed, :only => :show, :defaults => { :format => "rss" }
     end
   end
+  get "/changeset/:id/subscribe", :id => /\d+/, :to => redirect(:path => "/changeset/%{id}/subscription")
+  get "/changeset/:id/unsubscribe", :id => /\d+/, :to => redirect(:path => "/changeset/%{id}/subscription")
+
   resources :notes, :path => "note", :id => /\d+/, :only => [:show, :new]
 
   get "/user/:display_name/history" => "changesets#index"
@@ -211,7 +213,9 @@ OpenStreetMap::Application.routes.draw do
   post "/preview/:type" => "site#preview", :as => :preview
 
   # traces
-  resources :traces, :id => /\d+/, :except => [:show]
+  resources :traces, :id => /\d+/, :except => [:show] do
+    resource :data, :module => :traces, :only => :show
+  end
   get "/user/:display_name/traces/tag/:tag/page/:page", :page => /[1-9][0-9]*/, :to => redirect(:path => "/user/%{display_name}/traces/tag/%{tag}")
   get "/user/:display_name/traces/tag/:tag" => "traces#index"
   get "/user/:display_name/traces/page/:page", :page => /[1-9][0-9]*/, :to => redirect(:path => "/user/%{display_name}/traces")
@@ -229,7 +233,8 @@ OpenStreetMap::Application.routes.draw do
   get "/traces/mine/page/:page", :page => /[1-9][0-9]*/, :to => redirect(:path => "/traces/mine")
   get "/traces/mine" => "traces#mine"
   get "/trace/create", :to => redirect(:path => "/traces/new")
-  get "/trace/:id/data" => "traces#data", :id => /\d+/, :as => "trace_data"
+  get "/trace/:id/data", :format => false, :id => /\d+/, :to => redirect(:path => "/traces/%{id}/data")
+  get "/trace/:id/data.:format", :id => /\d+/, :to => redirect(:path => "/traces/%{id}/data.%{format}")
   get "/trace/:id/edit", :id => /\d+/, :to => redirect(:path => "/traces/%{id}/edit")
 
   namespace :traces, :path => "" do
@@ -317,10 +322,11 @@ OpenStreetMap::Application.routes.draw do
 
   # messages
   resources :messages, :path_names => { :new => "new/:display_name" }, :id => /\d+/, :only => [:new, :create, :show, :destroy] do
-    post :mark
-    patch :unmute
-
-    resource :reply, :module => :messages, :path_names => { :new => "new" }, :only => :new
+    scope :module => :messages do
+      resource :reply, :path_names => { :new => "new" }, :only => :new
+      resource :read_mark, :only => [:create, :destroy]
+      resource :mute, :only => :destroy
+    end
   end
   namespace :messages, :path => "/messages" do
     resource :inbox, :only => :show
index a68704f1ae7f1698d525f33118b54fcd8728eb47..0c97dc6a0b58ad099b18b443e78c615059630ced 100644 (file)
@@ -36,7 +36,7 @@ end
 
 class ModeratorApiAbilityTest < ApiAbilityTest
   test "Note permissions" do
-    token = create(:oauth_access_token, :scopes => %w[write_notes], :resource_owner_id => create(:moderator_user).id)
+    token = create(:oauth_access_token, :scopes => %w[write_notes], :user => create(:moderator_user))
     ability = ApiAbility.new token
 
     [:index, :create, :comment, :feed, :show, :search, :close, :reopen, :destroy].each do |action|
index 8f5272c50b6a95b25a02ca0f90dd2efe7608a57f..ca679dd717f338b5f7edb1e6f6fb4d57bbeeb1bf 100644 (file)
@@ -26,7 +26,7 @@ class ChangesetCommentApiCapabilityTest < ActiveSupport::TestCase
   end
 
   test "as a moderator with permissionless token" do
-    token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id)
+    token = create(:oauth_access_token, :user => create(:moderator_user))
     ability = ApiAbility.new token
 
     [:create, :destroy, :restore].each do |action|
@@ -35,7 +35,7 @@ class ChangesetCommentApiCapabilityTest < ActiveSupport::TestCase
   end
 
   test "as a moderator with write_api token" do
-    token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id, :scopes => %w[write_api])
+    token = create(:oauth_access_token, :user => create(:moderator_user), :scopes => %w[write_api])
     ability = ApiAbility.new token
 
     [:create, :destroy, :restore].each do |action|
@@ -68,7 +68,7 @@ class NoteApiCapabilityTest < ActiveSupport::TestCase
   end
 
   test "as a moderator with permissionless token" do
-    token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id)
+    token = create(:oauth_access_token, :user => create(:moderator_user))
     ability = ApiAbility.new token
 
     [:destroy].each do |action|
@@ -77,7 +77,7 @@ class NoteApiCapabilityTest < ActiveSupport::TestCase
   end
 
   test "as a moderator with write_notes token" do
-    token = create(:oauth_access_token, :resource_owner_id => create(:moderator_user).id, :scopes => %w[write_notes])
+    token = create(:oauth_access_token, :user => create(:moderator_user), :scopes => %w[write_notes])
     ability = ApiAbility.new token
 
     [:destroy].each do |action|
similarity index 91%
rename from test/controllers/api/map_controller_test.rb
rename to test/controllers/api/maps_controller_test.rb
index c050100ae0c56a0fbbbaf7906089d306367e06f6..f61a1fac2925499c3f210c52a353ddcf7d2eec20 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 module Api
-  class MapControllerTest < ActionDispatch::IntegrationTest
+  class MapsControllerTest < ActionDispatch::IntegrationTest
     def setup
       super
       @badbigbbox = %w[-0.1,-0.1,1.1,1.1 10,10,11,11]
@@ -21,11 +21,11 @@ module Api
     def test_routes
       assert_routing(
         { :path => "/api/0.6/map", :method => :get },
-        { :controller => "api/map", :action => "index" }
+        { :controller => "api/maps", :action => "show" }
       )
       assert_routing(
         { :path => "/api/0.6/map.json", :method => :get },
-        { :controller => "api/map", :action => "index", :format => "json" }
+        { :controller => "api/maps", :action => "show", :format => "json" }
       )
     end
 
@@ -42,67 +42,67 @@ module Api
 
       # Accept: XML format -> use XML
       accept_header = accept_format_header("text/xml")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: Any format -> use XML
       accept_header = accept_format_header("*/*")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: Any format, .json URL suffix -> use json
       accept_header = accept_format_header("*/*")
-      get map_path(:bbox => bbox, :format => "json"), :headers => accept_header
+      get api_map_path(:bbox => bbox, :format => "json"), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/json; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: Firefox header -> use XML
       accept_header = accept_format_header("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: JOSM header text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 -> use XML
       # Note: JOSM's header does not comply with RFC 7231, section 5.3.1
       accept_header = accept_format_header("text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: text/plain, */* -> use XML
       accept_header = accept_format_header("text/plain, */*")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: text/* -> use XML
       accept_header = accept_format_header("text/*")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/xml; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: json, */* format -> use json
       accept_header = accept_format_header("application/json, */*")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/json; charset=utf-8", @response.header["Content-Type"]
 
       # Accept: json format -> use json
       accept_header = accept_format_header("application/json")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :success, "Expected success with the map call"
       assert_equal "application/json; charset=utf-8", @response.header["Content-Type"]
 
       # text/json is in invalid format, return HTTP 406 Not acceptable
       accept_header = accept_format_header("text/json")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :not_acceptable, "text/json should fail"
 
       # image/jpeg is a format which we don't support, return HTTP 406 Not acceptable
       accept_header = accept_format_header("image/jpeg")
-      get map_path(:bbox => bbox), :headers => accept_header
+      get api_map_path(:bbox => bbox), :headers => accept_header
       assert_response :not_acceptable, "text/json should fail"
     end
 
@@ -124,7 +124,7 @@ module Api
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
       bbox = "#{minlon},#{minlat},#{maxlon},#{maxlat}"
-      get map_path(:bbox => bbox)
+      get api_map_path(:bbox => bbox)
       if $VERBOSE
         print @request.to_yaml
         print @response.body
@@ -167,7 +167,7 @@ module Api
       maxlon = node.lon + 0.1
       maxlat = node.lat + 0.1
       bbox = "#{minlon},#{minlat},#{maxlon},#{maxlat}"
-      get map_path(:bbox => bbox, :format => "json")
+      get api_map_path(:bbox => bbox, :format => "json")
       if $VERBOSE
         print @request.to_yaml
         print @response.body
@@ -211,7 +211,7 @@ module Api
       relation = create(:relation_member, :member => node).relation
 
       bbox = "#{node.lon},#{node.lat},#{node.lon},#{node.lat}"
-      get map_path(:bbox => bbox)
+      get api_map_path(:bbox => bbox)
       assert_response :success, "The map call should have succeeded"
       assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
         assert_select "bounds[minlon='#{node.lon}']" \
@@ -248,7 +248,7 @@ module Api
       relation = create(:relation_member, :member => way1).relation
 
       bbox = "#{node.lon},#{node.lat},#{node.lon},#{node.lat}"
-      get map_path(:bbox => bbox)
+      get api_map_path(:bbox => bbox)
       assert_response :success, "The map call should have succeeded"
       assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
         assert_select "bounds[minlon='#{node.lon}'][minlat='#{node.lat}'][maxlon='#{node.lon}'][maxlat='#{node.lat}']", :count => 1
@@ -265,7 +265,7 @@ module Api
     end
 
     def test_map_empty
-      get map_path(:bbox => "179.998,89.998,179.999.1,89.999")
+      get api_map_path(:bbox => "179.998,89.998,179.999.1,89.999")
       assert_response :success, "The map call should have succeeded"
       assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
         assert_select "bounds[minlon='179.9980000'][minlat='89.9980000'][maxlon='179.9990000'][maxlat='89.9990000']", :count => 1
@@ -276,14 +276,14 @@ module Api
     end
 
     def test_map_without_bbox
-      get map_path
+      get api_map_path
       assert_response :bad_request
       assert_equal "The parameter bbox is required", @response.body, "A bbox param was expected"
     end
 
     def test_bbox_too_big
       @badbigbbox.each do |bbox|
-        get map_path(:bbox => bbox)
+        get api_map_path(:bbox => bbox)
         assert_response :bad_request, "The bbox:#{bbox} was expected to be too big"
         assert_equal "The maximum bbox size is #{Settings.max_request_area}, and your request was too large. Either request a smaller area, or use planet.osm", @response.body, "bbox: #{bbox}"
       end
@@ -291,7 +291,7 @@ module Api
 
     def test_bbox_malformed
       @badmalformedbbox.each do |bbox|
-        get map_path(:bbox => bbox)
+        get api_map_path(:bbox => bbox)
         assert_response :bad_request, "The bbox:#{bbox} was expected to be malformed"
         assert_equal "The parameter bbox must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}"
       end
@@ -299,7 +299,7 @@ module Api
 
     def test_bbox_lon_mixedup
       @badlonmixedbbox.each do |bbox|
-        get map_path(:bbox => bbox)
+        get api_map_path(:bbox => bbox)
         assert_response :bad_request, "The bbox:#{bbox} was expected to have the longitude mixed up"
         assert_equal "The minimum longitude must be less than the maximum longitude, but it wasn't", @response.body, "bbox: #{bbox}"
       end
@@ -307,7 +307,7 @@ module Api
 
     def test_bbox_lat_mixedup
       @badlatmixedbbox.each do |bbox|
-        get map_path(:bbox => bbox)
+        get api_map_path(:bbox => bbox)
         assert_response :bad_request, "The bbox:#{bbox} was expected to have the latitude mixed up"
         assert_equal "The minimum latitude must be less than the maximum latitude, but it wasn't", @response.body, "bbox: #{bbox}"
       end
index 5f69e6a2ac025e9eadf11a85795d040c349202c6..17ceb1b9e5b8b58b96ba2d66d22fe310978716c7 100644 (file)
@@ -230,6 +230,17 @@ module Api
       assert_equal note, subscription.note
     end
 
+    def test_create_no_scope_fail
+      user = create(:user)
+      auth_header = bearer_authorization_header user, :scopes => %w[read_prefs]
+
+      assert_no_difference "Note.count" do
+        post api_notes_path(:lat => -1.0, :lon => -1.0, :text => "This is a description", :format => "json"), :headers => auth_header
+
+        assert_response :forbidden
+      end
+    end
+
     def test_comment_success
       open_note_with_comment = create(:note_with_comments)
       user = create(:user)
diff --git a/test/controllers/changeset_subscriptions_controller_test.rb b/test/controllers/changeset_subscriptions_controller_test.rb
new file mode 100644 (file)
index 0000000..7d899ac
--- /dev/null
@@ -0,0 +1,150 @@
+require "test_helper"
+
+class ChangesetSubscriptionsControllerTest < ActionDispatch::IntegrationTest
+  ##
+  # test all routes which lead to this controller
+  def test_routes
+    assert_routing(
+      { :path => "/changeset/1/subscription", :method => :get },
+      { :controller => "changeset_subscriptions", :action => "show", :changeset_id => "1" }
+    )
+    assert_routing(
+      { :path => "/changeset/1/subscription", :method => :post },
+      { :controller => "changeset_subscriptions", :action => "create", :changeset_id => "1" }
+    )
+    assert_routing(
+      { :path => "/changeset/1/subscription", :method => :delete },
+      { :controller => "changeset_subscriptions", :action => "destroy", :changeset_id => "1" }
+    )
+
+    get "/changeset/1/subscribe"
+    assert_redirected_to "/changeset/1/subscription"
+
+    get "/changeset/1/unsubscribe"
+    assert_redirected_to "/changeset/1/subscription"
+  end
+
+  def test_show_as_anonymous
+    changeset = create(:changeset)
+
+    get changeset_subscription_path(changeset)
+    assert_redirected_to login_path(:referer => changeset_subscription_path(changeset))
+  end
+
+  def test_show_when_not_subscribed
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+
+    session_for(other_user)
+    get changeset_subscription_path(changeset)
+
+    assert_response :success
+    assert_dom ".content-body" do
+      assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}"
+      assert_dom "a[href='#{user_path(user)}']", :text => user.display_name
+      assert_dom "form" do
+        assert_dom "> @action", changeset_subscription_path(changeset)
+        assert_dom "input[type=submit]" do
+          assert_dom "> @value", "Subscribe to discussion"
+        end
+      end
+    end
+  end
+
+  def test_show_when_subscribed
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+    changeset.subscribers << other_user
+
+    session_for(other_user)
+    get changeset_subscription_path(changeset)
+
+    assert_response :success
+    assert_dom ".content-body" do
+      assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}"
+      assert_dom "a[href='#{user_path(user)}']", :text => user.display_name
+      assert_dom "form" do
+        assert_dom "> @action", changeset_subscription_path(changeset)
+        assert_dom "input[type=submit]" do
+          assert_dom "> @value", "Unsubscribe from discussion"
+        end
+      end
+    end
+  end
+
+  def test_create_success
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+
+    session_for(other_user)
+    assert_difference "changeset.subscribers.count", 1 do
+      post changeset_subscription_path(changeset)
+    end
+    assert_redirected_to changeset_path(changeset)
+    assert changeset.reload.subscribed?(other_user)
+  end
+
+  def test_create_fail
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+    changeset.subscribers << other_user
+
+    # not signed in
+    assert_no_difference "changeset.subscribers.count" do
+      post changeset_subscription_path(changeset)
+    end
+    assert_response :forbidden
+
+    session_for(other_user)
+
+    # bad diary id
+    post changeset_subscription_path(999111)
+    assert_response :not_found
+
+    # trying to subscribe when already subscribed
+    assert_no_difference "changeset.subscribers.count" do
+      post changeset_subscription_path(changeset)
+    end
+  end
+
+  def test_destroy_success
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+    changeset.subscribers << other_user
+
+    session_for(other_user)
+    assert_difference "changeset.subscribers.count", -1 do
+      delete changeset_subscription_path(changeset)
+    end
+    assert_redirected_to changeset_path(changeset)
+    assert_not changeset.reload.subscribed?(other_user)
+  end
+
+  def test_unsubscribe_fail
+    user = create(:user)
+    other_user = create(:user)
+    changeset = create(:changeset, :user => user)
+
+    # not signed in
+    assert_no_difference "changeset.subscribers.count" do
+      delete changeset_subscription_path(changeset)
+    end
+    assert_response :forbidden
+
+    session_for(other_user)
+
+    # bad diary id
+    delete changeset_subscription_path(999111)
+    assert_response :not_found
+
+    # trying to unsubscribe when not subscribed
+    assert_no_difference "changeset.subscribers.count" do
+      delete changeset_subscription_path(changeset)
+    end
+  end
+end
index 9bbca2ab170c7e0cfecd8b2536d8e96c446cb12a..2e701f248ae0863a7cce1af500125e36e953a30e 100644 (file)
@@ -32,22 +32,6 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest
       { :path => "/history/feed", :method => :get },
       { :controller => "changesets", :action => "feed", :format => :atom }
     )
-    assert_routing(
-      { :path => "/changeset/1/subscribe", :method => :get },
-      { :controller => "changesets", :action => "subscribe", :id => "1" }
-    )
-    assert_routing(
-      { :path => "/changeset/1/subscribe", :method => :post },
-      { :controller => "changesets", :action => "subscribe", :id => "1" }
-    )
-    assert_routing(
-      { :path => "/changeset/1/unsubscribe", :method => :get },
-      { :controller => "changesets", :action => "unsubscribe", :id => "1" }
-    )
-    assert_routing(
-      { :path => "/changeset/1/unsubscribe", :method => :post },
-      { :controller => "changesets", :action => "unsubscribe", :id => "1" }
-    )
   end
 
   ##
@@ -432,119 +416,6 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to :action => :feed
   end
 
-  def test_subscribe_page
-    user = create(:user)
-    other_user = create(:user)
-    changeset = create(:changeset, :user => user)
-    path = subscribe_changeset_path(changeset)
-
-    get path
-    assert_redirected_to login_path(:referer => path)
-
-    session_for(other_user)
-    get path
-    assert_response :success
-    assert_dom ".content-body" do
-      assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}"
-      assert_dom "a[href='#{user_path(user)}']", :text => user.display_name
-    end
-  end
-
-  def test_subscribe_success
-    user = create(:user)
-    other_user = create(:user)
-    changeset = create(:changeset, :user => user)
-
-    session_for(other_user)
-    assert_difference "changeset.subscribers.count", 1 do
-      post subscribe_changeset_path(changeset)
-    end
-    assert_redirected_to changeset_path(changeset)
-    assert changeset.reload.subscribed?(other_user)
-  end
-
-  def test_subscribe_fail
-    user = create(:user)
-    other_user = create(:user)
-
-    changeset = create(:changeset, :user => user)
-
-    # not signed in
-    assert_no_difference "changeset.subscribers.count" do
-      post subscribe_changeset_path(changeset)
-    end
-    assert_response :forbidden
-
-    session_for(other_user)
-
-    # bad diary id
-    post subscribe_changeset_path(999111)
-    assert_response :not_found
-
-    # trying to subscribe when already subscribed
-    post subscribe_changeset_path(changeset)
-    assert_no_difference "changeset.subscribers.count" do
-      post subscribe_changeset_path(changeset)
-    end
-  end
-
-  def test_unsubscribe_page
-    user = create(:user)
-    other_user = create(:user)
-    changeset = create(:changeset, :user => user)
-    path = unsubscribe_changeset_path(changeset)
-
-    get path
-    assert_redirected_to login_path(:referer => path)
-
-    session_for(other_user)
-    get path
-    assert_response :success
-    assert_dom ".content-body" do
-      assert_dom "a[href='#{changeset_path(changeset)}']", :text => "Changeset #{changeset.id}"
-      assert_dom "a[href='#{user_path(user)}']", :text => user.display_name
-    end
-  end
-
-  def test_unsubscribe_success
-    user = create(:user)
-    other_user = create(:user)
-
-    changeset = create(:changeset, :user => user)
-    changeset.subscribers.push(other_user)
-
-    session_for(other_user)
-    assert_difference "changeset.subscribers.count", -1 do
-      post unsubscribe_changeset_path(changeset)
-    end
-    assert_redirected_to changeset_path(changeset)
-    assert_not changeset.reload.subscribed?(other_user)
-  end
-
-  def test_unsubscribe_fail
-    user = create(:user)
-    other_user = create(:user)
-
-    changeset = create(:changeset, :user => user)
-
-    # not signed in
-    assert_no_difference "changeset.subscribers.count" do
-      post unsubscribe_changeset_path(changeset)
-    end
-    assert_response :forbidden
-
-    session_for(other_user)
-
-    # bad diary id
-    post unsubscribe_changeset_path(999111)
-    assert_response :not_found
-
-    # trying to unsubscribe when not subscribed
-    assert_no_difference "changeset.subscribers.count" do
-      post unsubscribe_changeset_path(changeset)
-    end
-  end
-
   private
 
   ##
index 64d5a686615e9d23988f759865eb872643b8bc4a..7f7b4ee8ce6cd2e27b267b483747a55476c7980a 100644 (file)
@@ -18,7 +18,7 @@ class ExportControllerTest < ActionDispatch::IntegrationTest
   # test the finish action for raw OSM data
   def test_finish_osm
     post export_finish_path(:minlon => 0, :minlat => 50, :maxlon => 1, :maxlat => 51, :format => "osm")
-    assert_redirected_to "controller" => "api/map", "action" => "index", "bbox" => "0.0,50.0,1.0,51.0"
+    assert_redirected_to api_map_path(:bbox => "0.0,50.0,1.0,51.0")
   end
 
   ###
diff --git a/test/controllers/messages/mutes_controller_test.rb b/test/controllers/messages/mutes_controller_test.rb
new file mode 100644 (file)
index 0000000..f405c06
--- /dev/null
@@ -0,0 +1,68 @@
+require "test_helper"
+
+module Messages
+  class MutesControllerTest < ActionDispatch::IntegrationTest
+    ##
+    # test all routes which lead to this controller
+    def test_routes
+      assert_routing(
+        { :path => "/messages/1/mute", :method => :delete },
+        { :controller => "messages/mutes", :action => "destroy", :message_id => "1" }
+      )
+    end
+
+    def test_destroy_when_not_logged_in
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+
+      delete message_mute_path(message)
+      assert_response :forbidden
+    end
+
+    def test_destroy_as_other_user
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+      session_for(create(:user))
+
+      delete message_mute_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_destroy_as_sender
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+      session_for(sender_user)
+
+      delete message_mute_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_destroy_as_recipient
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+      session_for(recipient_user)
+
+      delete message_mute_path(message)
+      assert_redirected_to messages_inbox_path
+      assert_not message.reload.muted
+    end
+
+    def test_destroy_on_missing_message
+      session_for(create(:user))
+
+      delete message_mute_path(99999)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+  end
+end
diff --git a/test/controllers/messages/read_marks_controller_test.rb b/test/controllers/messages/read_marks_controller_test.rb
new file mode 100644 (file)
index 0000000..e02e46b
--- /dev/null
@@ -0,0 +1,126 @@
+require "test_helper"
+
+module Messages
+  class ReadMarksControllerTest < ActionDispatch::IntegrationTest
+    ##
+    # test all routes which lead to this controller
+    def test_routes
+      assert_routing(
+        { :path => "/messages/1/read_mark", :method => :post },
+        { :controller => "messages/read_marks", :action => "create", :message_id => "1" }
+      )
+      assert_routing(
+        { :path => "/messages/1/read_mark", :method => :delete },
+        { :controller => "messages/read_marks", :action => "destroy", :message_id => "1" }
+      )
+    end
+
+    def test_create_when_not_logged_in
+      message = create(:message, :unread)
+
+      post message_read_mark_path(message)
+      assert_response :forbidden
+    end
+
+    def test_create_as_other_user
+      message = create(:message, :unread)
+      session_for(create(:user))
+
+      post message_read_mark_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_create_as_sender
+      message = create(:message, :unread)
+      session_for(message.sender)
+
+      post message_read_mark_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_create_as_recipient
+      message = create(:message, :unread)
+      session_for(message.recipient)
+
+      post message_read_mark_path(message)
+      assert_redirected_to messages_inbox_path
+      assert message.reload.message_read
+    end
+
+    def test_create_on_missing_message
+      session_for(create(:user))
+
+      post message_read_mark_path(99999)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_create_on_message_from_muted_user
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
+      session_for(recipient_user)
+
+      post message_read_mark_path(message)
+      assert_redirected_to messages_muted_inbox_path
+      assert message.reload.message_read
+    end
+
+    def test_destroy_when_not_logged_in
+      message = create(:message, :read)
+
+      delete message_read_mark_path(message)
+      assert_response :forbidden
+    end
+
+    def test_destroy_as_other_user
+      message = create(:message, :read)
+      session_for(create(:user))
+
+      delete message_read_mark_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_destroy_as_sender
+      message = create(:message, :read)
+      session_for(message.sender)
+
+      delete message_read_mark_path(message)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_destroy_as_recipient
+      message = create(:message, :read)
+      session_for(message.recipient)
+
+      delete message_read_mark_path(message)
+      assert_redirected_to messages_inbox_path
+      assert_not message.reload.message_read
+    end
+
+    def test_destroy_on_missing_message
+      session_for(create(:user))
+
+      delete message_read_mark_path(99999)
+      assert_response :not_found
+      assert_template "no_such_message"
+    end
+
+    def test_destroy_on_message_from_muted_user
+      sender_user = create(:user)
+      recipient_user = create(:user)
+      create(:user_mute, :owner => recipient_user, :subject => sender_user)
+      message = create(:message, :read, :sender => sender_user, :recipient => recipient_user)
+      session_for(recipient_user)
+
+      delete message_read_mark_path(message, :mark => "unread")
+      assert_redirected_to messages_muted_inbox_path
+      assert_not message.reload.message_read
+    end
+  end
+end
index b2bb71b1c71e8b1484983d9956f89487b55d5d21..bdf88600cb9f75bae864dc1ea9fe4b2bd5938b50 100644 (file)
@@ -16,10 +16,6 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
       { :path => "/messages/1", :method => :get },
       { :controller => "messages", :action => "show", :id => "1" }
     )
-    assert_routing(
-      { :path => "/messages/1/mark", :method => :post },
-      { :controller => "messages", :action => "mark", :message_id => "1" }
-    )
     assert_routing(
       { :path => "/messages/1", :method => :delete },
       { :controller => "messages", :action => "destroy", :id => "1" }
@@ -259,84 +255,6 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
     assert_template "no_such_message"
   end
 
-  ##
-  # test the mark action
-  def test_mark
-    sender_user = create(:user)
-    recipient_user = create(:user)
-    other_user = create(:user)
-    message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
-
-    # Check that the marking a message requires us to login
-    post message_mark_path(message)
-    assert_response :forbidden
-
-    # Login as a user with no messages
-    session_for(other_user)
-
-    # Check that marking a message we didn't send or receive fails
-    post message_mark_path(message)
-    assert_response :not_found
-    assert_template "no_such_message"
-
-    # Login as the message sender_user
-    session_for(sender_user)
-
-    # Check that marking a message we sent fails
-    post message_mark_path(message)
-    assert_response :not_found
-    assert_template "no_such_message"
-
-    # Login as the message recipient_user
-    session_for(recipient_user)
-
-    # Check that the marking a message read works
-    post message_mark_path(message, :mark => "read")
-    assert_redirected_to messages_inbox_path
-    assert Message.find(message.id).message_read
-
-    # Check that the marking a message unread works
-    post message_mark_path(message, :mark => "unread")
-    assert_redirected_to messages_inbox_path
-    assert_not Message.find(message.id).message_read
-
-    # Check that the marking a message read works and redirects to inbox from the message page
-    post message_mark_path(message, :mark => "read"), :headers => { :referer => message_path(message) }
-    assert_redirected_to messages_inbox_path
-    assert Message.find(message.id).message_read
-
-    # Check that the marking a message unread works and redirects to inbox from the message page
-    post message_mark_path(message, :mark => "unread"), :headers => { :referer => message_path(message) }
-    assert_redirected_to messages_inbox_path
-    assert_not Message.find(message.id).message_read
-
-    # Asking to mark a message with a bogus ID should fail
-    post message_mark_path(99999)
-    assert_response :not_found
-    assert_template "no_such_message"
-  end
-
-  ##
-  # test the mark action for messages from muted users
-  def test_mark_muted
-    sender_user = create(:user)
-    recipient_user = create(:user)
-    create(:user_mute, :owner => recipient_user, :subject => sender_user)
-    message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
-
-    session_for(recipient_user)
-
-    # Check that the marking a message read works
-    post message_mark_path(message, :mark => "read")
-    assert_redirected_to messages_muted_inbox_path
-    assert Message.find(message.id).message_read
-
-    # Check that the marking a message unread works
-    post message_mark_path(message, :mark => "unread")
-    assert_redirected_to messages_muted_inbox_path
-    assert_not Message.find(message.id).message_read
-  end
-
   ##
   # test the destroy action
   def test_destroy
index 584d00ce859992958c3749f97e0218abfdb85085..250634781320aec58b31b88b8d802bf0e3da62ac 100644 (file)
@@ -17,11 +17,11 @@ class Oauth2AuthorizedApplicationsControllerTest < ActionDispatch::IntegrationTe
   def test_index
     user = create(:user)
     application1 = create(:oauth_application)
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1)
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application1)
+    create(:oauth_access_grant, :user => user, :application => application1)
+    create(:oauth_access_token, :user => user, :application => application1)
     application2 = create(:oauth_application)
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application2)
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application2)
+    create(:oauth_access_grant, :user => user, :application => application2)
+    create(:oauth_access_token, :user => user, :application => application2)
     create(:oauth_application)
 
     get oauth_authorized_applications_path
@@ -38,10 +38,10 @@ class Oauth2AuthorizedApplicationsControllerTest < ActionDispatch::IntegrationTe
   def test_index_scopes
     user = create(:user)
     application1 = create(:oauth_application, :scopes => %w[read_prefs write_prefs write_diary read_gpx write_gpx])
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_prefs])
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_prefs])
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_diary])
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application1, :scopes => %w[read_prefs write_diary])
+    create(:oauth_access_grant, :user => user, :application => application1, :scopes => %w[read_prefs write_prefs])
+    create(:oauth_access_token, :user => user, :application => application1, :scopes => %w[read_prefs write_prefs])
+    create(:oauth_access_grant, :user => user, :application => application1, :scopes => %w[read_prefs write_diary])
+    create(:oauth_access_token, :user => user, :application => application1, :scopes => %w[read_prefs write_diary])
 
     get oauth_authorized_applications_path
     assert_redirected_to login_path(:referer => oauth_authorized_applications_path)
@@ -63,11 +63,11 @@ class Oauth2AuthorizedApplicationsControllerTest < ActionDispatch::IntegrationTe
   def test_destroy
     user = create(:user)
     application1 = create(:oauth_application)
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application1)
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application1)
+    create(:oauth_access_grant, :user => user, :application => application1)
+    create(:oauth_access_token, :user => user, :application => application1)
     application2 = create(:oauth_application)
-    create(:oauth_access_grant, :resource_owner_id => user.id, :application => application2)
-    create(:oauth_access_token, :resource_owner_id => user.id, :application => application2)
+    create(:oauth_access_grant, :user => user, :application => application2)
+    create(:oauth_access_token, :user => user, :application => application2)
     create(:oauth_application)
 
     delete oauth_authorized_application_path(:id => application1.id)
diff --git a/test/controllers/traces/data_controller_test.rb b/test/controllers/traces/data_controller_test.rb
new file mode 100644 (file)
index 0000000..721520f
--- /dev/null
@@ -0,0 +1,120 @@
+require "test_helper"
+
+module Traces
+  class DataControllerTest < ActionDispatch::IntegrationTest
+    ##
+    # test all routes which lead to this controller
+    def test_routes
+      assert_routing(
+        { :path => "/traces/1/data", :method => :get },
+        { :controller => "traces/data", :action => "show", :trace_id => "1" }
+      )
+      assert_routing(
+        { :path => "/traces/1/data.xml", :method => :get },
+        { :controller => "traces/data", :action => "show", :trace_id => "1", :format => "xml" }
+      )
+
+      get "/trace/1/data"
+      assert_redirected_to "/traces/1/data"
+
+      get "/trace/1/data.xml"
+      assert_redirected_to "/traces/1/data.xml"
+    end
+
+    # Test downloading a trace
+    def test_show
+      public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
+
+      # First with no auth, which should work since the trace is public
+      get trace_data_path(public_trace_file)
+      follow_redirect!
+      follow_redirect!
+      check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+
+      # Now with some other user, which should work since the trace is public
+      session_for(create(:user))
+      get trace_data_path(public_trace_file)
+      follow_redirect!
+      follow_redirect!
+      check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+
+      # And finally we should be able to do it with the owner of the trace
+      session_for(public_trace_file.user)
+      get trace_data_path(public_trace_file)
+      follow_redirect!
+      follow_redirect!
+      check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+    end
+
+    # Test downloading a compressed trace
+    def test_show_compressed
+      identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
+
+      # First get the data as is
+      get trace_data_path(identifiable_trace_file)
+      follow_redirect!
+      follow_redirect!
+      check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
+
+      # Now ask explicitly for XML format
+      get trace_data_path(identifiable_trace_file, :format => "xml")
+      check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
+
+      # Now ask explicitly for GPX format
+      get trace_data_path(identifiable_trace_file, :format => "gpx")
+      check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
+    end
+
+    # Check an anonymous trace can't be downloaded by another user
+    def test_show_anon
+      anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
+
+      # First with no auth
+      get trace_data_path(anon_trace_file)
+      assert_response :not_found
+
+      # Now with some other user, which shouldn't work since the trace is anon
+      session_for(create(:user))
+      get trace_data_path(anon_trace_file)
+      assert_response :not_found
+
+      # And finally we should be able to do it with the owner of the trace
+      session_for(anon_trace_file.user)
+      get trace_data_path(anon_trace_file)
+      follow_redirect!
+      follow_redirect!
+      check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
+    end
+
+    # Test downloading a trace that doesn't exist
+    def test_show_not_found
+      deleted_trace_file = create(:trace, :deleted)
+
+      # First with a trace that has never existed
+      get trace_data_path(0)
+      assert_response :not_found
+
+      # Now with a trace that has been deleted
+      session_for(deleted_trace_file.user)
+      get trace_data_path(deleted_trace_file)
+      assert_response :not_found
+    end
+
+    def test_show_offline
+      public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
+      with_settings(:status => "gpx_offline") do
+        get trace_data_path(public_trace_file)
+        assert_response :success
+        assert_template :offline
+      end
+    end
+
+    private
+
+    def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
+      assert_equal digest, Digest::MD5.hexdigest(response.body)
+      assert_equal content_type, response.media_type
+      assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
+    end
+  end
+end
index 78d714289deebec6d6ecf8a0912ce049333d5c3d..45746e213ce9234a10e8d93f2cbe6187d790459f 100644 (file)
@@ -43,14 +43,6 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
       { :path => "/traces", :method => :post },
       { :controller => "traces", :action => "create" }
     )
-    assert_routing(
-      { :path => "/trace/1/data", :method => :get },
-      { :controller => "traces", :action => "data", :id => "1" }
-    )
-    assert_routing(
-      { :path => "/trace/1/data.xml", :method => :get },
-      { :controller => "traces", :action => "data", :id => "1", :format => "xml" }
-    )
     assert_routing(
       { :path => "/traces/1/edit", :method => :get },
       { :controller => "traces", :action => "edit", :id => "1" }
@@ -368,85 +360,6 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to :action => :index
   end
 
-  # Test downloading a trace
-  def test_data
-    public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
-
-    # First with no auth, which should work since the trace is public
-    get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
-    follow_redirect!
-    follow_redirect!
-    check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-
-    # Now with some other user, which should work since the trace is public
-    session_for(create(:user))
-    get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
-    follow_redirect!
-    follow_redirect!
-    check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-
-    # And finally we should be able to do it with the owner of the trace
-    session_for(public_trace_file.user)
-    get trace_data_path(:display_name => public_trace_file.user.display_name, :id => public_trace_file)
-    follow_redirect!
-    follow_redirect!
-    check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-  end
-
-  # Test downloading a compressed trace
-  def test_data_compressed
-    identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
-
-    # First get the data as is
-    get trace_data_path(:display_name => identifiable_trace_file.user.display_name, :id => identifiable_trace_file)
-    follow_redirect!
-    follow_redirect!
-    check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
-
-    # Now ask explicitly for XML format
-    get trace_data_path(:display_name => identifiable_trace_file.user.display_name, :id => identifiable_trace_file.id, :format => "xml")
-    check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
-
-    # Now ask explicitly for GPX format
-    get trace_data_path(:display_name => identifiable_trace_file.user.display_name, :id => identifiable_trace_file.id, :format => "gpx")
-    check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
-  end
-
-  # Check an anonymous trace can't be downloaded by another user
-  def test_data_anon
-    anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
-
-    # First with no auth
-    get trace_data_path(:display_name => anon_trace_file.user.display_name, :id => anon_trace_file)
-    assert_response :not_found
-
-    # Now with some other user, which shouldn't work since the trace is anon
-    session_for(create(:user))
-    get trace_data_path(:display_name => anon_trace_file.user.display_name, :id => anon_trace_file)
-    assert_response :not_found
-
-    # And finally we should be able to do it with the owner of the trace
-    session_for(anon_trace_file.user)
-    get trace_data_path(:display_name => anon_trace_file.user.display_name, :id => anon_trace_file)
-    follow_redirect!
-    follow_redirect!
-    check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
-  end
-
-  # Test downloading a trace that doesn't exist
-  def test_data_not_found
-    deleted_trace_file = create(:trace, :deleted)
-
-    # First with a trace that has never existed
-    get trace_data_path(:display_name => create(:user).display_name, :id => 0)
-    assert_response :not_found
-
-    # Now with a trace that has been deleted
-    session_for(deleted_trace_file.user)
-    get trace_data_path(:display_name => deleted_trace_file.user.display_name, :id => deleted_trace_file)
-    assert_response :not_found
-  end
-
   # Test fetching the new trace page
   def test_new_get
     # First with no auth
@@ -680,10 +593,4 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
       assert_select "td", trace.description
     end
   end
-
-  def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
-    assert_equal digest, Digest::MD5.hexdigest(response.body)
-    assert_equal content_type, response.media_type
-    assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
-  end
 end
index b9f53890b9afc7876377c6ed2cfdc53dd89b75a5..2a936626768f503cacdb8a10a044b396c1e3e191 100644 (file)
@@ -1,9 +1,14 @@
 FactoryBot.define do
   factory :oauth_access_grant, :class => "Doorkeeper::AccessGrant" do
-    resource_owner_id :factory => :user
     application :factory => :oauth_application
 
+    resource_owner_id { user.id }
+
     expires_in { 86400 }
     redirect_uri { application.redirect_uri }
+
+    transient do
+      user { create(:user) } # rubocop:disable FactoryBot/FactoryAssociationWithStrategy
+    end
   end
 end
index 6a8b62f6c077217548278d3330c6c98c2823abc7..dce8c6520dd3044889d2feac87c94117beb5d38e 100644 (file)
@@ -2,6 +2,10 @@ FactoryBot.define do
   factory :oauth_access_token, :class => "Doorkeeper::AccessToken" do
     application :factory => :oauth_application
 
-    resource_owner_id { create(:user).id }
+    resource_owner_id { user.id }
+
+    transient do
+      user { create(:user) } # rubocop:disable FactoryBot/FactoryAssociationWithStrategy
+    end
   end
 end
index 136298381ae8f094f94ecb3d44b7a3a016690257..0634632b850c5209ee759623813c5dd4ab718801 100644 (file)
@@ -9,9 +9,14 @@ class SocialShareButtonHelperTest < ActionView::TestCase
 
     SOCIAL_SHARE_CONFIG.each_value do |icon|
       assert_dom buttons_dom, "div:has(a img[src='/images/#{icon}'])", :count => 1 do
-        assert_dom "a[href*='Test+Title']"
+        assert_dom "a[href*='Test%20Title']"
         assert_dom "a[href*='https%3A%2F%2Fexample.com']"
       end
     end
   end
+
+  def test_generate_share_url_email
+    url = generate_share_url(:email, "Diary Entry Title", "https://osm.example.com/some/diary/entry")
+    assert_equal "mailto:?subject=Diary%20Entry%20Title&body=https%3A%2F%2Fosm.example.com%2Fsome%2Fdiary%2Fentry", url
+  end
 end
index 3b7119ff645ae467a2f29e06ad25d44c4ec5e260..9b895c4758ef72485dd314941e3e49a6e1671e83 100644 (file)
@@ -83,7 +83,7 @@ class UserMailerTest < ActionMailer::TestCase
     body = Rails::Dom::Testing.html_document_fragment.parse(email.html_part.body)
 
     url = Rails.application.routes.url_helpers.changeset_url(changeset, :host => Settings.server_url, :protocol => Settings.server_protocol)
-    unsubscribe_url = Rails.application.routes.url_helpers.unsubscribe_changeset_url(changeset, :host => Settings.server_url, :protocol => Settings.server_protocol)
+    unsubscribe_url = Rails.application.routes.url_helpers.changeset_subscription_url(changeset, :host => Settings.server_url, :protocol => Settings.server_protocol)
     assert_select body, "a[href^='#{url}']"
     assert_select body, "a[href='#{unsubscribe_url}']", :count => 1
   end
index ba87911e33a8d79be67e2793958bdb5f8c20290b..8b0439ac22dc0e5487f6017e872f6883b50fc4cc 100644 (file)
@@ -65,23 +65,6 @@ class NoteTest < ActiveSupport::TestCase
     assert_equal user, comment.note.author
   end
 
-  def test_author_id
-    comment = create(:note_comment)
-    assert_nil comment.note.author_id
-
-    user = create(:user)
-    comment = create(:note_comment, :author => user)
-    assert_equal user.id, comment.note.author_id
-  end
-
-  def test_author_ip
-    comment = create(:note_comment)
-    assert_nil comment.note.author_ip
-
-    comment = create(:note_comment, :author_ip => IPAddr.new("192.168.1.1"))
-    assert_equal IPAddr.new("192.168.1.1"), comment.note.author_ip
-  end
-
   # Ensure the lat/lon is formatted as a decimal e.g. not 4.0e-05
   def test_lat_lon_format
     note = build(:note, :latitude => 0.00004 * GeoRecord::SCALE, :longitude => 0.00008 * GeoRecord::SCALE)
index 5c1c5a26f2a37f2520a10d1f368743c088804681..1bcdec44d3a3313b3d0165d3adb8c6b06f275078 100644 (file)
@@ -306,7 +306,7 @@ class UserTest < ActiveSupport::TestCase
 
   def test_soft_destroy_revokes_oauth2_tokens
     user = create(:user)
-    oauth_access_token = create(:oauth_access_token, :resource_owner_id => user.id)
+    oauth_access_token = create(:oauth_access_token, :user => user)
     assert_equal 1, user.access_tokens.not_expired.count
 
     user.soft_destroy
index 327b888bc4e980f7076b67b69af7f4e98ce12170..a961ea80f7a54099597920e2073c0055a573cad9 100644 (file)
@@ -204,4 +204,48 @@ class IssuesTest < ApplicationSystemTestCase
       assert_no_content(/extra_#{n}[^\d]/i)
     end
   end
+
+  def test_single_issue_reporters
+    sign_in_as(create(:moderator_user))
+    issue = create(:issue, :assigned_role => "moderator")
+    issue.reports << create(:report, :user => create(:user, :display_name => "Test Name"))
+
+    visit issues_path
+    assert_content issue.reported_user.display_name
+    assert_content issue.reports.first.user.display_name
+  end
+
+  def test_multiple_issue_reporters
+    sign_in_as(create(:moderator_user))
+    issue = create(:issue, :assigned_role => "moderator")
+
+    create_list(:report, 5, :issue => issue)
+
+    visit issues_path
+    0.upto(1).each do |n|
+      assert_no_content issue.reports[n].user.display_name
+    end
+    2.upto(4).each do |n|
+      assert_content issue.reports[n].user.display_name
+    end
+  end
+
+  def test_ordering_issue_reporters
+    sign_in_as(create(:moderator_user))
+    issue = create(:issue, :assigned_role => "moderator")
+
+    create_list(:report, 5, :issue => issue)
+
+    4.downto(0).each do |n|
+      issue.reports << create(:report, :user => issue.reports[n].user)
+    end
+
+    visit issues_path
+    0.upto(2).each do |n|
+      assert_content issue.reports[n].user.display_name
+    end
+    3.upto(4).each do |n|
+      assert_no_content issue.reports[n].user.display_name
+    end
+  end
 end
diff --git a/test/system/note_layer_test.rb b/test/system/note_layer_test.rb
new file mode 100644 (file)
index 0000000..792c341
--- /dev/null
@@ -0,0 +1,40 @@
+require "application_system_test_case"
+
+class NoteLayerTest < ApplicationSystemTestCase
+  test "note marker should have description as a title" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description")
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "Note description", marker["title"]
+    end
+  end
+
+  test "note marker should not have a title if the note has no visible description" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
+      create(:note_comment, :note => note, :body => "Note comment visible", :event => "commented")
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "", marker["title"]
+    end
+  end
+
+  test "note marker should not have a title if the note has no visible description and comments" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "", marker["title"]
+    end
+  end
+end
index 79d5d0d33664e53769d575684ae9dc86e7445c3c..90a33dbf60ed5895dd2a1ec5489ae3d85ac746fb 100644 (file)
@@ -138,7 +138,7 @@ module ActiveSupport
     def bearer_authorization_header(token_or_user = nil, scopes: Oauth::SCOPES)
       token = case token_or_user
               when nil then create(:oauth_access_token, :scopes => scopes).token
-              when User then create(:oauth_access_token, :resource_owner_id => token_or_user.id, :scopes => scopes).token
+              when User then create(:oauth_access_token, :user => token_or_user, :scopes => scopes).token
               when Doorkeeper::AccessToken then token_or_user.token
               when String then token_or_user
               end
index 840b1a4c87b98ec779422877c179df6448ae983c..53d18bf2cecc83cf82506335528ff91227eb7f38 100644 (file)
@@ -141,11 +141,14 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
     }
   },
 
-  buildFeatures: function (xml) {
-    var features = L.OSM.getChangesets(xml),
-      nodes = L.OSM.getNodes(xml),
-      ways = L.OSM.getWays(xml, nodes),
-      relations = L.OSM.getRelations(xml, nodes, ways);
+  buildFeatures: function (data) {
+
+    const parser = data instanceof Document ? L.OSM.XMLParser : L.OSM.JSONParser;
+
+    var features = parser.getChangesets(data),
+        nodes = parser.getNodes(data),
+        ways = parser.getWays(data, nodes),
+        relations = parser.getRelations(data, nodes, ways);
 
     var wayNodes = {}
     for (var i = 0; i < ways.length; i++) {
@@ -228,7 +231,7 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
   },
 });
 
-L.Util.extend(L.OSM, {
+L.OSM.XMLParser = {
   getChangesets: function (xml) {
     var result = [];
 
@@ -328,4 +331,64 @@ L.Util.extend(L.OSM, {
 
     return result;
   }
-});
+}
+
+L.OSM.JSONParser = {
+  getChangesets(json) {
+    const changesets = json.changeset ? [json.changeset] : [];
+
+    return changesets.map(cs => ({
+      id: String(cs.id),
+      type: "changeset",
+      latLngBounds: L.latLngBounds(
+        [cs.min_lat, cs.min_lon],
+        [cs.max_lat, cs.max_lon]
+      ),
+      tags: this.getTags(cs)
+    }));
+  },
+
+  getNodes(json) {
+    const nodes = json.elements?.filter(el => el.type === "node") ?? [];
+    let result = {};
+
+    for (const node of nodes) {
+      result[node.id] = {
+        id: String(node.id),
+        type: "node",
+        latLng: L.latLng(node.lat, node.lon, true),
+        tags: this.getTags(node)
+      };
+    }
+
+    return result;
+  },
+
+  getWays(json, nodes) {
+    const ways = json.elements?.filter(el => el.type === "way") ?? [];
+
+    return ways.map(way => ({
+      id: String(way.id),
+      type: "way",
+      nodes: way.nodes.map(nodeId => nodes[nodeId]),
+      tags: this.getTags(way)
+    }));
+  },
+
+  getRelations(json, nodes, ways) {
+    const relations = json.elements?.filter(el => el.type === "relation") ?? [];
+
+    return relations.map(rel => ({
+      id: String(rel.id),
+      type: "relation",
+      members: (rel.members ?? [])   // relation-way and relation-relation membership not implemented
+        .map(member => member.type === "node" ? nodes[member.ref] : null)
+        .filter(Boolean),     // filter out null and undefined
+      tags: this.getTags(rel)
+    }));
+  },
+
+  getTags(json) {
+    return json.tags ?? {};
+  }
+};
diff --git a/vendor/assets/polyfill/es6.js b/vendor/assets/polyfill/es6.js
deleted file mode 100644 (file)
index 70dae2d..0000000
+++ /dev/null
@@ -1,6787 +0,0 @@
-/* Polyfill service v3.38.0
- * For detailed credits and licence information see https://github.com/financial-times/polyfill-service.
- * 
- * Features requested: es6
- * 
- * - _ESAbstract.ArrayCreate, License: CC0 (required by "Array.from", "es6", "Array.of", "_ESAbstract.ArraySpeciesCreate", "Array.prototype.filter", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - _ESAbstract.Call, License: CC0 (required by "Array.from", "es6", "Array.prototype.find", "Array.prototype.findIndex", "WeakMap", "WeakSet", "_ESAbstract.GetIterator", "Map", "Set", "_ESAbstract.IteratorClose", "_ESAbstract.IteratorNext", "_ESAbstract.IteratorStep", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map", "_ESAbstract.ToPrimitive", "_ESAbstract.ToString", "Array.of", "Array.prototype.fill", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "_ESAbstract.OrdinaryToPrimitive")
- * - _ESAbstract.Get, License: CC0 (required by "Array.from", "es6", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "Object.assign", "RegExp.prototype.flags", "WeakMap", "WeakSet", "_ESAbstract.IteratorValue", "Map", "Set", "_ESAbstract.IteratorComplete", "_ESAbstract.IteratorStep", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_ESAbstract.IsRegExp", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.startsWith", "Array.prototype.filter", "Array.prototype.map", "_ESAbstract.GetPrototypeFromConstructor", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "Object.defineProperties", "Object.create", "_ESAbstract.GetIterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_Iterator", "_StringIterator", "_ESAbstract.ArraySpeciesCreate", "_ESAbstract.OrdinaryToPrimitive", "_ESAbstract.ToPrimitive", "_ESAbstract.ToString", "String.prototype.codePointAt", "String.prototype.repeat")
- * - _ESAbstract.HasProperty, License: CC0 (required by "Array.prototype.copyWithin", "es6", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map")
- * - _ESAbstract.IsArray, License: CC0 (required by "String.fromCodePoint", "es6", "WeakMap", "WeakSet", "Array.isArray", "Map", "Array.from", "Set", "_ESAbstract.ArraySpeciesCreate", "Array.prototype.filter", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - _ESAbstract.IsCallable, License: CC0 (required by "Array.from", "es6", "Array.prototype.find", "Array.prototype.findIndex", "Map", "Set", "WeakMap", "WeakSet", "_ESAbstract.GetMethod", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map", "Function.prototype.bind", "_ESAbstract.Construct", "Array.of", "Object.getOwnPropertyDescriptor", "Object.assign", "_ESAbstract.OrdinaryToPrimitive", "_ESAbstract.ToPrimitive", "_ESAbstract.ToString", "Array.prototype.fill", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith")
- * - _ESAbstract.RequireObjectCoercible, License: CC0 (required by "String.prototype.@@iterator", "es6", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith")
- * - _ESAbstract.SameValueNonNumber, License: CC0 (required by "_ESAbstract.SameValueZero", "Map", "es6", "Array.from", "Set", "WeakSet", "_ESAbstract.SameValue", "Object.is", "String.fromCodePoint", "WeakMap")
- * - _ESAbstract.ToBoolean, License: CC0 (required by "Array.prototype.find", "es6", "Array.prototype.findIndex", "RegExp.prototype.flags", "_ESAbstract.IteratorComplete", "Map", "Array.from", "Set", "_ESAbstract.IteratorStep", "WeakMap", "WeakSet", "_ESAbstract.IsRegExp", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.startsWith", "Array.prototype.filter", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - _ESAbstract.ToInteger, License: CC0 (required by "Array.prototype.copyWithin", "es6", "Array.prototype.fill", "Number.isInteger", "Number.isSafeInteger", "String.fromCodePoint", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "_ESAbstract.ToLength", "Array.from", "Array.prototype.find", "Array.prototype.findIndex")
- * - _ESAbstract.ToLength, License: CC0 (required by "Array.from", "es6", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map")
- * - _ESAbstract.ToNumber, License: CC0 (required by "String.fromCodePoint", "es6")
- * - _ESAbstract.ToObject, License: CC0 (required by "Array.from", "es6", "Array.prototype.entries", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator", "Object.assign", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map", "_ESAbstract.GetV", "_ESAbstract.GetMethod", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "Object.defineProperties", "Object.create", "_ArrayIterator", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "_Iterator", "_StringIterator")
- * - _ESAbstract.GetV, License: CC0 (required by "_ESAbstract.GetMethod", "Array.from", "es6", "Map", "Set", "_ESAbstract.GetIterator", "WeakMap", "WeakSet")
- * - _ESAbstract.GetMethod, License: CC0 (required by "Array.from", "es6", "Map", "Set", "_ESAbstract.IsConstructor", "Array.of", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_ESAbstract.IteratorClose", "_ESAbstract.ToPrimitive", "_ESAbstract.ToString", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith")
- * - _ESAbstract.ToUint32, License: CC0 (required by "Math.clz32", "es6", "Math.imul")
- * - _ESAbstract.Type, License: CC0 (required by "Map", "es6", "Array.from", "Number.isFinite", "Number.isInteger", "Number.isNaN", "Number.isSafeInteger", "Object.seal", "RegExp.prototype.flags", "WeakMap", "WeakSet", "_ESAbstract.IsConstructor", "Array.of", "_ESAbstract.GetIterator", "Set", "_ESAbstract.IteratorClose", "_ESAbstract.ToString", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "_ESAbstract.IteratorValue", "_ESAbstract.CreateIterResultObject", "_ESAbstract.IteratorComplete", "_ESAbstract.IteratorStep", "_ESAbstract.IteratorNext", "_ESAbstract.SameValueZero", "Object.create", "Object.setPrototypeOf", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "_ESAbstract.SameValue", "Object.is", "String.fromCodePoint", "_ESAbstract.IsRegExp", "_ESAbstract.ToPrimitive", "_ESAbstract.GetPrototypeFromConstructor", "Object.defineProperties", "_Iterator", "_StringIterator", "_ESAbstract.ArraySpeciesCreate", "Array.prototype.filter", "Array.prototype.map", "_ESAbstract.OrdinaryToPrimitive")
- * - _ESAbstract.GetPrototypeFromConstructor, License: CC0 (required by "_ESAbstract.OrdinaryCreateFromConstructor", "Map", "es6", "Array.from", "Set", "WeakMap", "WeakSet", "_ESAbstract.Construct", "Array.of")
- * - _ESAbstract.IsConstructor, License: CC0 (required by "Array.from", "es6", "Array.of", "_ESAbstract.Construct", "_ESAbstract.ArraySpeciesCreate", "Array.prototype.filter", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - _ESAbstract.IsRegExp, License: CC0 (required by "String.prototype.endsWith", "es6", "String.prototype.includes", "String.prototype.startsWith")
- * - _ESAbstract.IteratorClose, License: CC0 (required by "Array.from", "es6", "Map", "Set", "WeakMap", "WeakSet")
- * - _ESAbstract.IteratorComplete, License: CC0 (required by "Map", "es6", "Array.from", "Set", "_ESAbstract.IteratorStep", "WeakMap", "WeakSet")
- * - _ESAbstract.IteratorNext, License: CC0 (required by "Map", "es6", "Array.from", "Set", "_ESAbstract.IteratorStep", "WeakMap", "WeakSet")
- * - _ESAbstract.IteratorStep, License: CC0 (required by "Array.from", "es6", "Map", "Set", "WeakMap", "WeakSet")
- * - _ESAbstract.IteratorValue, License: CC0 (required by "Array.from", "es6", "Map", "Set", "WeakMap", "WeakSet")
- * - _ESAbstract.OrdinaryToPrimitive, License: CC0 (required by "_ESAbstract.ToPrimitive", "_ESAbstract.ToString", "Array.from", "es6", "Array.of", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith")
- * - _ESAbstract.SameValue, License: CC0 (required by "Object.is", "es6", "String.fromCodePoint", "WeakMap")
- * - _ESAbstract.SameValueZero, License: CC0 (required by "Map", "es6", "Array.from", "Set", "WeakSet")
- * - _ESAbstract.ToPrimitive, License: CC0 (required by "_ESAbstract.ToString", "Array.from", "es6", "Array.of", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith")
- * - _ESAbstract.ToString, License: CC0 (required by "Array.from", "es6", "Array.of", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "Array.prototype.forEach", "Object.setPrototypeOf", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.filter", "Array.prototype.map")
- * - _ESAbstract.UTF16Decode, License: CC0 (required by "String.prototype.codePointAt", "es6")
- * - _ESAbstract.UTF16Encoding, License: CC0 (required by "String.fromCodePoint", "es6")
- * - _TypedArray, License: MIT (required by "Math.fround", "es6")
- * - Object.defineProperty, License: CC0 (required by "Function.prototype.name", "es6", "Map", "Array.from", "Number.Epsilon", "Number.MAX_SAFE_INTEGER", "Number.MIN_SAFE_INTEGER", "Object.setPrototypeOf", "RegExp.prototype.flags", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Symbol", "WeakMap", "WeakSet", "_ESAbstract.CreateMethodProperty", "Array.of", "Array.prototype.copyWithin", "Array.prototype.entries", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "Array.prototype.keys", "Array.prototype.values", "Math.acosh", "Math.asinh", "Math.atanh", "Math.cbrt", "Math.clz32", "Math.cosh", "Math.expm1", "Math.fround", "Math.hypot", "Math.imul", "Math.log10", "Math.log1p", "Math.log2", "Math.sign", "Math.sinh", "Math.tanh", "Math.trunc", "Number.isFinite", "Number.isInteger", "Number.isNaN", "Number.isSafeInteger", "Number.parseFloat", "Number.parseInt", "Object.assign", "Object.is", "Object.seal", "String.fromCodePoint", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "_ArrayIterator", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "_StringIterator", "_ESAbstract.CreateDataProperty", "_ESAbstract.CreateDataPropertyOrThrow", "_ESAbstract.CreateIterResultObject", "_Iterator", "Object.defineProperties", "Object.create", "_ESAbstract.GetIterator")
- * - _ESAbstract.CreateDataProperty, License: CC0 (required by "_ESAbstract.CreateDataPropertyOrThrow", "Array.from", "es6", "Array.of", "_ESAbstract.CreateIterResultObject", "Map", "Set")
- * - _ESAbstract.CreateDataPropertyOrThrow, License: CC0 (required by "Array.from", "es6", "Array.of", "Array.prototype.filter", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - _ESAbstract.CreateIterResultObject, License: CC0 (required by "Map", "es6", "Array.from", "Set")
- * - _ESAbstract.CreateMethodProperty, License: CC0 (required by "Array.from", "es6", "Array.of", "Array.prototype.@@iterator", "Array.prototype.copyWithin", "Array.prototype.entries", "Array.prototype.fill", "Array.prototype.find", "Array.prototype.findIndex", "Array.prototype.keys", "Array.prototype.values", "Map", "Math.acosh", "Math.asinh", "Math.atanh", "Math.cbrt", "Math.clz32", "Math.cosh", "Math.expm1", "Math.fround", "Math.hypot", "Math.imul", "Math.log10", "Math.log1p", "Math.log2", "Math.sign", "Math.sinh", "Math.tanh", "Math.trunc", "Number.isFinite", "Number.isInteger", "Number.isNaN", "Number.isSafeInteger", "Number.parseFloat", "Number.parseInt", "Object.assign", "Object.is", "Object.seal", "Object.setPrototypeOf", "Set", "String.fromCodePoint", "String.prototype.@@iterator", "String.prototype.codePointAt", "String.prototype.endsWith", "String.prototype.includes", "String.prototype.repeat", "String.prototype.startsWith", "WeakMap", "WeakSet", "Array.isArray", "Object.create", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_ESAbstract.GetIterator", "_ArrayIterator", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Object.getOwnPropertyDescriptor", "Object.keys", "Array.prototype.forEach", "Object.getPrototypeOf", "Object.getOwnPropertyNames", "Array.prototype.filter", "Array.prototype.map", "Object.freeze", "Function.prototype.bind", "Object.defineProperties", "_Iterator", "_StringIterator")
- * - Array.isArray, License: CC0 (required by "Map", "es6", "Array.from", "Set", "WeakMap")
- * - Array.prototype.copyWithin, License: MIT (required by "es6")
- * - Array.prototype.fill, License: CC0 (required by "es6")
- * - Array.prototype.find, License: CC0 (required by "es6")
- * - Array.prototype.findIndex, License: CC0 (required by "es6")
- * - Array.prototype.forEach, License: CC0 (required by "Object.setPrototypeOf", "es6", "Symbol", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - Function.prototype.bind, License: MIT (required by "_ESAbstract.Construct", "Array.from", "es6", "Array.of", "Object.getOwnPropertyDescriptor", "Object.assign", "Object.setPrototypeOf", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_Iterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_StringIterator")
- * - Math.acosh, License: CC0 (required by "es6")
- * - Math.asinh, License: CC0 (required by "es6")
- * - Math.atanh, License: CC0 (required by "es6")
- * - Math.cbrt, License: CC0 (required by "es6")
- * - Math.clz32, License: CC0 (required by "es6")
- * - Math.cosh, License: CC0 (required by "es6")
- * - Math.expm1, License: CC0 (required by "es6")
- * - Math.fround, License: CC0 (required by "es6")
- * - Math.hypot, License: CC0 (required by "es6")
- * - Math.imul, License: CC0 (required by "es6")
- * - Math.log10, License: CC0 (required by "es6")
- * - Math.log1p, License: CC0 (required by "es6")
- * - Math.log2, License: CC0 (required by "es6")
- * - Math.sign, License: CC0 (required by "es6")
- * - Math.sinh, License: CC0 (required by "es6")
- * - Math.tanh, License: CC0 (required by "es6")
- * - Math.trunc, License: CC0 (required by "es6")
- * - Number.isFinite, License: MIT (required by "es6")
- * - Number.isInteger, License: MIT (required by "es6")
- * - Number.isNaN, License: MIT (required by "es6")
- * - Number.isSafeInteger, License: MIT (required by "es6")
- * - Number.parseFloat, License: MIT (required by "es6")
- * - Number.parseInt, License: MIT (required by "es6")
- * - Function.prototype.name, License: MIT (required by "es6")
- * - Number.Epsilon, License: MIT (required by "es6")
- * - Number.MAX_SAFE_INTEGER, License: MIT (required by "es6")
- * - Number.MIN_SAFE_INTEGER, License: MIT (required by "es6")
- * - Object.freeze, License: CC0 (required by "Symbol", "es6", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - Object.getOwnPropertyDescriptor, License: CC0 (required by "Object.assign", "es6", "Object.setPrototypeOf", "Symbol", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Object.defineProperties", "Object.create", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "_Iterator", "_StringIterator")
- * - Object.getOwnPropertyNames, License: CC0 (required by "Object.setPrototypeOf", "es6", "Symbol", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - Object.getPrototypeOf, License: CC0 (required by "Object.setPrototypeOf", "es6", "_ESAbstract.OrdinaryCreateFromConstructor", "Map", "Array.from", "Set", "WeakMap", "WeakSet", "_ESAbstract.Construct", "Array.of")
- * - Object.is, License: CC0 (required by "es6")
- * - Object.keys, License: MIT (required by "Object.assign", "es6", "Symbol", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Object.defineProperties", "Object.create", "Object.setPrototypeOf", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "_Iterator", "_StringIterator")
- * - Object.assign, License: CC0 (required by "es6", "_Iterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator", "_StringIterator", "String.prototype.@@iterator")
- * - Object.defineProperties, License: CC0 (required by "Object.create", "Map", "es6", "Array.from", "Object.setPrototypeOf", "Set", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "_Iterator", "_StringIterator")
- * - Object.create, License: CC0 (required by "Map", "es6", "Array.from", "Object.setPrototypeOf", "Set", "Symbol", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.Construct", "Array.of", "_StringIterator")
- * - _ESAbstract.OrdinaryCreateFromConstructor, License: CC0 (required by "Map", "es6", "Array.from", "Set", "WeakMap", "WeakSet", "_ESAbstract.Construct", "Array.of")
- * - _ESAbstract.Construct, License: CC0 (required by "Array.from", "es6", "Array.of", "_ESAbstract.ArraySpeciesCreate", "Array.prototype.filter", "Symbol", "Map", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - _ESAbstract.ArraySpeciesCreate, License: CC0 (required by "Array.prototype.filter", "Symbol", "es6", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "Array.prototype.map")
- * - Array.prototype.filter, License: CC0 (required by "Symbol", "es6", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - Array.prototype.map, License: CC0 (required by "Symbol", "es6", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables")
- * - Array.of, License: CC0 (required by "es6")
- * - Object.seal, License: MIT (required by "es6")
- * - Object.setPrototypeOf, License: MIT (required by "es6", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator", "_StringIterator", "String.prototype.@@iterator")
- * - Promise, License: MIT (required by "es6")
- * - RegExp.prototype.flags, License: MIT (required by "es6")
- * - String.fromCodePoint, License: MIT (required by "es6")
- * - String.prototype.codePointAt, License: MIT (required by "es6")
- * - String.prototype.endsWith, License: CC0 (required by "es6")
- * - String.prototype.includes, License: CC0 (required by "es6", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator")
- * - String.prototype.repeat, License: CC0 (required by "es6")
- * - String.prototype.startsWith, License: CC0 (required by "es6")
- * - Symbol, License: MIT (required by "es6", "Map", "Array.from", "Set", "Symbol.hasInstance", "Symbol.isConcatSpreadable", "Symbol.iterator", "Array.prototype.@@iterator", "String.prototype.@@iterator", "Symbol.match", "Symbol.replace", "Symbol.search", "Symbol.species", "Symbol.split", "Symbol.toPrimitive", "Symbol.toStringTag", "Symbol.unscopables", "WeakMap", "WeakSet", "_Iterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_StringIterator")
- * - Symbol.hasInstance, License: MIT (required by "es6")
- * - Symbol.isConcatSpreadable, License: MIT (required by "es6")
- * - Symbol.iterator, License: MIT (required by "es6", "Array.from", "Array.prototype.@@iterator", "Map", "Set", "String.prototype.@@iterator", "_ESAbstract.GetIterator", "WeakMap", "WeakSet", "_Iterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "_StringIterator")
- * - _ESAbstract.GetIterator, License: CC0 (required by "Array.from", "es6", "Map", "Set", "WeakMap", "WeakSet")
- * - Symbol.match, License: MIT (required by "es6")
- * - Symbol.replace, License: MIT (required by "es6")
- * - Symbol.search, License: MIT (required by "es6")
- * - Symbol.species, License: MIT (required by "es6", "Map", "Array.from", "Set")
- * - Map, License: CC0 (required by "es6", "Array.from")
- * - Set, License: CC0 (required by "es6", "Array.from")
- * - Array.from, License: CC0 (required by "es6")
- * - Symbol.split, License: MIT (required by "es6")
- * - Symbol.toPrimitive, License: MIT (required by "es6")
- * - Symbol.toStringTag, License: MIT (required by "es6", "_Iterator", "_ArrayIterator", "Array.prototype.entries", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator", "_StringIterator", "String.prototype.@@iterator")
- * - _Iterator, License: MIT (required by "_ArrayIterator", "Array.prototype.entries", "es6", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator", "_StringIterator", "String.prototype.@@iterator")
- * - _ArrayIterator, License: MIT (required by "Array.prototype.entries", "es6", "Array.prototype.keys", "Array.prototype.values", "Array.prototype.@@iterator")
- * - Array.prototype.entries, License: CC0 (required by "es6")
- * - Array.prototype.keys, License: CC0 (required by "es6")
- * - Array.prototype.values, License: MIT (required by "es6", "Array.prototype.@@iterator")
- * - Array.prototype.@@iterator, License: CC0 (required by "es6")
- * - _StringIterator, License: MIT (required by "String.prototype.@@iterator", "es6")
- * - String.prototype.@@iterator, License: CC0 (required by "es6")
- * - Symbol.unscopables, License: MIT (required by "es6")
- * - WeakMap, License: MIT (required by "es6")
- * - WeakSet, License: MIT (required by "es6") */
-
-(function(undefined) {
-
-// _ESAbstract.ArrayCreate
-// 9.4.2.2. ArrayCreate ( length [ , proto ] )
-function ArrayCreate(length /* [, proto] */) { // eslint-disable-line no-unused-vars
-       // 1. Assert: length is an integer Number ≥ 0.
-       // 2. If length is -0, set length to +0.
-       if (1 / length === -Infinity) {
-               length = 0;
-       }
-       // 3. If length>2^32-1, throw a RangeError exception.
-       if (length > (Math.pow(2, 32) - 1)) {
-               throw new RangeError('Invalid array length');
-       }
-       // 4. If proto is not present, set proto to the intrinsic object %ArrayPrototype%.
-       // 5. Let A be a newly created Array exotic object.
-       var A = [];
-       // 6. Set A's essential internal methods except for [[DefineOwnProperty]] to the default ordinary object definitions specified in 9.1.
-       // 7. Set A.[[DefineOwnProperty]] as specified in 9.4.2.1.
-       // 8. Set A.[[Prototype]] to proto.
-       // 9. Set A.[[Extensible]] to true.
-       // 10. Perform ! OrdinaryDefineOwnProperty(A, "length", PropertyDescriptor{[[Value]]: length, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: false}).
-       A.length = length;
-       // 11. Return A.
-       return A;
-}
-
-// _ESAbstract.Call
-/* global IsCallable */
-// 7.3.12. Call ( F, V [ , argumentsList ] )
-function Call(F, V /* [, argumentsList] */) { // eslint-disable-line no-unused-vars
-       // 1. If argumentsList is not present, set argumentsList to a new empty List.
-       var argumentsList = arguments.length > 2 ? arguments[2] : [];
-       // 2. If IsCallable(F) is false, throw a TypeError exception.
-       if (IsCallable(F) === false) {
-               throw new TypeError(Object.prototype.toString.call(F) + 'is not a function.');
-       }
-       // 3. Return ? F.[[Call]](V, argumentsList).
-       return F.apply(V, argumentsList);
-}
-
-// _ESAbstract.Get
-// 7.3.1. Get ( O, P )
-function Get(O, P) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(O) is Object.
-       // 2. Assert: IsPropertyKey(P) is true.
-       // 3. Return ? O.[[Get]](P, O).
-       return O[P];
-}
-
-// _ESAbstract.HasProperty
-// 7.3.10. HasProperty ( O, P )
-function HasProperty(O, P) { // eslint-disable-line no-unused-vars
-       // Assert: Type(O) is Object.
-       // Assert: IsPropertyKey(P) is true.
-       // Return ? O.[[HasProperty]](P).
-       return P in O;
-}
-
-// _ESAbstract.IsArray
-// 7.2.2. IsArray ( argument )
-function IsArray(argument) { // eslint-disable-line no-unused-vars
-       // 1. If Type(argument) is not Object, return false.
-       // 2. If argument is an Array exotic object, return true.
-       // 3. If argument is a Proxy exotic object, then
-               // a. If argument.[[ProxyHandler]] is null, throw a TypeError exception.
-               // b. Let target be argument.[[ProxyTarget]].
-               // c. Return ? IsArray(target).
-       // 4. Return false.
-
-       // Polyfill.io - We can skip all the above steps and check the string returned from Object.prototype.toString().
-       return Object.prototype.toString.call(argument) === '[object Array]';
-}
-
-// _ESAbstract.IsCallable
-// 7.2.3. IsCallable ( argument )
-function IsCallable(argument) { // eslint-disable-line no-unused-vars
-       // 1. If Type(argument) is not Object, return false.
-       // 2. If argument has a [[Call]] internal method, return true.
-       // 3. Return false.
-
-       // Polyfill.io - Only function objects have a [[Call]] internal method. This means we can simplify this function to check that the argument has a type of function.
-       return typeof argument === 'function';
-}
-
-// _ESAbstract.RequireObjectCoercible
-// 7.2.1. RequireObjectCoercible ( argument )
-// The abstract operation ToObject converts argument to a value of type Object according to Table 12:
-// Table 12: ToObject Conversions
-/*
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-| Argument Type | Result                                                                                                                             |
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-| Undefined     | Throw a TypeError exception.                                                                                                       |
-| Null          | Throw a TypeError exception.                                                                                                       |
-| Boolean       | Return argument.                                                                                                                   |
-| Number        | Return argument.                                                                                                                   |
-| String        | Return argument.                                                                                                                   |
-| Symbol        | Return argument.                                                                                                                   |
-| Object        | Return argument.                                                                                                                   |
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-*/
-function RequireObjectCoercible(argument) { // eslint-disable-line no-unused-vars
-       if (argument === null || argument === undefined) {
-               throw TypeError();
-       }
-  return argument;
-}
-
-// _ESAbstract.SameValueNonNumber
-// 7.2.12. SameValueNonNumber ( x, y )
-function SameValueNonNumber(x, y) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(x) is not Number.
-       // 2. Assert: Type(x) is the same as Type(y).
-       // 3. If Type(x) is Undefined, return true.
-       // 4. If Type(x) is Null, return true.
-       // 5. If Type(x) is String, then
-               // a. If x and y are exactly the same sequence of code units (same length and same code units at corresponding indices), return true; otherwise, return false.
-       // 6. If Type(x) is Boolean, then
-               // a. If x and y are both true or both false, return true; otherwise, return false.
-       // 7. If Type(x) is Symbol, then
-               // a. If x and y are both the same Symbol value, return true; otherwise, return false.
-       // 8. If x and y are the same Object value, return true. Otherwise, return false.
-
-       // Polyfill.io - We can skip all above steps because the === operator does it all for us.
-       return x === y;
-}
-
-// _ESAbstract.ToBoolean
-// 7.1.2. ToBoolean ( argument )
-// The abstract operation ToBoolean converts argument to a value of type Boolean according to Table 9:
-/*
---------------------------------------------------------------------------------------------------------------
-| Argument Type | Result                                                                                     |
---------------------------------------------------------------------------------------------------------------
-| Undefined     | Return false.                                                                              |
-| Null          | Return false.                                                                              |
-| Boolean       | Return argument.                                                                           |
-| Number        | If argument is +0, -0, or NaN, return false; otherwise return true.                        |
-| String        | If argument is the empty String (its length is zero), return false; otherwise return true. |
-| Symbol        | Return true.                                                                               |
-| Object        | Return true.                                                                               |
---------------------------------------------------------------------------------------------------------------
-*/
-function ToBoolean(argument) { // eslint-disable-line no-unused-vars
-       return Boolean(argument);
-}
-
-// _ESAbstract.ToInteger
-// 7.1.4. ToInteger ( argument )
-function ToInteger(argument) { // eslint-disable-line no-unused-vars
-       // 1. Let number be ? ToNumber(argument).
-       var number = Number(argument);
-       // 2. If number is NaN, return +0.
-       if (isNaN(number)) {
-               return 0;
-       }
-       // 3. If number is +0, -0, +∞, or -∞, return number.
-       if (1/number === Infinity || 1/number === -Infinity || number === Infinity || number === -Infinity) {
-               return number;
-       }
-       // 4. Return the number value that is the same sign as number and whose magnitude is floor(abs(number)).
-       return ((number < 0) ? -1 : 1) * Math.floor(Math.abs(number));
-}
-
-// _ESAbstract.ToLength
-/* global ToInteger */
-// 7.1.15. ToLength ( argument )
-function ToLength(argument) { // eslint-disable-line no-unused-vars
-       // 1. Let len be ? ToInteger(argument).
-       var len = ToInteger(argument);
-       // 2. If len ≤ +0, return +0.
-       if (len <= 0) {
-               return 0;
-       }
-       // 3. Return min(len, 253-1).
-       return Math.min(len, Math.pow(2, 53) -1);
-}
-
-// _ESAbstract.ToNumber
-// 7.1.3. ToNumber ( argument )
-function ToNumber(argument) { // eslint-disable-line no-unused-vars
-       return Number(argument);
-}
-
-// _ESAbstract.ToObject
-// 7.1.13 ToObject ( argument )
-// The abstract operation ToObject converts argument to a value of type Object according to Table 12:
-// Table 12: ToObject Conversions
-/*
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-| Argument Type | Result                                                                                                                             |
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-| Undefined     | Throw a TypeError exception.                                                                                                       |
-| Null          | Throw a TypeError exception.                                                                                                       |
-| Boolean       | Return a new Boolean object whose [[BooleanData]] internal slot is set to argument. See 19.3 for a description of Boolean objects. |
-| Number        | Return a new Number object whose [[NumberData]] internal slot is set to argument. See 20.1 for a description of Number objects.    |
-| String        | Return a new String object whose [[StringData]] internal slot is set to argument. See 21.1 for a description of String objects.    |
-| Symbol        | Return a new Symbol object whose [[SymbolData]] internal slot is set to argument. See 19.4 for a description of Symbol objects.    |
-| Object        | Return argument.                                                                                                                   |
-|----------------------------------------------------------------------------------------------------------------------------------------------------|
-*/
-function ToObject(argument) { // eslint-disable-line no-unused-vars
-       if (argument === null || argument === undefined) {
-               throw TypeError();
-       }
-  return Object(argument);
-}
-
-// _ESAbstract.GetV
-/* global ToObject */
-// 7.3.2 GetV (V, P)
-function GetV(v, p) { // eslint-disable-line no-unused-vars
-       // 1. Assert: IsPropertyKey(P) is true.
-       // 2. Let O be ? ToObject(V).
-       var o = ToObject(v);
-       // 3. Return ? O.[[Get]](P, V).
-       return o[p];
-}
-
-// _ESAbstract.GetMethod
-/* global GetV, IsCallable */
-// 7.3.9. GetMethod ( V, P )
-function GetMethod(V, P) { // eslint-disable-line no-unused-vars
-       // 1. Assert: IsPropertyKey(P) is true.
-       // 2. Let func be ? GetV(V, P).
-       var func = GetV(V, P);
-       // 3. If func is either undefined or null, return undefined.
-       if (func === null || func === undefined) {
-               return undefined;
-       }
-       // 4. If IsCallable(func) is false, throw a TypeError exception.
-       if (IsCallable(func) === false) {
-               throw new TypeError('Method not callable: ' + P);
-       }
-       // 5. Return func.
-       return func;
-}
-
-// _ESAbstract.ToUint32
-// 7.1.6. ToUint32 ( argument )
-function ToUint32(argument) { // eslint-disable-line no-unused-vars
-       // 1. Let number be ? ToNumber(argument).
-       var number = Number(argument);
-       // 2. If number is NaN, +0, -0, +∞, or -∞, return +0.
-       if (isNaN(number) || 1/number === Infinity || 1/number === -Infinity || number === Infinity || number === -Infinity) {
-               return 0;
-       }
-       // 3. Let int be the mathematical value that is the same sign as number and whose magnitude is floor(abs(number)).
-       var int = ((number < 0) ? -1 : 1) * Math.floor(Math.abs(number));
-       // 4. Let int32bit be int modulo 2^32.
-       var int32bit = int >>> 0;
-       // 5. Return int32bit.
-       return int32bit;
-}
-
-// _ESAbstract.Type
-// "Type(x)" is used as shorthand for "the type of x"...
-function Type(x) { // eslint-disable-line no-unused-vars
-       switch (typeof x) {
-               case 'undefined':
-                       return 'undefined';
-               case 'boolean':
-                       return 'boolean';
-               case 'number':
-                       return 'number';
-               case 'string':
-                       return 'string';
-               case 'symbol':
-                       return 'symbol';
-               default:
-                       // typeof null is 'object'
-                       if (x === null) return 'null';
-                       // Polyfill.io - This is here because a Symbol polyfill will have a typeof `object`.
-                       if ('Symbol' in this && x instanceof this.Symbol) return 'symbol';
-                       return 'object';
-       }
-}
-
-// _ESAbstract.GetPrototypeFromConstructor
-/* global Get, Type */
-// 9.1.14. GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
-function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars
-       // 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object. The corresponding object must be an intrinsic that is intended to be used as the [[Prototype]] value of an object.
-       // 2. Assert: IsCallable(constructor) is true.
-       // 3. Let proto be ? Get(constructor, "prototype").
-       var proto = Get(constructor, "prototype");
-       // 4. If Type(proto) is not Object, then
-       if (Type(proto) !== 'object') {
-               // a. Let realm be ? GetFunctionRealm(constructor).
-               // b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
-               proto = intrinsicDefaultProto;
-       }
-       // 5. Return proto.
-       return proto;
-}
-
-// _ESAbstract.IsConstructor
-/* global Type */
-// 7.2.4. IsConstructor ( argument )
-function IsConstructor(argument) { // eslint-disable-line no-unused-vars
-       // 1. If Type(argument) is not Object, return false.
-       if (Type(argument) !== 'object') {
-               return false;
-       }
-       // 2. If argument has a [[Construct]] internal method, return true.
-       // 3. Return false.
-
-       // Polyfill.io - `new argument` is the only way  to truly test if a function is a constructor.
-       // We choose to not use`new argument` because the argument could have side effects when called.
-       // Instead we check to see if the argument is a function and if it has a prototype.
-       // Arrow functions do not have a [[Construct]] internal method, nor do they have a prototype.
-       return typeof argument === 'function' && !!argument.prototype;
-}
-
-// _ESAbstract.IsRegExp
-/* global Type, Get, ToBoolean */
-// 7.2.8. IsRegExp ( argument )
-function IsRegExp(argument) { // eslint-disable-line no-unused-vars
-       // 1. If Type(argument) is not Object, return false.
-       if (Type(argument) !== 'object') {
-               return false;
-       }
-       // 2. Let matcher be ? Get(argument, @@match).
-       var matcher = 'Symbol' in this && 'match' in this.Symbol ? Get(argument, this.Symbol.match) : undefined;
-       // 3. If matcher is not undefined, return ToBoolean(matcher).
-       if (matcher !== undefined) {
-               return ToBoolean(matcher);
-       }
-       // 4. If argument has a [[RegExpMatcher]] internal slot, return true.
-       try {
-               var lastIndex = argument.lastIndex;
-               argument.lastIndex = 0;
-               RegExp.prototype.exec.call(argument);
-               return true;
-       } catch (e) {} finally {
-               argument.lastIndex = lastIndex;
-       }
-       // 5. Return false.
-       return false;
-}
-
-// _ESAbstract.IteratorClose
-/* global GetMethod, Type, Call */
-// 7.4.6. IteratorClose ( iteratorRecord, completion )
-function IteratorClose(iteratorRecord, completion) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(iteratorRecord.[[Iterator]]) is Object.
-       if (Type(iteratorRecord['[[Iterator]]']) !== 'object') {
-               throw new Error(Object.prototype.toString.call(iteratorRecord['[[Iterator]]']) + 'is not an Object.');
-       }
-       // 2. Assert: completion is a Completion Record.
-       // Polyfill.io - Ignoring this step as there is no way to check if something is a Completion Record in userland JavaScript.
-
-       // 3. Let iterator be iteratorRecord.[[Iterator]].
-       var iterator = iteratorRecord['[[Iterator]]'];
-       // 4. Let return be ? GetMethod(iterator, "return").
-       // Polyfill.io - We name it  returnMethod because return is a keyword and can not be used as an identifier (E.G. variable name, function name etc).
-       var returnMethod = GetMethod(iterator, "return");
-       // 5. If return is undefined, return Completion(completion).
-       if (returnMethod === undefined) {
-               return completion;
-       }
-       // 6. Let innerResult be Call(return, iterator, « »).
-       try {
-               var innerResult = Call(returnMethod, iterator);
-       } catch (error) {
-               var innerException = error;
-       }
-       // 7. If completion.[[Type]] is throw, return Completion(completion).
-       if (completion) {
-               return completion;
-       }
-       // 8. If innerResult.[[Type]] is throw, return Completion(innerResult).
-       if (innerException) {
-               throw innerException;
-       }
-       // 9. If Type(innerResult.[[Value]]) is not Object, throw a TypeError exception.
-       if (Type(innerResult) !== 'object') {
-               throw new TypeError("Iterator's return method returned a non-object.");
-       }
-       // 10. Return Completion(completion).
-       return completion;
-}
-
-// _ESAbstract.IteratorComplete
-/* global Type, ToBoolean, Get */
-// 7.4.3 IteratorComplete ( iterResult )
-function IteratorComplete(iterResult) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(iterResult) is Object.
-       if (Type(iterResult) !== 'object') {
-               throw new Error(Object.prototype.toString.call(iterResult) + 'is not an Object.');
-       }
-       // 2. Return ToBoolean(? Get(iterResult, "done")).
-       return ToBoolean(Get(iterResult, "done"));
-}
-
-// _ESAbstract.IteratorNext
-/* global Call, Type */
-// 7.4.2. IteratorNext ( iteratorRecord [ , value ] )
-function IteratorNext(iteratorRecord /* [, value] */) { // eslint-disable-line no-unused-vars
-       // 1. If value is not present, then
-       if (arguments.length < 2) {
-               // a. Let result be ? Call(iteratorRecord.[[NextMethod]], iteratorRecord.[[Iterator]], « »).
-               var result = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]']);
-       // 2. Else,
-       } else {
-               // a. Let result be ? Call(iteratorRecord.[[NextMethod]], iteratorRecord.[[Iterator]], « value »).
-               result = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]'], [arguments[1]]);
-       }
-       // 3. If Type(result) is not Object, throw a TypeError exception.
-       if (Type(result) !== 'object') {
-               throw new TypeError('bad iterator');
-       }
-       // 4. Return result.
-       return result;
-}
-
-// _ESAbstract.IteratorStep
-/* global IteratorNext, IteratorComplete */
-// 7.4.5. IteratorStep ( iteratorRecord )
-function IteratorStep(iteratorRecord) { // eslint-disable-line no-unused-vars
-       // 1. Let result be ? IteratorNext(iteratorRecord).
-       var result = IteratorNext(iteratorRecord);
-       // 2. Let done be ? IteratorComplete(result).
-       var done = IteratorComplete(result);
-       // 3. If done is true, return false.
-       if (done === true) {
-               return false;
-       }
-       // 4. Return result.
-       return result;
-}
-
-// _ESAbstract.IteratorValue
-/* global Type, Get */
-// 7.4.4 IteratorValue ( iterResult )
-function IteratorValue(iterResult) { // eslint-disable-line no-unused-vars
-       // Assert: Type(iterResult) is Object.
-       if (Type(iterResult) !== 'object') {
-               throw new Error(Object.prototype.toString.call(iterResult) + 'is not an Object.');
-       }
-       // Return ? Get(iterResult, "value").
-       return Get(iterResult, "value");
-}
-
-// _ESAbstract.OrdinaryToPrimitive
-/* global Get, IsCallable, Call, Type */
-// 7.1.1.1. OrdinaryToPrimitive ( O, hint )
-function OrdinaryToPrimitive(O, hint) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(O) is Object.
-       // 2. Assert: Type(hint) is String and its value is either "string" or "number".
-       // 3. If hint is "string", then
-       if (hint === 'string') {
-               // a. Let methodNames be « "toString", "valueOf" ».
-               var methodNames = ['toString', 'valueOf'];
-               // 4. Else,
-       } else {
-               // a. Let methodNames be « "valueOf", "toString" ».
-               methodNames = ['valueOf', 'toString'];
-       }
-       // 5. For each name in methodNames in List order, do
-       for (var i = 0; i < methodNames.length; ++i) {
-               var name = methodNames[i];
-               // a. Let method be ? Get(O, name).
-               var method = Get(O, name);
-               // b. If IsCallable(method) is true, then
-               if (IsCallable(method)) {
-                       // i. Let result be ? Call(method, O).
-                       var result = Call(method, O);
-                       // ii. If Type(result) is not Object, return result.
-                       if (Type(result) !== 'object') {
-                               return result;
-                       }
-               }
-       }
-       // 6. Throw a TypeError exception.
-       throw new TypeError('Cannot convert to primitive.');
-}
-
-// _ESAbstract.SameValue
-/* global Type, SameValueNonNumber */
-// 7.2.10. SameValue ( x, y )
-function SameValue(x, y) { // eslint-disable-line no-unused-vars
-       // 1. If Type(x) is different from Type(y), return false.
-       if (Type(x) !== Type(y)) {
-               return false;
-       }
-       // 2. If Type(x) is Number, then
-       if (Type(x) === 'number') {
-               // a. If x is NaN and y is NaN, return true.
-               if (isNaN(x) && isNaN(y)) {
-                       return true;
-               }
-               // Polyfill.io - 0 === -0 is true, but they are not the same value.
-               // b. If x is +0 and y is -0, return false.
-               // c. If x is -0 and y is +0, return false.
-               if (x === 0 && y === 0 && 1/x !== 1/y) {
-                       return false;
-               }
-               // d. If x is the same Number value as y, return true.
-               if (x === y) {
-                       return true;
-               }
-               // e. Return false.
-               return false;
-       }
-       // 3. Return SameValueNonNumber(x, y).
-       return SameValueNonNumber(x, y);
-}
-
-// _ESAbstract.SameValueZero
-/* global Type, SameValueNonNumber */
-// 7.2.11. SameValueZero ( x, y )
-function SameValueZero (x, y) { // eslint-disable-line no-unused-vars
-       // 1. If Type(x) is different from Type(y), return false.
-       if (Type(x) !== Type(y)) {
-               return false;
-       }
-       // 2. If Type(x) is Number, then
-       if (Type(x) === 'number') {
-               // a. If x is NaN and y is NaN, return true.
-               if (isNaN(x) && isNaN(y)) {
-                       return true;
-               }
-               // b. If x is +0 and y is -0, return true.
-               if (1/x === Infinity && 1/y === -Infinity) {
-                       return true;
-               }
-               // c. If x is -0 and y is +0, return true.
-               if (1/x === -Infinity && 1/y === Infinity) {
-                       return true;
-               }
-               // d. If x is the same Number value as y, return true.
-               if (x === y) {
-                       return true;
-               }
-               // e. Return false.
-               return false;
-       }
-       // 3. Return SameValueNonNumber(x, y).
-       return SameValueNonNumber(x, y);
-}
-
-// _ESAbstract.ToPrimitive
-/* global Type, GetMethod, Call, OrdinaryToPrimitive */
-// 7.1.1. ToPrimitive ( input [ , PreferredType ] )
-function ToPrimitive(input /* [, PreferredType] */) { // eslint-disable-line no-unused-vars
-       var PreferredType = arguments.length > 1 ? arguments[1] : undefined;
-       // 1. Assert: input is an ECMAScript language value.
-       // 2. If Type(input) is Object, then
-       if (Type(input) === 'object') {
-               // a. If PreferredType is not present, let hint be "default".
-               if (arguments.length < 2) {
-                       var hint = 'default';
-                       // b. Else if PreferredType is hint String, let hint be "string".
-               } else if (PreferredType === String) {
-                       hint = 'string';
-                       // c. Else PreferredType is hint Number, let hint be "number".
-               } else if (PreferredType === Number) {
-                       hint = 'number';
-               }
-               // d. Let exoticToPrim be ? GetMethod(input, @@toPrimitive).
-               var exoticToPrim = typeof this.Symbol === 'function' && typeof this.Symbol.toPrimitive === 'symbol' ? GetMethod(input, this.Symbol.toPrimitive) : undefined;
-               // e. If exoticToPrim is not undefined, then
-               if (exoticToPrim !== undefined) {
-                       // i. Let result be ? Call(exoticToPrim, input, « hint »).
-                       var result = Call(exoticToPrim, input, [hint]);
-                       // ii. If Type(result) is not Object, return result.
-                       if (Type(result) !== 'object') {
-                               return result;
-                       }
-                       // iii. Throw a TypeError exception.
-                       throw new TypeError('Cannot convert exotic object to primitive.');
-               }
-               // f. If hint is "default", set hint to "number".
-               if (hint === 'default') {
-                       hint = 'number';
-               }
-               // g. Return ? OrdinaryToPrimitive(input, hint).
-               return OrdinaryToPrimitive(input, hint);
-       }
-       // 3. Return input
-       return input;
-}
-
-// _ESAbstract.ToString
-/* global Type, ToPrimitive */
-// 7.1.12. ToString ( argument )
-// The abstract operation ToString converts argument to a value of type String according to Table 11:
-// Table 11: ToString Conversions
-/*
-|---------------|--------------------------------------------------------|
-| Argument Type | Result                                                 |
-|---------------|--------------------------------------------------------|
-| Undefined     | Return "undefined".                                    |
-|---------------|--------------------------------------------------------|
-| Null         | Return "null".                                         |
-|---------------|--------------------------------------------------------|
-| Boolean       | If argument is true, return "true".                    |
-|               | If argument is false, return "false".                  |
-|---------------|--------------------------------------------------------|
-| Number        | Return NumberToString(argument).                       |
-|---------------|--------------------------------------------------------|
-| String        | Return argument.                                       |
-|---------------|--------------------------------------------------------|
-| Symbol        | Throw a TypeError exception.                           |
-|---------------|--------------------------------------------------------|
-| Object        | Apply the following steps:                             |
-|               | Let primValue be ? ToPrimitive(argument, hint String). |
-|               | Return ? ToString(primValue).                          |
-|---------------|--------------------------------------------------------|
-*/
-function ToString(argument) { // eslint-disable-line no-unused-vars
-       switch(Type(argument)) {
-               case 'symbol':
-                       throw new TypeError('Cannot convert a Symbol value to a string');
-                       break;
-               case 'object':
-                       var primValue = ToPrimitive(argument, 'string');
-                       return ToString(primValue);
-               default:
-                       return String(argument);
-       }
-}
-
-// _ESAbstract.UTF16Decode
-// 10.1.2. Static Semantics: UTF16Decode( lead, trail )
-function UTF16Decode(lead, trail) { // eslint-disable-line no-unused-vars
-       // 1. Assert: 0xD800 ≤ lead ≤ 0xDBFF and 0xDC00 ≤ trail ≤ 0xDFFF.
-       // 2. Let cp be (lead - 0xD800) × 0x400 + (trail - 0xDC00) + 0x10000.
-       var cp = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
-       // 3. Return the code point cp.
-       return cp;
-}
-
-// _ESAbstract.UTF16Encoding
-// 10.1.1. Static Semantics: UTF16Encoding ( cp )
-function UTF16Encoding(cp) { // eslint-disable-line no-unused-vars
-       // 1. Assert: 0 ≤ cp ≤ 0x10FFFF.
-       // 2. If cp ≤ 0xFFFF, return cp.
-       if (cp <= 0xFFFF) {
-               return cp;
-       } else {
-               // 3. Let cu1 be floor((cp - 0x10000) / 0x400) + 0xD800.
-               var cu1 = Math.floor((cp - 0x10000) / 0x400) + 0xD800;
-               // 4. Let cu2 be ((cp - 0x10000) modulo 0x400) + 0xDC00.
-               var cu2 = ((cp - 0x10000) % 0x400) + 0xDC00;
-               // 5. Return the code unit sequence consisting of cu1 followed by cu2.
-               return [cu1, cu2];
-       }
-}
-
-// _TypedArray
-/*
- Copyright (c) 2010, Linden Research, Inc.
- Copyright (c) 2014, Joshua Bell
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- $/LicenseInfo$
- */
-
-// Original can be found at:
-//   https://bitbucket.org/lindenlab/llsd
-// Modifications by Joshua Bell inexorabletash@gmail.com
-//   https://github.com/inexorabletash/polyfill
-
-// ES3/ES5 implementation of the Krhonos Typed Array Specification
-//   Ref: http://www.khronos.org/registry/typedarray/specs/latest/
-//   Date: 2011-02-01
-//
-// Variations:
-//  * Allows typed_array.get/set() as alias for subscripts (typed_array[])
-//  * Gradually migrating structure from Khronos spec to ES2015 spec
-//
-// Caveats:
-//  * Beyond 10000 or so entries, polyfilled array accessors (ta[0],
-//    etc) become memory-prohibitive, so array creation will fail. Set
-//    self.TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS=true to disable
-//    creation of accessors. Your code will need to use the
-//    non-standard get()/set() instead, and will need to add those to
-//    native arrays for interop.
-(function(global) {
-  'use strict';
-  var undefined = (void 0); // Paranoia
-
-  // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to
-  // create, and consume so much memory, that the browser appears frozen.
-  var MAX_ARRAY_LENGTH = 1e5;
-
-  // Approximations of internal ECMAScript conversion functions
-  function Type(v) {
-    switch(typeof v) {
-    case 'undefined': return 'undefined';
-    case 'boolean': return 'boolean';
-    case 'number': return 'number';
-    case 'string': return 'string';
-    default: return v === null ? 'null' : 'object';
-    }
-  }
-
-  // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:
-  function Class(v) { return Object.prototype.toString.call(v).replace(/^\[object *|\]$/g, ''); }
-  function IsCallable(o) { return typeof o === 'function'; }
-  function ToObject(v) {
-    if (v === null || v === undefined) throw TypeError();
-    return Object(v);
-  }
-  function ToInt32(v) { return v >> 0; }
-  function ToUint32(v) { return v >>> 0; }
-
-  // Snapshot intrinsics
-  var LN2 = Math.LN2,
-      abs = Math.abs,
-      floor = Math.floor,
-      log = Math.log,
-      max = Math.max,
-      min = Math.min,
-      pow = Math.pow,
-      round = Math.round;
-
-  // emulate ES5 getter/setter API using legacy APIs
-  // http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx
-  // (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but
-  // note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)
-
-  (function() {
-    var orig = Object.defineProperty;
-    var dom_only = !(function(){try{return Object.defineProperty({},'x',{});}catch(_){return false;}}());
-
-    if (!orig || dom_only) {
-      Object.defineProperty = function (o, prop, desc) {
-        // In IE8 try built-in implementation for defining properties on DOM prototypes.
-        if (orig)
-          try { return orig(o, prop, desc); } catch (_) {}
-        if (o !== Object(o))
-          throw TypeError('Object.defineProperty called on non-object');
-        if (Object.prototype.__defineGetter__ && ('get' in desc))
-          Object.prototype.__defineGetter__.call(o, prop, desc.get);
-        if (Object.prototype.__defineSetter__ && ('set' in desc))
-          Object.prototype.__defineSetter__.call(o, prop, desc.set);
-        if ('value' in desc)
-          o[prop] = desc.value;
-        return o;
-      };
-    }
-  }());
-
-  // ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)
-  // for index in 0 ... obj.length
-  function makeArrayAccessors(obj) {
-    if ('TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS' in global)
-      return;
-
-    if (obj.length > MAX_ARRAY_LENGTH) throw RangeError('Array too large for polyfill');
-
-    function makeArrayAccessor(index) {
-      Object.defineProperty(obj, index, {
-        'get': function() { return obj._getter(index); },
-        'set': function(v) { obj._setter(index, v); },
-        enumerable: true,
-        configurable: false
-      });
-    }
-
-    var i;
-    for (i = 0; i < obj.length; i += 1) {
-      makeArrayAccessor(i);
-    }
-  }
-
-  // Internal conversion functions:
-  //    pack<Type>()   - take a number (interpreted as Type), output a byte array
-  //    unpack<Type>() - take a byte array, output a Type-like number
-
-  function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }
-  function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }
-
-  function packI8(n) { return [n & 0xff]; }
-  function unpackI8(bytes) { return as_signed(bytes[0], 8); }
-
-  function packU8(n) { return [n & 0xff]; }
-  function unpackU8(bytes) { return as_unsigned(bytes[0], 8); }
-
-  function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }
-
-  function packI16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
-  function unpackI16(bytes) { return as_signed(bytes[1] << 8 | bytes[0], 16); }
-
-  function packU16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
-  function unpackU16(bytes) { return as_unsigned(bytes[1] << 8 | bytes[0], 16); }
-
-  function packI32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
-  function unpackI32(bytes) { return as_signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }
-
-  function packU32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
-  function unpackU32(bytes) { return as_unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }
-
-  function packIEEE754(v, ebits, fbits) {
-
-    var bias = (1 << (ebits - 1)) - 1;
-
-    function roundToEven(n) {
-      var w = floor(n), f = n - w;
-      if (f < 0.5)
-        return w;
-      if (f > 0.5)
-        return w + 1;
-      return w % 2 ? w + 1 : w;
-    }
-
-    // Compute sign, exponent, fraction
-    var s, e, f;
-    if (v !== v) {
-      // NaN
-      // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
-      e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;
-    } else if (v === Infinity || v === -Infinity) {
-      e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;
-    } else if (v === 0) {
-      e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;
-    } else {
-      s = v < 0;
-      v = abs(v);
-
-      if (v >= pow(2, 1 - bias)) {
-        // Normalized
-        e = min(floor(log(v) / LN2), 1023);
-        var significand = v / pow(2, e);
-        if (significand < 1) {
-          e -= 1;
-          significand *= 2;
-        }
-        if (significand >= 2) {
-          e += 1;
-          significand /= 2;
-        }
-        var d = pow(2, fbits);
-        f = roundToEven(significand * d) - d;
-        e += bias;
-        if (f / d >= 1) {
-          e += 1;
-          f = 0;
-        }
-        if (e > 2 * bias) {
-          // Overflow
-          e = (1 << ebits) - 1;
-          f = 0;
-        }
-      } else {
-        // Denormalized
-        e = 0;
-        f = roundToEven(v / pow(2, 1 - bias - fbits));
-      }
-    }
-
-    // Pack sign, exponent, fraction
-    var bits = [], i;
-    for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }
-    for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }
-    bits.push(s ? 1 : 0);
-    bits.reverse();
-    var str = bits.join('');
-
-    // Bits to bytes
-    var bytes = [];
-    while (str.length) {
-      bytes.unshift(parseInt(str.substring(0, 8), 2));
-      str = str.substring(8);
-    }
-    return bytes;
-  }
-
-  function unpackIEEE754(bytes, ebits, fbits) {
-    // Bytes to bits
-    var bits = [], i, j, b, str,
-        bias, s, e, f;
-
-    for (i = 0; i < bytes.length; ++i) {
-      b = bytes[i];
-      for (j = 8; j; j -= 1) {
-        bits.push(b % 2 ? 1 : 0); b = b >> 1;
-      }
-    }
-    bits.reverse();
-    str = bits.join('');
-
-    // Unpack sign, exponent, fraction
-    bias = (1 << (ebits - 1)) - 1;
-    s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
-    e = parseInt(str.substring(1, 1 + ebits), 2);
-    f = parseInt(str.substring(1 + ebits), 2);
-
-    // Produce number
-    if (e === (1 << ebits) - 1) {
-      return f !== 0 ? NaN : s * Infinity;
-    } else if (e > 0) {
-      // Normalized
-      return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
-    } else if (f !== 0) {
-      // Denormalized
-      return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
-    } else {
-      return s < 0 ? -0 : 0;
-    }
-  }
-
-  function unpackF64(b) { return unpackIEEE754(b, 11, 52); }
-  function packF64(v) { return packIEEE754(v, 11, 52); }
-  function unpackF32(b) { return unpackIEEE754(b, 8, 23); }
-  function packF32(v) { return packIEEE754(v, 8, 23); }
-
-  //
-  // 3 The ArrayBuffer Type
-  //
-
-  (function() {
-
-    function ArrayBuffer(length) {
-      length = ToInt32(length);
-      if (length < 0) throw RangeError('ArrayBuffer size is not a small enough positive integer.');
-      Object.defineProperty(this, 'byteLength', {value: length});
-      Object.defineProperty(this, '_bytes', {value: Array(length)});
-
-      for (var i = 0; i < length; i += 1)
-        this._bytes[i] = 0;
-    }
-
-    global.ArrayBuffer = global.ArrayBuffer || ArrayBuffer;
-
-    //
-    // 5 The Typed Array View Types
-    //
-
-    function $TypedArray$() {
-
-      // %TypedArray% ( length )
-      if (!arguments.length || typeof arguments[0] !== 'object') {
-        return (function(length) {
-          length = ToInt32(length);
-          if (length < 0) throw RangeError('length is not a small enough positive integer.');
-          Object.defineProperty(this, 'length', {value: length});
-          Object.defineProperty(this, 'byteLength', {value: length * this.BYTES_PER_ELEMENT});
-          Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(this.byteLength)});
-          Object.defineProperty(this, 'byteOffset', {value: 0});
-
-         }).apply(this, arguments);
-      }
-
-      // %TypedArray% ( typedArray )
-      if (arguments.length >= 1 &&
-          Type(arguments[0]) === 'object' &&
-          arguments[0] instanceof $TypedArray$) {
-        return (function(typedArray){
-          if (this.constructor !== typedArray.constructor) throw TypeError();
-
-          var byteLength = typedArray.length * this.BYTES_PER_ELEMENT;
-          Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)});
-          Object.defineProperty(this, 'byteLength', {value: byteLength});
-          Object.defineProperty(this, 'byteOffset', {value: 0});
-          Object.defineProperty(this, 'length', {value: typedArray.length});
-
-          for (var i = 0; i < this.length; i += 1)
-            this._setter(i, typedArray._getter(i));
-
-        }).apply(this, arguments);
-      }
-
-      // %TypedArray% ( array )
-      if (arguments.length >= 1 &&
-          Type(arguments[0]) === 'object' &&
-          !(arguments[0] instanceof $TypedArray$) &&
-          !(arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
-        return (function(array) {
-
-          var byteLength = array.length * this.BYTES_PER_ELEMENT;
-          Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)});
-          Object.defineProperty(this, 'byteLength', {value: byteLength});
-          Object.defineProperty(this, 'byteOffset', {value: 0});
-          Object.defineProperty(this, 'length', {value: array.length});
-
-          for (var i = 0; i < this.length; i += 1) {
-            var s = array[i];
-            this._setter(i, Number(s));
-          }
-        }).apply(this, arguments);
-      }
-
-      // %TypedArray% ( buffer, byteOffset=0, length=undefined )
-      if (arguments.length >= 1 &&
-          Type(arguments[0]) === 'object' &&
-          (arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
-        return (function(buffer, byteOffset, length) {
-
-          byteOffset = ToUint32(byteOffset);
-          if (byteOffset > buffer.byteLength)
-            throw RangeError('byteOffset out of range');
-
-          // The given byteOffset must be a multiple of the element
-          // size of the specific type, otherwise an exception is raised.
-          if (byteOffset % this.BYTES_PER_ELEMENT)
-            throw RangeError('buffer length minus the byteOffset is not a multiple of the element size.');
-
-          if (length === undefined) {
-            var byteLength = buffer.byteLength - byteOffset;
-            if (byteLength % this.BYTES_PER_ELEMENT)
-              throw RangeError('length of buffer minus byteOffset not a multiple of the element size');
-            length = byteLength / this.BYTES_PER_ELEMENT;
-
-          } else {
-            length = ToUint32(length);
-            byteLength = length * this.BYTES_PER_ELEMENT;
-          }
-
-          if ((byteOffset + byteLength) > buffer.byteLength)
-            throw RangeError('byteOffset and length reference an area beyond the end of the buffer');
-
-          Object.defineProperty(this, 'buffer', {value: buffer});
-          Object.defineProperty(this, 'byteLength', {value: byteLength});
-          Object.defineProperty(this, 'byteOffset', {value: byteOffset});
-          Object.defineProperty(this, 'length', {value: length});
-
-        }).apply(this, arguments);
-      }
-
-      // %TypedArray% ( all other argument combinations )
-      throw TypeError();
-    }
-
-    // Properties of the %TypedArray Instrinsic Object
-
-    // %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined )
-    Object.defineProperty($TypedArray$, 'from', {value: function(iterable) {
-      return new this(iterable);
-    }});
-
-    // %TypedArray%.of ( ...items )
-    Object.defineProperty($TypedArray$, 'of', {value: function(/*...items*/) {
-      return new this(arguments);
-    }});
-
-    // %TypedArray%.prototype
-    var $TypedArrayPrototype$ = {};
-    $TypedArray$.prototype = $TypedArrayPrototype$;
-
-    // WebIDL: getter type (unsigned long index);
-    Object.defineProperty($TypedArray$.prototype, '_getter', {value: function(index) {
-      if (arguments.length < 1) throw SyntaxError('Not enough arguments');
-
-      index = ToUint32(index);
-      if (index >= this.length)
-        return undefined;
-
-      var bytes = [], i, o;
-      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
-           i < this.BYTES_PER_ELEMENT;
-           i += 1, o += 1) {
-        bytes.push(this.buffer._bytes[o]);
-      }
-      return this._unpack(bytes);
-    }});
-
-    // NONSTANDARD: convenience alias for getter: type get(unsigned long index);
-    Object.defineProperty($TypedArray$.prototype, 'get', {value: $TypedArray$.prototype._getter});
-
-    // WebIDL: setter void (unsigned long index, type value);
-    Object.defineProperty($TypedArray$.prototype, '_setter', {value: function(index, value) {
-      if (arguments.length < 2) throw SyntaxError('Not enough arguments');
-
-      index = ToUint32(index);
-      if (index >= this.length)
-        return;
-
-      var bytes = this._pack(value), i, o;
-      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
-           i < this.BYTES_PER_ELEMENT;
-           i += 1, o += 1) {
-        this.buffer._bytes[o] = bytes[i];
-      }
-    }});
-
-    // get %TypedArray%.prototype.buffer
-    // get %TypedArray%.prototype.byteLength
-    // get %TypedArray%.prototype.byteOffset
-    // -- applied directly to the object in the constructor
-
-    // %TypedArray%.prototype.constructor
-    Object.defineProperty($TypedArray$.prototype, 'constructor', {value: $TypedArray$});
-
-    // %TypedArray%.prototype.copyWithin (target, start, end = this.length )
-    Object.defineProperty($TypedArray$.prototype, 'copyWithin', {value: function(target, start) {
-      var end = arguments[2];
-
-      var o = ToObject(this);
-      var lenVal = o.length;
-      var len = ToUint32(lenVal);
-      len = max(len, 0);
-      var relativeTarget = ToInt32(target);
-      var to;
-      if (relativeTarget < 0)
-        to = max(len + relativeTarget, 0);
-      else
-        to = min(relativeTarget, len);
-      var relativeStart = ToInt32(start);
-      var from;
-      if (relativeStart < 0)
-        from = max(len + relativeStart, 0);
-      else
-        from = min(relativeStart, len);
-      var relativeEnd;
-      if (end === undefined)
-        relativeEnd = len;
-      else
-        relativeEnd = ToInt32(end);
-      var final;
-      if (relativeEnd < 0)
-        final = max(len + relativeEnd, 0);
-      else
-        final = min(relativeEnd, len);
-      var count = min(final - from, len - to);
-      var direction;
-      if (from < to && to < from + count) {
-        direction = -1;
-        from = from + count - 1;
-        to = to + count - 1;
-      } else {
-        direction = 1;
-      }
-      while (count > 0) {
-        o._setter(to, o._getter(from));
-        from = from + direction;
-        to = to + direction;
-        count = count - 1;
-      }
-      return o;
-    }});
-
-    // %TypedArray%.prototype.entries ( )
-    // -- defined in es6.js to shim browsers w/ native TypedArrays
-
-    // %TypedArray%.prototype.every ( callbackfn, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'every', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      var thisArg = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (!callbackfn.call(thisArg, t._getter(i), i, t))
-          return false;
-      }
-      return true;
-    }});
-
-    // %TypedArray%.prototype.fill (value, start = 0, end = this.length )
-    Object.defineProperty($TypedArray$.prototype, 'fill', {value: function(value) {
-      var start = arguments[1],
-          end = arguments[2];
-
-      var o = ToObject(this);
-      var lenVal = o.length;
-      var len = ToUint32(lenVal);
-      len = max(len, 0);
-      var relativeStart = ToInt32(start);
-      var k;
-      if (relativeStart < 0)
-        k = max((len + relativeStart), 0);
-      else
-        k = min(relativeStart, len);
-      var relativeEnd;
-      if (end === undefined)
-        relativeEnd = len;
-      else
-        relativeEnd = ToInt32(end);
-      var final;
-      if (relativeEnd < 0)
-        final = max((len + relativeEnd), 0);
-      else
-        final = min(relativeEnd, len);
-      while (k < final) {
-        o._setter(k, value);
-        k += 1;
-      }
-      return o;
-    }});
-
-    // %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'filter', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      var res = [];
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        var val = t._getter(i); // in case fun mutates this
-        if (callbackfn.call(thisp, val, i, t))
-          res.push(val);
-      }
-      return new this.constructor(res);
-    }});
-
-    // %TypedArray%.prototype.find (predicate, thisArg = undefined)
-    Object.defineProperty($TypedArray$.prototype, 'find', {value: function(predicate) {
-      var o = ToObject(this);
-      var lenValue = o.length;
-      var len = ToUint32(lenValue);
-      if (!IsCallable(predicate)) throw TypeError();
-      var t = arguments.length > 1 ? arguments[1] : undefined;
-      var k = 0;
-      while (k < len) {
-        var kValue = o._getter(k);
-        var testResult = predicate.call(t, kValue, k, o);
-        if (Boolean(testResult))
-          return kValue;
-        ++k;
-      }
-      return undefined;
-    }});
-
-    // %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'findIndex', {value: function(predicate) {
-      var o = ToObject(this);
-      var lenValue = o.length;
-      var len = ToUint32(lenValue);
-      if (!IsCallable(predicate)) throw TypeError();
-      var t = arguments.length > 1 ? arguments[1] : undefined;
-      var k = 0;
-      while (k < len) {
-        var kValue = o._getter(k);
-        var testResult = predicate.call(t, kValue, k, o);
-        if (Boolean(testResult))
-          return k;
-        ++k;
-      }
-      return -1;
-    }});
-
-    // %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'forEach', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++)
-        callbackfn.call(thisp, t._getter(i), i, t);
-    }});
-
-    // %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 )
-    Object.defineProperty($TypedArray$.prototype, 'indexOf', {value: function(searchElement) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (len === 0) return -1;
-      var n = 0;
-      if (arguments.length > 0) {
-        n = Number(arguments[1]);
-        if (n !== n) {
-          n = 0;
-        } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
-          n = (n > 0 || -1) * floor(abs(n));
-        }
-      }
-      if (n >= len) return -1;
-      var k = n >= 0 ? n : max(len - abs(n), 0);
-      for (; k < len; k++) {
-        if (t._getter(k) === searchElement) {
-          return k;
-        }
-      }
-      return -1;
-    }});
-
-    // %TypedArray%.prototype.join ( separator )
-    Object.defineProperty($TypedArray$.prototype, 'join', {value: function(separator) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      var tmp = Array(len);
-      for (var i = 0; i < len; ++i)
-        tmp[i] = t._getter(i);
-      return tmp.join(separator === undefined ? ',' : separator); // Hack for IE7
-    }});
-
-    // %TypedArray%.prototype.keys ( )
-    // -- defined in es6.js to shim browsers w/ native TypedArrays
-
-    // %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 )
-    Object.defineProperty($TypedArray$.prototype, 'lastIndexOf', {value: function(searchElement) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (len === 0) return -1;
-      var n = len;
-      if (arguments.length > 1) {
-        n = Number(arguments[1]);
-        if (n !== n) {
-          n = 0;
-        } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
-          n = (n > 0 || -1) * floor(abs(n));
-        }
-      }
-      var k = n >= 0 ? min(n, len - 1) : len - abs(n);
-      for (; k >= 0; k--) {
-        if (t._getter(k) === searchElement)
-          return k;
-      }
-      return -1;
-    }});
-
-    // get %TypedArray%.prototype.length
-    // -- applied directly to the object in the constructor
-
-    // %TypedArray%.prototype.map ( callbackfn, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'map', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      var res = []; res.length = len;
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++)
-        res[i] = callbackfn.call(thisp, t._getter(i), i, t);
-      return new this.constructor(res);
-    }});
-
-    // %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
-    Object.defineProperty($TypedArray$.prototype, 'reduce', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      // no value to return if no initial value and an empty array
-      if (len === 0 && arguments.length === 1) throw TypeError();
-      var k = 0;
-      var accumulator;
-      if (arguments.length >= 2) {
-        accumulator = arguments[1];
-      } else {
-        accumulator = t._getter(k++);
-      }
-      while (k < len) {
-        accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
-        k++;
-      }
-      return accumulator;
-    }});
-
-    // %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
-    Object.defineProperty($TypedArray$.prototype, 'reduceRight', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      // no value to return if no initial value, empty array
-      if (len === 0 && arguments.length === 1) throw TypeError();
-      var k = len - 1;
-      var accumulator;
-      if (arguments.length >= 2) {
-        accumulator = arguments[1];
-      } else {
-        accumulator = t._getter(k--);
-      }
-      while (k >= 0) {
-        accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
-        k--;
-      }
-      return accumulator;
-    }});
-
-    // %TypedArray%.prototype.reverse ( )
-    Object.defineProperty($TypedArray$.prototype, 'reverse', {value: function() {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      var half = floor(len / 2);
-      for (var i = 0, j = len - 1; i < half; ++i, --j) {
-        var tmp = t._getter(i);
-        t._setter(i, t._getter(j));
-        t._setter(j, tmp);
-      }
-      return t;
-    }});
-
-    // %TypedArray%.prototype.set(array, offset = 0 )
-    // %TypedArray%.prototype.set(typedArray, offset = 0 )
-    // WebIDL: void set(TypedArray array, optional unsigned long offset);
-    // WebIDL: void set(sequence<type> array, optional unsigned long offset);
-    Object.defineProperty($TypedArray$.prototype, 'set', {value: function(index, value) {
-      if (arguments.length < 1) throw SyntaxError('Not enough arguments');
-      var array, sequence, offset, len,
-          i, s, d,
-          byteOffset, byteLength, tmp;
-
-      if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {
-        // void set(TypedArray array, optional unsigned long offset);
-        array = arguments[0];
-        offset = ToUint32(arguments[1]);
-
-        if (offset + array.length > this.length) {
-          throw RangeError('Offset plus length of array is out of range');
-        }
-
-        byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;
-        byteLength = array.length * this.BYTES_PER_ELEMENT;
-
-        if (array.buffer === this.buffer) {
-          tmp = [];
-          for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {
-            tmp[i] = array.buffer._bytes[s];
-          }
-          for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {
-            this.buffer._bytes[d] = tmp[i];
-          }
-        } else {
-          for (i = 0, s = array.byteOffset, d = byteOffset;
-               i < byteLength; i += 1, s += 1, d += 1) {
-            this.buffer._bytes[d] = array.buffer._bytes[s];
-          }
-        }
-      } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {
-        // void set(sequence<type> array, optional unsigned long offset);
-        sequence = arguments[0];
-        len = ToUint32(sequence.length);
-        offset = ToUint32(arguments[1]);
-
-        if (offset + len > this.length) {
-          throw RangeError('Offset plus length of array is out of range');
-        }
-
-        for (i = 0; i < len; i += 1) {
-          s = sequence[i];
-          this._setter(offset + i, Number(s));
-        }
-      } else {
-        throw TypeError('Unexpected argument type(s)');
-      }
-    }});
-
-    // %TypedArray%.prototype.slice ( start, end )
-    Object.defineProperty($TypedArray$.prototype, 'slice', {value: function(start, end) {
-      var o = ToObject(this);
-      var lenVal = o.length;
-      var len = ToUint32(lenVal);
-      var relativeStart = ToInt32(start);
-      var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
-      var relativeEnd = (end === undefined) ? len : ToInt32(end);
-      var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
-      var count = final - k;
-      var c = o.constructor;
-      var a = new c(count);
-      var n = 0;
-      while (k < final) {
-        var kValue = o._getter(k);
-        a._setter(n, kValue);
-        ++k;
-        ++n;
-      }
-      return a;
-    }});
-
-    // %TypedArray%.prototype.some ( callbackfn, thisArg = undefined )
-    Object.defineProperty($TypedArray$.prototype, 'some', {value: function(callbackfn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      if (!IsCallable(callbackfn)) throw TypeError();
-      var thisp = arguments[1];
-      for (var i = 0; i < len; i++) {
-        if (callbackfn.call(thisp, t._getter(i), i, t)) {
-          return true;
-        }
-      }
-      return false;
-    }});
-
-    // %TypedArray%.prototype.sort ( comparefn )
-    Object.defineProperty($TypedArray$.prototype, 'sort', {value: function(comparefn) {
-      if (this === undefined || this === null) throw TypeError();
-      var t = Object(this);
-      var len = ToUint32(t.length);
-      var tmp = Array(len);
-      for (var i = 0; i < len; ++i)
-        tmp[i] = t._getter(i);
-      function sortCompare(x, y) {
-        if (x !== x && y !== y) return +0;
-        if (x !== x) return 1;
-        if (y !== y) return -1;
-        if (comparefn !== undefined) {
-          return comparefn(x, y);
-        }
-        if (x < y) return -1;
-        if (x > y) return 1;
-        return +0;
-      }
-      tmp.sort(sortCompare);
-      for (i = 0; i < len; ++i)
-        t._setter(i, tmp[i]);
-      return t;
-    }});
-
-    // %TypedArray%.prototype.subarray(begin = 0, end = this.length )
-    // WebIDL: TypedArray subarray(long begin, optional long end);
-    Object.defineProperty($TypedArray$.prototype, 'subarray', {value: function(start, end) {
-      function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }
-
-      start = ToInt32(start);
-      end = ToInt32(end);
-
-      if (arguments.length < 1) { start = 0; }
-      if (arguments.length < 2) { end = this.length; }
-
-      if (start < 0) { start = this.length + start; }
-      if (end < 0) { end = this.length + end; }
-
-      start = clamp(start, 0, this.length);
-      end = clamp(end, 0, this.length);
-
-      var len = end - start;
-      if (len < 0) {
-        len = 0;
-      }
-
-      return new this.constructor(
-        this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);
-    }});
-
-    // %TypedArray%.prototype.toLocaleString ( )
-    // %TypedArray%.prototype.toString ( )
-    // %TypedArray%.prototype.values ( )
-    // %TypedArray%.prototype [ @@iterator ] ( )
-    // get %TypedArray%.prototype [ @@toStringTag ]
-    // -- defined in es6.js to shim browsers w/ native TypedArrays
-
-    function makeTypedArray(elementSize, pack, unpack) {
-      // Each TypedArray type requires a distinct constructor instance with
-      // identical logic, which this produces.
-      var TypedArray = function() {
-        Object.defineProperty(this, 'constructor', {value: TypedArray});
-        $TypedArray$.apply(this, arguments);
-        makeArrayAccessors(this);
-      };
-      if ('__proto__' in TypedArray) {
-        TypedArray.__proto__ = $TypedArray$;
-      } else {
-        TypedArray.from = $TypedArray$.from;
-        TypedArray.of = $TypedArray$.of;
-      }
-
-      TypedArray.BYTES_PER_ELEMENT = elementSize;
-
-      var TypedArrayPrototype = function() {};
-      TypedArrayPrototype.prototype = $TypedArrayPrototype$;
-
-      TypedArray.prototype = new TypedArrayPrototype();
-
-      Object.defineProperty(TypedArray.prototype, 'BYTES_PER_ELEMENT', {value: elementSize});
-      Object.defineProperty(TypedArray.prototype, '_pack', {value: pack});
-      Object.defineProperty(TypedArray.prototype, '_unpack', {value: unpack});
-
-      return TypedArray;
-    }
-
-    var Int8Array = makeTypedArray(1, packI8, unpackI8);
-    var Uint8Array = makeTypedArray(1, packU8, unpackU8);
-    var Uint8ClampedArray = makeTypedArray(1, packU8Clamped, unpackU8);
-    var Int16Array = makeTypedArray(2, packI16, unpackI16);
-    var Uint16Array = makeTypedArray(2, packU16, unpackU16);
-    var Int32Array = makeTypedArray(4, packI32, unpackI32);
-    var Uint32Array = makeTypedArray(4, packU32, unpackU32);
-    var Float32Array = makeTypedArray(4, packF32, unpackF32);
-    var Float64Array = makeTypedArray(8, packF64, unpackF64);
-
-    global.Int8Array = global.Int8Array || Int8Array;
-    global.Uint8Array = global.Uint8Array || Uint8Array;
-    global.Uint8ClampedArray = global.Uint8ClampedArray || Uint8ClampedArray;
-    global.Int16Array = global.Int16Array || Int16Array;
-    global.Uint16Array = global.Uint16Array || Uint16Array;
-    global.Int32Array = global.Int32Array || Int32Array;
-    global.Uint32Array = global.Uint32Array || Uint32Array;
-    global.Float32Array = global.Float32Array || Float32Array;
-    global.Float64Array = global.Float64Array || Float64Array;
-  }());
-
-  //
-  // 6 The DataView View Type
-  //
-
-  (function() {
-    function r(array, index) {
-      return IsCallable(array.get) ? array.get(index) : array[index];
-    }
-
-    var IS_BIG_ENDIAN = (function() {
-      var u16array = new Uint16Array([0x1234]),
-          u8array = new Uint8Array(u16array.buffer);
-      return r(u8array, 0) === 0x12;
-    }());
-
-    // DataView(buffer, byteOffset=0, byteLength=undefined)
-    // WebIDL: Constructor(ArrayBuffer buffer,
-    //                     optional unsigned long byteOffset,
-    //                     optional unsigned long byteLength)
-    function DataView(buffer, byteOffset, byteLength) {
-      if (!(buffer instanceof ArrayBuffer || Class(buffer) === 'ArrayBuffer')) throw TypeError();
-
-      byteOffset = ToUint32(byteOffset);
-      if (byteOffset > buffer.byteLength)
-        throw RangeError('byteOffset out of range');
-
-      if (byteLength === undefined)
-        byteLength = buffer.byteLength - byteOffset;
-      else
-        byteLength = ToUint32(byteLength);
-
-      if ((byteOffset + byteLength) > buffer.byteLength)
-        throw RangeError('byteOffset and length reference an area beyond the end of the buffer');
-
-      Object.defineProperty(this, 'buffer', {value: buffer});
-      Object.defineProperty(this, 'byteLength', {value: byteLength});
-      Object.defineProperty(this, 'byteOffset', {value: byteOffset});
-    };
-
-    // get DataView.prototype.buffer
-    // get DataView.prototype.byteLength
-    // get DataView.prototype.byteOffset
-    // -- applied directly to instances by the constructor
-
-    function makeGetter(arrayType) {
-      return function GetViewValue(byteOffset, littleEndian) {
-        byteOffset = ToUint32(byteOffset);
-
-        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
-          throw RangeError('Array index out of range');
-
-        byteOffset += this.byteOffset;
-
-        var uint8Array = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),
-            bytes = [];
-        for (var i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
-          bytes.push(r(uint8Array, i));
-
-        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
-          bytes.reverse();
-
-        return r(new arrayType(new Uint8Array(bytes).buffer), 0);
-      };
-    }
-
-    Object.defineProperty(DataView.prototype, 'getUint8', {value: makeGetter(Uint8Array)});
-    Object.defineProperty(DataView.prototype, 'getInt8', {value: makeGetter(Int8Array)});
-    Object.defineProperty(DataView.prototype, 'getUint16', {value: makeGetter(Uint16Array)});
-    Object.defineProperty(DataView.prototype, 'getInt16', {value: makeGetter(Int16Array)});
-    Object.defineProperty(DataView.prototype, 'getUint32', {value: makeGetter(Uint32Array)});
-    Object.defineProperty(DataView.prototype, 'getInt32', {value: makeGetter(Int32Array)});
-    Object.defineProperty(DataView.prototype, 'getFloat32', {value: makeGetter(Float32Array)});
-    Object.defineProperty(DataView.prototype, 'getFloat64', {value: makeGetter(Float64Array)});
-
-    function makeSetter(arrayType) {
-      return function SetViewValue(byteOffset, value, littleEndian) {
-        byteOffset = ToUint32(byteOffset);
-        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
-          throw RangeError('Array index out of range');
-
-        // Get bytes
-        var typeArray = new arrayType([value]),
-            byteArray = new Uint8Array(typeArray.buffer),
-            bytes = [], i, byteView;
-
-        for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
-          bytes.push(r(byteArray, i));
-
-        // Flip if necessary
-        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
-          bytes.reverse();
-
-        // Write them
-        byteView = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);
-        byteView.set(bytes);
-      };
-    }
-
-    Object.defineProperty(DataView.prototype, 'setUint8', {value: makeSetter(Uint8Array)});
-    Object.defineProperty(DataView.prototype, 'setInt8', {value: makeSetter(Int8Array)});
-    Object.defineProperty(DataView.prototype, 'setUint16', {value: makeSetter(Uint16Array)});
-    Object.defineProperty(DataView.prototype, 'setInt16', {value: makeSetter(Int16Array)});
-    Object.defineProperty(DataView.prototype, 'setUint32', {value: makeSetter(Uint32Array)});
-    Object.defineProperty(DataView.prototype, 'setInt32', {value: makeSetter(Int32Array)});
-    Object.defineProperty(DataView.prototype, 'setFloat32', {value: makeSetter(Float32Array)});
-    Object.defineProperty(DataView.prototype, 'setFloat64', {value: makeSetter(Float64Array)});
-
-    global.DataView = global.DataView || DataView;
-
-  }());
-
-}(self));
-if (!("defineProperty"in Object&&function(){try{var e={}
-return Object.defineProperty(e,"test",{value:42}),!0}catch(t){return!1}}()
-)) {
-
-// Object.defineProperty
-(function (nativeDefineProperty) {
-
-       var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__');
-       var ERR_ACCESSORS_NOT_SUPPORTED = 'Getters & setters cannot be defined on this javascript engine';
-       var ERR_VALUE_ACCESSORS = 'A property cannot both have accessors and be writable or have a value';
-
-       // Polyfill.io - This does not use CreateMethodProperty because our CreateMethodProperty function uses Object.defineProperty.
-       Object['defineProperty'] = function defineProperty(object, property, descriptor) {
-
-               // Where native support exists, assume it
-               if (nativeDefineProperty && (object === window || object === document || object === Element.prototype || object instanceof Element)) {
-                       return nativeDefineProperty(object, property, descriptor);
-               }
-
-               if (object === null || !(object instanceof Object || typeof object === 'object')) {
-                       throw new TypeError('Object.defineProperty called on non-object');
-               }
-
-               if (!(descriptor instanceof Object)) {
-                       throw new TypeError('Property description must be an object');
-               }
-
-               var propertyString = String(property);
-               var hasValueOrWritable = 'value' in descriptor || 'writable' in descriptor;
-               var getterType = 'get' in descriptor && typeof descriptor.get;
-               var setterType = 'set' in descriptor && typeof descriptor.set;
-
-               // handle descriptor.get
-               if (getterType) {
-                       if (getterType !== 'function') {
-                               throw new TypeError('Getter must be a function');
-                       }
-                       if (!supportsAccessors) {
-                               throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
-                       }
-                       if (hasValueOrWritable) {
-                               throw new TypeError(ERR_VALUE_ACCESSORS);
-                       }
-                       Object.__defineGetter__.call(object, propertyString, descriptor.get);
-               } else {
-                       object[propertyString] = descriptor.value;
-               }
-
-               // handle descriptor.set
-               if (setterType) {
-                       if (setterType !== 'function') {
-                               throw new TypeError('Setter must be a function');
-                       }
-                       if (!supportsAccessors) {
-                               throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
-                       }
-                       if (hasValueOrWritable) {
-                               throw new TypeError(ERR_VALUE_ACCESSORS);
-                       }
-                       Object.__defineSetter__.call(object, propertyString, descriptor.set);
-               }
-
-               // OK to define value unconditionally - if a getter has been specified as well, an error would be thrown above
-               if ('value' in descriptor) {
-                       object[propertyString] = descriptor.value;
-               }
-
-               return object;
-       };
-}(Object.defineProperty));
-
-}
-
-
-// _ESAbstract.CreateDataProperty
-// 7.3.4. CreateDataProperty ( O, P, V )
-// NOTE
-// This abstract operation creates a property whose attributes are set to the same defaults used for properties created by the ECMAScript language assignment operator.
-// Normally, the property will not already exist. If it does exist and is not configurable or if O is not extensible, [[DefineOwnProperty]] will return false.
-function CreateDataProperty(O, P, V) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(O) is Object.
-       // 2. Assert: IsPropertyKey(P) is true.
-       // 3. Let newDesc be the PropertyDescriptor{ [[Value]]: V, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true }.
-       var newDesc = {
-               value: V,
-               writable: true,
-               enumerable: true,
-               configurable: true
-       };
-       // 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
-       try {
-               Object.defineProperty(O, P, newDesc);
-               return true;
-       } catch (e) {
-               return false;
-       }
-}
-
-// _ESAbstract.CreateDataPropertyOrThrow
-/* global CreateDataProperty */
-// 7.3.6. CreateDataPropertyOrThrow ( O, P, V )
-function CreateDataPropertyOrThrow(O, P, V) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(O) is Object.
-       // 2. Assert: IsPropertyKey(P) is true.
-       // 3. Let success be ? CreateDataProperty(O, P, V).
-       var success = CreateDataProperty(O, P, V);
-       // 4. If success is false, throw a TypeError exception.
-       if (!success) {
-               throw new TypeError('Cannot assign value `' + Object.prototype.toString.call(V) + '` to property `' + Object.prototype.toString.call(P) + '` on object `' + Object.prototype.toString.call(O) + '`');
-       }
-       // 5. Return success.
-       return success;
-}
-
-// _ESAbstract.CreateIterResultObject
-/* global Type, CreateDataProperty */
-// 7.4.7. CreateIterResultObject ( value, done )
-function CreateIterResultObject(value, done) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(done) is Boolean.
-       if (Type(done) !== 'boolean') {
-               throw new Error();
-       }
-       // 2. Let obj be ObjectCreate(%ObjectPrototype%).
-       var obj = {};
-       // 3. Perform CreateDataProperty(obj, "value", value).
-       CreateDataProperty(obj, "value", value);
-       // 4. Perform CreateDataProperty(obj, "done", done).
-       CreateDataProperty(obj, "done", done);
-       // 5. Return obj.
-       return obj;
-}
-
-// _ESAbstract.CreateMethodProperty
-// 7.3.5. CreateMethodProperty ( O, P, V )
-function CreateMethodProperty(O, P, V) { // eslint-disable-line no-unused-vars
-       // 1. Assert: Type(O) is Object.
-       // 2. Assert: IsPropertyKey(P) is true.
-       // 3. Let newDesc be the PropertyDescriptor{[[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}.
-       var newDesc = {
-               value: V,
-               writable: true,
-               enumerable: false,
-               configurable: true
-       };
-       // 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
-       Object.defineProperty(O, P, newDesc);
-}
-if (!("isArray"in Array
-)) {
-
-// Array.isArray
-/* global CreateMethodProperty, IsArray */
-// 22.1.2.2. Array.isArray ( arg )
-CreateMethodProperty(Array, 'isArray', function isArray(arg) {
-       // 1. Return ? IsArray(arg).
-       return IsArray(arg);
-});
-
-}
-
-if (!("copyWithin"in Array.prototype&&function(){try{var t=function n(){}
-t.prototype[0]="foo"
-var o=new t
-o[1]=1,o[2]=2,o.length=3
-var r=Array.prototype.copyWithin.call(o,1,0)
-return!(!r[0]||Object.prototype.hasOwnProperty.call(r,"0")||!Object.prototype.hasOwnProperty.call(r,"1")||"foo"!==r[0]||"foo"!==r[1]||1!==r[2]||3!==r.length)}catch(e){return!1}}()
-)) {
-
-// Array.prototype.copyWithin
-/* global CreateMethodProperty, HasProperty, ToInteger */
-// 22.1.3.3 Array.prototype.copyWithin ( target, start [ , end ] )
-CreateMethodProperty(Array.prototype, 'copyWithin', function copyWithin(target, start /* [ , end ] */ ) {
-       'use strict';
-       var end = arguments[2];
-
-       // 22.1.3.3.1 Let O be ? ToObject(this value).
-       if (this === null || this === undefined) {
-               throw new TypeError('Cannot call method on ' + this);
-       }
-
-       var o = Object(this);
-
-       // 22.1.3.3.2 Let len be ? ToLength(? Get(O, "length")).
-       var len = ToInteger(o.length);
-       if (len <= 0) {
-               len = 0;
-       }
-       if (len === Infinity) {
-               len = Math.pow(2, 53) - 1;
-       } else {
-               len = Math.min(len, Math.pow(2, 53) - 1);
-       }
-       len = Math.max(len, 0);
-
-       // 22.1.3.3.3 Let relativeTarget be ? ToInteger(target).
-       var relativeTarget = ToInteger(target);
-
-       // 22.1.3.3.4 If relativeTarget < 0, let to be max((len + relativeTarget), 0); else let to be min(relativeTarget, len).
-       var to;
-       if (relativeTarget < 0) {
-               to = Math.max(len + relativeTarget, 0);
-       } else {
-               to = Math.min(relativeTarget, len);
-       }
-
-       // 22.1.3.3.5 Let relativeStart be ? ToInteger(start).
-       var relativeStart = ToInteger(start);
-
-       // 22.1.3.3.6 If relativeStart < 0, let from be max((len + relativeStart), 0); else let from be min(relativeStart, len).
-       var from;
-       if (relativeStart < 0) {
-               from = Math.max(len + relativeStart, 0);
-       } else {
-               from = Math.min(relativeStart, len);
-       }
-
-       // 22.1.3.3.7 If end is undefined, let relativeEnd be len; else let relativeEnd be ? ToInteger(end).
-       var relativeEnd;
-       if (end === undefined) {
-               relativeEnd = len;
-       } else {
-               relativeEnd = ToInteger(end);
-       }
-
-       // 22.1.3.3.8 If relativeEnd < 0, let final be max((len + relativeEnd), 0); else let final be min(relativeEnd, len).
-       var final;
-       if (relativeEnd < 0) {
-               final = Math.max(len + relativeEnd, 0);
-       } else {
-               final = Math.min(relativeEnd, len);
-       }
-
-       // 22.1.3.3.9 Let count be min(final-from, len-to).
-       var count = Math.min(final - from, len - to);
-
-       // 22.1.3.3.10 If from<to and to<from+count, then
-       var direction;
-       if (from < to && to < from + count) {
-               // 22.1.3.3.10.a Let direction be -1.
-               direction = -1;
-
-               // 22.1.3.3.10.b Let from be from + count - 1.
-               from = from + count - 1;
-
-               // 22.1.3.3.10.c Let to be to + count - 1.
-               to = to + count - 1;
-       } else {
-               // 22.1.3.3.11 Else,
-               // 22.1.3.3.11.a Let direction be 1.
-               direction = 1;
-       }
-
-       // 22.1.3.3.12 Repeat, while count > 0
-       while (count > 0) {
-               // 22.1.3.3.12.a Let fromKey be ! ToString(from).
-               var fromKey = String(from);
-               // 22.1.3.3.12.b Let toKey be ! ToString(to).
-               var toKey = String(to);
-               // 22.1.3.3.12.c Let fromPresent be ? HasProperty(O, fromKey).
-               var fromPresent = HasProperty(o, fromKey);
-               // 22.1.3.3.12.d If fromPresent is true, then
-               if (fromPresent) {
-                       // 22.1.3.3.12.d.i Let fromVal be ? Get(O, fromKey).
-                       var fromVal = o[fromKey];
-                       // 22.1.3.3.12.d.ii Perform ? Set(O, toKey, fromVal, true).
-                       o[toKey] = fromVal;
-               } else {
-                       // 22.1.3.3.12.e Else fromPresent is false,
-                       // 22.1.3.3.12.e.i Perform ? DeletePropertyOrThrow(O, toKey).
-                       delete o[toKey];
-               }
-               // 22.1.3.3.12.f Let from be from + direction.
-               from = from + direction;
-               // 22.1.3.3.12.g Let to be to + direction.
-               to = to + direction;
-               // 22.1.3.3.12.h Let count be count - 1.
-               count = count - 1;
-       }
-       // 22.1.3.3.13 Return O.
-       return o;
-});
-
-}
-
-if (!("fill"in Array.prototype
-)) {
-
-// Array.prototype.fill
-/* global CreateMethodProperty, Get, ToInteger, ToLength, ToObject, ToString */
-// 22.1.3.6. Array.prototype.fill ( value [ , start [ , end ] ] )
-CreateMethodProperty(Array.prototype, 'fill', function fill(value /* [ , start [ , end ] ] */) {
-       var start = arguments[1];
-       var end = arguments[2];
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. Let relativeStart be ? ToInteger(start).
-       var relativeStart = ToInteger(start);
-       // 4. If relativeStart < 0, let k be max((len + relativeStart), 0); else let k be min(relativeStart, len)
-       var k = relativeStart < 0 ? Math.max((len + relativeStart), 0) : Math.min(relativeStart, len);
-       // 5. If end is undefined, let relativeEnd be len; else let relativeEnd be ? ToInteger(end).
-       var relativeEnd = end === undefined ? len : ToInteger(end);
-       // 6. If relativeEnd < 0, let final be max((len + relativeEnd), 0); else let final be min(relativeEnd, len).
-       var final = relativeEnd < 0 ? Math.max((len + relativeEnd), 0) : Math.min(relativeEnd, len);
-       // 7. Repeat, while k < final
-       while (k < final) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Perform ? Set(O, Pk, value, true).
-               O[Pk] = value;
-               // c. Increase k by 1.
-               k = k + 1;
-       }
-       // 8. Return O.
-       return O;
-});
-
-}
-
-if (!("find"in Array.prototype
-)) {
-
-// Array.prototype.find
-/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToLength, ToObject, ToString */
-// 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
-CreateMethodProperty(Array.prototype, 'find', function find( predicate /* [ , thisArg ] */) {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-       if (IsCallable(predicate) === false) {
-               throw new TypeError(predicate + ' is not a function');
-       }
-       // 4. If thisArg is present, let T be thisArg; else let T be undefined.
-       var T = arguments.length > 1 ? arguments[1] : undefined;
-       // 5. Let k be 0.
-       var k = 0;
-       // 6. Repeat, while k < len
-       while (k < len) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Let kValue be ? Get(O, Pk).
-               var kValue = Get(O, Pk);
-               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-               var testResult = ToBoolean(Call(predicate, T, [kValue, k, O ]));
-               // d. If testResult is true, return kValue.
-               if (testResult) {
-                       return kValue;
-               }
-               // e. Increase k by 1.
-               var k = k + 1;
-       }
-       // 7. Return undefined.
-       return undefined;
-});
-
-}
-
-if (!("findIndex"in Array.prototype
-)) {
-
-// Array.prototype.findIndex
-/* global Call, CreateMethodProperty, Get, IsCallable, ToBoolean, ToLength, ToObject, ToString */
-// 22.1.3.9. Array.prototype.findIndex ( predicate [ , thisArg ] )
-CreateMethodProperty(Array.prototype, 'findIndex', function findIndex(predicate /* [ , thisArg ] */) {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-       if (IsCallable(predicate) === false) {
-               throw new TypeError(predicate + ' is not a function');
-       }
-       // 4. If thisArg is present, let T be thisArg; else let T be undefined.
-       var T = arguments.length > 1 ? arguments[1] : undefined;
-       // 5. Let k be 0.
-       var k = 0;
-       // 6. Repeat, while k < len
-       while (k < len) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Let kValue be ? Get(O, Pk).
-               var kValue = Get(O, Pk);
-               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-               var testResult = ToBoolean(Call(predicate, T, [kValue, k, O]));
-               // d. If testResult is true, return k.
-               if (testResult) {
-                       return k;
-               }
-               // e. Increase k by 1.
-               k = k + 1;
-       }
-       // 7. Return -1.
-       return -1;
-});
-
-}
-
-if (!("forEach"in Array.prototype
-)) {
-
-// Array.prototype.forEach
-/* global Call, CreateMethodProperty, Get, HasProperty, IsCallable, ToLength, ToObject, ToString */
-// 22.1.3.10. Array.prototype.forEach ( callbackfn [ , thisArg ] )
-CreateMethodProperty(Array.prototype, 'forEach', function forEach(callbackfn /* [ , thisArg ] */) {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // Polyfill.io - If O is a String object, split it into an array in order to iterate correctly.
-       // We will use arrayLike in place of O when we are iterating through the list.
-       var arraylike = O instanceof String ? O.split('') : O;
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. If IsCallable(callbackfn) is false, throw a TypeError exception.
-       if (IsCallable(callbackfn) === false) {
-               throw new TypeError(callbackfn + ' is not a function');
-       }
-       // 4. If thisArg is present, let T be thisArg; else let T be undefined.
-       var T = arguments.length > 1 ? arguments[1] : undefined;
-       // 5. Let k be 0.
-       var k = 0;
-       // 6. Repeat, while k < len
-       while (k < len) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Let kPresent be ? HasProperty(O, Pk).
-               var kPresent = HasProperty(arraylike, Pk);
-               // c. If kPresent is true, then
-               if (kPresent) {
-                       // i. Let kValue be ? Get(O, Pk).
-                       var kValue = Get(arraylike, Pk);
-                       // ii. Perform ? Call(callbackfn, T, « kValue, k, O »).
-                       Call(callbackfn, T, [kValue, k, O]);
-               }
-               // d. Increase k by 1.
-               k = k + 1;
-       }
-       // 7. Return undefined.
-       return undefined;
-});
-
-}
-
-if (!("bind"in Function.prototype
-)) {
-
-// Function.prototype.bind
-/* global CreateMethodProperty, IsCallable */
-// 19.2.3.2. Function.prototype.bind ( thisArg, ...args )
-// https://github.com/es-shims/es5-shim/blob/d6d7ff1b131c7ba14c798cafc598bb6780d37d3b/es5-shim.js#L182
-CreateMethodProperty(Function.prototype, 'bind', function bind(that) { // .length is 1
-       // add necessary es5-shim utilities
-       var $Array = Array;
-       var $Object = Object;
-       var ArrayPrototype = $Array.prototype;
-       var Empty = function Empty() { };
-       var array_slice = ArrayPrototype.slice;
-       var array_concat = ArrayPrototype.concat;
-       var array_push = ArrayPrototype.push;
-       var max = Math.max;
-       // /add necessary es5-shim utilities
-
-       // 1. Let Target be the this value.
-       var target = this;
-       // 2. If IsCallable(Target) is false, throw a TypeError exception.
-       if (!IsCallable(target)) {
-               throw new TypeError('Function.prototype.bind called on incompatible ' + target);
-       }
-       // 3. Let A be a new (possibly empty) internal list of all of the
-       //   argument values provided after thisArg (arg1, arg2 etc), in order.
-       // XXX slicedArgs will stand in for "A" if used
-       var args = array_slice.call(arguments, 1); // for normal call
-       // 4. Let F be a new native ECMAScript object.
-       // 11. Set the [[Prototype]] internal property of F to the standard
-       //   built-in Function prototype object as specified in 15.3.3.1.
-       // 12. Set the [[Call]] internal property of F as described in
-       //   15.3.4.5.1.
-       // 13. Set the [[Construct]] internal property of F as described in
-       //   15.3.4.5.2.
-       // 14. Set the [[HasInstance]] internal property of F as described in
-       //   15.3.4.5.3.
-       var bound;
-       var binder = function () {
-
-               if (this instanceof bound) {
-                       // 15.3.4.5.2 [[Construct]]
-                       // When the [[Construct]] internal method of a function object,
-                       // F that was created using the bind function is called with a
-                       // list of arguments ExtraArgs, the following steps are taken:
-                       // 1. Let target be the value of F's [[TargetFunction]]
-                       //   internal property.
-                       // 2. If target has no [[Construct]] internal method, a
-                       //   TypeError exception is thrown.
-                       // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
-                       //   property.
-                       // 4. Let args be a new list containing the same values as the
-                       //   list boundArgs in the same order followed by the same
-                       //   values as the list ExtraArgs in the same order.
-                       // 5. Return the result of calling the [[Construct]] internal
-                       //   method of target providing args as the arguments.
-
-                       var result = target.apply(
-                               this,
-                               array_concat.call(args, array_slice.call(arguments))
-                       );
-                       if ($Object(result) === result) {
-                               return result;
-                       }
-                       return this;
-
-               } else {
-                       // 15.3.4.5.1 [[Call]]
-                       // When the [[Call]] internal method of a function object, F,
-                       // which was created using the bind function is called with a
-                       // this value and a list of arguments ExtraArgs, the following
-                       // steps are taken:
-                       // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
-                       //   property.
-                       // 2. Let boundThis be the value of F's [[BoundThis]] internal
-                       //   property.
-                       // 3. Let target be the value of F's [[TargetFunction]] internal
-                       //   property.
-                       // 4. Let args be a new list containing the same values as the
-                       //   list boundArgs in the same order followed by the same
-                       //   values as the list ExtraArgs in the same order.
-                       // 5. Return the result of calling the [[Call]] internal method
-                       //   of target providing boundThis as the this value and
-                       //   providing args as the arguments.
-
-                       // equiv: target.call(this, ...boundArgs, ...args)
-                       return target.apply(
-                               that,
-                               array_concat.call(args, array_slice.call(arguments))
-                       );
-
-               }
-
-       };
-
-       // 15. If the [[Class]] internal property of Target is "Function", then
-       //     a. Let L be the length property of Target minus the length of A.
-       //     b. Set the length own property of F to either 0 or L, whichever is
-       //       larger.
-       // 16. Else set the length own property of F to 0.
-
-       var boundLength = max(0, target.length - args.length);
-
-       // 17. Set the attributes of the length own property of F to the values
-       //   specified in 15.3.5.1.
-       var boundArgs = [];
-       for (var i = 0; i < boundLength; i++) {
-               array_push.call(boundArgs, '$' + i);
-       }
-
-       // XXX Build a dynamic function with desired amount of arguments is the only
-       // way to set the length property of a function.
-       // In environments where Content Security Policies enabled (Chrome extensions,
-       // for ex.) all use of eval or Function costructor throws an exception.
-       // However in all of these environments Function.prototype.bind exists
-       // and so this code will never be executed.
-       bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this, arguments); }')(binder);
-
-       if (target.prototype) {
-               Empty.prototype = target.prototype;
-               bound.prototype = new Empty();
-               // Clean up dangling references.
-               Empty.prototype = null;
-       }
-
-       // TODO
-       // 18. Set the [[Extensible]] internal property of F to true.
-
-       // TODO
-       // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
-       // 20. Call the [[DefineOwnProperty]] internal method of F with
-       //   arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
-       //   thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
-       //   false.
-       // 21. Call the [[DefineOwnProperty]] internal method of F with
-       //   arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
-       //   [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
-       //   and false.
-
-       // TODO
-       // NOTE Function objects created using Function.prototype.bind do not
-       // have a prototype property or the [[Code]], [[FormalParameters]], and
-       // [[Scope]] internal properties.
-       // XXX can't delete prototype in pure-js.
-
-       // 22. Return F.
-       return bound;
-});
-
-}
-
-if (!("acosh"in Math
-)) {
-
-// Math.acosh
-/* global CreateMethodProperty */
-// 20.2.2.3. Math.acosh ( x )
-CreateMethodProperty(Math, 'acosh', function acosh(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is less than 1, the result is NaN.
-       if (x < 1) {
-               return NaN;
-       }
-       // If x is 1, the result is +0.
-       if (x === 1) {
-               return 0;
-       }
-       // If x is +∞, the result is +∞.
-       if (x === Infinity) {
-               return Infinity;
-       }
-       return Math.log(x + Math.sqrt(x * x - 1));
-});
-
-}
-
-if (!("asinh"in Math
-)) {
-
-// Math.asinh
-/* global CreateMethodProperty */
-// 20.2.2.5. Math.asinh ( x )
-CreateMethodProperty(Math, 'asinh', function asinh(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is +0, the result is +0.
-       if (x === 0 && 1/x === Infinity) {
-               return 0;
-       }
-       // If x is -0, the result is -0.
-       if (x === 0 && 1/x === -Infinity) {
-               return -0;
-       }
-       // If x is +∞, the result is +∞.
-       if (x === Infinity) {
-               return Infinity;
-       }
-       // If x is -∞, the result is -∞.
-       if (x === -Infinity) {
-               return -Infinity;
-       }
-       return Math.log(x + Math.sqrt(x * x + 1));
-});
-
-}
-
-if (!("atanh"in Math
-)) {
-
-// Math.atanh
-/* global CreateMethodProperty */
-// 20.2.2.7. Math.atanh ( x )
-CreateMethodProperty(Math, 'atanh', function atanh(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is less than -1, the result is NaN.
-       if (x < -1) {
-               return NaN;
-       }
-       // If x is greater than 1, the result is NaN.
-       if (x > 1) {
-               return NaN;
-       }
-       // If x is -1, the result is -∞.
-       if (x === -1) {
-               return -Infinity;
-       }
-       // If x is +1, the result is +∞.
-       if (x === 1) {
-               return Infinity;
-       }
-       // If x is +0, the result is +0.
-       if (x === 0 && 1/x === Infinity) {
-               return 0;
-       }
-       // If x is -0, the result is -0.
-       if (x === 0 && 1/x === -Infinity) {
-               return -0;
-       }
-       return Math.log((1 + x) / (1 - x)) / 2;
-});
-
-}
-
-if (!("cbrt"in Math
-)) {
-
-// Math.cbrt
-/* global CreateMethodProperty */
-// 20.2.2.9. Math.cbrt ( x )
-CreateMethodProperty(Math, 'cbrt', function cbrt(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is +0, the result is +0.
-       if (x === 0 && 1/x === Infinity) {
-               return 0;
-       }
-       // If x is -0, the result is -0.
-       if (x === 0 && 1/x === -Infinity) {
-               return -0;
-       }
-       // If x is +∞, the result is +∞.
-       if (x === Infinity) {
-               return Infinity;
-       }
-       // If x is -∞, the result is -∞.
-       if (x === -Infinity) {
-               return -Infinity;
-       }
-       var y = Math.pow(Math.abs(x), 1 / 3);
-       return x < 0 ? -y : y;
-});
-
-}
-
-if (!("clz32"in Math
-)) {
-
-// Math.clz32
-/* global CreateMethodProperty, ToUint32 */
-// 20.2.2.11. Math.clz32 ( x )
-CreateMethodProperty(Math, 'clz32', function clz32(x) {
-       // 1. Let n be ToUint32(x).
-       var n = ToUint32(x);
-       // 2. Let p be the number of leading zero bits in the 32-bit binary representation of n.
-       var p = n ? 32 - n.toString(2).length : 32;
-       // 3. Return p.
-       return p;
-});
-
-}
-
-if (!("cosh"in Math
-)) {
-
-// Math.cosh
-/* global CreateMethodProperty */
-// 20.2.2.1. 3Math.cosh ( x )
-CreateMethodProperty(Math, 'cosh', function cosh(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is +0, the result is 1.
-       if (x === 0 && 1/x === Infinity) {
-               return 1;
-       }
-       // If x is -0, the result is 1.
-       if (x === 0 && 1/x === -Infinity) {
-               return 1;
-       }
-       // If x is +∞, the result is +∞.
-       if (x === Infinity) {
-               return Infinity;
-       }
-       // If x is -∞, the result is +∞.
-       if (x === -Infinity) {
-               return Infinity;
-       }
-       x = Math.abs(x);
-       if (x > 709) {
-               var y = Math.exp(0.5 * x);
-               return y / 2 * y;
-       }
-       var y = Math.exp(x);
-       return (y + 1 / y) / 2;
-});
-
-}
-
-if (!("expm1"in Math
-)) {
-
-// Math.expm1
-/* global CreateMethodProperty */
-// 20.2.2.15. Math.expm1 ( x )
-CreateMethodProperty(Math, 'expm1', function expm1(x) {
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is +0, the result is +0.
-       if (x === 0 && 1/x === Infinity) {
-               return 0;
-       }
-       // If x is -0, the result is -0.
-       if (x === 0 && 1/x === -Infinity) {
-               return -0;
-       }
-       // If x is +∞, the result is +∞.
-       if (x === Infinity) {
-               return Infinity;
-       }
-       // If x is -∞, the result is -1.
-       if (x === -Infinity) {
-               return -1;
-       }
-
-       if (x > -1e-6 && x < 1e-6) {
-               return x + x * x / 2;
-       } else {
-               return Math.exp(x) - 1;
-       }
-});
-
-}
-
-if (!("fround"in Math
-)) {
-
-// Math.fround
-/* global Float32Array, CreateMethodProperty */
-// 20.2.2.17 Math.fround ( x )
-CreateMethodProperty(Math, 'fround', function (x) {
-       // 1. If x is NaN, return NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // 2. If x is one of +0, -0, +∞, -∞, return x.
-       if (1 / x === +Infinity || 1 / x === -Infinity || x === +Infinity || x === -Infinity) {
-               return x;
-       }
-       // 3. Let x32 be the result of converting x to a value in IEEE 754-2008 binary32 format using roundTiesToEven.
-       // 4. Let x64 be the result of converting x32 to a value in IEEE 754-2008 binary64 format.
-       // 5. Return the ECMAScript Number value corresponding to x64.
-       return (new Float32Array([x]))[0];
-});
-
-}
-
-if (!("hypot"in Math
-)) {
-
-// Math.hypot
-/* global CreateMethodProperty */
-// 20.2.2.18. Math.hypot ( value1, value2, ...values )
-CreateMethodProperty(Math, 'hypot', function hypot(value1, value2) { // eslint-disable-line no-unused-vars
-       // If no arguments are passed, the result is +0.
-       if (arguments.length === 0) {
-               return 0;
-       }
-       var y = 0;
-       var max = 0;
-       for (var i = 0; i < arguments.length; ++i) {
-               // If any argument is +∞, the result is +∞.
-               if (arguments[i] === Infinity) {
-                       return Infinity;
-               }
-
-               // If any argument is -∞, the result is +∞.
-               if (arguments[i] === -Infinity) {
-                       return Infinity;
-               }
-
-               // If no argument is +∞ or -∞, and any argument is NaN, the result is NaN.
-               // If all arguments are either +0 or -0, the result is +0.
-               // Polyfill.io - The two conditions above are handled in the math.
-
-               var arg = Math.abs(Number(arguments[i]));
-               if (arg > max) {
-                       y = y * Math.pow(max / arg, 2);
-                       max = arg;
-               }
-               if (arg !== 0 || max !== 0) {
-                       y = y + Math.pow(arg / max, 2);
-               }
-       }
-
-  return max * Math.sqrt(y);
-});
-
-}
-
-if (!("imul"in Math
-)) {
-
-// Math.imul
-/* global CreateMethodProperty, ToUint32 */
-// 20.2.2.19. Math.imul ( x, y )
-CreateMethodProperty(Math, 'imul', function imul(x, y) {
-       // 1. Let a be ToUint32(x).
-       var a = ToUint32(x);
-       // 2. Let b be ToUint32(y).
-       var b = ToUint32(y);
-       var UINT16 = 0xffff;
-       var aHigh = a >>> 16 & UINT16;
-       var aLow = UINT16 & a;
-       var bHigh = b >>> 16 & UINT16;
-       var bLow = UINT16 & b;
-       // the shift by 0 fixes the sign on the high part
-       // the final |0 converts the unsigned value into a signed value
-       return aLow * bLow + (aHigh * bLow + aLow * bHigh << 16 >>> 0) | 0;
-});
-}
-
-if (!("log10"in Math
-)) {
-
-// Math.log10
-/* global CreateMethodProperty */
-// 20.2.2.22. Math.log10 ( x )
-CreateMethodProperty(Math, 'log10', function log10(x) {
-       return Math.log(x) / Math.LN10;
-});
-
-}
-
-if (!("log1p"in Math
-)) {
-
-// Math.log1p
-/* global CreateMethodProperty */
-// 20.2.2.21. Math.log1p ( x )
-CreateMethodProperty(Math, 'log1p', function log1p(x) {
-       x = Number(x);
-       if (-1 < x && x < 1) {
-               // Polyfill.io - For numbers in the range −1 < x < 1
-               // Because we are using log, the precision of the result will be identical to log(1).
-               // To fix this we avoid using log and use the Taylor Series expansion of log.
-               // This series converges when |x| < 1. As we can not sum to infinity,
-               // we instead sum the first 300 parts of the series to give a close approximation.
-               // |x|<1, log(1+x) = x - x^2/2 + x^3/3 - ... + (-1)^(n-1)*x^n/n + ...
-               var y = x;
-               for (var i = 2; i <= 300; i++) {
-                       y += Math.pow((-1), (i - 1)) * Math.pow(x, i) / i;
-               }
-               return y;
-       }
-
-       return Math.log(1 + x);
-});
-}
-
-if (!("log2"in Math
-)) {
-
-// Math.log2
-/* global CreateMethodProperty */
-// 20.2.2.23. Math.log2 ( x )
-CreateMethodProperty(Math, 'log2', function log2(x) {
-       return Math.log(x) / Math.LN2;
-});
-
-}
-
-if (!("sign"in Math
-)) {
-
-// Math.sign
-/* global CreateMethodProperty */
-// 20.2.2.29. Math.sign ( x )
-CreateMethodProperty(Math, 'sign', function sign(x) {
-       var x = Number(x);
-       // If x is NaN, the result is NaN.
-       if (isNaN(x)) {
-               return NaN;
-       }
-       // If x is -0, the result is -0.
-       if (1 / x === -Infinity) {
-               return -0;
-       }
-       // If x is +0, the result is +0.
-       if (1 / x === Infinity) {
-               return 0;
-       }
-       // If x is negative and not -0, the result is -1.
-       if (x < 0) {
-               return -1;
-       }
-       // If x is positive and not +0, the result is +1.
-       if (x > 0) {
-               return 1;
-       }
-});
-
-}
-
-if (!("sinh"in Math
-)) {
-
-// Math.sinh
-/* global CreateMethodProperty */
-// 20.2.2.31. Math.sinh ( x )
-CreateMethodProperty(Math, 'sinh', function sinh(x) {
-       var s = (x < 0) ? -1 : 1;
-       var absx = Math.abs(x);
-       if (absx < 22) {
-               if (absx < Math.pow(2, -28)) {
-                       return x;
-               }
-               var t = Math.exp(absx) - 1;
-               if (absx < 1) {
-                       return (s * (2 * t - t * t / (t + 1)))/2;
-               }
-               return (s * (t + t / (t + 1)))/2;
-       }
-       if (absx < 709.7822265625) {
-               return (s * Math.exp(absx))/2;
-       }
-       var w = Math.exp(0.5 * absx);
-       var t = (s * w)/2;
-       return t * w;
-});
-
-}
-
-if (!("tanh"in Math
-)) {
-
-// Math.tanh
-/* global CreateMethodProperty */
-// 20.2.2.34. Math.tanh ( x )
-CreateMethodProperty(Math, 'tanh', function tanh(x) {
-       var y;
-
-       return x === Infinity ? 1 : x === -Infinity ? -1 : (y = Math.exp(2 * x), (y - 1) / (y + 1));
-});
-
-}
-
-if (!("trunc"in Math
-)) {
-
-// Math.trunc
-/* global CreateMethodProperty */
-CreateMethodProperty(Math, 'trunc', function trunc(x) {
-       return x < 0 ? Math.ceil(x) : Math.floor(x);
-});
-
-}
-
-if (!("isFinite"in Number
-)) {
-
-// Number.isFinite
-/* global CreateMethodProperty, Type */
-(function () {
-       var that = this;
-       // 20.1.2.2. Number.isFinite ( number )
-       CreateMethodProperty(Number, 'isFinite', function isFinite(number) {
-               // 1. If Type(number) is not Number, return false.
-               if (Type(number) !== 'number') {
-                       return false;
-               }
-               // 2. If number is NaN, +∞, or -∞, return false.
-               // 3. Otherwise, return true.
-               // Polyfill.io - We use isFinite as it implements steps 2 and 3.
-               return that.isFinite(number);
-       });
-}());
-
-}
-
-if (!("isInteger"in Number
-)) {
-
-// Number.isInteger
-/* global CreateMethodProperty, ToInteger, Type */
-// 20.1.2.3. Number.isInteger ( number )
-CreateMethodProperty(Number, 'isInteger', function isInteger(number) {
-       // 1. If Type(number) is not Number, return false.
-       if (Type(number) !== 'number') {
-               return false;
-       }
-       // 2. If number is NaN, +∞, or -∞, return false.
-       if (isNaN(number) || number === Infinity || number === -Infinity) {
-               return false;
-       }
-       // 3. Let integer be ToInteger(number).
-       var integer = ToInteger(number);
-       // 4. If integer is not equal to number, return false.
-       if (integer !== number) {
-               return false;
-       }
-       // 5. Otherwise, return true.
-       return true;
-});
-
-}
-
-if (!("isNaN"in Number
-)) {
-
-// Number.isNaN
-/* global CreateMethodProperty, Type */
-(function () {
-       var that = this;
-       // 20.1.2.4. Number.isNaN ( number )
-       CreateMethodProperty(Number, 'isNaN', function isNaN(number) {
-               // 1. If Type(number) is not Number, return false.
-               if (Type(number) !== 'number') {
-                       return false;
-               }
-               // 2. If number is NaN, return true.
-               if (that.isNaN(number)) {
-                       return true;
-               }
-               // 3. Otherwise, return false.
-               return false;
-       });
-}());
-
-}
-
-if (!("isSafeInteger"in Number
-)) {
-
-// Number.isSafeInteger
-/* global CreateMethodProperty, Type, ToInteger */
-// 20.1.2.5. Number.isSafeInteger ( number )
-CreateMethodProperty(Number, 'isSafeInteger', function isSafeInteger(number) {
-       // 1. If Type(number) is not Number, return false.
-       if (Type(number) !== 'number') {
-               return false;
-       }
-       // 2. If number is NaN, +∞, or -∞, return false.
-       if (isNaN(number) || number === Infinity || number === -Infinity) {
-               return false;
-       }
-       // 3. Let integer be ToInteger(number).
-       var integer = ToInteger(number);
-       // 4. If integer is not equal to number, return false.
-       if (integer !== number) {
-               return false;
-       }
-       // 5. If abs(integer) ≤ 2^53-1, return true.
-       if (Math.abs(integer) <= (Math.pow(2, 53) - 1)) {
-               return true;
-       }
-       // 6. Otherwise, return false.
-       return false;
-});
-
-}
-
-if (!("parseFloat"in Number
-)) {
-
-// Number.parseFloat
-/* global CreateMethodProperty */
-// 20.1.2.12. Number.parseFloat ( string )
-// The value of the Number.parseFloat data property is the same built-in function object that is the value of the  parseFloat property of the global object defined in 18.2.4.
-CreateMethodProperty(Number, 'parseFloat', parseFloat);
-
-}
-
-if (!("parseInt"in Number
-)) {
-
-// Number.parseInt
-/* global CreateMethodProperty */
-// 20.1.2.13. Number.parseInt ( string, radix )
-// The value of the Number.parseInt data property is the same built-in function object that is the value of the  parseInt property of the global object defined in 18.2.5.
-CreateMethodProperty(Number, 'parseInt', parseInt);
-
-}
-
-if (!("name"in Function.prototype&&"x"===function x(){}.name
-)) {
-
-// Function.prototype.name
-(function () {
-
-       var
-       accessorName = 'name',
-       fnNameMatchRegex = /^\s*function\s+([^\(\s]*)\s*/,
-       $Function = Function,
-       FunctionName = 'Function',
-       FunctionProto = $Function.prototype,
-       FunctionProtoCtor = FunctionProto.constructor,
-
-       getFunctionName = function(fn) {
-               var match, name;
-
-               if (fn === $Function || fn === FunctionProtoCtor) {
-                       name = FunctionName;
-               }
-               else if (fn !== FunctionProto) {
-                       match = ('' + fn).match(fnNameMatchRegex);
-                       name = match && match[1];
-               }
-               return name || '';
-       };
-
-
-       Object.defineProperty(FunctionProto, accessorName, {
-               get: function Function$name() {
-                       var
-                       fn = this,
-                       fnName = getFunctionName(fn);
-
-                       // Since named function definitions have immutable names, also memoize the
-                       // output by defining the `name` property directly on this Function
-                       // instance so the accessor function will not need to be invoked again.
-                       if (fn !== FunctionProto) {
-                               Object.defineProperty(fn, accessorName, {
-                                       value: fnName,
-                                       configurable: true
-                               });
-                       }
-
-                       return fnName;
-               },
-               configurable: true
-       });
-
-}());
-
-}
-
-if (!("EPSILON"in Number
-)) {
-
-// Number.Epsilon
-// 20.1.2.1. Number.EPSILON
-// The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 that is representable as a Number value, which is approximately 2.2204460492503130808472633361816 x 10-16.
-// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-Object.defineProperty(Number, 'EPSILON', {
-       enumerable: false,
-       configurable: false,
-       writable: false,
-       value: Math.pow(2, -52)
-});
-
-}
-
-if (!("MAX_SAFE_INTEGER"in Number
-)) {
-
-// Number.MAX_SAFE_INTEGER
-// 20.1.2.6. Number.MAX_SAFE_INTEGER
-// The value of Number.MAX_SAFE_INTEGER is 9007199254740991 (2^53-1).
-// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {
-       enumerable: false,
-       configurable: false,
-       writable: false,
-       value: Math.pow(2, 53) - 1
-});
-
-}
-
-if (!("MIN_SAFE_INTEGER"in Number
-)) {
-
-// Number.MIN_SAFE_INTEGER
-// 20.1.2.8. Number.MIN_SAFE_INTEGER
-// The value of Number.MIN_SAFE_INTEGER is -9007199254740991 (-(253-1)).
-// This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {
-       enumerable: false,
-       configurable: false,
-       writable: false,
-       value: -(Math.pow(2, 53) - 1)
-});
-
-}
-
-if (!("freeze"in Object
-)) {
-
-// Object.freeze
-/* global CreateMethodProperty */
-// 19.1.2.6. Object.freeze ( O )
-CreateMethodProperty(Object, 'freeze', function freeze(O) {
-       // This feature cannot be implemented fully as a polyfill.
-       // We choose to silently fail which allows "securable" code
-       // to "gracefully" degrade to working but insecure code.
-       return O;
-});
-
-}
-
-if (!("getOwnPropertyDescriptor"in Object&&"function"==typeof Object.getOwnPropertyDescriptor&&function(){try{var t={}
-return t.test=0,0===Object.getOwnPropertyDescriptor(t,"test").value}catch(e){return!1}}()
-)) {
-
-// Object.getOwnPropertyDescriptor
-/* global CreateMethodProperty */
-(function () {
-       var call = Function.prototype.call;
-       var prototypeOfObject = Object.prototype;
-       var owns = call.bind(prototypeOfObject.hasOwnProperty);
-
-       var lookupGetter;
-       var lookupSetter;
-       var supportsAccessors;
-       if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
-           lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
-           lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
-       }
-       function doesGetOwnPropertyDescriptorWork(object) {
-           try {
-               object.sentinel = 0;
-               return Object.getOwnPropertyDescriptor(
-                   object,
-                   "sentinel"
-               ).value === 0;
-           } catch (exception) {
-               // returns falsy
-           }
-       }
-       // check whether getOwnPropertyDescriptor works if it's given. Otherwise,
-       // shim partially.
-       if (Object.defineProperty) {
-           var getOwnPropertyDescriptorWorksOnObject =
-               doesGetOwnPropertyDescriptorWork({});
-           var getOwnPropertyDescriptorWorksOnDom = typeof document == "undefined" ||
-               doesGetOwnPropertyDescriptorWork(document.createElement("div"));
-           if (!getOwnPropertyDescriptorWorksOnDom ||
-               !getOwnPropertyDescriptorWorksOnObject
-           ) {
-               var getOwnPropertyDescriptorFallback = Object.getOwnPropertyDescriptor;
-           }
-       }
-
-       if (!Object.getOwnPropertyDescriptor || getOwnPropertyDescriptorFallback) {
-           var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a non-object: ";
-
-           CreateMethodProperty(Object, 'getOwnPropertyDescriptor', function getOwnPropertyDescriptor(object, property) {
-               if ((typeof object != "object" && typeof object != "function") || object === null) {
-                   throw new TypeError(ERR_NON_OBJECT + object);
-               }
-
-               // make a valiant attempt to use the real getOwnPropertyDescriptor
-               // for I8's DOM elements.
-               if (getOwnPropertyDescriptorFallback) {
-                   try {
-                       return getOwnPropertyDescriptorFallback.call(Object, object, property);
-                   } catch (exception) {
-                       // try the shim if the real one doesn't work
-                   }
-               }
-
-               // If object does not owns property return undefined immediately.
-               if (!owns(object, property)) {
-                   return;
-               }
-
-               // If object has a property then it's for sure both `enumerable` and
-               // `configurable`.
-               var descriptor = { enumerable: true, configurable: true };
-
-               // If JS engine supports accessor properties then property may be a
-               // getter or setter.
-               if (supportsAccessors) {
-                   // Unfortunately `__lookupGetter__` will return a getter even
-                   // if object has own non getter property along with a same named
-                   // inherited getter. To avoid misbehavior we temporary remove
-                   // `__proto__` so that `__lookupGetter__` will return getter only
-                   // if it's owned by an object.
-                   var prototype = object.__proto__;
-                   object.__proto__ = prototypeOfObject;
-
-                   var getter = lookupGetter(object, property);
-                   var setter = lookupSetter(object, property);
-
-                   // Once we have getter and setter we can put values back.
-                   object.__proto__ = prototype;
-
-                   if (getter || setter) {
-                       if (getter) {
-                           descriptor.get = getter;
-                       }
-                       if (setter) {
-                           descriptor.set = setter;
-                       }
-                       // If it was accessor property we're done and return here
-                       // in order to avoid adding `value` to the descriptor.
-                       return descriptor;
-                   }
-               }
-
-               // If we got this far we know that object has an own property that is
-               // not an accessor so we set it as a value and return descriptor.
-               descriptor.value = object[property];
-                       descriptor.writable = true;
-               return descriptor;
-           });
-       }
-}());
-
-}
-
-if (!("getOwnPropertyNames"in Object
-)) {
-
-// Object.getOwnPropertyNames
-/* global CreateMethodProperty */
-
-var toString = ({}).toString;
-var split = ''.split;
-
-CreateMethodProperty(Object, 'getOwnPropertyNames', function getOwnPropertyNames(object) {
-       var buffer = [];
-       var key;
-
-       // Non-enumerable properties cannot be discovered but can be checked for by name.
-       // Define those used internally by JS to allow an incomplete solution
-       var commonProps = ['length', "name", "arguments", "caller", "prototype", "observe", "unobserve"];
-
-       if (typeof object === 'undefined' || object === null) {
-               throw new TypeError('Cannot convert undefined or null to object');
-       }
-
-       // Polyfill.io fallback for non-array-like strings which exist in some ES3 user-agents (IE 8)
-       object = toString.call(object) == '[object String]' ? split.call(object, '') : Object(object);
-
-       // Enumerable properties only
-       for (key in object) {
-               if (Object.prototype.hasOwnProperty.call(object, key)) {
-                       buffer.push(key);
-               }
-       }
-
-       // Check for and add the common non-enumerable properties
-       for (var i=0, s=commonProps.length; i<s; i++) {
-               if (commonProps[i] in object) buffer.push(commonProps[i]);
-       }
-
-       return buffer;
-});
-
-}
-
-if (!("getPrototypeOf"in Object
-)) {
-
-// Object.getPrototypeOf
-/* global CreateMethodProperty */
-// Based on: https://github.com/es-shims/es5-shim/blob/master/es5-sham.js
-
-// https://github.com/es-shims/es5-shim/issues#issue/2
-// http://ejohn.org/blog/objectgetprototypeof/
-// recommended by fschaefer on github
-//
-// sure, and webreflection says ^_^
-// ... this will nerever possibly return null
-// ... Opera Mini breaks here with infinite loops
-CreateMethodProperty(Object, 'getPrototypeOf', function getPrototypeOf(object) {
-       if (object !== Object(object)) {
-               throw new TypeError('Object.getPrototypeOf called on non-object');
-       }
-       var proto = object.__proto__;
-       if (proto || proto === null) {
-               return proto;
-       } else if (typeof object.constructor == 'function' && object instanceof object.constructor) {
-    return object.constructor.prototype;
-  } else if (object instanceof Object) {
-               return Object.prototype;
-       } else {
-               // Correctly return null for Objects created with `Object.create(null)`
-               // (shammed or native) or `{ __proto__: null}`.  Also returns null for
-               // cross-realm objects on browsers that lack `__proto__` support (like
-               // IE <11), but that's the best we can do.
-               return null;
-       }
-});
-
-}
-
-if (!("is"in Object
-)) {
-
-// Object.is
-/* global CreateMethodProperty, SameValue */
-// 19.1.2.12. Object.is ( value1, value2 )
-CreateMethodProperty(Object, 'is', function is(value1, value2) {
-       // 1. Return SameValue(value1, value2).
-       return SameValue(value1, value2);
-});
-
-}
-
-if (!("keys"in Object&&function(){return 2===Object.keys(arguments).length}(1,2)&&function(){try{return Object.keys(""),!0}catch(t){return!1}}()
-)) {
-
-// Object.keys
-/* global CreateMethodProperty */
-CreateMethodProperty(Object, "keys", (function() {
-       'use strict';
-
-       // modified from https://github.com/es-shims/object-keys
-
-       var has = Object.prototype.hasOwnProperty;
-       var toStr = Object.prototype.toString;
-       var isEnumerable = Object.prototype.propertyIsEnumerable;
-       var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
-       var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
-       var dontEnums = [
-               'toString',
-               'toLocaleString',
-               'valueOf',
-               'hasOwnProperty',
-               'isPrototypeOf',
-               'propertyIsEnumerable',
-               'constructor'
-       ];
-       var equalsConstructorPrototype = function (o) {
-               var ctor = o.constructor;
-               return ctor && ctor.prototype === o;
-       };
-       var excludedKeys = {
-               $console: true,
-               $external: true,
-               $frame: true,
-               $frameElement: true,
-               $frames: true,
-               $innerHeight: true,
-               $innerWidth: true,
-               $outerHeight: true,
-               $outerWidth: true,
-               $pageXOffset: true,
-               $pageYOffset: true,
-               $parent: true,
-               $scrollLeft: true,
-               $scrollTop: true,
-               $scrollX: true,
-               $scrollY: true,
-               $self: true,
-               $webkitIndexedDB: true,
-               $webkitStorageInfo: true,
-               $window: true
-       };
-       var hasAutomationEqualityBug = (function () {
-               /* global window */
-               if (typeof window === 'undefined') { return false; }
-               for (var k in window) {
-                       try {
-                               if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
-                                       try {
-                                               equalsConstructorPrototype(window[k]);
-                                       } catch (e) {
-                                               return true;
-                                       }
-                               }
-                       } catch (e) {
-                               return true;
-                       }
-               }
-               return false;
-       }());
-       var equalsConstructorPrototypeIfNotBuggy = function (o) {
-               /* global window */
-               if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
-                       return equalsConstructorPrototype(o);
-               }
-               try {
-                       return equalsConstructorPrototype(o);
-               } catch (e) {
-                       return false;
-               }
-       };
-
-       function isArgumentsObject(value) {
-               var str = toStr.call(value);
-               var isArgs = str === '[object Arguments]';
-               if (!isArgs) {
-                       isArgs = str !== '[object Array]' &&
-                               value !== null &&
-                               typeof value === 'object' &&
-                               typeof value.length === 'number' &&
-                               value.length >= 0 &&
-                               toStr.call(value.callee) === '[object Function]';
-               }
-               return isArgs;
-       }
-
-       return function keys(object) {
-               var isFunction = toStr.call(object) === '[object Function]';
-               var isArguments = isArgumentsObject(object);
-               var isString = toStr.call(object) === '[object String]';
-               var theKeys = [];
-
-               if (object === undefined || object === null) {
-                       throw new TypeError('Cannot convert undefined or null to object');
-               }
-
-               var skipProto = hasProtoEnumBug && isFunction;
-               if (isString && object.length > 0 && !has.call(object, 0)) {
-                       for (var i = 0; i < object.length; ++i) {
-                               theKeys.push(String(i));
-                       }
-               }
-
-               if (isArguments && object.length > 0) {
-                       for (var j = 0; j < object.length; ++j) {
-                               theKeys.push(String(j));
-                       }
-               } else {
-                       for (var name in object) {
-                               if (!(skipProto && name === 'prototype') && has.call(object, name)) {
-                                       theKeys.push(String(name));
-                               }
-                       }
-               }
-
-               if (hasDontEnumBug) {
-                       var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
-
-                       for (var k = 0; k < dontEnums.length; ++k) {
-                               if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
-                                       theKeys.push(dontEnums[k]);
-                               }
-                       }
-               }
-               return theKeys;
-       };
-}()));
-
-}
-
-if (!("assign"in Object
-)) {
-
-// Object.assign
-/* global CreateMethodProperty, Get, ToObject */
-// 19.1.2.1 Object.assign ( target, ...sources )
-CreateMethodProperty(Object, 'assign', function assign(target, source) { // eslint-disable-line no-unused-vars
-       // 1. Let to be ? ToObject(target).
-       var to = ToObject(target);
-
-       // 2. If only one argument was passed, return to.
-       if (arguments.length === 1) {
-               return to;
-       }
-
-       // 3. Let sources be the List of argument values starting with the second argument
-       var sources = Array.prototype.slice.call(arguments, 1);
-
-       // 4. For each element nextSource of sources, in ascending index order, do
-       var index1;
-       var index2;
-       var keys;
-       var from;
-       for (index1 = 0; index1 < sources.length; index1++) {
-               var nextSource = sources[index1];
-               // a. If nextSource is undefined or null, let keys be a new empty List.
-               if (nextSource === undefined || nextSource === null) {
-                       keys = [];
-                       // b. Else,
-               } else {
-                       // i. Let from be ! ToObject(nextSource).
-                       from = ToObject(nextSource);
-                       // ii. Let keys be ? from.[[OwnPropertyKeys]]().
-                       /*
-                               This step in our polyfill is not complying with the specification.
-                               [[OwnPropertyKeys]] is meant to return ALL keys, including non-enumerable and symbols.
-                               TODO: When we have Reflect.ownKeys, use that instead as it is the userland equivalent of [[OwnPropertyKeys]].
-                       */
-                       keys = Object.keys(from);
-               }
-
-               // c. For each element nextKey of keys in List order, do
-               for (index2 = 0; index2 < keys.length; index2++) {
-                       var nextKey = keys[index2];
-                       var enumerable;
-                       try {
-                               // i. Let desc be ? from.[[GetOwnProperty]](nextKey).
-                               var desc = Object.getOwnPropertyDescriptor(from, nextKey);
-                               // ii. If desc is not undefined and desc.[[Enumerable]] is true, then
-                               enumerable = desc !== undefined && desc.enumerable === true;
-                       } catch (e) {
-                               // Polyfill.io - We use Object.prototype.propertyIsEnumerable as a fallback
-                               // because `Object.getOwnPropertyDescriptor(window.location, 'hash')` causes Internet Explorer 11 to crash.
-                               enumerable = Object.prototype.propertyIsEnumerable.call(from, nextKey);
-                       }
-                       if (enumerable) {
-                               // 1. Let propValue be ? Get(from, nextKey).
-                               var propValue = Get(from, nextKey);
-                               // 2. Perform ? Set(to, nextKey, propValue, true).
-                               to[nextKey] = propValue;
-                       }
-               }
-       }
-       // 5. Return to.
-       return to;
-});
-
-}
-
-if (!("defineProperties"in Object
-)) {
-
-// Object.defineProperties
-/* global CreateMethodProperty, Get, ToObject, Type */
-// 19.1.2.3. Object.defineProperties ( O, Properties )
-CreateMethodProperty(Object, 'defineProperties', function defineProperties(O, Properties) {
-       // 1. If Type(O) is not Object, throw a TypeError exception.
-       if (Type(O) !== 'object') {
-               throw new TypeError('Object.defineProperties called on non-object');
-       }
-       // 2. Let props be ? ToObject(Properties).
-       var props = ToObject(Properties);
-       // 3. Let keys be ? props.[[OwnPropertyKeys]]().
-       /*
-               Polyfill.io - This step in our polyfill is not complying with the specification.
-               [[OwnPropertyKeys]] is meant to return ALL keys, including non-enumerable and symbols.
-               TODO: When we have Reflect.ownKeys, use that instead as it is the userland equivalent of [[OwnPropertyKeys]].
-       */
-       var keys = Object.keys(props);
-       // 4. Let descriptors be a new empty List.
-       var descriptors = [];
-       // 5. For each element nextKey of keys in List order, do
-       for (var i = 0; i < keys.length; i++) {
-               var nextKey = keys[i];
-               // a. Let propDesc be ? props.[[GetOwnProperty]](nextKey).
-               var propDesc = Object.getOwnPropertyDescriptor(props, nextKey);
-               // b. If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
-               if (propDesc !== undefined && propDesc.enumerable) {
-                       // i. Let descObj be ? Get(props, nextKey).
-                       var descObj = Get(props, nextKey);
-                       // ii. Let desc be ? ToPropertyDescriptor(descObj).
-                       // Polyfill.io - We skip this step because Object.defineProperty deals with it.
-                       // TODO: Implement this step?
-                       var desc = descObj;
-                       // iii. Append the pair (a two element List) consisting of nextKey and desc to the end of descriptors.
-                       descriptors.push([nextKey, desc]);
-               }
-       }
-       // 6. For each pair from descriptors in list order, do
-       for (var i = 0; i < descriptors.length; i++){
-               // a. Let P be the first element of pair.
-               var P = descriptors[i][0];
-               // b. Let desc be the second element of pair.
-               var desc = descriptors[i][1];
-               // c. Perform ? DefinePropertyOrThrow(O, P, desc).
-               Object.defineProperty(O, P, desc);
-       }
-       // 7. Return O.
-       return O;
-});
-
-}
-
-if (!("create"in Object
-)) {
-
-// Object.create
-/* global CreateMethodProperty, Type */
-CreateMethodProperty(Object, 'create', function create(O, properties) {
-       // 1. If Type(O) is neither Object nor Null, throw a TypeError exception.
-       if (Type(O) !== 'object' && Type(O) !== 'null') {
-               throw new TypeError('Object prototype may only be an Object or null');
-       }
-       // 2. Let obj be ObjectCreate(O).
-       var obj = new Function('e', 'function Object() {}Object.prototype=e;return new Object')(O);
-
-       obj.constructor.prototype = O;
-
-       // 3. If Properties is not undefined, then
-       if (1 in arguments) {
-               // a. Return ? ObjectDefineProperties(obj, Properties).
-               return Object.defineProperties(obj, properties);
-       }
-
-       return obj;
-});
-
-}
-
-
-// _ESAbstract.OrdinaryCreateFromConstructor
-/* global GetPrototypeFromConstructor */
-// 9.1.13. OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
-function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars
-       var internalSlotsList = arguments[2] || {};
-       // 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object.
-       // The corresponding object must be an intrinsic that is intended to be used as the[[Prototype]] value of an object.
-
-       // 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
-       var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);
-
-       // 3. Return ObjectCreate(proto, internalSlotsList).
-       // Polyfill.io - We do not pass internalSlotsList to Object.create because Object.create does not use the default ordinary object definitions specified in 9.1.
-       var obj = Object.create(proto);
-       for (var name in internalSlotsList) {
-               if (Object.prototype.hasOwnProperty.call(internalSlotsList, name)) {
-                       Object.defineProperty(obj, name, {
-                               configurable: true,
-                               enumerable: false,
-                               writable: true,
-                               value: internalSlotsList[name]
-                       });
-               }
-       }
-       return obj;
-}
-
-// _ESAbstract.Construct
-/* global IsConstructor, OrdinaryCreateFromConstructor, Call */
-// 7.3.13. Construct ( F [ , argumentsList [ , newTarget ]] )
-function Construct(F /* [ , argumentsList [ , newTarget ]] */) { // eslint-disable-line no-unused-vars
-       // 1. If newTarget is not present, set newTarget to F.
-       var newTarget = arguments.length > 2 ? arguments[2] : F;
-
-       // 2. If argumentsList is not present, set argumentsList to a new empty List.
-       var argumentsList = arguments.length > 1 ? arguments[1] : [];
-
-       // 3. Assert: IsConstructor(F) is true.
-       if (!IsConstructor(F)) {
-               throw new TypeError('F must be a constructor.');
-       }
-
-       // 4. Assert: IsConstructor(newTarget) is true.
-       if (!IsConstructor(newTarget)) {
-               throw new TypeError('newTarget must be a constructor.');
-       }
-
-       // 5. Return ? F.[[Construct]](argumentsList, newTarget).
-       // Polyfill.io - If newTarget is the same as F, it is equivalent to new F(...argumentsList).
-       if (newTarget === F) {
-               return new (Function.prototype.bind.apply(F, [null].concat(argumentsList)))();
-       } else {
-               // Polyfill.io - This is mimicking section 9.2.2 step 5.a.
-               var obj = OrdinaryCreateFromConstructor(newTarget, Object.prototype);
-               return Call(F, obj, argumentsList);
-       }
-}
-
-// _ESAbstract.ArraySpeciesCreate
-/* global IsArray, ArrayCreate, Get, Type, IsConstructor, Construct */
-// 9.4.2.3. ArraySpeciesCreate ( originalArray, length )
-function ArraySpeciesCreate(originalArray, length) { // eslint-disable-line no-unused-vars
-       // 1. Assert: length is an integer Number ≥ 0.
-       // 2. If length is -0, set length to +0.
-       if (1/length === -Infinity) {
-               length = 0;
-       }
-
-       // 3. Let isArray be ? IsArray(originalArray).
-       var isArray = IsArray(originalArray);
-
-       // 4. If isArray is false, return ? ArrayCreate(length).
-       if (isArray === false) {
-               return ArrayCreate(length);
-       }
-
-       // 5. Let C be ? Get(originalArray, "constructor").
-       var C = Get(originalArray, 'constructor');
-
-       // Polyfill.io - We skip this section as not sure how to make a cross-realm normal Array, a same-realm Array.
-       // 6. If IsConstructor(C) is true, then
-       // if (IsConstructor(C)) {
-               // a. Let thisRealm be the current Realm Record.
-               // b. Let realmC be ? GetFunctionRealm(C).
-               // c. If thisRealm and realmC are not the same Realm Record, then
-                       // i. If SameValue(C, realmC.[[Intrinsics]].[[%Array%]]) is true, set C to undefined.
-       // }
-       // 7. If Type(C) is Object, then
-       if (Type(C) === 'object') {
-               // a. Set C to ? Get(C, @@species).
-               C = 'Symbol' in this && 'species' in this.Symbol ? Get(C, this.Symbol.species) : undefined;
-               // b. If C is null, set C to undefined.
-               if (C === null) {
-                       C = undefined;
-               }
-       }
-       // 8. If C is undefined, return ? ArrayCreate(length).
-       if (C === undefined) {
-               return ArrayCreate(length);
-       }
-       // 9. If IsConstructor(C) is false, throw a TypeError exception.
-       if (!IsConstructor(C)) {
-               throw new TypeError('C must be a constructor');
-       }
-       // 10. Return ? Construct(C, « length »).
-       return Construct(C, [length]);
-}
-if (!("filter"in Array.prototype
-)) {
-
-// Array.prototype.filter
-/* global CreateMethodProperty, ToObject, ToLength, Get, IsCallable, ArraySpeciesCreate, ToString, HasProperty, ToBoolean, Call, CreateDataPropertyOrThrow */
-// 22.1.3.7. Array.prototype.filter ( callbackfn [ , thisArg ] )
-CreateMethodProperty(Array.prototype, 'filter', function filter(callbackfn /* [ , thisArg ] */) {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. If IsCallable(callbackfn) is false, throw a TypeError exception.
-       if (IsCallable(callbackfn) === false) {
-               throw new TypeError(callbackfn + ' is not a function');
-       }
-       // 4. If thisArg is present, let T be thisArg; else let T be undefined.
-       var T = arguments.length > 1 ? arguments[1] : undefined;
-       // 5. Let A be ? ArraySpeciesCreate(O, 0).
-       var A = ArraySpeciesCreate(O, 0);
-       // 6. Let k be 0.
-       var k = 0;
-       // 7. Let to be 0.
-       var to = 0;
-       // 8. Repeat, while k < len
-       while (k < len) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Let kPresent be ? HasProperty(O, Pk).
-               var kPresent = HasProperty(O, Pk);
-               // c. If kPresent is true, then
-               if (kPresent) {
-                       // i. Let kValue be ? Get(O, Pk).
-                       var kValue = Get(O, Pk);
-                       // ii. Let selected be ToBoolean(? Call(callbackfn, T, « kValue, k, O »)).
-                       var selected = ToBoolean(Call(callbackfn, T, [kValue, k, O]));
-                       // iii. If selected is true, then
-                       if (selected) {
-                               // 1. Perform ? CreateDataPropertyOrThrow(A, ! ToString(to), kValue)
-                               CreateDataPropertyOrThrow(A, ToString(to), kValue);
-                               // 2. Increase to by 1.
-                               to = to + 1;
-                       }
-
-               }
-               // d. Increase k by 1.
-               k = k + 1;
-       }
-       // 9. Return A.
-       return A;
-});
-
-}
-
-if (!("map"in Array.prototype
-)) {
-
-// Array.prototype.map
-/* global ArraySpeciesCreate, Call, CreateDataPropertyOrThrow, CreateMethodProperty, Get, HasProperty, IsCallable, ToLength, ToObject, ToString */
-/* global CreateMethodProperty, ToObject, ToLength, Get, ArraySpeciesCreate, ToString, HasProperty, Call, CreateDataPropertyOrThrow */
-// 22.1.3.16. Array.prototype.map ( callbackfn [ , thisArg ] )
-CreateMethodProperty(Array.prototype, 'map', function map(callbackfn /* [ , thisArg ] */) {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Let len be ? ToLength(? Get(O, "length")).
-       var len = ToLength(Get(O, "length"));
-       // 3. If IsCallable(callbackfn) is false, throw a TypeError exception.
-       if (IsCallable(callbackfn) === false) {
-               throw new TypeError(callbackfn + ' is not a function');
-       }
-       // 4. If thisArg is present, let T be thisArg; else let T be undefined.
-       var T = arguments.length > 1 ? arguments[1] : undefined;
-       // 5. Let A be ? ArraySpeciesCreate(O, len).
-       var A = ArraySpeciesCreate(O, len);
-       // 6. Let k be 0.
-       var k = 0;
-       // 7. Repeat, while k < len
-       while (k < len) {
-               // a. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // b. Let kPresent be ? HasProperty(O, Pk).
-               var kPresent = HasProperty(O, Pk);
-               // c. If kPresent is true, then
-               if (kPresent) {
-                       // i. Let kValue be ? Get(O, Pk).
-                       var kValue = Get(O, Pk);
-                       // ii. Let mappedValue be ? Call(callbackfn, T, « kValue, k, O »).
-                       var mappedValue = Call(callbackfn, T, [kValue, k, O]);
-                       // iii. Perform ? CreateDataPropertyOrThrow(A, Pk, mappedValue).
-                       CreateDataPropertyOrThrow(A, Pk, mappedValue);
-               }
-               // d. Increase k by 1.
-               k = k + 1;
-       }
-       // 8. Return A.
-       return A;
-});
-
-}
-
-if (!("of"in Array
-)) {
-
-// Array.of
-/* global ArrayCreate, Construct, CreateDataPropertyOrThrow, CreateMethodProperty, IsConstructor, ToString */
-// 22.1.2.3. Array.of ( ...items )
-CreateMethodProperty(Array, 'of', function of() {
-       // 1. Let len be the actual number of arguments passed to this function.
-       var len = arguments.length;
-       // 2. Let items be the List of arguments passed to this function.
-       var items = arguments;
-       // 3. Let C be the this value.
-       var C = this;
-       // 4. If IsConstructor(C) is true, then
-       if (IsConstructor(C)) {
-               // a. Let A be ? Construct(C, « len »).
-               var A = Construct(C, [len]);
-               // 5. Else,
-       } else {
-               // a. Let A be ? ArrayCreate(len).
-               var A = ArrayCreate(len);
-       }
-       // 6. Let k be 0.
-       var k = 0;
-       // 7. Repeat, while k < len
-       while (k < len) {
-               // a. Let kValue be items[k].
-               var kValue = items[k];
-               // b. Let Pk be ! ToString(k).
-               var Pk = ToString(k);
-               // c. Perform ? CreateDataPropertyOrThrow(A, Pk, kValue).
-               CreateDataPropertyOrThrow(A, Pk, kValue);
-               // d. Increase k by 1.
-               var k = k + 1;
-
-       }
-       // 8. Perform ? Set(A, "length", len, true)
-       A["length"] = len;
-       // 9. Return A.
-       return A;
-});
-
-}
-
-if (!("seal"in Object&&function(){try{return Object.seal("1"),!0}catch(t){return!1}}
-)) {
-
-// Object.seal
-/* global CreateMethodProperty, Type */
-// 19.1.2.19 Object.seal ( O )
-(function(originalObjectSeal) {
-    CreateMethodProperty(Object, 'seal', function seal(O) {
-        // 1. If Type(O) is not Object, return O.
-        if (Type(O) === 'object') {
-            return O;
-        }
-        // 2. Let status be ? SetIntegrityLevel(O, "sealed").
-        // 3. If status is false, throw a TypeError exception.
-        // 4. Return O.
-        return originalObjectSeal ? originalObjectSeal(O) : O;
-    });
-}(Object.seal));
-
-
-}
-
-
-// Object.setPrototypeOf
-/* global CreateMethodProperty */
-// ES6-shim 0.16.0 (c) 2013-2014 Paul Miller (http://paulmillr.com)
-// ES6-shim may be freely distributed under the MIT license.
-// For more details and documentation:
-// https://github.com/paulmillr/es6-shim/
-
- // NOTE:  This versions needs object ownership
-  //        because every promoted object needs to be reassigned
-  //        otherwise uncompatible browsers cannot work as expected
-  //
-  // NOTE:  This might need es5-shim or polyfills upfront
-  //        because it's based on ES5 API.
-  //        (probably just an IE <= 8 problem)
-  //
-  // NOTE:  nodejs is fine in version 0.8, 0.10, and future versions.
-(function () {
-       if (Object.setPrototypeOf) { return; }
-
-       /*jshint proto: true */
-       // @author    Andrea Giammarchi - @WebReflection
-
-       var getOwnPropertyNames = Object.getOwnPropertyNames;
-       var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
-       var create = Object.create;
-       var defineProperty = Object.defineProperty;
-       var getPrototypeOf = Object.getPrototypeOf;
-       var objProto = Object.prototype;
-
-       var copyDescriptors = function (target, source) {
-               // define into target descriptors from source
-               getOwnPropertyNames(source).forEach(function (key) {
-                       defineProperty(
-                               target,
-                               key,
-                               getOwnPropertyDescriptor(source, key)
-                       );
-               });
-               return target;
-       };
-       // used as fallback when no promotion is possible
-       var createAndCopy = function setPrototypeOf(origin, proto) {
-               return copyDescriptors(create(proto), origin);
-       };
-       var set, sPOf;
-       try {
-               // this might fail for various reasons
-               // ignore if Chrome cought it at runtime
-               set = getOwnPropertyDescriptor(objProto, '__proto__').set;
-               set.call({}, null);
-               // setter not poisoned, it can promote
-               // Firefox, Chrome
-               sPOf = function setPrototypeOf(origin, proto) {
-                       set.call(origin, proto);
-                       return origin;
-               };
-       } catch (e) {
-               // do one or more feature detections
-               set = { __proto__: null };
-               // if proto does not work, needs to fallback
-               // some Opera, Rhino, ducktape
-               if (set instanceof Object) {
-                       sPOf = createAndCopy;
-               } else {
-                       // verify if null objects are buggy
-                       /* eslint-disable no-proto */
-                       set.__proto__ = objProto;
-                       /* eslint-enable no-proto */
-                       // if null objects are buggy
-                       // nodejs 0.8 to 0.10
-                       if (set instanceof Object) {
-                               sPOf = function setPrototypeOf(origin, proto) {
-                                       // use such bug to promote
-                                       /* eslint-disable no-proto */
-                                       origin.__proto__ = proto;
-                                       /* eslint-enable no-proto */
-                                       return origin;
-                               };
-                       } else {
-                               // try to use proto or fallback
-                               // Safari, old Firefox, many others
-                               sPOf = function setPrototypeOf(origin, proto) {
-                                       // if proto is not null
-                                       if (getPrototypeOf(origin)) {
-                                               // use __proto__ to promote
-                                               /* eslint-disable no-proto */
-                                               origin.__proto__ = proto;
-                                               /* eslint-enable no-proto */
-                                               return origin;
-                                       } else {
-                                               // otherwise unable to promote: fallback
-                                               return createAndCopy(origin, proto);
-                                       }
-                               };
-                       }
-               }
-       }
-       CreateMethodProperty(Object, 'setPrototypeOf', sPOf);
-}());
-if (!("Promise"in this
-)) {
-
-// Promise
-!function(n){function t(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return n[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var e={};t.m=n,t.c=e,t.i=function(n){return n},t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:r})},t.n=function(n){var e=n&&n.__esModule?function(){return n["default"]}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="",t(t.s=100)}({100:/*!***********************!*\
-  !*** ./src/global.js ***!
-  \***********************/
-function(n,t,e){(function(n){var t=e(/*! ./yaku */5);try{n.Promise=t,window.Promise=t}catch(r){}}).call(t,e(/*! ./../~/webpack/buildin/global.js */2))},2:/*!***********************************!*\
-  !*** (webpack)/buildin/global.js ***!
-  \***********************************/
-function(n,t){var e;e=function(){return this}();try{e=e||Function("return this")()||(0,eval)("this")}catch(r){"object"==typeof window&&(e=window)}n.exports=e},5:/*!*********************!*\
-  !*** ./src/yaku.js ***!
-  \*********************/
-function(n,t,e){(function(t){!function(){"use strict";function e(){return rn[q][B]||D}function r(n){return n&&"object"==typeof n}function o(n){return"function"==typeof n}function i(n,t){return n instanceof t}function u(n){return i(n,M)}function c(n,t,e){if(!t(n))throw h(e)}function f(){try{return R.apply(S,arguments)}catch(n){return nn.e=n,nn}}function s(n,t){return R=n,S=t,f}function a(n,t){function e(){for(var e=0;e<o;)t(r[e],r[e+1]),r[e++]=P,r[e++]=P;o=0,r.length>n&&(r.length=n)}var r=A(n),o=0;return function(n,t){r[o++]=n,r[o++]=t,2===o&&rn.nextTick(e)}}function l(n,t){var e,r,u,c,f=0;if(!n)throw h(Q);var a=n[rn[q][z]];if(o(a))r=a.call(n);else{if(!o(n.next)){if(i(n,A)){for(e=n.length;f<e;)t(n[f],f++);return f}throw h(Q)}r=n}for(;!(u=r.next()).done;)if((c=s(t)(u.value,f++))===nn)throw o(r[G])&&r[G](),c.e;return f}function h(n){return new TypeError(n)}function v(n){return(n?"":V)+(new M).stack}function _(n,t){var e="on"+n.toLowerCase(),r=O[e];H&&H.listeners(n).length?n===Z?H.emit(n,t._v,t):H.emit(n,t):r?r({reason:t._v,promise:t}):rn[n](t._v,t)}function p(n){return n&&n._s}function d(n){if(p(n))return new n(tn);var t,e,r;return t=new n(function(n,o){if(t)throw h();e=n,r=o}),c(e,o),c(r,o),t}function w(n,t){var e=!1;return function(r){e||(e=!0,L&&(n[N]=v(!0)),t===Y?k(n,r):x(n,t,r))}}function y(n,t,e,r){return o(e)&&(t._onFulfilled=e),o(r)&&(n[J]&&_(X,n),t._onRejected=r),L&&(t._p=n),n[n._c++]=t,n._s!==$&&on(n,t),t}function m(n){if(n._umark)return!0;n._umark=!0;for(var t,e=0,r=n._c;e<r;)if(t=n[e++],t._onRejected||m(t))return!0}function j(n,t){function e(n){return r.push(n.replace(/^\s+|\s+$/g,""))}var r=[];return L&&(t[N]&&e(t[N]),function o(n){n&&K in n&&(o(n._next),e(n[K]+""),o(n._p))}(t)),(n&&n.stack?n.stack:n)+("\n"+r.join("\n")).replace(en,"")}function g(n,t){return n(t)}function x(n,t,e){var r=0,o=n._c;if(n._s===$)for(n._s=t,n._v=e,t===U&&(L&&u(e)&&(e.longStack=j(e,n)),un(n));r<o;)on(n,n[r++]);return n}function k(n,t){if(t===n&&t)return x(n,U,h(W)),n;if(t!==C&&(o(t)||r(t))){var e=s(b)(t);if(e===nn)return x(n,U,e.e),n;o(e)?(L&&p(t)&&(n._next=t),p(t)?T(n,t,e):rn.nextTick(function(){T(n,t,e)})):x(n,Y,t)}else x(n,Y,t);return n}function b(n){return n.then}function T(n,t,e){var r=s(e,t)(function(e){t&&(t=C,k(n,e))},function(e){t&&(t=C,x(n,U,e))});r===nn&&t&&(x(n,U,r.e),t=C)}var P,R,S,C=null,F="object"==typeof self,O=F?self:t,E=O.Promise,H=O.process,I=O.console,L=!1,A=Array,M=Error,U=1,Y=2,$=3,q="Symbol",z="iterator",B="species",D=q+"("+B+")",G="return",J="_uh",K="_pt",N="_st",Q="Invalid argument",V="\nFrom previous ",W="Chaining cycle detected for promise",X="rejectionHandled",Z="unhandledRejection",nn={e:C},tn=function(){},en=/^.+\/node_modules\/yaku\/.+\n?/gm,rn=function(n){var t,e=this;if(!r(e)||e._s!==P)throw h("Invalid this");if(e._s=$,L&&(e[K]=v()),n!==tn){if(!o(n))throw h(Q);t=s(n)(w(e,Y),w(e,U)),t===nn&&x(e,U,t.e)}};rn["default"]=rn,function(n,t){for(var e in t)n[e]=t[e]}(rn.prototype,{then:function(n,t){if(this._s===undefined)throw h();return y(this,d(rn.speciesConstructor(this,rn)),n,t)},"catch":function(n){return this.then(P,n)},"finally":function(n){return this.then(function(t){return rn.resolve(n()).then(function(){return t})},function(t){return rn.resolve(n()).then(function(){throw t})})},_c:0,_p:C}),rn.resolve=function(n){return p(n)?n:k(d(this),n)},rn.reject=function(n){return x(d(this),U,n)},rn.race=function(n){var t=this,e=d(t),r=function(n){x(e,Y,n)},o=function(n){x(e,U,n)},i=s(l)(n,function(n){t.resolve(n).then(r,o)});return i===nn?t.reject(i.e):e},rn.all=function(n){function t(n){x(o,U,n)}var e,r=this,o=d(r),i=[];return(e=s(l)(n,function(n,u){r.resolve(n).then(function(n){i[u]=n,--e||x(o,Y,i)},t)}))===nn?r.reject(e.e):(e||x(o,Y,[]),o)},rn.Symbol=O[q]||{},s(function(){Object.defineProperty(rn,e(),{get:function(){return this}})})(),rn.speciesConstructor=function(n,t){var r=n.constructor;return r?r[e()]||t:t},rn.unhandledRejection=function(n,t){I&&I.error("Uncaught (in promise)",L?t.longStack:j(n,t))},rn.rejectionHandled=tn,rn.enableLongStackTrace=function(){L=!0},rn.nextTick=F?function(n){E?new E(function(n){n()}).then(n):setTimeout(n)}:H.nextTick,rn._s=1;var on=a(999,function(n,t){var e,r;return(r=n._s!==U?t._onFulfilled:t._onRejected)===P?void x(t,n._s,n._v):(e=s(g)(r,n._v))===nn?void x(t,U,e.e):void k(t,e)}),un=a(9,function(n){m(n)||(n[J]=1,_(Z,n))});try{n.exports=rn}catch(cn){O.Yaku=rn}}()}).call(t,e(/*! ./../~/webpack/buildin/global.js */2))}});
-}
-
-if (!("flags"in RegExp.prototype
-)) {
-
-// RegExp.prototype.flags
-/* global Get, ToBoolean, Type */
-Object.defineProperty(RegExp.prototype, 'flags', {
-       configurable: true,
-       enumerable: false,
-       get: function () {
-               // 21.2.5.3.1 Let R be the this value.
-               var R = this;
-
-               // 21.2.5.3.2 If Type(R) is not Object, throw a TypeError exception.
-               if (Type(R) !== 'object') {
-                       throw new TypeError('Method called on incompatible type: must be an object.');
-               }
-               // 21.2.5.3.3 Let result be the empty String.
-               var result = '';
-
-               // 21.2.5.3.4 Let global be ToBoolean(? Get(R, "global")).
-               var global = ToBoolean(Get(R, 'global'));
-
-               // 21.2.5.3.5 If global is true, append the code unit 0x0067 (LATIN SMALL LETTER G) as the last code unit of result.
-               if (global) {
-                       result += 'g';
-               }
-
-               // 21.2.5.3.6 Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")).
-               var ignoreCase = ToBoolean(Get(R, 'ignoreCase'));
-
-               // 21.2.5.3.7 If ignoreCase is true, append the code unit 0x0069 (LATIN SMALL LETTER I) as the last code unit of result.
-               if (ignoreCase) {
-                       result += 'i';
-               }
-
-               // 21.2.5.3.8 Let multiline be ToBoolean(? Get(R, "multiline")).
-               var multiline = ToBoolean(Get(R, 'multiline'));
-
-               // 21.2.5.3.9 If multiline is true, append the code unit 0x006D (LATIN SMALL LETTER M) as the last code unit of result.
-               if (multiline) {
-                       result += 'm';
-               }
-
-               // 21.2.5.3.10 Let unicode be ToBoolean(? Get(R, "unicode")).
-               var unicode = ToBoolean(Get(R, 'unicode'));
-
-               // 21.2.5.3.11 If unicode is true, append the code unit 0x0075 (LATIN SMALL LETTER U) as the last code unit of result.
-               if (unicode) {
-                       result += 'u';
-               }
-
-               // 21.2.5.3.12 Let sticky be ToBoolean(? Get(R, "sticky")).
-               var sticky = ToBoolean(Get(R, 'sticky'));
-
-               // 21.2.5.3.13 If sticky is true, append the code unit 0x0079 (LATIN SMALL LETTER Y) as the last code unit of result.
-               if (sticky) {
-                       result += 'y';
-               }
-
-               // 21.2.5.3.14 Return result.
-               return result;
-       }
-});
-
-}
-
-if (!("fromCodePoint"in String&&1===String.fromCodePoint.length
-)) {
-
-// String.fromCodePoint
-/* global CreateMethodProperty, IsArray, SameValue, ToInteger, ToNumber, UTF16Encoding */
-
-// 21.1.2.2. String.fromCodePoint ( ...codePoints )
-CreateMethodProperty(String, 'fromCodePoint', function fromCodePoint(_) { // eslint-disable-line no-unused-vars
-       // Polyfill.io - List to store the characters whilst iterating over the code points.
-       var result = [];
-       // 1. Let codePoints be a List containing the arguments passed to this function.
-       var codePoints = arguments;
-       // 2. Let length be the number of elements in codePoints.
-       var length = arguments.length;
-       // 3. Let elements be a new empty List.
-       var elements = [];
-       // 4. Let nextIndex be 0.
-       var nextIndex = 0;
-       // 5. Repeat, while nextIndex < length
-       while (nextIndex < length) {
-               // Polyfill.io - We reset the elements List as we store the partial results in the result List.
-               var elements = [];
-               // a. Let next be codePoints[nextIndex].
-               var next = codePoints[nextIndex];
-               // b. Let nextCP be ? ToNumber(next).
-               var nextCP = ToNumber(next);
-               // c. If SameValue(nextCP, ToInteger(nextCP)) is false, throw a RangeError exception.
-               if (SameValue(nextCP, ToInteger(nextCP)) === false) {
-                       throw new RangeError('Invalid code point ' + Object.prototype.toString.call(nextCP));
-               }
-               // d. If nextCP < 0 or nextCP > 0x10FFFF, throw a RangeError exception.
-               if (nextCP < 0 || nextCP > 0x10FFFF) {
-                       throw new RangeError('Invalid code point ' + Object.prototype.toString.call(nextCP));
-               }
-               // e. Append the elements of the UTF16Encoding of nextCP to the end of elements.
-               // Polyfill.io - UTF16Encoding can return a single codepoint or a list of multiple codepoints.
-               var cp = UTF16Encoding(nextCP);
-               if (IsArray(cp)) {
-                       elements = elements.concat(cp);
-               } else {
-                       elements.push(cp);
-               }
-               // f. Let nextIndex be nextIndex + 1.
-               nextIndex = nextIndex + 1;
-
-               // Polyfill.io - Retrieving the characters whilst iterating enables the function to work in a memory efficient and performant way.
-               result.push(String.fromCharCode.apply(null, elements));
-       }
-       // 6. Return the String value whose elements are, in order, the elements in the List elements. If length is 0, the empty string is returned.
-       return length === 0 ? '' : result.join('');
-});
-
-}
-
-if (!("codePointAt"in String.prototype
-)) {
-
-// String.prototype.codePointAt
-/* global CreateMethodProperty, RequireObjectCoercible, ToInteger, ToString, UTF16Decode */
-// 21.1.3.3. String.prototype.codePointAt ( pos )
-CreateMethodProperty(String.prototype, 'codePointAt', function codePointAt(pos) {
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Let position be ? ToInteger(pos).
-       var position = ToInteger(pos);
-       // 4. Let size be the length of S.
-       var size = S.length;
-       // 5. If position < 0 or position ≥ size, return undefined.
-       if (position < 0 || position >= size) {
-               return undefined;
-       }
-       // 6. Let first be the numeric value of the code unit at index position within the String S.
-       var first = String.prototype.charCodeAt.call(S, position);
-       // 7. If first < 0xD800 or first > 0xDBFF or position+1 = size, return first.
-       if (first < 0xD800 || first > 0xDBFF || position + 1 === size) {
-               return first;
-       }
-       // 8. Let second be the numeric value of the code unit at index position+1 within the String S.
-       var second = String.prototype.charCodeAt.call(S, position + 1);
-       // 9. If second < 0xDC00 or second > 0xDFFF, return first.
-       if (second < 0xDC00 || second > 0xDFFF) {
-               return first;
-       }
-       // 10. Return UTF16Decode(first, second).
-       // 21.1.3.3.10 Return UTF16Decode(first, second).
-       return UTF16Decode(first, second);
-});
-
-}
-
-if (!("endsWith"in String.prototype
-)) {
-
-// String.prototype.endsWith
-/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
-// 21.1.3.6. String.prototype.endsWith ( searchString [ , endPosition ] )
-CreateMethodProperty(String.prototype, 'endsWith', function endsWith(searchString /* [ , endPosition ] */) {
-       'use strict';
-       var endPosition = arguments.length > 1 ? arguments[1] : undefined;
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Let isRegExp be ? IsRegExp(searchString).
-       var isRegExp = IsRegExp(searchString);
-       // 4. If isRegExp is true, throw a TypeError exception.
-       if (isRegExp) {
-               throw new TypeError('First argument to String.prototype.endsWith must not be a regular expression');
-       }
-       // 5. Let searchStr be ? ToString(searchString).
-       var searchStr = ToString(searchString);
-       // 6. Let len be the length of S.
-       var len = S.length;
-       // 7. If endPosition is undefined, let pos be len, else let pos be ? ToInteger(endPosition).
-       var pos = endPosition === undefined ? len : ToInteger(endPosition);
-       // 8. Let end be min(max(pos, 0), len).
-       var end = Math.min(Math.max(pos, 0), len);
-       // 9. Let searchLength be the length of searchStr.
-       var searchLength = searchStr.length;
-       // 10. Let start be end - searchLength.
-       var start = end - searchLength;
-       // 11. If start is less than 0, return false.
-       if (start < 0) {
-               return false;
-       }
-       // 12. If the sequence of elements of S starting at start of length searchLength is the same as the full element sequence of searchStr, return true.
-       if (S.substr(start, searchLength) === searchStr) {
-               return true;
-        }
-       // 13. Otherwise, return false.
-       return false;
-});
-
-}
-
-if (!("includes"in String.prototype
-)) {
-
-// String.prototype.includes
-/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
-// 21.1.3.7. String.prototype.includes ( searchString [ , position ] )
-CreateMethodProperty(String.prototype, 'includes', function includes(searchString /* [ , position ] */) {
-       'use strict';
-       var position = arguments.length > 1 ? arguments[1] : undefined;
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Let isRegExp be ? IsRegExp(searchString).
-       var isRegExp = IsRegExp(searchString);
-       // 4. If isRegExp is true, throw a TypeError exception.
-       if (isRegExp) {
-               throw new TypeError('First argument to String.prototype.includes must not be a regular expression');
-       }
-       // 5. Let searchStr be ? ToString(searchString).
-       var searchStr = ToString(searchString);
-       // 6. Let pos be ? ToInteger(position). (If position is undefined, this step produces the value 0.)
-       var pos = ToInteger(position);
-       // 7. Let len be the length of S.
-       var len = S.length;
-       // 8. Let start be min(max(pos, 0), len).
-       var start = Math.min(Math.max(pos, 0), len);
-       // 9. Let searchLen be the length of searchStr.
-       // var searchLength = searchStr.length;
-       // 10. If there exists any integer k not smaller than start such that k + searchLen is not greater than len, and for all nonnegative integers j less than searchLen, the code unit at index k+j within S is the same as the code unit at index j within searchStr, return true; but if there is no such integer k, return false.
-       return String.prototype.indexOf.call(S, searchStr, start) !== -1;
-});
-
-}
-
-if (!("repeat"in String.prototype
-)) {
-
-// String.prototype.repeat
-/* global CreateMethodProperty, RequireObjectCoercible, ToInteger, ToString */
-// 21.1.3.15String.prototype.repeat ( count )
-CreateMethodProperty(String.prototype, 'repeat', function repeat(count) {
-       'use strict';
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Let n be ? ToInteger(count).
-       var n = ToInteger(count);
-       // 4. If n < 0, throw a RangeError exception.
-       if (n < 0) {
-               throw new RangeError('Invalid count value');
-       }
-       // 5. If n is +∞, throw a RangeError exception.
-       if (n === Infinity) {
-               throw new RangeError('Invalid count value');
-       }
-       // 6. Let T be the String value that is made from n copies of S appended together. If n is 0, T is the empty String.
-       var T = n === 0 ? '' : new Array(n + 1).join(S);
-       // 7. Return T.
-       return T;
-});
-
-}
-
-if (!("startsWith"in String.prototype
-)) {
-
-// String.prototype.startsWith
-/* global CreateMethodProperty, IsRegExp, RequireObjectCoercible, ToInteger, ToString */
-// 21.1.3.20. String.prototype.startsWith ( searchString [ , position ] )
-CreateMethodProperty(String.prototype, 'startsWith', function startsWith(searchString /* [ , position ] */) {
-       'use strict';
-       var position = arguments.length > 1 ? arguments[1] : undefined;
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Let isRegExp be ? IsRegExp(searchString).
-       var isRegExp = IsRegExp(searchString);
-       // 4. If isRegExp is true, throw a TypeError exception.
-       if (isRegExp) {
-               throw new TypeError('First argument to String.prototype.startsWith must not be a regular expression');
-       }
-       // 5. Let searchStr be ? ToString(searchString).
-       var searchStr = ToString(searchString);
-       // 6. Let pos be ? ToInteger(position). (If position is undefined, this step produces the value 0.)
-       var pos = ToInteger(position);
-       // 7. Let len be the length of S.
-       var len = S.length;
-       // 8. Let start be min(max(pos, 0), len).
-       var start = Math.min(Math.max(pos, 0), len);
-       // 9. Let searchLength be the length of searchStr.
-       var searchLength = searchStr.length;
-       // 10. If searchLength+start is greater than len, return false.
-       if (searchLength + start > len) {
-               return false;
-       }
-       // 11. If the sequence of elements of S starting at start of length searchLength is the same as the full element sequence of searchStr, return true.
-       if (S.substr(start).indexOf(searchString) === 0) {
-               return true;
-       }
-       // 12. Otherwise, return false.
-       return false;
-});
-
-}
-
-if (!("Symbol"in this&&0===this.Symbol.length
-)) {
-
-// Symbol
-// A modification of https://github.com/WebReflection/get-own-property-symbols
-// (C) Andrea Giammarchi - MIT Licensed
-
-(function (Object, GOPS, global) {
-       'use strict'; //so that ({}).toString.call(null) returns the correct [object Null] rather than [object Window]
-
-       var     setDescriptor;
-       var id = 0;
-       var random = '' + Math.random();
-       var prefix = '__\x01symbol:';
-       var prefixLength = prefix.length;
-       var internalSymbol = '__\x01symbol@@' + random;
-       var DP = 'defineProperty';
-       var DPies = 'defineProperties';
-       var GOPN = 'getOwnPropertyNames';
-       var GOPD = 'getOwnPropertyDescriptor';
-       var PIE = 'propertyIsEnumerable';
-       var ObjectProto = Object.prototype;
-       var hOP = ObjectProto.hasOwnProperty;
-       var pIE = ObjectProto[PIE];
-       var toString = ObjectProto.toString;
-       var concat = Array.prototype.concat;
-       var cachedWindowNames = Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
-       var nGOPN = Object[GOPN];
-       var gOPN = function getOwnPropertyNames (obj) {
-               if (toString.call(obj) === '[object Window]') {
-                       try {
-                               return nGOPN(obj);
-                       } catch (e) {
-                               // IE bug where layout engine calls userland gOPN for cross-domain `window` objects
-                               return concat.call([], cachedWindowNames);
-                       }
-               }
-               return nGOPN(obj);
-       };
-       var gOPD = Object[GOPD];
-       var create = Object.create;
-       var keys = Object.keys;
-       var freeze = Object.freeze || Object;
-       var defineProperty = Object[DP];
-       var $defineProperties = Object[DPies];
-       var descriptor = gOPD(Object, GOPN);
-       var addInternalIfNeeded = function (o, uid, enumerable) {
-               if (!hOP.call(o, internalSymbol)) {
-                       try {
-                               defineProperty(o, internalSymbol, {
-                                       enumerable: false,
-                                       configurable: false,
-                                       writable: false,
-                                       value: {}
-                               });
-                       } catch (e) {
-                               o[internalSymbol] = {};
-                       }
-               }
-               o[internalSymbol]['@@' + uid] = enumerable;
-       };
-       var createWithSymbols = function (proto, descriptors) {
-               var self = create(proto);
-               gOPN(descriptors).forEach(function (key) {
-                       if (propertyIsEnumerable.call(descriptors, key)) {
-                               $defineProperty(self, key, descriptors[key]);
-                       }
-               });
-               return self;
-       };
-       var copyAsNonEnumerable = function (descriptor) {
-               var newDescriptor = create(descriptor);
-               newDescriptor.enumerable = false;
-               return newDescriptor;
-       };
-       var get = function get(){};
-       var onlyNonSymbols = function (name) {
-               return name != internalSymbol &&
-                       !hOP.call(source, name);
-       };
-       var onlySymbols = function (name) {
-               return name != internalSymbol &&
-                       hOP.call(source, name);
-       };
-       var propertyIsEnumerable = function propertyIsEnumerable(key) {
-               var uid = '' + key;
-               return onlySymbols(uid) ? (
-                       hOP.call(this, uid) &&
-                       this[internalSymbol]['@@' + uid]
-               ) : pIE.call(this, key);
-       };
-       var setAndGetSymbol = function (uid) {
-               var descriptor = {
-                       enumerable: false,
-                       configurable: true,
-                       get: get,
-                       set: function (value) {
-                       setDescriptor(this, uid, {
-                               enumerable: false,
-                               configurable: true,
-                               writable: true,
-                               value: value
-                       });
-                       addInternalIfNeeded(this, uid, true);
-                       }
-               };
-               try {
-                       defineProperty(ObjectProto, uid, descriptor);
-               } catch (e) {
-                       ObjectProto[uid] = descriptor.value;
-               }
-               return freeze(source[uid] = defineProperty(
-                       Object(uid),
-                       'constructor',
-                       sourceConstructor
-               ));
-       };
-       var Symbol = function Symbol() {
-               var description = arguments[0];
-               if (this instanceof Symbol) {
-                       throw new TypeError('Symbol is not a constructor');
-               }
-               return setAndGetSymbol(
-                       prefix.concat(description || '', random, ++id)
-               );
-               };
-       var source = create(null);
-       var sourceConstructor = {value: Symbol};
-       var sourceMap = function (uid) {
-               return source[uid];
-               };
-       var $defineProperty = function defineProp(o, key, descriptor) {
-               var uid = '' + key;
-               if (onlySymbols(uid)) {
-                       setDescriptor(o, uid, descriptor.enumerable ?
-                               copyAsNonEnumerable(descriptor) : descriptor);
-                       addInternalIfNeeded(o, uid, !!descriptor.enumerable);
-               } else {
-                       defineProperty(o, key, descriptor);
-               }
-               return o;
-       };
-
-       var onlyInternalSymbols = function (obj) {
-               return function (name) {
-                       return hOP.call(obj, internalSymbol) && hOP.call(obj[internalSymbol], '@@' + name);
-               };
-       };
-       var $getOwnPropertySymbols = function getOwnPropertySymbols(o) {
-               return gOPN(o).filter(o === ObjectProto ? onlyInternalSymbols(o) : onlySymbols).map(sourceMap);
-               }
-       ;
-
-       descriptor.value = $defineProperty;
-       defineProperty(Object, DP, descriptor);
-
-       descriptor.value = $getOwnPropertySymbols;
-       defineProperty(Object, GOPS, descriptor);
-
-       descriptor.value = function getOwnPropertyNames(o) {
-               return gOPN(o).filter(onlyNonSymbols);
-       };
-       defineProperty(Object, GOPN, descriptor);
-
-       descriptor.value = function defineProperties(o, descriptors) {
-               var symbols = $getOwnPropertySymbols(descriptors);
-               if (symbols.length) {
-               keys(descriptors).concat(symbols).forEach(function (uid) {
-                       if (propertyIsEnumerable.call(descriptors, uid)) {
-                       $defineProperty(o, uid, descriptors[uid]);
-                       }
-               });
-               } else {
-               $defineProperties(o, descriptors);
-               }
-               return o;
-       };
-       defineProperty(Object, DPies, descriptor);
-
-       descriptor.value = propertyIsEnumerable;
-       defineProperty(ObjectProto, PIE, descriptor);
-
-       descriptor.value = Symbol;
-       defineProperty(global, 'Symbol', descriptor);
-
-       // defining `Symbol.for(key)`
-       descriptor.value = function (key) {
-               var uid = prefix.concat(prefix, key, random);
-               return uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);
-       };
-       defineProperty(Symbol, 'for', descriptor);
-
-       // defining `Symbol.keyFor(symbol)`
-       descriptor.value = function (symbol) {
-               if (onlyNonSymbols(symbol))
-               throw new TypeError(symbol + ' is not a symbol');
-               return hOP.call(source, symbol) ?
-               symbol.slice(prefixLength * 2, -random.length) :
-               void 0
-               ;
-       };
-       defineProperty(Symbol, 'keyFor', descriptor);
-
-       descriptor.value = function getOwnPropertyDescriptor(o, key) {
-               var descriptor = gOPD(o, key);
-               if (descriptor && onlySymbols(key)) {
-               descriptor.enumerable = propertyIsEnumerable.call(o, key);
-               }
-               return descriptor;
-       };
-       defineProperty(Object, GOPD, descriptor);
-
-       descriptor.value = function (proto, descriptors) {
-               return arguments.length === 1 || typeof descriptors === "undefined" ?
-               create(proto) :
-               createWithSymbols(proto, descriptors);
-       };
-       defineProperty(Object, 'create', descriptor);
-
-       var strictModeSupported = (function(){ 'use strict'; return this; }).call(null) === null;
-       if (strictModeSupported) {
-               descriptor.value = function () {
-                       var str = toString.call(this);
-                       return (str === '[object String]' && onlySymbols(this)) ? '[object Symbol]' : str;
-               };
-       } else {
-               descriptor.value = function () {
-                       // https://github.com/Financial-Times/polyfill-library/issues/164#issuecomment-486965300
-                       // Polyfill.io this code is here for the situation where a browser does not
-                       // support strict mode and is executing `Object.prototype.toString.call(null)`.
-                       // This code ensures that we return the correct result in that situation however,
-                       // this code also introduces a bug where it will return the incorrect result for
-                       // `Object.prototype.toString.call(window)`. We can't have the correct result for
-                       // both `window` and `null`, so we have opted for `null` as we believe this is the more 
-                       // common situation. 
-                       if (this === window) {
-                               return '[object Null]';
-                       }
-
-                       var str = toString.call(this);
-                       return (str === '[object String]' && onlySymbols(this)) ? '[object Symbol]' : str;
-               };
-       }
-       defineProperty(ObjectProto, 'toString', descriptor);
-
-       setDescriptor = function (o, key, descriptor) {
-               var protoDescriptor = gOPD(ObjectProto, key);
-               delete ObjectProto[key];
-               defineProperty(o, key, descriptor);
-               if (o !== ObjectProto) {
-                       defineProperty(ObjectProto, key, protoDescriptor);
-               }
-       };
-
-}(Object, 'getOwnPropertySymbols', this));
-
-}
-
-if (!("Symbol"in this&&"hasInstance"in this.Symbol
-)) {
-
-// Symbol.hasInstance
-/* global Symbol */
-Object.defineProperty(Symbol, 'hasInstance', { value: Symbol('hasInstance') });
-
-}
-
-if (!("Symbol"in this&&"isConcatSpreadable"in this.Symbol
-)) {
-
-// Symbol.isConcatSpreadable
-/* global Symbol */
-Object.defineProperty(Symbol, 'isConcatSpreadable', { value: Symbol('isConcatSpreadable') });
-
-}
-
-if (!("Symbol"in this&&"iterator"in this.Symbol
-)) {
-
-// Symbol.iterator
-/* global Symbol */
-Object.defineProperty(Symbol, 'iterator', { value: Symbol('iterator') });
-
-}
-
-
-// _ESAbstract.GetIterator
-/* global GetMethod, Symbol, Call, Type, GetV */
-// 7.4.1. GetIterator ( obj [ , method ] )
-// The abstract operation GetIterator with argument obj and optional argument method performs the following steps:
-function GetIterator(obj /*, method */) { // eslint-disable-line no-unused-vars
-       // 1. If method is not present, then
-               // a. Set method to ? GetMethod(obj, @@iterator).
-       var method = arguments.length > 1 ? arguments[1] : GetMethod(obj, Symbol.iterator);
-       // 2. Let iterator be ? Call(method, obj).
-       var iterator = Call(method, obj);
-       // 3. If Type(iterator) is not Object, throw a TypeError exception.
-       if (Type(iterator) !== 'object') {
-               throw new TypeError('bad iterator');
-       }
-       // 4. Let nextMethod be ? GetV(iterator, "next").
-       var nextMethod = GetV(iterator, "next");
-       // 5. Let iteratorRecord be Record {[[Iterator]]: iterator, [[NextMethod]]: nextMethod, [[Done]]: false}.
-       var iteratorRecord = Object.create(null);
-       iteratorRecord['[[Iterator]]'] = iterator;
-       iteratorRecord['[[NextMethod]]'] = nextMethod;
-       iteratorRecord['[[Done]]'] = false;
-       // 6. Return iteratorRecord.
-       return iteratorRecord;
-}
-if (!("Symbol"in this&&"match"in this.Symbol
-)) {
-
-// Symbol.match
-/* global Symbol */
-Object.defineProperty(Symbol, 'match', { value: Symbol('match') });
-
-}
-
-if (!("Symbol"in this&&"replace"in this.Symbol
-)) {
-
-// Symbol.replace
-/* global Symbol */
-Object.defineProperty(Symbol, 'replace', { value: Symbol('replace') });
-
-}
-
-if (!("Symbol"in this&&"search"in this.Symbol
-)) {
-
-// Symbol.search
-/* global Symbol */
-Object.defineProperty(Symbol, 'search', { value: Symbol('search') });
-
-}
-
-if (!("Symbol"in this&&"species"in this.Symbol
-)) {
-
-// Symbol.species
-/* global Symbol */
-Object.defineProperty(Symbol, 'species', { value: Symbol('species') });
-
-}
-
-if (!("Map"in this&&function(t){try{var n=new Map([[1,1],[2,2]])
-return 0===Map.length&&2===n.size&&"Symbol"in t&&"iterator"in Symbol&&"function"==typeof n[Symbol.iterator]}catch(i){return!1}}(this)
-)) {
-
-// Map
-/* global CreateIterResultObject, CreateMethodProperty, GetIterator, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Type, Symbol */
-(function (global) {
-       var supportsGetters = (function () {
-               try {
-                       var a = {};
-                       Object.defineProperty(a, 't', {
-                               configurable: true,
-                               enumerable: false,
-                               get: function () {
-                                       return true;
-                               },
-                               set: undefined
-                       });
-                       return !!a.t;
-               } catch (e) {
-                       return false;
-               }
-       }());
-
-       // Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
-       var undefMarker = Symbol('undef');
-       // 23.1.1.1 Map ( [ iterable ] )
-       var Map = function Map(/* iterable */) {
-               // 1. If NewTarget is undefined, throw a TypeError exception.
-               if (!(this instanceof Map)) {
-                       throw new TypeError('Constructor Map requires "new"');
-               }
-               // 2. Let map be ? OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", « [[MapData]] »).
-               var map = OrdinaryCreateFromConstructor(this, Map.prototype, {
-                       _keys: [],
-                       _values: [],
-                       _size: 0,
-                       _es6Map: true
-               });
-
-               // 3. Set map.[[MapData]] to a new empty List.
-               // Polyfill.io - This step was done as part of step two.
-
-               // Some old engines do not support ES5 getters/setters.  Since Map only requires these for the size property, we can fall back to setting the size property statically each time the size of the map changes.
-               if (!supportsGetters) {
-                       Object.defineProperty(map, 'size', {
-                               configurable: true,
-                               enumerable: false,
-                               writable: true,
-                               value: 0
-                       });
-               }
-
-               // 4. If iterable is not present, let iterable be undefined.
-               var iterable = arguments.length > 0 ? arguments[0] : undefined;
-
-               // 5. If iterable is either undefined or null, return map.
-               if (iterable === null || iterable === undefined) {
-                       return map;
-               }
-
-               // 6. Let adder be ? Get(map, "set").
-               var adder = map.set;
-
-               // 7. If IsCallable(adder) is false, throw a TypeError exception.
-               if (!IsCallable(adder)) {
-                       throw new TypeError("Map.prototype.set is not a function");
-               }
-
-               // 8. Let iteratorRecord be ? GetIterator(iterable).
-               try {
-                       var iteratorRecord = GetIterator(iterable);
-                       // 9. Repeat,
-                       while (true) {
-                               // a. Let next be ? IteratorStep(iteratorRecord).
-                               var next = IteratorStep(iteratorRecord);
-                               // b. If next is false, return map.
-                               if (next === false) {
-                                       return map;
-                               }
-                               // c. Let nextItem be ? IteratorValue(next).
-                               var nextItem = IteratorValue(next);
-                               // d. If Type(nextItem) is not Object, then
-                               if (Type(nextItem) !== 'object') {
-                                       // i. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
-                                       try {
-                                               throw new TypeError('Iterator value ' + nextItem + ' is not an entry object');
-                                       } catch (error) {
-                                               // ii. Return ? IteratorClose(iteratorRecord, error).
-                                               return IteratorClose(iteratorRecord, error);
-                                       }
-                               }
-                               try {
-                                       // Polyfill.io - The try catch accounts for steps: f, h, and j.
-
-                                       // e. Let k be Get(nextItem, "0").
-                                       var k = nextItem[0];
-                                       // f. If k is an abrupt completion, return ? IteratorClose(iteratorRecord, k).
-                                       // g. Let v be Get(nextItem, "1").
-                                       var v = nextItem[1];
-                                       // h. If v is an abrupt completion, return ? IteratorClose(iteratorRecord, v).
-                                       // i. Let status be Call(adder, map, « k.[[Value]], v.[[Value]] »).
-                                       adder.call(map, k, v);
-                               } catch (e) {
-                                       // j. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
-                                       return IteratorClose(iteratorRecord, e);
-                               }
-                       }
-               } catch (e) {
-                       // Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
-                       if (Array.isArray(iterable) ||
-                               Object.prototype.toString.call(iterable) === '[object Arguments]' ||
-                               // IE 7 & IE 8 return '[object Object]' for the arguments object, we can detect by checking for the existence of the callee property
-                               (!!iterable.callee)) {
-                               var index;
-                               var length = iterable.length;
-                               for (index = 0; index < length; index++) {
-                                       adder.call(map, iterable[index][0], iterable[index][1]);
-                               }
-                       }
-               }
-               return map;
-       };
-
-       // 23.1.2.1. Map.prototype
-       // The initial value of Map.prototype is the intrinsic object %MapPrototype%.
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-       Object.defineProperty(Map, 'prototype', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: {}
-       });
-
-       // 23.1.2.2 get Map [ @@species ]
-       if (supportsGetters) {
-               Object.defineProperty(Map, Symbol.species, {
-                       configurable: true,
-                       enumerable: false,
-                       get: function () {
-                               // 1. Return the this value.
-                               return this;
-                       },
-                       set: undefined
-               });
-       } else {
-               CreateMethodProperty(Map, Symbol.species, Map);
-       }
-
-       // 23.1.3.1 Map.prototype.clear ( )
-       CreateMethodProperty(Map.prototype, 'clear', function clear() {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (Type(M) !== 'object') {
-                               throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // 5.a. Set p.[[Key]] to empty.
-                               M._keys[i] = undefMarker;
-                               // 5.b. Set p.[[Value]] to empty.
-                               M._values[i] = undefMarker;
-                       }
-                       this._size = 0;
-                       if (!supportsGetters) {
-                               this.size = this._size;
-                       }
-                       // 6. Return undefined.
-                       return undefined;
-               }
-       );
-
-       // 23.1.3.2. Map.prototype.constructor
-       CreateMethodProperty(Map.prototype, 'constructor', Map);
-
-       // 23.1.3.3. Map.prototype.delete ( key )
-       CreateMethodProperty(Map.prototype, 'delete', function (key) {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (Type(M) !== 'object') {
-                               throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, then
-                               if (M._keys[i] !== undefMarker && SameValueZero(M._keys[i], key)) {
-                                       // i. Set p.[[Key]] to empty.
-                                       this._keys[i] = undefMarker;
-                                       // ii. Set p.[[Value]] to empty.
-                                       this._values[i] = undefMarker;
-                                       this._size = --this._size;
-                                       if (!supportsGetters) {
-                                               this.size = this._size;
-                                       }
-                                       // iii. Return true.
-                                       return true;
-                               }
-                       }
-                       // 6. Return false.
-                       return false;
-               }
-       );
-
-       // 23.1.3.4. Map.prototype.entries ( )
-       CreateMethodProperty(Map.prototype, 'entries', function entries () {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. Return ? CreateMapIterator(M, "key+value").
-                       return CreateMapIterator(M, 'key+value');
-               }
-       );
-
-       // 23.1.3.5. Map.prototype.forEach ( callbackfn [ , thisArg ] )
-       CreateMethodProperty(Map.prototype, 'forEach', function (callbackFn) {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (Type(M) !== 'object') {
-                               throw new TypeError('Method Map.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
-                       if (!IsCallable(callbackFn)) {
-                               throw new TypeError(Object.prototype.toString.call(callbackFn) + ' is not a function.');
-                       }
-                       // 5. If thisArg is present, let T be thisArg; else let T be undefined.
-                       if (arguments[1]) {
-                               var T = arguments[1];
-                       }
-                       // 6. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 7. For each Record {[[Key]], [[Value]]} e that is an element of entries, in original key insertion order, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. If e.[[Key]] is not empty, then
-                               if (M._keys[i] !== undefMarker && M._values[i] !== undefMarker ) {
-                                       // i. Perform ? Call(callbackfn, T, « e.[[Value]], e.[[Key]], M »).
-                                       callbackFn.call(T, M._values[i], M._keys[i], M);
-                               }
-                       }
-                       // 8. Return undefined.
-                       return undefined;
-               }
-       );
-
-       // 23.1.3.6. Map.prototype.get ( key )
-       CreateMethodProperty(Map.prototype, 'get', function get(key) {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (Type(M) !== 'object') {
-                               throw new TypeError('Method Map.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, return p.[[Value]].
-                               if (M._keys[i] !== undefMarker && SameValueZero(M._keys[i], key)) {
-                                       return M._values[i];
-                               }
-                       }
-                       // 6. Return undefined.
-                       return undefined;
-               });
-
-       // 23.1.3.7. Map.prototype.has ( key )
-       CreateMethodProperty(Map.prototype, 'has', function has (key) {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (typeof M !== 'object') {
-                               throw new TypeError('Method Map.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, return true.
-                               if (M._keys[i] !== undefMarker && SameValueZero(M._keys[i], key)) {
-                                       return true;
-                               }
-                       }
-                       // 6. Return false.
-                       return false;
-               });
-
-       // 23.1.3.8. Map.prototype.keys ( )
-       CreateMethodProperty(Map.prototype, 'keys', function keys () {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. Return ? CreateMapIterator(M, "key").
-                       return CreateMapIterator(M, "key");
-               });
-
-       // 23.1.3.9. Map.prototype.set ( key, value )
-       CreateMethodProperty(Map.prototype, 'set', function set(key, value) {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. If Type(M) is not Object, throw a TypeError exception.
-                       if (Type(M) !== 'object') {
-                               throw new TypeError('Method Map.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                       if (M._es6Map !== true) {
-                               throw new TypeError('Method Map.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
-                       }
-                       // 4. Let entries be the List that is M.[[MapData]].
-                       var entries = M._keys;
-                       // 5. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. If p.[[Key]] is not empty and SameValueZero(p.[[Key]], key) is true, then
-                               if (M._keys[i] !== undefMarker && SameValueZero(M._keys[i], key)) {
-                                       // i. Set p.[[Value]] to value.
-                                       M._values[i] = value;
-                                       // Return M.
-                                       return M;
-                               }
-                       }
-                       // 6. If key is -0, let key be +0.
-                       if (key === -0) {
-                               key = 0;
-                       }
-                       // 7. Let p be the Record {[[Key]]: key, [[Value]]: value}.
-                       var p = {};
-                       p['[[Key]]'] = key;
-                       p['[[Value]]'] = value;
-                       // 8. Append p as the last element of entries.
-                       M._keys.push(p['[[Key]]']);
-                       M._values.push(p['[[Value]]']);
-                       ++M._size;
-                       if (!supportsGetters) {
-                               M.size = M._size;
-                       }
-                       // 9. Return M.
-                       return M;
-               });
-
-       // 23.1.3.10. get Map.prototype.size
-       if (supportsGetters) {
-               Object.defineProperty(Map.prototype, 'size', {
-                       configurable: true,
-                       enumerable: false,
-                       get: function () {
-                               // 1. Let M be the this value.
-                               var M = this;
-                               // 2. If Type(M) is not Object, throw a TypeError exception.
-                               if (Type(M) !== 'object') {
-                                       throw new TypeError('Method Map.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(M));
-                               }
-                               // 3. If M does not have a [[MapData]] internal slot, throw a TypeError exception.
-                               if (M._es6Map !== true) {
-                                       throw new TypeError('Method Map.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(M));
-                               }
-                               // 4. Let entries be the List that is M.[[MapData]].
-                               var entries = M._keys;
-                               // 5. Let count be 0.
-                               var count = 0;
-                               // 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-                               for (var i = 0; i < entries.length; i++) {
-                                       // a. If p.[[Key]] is not empty, set count to count+1.
-                                       if (M._keys[i] !== undefMarker) {
-                                               count = count + 1;
-                                       }
-                               }
-                               // 7. Return count.
-                               return count;
-                       },
-                       set: undefined
-               });
-       }
-
-       // 23.1.3.11. Map.prototype.values ( )
-       CreateMethodProperty(Map.prototype, 'values', function values () {
-                       // 1. Let M be the this value.
-                       var M = this;
-                       // 2. Return ? CreateMapIterator(M, "value").
-                       return CreateMapIterator(M, 'value');
-               }
-       );
-
-       // 23.1.3.12. Map.prototype [ @@iterator ] ( )
-       // The initial value of the @@iterator property is the same function object as the initial value of the entries property.
-       CreateMethodProperty(Map.prototype, Symbol.iterator, Map.prototype.entries);
-
-       // 23.1.3.13. Map.prototype [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "Map".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       // Polyfill.io - Safari 8 implements Map.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
-       if (!('name' in Map)) {
-               // 19.2.4.2 name
-               Object.defineProperty(Map, 'name', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: false,
-                       value: 'Map'
-               });
-       }
-
-       // 23.1.5.1. CreateMapIterator ( map, kind )
-       function CreateMapIterator(map, kind) {
-               // 1. If Type(map) is not Object, throw a TypeError exception.
-               if (Type(map) !== 'object') {
-                       throw new TypeError('createMapIterator called on incompatible receiver ' + Object.prototype.toString.call(map));
-               }
-               // 2. If map does not have a [[MapData]] internal slot, throw a TypeError exception.
-               if (map._es6Map !== true) {
-                       throw new TypeError('createMapIterator called on incompatible receiver ' + Object.prototype.toString.call(map));
-               }
-               // 3. Let iterator be ObjectCreate(%MapIteratorPrototype%, « [[Map]], [[MapNextIndex]], [[MapIterationKind]] »).
-               var iterator = Object.create(MapIteratorPrototype);
-               // 4. Set iterator.[[Map]] to map.
-               Object.defineProperty(iterator, '[[Map]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: map
-               });
-               // 5. Set iterator.[[MapNextIndex]] to 0.
-               Object.defineProperty(iterator, '[[MapNextIndex]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: 0
-               });
-               // 6. Set iterator.[[MapIterationKind]] to kind.
-               Object.defineProperty(iterator, '[[MapIterationKind]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: kind
-               });
-               // 7. Return iterator.
-               return iterator;
-       }
-
-       // 23.1.5.2. The %MapIteratorPrototype% Object
-       var MapIteratorPrototype = {};
-       // Polyfill.io - We use this as a quick way to check if an object is a Map Iterator instance.
-       Object.defineProperty(MapIteratorPrototype, 'isMapIterator', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: true
-       });
-
-       // 23.1.5.2.1. %MapIteratorPrototype%.next ( )
-       CreateMethodProperty(MapIteratorPrototype, 'next', function next() {
-                       // 1. Let O be the this value.
-                       var O = this;
-                       // 2. If Type(O) is not Object, throw a TypeError exception.
-                       if (Type(O) !== 'object') {
-                               throw new TypeError('Method %MapIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
-                       }
-                       // 3. If O does not have all of the internal slots of a Map Iterator Instance (23.1.5.3), throw a TypeError exception.
-                       if (!O.isMapIterator) {
-                               throw new TypeError('Method %MapIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
-                       }
-                       // 4. Let m be O.[[Map]].
-                       var m = O['[[Map]]'];
-                       // 5. Let index be O.[[MapNextIndex]].
-                       var index = O['[[MapNextIndex]]'];
-                       // 6. Let itemKind be O.[[MapIterationKind]].
-                       var itemKind = O['[[MapIterationKind]]'];
-                       // 7. If m is undefined, return CreateIterResultObject(undefined, true).
-                       if (m === undefined) {
-                               return CreateIterResultObject(undefined, true);
-                       }
-                       // 8. Assert: m has a [[MapData]] internal slot.
-                       if (!m._es6Map) {
-                               throw new Error(Object.prototype.toString.call(m) + ' has a [[MapData]] internal slot.');
-                       }
-                       // 9. Let entries be the List that is m.[[MapData]].
-                       var entries = m._keys;
-                       // 10. Let numEntries be the number of elements of entries.
-                       var numEntries = entries.length;
-                       // 11. NOTE: numEntries must be redetermined each time this method is evaluated.
-                       // 12. Repeat, while index is less than numEntries,
-                       while (index < numEntries) {
-                               // a. Let e be the Record {[[Key]], [[Value]]} that is the value of entries[index].
-                               var e = Object.create(null);
-                               e['[[Key]]'] = m._keys[index];
-                               e['[[Value]]'] = m._values[index];
-                               // b. Set index to index+1.
-                               index = index + 1;
-                               // c. Set O.[[MapNextIndex]] to index.
-                               O['[[MapNextIndex]]'] = index;
-                               // d. If e.[[Key]] is not empty, then
-                               if (e['[[Key]]'] !== undefMarker) {
-                                       // i. If itemKind is "key", let result be e.[[Key]].
-                                       if (itemKind === 'key') {
-                                               var result = e['[[Key]]'];
-                                               // ii. Else if itemKind is "value", let result be e.[[Value]].
-                                       } else if (itemKind === 'value') {
-                                               result = e['[[Value]]'];
-                                               // iii. Else,
-                                       } else {
-                                               // 1. Assert: itemKind is "key+value".
-                                               if (itemKind !== 'key+value') {
-                                                       throw new Error();
-                                               }
-                                               // 2. Let result be CreateArrayFromList(« e.[[Key]], e.[[Value]] »).
-                                               result = [
-                                                       e['[[Key]]'],
-                                                       e['[[Value]]']
-                                               ];
-                                       }
-                                       // iv. Return CreateIterResultObject(result, false).
-                                       return CreateIterResultObject(result, false);
-                               }
-                       }
-                       // 13. Set O.[[Map]] to undefined.
-                       O['[[Map]]'] = undefined;
-                       // 14. Return CreateIterResultObject(undefined, true).
-                       return CreateIterResultObject(undefined, true);
-               }
-       );
-
-       // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "Map Iterator".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       CreateMethodProperty(MapIteratorPrototype, Symbol.iterator, function iterator() {
-                       return this;
-               }
-       );
-
-       // Export the object
-       try {
-               CreateMethodProperty(global, 'Map', Map);
-       } catch (e) {
-               // IE8 throws an error here if we set enumerable to false.
-               // More info on table 2: https://msdn.microsoft.com/en-us/library/dd229916(v=vs.85).aspx
-               global['Map'] = Map;
-       }
-}(this));
-
-}
-
-if (!("Set"in this&&function(){try{var t=new Set([1,2])
-return 0===Set.length&&2===t.size&&"Symbol"in this&&"iterator"in Symbol&&"function"==typeof t[Symbol.iterator]}catch(e){return!1}}()
-)) {
-
-// Set
-/* global CreateIterResultObject, CreateMethodProperty, GetIterator, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Symbol */
-(function (global) {
-       var supportsGetters = (function () {
-               try {
-                       var a = {};
-                       Object.defineProperty(a, 't', {
-                               configurable: true,
-                               enumerable: false,
-                               get: function () {
-                                       return true;
-                               },
-                               set: undefined
-                       });
-                       return !!a.t;
-               } catch (e) {
-                       return false;
-               }
-       }());
-
-       // Deleted set items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
-       var undefMarker = Symbol('undef');
-       // 23.2.1.1. Set ( [ iterable ] )
-       var Set = function Set(/* iterable */) {
-               // 1. If NewTarget is undefined, throw a TypeError exception.
-               if (!(this instanceof Set)) {
-                       throw new TypeError('Constructor Set requires "new"');
-               }
-               // 2. Let set be ? OrdinaryCreateFromConstructor(NewTarget, "%SetPrototype%", « [[SetData]] »).
-               var set = OrdinaryCreateFromConstructor(this, Set.prototype, {
-                       _values: [],
-                       _size: 0,
-                       _es6Set: true
-               });
-
-               // 3. Set set.[[SetData]] to a new empty List.
-               // Polyfill.io - This step was done as part of step two.
-
-               // Some old engines do not support ES5 getters/setters.  Since Set only requires these for the size property, we can fall back to setting the size property statically each time the size of the set changes.
-               if (!supportsGetters) {
-                       Object.defineProperty(set, 'size', {
-                               configurable: true,
-                               enumerable: false,
-                               writable: true,
-                               value: 0
-                       });
-               }
-
-               // 4. If iterable is not present, let iterable be undefined.
-               var iterable = arguments.length > 0 ? arguments[0] : undefined;
-
-               // 5. If iterable is either undefined or null, return set.
-               if (iterable === null || iterable === undefined) {
-                       return set;
-               }
-
-               // 6. Let adder be ? Get(set, "add").
-               var adder = set.add;
-               // 7. If IsCallable(adder) is false, throw a TypeError exception.
-               if (!IsCallable(adder)) {
-                       throw new TypeError("Set.prototype.add is not a function");
-               }
-
-               try {
-                       // 8. Let iteratorRecord be ? GetIterator(iterable).
-                       var iteratorRecord = GetIterator(iterable);
-                       // 9. Repeat,
-                       while (true) {
-                               // a. Let next be ? IteratorStep(iteratorRecord).
-                               var next = IteratorStep(iteratorRecord);
-                               // b. If next is false, return set.
-                               if (next === false) {
-                                       return set;
-                               }
-                               // c. Let nextValue be ? IteratorValue(next).
-                               var nextValue = IteratorValue(next);
-                               // d. Let status be Call(adder, set, « nextValue.[[Value]] »).
-                               try {
-                                       adder.call(set, nextValue);
-                               } catch (e) {
-                                       // e. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
-                                       return IteratorClose(iteratorRecord, e);
-                               }
-                       }
-               } catch (e) {
-                       // Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
-                       if (Array.isArray(iterable) ||
-                               Object.prototype.toString.call(iterable) === '[object Arguments]' ||
-                               // IE 7 & IE 8 return '[object Object]' for the arguments object, we can detect by checking for the existence of the callee property
-                               (!!iterable.callee)) {
-                               var index;
-                               var length = iterable.length;
-                               for (index = 0; index < length; index++) {
-                                       adder.call(set, iterable[index]);
-                               }
-                       } else {
-                               throw (e);
-                       }
-               }
-               return set;
-       };
-
-       // 23.2.2.1. Set.prototype
-       // The initial value of Set.prototype is the intrinsic %SetPrototype% object.
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-       Object.defineProperty(Set, 'prototype', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: {}
-       });
-
-       // 23.2.2.2 get Set [ @@species ]
-       if (supportsGetters) {
-               Object.defineProperty(Set, Symbol.species, {
-                       configurable: true,
-                       enumerable: false,
-                       get: function () {
-                               // 1. Return the this value.
-                               return this;
-                       },
-                       set: undefined
-               });
-       } else {
-               CreateMethodProperty(Set, Symbol.species, Set);
-       }
-
-       // 23.2.3.1. Set.prototype.add ( value )
-       CreateMethodProperty(Set.prototype, 'add', function add(value) {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. If Type(S) is not Object, throw a TypeError exception.
-                       if (typeof S !== 'object') {
-                               throw new TypeError('Method Set.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                       if (S._es6Set !== true) {
-                               throw new TypeError('Method Set.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 4. Let entries be the List that is S.[[SetData]].
-                       var entries = S._values;
-                       // 5. For each e that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               var e = entries[i];
-                               // a. If e is not empty and SameValueZero(e, value) is true, then
-                               if (e !== undefMarker && SameValueZero(e, value)) {
-                                       // i. Return S.
-                                       return S;
-                               }
-                       }
-                       // 6. If value is -0, let value be +0.
-                       if (1/value === -Infinity) {
-                               value = 0;
-                       }
-                       // 7. Append value as the last element of entries.
-                       S._values.push(value);
-
-                       this._size = ++this._size;
-                       if (!supportsGetters) {
-                               this.size = this._size;
-                       }
-                       // 8. Return S.
-                       return S;
-               });
-
-       // 23.2.3.2. Set.prototype.clear ( )
-       CreateMethodProperty(Set.prototype, 'clear', function clear() {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. If Type(S) is not Object, throw a TypeError exception.
-                       if (typeof S !== 'object') {
-                               throw new TypeError('Method Set.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                       if (S._es6Set !== true) {
-                               throw new TypeError('Method Set.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 4. Let entries be the List that is S.[[SetData]].
-                       var entries = S._values;
-                       // 5. For each e that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               // a. Replace the element of entries whose value is e with an element whose value is empty.
-                               entries[i] = undefMarker;
-                       }
-                       this._size = 0;
-                       if (!supportsGetters) {
-                               this.size = this._size;
-                       }
-                       // 6. Return undefined.
-                       return undefined;
-               });
-
-       // 23.2.3.3. Set.prototype.constructor
-       CreateMethodProperty(Set.prototype, 'constructor', Set);
-
-       // 23.2.3.4. Set.prototype.delete ( value )
-       CreateMethodProperty(Set.prototype, 'delete', function (value) {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. If Type(S) is not Object, throw a TypeError exception.
-                       if (typeof S !== 'object') {
-                               throw new TypeError('Method Set.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                       if (S._es6Set !== true) {
-                               throw new TypeError('Method Set.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 4. Let entries be the List that is S.[[SetData]].
-                       var entries = S._values;
-                       // 5. For each e that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               var e = entries[i];
-                               // a. If e is not empty and SameValueZero(e, value) is true, then
-                               if (e !== undefMarker && SameValueZero(e, value)) {
-                                       // i. Replace the element of entries whose value is e with an element whose value is empty.
-                                       entries[i] = undefMarker;
-
-                                       this._size = --this._size;
-                                       if (!supportsGetters) {
-                                               this.size = this._size;
-                                       }
-                                       // ii. Return true.
-                                       return true;
-                               }
-                       }
-                       // 6. Return false.
-                       return false;
-               }
-       );
-
-       // 23.2.3.5. Set.prototype.entries ( )
-       CreateMethodProperty(Set.prototype, 'entries', function entries() {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. Return ? CreateSetIterator(S, "key+value").
-                       return CreateSetIterator(S, 'key+value');
-               }
-       );
-
-       // 23.2.3.6. Set.prototype.forEach ( callbackfn [ , thisArg ] )
-       CreateMethodProperty(Set.prototype, 'forEach', function forEach(callbackFn /*[ , thisArg ]*/) {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. If Type(S) is not Object, throw a TypeError exception.
-                       if (typeof S !== 'object') {
-                               throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                       if (S._es6Set !== true) {
-                               throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
-                       if (!IsCallable(callbackFn)) {
-                               throw new TypeError(Object.prototype.toString.call(callbackFn) + ' is not a function.');
-                       }
-                       // 5. If thisArg is present, let T be thisArg; else let T be undefined.
-                       if (arguments[1]) {
-                               var T = arguments[1];
-                       }
-                       // 6. Let entries be the List that is S.[[SetData]].
-                       var entries = S._values;
-                       // 7. For each e that is an element of entries, in original insertion order, do
-                       for (var i = 0; i < entries.length; i++) {
-                               var e = entries[i];
-                               // a. If e is not empty, then
-                               if (e !== undefMarker) {
-                                       // i. Perform ? Call(callbackfn, T, « e, e, S »).
-                                       callbackFn.call(T, e, e, S);
-                               }
-                       }
-                       // 8. Return undefined.
-                       return undefined;
-               }
-       );
-
-       // 23.2.3.7. Set.prototype.has ( value )
-       CreateMethodProperty(Set.prototype, 'has', function has(value) {
-                       // 1. Let S be the this value.
-                       var S = this;
-                       // 2. If Type(S) is not Object, throw a TypeError exception.
-                       if (typeof S !== 'object') {
-                               throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                       if (S._es6Set !== true) {
-                               throw new TypeError('Method Set.prototype.forEach called on incompatible receiver ' + Object.prototype.toString.call(S));
-                       }
-                       // 4. Let entries be the List that is S.[[SetData]].
-                       var entries = S._values;
-                       // 5. For each e that is an element of entries, do
-                       for (var i = 0; i < entries.length; i++) {
-                               var e = entries[i];
-                               // a. If e is not empty and SameValueZero(e, value) is true, return true.
-                               if (e !== undefMarker && SameValueZero(e, value)) {
-                                       return true;
-                               }
-                       }
-                       // 6. Return false.
-                       return false;
-               }
-       );
-
-       // Polyfill.io - We need to define Set.prototype.values before Set.prototype.keys because keys is a reference to values.
-       // 23.2.3.10. Set.prototype.values()
-       var values = function values() {
-               // 1. Let S be the this value.
-               var S = this;
-               // 2. Return ? CreateSetIterator(S, "value").
-               return CreateSetIterator(S, "value");
-       };
-       CreateMethodProperty(Set.prototype, 'values', values);
-
-       // 23.2.3.8 Set.prototype.keys ( )
-       // The initial value of the keys property is the same function object as the initial value of the values property.
-       CreateMethodProperty(Set.prototype, 'keys', values);
-
-       // 23.2.3.9. get Set.prototype.size
-       if (supportsGetters) {
-               Object.defineProperty(Set.prototype, 'size', {
-                       configurable: true,
-                       enumerable: false,
-                       get: function () {
-                               // 1. Let S be the this value.
-                               var S = this;
-                               // 2. If Type(S) is not Object, throw a TypeError exception.
-                               if (typeof S !== 'object') {
-                                       throw new TypeError('Method Set.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(S));
-                               }
-                               // 3. If S does not have a [[SetData]] internal slot, throw a TypeError exception.
-                               if (S._es6Set !== true) {
-                                       throw new TypeError('Method Set.prototype.size called on incompatible receiver ' + Object.prototype.toString.call(S));
-                               }
-                               // 4. Let entries be the List that is S.[[SetData]].
-                               var entries = S._values;
-                               // 5. Let count be 0.
-                               var count = 0;
-                               // 6. For each e that is an element of entries, do
-                               for (var i = 0; i < entries.length; i++) {
-                                       var e = entries[i];
-                                       // a. If e is not empty, set count to count+1.
-                                       if (e !== undefMarker) {
-                                               count = count + 1;
-                                       }
-                               }
-                               // 7. Return count.
-                               return count;
-                       },
-                       set: undefined
-               });
-       }
-
-       // 23.2.3.11. Set.prototype [ @@iterator ] ( )
-       // The initial value of the @@iterator property is the same function object as the initial value of the values property.
-       CreateMethodProperty(Set.prototype, Symbol.iterator, values);
-
-       // 23.2.3.12. Set.prototype [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "Set".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       // Polyfill.io - Safari 8 implements Set.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
-       if (!('name' in Set)) {
-               // 19.2.4.2 name
-               Object.defineProperty(Set, 'name', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: false,
-                       value: 'Set'
-               });
-       }
-
-       // 23.2.5.1. CreateSetIterator ( set, kind )
-       function CreateSetIterator(set, kind) {
-               // 1. If Type(set) is not Object, throw a TypeError exception.
-               if (typeof set !== 'object') {
-                       throw new TypeError('createSetIterator called on incompatible receiver ' + Object.prototype.toString.call(set));
-               }
-               // 2. If set does not have a [[SetData]] internal slot, throw a TypeError exception.
-               if (set._es6Set !== true) {
-                       throw new TypeError('createSetIterator called on incompatible receiver ' + Object.prototype.toString.call(set));
-               }
-               // 3. Let iterator be ObjectCreate(%SetIteratorPrototype%, « [[IteratedSet]], [[SetNextIndex]], [[SetIterationKind]] »).
-               var iterator = Object.create(SetIteratorPrototype);
-               // 4. Set iterator.[[IteratedSet]] to set.
-               Object.defineProperty(iterator, '[[IteratedSet]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: set
-               });
-               // 5. Set iterator.[[SetNextIndex]] to 0.
-               Object.defineProperty(iterator, '[[SetNextIndex]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: 0
-               });
-               // 6. Set iterator.[[SetIterationKind]] to kind.
-               Object.defineProperty(iterator, '[[SetIterationKind]]', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: true,
-                       value: kind
-               });
-               // 7. Return iterator.
-               return iterator;
-       }
-
-       // 23.2.5.2. The %SetIteratorPrototype% Object
-       var SetIteratorPrototype = {};
-       //Polyfill.io - We add this property to help us identify what is a set iterator.
-       Object.defineProperty(SetIteratorPrototype, 'isSetIterator', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: true
-       });
-
-       // 23.2.5.2.1. %SetIteratorPrototype%.next ( )
-       CreateMethodProperty(SetIteratorPrototype, 'next', function next() {
-               // 1. Let O be the this value.
-               var O = this;
-               // 2. If Type(O) is not Object, throw a TypeError exception.
-               if (typeof O !== 'object') {
-                       throw new TypeError('Method %SetIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
-               }
-               // 3. If O does not have all of the internal slots of a Set Iterator Instance (23.2.5.3), throw a TypeError exception.
-               if (!O.isSetIterator) {
-                       throw new TypeError('Method %SetIteratorPrototype%.next called on incompatible receiver ' + Object.prototype.toString.call(O));
-               }
-               // 4. Let s be O.[[IteratedSet]].
-               var s = O['[[IteratedSet]]'];
-               // 5. Let index be O.[[SetNextIndex]].
-               var index = O['[[SetNextIndex]]'];
-               // 6. Let itemKind be O.[[SetIterationKind]].
-               var itemKind = O['[[SetIterationKind]]'];
-               // 7. If s is undefined, return CreateIterResultObject(undefined, true).
-               if (s === undefined) {
-                       return CreateIterResultObject(undefined, true);
-               }
-               // 8. Assert: s has a [[SetData]] internal slot.
-               if (!s._es6Set) {
-                       throw new Error(Object.prototype.toString.call(s) + ' does not have [[SetData]] internal slot.');
-               }
-               // 9. Let entries be the List that is s.[[SetData]].
-               var entries = s._values;
-               // 10. Let numEntries be the number of elements of entries.
-               var numEntries = entries.length;
-               // 11. NOTE: numEntries must be redetermined each time this method is evaluated.
-               // 12. Repeat, while index is less than numEntries,
-               while (index < numEntries) {
-                       // a. Let e be entries[index].
-                       var e = entries[index];
-                       // b. Set index to index+1.
-                       index = index + 1;
-                       // c. Set O.[[SetNextIndex]] to index.
-                       O['[[SetNextIndex]]'] = index;
-                       // d. If e is not empty, then
-                       if (e !== undefMarker) {
-                               // i. If itemKind is "key+value", then
-                               if (itemKind === 'key+value') {
-                                       // 1. Return CreateIterResultObject(CreateArrayFromList(« e, e »), false).
-                                       return CreateIterResultObject([e, e], false);
-                               }
-                               // ii. Return CreateIterResultObject(e, false).
-                               return CreateIterResultObject(e, false);
-                       }
-               }
-               // 13. Set O.[[IteratedSet]] to undefined.
-               O['[[IteratedSet]]'] = undefined;
-               // 14. Return CreateIterResultObject(undefined, true).
-               return CreateIterResultObject(undefined, true);
-       });
-
-       // 23.2.5.2.2. %SetIteratorPrototype% [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "Set Iterator".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       CreateMethodProperty(SetIteratorPrototype, Symbol.iterator, function iterator() {
-                       return this;
-               }
-       );
-
-       // Export the object
-       try {
-               CreateMethodProperty(global, 'Set', Set);
-       } catch (e) {
-               // IE8 throws an error here if we set enumerable to false.
-               // More info on table 2: https://msdn.microsoft.com/en-us/library/dd229916(v=vs.85).aspx
-               global['Set'] = Set;
-       }
-
-}(this));
-
-}
-
-if (!("from"in Array&&function(){try{return Array.from({length:-Infinity}),!0}catch(r){return!1}}()
-)) {
-
-// Array.from
-/* globals
-       IsCallable, GetMethod, Symbol, IsConstructor, Construct, ArrayCreate, GetIterator, IteratorClose,
-       ToString, IteratorStep, IteratorValue, Call, CreateDataPropertyOrThrow, ToObject, ToLength, Get, CreateMethodProperty
-*/
-(function () {
-       var toString = Object.prototype.toString;
-       var stringMatch = String.prototype.match;
-       // A cross-realm friendly way to detect if a value is a String object or literal.
-       function isString(value) {
-               if (typeof value === 'string') { return true; }
-               if (typeof value !== 'object') { return false; }
-               return toString.call(value) === '[object String]';
-       }
-
-       // 22.1.2.1. Array.from ( items [ , mapfn [ , thisArg ] ] )
-       CreateMethodProperty(Array, 'from', function from(items /* [ , mapfn [ , thisArg ] ] */) { // eslint-disable-line no-undef
-               // 1. Let C be the this value.
-               var C = this;
-               // 2. If mapfn is undefined, let mapping be false.
-               var mapfn = arguments.length > 1 ? arguments[1] : undefined;
-               if (mapfn === undefined) {
-                       var mapping = false;
-                       // 3. Else,
-               } else {
-                       // a. If IsCallable(mapfn) is false, throw a TypeError exception.
-                       if (IsCallable(mapfn) === false) {
-                               throw new TypeError(Object.prototype.toString.call(mapfn) + ' is not a function.');
-                       }
-                       // b. If thisArg is present, let T be thisArg; else let T be undefined.
-                       var thisArg = arguments.length > 2 ? arguments[2] : undefined;
-                       if (thisArg !== undefined) {
-                               var T = thisArg;
-                       } else {
-                               T = undefined;
-                       }
-                       // c. Let mapping be true.
-                       mapping = true;
-
-               }
-               // 4. Let usingIterator be ? GetMethod(items, @@iterator).
-               var usingIterator = GetMethod(items, Symbol.iterator);
-               // 5. If usingIterator is not undefined, then
-               if (usingIterator !== undefined) {
-                       // a. If IsConstructor(C) is true, then
-                       if (IsConstructor(C)) {
-                               // i. Let A be ? Construct(C).
-                               var A = Construct(C);
-                               // b. Else,
-                       } else {
-                               // i. Let A be ! ArrayCreate(0).
-                               A = ArrayCreate(0);
-                       }
-                       // c. Let iteratorRecord be ? GetIterator(items, usingIterator).
-                       var iteratorRecord = GetIterator(items, usingIterator);
-                       // d. Let k be 0.
-                       var k = 0;
-                       // e. Repeat,
-                       while (true) {
-                               // i. If k ≥ 2^53-1, then
-                               if (k >= (Math.pow(2, 53) - 1)) {
-                                       // 1. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
-                                       var error = new TypeError('Iteration count can not be greater than or equal 9007199254740991.');
-                                       // 2. Return ? IteratorClose(iteratorRecord, error).
-                                       return IteratorClose(iteratorRecord, error);
-                               }
-                               // ii. Let Pk be ! ToString(k).
-                               var Pk = ToString(k);
-                               // iii. Let next be ? IteratorStep(iteratorRecord).
-                               var next = IteratorStep(iteratorRecord);
-                               // iv. If next is false, then
-                               if (next === false) {
-                                       // 1. Perform ? Set(A, "length", k, true).
-                                       A["length"] = k;
-                                       // 2. Return A.
-                                       return A;
-                               }
-                               // v. Let nextValue be ? IteratorValue(next).
-                               var nextValue = IteratorValue(next);
-                               // vi. If mapping is true, then
-                               if (mapping) {
-                                       try {
-                                               // Polyfill.io - The try catch accounts for step 2.
-                                               // 1. Let mappedValue be Call(mapfn, T, « nextValue, k »).
-                                               var mappedValue = Call(mapfn, T, [nextValue, k]);
-                                               // 2. If mappedValue is an abrupt completion, return ? IteratorClose(iteratorRecord, mappedValue).
-                                               // 3. Let mappedValue be mappedValue.[[Value]].
-                                       } catch (e) {
-                                               return IteratorClose(iteratorRecord, e);
-                                       }
-
-                                       // vii. Else, let mappedValue be nextValue.
-                               } else {
-                                       mappedValue = nextValue;
-                               }
-                               try {
-                                       // Polyfill.io - The try catch accounts for step ix.
-                                       // viii. Let defineStatus be CreateDataPropertyOrThrow(A, Pk, mappedValue).
-                                       CreateDataPropertyOrThrow(A, Pk, mappedValue);
-                                       // ix. If defineStatus is an abrupt completion, return ? IteratorClose(iteratorRecord, defineStatus).
-                               } catch (e) {
-                                       return IteratorClose(iteratorRecord, e);
-                               }
-                               // x. Increase k by 1.
-                               k = k + 1;
-                       }
-               }
-               // 6. NOTE: items is not an Iterable so assume it is an array-like object.
-               // 7. Let arrayLike be ! ToObject(items).
-               // Polyfill.io - For Strings we need to split astral symbols into surrogate pairs.
-               if (isString(items)) {
-                       var arrayLike = stringMatch.call(items, /[\uD800-\uDBFF][\uDC00-\uDFFF]?|[^\uD800-\uDFFF]|./g) || [];
-               } else {
-                       arrayLike = ToObject(items);
-               }
-               // 8. Let len be ? ToLength(? Get(arrayLike, "length")).
-               var len = ToLength(Get(arrayLike, "length"));
-               // 9. If IsConstructor(C) is true, then
-               if (IsConstructor(C)) {
-                       // a. Let A be ? Construct(C, « len »).
-                       A = Construct(C, [len]);
-                       // 10. Else,
-               } else {
-                       // a. Let A be ? ArrayCreate(len).
-                       A = ArrayCreate(len);
-               }
-               // 11. Let k be 0.
-               k = 0;
-               // 12. Repeat, while k < len
-               while (k < len) {
-                       // a. Let Pk be ! ToString(k).
-                       Pk = ToString(k);
-                       // b. Let kValue be ? Get(arrayLike, Pk).
-                       var kValue = Get(arrayLike, Pk);
-                       // c. If mapping is true, then
-                       if (mapping === true) {
-                               // i. Let mappedValue be ? Call(mapfn, T, « kValue, k »).
-                               mappedValue = Call(mapfn, T, [kValue, k]);
-                               // d. Else, let mappedValue be kValue.
-                       } else {
-                               mappedValue = kValue;
-                       }
-                       // e. Perform ? CreateDataPropertyOrThrow(A, Pk, mappedValue).
-                       CreateDataPropertyOrThrow(A, Pk, mappedValue);
-                       // f. Increase k by 1.
-                       k = k + 1;
-               }
-               // 13. Perform ? Set(A, "length", len, true).
-               A["length"] = len;
-               // 14. Return A.
-               return A;
-       });
-}());
-
-}
-
-if (!("Symbol"in this&&"split"in this.Symbol
-)) {
-
-// Symbol.split
-/* global Symbol */
-Object.defineProperty(Symbol, 'split', { value: Symbol('split') });
-
-}
-
-if (!("Symbol"in this&&"toPrimitive"in this.Symbol
-)) {
-
-// Symbol.toPrimitive
-/* global Symbol */
-Object.defineProperty(Symbol, 'toPrimitive', { value: Symbol('toPrimitive') });
-
-}
-
-if (!("Symbol"in this&&"toStringTag"in this.Symbol
-)) {
-
-// Symbol.toStringTag
-/* global Symbol */
-Object.defineProperty(Symbol, 'toStringTag', {
-       value: Symbol('toStringTag')
-});
-
-}
-
-
-// _Iterator
-/* global Symbol */
-// A modification of https://github.com/medikoo/es6-iterator
-// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)
-
-var Iterator = (function () { // eslint-disable-line no-unused-vars
-       var clear = function () {
-               this.length = 0;
-               return this;
-       };
-       var callable = function (fn) {
-               if (typeof fn !== 'function') throw new TypeError(fn + " is not a function");
-               return fn;
-       };
-
-       var Iterator = function (list, context) {
-               if (!(this instanceof Iterator)) {
-                       return new Iterator(list, context);
-               }
-               Object.defineProperties(this, {
-                       __list__: {
-                               writable: true,
-                               value: list
-                       },
-                       __context__: {
-                               writable: true,
-                               value: context
-                       },
-                       __nextIndex__: {
-                               writable: true,
-                               value: 0
-                       }
-               });
-               if (!context) return;
-               callable(context.on);
-               context.on('_add', this._onAdd.bind(this));
-               context.on('_delete', this._onDelete.bind(this));
-               context.on('_clear', this._onClear.bind(this));
-       };
-
-       Object.defineProperties(Iterator.prototype, Object.assign({
-               constructor: {
-                       value: Iterator,
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _next: {
-                       value: function () {
-                               var i;
-                               if (!this.__list__) return;
-                               if (this.__redo__) {
-                                       i = this.__redo__.shift();
-                                       if (i !== undefined) return i;
-                               }
-                               if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;
-                               this._unBind();
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               next: {
-                       value: function () {
-                               return this._createResult(this._next());
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _createResult: {
-                       value: function (i) {
-                               if (i === undefined) return {
-                                       done: true,
-                                       value: undefined
-                               };
-                               return {
-                                       done: false,
-                                       value: this._resolve(i)
-                               };
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _resolve: {
-                       value: function (i) {
-                               return this.__list__[i];
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _unBind: {
-                       value: function () {
-                               this.__list__ = null;
-                               delete this.__redo__;
-                               if (!this.__context__) return;
-                               this.__context__.off('_add', this._onAdd.bind(this));
-                               this.__context__.off('_delete', this._onDelete.bind(this));
-                               this.__context__.off('_clear', this._onClear.bind(this));
-                               this.__context__ = null;
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               toString: {
-                       value: function () {
-                               return '[object Iterator]';
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               }
-       }, {
-               _onAdd: {
-                       value: function (index) {
-                               if (index >= this.__nextIndex__) return;
-                               ++this.__nextIndex__;
-                               if (!this.__redo__) {
-                                       Object.defineProperty(this, '__redo__', {
-                                               value: [index],
-                                               configurable: true,
-                                               enumerable: false,
-                                               writable: false
-                                       });
-                                       return;
-                               }
-                               this.__redo__.forEach(function (redo, i) {
-                                       if (redo >= index) this.__redo__[i] = ++redo;
-                               }, this);
-                               this.__redo__.push(index);
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _onDelete: {
-                       value: function (index) {
-                               var i;
-                               if (index >= this.__nextIndex__) return;
-                               --this.__nextIndex__;
-                               if (!this.__redo__) return;
-                               i = this.__redo__.indexOf(index);
-                               if (i !== -1) this.__redo__.splice(i, 1);
-                               this.__redo__.forEach(function (redo, i) {
-                                       if (redo > index) this.__redo__[i] = --redo;
-                               }, this);
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _onClear: {
-                       value: function () {
-                               if (this.__redo__) clear.call(this.__redo__);
-                               this.__nextIndex__ = 0;
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               }
-       }));
-
-       Object.defineProperty(Iterator.prototype, Symbol.iterator, {
-               value: function () {
-                       return this;
-               },
-               configurable: true,
-               enumerable: false,
-               writable: true
-       });
-       Object.defineProperty(Iterator.prototype, Symbol.toStringTag, {
-               value: 'Iterator',
-               configurable: false,
-               enumerable: false,
-               writable: true
-       });
-
-       return Iterator;
-}());
-
-// _ArrayIterator
-/* global Iterator */
-// A modification of https://github.com/medikoo/es6-iterator
-// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)
-
-var ArrayIterator = (function() { // eslint-disable-line no-unused-vars
-
-       var ArrayIterator = function(arr, kind) {
-               if (!(this instanceof ArrayIterator)) return new ArrayIterator(arr, kind);
-               Iterator.call(this, arr);
-               if (!kind) kind = 'value';
-               else if (String.prototype.includes.call(kind, 'key+value')) kind = 'key+value';
-               else if (String.prototype.includes.call(kind, 'key')) kind = 'key';
-               else kind = 'value';
-               Object.defineProperty(this, '__kind__', {
-                       value: kind,
-                       configurable: false,
-                       enumerable: false,
-                       writable: false
-               });
-       };
-       if (Object.setPrototypeOf) Object.setPrototypeOf(ArrayIterator, Iterator.prototype);
-
-       ArrayIterator.prototype = Object.create(Iterator.prototype, {
-               constructor: {
-                       value: ArrayIterator,
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _resolve: {
-                       value: function(i) {
-                               if (this.__kind__ === 'value') return this.__list__[i];
-                               if (this.__kind__ === 'key+value') return [i, this.__list__[i]];
-                               return i;
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               toString: {
-                       value: function() {
-                               return '[object Array Iterator]';
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               }
-       });
-
-       return ArrayIterator;
-}());
-if (!("Symbol"in this&&"iterator"in this.Symbol&&!!Array.prototype.entries
-)) {
-
-// Array.prototype.entries
-/* global CreateMethodProperty, ToObject */
-// 22.1.3.4. Array.prototype.entries ( )
-CreateMethodProperty(Array.prototype, 'entries', function entries() {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Return CreateArrayIterator(O, "key+value").
-       // TODO: Add CreateArrayIterator
-       return new ArrayIterator(O, 'key+value');
-});
-
-}
-
-if (!("Symbol"in this&&"iterator"in this.Symbol&&!!Array.prototype.keys
-)) {
-
-// Array.prototype.keys
-/* global CreateMethodProperty, ToObject */
-// 22.1.3.14. Array.prototype.keys ( )
-CreateMethodProperty(Array.prototype, 'keys', function keys() {
-       // 1. Let O be ? ToObject(this value).
-       var O = ToObject(this);
-       // 2. Return CreateArrayIterator(O, "key").
-       // TODO: Add CreateArrayIterator.
-       return new ArrayIterator(O, 'key');
-});
-
-}
-
-if (!("values"in Array.prototype
-)) {
-
-// Array.prototype.values
-/* global CreateMethodProperty, Symbol, ToObject */
-// 22.1.3.30/ Array.prototype.values ( )
-// Polyfill.io - Firefox, Chrome and Opera have Array.prototype[Symbol.iterator], which is the exact same function as Array.prototype.values.
-if ('Symbol' in this && 'iterator' in Symbol && typeof Array.prototype[Symbol.iterator] === 'function') {
-       CreateMethodProperty(Array.prototype, 'values', Array.prototype[Symbol.iterator]);
-} else {
-       CreateMethodProperty(Array.prototype, 'values', function values () {
-               // 1. Let O be ? ToObject(this value).
-               var O = ToObject(this);
-               // 2. Return CreateArrayIterator(O, "value").
-               // TODO: Add CreateArrayIterator
-               return new ArrayIterator(O, 'value');
-       });
-}
-
-}
-
-if (!("Symbol"in this&&"iterator"in this.Symbol&&!!Array.prototype[Symbol.iterator]
-)) {
-
-// Array.prototype.@@iterator
-/* global Symbol, CreateMethodProperty */
-// 22.1.3.31. Array.prototype [ @@iterator ] ( )
-// The initial value of the @@iterator property is the same function object as the initial value of the  Array.prototype.values property.
-CreateMethodProperty(Array.prototype, Symbol.iterator, Array.prototype.values);
-
-}
-
-
-// _StringIterator
-// A modification of https://github.com/medikoo/es6-iterator
-// Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)
-
-/* global Iterator */
-
-var StringIterator = (function() { // eslint-disable-line no-unused-vars
-
-       var StringIterator = function (str) {
-               if (!(this instanceof StringIterator)) return new StringIterator(str);
-               str = String(str);
-               Iterator.call(this, str);
-               Object.defineProperty(this, '__length__', {
-                       value: str.length,
-                       configurable: false,
-                       enumerable: false,
-                       writable: false
-               });
-       };
-       if (Object.setPrototypeOf) Object.setPrototypeOf(StringIterator, Iterator);
-
-       StringIterator.prototype = Object.create(Iterator.prototype, {
-               constructor: {
-                       value: StringIterator,
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _next: {
-                       value: function() {
-                               if (!this.__list__) return;
-                               if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;
-                               this._unBind();
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               _resolve: {
-                       value: function (i) {
-                               var char = this.__list__[i], code;
-                               if (this.__nextIndex__ === this.__length__) return char;
-                               code = char.charCodeAt(0);
-                               if ((code >= 0xD800) && (code <= 0xDBFF)) return char + this.__list__[this.__nextIndex__++];
-                               return char;
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               },
-               toString: {
-                       value: function() {
-                               return '[object String Iterator]';
-                       },
-                       configurable: true,
-                       enumerable: false,
-                       writable: true
-               }
-       });
-
-       return StringIterator;
-}());
-if (!("Symbol"in this&&"iterator"in this.Symbol&&!!String.prototype[Symbol.iterator]
-)) {
-
-// String.prototype.@@iterator
-/* global CreateMethodProperty, RequireObjectCoercible, ToString, StringIterator, Symbol */
-// 21.1.3.29. String.prototype [ @@iterator ] ( )
-CreateMethodProperty(String.prototype, Symbol.iterator, function () {
-       // 1. Let O be ? RequireObjectCoercible(this value).
-       var O = RequireObjectCoercible(this);
-       // 2. Let S be ? ToString(O).
-       var S = ToString(O);
-       // 3. Return CreateStringIterator(S).
-       // TODO: Add CreateStringIterator.
-       return new StringIterator(S);
-});
-
-}
-
-if (!("Symbol"in this&&"unscopables"in this.Symbol
-)) {
-
-// Symbol.unscopables
-/* global Symbol */
-Object.defineProperty(Symbol, 'unscopables', { value: Symbol('unscopables') });
-
-}
-
-if (!((function(e){try{if("WeakMap"in e&&0===WeakMap.length){var t={},a=new WeakMap([[t,"test"]])
-return"test"===a.get(t)&&!1===a["delete"](0)}return!1}catch(n){return!1}})(this)
-)) {
-
-// WeakMap
-/* globals Symbol, OrdinaryCreateFromConstructor, IsCallable, GetIterator, IteratorStep, IteratorValue, IteratorClose, Get, Call, CreateMethodProperty, Type, SameValue */
-(function (global) {
-       // Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
-       var undefMarker = Symbol('undef');
-       // 23.3.1.1 WeakMap ( [ iterable ] )
-       var WeakMap = function WeakMap(/* iterable */) {
-               // 1. If NewTarget is undefined, throw a TypeError exception.
-               if (!(this instanceof WeakMap)) {
-                       throw new TypeError('Constructor WeakMap requires "new"');
-               }
-               // 2. Let map be ? OrdinaryCreateFromConstructor(NewTarget, "%WeakMapPrototype%", « [[WeakMapData]] »).
-               var map = OrdinaryCreateFromConstructor(this, WeakMap.prototype, {
-                       _keys: [],
-                       _values: [],
-                       _es6WeakMap: true
-               });
-
-               // 3. Set map.[[WeakMapData]] to a new empty List.
-               // Polyfill.io - This step was done as part of step two.
-
-               // 4. If iterable is not present, let iterable be undefined.
-               var iterable = arguments.length > 0 ? arguments[0] : undefined;
-
-               // 5. If iterable is either undefined or null, return map.
-               if (iterable === null || iterable === undefined) {
-                       return map;
-               }
-
-               // 6. Let adder be ? Get(map, "set").
-               var adder = Get(map, "set");
-
-               // 7. If IsCallable(adder) is false, throw a TypeError exception.
-               if (!IsCallable(adder)) {
-                       throw new TypeError("WeakMap.prototype.set is not a function");
-               }
-
-               // 8. Let iteratorRecord be ? GetIterator(iterable).
-               try {
-                       var iteratorRecord = GetIterator(iterable);
-                       // 9. Repeat,
-                       while (true) {
-                               // a. Let next be ? IteratorStep(iteratorRecord).
-                               var next = IteratorStep(iteratorRecord);
-                               // b. If next is false, return map.
-                               if (next === false) {
-                                       return map;
-                               }
-                               // c. Let nextItem be ? IteratorValue(next).
-                               var nextItem = IteratorValue(next);
-                               // d. If Type(nextItem) is not Object, then
-                               if (Type(nextItem) !== 'object') {
-                                       // i. Let error be Completion{[[Type]]: throw, [[Value]]: a newly created TypeError object, [[Target]]: empty}.
-                                       try {
-                                               throw new TypeError('Iterator value ' + nextItem + ' is not an entry object');
-                                       } catch (error) {
-                                               // ii. Return ? IteratorClose(iteratorRecord, error).
-                                               return IteratorClose(iteratorRecord, error);
-                                       }
-                               }
-                               try {
-                                       // Polyfill.io - The try catch accounts for steps: f, h, and j.
-
-                                       // e. Let k be Get(nextItem, "0").
-                                       var k = Get(nextItem, "0");
-                                       // f. If k is an abrupt completion, return ? IteratorClose(iteratorRecord, k).
-                                       // g. Let v be Get(nextItem, "1").
-                                       var v = Get(nextItem, "1");
-                                       // h. If v is an abrupt completion, return ? IteratorClose(iteratorRecord, v).
-                                       // i. Let status be Call(adder, map, « k.[[Value]], v.[[Value]] »).
-                                       Call(adder, map, [k, v]);
-                               } catch (e) {
-                                       // j. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
-                                       return IteratorClose(iteratorRecord, e);
-                               }
-                       }
-               } catch (e) {
-                       // Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
-                       if (Array.isArray(iterable) ||
-                               Object.prototype.toString.call(iterable) === '[object Arguments]' ||
-                               // IE 7 & IE 8 return '[object Object]' for the arguments object, we can detect by checking for the existence of the callee property
-                               (!!iterable.callee)) {
-                               var index;
-                               var length = iterable.length;
-                               for (index = 0; index < length; index++) {
-                                       var k = iterable[index][0];
-                                       var v = iterable[index][1];
-                                       Call(adder, map, [k, v]);
-                               }
-                       }
-               }
-               return map;
-       };
-
-       // 23.3.2.1 WeakMap.prototype
-       // The initial value of WeakMap.prototype is the intrinsic object %WeakMapPrototype%.
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-       Object.defineProperty(WeakMap, 'prototype', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: {}
-       });
-
-       // 23.3.3.1 WeakMap.prototype.constructor
-       CreateMethodProperty(WeakMap.prototype, 'constructor', WeakMap);
-
-       // 23.3.3.2 WeakMap.prototype.delete ( key )
-       CreateMethodProperty(WeakMap.prototype, 'delete', function (key) {
-               // 1. Let M be the this value.
-               var M = this;
-               // 2. If Type(M) is not Object, throw a TypeError exception.
-               if (Type(M) !== 'object') {
-                       throw new TypeError('Method WeakMap.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
-               if (M._es6WeakMap !== true) {
-                       throw new TypeError('Method WeakMap.prototype.clear called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 4. Let entries be the List that is M.[[WeakMapData]].
-               var entries = M._keys;
-               // 5. If Type(key) is not Object, return false.
-               if (Type(key) !== 'object') {
-                       return false;
-               }
-               // 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       // a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, then
-                       if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
-                               // i. Set p.[[Key]] to empty.
-                               this._keys[i] = undefMarker;
-                               // ii. Set p.[[Value]] to empty.
-                               this._values[i] = undefMarker;
-                               this._size = --this._size;
-                               // iii. Return true.
-                               return true;
-                       }
-               }
-               // 7. Return false.
-               return false;
-       });
-
-       // 23.3.3.3 WeakMap.prototype.get ( key )
-       CreateMethodProperty(WeakMap.prototype, 'get', function get(key) {
-               // 1. Let M be the this value.
-               var M = this;
-               // 2. If Type(M) is not Object, throw a TypeError exception.
-               if (Type(M) !== 'object') {
-                       throw new TypeError('Method WeakMap.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
-               if (M._es6WeakMap !== true) {
-                       throw new TypeError('Method WeakMap.prototype.get called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 4. Let entries be the List that is M.[[WeakMapData]].
-               var entries = M._keys;
-               // 5. If Type(key) is not Object, return undefined.
-               if (Type(key) !== 'object') {
-                       return undefined;
-               }
-               // 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       // a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, return p.[[Value]].
-                       if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
-                               return M._values[i];
-                       }
-               }
-               // 7. Return undefined.
-               return undefined;
-       });
-
-       // 23.3.3.4 WeakMap.prototype.has ( key )
-       CreateMethodProperty(WeakMap.prototype, 'has', function has(key) {
-               // 1. Let M be the this value.
-               var M = this;
-               // 2. If Type(M) is not Object, throw a TypeError exception.
-               if (typeof M !== 'object') {
-                       throw new TypeError('Method WeakMap.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
-               if (M._es6WeakMap !== true) {
-                       throw new TypeError('Method WeakMap.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 4. Let entries be the List that is M.[[WeakMapData]].
-               var entries = M._keys;
-               // 5. If Type(key) is not Object, return false.
-               if (Type(key) !== 'object') {
-                       return false;
-               }
-               // 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       // a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, return true.
-                       if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
-                               return true;
-                       }
-               }
-               // 7. Return false.
-               return false;
-       });
-
-       // 23.3.3.5 WeakMap.prototype.set ( key, value )
-       CreateMethodProperty(WeakMap.prototype, 'set', function set(key, value) {
-               // 1. Let M be the this value.
-               var M = this;
-               // 2. If Type(M) is not Object, throw a TypeError exception.
-               if (Type(M) !== 'object') {
-                       throw new TypeError('Method WeakMap.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 3. If M does not have a [[WeakMapData]] internal slot, throw a TypeError exception.
-               if (M._es6WeakMap !== true) {
-                       throw new TypeError('Method WeakMap.prototype.set called on incompatible receiver ' + Object.prototype.toString.call(M));
-               }
-               // 4. Let entries be the List that is M.[[WeakMapData]].
-               var entries = M._keys;
-               // 5. If Type(key) is not Object, throw a TypeError exception.
-               if (Type(key) !== 'object') {
-                       throw new TypeError("Invalid value used as weak map key");
-               }
-               // 6. For each Record {[[Key]], [[Value]]} p that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       // a. If p.[[Key]] is not empty and SameValue(p.[[Key]], key) is true, then
-                       if (M._keys[i] !== undefMarker && SameValue(M._keys[i], key)) {
-                               // i. Set p.[[Value]] to value.
-                               M._values[i] = value;
-                               // ii. Return M.
-                               return M;
-                       }
-               }
-               // 7. Let p be the Record {[[Key]]: key, [[Value]]: value}.
-               var p = {
-                       '[[Key]]': key,
-                       '[[Value]]': value
-               };
-               // 8. Append p as the last element of entries.
-               M._keys.push(p['[[Key]]']);
-               M._values.push(p['[[Value]]']);
-               // 9. Return M.
-               return M;
-       });
-
-       // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "WeakMap".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       // Polyfill.io - Safari 8 implements WeakMap.name but as a non-writable property, which means it would throw an error if we try and write to it here.
-       if (!('name' in WeakMap)) {
-               // 19.2.4.2 name
-               Object.defineProperty(WeakMap, 'name', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: false,
-                       value: 'WeakMap'
-               });
-       }
-
-       // Export the object
-       try {
-               CreateMethodProperty(global, 'WeakMap', WeakMap);
-       } catch (e) {
-               // IE8 throws an error here if we set enumerable to false.
-               // More info on table 2: https://msdn.microsoft.com/en-us/library/dd229916(v=vs.85).aspx
-               global['WeakMap'] = WeakMap;
-       }
-}(this));
-
-}
-
-if (!((function(e){try{if("WeakSet"in e&&0===WeakSet.length){var t={},n=new WeakSet([t])
-return n.has(t)&&!1===n["delete"](0)}return!1}catch(r){return!1}})(this)
-)) {
-
-// WeakSet
-/* global Call, CreateMethodProperty, Get, GetIterator, IsArray, IsCallable, IteratorClose, IteratorStep, IteratorValue, OrdinaryCreateFromConstructor, SameValueZero, Type, Symbol */
-(function (global) {
-       // Deleted set items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.
-       var undefMarker = Symbol('undef');
-       // 23.4.1.1. WeakSet ( [ iterable ] )
-       var WeakSet = function WeakSet() {
-               // 1. If NewTarget is undefined, throw a TypeError exception.
-               if (!(this instanceof WeakSet)) {
-                       throw new TypeError('Constructor WeakSet requires "new"');
-               }
-               // 2. Let set be ? OrdinaryCreateFromConstructor(NewTarget, "%WeakSetPrototype%", « [[WeakSetData]] »).
-               var set = OrdinaryCreateFromConstructor(this, WeakSet.prototype, {
-                       _values: [],
-                       _size: 0,
-                       _es6WeakSet: true
-               });
-
-               // 3. Set set.[[WeakSetData]] to a new empty List.
-               // Polyfill.io - This step was done as part of step two.
-
-               // 4. If iterable is not present, let iterable be undefined.
-               var iterable = arguments.length > 0 ? arguments[0] : undefined;
-               // 5. If iterable is either undefined or null, return set.
-               if (iterable === null || iterable === undefined) {
-                       return set;
-               }
-               // 6. Let adder be ? Get(set, "add").
-               var adder = Get(set, 'add');
-               // 7. If IsCallable(adder) is false, throw a TypeError exception.
-               if (!IsCallable(adder)) {
-                       throw new TypeError("WeakSet.prototype.add is not a function");
-               }
-               try {
-                       // 8. Let iteratorRecord be ? GetIterator(iterable).
-                       var iteratorRecord = GetIterator(iterable);
-                       // 9. Repeat,
-                       while (true) {
-                               // a. Let next be ? IteratorStep(iteratorRecord).
-                               var next = IteratorStep(iteratorRecord);
-                               // b. If next is false, return set.
-                               if (next === false) {
-                                       return set;
-                               }
-                               // c. Let nextValue be ? IteratorValue(next).
-                               var nextValue = IteratorValue(next);
-                               // d. Let status be Call(adder, set, « nextValue »).
-                               try {
-                                       Call(adder, set, [nextValue]);
-                               } catch (e) {
-                                       // e. If status is an abrupt completion, return ? IteratorClose(iteratorRecord, status).
-                                       return IteratorClose(iteratorRecord, e);
-                               }
-                       }
-               } catch (e) {
-                       // Polyfill.io - For user agents which do not have iteration methods on argument objects or arrays, we can special case those.
-                       if (IsArray(iterable) ||
-                               Object.prototype.toString.call(iterable) === '[object Arguments]' ||
-                               // IE 7 & IE 8 return '[object Object]' for the arguments object, we can detect by checking for the existence of the callee property
-                               (!!iterable.callee)) {
-                               var index;
-                               var length = iterable.length;
-                               for (index = 0; index < length; index++) {
-                                       Call(adder, set, [iterable[index]]);
-                               }
-                       }
-               }
-               return set;
-       };
-
-       // 23.4.2.1. WeakSet.prototype
-       // The initial value of WeakSet.prototype is the intrinsic %WeakSetPrototype% object.
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
-       Object.defineProperty(WeakSet, 'prototype', {
-               configurable: false,
-               enumerable: false,
-               writable: false,
-               value: {}
-       });
-
-       // 23.4.3.1. WeakSet.prototype.add ( value )
-       CreateMethodProperty(WeakSet.prototype, 'add', function add(value) {
-               // 1. Let S be the this value.
-               var S = this;
-               // 2. If Type(S) is not Object, throw a TypeError exception.
-               if (Type(S) !== 'object') {
-                       throw new TypeError('Method WeakSet.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
-               if (S._es6WeakSet !== true) {
-                       throw new TypeError('Method WeakSet.prototype.add called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 4. If Type(value) is not Object, throw a TypeError exception.
-               if (Type(value) !== 'object') {
-                       throw new TypeError('Invalid value used in weak set');
-               }
-               // 5. Let entries be the List that is S.[[WeakSetData]].
-               var entries = S._values;
-               // 6. For each e that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       var e = entries[i];
-                       // a. If e is not empty and SameValue(e, value) is true, then
-                       if (e !== undefMarker && SameValueZero(e, value)) {
-                               // i. Return S.
-                               return S;
-                       }
-               }
-               // 7. Append value as the last element of entries.
-               S._values.push(value);
-               // 8. Return S.
-               return S;
-       });
-
-       // 23.4.3.2. WeakSet.prototype.constructor
-       CreateMethodProperty(WeakSet.prototype, 'constructor', WeakSet);
-
-       // 23.4.3.3. WeakSet.prototype.delete ( value )
-       CreateMethodProperty(WeakSet.prototype, 'delete', function (value) {
-               // 1. Let S be the this value.
-               var S = this;
-               // 2. If Type(S) is not Object, throw a TypeError exception.
-               if (Type(S) !== 'object') {
-                       throw new TypeError('Method WeakSet.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
-               if (S._es6WeakSet !== true) {
-                       throw new TypeError('Method WeakSet.prototype.delete called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 4. If Type(value) is not Object, return false.
-               if (Type(value) !== 'object') {
-                       return false;
-               }
-               // 5. Let entries be the List that is S.[[WeakSetData]].
-               var entries = S._values;
-               // 6. For each e that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       var e = entries[i];
-                       // a. If e is not empty and SameValue(e, value) is true, then
-                       if (e !== undefMarker && SameValueZero(e, value)) {
-                               // i. Replace the element of entries whose value is e with an element whose value is empty.
-                               entries[i] = undefMarker;
-                               // ii. Return true.
-                               return true;
-                       }
-               }
-               // 7. Return false.
-               return false;
-       });
-
-       // 23.4.3.4. WeakSet.prototype.has ( value )
-       CreateMethodProperty(WeakSet.prototype, 'has', function has(value) {
-               // 1. Let S be the this value.
-               var S = this;
-               // 2. If Type(S) is not Object, throw a TypeError exception.
-               if (Type(S) !== 'object') {
-                       throw new TypeError('Method WeakSet.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 3. If S does not have a [[WeakSetData]] internal slot, throw a TypeError exception.
-               if (S._es6WeakSet !== true) {
-                       throw new TypeError('Method WeakSet.prototype.has called on incompatible receiver ' + Object.prototype.toString.call(S));
-               }
-               // 4. Let entries be the List that is S.[[WeakSetData]].
-               var entries = S._values;
-               // 5. If Type(value) is not Object, return false.
-               if (Type(value) !== 'object') {
-                       return false;
-               }
-               // 6. For each e that is an element of entries, do
-               for (var i = 0; i < entries.length; i++) {
-                       var e = entries[i];
-                       // a. If e is not empty and SameValue(e, value) is true, return true.
-                       if (e !== undefMarker && SameValueZero(e, value)) {
-                               return true;
-                       }
-               }
-               // 7. Return false.
-               return false;
-       });
-
-       // 23.4.3.5. WeakSet.prototype [ @@toStringTag ]
-       // The initial value of the @@toStringTag property is the String value "WeakSet".
-       // This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
-
-       // Polyfill.io - Safari 8 implements Set.name but as a non-configurable property, which means it would throw an error if we try and configure it here.
-       if (!('name' in WeakSet)) {
-               // 19.2.4.2 name
-               Object.defineProperty(WeakSet, 'name', {
-                       configurable: true,
-                       enumerable: false,
-                       writable: false,
-                       value: 'WeakSet'
-               });
-       }
-
-       // Export the object
-       try {
-               CreateMethodProperty(global, 'WeakSet', WeakSet);
-       } catch (e) {
-               // IE8 throws an error here if we set enumerable to false.
-               // More info on table 2: https://msdn.microsoft.com/en-us/library/dd229916(v=vs.85).aspx
-               global['WeakSet'] = WeakSet;
-       }
-
-}(this));
-
-}
-
-})
-.call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
index 684bbac3998398e701fc8c73306787ad72661fdf..55bc0851ba9256f34b00f0c5e9a7f67ab6576739 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@9.18.0":
-  version "9.18.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84"
-  integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==
+"@eslint/js@9.19.0":
+  version "9.19.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.19.0.tgz#51dbb140ed6b49d05adc0b171c41e1a8713b7789"
+  integrity sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==
 
 "@eslint/object-schema@^2.1.4":
   version "2.1.4"
@@ -278,16 +278,16 @@ eslint-visitor-keys@^4.2.0:
   integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
 
 eslint@^9.0.0:
-  version "9.18.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850"
-  integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==
+  version "9.19.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.19.0.tgz#ffa1d265fc4205e0f8464330d35f09e1d548b1bf"
+  integrity sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.12.1"
     "@eslint/config-array" "^0.19.0"
     "@eslint/core" "^0.10.0"
     "@eslint/eslintrc" "^3.2.0"
-    "@eslint/js" "9.18.0"
+    "@eslint/js" "9.19.0"
     "@eslint/plugin-kit" "^0.2.5"
     "@humanfs/node" "^0.16.6"
     "@humanwhocodes/module-importer" "^1.0.1"