]> git.openstreetmap.org Git - rails.git/commitdiff
Merge 16110:16216 from trunk.
authorTom Hughes <tom@compton.nu>
Mon, 29 Jun 2009 16:50:34 +0000 (16:50 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 29 Jun 2009 16:50:34 +0000 (16:50 +0000)
46 files changed:
app/controllers/geocoder_controller.rb
app/controllers/site_controller.rb
app/helpers/browse_helper.rb
app/views/browse/_containing_relation.html.erb
app/views/browse/_map.html.erb
app/views/browse/_relation_member.html.erb
app/views/browse/node_history.html.erb
app/views/browse/relation_history.html.erb
app/views/browse/way_history.html.erb
app/views/site/_search.html.erb
app/views/site/index.html.erb
app/views/site/key.html.erb
config/initializers/asset_tag_helper.rb [deleted file]
config/key.yml
config/locales/be.yml
config/locales/ca.yml
config/locales/de.yml
config/locales/el.yml
config/locales/en.yml
config/locales/es.yml
config/locales/fr.yml
config/locales/he.yml
config/locales/hi.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/nl.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/ru.yml
config/locales/sl.yml
config/locales/yo.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/routes.rb
lib/short_link.rb [new file with mode: 0644]
public/images/key/osmarender/motorway.png [new file with mode: 0644]
public/javascripts/map.js
public/javascripts/site.js
public/openlayers/OpenLayers.js
public/openlayers/OpenStreetMap.js
public/stylesheets/site.css
script/locale/diff
test/integration/short_link_test.rb [new file with mode: 0644]
test/unit/short_link_test.rb [new file with mode: 0644]

index f286ab9d3401046e51828e1e8e430e8f58338e22..c7efec154a646afcb850d2b36134b1cdf6fe5606 100644 (file)
@@ -3,6 +3,8 @@ class GeocoderController < ApplicationController
   require 'net/http'
   require 'rexml/document'
 
+  before_filter :set_locale
+
   def search
     query = params[:query]
     results = Array.new
index 2a826770d4144b2eafa680ebdd0f189f56de0b79..1478c5773cda99cf2b59c9b15f6fbfc4eaba6cb3 100644 (file)
@@ -1,5 +1,5 @@
 class SiteController < ApplicationController
-  layout 'site',:except => [:key]
+  layout 'site', :except => [:key, :permalink]
 
   before_filter :authorize_web
   before_filter :set_locale
@@ -9,6 +9,24 @@ class SiteController < ApplicationController
     render :action => 'index'
   end
 
+  def permalink
+    lon, lat, zoom = ShortLink::decode(params[:code])
+    new_params = params.clone
+    new_params.delete :code
+    if new_params.has_key? :m
+      new_params.delete :m
+      new_params[:mlat] = lat
+      new_params[:mlon] = lon
+    else
+      new_params[:lat] = lat
+      new_params[:lon] = lon
+    end
+    new_params[:zoom] = zoom
+    new_params[:controller] = 'site'
+    new_params[:action] = 'index'
+    redirect_to new_params
+  end
+
   def key
     expires_in 7.days, :public => true
   end
index 67420151c48efa016f844028b7bfc9d0997af330..879d516eff7b5643f4bd79ca4383ad7088a7c967 100644 (file)
@@ -4,12 +4,12 @@ module BrowseHelper
   end
   
   def printable_name(object, version=false)
-    name = object.id.to_s
+    name = t 'printable_name.with_id', :id => object.id.to_s
     if version
-      name = "#{name}, v#{object.version.to_s}"
+      name = t 'printable_name.with_version', :id => name, :version => object.version.to_s
     end
     if object.tags.include? 'name'
-      name = "#{object.tags['name'].to_s} (#{name})"
+      name = t 'printable_name.with_name',  :name => object.tags['name'].to_s, :id => name
     end
     return name
   end
index ee704acc87cd52e48db190fc7cce453e5d5e295f..474e80f788f316800f54b7b6c67ce9ee3b96a3d6 100644 (file)
@@ -1,8 +1,11 @@
 <tr>
-  <td>
-    <%= link_to t('browse.containing_relation.relation', :relation_name => h(printable_name(containing_relation.relation))), :action => "relation", :id => containing_relation.relation.id.to_s %>
-    <% unless containing_relation.member_role.blank? %>
-      <%= t 'browse.containing_relation.relation_as', :relation_role => h(containing_relation.member_role) %>
-    <% end %>
-  </td>
+  <td><%=
+    linked_name = link_to h(printable_name(containing_relation.relation)), :action => "relation", :id => containing_relation.relation.id.to_s
+
+    if containing_relation.member_role.blank?
+      t 'browse.containing_relation.entry', :relation_name => linked_name
+    else
+      t 'browse.containing_relation.entry_role', :relation_name => linked_name, :relation_role => h(containing_relation.member_role)
+    end
+  %></td>
 </tr>
index 248cf27dd73f3db03313344aa03c7941a0e322a8..f84a2ec9f3d034d3bd7ebc0b1f58ca0d71f89d73 100644 (file)
@@ -6,77 +6,67 @@
     <div id="small_map" style="width:250px; height: 300px; border: solid 1px black">
     </div>
     <span id="loading"><%= t 'browse.map.loading' %></span>
-    <a id="larger_map" href=""></a>
+    <a id="area_larger_map" href=""></a>
+    <% unless map.instance_of? Changeset %>
+      <br />
+      <a id="object_larger_map" href=""></a>
+    <% end %>
   <% else %>
     <%= t 'browse.map.deleted' %>
   <% end %>
 </td>
-<script type="text/javascript">
-  OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
-
-  function init() {
-    var map = createMap("small_map", {
-      controls: [ new OpenLayers.Control.Navigation() ]
-    });
-
-    <% if map.instance_of? Changeset %>
-    var minlon = <%= map.min_lon / GeoRecord::SCALE.to_f %>;
-    var minlat = <%= map.min_lat / GeoRecord::SCALE.to_f %>;
-    var maxlon = <%= map.max_lon / GeoRecord::SCALE.to_f %>;
-    var maxlat = <%= map.max_lat / GeoRecord::SCALE.to_f %>;
-    var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
-
-    setMapExtent(bbox);
-    addBoxToMap(bbox);
+<% if map.instance_of? Changeset or map.visible %>
+  <script type="text/javascript">
+    OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
 
-    $("loading").innerHTML = "";
+    function init() {
+      var map = createMap("small_map", {
+        controls: [ new OpenLayers.Control.Navigation() ]
+      });
 
-    $("larger_map").href = '/?minlon='+minlon+'&minlat='+minlat+'&maxlon='+maxlon+'&maxlat='+maxlat+'&box=yes';
-    $("larger_map").innerHTML = "<%= t 'browse.map.view_larger_map' %>";
-    <% else %>
-    var obj_type = "<%= map.class.name.downcase %>";
-    var obj_id = <%= map.id %>;
-    var url = "/api/<%= "#{API_VERSION}" %>/<%= map.class.name.downcase %>/<%= map.id %>";
+      <% if map.instance_of? Changeset %>
+        var minlon = <%= map.min_lon / GeoRecord::SCALE.to_f %>;
+        var minlat = <%= map.min_lat / GeoRecord::SCALE.to_f %>;
+        var maxlon = <%= map.max_lon / GeoRecord::SCALE.to_f %>;
+        var maxlat = <%= map.max_lat / GeoRecord::SCALE.to_f %>;
+        var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
 
-    if (obj_type != "node") {
-      url += "/full";
-    }
-
-    var osm_layer = new OpenLayers.Layer.GML("OSM", url, {
-      format: OpenLayers.Format.OSM,
-      projection: new OpenLayers.Projection("EPSG:4326")
-    });
+        setMapExtent(bbox);
+        addBoxToMap(bbox);
 
-    osm_layer.events.register("loadend", osm_layer, function() {
-      $("loading").innerHTML = "";
+        $("loading").innerHTML = "";
 
-      if (this.features.length) { 
-        var extent =  this.features[0].geometry.getBounds();
+        $("area_larger_map").href = '/?minlon='+minlon+'&minlat='+minlat+'&maxlon='+maxlon+'&maxlat='+maxlat+'&box=yes';
+        $("area_larger_map").innerHTML = "<%= t 'browse.map.larger.area' %>";
+      <% else %>
+        var obj_type = "<%= map.class.name.downcase %>";
+        var obj_id = <%= map.id %>;
+        var url = "/api/<%= "#{API_VERSION}" %>/<%= map.class.name.downcase %>/<%= map.id %>";
 
-        for (var i = 1; i < this.features.length; i++) {
-          extent.extend(this.features[i].geometry.getBounds());
+        if (obj_type != "node") {
+          url += "/full";
         }
 
-        if (extent) {
-          this.map.zoomToExtent(extent);
-        } else {
-          this.map.zoomToMaxExtent();
-       }
+        addObjectToMap(url, true, function(extent) {
+          $("loading").innerHTML = "";
 
-       var center = getMapCenter();
-        $("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
-        $("larger_map").innerHTML = "<%= t 'browse.map.view_larger_map' %>";
-      } else {
-        $("small_map").style.display = "none";
-      }
-    });
+          if (extent) {
+            extent.transform(map.getProjectionObject(), map.displayProjection);
 
-    map.addLayer(osm_layer);
+            $("area_larger_map").href = '/?minlon='+extent.left+'&minlat='+extent.bottom+'&maxlon='+extent.right+'&maxlat='+extent.top;
+            $("area_larger_map").innerHTML = "<%= t 'browse.map.larger.area' %>";
 
-    osm_layer.loadGML();
-    osm_layer.loaded = true;
-    <% end %>
-  }
+            <% unless map.instance_of? Changeset %>
+              $("object_larger_map").href = '/?<%= map.class.to_s.downcase %>=<%= map.id %>';
+              $("object_larger_map").innerHTML = "<%= t('browse.map.larger.' + map.class.to_s.downcase) %>";
+            <% end %>
+          } else {
+            $("small_map").style.display = "none";
+          }
+        });
+      <% end %>
+    }
 
-  window.onload = init;
-</script>
+    window.onload = init;
+  </script>
+<% end %>
index 39b89bc0100681be236d477ec7df387bb325e580..cee2e0e75b7157aeb7fcf1f95d0d525aab3c2c06 100644 (file)
@@ -1,10 +1,12 @@
 <tr>
-  <td>
-    <%= relation_member.member_type.capitalize %>
-    <%= link_to h(printable_name(relation_member.member)), :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s %>
-    <% unless relation_member.member_role.blank? %>
-      <%= t'browse.relation_member.as' %>
-      <%= h(relation_member.member_role) %>
-    <% end %>
-  </td>
+  <td><%=
+    linked_name = link_to h(printable_name(relation_member.member)), :action => relation_member.member_type.downcase, :id => relation_member.member_id.to_s
+    type_str = t'browse.relation_member.type.' + relation_member.member_type.downcase
+
+    if relation_member.member_role.blank?
+      t'browse.relation_member.entry', :type => type_str, :name => linked_name
+    else
+      t'browse.relation_member.entry_role', :type => type_str, :name => linked_name, :role => h(relation_member.member_role)
+    end
+  %></td>
 </tr> 
index 4a34e345231ca2fd02ade4b55e2b95ea5cfbb075..fe6c79812cf1b592e0f365d7ac7035dfa6f5baaf 100644 (file)
@@ -2,7 +2,7 @@
 @name = printable_name @node
 @title = t('browse.node_history.node_history') + ' | ' + @name
 %>
-<h2>Node History: <%= h(@name) %></h2>
+<h2><%= t'browse.node_history.node_history_title', :node_name => link_to(h(@name), :action => "node", :id => @node.id) %></h2>
 
 <table width="100%">
   <tr valign="top">
index 45f3d14004c8daa508b1fc595021943ba20167dd..649638a76c1200732324d0f365406ed50e5b06f5 100644 (file)
@@ -2,7 +2,7 @@
 @name = printable_name @relation
 @title = t('browse.relation_history.relation_history') + ' | ' + @name
 %>
-<h2><%= t'browse.relation_history.relation_history_title', :relation_name => h(@name) %></h2>
+<h2><%= t'browse.relation_history.relation_history_title', :relation_name => link_to(h(@name), :action => "relation", :id => @relation.id) %></h2>
 
 <table width="100%">
   <tr valign="top">
index edb967e9ecb00a1548a994eed9986a9a59b2c82f..f61fa6fa142ee7167603fdbc5480713767467f3b 100644 (file)
@@ -2,7 +2,7 @@
 @name = printable_name @way
 @title = t('browse.way_history.way_history') + ' | ' + @name
 %>
-<h2><%= t'browse.way_history.way_history_title', :way_name => h(@name) %></h2>
+<h2><%= t'browse.way_history.way_history_title', :way_name => link_to(h(@name), :action => "way", :id => @way.id) %></h2>
 
 <table width="100%">
   <tr valign="top">
index b57a1f984f0381308322d9e78ccfb23119000cef..d6c1e38fa08b24e8449be7c3292e4ae890c3e91a 100644 (file)
@@ -1,7 +1,7 @@
 <script type="text/javascript">
 <!--
   function startSearch() {
-    updateSidebar("Search Results", "<p class='search_results_entry'>Searching...<\/p>");
+    updateSidebar("<%= t 'site.sidebar.search_results' %>", "<p class='search_results_entry'><%= t 'site.search.searching' %><\/p>");
 
     $("search_field").style.display = "none";
     $("search_active").style.display = "inline";
index ecb732c9b198d5e74daeb4014e11c0773bdff2c5..40a7a3fbca52e085932194a983ba3ee4ef383e03 100644 (file)
 </noscript>
 
 <div id="map">
-<div id="permalink"><a href="/" id="permalinkanchor"><%= t 'site.index.permalink' %></a></div>
+  <div id="permalink">
+    <a href="/" id="permalinkanchor"><%= t 'site.index.permalink' %></a><br/>
+    <a href="/" id="shortlinkanchor"><%= t 'site.index.shortlink' %></a>
+  </div>
 </div> 
 
 <div id="attribution">
 
 <%
 if params['mlon'] and params['mlat'] 
-       marker = true
-       mlon = h(params['mlon'])
-       mlat = h(params['mlat'])
+    marker = true
+    mlon = h(params['mlon'])
+    mlat = h(params['mlat'])
+end
+
+if params['node'] or params['way'] or params['relation']
+    object = true
+    object_zoom = true
+
+    if params['node']
+        object_type = 'node'
+        object_id = h(params['node'])
+    elsif params['way']
+        object_type = 'way'
+        object_id = h(params['way'])
+    elsif params['relation']
+        object_type = 'relation'
+        object_id = h(params['relation'])
+    end
 end
 
 if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
-       bbox = true
-       minlon = h(params['minlon'])
-       minlat = h(params['minlat'])
-       maxlon = h(params['maxlon'])
-       maxlat = h(params['maxlat'])
-       box = true if params['box']=="yes" 
+    bbox = true
+    minlon = h(params['minlon'])
+    minlat = h(params['minlat'])
+    maxlon = h(params['maxlon'])
+    maxlat = h(params['maxlat'])
+    box = true if params['box']=="yes" 
+    object_zoom = false
 end
 
 # Decide on a lat lon to initialise the map with. Various ways of doing this
-if params['lon'] and params['lat'] 
-       lon =  h(params['lon'])
-       lat =  h(params['lat'])
-       zoom =  h(params['zoom'] || '5')
-       layers = h(params['layers'])
-       
+if params['lon'] and params['lat']
+    lon =  h(params['lon'])
+    lat =  h(params['lat'])
+    zoom =  h(params['zoom'] || '5')
+    layers = h(params['layers'])
+    object_zoom = false
 elsif params['mlon'] and params['mlat']
-       lon = h(params['mlon']) 
-       lat = h(params['mlat'])
-       zoom =  h(params['zoom'] || '12')
-       layers = h(params['layers'])
-       
+    lon = h(params['mlon']) 
+    lat = h(params['mlat'])
+    zoom =  h(params['zoom'] || '12')
+    layers = h(params['layers'])
+    object_zoom = false
 elsif cookies.key?("_osm_location")
-       lon,lat,zoom,layers = cookies["_osm_location"].split("|")
-       
+    lon,lat,zoom,layers = cookies["_osm_location"].split("|")
 elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? 
-       lon =  @user.home_lon
-       lat =  @user.home_lat
-       zoom = '10'
+    lon =  @user.home_lon
+    lat =  @user.home_lat
+    zoom = '10'
 else
-       session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location]
-
-       if session[:location]
-               bbox = true
-               minlon = session[:location][:minlon]
-               minlat = session[:location][:minlat]
-               maxlon = session[:location][:maxlon]
-               maxlat = session[:location][:maxlat]
-       else
-               lon =  '-0.1' 
-               lat =  '51.5' 
-               zoom =  h(params['zoom'] || '5') 
-       end
-       layers = h(params['layers']) 
+    session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location]
+
+    if session[:location]
+        bbox = true
+        minlon = session[:location][:minlon]
+        minlat = session[:location][:minlat]
+        maxlon = session[:location][:maxlon]
+        maxlat = session[:location][:maxlat]
+    else
+        lon =  '-0.1' 
+        lat =  '51.5' 
+        zoom =  h(params['zoom'] || '5') 
+    end
+
+    layers = h(params['layers']) 
 end
 %>
 
@@ -94,7 +114,6 @@ end
 <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
 <%= javascript_include_tag 'map.js' %>
 
-
 <script type="text/javascript" defer="defer">
   <!--
   var brokenContentSize = $("content").offsetWidth == 0;
@@ -107,41 +126,55 @@ end
     map = createMap("map");
 
     <% unless OSM_STATUS == :api_offline or OSM_STATUS == :database_offline %>
-    map.dataLayer = new OpenLayers.Layer("<%= I18n.t 'browse.start_rjs.data_layer_name' %>", { "visibility": false });
-    map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData);
-    map.addLayer(map.dataLayer);
+      map.dataLayer = new OpenLayers.Layer("<%= I18n.t 'browse.start_rjs.data_layer_name' %>", { "visibility": false });
+      map.dataLayer.events.register("visibilitychanged", map.dataLayer, toggleData);
+      map.addLayer(map.dataLayer);
     <% end %>
 
-    <% if bbox %>
-    var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>);
+    <% unless object_zoom %>
+      <% if bbox %>
+        var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>);
 
-    setMapExtent(bbox);
-    <%    if box %>
-    // IE requires Vector layers be initialised on page load, and not under deferred script conditions
-    Event.observe(window, 'load', function() {addBoxToMap(bbox)});
-    <%    end %>
-    <% else %>
-    var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
-    var zoom = <%= zoom %>;
+        setMapExtent(bbox);
 
-    <%    if params['scale'] and params['scale'].length > 0 then %>
-    zoom = scaleToZoom(<%= params['scale'].to_f() %>);
-    <%    end %>
+        <% if box %>
+          // IE requires Vector layers be initialised on page load, and not under deferred script conditions
+          Event.observe(window, 'load', function() { addBoxToMap(bbox) });
+        <% end %>
+      <% else %>
+        var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
+        var zoom = <%= zoom %>;
 
-    setMapCenter(centre, zoom);
+        <% if params['scale'] and params['scale'].length > 0 then %>
+          zoom = scaleToZoom(<%= params['scale'].to_f() %>);
+        <% end %>
+
+        setMapCenter(centre, zoom);
+      <% end %>
+
+      updateLocation();
     <% end %>
 
     <% if !layers.nil? and !layers.empty? %>
-    setMapLayers("<%= layers %>");
+      setMapLayers("<%= layers %>");
     <% end %>
 
     <% if marker %>
-    marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>));
+      marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>));
+    <% end %>
+
+    <% if object %>
+      var url = "/api/<%= "#{API_VERSION}" %>/<%= object_type %>/<%= object_id %>";
+
+      <% if object_type != "node" %>
+        url += "/full";
+      <% end %>
+
+      addObjectToMap(url, <%= object_zoom %>);
     <% end %>
 
     map.events.register("moveend", map, updateLocation);
     map.events.register("changelayer", map, updateLocation);
-    updateLocation();
 
     handleResize();
   }
@@ -175,8 +208,15 @@ end
     var layers = getMapLayers();
     var extents = getMapExtent();
     var expiry = new Date();
+    var objtype;
+    var objid;
+
+    <% if object %>
+      objtype = "<%= object_type %>";
+      objid = <%= object_id %>;
+    <% end %>
 
-    updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top);
+    updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, objtype, objid);
 
     expiry.setYear(expiry.getFullYear() + 10); 
     document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString();
index 97544242671847f531ed8accc0a44767073f98bb..5879701a2e4350c2ca6e666d4f569ef803787775 100644 (file)
@@ -10,7 +10,7 @@
                 <%= image_tag "key/#{name}/#{entry['image']}" %>
               </td>
               <td class="mapkey-table-value">
-                <%= t "site.key.table.entry.#{entry['name']}" %>
+                <%= [*t("site.key.table.entry.#{entry['name']}")].to_sentence %>
               </td>
             </tr>
           <% end %>
diff --git a/config/initializers/asset_tag_helper.rb b/config/initializers/asset_tag_helper.rb
deleted file mode 100644 (file)
index a5f2e5a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module ActionView
-  module Helpers
-    module AssetTagHelper
-      def rewrite_asset_path!(source)
-        asset_id = rails_asset_id(source)
-        source << "/#{asset_id}" if !asset_id.blank?
-      end
-    end
-  end
-end
index 69b883c0f5b4946bad8ff37249978937e01eef84..83d47cdf5dfc0dfd6a2d8ef47f07a143ad02cbd9 100644 (file)
@@ -50,3 +50,6 @@ mapnik:
   - { min_zoom: 15, max_zoom: 18, name: permissive, image: permissive.png }
   - { min_zoom: 15, max_zoom: 18, name: destination, image: destination.png }
   - { min_zoom: 12, max_zoom: 18, name: construction, image: construction.png }
+
+osmarender:
+  - { min_zoom: 0, max_zoom: 18, name: motorway, image: motorway.png }
index 000a70be92ba3d9feceb3d3237026bbf86689a47..4eba9b4328c287d06ce2c3cf3f3f28caf8b3e728 100644 (file)
@@ -98,12 +98,11 @@ be:
       version: "Версія:"
       in_changeset: "У наборы зменаў:"
     containing_relation:
-      relation: "Сувязь {{relation_name}}"
-      relation_as: "(як {{relation_role}})"
+      entry: "Сувязь {{relation_name}}"
+      entry_role: "Сувязь {{relation_name}} (як {{relation_role}})"
     map:
       loading: "Загрузка..."
       deleted: "Выдалены"
-      view_larger_map: "Прагледзець большую карту"
     node_details:
       coordinates: "Каардынаты: "
       part_of: "Частка:"
@@ -129,8 +128,6 @@ be:
     relation_history:
       relation_history: "Гісторыя сувязі"
       relation_history_title: "Гісторыя сувязі: {{relation_name}}"
-    relation_member:
-      as: "як"
     relation:
       relation: "Сувязь"
       relation_title: "Сувязь: {{relation_name}}"
index 084a869cff50a2d7ce71956bfe993a9c8aaad642..e9c2be56ec1ba7ef55d05e39d5a495265d2d3b24 100644 (file)
@@ -95,12 +95,11 @@ ca:
       version: "Versió"
       in_changeset: "Al conjunt de canvis:"
     containing_relation:
-      relation: "Relació {{relation_name}}"
-      relation_as: "(com a  {{relation_role}})"
+      entry: "Relació {{relation_name}}"
+      entry_role: "Relació {{relation_name}} (com a  {{relation_role}})"
     map:
       loading: "Carregant..."
       deleted: "Esborrat"
-      view_larger_map: "Veure el mapa més gran"
     node_details:
       coordinates: "Coordenades:"
       part_of: "Part de:"
@@ -130,8 +129,6 @@ ca:
     relation_history:
       relation_history: "Historial de la relació"
       relation_history_title: "Historial de la relació: {{relation_name}}"
-    relation_member:
-      as: "com a"
     relation:
       relation: "Relació"
       relation_title: "Relació: {{relation_name}}"
index fb2804bef46fe011d84ec8cfe088b6171aee26e1..b3a5549ad7ea77945fcb5ae70918f863d4ab28a5 100644 (file)
@@ -72,6 +72,10 @@ de:
         description: "Beschreibung"
         languages: "Sprachen"
         pass_crypt: "Passwort"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, v{{version}}"
+    with_name: "{{name}} ({{id}})"
   map:
     view: Karte
     edit: Bearbeiten
@@ -100,17 +104,22 @@ de:
       version: "Version:"
       in_changeset: "Im Changeset:"
     containing_relation:
-      relation: "Relation {{relation_name}}"
-      relation_as: "(als {{relation_role}})"
+      entry: "Relation {{relation_name}}"
+      entry_role: "Relation {{relation_name}} (als {{relation_role}})"
     map:
       loading: "Laden..."
       deleted: "Gelöscht"
-      view_larger_map: "Größere Karte anzeigen"
+      larger:
+        area: "Bereich größerer Karte"
+        node: "Knoten auf größerer Karte"
+        way: "Weg auf größerer Karte"
+        relation: "Relation auf größerer Karte"
     node_details:
       coordinates: "Koordinaten: "
       part_of: "Teil von:"
     node_history:
       node_history: "Knoten-Chronik"
+      node_history_title: "Knoten-Chronik: {{node_name}}"
       download: "{{download_xml_link}} oder {{view_details_link}}"
       download_xml: "XML herunterladen"
       view_details: "Detailseite anzeigen"
@@ -137,7 +146,12 @@ de:
       relation_history: "Relations-Chronik"
       relation_history_title: "Relations-Chronik: {{relation_name}}"
     relation_member:
-      as: "des Typs"
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} als {{role}}"
+      type:
+        node: "Knoten"
+        way: "Weg"
+        relation: "Relation"
     relation:
       relation: "Relation"
       relation_title: "Relation: {{relation_name}}"
@@ -375,7 +389,7 @@ de:
     donate_link_text: Spende
     help_wiki: "Hilfe & Wiki"
     help_wiki_tooltip: "Hilfe & Wiki; Wiki des Projekts"
-    help_wiki_url: "http://wiki.openstreetmap.org/wiki/Hauptseite"
+    help_wiki_url: "http://wiki.openstreetmap.org/index.php?title=Hauptseite&uselang=de"
     news_blog: "News-Blog"
     news_blog_tooltip: "News-Blog über OpenStreetMap, freie geographische Daten, etc."
     shop: Shop
@@ -541,6 +555,7 @@ de:
       js_2: "OpenStreetMap nutzt Javascript für die Kartendarstellung."
       js_3: 'Solltest bei dir kein Javascript möglich sein, kannst du auf der <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home Website</a> eine Version ohne Javascript benutzen.'
       permalink: Permalink
+      shortlink: Shortlink
       license:
         notice: "Lizenziert unter {{license_name}} Lizenz durch das {{project_name}} und seine Mitwirkenden."
         license_name: "Creative Commons Attribution-Share Alike 2.0"
@@ -584,10 +599,18 @@ de:
           footway: "Fussweg"
           rail: "Eisenbahn"
           subway: "U-Bahn"
-          tram: "Straßenbahn, Stadtbahn"
-          cable: "Seilbahn"
-          runway: "Start-/Landebahn, Rollfeld"
-          apron: "Vorfeld, Flughafengebäude"
+          tram:
+            - Light rail
+            - tram
+          cable:
+            - Cable car
+            - chair lift
+          runway:
+            - Airport Runway
+            - taxiway
+          apron:
+            - Airport apron
+            - terminal
           admin: "Landesgrenzen, sonstige Grenzen"
           forest: "Forst"
           wood: "Naturwald"
@@ -595,12 +618,16 @@ de:
           park: "Park"
           resident: "Wohngebiet"
           tourist: "Touristenattraktion"
-          common: "Wiese, Grünfläche"
+          common:
+            - Common
+            - meadow
           retail: "Einkaufszentrum"
           industrial: "Industriegebiet"
           commercial: "Gewerbegebiet"
           heathland: "Heide"
-          lake: "See, Stausee"
+          lake:
+            - Lake
+            - reservoir
           farm: "Landwirtschaft"
           brownfield: "Brachland"
           cemetery: "Friedhof"
@@ -612,7 +639,9 @@ de:
           school: "Schule, Universität"
           building: "Besonderes Gebäude"
           station: "Bahnhof"
-          summit: "Gipfel, Bergspitze"
+          summit:
+            - Summit
+            - peak
           tunnel: "Gestrichelter Rand = Tunnel"
           bridge: "Dicker Rand = Brücke"
           private: "Privater Zugang"
@@ -671,7 +700,7 @@ de:
       edit: "bearbeiten"
       owner: "Besitzer:"
       description: "Beschreibung:"
-      tags: "Tags"
+      tags: "Tags:"
       none: "Keine"
       make_public: "Mache diesen Track öffentlich"
       edit_track: "Diesen Track bearbeiten"
@@ -784,7 +813,7 @@ de:
       public editing:
         heading: "Öffentliches Bearbeiten: "
         enabled: "Aktiviert. Nicht anonym, bearbeiten der Kartendaten möglich."
-        enabled link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
+        enabled link: "http://wiki.openstreetmap.org/wiki/Anonymous_edits"
         enabled link text: "Was ist das?"
         disabled: "Deaktiviert, bearbeiten von Daten nicht möglich, alle bisherigen Bearbeitungen sind anonym."
         disabled link text: "Warum kann ich nichts bearbeiten?"
index b3d3d862ddd7e32101ddd4418c1c8bfa9a340ed4..0e98f4f558c5b6a404dae3f5d65f0f82e4863b8e 100644 (file)
@@ -105,7 +105,6 @@ el:
    map:
      loading: "Φόρτωση..."
      deleted: "Διαγραφή"
-     view_larger_map: "Δες μεγαλύτερο χάρτη"
    node_details:
      coordinates: "Συντεταγμένες: "
      part_of: "Κομμάτι του:"
@@ -135,8 +134,6 @@ el:
    relation_history:
      relation_history: "Ιστορια σχέσης"
      relation_history_title: "Ιστορια σχέσης: {{relation_name}}"
-   relation_member:
-     as: "as"
    relation:
      relation: "Σχέση"
      relation_title: "Σχέση: {{relation_name}}"
index a7d1b222cb8abfec807315134ed288380ddb3e45..e0a89f93ccc5f419ca47702d7a5ff2d18e942f35 100644 (file)
@@ -72,6 +72,10 @@ en:
         description: "Description"
         languages: "Languages"
         pass_crypt: "Password"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, v{{version}}"
+    with_name: "{{name}} ({{id}})"
   map:
     view: View
     edit: Edit
@@ -113,17 +117,22 @@ en:
       version: "Version:"
       in_changeset: "In changeset:"
     containing_relation:
-      relation: "Relation {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "Relation {{relation_name}}"
+      entry_role: "Relation {{relation_name}} (as {{relation_role}})"
     map:
       loading: "Loading..."
       deleted: "Deleted"
-      view_larger_map: "View Larger Map"
+      larger:
+        area: "View area on larger map"
+        node: "View node on larger map"
+        way: "View way on larger map"
+        relation: "View relation on larger map"
     node_details:
       coordinates: "Coordinates: "
       part_of: "Part of:"
     node_history:
       node_history: "Node History"
+      node_history_title: "Node History: {{node_name}}"
       download: "{{download_xml_link}} or {{view_details_link}}"
       download_xml: "Download XML"
       view_details: "view details"
@@ -150,7 +159,12 @@ en:
       relation_history: "Relation History"
       relation_history_title: "Relation History: {{relation_name}}"
     relation_member:
-      as: "as"
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} as {{role}}"
+      type:
+        node: "Node"
+        way: "Way"
+        relation: "Relation"
     relation:
       relation: "Relation"
       relation_title: "Relation: {{relation_name}}"
@@ -539,6 +553,7 @@ en:
       js_2: "OpenStreetMap uses javascript for its slippy map."
       js_3: 'You may want to try the <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home static tile browser</a> if you are unable to enable javascript.'
       permalink: Permalink
+      shortlink: Shortlink
       license:
         notice: "Licensed under the {{license_name}} license by the {{project_name}} and its contributors."
         license_name: "Creative Commons Attribution-Share Alike 2.0"
@@ -582,10 +597,18 @@ en:
           footway: "Footway"
           rail: "Railway"
           subway: "Subway"
-          tram: "Light rail; tram"
-          cable: "Cable car; chair lift"
-          runway: "Airport Runway; taxiway"
-          apron: "Airport apron; terminal"
+          tram:
+            - Light rail
+            - tram
+          cable:
+            - Cable car
+            - chair lift
+          runway:
+            - Airport Runway
+            - taxiway
+          apron:
+            - Airport apron
+            - terminal
           admin: "Administrative boundary"
           forest: "Forest"
           wood: "Wood"
@@ -593,12 +616,16 @@ en:
           park: "Park"
           resident: "Residential area"
           tourist: "Tourist attraction"
-          common: "Common; meadow"
+          common:
+            - Common
+            - meadow
           retail: "Retail area"
           industrial: "Industrial area"
           commercial: "Commercial area"
           heathland: "Heathland"
-          lake: "Lake; reservoir"
+          lake:
+            - Lake
+            - reservoir
           farm: "Farm"
           brownfield: "Brownfield site"
           cemetery: "Cemetery"
@@ -610,7 +637,9 @@ en:
           school: "School; university"
           building: "Significant building"
           station: "Railway station"
-          summit: "Summit; peak"
+          summit:
+            - Summit
+            - peak
           tunnel: "Dashed casing = tunnel"
           bridge: "Black casing = bridge"
           private: "Private access"
@@ -669,7 +698,7 @@ en:
       edit: "edit"
       owner: "Owner:"
       description: "Description:"
-      tags: "Tags"
+      tags: "Tags:"
       none: "None"
       make_public: "Make this track public permanently"
       edit_track: "Edit this track"
@@ -782,7 +811,7 @@ en:
       public editing:
         heading: "Public editing: "
         enabled: "Enabled. Not anonymous and can edit data."
-        enabled link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
+        enabled link: "http://wiki.openstreetmap.org/wiki/Anonymous_edits"
         enabled link text: "what's this?"
         disabled: "Disabled and cannot edit data, all previous edits are anonymous."
         disabled link text: "why can't I edit?"
index 1cc6fa404e3a1ea7e2d3b284d288b2eb20fc47d9..e36a7d9d5a5e93462eaeb59a5b9475e4e588592b 100644 (file)
@@ -96,12 +96,11 @@ es:
       version: "Versión:"
       in_changeset: "En el conjunto de cambios:"
     containing_relation:
-      relation: "Relación {{relation_name}}"
-      relation_as: "(como {{relation_role}})"
+      entry: "Relación {{relation_name}}"
+      entry_role: "Relación {{relation_name}} (como {{relation_role}})"
     map:
       loading: "Cargando..."
       deleted: "Borrado"
-      view_larger_map: "Ver mapa más grande"
     node_details:
       coordinates: "Coordenadas"
       part_of: "Parte de:"
@@ -131,8 +130,6 @@ es:
     relation_history:
       relation_history: "Historial de la relación"
       relation_history_title: "Historial de la relación {{relation_name}}:"
-    relation_member:
-      as: "como"
     relation:
       relation: "Relación"
       relation_title: "Relación {{relation_name}}:"
index 4ad6cf3a5be554ac17c4e03d8597e0d056de06d7..521ebe59b3a03d70f42ad084d0ec307f6c7ce049 100644 (file)
@@ -26,12 +26,11 @@ fr:
       version: "Version :"
       in_changeset: "Dans le changeset :"
     containing_relation:
-      relation: "Relation {{relation_name}}"
-      relation_as: "(en tant que {{relation_role}})"
+      entry: "Relation {{relation_name}}"
+      entry_role: "Relation {{relation_name}} (en tant que {{relation_role}})"
     map:
       loading: "Chargement..."
       deleted: "Effacé"
-      view_larger_map: "Agrandir la carte"
     node_details:
       part_of: "Faisant partie de:"
     node_history:
index 94c49602914bed30028d5176e6c160ec698a0fee..3f7f38b09ad83bbbc13f4c3f8a3bcb26faf6b82c 100644 (file)
@@ -98,12 +98,11 @@ he:
       version: "Version:"
       in_changeset: "In changeset:"
     containing_relation:
-      relation: "Relation {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "Relation {{relation_name}}"
+      entry_role: "Relation {{relation_name}} (as {{relation_role}})"
     map:
       loading: "Loading..."
       deleted: "Deleted"
-      view_larger_map: "View Larger Map"
     node_details:
       coordinates: "Coordinates: "
       part_of: "Part of:"
@@ -129,8 +128,6 @@ he:
     relation_history:
       relation_history: "Relation History"
       relation_history_title: "Relation History: {{relation_name}}"
-    relation_member:
-      as: "as"
     relation:
       relation: "Relation"
       relation_title: "Relation: {{relation_name}}"
index ee2c5ef2835e7a94b3aaef6262aa6246f1d2cdcf..e9f1b66111cc632dd2f2ab01b277d606b8615314 100644 (file)
@@ -98,12 +98,11 @@ hi:
       version: "संस्करण:"
       in_changeset: "इस changeset का अंग:"
     containing_relation:
-      relation: "संबंध {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "संबंध {{relation_name}}"
+      entry_role: "संबंध {{relation_name}} (as {{relation_role}})"
     map:
       loading: "Loading..."
       deleted: "मिटा दिया गया है"
-      view_larger_map: "नक्शे के व्यापक दृष्टिकोण"
     node_details:
       coordinates: "निर्देशांक:"
       part_of: "इन रास्तो का हिस्सा:"
@@ -133,8 +132,6 @@ hi:
     relation_history:
       relation_history: "संबंध का इतिहास"
       relation_history_title: "इस संबंध का इतिहास: {{relation_name}}"
-    relation_member:
-      as: "जैसे"
     relation:
       relation: "संबंध"
       relation_title: "संबंध: {{relation_name}}"
index 5de75c96ce4b0cb61ede6969eeea0262220c1d16..a0919446113be9060fa9b567d0d06afbce8831f7 100644 (file)
@@ -4,74 +4,78 @@ is:
   activerecord:
     # Translates all the model names, which is used in error handling on the web site
     models:
-      acl: "Access Control List"
-      changeset: "Changeset"
-      changeset_tag: "Changeset Tag"
-      country: "Country"
-      diary_comment: "Diary Comment"
-      diary_entry: "Diary Entry"
-      friend: "Friend"
-      language: "Language"
-      message: "Message"
-      node: "Node"
-      node_tag: "Node Tag"
-      notifier: "Notifier"
-      old_node: "Old Node"
-      old_node_tag: "Old Node Tag"
-      old_relation: "Old Relation"
-      old_relation_member: "Old Relation Member"
-      old_relation_tag: "Old Relation Tag"
-      old_way: "Old Way"
-      old_way_node: "Old Way Node"
-      old_way_tag: "Old Way Tag"
-      relation: "Relation"
-      relation_member: "Relation Member"
-      relation_tag: "Relation Tag"
-      session: "Session"
-      trace: "Trace"
-      tracepoint: "Trace Point"
-      tracetag: "Trace Tag"
-      user: "User"
-      user_preference: "User Preference"
-      user_token: "User Token"
-      way: "Way"
-      way_node: "Way Node"
-      way_tag: "Way Tag"
+      acl: "Aðgangslisti"
+      changeset: "Breytingarsett"
+      changeset_tag: "Eigindi breytingarsetts"
+      country: "Land"
+      diary_comment: "Bloggathugasemd"
+      diary_entry: "Bloggfærsla"
+      friend: "Vinur"
+      language: "Tungumál"
+      message: "Skilaboð"
+      node: "Hnútur"
+      node_tag: "Eigindi hnúts"
+      notifier: "Tilkynnandi"
+      old_node: "Gamall hnútur"
+      old_node_tag: "Eigindi gamals hnúts"
+      old_relation: "Gömul vensl"
+      old_relation_member: "Stak í gömlum venslum"
+      old_relation_tag: "Eigindi gamalla vensla"
+      old_way: "Gamall vegur"
+      old_way_node: "Hnútur í gömlum vegi"
+      old_way_tag: "Eigindi gamals vegs Tag"
+      relation: "Vensl"
+      relation_member: "Stak í venslum"
+      relation_tag: "Eigindi vensla"
+      session: "Seta"
+      trace: "Ferill"
+      tracepoint: "Ferilpunktur"
+      tracetag: "Eigindi ferils"
+      user: "Notandi"
+      user_preference: "Notandastillingar"
+      user_token: "Leynistrengur notanda"
+      way: "Vegur"
+      way_node: "Veghnútur"
+      way_tag: "Vegeigindi"
     # Translates all the model attributes, which is used in error handling on the web site
     # Only the ones that are used on the web site are translated at the moment
     attributes:
       diary_comment:
-        body: "Body"
+        body: "Texit"
       diary_entry:
-        user: "User"
-        title: "Title"
-        latitude: "Latitude"
-        longitude: "Longitude"
-        language: "Language"
+        user: "Notandi"
+        title: "Titill"
+        latitude: "Lengdargráða"
+        longitude: "Breiddargráða"
+        language: "Tungumál"
       friend:
-        user: "User"
-        friend: "Friend"
+        user: "Notandi"
+        friend: "Vinur"
       trace:
-        user: "User"
-        visible: "Visible"
-        name: "Name"
-        size: "Size"
-        latitude: "Latitude"
-        longitude: "Longitude"
-        public: "Public"
+        user: "Notandi"
+        visible: "Sýnileg"
+        name: "Nafn"
+        size: "Stærð"
+        latitude: "Lengdargráða"
+        longitude: "Breiddargráða"
+        public: "Sýnileg öllum"
         description: "Lýsing"
       message:
-        sender: "Sender"
-        title: "Title"
-        body: "Body"
-        recipient: "Recipient"
+        sender: "Sendandi"
+        title: "Titill"
+        body: "Texti"
+        recipient: "Móttakandi"
       user:
         email: "Netfang"
-        active: "Active"
-        display_name: "Display Name"
-        description: "Description"
+        active: "Virkur"
+        display_name: "Sýnilegt nafn"
+        description: "Lýsing"
         languages: "Tungumál"
         pass_crypt: "Lykilorð"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, útgáfa {{version}}"
+    with_name: "{{name}} ({{id}})"
   map:
     view: "Kort"
     edit: "Breyta"
@@ -80,9 +84,9 @@ is:
     changeset:
       title: "Breytingarsett"
       changeset: "Breytingarsett:"
-      download: "Niðurhala breytingunni á {{changeset_xml_link}} sniði eða á {{osmchange_xml_link}} sniði"
-      changesetxml: "Breytingarsetts XML"
-      osmchangexml: "osmChange XML"
+      download: "Niðurhala breytingunni á {{changeset_xml_link}} eða á {{osmchange_xml_link}}"
+      changesetxml: "Breytingarsetts XML sniði"
+      osmchangexml: "osmChange XML sniði"
     changeset_navigation:
       user:
         name: "{{user}}"
@@ -117,17 +121,22 @@ is:
       version: "Útgáfa:"
       in_changeset: "Í breytingarsetti:"
     containing_relation:
-      relation: "Venslunum „{{relation_name}}“"
-      relation_as: "(sem {{relation_role}})"
+      entry: "Venslunum {{relation_name}}"
+      entry_role: "Venslunum {{relation_name}} (sem „{{relation_role}}“)"
     map:
       loading: "Hleð..."
       deleted: "Eytt"
-      view_larger_map: "Skoða á stærra korti"
+      larger:
+        area: "Skoða þetta svæði á stærra korti"
+        node: "Skoða þennan hnút á stærra korti"
+        way: "Skoða þennan veg á stærra korti"
+        relation: "Skoða þessi vensl á stærra korti"
     node_details:
       coordinates: "Hnit: "
       part_of: "Hluti af:"
     node_history:
       node_history: "Breytingarskrá hnúts"
+      node_history_title: "Breytingarskrá hnúts: {{node_name}}"
       download: "{{download_xml_link}} eða {{view_details_link}}"
       download_xml: "Hala niður á XML sniði"
       view_details: "sýna breytingarsögu"
@@ -154,7 +163,12 @@ is:
       relation_history: "Breytingarskrá vensla "
       relation_history_title: "Breytingarskrá vensla: {{relation_name}}"
     relation_member:
-      as: "sem"
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} sem „{{role}}“"
+      type:
+        node: "Hnúturinn"
+        way: "Vegurinn"
+        relation: "Venslin"
     relation:
       relation: "Vensl"
       relation_title: "Vensl: {{relation_name}}"
@@ -213,7 +227,7 @@ is:
       download_xml: "Hala niður á XML sniði"
       view_details: "sýna breytingarsögu"
     way:
-      way: "Veginum"
+      way: "Vegur"
       way_title: "Vegur: {{way_name}}"
       download: "{{download_xml_link}} eða {{view_history_link}} eða {{edit_link}}"
       download_xml: "Hala niður á XML sniði"
@@ -299,7 +313,7 @@ is:
       heading: "Notandinn {{user}} er ekki til"
       body: "Það er ekki til notandi með nafninu {{user}}. Kannski slóstu nafnið rangt inn eða fylgdir ógildum tengli."
     diary_entry:
-      posted_by: "Sett inn af {{link_user}} klukkan {{created}} á {{language_link}}"
+      posted_by: "Sett inn af {{link_user}} {{created}} á {{language_link}}"
       comment_link: "Bæta við athugasemd"
       reply_link: "Senda höfund skilaboð"
       comment_count:
@@ -338,7 +352,7 @@ is:
       click_add_marker: "Smelltu á kortið til að bæta við punkti"
       change_marker: "Breyta staðsetningu punktsins"
       add_marker: "Bæta við punkt á kortið"
-      view_larger_map: "View Larger Map"
+      view_larger_map: "Skoða á stærra korti"
   geocoder:
     results:
       results: "Niðurstöður"
@@ -387,17 +401,17 @@ is:
     intro_3_bytemark: "bytemark"
     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: "Support OpenStreetMap by {{link}} to the Hardware Upgrade Fund."
-    donate_link_text: donating
+    donate: "Hjálpaðu OpenStreetMap verkefninu með {{link}} í vélbúnaðarsjóðinn."
+    donate_link_text: "fjárframlagi"
     help_wiki: "Hjálp &amp; Wiki"
     help_wiki_tooltip: "Hjálpar og wiki-síða fyrir verkefnið"
-    help_wiki_url: "http://wiki.openstreetmap.org"
+    help_wiki_url: "http://wiki.openstreetmap.org/index.php?title=Fors%C3%AD%C3%B0a&uselang=is"
     news_blog: "Fréttablogg"
     news_blog_tooltip: "Blogg um OpenStreetMap, frjáls kortagögn o.fl."
     shop: "Verslun"
     shop_tooltip: Verslun með vörum tengdum OpenStreetMap
-    shop_url: http://wiki.openstreetmap.org/wiki/Merchandise
-    sotm: 'Come to the 2009 OpenStreetMap Conference, The State of the Map, July 10-12 in Amsterdam!'
+    shop_url: "http://wiki.openstreetmap.org/index.php?title=Merchandise&uselang=is"
+    sotm: 'Komdu á „State of the map“ - OpenStreetMap ráðstefnuna sem verður haldin 10. - 12. júlí 2009 í Amsterdam!'
     alt_donation: "Fjárframlagssíða"
   notifier:
     diary_comment_notification:
@@ -420,54 +434,52 @@ is:
       had_added_you: "Notandinn {{user}} hefur bætt þér við sem vini á OpenStreetMap."
       see_their_profile: "Þú getur séð notandasíðu notandans á {{userurl}} og jafnvel bætt honum við sem vini líka."
     gpx_notification:
-      greeting: "Hi,"
-      your_gpx_file: "It looks like your GPX file"
-      with_description: "with the description"
-      and_the_tags: "and the following tags:"
-      and_no_tags: "and no tags."
+      greeting: "Hæ,"
+      your_gpx_file: "GPX skráin þín"
+      with_description: "með lýsinguna:"
+      and_the_tags: "og eftirfarandi tögg:"
+      and_no_tags: "og engin tögg."
       failure:
-        subject: "[OpenStreetMap] GPX Import failure"
-        failed_to_import: "failed to import. Here's the error:"
-        more_info_1: "More information about GPX import failures and how to avoid"
-        more_info_2: "them can be found at:"
-        import_failures_url: "http://wiki.openstreetmap.org/wiki/GPX_Import_Failures"
+        subject: "[OpenStreetMap] Villa við að flytja inn GPX skrá"
+        failed_to_import: "Lenti í villu þegar átti að flytja hana inn, hérna er villan::"
+        more_info_1: "Frekari upplýsinagr um GPX innflutningarvillur og hvernig"
+        more_info_2: "má forðast þær er að finna hér::"
+        import_failures_url: "http://wiki.openstreetmap.org/index.php?title=FAQ&uselang=is#Why_didn.27t_my_GPX_file_upload_properly.3F"
       success:
-        subject: "[OpenStreetMap] GPX Import success"
-        loaded_successfully: |
-          loaded successfully with {{trace_points}} out of a possible
-          {{possible_points}} points.
+        subject: "[OpenStreetMap] GPX skrá innflutt"
+        loaded_successfully: "var innflutt með {{trace_points}} punkta af {{possible_points}} mögulegum."
     signup_confirm:
       subject: "[OpenStreetMap] Staðfestu netfangið þitt"
     signup_confirm_plain:
-      greeting: "Hi there!"
-      hopefully_you: "Someone (hopefully you) would like to create an account over at"
+      greeting: "Hæ!"
+      hopefully_you: "Einhver (vonandi þú) vill búa til notanda á þessari vefsíðu:"
       # next two translations run-on : please word wrap appropriately
-      click_the_link_1: "If this is you, welcome! Please click the link below to confirm your"
-      click_the_link_2: "account and read on for more information about OpenStreetMap."
-      introductory_video: "You can watch an introductory video to OpenStreetMap here:"
-      more_videos: "There are more videos here:"
-      the_wiki: "Get reading about OpenStreetMap on the wiki:"
-      the_wiki_url: "http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"
-      opengeodata: "OpenGeoData.org is OpenStreetMap's blog, and it has podcasts too:"
-      wiki_signup: "You may also want to sign up to the OpenStreetMap wiki at:"
-      wiki_signup_url: "http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page"
+      click_the_link_1: "Ef þetta ert þú þá vertu velkomin(n)! vinsamlegast fylgdu tenglinum til að staðfesta"
+      click_the_link_2: "reikningin þinn og haltu áfrám að lesa til að fá frekari upplýsingar um OpenStreetMap."
+      introductory_video: "Þú getur horft á kynningarmyndband um OpenStreetMap hér:"
+      more_videos: "Og fleiri kynningarmyndbönd er að finna hér:"
+      the_wiki: "Þú getur lesið um OpenStreetMap verkefnið á wiki-síðunni okkar:"
+      the_wiki_url: "http://wiki.openstreetmap.org/index.php?uselang=is&title=Beginners%27_Guide"
+      opengeodata: "OpenGeoData.org er aðal-OpenStreetMap bloggið, þar er líka hljóðvarp:"
+      wiki_signup: "Kannski viltu einnig skrá þig á wiki-síðuna:"
+      wiki_signup_url: "http://wiki.openstreetmap.org/index.php?title=Special:UserLogin&type=signup&returnto=Fors%C3%AD%C3%B0a&uselang=is"
       # next four translations are in pairs : please word wrap appropriately
-      user_wiki_1: "It is recommended that you create a user wiki page, which includes"
-      user_wiki_2: "category tags noting where you are, such as [[Category:Users_in_London]]."
-      current_user_1: "A list of current users in categories, based on where in the world"
-      current_user_2: "they are, is available from:"
+      user_wiki_1: "Það er mælt með því að þú búir til notandasíðu á wiki-inu"
+      user_wiki_2: "og takir fram hvar þú ert, t.d. með því að bæta við á hana [[Category:Users_in_Iceland]]."
+      current_user_1: "Í flokkakerfinu getur þú séð hvar í heiminum OpenStreetMap notendur eru."
+      current_user_2: "Hér er tengill á rótina á notendaflokkunum:"
     signup_confirm_html:
-      greeting: "Hi there!"
-      hopefully_you: "Someone (hopefully you) would like to create an account over at"
-      click_the_link: "If this is you, welcome! Please click the link below to confirm that account and read on for more information about OpenStreetMap"
-      introductory_video: "You can watch an {{introductory_video_link}}."
-      video_to_openstreetmap: "introductory video to OpenStreetMap"
-      more_videos: "There are {{more_videos_link}}."
-      more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
-      wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
-      user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
-      current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
+      greeting: "Hæ!"
+      hopefully_you: "Einhver (vonandi þú) vill búa til notanda á þessari vefsíðu:"
+      click_the_link: "Ef þetta ert þú þá vertu velkomin(n)! vinsamlegast fylgdu tenglinum til að staðfesta reikningin þinn og haltu áfrám að lesa til að fá frekari upplýsingar um OpenStreetMap."
+      introductory_video: "Þú getur horft á {{introductory_video_link}}."
+      video_to_openstreetmap: "kynningarmyndband um OpenStreetMap"
+      more_videos: "Fleiri myndbönd er {{more_videos_link}}."
+      more_videos_here: "hægt að finna hér"
+      get_reading: 'Þú getur lesið um OpenStreetMap verkefnið á <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Beginners%27_Guide">wiki-síðunni okkar</p> eða <a href="http://www.opengeodata.org/">OpenGeoData blogginu</a> þar sem einnig er að finna <a href="http://www.opengeodata.org/?cat=13">hljóðvarp</a>.'
+      wiki_signup: 'Kannski viltu einnig <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">skrá þig á wiki-síðuna</a>.'
+      user_wiki_page: 'Það er mælt með því að þú búir ttil notandasíðu á wiki-inu þar sem tengt er í flokk sem gefur til kynna hvar þú ert, t.d. <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Category:Users_in_Iceland">[[Category:Users_in_Iceland]]</a>.'
+      current_user: 'Í flokkakerfinu getur þú einnig séð <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Category:Users_by_geographical_region"> hvar í heiminum OpenStreetMap notendur</a> eru staðsettir.'
     email_confirm:
       subject: "[OpenStreetMap] Staðfestu netfangið þitt"
     email_confirm_plain:
@@ -476,7 +488,7 @@ is:
       hopefully_you_2: "{{server_url}} í {{new_address}}."
       click_the_link: "Ef þú óskaðir eftir þessari breytingu fylgdu tenglinum hér fyrir neðan til að staðfesta breytinguna."
     email_confirm_html:
-      greeting: "Hi,"
+      greeting: "Hæ,"
       hopefully_you: "Einhver (vonandi þú) vill breyta netfanginu sínu á {{server_url}} í {{new_address}}."
       click_the_link: "Ef þú óskaðir eftir þessari breytingu fylgdu tenglinum hér fyrir neðan til að staðfesta breytinguna."
     lost_password:
@@ -557,6 +569,7 @@ is:
       js_2: "OpenStreetMap notar JavaScript til að útfæra gagnvirk kort."
       js_3: 'Þú getur einnig notað <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home kortasýnina</a> sem krefst ekki JavaScript stuðnings.'
       permalink: "Varanlegur tengill"
+      shortlink: "Varanlegur smátengill"
       license:
         notice: "Gefið út undir {{license_name}} leyfinu af þáttakendum í {{project_name}}."
         license_name: "Creative Commons Attribution-Share Alike 2.0"
@@ -564,14 +577,14 @@ is:
         project_name: "OpenStreetMap verkefninu"
         project_url: "http://openstreetmap.org"
     edit:
-      not_public: "You haven't set your edits to be public."
-      not_public_description: "You can no longer edit the map unless you do so. You can set your edits as public from your {{user_page}}."
-      user_page_link: user page
+      not_public: "Þú hefur ekki merkt breytingar þínar sem opinberar."
+      not_public_description: "Þú getur ekki lengur gert breytingar nema þær séu merktar opinberar, þú getur breytt þeim stillingum á {{user_page}}."
+      user_page_link: notandasíðunni þinni
       anon_edits: "({{link}})"
-      anon_edits_link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
-      anon_edits_link_text: "Find out why this is the case."
-      flash_player_required: 'You need a Flash player to use Potlatch, the OpenStreetMap Flash editor. You can <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">download Flash Player from Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Several other options</a> are also available for editing OpenStreetMap.'
-      potlatch_unsaved_changes: "You have unsaved changes. (To save in Potlatch, you should deselect the current way or point, if editing in list mode, or click save if you have a save button.)"
+      anon_edits_link: "http://wiki.openstreetmap.org/index.php?title=Anonymous_edits&uselang=is"
+      anon_edits_link_text: "Finndu út afhverju."
+      flash_player_required: 'Þú þarft Flash spilara til að nota Potlatch ritilinn. Þú getur <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">halað niður Flash spilara frá Adobe.com</a> eða notað <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Editing">aðra OpenStreetMap ritla</a> sem ekki krefjast Flash.'
+      potlatch_unsaved_changes: "Þú ert með óvistaðar breytingar. Til að vista í Potlatch þarf að af-velja núverandi val ef þú ert í „Live“-ham, eða ýta á „Save“ hnappinn til að vista ef sá hnappur er sjáanlegur."
     sidebar:
       search_results: "Leitarniðurstöður"
       close: "Loka"
@@ -580,10 +593,78 @@ is:
       where_am_i: "Hvar er ég?"
       submit_text: "Ok"
       searching: "Leita..."
-      search_help: "dæmi: „Akureyri“, „Laugavegur, Reykjavík“ eða „post offices near Lünen“. Sjá einnig <a href='http://wiki.openstreetmap.org/wiki/Search'>leitarhjálpina</a>."
+      search_help: "dæmi: „Akureyri“, „Laugavegur, Reykjavík“ eða „post offices near Lünen“. Sjá einnig <a href='http://wiki.openstreetmap.org/index.php?uselang=is&title=Search'>leitarhjálpina</a>."
     key:
       map_key: "Kortaskýringar"
       map_key_tooltip: "Kortaútskýringar fyrir mapnik útgáfuna af kortinu á þessu þys-stigi"
+      table:
+        heading: "Kortaskýringar fyrir þys {{zoom_level}}"
+        entry:
+          motorway: "Hraðbraut"
+          trunk: "Stofnbraut (Hringvegurinn)"
+          primary: "Stofnvegur"
+          secondary: "Tengivegur"
+          # tertiary: "Landsvegur"
+          unclassified: "Héraðsvegur"
+          unsurfaced: "Óbundið slitlag"
+          track: "Slóði"
+          byway: "Merkt (bresk) hjólaleið"
+          bridleway: "Reiðstígur"
+          cycleway: "Hjólastígur"
+          footway: "Göngustígur"
+          rail: "Lestarteinar"
+          subway: "Neðanjarðarlest"
+          tram:
+            - Smálest
+            - „tram“
+          cable:
+            - Skíðalyfta
+            - stólalyfta
+          runway:
+            - Flugbraut
+            - akstursbraut
+          apron:
+            - Flugbrautarhlað
+            - flugstöð
+          admin: "Stjórnsýslumörk"
+          forest: "Ræktaður skógur"
+          wood: "Náttúrulegur skógur"
+          golf: "Golfvöllur"
+          park: "Almenningsgarður"
+          resident: "Íbúðasvæði"
+          tourist: "Ferðamannasvæði"
+          common:
+            - Almenningur
+            - lundur
+          retail: "Smásölusvæði"
+          industrial: "Iðnaðarsvæði"
+          commercial: "Skrifstoðusvæði"
+          heathland: "Heiðalönd"
+          lake:
+            - Vatn
+            - uppistöðulón
+          farm: "Bóndabær"
+          brownfield: "Nýbyggingarsvæði"
+          cemetery: "Grafreitur"
+          allotments: "Ræktuð svæði úthlutuð í einkaeigu"
+          pitch: "Íþróttavöllur"
+          centre: "Íþróttamiðstöð"
+          reserve: "Náttúruverndarsvæði"
+          military: "Hersvæði"
+          school:
+            - Skóli
+            - Háskóli
+          building: "Merkisbygging"
+          station: "Lestarstöð"
+          summit:
+            - Fjallstindur
+            - tindur
+          tunnel: "Umkringt punktalínum = göng"
+          bridge: "Umkringt svartri línu = brú"
+          private: "Í einkaeigu"
+          permissive: "Umferð leyfileg"
+          destination: "Umferð leyfileg á ákveðinn áfangastað"
+          construction: "Vegur í byggingu"
   trace:
     create:
       upload_trace: "Upphala GPS feril"
@@ -601,7 +682,6 @@ is:
       owner: "Eigandi:"
       description: "Lýsing:"
       tags: "Tögg:"
-      editing_trace: "Breyti ferlinum {{name}}"
       save_button: "Vista breytingar"
     no_such_user:
       title: "Notandi ekki til"
@@ -613,15 +693,15 @@ is:
       tags: "Tögg"
       public: "Sjáanleg öðrum?"
       public_help: "Hvað þýðir þetta?"
-      public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
+      public_help_url: "http://wiki.openstreetmap.org/index.php?title=Visibility_of_GPS_traces&uselang=is"
       upload_button: "Upphala"
       help: "Hjálp"
-      help_url: "http://wiki.openstreetmap.org/wiki/Upload"
+      help_url: "http://wiki.openstreetmap.org/index.php?title=Upload&uselang=is"
     trace_header:
       see_just_your_traces: "Sýna aðeins þína ferla, eða hlaða upp feril"
       see_all_traces: "Sjá alla ferla"
       see_your_traces: "Sjá aðeins þína ferla"
-      traces_waiting: "You have {{count}} traces waiting for upload. Please consider waiting for these to finish before uploading any more, so as not to block the queue for other users."
+      traces_waiting: "Þú ert með {{count}} ferla í bið. Íhugaðu að bíða með að upphala fleiri ferlum til að aðrir notendur komist að."
     trace_optionals:
       tags: "Tögg"
     view:
@@ -664,26 +744,11 @@ is:
       public_traces: "Allir ferlar"
       your_traces: "Þínir ferlar"
       public_traces_from: "Ferlar eftir {{user}}"
-      tagged_with: " tagged with {{tags}}"
+      tagged_with: " með taggið {{tags}}"
     delete:
       scheduled_for_deletion: "Þessum feril verður eitt"
     make_public:
       made_public: "Ferilinn var gerður sjáanlegur"
-  oauth:
-    client_application:
-      request_access: "The application {{app_name}} is requesting access to your account. Please check whether you would like the application to have the following capabilities. You may choose as many or as few as you like."
-      allow_to: "Allow the client application to:"
-      allow_read_prefs:  "read your user preferences."
-      allow_write_prefs: "modify your user preferences."
-      allow_write_diary: "create diary entries, comments and make friends."
-      allow_write_api:   "modify the map."
-      allow_read_gpx:    "read your private GPS traces."
-      allow_write_gpx:   "upload GPS traces."
-    token:
-      none: "You have not authorised any clients to act on your behalf. You do not have to do anything now to authorise them, as they will ask for authorisation when they need it. After that time you can return here to revoke those permissions if you do not want the clients to have your authorisation any more."
-      application: "Application"
-      issued: "Issued"
-      revoke: "Revoke!"
   user:
     login:
       title: "Innskrá"
@@ -706,7 +771,7 @@ is:
     reset_password:
       title: "lykilorð endurstillt"
       flash changed check mail: "Nýtt lykilorð hefur verið búið til fyrir þig og sent til þín í pósti"
-      flash token bad: "Didn't find that token, check the URL maybe?"
+      flash token bad: "Þessi leynistrengur fannst ekki, kannski er slóðin röng?"
     new:
       title: "Nýskrá"
       heading: "Nýskrá"
@@ -716,7 +781,7 @@ is:
       license_agreement: 'Með því að búa til reikning samþykkiru að öll framlög þín til verkefnisins falli undir <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons Attribution-Share Alike (BY-SA)</a> leyfið.'
       email address: "Netfang: "
       confirm email address: "Staðfestu netfang: "
-      not displayed publicly: 'Ekki sýnt opinberlega (sjá <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="Meðferð persónuupplýsinga, þ.á.m. netfanga">meðferð persónuupplýsinga</a>)'
+      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>)'
       display name: "Sýnilegt nafn: "
       password: "Lykilorð: "
       confirm password: "Staðfestu lykilorðið: "
@@ -765,10 +830,10 @@ is:
       public editing:
         heading: "Ónafngreindur notandi?: "
         enabled: "Nei, nafngreindur og getur breytt gögnum."
-        enabled link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
+        enabled link: "http://wiki.openstreetmap.org/index.php?uselang=is&title=Anonymous_edits"
         enabled link text: "nánar"
-        disabled: "Disabled and cannot edit data, all previous edits are anonymous."
-        disabled link text: "why can't I edit?"
+        disabled: "Óvirkur og getur ekki breytt gögnum, allar fyrri breytingar eru ónafngreindar."
+        disabled link text: "hví get ég ekki breytt neinu?"
       profile description: "Lýsing á þér: "
       preferred languages: "Viðmótstungumál: "
       home location: "Staðsetning: "
@@ -777,16 +842,10 @@ is:
       longitude: "Breiddargráða: "
       update home location on click: "Uppfæra staðsetninguna þegar ég smelli á kortið"
       save changes button: "Vista breytingar"
-      make edits public button: Make all my edits public
+      make edits public button: "Gera allar breytingarnar mínar opinberar"
       return to profile: "Aftur á mína síðu"
-      flash update success confirm needed: "User information updated successfully. Check your email for a note to confirm your new email address."
+      flash update success confirm needed: "Stillingarnar þínar voru uppfærðar. Póstur var sendur á netfangið þitt sem þú þarft að bregðast við til að netfangið þitt verði staðfest."
       flash update success: "Stillingarnar þínar voru uppfærðar."
-      my apps: "My client applications"
-      developers: "Application Developers"
-      dev_intro: "Have you written an application which you would like to register to make {{link}} requests to the OpenStreetMap server?"
-      register_app: "Register your application"
-      apps_registered: "You have the following client applications registered:"
-      register_another_app: "Register another application"
     confirm:
       heading: "Staðfesta notanda"
       press confirm button: "Hér getur þú staðfest að þú viljir búa til notanda.."
@@ -802,7 +861,7 @@ is:
     set_home:
       flash success: "Staðsetning þín hefur verið stillt"
     go_public:
-      flash success: "All your edits are now public, and you are now allowed to edit."
+      flash success: "Allar breytingar þínar eru nú opinberar, og þú getur breytt gögnum."
     make_friend:
       success: "{{name}} er núna vinur þinn."
       failed: "Gat ekki bætt {{name}} á vinalistann þinn."
index 200a5aa2f11080aeb29512c2f692ab35993f99f6..a35ff34a1e96148cf8267ee4979d68547cdee9f8 100644 (file)
@@ -98,12 +98,11 @@ it:
       version: "Versione:"
       in_changeset: "Nel gruppo di modifiche:"
     containing_relation:
-      relation: "Relazione {{relation_name}}"
-      relation_as: "(come {{relation_role}})"
+      entry: "Relazione {{relation_name}}"
+      entry_role: "Relazione {{relation_name}} (come {{relation_role}})"
     map:
       loading: "Caricamento in corso..."
       deleted: "Eliminato"
-      view_larger_map: "Visualizza una mappa più ampia"
     node_details:
       coordinates: "Coordinate: "
       part_of: "Parte di:"
@@ -129,8 +128,6 @@ it:
     relation_history:
       relation_history: "Storico della relazione"
       relation_history_title: "Storico della relazione: {{relation_name}}"
-    relation_member:
-      as: "come"
     relation:
       relation: "Relazione"
       relation_title: "Relazione: {{relation_name}}"
index 7f76c30b44769461bd4be6b245af78632b4ad639..2864de141c0678f1bc25958b19dc0601c212ef5a 100644 (file)
@@ -100,12 +100,11 @@ ja:
       version: "バージョン:"
       in_changeset: "変更セット:"
     containing_relation:
-      relation: "関連 {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "関連 {{relation_name}}"
+      entry_role: "関連 {{relation_name}} (as {{relation_role}})"
     map:
       loading: "ロード中..."
       deleted: "削除済み"
-      view_larger_map: "大きなマップを表示"
     node_details:
       coordinates: "座標: "
       part_of: "Part of:"
@@ -135,8 +134,6 @@ ja:
     relation_history:
       relation_history: "関連の履歴"
       relation_history_title: "関連の履歴: {{relation_name}}"
-    relation_member:
-      as: "as"
     relation:
       relation: "関連"
       relation_title: "関連: {{relation_name}}"
index 5964837f1e40a28199bfafbf8ae9978a065c364e..96634658de6c3474195d36f32a17b579fd15ec0a 100644 (file)
@@ -100,12 +100,11 @@ ko:
       version: "버젼:"
       in_changeset: "In changeset:"
     containing_relation:
-      relation: "관계 {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "관계 {{relation_name}}"
+      entry_role: "관계 {{relation_name}} (as {{relation_role}})"
     map:
       loading: "불러 오는 중..."
       deleted: "삭제됨"
-      view_larger_map: "큰 지도 보기"
     node_details:
       coordinates: "좌표: "
       part_of: "Part of:"
@@ -135,8 +134,6 @@ ko:
     relation_history:
       relation_history: "관계 이력"
       relation_history_title: "관계 이력: {{relation_name}}"
-    relation_member:
-      as: "as"
     relation:
       relation: "관계"
       relation_title: "관계: {{relation_name}}"
index e15e3dff2f1b0577f05715184440b40764309722..5110be2b9dd47df890530e0da460894b00d2f59d 100644 (file)
@@ -98,12 +98,11 @@ nl:
       version: "Versie:"
       in_changeset: "In changeset:"
     containing_relation:
-      relation: "Relatie {{relation_name}}"
-      relation_as: "(als {{relation_role}})"
+      entry: "Relatie {{relation_name}}"
+      entry_role: "Relatie {{relation_name}} (als {{relation_role}})"
     map:
       loading: "Laden..."
       deleted: "Verwijderd"
-      view_larger_map: "Grotere kaart"
     node_details:
       coordinates: "Coördinaten: "
       part_of: "Part of:" #to be translated
@@ -129,8 +128,6 @@ nl:
     relation_history:
       relation_history: "Relatie-geschiedenis"
       relation_history_title: "Relatie-geschiedenis: {{relation_name}}"
-    relation_member:
-      as: "als"
     relation:
       relation: "Relatie"
       relation_title: "Relatie: {{relation_name}}"
index 17afacacfd48585ce8e54dfb0c5441014f7ce13e..859c26e1ae8396cfecc62145206ba33300929a39 100644 (file)
@@ -98,12 +98,11 @@ pl:
       version: "Wersja:"
       in_changeset: "W changesecie:"
     containing_relation:
-      relation: "Relacja {{relation_name}}"
-      relation_as: "(jako {{relation_role}})"
+      entry: "Relacja {{relation_name}}"
+      entry_role: "Relacja {{relation_name}} (jako {{relation_role}})"
     map:
       loading: "Wczytywanie..."
       deleted: "Skasowano"
-      view_larger_map: "Powiększ mapę"
     node_details:
       coordinates: "Współrzędne: "
       part_of: "Jest częścią:"
@@ -129,8 +128,6 @@ pl:
     relation_history:
       relation_history: "Historia zmian relacji"
       relation_history_title: "Historia relacji: {{relation_name}}"
-    relation_member:
-      as: "jako"
     relation:
       relation: "Relacja"
       relation_title: "Relacja: {{relation_name}}"
index 58976f5e785dcb0d6958d6a3385918f447b12194..a5f1961b826fbeb22253cc7618aded95d2776e3a 100644 (file)
@@ -100,12 +100,11 @@ pt-BR:
       version: "Versão:"
       in_changeset: "No conjunto de modificações:"
     containing_relation:
-      relation: "Relação {{relation_name}}"
-      relation_as: "(como {{relation_role}})"
+      entry: "Relação {{relation_name}}"
+      entry_role: "Relação {{relation_name}} (como {{relation_role}})"
     map:
       loading: "Carregando..."
       deleted: "Apagado"
-      view_larger_map: "Ver mapa maior"
     node_details:
       coordinates: "Coordenadas: "
       part_of: "Parte de:"
@@ -135,8 +134,6 @@ pt-BR:
     relation_history:
       relation_history: "Histórico de Relação"
       relation_history_title: "Histórico da Relação: {{relation_name}}"
-    relation_member:
-      as: "como"
     relation:
       relation: "Relação"
       relation_title: "Relação: {{relation_name}}"
index a4022ddc4d1bed38ff8518b28b07d29c36ea9f8d..24910c0f9389d5d3794ebab71ec84c6c89986040 100644 (file)
@@ -98,12 +98,11 @@ ru:
       version: "Версия:"
       in_changeset: "Сеанс:"
     containing_relation:
-      relation: "Отношение {{relation_name}}"
-      relation_as: "(в роли {{relation_role}})"
+      entry: "Отношение {{relation_name}}"
+      entry_role: "Отношение {{relation_name}} (в роли {{relation_role}})"
     map:
       loading: "Загрузка..."
       deleted: "Удалено"
-      view_larger_map: "На большой карте"
     node_details:
       coordinates: "Координаты: "
       part_of: "Принадлежит к:"
@@ -129,8 +128,6 @@ ru:
     relation_history:
       relation_history: "История отношения"
       relation_history_title: "История отношения {{relation_name}}"
-    relation_member:
-      as: "в роли"
     relation:
       relation: "Отношение"
       relation_title: "Отношение: {{relation_name}}"
index ab542855dc6b086d5fb3d53d5d3685b7d9236894..0f5f41ef36603b70e40e2b415fd9b7e4719f65d3 100644 (file)
@@ -12,9 +12,9 @@ sl:
       diary_entry: "Vpis v dnevnik"
       friend: "Prijatelj"
       language: "Jezik"
-      message: "Message"
-      node: "Node"
-      node_tag: "Node Tag"
+      message: "Sporočilo"
+      node: "Vozlišče"
+      node_tag: "Oznaka vozlišča"
       notifier: "Notifier"
       old_node: "Old Node"
       old_node_tag: "Old Node Tag"
@@ -25,18 +25,18 @@ sl:
       old_way_node: "Old Way Node"
       old_way_tag: "Old Way Tag"
       relation: "Relacija"
-      relation_member: "Relation Member"
-      relation_tag: "Relation Tag"
+      relation_member: "Član relacije"
+      relation_tag: "Oznaka relacije"
       session: "Session"
       trace: "Sled"
       tracepoint: "Točka sledi"
       tracetag: "Oznaka sledi"
       user: "Uporabnik"
-      user_preference: "User Preference"
-      user_token: "User Token"
-      way: "Way"
-      way_node: "Way Node"
-      way_tag: "Way Tag"
+      user_preference: "Uporabniške nastavitve"
+      user_token: "Uporabniški žeton"
+      way: "Pot"
+      way_node: "Vozlišče poti"
+      way_tag: "Oznaka poti"
     # Translates all the model attributes, which is used in error handling on the web site
     # Only the ones that are used on the web site are translated at the moment
     attributes:
@@ -100,17 +100,22 @@ sl:
       version: "Različica:"
       in_changeset: "V paketu sprememb:"
     containing_relation:
-      relation: "Relacija {{relation_name}}"
-      relation_as: "(kot {{relation_role}})"
+      entry: "Relacija {{relation_name}}"
+      entry_role: "Relacija {{relation_name}} (kot {{relation_role}})"
     map:
       loading: "Nalaganje..."
       deleted: "Izbrisano"
-      view_larger_map: "Poglej večji zemljevid"
+      larger:
+        area: "Prikaz področja na večjem zemljevidu"
+        node: "Prikaz vozlišča na večjem zemljevidu"
+        way: "Prikaz poti na večjem zemljevidu"
+        relation: "Prikaz relacije na večjem zemljevidu"
     node_details:
       coordinates: "Koordinate: "
       part_of: "Del:"
     node_history:
       node_history: "Zgodovina vozlišča"
+      node_history_title: "Zgodovina vozlišča: {{node_name}}"
       download: "{{download_xml_link}} ali {{view_details_link}}"
       download_xml: "prenesi XML"
       view_details: "poglej podrobnosti"
@@ -120,6 +125,7 @@ sl:
       download: "{{download_xml_link}} ali {{view_history_link}}"
       download_xml: "prenesi XML"
       view_history: "poglej zgodovino"
+      edit: "uredi"
     not_found:
       sorry: "Oprostite, {{type}} z ID-jem {{id}} ni bilo mogoče najti."
       type:
@@ -136,7 +142,12 @@ sl:
       relation_history: "Zgodovina relacije"
       relation_history_title: "Zgodovina relacije: {{relation_name}}"
     relation_member:
-      as: "kot"
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} kot {{role}}"
+      type:
+        node: "Vozlišče"
+        way: "Pot"
+        relation: "Relacija"
     relation:
       relation: "Relacija"
       relation_title: "Relacija: {{relation_name}}"
@@ -147,6 +158,7 @@ sl:
       view_data: "Ogled podatkov trenutno prikazanega zemljevida"
       manually_select: "Ročno izberite drugo področje"
     start_rjs:
+      data_layer_name: "Podatki"
       data_frame_title: "Podatki"
       zoom_or_select: "Povečajte zemljevid ali izberite področje za prikaz"
       drag_a_box: "Za izbor področja povlecite pravokotnik na zemljevidu"
@@ -200,6 +212,7 @@ sl:
       download: "{{download_xml_link}} ali {{view_history_link}}"
       download_xml: "prenesi XML"
       view_history: "poglej zgodovino"
+      edit: "uredi"
   changeset:
     changeset_paging_nav: 
       showing_page: "Prikaz strani"
@@ -272,7 +285,8 @@ sl:
       login: "Prijavite se"
       save_button: "Shrani"
     no_such_entry:
-      heading: "No entry with the id: {{id}}"
+      title: "Takšnega vnosa v dnevnik ni"
+      heading: "Vnosa v dnevnik z id-jem: {{id}} ni"
       body: "Oprostite, vnosa v dnevnik št. {{id}} ni. Prosimo, preverite črkovanje in povezavo, ki ste jo kliknili."
     no_such_user:
       title: "Ni tega uporabnika"
@@ -298,11 +312,11 @@ sl:
       osmarender_image: "Osmarender slika zemljevida"
       embeddable_html: "HTML za vključitev na spletno stran"
       licence: "Licenca"
-      export_details: 'OpenStreetMap podatki imajo licenco <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.sl">Creative Commons Attribution-ShareAlike 2.0</a>.'
+      export_details: 'OpenStreetMap podatki imajo licenco <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.sl">Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 2.0</a>.'
       options: "Možnosti"
       format: "Oblika zapisa"
       scale: "Merilo"
-      max: "max"
+      max: "največ"
       image_size: "Velikost slike"
       zoom: "Povečava"
       add_marker: "Dodaj zaznamek na zemljevid"
@@ -318,19 +332,37 @@ sl:
       click_add_marker: "S klikom na zemljevid pripnite zaznamek."
       change_marker: "Premakni zaznamek"
       add_marker: "Dodaj zaznamek na zemljevid"
-      view_larger_map: "Večji zemljevid"
+      view_larger_map: "Večji zemljevid" 
   geocoder:
     results:
       results: "Zadetki"
       type_from_source: "{{type}} iz {{source_link}}"
       no_results: "Ni zadetkov"
   layouts:
+    project_name:
+      # in <title>
+      title: OpenStreetMap
+      # in <h1>
+      h1: OpenStreetMap
+    logo:
+      alt_text: OpenStreetMap logotip
     welcome_user: "Dobrodošli, {{user_link}}"
+    welcome_user_link_tooltip: Vaša uporabniška stran
     home: "domov"
+    home_tooltip: Prikaži domači kraj
     inbox: "prejeta pošta ({{count}})"
+    inbox_tooltip:
+      zero: Niste prejeli novih spročil
+      one: Prejeli ste {{count}} novo sporočilo
+      two: Prejeli ste {{count}} novi sporočili
+      few: Prejeli ste {{count}} nova sporočila
+      other: Prejeli ste {{count}} novih sporočil
     logout: odjava
+    logout_tooltip: "Odjava iz sistema"
     log_in: prijava
+    log_in_tooltip: Vstop s svojim obstoječim uporabniškim računom
     sign_up: vpis
+    sign_up_tooltip: Ustvarite si nov uporabniški račun za urejanje
     view: Zemljevid
     view_tooltip: Prikaz zemljevida
     edit: Uredi
@@ -354,9 +386,12 @@ sl:
     donate: "Podprite OpenStreetMap z {{link}} v fond za nadgradnjo strojne opreme."
     donate_link_text: donacijo
     help_wiki: "Pomoč in Wiki"
+    help_wiki_tooltip: "Pomoč in Wiki strani projekta"
     help_wiki_url: "http://wiki.openstreetmap.org/wiki/Sl:Main_Page"
     news_blog: "Novice"
+    news_blog_tooltip: "Novice o OpenStreetMap, prostih geografskih podatkih, ipd."
     shop: Trgovina
+    shop_tooltip: Nakup izdelkov z OpenStreetMap logotipi
     shop_url: http://wiki.openstreetmap.org/wiki/Merchandise
     sotm: 'Udeležite se letošnje OpenStreetMap konference, The State of the Map, ki bo od 10 do 12 Julija v Amsterdamu!'
     alt_donation: Prispevajte finančna sredstva
@@ -367,7 +402,7 @@ sl:
       banner2: "*           Za odgovor uporabite spletno stran OpenStreetMap.             *"
       hi: "Pozdravljen, {{to_user}}!"
       header: "{{from_user}} je komentiral vaš nedavni vnos v OpenStreetMap dnevnik z naslovom {{subject}}:"
-      footer: "Komentar lahko preberete tudi na {{readurl}} komentirate lahko na {{commenturl}} ali odgovorite na {{replyurl}}"
+      footer: "Komentar lahko preberete tudi na {{readurl}}, komentirate lahko na {{commenturl}} ali odgovorite na {{replyurl}}"
     message_notification:
       subject: "[OpenStreetMap] {{user}} vam je poslal novo sporočilo"
       banner1: "*                    Ne odgovarjajte na to sporočilo.                     *"
@@ -407,28 +442,28 @@ sl:
       click_the_link_2: "potrditev računa in več informacij o projektu OpenStreetMap."
       introductory_video: "Uvodni video posnetek si lahko pogledate na naslovu:"
       more_videos: "Več video posnetkov je na naslovu:"
-      the_wiki: "Get reading about OpenStreetMap on the wiki:"
+      the_wiki: "Več o projektu OpenStreetMap si preberite v wiki-ju:"
       the_wiki_url: "http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"
-      opengeodata: "OpenGeoData.org is OpenStreetMap's blog, and it has podcasts too:"
-      wiki_signup: "You may also want to sign up to the OpenStreetMap wiki at:"
+      opengeodata: "Blog o OpenStreetMap z zvočnimi podcasti je na OpenGeoData.org:"
+      wiki_signup: "Lahko se vpišete tudi na wiki projekta OpenStreetMap na naslovu:"
       wiki_signup_url: "http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page"
       # next four translations are in pairs : please word wrap appropriately
-      user_wiki_1: "It is recommended that you create a user wiki page, which includes"
-      user_wiki_2: "category tags noting where you are, such as [[Category:Users_in_Slovenia]]."
-      current_user_1: "A list of current users in categories, based on where in the world"
-      current_user_2: "they are, is available from:"
+      user_wiki_1: "Priporočljivo je, da si naredite svojo uporabniško wiki stran, ki naj vsebuje"
+      user_wiki_2: "oznako kategorije, ki določa vaš položaj, npr [[Category:Users_in_Slovenia]]."
+      current_user_1: "Seznam trenutnih uporabnikov po kategorijah glede na njihov geografski"
+      current_user_2: "položaj je na voljo na naslovu:"
     signup_confirm_html:
       greeting: "Pozdravljeni!"
-      hopefully_you: "Someone (hopefully you) would like to create an account over at"
-      click_the_link: "If this is you, welcome! Please click the link below to confirm that account and read on for more information about OpenStreetMap"
-      introductory_video: "You can watch an {{introductory_video_link}}."
-      video_to_openstreetmap: "introductory video to OpenStreetMap"
-      more_videos: "There are {{more_videos_link}}."
-      more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
-      wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
-      user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Slovenia">[[Category:Users_in_Slovenia]]</a>.'
-      current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
+      hopefully_you: "Nekdo (najverjetneje vi) bi rad naredil uporabniški račun na"
+      click_the_link: "Če ste to vi, dobrodošli! Kliknite na spodnjo povezavo za potrditev računa in več informacij o projektu OpenStreetMap."
+      introductory_video: "Ogledate si lahko {{introductory_video_link}}."
+      video_to_openstreetmap: "uvodni video posnetek o OpenStreetMap"
+      more_videos: "Ogledate si lahko {{more_videos_link}}."
+      more_videos_here: "še več video posnetkov"
+      get_reading: 'Preberite si več o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">v wiki-ju</p> ali <a href="http://www.opengeodata.org/">na opengeodata blog-u</a> ki vsebuje tudi <a href="http://www.opengeodata.org/?cat=13">zvočne podcast-e</a>!'
+      wiki_signup: 'Lahko se <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">vpišete tudi na wiki projekta OpenStreetMap</a>.'
+      user_wiki_page: 'Priporočljivo je, da si naredite svojo uporabniško wiki stran, ki naj vsebuje oznako kategorije, ki določa vaš položaj, npr <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Slovenia">[[Category:Users_in_Slovenia]]</a>.'
+      current_user: 'Seznam trenutnih uporabnikov po kategorijah glede na njihov geografski položaj je na voljo v kategoriji <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
     email_confirm:
       subject: "[OpenStreetMap] Potrdite svoj elektronski naslov"
     email_confirm_plain:
@@ -518,21 +553,22 @@ sl:
       js_2: "OpenStreetMap za prikaz zemljevida uporablja Javascript."
       js_3: 'Če Javascripta ne morete omogočiti lahko poizkusite <a href="http://tah.openstreetmap.org/Browse/">statičen pregledovalnik zemljevida Tiles@Home</a>.'
       permalink: Trajna povezava
+      shortlink: Kratka povezava
       license:
-        notice: "Licensed under the {{license_name}} license by the {{project_name}} and its contributors."
-        license_name: "Creative Commons Attribution-Share Alike 2.0"
-        license_url: "http://creativecommons.org/licenses/by-sa/2.0/"
-        project_name: "OpenStreetMap project"
+        notice: "{{project_name}} z avtorji objavlja pod licenco {{license_name}}."
+        license_name: "Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji 2.0"
+        license_url: "http://creativecommons.org/licenses/by-sa/2.0/deed.sl"
+        project_name: "Projekt OpenStreetMap"
         project_url: "http://openstreetmap.org"
     edit:
-      not_public: "You haven't set your edits to be public."
-      not_public_description: "You can no longer edit the map unless you do so. You can set your edits as public from your {{user_page}}."
-      user_page_link: user page
+      not_public: "Svojih prispevkov še niste označili za javne."
+      not_public_description: "Urejanje zemljevida ni mogoče dokler vaši prispevki niso javni. Označite jih lahko kot javne na {{user_page}}."
+      user_page_link: strani vašega uporabniškega računa
       anon_edits: "({{link}})"
       anon_edits_link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
-      anon_edits_link_text: "Find out why this is the case."
-      flash_player_required: 'You need a Flash player to use Potlatch, the OpenStreetMap Flash editor. You can <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">download Flash Player from Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Several other options</a> are also available for editing OpenStreetMap.'
-      potlatch_unsaved_changes: "You have unsaved changes. (To save in Potlatch, you should deselect the current way or point, if editing in list mode, or click save if you have a save button.)"
+      anon_edits_link_text: "Pojasnilo zakaj je temu tako."
+      flash_player_required: 'Za uporabo Potlatch-a, urejevalnika OpenStreetMap potrebujete predvajalnik Flash. Lahko ga <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">prenesete iz Adobe.com</a>. Na voljo vam je tudi <a href="http://wiki.openstreetmap.org/wiki/Editing">več drugih možnosti</a> za urejanje zemljevida OpenStreetMap.'
+      potlatch_unsaved_changes: "Imate neshranjene spremembe. (Za shranjevanje v Potlatch-u, od-izberite trenutno pot ali vozlišče (v načinu v živo), ali pa kliknite na gumb Save (shrani), če ga imate.)"
     sidebar:
       search_results: Rezultati iskanja
       close: Zapri
@@ -544,22 +580,78 @@ sl:
       search_help: "primeri: 'Bovec', 'Prešernova, Celje', 'Živalski vrt' ali 'vzpenjača' <a href='http://wiki.openstreetmap.org/wiki/Search'>Več primerov...</a>"
     key:
       map_key: "Legenda"
+      map_key_tooltip: "Legenda mapnik zemljevida na prikazanem nivoju povečave"
+      table:
+        heading: "Legenda povečave {{zoom_level}}"
+        entry:
+          motorway: "Avtocesta"
+          trunk: "Hitra cesta"
+          primary: "Glavna cesta"
+          secondary: "Regionalna cesta"
+          unclassified: "Ostale ceste izven naselij"
+          unsurfaced: "Neasfaltirana cesta"
+          track: "Kolovoz"
+          byway: "Byway"
+          bridleway: "Bridleway"
+          cycleway: "Kolesarska steza"
+          footway: "Pešpot"
+          rail: "Železnica"
+          subway: "Podzemna železnica"
+          tram: "Ozkotirna železnica; tramvaj"
+          cable: "Kabinska žičnica; sedežnica"
+          runway: "Vzletno-pristajalna steza; povezave"
+          apron: "Letališka ploščad; terminal"
+          admin: "Upravna razmejitev"
+          forest: "Forest"
+          wood: "Wood"
+          golf: "Igrišče za Golf"
+          park: "Park"
+          resident: "Naselje"
+          tourist: "Turistična znamenitost"
+          common: "Common; meadow"
+          retail: "Trgovsko območje"
+          industrial: "Industrijsko območje"
+          commercial: "Poslovno območje"
+          heathland: "Grmičevje"
+          lake: "Jezero; vodni zbiralnik"
+          farm: "Kmetija"
+          brownfield: "Brownfield site"
+          cemetery: "Pokopališče"
+          allotments: "Vrtički"
+          pitch: "Sports pitch"
+          centre: "Sports centre"
+          reserve: "Naravni rezervat"
+          military: "Vojaško področje"
+          school: "Šola; univerza"
+          building: "Pomembna zgradba"
+          station: "Železniška postaja"
+          summit: "Vrh"
+          tunnel: "Črtkana obroba = predor"
+          bridge: "Krepka obroba = most"
+          private: "Private access"
+          permissive: "Permissive access"
+          destination: "Dovoljeno za dostavo"
+          construction: "Ceste v gradnji"
   trace:
     create:
       upload_trace: "Pošlji GPS sled"
       trace_uploaded: "Vaša datoteka z GPS sledjo v datoteki GPX je bila poslana na strežnik in čaka na uvoz v bazo. To se ponavadi zgodi v roku pol ure. O uvozu boste obveščeni po elektronski pošti." 
     edit:
+      title: "Urejanje sledi {{name}}"
+      heading: "Urejanje sledi {{name}}"
       filename: "Ime datoteke:"
+      download: "prenos"
       uploaded_at: "Poslano na strežnik:"
       points: "Točk:"
       start_coord: "Začetna koordinata:"
+      map: "zemljevid"
       edit: "uredi"
       owner: "Lastnik:"
       description: "Opis:"
       tags: "Oznake:"
       save_button: "Shrani spremembe"
     no_such_user:
-      title: "No such user"
+      title: "Ni tega uporabnika"
       heading: "Uporabnik {{user}} ne obstaja"
       body: "Oprostite, uporabnika z imenom {{user}} ni. Prosimo, preverite črkovanje in povezavo, ki ste jo kliknili."
     trace_form:
@@ -567,6 +659,8 @@ sl:
       description: "Opis"
       tags: "Oznake"
       public: "Javna?"
+      public_help: "Kaj to pomeni?"
+      public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
       upload_button: "Pošlji"
       help: "Pomoč"
       help_url: "http://wiki.openstreetmap.org/wiki/Upload"
@@ -578,6 +672,8 @@ sl:
     trace_optionals:
       tags: "Oznake"
     view:
+      title: "Prikaz sledi {{name}}"
+      heading: "Prikaz sledi {{name}}" 
       pending: "ČAKAJOČA"
       filename: "Datoteka:"
       download: "prenos"
@@ -588,12 +684,11 @@ sl:
       edit: "uredi"
       owner: "Lastnik:"
       description: "Opis:"
-      tags: "Oznake"
+      tags: "Oznake:"
       none: "Brez"
       make_public: "Naj ta sled postane trajno javna"
       edit_track: "Uredi to sled"
       delete_track: "Izbriši to sled"
-      heading: "Prikaz sledi {{name}}" 
       trace_not_found: "Sledi ni bilo mogoče najti!" 
     trace_paging_nav:
       showing: "Prikaz strani"
@@ -615,7 +710,7 @@ sl:
     list: 
       public_traces: "Javne GPS sledi" 
       your_traces: "Vaše GPS sledi" 
-      public_traces_from: "Javnr GPS sledi uporabnika {{user}}" 
+      public_traces_from: "Javne GPS sledi uporabnika {{user}}" 
       tagged_with: " z oznako {{tags}}" 
     delete: 
       scheduled_for_deletion: "Sled bo izbrisana" 
@@ -650,7 +745,7 @@ sl:
       no_auto_account_create: "Na žalost vam trenutno ne moremo samodejno ustvariti uporabniškega računa."
       contact_webmaster: 'Prosimo, pišite <a href="mailto:webmaster@openstreetmap.org">webmastru</a> (v angleščini) in se dogovorite za ustvarjenje uporabniškega računa - potrudili se bomo za čimprejšnjo obravnavo vašega zahtevka. '
       fill_form: "Izpolnite obrazec in poslali vam bomo elektronsko sporočilce s katerim boste aktivirali svoj uporabniški račun."
-      license_agreement: 'Z ustvarjanjem uporabniškega računa se strinjate, da bodo vsi vaši prispevki, ki jih boste poslali na openstreetmap.org in vsi podatki, ki jih boste ustvarili z orodji, ki se povezujejo z openstreetmap.org licencirani (ne-izključno) pod pogoji <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.sl">te Creative Commons licence (by-sa)</a>.'
+      license_agreement: 'Z ustvarjanjem uporabniškega računa se strinjate, da bodo vsi vaši prispevki, ki jih boste poslali na openstreetmap.org in vsi podatki, ki jih boste ustvarili z orodji, ki se povezujejo z openstreetmap.org licencirani (ne-izključno) pod pogoji <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.sl">te Creative Commons licence (Priznanje avtorstva-Deljenje pod enakimi pogoji)</a>.'
       email address: "Naslov e-pošte: "
       confirm email address: "Potrdite naslov e-pošte: "
       not displayed publicly: 'Ne bo javno objavljeno (glej <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="politika zasebnosti z razdelkom o naslovu elektronske pošte v wiki-ju">politiko zasebnosti</a>)'
@@ -702,7 +797,7 @@ sl:
       public editing:
         heading: "Javno urejanje: "
         enabled: "Omogočeno. Niste anonimni in lahko urejate podatke."
-        enabled link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
+        enabled link: "http://wiki.openstreetmap.org/wiki/Anonymous_edits"
         enabled link text: "Kaj je to?"
         disabled: "Onemogočeno in ne morete urejati podatkov. Vsi vaši prejšnji prispevki so anonimni."
         disabled link text: "Zakaj ne morem urejati?"
@@ -716,8 +811,8 @@ sl:
       save changes button: Shrani spremembe
       make edits public button: Naj bodo vsi moji prispevki javni
       return to profile: Nazaj na profil
-      flash update success confirm needed: "User information updated successfully. Check your email for a note to confirm your new email address."
-      flash update success: "Podatki o uporabniku uspešno posodobljeni."
+      flash update success confirm needed: "Podatki o uporabniku so bili uspešno posodobljeni. Preverite svojo e-pošto in potrdite spremembo e-poštnega naslova."
+      flash update success: "Podatki o uporabniku so bili uspešno posodobljeni."
     confirm:
       heading: Potrdite uporabniški račun
       press confirm button: "Za aktivacijo vašega uporabniškega računa pritisnite na gumb Potrdi spodaj."
index 82ed28cd8763576d100cab9151f6ffbfaee68707..f33d41704fcec89405ac722d51af3cbf81958ddd 100644 (file)
@@ -100,12 +100,11 @@ yo:
       version: "Version:"
       in_changeset: "In changeset:"
     containing_relation:
-      relation: "Relation {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "Relation {{relation_name}}"
+      entry_role: "Relation {{relation_name}} (as {{relation_role}})"
     map:
       loading: "Loading..."
       deleted: "Deleted"
-      view_larger_map: "View Larger Map"
     node_details:
       coordinates: "Coordinates: "
       part_of: "Part of:"
@@ -135,8 +134,6 @@ yo:
     relation_history:
       relation_history: "Relation History"
       relation_history_title: "Relation History: {{relation_name}}"
-    relation_member:
-      as: "as"
     relation:
       relation: "Relation"
       relation_title: "Relation: {{relation_name}}"
index 83209757b62880507e0ca0be1fe7665dd3bf2a47..9c69010dfe9bff6e6361dd03e1a3d40d10a0986e 100644 (file)
@@ -98,12 +98,11 @@ zh-CN:
       version: "版本:"
       in_changeset: "在修改集合中:"
     containing_relation:
-      relation: "关系 {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "关系 {{relation_name}}"
+      entry_role: "关系 {{relation_name}} (as {{relation_role}})"
     map:
       loading: "读取中..."
       deleted: "删除"
-      view_larger_map: "显示更大地图"
     node_details:
       coordinates: "坐标: "
       part_of: "部分:"
@@ -133,8 +132,6 @@ zh-CN:
     relation_history:
       relation_history: "关系历史"
       relation_history_title: "关系历史: {{relation_name}}"
-    relation_member:
-      as: "as"
     relation:
       relation: "关系"
       relation_title: "关系: {{relation_name}}"
index e24e9a8cd8898337de719b1ce7ba3bd4eb356a49..57b90c589a4ca45ad4daeacc9344cf7a9efbf6cd 100644 (file)
@@ -100,12 +100,11 @@ zh-TW:
       version: "版本:"
       in_changeset: "於變更組合:"
     containing_relation:
-      relation: "關係 {{relation_name}}"
-      relation_as: "(as {{relation_role}})"
+      entry: "關係 {{relation_name}}"
+      entry_role: "關係 {{relation_name}} (as {{relation_role}})"
     map:
       loading: "正在載入..."
       deleted: "已刪除"
-      view_larger_map: "檢視較大的地圖"
     node_details:
       coordinates: "坐標:"
       part_of: "部分:"
@@ -135,8 +134,6 @@ zh-TW:
     relation_history:
       relation_history: "關係歷史紀錄"
       relation_history_title: "關係歷史紀錄: {{relation_name}}"
-    relation_member:
-      as: "為"
     relation:
       relation: "關係"
       relation_title: "關係: {{relation_name}}"
index a998df16ea47e5bc6ce8f1fd54e3baee9c9b4c5a..8e9b01bf9dba9512550cfbe9e602bba5ccc04955 100644 (file)
@@ -116,6 +116,9 @@ ActionController::Routing::Routes.draw do |map|
   map.connect '/create-account.html', :controller => 'user', :action => 'new'
   map.connect '/forgot-password.html', :controller => 'user', :action => 'lost_password'
 
+  # permalink
+  map.connect '/go/:code', :controller => 'site', :action => 'permalink', :code => /[a-zA-Z0-9_@]+=*/
+
   # traces  
   map.connect '/traces', :controller => 'trace', :action => 'list'
   map.connect '/traces/page/:page', :controller => 'trace', :action => 'list'
diff --git a/lib/short_link.rb b/lib/short_link.rb
new file mode 100644 (file)
index 0000000..afcf1ef
--- /dev/null
@@ -0,0 +1,79 @@
+##
+# Encodes and decodes locations from Morton-coded "quad tile" strings. Each
+# variable-length string encodes to a precision of one pixel per tile (roughly,
+# since this computation is done in lat/lon coordinates, not mercator).
+# Each character encodes 3 bits of x and 3 of y, so there are extra characters
+# tacked on the end to make the zoom levels "work".
+module ShortLink
+
+  # array of 64 chars to encode 6 bits. this is almost like base64 encoding, but
+  # the symbolic chars are different, as base64's + and / aren't very 
+  # URL-friendly.
+  ARRAY = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + ['_','@']
+
+  ##
+  # Given a string encoding a location, returns the [lon, lat, z] tuple of that 
+  # location.
+  def self.decode(str)
+    x = 0
+    y = 0
+    z = 0
+    z_offset = 0
+
+    str.each_char do |c|
+      t = ARRAY.index c
+      if t.nil?
+        z_offset -= 1
+      else
+        3.times do
+          x <<= 1; x = x | 1 unless (t & 32).zero?; t <<= 1
+          y <<= 1; y = y | 1 unless (t & 32).zero?; t <<= 1
+        end
+        z += 3
+      end
+    end
+    # pack the coordinates out to their original 32 bits.
+    x <<= (32 - z)
+    y <<= (32 - z)
+
+    # project the parameters back to their coordinate ranges.
+    [(x * 360.0 / 2**32) - 180.0, 
+     (y * 180.0 / 2**32) - 90.0, 
+     z - 8 - (z_offset % 3)]
+  end
+
+  ##
+  # given a location and zoom, return a short string representing it.
+  def self.encode(lon, lat, z)
+    code = interleave_bits(((lon + 180.0) * 2**32 / 360.0).to_i, 
+                           ((lat +  90.0) * 2**32 / 180.0).to_i)
+    str = ""
+    # add eight to the zoom level, which approximates an accuracy of
+    # one pixel in a tile.
+    ((z + 8)/3.0).ceil.times do |i|
+      digit = (code >> (58 - 6 * i)) & 0x3f
+      str << ARRAY[digit]
+    end
+    # append characters onto the end of the string to represent
+    # partial zoom levels (characters themselves have a granularity
+    # of 3 zoom levels).
+    ((z + 8) % 3).times { str << "=" }
+    
+    return str
+  end
+
+  private
+  
+  ##
+  # interleaves the bits of two 32-bit numbers. the result is known
+  # as a Morton code.
+  def self.interleave_bits(x, y)
+    c = 0
+    31.downto(0) do |i|
+      c = (c << 1) | ((x >> i) & 1)
+      c = (c << 1) | ((y >> i) & 1)
+    end
+    c
+  end
+
+end
diff --git a/public/images/key/osmarender/motorway.png b/public/images/key/osmarender/motorway.png
new file mode 100644 (file)
index 0000000..2c962c6
Binary files /dev/null and b/public/images/key/osmarender/motorway.png differ
index 6e012b3d30f4cd0128d58654e63d20b1a02813be..9773ab348c4505ff881dbabeaba6c155828b6247 100644 (file)
@@ -57,9 +57,9 @@ function createMap(divName, options) {
 
    var nonamekey = nonamekeys[document.domain];
    var noname = new OpenLayers.Layer.OSM("NoName", [
-      "http://a.tile.cloudmade.com/" + nonamekey + "/3/256/",
-      "http://b.tile.cloudmade.com/" + nonamekey + "/3/256/",
-      "http://c.tile.cloudmade.com/" + nonamekey + "/3/256/"
+      "http://a.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png",
+      "http://b.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png",
+      "http://c.tile.cloudmade.com/" + nonamekey + "/3/256/${z}/${x}/${y}.png"
    ], {
       displayOutsideMaxExtent: true,
       wrapDateLine: true,
@@ -84,7 +84,7 @@ function createMap(divName, options) {
       projection: "EPSG:900913"
    });
    map.addLayer(markers);
-   
+
    return map;
 }
 
@@ -108,6 +108,49 @@ function addMarkerToMap(position, icon, description) {
    return marker;
 }
 
+function addObjectToMap(url, zoom, callback) {
+   var layer = new OpenLayers.Layer.GML("Objects", url, {
+      format: OpenLayers.Format.OSM,
+      style: {
+          strokeColor: "blue",
+          strokeWidth: 3,
+          strokeOpacity: 0.5,
+          fillOpacity: 0.2,
+          fillColor: "lightblue"
+      },
+      projection: new OpenLayers.Projection("EPSG:4326"),
+      displayInLayerSwitcher: false
+   });
+
+   layer.events.register("loadend", layer, function() {
+      var extent;
+
+      if (this.features.length) {
+         extent = this.features[0].geometry.getBounds();
+
+         for (var i = 1; i < this.features.length; i++) {
+            extent.extend(this.features[i].geometry.getBounds());
+         }
+
+         if (zoom) {
+            if (extent) {
+               this.map.zoomToExtent(extent);
+            } else {
+               this.map.zoomToMaxExtent();
+            }
+         }
+      }
+
+      if (callback) {
+         callback(extent);
+      }
+   });
+  
+   map.addLayer(layer);
+
+   layer.loadGML();
+}
+
 function addBoxToMap(boxbounds) {
    if(!vectors) {
      // Be aware that IE requires Vector layers be initialised on page load, and not under deferred script conditions
index e0c18a27b5005fee572114de23388d360ef31b0e..b7ad7d7e4b782e338a8515f56a95cdb0a7d24fe5 100644 (file)
@@ -2,7 +2,7 @@
  * Called as the user scrolls/zooms around to aniplate hrefs of the
  * view tab and various other links
  */
-function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
+function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,objid) {
   var decimals = Math.pow(10, Math.floor(zoom/3));
   var node;
 
@@ -18,6 +18,9 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
     if (layers) {
       args["layers"] = layers;
     }
+    if (objtype && objid) {
+      args[objtype] = objid;
+    }
     node.href = setArgs(node.href, args);
   }
 
@@ -84,8 +87,51 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
       node.style.fontStyle = 'italic';
     }
   }
+
+  node = document.getElementById("shortlinkanchor");
+  if (node) {
+    var args = getArgs(node.href);
+    var code = makeShortCode(lat, lon, zoom);
+    var prefix = shortlinkPrefix();
+
+    // Add ?{node,way,relation}=id to the arguments
+    if (objtype && objid) {
+      args[objtype] = objid;
+    }
+
+    // This is a hack to omit the default mapnik layer (B000FTF) from
+    // the shortlink. B000FTFT is then the "Object" layer which we get
+    // on /?{node,way,relation}=id
+    if (layers && (layers != "B000FTF") && (layers != "B000FTFT")) {
+      args["layers"] = layers;
+    }
+
+    // Here we're assuming that all parameters but ?layers= and
+    // ?{node,way,relation}= can be safely omitted from the shortlink
+    // which encodes lat/lon/zoom. If new URL parameters are added to
+    // the main slippy map this needs to be changed.
+    if (args["layers"] || args[objtype]) {
+      node.href = setArgs(prefix + "/go/" + code, args);
+    } else {
+      node.href = prefix + "/go/" + code;
+    }
+  }
+}
+
+/*
+ * Get the URL prefix to use for a short link
+ */
+function shortlinkPrefix() {
+  if (window.location.hostname.match(/^www\.openstreetmap\.org/i)) {
+    return "http://osm.org";
+  } else {
+    return "";     
+  }
 }
 
+/*
+ * Called to get the arguments from a URL as a hash.
+ */
 function getArgs(url) {
   var args = new Object();
   var querystart = url.indexOf("?");
@@ -125,7 +171,7 @@ function setArgs(url, args) {
 }
 
 /*
- * Called to get the arguments from a URL as a hash.
+ * Called to get a CSS property for an element.
  */
 function getStyle(el, property) {
   var style;
@@ -158,3 +204,34 @@ function i18n(string, keys) {
    
   return string;
 } 
+
+function makeShortCode(lat, lon, zoom) {
+    char_array = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_@";
+    var x = Math.round((lon + 180.0) * ((1 << 30) / 90.0));
+    var y = Math.round((lat +  90.0) * ((1 << 30) / 45.0));
+    // hack around the fact that JS apparently only allows 53-bit integers?!?
+    // note that, although this reduces the accuracy of the process, it's fine for
+    // z18 so we don't need to care for now.
+    var c1 = 0, c2 = 0;
+    for (var i = 31; i > 16; --i) {
+       c1 = (c1 << 1) | ((x >> i) & 1);
+       c1 = (c1 << 1) | ((y >> i) & 1);
+    }
+    for (var i = 16; i > 1; --i) {
+       c2 = (c2 << 1) | ((x >> i) & 1);
+       c2 = (c2 << 1) | ((y >> i) & 1);
+    }
+    var str = "";
+    for (var i = 0; i < Math.ceil((zoom + 8) / 3.0) && i < 5; ++i) {
+       digit = (c1 >> (24 - 6 * i)) & 0x3f;
+       str += char_array.charAt(digit);
+    }
+    for (var i = 5; i < Math.ceil((zoom + 8) / 3.0); ++i) {
+       digit = (c2 >> (24 - 6 * (i - 5))) & 0x3f;
+       str += char_array.charAt(digit);
+    }
+    for (var i = 0; i < ((zoom + 8) % 3); ++i) {
+       str += "=";
+    }
+    return str;
+}
index 6145fa9942f31b0cefefc8243699340660081f0f..a65acf838d89db83b91790ba2002687354ab5c31 100644 (file)
@@ -440,7 +440,7 @@ if(!this.element.lefttop){this.element.lefttop=[(document.documentElement.client
 if(!this.element.offsets){this.element.offsets=OpenLayers.Util.pagePosition(this.element);this.element.offsets[0]+=this.element.scrolls[0];this.element.offsets[1]+=this.element.scrolls[1];}
 return new OpenLayers.Pixel((evt.clientX+this.element.scrolls[0])-this.element.offsets[0]
 -this.element.lefttop[0],(evt.clientY+this.element.scrolls[1])-this.element.offsets[1]
--this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Lang.ca={'unhandledRequest':"Resposta a petició no gestionada ${statusText}",'permalink':"Enllaç permanent",'overlays':"Capes addicionals",'baseLayer':"Capa Base",'sameProjection':"El mapa de referència només funciona si té la mateixa projecció que el mapa principal",'readNotImplemented':"Lectura no implementada.",'writeNotImplemented':"Escriptura no implementada.",'noFID':"No es pot actualitzar un element per al que no existeix FID.",'errorLoadingGML':"Error caregant el fitxer GML ${url}",'browserNotSupported':"El seu navegador no suporta renderització vectorial. Els renderitzadors suportats actualmente són:\n${renderers}",'componentShouldBe':"addFeatures : el component ha de ser de tipus ${geomType}",'getFeatureError':"getFeatureFromEvent ha estat cridat a una capa sense renderizador. Això normalment vol dir que "+"s'ha eliminat una capa, però no el handler associat a ella.",'minZoomLevelError':"La propietat minZoomLevel s'ha d'utilitzar només "+"amb les capes que tenen FixedZoomLevels. El fet que "+"una capa wfs comprovi minZoomLevel és una reliquia del "+"passat. No podem, però, eliminar-la sense trencar "+"les aplicacions d'OpenLayers que en puguin dependre. "+"Així doncs estem fent-la obsoleta -- la comprovació "+"minZoomLevel s'eliminarà a la versió 3.0. Feu servir "+"els paràmetres min/max resolution en substitució, tal com es descriu aquí: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacció WFS: CORRECTA ${response}",'commitFailed':"Transacció WFS: HA FALLAT ${response}",'googleWarning':"La capa Google no s'ha pogut carregar correctament.<br><br>"+"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.<br><br>"+"Probablement això és degut a que l'script de la biblioteca de "+"Google Maps no ha estat inclòs a la vostra pàgina, o no "+"conté la clau de l'API correcta per a la vostra adreça.<br><br>"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>féu clic aquí</a>",'getLayerWarning':"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.<br><br>"+"Probablement això és degut a que l'script de la biblioteca "+"${layerLib} "+"no ha estat inclòs a la vostra pàgina.<br><br>"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>féu clic aquí</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Heu intentat afegir la capa: ${layerName} al mapa, pero ja ha estat afegida anteriorment",'reprojectDeprecated':"Esteu fent servir l'opció 'reproject' a la capa "+"${layerName}. Aquesta opció és obsoleta: el seu ús fou concebut "+"per suportar la visualització de dades sobre mapes base comercials, "+"però aquesta funcionalitat s'hauria d'assolir ara mitjançant el suport "+"de la projecció Spherical Mercator. Més informació disponible a "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Aquest mètode és obsolet i s'eliminará a la versió 3.0. "+"Si us plau feu servir em mètode alternatiu ${newMethod}.",'boundsAddError':"Ha de proporcionar els valors x i y a la funció add.",'lonlatAddError':"Ha de proporcionar els valors lon i lat a la funció add.",'pixelAddError':"Ha de proporcionar els valors x i y a la funció add.",'unsupportedGeometryType':"Tipus de geometria no suportada: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition ha fallat: l'element amb id ${elemId} pot estar fora de lloc.",'filterEvaluateNotImplemented':"evaluate no està implementat per aquest tipus de filtre.",'end':''};OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>click here</a>",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>click here</a>",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':'','filterEvaluateNotImplemented':"evaluate is not implemented for this filter type."};OpenLayers.Lang.es={'unhandledRequest':"Respuesta a petición no gestionada ${statusText}",'permalink':"Enlace permanente",'overlays':"Capas superpuestas",'baseLayer':"Capa Base",'sameProjection':"El mini mapa sólo funciona si está en la misma proyección que el mapa principal",'readNotImplemented':"Lectura no implementada.",'writeNotImplemented':"Escritura no implementada.",'noFID':"No se puede actualizar un elemento para el que no existe FID.",'errorLoadingGML':"Error cargando el fichero GML ${url}",'browserNotSupported':"Su navegador no soporta renderización vectorial. Los renderizadores soportados actualmente son:\n${renderers}",'componentShouldBe':"addFeatures : el componente debe ser del tipo ${geomType}",'getFeatureError':"getFeatureFromEvent llamado en una capa sin renderizador. Esto normalmente quiere decir que "+"se ha destruido una capa, pero no el manejador asociado a ella.",'minZoomLevelError':"La propiedad minZoomLevel debe sólo utilizarse "+"con las capas que tienen FixedZoomLevels. El hecho de que "+"una capa wfs compruebe minZoomLevel is una reliquia del "+"pasado. Sin embargo, no podemos eliminarla sin discontinuar "+"probablemente las aplicaciones OL que puedan depender de ello. "+"Así pues estamos haciéndolo obsoleto --la comprobación "+"minZoomLevel se eliminará en la versión 3.0. Utilice el ajuste "+"de resolution min/max en su lugar, tal como se describe aquí: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacción WFS: ÉXITO ${response}",'commitFailed':"Transacción WFS: FALLÓ ${response}",'googleWarning':"La capa Google no pudo ser cargada correctamente.<br><br>"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.<br><br>"+"Probablemente, esto se debe a que el script de la biblioteca de "+"Google Maps no fue correctamente incluido en su página, o no "+"contiene la clave del API correcta para su sitio.<br><br>"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>haga clic aquí</a>",'getLayerWarning':"La capa ${layerType} no pudo ser cargada correctamente.<br><br>"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.<br><br>"+"Probablemente, esto se debe a que el script de "+"la biblioteca ${layerLib} "+"no fue correctamente incluido en su página.<br><br>"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>haga clic aquí</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Intentó añadir la capa: ${layerName} al mapa, pero ya había sido añadida previamente",'reprojectDeprecated':"Está usando la opción 'reproject' en la capa "+"${layerName}. Esta opción está obsoleta: su uso fue diseñado "+"para soportar la visualización de datos sobre mapas base comerciales, "+"pero esa funcionalidad debería conseguirse ahora mediante el soporte "+"de la proyección Spherical Mercator. Más información disponible en "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método está obsoleto y se eliminará en la versión 3.0. "+"Por favor utilice el método ${newMethod} en su lugar.",'boundsAddError':"Debe proporcionar los valores x e y a la función add.",'lonlatAddError':"Debe proporcionar los valores lon y lat a la función add.",'pixelAddError':"Debe proporcionar los valores x e y a la función add.",'unsupportedGeometryType':"Tipo de geometría no soportada: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falló: el elemento con id ${elemId} puede haberse colocado de manera errónea.",'filterEvaluateNotImplemented':"evaluate no está implementado para este tipo de filtro.",'end':''};OpenLayers.Lang.fr={'unhandledRequest':"Requête non gérée, retournant ${statusText}",'permalink':"Permalien",'overlays':"Calques",'baseLayer':"Calque de base",'sameProjection':"La carte de situation ne fonctionne que lorsque sa projection est la même que celle de la carte principale",'readNotImplemented':"Lecture non implémentée.",'writeNotImplemented':"Ecriture non implémentée.",'noFID':"Impossible de mettre à jour un objet sans identifiant (fid).",'errorLoadingGML':"Erreur au chargement du fichier GML ${url}",'browserNotSupported':"Votre navigateur ne supporte pas le rendu vectoriel. Les renderers actuellement supportés sont : \n${renderers}",'componentShouldBe':"addFeatures : le composant devrait être de type ${geomType}",'getFeatureError':"getFeatureFromEvent a été appelé sur un calque sans renderer. Cela signifie généralement que vous "+"avez détruit cette couche, mais que vous avez conservé un handler qui lui était associé.",'minZoomLevelError':"La propriété minZoomLevel doit seulement être utilisée "+"pour des couches FixedZoomLevels-descendent. Le fait que "+"cette couche WFS vérifie la présence de minZoomLevel "+"est une relique du passé. Nous ne pouvons toutefois la "+"supprimer sans casser des applications qui pourraient en dépendre."+" C'est pourquoi nous la déprécions -- la vérification du minZoomLevel "+"sera supprimée en version 3.0. A la place, merci d'utiliser "+"les paramètres de résolutions min/max tel que décrit sur : "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS : SUCCES ${response}",'commitFailed':"Transaction WFS : ECHEC ${response}",'googleWarning':"La couche Google n'a pas été en mesure de se charger correctement.<br><br>"+"Pour supprimer ce message, choisissez une nouvelle BaseLayer "+"dans le sélecteur de couche en haut à droite.<br><br>"+"Cela est possiblement causé par la non-inclusion de la "+"librairie Google Maps, ou alors parce que la clé de l'API "+"ne correspond pas à votre site.<br><br>"+"Développeurs : pour savoir comment corriger ceci, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>cliquez ici</a>",'getLayerWarning':"La couche ${layerType} n'est pas en mesure de se charger correctement.<br><br>"+"Pour supprimer ce message, choisissez une nouvelle BaseLayer "+"dans le sélecteur de couche en haut à droite.<br><br>"+"Cela est possiblement causé par la non-inclusion de la "+"librairie ${layerLib}.<br><br>"+"Développeurs : pour savoir comment corriger ceci, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>cliquez ici</a>",'scale':"Echelle ~ 1 : ${scaleDenom}",'layerAlreadyAdded':"Vous avez essayé d'ajouter à la carte le calque : ${layerName}, mais il est déjà présent",'reprojectDeprecated':"Vous utilisez l'option 'reproject' "+"sur la couche ${layerName}. Cette option est dépréciée : "+"Son usage permettait d'afficher des données au dessus de couches raster commerciales."+"Cette fonctionalité est maintenant supportée en utilisant le support de la projection "+"Mercator Sphérique. Plus d'information est disponible sur "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Cette méthode est dépréciée, et sera supprimée à la version 3.0. "+"Merci d'utiliser ${newMethod} à la place.",'boundsAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'lonlatAddError':"Vous devez passer les deux valeurs lon et lat à la fonction add.",'pixelAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'unsupportedGeometryType':"Type de géométrie non supporté : ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition a échoué: l'élément d'id ${elemId} pourrait être mal positionné.",'end':''};OpenLayers.Lang.it={'unhandledRequest':"Codice di ritorno della richiesta ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Livello base",'sameProjection':"La mini mappa funziona solamente se ha la stessa proiezione della mappa principale",'readNotImplemented':"Lettura non implementata.",'writeNotImplemented':"Scrittura non implementata.",'noFID':"Impossibile aggiornare un elemento grafico che non abbia il FID.",'errorLoadingGML':"Errore nel caricamento del file GML ${url}",'browserNotSupported':"Il tuo browser non supporta il rendering vettoriale. I renderizzatore attualemnte supportati sono:\n${renderers}",'componentShouldBe':"addFeatures : il componente dovrebbe essere di tipo ${geomType}",'getFeatureError':"getFeatureFromEvent chiamata su di un livello senza renderizzatore. Ciò significa che "+"il livello è stato cancellato, ma non i gestori associati ad esso.",'minZoomLevelError':"La proprietà minZoomLevel è da utilizzare solamente "+"con livelli che abbiano FixedZoomLevels. Il fatto che "+"questo livello wfs controlli la proprietà minZoomLevel è "+"un retaggio del passato. Non possiamo comunque rimuoverla "+"senza rompere le vecchie applicazioni che dipendono su di essa."+"Quindi siamo costretti a deprecarla -- minZoomLevel "+"e sarà rimossa dalla vesione 3.0. Si prega di utilizzare i "+"settaggi di risoluzione min/max come descritto qui: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transazione WFS: SUCCESS ${response}",'commitFailed':"Transazione WFS: FAILED ${response}",'googleWarning':"Il livello Google non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria Google Maps "+"non è stata inclusa nella pagina, oppure non contiene la "+"corretta API key per il tuo sito.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>clicca qui</a>",'getLayerWarning':"Il livello ${layerType} non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria ${layerLib} "+"non è stata inclusa nella pagina.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>clicca qui</a>",'scale':"Scala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Stai cercando di aggiungere il livello: ${layerName} alla mappa, ma tale livello è già stato aggiunto.",'reprojectDeprecated':"Stai utilizzando l'opzione 'reproject' sul livello ${layerName}. "+"Questa opzione è deprecata: il suo utilizzo è stato introdotto per"+"supportare il disegno dei dati sopra mappe commerciali, ma tale "+"funzionalità dovrebbe essere ottenuta tramite l'utilizzo della proiezione "+"Spherical Mercator. Per maggiori informazioni consultare qui "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Questo metodo è stato deprecato e sarà rimosso dalla versione 3.0. "+"Si prega di utilizzare il metodo ${newMethod} in alternativa.",'boundsAddError':"Devi specificare i valori di x e y alla funzione add.",'lonlatAddError':"Devi specificare i valori di lon e lat alla funzione add.",'pixelAddError':"Devi specificare i valori di x e y alla funzione add.",'unsupportedGeometryType':"Tipo di geometria non supportata: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallita: l'elemento con id ${elemId} è posizionato in modo errato.",'end':''};OpenLayers.Lang["pt-BR"]={'unhandledRequest':"A requisição retornou um erro não tratado: ${statusText}",'permalink':"Link para essa página",'overlays':"Camadas de Sobreposição",'baseLayer':"Camada Base",'sameProjection':"O mapa de referência só funciona quando ele está na mesma projeção do mapa principal",'readNotImplemented':"Leitura não implementada.",'writeNotImplemented':"Escrita não implementada.",'noFID':"Não é possível atualizar uma feição que não tenha um FID.",'errorLoadingGML':"Erro ao carregar o arquivo GML ${url}",'browserNotSupported':"Seu navegador não suporta renderização de vetores. Os renderizadores suportados atualmente são:\n${renderers}",'componentShouldBe':"addFeatures: o componente deve ser do tipo ${geomType}",'getFeatureError':"getFeatureFromEvent foi executado mas nenhum renderizador foi encontrado. "+"Isso pode indicar que você destruiu uma camana, mas não o handler associado a ela.",'minZoomLevelError':"A propriedade minZoomLevel é de uso restrito das camadas "+"descendentes de FixedZoomLevels. A verificação dessa propriedade "+"pelas camadas wfs é um resíduo do passado. Não podemos, entretanto "+"não é possível removê-la sem possívelmente quebrar o funcionamento "+"de aplicações OL que possuem depência com ela. Portanto estamos "+"tornando seu uso obsoleto -- a verificação desse atributo será "+"removida na versão 3.0. Ao invés, use as opções de resolução "+"min/max como descrito em: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transação WFS : SUCESSO ${response}",'commitFailed':"Transação WFS : ERRO ${response}",'googleWarning':"Não foi possível carregar a camada Google corretamente.<br><br>"+"Para se livrar dessa mensagem, selecione uma nova Camada Base, "+"na ferramenta de alternação de camadas localização do canto "+"superior direito.<br><br>"+"Muito provavelmente, isso foi causado porque o script da "+"biblioteca do Google Maps não foi incluído, ou porque ele não "+"contém a chave correta da API para o seu site.<br><br>"+"Desenvolvedores: Para obter ajuda em solucionar esse problema "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>cliquem aqui</a>",'getLayerWarning':"Não foi possível carregar a camada ${layerType} corretamente.<br><br>"+"Para se livrar dessa mensagem, selecione uma nova Camada Base, "+"na ferramenta de alternação de camadas localização do canto "+"superior direito.<br><br>"+"Muito provavelmente, isso foi causado porque o script da "+"biblioteca ${layerLib} não foi incluído corretamente.<br><br>"+"Desenvolvedores: Para obter ajuda em solucionar esse problema "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>cliquem aqui</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Você tentou adicionar a camada: ${layerName} ao mapa, mas ela já foi adicionada",'reprojectDeprecated':"Você está usando a opção 'reproject' na camada ${layerName}. "+"Essa opção está obsoleta: seu uso foi projetado para suportar "+"a visualização de dados sobre bases de mapas comerciais, "+"entretanto essa funcionalidade deve agora ser alcançada usando "+"o suporte à projeção Mercator. Mais informação está disponível em: "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Esse método está obsoleto e será removido na versão 3.0. "+"Ao invés, por favor use ${newMethod}.",'boundsAddError':"Você deve informar ambos os valores x e y para a função add.",'lonlatAddError':"Você deve informar ambos os valores lon e lat para a função add.",'pixelAddError':"Você deve informar ambos os valores x e y para a função add.",'unsupportedGeometryType':"Tipo geométrico não suportado: ${geomType}.",'pagePositionFailed':"OpenLayers.Util.pagePosition falhou: o elemento de id ${elemId} deve estar fora do lugar.",'end':''};OpenLayers.Lang["zh-CN"]={'unhandledRequest':"未处理的请求,返回值为 ${statusText}",'permalink':"永久链接",'overlays':"叠加层",'baseLayer':"基础图层",'sameProjection':"鹰眼地图只有在和主地图使用相同的投影的时候才能正常共工作",'readNotImplemented':"读取功能没有实现。",'writeNotImplemented':"写入功能没有实现。",'noFID':"无法更新feature,缺少FID。",'errorLoadingGML':"加载GML文件 ${url} 出现错误。",'browserNotSupported':"你使用的浏览器不支持矢量渲染。当前支持的渲染方式包括:\n${renderers}",'componentShouldBe':"addFeatures : 组件类型应该是 ${geomType}",'getFeatureError':"getFeatureFromEvent方法在一个没有渲染器的图层上被调用。 这通常意味着您"+"销毁了一个图层,但并未销毁其关联的handler。",'minZoomLevelError':"minZoomLevel属性仅适合用于"+"使用了固定缩放级别的图层。这个 "+"wfs 图层检查 minZoomLevel 是过去遗留下来的。"+"然而,我们不能移除它,"+"而破坏依赖于它的基于OL的应用程序。"+"因此,我们废除了它 -- minZoomLevel "+"将会在3.0中被移除。请改用 "+"min/max resolution 设置,参考:"+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: 成功。 ${response}",'commitFailed':"WFS Transaction: 失败。 ${response}",'googleWarning':"Google图层不能正确加载。<br><br>"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。<br><br>"+"这种情况很可能是没有正确的包含Google地图脚本库,"+"或者是没有包含在你的站点上"+"使用的正确的Google Maps API密匙。<br><br>"+"开发者:获取使其正确工作的帮助信息,"+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>点击这里</a>",'getLayerWarning':"${layerType} 图层不能正确加载。<br><br>"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。<br><br>"+"这种情况很可能是没有正确的包含"+"${layerLib} 脚本库。<br><br>"+"开发者:获取使其正确工作的帮助信息,"+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>点击这里</a>",'scale':"比例尺 = 1 : ${scaleDenom}",'layerAlreadyAdded':"你尝试添加图层: ${layerName} 到地图中,但是它之前就已经被添加。",'reprojectDeprecated':"你正在使用 ${layerName} 图层上的'reproject'选项。"+"这个选项已经不再使用:"+"它是被设计用来支持显示商业的地图数据,"+"不过现在该功能可以通过使用Spherical Mercator来实现。"+"更多信息可以参阅"+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"该方法已经不再被支持,并且将在3.0中被移除。"+"请使用 ${newMethod} 方法来替代。",'boundsAddError':"您必须传递 x 和 y 两个参数值到 add 方法。",'lonlatAddError':"您必须传递 lon 和 lat 两个参数值到 add 方法。",'pixelAddError':"您必须传递 x and y 两个参数值到 add 方法。",'unsupportedGeometryType':"不支持的几何体类型: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition 失败:id 为 ${elemId} 的元素可能被错置。",'end':''};OpenLayers.Lang["zh-TW"]={'unhandledRequest':"未處理的請求,傳回值為 ${statusText}。",'permalink':"永久連結",'overlays':"額外圖層",'baseLayer':"基礎圖層",'sameProjection':"地圖縮覽(OverviewMap)只能在跟主地圖相同投影時起作用。",'readNotImplemented':"沒有實作讀取的功能。",'writeNotImplemented':"沒有實作寫入的功能。",'noFID':"因為沒有 FID 所以無法更新 feature。",'errorLoadingGML':"讀取GML檔案 ${url} 錯誤。",'browserNotSupported':"您的瀏覽器未支援向量渲染. 目前支援的渲染方式是:\n${renderers}",'componentShouldBe':"addFeatures : 元件應該為 ${geomType}",'getFeatureError':"getFeatureFromEvent 在一個沒有被渲染的圖層裡被呼叫。這通常意味著您 "+"摧毀了一個圖層,但並未摧毀相關的handler。",'minZoomLevelError':"minZoomLevel 屬性僅適合用在 "+"FixedZoomLevels-descendent 類型的圖層. 這個"+"wfs layer 的 minZoomLevel 是過去所遺留下來的,"+"然而我們不能移除它而不讓它將"+"過去的程式相容性給破壞掉。"+"因此我們將會迴避使用它 -- minZoomLevel "+"會在3.0被移除,請改"+"用在這邊描述的 min/max resolution 設定: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: 成功 ${response}",'commitFailed':"WFS Transaction: 失敗 ${response}",'googleWarning':"The Google Layer 圖層無法被正確的載入。<br><br>"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。<br><br>"+"很有可能是因為 Google Maps 的函式庫"+"腳本沒有被正確的置入,或沒有包含 "+"您網站上正確的 API key <br><br>"+"開發者: 要幫助這個行為正確完成,"+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>請按這裡</a>",'getLayerWarning':"${layerType} 圖層無法被正確的載入。<br><br>"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。<br><br>"+"很有可能是因為 ${layerLib} 的函式庫"+"腳本沒有被正確的置入。<br><br>"+"開發者: 要幫助這個行為正確完成,"+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>請按這裡</a>",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"你試著新增圖層: ${layerName} 到地圖上,但圖層之前就已經被新增了。",'reprojectDeprecated':"你正使用 'reproject' 這個選項 "+"在 ${layerName} 層。這個選項已經不再使用:"+"它的使用原本是設計用來支援在商業地圖上秀出資料,"+"但這個功能已經被"+"Spherical Mercator所取代。更多的資訊可以在 "+"http://trac.openlayers.org/wiki/SphericalMercator 找到。",'methodDeprecated':"這個方法已經不再使用且在3.0將會被移除,"+"請使用 ${newMethod} 來代替。",'boundsAddError':"您必須傳入 x 跟 y 兩者的值進 add 函數。",'lonlatAddError':"您必須傳入 lon 跟 lat 兩者的值進 add 函數。",'pixelAddError':"您必須傳入 x 跟 y 兩者的值進 add 函數。",'unsupportedGeometryType':"未支援的幾何型別: ${geomType}。",'pagePositionFailed':"OpenLayers.Util.pagePosition 失敗: id ${elemId} 的 element 可能被錯置。",'end':''};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);},draw:function(px){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();this.setOpacity();return this.div;},updateRelativePosition:function(){this.setRicoCorners();},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners();},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;}
+-this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Lang.ca={'unhandledRequest':"Resposta a petició no gestionada ${statusText}",'permalink':"Enllaç permanent",'overlays':"Capes addicionals",'baseLayer':"Capa Base",'sameProjection':"El mapa de referència només funciona si té la mateixa projecció que el mapa principal",'readNotImplemented':"Lectura no implementada.",'writeNotImplemented':"Escriptura no implementada.",'noFID':"No es pot actualitzar un element per al que no existeix FID.",'errorLoadingGML':"Error caregant el fitxer GML ${url}",'browserNotSupported':"El seu navegador no suporta renderització vectorial. Els renderitzadors suportats actualmente són:\n${renderers}",'componentShouldBe':"addFeatures : el component ha de ser de tipus ${geomType}",'getFeatureError':"getFeatureFromEvent ha estat cridat a una capa sense renderizador. Això normalment vol dir que "+"s'ha eliminat una capa, però no el handler associat a ella.",'minZoomLevelError':"La propietat minZoomLevel s'ha d'utilitzar només "+"amb les capes que tenen FixedZoomLevels. El fet que "+"una capa wfs comprovi minZoomLevel és una reliquia del "+"passat. No podem, però, eliminar-la sense trencar "+"les aplicacions d'OpenLayers que en puguin dependre. "+"Així doncs estem fent-la obsoleta -- la comprovació "+"minZoomLevel s'eliminarà a la versió 3.0. Feu servir "+"els paràmetres min/max resolution en substitució, tal com es descriu aquí: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacció WFS: CORRECTA ${response}",'commitFailed':"Transacció WFS: HA FALLAT ${response}",'googleWarning':"La capa Google no s'ha pogut carregar correctament.<br><br>"+"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.<br><br>"+"Probablement això és degut a que l'script de la biblioteca de "+"Google Maps no ha estat inclòs a la vostra pàgina, o no "+"conté la clau de l'API correcta per a la vostra adreça.<br><br>"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>féu clic aquí</a>",'getLayerWarning':"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.<br><br>"+"Probablement això és degut a que l'script de la biblioteca "+"${layerLib} "+"no ha estat inclòs a la vostra pàgina.<br><br>"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>féu clic aquí</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Heu intentat afegir la capa: ${layerName} al mapa, pero ja ha estat afegida anteriorment",'reprojectDeprecated':"Esteu fent servir l'opció 'reproject' a la capa "+"${layerName}. Aquesta opció és obsoleta: el seu ús fou concebut "+"per suportar la visualització de dades sobre mapes base comercials, "+"però aquesta funcionalitat s'hauria d'assolir ara mitjançant el suport "+"de la projecció Spherical Mercator. Més informació disponible a "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Aquest mètode és obsolet i s'eliminará a la versió 3.0. "+"Si us plau feu servir em mètode alternatiu ${newMethod}.",'boundsAddError':"Ha de proporcionar els valors x i y a la funció add.",'lonlatAddError':"Ha de proporcionar els valors lon i lat a la funció add.",'pixelAddError':"Ha de proporcionar els valors x i y a la funció add.",'unsupportedGeometryType':"Tipus de geometria no suportada: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition ha fallat: l'element amb id ${elemId} pot estar fora de lloc.",'filterEvaluateNotImplemented':"evaluate no està implementat per aquest tipus de filtre.",'end':''};OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>click here</a>",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.<br><br>"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.<br><br>"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.<br><br>"+"Developers: For help getting this working correctly, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>click here</a>",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':'','filterEvaluateNotImplemented':"evaluate is not implemented for this filter type."};OpenLayers.Lang.es={'unhandledRequest':"Respuesta a petición no gestionada ${statusText}",'permalink':"Enlace permanente",'overlays':"Capas superpuestas",'baseLayer':"Capa Base",'sameProjection':"El mini mapa sólo funciona si está en la misma proyección que el mapa principal",'readNotImplemented':"Lectura no implementada.",'writeNotImplemented':"Escritura no implementada.",'noFID':"No se puede actualizar un elemento para el que no existe FID.",'errorLoadingGML':"Error cargando el fichero GML ${url}",'browserNotSupported':"Su navegador no soporta renderización vectorial. Los renderizadores soportados actualmente son:\n${renderers}",'componentShouldBe':"addFeatures : el componente debe ser del tipo ${geomType}",'getFeatureError':"getFeatureFromEvent llamado en una capa sin renderizador. Esto normalmente quiere decir que "+"se ha destruido una capa, pero no el manejador asociado a ella.",'minZoomLevelError':"La propiedad minZoomLevel debe sólo utilizarse "+"con las capas que tienen FixedZoomLevels. El hecho de que "+"una capa wfs compruebe minZoomLevel is una reliquia del "+"pasado. Sin embargo, no podemos eliminarla sin discontinuar "+"probablemente las aplicaciones OL que puedan depender de ello. "+"Así pues estamos haciéndolo obsoleto --la comprobación "+"minZoomLevel se eliminará en la versión 3.0. Utilice el ajuste "+"de resolution min/max en su lugar, tal como se describe aquí: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacción WFS: ÉXITO ${response}",'commitFailed':"Transacción WFS: FALLÓ ${response}",'googleWarning':"La capa Google no pudo ser cargada correctamente.<br><br>"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.<br><br>"+"Probablemente, esto se debe a que el script de la biblioteca de "+"Google Maps no fue correctamente incluido en su página, o no "+"contiene la clave del API correcta para su sitio.<br><br>"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>haga clic aquí</a>",'getLayerWarning':"La capa ${layerType} no pudo ser cargada correctamente.<br><br>"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.<br><br>"+"Probablemente, esto se debe a que el script de "+"la biblioteca ${layerLib} "+"no fue correctamente incluido en su página.<br><br>"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>haga clic aquí</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Intentó añadir la capa: ${layerName} al mapa, pero ya había sido añadida previamente",'reprojectDeprecated':"Está usando la opción 'reproject' en la capa "+"${layerName}. Esta opción está obsoleta: su uso fue diseñado "+"para soportar la visualización de datos sobre mapas base comerciales, "+"pero esa funcionalidad debería conseguirse ahora mediante el soporte "+"de la proyección Spherical Mercator. Más información disponible en "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método está obsoleto y se eliminará en la versión 3.0. "+"Por favor utilice el método ${newMethod} en su lugar.",'boundsAddError':"Debe proporcionar los valores x e y a la función add.",'lonlatAddError':"Debe proporcionar los valores lon y lat a la función add.",'pixelAddError':"Debe proporcionar los valores x e y a la función add.",'unsupportedGeometryType':"Tipo de geometría no soportada: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falló: el elemento con id ${elemId} puede haberse colocado de manera errónea.",'filterEvaluateNotImplemented':"evaluate no está implementado para este tipo de filtro.",'end':''};OpenLayers.Lang.fr={'unhandledRequest':"Requête non gérée, retournant ${statusText}",'permalink':"Permalien",'overlays':"Calques",'baseLayer':"Calque de base",'sameProjection':"La carte de situation ne fonctionne que lorsque sa projection est la même que celle de la carte principale",'readNotImplemented':"Lecture non implémentée.",'writeNotImplemented':"Ecriture non implémentée.",'noFID':"Impossible de mettre à jour un objet sans identifiant (fid).",'errorLoadingGML':"Erreur au chargement du fichier GML ${url}",'browserNotSupported':"Votre navigateur ne supporte pas le rendu vectoriel. Les renderers actuellement supportés sont : \n${renderers}",'componentShouldBe':"addFeatures : le composant devrait être de type ${geomType}",'getFeatureError':"getFeatureFromEvent a été appelé sur un calque sans renderer. Cela signifie généralement que vous "+"avez détruit cette couche, mais que vous avez conservé un handler qui lui était associé.",'minZoomLevelError':"La propriété minZoomLevel doit seulement être utilisée "+"pour des couches FixedZoomLevels-descendent. Le fait que "+"cette couche WFS vérifie la présence de minZoomLevel "+"est une relique du passé. Nous ne pouvons toutefois la "+"supprimer sans casser des applications qui pourraient en dépendre."+" C'est pourquoi nous la déprécions -- la vérification du minZoomLevel "+"sera supprimée en version 3.0. A la place, merci d'utiliser "+"les paramètres de résolutions min/max tel que décrit sur : "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS : SUCCES ${response}",'commitFailed':"Transaction WFS : ECHEC ${response}",'googleWarning':"La couche Google n'a pas été en mesure de se charger correctement.<br><br>"+"Pour supprimer ce message, choisissez une nouvelle BaseLayer "+"dans le sélecteur de couche en haut à droite.<br><br>"+"Cela est possiblement causé par la non-inclusion de la "+"librairie Google Maps, ou alors parce que la clé de l'API "+"ne correspond pas à votre site.<br><br>"+"Développeurs : pour savoir comment corriger ceci, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>cliquez ici</a>",'getLayerWarning':"La couche ${layerType} n'est pas en mesure de se charger correctement.<br><br>"+"Pour supprimer ce message, choisissez une nouvelle BaseLayer "+"dans le sélecteur de couche en haut à droite.<br><br>"+"Cela est possiblement causé par la non-inclusion de la "+"librairie ${layerLib}.<br><br>"+"Développeurs : pour savoir comment corriger ceci, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>cliquez ici</a>",'scale':"Echelle ~ 1 : ${scaleDenom}",'layerAlreadyAdded':"Vous avez essayé d'ajouter à la carte le calque : ${layerName}, mais il est déjà présent",'reprojectDeprecated':"Vous utilisez l'option 'reproject' "+"sur la couche ${layerName}. Cette option est dépréciée : "+"Son usage permettait d'afficher des données au dessus de couches raster commerciales."+"Cette fonctionalité est maintenant supportée en utilisant le support de la projection "+"Mercator Sphérique. Plus d'information est disponible sur "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Cette méthode est dépréciée, et sera supprimée à la version 3.0. "+"Merci d'utiliser ${newMethod} à la place.",'boundsAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'lonlatAddError':"Vous devez passer les deux valeurs lon et lat à la fonction add.",'pixelAddError':"Vous devez passer les deux valeurs x et y à la fonction add.",'unsupportedGeometryType':"Type de géométrie non supporté : ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition a échoué: l'élément d'id ${elemId} pourrait être mal positionné.",'end':''};OpenLayers.Lang.it={'unhandledRequest':"Codice di ritorno della richiesta ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Livello base",'sameProjection':"La mini mappa funziona solamente se ha la stessa proiezione della mappa principale",'readNotImplemented':"Lettura non implementata.",'writeNotImplemented':"Scrittura non implementata.",'noFID':"Impossibile aggiornare un elemento grafico che non abbia il FID.",'errorLoadingGML':"Errore nel caricamento del file GML ${url}",'browserNotSupported':"Il tuo browser non supporta il rendering vettoriale. I renderizzatore attualemnte supportati sono:\n${renderers}",'componentShouldBe':"addFeatures : il componente dovrebbe essere di tipo ${geomType}",'getFeatureError':"getFeatureFromEvent chiamata su di un livello senza renderizzatore. Ciò significa che "+"il livello è stato cancellato, ma non i gestori associati ad esso.",'minZoomLevelError':"La proprietà minZoomLevel è da utilizzare solamente "+"con livelli che abbiano FixedZoomLevels. Il fatto che "+"questo livello wfs controlli la proprietà minZoomLevel è "+"un retaggio del passato. Non possiamo comunque rimuoverla "+"senza rompere le vecchie applicazioni che dipendono su di essa."+"Quindi siamo costretti a deprecarla -- minZoomLevel "+"e sarà rimossa dalla vesione 3.0. Si prega di utilizzare i "+"settaggi di risoluzione min/max come descritto qui: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transazione WFS: SUCCESS ${response}",'commitFailed':"Transazione WFS: FAILED ${response}",'googleWarning':"Il livello Google non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria Google Maps "+"non è stata inclusa nella pagina, oppure non contiene la "+"corretta API key per il tuo sito.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>clicca qui</a>",'getLayerWarning':"Il livello ${layerType} non è riuscito a caricare correttamente.<br><br>"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.<br><br>"+"Più precisamente, ciò accade perchè la libreria ${layerLib} "+"non è stata inclusa nella pagina.<br><br>"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>clicca qui</a>",'scale':"Scala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Stai cercando di aggiungere il livello: ${layerName} alla mappa, ma tale livello è già stato aggiunto.",'reprojectDeprecated':"Stai utilizzando l'opzione 'reproject' sul livello ${layerName}. "+"Questa opzione è deprecata: il suo utilizzo è stato introdotto per"+"supportare il disegno dei dati sopra mappe commerciali, ma tale "+"funzionalità dovrebbe essere ottenuta tramite l'utilizzo della proiezione "+"Spherical Mercator. Per maggiori informazioni consultare qui "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Questo metodo è stato deprecato e sarà rimosso dalla versione 3.0. "+"Si prega di utilizzare il metodo ${newMethod} in alternativa.",'boundsAddError':"Devi specificare i valori di x e y alla funzione add.",'lonlatAddError':"Devi specificare i valori di lon e lat alla funzione add.",'pixelAddError':"Devi specificare i valori di x e y alla funzione add.",'unsupportedGeometryType':"Tipo di geometria non supportata: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallita: l'elemento con id ${elemId} è posizionato in modo errato.",'end':''};OpenLayers.Lang["pt-BR"]={'unhandledRequest':"A requisição retornou um erro não tratado: ${statusText}",'permalink':"Link para essa página",'overlays':"Camadas de Sobreposição",'baseLayer':"Camada Base",'sameProjection':"O mapa de referência só funciona quando ele está na mesma projeção do mapa principal",'readNotImplemented':"Leitura não implementada.",'writeNotImplemented':"Escrita não implementada.",'noFID':"Não é possível atualizar uma feição que não tenha um FID.",'errorLoadingGML':"Erro ao carregar o arquivo GML ${url}",'browserNotSupported':"Seu navegador não suporta renderização de vetores. Os renderizadores suportados atualmente são:\n${renderers}",'componentShouldBe':"addFeatures: o componente deve ser do tipo ${geomType}",'getFeatureError':"getFeatureFromEvent foi executado mas nenhum renderizador foi encontrado. "+"Isso pode indicar que você destruiu uma camana, mas não o handler associado a ela.",'minZoomLevelError':"A propriedade minZoomLevel é de uso restrito das camadas "+"descendentes de FixedZoomLevels. A verificação dessa propriedade "+"pelas camadas wfs é um resíduo do passado. Não podemos, entretanto "+"não é possível removê-la sem possívelmente quebrar o funcionamento "+"de aplicações OL que possuem depência com ela. Portanto estamos "+"tornando seu uso obsoleto -- a verificação desse atributo será "+"removida na versão 3.0. Ao invés, use as opções de resolução "+"min/max como descrito em: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transação WFS : SUCESSO ${response}",'commitFailed':"Transação WFS : ERRO ${response}",'googleWarning':"Não foi possível carregar a camada Google corretamente.<br><br>"+"Para se livrar dessa mensagem, selecione uma nova Camada Base, "+"na ferramenta de alternação de camadas localização do canto "+"superior direito.<br><br>"+"Muito provavelmente, isso foi causado porque o script da "+"biblioteca do Google Maps não foi incluído, ou porque ele não "+"contém a chave correta da API para o seu site.<br><br>"+"Desenvolvedores: Para obter ajuda em solucionar esse problema "+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>cliquem aqui</a>",'getLayerWarning':"Não foi possível carregar a camada ${layerType} corretamente.<br><br>"+"Para se livrar dessa mensagem, selecione uma nova Camada Base, "+"na ferramenta de alternação de camadas localização do canto "+"superior direito.<br><br>"+"Muito provavelmente, isso foi causado porque o script da "+"biblioteca ${layerLib} não foi incluído corretamente.<br><br>"+"Desenvolvedores: Para obter ajuda em solucionar esse problema "+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>cliquem aqui</a>",'scale':"Escala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Você tentou adicionar a camada: ${layerName} ao mapa, mas ela já foi adicionada",'reprojectDeprecated':"Você está usando a opção 'reproject' na camada ${layerName}. "+"Essa opção está obsoleta: seu uso foi projetado para suportar "+"a visualização de dados sobre bases de mapas comerciais, "+"entretanto essa funcionalidade deve agora ser alcançada usando "+"o suporte à projeção Mercator. Mais informação está disponível em: "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Esse método está obsoleto e será removido na versão 3.0. "+"Ao invés, por favor use ${newMethod}.",'boundsAddError':"Você deve informar ambos os valores x e y para a função add.",'lonlatAddError':"Você deve informar ambos os valores lon e lat para a função add.",'pixelAddError':"Você deve informar ambos os valores x e y para a função add.",'unsupportedGeometryType':"Tipo geométrico não suportado: ${geomType}.",'pagePositionFailed':"OpenLayers.Util.pagePosition falhou: o elemento de id ${elemId} deve estar fora do lugar.",'end':''};OpenLayers.Lang["zh-CN"]={'unhandledRequest':"未处理的请求,返回值为 ${statusText}",'permalink':"永久链接",'overlays':"叠加层",'baseLayer':"基础图层",'sameProjection':"鹰眼地图只有在和主地图使用相同的投影的时候才能正常共工作",'readNotImplemented':"读取功能没有实现。",'writeNotImplemented':"写入功能没有实现。",'noFID':"无法更新feature,缺少FID。",'errorLoadingGML':"加载GML文件 ${url} 出现错误。",'browserNotSupported':"你使用的浏览器不支持矢量渲染。当前支持的渲染方式包括:\n${renderers}",'componentShouldBe':"addFeatures : 组件类型应该是 ${geomType}",'getFeatureError':"getFeatureFromEvent方法在一个没有渲染器的图层上被调用。 这通常意味着您"+"销毁了一个图层,但并未销毁其关联的handler。",'minZoomLevelError':"minZoomLevel属性仅适合用于"+"使用了固定缩放级别的图层。这个 "+"wfs 图层检查 minZoomLevel 是过去遗留下来的。"+"然而,我们不能移除它,"+"而破坏依赖于它的基于OL的应用程序。"+"因此,我们废除了它 -- minZoomLevel "+"将会在3.0中被移除。请改用 "+"min/max resolution 设置,参考:"+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: 成功。 ${response}",'commitFailed':"WFS Transaction: 失败。 ${response}",'googleWarning':"Google图层不能正确加载。<br><br>"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。<br><br>"+"这种情况很可能是没有正确的包含Google地图脚本库,"+"或者是没有包含在你的站点上"+"使用的正确的Google Maps API密匙。<br><br>"+"开发者:获取使其正确工作的帮助信息,"+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>点击这里</a>",'getLayerWarning':"${layerType} 图层不能正确加载。<br><br>"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。<br><br>"+"这种情况很可能是没有正确的包含"+"${layerLib} 脚本库。<br><br>"+"开发者:获取使其正确工作的帮助信息,"+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>点击这里</a>",'scale':"比例尺 = 1 : ${scaleDenom}",'layerAlreadyAdded':"你尝试添加图层: ${layerName} 到地图中,但是它之前就已经被添加。",'reprojectDeprecated':"你正在使用 ${layerName} 图层上的'reproject'选项。"+"这个选项已经不再使用:"+"它是被设计用来支持显示商业的地图数据,"+"不过现在该功能可以通过使用Spherical Mercator来实现。"+"更多信息可以参阅"+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"该方法已经不再被支持,并且将在3.0中被移除。"+"请使用 ${newMethod} 方法来替代。",'boundsAddError':"您必须传递 x 和 y 两个参数值到 add 方法。",'lonlatAddError':"您必须传递 lon 和 lat 两个参数值到 add 方法。",'pixelAddError':"您必须传递 x and y 两个参数值到 add 方法。",'unsupportedGeometryType':"不支持的几何体类型: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition 失败:id 为 ${elemId} 的元素可能被错置。",'end':''};OpenLayers.Lang["zh-TW"]={'unhandledRequest':"未處理的請求,傳回值為 ${statusText}。",'permalink':"永久連結",'overlays':"額外圖層",'baseLayer':"基礎圖層",'sameProjection':"地圖縮覽(OverviewMap)只能在跟主地圖相同投影時起作用。",'readNotImplemented':"沒有實作讀取的功能。",'writeNotImplemented':"沒有實作寫入的功能。",'noFID':"因為沒有 FID 所以無法更新 feature。",'errorLoadingGML':"讀取GML檔案 ${url} 錯誤。",'browserNotSupported':"您的瀏覽器未支援向量渲染. 目前支援的渲染方式是:\n${renderers}",'componentShouldBe':"addFeatures : 元件應該為 ${geomType}",'getFeatureError':"getFeatureFromEvent 在一個沒有被渲染的圖層裡被呼叫。這通常意味著您 "+"摧毀了一個圖層,但並未摧毀相關的handler。",'minZoomLevelError':"minZoomLevel 屬性僅適合用在 "+"FixedZoomLevels-descendent 類型的圖層. 這個"+"wfs layer 的 minZoomLevel 是過去所遺留下來的,"+"然而我們不能移除它而不讓它將"+"過去的程式相容性給破壞掉。"+"因此我們將會迴避使用它 -- minZoomLevel "+"會在3.0被移除,請改"+"用在這邊描述的 min/max resolution 設定: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: 成功 ${response}",'commitFailed':"WFS Transaction: 失敗 ${response}",'googleWarning':"The Google Layer 圖層無法被正確的載入。<br><br>"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。<br><br>"+"很有可能是因為 Google Maps 的函式庫"+"腳本沒有被正確的置入,或沒有包含 "+"您網站上正確的 API key <br><br>"+"開發者: 要幫助這個行為正確完成,"+"<a href='http://trac.openlayers.org/wiki/Google' "+"target='_blank'>請按這裡</a>",'getLayerWarning':"${layerType} 圖層無法被正確的載入。<br><br>"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。<br><br>"+"很有可能是因為 ${layerLib} 的函式庫"+"腳本沒有被正確的置入。<br><br>"+"開發者: 要幫助這個行為正確完成,"+"<a href='http://trac.openlayers.org/wiki/${layerLib}' "+"target='_blank'>請按這裡</a>",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"你試著新增圖層: ${layerName} 到地圖上,但圖層之前就已經被新增了。",'reprojectDeprecated':"你正使用 'reproject' 這個選項 "+"在 ${layerName} 層。這個選項已經不再使用:"+"它的使用原本是設計用來支援在商業地圖上秀出資料,"+"但這個功能已經被"+"Spherical Mercator所取代。更多的資訊可以在 "+"http://trac.openlayers.org/wiki/SphericalMercator 找到。",'methodDeprecated':"這個方法已經不再使用且在3.0將會被移除,"+"請使用 ${newMethod} 來代替。",'boundsAddError':"您必須傳入 x 跟 y 兩者的值進 add 函數。",'lonlatAddError':"您必須傳入 lon 跟 lat 兩者的值進 add 函數。",'pixelAddError':"您必須傳入 x 跟 y 兩者的值進 add 函數。",'unsupportedGeometryType':"未支援的幾何型別: ${geomType}。",'pagePositionFailed':"OpenLayers.Util.pagePosition 失敗: id ${elemId} 的 element 可能被錯置。",'end':''};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);},draw:function(px){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();this.setOpacity();return this.div;},updateRelativePosition:function(){this.setRicoCorners();},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners();},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;}
 if(this.div!=null){if(this.contentDiv!=null){this.div.style.background="transparent";OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor);}}},setOpacity:function(opacity){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,opacity);if(this.div!=null){if(this.groupDiv!=null){OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity);}}},setBorder:function(border){this.border=0;},setRicoCorners:function(){var corners=this.getCornersToRound(this.relativePosition);var options={corners:corners,color:this.backgroundColor,bgColor:"transparent",blend:false};if(!this.rounded){OpenLayers.Rico.Corner.round(this.div,options);this.rounded=true;}else{OpenLayers.Rico.Corner.reRound(this.groupDiv,options);this.setBackgroundColor();this.setOpacity();}},getCornersToRound:function(){var corners=['tl','tr','bl','br'];var corner=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(corners,corner);return corners.join(" ");},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){if(projection&&projection.getCode){return this.getCode()==projection.getCode();}else{return false;}},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};}
 OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);}
 return point;};OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolSize:{},isGecko:null,initialize:function(containerID){if(!this.supported()){return;}
@@ -921,9 +921,12 @@ if(tolerance){var dist;if(intersection){if(point){var segs=[seg1,seg2];var seg,x
 Math.pow(y-intersection.y,2));if(dist<tolerance){intersection.x=x;intersection.y=y;break outer;}}}}}else{var segs=[seg1,seg2];var source,target,x,y,p,result;outer:for(var i=0;i<2;++i){source=segs[i];target=segs[(i+1)%2];for(var j=1;j<3;++j){p={x:source["x"+j],y:source["y"+j]};result=OpenLayers.Geometry.distanceToSegment(p,target);if(result.distance<tolerance){if(point){intersection=new OpenLayers.Geometry.Point(p.x,p.y);}else{intersection=true;}
 break outer;}}}}}
 return intersection;};OpenLayers.Geometry.distanceToSegment=function(point,segment){var x0=point.x;var y0=point.y;var x1=segment.x1;var y1=segment.y1;var x2=segment.x2;var y2=segment.y2;var dx=x2-x1;var dy=y2-y1;var along=((dx*(x0-x1))+(dy*(y0-y1)))/(Math.pow(dx,2)+Math.pow(dy,2));var x,y;if(along<=0.0){x=x1;y=y1;}else if(along>=1.0){x=x2;y=y2;}else{x=x1+along*dx;y=y1+along*dy;}
-return{distance:Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2)),x:x,y:y};};OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",isBaseLayer:true,tileOrigin:null,serverResolutions:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,url,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TMS(this.name,this.url,this.options);}
-obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((bounds.bottom-this.tileOrigin.lat)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom();var path=this.serviceVersion+"/"+this.layername+"/"+z+"/"+x+"/"+y+"."+this.type;var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);}
-return url+path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Rule=OpenLayers.Class({id:null,name:'default',title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;}
+return{distance:Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2)),x:x,y:y};};OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.0339,-128*156543.0339,128*156543.0339,128*156543.0339),maxResolution:156543.0339,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);}
+url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.options);}
+obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();}
+obj.grid=[];return obj;},getURL:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var limit=Math.pow(2,z);var url=this.url;var s=''+x+y+z;if(url instanceof Array)
+{url=this.selectUrl(s,url);}
+var path=OpenLayers.String.format(url,{'x':x,'y':y,'z':z});return path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Rule=OpenLayers.Class({id:null,name:'default',title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;}
 this.symbolizer=null;},evaluate:function(feature){var context=this.getContext(feature);var applies=true;if(this.minScaleDenominator||this.maxScaleDenominator){var scale=feature.layer.map.getScale();}
 if(this.minScaleDenominator){applies=scale>=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);}
 if(applies&&this.maxScaleDenominator){applies=scale<OpenLayers.Style.createLiteral(this.maxScaleDenominator,context);}
index 4f2b0d4d714a6ae7207b549dcd067e14f1592d3f..ce8a6e81fff66f48ea15b41a4395e747a95519e9 100644 (file)
@@ -28,77 +28,6 @@ OpenLayers.Util.onImageLoadError = function() {
     }
 };
 
-/**
- * @requires OpenLayers/Layer/TMS.js
- *
- * Class: OpenLayers.Layer.OSM
- *
- * Inherits from:
- *  - <OpenLayers.Layer.TMS>
- */
-OpenLayers.Layer.OSM = OpenLayers.Class(OpenLayers.Layer.TMS, {
-    /**
-     * Constructor: OpenLayers.Layer.OSM
-     *
-     * Parameters:
-     * name - {String}
-     * url - {String}
-     * options - {Object} Hashtable of extra options to tag onto the layer
-     */
-    initialize: function(name, url, options) {
-        options = OpenLayers.Util.extend({
-            attribution: "Data by <a href='http://openstreetmap.org/'>OpenStreetMap</a> under <a href='http://creativecommons.org/licenses/by-sa/2.0/'>CC-BY-SA</a>",
-            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
-            maxResolution: 156543.0339,
-            units: "m",
-            projection: "EPSG:900913",
-            transitionEffect: "resize"
-        }, options);
-        var newArguments = [name, url, options];
-        OpenLayers.Layer.TMS.prototype.initialize.apply(this, newArguments);
-    },
-
-    /**
-     * Method: getUrl
-     *
-     * Parameters:
-     * bounds - {<OpenLayers.Bounds>}
-     *
-     * Returns:
-     * {String} A string with the layer's url and parameters and also the
-     *          passed-in bounds and appropriate tile size specified as
-     *          parameters
-     */
-    getURL: function (bounds) {
-        var res = this.map.getResolution();
-        var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
-        var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
-        var z = this.map.getZoom();
-        var limit = Math.pow(2, z);
-
-        if (y < 0 || y >= limit)
-        {
-            return OpenLayers.Util.OSM.MISSING_TILE_URL;
-        }
-        else
-        {
-            x = ((x % limit) + limit) % limit;
-
-            var url = this.url;
-            var path = z + "/" + x + "/" + y + ".png";
-
-            if (url instanceof Array)
-            {
-                url = this.selectUrl(path, url);
-            }
-
-            return url + path;
-        }
-    },
-
-    CLASS_NAME: "OpenLayers.Layer.OSM"
-});
-
 /**
  * Class: OpenLayers.Layer.OSM.Mapnik
  *
@@ -115,9 +44,9 @@ OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
      */
     initialize: function(name, options) {
         var url = [
-            "http://a.tile.openstreetmap.org/",
-            "http://b.tile.openstreetmap.org/",
-            "http://c.tile.openstreetmap.org/"
+            "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
+            "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
+            "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
         ];
         options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
         var newArguments = [name, url, options];
@@ -143,9 +72,9 @@ OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
      */
     initialize: function(name, options) {
         var url = [
-            "http://a.tah.openstreetmap.org/Tiles/tile/",
-            "http://b.tah.openstreetmap.org/Tiles/tile/",
-            "http://c.tah.openstreetmap.org/Tiles/tile/"
+            "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
+            "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
+            "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"
         ];
         options = OpenLayers.Util.extend({ numZoomLevels: 18 }, options);
         var newArguments = [name, url, options];
@@ -171,9 +100,9 @@ OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
      */
     initialize: function(name, options) {
         var url = [
-            "http://a.andy.sandbox.cloudmade.com/tiles/cycle/",
-            "http://b.andy.sandbox.cloudmade.com/tiles/cycle/",
-            "http://c.andy.sandbox.cloudmade.com/tiles/cycle/"
+            "http://a.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
+            "http://b.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
+            "http://c.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png"
         ];
         options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
         var newArguments = [name, url, options];
@@ -199,9 +128,9 @@ OpenLayers.Layer.OSM.Maplint = OpenLayers.Class(OpenLayers.Layer.OSM, {
      */
     initialize: function(name, options) {
         var url = [
-            "http://d.tah.openstreetmap.org/Tiles/maplint/",
-            "http://e.tah.openstreetmap.org/Tiles/maplint/",
-            "http://f.tah.openstreetmap.org/Tiles/maplint/"
+            "http://d.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
+            "http://e.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
+            "http://f.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png"
         ];
         options = OpenLayers.Util.extend({ numZoomLevels: 18, isBaseLayer: false, visibility: false }, options);
         var newArguments = [name, url, options];
index 8d7324fc365738c5301ec52d8d444634e467885a..86b38f8ace41b1f65f8e302e2b42d634c8b8b394 100644 (file)
@@ -617,6 +617,7 @@ input[type="submit"] {
   bottom:15px;
   right:15px;
   font-size:smaller;
+  text-align: right;
 }
 
 #attribution {
index 8ce35ad5c64bc90c9b4a34965aed1f4fb18b03a9..0335fe9836037e8195db56e699b42a70e5e2ea98 100755 (executable)
@@ -2,7 +2,7 @@
 use feature ':5.10';
 use strict;
 use warnings;
-use YAML::Syck qw(Load LoadFile);
+use YAML::Syck qw(LoadFile);
 use Test::Differences;
 use Pod::Usage ();
 use Getopt::Long ();
@@ -18,7 +18,7 @@ locale-diff - Compare two YAML files and print how their datastructures differ
     diff --keys en.yml is.yml
 
     # --untranslated-values compares prints keys whose values don't differ
-    diff --untranslated-values-all en.yml is.yml
+    diff --untranslated-values en.yml is.yml
 
     # --untranslated-values-all compares prints keys whose values
     # don't differ. Ignoring the blacklist which prunes things
@@ -50,10 +50,12 @@ new entries from F<en.yml> to a local file.
 
 =item --untranslated-values
 
-Show keys whose values are either exactly the same between the two
-files, or don't exist in the target file (the latter file
-specified). The values are pruned according to global and language
-specific blacklists found in the C<__DATA__> section of this script.
+Show keys that B<exist in both the compared files> and whose values
+are exactly the same. Use C<--keys> to a list of values that hasn't
+been merged.
+
+The values are pruned according to global and language specific
+blacklists found in the C<__DATA__> section of this script.
 
 This helps to find untranslated values.
 
@@ -138,7 +140,7 @@ sub print_key_differences
 sub untranslated_keys
 {
     my ($from_parsed, $to_parsed) = @_;
-    sort grep { not exists $to_parsed->{$_} or $from_parsed->{$_} eq $to_parsed->{$_} } keys %$from_parsed;
+    sort grep { exists $to_parsed->{$_} and $from_parsed->{$_} eq $to_parsed->{$_} } keys %$from_parsed;
 }
 
 sub prune_untranslated_with_blacklist
@@ -147,7 +149,7 @@ sub prune_untranslated_with_blacklist
     my %keys;
     @keys{@keys} = ();
 
-    my $end_yaml = Load(join '', <DATA>);
+    my $end_yaml = LoadFile(*DATA);
     my $untranslated_values = $end_yaml->{untranslated_values};
     my $default = $untranslated_values->{default};
     my $this_language = $untranslated_values->{$language} || {};
@@ -248,6 +250,8 @@ untranslated_values:
     layouts.project_name.h1: true
     layouts.project_name.title: true
     site.index.license.project_url: true
+    browse.relation_member.entry: true
+
   de:
     activerecord.attributes.message.sender: true
     activerecord.attributes.trace.name: true
@@ -284,3 +288,18 @@ untranslated_values:
     trace.view.tags: true
     user.account.public editing.enabled link: true
 
+  is:
+    # ({{link}})
+    site.edit.anon_edits: true
+
+    # Creative Commons Attribution-Share Alike 2.0
+    site.index.license.license_name: true
+
+    # http://creativecommons.org/licenses/by-sa/2.0/
+    site.index.license.license_url: true
+
+    # {{id}}
+    printable_name.with_id: true
+    
+    # {{name}} ({{id}})
+    printable_name.with_name: true
diff --git a/test/integration/short_link_test.rb b/test/integration/short_link_test.rb
new file mode 100644 (file)
index 0000000..91f939a
--- /dev/null
@@ -0,0 +1,35 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ShortLinkTest < ActionController::IntegrationTest
+  ##
+  # test the short link with various parameters and ensure they're
+  # kept in the redirect.
+  def test_short_link_params
+    assert_short_link_redirect('1N8H@P_5W')
+    assert_short_link_redirect('euu4oTas==')
+  end
+
+  ##
+  # utility method to test short links
+  def assert_short_link_redirect(short_link)
+    lon, lat, zoom = ShortLink::decode(short_link)
+
+    # test without marker
+    get '/go/' + short_link
+    assert_redirected_to :controller => 'site', :action => 'index', :lat => lat, :lon => lon, :zoom => zoom
+
+    # test with marker
+    get '/go/' + short_link + "?m"
+    assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat, :mlon => lon, :zoom => zoom
+
+    # test with layers and a marker
+    get '/go/' + short_link + "?m&layers=B000FTF"
+    assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat, :mlon => lon, :zoom => zoom, :layers => "B000FTF"
+    get '/go/' + short_link + "?layers=B000FTF&m"
+    assert_redirected_to :controller => 'site', :action => 'index', :mlat => lat, :mlon => lon, :zoom => zoom, :layers => "B000FTF"
+
+    # test with some random query parameters we haven't even implemented yet
+    get '/go/' + short_link + "?foobar=yes"
+    assert_redirected_to :controller => 'site', :action => 'index', :lat => lat, :lon => lon, :zoom => zoom, :foobar => "yes"
+  end
+end
diff --git a/test/unit/short_link_test.rb b/test/unit/short_link_test.rb
new file mode 100644 (file)
index 0000000..bbae951
--- /dev/null
@@ -0,0 +1,26 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ShortLinkTest < ActiveSupport::TestCase
+  ##
+  # tests that encoding and decoding are working to within
+  # the acceptable quantisation range.
+  def test_encode_decode
+    cases = Array.new
+    1000.times do 
+      cases << [ 180.0 * rand - 90.0, 360.0 * rand - 180.0, (18 * rand).to_i ]
+    end
+
+    cases.each do |lat, lon, zoom|
+      lon2, lat2, zoom2 = ShortLink.decode(ShortLink.encode(lon, lat, zoom))
+      # zooms should be identical
+      assert_equal zoom, zoom2, "Decoding a encoded short link gives different zoom for (#{lat}, #{lon}, #{zoom})."
+      # but the location has a quantisation error introduced at roughly 
+      # one pixel (i.e: zoom + 8). the sqrt(5) is because each position 
+      # has an extra bit of accuracy in the lat coordinate, due to the 
+      # smaller range.
+      distance = Math.sqrt((lat - lat2) ** 2 + (lon - lon2) ** 2)
+      max_distance = 360.0 / (1 << (zoom + 8)) * 0.5 * Math.sqrt(5)
+      assert max_distance > distance, "Maximum expected error exceeded: #{max_distance} <= #{distance} for (#{lat}, #{lon}, #{zoom})."
+    end
+  end
+end