Merge remote-tracking branch 'openstreetmap/pull/1401'
authorTom Hughes <tom@compton.nu>
Sun, 5 Feb 2017 13:50:07 +0000 (13:50 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 5 Feb 2017 13:50:07 +0000 (13:50 +0000)
258 files changed:
.rubocop.yml
Gemfile
Gemfile.lock
INSTALL.md
Vagrantfile
Vendorfile
app/assets/javascripts/index.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.map.js
app/assets/javascripts/leaflet.share.js
app/controllers/amf_controller.rb
app/controllers/application_controller.rb
app/controllers/export_controller.rb
app/controllers/message_controller.rb
app/controllers/site_controller.rb
app/models/changeset.rb
app/models/language.rb
app/models/user.rb
app/models/user_role.rb
app/views/site/key.html.erb
config/application.rb
config/example.application.yml
config/initializers/assets.rb
config/initializers/banners.rb
config/initializers/omniauth.rb
config/initializers/wiki_pages.rb
config/locales/ast.yml
config/locales/be-Tarask.yml
config/locales/bg.yml
config/locales/bn.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/de.yml
config/locales/diq.yml
config/locales/el.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/ga.yml
config/locales/gl.yml
config/locales/hu.yml
config/locales/ia.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lb.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/nb.yml
config/locales/nl.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/ru.yml
config/locales/sl.yml
config/locales/sq.yml
config/locales/sv.yml
config/locales/uk.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
db/migrate/001_create_osm_db.rb
db/migrate/034_create_languages.rb
db/migrate/20140117185510_drop_countries.rb
lib/daemons/gpx_import_ctl
lib/id.rb
lib/osm.rb
lib/potlatch.rb
lib/potlatch2.rb
lib/quad_tile/quad_tile.h
script/deliver-message
script/vagrant/setup/provision.sh
test/controllers/oauth_clients_controller_test.rb
test/controllers/site_controller_test.rb
test/factories/client_applications.rb [new file with mode: 0644]
test/factories/user.rb [new file with mode: 0644]
test/factories/user_role.rb [new file with mode: 0644]
test/fixtures/client_applications.yml [deleted file]
test/fixtures/user_tokens.yml [deleted file]
test/integration/client_applications_test.rb
test/integration/oauth_test.rb
test/models/changeset_comment_test.rb
test/models/client_application_test.rb
test/models/oauth_token_test.rb
test/models/user_test.rb
test/models/user_token_test.rb
test/test_helper.rb
vendor/assets/iD/iD.css.erb
vendor/assets/iD/iD.js
vendor/assets/iD/iD/img/iD-sprite.svg
vendor/assets/iD/iD/img/maki-sprite.svg
vendor/assets/iD/iD/locales/af.json
vendor/assets/iD/iD/locales/ar-AA.json
vendor/assets/iD/iD/locales/ar.json
vendor/assets/iD/iD/locales/ast.json
vendor/assets/iD/iD/locales/bg-BG.json
vendor/assets/iD/iD/locales/bn.json
vendor/assets/iD/iD/locales/bs.json
vendor/assets/iD/iD/locales/ca.json
vendor/assets/iD/iD/locales/cs.json
vendor/assets/iD/iD/locales/da.json
vendor/assets/iD/iD/locales/de.json
vendor/assets/iD/iD/locales/el.json
vendor/assets/iD/iD/locales/en-GB.json
vendor/assets/iD/iD/locales/en.json
vendor/assets/iD/iD/locales/eo.json
vendor/assets/iD/iD/locales/es.json
vendor/assets/iD/iD/locales/et.json
vendor/assets/iD/iD/locales/fa.json
vendor/assets/iD/iD/locales/fi.json
vendor/assets/iD/iD/locales/fr.json
vendor/assets/iD/iD/locales/gl.json
vendor/assets/iD/iD/locales/gu.json
vendor/assets/iD/iD/locales/hi.json
vendor/assets/iD/iD/locales/hr.json
vendor/assets/iD/iD/locales/hu.json
vendor/assets/iD/iD/locales/hy.json
vendor/assets/iD/iD/locales/id.json
vendor/assets/iD/iD/locales/is.json
vendor/assets/iD/iD/locales/it.json
vendor/assets/iD/iD/locales/ja.json
vendor/assets/iD/iD/locales/kn.json
vendor/assets/iD/iD/locales/ko.json
vendor/assets/iD/iD/locales/ku.json
vendor/assets/iD/iD/locales/lt.json
vendor/assets/iD/iD/locales/lv.json
vendor/assets/iD/iD/locales/mk.json [new file with mode: 0644]
vendor/assets/iD/iD/locales/nl.json
vendor/assets/iD/iD/locales/no.json
vendor/assets/iD/iD/locales/pl.json
vendor/assets/iD/iD/locales/pt-BR.json
vendor/assets/iD/iD/locales/pt.json
vendor/assets/iD/iD/locales/ro.json
vendor/assets/iD/iD/locales/ru.json
vendor/assets/iD/iD/locales/si.json
vendor/assets/iD/iD/locales/sk.json
vendor/assets/iD/iD/locales/sl.json
vendor/assets/iD/iD/locales/sq.json
vendor/assets/iD/iD/locales/sr.json
vendor/assets/iD/iD/locales/sv.json
vendor/assets/iD/iD/locales/ta.json
vendor/assets/iD/iD/locales/te.json
vendor/assets/iD/iD/locales/th.json
vendor/assets/iD/iD/locales/tl.json
vendor/assets/iD/iD/locales/tr.json
vendor/assets/iD/iD/locales/uk.json
vendor/assets/iD/iD/locales/vi.json
vendor/assets/iD/iD/locales/yue.json
vendor/assets/iD/iD/locales/zh-CN.json
vendor/assets/iD/iD/locales/zh-HK.json
vendor/assets/iD/iD/locales/zh-TW.json
vendor/assets/iD/iD/locales/zh.json
vendor/assets/iD/iD/mapillary-js/mapillary.js
vendor/assets/iD/iD/mapillary-js/mapillary.js.map
vendor/assets/iD/iD/mapillary-js/mapillary.min.css
vendor/assets/iD/iD/mapillary-js/mapillary.min.js
vendor/assets/leaflet/leaflet.css
vendor/assets/leaflet/leaflet.js
vendor/assets/leaflet/leaflet.osm.js
vendor/assets/potlatch2/potlatch2.swf
vendor/assets/potlatch2/potlatch2/assets.zip
vendor/assets/potlatch2/potlatch2/locales/af.swf
vendor/assets/potlatch2/potlatch2/locales/ar.swf
vendor/assets/potlatch2/potlatch2/locales/arc.swf
vendor/assets/potlatch2/potlatch2/locales/ast.swf
vendor/assets/potlatch2/potlatch2/locales/az.swf
vendor/assets/potlatch2/potlatch2/locales/ba.swf
vendor/assets/potlatch2/potlatch2/locales/be-tarask.swf
vendor/assets/potlatch2/potlatch2/locales/be.swf
vendor/assets/potlatch2/potlatch2/locales/bg.swf
vendor/assets/potlatch2/potlatch2/locales/bn.swf
vendor/assets/potlatch2/potlatch2/locales/br.swf
vendor/assets/potlatch2/potlatch2/locales/bs.swf
vendor/assets/potlatch2/potlatch2/locales/ca.swf
vendor/assets/potlatch2/potlatch2/locales/ce.swf
vendor/assets/potlatch2/potlatch2/locales/cs_CZ.swf
vendor/assets/potlatch2/potlatch2/locales/cy.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/da.swf
vendor/assets/potlatch2/potlatch2/locales/de-formal.swf
vendor/assets/potlatch2/potlatch2/locales/de_DE.swf
vendor/assets/potlatch2/potlatch2/locales/diq.swf
vendor/assets/potlatch2/potlatch2/locales/dsb.swf
vendor/assets/potlatch2/potlatch2/locales/el.swf
vendor/assets/potlatch2/potlatch2/locales/en_GB.swf
vendor/assets/potlatch2/potlatch2/locales/en_US.swf
vendor/assets/potlatch2/potlatch2/locales/eo.swf
vendor/assets/potlatch2/potlatch2/locales/es_ES.swf
vendor/assets/potlatch2/potlatch2/locales/et.swf
vendor/assets/potlatch2/potlatch2/locales/eu.swf
vendor/assets/potlatch2/potlatch2/locales/fa.swf
vendor/assets/potlatch2/potlatch2/locales/fi.swf
vendor/assets/potlatch2/potlatch2/locales/fo.swf
vendor/assets/potlatch2/potlatch2/locales/fr_FR.swf
vendor/assets/potlatch2/potlatch2/locales/fur.swf
vendor/assets/potlatch2/potlatch2/locales/ga.swf
vendor/assets/potlatch2/potlatch2/locales/gd.swf
vendor/assets/potlatch2/potlatch2/locales/gl.swf
vendor/assets/potlatch2/potlatch2/locales/grc.swf
vendor/assets/potlatch2/potlatch2/locales/he.swf
vendor/assets/potlatch2/potlatch2/locales/hr.swf
vendor/assets/potlatch2/potlatch2/locales/hsb.swf
vendor/assets/potlatch2/potlatch2/locales/hu.swf
vendor/assets/potlatch2/potlatch2/locales/ia.swf
vendor/assets/potlatch2/potlatch2/locales/id.swf
vendor/assets/potlatch2/potlatch2/locales/is.swf [new file with mode: 0644]
vendor/assets/potlatch2/potlatch2/locales/it_IT.swf
vendor/assets/potlatch2/potlatch2/locales/ja_JP.swf
vendor/assets/potlatch2/potlatch2/locales/ka.swf
vendor/assets/potlatch2/potlatch2/locales/km.swf
vendor/assets/potlatch2/potlatch2/locales/kn.swf
vendor/assets/potlatch2/potlatch2/locales/ko.swf
vendor/assets/potlatch2/potlatch2/locales/krc.swf
vendor/assets/potlatch2/potlatch2/locales/ksh.swf
vendor/assets/potlatch2/potlatch2/locales/ku-latn.swf
vendor/assets/potlatch2/potlatch2/locales/ky.swf
vendor/assets/potlatch2/potlatch2/locales/lb.swf
vendor/assets/potlatch2/potlatch2/locales/lez.swf
vendor/assets/potlatch2/potlatch2/locales/lt.swf
vendor/assets/potlatch2/potlatch2/locales/lv.swf
vendor/assets/potlatch2/potlatch2/locales/lzz.swf
vendor/assets/potlatch2/potlatch2/locales/mk.swf
vendor/assets/potlatch2/potlatch2/locales/mr.swf
vendor/assets/potlatch2/potlatch2/locales/ms.swf
vendor/assets/potlatch2/potlatch2/locales/nb_NO.swf
vendor/assets/potlatch2/potlatch2/locales/nl_NL.swf
vendor/assets/potlatch2/potlatch2/locales/nn_NO.swf
vendor/assets/potlatch2/potlatch2/locales/oc.swf
vendor/assets/potlatch2/potlatch2/locales/pa.swf
vendor/assets/potlatch2/potlatch2/locales/pl_PL.swf
vendor/assets/potlatch2/potlatch2/locales/ps.swf
vendor/assets/potlatch2/potlatch2/locales/pt_BR.swf
vendor/assets/potlatch2/potlatch2/locales/pt_PT.swf
vendor/assets/potlatch2/potlatch2/locales/ro.swf
vendor/assets/potlatch2/potlatch2/locales/ru.swf
vendor/assets/potlatch2/potlatch2/locales/rue.swf
vendor/assets/potlatch2/potlatch2/locales/sah.swf
vendor/assets/potlatch2/potlatch2/locales/scn.swf
vendor/assets/potlatch2/potlatch2/locales/sk.swf
vendor/assets/potlatch2/potlatch2/locales/sl.swf
vendor/assets/potlatch2/potlatch2/locales/sq.swf
vendor/assets/potlatch2/potlatch2/locales/sr-ec.swf
vendor/assets/potlatch2/potlatch2/locales/sr-el.swf
vendor/assets/potlatch2/potlatch2/locales/sv_SE.swf
vendor/assets/potlatch2/potlatch2/locales/ta.swf
vendor/assets/potlatch2/potlatch2/locales/te.swf
vendor/assets/potlatch2/potlatch2/locales/tl.swf
vendor/assets/potlatch2/potlatch2/locales/tly.swf
vendor/assets/potlatch2/potlatch2/locales/tr.swf
vendor/assets/potlatch2/potlatch2/locales/tyv.swf
vendor/assets/potlatch2/potlatch2/locales/tzm.swf
vendor/assets/potlatch2/potlatch2/locales/uk.swf
vendor/assets/potlatch2/potlatch2/locales/vi_VN.swf
vendor/assets/potlatch2/potlatch2/locales/vo.swf
vendor/assets/potlatch2/potlatch2/locales/yi.swf
vendor/assets/potlatch2/potlatch2/locales/zh_CN.swf
vendor/assets/potlatch2/potlatch2/locales/zh_TW.swf

index 975457d9572a6670386e154be340781a44913299..477b2ab02c152e3af3488a62eb8c0b79040d1db3 100644 (file)
@@ -2,6 +2,23 @@ inherit_from: .rubocop_todo.yml
 
 AllCops:
   Include:
+    - '**/*.gemspec'
+    - '**/*.podspec'
+    - '**/*.jbuilder'
+    - '**/*.rake'
+    - '**/*.opal'
+    - '**/config.ru'
+    - '**/Gemfile'
+    - '**/Rakefile'
+    - '**/Capfile'
+    - '**/Guardfile'
+    - '**/Podfile'
+    - '**/Thorfile'
+    - '**/Vagrantfile'
+    - '**/Berksfile'
+    - '**/Cheffile'
+    - '**/Vagabondfile'
+    - '**/Fastfile'
     - '**/*.builder'
 
 Rails:
@@ -40,3 +57,8 @@ Style/StringLiterals:
 
 Rails/HttpPositionalArguments:
   Enabled: false
+
+Rails/SkipsModelValidations:
+  Exclude:
+    - 'db/migrate/*.rb'
+    - 'app/controllers/user_controller.rb'
diff --git a/Gemfile b/Gemfile
index ef93f0d8ff0960b072d87945805c46c87daecee1..34768095f3ca07c2c7037df8fff3d531b992f8d5 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -41,30 +41,30 @@ gem "autoprefixer-rails"
 gem "image_optim_rails"
 
 # Load rails plugins
-gem "rails-i18n", "~> 4.0.0"
-gem "dynamic_form"
-gem "rinku", ">= 1.2.2", :require => "rails_rinku"
-gem "oauth-plugin", ">= 0.5.1"
-gem "validates_email_format_of", ">= 1.5.1"
+gem "actionpack-page_caching"
 gem "composite_primary_keys", "~> 8.1.0"
-gem "http_accept_language", "~> 2.0.0"
-gem "paperclip", "~> 4.0"
 gem "deadlock_retry", ">= 1.2.0"
+gem "dynamic_form"
+gem "http_accept_language", "~> 2.0.0"
 gem "i18n-js", ">= 3.0.0.rc10"
+gem "oauth-plugin", ">= 0.5.1"
+gem "paperclip", "~> 4.0"
 gem "rack-cors"
-gem "actionpack-page_caching"
+gem "rails-i18n", "~> 4.0.0"
+gem "rinku", ">= 1.2.2", :require => "rails_rinku"
+gem "validates_email_format_of", ">= 1.5.1"
 
 # Sanitise URIs
 gem "rack-uri_sanitizer"
 
 # Omniauth for authentication
 gem "omniauth"
-gem "omniauth-openid"
-gem "omniauth-google-oauth2", ">= 0.2.7"
 gem "omniauth-facebook"
-gem "omniauth-windowslive"
 gem "omniauth-github"
+gem "omniauth-google-oauth2", ">= 0.2.7"
 gem "omniauth-mediawiki", ">= 0.0.3"
+gem "omniauth-openid"
+gem "omniauth-windowslive"
 
 # Markdown formatting support
 gem "redcarpet"
@@ -73,8 +73,8 @@ gem "redcarpet"
 gem "libxml-ruby", ">= 2.0.5", :require => "libxml"
 
 # Use for HTML sanitisation
-gem "sanitize"
 gem "htmlentities"
+gem "sanitize"
 
 # Load SystemTimer for implementing request timeouts
 gem "SystemTimer", ">= 1.1.3", :require => "system_timer", :platforms => :ruby_18
@@ -85,6 +85,9 @@ gem "faraday"
 # Load geoip for querying Maxmind GeoIP database
 gem "geoip"
 
+# Load rotp to generate TOTP tokens
+gem "rotp"
+
 # Load memcache client in case we are using it
 gem "dalli"
 gem "kgio"
@@ -99,17 +102,17 @@ end
 
 # Gems needed for running tests
 group :test do
+  gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
   gem "rubocop"
   gem "timecop"
-  gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
   gem "webmock"
 end
 
 # Needed in development as well so rake can see konacha tasks
 group :development, :test do
+  gem "coveralls", :require => false
+  gem "factory_girl_rails"
   gem "jshint"
   gem "konacha"
   gem "poltergeist"
-  gem "factory_girl_rails"
-  gem "coveralls", :require => false
 end
index 5ad974190875fc5b7b4dd8501f43f335faf981d2..a8c91f460cffcc1d140e492f806bd5c64541a473 100644 (file)
@@ -15,8 +15,8 @@ GEM
       rack-test (~> 0.6.2)
       rails-dom-testing (~> 1.0, >= 1.0.5)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionpack-page_caching (1.0.2)
-      actionpack (>= 4.0.0, < 5)
+    actionpack-page_caching (1.1.0)
+      actionpack (>= 4.0.0, < 6)
     actionview (4.2.7.1)
       activesupport (= 4.2.7.1)
       builder (~> 3.1)
@@ -41,21 +41,20 @@ GEM
       tzinfo (~> 1.1)
     addressable (2.5.0)
       public_suffix (~> 2.0, >= 2.0.2)
-    arel (6.0.3)
+    arel (6.0.4)
     ast (2.3.0)
-    autoprefixer-rails (6.5.3)
+    autoprefixer-rails (6.7.2)
       execjs
     bigdecimal (1.1.0)
-    builder (3.2.2)
-    capybara (2.10.2)
+    builder (3.2.3)
+    capybara (2.12.0)
       addressable
       mime-types (>= 1.16)
       nokogiri (>= 1.3.3)
       rack (>= 1.0.0)
       rack-test (>= 0.5.4)
       xpath (~> 2.0)
-    climate_control (0.0.3)
-      activesupport (>= 3.0)
+    climate_control (0.1.0)
     cliver (0.3.2)
     cocaine (0.5.8)
       climate_control (>= 0.0.3, < 1.0)
@@ -65,17 +64,17 @@ GEM
     coffee-script (2.4.1)
       coffee-script-source
       execjs
-    coffee-script-source (1.11.1)
+    coffee-script-source (1.12.2)
     colorize (0.8.1)
     composite_primary_keys (8.1.4)
       activerecord (~> 4.2.0)
-    concurrent-ruby (1.0.2)
-    coveralls (0.8.16)
+    concurrent-ruby (1.0.4)
+    coveralls (0.8.19)
       json (>= 1.8, < 3)
       simplecov (~> 0.12.0)
-      term-ansicolor (~> 1.3.0)
+      term-ansicolor (~> 1.3)
       thor (~> 0.19.1)
-      tins (>= 1.6.0, < 2)
+      tins (~> 1.6)
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
     crass (1.0.2)
@@ -86,23 +85,23 @@ GEM
     erubis (2.7.0)
     execjs (2.7.0)
     exifr (1.2.5)
-    factory_girl (4.7.0)
+    factory_girl (4.8.0)
       activesupport (>= 3.0.0)
-    factory_girl_rails (4.7.0)
-      factory_girl (~> 4.7.0)
+    factory_girl_rails (4.8.0)
+      factory_girl (~> 4.8.0)
       railties (>= 3.0.0)
-    faraday (0.9.2)
+    faraday (0.10.1)
       multipart-post (>= 1.2, < 3)
     fspath (3.0.1)
-    geoip (1.6.2)
+    geoip (1.6.3)
     globalid (0.3.7)
       activesupport (>= 4.1.0)
-    hashdiff (0.3.1)
+    hashdiff (0.3.2)
     hashie (3.4.6)
     htmlentities (4.3.4)
     http_accept_language (2.0.5)
-    i18n (0.7.0)
-    i18n-js (3.0.0.rc14)
+    i18n (0.8.0)
+    i18n-js (3.0.0.rc15)
       i18n (~> 0.6, >= 0.6.6)
     image_optim (0.24.1)
       exifr (~> 1.2, >= 1.2.2)
@@ -116,7 +115,7 @@ GEM
       sprockets
     image_size (1.5.0)
     in_threads (1.3.1)
-    jquery-rails (4.2.1)
+    jquery-rails (4.2.2)
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
       thor (>= 0.14, < 2.0)
@@ -124,14 +123,14 @@ GEM
       execjs (>= 1.4.0)
       multi_json (~> 1.0)
       therubyracer (~> 0.12.1)
-    json (1.8.3)
+    json (1.8.6)
     jsonify (0.3.1)
       multi_json (~> 1.0)
     jsonify-rails (0.3.2)
       actionpack
       jsonify (< 0.4.0)
     jwt (1.5.6)
-    kgio (2.10.0)
+    kgio (2.11.0)
     konacha (4.0.0)
       actionpack (>= 4.1, < 5)
       capybara
@@ -143,7 +142,7 @@ GEM
     libv8 (3.16.14.17)
     libxml-ruby (2.9.0)
     logstash-event (1.2.02)
-    logstasher (1.1.0)
+    logstasher (1.1.1)
       activerecord (>= 4.0)
       activesupport (>= 4.0)
       logstash-event (~> 1.2.0)
@@ -159,9 +158,9 @@ GEM
     mini_portile2 (2.1.0)
     minitest (5.10.1)
     multi_json (1.12.1)
-    multi_xml (0.5.5)
+    multi_xml (0.6.0)
     multipart-post (2.0.0)
-    nokogiri (1.6.8.1)
+    nokogiri (1.7.0.1)
       mini_portile2 (~> 2.1.0)
     nokogumbo (1.4.10)
       nokogiri
@@ -171,20 +170,20 @@ GEM
       oauth (~> 0.4.4)
       oauth2 (>= 0.5.0)
       rack
-    oauth2 (1.2.0)
-      faraday (>= 0.8, < 0.10)
+    oauth2 (1.3.0)
+      faraday (>= 0.8, < 0.11)
       jwt (~> 1.0)
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
       rack (>= 1.2, < 3)
-    omniauth (1.3.1)
+    omniauth (1.3.2)
       hashie (>= 1.2, < 4)
       rack (>= 1.0, < 3)
     omniauth-facebook (4.0.0)
       omniauth-oauth2 (~> 1.2)
-    omniauth-github (1.1.2)
-      omniauth (~> 1.0)
-      omniauth-oauth2 (~> 1.1)
+    omniauth-github (1.2.0)
+      omniauth (~> 1.3.2)
+      omniauth-oauth2 (>= 1.4.0, < 2.0)
     omniauth-google-oauth2 (0.4.1)
       jwt (~> 1.5.2)
       multi_json (~> 1.3)
@@ -214,17 +213,17 @@ GEM
     parser (2.3.3.1)
       ast (~> 2.2)
     pg (0.19.0)
-    poltergeist (1.11.0)
+    poltergeist (1.13.0)
       capybara (~> 2.1)
       cliver (~> 0.3.1)
       websocket-driver (>= 0.2.0)
     powerpack (0.1.1)
-    progress (3.2.2)
-    psych (2.2.1)
-    public_suffix (2.0.4)
+    progress (3.3.0)
+    psych (2.2.2)
+    public_suffix (2.0.5)
     r2 (0.2.6)
     rack (1.6.5)
-    rack-cors (0.4.0)
+    rack-cors (0.4.1)
     rack-openid (1.3.1)
       rack (>= 1.1.0)
       ruby-openid (>= 2.1.8)
@@ -244,9 +243,9 @@ GEM
       sprockets-rails
     rails-deprecated_sanitizer (1.0.3)
       activesupport (>= 4.2.0.alpha)
-    rails-dom-testing (1.0.7)
+    rails-dom-testing (1.0.8)
       activesupport (>= 4.2.0.beta, < 5.0)
-      nokogiri (~> 1.6.0)
+      nokogiri (~> 1.6)
       rails-deprecated_sanitizer (>= 1.0.1)
     rails-html-sanitizer (1.0.3)
       loofah (~> 2.0)
@@ -258,14 +257,15 @@ GEM
       activesupport (= 4.2.7.1)
       rake (>= 0.8.7)
       thor (>= 0.18.1, < 2.0)
-    rainbow (2.1.0)
-    rake (11.3.0)
-    redcarpet (3.3.4)
+    rainbow (2.2.1)
+    rake (12.0.0)
+    redcarpet (3.4.0)
     ref (2.0.0)
-    request_store (1.3.1)
+    request_store (1.3.2)
     rinku (2.0.2)
-    rubocop (0.46.0)
-      parser (>= 2.3.1.1, < 3.0)
+    rotp (3.3.0)
+    rubocop (0.47.1)
+      parser (>= 2.3.3.1, < 3.0)
       powerpack (~> 0.1)
       rainbow (>= 1.99.1, < 3.0)
       ruby-progressbar (~> 1.7)
@@ -277,7 +277,7 @@ GEM
       crass (~> 1.0.2)
       nokogiri (>= 1.4.4)
       nokogumbo (~> 1.4.1)
-    sass (3.4.22)
+    sass (3.4.23)
     sass-rails (5.0.6)
       railties (>= 4.0.0, < 6)
       sass (~> 3.1)
@@ -289,36 +289,36 @@ GEM
       json (>= 1.8, < 3)
       simplecov-html (~> 0.10.0)
     simplecov-html (0.10.0)
-    sprockets (3.7.0)
+    sprockets (3.7.1)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
     sprockets-rails (3.2.0)
       actionpack (>= 4.0)
       activesupport (>= 4.0)
       sprockets (>= 3.0.0)
-    term-ansicolor (1.3.2)
+    term-ansicolor (1.4.0)
       tins (~> 1.0)
-    therubyracer (0.12.2)
-      libv8 (~> 3.16.14.0)
+    therubyracer (0.12.3)
+      libv8 (~> 3.16.14.15)
       ref
     thor (0.19.4)
     thread_safe (0.3.5)
-    tilt (2.0.5)
+    tilt (2.0.6)
     timecop (0.8.1)
-    tins (1.13.0)
+    tins (1.13.2)
     tzinfo (1.2.2)
       thread_safe (~> 0.1)
     uglifier (3.0.4)
       execjs (>= 0.3.0, < 3)
-    unicode-display_width (1.1.1)
+    unicode-display_width (1.1.3)
     validates_email_format_of (1.6.3)
       i18n
     vendorer (0.1.16)
-    webmock (2.1.0)
+    webmock (2.3.2)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
       hashdiff
-    websocket-driver (0.6.4)
+    websocket-driver (0.6.5)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
     xpath (2.0.0)
@@ -373,6 +373,7 @@ DEPENDENCIES
   rails-i18n (~> 4.0.0)
   redcarpet
   rinku (>= 1.2.2)
+  rotp
   rubocop
   sanitize
   sass-rails (~> 5.0)
index 129b071f1b1e47dd261ad12623c21aa3d2255c4c..d036673b1ee1923bdffcdb8dfc36ab7cbd5cde15 100644 (file)
@@ -18,22 +18,22 @@ of packages required before you can get the various gems installed.
 
 ## Minimum requirements
 
-* Ruby 2.0
+* Ruby 2.3
 * RubyGems 1.3.1+
 * PostgreSQL 9.1+
 * ImageMagick
 * Bundler
 * Javascript Runtime
 
-These can be installed on Ubuntu 14.04 or later with:
+These can be installed on Ubuntu 16.04 or later with:
 
 ```
-sudo apt-get install ruby2.0 libruby2.0 ruby2.0-dev \
+sudo apt-get install ruby2.3 libruby2.3 ruby2.3-dev \
                      libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
-                     apache2 apache2-threaded-dev build-essential git-core \
+                     apache2 apache2-dev build-essential git-core \
                      postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
                      libsasl2-dev imagemagick
-sudo gem2.0 install bundler
+sudo gem2.3 install bundler
 ```
 
 ### Alternative platforms
index 0cd5ac72aa760553b8fdbada019af56c46cd19b4..f41f9676c7e4bf55510499a7803f493f1b9d5dd8 100644 (file)
@@ -4,7 +4,7 @@
 Vagrant.configure("2") do |config|
   # use official ubuntu image for virtualbox
   config.vm.provider "virtualbox" do |vb, override|
-    override.vm.box = "ubuntu/trusty64"
+    override.vm.box = "ubuntu/xenial64"
     override.vm.synced_folder ".", "/srv/openstreetmap-website"
     vb.customize ["modifyvm", :id, "--memory", "1024"]
     vb.customize ["modifyvm", :id, "--cpus", "2"]
index 0037f4610b5ef36e513e239c6369c80d9403e85b..361f2c84361173bc6948a7c3e661a6a10e44bc8b 100644 (file)
@@ -11,13 +11,13 @@ folder 'vendor/assets' do
   end
 
   folder 'leaflet' do
-    file 'leaflet.js', 'https://unpkg.com/leaflet@1.0.2/dist/leaflet-src.js'
-    file 'leaflet.css', 'https://unpkg.com/leaflet@1.0.2/dist/leaflet.css'
+    file 'leaflet.js', 'https://unpkg.com/leaflet@1.0.3/dist/leaflet-src.js'
+    file 'leaflet.css', 'https://unpkg.com/leaflet@1.0.3/dist/leaflet.css'
 
     [ 'layers.png', 'layers-2x.png',
       'marker-icon.png', 'marker-icon-2x.png',
       'marker-shadow.png' ].each do |image|
-      file "images/#{image}", "https://unpkg.com/leaflet@1.0.2/dist/images/#{image}"
+      file "images/#{image}", "https://unpkg.com/leaflet@1.0.3/dist/images/#{image}"
     end
 
     from 'git://github.com/kajic/leaflet-locationfilter.git' do
index 796a5f4d31d85f4ced3929b12cda6f091798cef3..9d7122e4da70013021b29f7801a5b5620c496a7e 100644 (file)
@@ -157,6 +157,10 @@ $(document).ready(function () {
     if (params.layers.indexOf(map.dataLayer.options.code) >= 0) {
       map.addLayer(map.dataLayer);
     }
+
+    if (params.layers.indexOf(map.gpsLayer.options.code) >= 0) {
+      map.addLayer(map.gpsLayer);
+    }
   }
 
   var placement = $('html').attr('dir') === 'rtl' ? 'right' : 'left';
index c294f13ef2ef749065a4753e3a0e5f13a369a03b..eedf718d3a262ceb332f99d9dd89a87f264f918e 100644 (file)
@@ -176,6 +176,7 @@ L.OSM.layers = function(options) {
 
       addOverlay(map.noteLayer, 'notes', OSM.MAX_NOTE_REQUEST_AREA);
       addOverlay(map.dataLayer, 'data', OSM.MAX_REQUEST_AREA);
+      addOverlay(map.gpsLayer, 'gps', Number.POSITIVE_INFINITY);
     }
 
     options.sidebar.addPane($ui);
index 4f3c7bc25d711561e9c1432b5a3c10a88faf5ca8..380955c363fcd2b06b75bb04180ef8218f221b7b 100644 (file)
@@ -55,6 +55,12 @@ L.OSM.Map = L.Map.extend({
 
     this.dataLayer = new L.OSM.DataLayer(null);
     this.dataLayer.options.code = 'D';
+
+    this.gpsLayer = new L.OSM.GPS({
+      pane: "overlayPane",
+      code: "G",
+      name: I18n.t("javascripts.map.base.gps")
+    });
   },
 
   updateLayers: function(layerParam) {
index a6b10821e868bc603da0b1d4e0bff296cf945818..7cfd50c8e23e09eb7fcc550ca159797e92a797d3 100644 (file)
@@ -213,6 +213,15 @@ L.OSM.share = function (options) {
       .attr('type', 'hidden')
       .appendTo($form);
 
+    var csrf_param = $("meta[name=csrf-param]").attr("content"),
+        csrf_token = $("meta[name=csrf-token]").attr("content");
+
+    $('<input>')
+      .attr('name', csrf_param)
+      .attr('value', csrf_token)
+      .attr('type', 'hidden')
+      .appendTo($form);
+
     $('<p>')
       .attr('class', 'deemphasize')
       .html(I18n.t('javascripts.share.image_size') + ' <span id="mapnik_image_width"></span> x <span id="mapnik_image_height"></span>')
index 632974f4fa28042412b832cf2754d9500982f0d9..47a28fd4041fd46a6a0c3eca84be7dff37cfe54d 100644 (file)
@@ -220,14 +220,14 @@ class AmfController < ApplicationController
     loaded_lang = "en"
 
     # Load English defaults
-    en = YAML.load(File.open("#{Rails.root}/config/potlatch/locales/en.yml"))["en"]
+    en = YAML.safe_load(File.open(Rails.root.join("config", "potlatch", "locales", "en.yml")))["en"]
 
     if lang == "en"
       return [loaded_lang, en]
     else
       # Use English as a fallback
       begin
-        other = YAML.load(File.open("#{Rails.root}/config/potlatch/locales/#{lang}.yml"))[lang]
+        other = YAML.safe_load(File.open(Rails.root.join("config", "potlatch", "locales", "#{lang}.yml")))[lang]
         loaded_lang = lang
       rescue
         other = en
@@ -875,7 +875,7 @@ class AmfController < ApplicationController
   end
 
   def getlocales
-    @locales ||= Locale.list(Dir.glob("#{Rails.root}/config/potlatch/locales/*").collect { |f| File.basename(f, ".yml") })
+    @locales ||= Locale.list(Dir.glob(Rails.root.join("config", "potlatch", "locales", "*")).collect { |f| File.basename(f, ".yml") })
   end
 
   ##
index 09a35beb351f67ac3e40e4eb7caa9023fd2e2396..354fcc7c0cba1b61e3a3d04f73e0e9ddcf0f3fbf 100644 (file)
@@ -419,6 +419,16 @@ class ApplicationController < ActionController::Base
 
   helper_method :preferred_editor
 
+  def update_totp
+    if defined?(TOTP_KEY)
+      cookies["_osm_totp_token"] = {
+        :value => ROTP::TOTP.new(TOTP_KEY, :interval => 3600).now,
+        :domain => "openstreetmap.org",
+        :expires => 1.hour.from_now
+      }
+    end
+  end
+
   private
 
   # extract authorisation credentials from headers, returns user = nil if none
index fa7944516620e442064b8f8d5adb118d92042761..6e5016ddce4ec7eb6b0fcfaab09fb9634ffe8045 100644 (file)
@@ -1,6 +1,7 @@
 class ExportController < ApplicationController
   before_action :authorize_web
   before_action :set_locale
+  before_action :update_totp, :only => [:finish]
 
   caches_page :embed
 
index 97e892156f097cc1a0cb22d51806ff5ec7efed4e..0ec1c8eb6cadc1d918607252ddd6d1bdeb767824 100644 (file)
@@ -39,7 +39,7 @@ class MessageController < ApplicationController
     message = Message.find(params[:message_id])
 
     if message.to_user_id == @user.id
-      message.update_attribute(:message_read, true)
+      message.update(:message_read => true)
 
       @message = Message.new(
         :recipient => message.sender,
index 1a4c9f148425eef9621568d8d822fd0a49a1a916..aa284ecdc100ba37135d7a8e5b9f38db35650218 100644 (file)
@@ -8,6 +8,7 @@ class SiteController < ApplicationController
   before_action :redirect_map_params, :only => [:index, :edit, :export]
   before_action :require_user, :only => [:welcome]
   before_action :require_oauth, :only => [:index]
+  before_action :update_totp, :only => [:index]
 
   def index
     unless STATUS == :database_readonly || STATUS == :database_offline
@@ -83,7 +84,7 @@ class SiteController < ApplicationController
       @lat = note.lat
       @lon = note.lon
       @zoom = 17
-    elsif params[:gpx]
+    elsif params[:gpx] && @user
       trace = Trace.visible_to(@user).find(params[:gpx])
       @lat = trace.latitude
       @lon = trace.longitude
index 6909ba948bc4c33fb1079f90e963a82e9e515ae3..549600df6d26819bdce4a1aa04fa816ee8227e77 100644 (file)
@@ -32,7 +32,7 @@ class Changeset < ActiveRecord::Base
   EXPAND = 0.1
 
   # maximum number of elements allowed in a changeset
-  MAX_ELEMENTS = 50000
+  MAX_ELEMENTS = 10000
 
   # maximum time a changeset is allowed to be open for.
   MAX_TIME_OPEN = 1.day
index bb31c82ee4586ac21ca5e2f4e4ba729dc3d0f29c..776182e6376c90e8be6224e3fcd9a580f0c26e9b 100644 (file)
@@ -5,7 +5,7 @@ class Language < ActiveRecord::Base
 
   def self.load(file)
     Language.transaction do
-      YAML.load(File.read(file)).each do |k, v|
+      YAML.safe_load(File.read(file)).each do |k, v|
         begin
           Language.update(k, :english_name => v["english"], :native_name => v["native"])
         rescue ActiveRecord::RecordNotFound
index e6d7a4e46f31cfbbc3a7f2b3d7a88944ffabd4f2..3d5e71ea27de1cd192315570c36488fd5fadd5bc 100644 (file)
@@ -94,7 +94,7 @@ class User < ActiveRecord::Base
       user = nil
     end
 
-    token.update_column(:expiry, 1.week.from_now) if token && user
+    token.update(:expiry => 1.week.from_now) if token && user
 
     user
   end
@@ -233,7 +233,7 @@ class User < ActiveRecord::Base
   # perform a spam check on a user
   def spam_check
     if status == "active" && spam_score > SPAM_THRESHOLD
-      update_column(:status, "suspended")
+      update(:status => "suspended")
     end
   end
 
index 6bc7435aeaa6590e6421386ce7ac2c6c007488c3..4f80f195279916daac70c8225386c47da0e73d80 100644 (file)
@@ -1,5 +1,6 @@
 class UserRole < ActiveRecord::Base
   belongs_to :user
+  belongs_to :granter, :class_name => "User"
 
   ALL_ROLES = %w(administrator moderator).freeze
 
index d401b4c34b32f4dc0d35668a01824a69d583d1c3..039c9a51cc5e205a1430490edcce984303998907 100644 (file)
@@ -1,6 +1,6 @@
 <div id="mapkey">
   <table class="mapkey-table">
-    <% YAML.load_file("#{Rails.root}/config/key.yml").each do |name,data| %>
+    <% YAML.load_file(Rails.root.join("config", "key.yml")).each do |name,data| %>
       <% data.each do |entry| %>
         <tr class="mapkey-table-entry" data-layer="<%= name %>" data-zoom-min="<%= entry['min_zoom'] %>" data-zoom-max="<%= entry['max_zoom'] %>">
           <td class="mapkey-table-key">
index be2cc0a99bb5813ef68fb761f1a8b49e388d2d97..5ff166beb1ab86812c100eb18d6d376534e857da 100644 (file)
@@ -58,6 +58,6 @@ module OpenStreetMap
     end
 
     # Configure image optimisation
-    config.assets.image_optim = YAML.load_file("#{Rails.root}/config/image_optim.yml")
+    config.assets.image_optim = YAML.load_file(Rails.root.join("config", "image_optim.yml"))
   end
 end
index fd388ad88221dd202570366c14aa6cb207ccff8b..6319be709e5e72a7723273f2b77d005857ae6129 100644 (file)
@@ -115,6 +115,8 @@ defaults: &defaults
   #mapzen_valhalla_key: ""
   # Thunderforest authentication details
   #thunderforest_key: ""
+  # Key for generating TOTP tokens
+  #totp_key: ""
 
 development:
   <<: *defaults
index da975acc9e90c1804060f615775a5d9d4724ceac..5e07cc0986f81c571b2bd3dc86343b0c4eaa80d0 100644 (file)
@@ -4,7 +4,7 @@
 Rails.application.config.assets.version = "1.0"
 
 # Location of manifest file.
-Rails.application.config.assets.manifest = Rails.root.join("tmp/manifest.json")
+Rails.application.config.assets.manifest = Rails.root.join("tmp", "manifest.json")
 
 # Add additional assets to the asset load path
 Rails.application.config.assets.paths << Rails.root.join("config")
index cda96e038018e56263b3c836ea00850661534c3b..5c83c045d777266178e66ce2f19d9e61fc470005 100644 (file)
@@ -1,5 +1,5 @@
 begin
-  BANNERS = YAML.load_file("#{Rails.root}/config/banners.yml").deep_symbolize_keys
+  BANNERS = YAML.load_file(Rails.root.join("config", "banners.yml")).deep_symbolize_keys
 rescue
   BANNERS = {}.freeze
 end
index 5504a2b3f2e4e78216458f2033c3ad31bdee1900..d117707bef68ca7363c92c030271e1f69d608d5b 100644 (file)
@@ -16,7 +16,7 @@ if defined?(MEMCACHE_SERVERS)
 else
   require "openid/store/filesystem"
 
-  openid_store = OpenID::Store::Filesystem.new(Rails.root.join("tmp/openids"))
+  openid_store = OpenID::Store::Filesystem.new(Rails.root.join("tmp", "openids"))
 end
 
 openid_options = { :name => "openid", :store => openid_store }
index 0b6f7be2a9f8c0fd794b1f565756a1adee9d26cf..c679cd4e2df24bf9aa9b42f14531f8ae08f253e5 100644 (file)
@@ -1 +1 @@
-WIKI_PAGES = YAML.load_file("#{Rails.root}/config/wiki_pages.yml")
+WIKI_PAGES = YAML.load_file(Rails.root.join("config", "wiki_pages.yml"))
index 7940db16298cf7efb4fbbe33c3c88ac72936171b..671d4a77c9f024586aab874053c609d624073419 100644 (file)
@@ -2290,6 +2290,7 @@ ast:
         header: Capes del mapa
         notes: Notes de mapa
         data: Datos del mapa
+        gps: Traces GPS públiques
         overlays: Activar les superposiciones pa diagnosticar el mapa
         title: Capes
       copyright: © <a href='%{copyright_url}'>collaboradores d'OpenStreetMap</a>
@@ -2373,6 +2374,11 @@ ast:
         against_oneway_without_exit: Dir escontra direición per %{name}
         end_oneway_without_exit: Final de sentíu únicu en %{name}
         roundabout_with_exit: Na rotonda coyer la salida %{exit} haza %{name}
+        turn_left_with_exit: Na rotonda xira a la izquierda haza %{name}
+        slight_left_with_exit: Na rotonda xira llixeramente a la izquierda haza %{name}
+        turn_right_with_exit: Na rotonda xira a la derecha haza %{name}
+        slight_right_with_exit: Na rotonda xira llixeramente a la derecha haza %{name}
+        continue_with_exit: Na rotonda siguir de frente haza %{name}
         unnamed: ensin nome
         courtesy: Direiciones cortesía de %{link}
       time: Tiempu
index b72f1ed4ae4007db4686fcc902885f2477bb193b..301e5ade3539c7371559e4ea3126d77a6dbf24f0 100644 (file)
@@ -98,7 +98,7 @@ be-Tarask:
     created: Створана
     closed: Закрытае
     changeset:
-      title: Набор зьменаў
+      title: 'Набор зьменаў: %{id}'
       changesetxml: Набор зьменаў у фармаце XML
       osmchangexml: osmChange XML
       feed:
@@ -114,7 +114,7 @@ be-Tarask:
       entry: Адносіны %{relation_name}
       entry_role: Адносіны %{relation_name} (як %{relation_role})
     not_found:
-      sorry: Прабачце, %{type} з ідэнтыфікатарам %{id} ня знойдзены.
+      sorry: Прабачце, %{type}  %{id} ня знойдзены.
       type:
         node: вузел
         way: шлях
@@ -140,13 +140,13 @@ be-Tarask:
       load_data: Загрузіць зьвесткі
       loading: Загрузка…
     tag_details:
-      tags: 'Меткі:'
+      tags: Меткі
       wiki_link:
         key: Старонка вікі, якая апісвае тэг %{key}
         tag: Старонка вікі, якая апісвае тэг %{key}=%{value}
       wikipedia_link: Артыкул %{page} у Вікіпэдыі
     note:
-      title: Нататка
+      title: 'Нататка: %{id}'
   changeset:
     changeset_paging_nav:
       showing_page: Старонка %{page}
@@ -409,7 +409,7 @@ be-Tarask:
           archaeological_site: Археалягічныя раскопкі
           battlefield: Поле гістарычнай бойкі
           boundary_stone: Памежны камень
-          building: Ð\91удынак
+          building: Ð\93Ñ\96Ñ\81Ñ\82аÑ\80Ñ\8bÑ\87нÑ\8b Ð±удынак
           castle: Замак
           church: Царква
           citywalls: Мескія муры
@@ -561,7 +561,7 @@ be-Tarask:
           preserved: Закансэрваваная чыгуначная каляя
           spur: Чыгуначнае разгалінаваньне
           station: Чыгуначная станцыя
-          subway: Ð¡Ñ\82анÑ\86Ñ\8bÑ\8f Ð¼этро
+          subway: Ð\9cэтро
           subway_entrance: Уваход у мэтро
           switch: Чыгуначная стрэлка
           tram: Трамвайная каляя
@@ -689,11 +689,11 @@ be-Tarask:
   layouts:
     logo:
       alt_text: Лягатып OpenStreetMap
-    home: дамоў
-    logout: Ð²ыйсьці
-    log_in: увайсьці
+    home: Ð\9fеÑ\80айÑ\81Ñ\8cÑ\86Ñ\96 Ð´Ð°Ð¼Ð¾Ñ\9e
+    logout: Ð\92ыйсьці
+    log_in: Увайсьці
     log_in_tooltip: Увайсьці з існуючым рахункам
-    sign_up: Ð·арэгістравацца
+    sign_up: Ð\97арэгістравацца
     sign_up_tooltip: Стварыць рахунак для рэдагаваньня
     edit: Рэдагаваць
     history: Гісторыя
@@ -714,7 +714,7 @@ be-Tarask:
       для чытаньня, таму што праводзяцца неабходныя тэхнічныя работы.
     donate: Падтрымайце OpenStreetMap %{link} у фонд абнаўленьня абсталяваньня.
     help: Дапамога
-    copyright: Аўтарскія правы і ліцэнзія
+    copyright: Аўтарскія правы
     community_blogs: Блёгі супольнасьці
     community_blogs_title: Блёгі чальцоў супольнасьці OpenStreetMap
     foundation: Фундацыя
@@ -738,17 +738,14 @@ be-Tarask:
     legal_babble:
       title_html: Аўтарскія правы і ліцэнзія
       intro_1_html: |-
-        OpenStreetMap is <i>open data</i>, licensed under the <a
-        href="http://opendatacommons.org/licenses/odbl/">Open Data
-        Commons Open Database License</a> (ODbL).
-      intro_2_html: |-
-        Вы можаце капіяваць, распаўсюджваць, перадаваць і зьмяняць нашыя мапы
-        і зьвесткі, да той пары, пакуль Вы спасылаецеся на OpenStreetMap і яе
-        ўдзельнікаў. Калі Вы зьмяняеце ці выкарыстоўваеце нашыя мапы і зьвесткі, Вы можаце
-        распаўсюджваць вынікі толькі на ўмовах такой жа ліцэнзіі. Поўны тэкст ліцэнзіі
-        <a
-        href="http://creativecommons.org/licenses/by-sa/2.0/legalcode">legal
-        code</a> растлумачыць Вам правы і адказнасьці.
+        OpenStreetMap<sup><a href="#trademarks">&reg;</a></sup> — <i>вольныя зьвесткі</i>, ліцэнзаваныя паводле <a
+        href="http://opendatacommons.org/licenses/odbl/">ліцэнзіі Адкрытых баз зьвестак Адкрытых агульных зьвестак</a> (ODbL) <a
+        href="http://osmfoundation.org/">Фундацыяй OpenStreetMap Foundation</a> (OSMF).
+      intro_2_html: Вы можаце капіяваць, распаўсюджваць, перадаваць і зьмяняць нашыя
+        зьвесткі да той пары, пакуль Вы спасылаецеся на OpenStreetMap і яе ўдзельнікаў.
+        Калі Вы зьмяняеце ці выкарыстоўваеце нашыя зьвесткі, Вы можаце распаўсюджваць
+        вынікі толькі на ўмовах такой жа ліцэнзіі. Поўны <a href="http://opendatacommons.org/licenses/odbl/1.0/">тэкст
+        ліцэнзіі</a> растлумачыць Вам правы і адказнасьці.
       credit_title_html: Як спасылацца на OpenStreetMap
       credit_1_html: |-
         Калі Вы выкарыстоўваеце выявы мапаў OpenStreetMap, мы патрабуем, каб
@@ -872,14 +869,12 @@ be-Tarask:
       outbox: зыходзячыя
       messages: Вы маеце %{new_messages} і %{old_messages}
       new_messages:
-        few: '%{count} новыя паведамленьні'
-        many: '%{count} новых паведамленьняў'
         one: '%{count} новае паведамленьне'
+        few: '%{count} новыя паведамленьні'
         other: '%{count} новых паведамленьняў'
       old_messages:
-        few: '%{count} старыя паведамленьня'
-        many: '%{count} старых паведамленьняў'
         one: '%{count} старое паведамленьне'
+        few: '%{count} старыя паведамленьні'
         other: '%{count} старых паведамленьняў'
       from: Ад
       subject: Тэма
@@ -911,9 +906,8 @@ be-Tarask:
       inbox: уваходзячыя
       outbox: зыходзячыя
       messages:
-        few: Вы маеце %{count} дасланыя паведамленьня
-        many: Вы маеце %{count} дасланых паведамленьняў
         one: Вы маеце %{count} дасланае паведамленьне
+        few: Вы маеце %{count} дасланыя паведамленьні
         other: Вы маеце %{count} дасланых паведамленьняў
       to: Да
       subject: Тэма
@@ -1095,9 +1089,16 @@ be-Tarask:
       upload_trace: Загрузіць трэк
       see_all_traces: Паказаць усе трэкі
       see_your_traces: Паказаць усе Вашыя трэкі
-      traces_waiting: У Вас %{count} трэкаў, якія чакаюць загрузкі. Калі ласка, пачакайце
-        сканчэньня перадачы гэтых трэкаў, перад тым як загружаць іншыя, гэта дазволіць
-        не блякаваць чаргу для іншых удзельнікаў.
+      traces_waiting:
+        one: Вы маеце %{count} трэк, які чакае загрузкі. Калі ласка, пачакайце сканчэньня
+          перадачы гэтага трэку перад тым, як загружаць іншыя, гэта дазволіць не блякаваць
+          чаргу для іншых удзельнікаў.
+        few: Вы маеце %{count} трэкі, якія чакаюць загрузкі. Калі ласка, пачакайце
+          сканчэньня перадачы гэтых трэкаў перад тым, як загружаць іншыя, гэта дазволіць
+          не блякаваць чаргу для іншых удзельнікаў.
+        other: Вы маеце %{count} трэкаў, якія чакаюць загрузкі. Калі ласка, пачакайце
+          сканчэньня перадачы гэтых трэкаў перад тым, як загружаць іншыя, гэта дазволіць
+          не блякаваць чаргу для іншых удзельнікаў.
     trace_optionals:
       tags: Тэгі
     view:
@@ -1463,7 +1464,7 @@ be-Tarask:
       button: Пацьвердзіць
       success: Ваш рахунак пацьверджаны, дзякуй за рэгістрацыю!
       already active: Гэты рахунак ужо пацьверджаны.
-      unknown token: Ð\92Ñ\8bглÑ\8fдае, Ñ\88Ñ\82о Ð³Ñ\8dÑ\82Ñ\8b ÐºÐ»Ñ\8eÑ\87 не існуе.
+      unknown token: Ð\93Ñ\8dÑ\82Ñ\8b ÐºÐ¾Ð´ Ð¿Ð°Ñ\86Ñ\8cвеÑ\80джанÑ\8cнÑ\8f Ñ\81конÑ\87Ñ\8bÑ\9eÑ\81Ñ\8f Ð°Ð»Ñ\8cбо не існуе.
     confirm_resend:
       success: Мы даслалі новы ліст з пацьверджаньнем на адрас %{email} і, як толькі
         Вы пацьвердзіце Ваш рахунак, Вы зможаце пачаць працаваць з мапамі.<br /><br
@@ -1476,7 +1477,7 @@ be-Tarask:
       press confirm button: Націсьніце кнопку пацьверджаньня ніжэй, каб пацьвердзіць
         Ваш новы адрас электроннай пошты.
       button: Пацьвердзіць
-      success: Ð\92аÑ\88 Ð°Ð´Ñ\80аÑ\81 Ñ\8dлекÑ\82Ñ\80оннай Ð¿Ð¾Ñ\88Ñ\82Ñ\8b Ð¿Ð°Ñ\86Ñ\8cвеÑ\80джанÑ\8b, Ð´Ð·Ñ\8fкÑ\83й Ð·Ð° Ñ\80Ñ\8dгÑ\96Ñ\81Ñ\82Ñ\80аÑ\86Ñ\8bÑ\8e!
+      success: Ð\97Ñ\8cмена Ð\92аÑ\88ага Ð°Ð´Ñ\80аÑ\81Ñ\83 Ñ\8dлекÑ\82Ñ\80оннай Ð¿Ð¾Ñ\88Ñ\82Ñ\8b Ð¿Ð°Ñ\86Ñ\8cвеÑ\80джанаÑ\8f!
       failure: Адрас электроннай пошты ужо быў пацьверджаны гэтым ключом.
     set_home:
       flash success: Вашае месцазнаходжаньне пасьпяхова захаванае
@@ -1484,7 +1485,7 @@ be-Tarask:
       flash success: Усе Вашыя рэдагаваньні цяпер публічныя, і цяпер Вам дазволена
         рэдагаваньне.
     make_friend:
-      success: Цяпер %{name} — Ваш сябар.
+      success: Цяпер %{name} — Ваш сябар!
       failed: Прабачце, немагчыма дадаць %{name} да сьпісу сяброў.
       already_a_friend: Вы ўжо сябруеце з %{name}.
     remove_friend:
@@ -1497,8 +1498,8 @@ be-Tarask:
       title: Удзельнікі
       heading: Карыстальнікі
       showing:
-        one: Ð\9fаказанаÑ\8f Ñ\81Ñ\82аÑ\80онка %{page} Ð· (%{first_item} %{items})
-        other: Ð\9fаказанÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96 %{page} (%{first_item}-%{last_item} з %{items})
+        one: Ð¡Ñ\82аÑ\80онка %{page} (%{first_item} Ð· %{items})
+        other: Ð¡Ñ\82аÑ\80онкÑ\96 %{page} (%{first_item}â\80\94%{last_item} з %{items})
       summary: '%{name} створаны з %{ip_address}, %{date}'
       summary_no_ip: '%{name} створаны %{date}'
       confirm: Пацьвердзіць выбраных карыстальнікаў
@@ -1597,9 +1598,8 @@ be-Tarask:
       revoke: Адклікаць!
       flash: Гэтае блякаваньне было адкліканае.
     period:
-      few: '%{count} гадзіны'
-      many: '%{count} гадзінаў'
       one: '%{count} гадзіна'
+      few: '%{count} гадзіны'
       other: '%{count} гадзінаў'
     partial:
       show: Паказаць
index 882321eba5178f14ae1b7176cf06c9b0cab40650..474ab8389721fbce04cc2338ae946055c5a8b22c 100644 (file)
@@ -82,7 +82,9 @@ bg:
   browse:
     created: Създаден
     closed: Затворен
+    created_html: Създаден <abbr title="%{title}">преди %{time}</abbr>
     version: Версия
+    in_changeset: Списък с промени
     anonymous: анонимен
     no_comment: (без коментар)
     part_of: Част от
@@ -91,10 +93,12 @@ bg:
     view_details: Вижте детайлите
     location: 'Местоположение:'
     changeset:
+      title: 'Списък с промени: %{id}'
       belongs_to: Автор
       node: Точки (%{count})
       node_paginated: Точки (%{x}-%{y} от %{count})
       way: Пътища (%{count})
+      way_paginated: Пътища (%{x}-%{y} от общо %{count})
       relation: Релации (%{count})
       relation_paginated: Релации(%{x}-%{y} от %{count})
       comment: Коментари (%{count})
@@ -143,6 +147,8 @@ bg:
         relation: релация
     start_rjs:
       loading: Зареждане...
+    tag_details:
+      tags: Етикети
     note:
       description: Описание
   changeset:
@@ -161,6 +167,9 @@ bg:
       area: Област
     list:
       title: Списък промени
+      empty: Няма намерени списъци с промени.
+      empty_area: Няма списъци с промени в този район.
+      empty_user: Няма списъци с промени от този потребител.
       load_more: Зареждане на още
     rss:
       full: Пълна дискусия
@@ -172,7 +181,9 @@ bg:
       title_friends: Дневници на приятели
       title_nearby: Дневници на потребители наблизо
       user_title: Дневник на %{user}
+      new: Нов запис в дневник
       no_entries: Няма записи в дневника
+      older_entries: По-стари записи
       newer_entries: По-нови записи
     edit:
       subject: 'Тема:'
@@ -629,7 +640,7 @@ bg:
     export_data: Изнасяне на данни
     gps_traces: GPS-следи
     gps_traces_tooltip: Управление на GPS-следи
-    user_diaries: Дневници на потребителя
+    user_diaries: Дневник
     user_diaries_tooltip: Дневници на потребители
     edit_with: Редактиране с %{editor}
     tag_line: Свободна Wiki-карта на света
index 29d6c62fa63912babc9075f81ee544ec43fbce1a..d74d289a7516082f29381d421701b864f6d90f67 100644 (file)
@@ -5,6 +5,7 @@
 # Author: Bellayet
 # Author: Bodhisattwa
 # Author: Ehsanulhb
+# Author: Elias Ahmmad
 # Author: Kayser Ahmad
 # Author: Nasir8891
 # Author: Sayma Jahan
@@ -793,6 +794,7 @@ bn:
           "yes": দোকান
         tourism:
           attraction: আকর্ষণ
+          gallery: গ্যালারি
           guest_house: অতিথি বাড়ি
           hostel: হোস্টেল
           hotel: হোটেল
@@ -902,6 +904,11 @@ bn:
       attribution_example:
         title: আরোপণ উদাহরণ
       more_title_html: আরও খুঁজা হচ্ছে
+      more_1_html: |-
+        আমাদের উপাত্তের ব্যাবহার, ও কৃতজ্ঞতা স্বীকার সম্পর্কে আরও জানতে, এখানে <a
+        href="http://osmfoundation.org/Licence">OSMF Licence page</a> and the community <a
+        href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal
+        FAQ</a> পড়ুন।
       contributors_title_html: আমাদের অবদানকারীগণ
       infringement_title_html: কপিরাইট লঙ্ঘন
       trademarks_title_html: <span id="trademarks"></span>ট্রেডমার্ক
@@ -1028,21 +1035,91 @@ bn:
       subject: বিষয়
       date: তারিখ
       people_mapping_nearby: কাছাকাছি মানচিত্রকার
+    read:
+      subject: বিষয়
+      date: তারিখ
+      reply_button: প্রত্যুত্তর
+      unread_button: অপঠিত হিসেবে চিহ্নিত করুন
+      back: পিছনে
+      to: প্রাপক
+    sent_message_summary:
+      delete_button: মুছে ফেলুন
+    mark:
+      as_read: বার্তা পঠিত হিসেবে চিহ্নিত
+      as_unread: বার্তা অপঠিত হিসেবে চিহ্নিত
+    delete:
+      deleted: বার্তা মোছা হয়েছে
   site:
+    index:
+      js_1: আপনি এমন একটি ব্রাউজার ব্যবহার করছেন যা জাভাস্ক্রিপ্ট সমর্থন করে না অথবা
+        আপনি জাভাস্ক্রিপ্ট অক্ষম করেছেন।
+      permalink: স্থায়ী সংযোগ
+      createnote: একটি দ্রষ্টব্য যোগ করুন
+    edit:
+      user_page_link: ব্যবহারকারীর পাতা
+    sidebar:
+      search_results: অনুসন্ধানের ফলাফল
+      close: বন্ধ
     search:
+      search: অনুসন্ধান
+      get_directions: দিক নির্দেশনা পান
+      get_directions_title: দুটি বিন্দুর মধ্যে নির্দেশনী খুঁজুন
+      from: থেকে
+      to: হতে
       where_am_i: আমি কোথায়?
+      where_am_i_title: অনুসন্ধান যন্ত্র ব্যবহার করে বর্তমান অবস্থানটি বর্ণনা করুন
+      submit_text: যাও
     key:
       table:
         entry:
+          motorway: মোটোরপথ
           main_road: প্রধান সড়ক
+          trunk: মূল সড়ক
           primary: প্রাথমিক সড়ক
+          secondary: অপ্রধান সড়ক
           unclassified: অশ্রেণীকৃত সড়ক
+          cycleway: সাইকেলপথ
           cycleway_national: জাতীয় সাইকেলের রাস্তা
           cycleway_regional: আঞ্চলিক সাইকেলের রাস্তা
           cycleway_local: স্থানীয় সাইকেলের রাস্তা
+          footway: ফুটপাথ
+          rail: রেলপথ
+          subway: ভূগর্ভস্থ পথ
+          tram:
+            1: ট্রাম
+          cable:
+          - ক্যাবল কার
+          apron:
+            1: টার্মিনাল
+          admin: প্রশাসনিক সীমানা
+          forest: অরণ্য
+          golf: গল্ফ মাঠ
+          park: উদ্যান
+          resident: আবাসিক এলাকা
+          industrial: শিল্পাঞ্চল
+          commercial: বাণিজ্যিক এলাকা
+          lake:
+          - হ্রদ
+          - জলাধার
+          farm: খামার
+          cemetery: কবরস্থান
+          centre: ক্রীড়া কেন্দ্র
+          military: সামরিক এলাকা
+          school:
+          - বিদ্যালয়
+          - বিশ্ববিদ্যালয়
+          summit:
+            1: শৃঙ্গ
           bicycle_shop: সাইকেলের দোকান
           bicycle_parking: সাইকেল পার্কিং
           toilets: পায়খানা
+    richtext_area:
+      edit: সম্পাদনা
+      preview: প্রাকদর্শন
+    markdown_help:
+      link: লিঙ্ক
+      image: চিত্র
+      url: ইউআরএল
   trace:
     create:
       upload_trace: জিপিএস অনুসরণ আপলোড
@@ -1062,11 +1139,14 @@ bn:
       owner: 'মালিক:'
       description: 'বিবরণ:'
       tags: 'ট্যাগসমূহ:'
+      save_button: পরিবর্তন সংরক্ষণ
+      visibility: দৃষ্টিযোগ্যতা
       visibility_help: এটার মানে কি?
     trace_form:
       upload_gpx: 'জিপিএক্স ফাইল আপলোড:'
       description: 'বিবরণ:'
       tags: 'ট্যাগসমূহ:'
+      visibility: 'দৃষ্টিযোগ্যতা:'
       visibility_help: এটার মানে কি?
       upload_button: আপলোড
       help: সাহায্য
@@ -1097,6 +1177,7 @@ bn:
       edit_track: এই অনুসরণটি সম্পাদনা করুন
       delete_track: এই অনুসরণটি মুছে ফেলুন
       trace_not_found: অনুসরণ পাওযা যায়নি।
+      visibility: দৃষ্টিযোগ্যতা
     trace_paging_nav:
       showing_page: '%{page} পাতা'
     trace:
@@ -1119,12 +1200,54 @@ bn:
       message: জিপিএক্স ফাইল আপলোড বর্তমানে সম্ভব নয়
     offline:
       message: জিপিএক্স ফাইল সংরক্ষণ এবং আপলোড বর্তমানে সম্ভব নয়
+  oauth_clients:
+    new:
+      title: একটি নতুন আবেদন নিবন্ধন করুন
+      submit: নিবন্ধন
+    edit:
+      submit: সম্পাদনা
+    show:
+      edit: বিবরণ সম্পাদনা করুন
+      confirm: আপনি কি নিশ্চিত?
+    form:
+      name: নাম
   user:
     login:
+      title: প্রবেশ
+      heading: প্রবেশ
+      email or username: ইমেইল ঠিকানা অথবা ব্যবহারকারীনাম
+      password: 'পাসওয়ার্ড:'
+      remember: আমাকে মনে রাখো
+      login_button: প্রবেশ
+      register now: এখনই নিবন্ধন করুন
+      with username: 'ইতিমধ্যে একটি ওপেনস্ট্রিটম্যাপ অ্যাকাউন্ট আছে? দয়া করে ব্যবহারকারীনাম
+        এবং পাসওয়ার্ড দিয়ে প্রবেশ করুন:'
+      new to osm: ওপেনস্ট্রিটম্যাপে নতুন?
+      no account: কোনও অ্যাকাউন্ট নেই?
       auth_providers:
+        google:
+          title: গুগল দিয়ে প্রবেশ
+        facebook:
+          title: ফেসবুক দিয়ে প্রবেশ
         github:
           title: গিটহাব দিয়ে প্রবেশ করুন
           alt: একটি গিটহাব অ্যাকাউন্ট দিয়ে প্রবেশ করুন
+        wikipedia:
+          title: উইকিপিডিয়া দিয়ে প্রবেশ
+        yahoo:
+          title: ইয়াহু দিয়ে প্রবেশ
+        wordpress:
+          title: ওয়ার্ডপ্রেস দিয়ে প্রবেশ
+    logout:
+      title: প্রস্থান
+      logout_button: প্রস্থান
+    lost_password:
+      heading: পাসওয়ার্ড ভুলে গেছেন?
+      email address: 'ইমেইল ঠিকানা:'
+    reset_password:
+      password: 'পাসওয়ার্ড:'
+      confirm password: 'পাসওয়ার্ড নিশ্চিত করুন:'
+      flash changed: আপনার পাসওয়ার্ড পরিবর্তন করা হয়েছে।
     terms:
       agree: একমত
       legale_select: 'আপনার দেশ বাছাই করুন:'
@@ -1133,9 +1256,15 @@ bn:
         italy: ইতালি
         rest_of_world: অন্যান্য দেশসমূহ
     view:
+      my edits: আমার সম্পাদনা
+      my profile: আমার প্রোফাইল
+      edits: সম্পাদনাসমূহ
+      email address: 'ই-মেইল ঠিকানা:'
       description: বিবরণ
+      settings_link_text: সেটিংস
       block_history: সক্রিয় বাধাসমূহ
       moderator_history: প্রদত্ত বাধাগুলি
+      comments: মন্তব্যসমূহ
       create_block: এই ব্যবহারকারীকে বাধা দাও
       activate_user: এই ব্যবহাকারীকে সক্রিয় করুন
       deactivate_user: এই ব্যবহারকারীকে নিষ্ক্রিয় করুন
@@ -1143,11 +1272,32 @@ bn:
       hide_user: এই ব্যবহারকারীকে লুকান
       unhide_user: এই ব্যবহাকারীকে দেখান
       delete_user: এই ব্যবহাকারীকে অপসারণ করুন
+      confirm: নিশ্চিত করুন
+    popup:
+      your location: আপনার অবস্থান
+    account:
+      current email address: 'বর্তমান ই-মেইল ঠিকানা:'
+      new email address: 'নতুন ই-মেইল ঠিকানা:'
+      public editing:
+        enabled link text: এটি কী?
+      contributor terms:
+        link text: এটি কী?
+      image: 'চিত্র:'
+      gravatar:
+        link text: এটি কী?
+      new image: চিত্র যোগ করুন
+      latitude: 'অক্ষাংশ:'
+      longitude: 'দ্রাঘিমাংশ:'
     confirm:
       button: নিশ্চিত করুন
+    confirm_email:
+      button: নিশ্চিত করুন
     go_public:
       flash success: আপনার সকল সম্পাদনা এখন উন্মুক্ত, এবং এখন আপনার সম্পাদনের অনুমতি
         রয়েছে।
+    list:
+      title: ব্যবহারকারীগণ
+      heading: ব্যবহারকারীগণ
   user_role:
     filter:
       not_an_administrator: শুধুমাত্র এডমিনিস্ট্রেটরই ব্যবহারকারীর দায়িত্ব প্রদান
@@ -1172,14 +1322,38 @@ bn:
         দেখুন যে এই ব্যবহারকারী এবং দায়িত্বটি সঠিক কিনা।'
   user_block:
     partial:
+      edit: সম্পাদনা
+      confirm: আপনি কি নিশ্চিত?
+      display_name: বাধাপ্রাপ্ত ব্যবহারকারী
       next: পরবর্তী »
       previous: « পূর্ববর্তী
     show:
+      created: তৈরি হয়েছে
+      ago: '%{time} আগে'
       status: স্থিতি
       show: দেখাও
       edit: সম্পাদনা
       confirm: আপনি কি নিশ্চিত?
+  note:
+    entry:
+      comment: মন্তব্য
   javascripts:
+    close: বন্ধ
+    share:
+      title: বণ্টন
+      cancel: বাতিল
+      image: চিত্র
+      format: 'বিন্যাস:'
+      download: ডাউনলোড
+      short_url: সংক্ষিপ্ত ইউআরএল
+    map:
+      layers:
+        data: মানচিত্র উপাত্ত
+    site:
+      edit_tooltip: মানচিত্রটি সম্পাদনা করুন
+    changesets:
+      show:
+        comment: মন্তব্য
     notes:
       new:
         add: টীকাযুক্ত করুন
@@ -1187,7 +1361,10 @@ bn:
         hide: লুকান
         resolve: মিমাংসা করুন
         reactivate: পুনঃসক্রিয়
+        comment: মন্তব্য
     directions:
+      directions: দিক
+      distance: দূরত্ব
       errors:
         no_place: দুঃখিত - এই স্থানটি খুঁজে পাওয়া যায়নি।
       instructions:
index 171fd03c531284bc035a55edf54c0a565750c76a..f9e647fa6587d700490424c0a20b98ec5e2febb8 100644 (file)
@@ -1059,9 +1059,9 @@ ca:
         Freqüents sobre legalitat</a>.
       more_2_html: Encara que les dades d'OpenStreetMap són dades obertes, no podem
         oferir una API gratuïta per als desenvolupadors de terceres parts. Vegeu la
-        <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Política d'ús
-        de l'API</a>, la <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Política
-        d'ús de les tessel·les</a> i la <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Política
+        <a href="https://operations.osmfoundation.org/policies/api/">política d'ús
+        de l'API</a>, la <a href="https://operations.osmfoundation.org/policies/tiles/">política
+        d'ús de les tessel·les</a> i la <a href="https://operations.osmfoundation.org/policies/nominatim/">política
         d'ús de Nominatim</a>.
       contributors_title_html: Els nostres col·laboradors
       contributors_intro_html: 'Els nostres col·laboradors són milers de persones.
@@ -1839,6 +1839,9 @@ ca:
         github:
           title: Inicia la sessió amb GitHub
           alt: Inicia la sessió amb un compte de GitHub
+        wikipedia:
+          title: Inicia la sessió amb Viquipèdia
+          alt: Inicia la sessió amb un compte de Viquipèdia
         yahoo:
           title: Inicieu la sessió amb Yahoo
           alt: Inici de sessió amb un compte OpenID de Yahoo
@@ -2354,6 +2357,7 @@ ca:
         header: Capes del mapa
         notes: Notes de mapa
         data: Dades del mapa
+        gps: Traces GPS públiques
         overlays: Activar capes extra per als problemes del mapa
         title: Capes del mapa
       copyright: © <a href='%{copyright_url}'>Col·laboradors d'OpenStreetMap</a>
@@ -2439,6 +2443,11 @@ ca:
         against_oneway_without_exit: Anar en contra-direcció a %{name}
         end_oneway_without_exit: Fi del sentit únic a %{name}
         roundabout_with_exit: A la rotonda, agafar la sortida %{exit} a %{name}
+        turn_left_with_exit: A la rotonda gireu a l'esquerra cap a %{name}
+        slight_left_with_exit: A la rotonda gireu lleument a l'esquerra cap a %{name}
+        turn_right_with_exit: A la rotonda gireu a la dreta cap a %{name}
+        slight_right_with_exit: A la rotonda gireu lleument a la dreta cap a %{name}
+        continue_with_exit: A la rotonda continueu endavant cap a %{name}
         unnamed: sense nom
         courtesy: Direccions cortesia de %{link}
       time: Temps
index f9e2aae62e0c35b5a3ad31e867ed953998851273..ca65c0af2717b82fc5ce4d42469105f9ebe00739 100644 (file)
@@ -2311,6 +2311,7 @@ cs:
         header: Mapové vrstvy
         notes: Poznámky k mapě
         data: Data k mapě
+        gps: Veřejné GPS stopy
         overlays: Zapnout vrstvy pro ladění mapy
         title: Vrstvy
       copyright: © <a href='%{copyright_url}'>přispěvatelé OpenStreetMap</a>
@@ -2393,6 +2394,11 @@ cs:
         against_oneway_without_exit: Jeďte protisměrem na %{name}
         end_oneway_without_exit: Konec jednosměrky na %{name}
         roundabout_with_exit: Na kruhovém objezdu vyjeďte %{exit}. výjezdem na %{name}
+        turn_left_with_exit: Na kruhovém objezdu odbočte vlevo na %{name}
+        slight_left_with_exit: Na kruhovém objezdu mírně vlevo na %{name}
+        turn_right_with_exit: Na kruhovém objezdu odbočte vpravo na %{name}
+        slight_right_with_exit: Na kruhovém objezdu mírně vpravo na %{name}
+        continue_with_exit: Na kruhovém objezdu pokračujte rovně na %{name}
         unnamed: nepojmenovaná cesta
         courtesy: Trasa díky %{link}
       time: Čas
index 107480c24f799c24a3ffa252927cd5f78b49d321..aeac28e90759b99982d25034e3153b7c4b19c075 100644 (file)
@@ -2404,6 +2404,7 @@ de:
         header: Kartenebenen
         notes: Hinweise/Fehlermeldungen
         data: Kartendaten
+        gps: Öffentliche GPS-Tracks
         overlays: Overlays zur Fehlersuche aktivieren
         title: Ebenen
       copyright: © <a href='%{copyright_url}'>OpenStreetMap-Mitwirkende</a>
@@ -2488,6 +2489,11 @@ de:
         against_oneway_without_exit: Gegen die Einbahnstraße gehen auf %{name}
         end_oneway_without_exit: Ende der Einbahnstraße auf %{name}
         roundabout_with_exit: Beim Kreisverkehr nimm die Ausfahrt %{exit} auf %{name}
+        turn_left_with_exit: Beim Kreisverkehr links abbiegen auf %{name}
+        slight_left_with_exit: Beim Kreisverkehr leicht links abbiegen auf %{name}
+        turn_right_with_exit: Beim Kreisverkehr rechts abbiegen auf %{name}
+        slight_right_with_exit: Beim Kreisverkehr leicht rechts abbiegen auf %{name}
+        continue_with_exit: Beim Kreisverkehr geradeaus bleiben auf %{name}
         unnamed: unbekannt
         courtesy: Routenanweisungen stammen von %{link}
       time: Zeit
index b1bf365ee562cd7e68950c62485d94e324e3c0b3..69b7a28b472328a9895693178723cf0056ecab76 100644 (file)
@@ -192,7 +192,7 @@ diq:
       previous: « Verên
     changeset:
       anonymous: Anonim
-      no_edits: (vurnayış çıniyo)
+      no_edits: (vırnayış çıniyo)
       view_changeset_details: Teferuatê vurnayışê seti bıvin
     changesets:
       id: ID
@@ -239,7 +239,7 @@ diq:
       when: Key
       comment: Mışewre
       ago: Verdê %{ago}
-      newer_comments: Mışewreyê Tewr Neweyi
+      newer_comments: Tewr Vatışê Newey
       older_comments: Vatışo Tewr Kehan
   export:
     title: Teber de
@@ -792,7 +792,7 @@ diq:
       url: GRE
   trace:
     edit:
-      filename: 'Nameyê dosya:'
+      filename: 'Namey dosya:'
       download: ron
       uploaded_at: 'Bar biyo:'
       points: 'Dawte:'
@@ -813,7 +813,7 @@ diq:
       title: Rêça %{name} mocnêyêna
       heading: Rêça %{name} mocnêyêna
       pending: PAWEDEYO
-      filename: 'Nameyê dosya:'
+      filename: 'Namey dosya:'
       download: ron
       uploaded: 'Bar biyo:'
       points: 'Dawte:'
@@ -911,7 +911,7 @@ diq:
       my edits: Iştirakê mı
       my traces: GPS rêçê mı
       my settings: Eyarê Mı
-      my comments: Mışewreyê mı
+      my comments: Mışewrey mı
       oauth settings: sazê OAuthi
       blocks on me: Bloqeyê mı
       blocks by me: Bloqe kerdışê mı
@@ -1059,7 +1059,7 @@ diq:
       heading: Blokeyê ke %{name} kerdê listey ênan
     blocks_by:
       title: Blokeyê ke %{name} kerdê
-      heading: Blokeyê ke %{name} kerdê listey ênan
+      heading: '%{name} ra lista blokan'
     show:
       title: Karber %{block_by} karber %{block_on} ke bloqe
       heading: Karber %{block_by} karber %{block_on} ke bloqe
index 4af67e6375ead33879b9f652dd91b8a12177c496..b7b89dcc896b0fece2055ede2d46ef699c40b46c 100644 (file)
@@ -1828,6 +1828,9 @@ el:
         github:
           title: Σύνδεση με το GitHub
           alt: Σύνδεση με λογαριασμό GitHub
+        wikipedia:
+          title: Σύνδεση με Wikipedia
+          alt: Συνδεθείτε με ένα Λογαριασμό Wikipedia
         yahoo:
           title: Σύνδεση με το Yahoo
           alt: Σύνδεση με ένα Yahoo OpenID
@@ -1885,6 +1888,7 @@ el:
       display name: 'Εμφανιζόμενο όνομα:'
       display name description: Το δημόσια εμφανιζόμενο όνομα χρήστη. Μπορείτε να
         το αλλάξετε αργότερα από τις προτιμήσεις.
+      external auth: 'Ελέγχος Ταυτότητας Τρίτου Μέρους:'
       password: 'Κωδικός:'
       confirm password: 'Επιβεβαίωση Κωδικού:'
       use external auth: 'Εναλλακτικά, χρησιμοποιήστε τρίτην υπηρεσία για είσοδο:'
@@ -2034,6 +2038,7 @@ el:
       gravatar:
         gravatar: Χρήση Gravatar
         link text: τι είναι αυτό;
+        enabled: Εμφάνισης του Gravatar σας έχει ενεργοποιηθεί.
       new image: Προσθήκη εικόνας
       keep image: Διατήρηση της τρέχουσας εικόνας
       delete image: Αφαίρεση της τρέχουσας εικόνας
@@ -2301,6 +2306,7 @@ el:
       link: Σύνδεσμος ή HTML
       long_link: Σύνδεσμος
       short_link: Σύντομος Σύνδεσμος
+      geo_uri: Geo URI
       embed: HTML
       custom_dimensions: Ορισμός προσαρμοσμένων διαστάσεων
       format: 'Μορφή:'
@@ -2335,6 +2341,7 @@ el:
         header: Στρώματα Χάρτη
         notes: Σημειώσεις Χάρτη
         data: Δεδομένα Χάρτη
+        gps: Δημόσια ίχνη GPS
         overlays: Ενεργοποίηση επικαλύψεων για την αντιμετώπιση προβλημάτων του χάρτη
         title: Στρώματα
       copyright: © <a href='%{copyright_url}'>Συνεισφέροντες του OpenStreetMap</a>
@@ -2394,14 +2401,20 @@ el:
       instructions:
         continue_without_exit: Συνεχίστε στην %{name}
         slight_right_without_exit: Ελαφριά δεξιά στην %{name}
+        offramp_right_without_exit: Πάρτε τη λωρίδα δεξιά προς %{name}
+        onramp_right_without_exit: Στρίψτε δεξιά στη λωρίδα προς %{name}
         endofroad_right_without_exit: Στο τέλος του δρόμου στρίψτε δεξιά στην %{name}
+        merge_right_without_exit: Ελαφριά δεξιά προς %{name}
         fork_right_without_exit: Στην διχάλα στρίψτε δεξιά στην %{name}
         turn_right_without_exit: Στρίψτε δεξιά στην %{name}
         sharp_right_without_exit: Κλειστά δεξιά στην %{name}
         uturn_without_exit: Αναστροφή στην %{name}
         sharp_left_without_exit: Κλειστά αριστερά στην %{name}
         turn_left_without_exit: Στρίψτε αριστερά στην %{name}
+        offramp_left_without_exit: Πάρτε τη λωρίδα αριστερά προς %{name}
+        onramp_left_without_exit: Στρίψτε αριστερά στη λωρίδα προς %{name}
         endofroad_left_without_exit: Στο τέλος του δρόμου στρίψτε αριστερά στην %{name}
+        merge_left_without_exit: Ελαφριά αριστερά προς %{name}
         fork_left_without_exit: Στη διχάλα στρίψτε αριστερά στην %{name}
         slight_left_without_exit: Ελαφριά αριστερά στην %{name}
         via_point_without_exit: (μέσω σημείου)
@@ -2415,6 +2428,11 @@ el:
         end_oneway_without_exit: Τέλος του μονόδρομου %{name}
         roundabout_with_exit: Στην κυκλική διασταύρωση, πάρτε την %{exit}η έξοδο προς
           %{name}
+        turn_left_with_exit: Στον κυκλικό κόμβο στρίψτε αριστερά προς %{name}
+        slight_left_with_exit: Στο κυκλικό κόμβο ελαφρά αριστερά προς %{name}
+        turn_right_with_exit: Στον κυκλικό κόμβο στρίψτε δεξιά προς %{name}
+        slight_right_with_exit: Στο κυκλικό κόμβο ελαφρά δεξιά προς %{name}
+        continue_with_exit: Στον κυκλικό κόμβο συνεχίστε ευθεία προς %{name}
         unnamed: ανώνυμος δρόμος
         courtesy: Οι οδηγίες είναι προσφορά του %{link}
       time: Διάρκεια
index d9c6cc8dd7fb3b87ae96c52c1d4322eaaae8d2fb..9389c0e2f9c403038ea3f12939dd7e4b4594a15e 100644 (file)
@@ -2213,6 +2213,7 @@ en:
         header: Map Layers
         notes: Map Notes
         data: Map Data
+        gps: Public GPS Traces
         overlays: Enable overlays for troubleshooting the map
         title: "Layers"
       copyright: "© <a href='%{copyright_url}'>OpenStreetMap contributors</a>"
index f109b20edc0be2adb05f0330b23f32a618d27a0f..3e4fe1bf7d88a7017bd26b7ded06aeb8e42fc182 100644 (file)
@@ -12,6 +12,7 @@
 # Author: Michawiki
 # Author: Objectivesea
 # Author: Petrus Adamus
+# Author: Rafaneta
 # Author: Robin van der Vliet
 # Author: Timsk
 # Author: Tradukisto
@@ -28,8 +29,8 @@ eo:
       changeset: Ŝanĝaro
       changeset_tag: Etikedo de ŝanĝaro
       country: Lando
-      diary_comment: Ĵurnala komento
-      diary_entry: Ĵurnala ero
+      diary_comment: Taglibra komento
+      diary_entry: Taglibra skribaĵo
       friend: Amiko
       language: Lingvo
       message: Mesaĝo
@@ -265,22 +266,22 @@ eo:
       full: Tuta diskuto
   diary_entry:
     new:
-      title: Nova ĵurnal-afiŝo
+      title: Nova taglibra afiŝo
       publish_button: Publiki
     list:
-      title: Ĵurnaloj de uzantoj
-      title_friends: Ĵurnaloj de amikoj
-      title_nearby: Ĵurnaloj de proksimaj uzantoj
-      user_title: Ĵurnalo de %{user}
-      in_language_title: Ĵurnal-afiŝoj en %{language}
-      new: Nova ĵurnal-afiŝo
-      new_title: Kreu novan afiŝon en vian uzant-ĵurnalo
-      no_entries: Neniaj ĵurnal-afiŝoj
-      recent_entries: Ĵusaj ĵurnal-afiŝoj
+      title: Taglibroj de uzantoj
+      title_friends: Taglibroj de amikoj
+      title_nearby: Taglibroj de proksimaj uzantoj
+      user_title: Taglibro de %{user}
+      in_language_title: Taglibraj afiŝoj en %{language}
+      new: Nova taglibra afiŝo
+      new_title: Kreu novan afiŝon en vian uzant-taglibro
+      no_entries: Neniuj taglibraj afiŝoj
+      recent_entries: Lastaj taglibraj afiŝoj
       older_entries: Pli malnovaj afiŝoj
       newer_entries: Pli novaj afiŝoj
     edit:
-      title: Redakti ĵurnal-afiŝon
+      title: Redakti taglibran afiŝon
       subject: 'Temo:'
       body: 'Enhavo:'
       language: 'Lingvo:'
@@ -291,16 +292,16 @@ eo:
       save_button: Konservi
       marker_text: Kie krei la afiŝon
     view:
-      title: Ĵurnalo de %{user} | %{title}
-      user_title: Ĵurnalo de %{user}
+      title: Taglibro de %{user} | %{title}
+      user_title: Taglibro de %{user}
       leave_a_comment: Komenti
       login_to_leave_a_comment: '%{login_link} por aldoni komenton'
       login: Ensaluti
       save_button: Konservi
     no_such_entry:
-      title: Ĉi tiu ĵurnal-afiŝo ne ekzistas
+      title: Ĉi tiu taglibra afiŝo ne ekzistas
       heading: 'Nenia afiŝo kun la identigilo: %{id}'
-      body: Bedaŭrinde, ne ekzistas ĵurnal-afiŝo kun la identigilo %{id}. Bonvolu
+      body: Bedaŭrinde, ne ekzistas taglibra afiŝo kun la identigilo %{id}. Bonvolu
         kontroli pri liter-eraroj, aŭ eble vi alklakis mis-ligilon.
     diary_entry:
       posted_by: Publikigita de %{link_user} je %{created} en %{language_link}
@@ -323,16 +324,16 @@ eo:
       edit: Redakti
     feed:
       user:
-        title: OpenStreetMap ĵurnal-afiŝoj de %{user}
-        description: Ĵusaj OpenStreetMap ĵurnal-afiŝoj de %{user}
+        title: OpenStreetMap taglibraj afiŝoj de %{user}
+        description: Lastaj OpenStreetMap taglibraj afiŝoj de %{user}
       language:
-        title: OpenStreetMap ĵurnal-afiŝoj en %{language_name}
-        description: Ĵusaj ĵuran-afiŝoj de OpenStreetMap-uzantoj en %{language_name}
+        title: OpenStreetMap-aj taglibraj afiŝoj en %{language_name}
+        description: Lastaj taglibraj afiŝoj de OpenStreetMap-uzantoj en %{language_name}
       all:
-        title: OpenStreetMap ĵurnal-afiŝoj
-        description: Ĵusaj ĵurnal-afiŝoj de OpenStreetMap-uzantoj
+        title: OpenStreetMap taglibraj afiŝoj
+        description: Lastaj taglibraj afiŝoj de OpenStreetMap-uzantoj
     comments:
-      has_commented_on: '%{display_name} komentis ĉe jenaj ĵurnal-afiŝoj'
+      has_commented_on: '%{display_name} komentis pri la jenaj taglibraj afiŝoj'
       post: Afiŝi
       when: Kiam
       comment: Komento
@@ -349,8 +350,9 @@ eo:
       map_image: Bildo de mapo (norma tavolo)
       embeddable_html: Enkorpigebla HTML
       licence: Permesilo
-      export_details: OpenStreetMap-datumoj estas disponebla laŭ la permesilo <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
-        Data Commons Open Database License</a> (ODbL).
+      export_details: OpenStreetMap-datumoj estas disponeblaj laŭ la permesilo <a
+        href="http://opendatacommons.org/licenses/odbl/1.0/">Open Data Commons Open
+        Database License</a> (ODbL).
       too_large:
         advice: 'Se la elportado malsukcesis, bonvolu uzi unu el jenaj fontoj:'
         body: La elektita areo estas tro granda por esti elportita kiel XML-datumojn
@@ -936,7 +938,7 @@ eo:
     log_in: Ensaluti
     log_in_tooltip: Ensaluti kun ekzistanta konto
     sign_up: Registriĝi
-    start_mapping: Eki mapigadon
+    start_mapping: Ekigi mapigadon
     sign_up_tooltip: Krei konton por redaktado
     edit: Redakti
     history: Historio
@@ -945,13 +947,13 @@ eo:
     export_data: Elporti datumojn
     gps_traces: GPS-spuroj
     gps_traces_tooltip: Manipuli la GPS-spurojn
-    user_diaries: Ĵurnaloj de uzantoj
-    user_diaries_tooltip: Esplori ĵurnalojn de uzantoj
+    user_diaries: Taglibroj de uzantoj
+    user_diaries_tooltip: Esplori taglibrojn de uzantoj
     edit_with: Redakti per %{editor}
     tag_line: La libera viki-mondmapo
     intro_header: Bonvenon al OpenStreetMap!
     intro_text: OpenStreetMap estas mapo de la mondo, kreata de homoj kiel vi, kaj
-      libere uzebla sub malferma permesilo.
+      libere uzebla laŭ la malferma permesilo.
     intro_2_create_account: Krei konton
     partners_html: Retgastigo estas liverata de %{ucl}, %{ic}, %{bytemark} kaj aliaj
       %{partners}.
@@ -988,7 +990,7 @@ eo:
       text: Vi legas la anglan version de paĝo pri kopirajto. Vi povas reveni al la
         %{native_link} de ĉi tiu paĝo aŭ vi povas ĉesi legi pri kopirajto kaj %{mapping_link}.
       native_link: Esperanta versio
-      mapping_link: eki mapigadon
+      mapping_link: ekigi mapigadon
     legal_babble:
       title_html: Kopirajto kaj permesilo
       intro_1_html: |-
@@ -1002,12 +1004,12 @@ eo:
         La plena <a href="http://opendatacommons.org/licenses/odbl/1.0/">interkonsento
         de uzado</a> eksplikas viajn rajtojn kaj devojn.
       intro_3_html: |-
-        La kartografio de niaj map-kaheloj kaj nia dokumentaro estas disponeblaj sub la permesilo <a href="https://creativecommons.org/licenses/by-sa/2.0/deed.eo">Creative
+        La kartografio de niaj map-kaheloj kaj nia dokumentaro estas disponeblaj laŭ la permesilo <a href="https://creativecommons.org/licenses/by-sa/2.0/deed.eo">Creative
         Commons Atribuite-Samkondiĉe 2.0</a> (CC BY-SA).
       credit_title_html: Kiel atribui aŭtorecon
       credit_1_html: 'Ni postulas, ke vi markos: &ldquo;&copy; Kontribuintoj de OpenStreetMap&rdquo;.'
-      credit_2_html: Vi ankaŭ devas klarigi, ke datumoj estas disponeblaj sub la permesilo
-        Open Database License, kaj kartografio de map-kaheloj sub la permesilo CC
+      credit_2_html: Vi ankaŭ devas klarigi, ke datumoj estas disponeblaj laŭ la permesilo
+        Open Database License, kaj kartografio de map-kaheloj laŭ la permesilo CC
         BY-SA. Vi povas indiki tion per fari ligilon al <a href="http://www.openstreetmap.org/copyright">ĉi
         tiu paĝo pri permesilo</a>. Alimaniere, se vi distribuas OSM en datuma formo,
         vi povas mencii nomo(j)n kaj ligilo(j)n al la permesilo(j). Se ne estas eble
@@ -1032,7 +1034,7 @@ eo:
         pri uzado de Nominatim</a>.
       contributors_title_html: Kunlaborantoj
       contributors_intro_html: 'Niaj kunlaborantoj estas miloj da homoj. Ni ankaŭ
-        inkludas datumoj sub malferma permesilo el landaj kartografiaj organizaĵoj
+        inkludas datumoj laŭ malferma permesilo el landaj kartografiaj organizaĵoj
         kaj el aliaj fontoj, inter ili:'
       contributors_at_html: |-
         <strong>Aŭstrujo</strong>: enhavas datumojn el <a href="http://data.wien.gv.at/">Stadt Wien</a> (sub <a href="http://creativecommons.org/licenses/by/3.0/at/deed.eo">CC BY</a>),
@@ -1046,7 +1048,7 @@ eo:
         Statistics Canada).
       contributors_fi_html: |-
         <strong>Suomujo</strong>: enhavas datumojn el
-        National Land Survey of Finland's Topographic Database kaj aliaj fontoj, sub la <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI permesilo</a>.
+        National Land Survey of Finland's Topographic Database kaj aliaj fontoj, laŭ la <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI permesilo</a>.
       contributors_fr_html: '<strong>Francujo</strong>: enhavas datumojn ricevitajn
         el ''Direction Générale des Impôts''.'
       contributors_nl_html: |-
@@ -1089,7 +1091,7 @@ eo:
   welcome_page:
     title: Bonvenon!
     introduction_html: Bonvenon al OpenStreetMap, la libera kaj redaktebla mapo de
-      la mondo. Nun kiam vi registriĝis, vi povas eki mapigadon. Jen estas mallonga
+      la mondo. Nun kiam vi registriĝis, vi povas ekigi mapigadon. Jen estas mallonga
       manlibreto kun la plej gravaj aĵoj kiuj vi povas scii.
     whats_on_the_map:
       title: Kio estas sur la mapo
@@ -1125,7 +1127,7 @@ eo:
       paragraph_1_html: OpenStreetMap havas kelkajn ejojn por lerni pri la projekto,
         por demandi pri ion ajn kaj kune diskuti kaj dokumenti pri mapigado. <a href='%{help_url}'>Alklaku
         por ricevi helpon</a>.
-    start_mapping: Eki mapigadon
+    start_mapping: Ekigi mapigadon
     add_a_note:
       title: Ĉu mankas al vi tempo por ridaktado? Aldonu rimarkon!
       paragraph_1_html: Se vi volas nur korekti iun etan kaj vi ne havas tempon por
@@ -1201,13 +1203,13 @@ eo:
       kaj ĝisdatigaj.
     community_driven_title: Kondukata de komunumo
     community_driven_html: |-
-      La komunumo de OpenStreetMap estas diversa, pasia kaj kreskas tagon post tago. Inter niaj kontribuantoj estas amatoroj de mapoj, istoj de GIS, inĝenieroj prizorgantaj OSM-servilojn, helpistoj kiuj mapigas en terenoj de katastrofoj kaj pli da aliuloj. Por lerni pli pri la komunumo, vidu <a href='%{diary_path}'>ĵurnalojn de uzantoj</a>,
+      La komunumo de OpenStreetMap estas diversa, pasia kaj kreskas tagon post tago. Inter niaj kontribuantoj estas ŝatantoj de mapoj, profesiuloj de GIS, inĝenieroj prizorgantaj OSM-servilojn, helpistoj kiuj mapas areojn tuŝitajn de katastrofoj kaj multaj aliaj. Por lerni pli pri la komunumo, vidu <a href='%{diary_path}'>taglibrojn de uzantoj</a>,
       <a href='http://blogs.openstreetmap.org/'>komunumajn taglibrojn</a> kaj la retpaĝon de <a href='http://www.osmfoundation.org/'>OSM Fondaĵo</a>.
     open_data_title: Malfermaj datumoj
     open_data_html: 'OpenStreetMap estas <i>malfermaj datumoj</i>: vi povas uzi ĝin
       kiamaniere vi volas sub la kondiĉo de vi atribuos aŭtorecon al OpenStreetMap
       kaj ĝiaj kontribuintoj. Se vi modifos aŭ uzos niajn datumojn, vi povos distribui
-      la verkon nur sub la sama permesilo. Vidu la <a href=''%{copyright_path}''>paĝon
+      la verkon nur laŭ la sama permesilo. Vidu la <a href=''%{copyright_path}''>paĝon
       pri kopirajto kaj permesilo</a> por pli da detaloj.'
     legal_title: Leĝaj demandoj
     legal_html: Ĉi tiu retejo kaj aliaj servoj estas formale administrataj de la <a
@@ -1219,9 +1221,9 @@ eo:
     partners_title: Kunlaborantoj
   notifier:
     diary_comment_notification:
-      subject: '[OpenStreetMap] %{user} komentis ĵurnal-afiŝon'
+      subject: '[OpenStreetMap] %{user} komentis pri taglibra afiŝo'
       hi: Saluton %{to_user},
-      header: '%{from_user} komentis la afiŝon en OpenStreetMap-ĵurnalo kun la temo
+      header: '%{from_user} komentis pri la OpenStreetMap-taglibra afiŝo kun la temo
         %{subject}:'
       footer: Vi ankaŭ povas legi la komenton ĉe %{readurl} kaj komenti ĝin ĉe %{commenturl}
         aŭ responde ĉe %{replyurl}
@@ -1402,7 +1404,7 @@ eo:
       shortlink: Mallonga ligilo
       createnote: Aldoni rimarkon
       license:
-        copyright: Kopirajto de OpenStreetMap kaj kontribuintoj, sub malferma permesilo
+        copyright: Kopirajto de OpenStreetMap kaj kontribuintoj, laŭ malferma permesilo
       remote_failed: Redaktado malsukcesis - certigu ĉu JOSM aŭ Merkaartor estas startigita
         kaj ĉu defora aliro estas aktiva
     edit:
@@ -1657,7 +1659,7 @@ eo:
       allow_to: 'Permesi al porklienta aplikaĵo:'
       allow_read_prefs: legi agordojn de uzanto.
       allow_write_prefs: modifi viajn agordojn de uzanto.
-      allow_write_diary: krei ĵurnal-afiŝojn, komenti kaj amikigi aliajn.
+      allow_write_diary: afiŝi en taglibro, komenti kaj amikiĝi.
       allow_write_api: redakti la mapon.
       allow_read_gpx: legi viajn privatajn GPS-spurojn.
       allow_write_gpx: alŝuti GPS-spurojn.
@@ -1694,7 +1696,7 @@ eo:
       requests: 'Petado pri la jenaj permesoj de la uzanto:'
       allow_read_prefs: legi agordojn de uzanto.
       allow_write_prefs: modifi agordojn de uzanto.
-      allow_write_diary: krei ĵurnal-afiŝojn, komenti kaj amikigi aliajn.
+      allow_write_diary: skribi en taglibro, komenti kaj amikigi aliajn.
       allow_write_api: redakti la mapon.
       allow_read_gpx: legi privatajn GPS-spurojn.
       allow_write_gpx: alŝuti GPS-spurojn.
@@ -1721,7 +1723,7 @@ eo:
       requests: 'Peti pri la jenajn permesojn de la uzanto:'
       allow_read_prefs: legi agordojn de uzanto.
       allow_write_prefs: modifi agordojn de uzanto.
-      allow_write_diary: krei ĵurnal-afiŝojn, komenti kaj amikigi aliajn.
+      allow_write_diary: skribi en taglibro, komenti kaj amikigi aliajn.
       allow_write_api: redakti la mapon.
       allow_read_gpx: legi privatajn GPS-spurojn.
       allow_write_gpx: alŝuti GPS-spurojn.
@@ -1821,7 +1823,7 @@ eo:
         header: Libera kaj redaktebla
         html: <p>Kontraste kun aliaj mapoj, OpenStreetMap estas tute kreata de homoj
           kiel vi, kaj iu ajn povas korekti, ĝisdatigi, elŝuti kaj uzi ĝin.</p> <p>Registriĝu
-          por eki kontribuadon. Ni sendos al vi retleteron por konfirmi vian konton.</p>
+          por komenci kontribuadon. Ni sendos al vi retleteron por konfirmi vian konton.</p>
       license_agreement: Kiam vi konfirmos vian konton, vi devos akcepti la <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">interkonsenton
         pri kontribuado</a>.
       email address: 'Retpoŝtadreso:'
@@ -1869,8 +1871,8 @@ eo:
         liter-eraroj, aŭ eble vi alklakis mis-ligilon.
       deleted: forigita
     view:
-      my diary: Mia ĵurnalo
-      new diary entry: nova ĵurnalrikordo
+      my diary: Mia taglibro
+      new diary entry: nova taglibra afiŝo
       my edits: Miaj redaktoj
       my traces: Miaj spuroj
       my notes: Miaj rimarkoj
@@ -1882,7 +1884,7 @@ eo:
       blocks on me: Blokas min
       blocks by me: Blokitaj de mi
       send message: Sendi mesaĝon
-      diary: Ĵurnalo
+      diary: Taglibro
       edits: Redaktoj
       traces: Spuroj
       notes: Map-rimarkoj
@@ -1932,9 +1934,9 @@ eo:
       delete_user: Forigi ĉi tiun uzanton
       confirm: Konfirmi
       friends_changesets: ŝanĝaroj de amikoj
-      friends_diaries: ĵurnal-afiŝoj de amikoj
+      friends_diaries: afiŝoj en taglibroj de amikoj
       nearby_changesets: ŝanĝaroj de proksimuloj
-      nearby_diaries: ĵurnal-afiŝoj de proksimuloj
+      nearby_diaries: afiŝoj en taglibroj de proksimuloj
     popup:
       your location: Via loko
       nearby mapper: Proksima uzanto
@@ -2276,6 +2278,7 @@ eo:
         header: Tavoloj de mapo
         notes: Notoj pri mapo
         data: Map-datumoj
+        gps: Publikaj GPS-spuroj
         overlays: Aktivigu surtavolojn por solvi problemojn kun la mapo
         title: Tavoloj
       copyright: © <a href='%{copyright_url}'>Kontribuintoj de OpenStreetMap</a>
@@ -2358,6 +2361,11 @@ eo:
         against_oneway_without_exit: Iru kontraŭ-direkte al %{name}
         end_oneway_without_exit: Fino de unuflanka vojo ĉe %{name}
         roundabout_with_exit: Ĉe trafikcirklo prenu %{exit}-an elveturejon al %{name}
+        turn_left_with_exit: En trafikcirklo turnu maldekstren al %{name}
+        slight_left_with_exit: En trafikcirklo turnetu maldekstren al %{name}
+        turn_right_with_exit: En trafikcirklo turnu dekstren al %{name}
+        slight_right_with_exit: En trafikcirklo turnetu dekstren al %{name}
+        continue_with_exit: En trafikcirklo veturi rekten al %{name}
         unnamed: sennoma vojo
         courtesy: Kalkulado de kurso danke al %{link}
       time: Tempo
index 93c089948ef083f4044ef919032d24d43fff325a..f5d9f4a4940e57fbe85a09af9852a3dbcf450d79 100644 (file)
@@ -2348,6 +2348,7 @@ es:
         header: Capas del mapa
         notes: Notas del mapa
         data: Datos del mapa
+        gps: Trazas GPS públicas
         overlays: Activar superposiciones para solucionar problemas en el mapa
         title: Capas
       copyright: © <a href='%{copyright_url}'>Colaboradores de OpenStreetMap</a>
@@ -2433,6 +2434,12 @@ es:
           %{name}
         end_oneway_without_exit: Final de un solo sentido en %{name}
         roundabout_with_exit: En la rotonda, tomar la salida %{exit} hacia %{name}
+        turn_left_with_exit: En la rotonda girar a la izquierda hacia %{name}
+        slight_left_with_exit: En la rotonda girar levemente a la izquierda hacia
+          %{name}
+        turn_right_with_exit: En la rotonda girar a la derecha hacia %{name}
+        slight_right_with_exit: En la rotonda girar levemente a la derecha hacia%{name}
+        continue_with_exit: En la rotonda continuar recto hacia %{name}
         unnamed: sin nombre
         courtesy: Indicaciones cortesía de %{link}
       time: Hora
index 9d8dd5f129445aed7dcfc967bcb8608fa5b08630..8d329b892126d1c5acd8538c58ec2f279abaca75 100644 (file)
@@ -1100,7 +1100,7 @@ et:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user} kommenteeris sinu päeviku sissekannet'
       hi: Tere, %{to_user}!
-      header: '%{from_user} on kommenteerinud sinu hiljutist OpenStreetMapi päevikusissekannet
+      header: '%{from_user} kommenteeris hiljutist OpenStreetMapi päevikusissekannet
         pealkirjaga %{subject}:'
       footer: Loe kommentaari lehel %{readurl}. Võid lisada oma kommentaari lehel
         %{commenturl} või vastata kommentaarile lehel %{replyurl}.
@@ -1801,7 +1801,7 @@ et:
           on nüüdsest vaikimisi avalikud.</li></ul>
       contributor terms:
         heading: 'Kaastöö tingimused:'
-        agreed: Oled nõustunud uute Kaastöö tingimustega.
+        agreed: Oled nõustunud uute kaastöötingimustega.
         not yet agreed: Sa ei ole veel nõustunud uute Kaastöö tingimustega.
         review link text: Loe ja nõustu uute Kaastöö tingimustega klõpsates endale
           sobival ajal antud lingil.
index e1d16c363cb491d2c90f408fd2fce25668a12d32..2792dac794ce5211d28a03d7d4e52f2f92653031 100644 (file)
@@ -1025,11 +1025,11 @@ eu:
         moderator: Lankide hau moderatzailea da
       comments: Iruzkinak
       create_block: Blokeatu erabiltzaile hau
-      activate_user: erabiltzaile hau gaitu
-      deactivate_user: erabiltzaile hau ezgaitu
-      confirm_user: erabiltzaile hau baieztatu
+      activate_user: Erabiltzaile hau gaitu
+      deactivate_user: Erabiltzaile hau ezgaitu
+      confirm_user: Erabiltzaile hau baieztatu
       hide_user: Erabiltzaile hau ezkutatu
-      delete_user: lankide hau ezabatu
+      delete_user: Erabiltzaile hau ezabatu
       confirm: Berretsi
     popup:
       your location: Zure kokapena
index f5f263be4034fc19253eb65699672f4881f3b9b0..f2ac67d9ed3cdf589fe426d6e3c3bc632952634e 100644 (file)
@@ -35,7 +35,7 @@
 fi:
   time:
     formats:
-      friendly: '%e. %Bta %Y kello %H:%M'
+      friendly: '%e. %Bta %Y kello %H.%M'
   activerecord:
     models:
       acl: Pääsyoikeuslista
@@ -380,9 +380,10 @@ fi:
           seuraavista:'
         planet:
           title: Planet OSM
-          description: Säännöllisesti päivitettyjä kopioita täydellisestàOpenStreetMap-tietokannasta
+          description: Säännöllisesti päivitettyjä kopioita täydellisestä OpenStreetMap-tietokannasta
         overpass:
-          title: Ylikulku-API
+          title: Overpass API
+          description: Lataa kartalle rajattu alue OpenStreetMapin varapalvelimelta
         geofabrik:
           title: Geofabrik-lataukset
           description: Säännöllisesti päivitetyt otteet maanosista, maista ja valituista
@@ -1044,9 +1045,9 @@ fi:
         Lue lisää aineiston käyttämisestä <a
         href="http://osmfoundation.org/Licence">OSM-säätiön lisensointiohjeesta</a> ja yhteisön keräämistä <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">lakiasioiden useimmin kysytyimmistä kysymyksistä</a>.
       more_2_html: "Vaikka OpenStreetMap on avointa dataa, emme voi tarjota maksutonta
-        karttarajapintaa (API) kolmannen osapuolen kehittäjille.\n\nTutustu <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">API:n
-        käyttöehtoihin</a>,\n<a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">kartta-aineiston
-        käyttöehtoihin</a> ja \n<a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\">Nominatimin
+        karttarajapintaa (API) kolmannen osapuolen kehittäjille.\n\nTutustu <a href=\"https://operations.osmfoundation.org/policies/api/\">karttarajapinnan
+        käyttöehtoihin</a>,\n<a href=\"https://operations.osmfoundation.org/policies/tiles/\">kartta-aineiston
+        käyttöehtoihin</a> ja \n<a href=\"https://operations.osmfoundation.org/policies/nominatim/\">Nominatimin
         käyttöehtoihin</a>."
       contributors_title_html: Tekijät
       contributors_intro_html: |-
@@ -1106,9 +1107,9 @@ fi:
         (englanniksi)</a> vastaa mielellään kysymyksiin tavaramerkkien käytöstä.
   welcome_page:
     title: Tervetuloa!
-    introduction_html: Tervetuloa OpenStreetMapiin, ilmaiseen ja vapaasti muokattavaan
+    introduction_html: 'Tervetuloa OpenStreetMapiin: ilmaiseen ja vapaasti muokattavaan
       maailmankarttaan. Rekisteröityminen on nyt suoritettu, joten olet valmis aloittamaan
-      kartan muokkaamisen. Tutustu ensin kuitenkin näihin perusasioihin.
+      kartan muokkaamisen. Tutustu ensin kuitenkin näihin perusasioihin.'
     whats_on_the_map:
       title: Kartan sisältö
       on_html: OpenStreetMapissä voi kartoittaa asioita, jotka ovat <em>olemassa juuri
@@ -1182,7 +1183,7 @@ fi:
       description: Opi OpenStreetMapin perusteet tällä helpolla aloitusoppaalla.
     beginners_guide:
       url: http://wiki.openstreetmap.org/wiki/Fi:Beginners%27_guide
-      title: Vasta-alkajan opas
+      title: Aloitusopas
       description: Yhteisön ylläpitämä opas aloittelijoille.
     help:
       url: https://help.openstreetmap.org/
@@ -1795,6 +1796,9 @@ fi:
         github:
           title: Kirjaudu GitHubin avulla
           alt: Kirjaudu käyttämällä GitHub-tiliäsi
+        wikipedia:
+          title: Kirjaudu sisään Wikipedialla
+          alt: Kirjaudu sisään Wikipedia-tunnuksella
         yahoo:
           title: Kirjaudu Yahoon avulla
           alt: Kirjaudu käyttämällä Yahoo OpenID -tunnustasi
@@ -2287,6 +2291,7 @@ fi:
         header: Karttanäkymä
         notes: Karttailmoitukset
         data: Kartta-aineisto
+        gps: Julkiset GPS-jäljet
         overlays: Nämä toiminnot on tarkoitettu karttavirheiden korjaamiseen
         title: Karttanäkymä
       copyright: © <a href='%{copyright_url}'>OpenStreetMapin tekijät</a>
@@ -2369,6 +2374,13 @@ fi:
         end_oneway_without_exit: Yksisuuntaisen tien %{name} pää
         roundabout_with_exit: Liikenneympyrässä poistu %{exit}. liittymästä tielle
           %{name}
+        turn_left_with_exit: Liikenneympyrässä käänny vasemmalle tielle %{name}
+        slight_left_with_exit: Liikenneympyrässä kaarra loivasti vasemmalle tielle
+          %{name}
+        turn_right_with_exit: Liikenneympyrässä käänny oikealle tielle %{name}
+        slight_right_with_exit: Liikenneympyrässä kaarra loivasti oikealle tielle
+          %{name}
+        continue_with_exit: Liikenneympyrässä jatka suoraan tielle %{name}
         unnamed: nimetön tie
         courtesy: Reittiohjeet tarjoaa %{link}
       time: Matka-aika
index 0e9663e1ce36032b954f98c16a4ffa760d47f251..2a2e34a36f1060b5b29f464b8382bffde6e8a9d8 100644 (file)
@@ -2392,6 +2392,7 @@ fr:
         header: Couches de carte
         notes: Notes de carte
         data: Données de carte
+        gps: Traces GPS publiques
         overlays: Autoriser les superpositions pour réparer la carte
         title: Couches
       copyright: © <a href='%{copyright_url}'>Contributeurs de OpenStreetMap</a>
@@ -2475,6 +2476,11 @@ fr:
         against_oneway_without_exit: Remontez à contre-sens sur %{name}
         end_oneway_without_exit: Fin du sens unique sur %{name}
         roundabout_with_exit: Au rond-point prendre la sortie %{exit} sur %{name}
+        turn_left_with_exit: Au rond-point, tourner à gauche sur %{name}
+        slight_left_with_exit: Au rond-point, tourner légèrement à gauche sur %{name}
+        turn_right_with_exit: Au rond-point, tourner à droite sur %{name}
+        slight_right_with_exit: Au rond-point, tourner légèrement à droite sur %{name}
+        continue_with_exit: Au rond-point, continuer tout droit sur %{name}
         unnamed: voie sans nom
         courtesy: Itinéraire fourni par %{link}
       time: Temps
index 12f6137a546a96a0cad8e2b0b2077c099389afd5..f32a5cb061ecfed95c17501e8517cb5cbf4a7bb5 100644 (file)
@@ -166,6 +166,9 @@ ga:
         changeset: tacar athruithe
         note: nóta
     redacted:
+      redaction: Ceilt %{id}
+      message_html: Ní féidir leagan %{version} den %{type} seo a thaispeáint toisc
+        go ndearna é a cheilt. Féach an %{redaction_link} chun na mionsonraí a fháil.
       type:
         node: nód
         way: bealach
@@ -271,6 +274,7 @@ ga:
       location: 'Suíomh:'
       latitude: 'Domhanleithead:'
       longitude: 'Domhanfhad:'
+      use_map_link: an léarscáil a úsáid
       save_button: Sábháil
       marker_text: Suíomh na hiontrála dialainne
     view:
@@ -332,6 +336,7 @@ ga:
       manually_select: Roghnaigh limistéar eile de láimh
       format_to_export: Formáid le hEaspórtáil
       osm_xml_data: Sonraí XML OpenStreetMap
+      map_image: Íomhá den Léarscáil (taispeántar an tsraith chaighdeánach)
       embeddable_html: HTML inleabaithe
       licence: Ceadúnas
       export_details: Tá sonraí OpenStreetMap ceadúnaithe faoi <a href="http://opendatacommons.org/licenses/odbl/1.0/">Cheadúnas
@@ -348,12 +353,19 @@ ga:
             iomlán OpenStreetMap
         overpass:
           title: Comhéadan feidhmchláir Overpass
+          description: Íoslódáil an bosca teorainn seo ó scáthán den bhunachar sonraí
+            OpenStreetMap
         geofabrik:
           title: Íoslódálacha Geofabrik
+          description: Asbhaintí a thugtar cothrom le dáta go rialta de mhór-ranna,
+            tíortha agus cathracha roghnaithe
         metro:
           title: Ábhair asbhainte Metro
+          description: Asbhaintí le haghaidh mórchathracha domhanda agus an ceantar
+            máguaird
         other:
           title: Foinsí Eile
+          description: Tá liosta de na foinsí breise ar vicí OpenStreetMap
       options: Roghanna
       format: Formáid
       scale: Scála
@@ -416,6 +428,7 @@ ga:
           car_sharing: Comhroinnt Carranna
           car_wash: Niteoir Carranna
           casino: Casaíne/Casino
+          charging_station: Stáisiún Luchtúcháin
           childcare: Cúram leanaí
           cinema: Pictiúrlann
           clinic: Clinic
@@ -466,6 +479,7 @@ ga:
           prison: Príosún
           pub: Teach tábhairne
           public_building: Foirgneamh Poiblí
+          reception_area: Limistéar Fáilte
           recycling: Ionad Athchúrsála
           restaurant: Bialann
           retirement_home: Áras Seanóirí
@@ -719,6 +733,7 @@ ga:
           "yes": Oifig
         place:
           allotments: Cuibhrinn
+          block: Bloc
           airport: Aerfort
           city: Cathair
           country: Tír
@@ -730,6 +745,7 @@ ga:
           island: Oileán
           islet: Oileáinín
           isolated_dwelling: Áit Chónaithe Iargúlta
+          locality: Dúiche
           moor: Móinteán
           municipality: Cathair bhardais/baile bardais
           neighbourhood: Comharsanacht
@@ -770,6 +786,7 @@ ga:
           tram_stop: Stad Tram
         shop:
           alcohol: Eischeadúnas
+          antiques: Siopa seandachtaí
           art: Siopa Ealaíon
           bakery: Bácús
           beauty: Siopa Áilleachta
@@ -778,6 +795,7 @@ ga:
           books: Siopa Leabhar
           boutique: Búitíc (Boutique)
           butcher: Búistéir
+          car: Siopa Carranna
           car_parts: Páirteanna do Charranna
           car_repair: Deisiú Carranna
           carpet: Siopa Cairpéad
@@ -791,6 +809,7 @@ ga:
           cosmetics: Siopa Cosmaidí
           deli: Deilí
           department_store: Siopa Ilrannach
+          discount: Siopa Earraí ar Lascaine
           doityourself: Déan tú féin é/DIY
           dry_cleaning: Tirimghlanadh
           electronics: Siopa Earraí Leictreacha
@@ -837,17 +856,21 @@ ga:
           tailor: Táilliúir
           toys: Siopa Bréagán
           travel_agency: Gníomhaireacht Taistil
+          video: Siopa Scannán ar Cíos
           wine: Eischeadúnas
           "yes": Siopa
         tourism:
+          alpine_hut: Bothán Alpach
           apartment: Árasán
           artwork: Saothar ealaíne
           attraction: Ní is díol spéise
           bed_and_breakfast: Lóistín (B&B)
           cabin: Bothán/cábán
           camp_site: Ionad Campála
+          caravan_site: Láithreán Carbhán
           chalet: Sealla
           gallery: Dánlann
+          guest_house: Aíochtlann
           hostel: Brú Óige
           hotel: Óstán
           information: Eolas
@@ -1150,7 +1173,11 @@ ga:
       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}
     friend_notification:
+      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_notification:
       greeting: Haigh,
       your_gpx_file: An comhad GPX sin a bhí agat
@@ -1193,12 +1220,14 @@ ga:
     lost_password:
       subject: '[OpenStreetMap] Iarratas ar athshocrú pasfhocail'
     lost_password_plain:
+      greeting: A chara,
       hopefully_you: D'iarr duine éigin (tusa, b'fhéidir) go ndéanfaí an pasfhocal
         a athshocrú ar an gcuntas openstreetmap.org atá ceangailte leis an seoladh
         ríomhphoist seo.
       click_the_link: Más tusa a bhí ann, cliceáil ar an nasc thíos chun do phasfhocal
         a athshocrú.
     lost_password_html:
+      greeting: A chara,
       hopefully_you: D'iarr duine éigin (tusa, b'fhéidir) go ndéanfaí an pasfhocal
         a athshocrú ar an gcuntas openstreetmap.org atá ceangailte leis an seoladh
         ríomhphoist seo.
@@ -1234,11 +1263,38 @@ ga:
         commented_note: 'D''athoscail %{commenter} nóta léarscáile ar fhág tú nóta
           tráchta faoi. Tá an nóta gar don áit seo: %{place}.'
       details: Tá tuilleadh sonraí faoin nóta ar fáil ag %{url}.
+    changeset_comment_notification:
+      greeting: A chara,
+      commented:
+        subject_own: '[OpenStreetMap] D''fhág %{commenter} nóta tráchta ar cheann
+          de na tacair athruithe atá agat'
+        subject_other: '[OpenStreetMap] D''fhág %{commenter} nóta tráchta ar thacar
+          athruithe a bhfuil suim agat ann'
+        your_changeset: D'fhág %{commenter} nóta tráchta ar thacar athruithe atá agat
+          a cruthaíodh ag %{time}
+        commented_changeset: D'fhág %{commenter} nóta tráchta ar thacar athruithe
+          léarscáile a bhfuil tú ag faire air a chruthaigh %{changeset_author} ag
+          %{time}
+        partial_changeset_with_comment: a bhfuil an nóta tráchta '%{changeset_comment}'
+          ag gabháil leis
+        partial_changeset_without_comment: nach bhfuil nóta tráchta ag gabháil leis
+      details: Tá tuilleadh sonraí faoin tacar athruithe ar fáil ag %{url}.
   message:
     inbox:
       title: Bosca isteach
       my_inbox: Mo Bhosca Isteach
       outbox: bosca amach
+      messages: Tá %{new_messages} agus %{old_messages} agat.
+      new_messages:
+        one: '%{count} theachtaireacht amháin'
+        few: '%{count} theachtaireacht nua'
+        many: '%{count} dteachtaireacht nua'
+        other: '%{count} teachtaireacht nua'
+      old_messages:
+        one: '%{count} sheanteachtaireacht'
+        few: '%{count} seanteachtaireacht'
+        many: '%{count} seanteachtaireacht nua'
+        other: '%{count} seanteachtaireacht'
       from: Ó
       subject: Ábhar
       date: Dáta
@@ -1278,6 +1334,10 @@ ga:
       no_sent_messages: Níl aon teachtaireacht seolta agat fós. Nach smaoineofá ar
         theagmháil a dhéanamh le roinnt de na %{people_mapping_nearby_link}?
       people_mapping_nearby: daoine atá i mbun léarscáilithe in aice láimhe
+    reply:
+      wrong_user: Tá tú logáilte isteach mar '%{user}' ach níor seoladh an teachtaireacht
+        atá tú ag iarraidh freagra a thabhairt uirthi chuig an úsáideoir sin. Logáil
+        isteach mar an t-úsáideoir ceart chun freagra a thabhairt.
     read:
       title: Léigh an teachtaireacht
       from: Ó
@@ -1287,6 +1347,9 @@ ga:
       unread_button: Marcáil neamhléite
       back: Ar ais
       to: Chuig
+      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.
     sent_message_summary:
       delete_button: Scrios
     mark:
@@ -1298,19 +1361,38 @@ ga:
     index:
       js_1: Tá tú ag úsáid brabhsálaí nach dtacaíonn le JavaScript, é sin nó tá JavaScript
         díchumasaithe agat.
+      js_2: Baineann OpenStreetMap úsáid as JavaScript dá léarscáil 'slippy' (léarscáil
+        ghréasáin bunaithe ar thíleanna).
       permalink: Buan-nasc
       shortlink: Nasc gearr
+      createnote: Cuir nóta leis
       license:
         copyright: Cóipcheart OpenStreetMap agus rannchuiditheoirí, faoi cheadúnas
           oscailte
       remote_failed: Theip ar eagarthóireacht - déan cinnte go bhfuil JOSM nó Merkaartor
         lódáilte agus go bhfuil an rogha 'cianrialú' cumasaithe
     edit:
+      not_public: Níl do chuid athruithe socraithe mar athruithe poiblí agat.
+      not_public_description: Ní féidir leat an léarscáil a chur in eagar a thuilleadh
+        mura ndéanfaidh tú sin. Is féidir leat do chuid athruithe a shocrú mar athruithe
+        poiblí ar do %{user_page}.
       user_page_link: leathanach úsáideora
+      anon_edits_link_text: Faigh amach cén fáth ar amhlaidh atá.
       flash_player_required: Beidh seinnteoir Flash ag teastáil uait chun Potlatch,
         eagarthóir Flash OpenStreetMap, a úsáid. Is féidir leat <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">Seinnteoir
         Flash a íoslódáil ó Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Tá
         cúpla rogha eile</a> ar fáil eagarthóireacht a dhéanamh ar OpenStreetMap.
+      potlatch_unsaved_changes: Tá athruithe nár sábháladh déanta agat. (Chun sábháil
+        i bPotlatch, ba cheart duit an bealach nó poine reatha a dhíroghnú, má tá
+        tú i mbun eagarthóireachta sa mhód beo, nó cliceáil ar sábháil má tá cnaipe
+        sábhála le feiceáil).
+      potlatch2_not_configured: Níor cumraíodh Potlatch 2 - féach http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2
+        chun tuilleadh eolais a fháil
+      potlatch2_unsaved_changes: Tá athruithe nár sábháladh déanta agat. (Chun sábháil
+        a dhéanamh i bPotlatch2 , ba chóir duit cliceáil ar 'sábháil'.
+      id_not_configured: Níor cumraíodh iD
+      no_iframe_support: Ní thacaíonn do bhrabhsálaí leis an ngné 'iframe' de chuid
+        HTML, rud atá riachtanach don ghné seo.
     sidebar:
       search_results: Torthaí an chuardaigh
       close: Dún
@@ -1321,6 +1403,7 @@ ga:
       from: Ó
       to: Chuig
       where_am_i: Cá bhfuil mé?
+      where_am_i_title: Cur síos a dhéanamh ar an suíomh reatha leis an inneall cuardaigh
       submit_text: Gabh
     key:
       table:
@@ -1334,6 +1417,9 @@ ga:
           track: Cosán
           bridleway: Cosán marcaíochta
           cycleway: Slí rothar
+          cycleway_national: Slí rothar náisiúnta
+          cycleway_regional: Slí rothar réigiúnach
+          cycleway_local: Slí rothar áitiúil
           footway: Cosán
           rail: Iarnród
           subway: Meitreo
@@ -1366,6 +1452,7 @@ ga:
           - Loch
           - taiscumar
           farm: Feirm
+          brownfield: Láithreán athfhorbraíochta
           cemetery: Reilig
           allotments: Cuibhrinn
           pitch: Páirc spóirt
@@ -1380,8 +1467,14 @@ ga:
           summit:
           - Mullach
           - binn
+          tunnel: Líne bhriste = tollán
+          bridge: Líne dhubh = droichead
           private: Rochtain phríobháideach
+          destination: Rochtain ar cheann scríbe
           construction: Bóithre á dtógáil
+          bicycle_shop: Siopa rothar
+          bicycle_parking: Páirceáil do rothair
+          toilets: Leithreas
     richtext_area:
       edit: Cuir in eagar
       preview: Réamhamharc
@@ -1400,16 +1493,29 @@ ga:
       alt: Téacs malartach
       url: URL
   trace:
+    visibility:
+      private: Príobháideacha (ní chomhroinnfear é ach mar phointí gan ainm, gan ord)
+      public: Poiblí (taispeánfar é i liosta na lorg agus mar phointí gan ainm, gan
+        ord)
+      trackable: Inrianta (ní chomhroinnfear é ach mar phointí gan ainm, in ord, agus
+        stampaí ama acu)
+      identifiable: Inaitheanta (taispeánfar é i liosta na lorg agus mar phointí inaitheanta,
+        in ord, agus stampaí ama acu)
     create:
       upload_trace: Lorg GPS a Uaslódáil
     edit:
+      title: Lorg %{name} á chur in eagar
+      heading: Lorg %{name} á chur in eagar
       filename: 'Comhadainm:'
       download: íoslódáil
       uploaded_at: 'Uaslódáilte:'
       points: 'Pointí:'
+      start_coord: 'Comhordanáid thosaigh:'
       map: léarscáil
+      edit: cuir in eagar
       owner: 'Úinéir:'
       description: 'Cur síos:'
+      tags: 'Clibeanna:'
       tags_help: teormharcáilte le camóga
       save_button: Sábháil na hAthruithe
       visibility: 'Infheictheacht:'
@@ -1439,6 +1545,7 @@ ga:
       points: 'Pointí:'
       start_coordinates: 'Comhordanáid thosaigh:'
       map: léarscáil
+      edit: cuir in eagar
       owner: 'Úinéir:'
       description: 'Cur síos:'
       tags: 'Clibeanna:'
@@ -1456,7 +1563,12 @@ ga:
       count_points: '%{count} pointe'
       ago: '%{time_in_words_ago} ó shin'
       more: tuilleadh
+      trace_details: Amharc ar Shonraí an Loirg
+      view_map: Amharc ar an Léarscáil
+      edit: cuir in eagar
+      edit_map: Cuir an Léarscáil in Eagar
       public: POIBLÍ
+      identifiable: IN-AITHEANTA
       private: PRÍOBHÁIDEACH
       trackable: INRIANAITHE
       by: ag
@@ -1466,6 +1578,15 @@ ga:
       public_traces: Loirg GPS phoiblí
       your_traces: Na loirg GPS uaitse
       public_traces_from: Loirg GPS phoiblí ó %{user}
+      description: Brabhsáil loirg GPS a uaslódáladh le déanaí
+      tagged_with: a bhfuil na clibeanna %{tags} acu
+      empty_html: Níl aon rud anseo fós. <a href='%{upload_link}'>Uaslódáil lorg nua</a>
+        nó is féidir tuilleadh a fhoghlaim faoi lorgú GPS ar an <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>leathanach
+        vicí</a>.
+    delete:
+      scheduled_for_deletion: Lorg sceidealta le scriosadh
+    make_public:
+      made_public: Lorg curtha ar fáil go poiblí
     offline_warning:
       message: Níl córas uaslódála na gcomhad GPX ar fáil faoi láthair
     offline:
@@ -1474,21 +1595,113 @@ ga:
     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}
+  application:
+    require_cookies:
+      cookies_needed: Is cosúil go bhfuil fianáin díchumasaithe agat - cumasaigh fianáin
+        i do bhrabhsálaí roimh duit leanúint ar aghaidh.
+    require_moderator:
+      not_a_moderator: Is gá duit a bheith i do mhodhnóir chun an gníomh sin a dhéanamh.
+    setup_user_auth:
+      blocked: Tá bac curtha ar do rochtain ar an API. Logáil isteach ar an gcomhéadan
+        gréasáin chun tuilleadh eolais a fháil.
+      need_to_see_terms: Cuireadh do rochtain ar an API ar fionraí go sealadach. Logáil
+        isteach ar an gcomhéadan gréasáin le hamharc ar Théarmaí na Rannchuiditheoirí.
+        Ní gá duit aontú, ach ní mór duit amharc orthu.
   oauth:
     oauthorize:
+      title: Rochtain ar do chuntas a údarú
+      request_access: D'iarr an feidhmchlár %{app_name} rochtain ar do chuntas, %{user}.
+        Seiceáil ar mhaith leat go mbeadh na cumais seo a leanas ag an bhfeidhmchlár.
+        Is féidir leat a mhéad nó a laghad acu agus is mian leat a roghnú.
+      allow_to: 'Ceadaigh don chliant-fheidhmchlár an méid seo a leanas a dhéanamh:'
       allow_read_prefs: do shainroghanna úsáideora a léamh.
+      allow_write_prefs: do shainroghanna úsáideora a athrú.
+      allow_write_diary: iontrálacha dialainne agus nótaí tráchta a chruthú agus cairde
+        a dhéanamh.
+      allow_write_api: an léarscáil a athrú.
+      allow_read_gpx: do loirg phríobháideacha GPS a léamh.
+      allow_write_gpx: loirg GPS a uaslódáil.
+      allow_write_notes: nótaí a athrú.
+      grant_access: Tabhar an Rochtain
+    oauthorize_success:
+      title: Ceadaíodh an t-iarratas ar údarú
+      allowed: Thug tú rochtain ar do chuntas don fheidhmchár %{app_name}.
+      verification: Is é %{code} an cód fíorúcháin.
+    oauthorize_failure:
+      title: Theip ar an iarratas ar údarú
+      denied: Dhiúltaigh tú rochtain ar do chuntas don fheidhmchár %{app_name}.
+      invalid: Níl an ceadchomhartha bailí.
+    revoke:
+      flash: Tharraing tú siar an ceadchomhartha le haghaidh %{application}
   oauth_clients:
+    new:
+      title: Iarratas nua a chlárú
+      submit: Cláraigh
+    edit:
+      title: D'iarratas a chur in eagar
+      submit: Cuir in eagar
     show:
+      title: Sonraí OAuth le haghaidh %{app_name}
+      key: 'Eochair an Íditheora:'
+      secret: 'Rún an Íditheora:'
+      url: 'URL Cheadchomhartha an Iarratais:'
+      access_url: 'URL Cheadchomhartha na Rochtana:'
+      authorize_url: 'URL an Údaraithe:'
+      support_notice: Tacaímid le síniú HMAC-SHA1 (molta) agus síniú RSA-SHA1.
+      edit: Cuir Sonraí in Eagar
+      delete: Scrios Cliant
       confirm: An bhfuil tú cinnte?
+      requests: 'Na ceadanna seo a leanas á n-iarraidh ón úsáideoir:'
       allow_read_prefs: a s(h)ainroghanna úsáideora a léamh.
+      allow_write_prefs: a s(h)ainroghanna úsáideora a athrú.
+      allow_write_diary: iontrálacha dialainne agus nótaí tráchta a chruthú agus cairde
+        a dhéanamh.
+      allow_write_api: an léarscáil a athrú.
+      allow_read_gpx: a loirg phríobháideacha GPS a léamh.
+      allow_write_gpx: loirg GPS a uaslódáil.
+      allow_write_notes: nótaí a athrú.
+    index:
+      title: Mo Shonraí OAuth
+      my_tokens: Na Feidhmchláir atá údaraithe agam
+      list_tokens: 'Eisíodh na ceadchomharthaí seo a leanas faoi d''ainm chuig feidhmchláir:'
+      application: Ainm an Fheidhmchláir
+      issued_at: Eisithe Ag
+      revoke: Tarraing siar!
+      my_apps: Na Cliant-fheidhmchláir atá agam
+      no_apps: An bhfuil feidhmchlár agat ar mhaith leat a chlárú lena úsáid linn
+        leis an gcaighdeán %{oauth}? Ní mór duit d'fheidhmchlár gréasáin a chlárú
+        sula féidir leis iarrataí OAuth a dhéanamh chuig an tseirbhís seo.
+      registered_apps: 'Tá na cliant-fheidhmchláir seo a leanas cláraithe agat:'
+      register_new: D'fheidhmchlár a chlárú
     form:
       name: Ainm
       required: Ag teastáil
       url: URL an Phríomh-Fheidhmchláir
       callback_url: URL Aisghlaoigh
       support_url: URL Tacaíochta
+      requests: 'Na ceadanna seo a leanas a iarraidh ón úsáideoir:'
       allow_read_prefs: a s(h)ainroghanna úsáideora a léamh.
+      allow_write_prefs: a s(h)ainroghanna úsáideora a athrú.
+      allow_write_diary: iontrálacha dialainne agus nótaí tráchta a chruthú agus cairde
+        a dhéanamh.
+      allow_write_api: an léarscáil a athrú.
+      allow_read_gpx: a loirg phríobháideacha GPS a léamh.
+      allow_write_gpx: loirg GPS a uaslódáil.
+      allow_write_notes: nótaí a athrú.
+    not_found:
+      sorry: Ár leithscéil, níorbh fhéidir an %{type} sin a aimsiú.
+    create:
+      flash: Cláraíodh an fhaisnéis
+    update:
+      flash: Tugadh an fhaisnéis faoin gcliant cothrom le dáta
+    destroy:
+      flash: Scriosadh clárú an chliant-fheidhmchláir
   user:
     login:
       title: Logáil isteach
@@ -1500,7 +1713,14 @@ ga:
       lost password link: Focal faire caillte agat?
       login_button: Logáil isteach
       register now: Cláraigh anois
+      with username: 'Má tá cuntas OpenStreetMap agat cheana féin logáil isteach leis
+        an ainm úsáideora agus pasfhocal atá agat:'
       with external: 'Nó, bain úsáid as tríú páirtí le logáil isteach:'
+      new to osm: Nua ar OpenStreetMap?
+      to make changes: Chun athruithe a dhéanamh ar shonraí OpenStreetMap, ní mór
+        duit cuntas a bheith agat.
+      create account minute: Is féidir cuntas a chruthú, ní thógfaidh sé ach nóiméad
+        ort.
       no account: Níl cuntas agat?
       auth failure: Ár leithscéil, níorbh fhéidir logáil isteach leis na sonraí sin.
       openid_logo_alt: Logáil isteach le OpenID
@@ -1517,6 +1737,12 @@ ga:
         windowslive:
           title: Logáil isteach le Windows Live
           alt: Logáil isteach le Cuntas Windows Live
+        github:
+          title: Logáil isteach le GitHub
+          alt: Logáil isteach le Cuntas GitHub
+        wikipedia:
+          title: Logáil isteach le Vicipéid
+          alt: Logáil isteach le Cuntas Vicipéid
         yahoo:
           title: Logáil isteach le Yahoo
           alt: Logáil isteach le OpenID Yahoo
@@ -1539,6 +1765,8 @@ ga:
         nasc chugat a bheidh tú in ann a úsáid chun do phasfhocal a athshocrú.
       notice email on way: Is oth linn gur chaill tú é :-( ach tá ríomhphost ar an
         mbealach chugat le go mbeidh tú in ann é a athshocrú go luath.
+      notice email cannot find: Níorbh fhéidir an seoladh ríomhphoist sin a aimsiú,
+        ár leithscéil faoi sin.
     reset_password:
       title: Focal faire a athshocrú
       heading: Focal Faire le haghaidh %{user} a Athshocrú
@@ -1546,8 +1774,17 @@ ga:
       confirm password: 'Deimhnigh an Focal Faire:'
       reset: Athshocraigh an Focal Faire
       flash changed: Athraíodh d'fhocal faire.
+      flash token bad: Níor aimsíodh an ceadchomhartha sin, seiceáil an bhfuil an
+        URL cruinn?
     new:
       title: Clárú
+      no_auto_account_create: Ar an drochuair ní féidir linn cuntas a chruthú duit
+        go huathoibríoch i láthair na huaire.
+      contact_webmaster: Déan teagmháil leis an <a href="%{webmaster}">máistir gréasáin</a>
+        chun socrú a dhéanamh cuntas a chruthú - déanfaimid gach iarracht déileáil
+        leis an iarratas chomh scioptha agus is féidir.
+      about:
+        header: Saor in aisce agus oscailte don eagarthóireacht
       email address: 'Seoladh ríomhphoist:'
       confirm email address: 'Deimhnigh an Seoladh Ríomhphoist:'
       not displayed publicly: Ní thaispeáintear do sheoladh go poiblí, féach an <a
@@ -1576,18 +1813,48 @@ ga:
     view:
       my diary: Mo Dhialann
       new diary entry: iontráil nua dialainne
+      my edits: Mo Athruithe
       my traces: Loirg uaimse
+      my notes: Mo Nótaí
+      my messages: Mo Theachtaireachtaí
+      my profile: Mo Phróifíl
+      my settings: Mo Shocruithe
+      my comments: Mo Nótaí Tráchta
       oauth settings: socruithe oauth
+      blocks on me: Baic Orm
+      blocks by me: Baic a Rinne Mé
+      send message: Seol an Teachtaireacht
       diary: Dialann
+      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ú ó:'
       ago: (%{time_in_words_ago} ó shin)
       ct status: 'Téarmaí do rannchuiditheoirí:'
+      ct declined: Diúltaithe
+      ct accepted: Glactha leis %{ago} ó shin
+      latest edit: 'Athrú is déanaí %{ago}:'
+      email address: 'Seoladh ríomhphoist:'
+      created from: 'Cruthaithe ó:'
       status: 'Stádas:'
+      spam score: 'Scór Turscair:'
+      description: Cur síos
+      user location: Suíomh an úsáideora
+      settings_link_text: na socruithe
+      your friends: Do chairde
+      km away: '%{count} km uait'
+      m away: '%{count} m uait'
+      nearby users: Úsáideoirí eile in aice láimhe
       role:
         administrator: Is riarthóir é an t-úsáideoir seo
         moderator: Is áisitheoir é an t-úsáideoir seo
+      block_history: Baic Ghníomhacha
+      moderator_history: Baic a Tugadh
       comments: 'Nótaí tráchta:'
       create_block: Cuir bac ar an Úsáideoir seo
+      confirm: Deimhnigh
     popup:
       friend: Cara
     account:
@@ -1600,6 +1867,10 @@ ga:
       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í.
+        not yet agreed: Níor aontaigh tú leis na Téarmaí nua do Rannchuiditheoirí
+          fós.
         link text: céard é seo?
       preferred languages: 'Teangacha is fearr leat:'
       preferred editor: 'An tEagarthóir is fearr leat:'
@@ -1607,6 +1878,7 @@ ga:
       gravatar:
         gravatar: Úsáid Gravatar
         link text: céard é seo?
+        disabled: Díchumasaíodh Gravatar.
       new image: Cuir íomhá leis
       keep image: Coinnigh an íomhá reatha
       delete image: Bain an íomhá reatha
@@ -1617,6 +1889,8 @@ ga:
       longitude: 'Domhanfhad:'
       save changes button: Sábháil na hAthruithe
     confirm:
+      heading: Féach sna ríomhphoist!
+      introduction_1: Tá ríomhphost chun é a dheimhniú seolta chugat againn.
       introduction_2: Deimhnigh do chuntas trí chliceáil ar an nasc sa ríomhphost
         agus beidh tú in ann tosú ar léirscáiliú a dhéanamh.
     confirm_resend:
@@ -1624,29 +1898,52 @@ ga:
     list:
       title: Úsáideoirí
       heading: Úsáideoirí
+    suspended:
+      webmaster: máisitir gréasáin
   user_role:
     revoke:
       confirm: Deimhnigh
   user_block:
     new:
+      submit: Cruthaigh bac
       needs_view: Ní mór don úsáideoir logáil isteach sula mbainfear an bac seo
     edit:
       needs_view: An gá don úsáideoir logáil isteach sula mbainfear an bac seo?
+    revoke:
+      confirm: An bhfuil tú cinnte gur mhaith leat an bac seo a tharraingt siar?
+      revoke: Tarraing siar!
+      flash: Tarraingíodh an bac seo siar.
     period:
       one: uair amháin an chloig
       other: '%{count} uair an chloig'
     partial:
       show: Taispeáin
       edit: Cuir in Eagar
+      revoke: Tarraing siar!
       confirm: An bhfuil tú cinnte?
+      display_name: Úsáideoir Bactha
+      creator_name: Cruthaitheoir
+      reason: Cúis don bhac
       status: Stádas
+      revoker_name: Tarraingthe siar ag
+      not_revoked: (nár tarraingíodh siar)
       showing_page: Leathanach %{page}
       next: Ar aghaidh »
       previous: « Roimhe
     show:
+      show: Taispeáin
       confirm: An bhfuil tú cinnte?
       needs_view: Ní mór don úsáideoir logáil isteach sula nglanfar an bac seo.
   note:
+    rss:
+      description_item: Fotha RSS don nóta %{id}
+      opened: 'nóta nua (gar do: %{place})'
+      commented: 'nóta tráchta nua (gar do: %{place})'
+      closed: 'nóta dúnta (gar do: %{place})'
+      reopened: 'nóta athoscailte (gar do: %{place})'
+    entry:
+      comment: Nóta tráchta
+      full: An nóta iomlán
     mine:
       id: ID
       last_changed: Athrú deireanach
@@ -1679,6 +1976,7 @@ ga:
         title: Taispeáin mo shuíomh
         popup: Tá tú laistigh de {distance} {unit} den phointe seo
       base:
+        standard: Caighdeánach
         cycle_map: Léarscáil Rothaíochta
         transport_map: Léarscáil Iompair
         hot: Daonnúil
@@ -1693,10 +1991,20 @@ ga:
     site:
       edit_disabled_tooltip: Zúmáil isteach chun an léarscáil a chur in eagar
       createnote_disabled_tooltip: Zúmáil isteach chun nóta a chur leis an léarscáil
+      map_notes_zoom_in_tooltip: Zúmáil isteach chun nótaí léarscáile a fheiceáíl
       map_data_zoom_in_tooltip: Zúmáil isteach chun sonraí na léarscáile a fheiceáil
       queryfeature_tooltip: Gnéithe a fhiosrú
       queryfeature_disabled_tooltip: Zúmáil isteach chun gnéithe a fhiosrú
+    changesets:
+      show:
+        comment: Fág nóta tráchta
+        subscribe: Liostáil
+        unsubscribe: Díliostáil
+        hide_comment: folaigh
+        unhide_comment: dífholaigh
     notes:
+      new:
+        add: Cuir Nóta Leis
       show:
         comment: Déan nóta tráchta
     edit_help: Bog an léarscáil agus zúmáil isteach ar áit is mian leat a chur in
@@ -1748,4 +2056,19 @@ ga:
   redaction:
     edit:
       description: Cur síos
+    show:
+      title: Ceilt á taispeáint
+      user: 'Cruthaitheoir:'
+      edit: Cuir an cheilt seo in eagar
+      destroy: Bain an cheilt seo
+      confirm: An bhfuil tú cinnte?
+    create:
+      flash: Cruthaíodh ceilt.
+    update:
+      flash: Sábháladh na hathruithe.
+    destroy:
+      not_empty: Níl an cheilt folamh. Bain an cheilt de gach leagan lena mbaineann
+        an cheilt seo sula scriosfaidh tú í.
+      flash: Scriosadh an cheilt.
+      error: Tharla earráid agus an cheilt seo á scriosadh.
 ...
index 65eaae6e80fa3be7f3e2fb8ba820589160aa67cf..fb5fb382c58eca6309ff296c64f635131c277a02 100644 (file)
@@ -1240,11 +1240,14 @@ gl:
       sempre que recoñeza ao OpenStreetMap e mailos seus colaboradores como os autores dos datos. Se modifica os datos
       ou os utiliza dalgún xeito para outros fins, pode distribuír o resultado sempre e cando o faga empregando a mesma licenza. Atopará información máis detallada na <a href='%{copyright_path}'>páxina de dereitos de autoría e licenza</a>.
     legal_title: Legal
-    legal_html: "Este sitio e moitos outros servizos relacionados son manexados pola
-      \ \n<a href='http://osmfoundation.org/'>Fundación OpenStreetMap</a> (OSMF) \nen
-      nome da comunidade.\n<br> \n<a href='http://osmfoundation.org/Contact'>Contacte
-      coa OSMF</a> \nse ten preguntas ou problemas sobre licenzas, dereitos de autor
-      ou outro tema legal."
+    legal_html: "Este sitio e moitos outros servizos relacionados están formalmente
+      operados pola  \n<a href='http://osmfoundation.org/'>Fundación OpenStreetMap</a>
+      (OSMF) \nen nome da comunidade. O uso de tódolos servizos operados pola OSMF
+      está suxeito \nás nosas <a href=\"http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy\">\nPolíticas
+      de Uso Aceptable</a> e á nosa <a href=\"http://wiki.osmfoundation.org/wiki/Privacy_Policy\">Política
+      de Privacidade</a>\n<br/> \nPor favor, <a href='http://osmfoundation.org/Contact'>contacta
+      coa OSMF</a> se tes algunha pregunta ou problema de licenza, dereitos de autoría
+      ou calquera outra cuestión legal."
     partners_title: Socios
   notifier:
     diary_comment_notification:
@@ -2329,6 +2332,7 @@ gl:
         header: Capas do mapa
         notes: Notas de mapa
         data: Datos do mapa
+        gps: Trazas GPS públicas
         overlays: Activar a sobreposición para reparar o mapa
         title: Capas
       copyright: © <a href='%{copyright_url}'>Colaboradores do OpenStreetMap</a>
@@ -2411,6 +2415,11 @@ gl:
         against_oneway_without_exit: Ir en contra dun só sentido en %{name}
         end_oneway_without_exit: Final dun só sentido en %{name}
         roundabout_with_exit: Na rotonda coller saída %{exit} en %{name}
+        turn_left_with_exit: Na rotonda xirar á esquerda cara a %{name}
+        slight_left_with_exit: Na rotonda xirar levemente á esquerda cara a %{name}
+        turn_right_with_exit: Na rotonda xirar á dereita cara a %{name}
+        slight_right_with_exit: Na rotonda xirar levemente á dereita cara a %{name}
+        continue_with_exit: Na rotonda continuar recto cara a %{name}
         unnamed: sen nome
         courtesy: Indicacións cortesía de %{link}
       time: Tempo
index b221b0f6cd97e52e5b411ade5e6d9ca83d484c76..50bd8153606fdac5559fb8b6bad2856582138287 100644 (file)
@@ -1,6 +1,7 @@
 # Messages for Hungarian (magyar)
 # Exported from translatewiki.net
 # Export driver: phpyaml
+# Author: BanKris
 # Author: BáthoryPéter
 # Author: City-busz
 # Author: Csega
@@ -1037,9 +1038,9 @@ hu:
         href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Jogi
         GYIK</a> gyűjteményében.
       more_2_html: |-
-        Habár az OpenStreetMap egy nyílt adatforrás, nem tudunk ingyenes térkép API elérést biztosítani külső fejlesztőknek.
+        Habár az OpenStreetMap egy nyílt adatforrás, nem tudunk ingyenes térkép API elérést biztosítani a harmadik feleknek.
 
-        Lásd az <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API Felhasználási Irányelveinket</a>, a <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Csempe Felhasználási Irányelveinket</a> és a <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim Felhasználási Irányelveinket</a>.
+        Lásd az <a href="https://operations.osmfoundation.org/policies/tiles/">API Felhasználási Irányelveinket</a>, a <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Csempe Felhasználási Irányelveinket</a> és a <a href="https://operations.osmfoundation.org/policies/nominatim/">Nominatim Felhasználási Irányelveinket</a>.
       contributors_title_html: Közreműködőink
       contributors_intro_html: 'Többszáz egyéni közreműködőnk van. További, szabadon
         elérhető adatokat is felhasználunk nemzeti térkép intézetektől és más forrásokból,
@@ -1750,6 +1751,9 @@ hu:
         github:
           title: Bejelentkezés GitHub-bal
           alt: Bejelentkezés GitHub fiókkal
+        wikipedia:
+          title: Bejelentkezés Wikipédiával
+          alt: Wikipédia fiókkal való bejelentkezés
         yahoo:
           title: Bejelentkezés Yahoo-val
           alt: Bejelentkezés Yahoo OpenID-vel
@@ -2226,7 +2230,7 @@ hu:
     key:
       title: Jelmagyarázat
       tooltip: Jelmagyarázat
-      tooltip_disabled: A jelmagyarázat csak az alapértelmezett rétegen érhető el
+      tooltip_disabled: A jelmagyarázat nem érhető el ezen a rétegen
     map:
       zoom:
         in: Nagyítás
@@ -2243,6 +2247,7 @@ hu:
         header: Térképnézetek
         notes: Térképjegyzetek
         data: Térképadatok
+        gps: Nyilvános GPS nyomvonalak
         overlays: További rétegek engedélyezése a térkép hibáinak javítása érdekében
         title: Rétegek
       copyright: © <a href='%{copyright_url}'>OpenStreetMap közreműködők</a>
index 6dddc7286dd805169972b749a710dfd74ae3fc9d..53de0675dd0e0ad910b3da9e32a621c9f4967fb6 100644 (file)
@@ -1023,9 +1023,9 @@ ia:
         Lege plus sur le uso de nostre datos, e como recognoscer nos, in le <a
         href="http://osmfoundation.org/Licence">pagina de licentia OSMF</a> e in le <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">FAQ juridic</a> communitari.
       more_2_html: |-
-        Ben que OpenStreetMap es datos aperte, nos non pote fornir un API cartographic gratuite pro disveloppatores tertie. Vide nostre <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">politica pro le uso del API</a>,
-        <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">politica pro le uso de tegulas</a>
-        e <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">politica pro le uso de Nominatim</a>.
+        Ben que OpenStreetMap es datos aperte, nos non pote fornir un API cartographic gratuite pro tertios. Vide nostre <a href="https://operations.osmfoundation.org/policies/api/">politica pro le uso del API</a>,
+        <a href="https://operations.osmfoundation.org/policies/tiles">politica pro le uso de tegulas</a>
+        e <a href="https://operations.osmfoundation.org/policies/nominatim">politica pro le uso de Nominatim</a>.
       contributors_title_html: Nostre contributores
       contributors_intro_html: 'Nostre contributores es milles de personas. Nos include
         anque le datos sub licentia aperte de agentias cartographic national e de
@@ -1801,6 +1801,9 @@ ia:
         github:
           title: Aperir session con GitHub
           alt: Aperir session con un conto de GitHub
+        wikipedia:
+          title: Aperir session con Wikipedia
+          alt: Aperir session con un conto de Wikipedia
         yahoo:
           title: Aperir session con Yahoo
           alt: Aperir session con un OpenID de Yahoo
index 22b1782dbef462c59653de0bdd987f6e984031d5..5f5a572a5f96faaa0c8772aeb5626818d314869e 100644 (file)
@@ -2356,6 +2356,7 @@ it:
         header: Livelli mappa
         notes: Note sulla mappa
         data: Dati della mappa
+        gps: Tracciati GPS pubblici
         overlays: Abilita sovrapposizioni per la risoluzione dei problemi della mappa
         title: Livelli
       copyright: © <a href='%{copyright_url}'>OpenStreetMap contributors</a>
@@ -2439,6 +2440,11 @@ it:
         against_oneway_without_exit: Vai contro il senso unico in %{name}
         end_oneway_without_exit: Fine del senso unico in %{name}
         roundabout_with_exit: Alla rotonda prendi l'uscita n° %{exit} su %{name}
+        turn_left_with_exit: Alla rotonda svolta a sinistra in %{name}
+        slight_left_with_exit: Alla rotonda svolta leggermente a sinistra in %{name}
+        turn_right_with_exit: Alla rotonda svolta a destra in %{name}
+        slight_right_with_exit: Alla rotonda svolta leggermente a destra in %{name}
+        continue_with_exit: Alla rotonda prosegui dritto in %{name}
         unnamed: senza nome
         courtesy: Indicazioni per gentile concessione di %{link}
       time: Tempo
index d58cbc734e9bdbed6068e7b0e4fd1a8da9396477..e2123f32092fca7ce962ca81f17da2700e4fc57f 100644 (file)
@@ -21,6 +21,7 @@
 # Author: Rxy
 # Author: Schu
 # Author: Shirayuki
+# Author: Suchichi02
 # Author: Sudachi
 # Author: Sujiniku
 # Author: Surgical21
@@ -1887,6 +1888,8 @@ ja:
         <p>
          この処置については近々管理者が確認をいたしますが、ご相談がある場合は%{webmaster} にご連絡いただいてもかまいません。
         </p>
+    auth_failure:
+      invalid_scope: 無効な範囲
   user_role:
     filter:
       not_an_administrator: ユーザー権限の管理を行えるのは管理者だけですが、あなたは管理者ではありません。
index 6bb87ee2f5ff30f9eaec0028d40e018acd87c5e4..3b8748a9bfbb7b63640ee07b6f59812501768a21 100644 (file)
@@ -16,6 +16,7 @@
 # Author: Ruila
 # Author: SeoJeongHo
 # Author: Stleamist
+# Author: Sukjong0406
 # Author: Twotwo2019
 # Author: Wrightbus
 # Author: Ykhwong
@@ -40,16 +41,16 @@ ko:
       friend: 친구
       language: 언어
       message: 메시지
-      node: 노드
-      node_tag: 노드 태그
+      node: 교점
+      node_tag: 교점 태그
       notifier: 알리미
-      old_node: 이전 노드
-      old_node_tag: 이전 노드 태그
+      old_node: 이전 교점
+      old_node_tag: 이전 교점 태그
       old_relation: 이전 관계
       old_relation_member: 이전 관계 구성 요소
       old_relation_tag: 이전 관계 태그
       old_way: 이전 길
-      old_way_node: 이전 길 노드
+      old_way_node: 이전 길 교점
       old_way_tag: 이전 길 태그
       relation: 관계
       relation_member: 관계 구성 요소
@@ -93,7 +94,7 @@ ko:
       user:
         email: 이메일
         active: 활성
-        display_name: 표시 이름
+        display_name: 표시 이름
         description: 설명
         languages: 언어
         pass_crypt: 비밀번호
@@ -1227,9 +1228,13 @@ ko:
       자세한 내용은 <a href='%{copyright_path}'>저작권 및 라이선스 페이지</a>를
       참조하세요.
     legal_title: 법률
-    legal_html: "이 사이트와 많은 다른 관련된 서비스는 공동체 뒤의 <a href='http://osmfoundation.org/'>OpenStreetMap
-      재단</a> (OSMF)에\n의해 공식적으로 운영하고 있습니다.\n<br> \n라이선싱, 저작권 또는 다른 법률 질문과 이슈가 있다면 <a
-      href='http://osmfoundation.org/Contact'>OSMF에 문의</a>하시기 바랍니다."
+    legal_html: |-
+      이 사이트와 많은 다른 관련된 서비스는 공동체 뒤의 <a href='http://osmfoundation.org/'>OpenStreetMap 재단</a> (OSMF)에
+      의해 공식적으로 운영하고 있고 공동체를 대표하여 사용된 모든 OSMF 서비스의 사용은 다음과 같습니다.
+      우리의<a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">허용되는 사용 정책</a>과 <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">개인정보 정책</a>
+      을 참고하시기 바랍니다.
+      <br>
+      라이선싱, 저작권 또는 다른 법률 질문과 이슈가 있다면 <a href='http://osmfoundation.org/Contact'>OSMF에 문의</a>하시기 바랍니다.
     partners_title: 파트너
   notifier:
     diary_comment_notification:
@@ -1351,7 +1356,7 @@ ko:
       body: 본문
       send_button: 보내기
       back_to_inbox: 받은 쪽지함으로 돌아가기
-      message_sent: ë³´ë\82¸ ë©\94ì\8b\9cì§\80
+      message_sent: ë©\94ì\8b\9cì§\80를 ë³´ë\83\88ì\8aµë\8b\88ë\8b¤
       limit_exceeded: 최근에 많은 메시지를 보냈습니다. 더 보내려면 잠시 기다려주세요.
     no_such_message:
       title: 메시지가 없습니다.
@@ -2230,6 +2235,7 @@ ko:
         header: 지도 레이어
         notes: 지도 참고
         data: 지도 데이터
+        gps: 공개 GPS 추적
         overlays: 지도 문제를 해결하기 위해 오버레이를 활성화
         title: 레이어
       copyright: © <a href='%{copyright_url}'>OpenStreetMap 기여자</a>
@@ -2308,6 +2314,11 @@ ko:
         against_oneway_without_exit: '%{name}(으)로 한 방향으로 가세요'
         end_oneway_without_exit: '%{name}에서의 한 방향의 끝'
         roundabout_with_exit: '%{name}에서의 회전교차로에서 %{exit} 출구로 떠나세요'
+        turn_left_with_exit: 로터리에서 %{name}(으)로 좌회전
+        slight_left_with_exit: 로터리에서 %{name}(으)로 약간 좌회전
+        turn_right_with_exit: 로터리에서 %{name}(으)로 우회전
+        slight_right_with_exit: 로터리에서 %{name}(으)로 약간 좌회전
+        continue_with_exit: 로터리에서 %{name}(으)로 직진
         unnamed: 이름 없는 도로
         courtesy: '%{link}의 가는 방향'
       time: 시간
index e5f51d08a37ec6c4d5036ac7ce61c1b5a84dda13..cb38d6cceb9d411b96c71b6df2553c2d6c151ca4 100644 (file)
@@ -1190,6 +1190,8 @@ lb:
         standard: Standard
         cycle_map: Vëloskaart
         hot: Humanitär
+      layers:
+        gps: Ëffentlech GPS Spueren
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Maacht een Don</a>
     site:
       edit_tooltip: Kaart änneren
@@ -1230,6 +1232,11 @@ lb:
         roundabout_without_exit: Am Kreesverkéier huelt %{name}
         leave_roundabout_without_exit: Aus dem Kreesverkéier erausgoen - %{name}
         stay_roundabout_without_exit: Am Kreesverkéier bleiwen - %{name}
+        turn_left_with_exit: Am  Kreesverkéier lénks ofbéien op %{name}
+        slight_left_with_exit: Am Kreesverkéier liicht no lénks op %{name} ofbéien
+        turn_right_with_exit: Am Kreesverkéier riets ofbéien op %{name}
+        slight_right_with_exit: Am Kreesverkéier liicht no riets op %{name} ofbéien
+        continue_with_exit: Am Kreesverkéier riicht viru fueren op %{name}
         unnamed: Strooss ouni Numm
       time: Zäit
     query:
index 713d270e829fbba48fb1ac81e018607b3b0ebcf3..af6fc1dff52cbec8691431c84920f791363f4384 100644 (file)
@@ -1797,6 +1797,9 @@ lv:
         github:
           title: Pieslēgties ar GitHub
           alt: Pieslēgties ar GitHub kontu
+        wikipedia:
+          title: Ieiet ar Vikipēdiju
+          alt: Ieiet ar Vikipēdijas kontu
         yahoo:
           title: Pieslēgties ar Yahoo
           alt: Pieslēgties ar Yahoo OpenID
index efee7dbd934ea7b860c71bedd0444ed460c1ca48..1fe364606c7efe224d8b74ac68c7c64a52bc74aa 100644 (file)
@@ -383,16 +383,16 @@ mk:
     search:
       title:
         latlon: <a href="http://openstreetmap.org/">Внатрешни резултати</a>
-        us_postcode: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://geocoder.us/">Geocoder.us</a>
-        uk_postcode: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
+        us_postcode: Ð\98Ñ\81Ñ\85од од <a href="http://geocoder.us/">Geocoder.us</a>
+        uk_postcode: Ð\98Ñ\81Ñ\85од од <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
           Postcode</a>
-        ca_postcode: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://geocoder.ca/">Geocoder.CA</a>
-        osm_nominatim: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+        ca_postcode: Ð\98Ñ\81Ñ\85од од <a href="http://geocoder.ca/">Geocoder.CA</a>
+        osm_nominatim: Ð\98Ñ\81Ñ\85од од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
           Nominatim</a>
-        geonames: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://www.geonames.org/">GeoNames</a>
-        osm_nominatim_reverse: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+        geonames: Ð\98Ñ\81Ñ\85од од <a href="http://www.geonames.org/">GeoNames</a>
+        osm_nominatim_reverse: Ð\98Ñ\81Ñ\85од од <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
           Nominatim</a>
-        geonames_reverse: Ð ÐµÐ·Ñ\83лÑ\82аÑ\82и од <a href="http://www.geonames.org/">GeoNames</a>
+        geonames_reverse: Ð\98Ñ\81Ñ\85од од <a href="http://www.geonames.org/">GeoNames</a>
     search_osm_nominatim:
       prefix:
         aerialway:
@@ -922,7 +922,7 @@ mk:
         places: Места
     results:
       no_results: Не пронајдов ништо
-      more_results: Ð\9fовеÑ\9cе Ñ\80езÑ\83лÑ\82аÑ\82и
+      more_results: Ð\9fовеÑ\9cе Ñ\81Ñ\82авки
   layouts:
     logo:
       alt_text: Лого на OpenStreetMap
@@ -2323,6 +2323,7 @@ mk:
         header: Слоеви на картата
         notes: Белешки на картата
         data: Податоци за картата
+        gps: Јавни ГПС-траги
         overlays: Овозможи облоги за утврдување грешки
         title: Слоеви
       copyright: © <a href='%{copyright_url}'>Учесници во OpenStreetMap</a>
@@ -2406,6 +2407,11 @@ mk:
         against_oneway_without_exit: Оди обратно во еднонасочната на %{name}
         end_oneway_without_exit: Крај на еднонасочната на %{name}
         roundabout_with_exit: На кружниот тек, свртете на %{exit} излегувајќи на %{name}
+        turn_left_with_exit: На кружниот тек свртете лево на %{name}
+        slight_left_with_exit: На кружниот тек благо лево на %{name}
+        turn_right_with_exit: На кружниот тек свртете десно на %{name}
+        slight_right_with_exit: На кружниот тек благо десно на %{name}
+        continue_with_exit: На кружниот тек продолжете право на %{name}
         unnamed: неименувано
         courtesy: Насоките ги добивте благодарение на %{link}
       time: Време
index c6ee472f4c305a07e17d7ba565be2e1d776fc96c..5a581ec8d8f6d241e47634c6390121cea2d068fb 100644 (file)
@@ -2294,6 +2294,7 @@ nb:
         header: Kartlag
         notes: Kartmerknader
         data: Kartdata
+        gps: Offentlige GPS-sporinger
         overlays: Aktiver overlag for å feilsøke kartet
         title: Lag
       copyright: © <a href='%{copyright_url}'>OpenStreetMap bidragsytere</a>
@@ -2376,6 +2377,11 @@ nb:
         against_oneway_without_exit: Kjør mot enveiskjøring på %{name}
         end_oneway_without_exit: Slutt på enveiskjøring på %{name}
         roundabout_with_exit: Ved rundkjøring, ta utvei %{exit} mot %{name}
+        turn_left_with_exit: Ved rundkjøringen, ta til venstre inn på %{name}
+        slight_left_with_exit: Ved rundkjøringen, ta til venstre inn på %{name}
+        turn_right_with_exit: Ved rundkjøringen, ta til høyre inn på %{name}
+        slight_right_with_exit: Ved rundkjøringen, ta til høyre inn på %{name}
+        continue_with_exit: Ved rundkjøringen, fortsett rett fram på %{name}
         unnamed: ikke navngitt
         courtesy: Veianvisninger gitt av %{link}
       time: Tid
index 642a597113437899a2929495b9ac0a72dc7f7bb2..d67c74fa99e6cadbba674c72271f9505f085d338 100644 (file)
@@ -607,7 +607,7 @@ nl:
           street_lamp: Straatlantaarn
           tertiary: Tertiaire weg
           tertiary_link: Tertiaire weg
-          track: Pad
+          track: Veld- of bosweg
           traffic_signals: Verkeerslichten
           trail: Pad
           trunk: Autosnelweg
@@ -1069,9 +1069,9 @@ nl:
       more_2_html: |-
         Hoewel OpenStreetMap open data is, kunnen we geen gratis
         kaart-API voor derde partijen aanbieden.
-        Zie ons <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API-gebruikbeleid</a>,
-        <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Tegelgebruikbeleid</a>
-        en <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatimgebruikbeleid</a>.
+        Zie ons <a href="https://operations.osmfoundation.org/policies/api/">API-gebruikbeleid</a>,
+        <a href="https://operations.osmfoundation.org/policies/tiles/">Tegelgebruikbeleid</a>
+        en <a href="https://operations.osmfoundation.org/policies/nominatim/">Nominatimgebruikbeleid</a>.
       contributors_title_html: Onze bijdragers
       contributors_intro_html: |-
         Onze bijdragers zijn duizenden individuen. OSM bevat ook
@@ -1174,8 +1174,8 @@ nl:
     questions:
       title: Nog vragen?
       paragraph_1_html: |-
-        Er zijn verschillende bronnen om te leren over OpenStreetMap, voor het stellen van vragen en het krijgen van antwoorden, en het samen overleggen en documenteren van onderwerpen die gaan over kaarten maken.
-        <a href='%{help_url}'>Hier vindt u meer informatie</a>.
+        Er zijn verschillende bronnen om te leren over OpenStreetMap, voor het stellen en beantwoorden van vragen, en het samen overleggen en documenteren van onderwerpen die gaan over kaarten maken.
+        <a href='%{help_url}'>Hier vind je meer informatie</a>.
     start_mapping: Beginnen met kaarten maken
     add_a_note:
       title: Geen tijd om te bewerken? Voeg een opmerking toe!
@@ -1188,23 +1188,24 @@ nl:
   fixthemap:
     title: Een probleem melden / de kaart corrigeren
     how_to_help:
-      title: Hoe u kunt helpen
+      title: Hoe je kan helpen
       join_the_community:
         title: Word lid van onze gemeenschap
-        explanation_html: Als u een probleem met onze kaartgegevens hebt gevonden
-          (er ontbreekt bijvoorbeeld een weg of uw adres staat er niet in) dan kunt
-          u zich het beste bij OpenStreetMap inschrijven en de gegevens zelf toevoegen
+        explanation_html: Als je een probleem met onze kaartgegevens hebt gevonden
+          (er ontbreekt bijvoorbeeld een weg of je adres staat er niet in) dan kan
+          je je het best bij OpenStreetMap inschrijven en de gegevens zelf toevoegen
           of corrigeren.
       add_a_note:
         instructions_html: |-
           Klik op <a class='icon note'></a> of het hetzelfde pictogram op de kaartweergave.
-          Er wordt dan een markering toegevoegd aan de kaart, die u kunt verplaatsen door te slepen.
-          Voeg uw bericht toe, klik op opslaan, en andere kaartenmakers kijken dan naar uw melding.
+          Er wordt dan een markering toegevoegd aan de kaart, die je kan verslepen.
+          Voeg je bericht toe, klik op opslaan, en andere kaartenmakers kijken dan naar jouw melding.
     other_concerns:
-      title: Andere punten van zorg
+      title: Andere aangelegenheden
       explanation_html: |-
-        Als u vragen hebt over hoe onze gegevens worden gebruikt of over de inhoud, raadpleeg dan onze
-        <a href='/copyright'>auteursrechtenpagina</a> voor meer juridische informatie, of neem contact op met de betreffende <a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF werkgroep</a>.
+        Als je vragen hebt over hoe onze gegevens worden gebruikt of over de inhoud, raadpleeg dan onze
+        <a href='/copyright'>auteursrechtenpagina</a> voor meer juridische informatie, of neem contact op met de betreffende
+        <a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF-werkgroep</a>.
   help_page:
     title: Hulp krijgen
     introduction: Er zijn verschillende bronnen om meer te leren over OpenStreetMap,
@@ -2361,6 +2362,7 @@ nl:
         header: Kaartlagen
         notes: Opmerkingen bij kaarten
         data: Kaartgegevens
+        gps: Openbare GPS-traces
         overlays: Overlays inschakelen om fouten in de kaart te kunnen identificeren
         title: Lagen
       copyright: © <a href='%{copyright_url}'>bijdragers OpenStreetMap</a>
@@ -2443,7 +2445,12 @@ nl:
         destination_without_exit: Bestemming bereiken
         against_oneway_without_exit: Ga tegen het verkeer in op %{name}
         end_oneway_without_exit: Einde van eenrichtingsverkeer op %{name}
-        roundabout_with_exit: Neem op de rotonde de afslag %{exit} naar %{name}
+        roundabout_with_exit: Neem op de rotonde afslag %{exit} naar %{name}
+        turn_left_with_exit: Op de rotonde linksaf naar %{name}
+        slight_left_with_exit: Op de rotonde flauwe bocht naar links naar %{name}
+        turn_right_with_exit: Op de rotonde rechtsaf naar %{name}
+        slight_right_with_exit: Op de rotonde flauwe bocht naar rechts naar %{name}
+        continue_with_exit: Op de rotonde rechtdoor naar %{name}
         unnamed: naamloos
         courtesy: Routebeschrijving met dank aan %{link}
       time: Tijd
index 33c76f1e40f5766f1262fa911f50d938ea0e16a0..9ef0b356328f6f3301a0a068850688133825a63f 100644 (file)
@@ -133,7 +133,7 @@ pl:
       name: Potlatch 2
       description: Potlatch 2 (w przeglądarce)
     remote:
-      name: Zdalny program
+      name: Zewnętrzny edytor
       description: Zdalny program (JOSM lub Merkaartor)
   browse:
     created: Utworzone
@@ -198,7 +198,7 @@ pl:
       entry: Relacja %{relation_name}
       entry_role: Relacja %{relation_name} (jako %{relation_role})
     not_found:
-      sorry: 'Niestety, %{type} #%{id} nie został znaleziony.'
+      sorry: 'Niestety, nie odnaleziono %{type} #%{id}.'
       type:
         node: węzeł
         way: linia
@@ -551,7 +551,7 @@ pl:
           waste_disposal: Śmietnik
           youth_centre: Centrum młodzieżowe
         boundary:
-          administrative: Granica administracyjna
+          administrative: Granica gminy
           census: Granica spisu ludności
           national_park: Park Narodowy
           protected_area: Obszar chroniony
@@ -860,7 +860,7 @@ pl:
           electronics: Sklep elektroniczny
           estate_agent: Biuro nieruchomości
           farm: Sklep gospodarski
-          fashion: Sklep modelarski
+          fashion: Sklep z modą
           fish: Sklep rybny
           florist: Kwiaciarnia
           food: Sklep spożywczy
@@ -951,9 +951,9 @@ pl:
         level2: Granica kraju
         level4: 'Granica:'
         level5: Granica regionu
-        level6: 'Granica:'
+        level6: 'Granica powiatu:'
         level8: Granica miejscowości
-        level9: Granica wsi
+        level9: Granica dzielnicy
         level10: Granica przedmieścia
     description:
       title:
@@ -1277,19 +1277,19 @@ pl:
       befriend_them: Możesz również dodać go jako znajomego na %{befriendurl}.
     gpx_notification:
       greeting: Witaj,
-      your_gpx_file: Wygląda, ze Twój plik GPX
+      your_gpx_file: Wygląda na to, że plik GPX
       with_description: z opisem
       and_the_tags: i następujące tagi
-      and_no_tags: i brak znaczników
+      and_no_tags: i bez znaczników
       failure:
-        subject: '[OpenStreetMap] Błąd importu pliku GPX'
-        failed_to_import: 'nie udało się zaimportować. Komunikat błędu:'
+        subject: '[OpenStreetMap] Nieudane importowanie pliku GPX'
+        failed_to_import: 'nie został zaimportowany. Komunikat błędu:'
         more_info_1: Więcej informacji na temat błędów przesyłania danych GPX i sposobach
           ich
         more_info_2: 'uniknięcia można znaleźć na stronie:'
         import_failures_url: http://wiki.openstreetmap.org/wiki/GPX_Import_Failures
       success:
-        subject: '[OpenStreetMap] Sukces importu pliku GPX'
+        subject: '[OpenStreetMap] Zaimportowano plik GPX'
         loaded_successfully: wczytano wraz z %{trace_points} z %{possible_points}
           punktów łącznie.
     signup_confirm:
@@ -1318,12 +1318,12 @@ pl:
       greeting: Cześć,
       hopefully_you: Ktoś (prawdopodobnie Ty) poprosił o zresetowanie hasła do konta
         w serwisie openstreetmap.org dla tego adresu e-mail.
-      click_the_link: Jeśli to ty, kliknij na poniższy link, aby zresetować hasło.
+      click_the_link: Jeśli to ty, kliknij poniższy odnośnik, aby wyczyścić hasło.
     lost_password_html:
       greeting: Witaj,
       hopefully_you: Ktoś – prawdopodobnie Ty – poprosił o zresetowanie hasła do konta
         w serwisie openstreetmap.org dla tego adresu e-mail.
-      click_the_link: Jeśli to Ty, kliknij na poniższy link, aby zresetować hasło.
+      click_the_link: Jeśli to Ty, kliknij poniższy odnośnik, aby wyczyścić hasło.
     note_comment_notification:
       anonymous: Anonimowy użytkownik
       greeting: Witaj,
@@ -1399,7 +1399,7 @@ pl:
       body: Treść
       send_button: Wyślij
       back_to_inbox: Wróć do skrzynki
-      message_sent: Wiadomość wysłana
+      message_sent: Wysłano wiadomość
       limit_exceeded: Masz ostatnio wiele wysłanych wiadomości. Proszę poczekać chwilę
         przed powtórzeniem wysłania.
     no_such_message:
@@ -1407,10 +1407,10 @@ pl:
       heading: Nie ma takiej wiadomości
       body: Niestety, nie ma wiadomości o tym identyfikatorze.
     outbox:
-      title: Wiadomości wysłane
-      my_inbox: Moja skrzynka %{inbox_link}
-      inbox: odbiorcza
-      outbox: nadawcza
+      title: Wysłane
+      my_inbox: Wiadomości %{inbox_link}
+      inbox: odebrane
+      outbox: wysłane
       messages:
         one: '%{count} wysłana wiadomość'
         few: '%{count} wysłane wiadomości'
@@ -1458,9 +1458,9 @@ pl:
       remote_failed: Nieudane edytowanie – proszę sprawdzić czy program JOSM lub Merkaartor
         jest uruchomiony i funkcja Remote Control jest włączona
     edit:
-      not_public: Nie wybrałeś(aś) by twoje edycje były publiczne.
-      not_public_description: W tym trybie nie można już zmieniać mapy.  Możesz ustaw
-        je na publiczne na Twojej %{user_page}.
+      not_public: Nie ustalono, aby edycje były publiczne.
+      not_public_description: W tym trybie nie można już zmieniać mapy. Można zmien
+        je na publiczne na %{user_page}.
       user_page_link: stronie użytkownika
       anon_edits: (%{link})
       anon_edits_link_text: Tu dowiesz się dlaczego.
@@ -1701,7 +1701,7 @@ pl:
       cookies_needed: Wygląda na to, że wyłączono obsługę ciasteczek w przeglądarce.
         Proszę ją włączyć przed kontynuowaniem.
     require_moderator:
-      not_a_moderator: Musisz być moderatorem, aby wykonać tą akcję.
+      not_a_moderator: Musisz być moderatorem, aby wykonać tą czynność.
     setup_user_auth:
       blocked: Twój dostęp do API jest zablokowany. Zaloguj się do interfejsu sieciowego,
         aby dowiedzieć się więcej.
@@ -1710,7 +1710,7 @@ pl:
         ich akceptować, ale musisz się z nimi zapoznać.
   oauth:
     oauthorize:
-      title: Autoryzuj dostęp do Twojego konta
+      title: Uwierzytelnij dostęp do konta
       request_access: Aplikacja %{app_name} żąda dostępu do konta użytkownika %{user}.
         Proszę potwierdzić przyznanie aplikacji poniższych uprawnień. Można wybrać
         dowolną liczbę opcji.
@@ -1723,7 +1723,7 @@ pl:
       allow_read_gpx: odczytywanie prywatnych śladów GPS
       allow_write_gpx: przesyłanie śladów GPS
       allow_write_notes: modyfikowanie uwag.
-      grant_access: Zezwól dostęp
+      grant_access: Przyznaj dostęp
     oauthorize_success:
       title: Dozwolone żądanie uwierzytelnienia
       allowed: Przyznano dostęp do konta aplikacji %{app_name}.
@@ -1779,19 +1779,19 @@ pl:
       url: Główny adres URL aplikacji
       callback_url: Adres URL odwołania zwrotnego
       support_url: Adres URL pomocy technicznej
-      requests: 'Żądaj następujących uprawnień od użytkowników:'
-      allow_read_prefs: odczytywanie ich ustawień.
-      allow_write_prefs: modyfikacja ich ustawień.
-      allow_write_diary: tworzenie wpisów w dzienniku, dopisywanie komentarzy i nawiązywanie
-        kontaktów.
-      allow_write_api: modyfikacja mapy.
-      allow_read_gpx: odczytywanie ich prywatnych śladów GPS.
-      allow_write_gpx: przesyłanie śladów GPS.
-      allow_write_notes: modyfikowanie uwag.
+      requests: 'Żądanie następujących uprawnień od użytkowników:'
+      allow_read_prefs: Odczytywanie ich ustawień użytkownika
+      allow_write_prefs: Modyfikowanie ich ustawień użytkownika
+      allow_write_diary: Tworzenie wpisów w dzienniku, dodawanie komentarzy i nawiązywanie
+        kontaktów
+      allow_write_api: Modyfikowanie mapy
+      allow_read_gpx: Odczytywanie ich prywatnych śladów GPS
+      allow_write_gpx: Przesyłanie śladów GPS
+      allow_write_notes: Modyfikowanie uwag
     not_found:
       sorry: Niestety, nie odnaleziono %{type}.
     create:
-      flash: Pomyślnie zarejestrowano informacje
+      flash: Zarejestrowano informacje
     update:
       flash: Informacje o kliencie zostały pomyślnie zaktualizowane
     destroy:
@@ -1801,7 +1801,7 @@ pl:
       title: Logowanie
       heading: Logowanie
       email or username: 'Adres email lub nazwa użytkownika:'
-      password: Hasło
+      password: 'Hasło:'
       openid: '%{logo} OpenID:'
       remember: Zapamiętanie danych uwierzytelniających
       lost password link: Zapomniałeś hasła?
@@ -1821,35 +1821,35 @@ pl:
         aktywność.<br />Skontaktuj się z <a href="%{webmaster}">webmasterem</a>, jeśli
         chcesz przedyskutować blokadę.
       auth failure: Niestety, podane dane nie pozwoliły na zalogowanie.
-      openid_logo_alt: Zaloguj przez OpenID
+      openid_logo_alt: Loguje za pomocą OpenID
       auth_providers:
         openid:
-          title: Zaloguj przez OpenID
-          alt: Zaloguj przez URL OpenID
+          title: Zaloguj za pomocą OpenID
+          alt: Zaloguj za pomocą adresu URL OpenID
         google:
-          title: Zaloguj przez Google
-          alt: Zaloguj przez Google OpenID
+          title: Loguje za pomocą Google
+          alt: Zaloguj za pomocą Google OpenID
         facebook:
-          title: Zaloguj przez Facebooka
-          alt: Zaloguj przez konto Facebook
+          title: Loguje za pomocą Facebook
+          alt: Zaloguj za pomocą konta Facebook
         windowslive:
-          title: Zaloguj przez Windows Live
-          alt: Zaloguj przez konto Windows Live
+          title: Loguje za pomocą Windows Live
+          alt: Zaloguj za pomocą konta Windows Live
         github:
           title: Loguje za pomocą GitHub
           alt: Zaloguj przy użyciu konta GitHub
         wikipedia:
-          title: Zaloguj się przez Wikipedię
-          alt: Zaloguj się przez konto na Wikipedii
+          title: Loguje za pomocą Wikipedia
+          alt: Zaloguj za pomocą konta Wikipedia
         yahoo:
-          title: Zaloguj używając Yahoo
-          alt: Zaloguj używając Yahoo OpenID
+          title: Loguje za pomocą Yahoo
+          alt: Zaloguj za pomocą OpenID Yahoo
         wordpress:
-          title: Zaloguj przez Wordpress
-          alt: Zaloguj używając Wordpress OpenID
+          title: Loguje za pomocą Wordpress
+          alt: Zaloguj za pomocą OpenID Wordpress
         aol:
-          title: Zaloguj przez AOL
-          alt: Zaloguj używając AOL OpenID
+          title: Loguje za pomocą AOL
+          alt: Zaloguj za pomocą OpenID AOL
     logout:
       title: Wyloguj
       heading: Wyloguj z OpenStreetMap
@@ -1859,17 +1859,17 @@ pl:
       heading: Zapomniałeś hasła?
       email address: 'Adres e-mail:'
       new password button: Wyczyść hasło
-      help_text: Wpisz adres e-mail, którego użyłeś do logowania się. Wyślemy na niego
-        link, który możesz użyć do zresetowania hasła.
-      notice email on way: Przykro nam że je zgubiłeś/aś ale zaraz dostaniesz maila
-        z pomocą którego niedługo zresetujesz hasło.
-      notice email cannot find: Niestety nie znaleziono tego adresu e-mail.
+      help_text: Proszę wprowadzić adres e-mail używany do logowania. Zostanie wysłany
+        na niego odnośnik służący do wyczyszczenia hasła.
+      notice email on way: Przykro nam z powodu utraty hasła. Wiadomość, która umożliwi
+        jego wyczyszczenie, jest już w drodze.
+      notice email cannot find: Niestety, nie odnaleziono tego adresu e-mail.
     reset_password:
-      title: zresetuj hasło
-      heading: Resetowanie hasła %{user}
+      title: Wyczyść hasło
+      heading: Czyszczenie hasła użytkownika %{user}
       password: Hasło
       confirm password: Potwierdź hasło
-      reset: Resetuj hasło
+      reset: Wyczyść hasło
       flash changed: Hasło zostało zmienione.
       flash token bad: Nie znaleziono tokenu, sprawdź URL
     new:
@@ -1944,7 +1944,7 @@ pl:
       my profile: Profil
       my settings: Ustawienia
       my comments: Komentarze
-      oauth settings: ustawienia oauth
+      oauth settings: Ustawienia oauth
       blocks on me: Otrzymane blokady
       blocks by me: Nałożone blokady
       send message: wyślij wiadomość
@@ -1952,7 +1952,7 @@ pl:
       edits: edycje
       traces: ślady
       notes: uwagi
-      remove as friend: Usuń ze znajomych
+      remove as friend: usuń ze znajomych
       add as friend: dodaj do znajomych
       mapper since: 'Mapuje od:'
       ago: (%{time_in_words_ago} temu)
@@ -1960,7 +1960,7 @@ pl:
       ct undecided: niezdecydowane
       ct declined: odrzucone
       ct accepted: przyjęte %{ago} temu
-      latest edit: 'Ostatnia edycja %{ago}:'
+      latest edit: 'Ostatnia zmiana %{ago}:'
       email address: Adres e‐mail
       created from: 'Stworzony z:'
       status: 'Stan:'
@@ -1971,7 +1971,7 @@ pl:
         użytkowników blisko ciebie.
       settings_link_text: stronie ustawień
       your friends: Twoi znajomi
-      no friends: Nie masz jeszcze dodanych żadnych znajomych.
+      no friends: Nie dodano jeszcze żadnych znajomych.
       km away: '%{count}km stąd'
       m away: '%{count}m stąd'
       nearby users: Najbliżsi użytkownicy
@@ -2035,8 +2035,8 @@ pl:
           są już domyślnie publiczni.</ul></li>
       contributor terms:
         heading: 'Warunki uczestnictwa:'
-        agreed: Zgodziłeś się na nowe Warunki uczestnictwa.
-        not yet agreed: Nie zgodziłeś się na nowe warunki uczestnictwa.
+        agreed: Wyrażono zgodę na nowe warunki uczestnictwa.
+        not yet agreed: Nie wyrażono zgody na nowe Warunki uczestnictwa.
         review link text: Na tej stronie możesz zapoznać się z nowymi Warunkami uczestnictwa
           i je zaakceptować.
         agreed_with_pd: Zadeklarowałeś, że twoje edycje publikujesz w domenie publicznej.
@@ -2050,8 +2050,8 @@ pl:
         gravatar: Użycie Gravatara
         link: http://wiki.openstreetmap.org/wiki/Gravatar
         link text: co to jest?
-        disabled: '"Gravatar" został wyłączony.'
-        enabled: Wyświetlanie Twojego "Gravataru" zostało włączone.
+        disabled: Wyłączono „Gravatara”.
+        enabled: Włączono wyświetlanie „Gravatara”.
       new image: Dodanie obrazu
       keep image: Pozostaw dotychczasową ilustrację
       delete image: Usunięcie aktualnego obrazu
@@ -2147,8 +2147,8 @@ pl:
       heading: Twój identyfikator nie jest jeszcze powiązany z kontem OpenStreetMap.
       option_1: Jeśli jesteś po raz pierwszy na OpenStreetMap, utwórz nowe konto za
         pomocą formularza poniżej.
-      option_2: Jeśli masz już konto, możesz zalogować się, podając swój login i hasło,
-        a następnie powiązać konto z twoim ID w ustawieniach użytkownika.
+      option_2: Jeśli masz już konto, możesz zalogować się, podając swoją nazwę użytkownika
+        i hasło, a następnie powiązać konto z twoim ID w ustawieniach użytkownika.
   user_role:
     filter:
       not_an_administrator: Tylko administratorzy mogą zarządzać rolami użytkowników,
@@ -2269,8 +2269,8 @@ pl:
       time_past: Zakończona %{time} temu
       created: Utworzony
       ago: '%{time} temu'
-      status: Status
-      show: Pokaż
+      status: Stan
+      show: Wyświetl
       edit: Edytuj
       revoke: Odwołaj
       confirm: Na pewno?
@@ -2318,8 +2318,8 @@ pl:
       image: Obraz
       link: Odnośnik lub HTML
       long_link: Odnośnik
-      short_link: Krótki link
-      geo_uri: Geo URI
+      short_link: Skrócony
+      geo_uri: Schemat geo URI
       embed: HTML
       custom_dimensions: Własne wymiary
       format: 'Format:'
@@ -2349,11 +2349,12 @@ pl:
         standard: Podstawowa
         cycle_map: Rowerowa
         transport_map: Transportu publicznego
-        hot: Pomocy humanitarnej
+        hot: Humanitarna
       layers:
         header: Warstwy mapy
         notes: Uwagi
         data: Dane mapy
+        gps: Publiczne ślady GPS
         overlays: Nakładki do rozwiązywania problemów na mapie
         title: Warstwy
       copyright: © <a href='%{copyright_url}'>autorzy OpenStreetMap</a>
@@ -2437,6 +2438,11 @@ pl:
         against_oneway_without_exit: Ruszaj na przeciwko jednostronnego ruchu na %{name}
         end_oneway_without_exit: Koniec jednostronnego ruchu na %{name}
         roundabout_with_exit: Na rondzie zjedź %{exit} zjazdem w %{name}
+        turn_left_with_exit: Na rondzie skręć w lewo w %{name}
+        slight_left_with_exit: Na rondzie skręć lekko w lewo w %{name}
+        turn_right_with_exit: Na rondzie skręć w prawo w %{name}
+        slight_right_with_exit: Na rondzie skręć lekko w prawo w %{name}
+        continue_with_exit: Na rondzie jedź na wprost w %{name}
         unnamed: bez nazwy
         courtesy: Wyznaczanie trasy dzięki uprzejmości %{link}
       time: Czas
@@ -2464,7 +2470,7 @@ pl:
       title: Tworzenie nowej poprawki
     show:
       description: 'Opis:'
-      heading: Poprawka "%{title}"
+      heading: Poprawka „%{title}”
       title: Wyświetlenie poprawki
       user: 'Autor:'
       edit: Edytuj tę poprawkę
index e80f8969533191192248278b9fd9bbd1411f49c5..9521748a092a2573d923303b963476ea66b9597d 100644 (file)
@@ -8,6 +8,7 @@
 # Author: Cristofer Alves
 # Author: Dianakc
 # Author: Diego Queiroz
+# Author: Eduardo Addad de Oliveira
 # Author: Fmca
 # Author: Ftrebien
 # Author: Fúlvio
@@ -1059,13 +1060,11 @@ pt-BR:
         Leia mais sobre o uso de nossos dados, e sobre como nos dar crédito, em <a
         href="http://wiki.openstreetmap.org/wiki/Legal_FAQ?setlang=pt">Legal
         FAQ</a>.
-      more_2_html: |2-
-          Embora o OpenStreetMap tenha dados abertos, não podemos prover uma
-          API de mapas livre de encargos para desenvolvedores de terceiros.
-
-          Veja nossa <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Política de uso da API</a>,
-          <a href="http://wiki.openstreetmap.org/wiki/Pt-br:Tile_usage_policy">Política de Uso de Imagens</a>
-          e <a href="http://wiki.openstreetmap.org/wiki/Pt-br:Nominatim#Pol.C3.ADtica_de_uso">Política de Uso do Nominatim</a>.
+      more_2_html: |-
+        Embora o OpenStreetMap seja aberto, não podemos fornecer
+        API de mapa gratuito para terceiros.
+        Veja nossa<a href="https://operations.osmfoundation.org/policies/api/"></a> Política de uso da API<a href="https://operations.osmfoundation.org/policies/tiles/"></a>Política de Uso de Imagens</a>
+          e<a href="https://operations.osmfoundation.org/policies/nominatim/"></a>
       contributors_title_html: Nossos contribuidores
       contributors_intro_html: |-
         Nossos contribuidores são milhares de indivíduos. Também incluímos
@@ -1845,6 +1844,9 @@ pt-BR:
         github:
           title: Entrar com o GitHub
           alt: Entrar com conta do GitHub
+        wikipedia:
+          title: Entrar com Wikipédia
+          alt: Login com uma conta da Wikipedia
         yahoo:
           title: Entrar com o Yahoo
           alt: Entrar com um OpenID da Yahoo
@@ -2354,6 +2356,7 @@ pt-BR:
         header: Camadas do Mapa
         notes: Notas de Mapa
         data: Dados do Mapa
+        gps: Rastreios públicos de GPS
         overlays: Ativar sobreposições para solucionar problemas do mapa
         title: Camadas
       copyright: © <a href='%{copyright_url}'>contribuidores do OpenStreetMap</a>
@@ -2436,6 +2439,11 @@ pt-BR:
         against_oneway_without_exit: Vá contra o sentido da mão única em %{name}
         end_oneway_without_exit: Final de mão única em %{name}
         roundabout_with_exit: Na rotatória, pegue a saída %{exit} para %{name}
+        turn_left_with_exit: Na rotatória, vire à esquerda para %{name}
+        slight_left_with_exit: Na rotatória à esquerda ligeiramente para %{name}
+        turn_right_with_exit: Na rotatória, vire à direita para %{name}
+        slight_right_with_exit: Na rotatória à direita para %{name}
+        continue_with_exit: Na rotatória, continue em frente para %{name}
         unnamed: sem nome
         courtesy: Itinerário cortesia de %{link}
       time: Duração
index e1826e75ed97f688c3b585f58e7812f8c738b301..b84733ed27973299fdfb762dd67ac54940c1f3ff 100644 (file)
@@ -1078,9 +1078,9 @@ ru:
         на юридические вопросы</a>.
       more_2_html: Хотя данные OpenStreetMap открыты для использования, мы не в состоянии
         предоставить бесплатный API к нашим картам для сторонних разработчиков. См.
-        <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Правила использования
-        API</a>, <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Правила
-        использования частей карты</a> и <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Правила
+        <a href="https://operations.osmfoundation.org/policies/api/">Правила использования
+        API</a>, <a href="https://operations.osmfoundation.org/policies/tiles/">Правила
+        использования частей карты</a> и <a href="https://operations.osmfoundation.org/policies/nominatim/">Правила
         использования службы Nominatim</a> .
       contributors_title_html: Кто вносит вклад в наш проект
       contributors_intro_html: 'Участниками проекта являются тысячи отдельных людей.
@@ -1860,6 +1860,9 @@ ru:
         github:
           title: Войти с GitHub
           alt: Войти с учётной записи на GitHub
+        wikipedia:
+          title: Войти с помощью Википедии
+          alt: Вход с использованием учётной записи в Википедии
         yahoo:
           title: Войти с помощью Yahoo
           alt: Войти с помощью Yahoo OpenID
@@ -2463,6 +2466,9 @@ ru:
         against_oneway_without_exit: Идите против одностороннего движения на %{name}
         end_oneway_without_exit: Конец одностороннего движения на %{name}
         roundabout_with_exit: На развязке выберите выход %{exit} на %{name}
+        turn_left_with_exit: На круговой развязке поверните налево на %{name}
+        turn_right_with_exit: На круговой развязке поверните направо на %{name}
+        continue_with_exit: На круговой развязке продолжайте движение прямо на %{name}
         unnamed: без имени
         courtesy: Маршрут предоставлен %{link}
       time: Время
index dbfed4848effc59ef855944e1576685e093d9829..1239ae686a06ee92c5c38ededa3640a6c7219065 100644 (file)
@@ -679,7 +679,7 @@ sl:
           cliff: Klif
           crater: Krater
           dune: Peščina
-          fell: Višinski travnik
+          fell: Planina
           fjord: Fjord
           forest: Gozd
           geyser: Gejzir
@@ -760,7 +760,7 @@ sl:
           historic_station: Zgodovinska železniška postaja
           junction: Križišče železnic
           level_crossing: Prehod
-          light_rail: Tramvaj
+          light_rail: Mestna železnica
           miniature: Miniaturna železnica
           monorail: Monorail
           narrow_gauge: Ozkotirna železnica
@@ -1052,7 +1052,7 @@ sl:
   about_page:
     next: Naslednji
     copyright_html: <span>&copy;</span>OpenStreetMap<br> sodelavci
-    local_knowledge_title: Lokalno znanje
+    local_knowledge_title: Krajevno znanje
     partners_title: Partnerji
   notifier:
     diary_comment_notification:
@@ -1302,11 +1302,14 @@ sl:
           track: Kolovoz
           bridleway: Jahalna pot
           cycleway: Kolesarska steza
+          cycleway_national: Nacionalna kolesarska steza
+          cycleway_regional: Regionalna kolesarska steza
+          cycleway_local: Krajevna kolesarska steza
           footway: Pešpot
           rail: Železnica
           subway: Podzemna železnica
           tram:
-          - Tramvaj
+          - Mestna železnica
           - tramvaj
           cable:
           - Kabinska žičnica
@@ -2079,7 +2082,7 @@ sl:
     key:
       title: Ključ zemljevida
       tooltip: Ključ zemljevida
-      tooltip_disabled: Ključ zemljevida na voljo le za standardno plast
+      tooltip_disabled: Ključ zemljevida ni na voljo za to plast
     map:
       zoom:
         in: Povečaj
index dcc6e827b21e3b5092da622c2d69c6e7f878a599..e8e40c140bdf32e1a1ff98962ce70cd386d4c0e5 100644 (file)
@@ -4,12 +4,14 @@
 # Author: Euriditi
 # Author: GretaDoci
 # Author: Kosovastar
+# Author: Liridon
 # Author: Macofe
 # Author: Mdupont
 # Author: MicroBoy
 # Author: Mikullovci11
 # Author: Nemo bis
 # Author: Ruila
+# Author: Sidorela.uku
 # Author: Techlik
 # Author: Vinie007
 # Author: 아라
@@ -786,17 +788,20 @@ sq:
           junction: Nyje hekurudhore
           level_crossing: Kryqzim hekurudhor
           light_rail: Hekurudhë e lehtë
-          miniature: Hekurudhudhë në miniaturë
+          miniature: Hekurudhë në miniaturë
           monorail: Hekurudhë me një shinë
           narrow_gauge: Ngushticë hekurudhe
           platform: Platformë hekurudhore
           preserved: Hekurudhë muze
           proposed: Hekurudhë e planifikuar
           spur: Hekurudhë
+          station: Stacion hekurudhor
           stop: Stacion hekurudhor
           subway: Metro
           subway_entrance: Hyrje metroje
+          switch: Pika hekurudhore
         shop:
+          antiques: Antike
           bakery: Furrë buke
           butcher: Mishtore
           car: Sallon automobilash
@@ -846,10 +851,12 @@ sq:
           toys: Dyqan lodrash
           "yes": Dyqan
         tourism:
+          apartment: Apartament
           artwork: Vepër artistike
           bed_and_breakfast: Bujtinë me mëngjes
           cabin: Kabinë
           camp_site: Vend për kampim
+          gallery: Galeri
           hostel: Bujtinë
           hotel: Hotel
           information: Informacion
@@ -881,6 +888,7 @@ sq:
         geonames: Lokacioni nga <a href="http://www.geonames.org/">GeoNames</a>
       types:
         cities: Qytetet
+        towns: Qyteza
         places: Vende
     results:
       no_results: Nuk është gjetur asnjë rezultat
@@ -889,9 +897,14 @@ sq:
     project_name:
       title: OpenStreetMap
       h1: OpenStreetMap
+    logo:
+      alt_text: Logoja e OpenStreetMap
     logout: Çidentifikohu
     log_in: Identifikohu
     log_in_tooltip: Identifikohu me një llogari ekzistuese
+    sign_up: Krijo llogari
+    start_mapping: Fillo hartografimin
+    sign_up_tooltip: Krijo një llogari për redaktim
     edit: Redakto
     history: Historia
     export: Eksporti
@@ -1007,11 +1020,31 @@ sq:
     start_mapping: Fillo hartografimin
     add_a_note:
       title: Nuk ke kohë për të redaktuar? Shto një shënim!
+  fixthemap:
+    how_to_help:
+      title: Si të ndihmosh
+      join_the_community:
+        title: Bashkohu me komunitetin
+        explanation_html: Nëse keni vënë re një problem me të dhënat e hartës, për
+          shembull një rrugë mungon apo adresa juaj, mënyra më e mirë për të procesuar
+          është t'i bashkohesh komunitetit OpeenStreetMap dhe të shtosh apo të riparosh
+          të dhënat vetë.
+      add_a_note:
+        instructions_html: Klikoni <a class='icon note'></a> ose të njëjtën ikonë
+          në ekranin e hartës. Kjo do të shtojë një shënues në hartë, të cilën ju
+          mund ta lëvizni duke e tërhequr. Shtoni mesazhin tuaj, pastaj klikoni save
+          dhe editues të tjerë do ta kontrollojnë.
+    other_concerns:
+      title: Shqetësime të tjera
   help_page:
     title: Merr ndihmë
+    introduction: OpenStreetMap ka disa burime për të mësuar në lidhje me projektin,
+      duke bërë pyetje dhe duke ju përgjigjur dhe duke diskutuar bashkërisht dhe duke
+      dokumentuar temat e hartës.
     welcome:
-      url: Mirësevjen
+      url: /mirësevjen
       title: Mirësevjen në OSM
+      description: Filloni me këtë udhëzues të thjeshtë që mbulon bazat e OpenStreetMap.
     beginners_guide:
       url: http://wiki.openstreetmap.org/wiki/Sq:Beginners%27_guide
       title: Udhëzues për fillestarë.
@@ -1019,6 +1052,12 @@ sq:
     help:
       url: https://help.openstreetmap.org/
       title: help.openstreetmap.org
+      description: Bëni një pyetje ose shikoni përgjigjet në faqen pyetje dhe përgjigje
+        të OSM-së.
+    mailing_lists:
+      title: Listat E Postimeve
+      description: Bëni një pyetje ose diskutoni çështje interesante në një gamë të
+        gjerë të listës së postimeve të ditës apo rajonale.
     forums:
       title: Forumet
   about_page:
index f9ef716a11bc853e4fa4e3d8ba7e43091b622791..d8f3d8c8fb73a8b82761d4725c5f293bbb146e93 100644 (file)
@@ -1062,10 +1062,10 @@ sv:
         href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">juridiska
         FAQ</a>.
       more_2_html: |-
-        Även om OpenStreetMap är öppen data, kan vi inte tillhandahålla något gratis kart-API för tredjepartsutvecklare.
-        Se vår <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">användningspolicy för API</a>,
-        <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">användningspolicy för kartrutor</a>
-        och <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">användningspolicy för Nominatim</a>.
+        Även om OpenStreetMap är öppen data, kan vi inte tillhandahålla något gratis kart-API för tredjeparter.
+        Se vår <a href="https://operations.osmfoundation.org/policies/api/">användningspolicy för API</a>,
+        <a href="https://operations.osmfoundation.org/policies/tiles/">användningspolicy för kartrutor</a>
+        och <a href="https://operations.osmfoundation.org/policies/nominatim/">användningspolicy för Nominatim</a>.
       contributors_title_html: Våra bidragsgivare
       contributors_intro_html: |-
         Våra bidragsgivare är tusentals individer. Vi inkluderar också
@@ -1839,6 +1839,9 @@ sv:
         github:
           title: Logga in med GitHub
           alt: Logga in med ett GitHub-Konto
+        wikipedia:
+          title: Logga in med Wikipedia
+          alt: Logga in med ett Wikipedia-konto
         yahoo:
           title: Logga in med Yahoo
           alt: Logga in med ett Yahoo OpenID
@@ -2426,6 +2429,9 @@ sv:
         against_oneway_without_exit: Kör mot enkelriktat på %{name}
         end_oneway_without_exit: Slutet av enkelriktat på %{name}
         roundabout_with_exit: Vid rondellen, ta avfart %{exit} mot %{name}
+        turn_left_with_exit: I rondellen, sväng vänster till %{name}
+        turn_right_with_exit: I rondellen, sväng höger till %{name}
+        continue_with_exit: I rondellen, fortsätt rakt fram till %{name}
         unnamed: namnlös
         courtesy: Vägbeskrivning med tillstånd av %{link}
       time: Tid
index 8416e83d7f5dcf0cc8e83726b5d7bab92356a2a3..1bb10997a35d5abc385c49434dc793461be74c95 100644 (file)
@@ -842,7 +842,7 @@ uk:
           dry_cleaning: Хімчистка
           electronics: Магазин електроніки
           estate_agent: Агентство нерухомості
-          farm: Ð¡Ñ\96лÑ\8cÑ\81Ñ\8cка ÐºÑ\80амниÑ\86Ñ\8f
+          farm: Ð¤ÐµÑ\80меÑ\80Ñ\81Ñ\8cкий Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½
           fashion: Модний одяг
           fish: Риба
           florist: Квіти
@@ -864,7 +864,7 @@ uk:
           laundry: Пральня
           mall: Торгівельно-розважальний центр
           market: Магазин
-          mobile_phone: Ð\9cобÑ\96лÑ\8cний Ñ\81алон
+          mobile_phone: Ð\9cагазин Ð¼Ð¾Ð±Ñ\96лÑ\8cниÑ\85 Ñ\82елеÑ\84онÑ\96в
           motorcycle: Мотоцикли
           music: Музика
           newsagent: Газетний кіоск
@@ -893,7 +893,7 @@ uk:
           artwork: Мистецтво
           attraction: Цікаві місця
           bed_and_breakfast: Ліжко та сніданок
-          cabin: Хатина
+          cabin: Ð¥Ð°Ñ\82инка
           camp_site: Турбаза
           caravan_site: Майданчик для трейлерів
           chalet: Шале
@@ -919,7 +919,7 @@ uk:
           derelict_canal: Покинутий канал
           ditch: Рів
           dock: Док
-          drain: Стік
+          drain: Стічна канава
           lock: Шлюз
           lock_gate: Шлюзові ворота
           mooring: Якірна стоянка
@@ -1051,9 +1051,9 @@ uk:
         ліцензії OSMF</a> та у <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">відповідях
         спільноти щодо правових питань</a>.
       more_2_html: Хоча дані OpenStreetMap  є відкритими, ми не в змозі надавати безкоштовний
-        API для сторонніх розробників. Ознайомтесь із нашими <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Правилами
-        використання API</a>, <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Правилами
-        використання графічних мап</a> та <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Правилами
+        API для сторонніх розробників. Ознайомтесь із нашими <a href="https://operations.osmfoundation.org/policies/api/">Правилами
+        використання API</a>, <a href="https://operations.osmfoundation.org/policies/tiles/">Правилами
+        використання графічних мап</a> та <a href="https://operations.osmfoundation.org/policies/nominatim/">Правилами
         використання сервісу Nominatim</a>.
       contributors_title_html: Наші учасники
       contributors_intro_html: 'Нашими учасниками є тисячі людей. Ми також включаємо
@@ -1537,7 +1537,7 @@ uk:
           private: Приватний доступ
           destination: Цільовий доступ
           construction: Будівництво дороги
-          bicycle_shop: Велосипедний магазин
+          bicycle_shop: Веломагазин
           bicycle_parking: Стоянка для велосипедів
           toilets: Туалети
     richtext_area:
@@ -1818,7 +1818,7 @@ uk:
           alt: Увійти з облікового запису Windows Live
         github:
           title: Увійти через GitHub
-          alt: Ð£Ð²Ñ\96йÑ\82и через обліковий запис GitHub
+          alt: Ð\92Ñ\85Ñ\96д через обліковий запис GitHub
         wikipedia:
           title: Увійти через Вікіпедію
           alt: Вхід через обліковий запис у Вікіпедії
@@ -1861,7 +1861,7 @@ uk:
         з проханням створити подібний обліковий запис. Ми спробуємо це зробити  і
         відповісти настільки швидко, наскільки це можливо.
       about:
-        header: Вільний і доступний для редагування
+        header: Вільні й доступні для редагування
         html: |-
           <p>На відміну від інших мап, мапи OpenStreetMap повністю створюються такими ж людьми як ви,
           вони доступні всім для виправлення, оновлення, завантаження і використання.</p>
@@ -2033,7 +2033,7 @@ uk:
         gravatar: Використовувати Gravatar
         link text: Що це?
         disabled: Gravatar вимкнено.
-        enabled: Ð\92Ñ\96добÑ\80аженнÑ\8f Вашого Gravatar'а увімкнено.
+        enabled: Ð\9fоказ Вашого Gravatar'а увімкнено.
       new image: Додати зображення
       keep image: Залишити поточне зображення
       delete image: Видалити поточне зображення
@@ -2065,13 +2065,11 @@ uk:
       reconfirm_html: Якщо ви бажаєте, аби ми повторно надіслали ще одне підтвердження
         електронною поштою, то <a href="%{reconfirm}">натисніть тут</a>.
     confirm_resend:
-      success: Користувача успішно зареєстровано. Перевірте вашу електрону пошту (%{email})
-        на наявність листа з підтвердженням, натисніть на посилання в ньому та можете
-        негайно починати створювати мапу.<br /><br /> Зауважте, що ви не зможете увійти,
-        доки ви не підтвердите адресу вашої електронної пошти. <br /><br />Якщо ви
-        користуєтесь системою анти-спаму, що надсилає запити на підтвердження, внесіть
-        до «білого» списку адресу %{sender}, так як ми не в змозі відповідати на такі
-        запити.
+      success: Ми надіслали на вашу електрону пошту (%{email}) листа для підтвердження
+        реєстрації, після того як ви натиснете на посиланні в ньому, ви отримаєте
+        можливість вносити зміни до мапи.<br /><br />Якщо ви користуєтесь системою
+        анти-спаму, що надсилає запити на підтвердження, внесіть до «білого» списку
+        адресу %{sender}, так як ми не в змозі відповідати на такі запити.
       failure: Користувача %{name} не знайдено.
     confirm_email:
       heading: Підтвердить зміну адреси електронної пошти
@@ -2340,6 +2338,7 @@ uk:
         header: Шари мапи
         notes: Нотатки
         data: Дані
+        gps: Публічні GPS-треки
         overlays: Увімкніть наступні шари для пошуку і усунення помилок на мапі
         title: Шари
       copyright: © <a href='%{copyright_url}'>Учасники OpenStreetMap</a>
@@ -2396,20 +2395,20 @@ uk:
       instructions:
         continue_without_exit: Рухайтесь далі по %{name}
         slight_right_without_exit: Плавно поверніть праворуч на %{name}
-        offramp_right_without_exit: Ð\92Ñ\96зÑ\8cмÑ\96Ñ\82Ñ\8c Ð¿Ñ\80авий Ð¾Ð±'Ñ\97зд Ð½Ð° %{name}
-        onramp_right_without_exit: Ð\9fовеÑ\80нÑ\96Ñ\82Ñ\8c Ð¿Ñ\80авоÑ\80Ñ\83Ñ\87 Ð½Ð° Ð¾Ð±'їзд в напрямку %{name}
+        offramp_right_without_exit: Ð\9fÑ\80Ñ\8fмÑ\83йÑ\82е Ð¿Ñ\80авоÑ\80Ñ\83Ñ\87 Ð½Ð° Ð·Ê¼Ñ\97зд Ð² Ð½Ð°Ð¿Ñ\80Ñ\8fмкÑ\83 %{name}
+        onramp_right_without_exit: Ð\9fовеÑ\80нÑ\96Ñ\82Ñ\8c Ð¿Ñ\80авоÑ\80Ñ\83Ñ\87 Ð½Ð° Ð·Ê¼їзд в напрямку %{name}
         endofroad_right_without_exit: В кінці дороги поверніть праворуч на %{name}
-        merge_right_without_exit: Ð\92лийÑ\82еÑ\81Ñ\8c Ð² Ð¿Ð¾Ñ\82Ñ\96к Ð¿Ñ\80авоÑ\80Ñ\83Ñ\87 Ñ\83 %{name}
+        merge_right_without_exit: Ð\9fÑ\80иÑ\94днайÑ\82еÑ\81Ñ\8c Ð´Ð¾ Ñ\80Ñ\83Ñ\85Ñ\83 Ð¿Ñ\80авоÑ\80Ñ\83Ñ\87 Ð½Ð° %{name}
         fork_right_without_exit: На розвилці поверніть праворуч на %{name}
         turn_right_without_exit: Поверніть праворуч на %{name}
         sharp_right_without_exit: Різко поверніть праворуч на %{name}
         uturn_without_exit: Розверніться на %{name}
         sharp_left_without_exit: Різко поверніть ліворуч на %{name}
         turn_left_without_exit: Поверніть ліворуч на %{name}
-        offramp_left_without_exit: Ð\92Ñ\96зÑ\8cмÑ\96Ñ\82Ñ\8c Ð»Ñ\96вий Ð¾Ð±'Ñ\97зд Ð½Ð° %{name}
-        onramp_left_without_exit: Ð\9fовеÑ\80нÑ\96Ñ\82Ñ\8c Ð»Ñ\96воÑ\80Ñ\83Ñ\87 Ð½Ð° Ð¾Ð±'їзд в напрямку %{name}
+        offramp_left_without_exit: Ð\9fÑ\80Ñ\8fмÑ\83йÑ\82е Ð»Ñ\96воÑ\80Ñ\83Ñ\87 Ð½Ð° Ð·Ê¼Ñ\97зд Ð² Ð½Ð°Ð¿Ñ\80Ñ\8fмкÑ\83 %{name}
+        onramp_left_without_exit: Ð\9fовеÑ\80нÑ\96Ñ\82Ñ\8c Ð»Ñ\96воÑ\80Ñ\83Ñ\87 Ð½Ð° Ð·Ê¼їзд в напрямку %{name}
         endofroad_left_without_exit: В кінці дороги поверніть ліворуч на %{name}
-        merge_left_without_exit: Ð\92лийÑ\82еÑ\81Ñ\8c Ð² Ð¿Ð¾Ñ\82Ñ\96к Ð»Ñ\96воÑ\80Ñ\83Ñ\87 Ñ\83 %{name}
+        merge_left_without_exit: Ð\9fÑ\80иÑ\94днайÑ\82еÑ\81Ñ\8c Ð´Ð¾ Ñ\80Ñ\83Ñ\85Ñ\83 Ð»Ñ\96воÑ\80Ñ\83Ñ\87 Ð½Ð° %{name}
         fork_left_without_exit: На розвилці поверніть ліворуч на %{name}
         slight_left_without_exit: Плавно поверніть ліворуч на %{name}
         via_point_without_exit: (проміжний пункт)
@@ -2422,6 +2421,15 @@ uk:
         against_oneway_without_exit: Рухайтесь проти одностороннього руху по %{name}
         end_oneway_without_exit: Кінець одностороннього руху по %{name}
         roundabout_with_exit: На кільці поверніть на %{exit} виїзд на %{name}
+        turn_left_with_exit: На перехресті з круговим рухом поверніть ліворуч на %{name}
+        slight_left_with_exit: На перехресті з круговим рухом плавно поверніть ліворуч
+          на %{name}
+        turn_right_with_exit: На перехресті з круговим рухом поверніть праворуч на
+          %{name}
+        slight_right_with_exit: На перехресті з круговим рухом плавно поверніть праворуч
+          на %{name}
+        continue_with_exit: На перехресті з круговим рухом продовжуйте рух прямо на
+          %{name}
         unnamed: без імені
         courtesy: Маршрут наданий %{link}
       time: Час
index 0f3a8d27d4c9f2969a1e0f007ca92a15b33f4887..9119afef886fc36317e47758298d7b81b5786ab3 100644 (file)
@@ -2118,6 +2118,7 @@ zh-CN:
         header: 地图图层
         notes: 地图笔记
         data: 地图数据
+        gps: 公开 GPS 痕迹
         overlays: 启用解决地图问题的覆盖层
         title: 图层
       copyright: © <a href='%{copyright_url}'>OpenStreetMap 贡献者</a>
@@ -2195,6 +2196,11 @@ zh-CN:
         against_oneway_without_exit: '%{name}单向行驶'
         end_oneway_without_exit: '%{name}单向终点'
         roundabout_with_exit: 在环形交叉的%{exit}号出口离开前往%{name}
+        turn_left_with_exit: 在环形交叉左转至%{name}
+        slight_left_with_exit: 在环形交叉稍向左转至%{name}
+        turn_right_with_exit: 在环形交叉右转至%{name}
+        slight_right_with_exit: 在环形交叉稍向右转至%{name}
+        continue_with_exit: 在环形交叉继续直行至%{name}
         unnamed: 未命名道路
         courtesy: 方向经由%{link}
       time: 时间
index 70168f5126d8e17f2f995d29e56609fd1c9ea238..f395367556603e9db1a668ff066cc22590b729e5 100644 (file)
@@ -2128,6 +2128,7 @@ zh-TW:
         header: 地圖圖層
         notes: 地圖註記
         data: 地圖資料
+        gps: 公開GPS軌跡
         overlays: 開啟覆蓋層,以為地圖解決問題
         title: 圖層
       copyright: © <a href='%{copyright_url}'>OpenStreetMap 貢獻者</a>
@@ -2205,6 +2206,11 @@ zh-TW:
         against_oneway_without_exit: 沿著單行道 %{name} 行駛
         end_oneway_without_exit: 單行道終點於 %{name}
         roundabout_with_exit: 從圓環出口 %{exit} 離開至 %{name}
+        turn_left_with_exit: 於圓環左轉至%{name}
+        slight_left_with_exit: 於圓環靠左至%{name}
+        turn_right_with_exit: 於圓環右轉至%{name}
+        slight_right_with_exit: 於圓環靠右至%{name}
+        continue_with_exit: 於圓環繼續直行至%{name}
         unnamed: 未命名
         courtesy: 感謝 %{link} 提供路線資訊
       time: 時間
index 985997ac27bae78313afdbaf07a0c7afbbad8e2a..ddbfe259d613cbec2d589baa3319b8f2127c34a0 100644 (file)
@@ -216,6 +216,5 @@ class CreateOsmDb < ActiveRecord::Migration
     add_index "ways", ["id"], :name => "ways_id_version_idx"
   end
 
-  def self.down
-  end
+  def self.down; end
 end
index 05a70e7a9771092d1645fad3df60c107295dde08..c41856e1e7631c1581aa20b9107efcea38e1cbce 100644 (file)
@@ -10,7 +10,7 @@ class CreateLanguages < ActiveRecord::Migration
 
     add_primary_key :languages, [:code]
 
-    Language.load("#{Rails.root}/config/languages.yml")
+    Language.load(Rails.root.join("config", "languages.yml"))
 
     add_foreign_key :users, :languages, :column => :locale, :primary_key => :code, :name => "users_locale_fkey"
     add_foreign_key :diary_entries, :languages, :column => :language_code, :primary_key => :code, :name => "diary_entries_language_code_fkey"
index fe9144cbb28b2ae95cf94df90a7500a010875d53..083319284700607c84528ed3a306f117506f74ec 100644 (file)
@@ -1,5 +1,5 @@
 class DropCountries < ActiveRecord::Migration
-  def change
+  def up
     drop_table :countries
   end
 end
index 8b893a6b2780aa1bd0b93876b1890a8d3ce09984..00b3a00b368643fdc0a799f34e5248188d926472 100755 (executable)
@@ -11,7 +11,7 @@ class Hash
   end
 end
 
-options = YAML.load(
+options = YAML.safe_load(
   ERB.new(
     IO.read(
       File.dirname(__FILE__) + "/../../config/daemons.yml"
index 4e6cf3b7c8475e403da4322677f9dbb40c27f189..3adfecf65b4792854dc65e2f33b7e67a8a600f78 100644 (file)
--- a/lib/id.rb
+++ b/lib/id.rb
@@ -1,3 +1,3 @@
 module ID
-  LOCALES = Locale.list(Rails.root.join("vendor/assets/iD/iD/locales").entries.map { |p| p.basename.to_s[/(.*).json/] && Regexp.last_match(1) }.compact)
+  LOCALES = Locale.list(Rails.root.join("vendor", "assets", "iD", "iD", "locales").entries.map { |p| p.basename.to_s[/(.*).json/] && Regexp.last_match(1) }.compact)
 end
index 370f0f30009c2a09cafa3ba7ea5847a21636c372..80b68c2a95bdbeeb4d8201614994865638c321aa 100644 (file)
@@ -559,8 +559,8 @@ module OSM
 
   # Return the terms and conditions text for a given country
   def self.legal_text_for_country(country_code)
-    file_name = File.join(Rails.root, "config", "legales", country_code.to_s + ".yml")
-    file_name = File.join(Rails.root, "config", "legales", DEFAULT_LEGALE + ".yml") unless File.exist? file_name
+    file_name = Rails.root.join("config", "legales", country_code.to_s + ".yml")
+    file_name = Rails.root.join("config", "legales", DEFAULT_LEGALE + ".yml") unless File.exist? file_name
     YAML.load_file(file_name)
   end
 
index 165e37b0cca605d8858e7825fd3c20e89a664633..717622762e9a383402ed7135fdfd540f0395bd85 100644 (file)
@@ -177,7 +177,7 @@ module Potlatch
       presettype = ""
       presetcategory = ""
       #        StringIO.open(txt) do |file|
-      File.open("#{Rails.root}/config/potlatch/presets.txt") do |file|
+      File.open(Rails.root.join("config", "potlatch", "presets.txt")) do |file|
         file.each_line do |line|
           t = line.chomp
           if t =~ %r{(\w+)/(\w+)}
@@ -201,7 +201,7 @@ module Potlatch
       colours = {}
       casing = {}
       areas = {}
-      File.open("#{Rails.root}/config/potlatch/colours.txt") do |file|
+      File.open(Rails.root.join("config", "potlatch", "colours.txt")) do |file|
         file.each_line do |line|
           next unless line.chomp =~ /(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/
 
@@ -216,7 +216,7 @@ module Potlatch
       relcolours = {}
       relalphas = {}
       relwidths = {}
-      File.open("#{Rails.root}/config/potlatch/relation_colours.txt") do |file|
+      File.open(Rails.root.join("config", "potlatch", "relation_colours.txt")) do |file|
         file.each_line do |line|
           next unless line.chomp =~ /(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/
 
@@ -230,7 +230,7 @@ module Potlatch
       # Read POI presets
       icon_list = []
       icon_tags = {}
-      File.open("#{Rails.root}/config/potlatch/icon_presets.txt") do |file|
+      File.open(Rails.root.join("config", "potlatch", "icon_presets.txt")) do |file|
         file.each_line do |line|
           (icon, tags) = line.chomp.split("\t")
           icon_list.push(icon)
@@ -241,7 +241,7 @@ module Potlatch
 
       # Read auto-complete
       autotags = { "point" => {}, "way" => {}, "POI" => {} }
-      File.open("#{Rails.root}/config/potlatch/autocomplete.txt") do |file|
+      File.open(Rails.root.join("config", "potlatch", "autocomplete.txt")) do |file|
         file.each_line do |line|
           next unless line.chomp =~ %r{^([\w:]+)/(\w+)\s+(.+)$}
 
index bf2894968393525822219ec1c6b03636474c1507..a20a16f5bb6d317ca951a22146d976f8f969c633 100644 (file)
@@ -14,6 +14,7 @@ module Potlatch2
     "ca" => "ca",
     "ce" => "ce",
     "cs" => "cs_CZ",
+    "cy" => "cy",
     "da" => "da",
     "de" => "de_DE",
     "de-Formal" => "de-formal",
@@ -41,6 +42,7 @@ module Potlatch2
     "hu" => "hu",
     "ia" => "ia",
     "id" => "id",
+    "is" => "is",
     "it" => "it_IT",
     "ja" => "ja_JP",
     "ka" => "ka",
index f868ff515cbd41033f623567f89c1250355b13e9..86fa1802dfd117b7234a6ca1f50837152ed84e40 100644 (file)
@@ -1,6 +1,6 @@
 #include <math.h>
 
-inline unsigned int xy2tile(unsigned int x, unsigned int y)
+static inline unsigned int xy2tile(unsigned int x, unsigned int y)
 {
    unsigned int tile = 0;
    int          i;
@@ -14,12 +14,12 @@ inline unsigned int xy2tile(unsigned int x, unsigned int y)
    return tile;
 }
 
-inline unsigned int lon2x(double lon)
+static inline unsigned int lon2x(double lon)
 {
    return round((lon + 180.0) * 65535.0 / 360.0);
 }
 
-inline unsigned int lat2y(double lat)
+static inline unsigned int lat2y(double lat)
 {
    return round((lat + 90.0) * 65535.0 / 180.0);
 }
index c15d365962e45124e6a7148c51f89dc6a22c6e88..46f9642e7f60ea5bd9d2b7b16d6d5f7100149356 100755 (executable)
@@ -23,7 +23,7 @@ end
 exit 0 unless token == digest[0, 6]
 exit 0 if date < 1.month.ago
 
-message.update_attribute(:message_read, true) if message
+message.update(:message_read => true) if message
 
 mail = Mail.new(STDIN.readlines.join)
 
index 6522be165235c83405b3f70a0acc49f6096f7c7b..a3cfec7f89738285df1d33cce2b321d941832309 100644 (file)
@@ -16,41 +16,41 @@ apt-get update
 apt-get upgrade -y
 
 # install packages as explained in INSTALL.md
-apt-get install -y ruby2.0 libruby2.0 ruby2.0-dev \
+apt-get install -y ruby2.3 libruby2.3 ruby2.3-dev \
                      libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
-                     apache2 apache2-threaded-dev build-essential git-core \
+                     apache2 apache2-dev build-essential git-core \
                      postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
                      libsasl2-dev imagemagick
-gem2.0 install bundler
+gem2.3 install bundler
 
 ## install the bundle necessary for openstreetmap-website
 pushd /srv/openstreetmap-website
 # do bundle install as a convenience
-sudo -u vagrant -H bundle install
+sudo -u ubuntu -H bundle install --retry=10 --jobs=2
 # create user and database for openstreetmap-website
-db_user_exists=`sudo -u postgres psql postgres -tAc "select 1 from pg_roles where rolname='vagrant'"`
+db_user_exists=`sudo -u postgres psql postgres -tAc "select 1 from pg_roles where rolname='ubuntu'"`
 if [ "$db_user_exists" != "1" ]; then
-               sudo -u postgres createuser -s vagrant
-               sudo -u vagrant -H createdb -E UTF-8 -O vagrant openstreetmap
-               sudo -u vagrant -H createdb -E UTF-8 -O vagrant osm_test
+               sudo -u postgres createuser -s ubuntu
+               sudo -u ubuntu createdb -E UTF-8 -O ubuntu openstreetmap
+               sudo -u ubuntu createdb -E UTF-8 -O ubuntu osm_test
                # add btree_gist extension
-               sudo -u vagrant -H psql -c "create extension btree_gist" openstreetmap
-               sudo -u vagrant -H psql -c "create extension btree_gist" osm_test
+               sudo -u ubuntu psql -c "create extension btree_gist" openstreetmap
+               sudo -u ubuntu psql -c "create extension btree_gist" osm_test
 fi
 # build and set up postgres extensions
 pushd db/functions
-sudo -u vagrant make
-sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'maptile_for_point' LANGUAGE C STRICT"
-sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'tile_for_point' LANGUAGE C STRICT"
-sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION xid_to_int4(xid) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'xid_to_int4' LANGUAGE C STRICT"
+sudo -u ubuntu make
+sudo -u ubuntu psql openstreetmap -c "CREATE OR REPLACE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'maptile_for_point' LANGUAGE C STRICT"
+sudo -u ubuntu psql openstreetmap -c "CREATE OR REPLACE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'tile_for_point' LANGUAGE C STRICT"
+sudo -u ubuntu psql openstreetmap -c "CREATE OR REPLACE FUNCTION xid_to_int4(xid) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'xid_to_int4' LANGUAGE C STRICT"
 popd
 # set up sample configs
 if [ ! -f config/database.yml ]; then
-               sudo -u vagrant cp config/example.database.yml config/database.yml
+               sudo -u ubuntu cp config/example.database.yml config/database.yml
 fi
 if [ ! -f config/application.yml ]; then
-               sudo -u vagrant cp config/example.application.yml config/application.yml
+               sudo -u ubuntu cp config/example.application.yml config/application.yml
 fi
 # migrate the database to the latest version
-sudo -u vagrant rake db:migrate
+sudo -u ubuntu rake db:migrate
 popd
index a1c6fbc2118998afe3d82153e1c36af3cc26b014..020521bacd97c57462eec9cb5d6c05ac5acf505b 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class OauthClientsControllerTest < ActionController::TestCase
-  fixtures :users, :client_applications
+  fixtures :users
 
   ##
   # test all routes which lead to this controller
@@ -38,6 +38,7 @@ class OauthClientsControllerTest < ActionController::TestCase
 
   def test_index
     user = users(:public_user)
+    create_list(:client_application, 2, :user => user)
 
     get :index, :display_name => user.display_name
     assert_response :redirect
@@ -104,13 +105,14 @@ class OauthClientsControllerTest < ActionController::TestCase
 
   def test_show
     user = users(:public_user)
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :user => user)
+    other_client = create(:client_application)
 
     get :show, :display_name => user.display_name, :id => client.id
     assert_response :redirect
     assert_redirected_to login_path(:referer => oauth_client_path(:display_name => user.display_name, :id => client.id))
 
-    get :show, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
+    get :show, { :display_name => user.display_name, :id => other_client.id }, { :user => user }
     assert_response :not_found
     assert_template "not_found"
 
@@ -121,13 +123,14 @@ class OauthClientsControllerTest < ActionController::TestCase
 
   def test_edit
     user = users(:public_user)
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :user => user)
+    other_client = create(:client_application)
 
     get :edit, :display_name => user.display_name, :id => client.id
     assert_response :redirect
     assert_redirected_to login_path(:referer => edit_oauth_client_path(:display_name => user.display_name, :id => client.id))
 
-    get :edit, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
+    get :edit, { :display_name => user.display_name, :id => other_client.id }, { :user => user }
     assert_response :not_found
     assert_template "not_found"
 
@@ -147,12 +150,13 @@ class OauthClientsControllerTest < ActionController::TestCase
 
   def test_update
     user = users(:public_user)
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :user => user)
+    other_client = create(:client_application)
 
     put :update, :display_name => user.display_name, :id => client.id
     assert_response :forbidden
 
-    put :update, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
+    put :update, { :display_name => user.display_name, :id => other_client.id }, { :user => user }
     assert_response :not_found
     assert_template "not_found"
 
@@ -181,7 +185,8 @@ class OauthClientsControllerTest < ActionController::TestCase
 
   def test_destroy
     user = users(:public_user)
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :user => user)
+    other_client = create(:client_application)
 
     assert_difference "ClientApplication.count", 0 do
       delete :destroy, :display_name => user.display_name, :id => client.id
@@ -189,7 +194,7 @@ class OauthClientsControllerTest < ActionController::TestCase
     assert_response :forbidden
 
     assert_difference "ClientApplication.count", 0 do
-      delete :destroy, { :display_name => user.display_name, :id => client_applications(:normal_user_app).id }, { :user => user }
+      delete :destroy, { :display_name => user.display_name, :id => other_client.id }, { :user => user }
     end
     assert_response :not_found
     assert_template "not_found"
index d559760afdb5f4fda9c840a509779583150d424c..5efddd52e0914d7afa59ea54dfc80ab287ccbe5d 100644 (file)
@@ -6,8 +6,8 @@ class SiteControllerTest < ActionController::TestCase
   ##
   # setup oauth keys
   def setup
-    Object.const_set("ID_KEY", client_applications(:oauth_web_app).key)
-    Object.const_set("POTLATCH2_KEY", client_applications(:oauth_web_app).key)
+    Object.const_set("ID_KEY", create(:client_application).key)
+    Object.const_set("POTLATCH2_KEY", create(:client_application).key)
 
     stub_hostip_requests
   end
diff --git a/test/factories/client_applications.rb b/test/factories/client_applications.rb
new file mode 100644 (file)
index 0000000..413dc57
--- /dev/null
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+  factory :client_application do
+    sequence(:name) { |n| "Client application #{n}" }
+    sequence(:url) { |n| "http://example.com/app/#{n}" }
+  end
+end
diff --git a/test/factories/user.rb b/test/factories/user.rb
new file mode 100644 (file)
index 0000000..9ec4e20
--- /dev/null
@@ -0,0 +1,44 @@
+FactoryGirl.define do
+  factory :user do
+    sequence(:email) { |n| "user#{n}@example.com" }
+    sequence(:display_name) { |n| "User #{n}" }
+    pass_crypt Digest::MD5.hexdigest("test")
+
+    trait :with_home_location do
+      home_lat { rand(-90.0...90.0) }
+      home_lon { rand(-180.0...180.0) }
+    end
+
+    trait :pending do
+      status "pending"
+    end
+
+    trait :active do
+      status "active"
+    end
+
+    trait :confirmed do
+      status "confirmed"
+    end
+
+    trait :suspended do
+      status "suspended"
+    end
+
+    trait :deleted do
+      status "deleted"
+    end
+
+    factory :moderator_user do
+      after(:create) do |user, _evaluator|
+        create(:user_role, :role => "moderator", :user => user)
+      end
+    end
+
+    factory :administrator_user do
+      after(:create) do |user, _evaluator|
+        create(:user_role, :role => "administrator", :user => user)
+      end
+    end
+  end
+end
diff --git a/test/factories/user_role.rb b/test/factories/user_role.rb
new file mode 100644 (file)
index 0000000..0eea25c
--- /dev/null
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+  factory :user_role do
+    user
+    association :granter, :factory => :user
+  end
+end
diff --git a/test/fixtures/client_applications.yml b/test/fixtures/client_applications.yml
deleted file mode 100644 (file)
index 13f9c08..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-oauth_web_app:
-  name: Some OAuth Web App
-  created_at: "2009-04-21 00:00:00"
-  support_url: http://some.web.app.org/support
-  updated_at: "2009-04-21 00:00:00"
-  callback_url: http://some.web.app.org/callback
-  url: http://some.web.app.org/
-  user_id: 2
-  secret: Ur1s9LWWJJuYBiV9cDi3za3OV8TGCoRgUvVXJ5zp7pc
-  key: ewvENqsaTXFnZbMWmGDX2g
-  allow_read_prefs: true
-  allow_write_prefs: false
-  allow_write_diary: false
-  allow_write_api: true
-  allow_read_gpx: true
-  allow_write_gpx: false
-
-oauth_desktop_app:
-  name: Some OAuth Desktop App
-  created_at: "2009-04-21 00:00:00"
-  url: http://some.desktop.app.org/
-  support_url: http://some.desktop.app.org/support
-  updated_at: "2009-04-21 00:00:00"
-  user_id: 2
-  secret: V9DOm1H5qSdIG9IeCTiOkAcCx15bK8bkGxf7XEpF
-  key: rlEdPM6Tp8lpLwvSyNJQ4w
-  allow_read_prefs: true
-  allow_write_prefs: false
-  allow_write_diary: false
-  allow_write_api: true
-  allow_read_gpx: true
-  allow_write_gpx: false
-
-normal_user_app:
-  name: Some OAuth Desktop App
-  created_at: "2009-05-21 00:00:00"
-  url: http://some.desktop.app.org/
-  support_url: http://some.desktop.app.org/support
-  updated_at: "2009-05-21 00:00:00"
-  user_id: 1
-  secret: jgYx43yx1FAMQbG6T0qZhvvFsKEf6Pgd5XfHr5kFgv4
-  key: N6KVhfeaT626fhBt9aCMeA
-  allow_read_prefs: true
-  allow_write_prefs: false
-  allow_write_diary: false
-  allow_write_api: true
-  allow_read_gpx: true
-  allow_write_gpx: false
diff --git a/test/fixtures/user_tokens.yml b/test/fixtures/user_tokens.yml
deleted file mode 100644 (file)
index e69de29..0000000
index 2cc15bd56c2ed6f09950258f578bf545d5194fb6..f5d235d95d03ab03c0fdda4b7bee22f5f03af848 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class ClientApplicationsTest < ActionDispatch::IntegrationTest
-  fixtures :users, :client_applications
+  fixtures :users
 
   ##
   # run through the procedure of creating a client application and checking
index c10699f2aa1e422d9d37e0c9ec07848a0b08e712..ceee95892f966d672a4508e11d0a18692cf2c361 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class OAuthTest < ActionDispatch::IntegrationTest
-  fixtures :users, :client_applications, :gpx_files
+  fixtures :users, :gpx_files
   set_fixture_class :gpx_files => Trace
 
   include OAuth::Helper
@@ -11,18 +11,18 @@ class OAuthTest < ActionDispatch::IntegrationTest
   end
 
   def test_oauth10_web_app
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :user => users(:public_user), :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
 
     post_via_redirect "/login", :username => client.user.email, :password => "test"
     assert_response :success
 
     oauth10_without_callback(client)
-    oauth10_with_callback(client, "http://another.web.app.org/callback")
+    oauth10_with_callback(client, "http://another.web.app.example.org/callback")
     oauth10_refused(client)
   end
 
   def test_oauth10_desktop_app
-    client = client_applications(:oauth_desktop_app)
+    client = create(:client_application, :user => users(:public_user), :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
 
     post_via_redirect "/login", :username => client.user.email, :password => "test"
     assert_response :success
@@ -32,18 +32,18 @@ class OAuthTest < ActionDispatch::IntegrationTest
   end
 
   def test_oauth10a_web_app
-    client = client_applications(:oauth_web_app)
+    client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :user => users(:public_user), :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
 
     post_via_redirect "/login", :username => client.user.email, :password => "test"
     assert_response :success
 
     oauth10a_without_callback(client)
-    oauth10a_with_callback(client, "http://another.web.app.org/callback")
+    oauth10a_with_callback(client, "http://another.web.app.example.org/callback")
     oauth10a_refused(client)
   end
 
   def test_oauth10a_desktop_app
-    client = client_applications(:oauth_desktop_app)
+    client = create(:client_application, :user => users(:public_user), :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
 
     post_via_redirect "/login", :username => client.user.email, :password => "test"
     assert_response :success
@@ -196,7 +196,7 @@ class OAuthTest < ActionDispatch::IntegrationTest
     if client.callback_url
       assert_response :redirect
       verifier = parse_verifier(response)
-      assert_redirected_to "http://some.web.app.org/callback?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
+      assert_redirected_to "http://some.web.app.example.org/callback?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
     else
       assert_response :success
       assert_template :authorize_success
index 8215ce129f842956fe0bda591b95b3547394103e..64fbb36637e253fec6ea954ef009c5a114f0d86b 100644 (file)
@@ -2,7 +2,7 @@
 require "test_helper"
 
 class ChangesetCommentTest < ActiveSupport::TestCase
-  fixtures :changesets
+  fixtures :changesets, :users
 
   # validations
   def test_does_not_accept_invalid_author
index 604a5de3361df53b8fe154acde5aa2544067bfeb..9684513c42e74ae400b14447fb296049f6d584c6 100644 (file)
@@ -1,20 +1,18 @@
 require "test_helper"
 
 class ClientApplicationTest < ActiveSupport::TestCase
-  fixtures :client_applications
-
   def test_url_valid
     ok = ["http://example.com/test", "https://example.com/test"]
     bad = ["", "ftp://example.com/test", "myapp://somewhere"]
 
     ok.each do |url|
-      app = client_applications(:normal_user_app).dup
+      app = build(:client_application)
       app.url = url
       assert app.valid?, "#{url} is invalid, when it should be"
     end
 
     bad.each do |url|
-      app = client_applications(:normal_user_app)
+      app = build(:client_application)
       app.url = url
       assert !app.valid?, "#{url} is valid when it shouldn't be"
     end
@@ -25,13 +23,13 @@ class ClientApplicationTest < ActiveSupport::TestCase
     bad = ["ftp://example.com/test", "myapp://somewhere", "gibberish"]
 
     ok.each do |url|
-      app = client_applications(:normal_user_app)
+      app = build(:client_application)
       app.support_url = url
       assert app.valid?, "#{url} is invalid, when it should be"
     end
 
     bad.each do |url|
-      app = client_applications(:normal_user_app)
+      app = build(:client_application)
       app.support_url = url
       assert !app.valid?, "#{url} is valid when it shouldn't be"
     end
@@ -42,13 +40,13 @@ class ClientApplicationTest < ActiveSupport::TestCase
     bad = ["gibberish"]
 
     ok.each do |url|
-      app = client_applications(:normal_user_app)
+      app = build(:client_application)
       app.callback_url = url
       assert app.valid?, "#{url} is invalid, when it should be"
     end
 
     bad.each do |url|
-      app = client_applications(:normal_user_app)
+      app = build(:client_application)
       app.callback_url = url
       assert !app.valid?, "#{url} is valid when it shouldn't be"
     end
index ac10bf7fe3473b736c66e36cdc4bbb3905a02ddb..c2df0d1311b1e83e4a9434656920d31f61d935a7 100644 (file)
@@ -15,7 +15,7 @@ class OauthTokenTest < ActiveSupport::TestCase
   ##
   # check that an authorized token is authorised and can be invalidated
   def test_token_authorisation
-    tok = RequestToken.create(:client_application => client_applications(:oauth_web_app))
+    tok = RequestToken.create(:client_application => create(:client_application))
     assert_equal false, tok.authorized?, "Token should be created unauthorised."
     tok.authorize!(users(:public_user))
     assert_equal true, tok.authorized?, "Token should now be authorised."
index f8f46cfaff85cc7b788397cd04d3983e5ad51464..a2a45e203d51a139abea01ec3f03b7d7d2b9d0ff 100644 (file)
@@ -20,8 +20,9 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_unique_email
+    existing_user = create(:user)
     new_user = User.new(
-      :email => users(:normal_user).email,
+      :email => existing_user.email,
       :status => "active",
       :pass_crypt => Digest::MD5.hexdigest("test"),
       :display_name => "new user",
@@ -33,11 +34,12 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_unique_display_name
+    existing_user = create(:user)
     new_user = User.new(
       :email => "tester@openstreetmap.org",
       :status => "pending",
       :pass_crypt => Digest::MD5.hexdigest("test"),
-      :display_name => users(:normal_user).display_name,
+      :display_name => existing_user.display_name,
       :data_public => 1,
       :description => "desc"
     )
@@ -52,20 +54,20 @@ class UserTest < ActiveSupport::TestCase
              輕觸搖晃的遊戲@ah.com も対応します@s.name)
 
     ok.each do |name|
-      user = users(:normal_user)
+      user = build(:user)
       user.email = name
       assert user.valid?(:save), user.errors.full_messages.join(",")
     end
 
     bad.each do |name|
-      user = users(:normal_user)
+      user = build(:user)
       user.email = name
       assert user.invalid?(:save), "#{name} is valid when it shouldn't be"
     end
   end
 
   def test_display_name_length
-    user = users(:normal_user)
+    user = build(:user)
     user.display_name = "123"
     assert user.valid?, " should allow nil display name"
     user.display_name = "12"
@@ -93,64 +95,67 @@ class UserTest < ActiveSupport::TestCase
            "new", "terms", "save", "confirm", "confirm-email",
            "go_public", "reset-password", "forgot-password", "suspended"]
     ok.each do |display_name|
-      user = users(:normal_user)
+      user = build(:user)
       user.display_name = display_name
       assert user.valid?, "#{display_name} is invalid, when it should be"
     end
 
     bad.each do |display_name|
-      user = users(:normal_user)
+      user = build(:user)
       user.display_name = display_name
       assert !user.valid?, "#{display_name} is valid when it shouldn't be"
     end
   end
 
-  def test_friend_with
-    create(:friend, :befriender => users(:normal_user), :befriendee => users(:public_user))
-    assert users(:normal_user).is_friends_with?(users(:public_user))
-    assert !users(:normal_user).is_friends_with?(users(:inactive_user))
-    assert !users(:public_user).is_friends_with?(users(:normal_user))
-    assert !users(:public_user).is_friends_with?(users(:inactive_user))
-    assert !users(:inactive_user).is_friends_with?(users(:normal_user))
-    assert !users(:inactive_user).is_friends_with?(users(:public_user))
+  def test_friends_with
+    alice = create(:user, :active)
+    bob = create(:user, :active)
+    charlie = create(:user, :active)
+    create(:friend, :befriender => alice, :befriendee => bob)
+
+    assert alice.is_friends_with?(bob)
+    assert !alice.is_friends_with?(charlie)
+    assert !bob.is_friends_with?(alice)
+    assert !bob.is_friends_with?(charlie)
+    assert !charlie.is_friends_with?(bob)
+    assert !charlie.is_friends_with?(alice)
   end
 
   def test_users_nearby
-    # second user has their data public and is close by normal user
-    assert_equal [users(:public_user), users(:german_user)], users(:normal_user).nearby
-    # second_user has normal user nearby, but normal user has their data private
-    assert_equal [users(:german_user)], users(:public_user).nearby
-    # inactive_user has no user nearby
-    assert_equal [], users(:inactive_user).nearby
-    # north_pole_user has no user nearby, and doesn't throw exception
-    assert_equal [], users(:north_pole_user).nearby
-    # confirmed_user has no home location
-    assert_equal [], users(:confirmed_user).nearby
+    alice = create(:user, :active, :home_lat => 51.0, :home_lon => 1.0, :data_public => false)
+    bob = create(:user, :active, :home_lat => 51.1, :home_lon => 1.0, :data_public => true)
+    charlie = create(:user, :active, :home_lat => 51.1, :home_lon => 1.1, :data_public => true)
+    david = create(:user, :active, :home_lat => 10.0, :home_lon => -123.0, :data_public => true)
+    _edward = create(:user, :suspended, :home_lat => 10.0, :home_lon => -123.0, :data_public => true)
+    south_pole_user = create(:user, :active, :home_lat => -90.0, :home_lon => 0.0, :data_public => true)
+    vagrant_user = create(:user, :active, :home_lat => nil, :home_lon => nil, :data_public => true)
+
+    # bob and charlie are both near alice
+    assert_equal [bob, charlie], alice.nearby
+    # charlie and alice are both near bob, but alice has their data private
+    assert_equal [charlie], bob.nearby
+    # david has no user nearby, since edward is not active
+    assert_equal [], david.nearby
+    # south_pole_user has no user nearby, and doesn't throw exception
+    assert_equal [], south_pole_user.nearby
+    # vagrant_user has no home location
+    assert_equal [], vagrant_user.nearby
   end
 
-  def test_friends_with
-    # normal user is a friend of second user
-    # it should be a one way friend associatation
-    norm = users(:normal_user)
-    sec = users(:public_user)
+  def test_friend_users
+    norm = create(:user, :active)
+    sec = create(:user, :active)
     create(:friend, :befriender => norm, :befriendee => sec)
-    assert_equal 1, Friend.count
+
     assert_equal [sec], norm.friend_users
     assert_equal 1, norm.friend_users.size
-    assert_equal 1, Friend.count
-    assert norm.is_friends_with?(sec)
-    assert !sec.is_friends_with?(norm)
-    assert !users(:normal_user).is_friends_with?(users(:inactive_user))
-    assert !users(:public_user).is_friends_with?(users(:normal_user))
-    assert !users(:public_user).is_friends_with?(users(:inactive_user))
-    assert !users(:inactive_user).is_friends_with?(users(:normal_user))
-    assert !users(:inactive_user).is_friends_with?(users(:public_user))
-    # Friend.delete(friend)
-    # assert_equal 0, Friend.count
+
+    assert_equal [], sec.friend_users
+    assert_equal 0, sec.friend_users.size
   end
 
   def test_user_preferred_editor
-    user = users(:normal_user)
+    user = create(:user)
     assert_nil user.preferred_editor
     user.preferred_editor = "potlatch"
     assert_equal "potlatch", user.preferred_editor
@@ -161,32 +166,50 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_visible
-    assert_equal 23, User.visible.count
+    pending = create(:user, :pending)
+    active = create(:user, :active)
+    confirmed = create(:user, :confirmed)
+    suspended = create(:user, :suspended)
+    deleted = create(:user, :deleted)
+
+    assert User.visible.find(pending.id)
+    assert User.visible.find(active.id)
+    assert User.visible.find(confirmed.id)
     assert_raise ActiveRecord::RecordNotFound do
-      User.visible.find(users(:suspended_user).id)
+      User.visible.find(suspended.id)
     end
     assert_raise ActiveRecord::RecordNotFound do
-      User.visible.find(users(:deleted_user).id)
+      User.visible.find(deleted.id)
     end
   end
 
   def test_active
-    assert_equal 22, User.active.count
+    pending = create(:user, :pending)
+    active = create(:user, :active)
+    confirmed = create(:user, :confirmed)
+    suspended = create(:user, :suspended)
+    deleted = create(:user, :deleted)
+
+    assert User.active.find(active.id)
+    assert User.active.find(confirmed.id)
     assert_raise ActiveRecord::RecordNotFound do
-      User.active.find(users(:inactive_user).id)
+      User.active.find(pending.id)
     end
     assert_raise ActiveRecord::RecordNotFound do
-      User.active.find(users(:suspended_user).id)
+      User.active.find(suspended.id)
     end
     assert_raise ActiveRecord::RecordNotFound do
-      User.active.find(users(:deleted_user).id)
+      User.active.find(deleted.id)
     end
   end
 
   def test_identifiable
-    assert_equal 24, User.identifiable.count
+    public_user = create(:user, :data_public => true)
+    private_user = create(:user, :data_public => false)
+
+    assert User.identifiable.find(public_user.id)
     assert_raise ActiveRecord::RecordNotFound do
-      User.identifiable.find(users(:normal_user).id)
+      User.identifiable.find(private_user.id)
     end
   end
 
@@ -195,52 +218,52 @@ class UserTest < ActiveSupport::TestCase
     create(:language, :code => "de")
     create(:language, :code => "sl")
 
-    user = users(:normal_user)
+    user = create(:user, :languages => ["en"])
     assert_equal ["en"], user.languages
     user.languages = %w(de fr en)
     assert_equal %w(de fr en), user.languages
     user.languages = %w(fr de sl)
     assert_equal "de", user.preferred_language
     assert_equal %w(fr de sl), user.preferred_languages.map(&:to_s)
-    user = users(:public_user)
+    user = create(:user, :languages => %w(en de))
     assert_equal %w(en de), user.languages
   end
 
   def test_visible?
-    assert_equal true, users(:inactive_user).visible?
-    assert_equal true, users(:normal_user).visible?
-    assert_equal true, users(:confirmed_user).visible?
-    assert_equal false, users(:suspended_user).visible?
-    assert_equal false, users(:deleted_user).visible?
+    assert_equal true, build(:user, :pending).visible?
+    assert_equal true, build(:user, :active).visible?
+    assert_equal true, build(:user, :confirmed).visible?
+    assert_equal false, build(:user, :suspended).visible?
+    assert_equal false, build(:user, :deleted).visible?
   end
 
   def test_active?
-    assert_equal false, users(:inactive_user).active?
-    assert_equal true, users(:normal_user).active?
-    assert_equal true, users(:confirmed_user).active?
-    assert_equal false, users(:suspended_user).active?
-    assert_equal false, users(:deleted_user).active?
+    assert_equal false, build(:user, :pending).active?
+    assert_equal true, build(:user, :active).active?
+    assert_equal true, build(:user, :confirmed).active?
+    assert_equal false, build(:user, :suspended).active?
+    assert_equal false, build(:user, :deleted).active?
   end
 
   def test_moderator?
-    assert_equal false, users(:normal_user).moderator?
-    assert_equal true, users(:moderator_user).moderator?
+    assert_equal false, create(:user).moderator?
+    assert_equal true, create(:moderator_user).moderator?
   end
 
   def test_administrator?
-    assert_equal false, users(:normal_user).administrator?
-    assert_equal true, users(:administrator_user).administrator?
+    assert_equal false, create(:user).administrator?
+    assert_equal true, create(:administrator_user).administrator?
   end
 
   def test_has_role?
-    assert_equal false, users(:normal_user).has_role?("administrator")
-    assert_equal false, users(:normal_user).has_role?("moderator")
-    assert_equal true, users(:administrator_user).has_role?("administrator")
-    assert_equal true, users(:moderator_user).has_role?("moderator")
+    assert_equal false, create(:user).has_role?("administrator")
+    assert_equal false, create(:user).has_role?("moderator")
+    assert_equal true, create(:administrator_user).has_role?("administrator")
+    assert_equal true, create(:moderator_user).has_role?("moderator")
   end
 
   def test_delete
-    user = users(:normal_user)
+    user = create(:user, :with_home_location, :description => "foo")
     user.delete
     assert_equal "user_#{user.id}", user.display_name
     assert user.description.blank?
@@ -253,7 +276,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_to_xml
-    user = users(:normal_user)
+    user = build(:user, :with_home_location)
     xml = user.to_xml
     assert_select Nokogiri::XML::Document.parse(xml.to_s), "user" do
       assert_select "[display_name=?]", user.display_name
@@ -263,7 +286,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_to_xml_node
-    user = users(:normal_user)
+    user = build(:user, :with_home_location)
     xml = user.to_xml_node
     assert_select Nokogiri::XML::DocumentFragment.parse(xml.to_s), "user" do
       assert_select "[display_name=?]", user.display_name
index 97a23045b2c239a561e6b70b9489b6b3a8df8b7d..cf9f09ea4f330966629bfbb798b8b955c98bfedb 100644 (file)
@@ -1,10 +1,4 @@
 require "test_helper"
 
 class UserTokenTest < ActiveSupport::TestCase
-  api_fixtures
-  fixtures :user_tokens
-
-  def test_user_token_count
-    assert_equal 0, UserToken.count
-  end
 end
index 52d11027f8fdc9d696e26a9aa54fa67cfbce07fb..10a4eb3971d6de1b74a0411803c982cb169626e4 100644 (file)
@@ -50,8 +50,6 @@ module ActiveSupport
       set_fixture_class :gps_points => Tracepoint
       set_fixture_class :gpx_file_tags => Tracetag
 
-      fixtures :client_applications
-
       fixtures :redactions
     end
 
index 2f22d247ce81c1dcda649a7dbf45bd719d057fdc..758d1518c8335d78209284ce23482738f9468eaa 100644 (file)
@@ -428,7 +428,7 @@ path.fill.tag-amenity-university {
 .preset-icon-fill-area.tag-amenity-school,
 .preset-icon-fill-area.tag-amenity-college,
 .preset-icon-fill-area.tag-amenity-university {
-    border-color: rgb(255, 255, 148);
+    border-color: rgb(232, 232, 0);
     background-color: rgba(255, 255, 148, 0.15);
 }
 
@@ -459,25 +459,34 @@ path.fill.tag-landuse-commercial {
     background-color: rgba(214, 136, 26, 0.3);
 }
 
-path.stroke.tag-landuse-industrial {
+path.stroke.tag-landuse-industrial,
+path.stroke.tag-power-plant {
     stroke: rgb(228, 164, 245);
 }
-path.fill.tag-landuse-industrial {
+path.fill.tag-landuse-industrial,
+path.fill.tag-power-plant {
     stroke: rgba(228, 164, 245, 0.3);
     fill: rgba(228, 164, 245, 0.3);
 }
-.preset-icon-fill-area.tag-landuse-industrial {
+.preset-icon-fill-area.tag-landuse-industrial,
+.preset-icon-fill-area.tag-power-plant {
     border-color: rgb(228, 164, 245);
     background-color: rgba(228, 164, 245, 0.3);
 }
 
+path.stroke.tag-natural-bare_rock,
+path.stroke.tag-natural-scree,
 path.stroke.tag-landuse-quarry {
     stroke: rgb(166, 149, 123);
 }
+path.fill.tag-natural-bare_rock,
+path.fill.tag-natural-scree,
 path.fill.tag-landuse-quarry {
     stroke: rgba(166, 149, 123, 0.2);
     fill: rgba(166, 149, 123, 0.2);
 }
+.preset-icon-fill-area.tag-natural-bare_rock,
+.preset-icon-fill-area.tag-natural-scree,
 .preset-icon-fill-area.tag-landuse-quarry {
     border-color: rgb(166, 149, 123);
     background-color: rgba(166, 149, 123, 0.2);
@@ -498,21 +507,26 @@ path.fill.tag-landuse-landfill {
 .pattern-color-construction {
     fill: rgba(196, 189, 25, 0.2);
 }
-path.stroke.tag-landuse.tag-status {
+path.stroke.tag-landuse.tag-status,
+path.stroke.tag-landuse-construction {
     stroke: rgb(196, 189, 25);
 }
-.preset-icon-fill-area.tag-landuse.tag-status {
+.preset-icon-fill-area.tag-landuse.tag-status,
+.preset-icon-fill-area.tag-landuse-construction {
     border-color: rgb(196, 189, 25);
     background-color: rgba(196, 189, 25, 0.2);
 }
 
+path.stroke.tag-military,
 path.stroke.tag-landuse-military {
     stroke: rgb(214, 136, 26);
 }
+path.fill.tag-military,
 path.fill.tag-landuse-military {
     stroke: rgba(214, 136, 26, 0.2);
     fill: rgba(214, 136, 26, 0.2);
 }
+.preset-icon-fill-area.tag-military,
 .preset-icon-fill-area.tag-landuse-military {
     border-color: rgb(214, 136, 26);
     background-color: rgba(214, 136, 26, 0.2);
@@ -540,13 +554,16 @@ path.stroke.tag-landuse-meadow {
     background-color: rgba(182, 225, 153, 0.2);
 }
 
-.pattern-color-beach {
+.pattern-color-beach,
+.pattern-color-sand {
     fill: rgba(255, 255, 126, 0.2);
 }
-path.stroke.tag-natural-beach {
+path.stroke.tag-natural-beach,
+path.stroke.tag-natural-sand {
     stroke: rgb(255, 255, 126);
 }
-.preset-icon-fill-area.tag-natural-beach {
+.preset-icon-fill-area.tag-natural-beach,
+.preset-icon-fill-area.tag-natural-sand {
     border-color: rgb(255, 255, 126);
     background-color: rgba(255, 255, 126, 0.2);
 }
@@ -1523,6 +1540,19 @@ text.point {
     font-size: 10px;
 }
 
+.icon.areaicon-halo {
+    opacity: 0.6;
+    stroke: #999;
+    stroke-width: 2px;
+    stroke-miterlimit: 1;
+}
+
+.icon.areaicon {
+    fill: #222;
+    opacity: 0.8;
+}
+
+
 /* Turns */
 
 g.turn rect,
@@ -1813,7 +1843,10 @@ html, body {
 }
 
 body {
-    font:normal 12px/1.6667 'Helvetica Neue', Arial, sans-serif;
+    font: normal 12px/1.6667 -apple-system, BlinkMacSystemFont,
+        "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
+        "Fira Sans", "Droid Sans", "Helvetica Neue", "Arial",
+        sans-serif;
     margin:0;
     padding:0;
     min-width: 768px;
@@ -1840,6 +1873,20 @@ body {
     height: 100%;
 }
 
+#content.active {
+    -webkit-filter: none !important;
+    filter: none !important;
+    -webkit-duration: 200ms;
+    transition-duration: 200ms;
+}
+
+#content.inactive {
+    -webkit-filter: grayscale(80%) brightness(80%);
+    filter: grayscale(80%) brightness(80%);
+    -webkit-duration: 200ms;
+    transition-duration: 200ms;
+}
+
 #defs {
     /* Can't be display: none or the clippaths are ignored. */
     position: absolute;
@@ -1950,7 +1997,10 @@ a:hover {
 
 textarea  {
     resize: vertical;
-    font:normal 12px/20px 'Helvetica Neue', Arial, sans-serif;
+    font:normal 12px/20px -apple-system, BlinkMacSystemFont,
+        "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
+        "Fira Sans", "Droid Sans", "Helvetica Neue", "Arial",
+        sans-serif;
 }
 
 textarea,
@@ -2252,10 +2302,6 @@ button.secondary-action:hover {
     background: #cccccc;
 }
 
-button.save.has-count {
-    padding: 9px;
-}
-
 button.save .count {
     display: none;
 }
@@ -2273,7 +2319,7 @@ button.save.has-count .count {
     line-height: 12px;
     border-radius: 4px;
     margin: auto;
-    margin-left: 8.3333%;
+    margin-left: 9.3333%;
 }
 
 button.save.has-count .count::before {
@@ -2308,7 +2354,7 @@ button.save.has-count .count::before {
 }
 
 .icon.pre-text {
-    margin-right: 3px;
+    margin-right: 5px;
 }
 
 .icon.light {
@@ -2651,16 +2697,28 @@ button.save.has-count .count::before {
     height: 44px;
 }
 
-.preset-icon-32 {
+.preset-icon-28 {
     position: absolute;
-    top: 14px;
-    left: 13px;   /* Maki icons off center? */
+    top: 16px;
+    left: 16px;
     margin: auto;
 }
 
-.preset-icon-32 .icon {
-    width: 32px;
-    height: 32px;
+.preset-icon-28 .icon {
+    width: 28px;
+    height: 28px;
+}
+
+.preset-icon-24 {
+    position: absolute;
+    top: 18px;
+    left: 18px;
+    margin: auto;
+}
+
+.preset-icon-24 .icon {
+    width: 24px;
+    height: 24px;
 }
 
 .preset-list-button .label {
@@ -5251,7 +5309,7 @@ img.tile-removing {
 }
 
 [dir='rtl'] .icon.pre-text {
-  margin-left: 3px;
+  margin-left: 5px;
   margin-right: 0;
 }
 
@@ -5285,8 +5343,12 @@ img.tile-removing {
   right: auto;
 }
 
-[dir='rtl'] .preset-list-button-wrap .preset-icon-32 {
-  right: 15px;
+[dir='rtl'] .preset-list-button-wrap .preset-icon-28 {
+  right: 16px;
+}
+
+[dir='rtl'] .preset-list-button-wrap .preset-icon-24 {
+  right: 18px;
 }
 
 [dir='rtl'] .form-field .maxspeed-unit {
@@ -5432,6 +5494,21 @@ img.tile-removing {
   border-radius: 4px 0 0 4px;
 }
 
+[dir='rtl'] .spinner {
+  float: left;
+}
+
+[dir='rtl'] .spinner img {
+  margin-left: 10px;
+  margin-right: auto;
+  -moz-transform: scaleX(-1);
+  -o-transform: scaleX(-1);
+  -webkit-transform: scaleX(-1);
+  transform: scaleX(-1);
+  filter: FlipH;
+  -ms-filter: "FlipH";
+}
+
 /* footer */
 [dir='rtl'] #scale-block {
   float: right;
index 9ec2d719dfe9e121d3a9e99980ff8d11b4f1bf40..681ebc840c3f16dc3f489fb398586da68c506324 100644 (file)
@@ -32,7 +32,7 @@ var lodash = createCommonjsModule(function (module, exports) {
   var undefined;
 
   /** Used as the semantic version number. */
-  var VERSION = '4.17.2';
+  var VERSION = '4.17.4';
 
   /** Used as the size to enable large array optimizations. */
   var LARGE_ARRAY_SIZE = 200;
@@ -443,10 +443,10 @@ var lodash = createCommonjsModule(function (module, exports) {
   var root = freeGlobal || freeSelf || Function('return this')();
 
   /** Detect free variable `exports`. */
-  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
+  var freeExports = 'object' == 'object' && exports && !exports.nodeType && exports;
 
   /** Detect free variable `module`. */
-  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
+  var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
 
   /** Detect the popular CommonJS extension `module.exports`. */
   var moduleExports = freeModule && freeModule.exports === freeExports;
@@ -1587,9 +1587,9 @@ var lodash = createCommonjsModule(function (module, exports) {
      * Shortcut fusion is an optimization to merge iteratee calls; this avoids
      * the creation of intermediate arrays and can greatly reduce the number of
      * iteratee executions. Sections of a chain sequence qualify for shortcut
-     * fusion if the section is applied to an array of at least `200` elements
-     * and any iteratees accept only one argument. The heuristic for whether a
-     * section qualifies for shortcut fusion is subject to change.
+     * fusion if the section is applied to an array and iteratees accept only
+     * one argument. The heuristic for whether a section qualifies for shortcut
+     * fusion is subject to change.
      *
      * Chaining is supported in custom builds as long as the `_#value` method is
      * directly or indirectly included in the build.
@@ -1748,8 +1748,8 @@ var lodash = createCommonjsModule(function (module, exports) {
 
     /**
      * By default, the template delimiters used by lodash are like those in
-     * embedded Ruby (ERB). Change the following template settings to use
-     * alternative delimiters.
+     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
+     * following template settings to use alternative delimiters.
      *
      * @static
      * @memberOf _
@@ -1896,8 +1896,7 @@ var lodash = createCommonjsModule(function (module, exports) {
           resIndex = 0,
           takeCount = nativeMin(length, this.__takeCount__);
 
-      if (!isArr || arrLength < LARGE_ARRAY_SIZE ||
-          (arrLength == length && takeCount == length)) {
+      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
         return baseWrapperValue(array, this.__actions__);
       }
       var result = [];
@@ -2011,7 +2010,7 @@ var lodash = createCommonjsModule(function (module, exports) {
      */
     function hashHas(key) {
       var data = this.__data__;
-      return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
     }
 
     /**
@@ -2484,24 +2483,6 @@ var lodash = createCommonjsModule(function (module, exports) {
       return shuffleSelf(copyArray(array));
     }
 
-    /**
-     * Used by `_.defaults` to customize its `_.assignIn` use.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to assign.
-     * @param {Object} object The parent object of `objValue`.
-     * @returns {*} Returns the value to assign.
-     */
-    function assignInDefaults(objValue, srcValue, key, object) {
-      if (objValue === undefined ||
-          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-        return srcValue;
-      }
-      return objValue;
-    }
-
     /**
      * This function is like `assignValue` except that it doesn't assign
      * `undefined` values.
@@ -3114,8 +3095,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       if (value == null) {
         return value === undefined ? undefinedTag : nullTag;
       }
-      value = Object(value);
-      return (symToStringTag && symToStringTag in value)
+      return (symToStringTag && symToStringTag in Object(value))
         ? getRawTag(value)
         : objectToString(value);
     }
@@ -3319,7 +3299,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       if (value === other) {
         return true;
       }
-      if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
+      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
         return value !== value && other !== other;
       }
       return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
@@ -3342,17 +3322,12 @@ var lodash = createCommonjsModule(function (module, exports) {
     function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
       var objIsArr = isArray(object),
           othIsArr = isArray(other),
-          objTag = arrayTag,
-          othTag = arrayTag;
+          objTag = objIsArr ? arrayTag : getTag(object),
+          othTag = othIsArr ? arrayTag : getTag(other);
+
+      objTag = objTag == argsTag ? objectTag : objTag;
+      othTag = othTag == argsTag ? objectTag : othTag;
 
-      if (!objIsArr) {
-        objTag = getTag(object);
-        objTag = objTag == argsTag ? objectTag : objTag;
-      }
-      if (!othIsArr) {
-        othTag = getTag(other);
-        othTag = othTag == argsTag ? objectTag : othTag;
-      }
       var objIsObj = objTag == objectTag,
           othIsObj = othTag == objectTag,
           isSameTag = objTag == othTag;
@@ -3800,7 +3775,6 @@ var lodash = createCommonjsModule(function (module, exports) {
      * @returns {Object} Returns the new object.
      */
     function basePick(object, paths) {
-      object = Object(object);
       return basePickBy(object, paths, function(value, path) {
         return hasIn(object, path);
       });
@@ -5193,8 +5167,7 @@ var lodash = createCommonjsModule(function (module, exports) {
           var args = arguments,
               value = args[0];
 
-          if (wrapper && args.length == 1 &&
-              isArray(value) && value.length >= LARGE_ARRAY_SIZE) {
+          if (wrapper && args.length == 1 && isArray(value)) {
             return wrapper.plant(value).value();
           }
           var index = 0,
@@ -5501,7 +5474,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       var func = Math[methodName];
       return function(number, precision) {
         number = toNumber(number);
-        precision = nativeMin(toInteger(precision), 292);
+        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
         if (precision) {
           // Shift with exponential notation to avoid floating-point issues.
           // See [MDN](https://mdn.io/round#Examples) for more details.
@@ -5606,7 +5579,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       thisArg = newData[2];
       partials = newData[3];
       holders = newData[4];
-      arity = newData[9] = newData[9] == null
+      arity = newData[9] = newData[9] === undefined
         ? (isBindKey ? 0 : func.length)
         : nativeMax(newData[9] - length, 0);
 
@@ -5626,6 +5599,63 @@ var lodash = createCommonjsModule(function (module, exports) {
       return setWrapToString(setter(result, newData), func, bitmask);
     }
 
+    /**
+     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
+     * of source objects to the destination object for all destination properties
+     * that resolve to `undefined`.
+     *
+     * @private
+     * @param {*} objValue The destination value.
+     * @param {*} srcValue The source value.
+     * @param {string} key The key of the property to assign.
+     * @param {Object} object The parent object of `objValue`.
+     * @returns {*} Returns the value to assign.
+     */
+    function customDefaultsAssignIn(objValue, srcValue, key, object) {
+      if (objValue === undefined ||
+          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
+        return srcValue;
+      }
+      return objValue;
+    }
+
+    /**
+     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
+     * objects into destination objects that are passed thru.
+     *
+     * @private
+     * @param {*} objValue The destination value.
+     * @param {*} srcValue The source value.
+     * @param {string} key The key of the property to merge.
+     * @param {Object} object The parent object of `objValue`.
+     * @param {Object} source The parent object of `srcValue`.
+     * @param {Object} [stack] Tracks traversed source values and their merged
+     *  counterparts.
+     * @returns {*} Returns the value to assign.
+     */
+    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
+      if (isObject(objValue) && isObject(srcValue)) {
+        // Recursively merge objects and arrays (susceptible to call stack limits).
+        stack.set(srcValue, objValue);
+        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
+        stack['delete'](srcValue);
+      }
+      return objValue;
+    }
+
+    /**
+     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
+     * objects.
+     *
+     * @private
+     * @param {*} value The value to inspect.
+     * @param {string} key The key of the property to inspect.
+     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
+     */
+    function customOmitClone(value) {
+      return isPlainObject(value) ? undefined : value;
+    }
+
     /**
      * A specialized version of `baseIsEqualDeep` for arrays with support for
      * partial deep comparisons.
@@ -5797,9 +5827,9 @@ var lodash = createCommonjsModule(function (module, exports) {
      */
     function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
       var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-          objProps = keys(object),
+          objProps = getAllKeys(object),
           objLength = objProps.length,
-          othProps = keys(other),
+          othProps = getAllKeys(other),
           othLength = othProps.length;
 
       if (objLength != othLength && !isPartial) {
@@ -6037,7 +6067,15 @@ var lodash = createCommonjsModule(function (module, exports) {
      * @param {Object} object The object to query.
      * @returns {Array} Returns the array of symbols.
      */
-    var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
+    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
+      if (object == null) {
+        return [];
+      }
+      object = Object(object);
+      return arrayFilter(nativeGetSymbols(object), function(symbol) {
+        return propertyIsEnumerable.call(object, symbol);
+      });
+    };
 
     /**
      * Creates an array of the own and inherited enumerable symbols of `object`.
@@ -6523,29 +6561,6 @@ var lodash = createCommonjsModule(function (module, exports) {
       return data;
     }
 
-    /**
-     * Used by `_.defaultsDeep` to customize its `_.merge` use.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to merge.
-     * @param {Object} object The parent object of `objValue`.
-     * @param {Object} source The parent object of `srcValue`.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     * @returns {*} Returns the value to assign.
-     */
-    function mergeDefaults(objValue, srcValue, key, object, source, stack) {
-      if (isObject(objValue) && isObject(srcValue)) {
-        // Recursively merge objects and arrays (susceptible to call stack limits).
-        stack.set(srcValue, objValue);
-        baseMerge(objValue, srcValue, undefined, mergeDefaults, stack);
-        stack['delete'](srcValue);
-      }
-      return objValue;
-    }
-
     /**
      * This function is like
      * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
@@ -8288,7 +8303,7 @@ var lodash = createCommonjsModule(function (module, exports) {
      *
      * var users = [
      *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false},
+     *   { 'user': 'fred',    'active': false },
      *   { 'user': 'pebbles', 'active': true }
      * ];
      *
@@ -10857,7 +10872,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       if (typeof func != 'function') {
         throw new TypeError(FUNC_ERROR_TEXT);
       }
-      start = start === undefined ? 0 : nativeMax(toInteger(start), 0);
+      start = start == null ? 0 : nativeMax(toInteger(start), 0);
       return baseRest(function(args) {
         var array = args[start],
             otherArgs = castSlice(args, 0, start);
@@ -11527,7 +11542,7 @@ var lodash = createCommonjsModule(function (module, exports) {
      * date objects, error objects, maps, numbers, `Object` objects, regexes,
      * sets, strings, symbols, and typed arrays. `Object` objects are compared
      * by their own, not inherited, enumerable properties. Functions and DOM
-     * nodes are **not** supported.
+     * nodes are compared by strict equality, i.e. `===`.
      *
      * @static
      * @memberOf _
@@ -12547,7 +12562,9 @@ var lodash = createCommonjsModule(function (module, exports) {
      * // => 3
      */
     function toSafeInteger(value) {
-      return baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);
+      return value
+        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
+        : (value === 0 ? value : 0);
     }
 
     /**
@@ -12801,7 +12818,7 @@ var lodash = createCommonjsModule(function (module, exports) {
      * // => { 'a': 1, 'b': 2 }
      */
     var defaults = baseRest(function(args) {
-      args.push(undefined, assignInDefaults);
+      args.push(undefined, customDefaultsAssignIn);
       return apply(assignInWith, undefined, args);
     });
 
@@ -12825,7 +12842,7 @@ var lodash = createCommonjsModule(function (module, exports) {
      * // => { 'a': { 'b': 2, 'c': 3 } }
      */
     var defaultsDeep = baseRest(function(args) {
-      args.push(undefined, mergeDefaults);
+      args.push(undefined, customDefaultsMerge);
       return apply(mergeWith, undefined, args);
     });
 
@@ -13487,7 +13504,7 @@ var lodash = createCommonjsModule(function (module, exports) {
       });
       copyObject(object, getAllKeysIn(object), result);
       if (isDeep) {
-        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG);
+        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
       }
       var length = paths.length;
       while (length--) {
@@ -14636,7 +14653,10 @@ var lodash = createCommonjsModule(function (module, exports) {
      */
     function startsWith(string, target, position) {
       string = toString(string);
-      position = baseClamp(toInteger(position), 0, string.length);
+      position = position == null
+        ? 0
+        : baseClamp(toInteger(position), 0, string.length);
+
       target = baseToString(target);
       return string.slice(position, position + target.length) == target;
     }
@@ -14755,9 +14775,9 @@ var lodash = createCommonjsModule(function (module, exports) {
         options = undefined;
       }
       string = toString(string);
-      options = assignInWith({}, options, settings, assignInDefaults);
+      options = assignInWith({}, options, settings, customDefaultsAssignIn);
 
-      var imports = assignInWith({}, options.imports, settings.imports, assignInDefaults),
+      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
           importsKeys = keys(imports),
           importsValues = baseValues(imports, importsKeys);
 
@@ -16841,14 +16861,13 @@ var lodash = createCommonjsModule(function (module, exports) {
     // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
     arrayEach(['drop', 'take'], function(methodName, index) {
       LazyWrapper.prototype[methodName] = function(n) {
-        var filtered = this.__filtered__;
-        if (filtered && !index) {
-          return new LazyWrapper(this);
-        }
         n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
 
-        var result = this.clone();
-        if (filtered) {
+        var result = (this.__filtered__ && !index)
+          ? new LazyWrapper(this)
+          : this.clone();
+
+        if (result.__filtered__) {
           result.__takeCount__ = nativeMin(n, result.__takeCount__);
         } else {
           result.__views__.push({
@@ -17058,7 +17077,7 @@ var lodash = createCommonjsModule(function (module, exports) {
   var _ = runInContext();
 
   // Some AMD build optimizers, like r.js, check for condition patterns like:
-  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
+  if (typeof undefined == 'function' && typeof undefined.amd == 'object' && undefined.amd) {
     // Expose Lodash on the global object to prevent errors when Lodash is
     // loaded by a script tag in the presence of an AMD loader.
     // See http://requirejs.org/docs/errors.html#mismatch for more details.
@@ -17067,7 +17086,7 @@ var lodash = createCommonjsModule(function (module, exports) {
 
     // Define as an anonymous module so, through path mapping, it can be
     // referenced as the "underscore" module.
-    define(function() {
+    undefined(function() {
       return _;
     });
   }
@@ -18562,357 +18581,6 @@ var dataWikipedia = [
     ]
 ];
 
-var dataFeatureIcons =  {
-       "circle-stroked-24": {"x":0,"y":0,"width":24,"height":24},
-       "circle-stroked-18": {"x":24,"y":0,"width":18,"height":18},
-       "circle-stroked-12": {"x":42,"y":0,"width":12,"height":12},
-       "circle-24": {"x":54,"y":0,"width":24,"height":24},
-       "circle-18": {"x":78,"y":0,"width":18,"height":18},
-       "circle-12": {"x":96,"y":0,"width":12,"height":12},
-       "square-stroked-24": {"x":108,"y":0,"width":24,"height":24},
-       "square-stroked-18": {"x":132,"y":0,"width":18,"height":18},
-       "square-stroked-12": {"x":150,"y":0,"width":12,"height":12},
-       "square-24": {"x":162,"y":0,"width":24,"height":24},
-       "square-18": {"x":186,"y":0,"width":18,"height":18},
-       "square-12": {"x":204,"y":0,"width":12,"height":12},
-       "triangle-stroked-24": {"x":216,"y":0,"width":24,"height":24},
-       "triangle-stroked-18": {"x":240,"y":0,"width":18,"height":18},
-       "triangle-stroked-12": {"x":258,"y":0,"width":12,"height":12},
-       "triangle-24": {"x":0,"y":24,"width":24,"height":24},
-       "triangle-18": {"x":24,"y":24,"width":18,"height":18},
-       "triangle-12": {"x":42,"y":24,"width":12,"height":12},
-       "star-stroked-24": {"x":54,"y":24,"width":24,"height":24},
-       "star-stroked-18": {"x":78,"y":24,"width":18,"height":18},
-       "star-stroked-12": {"x":96,"y":24,"width":12,"height":12},
-       "star-24": {"x":108,"y":24,"width":24,"height":24},
-       "star-18": {"x":132,"y":24,"width":18,"height":18},
-       "star-12": {"x":150,"y":24,"width":12,"height":12},
-       "cross-24": {"x":162,"y":24,"width":24,"height":24},
-       "cross-18": {"x":186,"y":24,"width":18,"height":18},
-       "cross-12": {"x":204,"y":24,"width":12,"height":12},
-       "marker-stroked-24": {"x":216,"y":24,"width":24,"height":24},
-       "marker-stroked-18": {"x":240,"y":24,"width":18,"height":18},
-       "marker-stroked-12": {"x":258,"y":24,"width":12,"height":12},
-       "marker-24": {"x":0,"y":48,"width":24,"height":24},
-       "marker-18": {"x":24,"y":48,"width":18,"height":18},
-       "marker-12": {"x":42,"y":48,"width":12,"height":12},
-       "religious-jewish-24": {"x":54,"y":48,"width":24,"height":24},
-       "religious-jewish-18": {"x":78,"y":48,"width":18,"height":18},
-       "religious-jewish-12": {"x":96,"y":48,"width":12,"height":12},
-       "religious-christian-24": {"x":108,"y":48,"width":24,"height":24},
-       "religious-christian-18": {"x":132,"y":48,"width":18,"height":18},
-       "religious-christian-12": {"x":150,"y":48,"width":12,"height":12},
-       "religious-muslim-24": {"x":162,"y":48,"width":24,"height":24},
-       "religious-muslim-18": {"x":186,"y":48,"width":18,"height":18},
-       "religious-muslim-12": {"x":204,"y":48,"width":12,"height":12},
-       "cemetery-24": {"x":216,"y":48,"width":24,"height":24},
-       "cemetery-18": {"x":240,"y":48,"width":18,"height":18},
-       "cemetery-12": {"x":258,"y":48,"width":12,"height":12},
-       "rocket-24": {"x":0,"y":72,"width":24,"height":24},
-       "rocket-18": {"x":24,"y":72,"width":18,"height":18},
-       "rocket-12": {"x":42,"y":72,"width":12,"height":12},
-       "airport-24": {"x":54,"y":72,"width":24,"height":24},
-       "airport-18": {"x":78,"y":72,"width":18,"height":18},
-       "airport-12": {"x":96,"y":72,"width":12,"height":12},
-       "heliport-24": {"x":108,"y":72,"width":24,"height":24},
-       "heliport-18": {"x":132,"y":72,"width":18,"height":18},
-       "heliport-12": {"x":150,"y":72,"width":12,"height":12},
-       "rail-24": {"x":162,"y":72,"width":24,"height":24},
-       "rail-18": {"x":186,"y":72,"width":18,"height":18},
-       "rail-12": {"x":204,"y":72,"width":12,"height":12},
-       "rail-metro-24": {"x":216,"y":72,"width":24,"height":24},
-       "rail-metro-18": {"x":240,"y&q