]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/2577'
authorTom Hughes <tom@compton.nu>
Wed, 1 Apr 2020 10:56:27 +0000 (11:56 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 1 Apr 2020 10:56:27 +0000 (11:56 +0100)
22 files changed:
Gemfile.lock
Vendorfile
app/assets/javascripts/application.js
app/controllers/api/user_preferences_controller.rb
config/locales/ar.yml
config/locales/ce.yml
config/locales/cs.yml
config/locales/de.yml
config/locales/fit.yml
config/locales/kab.yml
config/locales/ko.yml
config/locales/lt.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt-PT.yml
config/locales/sv.yml
config/locales/zh-CN.yml
test/application_system_test_case.rb
vendor/assets/leaflet/leaflet.contextmenu.js
vendor/assets/leaflet/leaflet.js
vendor/assets/leaflet/leaflet.locate.js
vendor/assets/leaflet/leaflet.polyline.js

index cb403173036403e203df8b080855c4c59f877039..3fff579d9a1e9e6a41c02d781acc81884ef30b2d 100644 (file)
@@ -67,15 +67,15 @@ GEM
       zeitwerk (~> 2.2)
     addressable (2.7.0)
       public_suffix (>= 2.0.2, < 5.0)
-    annotate (3.1.0)
+    annotate (3.1.1)
       activerecord (>= 3.2, < 7.0)
       rake (>= 10.4, < 14.0)
     ast (2.4.0)
-    autoprefixer-rails (9.7.4)
+    autoprefixer-rails (9.7.5)
       execjs
     aws-eventstream (1.0.3)
-    aws-partitions (1.285.0)
-    aws-sdk-core (3.91.1)
+    aws-partitions (1.291.0)
+    aws-sdk-core (3.92.0)
       aws-eventstream (~> 1.0, >= 1.0.2)
       aws-partitions (~> 1, >= 1.239.0)
       aws-sigv4 (~> 1.1)
@@ -117,7 +117,7 @@ GEM
     cancancan (3.1.0)
     canonical-rails (0.2.8)
       rails (>= 4.1, < 6.1)
-    capybara (3.31.0)
+    capybara (3.32.0)
       addressable
       mini_mime (>= 0.1.3)
       nokogiri (~> 1.8)
@@ -152,7 +152,7 @@ GEM
       activerecord (>= 3.0, < 6.1)
       delayed_job (>= 3.0, < 5)
     docile (1.3.2)
-    dry-configurable (0.11.4)
+    dry-configurable (0.11.5)
       concurrent-ruby (~> 1.0)
       dry-core (~> 0.4, >= 0.4.7)
       dry-equalizer (~> 0.2)
@@ -201,12 +201,12 @@ GEM
     erubi (1.9.0)
     execjs (2.7.0)
     exifr (1.3.6)
-    factory_bot (5.1.1)
+    factory_bot (5.1.2)
       activesupport (>= 4.2.0)
     factory_bot_rails (5.1.1)
       factory_bot (~> 5.1.0)
       railties (>= 4.2.0)
-    faraday (1.0.0)
+    faraday (1.0.1)
       multipart-post (>= 1.2, < 3)
     ffi (1.12.2)
     ffi-libarchive (1.0.0)
@@ -322,7 +322,7 @@ GEM
       omniauth-oauth2 (~> 1.4)
     openstreetmap-deadlock_retry (1.3.0)
     parallel (1.19.1)
-    parser (2.7.0.4)
+    parser (2.7.0.5)
       ast (~> 2.4.0)
     pg (1.2.3)
     poltergeist (1.18.1)
@@ -400,7 +400,8 @@ GEM
       unicode-display_width (>= 1.4.0, < 1.7)
     rubocop-performance (1.5.2)
       rubocop (>= 0.71.0)
-    rubocop-rails (2.4.2)
+    rubocop-rails (2.5.0)
+      activesupport
       rack (>= 1.1)
       rubocop (>= 0.72.0)
     ruby-openid (2.9.2)
index 1d41ad3489756e4800bdb42395106a5c6f180ee4..36716646e95e2a1bd3c4d8e4c93639e0a4fbaf71 100644 (file)
@@ -11,16 +11,16 @@ folder 'vendor/assets' do
   end
 
   folder 'leaflet' do
-    file 'leaflet.js', 'https://unpkg.com/leaflet@1.5.1/dist/leaflet-src.js'
-    file 'leaflet.css', 'https://unpkg.com/leaflet@1.5.1/dist/leaflet.css'
+    file 'leaflet.js', 'https://unpkg.com/leaflet@1.6.0/dist/leaflet-src.js'
+    file 'leaflet.css', 'https://unpkg.com/leaflet@1.6.0/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.5.1/dist/images/#{image}"
+      file "images/#{image}", "https://unpkg.com/leaflet@1.6.0/dist/images/#{image}"
     end
 
-    from 'git://github.com/aratcliffe/Leaflet.contextmenu.git', :tag => 'v1.5.0' do
+    from 'git://github.com/aratcliffe/Leaflet.contextmenu.git', :tag => 'v1.5.1' do
       file 'leaflet.contextmenu.js', 'dist/leaflet.contextmenu.js'
       file 'leaflet.contextmenu.css', 'dist/leaflet.contextmenu.css'
     end
@@ -31,7 +31,7 @@ folder 'vendor/assets' do
       folder 'img', 'src/img'
     end
 
-    from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.66.0' do
+    from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.71.0' do
       file 'leaflet.locate.js', 'src/L.Control.Locate.js'
     end
 
@@ -39,7 +39,7 @@ folder 'vendor/assets' do
       file 'leaflet.osm.js', 'leaflet-osm.js'
     end
 
-    from 'git://github.com/jieter/Leaflet.encoded.git', :tag => '0.0.8' do
+    from 'git://github.com/jieter/Leaflet.encoded.git', :tag => '0.0.9' do
       file 'leaflet.polyline.js', 'Polyline.encoded.js'
     end
   end
index e99a8f351e84388deea7a36e50e92a4f84e21547..e455f297be32868f6a5ae73921b4f416c5c5f3ef 100644 (file)
@@ -18,7 +18,7 @@
 //= require querystring
 
 /*
- * Called as the user scrolls/zooms around to maniplate hrefs of the
+ * Called as the user scrolls/zooms around to manipulate hrefs of the
  * view tab and various other links
  */
 window.updateLinks = function (loc, zoom, layers, object) {
index 83e28bc4e0047ef4e3a9a880a08406813f654693..ddc5d7f430a9eff0c085bedaf40cf3a9d70a76b5 100644 (file)
@@ -25,9 +25,7 @@ module Api
 
     # update the entire set of preferences
     def update_all
-      old_preferences = current_user.preferences.each_with_object({}) do |preference, preferences|
-        preferences[preference.k] = preference
-      end
+      old_preferences = current_user.preferences.index_by(&:k)
 
       new_preferences = {}
 
index ad0cf980215f452170f83459a6f06f847d67b057..21452efc65ac2c5c38d0d51e14ec78b748388ec1 100644 (file)
@@ -79,6 +79,7 @@ ar:
       diary_comment: تعليق يومية
       diary_entry: مدخلة يومية
       friend: صديق
+      issue: قضية
       language: اللغة
       message: الرسالة
       node: عقدة
@@ -95,6 +96,7 @@ ar:
       relation: علاقة
       relation_member: عضو علاقة
       relation_tag: وسم علاقة
+      report: تقرير
       session: جلسة
       trace: أثر
       tracepoint: نقطة أثر
@@ -196,6 +198,12 @@ ar:
       description: تحكم عن بعد (JOSM أو Merkaartor)
   auth:
     providers:
+      none: لا شيء
+      openid: هوية مفتوحة
+      google: جوجل
+      facebook: فيسبوك
+      windowslive: ويندوز لايف
+      github: جيت هب
       wikipedia: ويكيبيديا
   api:
     notes:
@@ -2591,6 +2599,20 @@ ar:
         out: بَعِّدْ
       locate:
         title: أظهر موقعي
+        metersPopup:
+          zero: أنت على بعد %{count} متر من هذه النقطة
+          one: أنت على بعد متر واحد من هذه النقطة
+          two: أنت على بعد %{count} متر من هذه النقطة
+          few: أنت على بعد %{count} متر من هذه النقطة
+          many: أنت على بعد %{count} متر من هذه النقطة
+          other: أنت على بعد %{count} متر من هذه النقطة
+        feetPopup:
+          zero: أنت على بعد %{count} قدم من هذه النقطة
+          one: أنت على بعد قدم واحد من هذه النقطة
+          two: أنت على بعد %{count} قدم من هذه النقطة
+          few: أنت على بعد %{count} قدم من هذه النقطة
+          many: أنت على بعد %{count} قدم من هذه النقطة
+          other: أنت على بعد %{count} قدم من هذه النقطة
       base:
         standard: قياسي
         cycle_map: خريطة الدراجات
@@ -2606,6 +2628,11 @@ ar:
       copyright: © <a href='%{copyright_url}'>مساهمو خريطة الشارع المفتوحة</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>تقديم تبرع</a>
       terms: <a href='%{terms_url}' target='_blank'> مصطلحات الموقع و API</a>
+      thunderforest: البلاط من <a href='%{thunderforest_url}' target='_blank'>Andy
+        Allan</a>
+      hotosm: نمط البلاط بواسطة <a href='%{hotosm_url}' target='_blank'>Humanitarian
+        OpenStreetMap Team</a> المستضاف بواسطة <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap
+        France</a>
     site:
       edit_tooltip: عدّل الخريطة
       edit_disabled_tooltip: قم بالتكبير لتحرير الخريطة
index 7acd2c80a853d38ec8d56f11732308b51b986444..9d2c1caeb786196ca1b774ae7562443888b834d8 100644 (file)
@@ -740,7 +740,7 @@ ce:
         one: 1 хаам
         other: '%{count} хаам'
       resolve: Кечъян
-      ignore: Ð\98гноÑ\80 Ñ\8fн
+      ignore: Ð¢ÐµÑ\80гал Ñ\86а Ð´Ð°н
       reopen: Юху схьаелла
   reports:
     new:
index a0021b096b6c991851404d1c36d2c7c9371968c9..18fd40ad669ab7e9421abc09abaaf5c5063bde4d 100644 (file)
@@ -34,6 +34,7 @@
 # Author: Spotter
 # Author: StenSoft
 # Author: Tchoř
+# Author: Tomasokol
 # Author: Urbanecm
 # Author: Veritaslibero
 # Author: Walter Klosse
@@ -81,6 +82,7 @@ cs:
       diary_comment: Komentář k deníku
       diary_entry: Deníkový záznam
       friend: Přítel
+      issue: Problém
       language: Jazyk
       message: Zpráva
       node: Uzel
@@ -155,6 +157,30 @@ cs:
         one: skoro před rokem
         other: skoro před %{count} roky
       half_a_minute: před půl minutou
+      less_than_x_seconds:
+        one: před méně než vteřinou
+        other: před méně než %{count} vteřinami
+      less_than_x_minutes:
+        one: před méně než minutou
+        other: před méně než %{count} minutami
+      over_x_years:
+        one: více než před rokem
+        other: před více než %{count} lety
+      x_seconds:
+        one: před vteřinou
+        other: před %{count} vteřinami
+      x_minutes:
+        one: před minutou
+        other: před %{count} minutami
+      x_days:
+        one: den nazpět
+        other: před %{count} dny
+      x_months:
+        one: před měsícem
+        other: před %{count} měsíci
+      x_years:
+        one: před rokem
+        other: před %{count} lety
   editor:
     default: Výchozí (aktuálně %{name})
     potlatch:
@@ -169,6 +195,14 @@ cs:
     remote:
       name: Dálkové ovládání
       description: Dálkové ovládání (JOSM nebo Merkaartor)
+  auth:
+    providers:
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipedie
   api:
     notes:
       comment:
@@ -305,13 +339,12 @@ cs:
       commented_by_anonymous: <abbr title='%{exact_time}'>%{when}</abbr> okomentoval
         anonym
       closed_by: Vyřešeno od %{user} <abbr title='%{exact_time}'>%{when}</abbr>
-      closed_by_anonymous: Vyřešil <abbr title='%{exact_time}'>před %{when}</abbr>
-        anonym
-      reopened_by: Reaktivoval <abbr title='%{exact_time}'>před %{when}</abbr> uživatel
+      closed_by_anonymous: Vyřešil anonym <abbr title='%{exact_time}'>%{when}</abbr>
+      reopened_by: Znovu aktivoval <abbr title='%{exact_time}'>%{when}</abbr> uživatel
         %{user}
-      reopened_by_anonymous: Reaktivoval <abbr title='%{exact_time}'>před %{when}</abbr>
+      reopened_by_anonymous: Znovu aktivoval <abbr title='%{exact_time}'>%{when}</abbr>
         anonym
-      hidden_by: Skryl <abbr title='%{exact_time}'>před %{when}</abbr> uživatel %{user}
+      hidden_by: Skryl <abbr title='%{exact_time}'>%{when}</abbr> uživatel %{user}
       report: Nahlásit tuto poznámku
     query:
       title: Průzkum prvků
@@ -1294,10 +1327,10 @@ cs:
           změn'
         subject_other: '[OpenStreetMap] %{commenter} okomentoval jednu ze sad změn,
           která vás zajímá'
-        your_changeset: '%{commenter} zanechal komentář na jedné z vašich sad změn,
-          vytvořené %{time}.'
-        commented_changeset: '%{commenter} zanechal komentář na sadě změn, kterou
-          %{time} vytvořil %{changeset_author} a kterou sledujete.'
+        your_changeset: '%{commenter} zanechal %{time} komentář na jedné z vašich
+          sad změn.'
+        commented_changeset: '%{commenter} zanechal %{time} komentář na Vámi sledované
+          sadě změn, kterou vytvořil %{changeset_author}.'
         partial_changeset_with_comment: s komentářem „%{changeset_comment}“
         partial_changeset_without_comment: bez komentáře
       details: Více informací o této sadě změn lze nalézt na %{url}.
@@ -1880,7 +1913,9 @@ cs:
       newer: Novější stopy
     trace:
       pending: ZPRACOVÁVÁ SE
-      count_points: '%{count} bodů'
+      count_points:
+        one: 1 bod
+        other: '%{count} bodů'
       more: více
       trace_details: Zobrazit podrobnosti stopy
       view_map: Zobrazit mapu
@@ -1997,6 +2032,7 @@ cs:
       no_apps_html: Máte nějakou aplikaci používající standard %{oauth}, která by
         s námi měla spolupracovat? Aplikaci je potřeba nejdříve zaregistrovat, až
         poté k nám bude moci posílat OAuth požadavky.
+      oauth: OAuth
       registered_apps: 'Máte zaregistrovány následující klientské aplikace:'
       register_new: Zaregistrovat aplikaci
     form:
@@ -2460,6 +2496,18 @@ cs:
         hours:
           one: 1 hodina
           other: '%{count} hodiny'
+        days:
+          one: 1 den
+          other: '%{count} dnů'
+        weeks:
+          one: 1 týden
+          other: '%{count} týdnů'
+        months:
+          one: 1 měsíc
+          other: '%{count} měsíců'
+        years:
+          one: 1 rok
+          other: '%{count} let'
     blocks_on:
       title: Zablokování uživatele %{name}
       heading_html: Seznam zablokování uživatele %{name}
@@ -2539,6 +2587,12 @@ cs:
         out: Oddálit
       locate:
         title: Ukázat moji polohu
+        metersPopup:
+          one: Od tohoto bodu jste vzdáleni metr
+          other: Od tohoto bodu jste vzdáleni %{count} metrů
+        feetPopup:
+          one: Od tohoto bodu jste vzdáleni jednu stopu
+          other: Od tohoto bodu jste vzdáleni %{count} stop
       base:
         standard: Standardní
         cycle_map: Cyklomapa
index 3e1b7049dec0b5e713a21807e0ae9a07f453531c..7e632b5719ca2f7afe68a0a279f0523bb5727ef7 100644 (file)
@@ -221,6 +221,15 @@ de:
     remote:
       name: Fernsteuerung
       description: externem Editor (JOSM oder Merkaartor)
+  auth:
+    providers:
+      none: Keine
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipedia
   api:
     notes:
       comment:
index fe714a1627800ae11707ce8d170f172c4deeee34..b9df62bb13479d447bdd74f769066e1cea8f04de 100644 (file)
@@ -44,6 +44,7 @@ fit:
       diary_comment: Päiväkirjakommentti
       diary_entry: Päiväkirjamerkintä
       friend: Ystävä
+      issue: Ilmiannot
       language: Kieli
       message: Viesti
       node: Piste
@@ -156,6 +157,9 @@ fit:
     remote:
       name: Kauko-ohjaus
       description: Kauko-ohjaus (JOSM eli Merkaartor)
+  auth:
+    providers:
+      wikipedia: Wikipeetia
   api:
     notes:
       comment:
@@ -444,7 +448,28 @@ fit:
           gondola: Gondolihissi
           platter: Hiihtohissi
           pylon: Pylväs
+          station: Ilmarata-asema
+          t-bar: Ankkurihissi
+        aeroway:
+          aerodrome: Lentokenttä
+          airstrip: Kiitorata
+          apron: Asemataso
+          gate: Portti
+          hangar: Hangaari
+          helipad: Helikopterikenttä
+          holding_position: Odotuspaikka
+          parking_position: Parkkialue
+          runway: Kiitorata
+          taxiway: Rullaustie
+          terminal: Terminaali
         amenity:
+          animal_shelter: Eläinsuoja
+          arts_centre: Taidekeskus
+          atm: Pankkoauttomaatti
+          bank: Pankko
+          bar: Baari
+          bbq: Grillauskatos
+          bench: Penkki
           cafe: Kahvila
           hospital: Siukhuusi
           library: Pipluteekki
@@ -501,7 +526,7 @@ fit:
       last_updated_time_user_html: käyttäjä %{user} <abbr title='%{title}'>%{time}</abbr>
       link_to_reports: Näytä ilmiannot
       reports_count:
-        one: 1 ilmoitus
+        one: 1 ilmotus
         other: '%{count} ilmiantoa'
       states:
         open: Avvaa
@@ -529,11 +554,11 @@ fit:
       no_other_issues: Ei muita tähän käyttäjään kohistuvia ilmiantoja.
       comments_on_this_issue: Tapauksen kommentit
     resolve:
-      resolved: Tapaus on markeerattu ratkaistuksi
+      resolved: Tapaus oon markeerattu ratkaistuksi
     ignore:
-      ignored: Tapaus on markeerattu aiheettomaksi
+      ignored: Tapaus oon markeerattu aiheettomaksi
     reopen:
-      reopened: Tapaus on markeerattu käsittelyssä olevaksi
+      reopened: Tapaus oon markeerattu käsittelyssä olevaksi
     comments:
       reassign_param: Haluatko määrittää tapauksen tilan uuesti?
     reports:
@@ -771,8 +796,8 @@ fit:
           href="https://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database -lisensillä</a> (ODbL).
         intro_2_html: "OpenStreetMapin karttoja ja tietoja voi kopioida, levittää,
           välittää ja mukauttaa, \nkunhan OpenStreetMap ja sen tekijät mainitaan.
-          Jos karttoja tai tietoja muutethaan tai kehitethään, niitä saa levittää
-          vain samalla lisensillä.\n<a href=\"https://opendatacommons.org/licenses/odbl/1.0/\">Lakitekstissä</a>
+          Jos karttoja tai tietoja muutethaan tai kehitethään, niitä saa levithää
+          vain samalla lisensilä.\n<a href=\"https://opendatacommons.org/licenses/odbl/1.0/\">Lakitekstissä</a>
           mainitaan levittäjän oikeudet ja velvollisuudet."
         intro_3_html: |-
           Kartta-aineisto ja dokumentaatio oon lisensoitu <a href="https://creativecommons.org/licenses/by-sa/2.0/deed.fi">Creative
@@ -781,11 +806,11 @@ fit:
         credit_1_html: OpenStreetMapin sisältöä levitettäessä oon mainittava teksti
           &quot;&copy; OpenStreetMapin tekijät&quot; tai sen engelskankielinen vastine
           &quot;&copy; OpenStreetMap contributors&quot;.
-        credit_2_html: "Levittäjän tulee tehdä selväksi, että aineisto on saatavilla
-          Open Database -lisenssillä\nja kartta-aineisto CC-BY-SA-lisenssillä. Tämä
-          voidaan tehdä sijoittamalla sivulle linkki\n<a href=\"https://www.openstreetmap.org/copyright\">tälle
-          tekijänoikeussivulle</a>. \nJos linkkien käyttö ei ole mahdollista (esimerkiksi
-          paperille tulostettu aineisto),\nsuosittelemme ohjaamaan lukijat osoitteisiin
+        credit_2_html: "Levittäjän tulee tehdä selväksi, ette aineisto oon saatavilla
+          Open Database -lisensillä\nja kartta-aineisto CC-BY-SA-lisensillä. Tämä
+          voidaan tehdä sijoittamalla sivule länkki\n<a href=\"https://www.openstreetmap.org/copyright\">tälle
+          tekijänoikeussivule</a>. \nJos länkkien käyttö ei ole mahollista (esimerkiksi
+          paperille printattu aineisto),\nsuosittelemme ohjaamaan lukijat atresseihin
           www.openstreetmap.org, opendatacommons.org ja tarvittaessa myös creativecommons.org."
         credit_3_html: 'Sivustolle upotetun interaktiivisen karttaikkunan tulee sisältää
           tekijän nimi kartan alaosassa:'
@@ -1016,7 +1041,7 @@ fit:
       button: Lissää ystäväksi
       success: '%{name} oon nyt sinun ystävä!'
       failed: Käyttäjää %{name} ei voitu lisätä sinun ystävälistaan.
-      already_a_friend: '%{name} on jo sinun ystävä.'
+      already_a_friend: '%{name} oon jo sinun ystävä.'
     remove_friend:
       heading: Poistetaanko ystävä %{user}?
       button: Ota poies ystävä
index 5a73bbd64d707c3b62bf56b8add20cbf0331dac5..59e41138bbb3f5ec7a739ff6f39139b58e0e4d1e 100644 (file)
@@ -5,6 +5,7 @@
 # Author: Alem
 # Author: Amsideg
 # Author: Belkacem77
+# Author: K Messaoudi
 # Author: Marzuquccen
 # Author: Mastanabal
 # Author: Mhenni
@@ -123,12 +124,20 @@ kab:
     remote:
       name: Amaẓrag azɣaray
       description: Amaẓrag azɣaray (JOSM neɣ Merkaartor)
+  auth:
+    providers:
+      none: Ulac
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipidya
   api:
     notes:
       comment:
         opened_at_html: Yattwarna %{when}
         opened_at_by_html: Yettwarna %{when} sɣur %{user}
-        commented_at_html: Yettwalqem %{when} aya
+        commented_at_html: Yettwalqem %{when}
         commented_at_by_html: Yettwalqem %{when} aya sɣur %{user}
         closed_at_html: Yefra %{when} aya
         closed_at_by_html: Yefra %{when} aya sɣur %{user}
@@ -136,6 +145,8 @@ kab:
         reopened_at_by_html: Yettwarmed %{when} aya sɣur %{user}
       rss:
         title: Tizmilin n OpenStreetMap
+        description_area: Tabdert n tezmilin yettwamlen, yettwawennten neɣ imedlen
+          deg temnaḍt-ik[(%{min_lat}|%{min_lon})--(%{max_lat}|%{max_lon})]
         opened: tazmilt tamaynut (qrib ar %{place})
         commented: awennit amawut (qrib ar %{place})
         closed: tazmilt temdel (qrib ar %{place})
@@ -247,7 +258,9 @@ kab:
         tag: Aglam n imyerr %{key}=%{value} ɣef uwiki
       wikidata_link: Aferdis %{page} di Wikidata
       wikipedia_link: Amagrad %{page}di Wikipedia
+      wikimedia_commons_link: Aferdis %{page} deg Wikimedia Commons
       telephone_link: Siwel ar %{phone_number}
+      colour_preview: Taskant n yini %{colour_value}
     note:
       title: 'Tazmilt: %{id}'
       new_note: Tazmilt tamaynut
@@ -308,9 +321,14 @@ kab:
     comment:
       comment: Awennit amaynut deg ugraw n usnifel uṭṭ %{changeset_id} par %{author}
       commented_at_by_html: Yettwalqem %{when} aya sɣur %{user}
+    comments:
+      comment: Awennit amaynut deg ugraw n usnifel wis %{changeset_id} sɣur %{author}
     index:
       title_all: Asqerdec deg ugraw n usnifel OpenStreetMap
-      title_particular: Asqerdec deg ugraw n usnifel OpenStreetMap uṭṭ %{changeset_id}
+      title_particular: Asqerdec deg ugraw n usnifel OpenStreetMap wis %{changeset_id}
+    timeout:
+      sorry: Suref-aɣ, tabdart n iygrawen n usnifel i d-tessutreḍ tettawi ddeqs n
+        wakud akken ad d-tali.
   diary_entries:
     new:
       title: Anekcam amaynut n uɣmis
@@ -358,6 +376,7 @@ kab:
         other: '%{count} n iwenniten'
       edit_link: Ẓreg anekcam-agi
       hide_link: Ffer anekcam-agi
+      unhide_link: Sken anekcum-a
       confirm: Sentem
       report: Sillef anekcum agi
     diary_comment:
@@ -365,7 +384,7 @@ kab:
       hide_link: Ffer awennit-agi
       unhide_link: Sken-d awennit-a
       confirm: Sentem
-      report: Sillef awennit agi
+      report: Mel awennit-a
     location:
       location: 'Adig:'
       view: Sken
@@ -543,6 +562,7 @@ kab:
           landing_site: Annar n trusi n utrab
           phone: Tiliɣri n utrab
           water_tank: Tanutfi n waman utrib
+          "yes": Tuɛjilin
         highway:
           abandoned: Abrid agejdan yettwattun
           bridleway: Aɣaras n yimnayen
@@ -560,6 +580,7 @@ kab:
           primary_link: Abrid agejdan
           proposed: Asenfaṛ n ubrid
           raceway: Amnenniḍ
+          residential: Abrid n tnezduɣin
           rest_area: Amḍiq n ustaεfu
           road: Abrid
           secondary: Abrid asnawan
index fbaa3e9c4a70c99566aa7a21eebde865235e843a..cbd957bbf01786375fd55f8696eec94107bfc2aa 100644 (file)
@@ -173,6 +173,7 @@ ko:
       openid: OpenID
       google: 구글
       facebook: 페이스북
+      windowslive: Windows Live
       github: 깃허브
       wikipedia: 위키백과
   api:
@@ -296,7 +297,9 @@ ko:
         tag: '%{key}=%{value} 태그에 대한 위키 설명 문서'
       wikidata_link: 위키데이터 %{page} 항목
       wikipedia_link: 위키백과 %{page} 문서
+      wikimedia_commons_link: 위키미디어 공용에서의 %{page} 항목
       telephone_link: '%{phone_number}(으)로 전화 걸기'
+      colour_preview: '%{colour_value}색 미리 보기'
     note:
       title: '참고: %{id}'
       new_note: 새로운 참고
@@ -1089,6 +1092,7 @@ ko:
     reopen:
       reopened: 이슈 상태가 '열림'으로 설정되었습니다
     comments:
+      comment_from_html: '%{comment_created_at}에 %{user_link}님의 댓글'
       reassign_param: 이슈를 다시 할당하시겠습니까?
     reports:
       reported_by_html: '%{updated_at}에 %{user}님이 %{category} 분류로 보고함'
@@ -1269,9 +1273,9 @@ ko:
       commented:
         subject_own: '[오픈스트리트맵] %{commenter}님이 내 바뀜집합에 덧글을 남겼습니다'
         subject_other: '[오픈스트리트맵] %{commenter}님이 내가 관심을 가진 바뀜집합에 뎟글을 남겼습니다'
-        your_changeset: '%{commenter}님이 내가 %{time}에 만든 바뀜집합에 덧글을 달았습니다'
+        your_changeset: '%{commenter}님이 %{time}에 내가 바뀜집합에 댓글을 달았습니다'
         commented_changeset: '%{commenter}님이 %{time}에 %{changeset_author}님이 만든 내가
-          주시중인 지도 바뀜집합에 덧글을 남겼습니다'
+          주시중인 바뀜집합에 댓글을 남겼습니다'
         partial_changeset_with_comment: ‘%{changeset_comment}’ 덧글로
         partial_changeset_without_comment: 의견 없이
       details: 바뀜집합에 대한 자세한 사항은 %{url}에서 찾을 수 있습니다.
@@ -1368,13 +1372,11 @@ ko:
         그 결과물을 배포할 수 있습니다. 자세한 내용은 <a href=''%{copyright_path}''>저작권 및 라이선스 문서</a>에서
         확인하세요.'
       legal_title: 법률
-      legal_1_html: |-
-        이 사이트 및 많은 다른 관련된 부문은 공동체를 대표하여 <a href='https://osmfoundation.org/'>OpenStreetMap 재단</a>에서 정식적으로 운영합니다. OpenStreetMap 재단이 운영하는 부문의 이용은 <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use">이용 약관</a>, <a href="https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">
-        허용할 수 있는 이용 정책</a> 및 <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">개인정보 정책</a> 조건 하에서 이루어집니다.
-        <br>
-        만일 이용허락 또는 저작권 및 다른 법률적인 질문이 있다면, <a href='https://osmfoundation.org/Contact'>OpenStreetMap 재단에 연락</a>하십시오.
-        <br>
-        OpenStreetMap, 돋보기 로고와 State of the Map은 <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">OpenStreetMap 재단의 등록상표입니다.</a>
+      legal_1_html: 이 사이트 및 많은 다른 관련된 부문은 공동체를 대표하여 <a href='https://osmfoundation.org/'>OpenStreetMap
+        재단</a>에서 정식적으로 운영합니다. OpenStreetMap 재단이 운영하는 부문의 이용은 <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use">이용
+        약관</a>, <a href="https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">허용할
+        수 있는 이용 정책</a> 및 <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">개인정보처리방침</a>
+        조건 하에서 이루어집니다.
       partners_title: 파트너
     copyright:
       foreign:
@@ -1503,7 +1505,7 @@ ko:
       shortlink: 짧은링크
       createnote: 참고 추가
       license:
-        copyright: 저작권 OpenStreetMap 기여자, 오픈 라이선스로 배포
+        copyright: 저작권 OpenStreetMap 및 기여자, 오픈 라이선스로 배포
       remote_failed: 편집을 실패했습니다 - JOSM이나 Merkaartor를 불러왔고 원격 제어 설정이 활성화되어 있는지 확인하세요
     edit:
       not_public: 공개할 편집을 설정하지 않았습니다.
@@ -1839,7 +1841,9 @@ ko:
       newer: 다음 궤적
     trace:
       pending: 보류 중
-      count_points: 점 %{count}개
+      count_points:
+        one: 점 1개
+        other: 점 %{count}개
       more: 더 보기
       trace_details: 궤적 상세보기
       view_map: 지도 보기
@@ -1924,7 +1928,7 @@ ko:
     edit:
       title: 내 애플리케이션 편집
     show:
-      title: '%{app_name}ì\97\90 ë\8d°한 OAuth 자세한 정보'
+      title: '%{app_name}ì\97\90 ë\8c\80한 OAuth 자세한 정보'
       key: '컨슈머 키:'
       secret: '컨슈머 비밀 값:'
       url: '요청 토큰 URL:'
@@ -2064,8 +2068,7 @@ ko:
       email address: '이메일 주소:'
       confirm email address: '이메일 주소 확인:'
       not_displayed_publicly_html: 당신의 주소는 공개되지 않습니다. 자세한 내용은 <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy"
-        title="OSMF privacy policy including section on email addresses">개인정보 정책</a>을
-        참조하시기 바랍니다.
+        title="이메일 주소 절을 포함한 OSMF 개인정보처리방침">개인정보처리방침</a>을 참조하시기 바랍니다.
       display name: '표시 이름:'
       display name description: 공개적으로 표시되는 사용자 이름입니다. 나중에 환경 설정에서 바꿀 수 있습니다.
       external auth: '제3자 인증:'
@@ -2481,7 +2484,7 @@ ko:
         gps: 공개 GPS 궤적
         overlays: 지도 문제를 해결하기 위해 오버레이를 활성화
         title: 레이어
-      copyright: © <a href='%{copyright_url}'>오픈스트리트맵 기여자</a>
+      copyright: © <a href='%{copyright_url}'>OpenStreetMap 기여자</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>기부하기</a>
       terms: <a href='%{terms_url}' target='_blank'>웹 사이트 및 API 약관</a>
     site:
@@ -2504,7 +2507,7 @@ ko:
       new:
         intro: 실수했거나 없는 무언가를 발견했나요? 다른 매퍼에게 알려주어 고칠 수 있게 해주세요. 마커를 올바른 위치로 이동하고, 참고를
           남겨 문제를 설명해주세요.
-        advice: 노트는 공개되어 지도 업데이트에 쓰일 수 있으므로 개인 정보 또는 저작권이 있는 지도나 디렉터리 리스팅의 정보를 입력하지
+        advice: 노트는 공개되어 지도 업데이트에 쓰일 수 있으므로 개인정보 또는 저작권이 있는 지도나 디렉터리 리스팅의 정보를 입력하지
           마십시오.
         add: 참고 추가
       show:
index 00f64c6a363308f91bc8777e86e37a060bae4485..f7c9a4ed481c408da77a28cb2b275911d475cdc8 100644 (file)
@@ -171,6 +171,9 @@ lt:
     remote:
       name: nuotoliniu valdymu
       description: nuotolinį valdymą (JOSM arba Merkaartor)
+  auth:
+    providers:
+      google: Google
   api:
     notes:
       comment:
index 840be976d237c29f012ed1361e8bc9aeecbe1140..961892823b2766c056f6c3cf06d0d82784ebb6ca 100644 (file)
@@ -228,6 +228,15 @@ pl:
     remote:
       name: Zewnętrzny edytor
       description: zewnętrznym edytorze (JOSM lub Merkaartor)
+  auth:
+    providers:
+      none: Brak
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipedia
   api:
     notes:
       comment:
@@ -524,7 +533,7 @@ pl:
           apron: Płyta postojowa
           gate: Bramka
           hangar: Hangar
-          helipad: Helipad
+          helipad: Lądowisko dla helikopterów
           holding_position: Punkt oczekiwania
           parking_position: Miejsce parkingowe
           runway: Pas startowy
@@ -570,7 +579,7 @@ pl:
           food_court: Współdzielone miejsce do spożywania posiłków
           fountain: Fontanna
           fuel: Stacja paliw
-          gambling: Hazard
+          gambling: Salon pachinko/bingo
           grave_yard: Cmentarz przykościelny
           grit_bin: Pojemnik na piasek
           hospital: Szpital
@@ -653,10 +662,10 @@ pl:
           defibrillator: Defibrylator
           landing_site: Miejsce awaryjnego lądowania
           phone: Telefon alarmowy
-          water_tank: Awaryjny Zbiornik Wody
-          "yes": Awaryjny
+          water_tank: Awaryjny zbiornik wody
+          "yes": Ratownictwo
         highway:
-          abandoned: Porzucona droga
+          abandoned: Zaniedbana droga
           bridleway: Droga dla koni
           bus_guideway: Droga dla autobusów
           bus_stop: Przystanek autobusowy
@@ -738,7 +747,7 @@ pl:
           brownfield: Grunty poprzemysłowe
           cemetery: Cmentarz
           commercial: Obszar handlowo-usługowy
-          conservation: Ochrona środowiska
+          conservation: Rezerwat
           construction: Teren budowy
           farm: Farma
           farmland: Grunty rolne
@@ -759,7 +768,7 @@ pl:
           reservoir: Sztuczny zbiornik wodny
           reservoir_watershed: Zbiornik wodny
           residential: Zabudowa mieszkalna
-          retail: Handel detaliczny
+          retail: Teren handlu detalicznego
           road: Obszar drogowy
           village_green: Nawsie
           vineyard: Winnica
@@ -826,14 +835,14 @@ pl:
           water_tower: Wieża ciśnień
           water_well: Studnia
           water_works: Wodociągi
-          windmill: Młyn wiatrowy
+          windmill: Wiatrak
           works: Fabryka
           "yes": Konstrukcja
         military:
           airfield: Lotnisko wojskowe
           barracks: Koszary
           bunker: Bunkier
-          "yes": Wojskowy
+          "yes": Obiekt wojskowy
         mountain_pass:
           "yes": Przełęcz
         natural:
@@ -863,7 +872,7 @@ pl:
           ridge: Grzbiet
           rock: Skała
           saddle: Przełęcz
-          sand: Piasek
+          sand: Piaski
           scree: Piarg
           scrub: Zarośla
           spring: Źródło wodne
@@ -888,7 +897,7 @@ pl:
           insurance: Biuro ubezpieczeń
           it: Biuro firmy informatycznej
           lawyer: Prawnik
-          ngo: Biuro organizacji pozarządowych
+          ngo: Biuro organizacji pozarządowej
           telecommunication: Urząd telekomunikacji
           travel_agent: Biuro podróży
           "yes": Biuro
@@ -897,7 +906,7 @@ pl:
           city: Miasto
           city_block: Kwartał
           country: Kraj
-          county: Powiat
+          county: Hrabstwo
           farm: Farma
           hamlet: Osada
           house: Dom
@@ -928,12 +937,12 @@ pl:
           halt: Przystanek kolejowy
           junction: Węzeł kolejowy
           level_crossing: Przejazd kolejowy
-          light_rail: Lekka kolej
-          miniature: Mini kolej
-          monorail: Kolej jednoszynowa
-          narrow_gauge: Kolej wąskotorowa
+          light_rail: Tor kolei miejskiej
+          miniature: Tor minikolejki
+          monorail: Tor kolei jednoszynowej
+          narrow_gauge: Tor kolei wąskotorowej
           platform: Peron
-          preserved: Kolej zabytkowa
+          preserved: Tor kolei zabytkowej
           proposed: Planowana linia kolejowa
           spur: Bocznica kolejowa
           station: Stacja kolejowa
@@ -941,7 +950,7 @@ pl:
           subway: Metro
           subway_entrance: Wejście na stację metra
           switch: Zwrotnica
-          tram: Tory tramwajowe
+          tram: Tor tramwajowy
           tram_stop: Przystanek tramwajowy
         shop:
           alcohol: Sklep monopolowy
@@ -957,7 +966,7 @@ pl:
           butcher: Sklep mięsny
           car: Sklep samochodowy
           car_parts: Sklep z częściami samochodowymi
-          car_repair: Naprawa samochodów
+          car_repair: Warsztat samochodowy
           carpet: Sklep z dywanami
           charity: Sklep charytatywny
           chemist: Drogeria
@@ -983,12 +992,12 @@ pl:
           furniture: Sklep meblowy
           gallery: Galeria
           garden_centre: Centrum ogrodnicze
-          general: Sklep ogólny
+          general: Sklep wielobranżowy
           gift: Sklep z pamiątkami
           greengrocer: Warzywniak
           grocery: Sklep spożywczy
           hairdresser: Fryzjer
-          hardware: Sklep ze sprzętem
+          hardware: Sklep z narzędziami
           hifi: Sklep ze sprzętem hi-fi
           houseware: Sklep z artykułami gospodarstwa domowego
           interior_decoration: Sklep z dekoracją wnętrz
@@ -1003,7 +1012,7 @@ pl:
           mobile_phone: Sklep z telefonami komórkowymi
           motorcycle: Sklep z motocyklami
           music: Sklep muzyczny
-          newsagent: Kiosk
+          newsagent: Sklep z prasą
           optician: Optyk
           organic: Sklep z produktami organicznymi
           outdoor: Sklep turystyczny
@@ -1012,8 +1021,8 @@ pl:
           pet: Sklep zoologiczny
           pharmacy: Apteka
           photo: Sklep fotograficzny
-          seafood: Owoce morza
-          second_hand: Lumpeks
+          seafood: Sklep z owocami morza
+          second_hand: Sklep z rzeczami używanymi
           shoes: Sklep obuwniczy
           sports: Sklep sportowy
           stationery: Sklep papierniczy
@@ -1063,8 +1072,8 @@ pl:
           ditch: Rów
           dock: Basen portowy
           drain: Rów odpływowy
-          lock: Zastawka
-          lock_gate: Śluza
+          lock: Śluza
+          lock_gate: Wrota śluzy
           mooring: Kotwicowisko
           rapids: Katarakty
           river: Rzeka
@@ -1072,7 +1081,7 @@ pl:
           wadi: Starorzecze
           waterfall: Wodospad
           weir: Jaz
-          "yes": Szlak wodny
+          "yes": Ciek
       admin_levels:
         level2: Granica kraju
         level4: Granica
@@ -1768,10 +1777,10 @@ pl:
           cycleway_regional: Droga rowerowa znaczenia regionalnego
           cycleway_local: Droga rowerowa znaczenia lokalnego
           footway: Droga dla pieszych
-          rail: Tory kolejowe
+          rail: Tor kolejowy
           subway: Metro
           tram:
-          - Lekka kolej
+          - Kolej miejska
           - tramwaj
           cable:
           - Kolej linowa
@@ -2657,6 +2666,16 @@ pl:
         out: Oddal
       locate:
         title: Wyświetl dla mojego aktualnego położenia
+        metersPopup:
+          one: Jesteś w promieniu 1 metra od tego punktu
+          few: Jesteś w promieniu %{count} metrów od tego punktu
+          many: Jesteś w promieniu %{count} metrów od tego punktu
+          other: Jesteś w promieniu %{count} metra od tego punktu
+        feetPopup:
+          one: Jesteś w promieniu 1 stopy od tego punktu
+          few: Jesteś w promieniu %{count} stóp od tego punktu
+          many: Jesteś w promieniu %{count} stóp od tego punktu
+          other: Jesteś w promieniu %{count} stopy od tego punktu
       base:
         standard: Podstawowa
         cycle_map: Rowerowa
@@ -2672,6 +2691,11 @@ pl:
       copyright: © <a href='%{copyright_url}'>autorzy OpenStreetMap</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Przekaż darowiznę</a>
       terms: <a href='%{terms_url}' target='_blank'>Warunki użytkowania</a>
+      thunderforest: Kafelki dzięki uprzejmości <a href='%{thunderforest_url}' target='_blank'>Andy'ego
+        Allana</a>
+      hotosm: 'Styl kafelków: <a href=''%{hotosm_url}'' target=''_blank''>Humanitarian
+        OpenStreetMap Team</a>. Hosting: <a href=''%{osmfrance_url}'' target=''_blank''>OpenStreetMap
+        France</a>'
     site:
       edit_tooltip: Edytuje mapę
       edit_disabled_tooltip: Przybliż mapę, aby ją edytować
index 25158b2fe1e8c037f6f0fcc6b5df1c7d6bb08af5..16c21588e20ad94279fb703c46c2e2085949cf9b 100644 (file)
@@ -89,6 +89,7 @@ pt-BR:
       diary_comment: Comentário do diário
       diary_entry: Publicação do diário
       friend: Amigo
+      issue: Problema
       language: Idioma
       message: Mensagem
       node: Nó
@@ -105,6 +106,7 @@ pt-BR:
       relation: Relação
       relation_member: Membros da relação
       relation_tag: Etiqueta de relação
+      report: Relatório
       session: Sessão
       trace: Trilha
       tracepoint: Ponto de trilha
@@ -204,6 +206,15 @@ pt-BR:
     remote:
       name: Controle Rrmoto
       description: Controle remoto (JOSM ou Merkaartor)
+  auth:
+    providers:
+      none: Nenhum
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipédia
   api:
     notes:
       comment:
@@ -2642,6 +2653,12 @@ pt-BR:
         out: Afastar
       locate:
         title: Exibir Minha Localização
+        metersPopup:
+          one: Você está dentro de um metro deste ponto
+          other: Você está dentro %{count} metros deste ponto
+        feetPopup:
+          one: Você está dentro de um pé deste ponto
+          other: Você está dentro %{count} pés deste ponto
       base:
         standard: Padrão
         cycle_map: Ciclístico
@@ -2657,6 +2674,11 @@ pt-BR:
       copyright: © <a href='%{copyright_url}'>contribuidores do OpenStreetMap</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Fazer uma doação</a>
       terms: <a href='%{terms_url}' target='_blank'>Termos do site e da API</a>
+      thunderforest: Mosaicos cortesia de <a href='%{thunderforest_url}' target='_blank'>Andy
+        Allan</a>
+      hotosm: Estilo de ladrilhos por <a href='%{hotosm_url}' target='_blank'>Equipe
+        de Humanitarian OpenStreetMap</a> hospedado por <a href='%{osmfrance_url}'
+        target='_blank'>OpenStreetMap França</a>
     site:
       edit_tooltip: Edite o mapa
       edit_disabled_tooltip: Aproxime para editar o mapa
index 7c2f014a8954b0120396048c177cbc2970fc3a1c..c9b473c0f0d69bb7549f4eab7bf412956688ac72 100644 (file)
@@ -1381,9 +1381,9 @@ pt-PT:
         em contacto com algumas %{people_mapping_nearby_link}?
       people_mapping_nearby: pessoas que mapeiam perto de ti
     reply:
-      wrong_user: Está autenticado como o utilizador `%{user}' mas a mensagem que
-        pediu para responder não foi enviada para esse utilizador. Por favor entre
-        na conta de utilizador correta para responder.
+      wrong_user: Estás autenticado como `%{user}', mas a mensagem a que pretendes
+        responder não foi enviada para esse utilizador. Por favor, entra na conta
+        correta para poderes responder.
     show:
       title: Ler mensagem
       from: De
@@ -1394,9 +1394,9 @@ pt-PT:
       destroy_button: Eliminar
       back: Voltar
       to: Para
-      wrong_user: Está autenticado com a conta `%{user}', mas a mensagem que pediu
-        para ler não foi enviada por, ou para, essa conta de utilizador. Por favor,
-        entre na conta de utilizador correta para ler a mensagem.
+      wrong_user: Estás autenticado como `%{user}', mas a mensagem que pediste para
+        ler não foi enviada por ou para esse utilizador. Por favor, entra na conta
+        correta para poderes ler a mensagem.
     sent_message_summary:
       destroy_button: Eliminar
     mark:
@@ -1408,73 +1408,71 @@ pt-PT:
     about:
       next: Seguinte
       copyright_html: <span>&copy;</span>Colaboradores<br>do OpenStreetMap
-      used_by_html: O %{name} fornece dados a milhares de sítios na internet, aplicações
+      used_by_html: O %{name} fornece dados a milhares de sítios na Internet, aplicações
         de telemóveis e outros dispositivos
-      lede_text: O OpenStreetMap é desenvolvido por uma comunidade voluntária de mapeadores
+      lede_text: O OpenStreetMap é desenvolvido por uma comunidade de mapeadores voluntários
         que contribuem e mantêm atualizados os dados sobre estradas, trilhos, cafés,
         estações ferroviárias e muito mais por todo o mundo.
       local_knowledge_title: Conhecimento Local
       local_knowledge_html: O OpenStreetMap valoriza o conhecimento local. Os colaboradores
-        utilizam fotografias aéreas, dispositivos GPS, e mapas do terreno para verificar
+        utilizam fotografias aéreas, dispositivos de GPS e mapas do terreno para verificar
         que a informação no OpenStreetMap é rigorosa e atualizada.
-      community_driven_title: Dirigido pela Comunidade
+      community_driven_title: Desenvolvido pela Comunidade
       community_driven_html: |-
-        A comunidade do OpenStreetMap é diversa, apaixonada, e aumenta diariamente.
-        Entre os nossos colaboradores encontra-se cartógrafos entusiastas, profissionais das áreas de sistemas geográficos, engenheiros que utilizam os servidores do OSM, voluntários a mapear áreas afetadas por grandes desastres, e muitos mais.
-        Para saber mais sobre a nossa comunidade, veja:
+        A comunidade do OpenStreetMap é diversa, apaixonada e cresce diariamente.
+        Entre os nossos colaboradores, encontram-se cartógrafos entusiásticos, profissionais das áreas de sistemas geográficos, engenheiros que utilizam os servidores do OSM, voluntários que mapeiam áreas afetadas por grandes desastre, e muitos mais.
+        Para saber mais sobre a nossa comunidade, consulte:
         <a href='https://blog.openstreetmap.org'>Blogue do OpenStreetMap</a>,
         <a href='%{diary_path}'>diários dos utilizadores</a>,
         <a href='https://blogs.openstreetmap.org/'>blogues da comunidade</a>, e o sítio da <a href='https://www.osmfoundation.org/'>Fundação OSM</a>.
       open_data_title: Dados Abertos
       open_data_html: |-
-        O OpenStreetMap é constituído por <i>dados abertos</i>: qualquer
-        pessoa tem a liberdade de usar os dados para qualquer fim desde
-        credite a autoria do OpenStreetMap e os seus colaboradores.
-        Se você alterar os dados ou criar algo com os dados, pode distribuir
-        o produto resultante apenas sob a mesma licença. Consulte <a href='%{copyright_path}'>a página sobre direitos de autor e licenciamento</a> para mais informações.
+        O OpenStreetMap é constituído por <i>dados abertos</i>: qualquer pessoa tem a liberdade de usar os dados para qualquer fim desde que dê os devidos créditos ao OpenStreetMap e aos seus colaboradores.
+        Se alterar os dados ou criar algo com base nesses dados, só pode distribuir o produto resultante sob a mesma licença. Consulte <a href='%{copyright_path}'>a página sobre direitos de autor e licenciamento</a> para mais informações.
       legal_title: Termos legais
-      legal_1_html: "Este ''site'' e muitos outros serviços relacionados são formalmente
-        geridos pela \n<a href='https://osmfoundation.org/'>Fundação OpenStreetMap</a>
-        (OSMF) \nem nome da comunidade. A utilização de todos os serviços operados
-        pela OSMF estão sujeitos\naos nossos <a href=\"https://wiki.osmfoundation.org/wiki/Terms_of_Use\">Termos
-        de Utilização</a>, <a href=\"https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy\">Políticas
-        de Utilização Aceitáveis</a> e a nossa <a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\">Política
-        de Privacidade</a>"
+      legal_1_html: Este sítio e muitos outros serviços relacionados são formalmente
+        geridos pela <a href='https://osmfoundation.org/'>Fundação OpenStreetMap</a>
+        (OSMF) em nome da comunidade. A utilização de todos os serviços operados pela
+        OSMF estão sujeitos aos nossos <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use">Termos
+        de Utilização</a>, <a href="https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">Políticas
+        de Utilização Aceitáveis</a> e à nossa <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">Política
+        de Privacidade</a>.
       legal_2_html: |-
-        Se tiver perguntas sobre licenciamento, direitos de autor ou outras questões legais <a href='https://osmfoundation.org/Contact'>contacte a OSMF</a>, por favor.
+        Se tiver perguntas sobre o licenciamento, direitos de autor ou outras questões legais, por favor, <a href='https://osmfoundation.org/Contact'>contacte a OSMF</a>.
         <br>
         O OpenStreetMap, o logótipo da lupa e o 'Estado do Mapa' são <a href="https://wiki.osmfoundation.org/wiki/Trademark_Policy">marcas registadas da OSMF</a>.
       partners_title: Parceiros
     copyright:
       foreign:
         title: Sobre esta tradução
-        html: Caso haja um conflito entre esta página traduzida e %{english_original_link},
+        html: Se houver um conflito entre esta página traduzida e %{english_original_link},
           a página em inglês tem prevalência
         english_link: o original em inglês
       native:
         title: Sobre esta página
-        html: Está a ver a versão em Inglês da página de direitos de autor. Pode voltar
+        html: Está a ver a versão em inglês da página de direitos de autor. Pode voltar
           à %{native_link} desta página ou, se preferir, %{mapping_link}.
-        native_link: Versão em português
+        native_link: Versão em português europeu
         mapping_link: começar a mapear
       legal_babble:
-        title_html: Licença e Direitos de autor
+        title_html: Licença e Direitos de Autor
         intro_1_html: |-
           O OpenStreetMap<sup><a href="#trademarks">&reg;</a></sup> é disponibilizado em <i>dados abertos</i>, sob a licença <a
           href="https://opendatacommons.org/licenses/odbl/">Open Data
           Commons Open Database License</a> (ODbL) pela  <a
           href="https://osmfoundation.org/">Fundação OpenStreetMap</a> (OSMF).
         intro_2_html: Tem o direito de copiar, distribuir, transmitir e adaptar os
-          nossos dados, desde que atribua a autoria do OpenStreetMap e os seus contribuidores.
-          Se alterar ou adicionar conteúdo dos nossos dados, pode distribuir o resultado
-          apenas com a mesma licença. O <a href="https://opendatacommons.org/licenses/odbl/1.0/">texto
+          nossos dados, desde que atribua os devidos créditos ao OpenStreetMap e aos
+          seus contribuidores. Se alterar ou adicionar conteúdo dos nossos dados,
+          pode distribuir o resultado apenas com a mesma licença. O <a href="https://opendatacommons.org/licenses/odbl/1.0/">texto
           legal completo</a> explica os seus direitos e responsabilidades.
         intro_3_html: A cartografia nas nossas telas de mapas (imagens dos mapas)
           e a nossa documentação são disponibilizadas sob a licença <a href="https://creativecommons.org/licenses/by-sa/2.0/deed.pt">Creative
           Commons - Atribuição-CompartilhaIgual 2.0 (CC BY-SA)</a>.
         credit_title_html: Como creditar o OpenStreetMap
-        credit_1_html: É necessário indicar &ldquo;&copy; contribuidores do OpenStreetMap&rdquo;
-          ou caso seja mais adequado em inglês &ldquo;&copy; OpenStreetMap contributors&rdquo;.
+        credit_1_html: Pedimos que use os créditos &ldquo;&copy; contribuidores do
+          OpenStreetMap&rdquo; ou, se for mais adequado, em inglês &ldquo;&copy; OpenStreetMap
+          contributors&rdquo;.
         credit_2_html: Também tem de indicar claramente que os dados estão disponíveis
           sob a Open Database License (ODbL), e caso utilize as telas de mapas (imagens
           dos mapas), que a cartografia é disponibilizada sob a licença CC-BY-SA.
index 4d0f28d3418cc5e05e05b89c2443b6583718b712..ff6e590b72d9f77c3445b43d17d5988168dd8d8b 100644 (file)
@@ -36,6 +36,7 @@
 # Author: Sendelbach
 # Author: Sertion
 # Author: Shirayuki
+# Author: Technic2
 # Author: The real emj
 # Author: Tor.klingberg
 # Author: Ufred
@@ -84,6 +85,7 @@ sv:
       diary_comment: Dagbokskommentar
       diary_entry: Dagboksinlägg
       friend: Vän
+      issue: Problem
       language: Språk
       message: Meddelande
       node: Nod
@@ -100,6 +102,7 @@ sv:
       relation: Relation
       relation_member: Relationsmedlem
       relation_tag: Relationstagg
+      report: Rapportera
       session: Session
       trace: Spår
       tracepoint: Spårpunkt
@@ -198,6 +201,15 @@ sv:
     remote:
       name: Fjärrstyrning
       description: Fjärrstyrning (JOSM eller Merkaartor)
+  auth:
+    providers:
+      none: Ingen
+      openid: OpenID
+      google: Google
+      facebook: Facebook
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: Wikipedia
   api:
     notes:
       comment:
@@ -2627,6 +2639,12 @@ sv:
         out: Zooma ut
       locate:
         title: Visa min position
+        metersPopup:
+          one: Du är inom en meter av denna punkt
+          other: Du är inom %{count} meter av denna punkt
+        feetPopup:
+          one: Du är inom en fot av denna punkt
+          other: Du är inom %{count} fot av denna punkt
       base:
         standard: Standard
         cycle_map: Cykelkarta
@@ -2642,6 +2660,11 @@ sv:
       copyright: © <a href='%{copyright_url}'>OpenStreetMaps bidragsgivare</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Donera</a>
       terms: <a href="%{terms_url}">Hemsidan och API-villkor</a>
+      thunderforest: Rutor av <a href='%{thunderforest_url}' target='_blank'>Andy
+        Allan</a>
+      hotosm: Rututseende av <a href='%{hotosm_url}' target='_blank'>Humanitarian
+        OpenStreetMap Team</a> som förvaltas av <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap
+        Frankrike</a>
     site:
       edit_tooltip: Redigera kartan
       edit_disabled_tooltip: Zooma in för att redigera kartan
index 3573b7cfe32c25848a69f2b319d33949888b5ade..9297d1f91ce356ed0554a041ab5726d80a17cf49 100644 (file)
@@ -1,6 +1,7 @@
 # Messages for Simplified Chinese (中文(简体)‎)
 # Exported from translatewiki.net
 # Export driver: phpyaml
+# Author: 500000000006城
 # Author: A Chinese Wikipedian
 # Author: A Retired User
 # Author: Abijeet Patro
@@ -92,6 +93,7 @@ zh-CN:
       diary_comment: 日记评论
       diary_entry: 日记条目
       friend: 朋友
+      issue: 问题
       language: 语言
       message: 消息
       node: 节点
@@ -211,6 +213,12 @@ zh-CN:
   auth:
     providers:
       none: 无
+      openid: 开放式身份验证
+      google: 谷歌
+      facebook: 脸书
+      windowslive: Windows Live
+      github: GitHub
+      wikipedia: 维基百科
   api:
     notes:
       comment:
index 581297313a0dcc7f23e1c1db7403595e80378785..410fe578a51a8483eb7cca6180a652615ebaf610 100644 (file)
@@ -4,7 +4,7 @@ require "capybara/poltergeist"
 # Work around weird debian/ubuntu phantomjs
 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=817277
 # https://github.com/ariya/phantomjs/issues/14376
-ENV["QT_QPA_PLATFORM"] = "phantom" if IO.popen(["phantomjs", "--version"], :err => :close).read.empty?
+ENV["QT_QPA_PLATFORM"] = "offscreen" if IO.popen(["phantomjs", "--version"], :err => :close).read.empty?
 
 ActiveSupport.on_load(:action_dispatch_system_test_case) do
   ActionDispatch::SystemTesting::Server.silence_puma = true
index 58cd4d7bfb6b5568fddd7cea51ff15fac4e7e45c..489da8755b551c9033efabaf5d9c9ac400af4f13 100644 (file)
@@ -29,14 +29,14 @@ L.Map.mergeOptions({
 
 L.Map.ContextMenu = L.Handler.extend({
     _touchstart: L.Browser.msPointer ? 'MSPointerDown' : L.Browser.pointer ? 'pointerdown' : 'touchstart',
-    
+
     statics: {
         BASE_CLS: 'leaflet-contextmenu'
     },
-    
+
     initialize: function (map) {
         L.Handler.prototype.initialize.call(this, map);
-        
+
         this._items = [];
         this._visible = false;
 
@@ -71,7 +71,6 @@ L.Map.ContextMenu = L.Handler.extend({
         this._map.on({
             contextmenu: this._show,
             mousedown: this._hide,
-            movestart: this._hide,
             zoomstart: this._hide
         }, this);
     },
@@ -90,7 +89,6 @@ L.Map.ContextMenu = L.Handler.extend({
         this._map.off({
             contextmenu: this._show,
             mousedown: this._hide,
-            movestart: this._hide,
             zoomstart: this._hide
         }, this);
     },
@@ -320,12 +318,24 @@ L.Map.ContextMenu = L.Handler.extend({
                 return;
             }
 
+            var map = me._map,
+                containerPoint = me._showLocation.containerPoint,
+                layerPoint = map.containerPointToLayerPoint(containerPoint),
+                latlng = map.layerPointToLatLng(layerPoint),
+                relatedTarget = me._showLocation.relatedTarget,
+                data = {
+                  containerPoint: containerPoint,
+                  layerPoint: layerPoint,
+                  latlng: latlng,
+                  relatedTarget: relatedTarget
+                };
+
             if (hideOnSelect) {
                 me._hide();
             }
 
             if (func) {
-                func.call(context || map, me._showLocation);
+                func.call(context || map, data);
             }
 
             me._map.fire('contextmenu.select', {
@@ -361,13 +371,9 @@ L.Map.ContextMenu = L.Handler.extend({
     _showAtPoint: function (pt, data) {
         if (this._items.length) {
             var map = this._map,
-            layerPoint = map.containerPointToLayerPoint(pt),
-            latlng = map.layerPointToLatLng(layerPoint),
             event = L.extend(data || {}, {contextmenu: this});
 
             this._showLocation = {
-                latlng: latlng,
-                layerPoint: layerPoint,
                 containerPoint: pt
             };
 
index a845eb6aeeccd94d1cd79a2ac770d0c83c06f442..ab74e48b4f2974643f0fcb5530ce946a1c6256dc 100644 (file)
@@ -1,6 +1,6 @@
 /* @preserve
- * Leaflet 1.5.1+build.2e3e0ff, a JS library for interactive maps. http://leafletjs.com
- * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade
+ * Leaflet 1.6.0, a JS library for interactive maps. http://leafletjs.com
+ * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade
  */
 
 (function (global, factory) {
@@ -9,7 +9,7 @@
        (factory((global.L = {})));
 }(this, (function (exports) { 'use strict';
 
-var version = "1.5.1+build.2e3e0ffb";
+var version = "1.6.0";
 
 /*
  * @namespace Util
@@ -127,8 +127,8 @@ function falseFn() { return false; }
 // @function formatNum(num: Number, digits?: Number): Number
 // Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default.
 function formatNum(num, digits) {
-       digits = (digits === undefined ? 6 : digits);
-       return +(Math.round(num + ('e+' + digits)) + ('e-' + digits));
+       var pow = Math.pow(10, (digits === undefined ? 6 : digits));
+       return Math.round(num * pow) / pow;
 }
 
 // @function trim(str: String): String
@@ -1906,7 +1906,7 @@ var msPointer = !window.PointerEvent && window.MSPointerEvent;
 
 // @property pointer: Boolean
 // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).
-var pointer = !!(window.PointerEvent || msPointer);
+var pointer = !webkit && !!(window.PointerEvent || msPointer);
 
 // @property touch: Boolean
 // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).
@@ -1927,6 +1927,23 @@ var mobileGecko = mobile && gecko;
 // `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%.
 var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;
 
+// @property passiveEvents: Boolean
+// `true` for browsers that support passive events.
+var passiveEvents = (function () {
+       var supportsPassiveOption = false;
+       try {
+               var opts = Object.defineProperty({}, 'passive', {
+                       get: function () {
+                               supportsPassiveOption = true;
+                       }
+               });
+               window.addEventListener('testPassiveEventSupport', falseFn, opts);
+               window.removeEventListener('testPassiveEventSupport', falseFn, opts);
+       } catch (e) {
+               // Errors can safely be ignored since this is only a browser support test.
+       }
+       return supportsPassiveOption;
+});
 
 // @property canvas: Boolean
 // `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).
@@ -1989,6 +2006,7 @@ var Browser = (Object.freeze || Object)({
        mobileOpera: mobileOpera,
        mobileGecko: mobileGecko,
        retina: retina,
+       passiveEvents: passiveEvents,
        canvas: canvas,
        svg: svg,
        vml: vml
@@ -2183,8 +2201,8 @@ function addDoubleTapListener(obj, handler, id) {
        obj[_pre + _touchend + id] = onTouchEnd;
        obj[_pre + 'dblclick' + id] = handler;
 
-       obj.addEventListener(_touchstart, onTouchStart, false);
-       obj.addEventListener(_touchend, onTouchEnd, false);
+       obj.addEventListener(_touchstart, onTouchStart, passiveEvents ? {passive: false} : false);
+       obj.addEventListener(_touchend, onTouchEnd, passiveEvents ? {passive: false} : false);
 
        // On some platforms (notably, chrome<55 on win10 + touchscreen + mouse),
        // the browser doesn't fire touchend/pointerup events but does fire
@@ -2200,8 +2218,8 @@ function removeDoubleTapListener(obj, id) {
            touchend = obj[_pre + _touchend + id],
            dblclick = obj[_pre + 'dblclick' + id];
 
-       obj.removeEventListener(_touchstart, touchstart, false);
-       obj.removeEventListener(_touchend, touchend, false);
+       obj.removeEventListener(_touchstart, touchstart, passiveEvents ? {passive: false} : false);
+       obj.removeEventListener(_touchend, touchend, passiveEvents ? {passive: false} : false);
        if (!edge) {
                obj.removeEventListener('dblclick', dblclick, false);
        }
@@ -2676,7 +2694,7 @@ function addOne(obj, type, fn, context) {
        } else if ('addEventListener' in obj) {
 
                if (type === 'mousewheel') {
-                       obj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false);
+                       obj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false);
 
                } else if ((type === 'mouseenter') || (type === 'mouseleave')) {
                        handler = function (e) {
@@ -2721,7 +2739,7 @@ function removeOne(obj, type, fn, context) {
        } else if ('removeEventListener' in obj) {
 
                if (type === 'mousewheel') {
-                       obj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false);
+                       obj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false);
 
                } else {
                        obj.removeEventListener(
@@ -4611,20 +4629,23 @@ var Map = Evented.extend({
                        }
                }, this);
 
-               this.on('load moveend', function () {
-                       var c = this.getCenter(),
-                           z = this.getZoom();
-                       setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));
-               }, this);
+               this.on('load moveend', this._animMoveEnd, this);
 
                this._on('unload', this._destroyAnimProxy, this);
        },
 
        _destroyAnimProxy: function () {
                remove(this._proxy);
+               this.off('load moveend', this._animMoveEnd, this);
                delete this._proxy;
        },
 
+       _animMoveEnd: function () {
+               var c = this.getCenter(),
+                   z = this.getZoom();
+               setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));
+       },
+
        _catchTransitionEnd: function (e) {
                if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {
                        this._onZoomTransitionEnd();
@@ -4674,6 +4695,7 @@ var Map = Evented.extend({
                        addClass(this._mapPane, 'leaflet-zoom-anim');
                }
 
+               // @section Other Events
                // @event zoomanim: ZoomAnimEvent
                // Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.
                this.fire('zoomanim', {
@@ -5307,7 +5329,7 @@ var Layers = Control.extend({
 
 
 // @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)
-// Creates an attribution control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.
+// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.
 var layers = function (baseLayers, overlays, options) {
        return new Layers(baseLayers, overlays, options);
 };
@@ -7653,7 +7675,10 @@ var Marker = Layer.extend({
        },
 
        _setPos: function (pos) {
-               setPosition(this._icon, pos);
+
+               if (this._icon) {
+                       setPosition(this._icon, pos);
+               }
 
                if (this._shadow) {
                        setPosition(this._shadow, pos);
@@ -7665,7 +7690,9 @@ var Marker = Layer.extend({
        },
 
        _updateZIndex: function (offset) {
-               this._icon.style.zIndex = this._zIndex + offset;
+               if (this._icon) {
+                       this._icon.style.zIndex = this._zIndex + offset;
+               }
        },
 
        _animateZoom: function (opt) {
@@ -7850,7 +7877,7 @@ var Path = Layer.extend({
                setOptions(this, style);
                if (this._renderer) {
                        this._renderer._updateStyle(this);
-                       if (this.options.stroke && style.hasOwnProperty('weight')) {
+                       if (this.options.stroke && style && style.hasOwnProperty('weight')) {
                                this._updateBounds();
                        }
                }
@@ -7920,9 +7947,13 @@ var CircleMarker = Path.extend({
        // @method setLatLng(latLng: LatLng): this
        // Sets the position of a circle marker to a new location.
        setLatLng: function (latlng) {
+               var oldLatLng = this._latlng;
                this._latlng = toLatLng(latlng);
                this.redraw();
-               return this.fire('move', {latlng: this._latlng});
+
+               // @event move: Event
+               // Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.
+               return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});
        },
 
        // @method getLatLng(): LatLng
@@ -8669,6 +8700,9 @@ var GeoJSON = FeatureGroup.extend({
         * @option coordsToLatLng: Function = *
         * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.
         * The default is the `coordsToLatLng` static method.
+        *
+        * @option markersInheritOptions: Boolean = false
+        * Whether default Markers for "Point" type Features inherit from group options.
         */
 
        initialize: function (geojson, options) {
@@ -8718,9 +8752,13 @@ var GeoJSON = FeatureGroup.extend({
                return this.addLayer(layer);
        },
 
-       // @method resetStyle( <Path> layer ): this
+       // @method resetStyle( <Path> layer? ): this
        // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.
+       // If `layer` is omitted, the style of all features in the current layer is reset.
        resetStyle: function (layer) {
+               if (layer === undefined) {
+                       return this.eachLayer(this.resetStyle, this);
+               }
                // reset any custom styles
                layer.options = extend({}, layer.defaultOptions);
                this._setLayerStyle(layer, this.options.style);
@@ -8768,12 +8806,12 @@ function geometryToLayer(geojson, options) {
        switch (geometry.type) {
        case 'Point':
                latlng = _coordsToLatLng(coords);
-               return pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng);
+               return _pointToLayer(pointToLayer, geojson, latlng, options);
 
        case 'MultiPoint':
                for (i = 0, len = coords.length; i < len; i++) {
                        latlng = _coordsToLatLng(coords[i]);
-                       layers.push(pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng));
+                       layers.push(_pointToLayer(pointToLayer, geojson, latlng, options));
                }
                return new FeatureGroup(layers);
 
@@ -8806,6 +8844,12 @@ function geometryToLayer(geojson, options) {
        }
 }
 
+function _pointToLayer(pointToLayerFn, geojson, latlng, options) {
+       return pointToLayerFn ?
+               pointToLayerFn(geojson, latlng) :
+               new Marker(latlng, options && options.markersInheritOptions && options);
+}
+
 // @function coordsToLatLng(coords: Array): LatLng
 // Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)
 // or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.
@@ -8889,6 +8933,7 @@ var PointToGeoJSON = {
 };
 
 // @namespace Marker
+// @section Other methods
 // @method toGeoJSON(precision?: Number): Object
 // `precision` is the number of decimal places for coordinates.
 // The default value is 6 places.
@@ -9322,6 +9367,7 @@ var VideoOverlay = ImageOverlay.extend({
 
                addClass(vid, 'leaflet-image-layer');
                if (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); }
+               if (this.options.className) { addClass(vid, this.options.className); }
 
                vid.onselectstart = falseFn;
                vid.onmousemove = falseFn;
@@ -9379,9 +9425,12 @@ function videoOverlay(video, bounds, options) {
  * @example
  *
  * ```js
- * var element = '<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image xlink:href="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" height="200" width="200"/></svg>',
- *              elementBounds = [ [ 32, -130 ], [ 13, -100 ] ];
- * L.svgOverlay(element, elementBounds).addTo(map);
+ * var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
+ * svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg");
+ * svgElement.setAttribute('viewBox', "0 0 200 200");
+ * svgElement.innerHTML = '<rect width="200" height="200"/><rect x="75" y="23" width="50" height="50" style="fill:red"/><rect x="75" y="123" width="50" height="50" style="fill:#0013ff"/>';
+ * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];
+ * L.svgOverlay(svgElement, svgElementBounds).addTo(map);
  * ```
  */
 
@@ -9391,6 +9440,7 @@ var SVGOverlay = ImageOverlay.extend({
 
                addClass(el, 'leaflet-image-layer');
                if (this._zoomAnimated) { addClass(el, 'leaflet-zoom-animated'); }
+               if (this.options.className) { addClass(el, this.options.className); }
 
                el.onselectstart = falseFn;
                el.onmousemove = falseFn;
@@ -12112,7 +12162,7 @@ var Canvas = Renderer.extend({
        _initContainer: function () {
                var container = this._container = document.createElement('canvas');
 
-               on(container, 'mousemove', throttle(this._onMouseMove, 32, this), this);
+               on(container, 'mousemove', this._onMouseMove, this);
                on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);
                on(container, 'mouseout', this._handleMouseOut, this);
 
@@ -12422,10 +12472,15 @@ var Canvas = Renderer.extend({
                        removeClass(this._container, 'leaflet-interactive');
                        this._fireEvent([layer], e, 'mouseout');
                        this._hoveredLayer = null;
+                       this._mouseHoverThrottled = false;
                }
        },
 
        _handleMouseHover: function (e, point) {
+               if (this._mouseHoverThrottled) {
+                       return;
+               }
+
                var layer, candidateHoveredLayer;
 
                for (var order = this._drawFirst; order; order = order.next) {
@@ -12448,6 +12503,11 @@ var Canvas = Renderer.extend({
                if (this._hoveredLayer) {
                        this._fireEvent([this._hoveredLayer], e);
                }
+
+               this._mouseHoverThrottled = true;
+               setTimeout(L.bind(function () {
+                       this._mouseHoverThrottled = false;
+               }, this), 32);
        },
 
        _fireEvent: function (layers, e, type) {
index 615b4654baf0332145a524479704c18cf73f6414..99aa3433712beeb5f34a986cfea073fffc45e9d7 100644 (file)
@@ -133,7 +133,7 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
             '<path d="'+path+'" style="'+style+'" />'+
             '</svg>';
             return {
-                className: 'leafet-control-locate-heading',
+                className: 'leaflet-control-locate-heading',
                 svg: svg,
                 w: w,
                 h: h
@@ -168,6 +168,8 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
             setView: 'untilPanOrZoom',
             /** Keep the current map zoom level when setting the view and only pan. */
             keepCurrentZoomLevel: false,
+           /** After activating the plugin by clicking on the icon, zoom to the selected zoom level, even when keepCurrentZoomLevel is true. Set to 'false' to disable this feature. */
+           initialZoomLevel: false,
             /**
              * This callback can be used to override the viewport tracking
              * This function should return a LatLngBounds object.
@@ -467,10 +469,21 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
                 this._map.on('zoomstart', this._onZoom, this);
                 this._map.on('zoomend', this._onZoomEnd, this);
                 if (this.options.showCompass) {
-                    if ('ondeviceorientationabsolute' in window) {
-                        L.DomEvent.on(window, 'deviceorientationabsolute', this._onDeviceOrientation, this);
-                    } else if ('ondeviceorientation' in window) {
-                        L.DomEvent.on(window, 'deviceorientation', this._onDeviceOrientation, this);
+                    var oriAbs = 'ondeviceorientationabsolute' in window;
+                    if (oriAbs || ('ondeviceorientation' in window)) {
+                        var _this = this;
+                        var deviceorientation = function () {
+                            L.DomEvent.on(window, oriAbs ? 'deviceorientationabsolute' : 'deviceorientation', _this._onDeviceOrientation, _this);
+                        };
+                        if (DeviceOrientationEvent && typeof DeviceOrientationEvent.requestPermission === 'function') {
+                            DeviceOrientationEvent.requestPermission().then(function (permissionState) {
+                                if (permissionState === 'granted') {
+                                    deviceorientation();
+                                }
+                            })
+                        } else {
+                            deviceorientation();
+                        }
                     }
                 }
             }
@@ -514,6 +527,10 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
                 this._event = undefined;  // clear the current location so we can get back into the bounds
                 this.options.onLocationOutsideMapBounds(this);
             } else {
+               if (this._justClicked && this.options.initialZoomLevel !== false) {
+                    var f = this.options.flyTo ? this._map.flyTo : this._map.setView;
+                    f.bind(this._map)([this._event.latitude, this._event.longitude], this.options.initialZoomLevel);
+               } else
                 if (this.options.keepCurrentZoomLevel) {
                     var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;
                     f.bind(this._map)([this._event.latitude, this._event.longitude]);
@@ -538,6 +555,10 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
          *
          */
         _drawCompass: function() {
+            if (!this._event) {
+                return;
+            }
+
             var latlng = this._event.latlng;
 
             if (this.options.showCompass && latlng && this._compassHeading !== null) {
@@ -610,14 +631,23 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
             this._drawCompass();
 
             var t = this.options.strings.popup;
+            function getPopupText() {
+                if (typeof t === 'string') {
+                    return L.Util.template(t, {distance: distance, unit: unit});
+                } else if (typeof t === 'function') {
+                    return t({distance: distance, unit: unit});
+                } else {
+                    return t;
+                }
+            }
             if (this.options.showPopup && t && this._marker) {
                 this._marker
-                    .bindPopup(L.Util.template(t, {distance: distance, unit: unit}))
+                    .bindPopup(getPopupText())
                     ._popup.setLatLng(latlng);
             }
             if (this.options.showPopup && t && this._compass) {
                 this._compass
-                    .bindPopup(L.Util.template(t, {distance: distance, unit: unit}))
+                    .bindPopup(getPopupText())
                     ._popup.setLatLng(latlng);
             }
         },
@@ -774,7 +804,7 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
 
             if (this._event && !this._ignoreEvent) {
                 // If we have zoomed in and out and ended up sideways treat it as a pan
-                if (!this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) {
+                if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) {
                     this._userPanned = true;
                     this._updateContainerStyle();
                     this._drawMarker();
index 772e7ebc61355e5973f281c47a1fd18ff1d1cb42..957f6cbda01f0706efb76aebb6cd4df98f2094d0 100644 (file)
@@ -78,7 +78,7 @@
 
             for (var i = 0, len = numbers.length; i < len;) {
                 for (var d = 0; d < options.dimension; ++d, ++i) {
-                    var num = numbers[i];
+                    var num = numbers[i].toFixed(options.precision);
                     var delta = num - (lastNumbers[d] || 0);
                     lastNumbers[d] = num;