]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'openstreetmap/pull/1449'
authorTom Hughes <tom@compton.nu>
Tue, 21 Feb 2017 17:05:39 +0000 (17:05 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 21 Feb 2017 17:05:39 +0000 (17:05 +0000)
49 files changed:
VAGRANT.md
Vendorfile
app/assets/javascripts/index.js
app/assets/javascripts/index/contextmenu.js [new file with mode: 0644]
app/assets/javascripts/index/new_note.js
app/assets/javascripts/leaflet.map.js
app/assets/stylesheets/leaflet-all.scss
app/controllers/application_controller.rb
app/helpers/user_blocks_helper.rb
app/models/user_block.rb
app/views/notes/_note.rss.builder
config/locales/ast.yml
config/locales/bg.yml
config/locales/bn.yml
config/locales/br.yml
config/locales/cs.yml
config/locales/de.yml
config/locales/diq.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/es.yml
config/locales/fr.yml
config/locales/gd.yml
config/locales/he.yml
config/locales/hsb.yml
config/locales/ia.yml
config/locales/is.yml
config/locales/ka.yml
config/locales/ko.yml
config/locales/lb.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sv.yml
config/locales/tl.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
test/helpers/user_blocks_helper_test.rb [new file with mode: 0644]
vendor/assets/leaflet/leaflet.contextmenu.css [new file with mode: 0644]
vendor/assets/leaflet/leaflet.contextmenu.js [new file with mode: 0644]

index 549e06687f66216bd8d311e44833b2e5ffccbffe..3825ad988242567e0e4af260b1e850c8faf04f05 100644 (file)
@@ -6,10 +6,13 @@ On Ubuntu, it should be as simple as:
 sudo apt-get install vagrant
 ```
 
-Other Linux distributions should have similar installation instructions using `yum` or similar.
+Other Linux distributions should have similar installation instructions using `dnf`, `pacman`, or similar.
 
 Installers are available for Mac OS X and Windows, please see the [Vagrant project download page](http://www.vagrantup.com/downloads.html) for more information.
 
+Note than until there are suitable _xenial64_ [vagrant boxes](https://atlas.hashicorp.com/boxes/search?utf8=%E2%9C%93&sort=&provider=&q=xenial64) for other providers,
+the only virtualization provider supported is virtualbox. You might need to install it and specify `--provider virtualbox` when setting up your environment.
+
 # Setting up openstreetmap-website
 
 Once Vagrant has been installed, you can start an environment by checking out the openstreetmap-website code if you haven't already, then changing to the directory which contains the Vagrantfile by typing:
index 361f2c84361173bc6948a7c3e661a6a10e44bc8b..304be9e15de2ae9d92a8d237cb7281e36e3a0068 100644 (file)
@@ -20,6 +20,11 @@ folder 'vendor/assets' do
       file "images/#{image}", "https://unpkg.com/leaflet@1.0.3/dist/images/#{image}"
     end
 
+    from 'git://github.com/aratcliffe/Leaflet.contextmenu.git', :tag => 'v1.2.1' do
+      file 'leaflet.contextmenu.js', 'dist/leaflet.contextmenu.js'
+      file 'leaflet.contextmenu.css', 'dist/leaflet.contextmenu.css'
+    end
+
     from 'git://github.com/kajic/leaflet-locationfilter.git' do
       file 'leaflet.locationfilter.css', 'src/locationfilter.css'
       file 'leaflet.locationfilter.js', 'src/locationfilter.js'
index 9d7122e4da70013021b29f7801a5b5620c496a7e..1ba2fbbdef5cc719b5799813aa03bce0cfd50870 100644 (file)
@@ -7,6 +7,8 @@
 //= require leaflet.share
 //= require leaflet.polyline
 //= require leaflet.query
+//= require leaflet.contextmenu
+//= require index/contextmenu
 //= require index/search
 //= require index/browse
 //= require index/export
@@ -77,7 +79,9 @@ $(document).ready(function () {
 
   var map = new L.OSM.Map("map", {
     zoomControl: false,
-    layerControl: false
+    layerControl: false,
+    contextmenu: true,
+    contextmenuWidth: 140
   });
 
   map.attributionControl.setPrefix('');
@@ -147,6 +151,8 @@ $(document).ready(function () {
   L.control.scale()
     .addTo(map);
 
+  OSM.initializeContextMenu(map);
+
   if (OSM.STATUS !== 'api_offline' && OSM.STATUS !== 'database_offline') {
     OSM.initializeNotes(map);
     if (params.layers.indexOf(map.noteLayer.options.code) >= 0) {
diff --git a/app/assets/javascripts/index/contextmenu.js b/app/assets/javascripts/index/contextmenu.js
new file mode 100644 (file)
index 0000000..148ccf9
--- /dev/null
@@ -0,0 +1,85 @@
+OSM.initializeContextMenu = function (map) {
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.directions_from"),
+    callback: function directionsFromHere(e) {
+      var precision = OSM.zoomPrecision(map.getZoom()),
+          latlng = e.latlng.wrap(),
+          lat = latlng.lat.toFixed(precision),
+          lng = latlng.lng.toFixed(precision);
+
+      OSM.router.route("/directions?" + querystring.stringify({
+        route: lat + "," + lng + ";" + $("#route_to").val()
+      }));
+    }
+  });
+
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.directions_to"),
+    callback: function directionsToHere(e) {
+      var precision = OSM.zoomPrecision(map.getZoom()),
+          latlng = e.latlng.wrap(),
+          lat = latlng.lat.toFixed(precision),
+          lng = latlng.lng.toFixed(precision);
+
+      OSM.router.route("/directions?" + querystring.stringify({
+        route: $("#route_from").val() + ";" + lat + "," + lng
+      }));
+    }
+  });
+
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.add_note"),
+    callback: function addNoteHere(e) {
+      var precision = OSM.zoomPrecision(map.getZoom()),
+          latlng = e.latlng.wrap(),
+          lat = latlng.lat.toFixed(precision),
+          lng = latlng.lng.toFixed(precision);
+
+      OSM.router.route("/note/new?lat=" + lat + "&lon=" + lng);
+    }
+  });
+
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.show_address"),
+    callback: function describeLocation(e) {
+      var precision = OSM.zoomPrecision(map.getZoom()),
+          latlng = e.latlng.wrap(),
+          lat = latlng.lat.toFixed(precision),
+          lng = latlng.lng.toFixed(precision);
+
+      OSM.router.route("/search?query=" + encodeURIComponent(lat + "," + lng));
+    }
+  });
+
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.query_features"),
+    callback: function queryFeatures(e) {
+      var precision = OSM.zoomPrecision(map.getZoom()),
+          latlng = e.latlng.wrap(),
+          lat = latlng.lat.toFixed(precision),
+          lng = latlng.lng.toFixed(precision);
+
+      OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
+    }
+  });
+
+  map.contextmenu.addItem({
+    text: I18n.t("javascripts.context.centre_map"),
+    callback: function centreMap(e) {
+      map.panTo(e.latlng);
+    }
+  });
+
+  map.on("mousedown", function (e) {
+    if (e.originalEvent.shiftKey) map.contextmenu.disable();
+    else map.contextmenu.enable();
+  });
+
+  var updateMenu = function updateMenu () {
+    map.contextmenu.setDisabled(2, map.getZoom() < 12);
+    map.contextmenu.setDisabled(4, map.getZoom() < 14);
+  };
+
+  map.on("zoomend", updateMenu);
+  updateMenu();
+};
index 397daa637f4f7c2397b584a45339cda5a15d6231..53697e65b584d20686d3ee9bf3d200878fb9fac2 100644 (file)
@@ -77,7 +77,9 @@ OSM.NewNote = function(map) {
   }
 
   page.pushstate = page.popstate = function (path) {
-    OSM.loadSidebarContent(path, page.load);
+    OSM.loadSidebarContent(path, function () {
+      page.load(path);
+    });
   };
 
   function newHalo(loc, a) {
@@ -97,7 +99,7 @@ OSM.NewNote = function(map) {
     }
   }
 
-  page.load = function () {
+  page.load = function (path) {
     if (addNoteButton.hasClass("disabled")) return;
     if (addNoteButton.hasClass("active")) return;
 
@@ -105,12 +107,34 @@ OSM.NewNote = function(map) {
 
     map.addLayer(noteLayer);
 
-    var mapSize = map.getSize();
-    var markerPosition;
+    var params = querystring.parse(path.substring(path.indexOf('?') + 1));
+    var markerLatlng;
+
+    if (params.lat && params.lon) {
+      markerLatlng = L.latLng(params.lat, params.lon);
+
+      var markerPosition = map.latLngToContainerPoint(markerLatlng),
+          mapSize = map.getSize(),
+          panBy = L.point(0, 0);
+
+      if (markerPosition.x < 50) {
+        panBy.x = markerPosition.x - 50;
+      } else if (markerPosition.x > mapSize.x - 50) {
+        panBy.x = 50 - mapSize.x + markerPosition.x;
+      }
 
-    markerPosition = [mapSize.x / 2, mapSize.y / 2];
+      if (markerPosition.y < 50) {
+        panBy.y = markerPosition.y - 50;
+      } else if (markerPosition.y > mapSize.y - 50) {
+        panBy.y = 50 - mapSize.y + markerPosition.y;
+      }
+
+      map.panBy(panBy);
+    } else {
+      markerLatlng = map.getCenter();
+    }
 
-    newNote = L.marker(map.containerPointToLatLng(markerPosition), {
+    newNote = L.marker(markerLatlng, {
       icon: noteIcons["new"],
       opacity: 0.9,
       draggable: true
index 4b50cc78c4ca0660b3ff5cfe484b95a53e417b94..b87764b1d06a759dc171cdda62bdc25ef9a48e39 100644 (file)
@@ -107,7 +107,7 @@ L.OSM.Map = L.Map.extend({
       params.mlon = latLng.lng.toFixed(precision);
     }
 
-    var url = 'http://' + OSM.SERVER_URL + '/',
+    var url = window.location.protocol + '//' + OSM.SERVER_URL + '/',
       query = querystring.stringify(params),
       hash = OSM.formatHash(this);
 
@@ -121,7 +121,8 @@ L.OSM.Map = L.Map.extend({
     var zoom = this.getZoom(),
       latLng = marker && this.hasLayer(marker) ? marker.getLatLng().wrap() : this.getCenter().wrap(),
       str = window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
-        'http://osm.org/go/' : 'http://' + window.location.hostname + '/go/',
+        window.location.protocol + '//osm.org/go/' :
+        window.location.protocol + '//' + window.location.hostname + '/go/',
       char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_~",
       x = Math.round((latLng.lng + 180.0) * ((1 << 30) / 90.0)),
       y = Math.round((latLng.lat + 90.0) * ((1 << 30) / 45.0)),
index 10ad2607a5a4c5bbbc56b6df50892edff384ac54..82312e5c2312ae3bc174e0606a6f3f10c2f555d9 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *= require leaflet
  *= require leaflet.locationfilter
+ *= require leaflet.contextmenu
  */
 
 /* Override to serve images through the asset pipeline. */
index 354fcc7c0cba1b61e3a3d04f73e0e9ddcf0f3fbf..8eb5f240906579f6fdb21fff01a293fc8c0483ea 100644 (file)
@@ -152,9 +152,14 @@ class ApplicationController < ActionController::Base
     # have we identified the user?
     if @user
       # check if the user has been banned
-      if @user.blocks.active.exists?
-        # NOTE: need slightly more helpful message than this.
-        report_error t("application.setup_user_auth.blocked"), :forbidden
+      user_block = @user.blocks.active.take
+      unless user_block.nil?
+        set_locale
+        if user_block.zero_hour?
+          report_error t("application.setup_user_auth.blocked_zero_hour"), :forbidden
+        else
+          report_error t("application.setup_user_auth.blocked"), :forbidden
+        end
       end
 
       # if the user hasn't seen the contributor terms then don't
index 282d9164aa2cc046842b23939a8a6db557696fbe..3c9c0a37e5f6a5d1ab237505e9835a75e844d865 100644 (file)
@@ -4,8 +4,13 @@ module UserBlocksHelper
   # user block (i.e: whether it's active, what the expiry time is)
   def block_status(block)
     if block.active?
+      # if the block hasn't expired yet show the date, if the user just needs to login show that
       if block.needs_view?
-        I18n.t("user_block.helper.until_login")
+        if block.ends_at > Time.now.getutc
+          I18n.t("user_block.helper.time_future_and_until_login", :time => friendly_date(block.ends_at)).html_safe
+        else
+          I18n.t("user_block.helper.until_login")
+        end
       else
         I18n.t("user_block.helper.time_future", :time => friendly_date(block.ends_at)).html_safe
       end
index de14dcaa9617f351941b93925cc7b1453ee6357b..eb0daba6569731cad0fe0486b6ea814099e6d2d5 100644 (file)
@@ -26,6 +26,13 @@ class UserBlock < ActiveRecord::Base
     needs_view || ends_at > Time.now.getutc
   end
 
+  ##
+  # returns true if the block is a "zero hour" block
+  def zero_hour?
+    # if the times differ more than 1 minute we probably have more important issues
+    needs_view && (ends_at.to_i - updated_at.to_i) < 60
+  end
+
   ##
   # revokes the block, allowing the user to use the API again. the argument
   # is the user object who is revoking the ban.
index 038ca564b36ba989ffa35e730bf1f279b6801b5a..38c42f1ec4786de0dba3fd82469903ec8d88fca0 100644 (file)
@@ -15,7 +15,7 @@ xml.item do
 
   xml.dc :creator, note.author.display_name if note.author
 
-  xml.pubDate note.updated_at.to_s(:rfc822)
+  xml.pubDate note.created_at.to_s(:rfc822)
   xml.geo :lat, note.lat
   xml.geo :long, note.lon
   xml.georss :point, "#{note.lat} #{note.lon}"
index 602975ec711f22a968869632a101c3b5225400b7..8c76b7f6ed875c0f7d96e11267e497ea594ba293 100644 (file)
@@ -1648,6 +1648,8 @@ ast:
     require_moderator:
       not_a_moderator: Has de ser moderador pa facer esa aición.
     setup_user_auth:
+      blocked_zero_hour: Tienes un mensaxe urxente nel sitiu web d'OpenStreetMap.
+        Tienes de lleer el mensaxe antes de que puedas guardar les ediciones.
       blocked: Se bloquió el to accesu a la API. Por favor, coneuta pela interfaz
         web pa saber más.
       need_to_see_terms: El to accesu a la API ta torgáu de mou temporal. Por favor,
@@ -2392,6 +2394,13 @@ ast:
       nothing_found: Nun s'alcontraron entidaes
       error: 'Error al comunicase con %{server}: %{error}'
       timeout: Tiempu escosáu al comunicase con %{server}
+    context:
+      directions_from: Direiciones dende equí
+      directions_to: Direiciones ata equí
+      add_note: Añadir una nota equí
+      show_address: Amosar la direición
+      query_features: Consultar entidaes
+      centre_map: Centrar el mapa equí
   redaction:
     edit:
       description: Descripción
index df6e6c3b72c714a71e94f1838aede669ae2d7119..e38963bb40912a368c384ec0f0f150ea3d662c51 100644 (file)
@@ -22,6 +22,7 @@ bg:
       language: Език
       message: Съобщение
       node: Възел
+      notifier: Известител
       old_node: Стар възел
       relation: Релация
       relation_member: Член на релация
@@ -155,6 +156,8 @@ bg:
       new_note: Нова бележка
       description: Описание
       open_by: Създадено от %{user} <abbr title='%{exact_time}'>преди %{when}</abbr>
+    query:
+      title: Търсене на особености
   changeset:
     changeset_paging_nav:
       showing_page: Страница %{page}
@@ -402,6 +405,7 @@ bg:
           speed_camera: Камера за контрол на скоростта
           steps: Стълбище
           street_lamp: Улична лампа
+          track: Полски път
           trunk: Скоростен път
           trunk_link: Скоростен път
           unsurfaced: Път без настилка
@@ -646,6 +650,7 @@ bg:
     log_in: Влизане
     log_in_tooltip: Вписване със съществуващ профил
     sign_up: Регистриране
+    start_mapping: Картографиране
     edit: Редактиране
     history: История
     export: Изнасяне
@@ -676,6 +681,7 @@ bg:
       english_link: Оригиналът на английски
     native:
       title: За тази страница
+      mapping_link: картографиране
     legal_babble:
       title_html: Авторски права и лиценз
       infringement_title_html: Нарушаване на авторските права
@@ -794,6 +800,7 @@ bg:
           trunk: Междуградски път
           primary: Главен път
           secondary: Второстепенен път
+          track: Полски път
           bridleway: Конен път
           cycleway: Велосипедна пътека
           footway: Пътека
@@ -1003,9 +1010,13 @@ bg:
       cancel: Отказ
       image: Изображение
       link: Препратка или код
+      long_link: Препратка
+      short_link: Кратка препратка
+      embed: Код
       custom_dimensions: Размер по избор
       format: 'Формат:'
       scale: 'Мащаб:'
+      image_size: На изображението ще бъде обичайната карта с размер
       download: Изтегляне
       include_marker: Добавяне на маркер
     key:
@@ -1031,6 +1042,8 @@ bg:
     site:
       edit_tooltip: Редактиране на картата
       createnote_tooltip: Добавяне на бележка на картата
+      queryfeature_tooltip: Търсене на особености
+      queryfeature_disabled_tooltip: Увеличете, за да търсите особености
     notes:
       new:
         add: Добавяне на бележка
@@ -1057,4 +1070,6 @@ bg:
         destination_without_exit: Пристигнахте на местоназначението
         unnamed: неименуван път
       time: Време
+    context:
+      add_note: Добавете бележка тук
 ...
index d74d289a7516082f29381d421701b864f6d90f67..2c4663242c16d72f08b201574c4cdffe5989e5f8 100644 (file)
@@ -1043,10 +1043,10 @@ bn:
       back: পিছনে
       to: প্রাপক
     sent_message_summary:
-      delete_button: à¦®à§\81à¦\9bà§\87 à¦«à§\87লà§\81ন
+      delete_button: à¦\85পসারণ
     mark:
-      as_read: বার্তা পঠিত হিসেবে চিহ্নিত
-      as_unread: বার্তা অপঠিত হিসেবে চিহ্নিত
+      as_read: বার্তা পঠিত হিসেবে চিহ্নিত করুন
+      as_unread: বার্তা অপঠিত হিসেবে চিহ্নিত করুন
     delete:
       deleted: বার্তা মোছা হয়েছে
   site:
@@ -1072,7 +1072,7 @@ bn:
     key:
       table:
         entry:
-          motorway: à¦®à§\8bà¦\9fà§\8bরপথ
+          motorway: মোটরপথ
           main_road: প্রধান সড়ক
           trunk: মূল সড়ক
           primary: প্রাথমিক সড়ক
@@ -1140,7 +1140,7 @@ bn:
       description: 'বিবরণ:'
       tags: 'ট্যাগসমূহ:'
       save_button: পরিবর্তন সংরক্ষণ
-      visibility: দৃষ্টিযোগ্যতা
+      visibility: 'দৃষ্টিযোগ্যতা:'
       visibility_help: এটার মানে কি?
     trace_form:
       upload_gpx: 'জিপিএক্স ফাইল আপলোড:'
@@ -1177,7 +1177,7 @@ bn:
       edit_track: এই অনুসরণটি সম্পাদনা করুন
       delete_track: এই অনুসরণটি মুছে ফেলুন
       trace_not_found: অনুসরণ পাওযা যায়নি।
-      visibility: দৃষ্টিযোগ্যতা
+      visibility: 'দৃষ্টিযোগ্যতা:'
     trace_paging_nav:
       showing_page: '%{page} পাতা'
     trace:
@@ -1220,8 +1220,8 @@ bn:
       remember: আমাকে মনে রাখো
       login_button: প্রবেশ
       register now: এখনই নিবন্ধন করুন
-      with username: 'ইতিমধ্যে একটি ওপেনস্ট্রিটম্যাপ অ্যাকাউন্ট আছে? দয়া করে ব্যবহারকারীনাম
-        এবং পাসওয়ার্ড দিয়ে প্রবেশ করুন:'
+      with username: 'ইতিমধ্যে একটি ওপেনস্ট্রিটম্যাপ অ্যাকাউন্ট আছে? দয়া করে ব্যবহারকারী
+        à¦¨à¦¾à¦® à¦\8fবà¦\82 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¦à¦¿à¦¯à¦¼à§\87 à¦ªà§\8dরবà§\87শ à¦\95রà§\81ন:'
       new to osm: ওপেনস্ট্রিটম্যাপে নতুন?
       no account: কোনও অ্যাকাউন্ট নেই?
       auth_providers:
index b2c7ecd05b70cb69ff32f31c618927da24ae863d..c5ee437eb59da24dc966b4ea5ba257f5b516a956 100644 (file)
@@ -1679,6 +1679,8 @@ br:
     require_moderator:
       not_a_moderator: Ret eo deoc'h bezañ habaskaer evit kas an ober-mañ da benn.
     setup_user_auth:
+      blocked_zero_hour: Ur gemennadenn vallus zo war lec'hienn OpenStreetMap evidoc'h.
+        Ret eo deoc'h lenn ar gemennadenn-se a-raok gallout enrollañ ho kemmoù.
       blocked: Stanket eo bet ho moned d'an API. Kevreit ouzh an etrefas web evit
         gouzout hiroc'h.
       need_to_see_terms: Evit ar mare n'oc'h ket aotreet da vont war an API ken. Kevreit
@@ -2428,6 +2430,13 @@ br:
       nothing_found: Arc'hweladur ebet kavet
       error: Fazi o vont e daremmpred gant %{server}:%{error}
       timeout: Amzer aet e-biou %{server}
+    context:
+      directions_from: Durc'hadurioù adalek amañ
+      directions_to: Durc'hadurioù betek amañ
+      add_note: Ouzhpennañ un notenn amañ
+      show_address: Diskouez ar chomlec'h
+      query_features: Perzhioù enklask
+      centre_map: Kreizañ ar gartenn amañ
   redaction:
     edit:
       description: Deskrivadur
index b4af8917ef4023ee0c493a58c17fdc479af3392f..fa2c6b5a30bfc3d9c384f13d1271ac8a9c4dcaa4 100644 (file)
@@ -24,6 +24,7 @@
 # Author: Nemo bis
 # Author: Paxt
 # Author: Reaperman
+# Author: StenSoft
 # Author: Tchoř
 # Author: Urbanecm
 # Author: Veritaslibero
@@ -790,7 +791,7 @@ cs:
           abandoned: Zrušená železniční trať
           construction: Železnice ve výstavbě
           disused: Nepoužívaná železniční trať
-          disused_station: Nepoužívaná železniční stanice
+          disused_station: Zrušená železniční stanice
           funicular: Lanová dráha
           halt: Železniční zastávka
           historic_station: Nádraží historické železnice
@@ -936,7 +937,7 @@ cs:
         level6: Hranice okresu
         level8: Hranice obce
         level9: Hranice vesnice
-        level10: Hranice čtvrti
+        level10: Hranice městské části
     description:
       title:
         osm_nominatim: Poloha podle <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
@@ -979,7 +980,6 @@ cs:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: partneři
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners?uselang=cs
     osm_offline: Databáze OpenStreetMap je momentálně kvůli probíhající neodkladné
       údržbě mimo provoz.
     osm_read_only: Databáze OpenStreetMap je momentálně kvůli probíhající neodkladné
index 7b5976c616005c9f180798118b1981339d6efd49..82fed433d67211c88cd3846f0f8d8a9c19b80523 100644 (file)
@@ -1002,7 +1002,6 @@ de:
     partners_ic: dem Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: Partnern
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Die OpenStreetMap-Datenbank ist im Moment wegen wichtiger Wartungsarbeiten
       nicht verfügbar.
     osm_read_only: Die OpenStreetMap-Datenbank ist im Moment wegen wichtiger Wartungsarbeiten
@@ -1745,6 +1744,8 @@ de:
     require_moderator:
       not_a_moderator: Du musst Moderator sein, um diese Aktion durchführen zu können.
     setup_user_auth:
+      blocked_zero_hour: Du hast eine dringende Nachricht auf der OpenStreetMap-Website.
+        Du musst sie zuerst lesen, bevor du deine Bearbeitungen speichern kannst.
       blocked: Dein Zugriff auf die API wurde gesperrt. Bitte melde dich auf der Web-Oberfläche
         an, um mehr zu erfahren.
       need_to_see_terms: Dein Zugriff auf die API wurde vorübergehend ausgesetzt.
@@ -2305,6 +2306,8 @@ de:
     helper:
       time_future: Endet in %{time}.
       until_login: Aktiv, bis der Benutzer sich anmeldet.
+      time_future_and_until_login: Endet in %{time} und nachdem sich der Benutzer
+        angemeldet hat.
       time_past: Endete vor %{time}
     blocks_on:
       title: Sperren für %{name}
@@ -2507,6 +2510,13 @@ de:
       nothing_found: Keine Objekte gefunden
       error: 'Fehler beim Kontaktieren von %{server}: %{error}'
       timeout: Zeitüberschreitung beim Kontaktieren von %{server}
+    context:
+      directions_from: Route von hier
+      directions_to: Route nach hier
+      add_note: Einen Kartenfehler hier einfügen
+      show_address: Adresse anzeigen
+      query_features: Abfrage-Funktionen
+      centre_map: Karte hier zentrieren
   redaction:
     edit:
       description: Beschreibung
index 69b7a28b472328a9895693178723cf0056ecab76..16173e1b98412d09f388dac42704e9352e509cf2 100644 (file)
@@ -920,7 +920,7 @@ diq:
       edits: Vurnayışi
       traces: Rêçi
       remove as friend: Embazan ra vec
-      add as friend: Embaz bı
+      add as friend: Embazi cı ke
       mapper since: 'Demê herdnigarwaniye:'
       ago: (%{time_in_words_ago} veror)
       ct undecided: Darıdeyo
index b7b89dcc896b0fece2055ede2d46ef699c40b46c..6ee5884ec3dabfcd31026311ce32c5718c0724ed 100644 (file)
@@ -992,7 +992,6 @@ el:
     partners_ic: Imperial College του Λονδίνου
     partners_bytemark: Bytemark Hosting
     partners_partners: συνεργάτες
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Η βάση δεδομένων του OpenStreetMap είναι προσωρινά εκτός λειτουργίας
       λόγω εργασιών συντήρησης της βάσης δεδομένων.
     osm_read_only: Η βάση δεδομένων του OpenStreetMap έχει τεθεί προσωρινά σε λειτουργία
index 4b0ccd15e359eddab9f55b352d5eba17a1f7ffaa..c3eca7447d930f9244741fb60785b9e18ce0a2f5 100644 (file)
@@ -973,7 +973,6 @@ en-GB:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: partners
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: The OpenStreetMap database is currently offline while essential database
       maintenance work is carried out.
     osm_read_only: The OpenStreetMap database is currently in read-only mode while
index 15a1912df6f5b9e3ac55689485c0ccf1ded102cf..3afa7e805600df14b8c1937c0dfd504f11afea54 100644 (file)
@@ -1625,6 +1625,7 @@ en:
     require_moderator:
       not_a_moderator: "You need to be a moderator to perform that action."
     setup_user_auth:
+      blocked_zero_hour: "You have an urgent message on the OpenStreetMap web site. You need to read the message before you will be able to save your edits."
       blocked: "Your access to the API has been blocked. Please log-in to the web interface to find out more."
       need_to_see_terms: "Your access to the API is temporarily suspended. Please log-in to the web interface to view the Contributor Terms. You do not need to agree, but you must view them."
   oauth:
@@ -2111,6 +2112,7 @@ en:
     helper:
       time_future: "Ends in %{time}."
       until_login: "Active until the user logs in."
+      time_future_and_until_login: "Ends in %{time} and after the user has logged in."
       time_past: "Ended %{time} ago."
     blocks_on:
       title: "Blocks on %{name}"
@@ -2304,6 +2306,13 @@ en:
       nothing_found: No features found
       error: "Error contacting %{server}: %{error}"
       timeout: "Timeout contacting %{server}"
+    context:
+      directions_from: Directions from here
+      directions_to: Directions to here
+      add_note: Add a note here
+      show_address: Show address
+      query_features: Query features
+      centre_map: Centre map here
   redaction:
     edit:
       description: "Description"
index 469a2842057bfe192dde7a541d1ef92e7fe7c223..caf6a20fc7a096d629765a1a9051be99d3d52234 100644 (file)
@@ -1648,6 +1648,8 @@ eo:
     require_moderator:
       not_a_moderator: Vi devas esti kontrolanto por fari ĉi tiun agon.
     setup_user_auth:
+      blocked_zero_hour: Vi havas urĝan mesaĝon en la OpenStreetMap retejo. Vi devas
+        legi la mesaĝon antaŭ ol vi povos konservi viajn redaktojn.
       blocked: Via aliro al API estas blokita. Bonvolu ensaluti al reta interfaco
         por sciiĝi pli.
       need_to_see_terms: Via aliro al API estas dumtempe provizore haltigita. Bonvolu
@@ -2379,6 +2381,13 @@ eo:
       nothing_found: Neniuj objektoj trovitaj
       error: 'Eraro dum komunikado kun %{server}: %{error}'
       timeout: Atingis tempolimon dum kontakto kun %{server}
+    context:
+      directions_from: Direktoj el ĉi tie
+      directions_to: Direktoj al ĉi tie
+      add_note: Aldoni rimarkon ĉi tien
+      show_address: Montri adreson
+      query_features: Informoj pri objektoj
+      centre_map: Centrigi mapon ĉi tien
   redaction:
     edit:
       description: Priskribo
index 2a982c93b3d8eaf5dad40c2cb42a31950e8481f8..d2e2814bc064a0c1271b6c8d25c95e6fbc1e9e23 100644 (file)
@@ -988,7 +988,6 @@ es:
     partners_ic: Imperial College de Londres
     partners_bytemark: Bytemark Hosting
     partners_partners: socios
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: La base de datos de OpenStreetMap no está disponible en estos momentos
       debido a trabajos de mantenimiento.
     osm_read_only: La base de datos de OpenStreetMap se encuentra en modo de sólo
index c088db13f7b02d3ad80a6a99be03ed5b7232f173..2db1bfa275180a0ef8f5f38e72409c48aaf90858 100644 (file)
@@ -1011,7 +1011,6 @@ fr:
     partners_ic: le Collège impérial de Londres
     partners_bytemark: Hébergement Bytemark
     partners_partners: partenaires
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: La base de données OpenStreetMap est actuellement hors ligne ; une
       maintenance essentielle à son bon fonctionnement est en cours.
     osm_read_only: La base de données OpenStreetMap est actuellement en mode lecture
index 261bee3ebcfe8138c13ee92636f4f012e4c8235b..74e6a01ae12fc238f32551a38067a80c688f9a4e 100644 (file)
@@ -974,7 +974,6 @@ gd:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: com-pàirtichean eile
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Tha an stòr-dàta aig OpenStreetMap far loidhńe an-dràsta on a tha
       sinn a' dèanamh obair-charaidh riatanach air.
     osm_read_only: Tha an stòr-dàta aig OpenStreetMap sa mhodh leughaidh a-mhàin an-dràsta
index cdf75890c19a35b79ac780dcca452307e3848da1..7628d710c46a7a8f59955235d27fe5211259b4ce 100644 (file)
@@ -963,7 +963,6 @@ he:
     partners_ic: המכללה המלכותית של לונדון
     partners_bytemark: אירוח בייטמארק
     partners_partners: שותפים
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: מסד הנתונים של אתר OpenStreetMap אינו מקוון כעת בשל עבודות תחזוקה
       המבוצעות בו.
     osm_read_only: מסד הנתונים של אתר OpenStreetMap נתון כעת במצב קריאה בלבד בשל עבודות
index 204819de0352b0febd91fa111c05364a3f1b2dfb..4fd0ed82829155c3a0d39540c31e2c3b65d8e5bd 100644 (file)
@@ -954,7 +954,6 @@ hsb:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: partnerow
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Datowa banka OpenStreetMap je tuchwilu offline, dokelž so wažne wobhladowankse
       dźěła na datowej bance přewjedu.
     osm_read_only: Datowa banka OpenStreetMap je tuchwilu jenož čitajomna, dokelž
index eebb71d0294ec85ed1f2cbb395b3f997352696d8..644532690b0ef9ea97396d4ecbdaf80b6a23b938 100644 (file)
@@ -956,7 +956,6 @@ ia:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: partners
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Le base de datos de OpenStreetMap non es disponibile al momento debite
       a operationes de mantenentia essential.
     osm_read_only: Le base de datos de OpenStreetMap es al momento in modo de solmente
index a8d1323d011633ea13bc6ee38c1f34970100fd66..34f38685c25a8d6d6419497838727649cd3c9b9e 100644 (file)
@@ -200,7 +200,23 @@ is:
       title: 'Minnispunktur: %{id}'
       new_note: Nýr minnispunktur
       description: Lýsing
+      open_title: 'Minnispunktur án lausnar #%{note_name}'
+      closed_title: 'Minnispunktur með lausn #%{note_name}'
       hidden_title: 'Falinn minnispunktur #%{note_name}'
+      open_by: Búið til af %{user} <abbr title='%{exact_time}'>fyrir %{when} síðan</abbr>
+      open_by_anonymous: Búið til af nafnlausum notanda <abbr title='{exact_time}'>fyrir
+        %{when} síðan</abbr>
+      commented_by: Umsögn frá %{user} <abbr title='%{exact_time}'>fyrir %{when} síðan</abbr>
+      commented_by_anonymous: Umsögn frá nafnlausum notanda <abbr title='{exact_time}'>fyrir
+        %{when} síðan</abbr>
+      closed_by: Leyst af %{user} <abbr title='%{exact_time}'>fyrir %{when} síðan</abbr>
+      closed_by_anonymous: Leyst af nafnlausum notanda <abbr title='{exact_time}'>fyrir
+        %{when} síðan</abbr>
+      reopened_by: Endurvirkjað af %{user} <abbr title='%{exact_time}'>fyrir %{when}
+        síðan</abbr>
+      reopened_by_anonymous: Endurvirkjað af nafnlausum notanda <abbr title='{exact_time}'>fyrir
+        %{when} síðan</abbr>
+      hidden_by: Falið af %{user} <abbr title='%{exact_time}'>fyrir %{when} síðan</abbr>
     query:
       title: Rannsaka fitjur
       introduction: Smelltu á kortið til að finna fitjur í nágrenninu.
@@ -224,6 +240,9 @@ is:
     list:
       title: Breytingasett
       title_user: Breytingar eftir %{user}
+      title_friend: Breytingar eftir vini þína
+      title_nearby: Breytingasett eftir nálæga notendur
+      empty: Engin breytingasett fundust.
       load_more: Hlaða inn fleiri
     rss:
       commented_at_html: Uppfært fyrir %{when} síðan
@@ -286,7 +305,7 @@ is:
     location:
       location: 'Staðsetning:'
       view: kort
-      edit: breyta
+      edit: Breyta
     feed:
       user:
         title: OpenStreetMap bloggfærslur eftir %{user}
@@ -321,6 +340,8 @@ is:
         body: Svæðið sem þú ert að reyna að flytja út á OpenStreetMap á XML-sniði
           er of stórt. Auktu aðdráttinn eða veldu smærra svæði, nú eða notaðu eina
           af eftirfarandi leiðum til að flytja inn mikið magn gagna.
+        planet:
+          title: OSM-plánetan
         geofabrik:
           title: Niðurhöl frá Geofabrik
         other:
@@ -336,7 +357,7 @@ is:
       longitude: 'Breidd:'
       output: Úttak
       paste_html: Notaðu þennan HTML kóða til að bæta kortinu á vefsíðu
-      export_button: Niðurhala
+      export_button: Flytja út
   geocoder:
     search:
       title:
@@ -407,7 +428,7 @@ is:
           fire_hydrant: Brunahani
           fire_station: Slökkvistöð
           fountain: Gosbrunnur
-          fuel: Bensínstöð
+          fuel: Eldsneyti
           gambling: Fjárhættuspil
           grave_yard: Kirkjugarður
           gym: Líkamsræktarstöð
@@ -552,13 +573,17 @@ is:
         landuse:
           allotments: Úthlutuð svæði
           basin: Lægð
+          brownfield: Byggingarsvæði
           cemetery: Grafreitur
           commercial: Verslunarsvæði
+          conservation: Verndarsvæði
+          construction: Bygging
           farm: Býli
-          farmland: Akurlendi
+          farmland: Ræktarland
           forest: Skógur
           garages: Verkstæði
           grass: Gras
+          greenfield: Nýbyggingarsvæði
           industrial: Iðnaðarsvæði
           landfill: Landfylling
           meadow: Skógarlundur
@@ -569,12 +594,14 @@ is:
           railway: Lestarteinar
           reservoir: Uppistöðulón
           residential: Íbúðasvæði
+          retail: Smásala
           vineyard: Vínekra
           "yes": Landnotkun
         leisure:
           bird_hide: Fuglaskoðunarhús
           club: Klúbbur
           common: Almenningur
+          dog_park: Hundagarður
           fitness_centre: Líkamsræktarstöð
           garden: Garður
           golf_course: Golfvöllur
@@ -665,7 +692,9 @@ is:
           houses: Hús
           island: Eyja
           islet: Smáeyja
+          isolated_dwelling: Einangraður bústaður
           locality: Sveitarfélag
+          moor: Mýri
           municipality: Sveitarfélag
           neighbourhood: Nágrenni
           postcode: Póstnúmer
@@ -678,12 +707,19 @@ is:
           village: Þorp
           "yes": Staður
         railway:
+          abandoned: Aflögð járnbraut
+          construction: Járnbraut í byggingu
+          historic_station: Söguleg lestarstöð
+          level_crossing: Þverun brautarteina
           light_rail: Smálest
+          monorail: Einteinungur
           station: Lestarstöð
           subway: Neðanjarðarlest
+          subway_entrance: Inngangur í neðanjarðarlest
           tram: Sporvagn
           tram_stop: Sporvagnastöð
         shop:
+          antiques: Antíkverslun
           art: Listmunaverslun
           bakery: Bakarí
           bicycle: Hjólaverslun
@@ -744,6 +780,7 @@ is:
           alpine_hut: Fjallaskáli
           apartment: Íbúð
           artwork: Listaverk
+          attraction: Aðdráttarafl
           bed_and_breakfast: BB-gisting og veitingar
           cabin: Kofi
           camp_site: Tjaldstæði
@@ -777,7 +814,10 @@ is:
           waterfall: Foss
           "yes": Siglingaleið
       admin_levels:
+        level2: Landamæri
+        level4: Fylkismörk
         level5: Héraðsmörk
+        level6: Sýslumörk
         level8: Borgarmörk
     description:
       title:
@@ -805,8 +845,8 @@ is:
     start_mapping: Hefja kortlagningu
     sign_up_tooltip: Stofnaðu aðgang til að geta breytt kortinu
     edit: Breyta
-    history: Sagnfræði
-    export: Niðurhala
+    history: Breytingaskrá
+    export: Flytja út
     data: Gögn
     export_data: Flytja út gögn
     gps_traces: GPS ferlar
@@ -817,14 +857,16 @@ is:
     tag_line: Frjálsa wiki heimskortið
     intro_header: Velkomin í OpenStreetMap!
     intro_2_create_account: Búa til notandaaðgang
+    partners_ucl: UCL VR Centre
+    partners_ic: Imperial College London
+    partners_bytemark: Bytemark Hosting
     partners_partners: samstarfsaðilar
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: OpenStreetMap gagnagrunnurinn er niðri vegna viðhalds.
     osm_read_only: Ekki er hægt að skrifa í OpenStreetMap gagnagrunninn í augnablikinu
       vegna viðhalds.
     donate: Hjálpaðu OpenStreetMap verkefninu með %{link} í vélbúnaðarsjóðinn.
     help: Hjálp
-    about: Um
+    about: Um hugbúnaðinn
     copyright: Höfundaréttur
     community: Samfélag
     community_blogs: Blogg félaga
@@ -916,13 +958,14 @@ is:
     partners_title: Samstarfsaðilar
   notifier:
     diary_comment_notification:
-      subject: '[OpenStreetMap] %{user} bætti við athugasemd á bloggfærslu þína'
+      subject: '[OpenStreetMap] %{user} bætti athugasemd við bloggfærslu þína'
       hi: Hæ %{to_user},
-      header: '%{from_user} hefur bætt við athugasemd á OpenStreetMap bloggið þitt
+      header: '%{from_user} hefur bætt við athugasemd á OpenStreetMap bloggfærsluna
         með titlinum „%{subject}“:'
       footer: Þú getur einnig lesið athugasemdina á %{readurl} og skrifað athugasemd
         á %{commenturl} eða svarað á %{replyurl}
     message_notification:
+      subject_header: '[OpenStreetMap] %{subject}'
       hi: Hæ %{to_user},
       header: '%{from_user} hefur send þér skilaboð á OpenStreetMap með titlinum „%{subject}“:'
     friend_notification:
@@ -1144,6 +1187,7 @@ is:
           private: Einkaaðgangur
           destination: Umferð leyfileg á ákveðinn áfangastað
           construction: Vegir í byggingu
+          bicycle_parking: Reiðhjólastæði
     richtext_area:
       edit: Breyta
       preview: Forskoðun
@@ -1227,7 +1271,7 @@ is:
       owner: 'Eigandi:'
       description: 'Lýsing:'
       tags: 'Merki:'
-      none: engin
+      none: Ekkert
       edit_track: Breyta
       delete_track: Eyða
       trace_not_found: Þessi ferill fannst ekki!
@@ -1301,13 +1345,15 @@ is:
   oauth_clients:
     new:
       title: Skrá nýtt forrit
-      submit: Skrá
+      submit: Nýskrá
     edit:
       title: Breyta forritinu þínu
-      submit: Vista
+      submit: Breyta
     show:
       title: OAuth stillingar fyrir %{app_name}
+      authorize_url: 'Leyfa slóð (URL):'
       edit: Breyta þessari skráningu
+      delete: Eyða biðlara
       confirm: Ertu viss?
       requests: 'Óska eftir eftirfarandi leyfum frá notendum:'
       allow_read_prefs: Lesa notandastillingar þeirra.
@@ -1315,8 +1361,9 @@ is:
       allow_write_diary: Búa til bloggfærslur, setja inn athugasemdir og bæta við
         vinum.
       allow_write_api: Breyta kortagögnunum.
+      allow_read_gpx: Lesa einka-GPS-ferlana þeirra.
       allow_write_gpx: Senda inn GPS ferla.
-      allow_write_notes: breyta minnispunktum.
+      allow_write_notes: Breyta minnispunktum.
     index:
       title: OAuth stillingar
       revoke: Eyða banninu
@@ -1412,11 +1459,13 @@ is:
         vegna framlaga</a>.
       email address: 'Netfang:'
       confirm email address: 'Staðfestu netfang:'
-      not displayed publicly: Ekki sýnt opinberlega (sjá <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Privacy_Policy"
-        title="Meðferð persónuupplýsinga, þ.á.m. netfanga">meðferð persónuupplýsinga</a>)
+      not displayed publicly: Netfangið þitt er ekki birt opinberlega, sjá kaflann
+        <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy" title=Meðferð
+        OSMF á persónuupplýsingum, þar með töldum netföngum">um meðferð persónuupplýsinga</a>
       display name: 'Sýnilegt nafn:'
       display name description: Nafn þitt sem aðrir notendur sjá, þú getur breytt
         því síðar í stillingunum þínum.
+      external auth: 'Auðkenning með þriðja aðila:'
       password: 'Lykilorð:'
       confirm password: 'Staðfestu lykilorðið:'
       continue: Nýskrá
@@ -1509,6 +1558,10 @@ is:
       unhide_user: Af-fela þennan notanda
       delete_user: Eyða þessum notanda
       confirm: Staðfesta
+      friends_changesets: breytingasett vina
+      friends_diaries: bloggfærslur vina
+      nearby_changesets: breytingasett vina í næsta nágrenni
+      nearby_diaries: bloggfærslur vina í næsta nágrenni
     popup:
       your location: Staðsetning þín
       nearby mapper: Nálægur notandi
@@ -1553,9 +1606,11 @@ is:
       preferred editor: 'Uppáhaldsritill:'
       image: 'Mynd:'
       gravatar:
-        gravatar: Nota Gravatar-merki
+        gravatar: Nota Gravatar-auðkennismynd
         link: http://wiki.openstreetmap.org/wiki/Gravatar
         link text: Hvað er þetta?
+        disabled: Gravatar-auðkennismynd hefur verið gerð óvirk.
+        enabled: Birting Gravatar-auðkennismyndar hefur verið gerð virk.
       new image: Bæta við mynd
       keep image: Halda þessari mynd
       delete image: Eyða þessari mynd
@@ -1575,9 +1630,11 @@ is:
       flash update success: Stillingarnar þínar voru uppfærðar.
     confirm:
       heading: Athuga með tölvupóstinn þinn!
+      introduction_1: Við höfum sent þér staðfestingartölvupóst.
       press confirm button: Hér getur þú staðfest að þú viljir búa til notanda..
       button: Staðfesta
       success: Notandinn þinn hefur verið staðfestur.
+      already active: Þessi notandaaðgangur hefur þegar verið staðfestur.
     confirm_email:
       heading: Staðfesta breytingu á netfangi
       press confirm button: Hér getur þú staðfest breytingu á netfangi.
@@ -1708,7 +1765,7 @@ is:
       ago: Fyrir %{time} síðan
       status: Staða
       show: Sýna
-      edit: Breyta banninu
+      edit: Breyta
       revoke: Eyða banninu
       confirm: Ertu viss?
       reason: 'Ástæða banns:'
@@ -1767,6 +1824,7 @@ is:
         header: Lög á korti
         notes: Minnispunktar á korti
         data: Gögn korts
+        gps: Opinberir GPS-ferlar
         title: Lög
       copyright: © <a href='%{copyright_url}'>OpenStreetMap þátttakendur</a>
       donate_link_text: <a class='donate-attr' href='%{donate_url}'>Styrkja verkefnið</a>
@@ -1774,6 +1832,7 @@ is:
       edit_tooltip: Breyta kortinu
       edit_disabled_tooltip: Renndu að til að breyta kortinu
       createnote_tooltip: Bæta við minnispunkti á kortið
+      createnote_disabled_tooltip: Renndu að til að bæta minnispunkti á kortið
       map_notes_zoom_in_tooltip: Renndu að til að sjá minnispunkta á kortinu
       map_data_zoom_in_tooltip: Renndu að til að skoða gögn kortsins
       queryfeature_tooltip: Rannsaka fitjur
@@ -1784,12 +1843,14 @@ is:
         subscribe: Gerast áskrifandi
         unsubscribe: Segja upp áskrift
         hide_comment: fela
+        unhide_comment: hætta að fela
     notes:
       new:
         add: Bæta við minnispunkti
       show:
         hide: Fela
         resolve: Leysa
+        reactivate: Virkja aftur
         comment: Athugasemd
     directions:
       engines:
@@ -1802,17 +1863,22 @@ is:
         mapzen_bicycle: Reiðhjól (Mapzen)
         mapzen_car: Bíll (Mapzen)
         mapzen_foot: Fótgangandi (Mapzen)
-      directions: Stefnur
+      directions: Leiðir
       distance: Vegalengd
       errors:
         no_route: Gat ekki fundið leið á milli þessara tveggja staða.
         no_place: Því miður, gat ekki fundið þennan stað.
+      instructions:
+        continue_without_exit: Halda áfram á %{name}
+        unnamed: ónefnd gata
       time: Tími
     query:
       node: Hnútur
       way: Leið
       relation: Vensl
       nothing_found: Engar fitjur fundust
+      error: 'Villa við að tengjast %{server}: %{error}'
+      timeout: Rann út á tíma við að tengjast %{server}
   redaction:
     edit:
       description: Lýsing
index 06e40b852040609fb8599175193617dfdc8a74e1..93a3ba285135a4119bc0defb3d767624b11527fc 100644 (file)
@@ -772,7 +772,6 @@ ka:
     tag_line: თავისუფალი ვიკი-რუკა
     intro_2_create_account: მომხმარებლის ანგარიშის შექმნა
     partners_partners: პარტნიორები
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     help: დახმარება
     copyright: საავტორო უფლები
     community: თანასაზოგადოება
index a8fb1cb3c89c32784644fd57e556c3fd7195b315..8c320c8b595adf1c0f663a1df4ce0e9e1c026816 100644 (file)
@@ -2329,6 +2329,8 @@ ko:
       nothing_found: 지물을 찾을 수 없습니다
       error: '%{server} 연결에 오류: %{error}'
       timeout: '%{server} 연결에 시간 초과'
+    context:
+      add_note: 여기에 설명 추가
   redaction:
     edit:
       description: 설명
index d301cc85c66f5124bd33a054cc1f6bcfa060f5c0..b419747895c0ddfc4acabc9203a42638842b2a43 100644 (file)
@@ -1243,6 +1243,12 @@ lb:
     query:
       way: Wee
       relation: Relatioun
+    context:
+      directions_from: Vun hei fort
+      directions_to: Heihinn
+      add_note: Eng Notiz hei dobäisetzen
+      show_address: Adress weisen
+      centre_map: Kaart hei zentréieren
   redaction:
     edit:
       description: Beschreiwung
index 6aefd05b8a6ca999a8bcaf99390b6c02fa096740..29ff2a56a89b120cc8cd0dbd152f7519d7299121 100644 (file)
@@ -91,13 +91,13 @@ lt:
     default: Numatytasis (šiuo metu %{name})
     potlatch:
       name: Potlatch 1
-      description: Potlatch 1 (redaktorius naršyklėje)
+      description: Potlatch 1 (rengyklė naršyklėje)
     id:
       name: iD
-      description: iD (naršyklės redaktorius)
+      description: iD (rengyklė naršyklėje)
     potlatch2:
       name: Potlatch 2
-      description: Potlatch 2 (redaktorius naršyklėje)
+      description: Potlatch 2 (rengyklė naršyklėje)
     remote:
       name: nuotoliniu valdymu
       description: nuotolinį valdymą (JOSM arba Merkaartor)
@@ -953,7 +953,7 @@ lt:
     gps_traces_tooltip: Tvarkyti GPS pėdsakus
     user_diaries: Dienoraščiai
     user_diaries_tooltip: Peržiūrėti naudotojų dienoraščius
-    edit_with: Redaguoti per %{editor}
+    edit_with: Redaguoti su %{editor}
     tag_line: Atviras wiki žemėlapis
     intro_header: Sveiki atvykę į OpenStreetMap!
     intro_text: OpenStreetMap yra pasaulio žemėlapis, kuriamas žmonių, tokių kaip
@@ -985,7 +985,7 @@ lt:
   license_page:
     foreign:
       title: Apie šį vertimą
-      text: Konfliktuojant tarp šio išversto puslapio ir  %{english_original_link},
+      text: Esant konfliktui tarp šio išversto puslapio ir  %{english_original_link},
         pirmenybė bus teikiama angliškajai versijai.
       english_link: anglų originalas
     native:
@@ -1032,9 +1032,11 @@ lt:
         Sužinokite daugiau apie mūsų duomenų naudojimą, kaip pažymėti prisidėjusius <a
         href="http://osmfoundation.org/Licence">OSMF licencijavimo puslapyje</a> ir bendruomenės <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">DUK dėl legalumo</a>.
       more_2_html: |-
-        Nors OpenStreetMap duomenys yra atviri, mes negalime pateikti free-of-charge žemėlapių API trečiųjų šalių vystytojams.
-
-        Peržiūrėkite mūsų <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API naudojimo politiką</a>, bei <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim naudojimo politika</a>.
+        Nors OpenStreetMap duomenys yra atviri, mes negalime pateikti
+        nemokamos žemėlapių API trečiosioms šalims.
+        Peržiūrėkite mūsų <a href="https://operations.osmfoundation.org/policies/api/">API naudojimo politiką</a>,
+        <a href="https://operations.osmfoundation.org/policies/tiles/">Kaladėlių naudojimo politiką</a>,
+        bei <a href="https://operations.osmfoundation.org/policies/nominatim/">Nominatim naudojimo politiką</a>.
       contributors_title_html: Mūsų autoriai
       contributors_intro_html: Mūsų autoriai yra tūkstančiai įvairių žmonių. Taip
         pat apimame ir laisvai prieinamą turinį iš valstybinių kartografijos agentūrų,
@@ -1113,8 +1115,8 @@ lt:
       title: Pagrindiniai žymėjimo terminai
       paragraph_1_html: OpenStreetMap turi savo žodyną. Čia keli pagrindiniai naudojami
         terminai/žodžiai.
-      editor_html: <strong>Redaktorius</strong> - tai programa arba svetainė, kurios
-        pagalba galite redaguoti žemėlapį.
+      editor_html: <strong>Rengyklė</strong> - tai programa arba svetainė su kuria
+        galite redaguoti žemėlapį.
       node_html: <strong>node/taškas</strong> - taškas žemėlapyje, pavyzdžiui vienas
         restoranas ar medis.
       way_html: <strong>kelias/way</strong> - linija ar plotas, pavyzdžiui kelias,
@@ -1224,15 +1226,18 @@ lt:
     legal_title: Teisės
     legal_html: "Šis puslapis ir daugelis kitų susijusių paslaugų yra formaliai valdomi
       \n<a href='http://osmfoundation.org/'>OpenStreetMap fondo</a> (OSMF) \nbendruomenės
-      vardu.\n<br> \n<a href='http://osmfoundation.org/Contact'>Susisiekite su OSMF</a>,
-      \njei turite licencijavimo, autoriaus teisių ar kitų teisinių klausimų ar problemų."
+      vardu. Visų OSMF valdomų paslaugų naudojimas yra\npriklausomas nuo <a href=\"http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy\">\nPriimtino
+      naudojimo politikos</a> ir mūsų <a href=\"http://wiki.osmfoundation.org/wiki/Privacy_Policy\">Privatumo
+      politikos</a>.\n<br> \n<a href='http://osmfoundation.org/Contact'>Susisiekite
+      su OSMF</a>, \njei turite licencijavimo, autoriaus teisių ar kitų teisinių klausimų
+      ar problemų."
     partners_title: Partneriai
   notifier:
     diary_comment_notification:
-      subject: '[OpenStreetMap] %{user} pakomentavo jūsų dienoraščio įrašą'
+      subject: '[OpenStreetMap] %{user} pakomentavo dienoraščio įrašą'
       hi: Sveiki, %{to_user},
-      header: '%{from_user} pakomentavo jūsų paskutinį OpenStreetMap dienoraščio įrašą
-        su tema %{subject}:'
+      header: '%{from_user} pakomentavo jūsų OpenStreetMap dienoraščio įrašą su tema
+        %{subject}:'
       footer: Taip pat galite perskaityti komentarą adresu %{readurl}, komentuoti
         galite adresu %{commenturl}, o atsakyti - adresu %{replyurl}
     message_notification:
@@ -1319,6 +1324,7 @@ lt:
           Pastaba yra netoli %{place}.'
       details: Daugiau informacijos apie pastabą galima rasti %{url}.
     changeset_comment_notification:
+      hi: Sveiki, %{to_user},
       greeting: Labas,
       commented:
         subject_own: '[OpenStreetMap] %{commenter} pakomentavo vieną iš jūsų pakeitimų'
@@ -1331,6 +1337,8 @@ lt:
         partial_changeset_with_comment: su komentaru '%{changeset_comment}'
         partial_changeset_without_comment: be komentaro
       details: Daugiau informacijos apie pakeitimą rasite čia %{url}.
+      unsubscribe: Jei norite atsisakyti šio pakeitimo atnaujinimų, eikite į %{url}
+        ir spauskite „Atsisakyti“.
   message:
     inbox:
       title: Gautieji
@@ -1421,11 +1429,11 @@ lt:
     edit:
       not_public: Jūs nenustatėte savo keitimų, kad būtų vieši
       not_public_description: Jūs nebegalite keisti žemėlapio, jei jūs tą darysite.
-        Jūs galite nustatyti keitimus,kaip viešus iš savo %{user_page}.
+        Jūs galite nustatyti keitimus, kaip viešus, iš savo %{user_page}.
       user_page_link: naudotojo puslapis
       anon_edits_link_text: Sužinokite, kodėl taip yra.
-      flash_player_required: Jums reikalingas Flash player norint redaguoti su Potlatch
-        (atvirojo žemėlapio Flash redagavimo įrankis). Jūs galite <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">parsisiųsti
+      flash_player_required: Jums reikalingas Flash player norint redaguoti su Potlatch,
+        OpenStreetMap Flash rengykle. Jūs galite <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">parsisiųsti
         Flash Player iš Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Taip
         pat yra daugybė kitų būdų</a>, kuriais galėsite prisidėti prie OpenStreetMap
         žemėlapio redagavimo.
@@ -1463,6 +1471,8 @@ lt:
           track: Pėdsakas
           bridleway: Takas galvijams varyti
           cycleway: Dviračių takas
+          cycleway_national: Nacionalinis dviračių takas
+          cycleway_regional: Regioninis dviračių takas
           cycleway_local: Vietinis dviračių takas
           footway: Pėsčiųjų takas
           rail: Geležinkelis
@@ -1659,6 +1669,8 @@ lt:
     require_moderator:
       not_a_moderator: Norėdami atlikti šį veiksmą, turite būti administratoriumi.
     setup_user_auth:
+      blocked_zero_hour: Turite skubų pranešimą OpenStreetMap puslapyje. Jums reikia
+        perskaityti šį pranešimą prieš galint išsaugoti pakeitimus.
       blocked: Jūsų prieiga prie API užblokuota. Prisijunkite prie žiniatinklio sąsajos,
         kad sužinotumėte daugiau.
       need_to_see_terms: Jūsų priėjimas prie API laikinai pristabdytas. Jūs turite
@@ -1843,8 +1855,9 @@ lt:
         sąlygomis</a>.
       email address: 'E-pašto adresas:'
       confirm email address: 'Patvirtinkite e-pašto adresą:'
-      not displayed publicly: Viešai nerodoma (skaitykite <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="wiki privatumo politika, įskaitant el. paštą">privatumo politiką</a>)
+      not displayed publicly: Jūsų adresas nėra viešai rodomas, daugiau informacijos
+        rasite <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy" title="OSMF
+        privatumo politika, įskaitant el. pašto adresus">privatumo politikoje</a>
       display name: 'Rodomas vardas:'
       display name description: Jūsų viešai rodomas naudotojo vardas. Jei norėsite,
         galėsite jį vėliau pakeisti savo nustatymuose.
@@ -1978,11 +1991,11 @@ lt:
         text: Šiuo metu jūsų keitimai yra anonimiški ir žmonės negali jums siųsti
           pranešimų ar matyti jūsų vietovės. Parodymui ką jūs keitėte ir galimybei
           kitiems žmonėms su jumis susisiekti per šią svetainę, spauskit nuorodą žemiau.
-          <b>Nuo 0.6 API pakeitimo, tik vieši naudotojai gali keisti duoemnis</b>.
-          (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">dėl ko taip
-          padaryta</a>).<ul><li>Jūsų el. pašto adresas nebus atskleistas kol ne taps
-          viešas.</li><li>Šis veiksmas negalės būti atšauktas ir visi nauji naudotojai
-          dabar yra vieši pagal nutylėjimą.</li></ul>
+          <b>Nuo 0.6 API pakeitimo, tik vieši naudotojai gali keisti duomenis</b>.
+          (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">sužinokite
+          kodėl</a>).<ul><li>Jūsų el. pašto adresas nebus viešai atskleistas.</li><li>Šis
+          veiksmas negalės būti atšauktas ir visi nauji naudotojai dabar yra automatiškai
+          vieši.</li></ul>
       contributor terms:
         heading: 'Talkininkų sąlygos:'
         agreed: Jūs sutikote su naujomis talkininkų sąlygomis.
@@ -1994,12 +2007,13 @@ lt:
         link text: kas tai?
       profile description: 'Profilio aprašymas:'
       preferred languages: 'Pageidautinos kalbos:'
-      preferred editor: 'Pageidautinas redaktorius:'
+      preferred editor: 'Pageidautina rengyklė:'
       image: 'Nuotrauka:'
       gravatar:
         gravatar: Naudoti Gravatar
         link text: kas tai?
         disabled: Gravatar buvo išjungtas.
+        enabled: Jūsų Gravatar rodymas įjungtas.
       new image: Pridėti nuotrauką
       keep image: Palikti dabartinę nuotrauką
       delete image: Pašalintį dabartinę nuotrauką
@@ -2284,7 +2298,7 @@ lt:
     key:
       title: Sutartiniai ženklai
       tooltip: Sutartiniai ženklai
-      tooltip_disabled: Sutartiniai ženklai galimi tik standartiniame sluoksnyje
+      tooltip_disabled: Sutartiniai ženklai neprieinami šiame sluoksnyje
     map:
       zoom:
         in: Priartinti
@@ -2301,6 +2315,7 @@ lt:
         header: Žemėlapio sluoksniai
         notes: Žemėlapio pastabos
         data: Žemėlapio duomenys
+        gps: Vieši GPS pėdsakai
         overlays: Įjungti papildomus sluoksnius problemų pranešimui
         title: Sluoksniai
       copyright: © <a href='%{copyright_url}'>OpenStreetMap talkininkai</a>
@@ -2357,22 +2372,37 @@ lt:
       instructions:
         continue_without_exit: Tęskite kelionę %{name}
         slight_right_without_exit: Dešiniau į %{name}
+        offramp_right_without_exit: Pasirinkite rampą dešinėje į %{name}
+        onramp_right_without_exit: Sukite dešinėn ant rampos į %{name}
+        endofroad_right_without_exit: Kelio pabaigoje sukite dešinėn į %{name}
+        merge_right_without_exit: Įsilieti dešinėn į %{name}
+        fork_right_without_exit: Išsišakojime sukite dešinėn į %{name}
         turn_right_without_exit: Sukite dešinėn į %{name}
         sharp_right_without_exit: Staigus posūkis dešinėn į %{name}
         uturn_without_exit: Apsisukite ties %{name}
         sharp_left_without_exit: Staigus posūkis kairėn į %{name}
         turn_left_without_exit: Sukite kairėn į %{name}
+        offramp_left_without_exit: Pasirinkite rampą kairėje į %{name}
+        onramp_left_without_exit: Sukite kairėn ant rampos į %{name}
+        endofroad_left_without_exit: Kelio pabaigoje sukite kairėn į %{name}
+        merge_left_without_exit: Įsilieti kairėn į %{name}
+        fork_left_without_exit: Išsišakojime sukite kairėn į %{name}
         slight_left_without_exit: Kairiau į %{name}
         via_point_without_exit: (per tašką)
         follow_without_exit: Sekite %{name}
-        roundabout_without_exit: Žiede išvažiuokite į %{name}
+        roundabout_without_exit: Žiede pasirinkite %{name}
         leave_roundabout_without_exit: Išvažiuokite iš žiedo - %{name}
         stay_roundabout_without_exit: Likite žiede - %{name}
         start_without_exit: Pradėkite %{name} pabaigoje
         destination_without_exit: Pasiekite tikslą
         against_oneway_without_exit: Važiuokite prieš eismą %{name}
         end_oneway_without_exit: Vienpusio eismo pabaiga %{name}
-        roundabout_with_exit: Žiede išvažiuokite %{exit} išvažiavime į %{name}
+        roundabout_with_exit: Žiede pasirinkite išvažiavimą %{exit} į %{name}
+        turn_left_with_exit: Žiede sukite kairėn į %{name}
+        slight_left_with_exit: Žiede šiek tiek kairėn į %{name}
+        turn_right_with_exit: Žiede sukite dešinėn į %{name}
+        slight_right_with_exit: Žiede šiek tiek dešinėn į %{name}
+        continue_with_exit: Žiede tęskite tiesiai į %{name}
         unnamed: bevardis
         courtesy: Nuorodas pateikė %{link}
       time: Laikas
@@ -2383,6 +2413,13 @@ lt:
       nothing_found: Nerasta objektų
       error: 'Klaida jungiantis prie %{server}: %{error}'
       timeout: Jungiantis prie %{server} baigėsi laikas
+    context:
+      directions_from: Nuorodos iš čia
+      directions_to: Nuorodos į čia
+      add_note: Pridėti pastabą čia
+      show_address: Rodyti adresą
+      query_features: Ieškoti objektų
+      centre_map: Centruoti žemėlapį čia
   redaction:
     edit:
       description: Aprašymas
index af6fc1dff52cbec8691431c84920f791363f4384..917c85d6eac0294041df2b5dbf9ff83b1cd0c1c8 100644 (file)
@@ -957,7 +957,6 @@ lv:
     partners_ic: Londonas Imperiālā Koledža
     partners_bytemark: Bytemark Hosting
     partners_partners: partneri
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: OpenStreetMap datubāze šobrīd nav pieejama, tiek veikti svarīgi datubāzes
       apkalpošanas darbi.
     osm_read_only: OpenStreetMap datubāze šobrīd ir pieejama tikai-lasāmā režīmā,
index d247d1891411cb2e3c3a42f3ef196671e0b5cebd..3f75c72f14e03579f5d840dd8ae543ec25d3434f 100644 (file)
@@ -954,7 +954,6 @@ mk:
     partners_ic: Империјалниот колеџ - Лондон
     partners_bytemark: вдомителот „Bytemark“
     partners_partners: партнери
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners?uselang=mk
     osm_offline: Базата на податоци на  OpenStreetMap моментално е исклучена додека
       работиме на неопходни одржувања.
     osm_read_only: Базата на податоци на OpenStreetMap моментално може само да се
@@ -1676,6 +1675,8 @@ mk:
     require_moderator:
       not_a_moderator: За да го изведете тоа, треба да сте модератор.
     setup_user_auth:
+      blocked_zero_hour: Имате итна порака на OpenStreetMap. Ќе мора да ја прочитате
+        пораката пред да ги зачувате уредувањата.
       blocked: Пристапот кон API ви е блокиран. Најавете се на посредникот за да дознаете
         повеќе.
       need_to_see_terms: Вашиот пристап до извршничкиот програм е привремено запрен.
@@ -2225,6 +2226,7 @@ mk:
     helper:
       time_future: Истекува за %{time}.
       until_login: Активно додека не се најави корисникот.
+      time_future_and_until_login: Завршува во %{time} и откако корисникот ќе се најави.
       time_past: Истечено пред %{time}.
     blocks_on:
       title: Блокови за %{name}
@@ -2425,6 +2427,13 @@ mk:
       nothing_found: Не пронајдов ниеден елемент
       error: 'Грешка при поврзувањето со %{server}: %{error}'
       timeout: Истече времето за поврзување со %{server}
+    context:
+      directions_from: Насоки оттука
+      directions_to: Насоки дотука
+      add_note: Тука ставете белешка
+      show_address: Прикажи адреса
+      query_features: Можности за барања
+      centre_map: Тука сосредоточи ја картата
   redaction:
     edit:
       description: Опис
index 262137999fff258b825d40d1f3e0c701c32da5ee..482e01e74f77713fe69710f13b2c99fcce26a343 100644 (file)
@@ -1000,7 +1000,6 @@ pl:
     partners_ic: Imperial College London
     partners_bytemark: Hosting Bytemark
     partners_partners: partnerzy
-    partners_url: http://wiki.openstreetmap.org/wiki/partners
     osm_offline: Baza danych OpenStreetMap jest niedostępna na czas ważnych zadań
       administracyjnych, które są w tym momencie wykonywane.
     osm_read_only: Baza danych OpenStreetMap jest w trybie tylko-do-odczytu na czas
index 0cf181d6b81d61af6a67257f9953097cfdaa9e8f..9892de330ad27584abd709eb46ef360fca7b00b5 100644 (file)
@@ -1713,6 +1713,8 @@ pt-BR:
     require_moderator:
       not_a_moderator: Você precisa ser um moderador para realizar essa ação.
     setup_user_auth:
+      blocked_zero_hour: Há uma mensagem urgente para você no site do OpenStreetMap.
+        Você deve lê-la para poder voltar a salvar suas edições.
       blocked: Seu acesso à API foi bloqueado. Acesse a interface web para mais detalhes.
       need_to_see_terms: O seu acesso à API está temporariamente suspenso. Faça o
         login na interface web para ler os Termos do Contribuidor. Você não precisa
@@ -2457,6 +2459,13 @@ pt-BR:
       nothing_found: Nenhum elemento encontrado
       error: 'Erro ao contatar %{server}: %{error}'
       timeout: Tempo esgotado com %{server}
+    context:
+      directions_from: Início da Rota
+      directions_to: Destino da Rota
+      add_note: Adicionar uma nota aqui
+      show_address: Mostrar Endereço
+      query_features: Consultar elementos
+      centre_map: Centralizar o mapa aqui
   redaction:
     edit:
       description: Descrição
index 735effe7da9f092e7e3efeb98c0cb10f4c8aeb1d..d3c751e7e022000e08179f1ec152921420ff3060 100644 (file)
@@ -919,7 +919,6 @@ sk:
     partners_ic: Imperial College v Londýne
     partners_bytemark: Bytemark Hosting
     partners_partners: partneri
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: OpenStreetMap databáza je teraz offline, zatiaľ čo potrebná údržba
       databázy naďalej prebieha.
     osm_read_only: OpenStreetMap databáza je teraz len v móde čítania (bez možnosti
index 084556be80d0c2ec9c11b7206baeee8a2f5d7204..5837a1343d156f6af8b94e98864977a213b8e778 100644 (file)
@@ -235,7 +235,7 @@ sl:
       saved_at: Shranjen
       user: Uporabnik
       comment: Komentar
-      area: Področje
+      area: Območje
     list:
       title: Paketi sprememb
       title_user: Paketi sprememb uporabnika %{user}
@@ -349,9 +349,9 @@ sl:
         Data Commons Open Database License</a> (ODbL).
       too_large:
         advice: 'Če zgornji izvoz spodleti, uporabite enega od spodnjih virov:'
-        body: 'To področje je preveliko za izvoz v OpenStreetMap XML. Prosimo, da
-          se približate ali izberete manjše območje ali pa da uporabite enega od naslednjih
-          virov za obsežen prenos podatkov:'
+        body: 'To področje je preveliko za izvoz v XML OpenStreetMap. Prosimo, da
+          se približate ali izberete manjše področje ali pa da uporabite enega od
+          naslednjih virov za obsežen prenos podatkov:'
         planet:
           title: Planet OSM
           description: Redno posodabljane kopije celotne podatkovne zbirke OpenStreetMap
@@ -509,7 +509,7 @@ sl:
           administrative: Upravna meja
           census: Popisna meja
           national_park: Nacionalni Park
-          protected_area: Zavarovano območje
+          protected_area: Zavarovano področje
         bridge:
           aqueduct: Akvadukt
           suspension: Viseči most
@@ -608,28 +608,28 @@ sl:
           brownfield: Gradbišče
           cemetery: Pokopališče
           commercial: Poslovna cona
-          conservation: Zaštićeno področje
+          conservation: Zaščiteno področje
           construction: Gradbišče
           farm: Kmetija
           farmland: Kmetijsko zemljišče
           farmyard: Vrt
           forest: Gozd
           garages: Garaže
-          grass: Travnik
+          grass: Trata
           greenfield: Pripravljeno za gradbišče
           industrial: Industrijsko podočje
           landfill: Smetišče
           meadow: Travnik
-          military: Vojaško območje
+          military: Vojaško področje
           mine: Minsko polje
           orchard: Sadovnjak
           quarry: Kamnolom
           railway: Železnica
-          recreation_ground: Rekreacijsko območje
+          recreation_ground: Rekreacijsko področje
           reservoir: Zbiralnik
           residential: Stanovanjska cona
           retail: Trgovine
-          road: Območje ceste
+          road: Področje ceste
           village_green: Zelenica
           vineyard: Vinograd
           "yes": Raba tal
@@ -638,11 +638,11 @@ sl:
           bird_hide: Ptičja opazovalnica
           club: Klub
           common: Javno zemljišče
-          fishing: Ribolovno območje
+          fishing: Ribolovno področje
           fitness_centre: Fitnes center
           fitness_station: Fitnes center
           garden: Vrt
-          golf_course: Igrišče za Golf
+          golf_course: Igrišče za golf
           horse_riding: Jahanje
           ice_rink: Drsališče
           marina: Marina
@@ -651,7 +651,7 @@ sl:
           park: Park
           pitch: Športno igrišče
           playground: Otroško igrišče
-          recreation_ground: Rekreacijsko območje
+          recreation_ground: Rekreacijsko področje
           sauna: Savna
           slipway: Rampa
           sports_centre: Športni center
@@ -676,7 +676,7 @@ sl:
           beach: Obala
           cape: Rt
           cave_entrance: Vhod v jamo
-          cliff: Klif
+          cliff: Pečina
           crater: Krater
           dune: Peščina
           fell: Planina
@@ -684,6 +684,7 @@ sl:
           forest: Gozd
           geyser: Gejzir
           glacier: Ledenik
+          grassland: Pašnik
           heath: Ravnina
           hill: Hrib
           island: Otok
@@ -747,7 +748,7 @@ sl:
           subdivision: Pododdelek
           suburb: Predmestje
           town: Mesto
-          unincorporated_area: Nikogaršnje območje
+          unincorporated_area: Nikogaršnje področje
           village: Vas
           "yes": Kraj
         railway:
@@ -840,7 +841,7 @@ sl:
           salon: Lepotilni salon
           second_hand: Trgovina z rabljeno opremo
           shoes: Trgovina s čevlji
-          shopping_centre: Nakupovalno središče
+          shopping_centre: Nakupovalni center
           sports: Športna trgovina
           stationery: Papirnica
           supermarket: Supermarket
@@ -939,7 +940,7 @@ sl:
       vi, brezplačen za uporabo z odprto licenco.
     intro_2_create_account: Ustvarite uporabniški račun
     partners_html: Gostovanje podpira %{ucl}, %{ic} in %{bytemark}, ter ostali %{partners}.
-    partners_ucl: UCL VR Center
+    partners_ucl: Center UCL VR
     partners_ic: Imperial College v Londonu
     partners_bytemark: Bytemark Hosting
     partners_partners: partnerji
@@ -1008,7 +1009,7 @@ sl:
       node_html: <strong>Vozlišče</strong> je točka na zemljevidu, kot npr. restavracija
         ali drevo.
       way_html: <strong>Pot</strong> je črta ali področje, kot je npr. cesta, potok,
-        jezero ali stavba.
+        jezero ali zgradba.
       tag_html: <strong>Oznaka</strong> je podatek o vozlišču ali poti, kot je npr.
         ime restavracija ali omejitev hitrosti na cesti.
     questions:
@@ -1323,15 +1324,15 @@ sl:
           admin: Upravna razmejitev
           forest: Gozd
           wood: Pragozd
-          golf: Igrišče za Golf
+          golf: Igrišče za golf
           park: Park
           resident: Naselje
           common:
           - Travniki
           - travnik
-          retail: Trgovsko območje
+          retail: Trgovsko področje
           industrial: Industrijsko področje
-          commercial: Poslovno območje
+          commercial: Poslovno področje
           heathland: Grmičevje
           lake:
           - Jezero
@@ -2156,14 +2157,41 @@ sl:
         no_route: Ni mogoče najti poti med tema dvema položajema.
         no_place: Žal tega kraja ni bilo mogoče najti.
       instructions:
+        continue_without_exit: Nadaljujte po %{name}
+        onramp_right_without_exit: Na priključku zavijte desno na %{name}
+        endofroad_right_without_exit: Na koncu ceste zavijte desno na %{name}
+        fork_right_without_exit: Na razcepu zavijte desno na %{name}
+        sharp_right_without_exit: Ostro desno na %{name}
+        uturn_without_exit: Polkrožno obrnite po %{name}
+        sharp_left_without_exit: Ostro levo na %{name}
+        turn_left_without_exit: Zavijte levo na %{name}
+        onramp_left_without_exit: Na priključku zavijte levo na %{name}
+        endofroad_left_without_exit: Na koncu ceste zavijete levo na %{name}
+        fork_left_without_exit: Na razcepu zavijte levo na %{name}
+        roundabout_without_exit: V krožišču uporabite %{name}
+        stay_roundabout_without_exit: Ostanite v krožišču - %{name}
+        start_without_exit: Začnite na koncu %{name}
+        destination_without_exit: Pojdite do cilja
+        roundabout_with_exit: V krožišču uporabite %{exit}. izhod, da zapeljete na
+          %{name}
+        turn_left_with_exit: V krožišču zavijte levo na %{name}
+        slight_left_with_exit: V krožišču rahlo levo na %{name}
+        turn_right_with_exit: V krožišču zavijete desno na %{name}
+        slight_right_with_exit: V krožišču rahlo desno na %{name}
+        continue_with_exit: Na krožišču nadaljujte naravnost na %{name}
         unnamed: neimenovano
-        courtesy: Navodila je ponudil %{link}
+        courtesy: Navodila prispeva %{link}
       time: Čas
     query:
       node: Vozlišče
       way: Pot
       relation: Zveza
       nothing_found: Značilnosti ni bilo mogoče najti
+    context:
+      directions_from: Navodila od tu
+      show_address: Prikaži naslov
+      query_features: Poišči značilnosti
+      centre_map: Premakni na sredino
   redaction:
     edit:
       description: Opis
index 4cb1c3b3dba55ba3cefa3296e6533a5af3dcd2cd..9f8169066443978172924b0d20788ccef321a934 100644 (file)
@@ -987,7 +987,6 @@ sv:
     partners_ic: Imperial College London
     partners_bytemark: Bytemark Hosting
     partners_partners: partners
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: OpenStreetMap-databasen är inte tillgänglig just nu, då nödvändigt
       databasunderhåll pågår.
     osm_read_only: OpenStreetMap-databasen är skrivskyddad just nu, då nödvändigt
index eb6915e4b9e42260be72ea0c254efa872fa7815e..d3ac510ddfce02c78e416013ecca43c1a22f2152 100644 (file)
@@ -778,7 +778,6 @@ tl:
     partners_ic: Dalubhasaang Pang-imperyo Londres
     partners_bytemark: Pagpapasinaya ng Bytemark
     partners_partners: mga kawaksi
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: Ang kalipunan ng dato ng OpenStreetMap ay pangkasalukuyang nakapatay
       habang isinasagawa ang mahalagang gawain ng pagpapanatili ng kalipunan ng dato.
     osm_read_only: Ang kalipunan ng dato ng OpenStreetMap ay pangkasalukuyang nasa
index 9b50f41bebd4b764fcf799b2fbc415779412a638..f8908a2163c5ec595264adafa653069205663e92 100644 (file)
@@ -3,6 +3,7 @@
 # Export driver: phpyaml
 # Author: Alerque
 # Author: Alpkant
+# Author: Archaeodontosaurus
 # Author: Captantrips
 # Author: Emperyan
 # Author: Erdemaslancan
@@ -1004,6 +1005,7 @@ tr:
         alt: Web sayfasıında OpenStreetMap atıf etmek için bir örnek
         title: Atıf örneği
       contributors_title_html: Katkıcılarımız
+      infringement_title_html: Telif hakkı ihlali
   welcome_page:
     title: Hoş geldiniz!
     introduction_html: Dünyanın düzenlenebilir ve ücretsiz haritası OpenStreetMap'e
@@ -1071,6 +1073,8 @@ tr:
       title: Forumlar
     irc:
       title: IRC
+    switch2osm:
+      title: switch2osm
     wiki:
       url: http://wiki.openstreetmap.org/
       title: wiki.openstreetmap.org
@@ -1139,6 +1143,7 @@ tr:
         subject_own: '[OpenStreetMap] notlarından birisini %{commenter} tarafından
           yorumlandı'
     changeset_comment_notification:
+      hi: Merhaba %{to_user},
       greeting: Merhaba,
       commented:
         partial_changeset_without_comment: yorumsuz
@@ -1282,6 +1287,7 @@ tr:
           private: Özel giriş
           destination: Hedef noktası
           construction: yapım aşamasında yolu
+          toilets: Tuvaletler
     richtext_area:
       edit: Düzenle
       preview: Ön izle
index 1bb10997a35d5abc385c49434dc793461be74c95..a170ba2d095883fd98a096e7f1cc8bee870d8c19 100644 (file)
@@ -1337,6 +1337,7 @@ uk:
           біля %{place}.'
       details: Докладніше про нотатку %{url}.
     changeset_comment_notification:
+      hi: Привіт %{to_user},
       greeting: Привіт,
       commented:
         subject_own: '[OpenStreetMap] %{commenter} прокоментував один з ваших наборів
@@ -1352,6 +1353,8 @@ uk:
       details: |2-
 
         Більше деталей про зміни, які можуть бути знайдені в %{url}.
+      unsubscribe: Щоб відписатися від оновлень за цим набором змін, перейдіть за
+        посиланням %{url} й натисніть кнопку „Відписатись“.
   message:
     inbox:
       title: Вхідні
@@ -1684,6 +1687,8 @@ uk:
     require_moderator:
       not_a_moderator: Ви повинні бути модератором для виконання цієї дії.
     setup_user_auth:
+      blocked_zero_hour: У вас є нагальне повідомлення на веб-сайті OpenStreetMap.
+        Вам потрібно прочитати повідомлення, перш ніж ви зможете зберегти ваші зміни.
       blocked: Ваш доступ до API заблоковано. Будь ласка, увійдіть через веб-інтерфейс,
         щоб дізнатися подробиці.
       need_to_see_terms: Ваш доступ до API тимчасово призупинено. Будь ласка, увійдіть
@@ -2440,6 +2445,13 @@ uk:
       nothing_found: Об’єкти не знайдені
       error: 'Помилка зв’язку %{server}: %{error}'
       timeout: Сервер не відповідає %{server}
+    context:
+      directions_from: Маршрут звідси
+      directions_to: Маршрут сюди
+      add_note: Додати тут нотатку
+      show_address: Показати адресу
+      query_features: Отримати об’єкти
+      centre_map: Центрувати мапу тут
   redaction:
     edit:
       description: Опис
index b9281dc07664d53f347bf889aa20229d9f145b13..a28ec0a0a38045f088a26b9293922973dde2a88f 100644 (file)
@@ -952,7 +952,6 @@ vi:
     partners_ic: Đại học Hoàng gia Luân Đôn
     partners_bytemark: Bytemark Hosting
     partners_partners: các công ty bảo trợ
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners?uselang=vi
     osm_offline: Cơ sở dữ liệu OpenStreetMap đang ngoại tuyến trong lúc đang thực
       hiện những công việc bảo quản cơ sở dữ liệu cần thiết.
     osm_read_only: Cơ sở dữ liệu OpenStreetMap đang bị khóa không được sửa đổi trong
@@ -1643,6 +1642,8 @@ vi:
     require_moderator:
       not_a_moderator: Chỉ có các điều hành viên được phép thực hiện tác vụ đó.
     setup_user_auth:
+      blocked_zero_hour: Bạn có tin nhắn mới rất quan trọng tại trang Web OpenStreetMap.
+        Bạn phải đọc tin nhắn này trước khi được phép lưu thêm thay đổi.
       blocked: Bạn bị chặn không được truy cập qua API. Vui lòng đăng nhập vào giao
         diện Web để biết chi tiết.
       need_to_see_terms: Bạn tạm không có quyền truy cập API. Xin vui lòng đăng nhập
@@ -2383,6 +2384,13 @@ vi:
       nothing_found: Không tìm thấy yếu tố nào
       error: 'Lỗi khi kết nối với %{server}: %{error}'
       timeout: Hết thời gian kết nối với %{server}
+    context:
+      directions_from: Chỉ đường từ đây
+      directions_to: Chỉ đường tới đây
+      add_note: Thêm ghi chú tại đây
+      show_address: Xem địa chỉ
+      query_features: Thăm dò yếu tố
+      centre_map: Tập trung bản đồ tại đây
   redaction:
     edit:
       description: Miêu tả
index 3378c085b612e72251068e609816fbba360e9dd2..55fc554215d1196907bc81c063f37867adaa1a0e 100644 (file)
@@ -960,12 +960,11 @@ zh-CN:
     intro_header: 欢迎访问 OpenStreetMap!
     intro_text: OpenStreetMap 是一个世界地图,由像您一样的人们所构筑,可依据开放许可协议自由使用。
     intro_2_create_account: 创建用户账户
-    partners_html: 主机由%{ucl}、%{ic}、%{bytemark}和其他%{partners}所支持。
+    partners_html: 主机由%{ucl}、%{bytemark}和%{ic},以及其他%{partners}所支持。
     partners_ucl: 伦敦大学学院虚拟现实中心
     partners_ic: 伦敦帝国学院
     partners_bytemark: Bytemark主机
     partners_partners: 合作伙伴
-    partners_url: http://wiki.openstreetmap.org/wiki/Partners
     osm_offline: 由于正在进行基本的数据库维护工作,OpenStreetMap 数据库目前处于脱机状态。
     osm_read_only: 由于正在进行基本的数据库维护工作,OpenStreetMap 数据库目前处于只读模式。
     donate: 通过给硬件升级基金%{link}支持 OpenStreetMap。
@@ -1539,6 +1538,7 @@ zh-CN:
     require_moderator:
       not_a_moderator: 必须为管理员才能执行该操作。
     setup_user_auth:
+      blocked_zero_hour: 您在OpenStreetMap网站有一条紧急消息。在您可以保存您的编辑之前,您需要阅读这条消息。
       blocked: 您对 API 的访问已经被阻挡了。请登录到网站以了解更多信息。
       need_to_see_terms: 您对 API 的访问已暂时中止。请登录到网站以查看贡献者条款。您不需要同意,但必须查看它们。
   oauth:
@@ -2019,6 +2019,7 @@ zh-CN:
     helper:
       time_future: 结束于 %{time}。
       until_login: 用户登录时激活。
+      time_future_and_until_login: 结束于%{time},并在用户登录之后。
       time_past: 结束于 %{time} 前。
     blocks_on:
       title: 对 %{name} 的封禁
@@ -2213,6 +2214,13 @@ zh-CN:
       nothing_found: 没有找到特征
       error: 连接 %{server} 时出错:%{error}
       timeout: 连接 %{server} 超时
+    context:
+      directions_from: 从这里的指示
+      directions_to: 到这里的指示
+      add_note: 在此添加注释
+      show_address: 显示地址
+      query_features: 查询特征
+      centre_map: 中心地图在此
   redaction:
     edit:
       description: 说明
index 29495539caf6336d077661d67053066dd7286da8..02de6645dd5484f5d6eb8ba6bd92cca9ad46d9a1 100644 (file)
@@ -1559,6 +1559,7 @@ zh-TW:
     require_moderator:
       not_a_moderator: 您需要是管理人員,才可執行該動作。
     setup_user_auth:
+      blocked_zero_hour: 您在OpenStreetMap網站有一個緊急訊息。在您儲存您的編輯內容前請先閱讀該訊息。
       blocked: 您已經被封鎖使用 API。請登入網頁介面以瞭解更多資訊。
       need_to_see_terms: 我們已暫時中止您使用 API 的權限,請登入網頁介面查閱貢獻者條款,您不需要同意有關條款,但必須查閱它們。
   oauth:
@@ -2031,6 +2032,7 @@ zh-TW:
     helper:
       time_future: 於 %{time} 結束。
       until_login: 生效直至這個使用者登入為止。
+      time_future_and_until_login: 在用戶已登入後結束於%{time}。
       time_past: 於 %{time} 之前結束。
     blocks_on:
       title: 對 %{name} 的封鎖
@@ -2224,6 +2226,13 @@ zh-TW:
       nothing_found: 找不到圖徵
       error: '%{server} 連線錯誤:%{error}'
       timeout: '%{server} 連線逾時'
+    context:
+      directions_from: 從這裡的路線
+      directions_to: 到這裡的路線
+      add_note: 在此添加註釋
+      show_address: 顯示地址
+      query_features: 查詢圖徵
+      centre_map: 中央地圖在此
   redaction:
     edit:
       description: 說明
diff --git a/test/helpers/user_blocks_helper_test.rb b/test/helpers/user_blocks_helper_test.rb
new file mode 100644 (file)
index 0000000..16f83ec
--- /dev/null
@@ -0,0 +1,16 @@
+require "test_helper"
+
+class UserBlocksHelperTest < ActionView::TestCase
+  include ApplicationHelper
+
+  def test_block_status
+    block = create(:user_block, :needs_view, :ends_at => Time.now.getutc)
+    assert_equal "Active until the user logs in.", block_status(block)
+
+    block = create(:user_block, :needs_view, :ends_at => Time.now.getutc + 1.hour)
+    assert_match %r{^Ends in <span title=".*">about 1 hour</span> and after the user has logged in\.$}, block_status(block)
+
+    block = create(:user_block, :ends_at => Time.now.getutc + 1.hour)
+    assert_match %r{^Ends in <span title=".*">about 1 hour</span>\.$}, block_status(block)
+  end
+end
diff --git a/vendor/assets/leaflet/leaflet.contextmenu.css b/vendor/assets/leaflet/leaflet.contextmenu.css
new file mode 100644 (file)
index 0000000..0b5e2de
--- /dev/null
@@ -0,0 +1,54 @@
+.leaflet-contextmenu {
+    display: none;
+    box-shadow: 0 1px 7px rgba(0,0,0,0.4);
+    -webkit-border-radius: 4px;
+    border-radius: 4px;
+    padding: 4px 0;
+    background-color: #fff;
+    cursor: default;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    user-select: none;
+}
+
+.leaflet-contextmenu a.leaflet-contextmenu-item {
+    display: block;
+    color: #222;
+    font-size: 12px;
+    line-height: 20px;
+    text-decoration: none;
+    padding: 0 12px;
+    border-top: 1px solid transparent;
+    border-bottom: 1px solid transparent;
+    cursor: default;
+    outline: none;
+}
+
+.leaflet-contextmenu a.leaflet-contextmenu-item-disabled {
+    opacity: 0.5;
+}
+
+.leaflet-contextmenu a.leaflet-contextmenu-item.over {
+    background-color: #f4f4f4;
+    border-top: 1px solid #f0f0f0;
+    border-bottom: 1px solid #f0f0f0;
+}
+
+.leaflet-contextmenu a.leaflet-contextmenu-item-disabled.over {
+    background-color: inherit;
+    border-top: 1px solid transparent;
+    border-bottom: 1px solid transparent;
+}
+
+.leaflet-contextmenu-icon {
+    margin: 2px 8px 0 0;
+    width: 16px;
+    height: 16px;
+    float: left;
+    border: 0;
+}
+
+.leaflet-contextmenu-separator {
+    border-bottom: 1px solid #ccc;
+    margin: 5px 0;
+}
diff --git a/vendor/assets/leaflet/leaflet.contextmenu.js b/vendor/assets/leaflet/leaflet.contextmenu.js
new file mode 100644 (file)
index 0000000..a9b011d
--- /dev/null
@@ -0,0 +1,580 @@
+/*
+       Leaflet.contextmenu, a context menu for Leaflet.
+       (c) 2015, Adam Ratcliffe, GeoSmart Maps Limited
+
+       @preserve
+*/
+
+(function(factory) {
+       // Packaging/modules magic dance
+       var L;
+       if (typeof define === 'function' && define.amd) {
+               // AMD
+               define(['leaflet'], factory);
+       } else if (typeof module === 'object' && typeof module.exports === 'object') {
+               // Node/CommonJS
+               L = require('leaflet');
+               module.exports = factory(L);
+       } else {
+               // Browser globals
+               if (typeof window.L === 'undefined') {
+                       throw new Error('Leaflet must be loaded first');
+               }
+               factory(window.L);
+       }
+})(function(L) {
+L.Map.mergeOptions({
+    contextmenuItems: []
+});
+
+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;
+
+        var container = this._container = L.DomUtil.create('div', L.Map.ContextMenu.BASE_CLS, map._container);
+        container.style.zIndex = 10000;
+        container.style.position = 'absolute';
+
+        if (map.options.contextmenuWidth) {
+            container.style.width = map.options.contextmenuWidth + 'px';
+        }
+
+        this._createItems();
+
+        L.DomEvent
+            .on(container, 'click', L.DomEvent.stop)
+            .on(container, 'mousedown', L.DomEvent.stop)
+            .on(container, 'dblclick', L.DomEvent.stop)
+            .on(container, 'contextmenu', L.DomEvent.stop);
+    },
+
+    addHooks: function () {
+        var container = this._map.getContainer();
+
+        L.DomEvent
+            .on(container, 'mouseleave', this._hide, this)
+            .on(document, 'keydown', this._onKeyDown, this);
+
+        if (L.Browser.touch) {
+            L.DomEvent.on(document, this._touchstart, this._hide, this);
+        }
+
+        this._map.on({
+            contextmenu: this._show,
+            mousedown: this._hide,
+            movestart: this._hide,
+            zoomstart: this._hide
+        }, this);
+    },
+
+    removeHooks: function () {
+        var container = this._map.getContainer();
+
+        L.DomEvent
+            .off(container, 'mouseleave', this._hide, this)
+            .off(document, 'keydown', this._onKeyDown, this);
+
+        if (L.Browser.touch) {
+            L.DomEvent.off(document, this._touchstart, this._hide, this);
+        }
+
+        this._map.off({
+            contextmenu: this._show,
+            mousedown: this._hide,
+            movestart: this._hide,
+            zoomstart: this._hide
+        }, this);
+    },
+
+    showAt: function (point, data) {
+        if (point instanceof L.LatLng) {
+            point = this._map.latLngToContainerPoint(point);
+        }
+        this._showAtPoint(point, data);
+    },
+
+    hide: function () {
+        this._hide();
+    },
+
+    addItem: function (options) {
+        return this.insertItem(options);
+    },
+
+    insertItem: function (options, index) {
+        index = index !== undefined ? index: this._items.length;
+
+        var item = this._createItem(this._container, options, index);
+
+        this._items.push(item);
+
+        this._sizeChanged = true;
+
+        this._map.fire('contextmenu.additem', {
+            contextmenu: this,
+            el: item.el,
+            index: index
+        });
+
+        return item.el;
+    },
+
+    removeItem: function (item) {
+        var container = this._container;
+
+        if (!isNaN(item)) {
+            item = container.children[item];
+        }
+
+        if (item) {
+            this._removeItem(L.Util.stamp(item));
+
+            this._sizeChanged = true;
+
+            this._map.fire('contextmenu.removeitem', {
+                contextmenu: this,
+                el: item
+            });
+        }
+    },
+
+    removeAllItems: function () {
+        var item;
+
+        while (this._container.children.length) {
+            item = this._container.children[0];
+            this._removeItem(L.Util.stamp(item));
+        }
+    },
+
+    hideAllItems: function () {
+        var item, i, l;
+
+        for (i = 0, l = this._items.length; i < l; i++) {
+            item = this._items[i];
+            item.el.style.display = 'none';
+        }
+    },
+
+    showAllItems: function () {
+        var item, i, l;
+
+        for (i = 0, l = this._items.length; i < l; i++) {
+            item = this._items[i];
+            item.el.style.display = '';
+        }
+    },
+
+    setDisabled: function (item, disabled) {
+        var container = this._container,
+        itemCls = L.Map.ContextMenu.BASE_CLS + '-item';
+
+        if (!isNaN(item)) {
+            item = container.children[item];
+        }
+
+        if (item && L.DomUtil.hasClass(item, itemCls)) {
+            if (disabled) {
+                L.DomUtil.addClass(item, itemCls + '-disabled');
+                this._map.fire('contextmenu.disableitem', {
+                    contextmenu: this,
+                    el: item
+                });
+            } else {
+                L.DomUtil.removeClass(item, itemCls + '-disabled');
+                this._map.fire('contextmenu.enableitem', {
+                    contextmenu: this,
+                    el: item
+                });
+            }
+        }
+    },
+
+    isVisible: function () {
+        return this._visible;
+    },
+
+    _createItems: function () {
+        var itemOptions = this._map.options.contextmenuItems,
+            item,
+            i, l;
+
+        for (i = 0, l = itemOptions.length; i < l; i++) {
+            this._items.push(this._createItem(this._container, itemOptions[i]));
+        }
+    },
+
+    _createItem: function (container, options, index) {
+        if (options.separator || options === '-') {
+            return this._createSeparator(container, index);
+        }
+
+        var itemCls = L.Map.ContextMenu.BASE_CLS + '-item',
+            cls = options.disabled ? (itemCls + ' ' + itemCls + '-disabled') : itemCls,
+            el = this._insertElementAt('a', cls, container, index),
+            callback = this._createEventHandler(el, options.callback, options.context, options.hideOnSelect),
+            icon = this._getIcon(options),
+            iconCls = this._getIconCls(options),
+            html = '';
+
+        if (icon) {
+            html = '<img class="' + L.Map.ContextMenu.BASE_CLS + '-icon" src="' + icon + '"/>';
+        } else if (iconCls) {
+            html = '<span class="' + L.Map.ContextMenu.BASE_CLS + '-icon ' + iconCls + '"></span>';
+        }
+
+        el.innerHTML = html + options.text;
+        el.href = '#';
+
+        L.DomEvent
+            .on(el, 'mouseover', this._onItemMouseOver, this)
+            .on(el, 'mouseout', this._onItemMouseOut, this)
+            .on(el, 'mousedown', L.DomEvent.stopPropagation)
+            .on(el, 'click', callback);
+
+        if (L.Browser.touch) {
+            L.DomEvent.on(el, this._touchstart, L.DomEvent.stopPropagation);
+        }
+
+        // Devices without a mouse fire "mouseover" on tap, but never “mouseout"
+        if (!L.Browser.pointer) {
+            L.DomEvent.on(el, 'click', this._onItemMouseOut, this);
+        }
+
+        return {
+            id: L.Util.stamp(el),
+            el: el,
+            callback: callback
+        };
+    },
+
+    _removeItem: function (id) {
+        var item,
+            el,
+            i, l, callback;
+
+        for (i = 0, l = this._items.length; i < l; i++) {
+            item = this._items[i];
+
+            if (item.id === id) {
+                el = item.el;
+                callback = item.callback;
+
+                if (callback) {
+                    L.DomEvent
+                        .off(el, 'mouseover', this._onItemMouseOver, this)
+                        .off(el, 'mouseover', this._onItemMouseOut, this)
+                        .off(el, 'mousedown', L.DomEvent.stopPropagation)
+                        .off(el, 'click', callback);
+
+                    if (L.Browser.touch) {
+                        L.DomEvent.off(el, this._touchstart, L.DomEvent.stopPropagation);
+                    }
+
+                    if (!L.Browser.pointer) {
+                        L.DomEvent.on(el, 'click', this._onItemMouseOut, this);
+                    }
+                }
+
+                this._container.removeChild(el);
+                this._items.splice(i, 1);
+
+                return item;
+            }
+        }
+        return null;
+    },
+
+    _createSeparator: function (container, index) {
+        var el = this._insertElementAt('div', L.Map.ContextMenu.BASE_CLS + '-separator', container, index);
+
+        return {
+            id: L.Util.stamp(el),
+            el: el
+        };
+    },
+
+    _createEventHandler: function (el, func, context, hideOnSelect) {
+        var me = this,
+            map = this._map,
+            disabledCls = L.Map.ContextMenu.BASE_CLS + '-item-disabled',
+            hideOnSelect = (hideOnSelect !== undefined) ? hideOnSelect : true;
+
+        return function (e) {
+            if (L.DomUtil.hasClass(el, disabledCls)) {
+                return;
+            }
+
+            if (hideOnSelect) {
+                me._hide();
+            }
+
+            if (func) {
+                func.call(context || map, me._showLocation);
+            }
+
+            me._map.fire('contextmenu:select', {
+                contextmenu: me,
+                el: el
+            });
+        };
+    },
+
+    _insertElementAt: function (tagName, className, container, index) {
+        var refEl,
+            el = document.createElement(tagName);
+
+        el.className = className;
+
+        if (index !== undefined) {
+            refEl = container.children[index];
+        }
+
+        if (refEl) {
+            container.insertBefore(el, refEl);
+        } else {
+            container.appendChild(el);
+        }
+
+        return el;
+    },
+
+    _show: function (e) {
+        this._showAtPoint(e.containerPoint, e);
+    },
+
+    _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
+            };
+
+            if (data && data.relatedTarget){
+                this._showLocation.relatedTarget = data.relatedTarget;
+            }
+
+            this._setPosition(pt);
+
+            if (!this._visible) {
+                this._container.style.display = 'block';
+                this._visible = true;
+            }
+
+            this._map.fire('contextmenu.show', event);
+        }
+    },
+
+    _hide: function () {
+        if (this._visible) {
+            this._visible = false;
+            this._container.style.display = 'none';
+            this._map.fire('contextmenu.hide', {contextmenu: this});
+        }
+    },
+
+    _getIcon: function (options) {
+        return L.Browser.retina && options.retinaIcon || options.icon;
+    },
+
+    _getIconCls: function (options) {
+        return L.Browser.retina && options.retinaIconCls || options.iconCls;
+    },
+
+    _setPosition: function (pt) {
+        var mapSize = this._map.getSize(),
+            container = this._container,
+            containerSize = this._getElementSize(container),
+            anchor;
+
+        if (this._map.options.contextmenuAnchor) {
+            anchor = L.point(this._map.options.contextmenuAnchor);
+            pt = pt.add(anchor);
+        }
+
+        container._leaflet_pos = pt;
+
+        if (pt.x + containerSize.x > mapSize.x) {
+            container.style.left = 'auto';
+            container.style.right = Math.min(Math.max(mapSize.x - pt.x, 0), mapSize.x - containerSize.x - 1) + 'px';
+        } else {
+            container.style.left = Math.max(pt.x, 0) + 'px';
+            container.style.right = 'auto';
+        }
+
+        if (pt.y + containerSize.y > mapSize.y) {
+            container.style.top = 'auto';
+            container.style.bottom = Math.min(Math.max(mapSize.y - pt.y, 0), mapSize.y - containerSize.y - 1) + 'px';
+        } else {
+            container.style.top = Math.max(pt.y, 0) + 'px';
+            container.style.bottom = 'auto';
+        }
+    },
+
+    _getElementSize: function (el) {
+        var size = this._size,
+            initialDisplay = el.style.display;
+
+        if (!size || this._sizeChanged) {
+            size = {};
+
+            el.style.left = '-999999px';
+            el.style.right = 'auto';
+            el.style.display = 'block';
+
+            size.x = el.offsetWidth;
+            size.y = el.offsetHeight;
+
+            el.style.left = 'auto';
+            el.style.display = initialDisplay;
+
+            this._sizeChanged = false;
+        }
+
+        return size;
+    },
+
+    _onKeyDown: function (e) {
+        var key = e.keyCode;
+
+        // If ESC pressed and context menu is visible hide it
+        if (key === 27) {
+            this._hide();
+        }
+    },
+
+    _onItemMouseOver: function (e) {
+        L.DomUtil.addClass(e.target || e.srcElement, 'over');
+    },
+
+    _onItemMouseOut: function (e) {
+        L.DomUtil.removeClass(e.target || e.srcElement, 'over');
+    }
+});
+
+L.Map.addInitHook('addHandler', 'contextmenu', L.Map.ContextMenu);
+L.Mixin.ContextMenu = {
+    bindContextMenu: function (options) {
+        L.setOptions(this, options);
+        this._initContextMenu();
+
+        return this;
+    },
+
+    unbindContextMenu: function (){
+        this.off('contextmenu', this._showContextMenu, this);
+
+        return this;
+    },
+
+    addContextMenuItem: function (item) {
+            this.options.contextmenuItems.push(item);
+    },
+
+    removeContextMenuItemWithIndex: function (index) {
+        var items = [];
+        for (var i = 0; i < this.options.contextmenuItems.length; i++) {
+            if (this.options.contextmenuItems[i].index == index){
+                items.push(i);
+            }
+        }
+        var elem = items.pop();
+        while (elem !== undefined) {
+            this.options.contextmenuItems.splice(elem,1);
+            elem = items.pop();
+        }
+    },
+
+    replaceContextMenuItem: function (item) {
+        this.removeContextMenuItemWithIndex(item.index);
+        this.addContextMenuItem(item);
+    },
+
+    _initContextMenu: function () {
+        this._items = [];
+
+        this.on('contextmenu', this._showContextMenu, this);
+    },
+
+    _showContextMenu: function (e) {
+        var itemOptions,
+            data, pt, i, l;
+
+        if (this._map.contextmenu) {
+            data = L.extend({relatedTarget: this}, e);
+
+            pt = this._map.mouseEventToContainerPoint(e.originalEvent);
+
+            if (!this.options.contextmenuInheritItems) {
+                this._map.contextmenu.hideAllItems();
+            }
+
+            for (i = 0, l = this.options.contextmenuItems.length; i < l; i++) {
+                itemOptions = this.options.contextmenuItems[i];
+                this._items.push(this._map.contextmenu.insertItem(itemOptions, itemOptions.index));
+            }
+
+            this._map.once('contextmenu.hide', this._hideContextMenu, this);
+
+            this._map.contextmenu.showAt(pt, data);
+        }
+    },
+
+    _hideContextMenu: function () {
+        var i, l;
+
+        for (i = 0, l = this._items.length; i < l; i++) {
+            this._map.contextmenu.removeItem(this._items[i]);
+        }
+        this._items.length = 0;
+
+        if (!this.options.contextmenuInheritItems) {
+            this._map.contextmenu.showAllItems();
+        }
+    }
+};
+
+var classes = [L.Marker, L.Path],
+    defaultOptions = {
+        contextmenu: false,
+        contextmenuItems: [],
+        contextmenuInheritItems: true
+    },
+    cls, i, l;
+
+for (i = 0, l = classes.length; i < l; i++) {
+    cls = classes[i];
+
+    // L.Class should probably provide an empty options hash, as it does not test
+    // for it here and add if needed
+    if (!cls.prototype.options) {
+        cls.prototype.options = defaultOptions;
+    } else {
+        cls.mergeOptions(defaultOptions);
+    }
+
+    cls.addInitHook(function () {
+        if (this.options.contextmenu) {
+            this._initContextMenu();
+        }
+    });
+
+    cls.include(L.Mixin.ContextMenu);
+}
+return L.Map.ContextMenu;
+});