]> git.openstreetmap.org Git - rails.git/commitdiff
Merge 16110:16487 from trunk.
authorTom Hughes <tom@compton.nu>
Tue, 14 Jul 2009 08:03:24 +0000 (08:03 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 14 Jul 2009 08:03:24 +0000 (08:03 +0000)
99 files changed:
app/controllers/amf_controller.rb
app/controllers/browse_controller.rb
app/controllers/changeset_controller.rb
app/controllers/diary_entry_controller.rb
app/controllers/geocoder_controller.rb
app/controllers/message_controller.rb
app/controllers/site_controller.rb
app/controllers/swf_controller.rb
app/helpers/application_helper.rb
app/helpers/browse_helper.rb
app/models/trace.rb
app/views/browse/_containing_relation.html.erb
app/views/browse/_map.html.erb
app/views/browse/_navigation.html.erb
app/views/browse/_relation_member.html.erb
app/views/browse/changeset.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/changeset/_changeset.html.erb
app/views/changeset/_changeset_paging_nav.html.erb
app/views/changeset/list.atom.builder [new file with mode: 0644]
app/views/changeset/list.html.erb
app/views/changeset/list_bbox.html.erb [deleted file]
app/views/changeset/list_user.html.erb [deleted file]
app/views/geocoder/_description.html.erb [new file with mode: 0644]
app/views/geocoder/_results.html.erb [deleted file]
app/views/geocoder/_search.html.erb [new file with mode: 0644]
app/views/geocoder/error.html.erb [new file with mode: 0644]
app/views/geocoder/results.html.erb [new file with mode: 0644]
app/views/layouts/site.html.erb
app/views/layouts/site.rss.builder [new file with mode: 0644]
app/views/message/new.html.erb
app/views/site/_search.html.erb
app/views/site/index.html.erb
app/views/site/key.html.erb
app/views/trace/_trace.html.erb
app/views/trace/_trace_form.html.erb
app/views/trace/edit.html.erb
app/views/trace/view.html.erb
app/views/user/view.html.erb
config/initializers/asset_tag_helper.rb [deleted file]
config/initializers/i18n.rb
config/key.yml
config/lighttpd.conf
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/hu.yml [new file with mode: 0644]
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/ro.yml [new file with mode: 0644]
config/locales/ru.yml
config/locales/sl.yml
config/locales/vi.yml [new file with mode: 0644]
config/locales/yo.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/openlayers.cfg
config/potlatch/autocomplete.txt
config/potlatch/icon_presets.txt [new file with mode: 0644]
config/potlatch/localised/en/help.html
config/potlatch/localised/hu/localised.yaml
config/potlatch/localised/no/localised.yaml
config/potlatch/localised/tr/localised.yaml [new file with mode: 0644]
config/potlatch/localised/vi/localised.yaml [new file with mode: 0644]
config/potlatch/localised/zh-HANT/localised.yaml [new file with mode: 0644]
config/potlatch/presets.txt
config/routes.rb
lib/bounding_box.rb
lib/potlatch.rb
lib/short_link.rb [new file with mode: 0644]
public/images/key/osmarender/motorway.png [new file with mode: 0644]
public/images/searching.gif [new file with mode: 0644]
public/images/sotm.png [deleted file]
public/javascripts/map.js
public/javascripts/site.js
public/openlayers/OpenLayers.js
public/openlayers/OpenStreetMap.js
public/potlatch/photos.css [new file with mode: 0644]
public/potlatch/potlatch.swf
public/stylesheets/site.css
script/locale/diff
test/functional/amf_controller_test.rb
test/functional/changeset_controller_test.rb
test/integration/short_link_test.rb [new file with mode: 0644]
test/unit/short_link_test.rb [new file with mode: 0644]
vendor/plugins/rails-i18n/locale/sl.rb

index aee31295c8de65e9797d4e01ef5b77a22bd82353..3fa47d0881dbe9e5894079a9c771d3f0e0919ec2 100644 (file)
@@ -302,7 +302,7 @@ class AmfController < ApplicationController
   end
 
   # Get a way including nodes and tags.
-  # Returns the way id, a Potlatch-style array of points, a hash of tags, and the version number.
+  # Returns the way id, a Potlatch-style array of points, a hash of tags, the version number, and the user ID.
 
   def getway(wayid) #:doc:
     amf_handle_error_with_timeout("'getway' #{wayid}") do
@@ -310,6 +310,7 @@ class AmfController < ApplicationController
         points = sql_get_nodes_in_way(wayid)
         tags = sql_get_tags_in_way(wayid)
         version = sql_get_way_version(wayid)
+        uid = sql_get_way_user(wayid)
       else
         # Ideally we would do ":include => :nodes" here but if we do that
         # then rails only seems to return the first copy of a node when a
@@ -326,9 +327,10 @@ class AmfController < ApplicationController
         end
         tags = way.tags
         version = way.version
+        uid = way.changeset.user.id
       end
 
-      [0, '', wayid, points, tags, version]
+      [0, '', wayid, points, tags, version, uid]
     end
   end
   
@@ -415,7 +417,8 @@ class AmfController < ApplicationController
       # Remove any elements where 2 seconds doesn't elapse before next one
       revdates.delete_if { |d| revdates.include?(d+1) or revdates.include?(d+2) }
       # Collect all in one nested array
-      revdates.collect! {|d| [d.strftime("%d %b %Y, %H:%M:%S")] + revusers[d.to_i] }
+      revdates.collect! {|d| [d.succ.strftime("%d %b %Y, %H:%M:%S")] + revusers[d.to_i] }
+      revdates.uniq!
 
       return ['way', wayid, revdates]
     rescue ActiveRecord::RecordNotFound
@@ -428,7 +431,7 @@ class AmfController < ApplicationController
   def getnode_history(nodeid) #:doc:
     begin 
       history = Node.find(nodeid).old_nodes.reverse.collect do |old_node|
-        [old_node.timestamp.strftime("%d %b %Y, %H:%M:%S")] + change_user(old_node)
+        [old_node.timestamp.succ.strftime("%d %b %Y, %H:%M:%S")] + change_user(old_node)
       end
       return ['node', nodeid, history]
     rescue ActiveRecord::RecordNotFound
@@ -748,10 +751,11 @@ class AmfController < ApplicationController
 
   def getpoi(id,timestamp) #:doc:
     amf_handle_error("'getpoi' #{id}") do
+      id = id.to_i
       n = Node.find(id)
       v = n.version
       unless timestamp == ''
-        n = OldNode.find(id, :conditions=>['timestamp=?',DateTime.strptime(timestamp, "%d %b %Y, %H:%M:%S")])
+        n = OldNode.find(:first, :conditions => ['id = ? AND timestamp <= ?', id, timestamp], :order => 'timestamp DESC')
       end
 
       if n
@@ -937,7 +941,11 @@ class AmfController < ApplicationController
   end
 
   def sql_get_way_version(wayid)
-    ActiveRecord::Base.connection.select_one("SELECT version FROM current_ways WHERE id=#{wayid.to_i}")
+    ActiveRecord::Base.connection.select_one("SELECT version FROM current_ways WHERE id=#{wayid.to_i}")['version']
+  end
+
+  def sql_get_way_user(wayid)
+    ActiveRecord::Base.connection.select_one("SELECT user FROM current_ways,changesets WHERE current_ways.id=#{wayid.to_i} AND current_ways.changeset=changesets.id")['user']
   end
 end
 
index 8124d4a339ec2d509ff29e2fdffc9fa2cf7039f0..91d8eb84fa4b5e42ea49d45cb118a6565d9e5e10 100644 (file)
@@ -69,7 +69,10 @@ class BrowseController < ApplicationController
       
     @title = "#{I18n.t('browse.changeset.title')} | #{@changeset.id}"
     @next = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id", { :id => @changeset.id }] ) 
-    @prev = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id", { :id => @changeset.id }] ) 
+    @prev = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id", { :id => @changeset.id }] )
+
+    @next_by_user = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id AND user_id = :user_id", {:id => @changeset.id, :user_id => @changeset.user_id }] )
+    @prev_by_user = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id AND user_id = :user_id", {:id => @changeset.id, :user_id => @changeset.user_id }] )
   rescue ActiveRecord::RecordNotFound
     @type = "changeset"
     render :action => "not_found", :status => :not_found
index 40c619e1323ae88270cb642763a6ef54874d9c97..cc1758bf35696742c30e758d20621fb80086ccf1 100644 (file)
@@ -256,79 +256,54 @@ class ChangesetController < ApplicationController
   # list edits (open changesets) in reverse chronological order
   def list
     conditions = conditions_nonempty
-    
-    
-   # @changesets = Changeset.find(:all, :order => "closed_at DESC", :conditions => ['closed_at < ?', DateTime.now], :limit=> 20)
-   
-   
-   #@edit_pages, @edits = paginate(:changesets,
-   #                                :include => [:user, :changeset_tags],
-   #                                :conditions => conditions,
-   #                                :order => "changesets.created_at DESC",
-   #                                :per_page => 20)
-   #
-    
-   @edits =  Changeset.find(:all,
-                                   :order => "changesets.created_at DESC",
-                                   :conditions => conditions,
-                                   :limit => 20)
-    
-  end
-  
-  ##
-  # list edits (changesets) belonging to a user
-  def list_user
-    user = User.find_by_display_name(params[:display_name], :conditions => {:visible => true})
-    
-    if user
-      @display_name = user.display_name
-      if not user.data_public? and @user != user
-        @edits = nil
-        render
-      else
-        conditions = cond_merge conditions, ['user_id = ?', user.id]
-        conditions = cond_merge conditions, conditions_nonempty
-        @edit_pages, @edits = paginate(:changesets,
-                                        :include => [:user, :changeset_tags],
-                                        :conditions => conditions,
-                                        :order => "changesets.created_at DESC",
-                                        :per_page => 20)
+
+    if params[:display_name]
+      user = User.find_by_display_name(params[:display_name], :conditions => { :visible => true })
+
+      if user 
+        if user.data_public? or user == @user
+          conditions = cond_merge conditions, ['user_id = ?', user.id]
+        else
+          conditions = cond_merge conditions, ['false']
+        end
+      elsif request.format == :html
+        @title = t 'user.no_such_user.title'
+        @not_found_user = params[:display_name]
+        render :template => 'user/no_such_user', :status => :not_found
       end
-    else
-      @not_found_user = params[:display_name]
-      render :template => 'user/no_such_user', :status => :not_found
     end
-  end
-  
-  ##
-  # list changesets in a bbox
-  def list_bbox
-    # support 'bbox' param or alternatively 'minlon', 'minlat' etc       
-    if params['bbox']
-       bbox = params['bbox']
-    elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
-       bbox = h(params['minlon']) + ',' + h(params['minlat']) + ',' + h(params['maxlon']) + ',' + h(params['maxlat'])
+
+    if params[:bbox]
+      bbox = params[:bbox]
+    elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat]
+      bbox = params[:minlon] + ',' + params[:minlat] + ',' + params[:maxlon] + ',' + params[:maxlat]
+    end
+
+    if bbox
+      conditions = cond_merge conditions, conditions_bbox(bbox)
+      bbox = BoundingBox.from_s(bbox)
+      bbox_link = "<a href='#{url_for(:controller => "site", :action => "index", :minlon => bbox.min_lon, :minlat => bbox.min_lat, :maxlon => bbox.max_lon, :maxlat => bbox.max_lat, :box => "yes")}'>#{bbox.to_s}</a>"
+    end
+
+    @title =  t 'changeset.list.title'
+
+    if user and bbox
+      @description = t 'changeset.list.description_user_bbox', :user => user.display_name, :bbox => bbox_link
+    elsif user
+      @description = t 'changeset.list.description_user', :user => user.display_name
+    elsif bbox
+      @description = t 'changeset.list.description_bbox', :bbox => bbox_link
     else
-      #TODO: fix bugs in location determination for history tab (and other tabs) then uncomment this redirect
-      #redirect_to :action => 'list'
-      
-      # For now just render immediately, and skip the db
-      render
-      return
+      @description = t 'changeset.list.description'
     end
-       
-    conditions = conditions_bbox(bbox);
-    conditions = cond_merge conditions, conditions_nonempty
-    
+
     @edit_pages, @edits = paginate(:changesets,
                                    :include => [:user, :changeset_tags],
                                    :conditions => conditions,
                                    :order => "changesets.created_at DESC",
                                    :per_page => 20)
-                                   
-    @bbox = sanitise_boundaries(bbox.split(/,/)) unless bbox==nil
   end
-  
+
 private
   #------------------------------------------------------------
   # utility functions below.
index 7a442ac58a3744a4656b0d0498d874feb946d838..48cdda8a03df2823b55684ccd63d3265b41496ce 100644 (file)
@@ -54,7 +54,10 @@ class DiaryEntryController < ApplicationController
     @diary_comment = @entry.diary_comments.build(params[:diary_comment])
     @diary_comment.user = @user
     if @diary_comment.save
-      Notifier::deliver_diary_comment_notification(@diary_comment)
+      if @diary_comment.user != @entry.user
+        Notifier::deliver_diary_comment_notification(@diary_comment)
+      end
+
       redirect_to :controller => 'diary_entry', :action => 'view', :display_name => @entry.user.display_name, :id => @entry.id
     else
       render :action => 'view'
index f286ab9d3401046e51828e1e8e430e8f58338e22..1b2ae340b58c38912fe76edb0827b62a6dabf3a4 100644 (file)
@@ -3,85 +3,70 @@ class GeocoderController < ApplicationController
   require 'net/http'
   require 'rexml/document'
 
+  before_filter :set_locale
+
   def search
-    query = params[:query]
-    results = Array.new
-
-    query.sub(/^\s+/, "")
-    query.sub(/\s+$/, "")
-
-    if query.match(/^[+-]?\d+(\.\d*)?\s*[\s,]\s*[+-]?\d+(\.\d*)?$/)
-      results.push search_latlon(query)
-    elsif query.match(/^\d{5}(-\d{4})?$/)
-      results.push search_us_postcode(query)
-    elsif query.match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
-      results.push search_uk_postcode(query)
-      results.push search_osm_namefinder(query)
-    elsif query.match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
-      results.push search_ca_postcode(query)
+    @query = params[:query]
+    @sources = Array.new
+
+    @query.sub(/^\s+/, "")
+    @query.sub(/\s+$/, "")
+
+    if @query.match(/^[+-]?\d+(\.\d*)?\s*[\s,]\s*[+-]?\d+(\.\d*)?$/)
+      @sources.push "latlon"
+    elsif @query.match(/^\d{5}(-\d{4})?$/)
+      @sources.push "us_postcode"
+    elsif @query.match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
+      @sources.push "uk_postcode"
+      @sources.push "osm_namefinder"
+    elsif @query.match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
+      @sources.push "ca_postcode"
     else
-      results.push search_osm_namefinder(query)
-      results.push search_geonames(query)
+      @sources.push "osm_namefinder"
+      @sources.push "geonames"
     end
 
-    results_count = count_results(results)
-
-    render :update do |page|
-      page.replace_html :sidebar_content, :partial => 'results', :object => results
-
-      if results_count == 1
-        position = results.collect { |s| s[:results] }.compact.flatten[0]
-        page.call "setPosition", position[:lat].to_f, position[:lon].to_f, position[:zoom].to_i
-      else
-        page.call "openSidebar"
-      end
-    end
-  end
-  
-  def description
-    results = Array.new
-
-    lat = params[:lat]
-    lon = params[:lon]
-
-    results.push description_osm_namefinder("cities", lat, lon, 2)
-    results.push description_osm_namefinder("towns", lat, lon, 4)
-    results.push description_osm_namefinder("places", lat, lon, 10)
-    results.push description_geonames(lat, lon)
-
     render :update do |page|
-      page.replace_html :sidebar_content, :partial => 'results', :object => results
+      page.replace_html :sidebar_content, :partial => "search"
       page.call "openSidebar"
     end
   end
 
-private
+  def search_latlon
+    # get query parameters
+    query = params[:query]
 
-  def search_latlon(query)
-    results = Array.new
+    # create result array
+    @results = Array.new
 
     # decode the location
-    if m = query.match(/^([+-]?\d+(\.\d*)?)\s*[\s,]\s*([+-]?\d+(\.\d*)?)$/)
+    if m = query.match(/^\s*([+-]?\d+(\.\d*)?)\s*[\s,]\s*([+-]?\d+(\.\d*)?)\s*$/)
       lat = m[1].to_f
       lon = m[3].to_f
     end
 
     # generate results
     if lat < -90 or lat > 90
-      return { :source => "Internal", :url => "http://openstreetmap.org/", :error => "Latitude #{lat} out of range" }
+      @error = "Latitude #{lat} out of range"
+      render :action => "error"
     elsif lon < -180 or lon > 180
-      return { :source => "Internal", :url => "http://openstreetmap.org/", :error => "Longitude #{lon} out of range" }
+      @error = "Longitude #{lon} out of range"
+      render :action => "error"
     else
-      results.push({:lat => lat, :lon => lon,
-                    :zoom => APP_CONFIG['postcode_zoom'],
-                    :name => "#{lat}, #{lon}"})
+      @results.push({:lat => lat, :lon => lon,
+                     :zoom => APP_CONFIG['postcode_zoom'],
+                     :name => "#{lat}, #{lon}"})
 
-      return { :source => "Internal", :url => "http://openstreetmap.org/", :results => results }
+      render :action => "results"
     end
   end
 
-  def search_us_postcode(query)
-    results = Array.new
+  def search_us_postcode
+    # get query parameters
+    query = params[:query]
+
+    # create result array
+    @results = Array.new
 
     # ask geocoder.us (they have a non-commercial use api)
     response = fetch_text("http://rpc.geocoder.us/service/csv?zip=#{escape_query(query)}")
@@ -89,19 +74,24 @@ private
     # parse the response
     unless response.match(/couldn't find this zip/)
       data = response.split(/\s*,\s+/) # lat,long,town,state,zip
-      results.push({:lat => data[0], :lon => data[1],
-                    :zoom => APP_CONFIG['postcode_zoom'],
-                    :prefix => "#{data[2]}, #{data[3]}, ",
-                    :name => data[4]})
+      @results.push({:lat => data[0], :lon => data[1],
+                     :zoom => APP_CONFIG['postcode_zoom'],
+                     :prefix => "#{data[2]}, #{data[3]}, ",
+                     :name => data[4]})
     end
 
-    return { :source => "Geocoder.us", :url => "http://geocoder.us/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :source => "Geocoder.us", :url => "http://geocoder.us/", :error => "Error contacting rpc.geocoder.us: #{ex.to_s}" }
+    @error = "Error contacting rpc.geocoder.us: #{ex.to_s}"
+    render :action => "error"
   end
 
-  def search_uk_postcode(query)
-    results = Array.new
+  def search_uk_postcode
+    # get query parameters
+    query = params[:query]
+
+    # create result array
+    @results = Array.new
 
     # ask npemap.org.uk to do a combined npemap + freethepostcode search
     response = fetch_text("http://www.npemap.org.uk/cgi/geocoder.fcgi?format=text&postcode=#{escape_query(query)}")
@@ -112,36 +102,44 @@ private
       data = dataline.split(/,/) # easting,northing,postcode,lat,long
       postcode = data[2].gsub(/'/, "")
       zoom = APP_CONFIG['postcode_zoom'] - postcode.count("#")
-      results.push({:lat => data[3], :lon => data[4], :zoom => zoom,
-                    :name => postcode})
+      @results.push({:lat => data[3], :lon => data[4], :zoom => zoom,
+                     :name => postcode})
     end
 
-    return { :source => "NPEMap / FreeThePostcode", :url => "http://www.npemap.org.uk/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :source => "NPEMap / FreeThePostcode", :url => "http://www.npemap.org.uk/", :error => "Error contacting www.npemap.org.uk: #{ex.to_s}" }
+    @error = "Error contacting www.npemap.org.uk: #{ex.to_s}"
+    render :action => "error"
   end
 
-  def search_ca_postcode(query)
-    results = Array.new
+  def search_ca_postcode
+    # get query parameters
+    query = params[:query]
+    @results = Array.new
 
     # ask geocoder.ca (note - they have a per-day limit)
     response = fetch_xml("http://geocoder.ca/?geoit=XML&postal=#{escape_query(query)}")
 
     # parse the response
     if response.get_elements("geodata/error").empty?
-      results.push({:lat => response.get_text("geodata/latt").to_s,
-                    :lon => response.get_text("geodata/longt").to_s,
-                    :zoom => APP_CONFIG['postcode_zoom'],
-                    :name => query.upcase})
+      @results.push({:lat => response.get_text("geodata/latt").to_s,
+                     :lon => response.get_text("geodata/longt").to_s,
+                     :zoom => APP_CONFIG['postcode_zoom'],
+                     :name => query.upcase})
     end
 
-    return { :source => "Geocoder.CA", :url => "http://geocoder.ca/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :source => "Geocoder.CA", :url => "http://geocoder.ca/", :error => "Error contacting geocoder.ca: #{ex.to_s}" }
+    @error = "Error contacting geocoder.ca: #{ex.to_s}"
+    render :action => "error"
   end
 
-  def search_osm_namefinder(query)
-    results = Array.new
+  def search_osm_namefinder
+    # get query parameters
+    query = params[:query]
+
+    # create result array
+    @results = Array.new
 
     # ask OSM namefinder
     response = fetch_xml("http://gazetteer.openstreetmap.org/namefinder/search.xml?find=#{escape_query(query)}")
@@ -160,14 +158,14 @@ private
         prefix = ""
         name = type
       else
-        prefix = "#{type} "
+        prefix =  t "geocoder.search_osm_namefinder.prefix", :type => type
       end
 
       if place
         distance = format_distance(place.attributes["approxdistance"].to_i)
         direction = format_direction(place.attributes["direction"].to_i)
         placename = format_name(place.attributes["name"].to_s)
-        suffix = ", #{distance} #{direction} of #{placename}"
+        suffix = t "geocoder.search_osm_namefinder.suffix_place", :distance => distance, :direction => direction, :placename => placename
 
         if place.attributes["rank"].to_i <= 30
           parent = nil
@@ -191,11 +189,11 @@ private
             parentname = format_name(parent.attributes["name"].to_s)
 
             if  place.attributes["info"].to_s == "suburb"
-              suffix = "#{suffix}, #{parentname}"
+              suffix = t "geocoder.search_osm_namefinder.suffix_suburb", :suffix => suffix, :parentname => parentname
             else
               parentdistance = format_distance(parent.attributes["approxdistance"].to_i)
               parentdirection = format_direction(parent.attributes["direction"].to_i)
-              suffix = "#{suffix} (#{parentdistance} #{parentdirection} of #{parentname})"
+              suffix = t "geocoder.search_osm_namefinder.suffix_parent", :suffix => suffix, :parentdistance => parentdistance, :parentdirection => parentdirection, :parentname => parentname
             end
           end
         end
@@ -203,18 +201,23 @@ private
         suffix = ""
       end
 
-      results.push({:lat => lat, :lon => lon, :zoom => zoom,
-                    :prefix => prefix, :name => name, :suffix => suffix,
-                    :description => description})
+      @results.push({:lat => lat, :lon => lon, :zoom => zoom,
+                     :prefix => prefix, :name => name, :suffix => suffix,
+                     :description => description})
     end
 
-    return { :source => "OpenStreetMap Namefinder", :url => "http://gazetteer.openstreetmap.org/namefinder/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :source => "OpenStreetMap Namefinder", :url => "http://gazetteer.openstreetmap.org/namefinder/", :error => "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}" }
+    @error = "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}"
+    render :action => "error"
   end
 
-  def search_geonames(query)
-    results = Array.new
+  def search_geonames
+    # get query parameters
+    query = params[:query]
+
+    # create result array
+    @results = Array.new
 
     # ask geonames.org
     response = fetch_xml("http://ws.geonames.org/search?q=#{escape_query(query)}&maxRows=20")
@@ -225,19 +228,41 @@ private
       lon = geoname.get_text("lng").to_s
       name = geoname.get_text("name").to_s
       country = geoname.get_text("countryName").to_s
-      results.push({:lat => lat, :lon => lon,
-                    :zoom => APP_CONFIG['geonames_zoom'],
-                    :name => name,
-                    :suffix => ", #{country}"})
+      @results.push({:lat => lat, :lon => lon,
+                     :zoom => APP_CONFIG['geonames_zoom'],
+                     :name => name,
+                     :suffix => ", #{country}"})
     end
 
-    return { :source => "GeoNames", :url => "http://www.geonames.org/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :source => "GeoNames", :url => "http://www.geonames.org/", :error => "Error contacting ws.geonames.org: #{ex.to_s}" }
+    @error = "Error contacting ws.geonames.org: #{ex.to_s}"
+    render :action => "error"
   end
+  
+  def description
+    @sources = Array.new
 
-  def description_osm_namefinder(types, lat, lon, max)
-    results = Array.new
+    @sources.push({ :name => "osm_namefinder", :types => "cities", :max => 2 })
+    @sources.push({ :name => "osm_namefinder", :types => "towns", :max => 4 })
+    @sources.push({ :name => "osm_namefinder", :types => "places", :max => 10 })
+    @sources.push({ :name => "geonames" })
+
+    render :update do |page|
+      page.replace_html :sidebar_content, :partial => "description"
+      page.call "openSidebar"
+    end
+  end
+
+  def description_osm_namefinder
+    # get query parameters
+    lat = params[:lat]
+    lon = params[:lon]
+    types = params[:types]
+    max = params[:max]
+
+    # create result array
+    @results = Array.new
 
     # ask OSM namefinder
     response = fetch_xml("http://gazetteer.openstreetmap.org/namefinder/search.xml?find=#{types}+near+#{lat},#{lon}&max=#{max}")
@@ -253,19 +278,25 @@ private
       description = named.elements["description"].to_s
       distance = format_distance(place.attributes["approxdistance"].to_i)
       direction = format_direction((place.attributes["direction"].to_i - 180) % 360)
-      prefix = "#{distance} #{direction} of #{type} "
-      results.push({:lat => lat, :lon => lon, :zoom => zoom,
-                    :prefix => prefix.capitalize, :name => name,
-                    :description => description})
+      prefix = t "geocoder.description_osm_namefinder.prefix", :distance => distance, :direction => direction, :type => type
+      @results.push({:lat => lat, :lon => lon, :zoom => zoom,
+                     :prefix => prefix.capitalize, :name => name,
+                     :description => description})
     end
 
-    return { :type => types.capitalize, :source => "OpenStreetMap Namefinder", :url => "http://gazetteer.openstreetmap.org/namefinder/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :type => types.capitalize, :source => "OpenStreetMap Namefinder", :url => "http://gazetteer.openstreetmap.org/namefinder/", :error => "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}" }
+    @error = "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}"
+    render :action => "error"
   end
 
-  def description_geonames(lat, lon)
-    results = Array.new
+  def description_geonames
+    # get query parameters
+    lat = params[:lat]
+    lon = params[:lon]
+
+    # create result array
+    @results = Array.new
 
     # ask geonames.org
     response = fetch_xml("http://ws.geonames.org/countrySubdivision?lat=#{lat}&lng=#{lon}")
@@ -274,14 +305,17 @@ private
     response.elements.each("geonames/countrySubdivision") do |geoname|
       name = geoname.get_text("adminName1").to_s
       country = geoname.get_text("countryName").to_s
-      results.push({:prefix => "#{name}, #{country}"})
+      @results.push({:prefix => "#{name}, #{country}"})
     end
 
-    return { :type => "Location", :source => "GeoNames", :url => "http://www.geonames.org/", :results => results }
+    render :action => "results"
   rescue Exception => ex
-    return { :type => "Location", :source => "GeoNames", :url => "http://www.geonames.org/", :error => "Error contacting ws.geonames.org: #{ex.to_s}" }
+    @error = "Error contacting ws.geonames.org: #{ex.to_s}"
+    render :action => "error"
   end
 
+private
+
   def fetch_text(url)
     return Net::HTTP.get(URI.parse(url))
   end
@@ -291,19 +325,18 @@ private
   end
 
   def format_distance(distance)
-    return "less than 1km" if distance == 0
-    return "about #{distance}km"
+    return t("geocoder.distance", :count => distance)
   end
 
   def format_direction(bearing)
-    return "south-west" if bearing >= 22.5 and bearing < 67.5
-    return "south" if bearing >= 67.5 and bearing < 112.5
-    return "south-east" if bearing >= 112.5 and bearing < 157.5
-    return "east" if bearing >= 157.5 and bearing < 202.5
-    return "north-east" if bearing >= 202.5 and bearing < 247.5
-    return "north" if bearing >= 247.5 and bearing < 292.5
-    return "north-west" if bearing >= 292.5 and bearing < 337.5
-    return "west"
+    return t("geocoder.direction.south_west") if bearing >= 22.5 and bearing < 67.5
+    return t("geocoder.direction.south") if bearing >= 67.5 and bearing < 112.5
+    return t("geocoder.direction.south_east") if bearing >= 112.5 and bearing < 157.5
+    return t("geocoder.direction.east") if bearing >= 157.5 and bearing < 202.5
+    return t("geocoder.direction.north_east") if bearing >= 202.5 and bearing < 247.5
+    return t("geocoder.direction.north") if bearing >= 247.5 and bearing < 292.5
+    return t("geocoder.direction.north_west") if bearing >= 292.5 and bearing < 337.5
+    return t("geocoder.direction.west")
   end
 
   def format_name(name)
index 6c7be5e0f575cac11120cbb5040787e2472982cb..e1062bc9f6e89559e322d63a9a85d176b74dcaf0 100644 (file)
@@ -27,8 +27,9 @@ class MessageController < ApplicationController
         end
       else
         if params[:title]
-          # ?title= is set when someone reponds to this user's diary entry
-          @title = params[:title]
+          # ?title= is set when someone reponds to this user's diary
+          # entry. Then we pre-fill out the subject and the <title>
+          @title = @subject = params[:title]
         else
           # The default /message/new/$user view
           @title = t 'message.new.title'
@@ -44,7 +45,7 @@ class MessageController < ApplicationController
   def reply
     message = Message.find(params[:message_id], :conditions => ["to_user_id = ? or from_user_id = ?", @user.id, @user.id ])
     @body = "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}" 
-    @title = "Re: #{message.title.sub(/^Re:\s*/, '')}"
+    @title = @subject = "Re: #{message.title.sub(/^Re:\s*/, '')}"
     @to_user = User.find(message.from_user_id)
     render :action => 'new'
   rescue ActiveRecord::RecordNotFound
@@ -104,3 +105,4 @@ class MessageController < ApplicationController
     render :action => 'no_such_user', :status => :not_found
   end
 end
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 262662c7af45880d939d9ec93731e1ea109d74ed..d989a5e909f4462470e66e1a578ec9e1ba71b259 100644 (file)
@@ -23,6 +23,7 @@ class SwfController < ApplicationController
                xmax=params['xmax'].to_f;
                ymin=params['ymin'].to_f;
                ymax=params['ymax'].to_f;
+               start=params['start'].to_i;
        
                # -     Begin movie
        
@@ -54,7 +55,7 @@ class SwfController < ApplicationController
                           "  AND "+OSM.sql_for_area(ymin,xmin,ymax,xmax,"gps_points.")+
                           "  AND (gps_points.timestamp IS NOT NULL) "+
                           "ORDER BY fileid DESC,ts "+
-                          "LIMIT 10000"
+                          "LIMIT 10000 OFFSET #{start}"
                  else
                        sql="SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid,"+
                             "      EXTRACT(EPOCH FROM timestamp) AS ts, gps_points.trackid AS trackid "+
@@ -62,7 +63,7 @@ class SwfController < ApplicationController
                                 "WHERE "+OSM.sql_for_area(ymin,xmin,ymax,xmax,"gps_points.")+
                                 "  AND (gps_points.timestamp IS NOT NULL) "+
                                 "ORDER BY fileid DESC,ts "+
-                                "LIMIT 10000"
+                                "LIMIT 10000 OFFSET #{start}"
                end
                gpslist=ActiveRecord::Base.connection.select_all sql
        
index 3119c8435469003a9433793005306b4be504df70..b28ab7c1a6eca2dabe18a38d1b90e694bc9e5f6d 100644 (file)
@@ -6,4 +6,8 @@ module ApplicationHelper
   def rss_link_to(*args)
     return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" });
   end
+
+  def atom_link_to(*args)
+    return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" });
+  end
 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 03dbeb0b35d53206753972cc3da8f3422f15d3cc..7f2607b0f77aa4d6f4ff18e8423c1c01c33b4c7e 100644 (file)
@@ -20,15 +20,24 @@ class Trace < ActiveRecord::Base
   end
 
   def tagstring
-    return tags.collect {|tt| tt.tag}.join(" ")
+    return tags.collect {|tt| tt.tag}.join(", ")
   end
 
   def tagstring=(s)
-    self.tags = s.split().collect {|tag|
-      tt = Tracetag.new
-      tt.tag = tag
-      tt
-    }
+    if s.include?','
+      self.tags = s.split(/\s*,\s*/).collect {|tag|
+        tt = Tracetag.new
+        tt.tag = tag
+        tt
+      }
+    else
+      #do as before for backwards compatibility:
+      self.tags = s.split().collect {|tag|
+        tt = Tracetag.new
+        tt.tag = tag
+        tt
+      }
+    end
   end
   
   def large_picture= (data)
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 57e724d4258a7a907f03475ac01f7fa6c02d971a..88812c2bb6e29b63eafe225d832a2614f7cec37c 100644 (file)
@@ -1,13 +1,40 @@
 <div style="float:right; text-align:center; width: 250px;">
+  <% if @next_by_user or @prev_by_user %>
+    <% if @prev_by_user %>
+      &lt;
+      <%= link_to @prev_by_user.id.to_s,
+                  { :id => @prev_by_user.id },
+                  { :title => t('browse.changeset_navigation.user.prev_tooltip', :user => @prev_by_user.user.display_name) } %>
+      |
+    <% end %>
+    <%=
+    user = (@prev_by_user || @next_by_user).user.display_name
+    link_to h(user),
+            { :controller => "changeset", :action => "list", :display_name => user },
+            { :title => t('browse.changeset_navigation.user.name_tooltip', :user => h(user)) }
+    %>
+    <% if @next_by_user %>
+      |
+      <%= link_to @next_by_user.id.to_s,
+                  { :id => @next_by_user.id },
+                  { :title => t('browse.changeset_navigation.user.next_tooltip', :user => @next_by_user.user.display_name) } %>
+      &gt;
+    <% end %>
+    <br/>
+  <% end %>
   <% if @prev %>
     &lt;
-    <%= link_to @prev.id.to_s, :id => @prev.id %>
+    <%= link_to @prev.id.to_s,
+                { :id => @prev.id },
+                { :title => t('browse.changeset_navigation.all.prev_tooltip') } %>
   <% end %>
   <% if @prev and @next %>
     | 
   <% end %>
   <% if @next %>
-    <%= link_to @next.id.to_s, :id => @next.id %>
+    <%= link_to @next.id.to_s,
+                { :id => @next.id },
+                { :title => t('browse.changeset_navigation.all.next_tooltip') } %>
     &gt;
   <% end %>
 </div>
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 e5963c57f415dbd1d9a65773420016ae3c7f257b..8e110212893968f9f0c6c15d2e49fb5364386e82 100644 (file)
@@ -1,7 +1,7 @@
 <table width="100%">
   <tr>
     <td>
-      <h2><%= t 'browse.changeset.changeset' %> <%= h(@changeset.id) %></h2>
+      <h2><%= t 'browse.changeset.changeset', :id => @changeset.id %></h2>
     </td>
     <td>
       <%= render :partial => "navigation" %>
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..a62ac2ef73e674d189e8dc76787cba43f8ba63fd 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">
@@ -11,9 +11,8 @@
         <%= render :partial => "relation_details", :object => relation %>
         <hr />
       <% end %>
-      <%= link_to "Download XML", :controller => "old_relation", :action => "history" %>
-      or
-      <%= link_to "view details", :action => "relation" %>
+      <%= t'browse.relation_history.download', :download_xml_link => link_to(t('browse.relation_history.download_xml'), :controller => "old_relation", :action => "history"), 
+                                               :view_details_link => link_to(t('browse.relation_history.view_details'), :action => "relation") %>
     </td>
     <%= render :partial => "map", :object => @relation %>
   </tr>
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 8ac433415a3a843272ff4669fcc1c7241f8be80f..f8f00addb35cdffd43c020f47506dca3d23f4c1f 100644 (file)
@@ -14,7 +14,7 @@
   <%if showusername %>  
     <td class="<%= cl %> user">
     <% if changeset.user.data_public? %>
-      <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list_user", :display_name => changeset.user.display_name %>
+      <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list", :display_name => changeset.user.display_name %>
     <% else %>
       <i><%= t'changeset.changeset.anonymous' %></i>
     <% end %>
@@ -25,7 +25,7 @@
     <% if changeset.tags['comment'] %>
       <%= h(changeset.tags['comment']) %>
     <% else %>
-      <i><%= t'changeset.changeset.no_comment' %></i>
+      <%= t'changeset.changeset.no_comment' %>
     <% end %>
   </td>
 
index b8ac1a65fca39f394c5aaf7762ed9e3013535437..94edfc31ed1f673aceba4fe62a5c50431fb8b449 100644 (file)
@@ -1,3 +1,4 @@
+<p>
 <% current_page = @edit_pages.current_page %>
 
 <%= t'changeset.changeset_paging_nav.showing_page' %> 
@@ -16,3 +17,4 @@ if @edit_pages.page_count > 1
 <%
 end
 %>
+</p>
diff --git a/app/views/changeset/list.atom.builder b/app/views/changeset/list.atom.builder
new file mode 100644 (file)
index 0000000..c71c22a
--- /dev/null
@@ -0,0 +1,89 @@
+atom_feed(:language => I18n.locale, :schema_date => 2009,
+          :id => url_for(params.merge({ :only_path => false })),
+          :root_url => url_for(params.merge({ :only_path => false, :format => nil })),
+          "xmlns:georss" => "http://www.georss.org/georss") do |feed|
+  feed.title @title
+
+  feed.subtitle :type => 'xhtml' do |xhtml|
+    xhtml.p @description
+  end
+
+  feed.updated @edits.map {|e|  [e.created_at, e.closed_at].max }.max
+  feed.icon "http://#{SERVER_URL}/favicon.ico"
+  feed.logo "http://#{SERVER_URL}/images/mag_map-rss2.0.png"
+
+  feed.rights :type => 'xhtml' do |xhtml|
+    xhtml.a :href => "http://creativecommons.org/licenses/by-sa/2.0/" do |a|
+      a.img :src => "http://#{SERVER_URL}/images/cc_button.png", :alt => "CC by-sa 2.0"
+    end
+  end
+
+  for changeset in @edits
+    feed.entry(changeset, :updated => changeset.closed_at, :id => changeset_url(changeset.id, :only_path => false)) do |entry|
+      entry.link :rel => "alternate",
+                 :href => changeset_read_url(changeset, :only_path => false),
+                 :type => "application/osm+xml"
+      entry.link :rel => "alternate",
+                 :href => changeset_download_url(changeset, :only_path => false),
+                 :type => "application/osmChange+xml"
+
+      entry.title t('browse.changeset.title') + " " + h(changeset.id)
+
+      if changeset.user.data_public?
+        entry.author do |author|
+          author.name changeset.user.display_name
+          author.uri url_for(:controller => 'user', :action => 'view', :display_name => changeset.user.display_name, :only_path => false)
+        end
+      end
+
+      feed.content :type => 'xhtml' do |xhtml|
+        xhtml.style "th { text-align: left } tr { vertical-align: top }"
+        xhtml.table do |table|
+          table.tr do |tr|
+            tr.th t("browse.changeset_details.created_at")
+            tr.td l(changeset.created_at)
+          end
+          table.tr do |tr|
+            tr.th t("browse.changeset_details.closed_at")
+            tr.td l(changeset.closed_at)
+          end
+          if changeset.user.data_public?
+            table.tr do |tr|
+              tr.th t("browse.changeset_details.belongs_to")
+              tr.td do |td|
+                td.a h(changeset.user.display_name), :href => url_for(:controller => "user", :action => "view", :display_name => changeset.user.display_name, :only_path => false)
+              end
+            end
+          end
+          unless changeset.tags.empty?
+            table.tr do |tr|
+              tr.th t("browse.tag_details.tags")
+              tr.td do |td|
+                td.table :cellpadding => "0" do |table|
+                  changeset.tags.sort.each do |tag|
+                    table.tr do |tr|
+                      tr.td "#{h(tag[0])} = #{sanitize(auto_link(tag[1]))}"
+                    end
+                  end
+                end
+              end
+            end
+          end
+        end
+      end
+
+      unless changeset.min_lat.nil?
+        minlon = changeset.min_lon/GeoRecord::SCALE.to_f
+        minlat = changeset.min_lat/GeoRecord::SCALE.to_f
+        maxlon = changeset.max_lon/GeoRecord::SCALE.to_f
+        maxlat = changeset.max_lat/GeoRecord::SCALE.to_f
+
+        # See http://georss.org/Encodings#Geometry
+        lower_corner = "#{minlat} #{minlon}"
+        upper_corner = "#{maxlat} #{maxlon}"
+
+        feed.georss :box, lower_corner + " " + upper_corner
+      end
+    end
+  end
+end
index cfe4afd3faa5d0d9de765505f5a797220a3202ec..0fcf5ddda4af872576ceb4f38f73fd88eecf750e 100644 (file)
@@ -1,7 +1,12 @@
-<h1><%= t'changeset.list.recent_changes' %></h1>
-<p><%= t'changeset.list.recently_edited_changesets' %></p>
+<h1><%= @title %></h1>
+<p><%= @description %></p>
 
-<%= render :partial => 'changesets' %>
+<%= render :partial => 'changeset_paging_nav' %>
+<%= render :partial => 'changesets', :locals => { :showusername => !params.has_key?(:display_name) } %>
+<%= render :partial => 'changeset_paging_nav' %>
 
-<p><%= t'changeset.list.for_more_changesets' %></p>
-<br>
+<%= atom_link_to params.merge({ :format => :atom }) %>
+
+<% content_for :head do %>
+<%= auto_discovery_link_tag :atom, params.merge({ :format => :atom }) %>
+<% end %>
diff --git a/app/views/changeset/list_bbox.html.erb b/app/views/changeset/list_bbox.html.erb
deleted file mode 100644 (file)
index 87c6179..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<h1><%= t'changeset.list_bbox.history' %></h1>
-<%
-if @bbox!=nil
-       minlon = @bbox[0] 
-       minlat = @bbox[1] 
-       maxlon = @bbox[2]
-       maxlat = @bbox[3] 
-
-       %>
-<p>
-<%= t'changeset.list_bbox.changesets_within_the_area' %> 
-      (<a href='/?minlon=<%= minlon %>&minlat=<%= minlat %>&maxlon=<%= maxlon %>&maxlat=<%= maxlat %>&box=yes' title='<%= t'changeset.list_bbox.show_area_box' %>'><%= format("%0.3f",minlon) -%>,<%= format("%0.3f",minlat) -%>,<%= format("%0.3f",maxlon) -%>,<%= format("%0.3f",maxlat) -%></a>) 
-
-</p>
-
-<%     if @edits.nil? or @edits.empty? %>
-<p><b><%= t'changeset.list_bbox.no_changesets' %></b></p>
-<%     else %>
-
-<%= render :partial => 'changeset_paging_nav' %>
-<%= render :partial => 'changesets' %>
-<%= render :partial => 'changeset_paging_nav' %>
-
-<p><%= t'changeset.list_bbox.all_changes_everywhere' , :recent_changes_link => link_to(t('changeset.list_bbox.recent_changes'), :controller => "browse", :action => "changesets") %> </p>
-
-<%
-       end
-
-else 
-       #bbox is nil. happens if the user surfs to this page directly.
-%>
-
-<p><%= t'changeset.list_bbox.no_area_specified' %></p>
-<p><%= t'changeset.list_bbox.first_use_view', :view_tab_link => '<a href="/" title="' + t('changeset.list_bbox.view_the_map') + '">' + t('changeset.list_bbox.view_tab') + '</a>' %></p>
-<p><%= t'changeset.list_bbox.alternatively_view', :recent_changes_link => link_to(t('changeset.list_bbox.recent_changes'), :controller => "browse", :action => "changesets") %></p>
-
-<%
-end
-%>
-<br>
-
diff --git a/app/views/changeset/list_user.html.erb b/app/views/changeset/list_user.html.erb
deleted file mode 100644 (file)
index 7240e60..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<h1><%= t'changeset.list_user.edits_by_username', :username_link => link_to(h(@display_name), {:controller=>'user', :action=>'view', :display_name=>@display_name}) %></h1>
-
-<% if not @edits or @edits.empty? %>
-<p><b><%= t'changeset.list_user.no_visible_edits_by', :name => h(@display_name) %>.</b></p>
-<% else %>
-<%= render :partial => 'changeset_paging_nav' %>
-<%= render :partial => 'changesets', :locals => {:showusername => false} %>
-<%= render :partial => 'changeset_paging_nav' %>
-<% end %>
-
-<p><%= t'changeset.list_user.for_all_changes', :recent_changes_link => link_to(t('changeset.list_user.recent_changes'), :controller => "browse", :action => "changesets") %></p>
-<br>
-
diff --git a/app/views/geocoder/_description.html.erb b/app/views/geocoder/_description.html.erb
new file mode 100644 (file)
index 0000000..7d93179
--- /dev/null
@@ -0,0 +1,13 @@
+<% @sources.each do |source| %>
+  <% if source[:types] %>
+    <p class="search_results_heading"><%= t("geocoder.description.title.#{source[:name]}", :types => t("geocoder.description.types.#{source[:types]}")) %></p>
+  <% else %>
+    <p class="search_results_heading"><%= t("geocoder.description.title.#{source[:name]}") %></p>
+  <% end %>
+  <div class='search_results_entry' id='<%= "description_#{source[:name]}_#{source[:types]}" %>'>
+    <%= image_tag "searching.gif", :class => "search_searching" %>
+  </div>
+  <script type="text/javascript">
+    <%= remote_function :update => "description_#{source[:name]}_#{source[:types]}", :url => { :action => "description_#{source[:name]}", :lat => params[:lat], :lon => params[:lon], :types => source[:types], :max => source[:max] } %>
+  </script>
+<% end %>
diff --git a/app/views/geocoder/_results.html.erb b/app/views/geocoder/_results.html.erb
deleted file mode 100644 (file)
index bf42244..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<% results.each do |source| %>
-<% type = source[:type] || t('geocoder.results.results') %>
-<p class="search_results_heading"><%= t'geocoder.results.type_from_source', :type => type, :source_link => link_to(source[:source], source[:url]) %></p>
-<% if source[:results] %>
-<% if source[:results].empty? %>
-<p class="search_results_entry"><%= t'geocoder.results.no_results' %></p>
-<% else %>
-<% source[:results].each do |result| %>
-<p class="search_results_entry"><%= result_to_html(result) %></p>
-<% end %>
-<% end %>
-<% else %>
-<p class="search_results_error"><%= source[:error] %></p>
-<% end %>
-<% end %>
diff --git a/app/views/geocoder/_search.html.erb b/app/views/geocoder/_search.html.erb
new file mode 100644 (file)
index 0000000..0d0ed24
--- /dev/null
@@ -0,0 +1,9 @@
+<% @sources.each do |source| %>
+  <p class="search_results_heading"><%= t "geocoder.search.title.#{source}" %></p>
+  <div class='search_results_entry' id='<%= "search_#{source}" %>'>
+    <%= image_tag "searching.gif", :class => "search_searching" %>
+  </div>
+  <script type="text/javascript">
+    <%= remote_function :update => "search_#{source}", :url => { :action => "search_#{source}", :query => @query } %>
+  </script>
+<% end %>
diff --git a/app/views/geocoder/error.html.erb b/app/views/geocoder/error.html.erb
new file mode 100644 (file)
index 0000000..e2ce07b
--- /dev/null
@@ -0,0 +1 @@
+<p class="search_results_error"><%= @error %></p>
diff --git a/app/views/geocoder/results.html.erb b/app/views/geocoder/results.html.erb
new file mode 100644 (file)
index 0000000..70051c9
--- /dev/null
@@ -0,0 +1,7 @@
+<% if @results.empty? %>
+  <p class="search_results_entry"><%= t 'geocoder.results.no_results' %></p>
+<% else %>
+  <% @results.each do |result| %>
+    <p class="search_results_entry"><%= result_to_html(result) %></p>
+  <% end %>
+<% end %>
index 612c419c68366210844aa5cc2c0f882075c6ba44..59b7c304bd94e573c030e057f750b802dd782dcd 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= I18n.locale %>" lang="<%= I18n.locale %>" dir="<% t'html.dir' %>">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= I18n.locale %>" lang="<%= I18n.locale %>" dir="<%= t'html.dir' %>">
   <head>
     <%= javascript_include_tag 'prototype' %>
     <%= javascript_include_tag 'site' %>
         traceclass = ''
         viewclass = 'active' if params['controller'] == 'site' and params['action'] == 'index' 
         editclass = 'active' if params['controller'] == 'site' and params['action'] == 'edit' 
-        historyclass = 'active' if params['controller'] == 'changeset' and params['action'] == 'list_bbox
+        historyclass = 'active' if params['controller'] == 'changeset' and params['action'] == 'list' 
         exportclass = 'active' if params['controller'] == 'site' and params['action'] == 'export'
         traceclass = 'active' if params['controller'] == 'trace'
         diaryclass = 'active' if params['controller'] == 'diary_entry'
         %>
         <li><%= link_to t('layouts.view'), {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => t('layouts.view_tooltip'), :class => viewclass} %></li>
         <li><%= link_to t('layouts.edit'), {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => t('layouts.edit_tooltip'), :class => editclass} %></li>
-        <li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list_bbox' }, {:id => 'historyanchor', :title => t('layouts.history_tooltip'), :class => historyclass} %></li>
+        <li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list' }, {:id => 'historyanchor', :title => t('layouts.history_tooltip'), :class => historyclass} %></li>
         <% if params['controller'] == 'site' and (params['action'] == 'index' or params['action'] == 'export') %>
         <li><%= link_to_remote t('layouts.export'), {:url => {:controller => 'export', :action => 'start'}}, {:id => 'exportanchor', :title => t('layouts.export_tooltip'), :class => exportclass, :href => url_for(:controller => 'site', :action => 'export')} %></li>
         <% else %>
         <%= yield :left_menu %>
       </div>
 
-      <div id="sotm" class="notice">
-        <%= link_to image_tag("sotm.png", :alt => t('layouts.sotm'), :title => t('layouts.sotm'), :border => "0"), "http://www.stateofthemap.org/register" %>
-      </div>
-
       <%= yield :optionals %>
 
       <center>
diff --git a/app/views/layouts/site.rss.builder b/app/views/layouts/site.rss.builder
new file mode 100644 (file)
index 0000000..90198e8
--- /dev/null
@@ -0,0 +1,2 @@
+xml.instruct!
+xml << yield
index f771f619bb2c19edb418f57cb11035c07b68fc81..9ae756f833d6daa5f22d5420112bd6e9cf47a5fe 100644 (file)
@@ -6,7 +6,7 @@
   <table>
     <tr valign="top">
       <th><%= t'message.new.subject' %></th>
-      <td><%= f.text_field :title, :size => 60, :value => @title %></td>
+      <td><%= f.text_field :title, :size => 60, :value => @subject %></td>
     </tr>
     <tr valign="top">
       <th><%= t'message.new.body' %></th>
index b57a1f984f0381308322d9e78ccfb23119000cef..12b8bccc558e5d10b07e7c56f594cd7f81b32c5e 100644 (file)
@@ -1,29 +1,19 @@
 <script type="text/javascript">
 <!--
   function startSearch() {
-    updateSidebar("Search Results", "<p class='search_results_entry'>Searching...<\/p>");
-
-    $("search_field").style.display = "none";
-    $("search_active").style.display = "inline";
-  }
-
-  function endSearch() {
-    $("search_field").style.display = "inline";
-    $("search_active").style.display = "none";
+    updateSidebar("<%= t 'site.sidebar.search_results' %>", "");
   }
 
   function describeLocation() {
     var position = getPosition();
 
     <%= remote_function(:loading => "startSearch()",
-                        :complete => "endSearch()",
                         :url => { :controller => :geocoder, :action => :description },
                         :with => "'lat=' + position.lat + '&lon=' + position.lon") %>
   }
 
   <% if params[:query] %>
   <%= remote_function(:loading => "startSearch()",
-                      :complete => "endSearch()",
                       :url => { :controller => :geocoder, :action => :search, :query => h(params[:query]) }) %>
   <% end %>
 // -->
@@ -42,7 +32,6 @@
       <%= submit_tag t('site.search.submit_text') %>
     <% end %>
     </div>
-    <p id="search_active"><%= t 'site.search.searching' %></p>
     </div>
     <p class="search_help">
       <%= t 'site.search.search_help' %>
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 %>
index 4e1733148c943fc1fc8c56aeb73a0bc89022336e..4cd40352a456849e1ad91a4da5776dd99e194255 100644 (file)
@@ -27,9 +27,7 @@
     <%= t'trace.trace.by' %> <%=link_to h(trace.user.display_name), {:controller => 'user', :action => 'view', :display_name => trace.user.display_name} %>
     <% if !trace.tags.empty? %>
       <%= t'trace.trace.in' %> 
-      <% trace.tags.each do |tag| %>
-        <%= link_to_tag tag.tag %>
-      <% end %>
+      <%= trace.tags.collect { |tag| link_to_tag tag.tag }.join(", ") %>
     <% end %>
   </td>
 </tr>
index 86fc29c3a866268010a043e6578d2ed52ad65a7b..b178a7532a30a4fc8ccb62f133fbc7d48a30530f 100644 (file)
@@ -2,7 +2,7 @@
 <table>
   <tr><td align="right"><%= t'trace.trace_form.upload_gpx' %></td><td><%= f.file_field :gpx_file, :size => 50, :maxlength => 255 %></td></tr>
   <tr><td align="right"><%= t'trace.trace_form.description' %></td><td><%= f.text_field :description, :size => 50, :maxlength => 255 %></td></tr>
-  <tr><td align="right"><%= t'trace.trace_form.tags' %></td><td><%= f.text_field :tagstring, :size => 50, :maxlength => 255 %></td></tr>
+  <tr><td align="right"><%= t'trace.trace_form.tags' %></td><td><%= f.text_field :tagstring, :size => 50, :maxlength => 255 %> (<%= t'trace.trace_form.tags_help' %>)</td></tr>
   <tr><td align="right"><%= t'trace.trace_form.public' %></td><td><%= f.check_box :public %> <span class="minorNote">(<a href="<%= t'trace.trace_form.public_help_url' %>"><%= t'trace.trace_form.public_help' %></a>)</span></td></tr>
   <tr><td></td><td><%= submit_tag t('trace.trace_form.upload_button') %> | <a href="<%= t'trace.trace_form.help_url' %>"><%= t'trace.trace_form.help' %></a></td></tr>
 </table>
index 2f73d2d4ed78c30b8fdb82df0cf9b4915bf8c9d1..e14e152dd1cab05fc10a704c9b527cad5ce2be4e 100644 (file)
   </tr>
   <tr>
     <td><%= t'trace.edit.description' %></td>
-    <td><%= f.text_field :description %></td>
+    <td><%= f.text_field :description, :size => 50 %></td>
   </tr>
   <tr>
     <td><%= t'trace.edit.tags' %></td>
-    <td><%= f.text_field :tagstring %></td>
+    <td><%= f.text_field :tagstring, :size => 50 %> (<%= t'trace.edit.tags_help' %>)</td>
   </tr>
 </table>
 
index 0688ec130d6cbc9571775d6029ba2e3be430ec88..4ab46bd3ef5de04b7dda87d5d27fc1589af83090 100644 (file)
@@ -36,9 +36,7 @@
     <td><%= t'trace.view.tags' %></td>
     <td>
     <% unless @trace.tags.empty? %>
-      <% @trace.tags.each do |tag| %>
-        <%= link_to tag.tag, { :controller => 'trace', :action => 'list', :tag => tag.tag, :id => nil } %>
-      <% end %>
+      <%= @trace.tags.collect { |tag| link_to tag.tag, { :controller => 'trace', :action => 'list', :tag => tag.tag, :id => nil } }.join(", ") %>
     <% else %>
       <i><%= t'trace.view.none' %></i>
     <% end %>
index 5fdea140ff614bec8fe5a7088a5530a4bd4af8d6..e50610037e7bde0d4f9ab4b17deedba56c1484e9 100644 (file)
@@ -4,14 +4,14 @@
 <!-- Displaying user's own profile page -->
 <%= link_to t('user.view.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
 | <%= link_to t('user.view.new diary entry'), :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
-| <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list_user', :display_name => @user.display_name %>
+| <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %>
 | <%= link_to t('user.view.my traces'), :controller => 'trace', :action=>'mine' %>
 | <%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %>
 <% else %>
 <!-- Displaying another user's profile page -->
 <%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :display_name => @this_user.display_name %>
 | <%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
-| <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list_user', :display_name => @this_user.display_name %>
+| <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name %>
 | <%= link_to t('user.view.traces'), :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %>
 | <% if @user and @user.is_friends_with?(@this_user) %>
   <%= link_to t('user.view.remove as friend'), :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %>
       <% end %>
       </td>
       <td class="username"><%= link_to h(@friend.display_name), :controller => 'user', :action => 'view',  :display_name => @friend.display_name %></td>
-      <td><% if @friend.home_lon and @friend.home_lat %><%= t 'user.view.km away', :count => @this_user.distance(@friend).round %><% end %></td>
+      <td>
+        <% if @friend.home_lon and @friend.home_lat %>
+          <% distance = @this_user.distance(@friend) %>
+          <% if distance < 1 %>
+            <%= t 'user.view.m away', :count => (distance * 1000).round %>
+          <% else %>
+            <%= t 'user.view.km away', :count => distance.round %>
+          <% end %>
+        <% end %>
+      </td>
       <td class="message">(<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :user_id => @friend.id %>)</td>
       </tr>
       <%end%>
       <% @this_user.nearby.each do |nearby| %>
       <tr>
       <td class="username"><%= link_to h(nearby.display_name), :controller => 'user', :action => 'view',  :display_name => nearby.display_name %></td>
-      <td><%= t 'user.view.km away', :count => @this_user.distance(nearby).round %></td>
+      <td>
+        <% distance = @this_user.distance(nearby) %>
+        <% if distance < 1 %>
+          <%= t 'user.view.m away', :count => (distance * 1000).round %>
+        <% else %>
+          <%= t 'user.view.km away', :count => distance.round %>
+        <% end %>
+      </td>
       <td class="message">(<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :user_id => nearby.id %>)</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 54a925e3cd6ee85deab7f85cba7968be03168ce4..a061d873a2eab5e9b03cc079944bb1794ed978cc 100644 (file)
@@ -2,3 +2,5 @@ require 'globalize/i18n/missing_translations_log_handler'
 
 I18n.missing_translations_logger = Logger.new("#{RAILS_ROOT}/log/missing_translations.log")
 I18n.exception_handler = :missing_translations_log_handler
+
+I18n.backend.add_pluralizer :sl, lambda { |c| c%100 == 1 ? :one : c%100 == 2 ? :two : (3..4).include?(c%100) ? :few : :other }
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 c1537edef3d9be1e264636f9a500ca88448d1749..3befa5c87f8907318500e455b22deeef759b00ff 100644 (file)
@@ -31,7 +31,7 @@ server.errorlog = "/var/log/lighttpd/error.log"
 #
 # Allow munin to monitor the server's status
 #
-$HTTP["remoteip"] == "127.0.0.1" { 
+$HTTP["remoteip"] == "128.40.168.98" { 
   status.config-url = "/server-config"
   status.status-url = "/server-status"
   status.statistics-url = "/server-statistics"
@@ -49,6 +49,14 @@ $HTTP["remoteip"] == "143.210.16.160" { url.access-deny = ("") }
 #
 #$HTTP["useragent"] == "tilesAtHome" { url.access-deny = ("") }
 
+#
+# Block JOSM revisions  1722-1727 as they have a serious bug that causes
+# lat/lon to be swapped (http://josm.openstreetmap.de/ticket/2804)
+#
+$HTTP["useragent"] =~ "^JOSM/[0-9]+\.[0-9]+ \(172[234567] " {
+  url.access-deny = ("")
+}
+
 #
 # Limit connections to 20 per IP address
 #
@@ -61,6 +69,7 @@ mimetype.assign = (
   ".css" => "text/css",
   ".gif" => "image/gif",
   ".html" => "text/html; charset=utf-8",
+  ".jpg" => "image/jpeg",
   ".js" => "application/x-javascript",
   ".png" => "image/png",
   ".swf" => "application/x-shockwave-flash",
@@ -136,13 +145,13 @@ server.document-root = "/home/rails/public"
 #
 # Send everything else to the appropriate FastCGI server
 #
-$HTTP["useragent"] == "tilesAtHome" {
+$HTTP["useragent"] =~ "^tilesAtHome" {
   server.error-handler-404 = "/dispatch.tah"
 }
-else $HTTP["url"] =~ "^/api/0\.6/(map|trackpoints|amf|amf/read|swf/trackpoints)$" {
+else $HTTP["url"] =~ "^/api/0\.6/(map|trackpoints|amf|amf/read|swf/trackpoints|changeset/[0-9]+/upload)$" {
   server.error-handler-404 = "/dispatch.bulkapi"
 }
-else $HTTP["url"] =~ "^/api/0\.6/.*/search$" {
+else $HTTP["url"] =~ "^/api/0\.6/.*/(full|search)$" {
   server.error-handler-404 = "/dispatch.bulkapi"
 }
 else $HTTP["url"] =~ "^/api/0\.6/" {
@@ -151,6 +160,12 @@ else $HTTP["url"] =~ "^/api/0\.6/" {
 else $HTTP["url"] =~ "^/api/0\.[0-9]+/" {
   url.access-deny = ("")
 }
+else $HTTP["url"] =~ "^/geocoder/(search|description)_osm_namefinder$" {
+  server.error-handler-404 = "/dispatch.namefinder"
+}
+else $HTTP["url"] =~ "^/geocoder/(search|description)_geonames$" {
+  server.error-handler-404 = "/dispatch.geonames"
+}
 else $HTTP["url"] =~ "^/" {
   server.error-handler-404 = "/dispatch.web"
 }
@@ -185,12 +200,20 @@ fastcgi.server = (
     ( "host" => "127.0.0.1", "port" => 8022, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8023, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8024, "check-local" => "disable" ),
-    ( "host" => "127.0.0.1", "port" => 8025, "check-local" => "disable" ),
+    ( "host" => "127.0.0.1", "port" => 8025, "check-local" => "disable" )
+  ),
+  ".namefinder" => (
     ( "host" => "127.0.0.1", "port" => 8026, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8027, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8028, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8029, "check-local" => "disable" )
   ),
+  ".geonames" => (
+    ( "host" => "127.0.0.1", "port" => 8030, "check-local" => "disable" ),
+    ( "host" => "127.0.0.1", "port" => 8031, "check-local" => "disable" ),
+    ( "host" => "127.0.0.1", "port" => 8032, "check-local" => "disable" ),
+    ( "host" => "127.0.0.1", "port" => 8033, "check-local" => "disable" )
+  ),
   ".api" => (
     ( "host" => "127.0.0.1", "port" => 8030, "check-local" => "disable" ),
     ( "host" => "127.0.0.1", "port" => 8031, "check-local" => "disable" ),
@@ -220,14 +243,32 @@ fastcgi.server = (
     ( "host" => "10.0.0.12", "port" => 8002, "check-local" => "disable" ),
     ( "host" => "10.0.0.10", "port" => 8003, "check-local" => "disable" ),
     ( "host" => "10.0.0.11", "port" => 8003, "check-local" => "disable" ),
-    ( "host" => "10.0.0.12", "port" => 8003, "check-local" => "disable" )
-  ),
-  ".tah" => (
+    ( "host" => "10.0.0.12", "port" => 8003, "check-local" => "disable" ),
     ( "host" => "10.0.0.10", "port" => 8004, "check-local" => "disable" ),
     ( "host" => "10.0.0.11", "port" => 8004, "check-local" => "disable" ),
     ( "host" => "10.0.0.12", "port" => 8004, "check-local" => "disable" ),
     ( "host" => "10.0.0.10", "port" => 8005, "check-local" => "disable" ),
     ( "host" => "10.0.0.11", "port" => 8005, "check-local" => "disable" ),
-    ( "host" => "10.0.0.12", "port" => 8005, "check-local" => "disable" )
+    ( "host" => "10.0.0.12", "port" => 8005, "check-local" => "disable" ),
+    ( "host" => "10.0.0.10", "port" => 8006, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8006, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8006, "check-local" => "disable" ),
+    ( "host" => "10.0.0.10", "port" => 8007, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8007, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8007, "check-local" => "disable" ),
+    ( "host" => "10.0.0.10", "port" => 8008, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8008, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8008, "check-local" => "disable" ),
+    ( "host" => "10.0.0.10", "port" => 8009, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8009, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8009, "check-local" => "disable" ),
+    ( "host" => "10.0.0.10", "port" => 8010, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8010, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8010, "check-local" => "disable" ),
+  ),
+  ".tah" => (
+    ( "host" => "10.0.0.10", "port" => 8011, "check-local" => "disable" ),
+    ( "host" => "10.0.0.11", "port" => 8011, "check-local" => "disable" ),
+    ( "host" => "10.0.0.12", "port" => 8011, "check-local" => "disable" )
   )
 )
index 000a70be92ba3d9feceb3d3237026bbf86689a47..9cb4bd40c8a2be3ca2d8b4710a71566b66367ded 100644 (file)
@@ -77,7 +77,7 @@ be:
   browse:
     changeset:
       title: "Набор зменаў"
-      changeset: "Набор зменаў:"
+      changeset: "Набор зменаў: {{id}}"
       download: "Сцягнуць {{changeset_xml_link}} ці {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -289,9 +286,15 @@ be:
       add_marker: "Дадаць маркер на карту"
       view_larger_map: "Прагледзець большую карту"
   geocoder:
+    search:
+      title:
+        latlon: 'Рэзультаты з <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Рэзультаты з <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Рэзультаты з <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Рэзультаты з <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Рэзультаты з <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Рэзультаты з <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Рэзультаты"
-      type_from_source: "{{type}} з {{source_link}}"
       no_results: "Нічога не знойдзена"
   layouts:
     welcome_user: "Вітаем, {{user_link}}"
@@ -435,7 +438,6 @@ be:
       search: Пошук
       where_am_i: "Дзе я?"
       submit_text: "=>"
-      searching: "Пошук..."
       search_help: "напрыклад: 'Мінск', 'Regent Street, Cambridge', 'CB2 5AQ', ці 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>больш прыкладаў...</a>"
     key:
       map_key: "Ключ карты"
index 084a869cff50a2d7ce71956bfe993a9c8aaad642..0387eba4ecda372305da34126621d34d78a72e4a 100644 (file)
@@ -76,7 +76,7 @@ ca:
   browse:
     changeset:
       title: "Conjunt de canvis"
-      changeset: "Conjunt de canvis"
+      changeset: "Conjunt de canvis {{id}}"
       download: "Baixa {{changeset_xml_link}} o {{osmchange_xml_link}}"
       changesetxml: "XML del conjunt de canvis"
       osmchangexml: "XML en format osmChange"
@@ -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 0374fc84bc31a6459371d01576e0f0671a981a80..2a2b167f87bec6d5f76473661e8207cf0febe652 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
@@ -79,7 +83,7 @@ de:
   browse:
     changeset:
       title: "Changeset" 
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "{{changeset_xml_link}} oder {{osmchange_xml_link}} herunterladen"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -324,9 +338,15 @@ de:
       add_marker: "Markierung zur Karte hinzufügen"
       view_larger_map: "Größere Karte anzeigen"
   geocoder:
+    search:
+      title:
+        latlon: 'Suchergebnisse von <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Suchergebnisse von <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Suchergebnisse von <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Suchergebnisse von <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Suchergebnisse von <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Suchergebnisse von <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Suchergebnisse"
-      type_from_source: "{{type}} von {{source_link}}"
       no_results: "Keine Ergebnisse"
   layouts:
     project_name:
@@ -375,7 +395,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 +561,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"
@@ -563,7 +584,6 @@ de:
       search: Suchen
       where_am_i: "Wo bin ich?"
       submit_text: "Go"
-      searching: "Suche..."
       search_help: "Beispiele: 'München', 'Heinestraße, Würzburg', 'CB2 5AQ', oder 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>mehr Beispiele...</a>"
     key:
       map_key: "Legende"
@@ -584,10 +604,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 +623,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 +644,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 +705,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"
@@ -799,7 +833,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..eae9845c5b8583e42b24c2b2bdfcff9d5ecf05f2 100644 (file)
@@ -79,7 +79,7 @@ el:
  browse:
    changeset:
      title: "Αλλαγή συλλογης"
-     changeset: "Αλλαγή συλλογης:"
+     changeset: "Αλλαγή συλλογης: {{id}}"
 #     download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
      changesetxml: "Αλλαγή συλλογης XML"
      osmchangexml: "osmαλλαγή XML"
@@ -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 46accb8bdd0deb884ab502cfc82fd375f5337246..95fd929d09c4c58f2657168bb43bf7384066cb63 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
@@ -79,10 +83,18 @@ en:
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
+    changeset_navigation:
+      user:
+        name_tooltip: "View edits by {{user}}"
+        prev_tooltip: "Previous edit by {{user}}"
+        next_tooltip: "Next edit by {{user}}"
+      all:
+        prev_tooltip: "Previous changeset"
+        next_tooltip: "Next changeset"
     changeset_details:
       created_at: "Created at:"
       closed_at: "Closed at:"
@@ -91,26 +103,37 @@ en:
       no_bounding_box: "No bounding box has been stored for this changeset."
       show_area_box: "Show Area Box"
       box: "box"
-      has_nodes: "Has the following {{count}} nodes:"
-      has_ways: "Has the following {{count}} ways:"
-      has_relations: "Has the following {{count}} relations:"
+      has_nodes:
+        one: "Has the following {{count}} node:"
+        other: "Has the following {{count}} nodes:"
+      has_ways:
+        one:  "Has the following {{count}} way:"
+        other: "Has the following {{count}} ways:"
+      has_relations:
+        one:  "Has the following {{count}} relation:"
+        other: "Has the following {{count}} relations:"
     common_details: 
       edited_at: "Edited at:"
       edited_by: "Edited by:"
       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"
@@ -136,8 +159,16 @@ en:
     relation_history:
       relation_history: "Relation History"
       relation_history_title: "Relation History: {{relation_name}}"
+      download: "{{download_xml_link}} or {{view_details_link}}"
+      download_xml: "Download XML"
+      view_details: "view details"
     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}}"
@@ -222,27 +253,12 @@ en:
       user: "User"
       comment: "Comment"
       area: "Area"
-    list_bbox:
-      history: "History"
-      changesets_within_the_area: "Changesets within the area:"
-      show_area_box: "show area box"
-      no_changesets: "No changesets"
-      all_changes_everywhere: "For all changes everywhere see {{recent_changes_link}}"
-      recent_changes: "Recent Changes"
-      no_area_specified: "No area specified"
-      first_use_view: "First use the {{view_tab_link}} to pan and zoom to an area of interest, then click the history tab."
-      view_the_map: "view the map"
-      view_tab: "view tab"
-      alternatively_view: "Alternatively, view all {{recent_changes_link}}"
     list:
-      recent_changes: "Recent Changes"
-      recently_edited_changesets: "Recently edited changesets:"
-      for_more_changesets: "For more changesets, select a user and view their edits, or see the editing 'history' of a specific area."
-    list_user:
-      edits_by_username: "Edits by {{username_link}}"
-      no_visible_edits_by: "No visible edits by {{name}}."
-      for_all_changes: "For changes by all users see {{recent_changes_link}}"
-      recent_changes: "Recent Changes"
+      title: "Changesets"
+      description: "Recent edits"
+      description_user: "Recent edits by {{user}}"
+      description_bbox: "Recent edits within {{bbox}}"
+      description_user_bbox: "Recent edits by {{user}} within {{bbox}}"
   diary_entry:
     new:
       title: New Diary Entry
@@ -324,10 +340,44 @@ en:
       add_marker: "Add a marker to the map"
       view_larger_map: "View Larger Map"
   geocoder:
+    search:
+      title:
+        latlon: 'Results from <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Results from <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Results from <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Results from <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Results from <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Results from <a href="http://www.geonames.org/">GeoNames</a>'
+    search_osm_namefinder:
+      prefix: "{{type}} "
+      suffix_place: ", {{distance}} {{direction}} of {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} of {{parentname}})"
+      suffix_suburb: "{{suffix}}, {{parentname}}"
+    description:
+      title:
+        osm_namefinder: '{{types}} from <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Location from <a href="http://www.geonames.org/">GeoNames</a>'
+      types:
+        cities: Cities
+        towns: Towns
+        places: Places
+    description_osm_namefinder:
+      prefix: "{{distance}} {{direction}} of {{type}} "
     results:
-      results: "Results"
-      type_from_source: "{{type}} from {{source_link}}"
       no_results: "No results found"
+    distance:
+      zero: "less than 1km"
+      one: "about 1km"
+      other: "about {{count}}km"
+    direction:
+      south_west: "south-west"
+      south: "south"
+      south_east: "south-east"
+      east: "east"
+      north_east: "north-east"
+      north: "north"
+      north_west: "north-west"
+      west: "west"
   layouts:
     project_name:
       # in <title>
@@ -541,6 +591,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"
@@ -555,7 +606,7 @@ en:
       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.)"
+      potlatch_unsaved_changes: "You have unsaved changes. (To save in Potlatch, you should deselect the current way or point, if editing in live mode, or click save if you have a save button.)"
     sidebar:
       search_results: Search Results
       close: Close
@@ -563,7 +614,6 @@ en:
       search: Search
       where_am_i: "Where am I?"
       submit_text: "Go"
-      searching: "Searching..."
       search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
     key:
       map_key: "Map key"
@@ -584,10 +634,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"
@@ -595,12 +653,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"
@@ -612,7 +674,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"
@@ -636,6 +700,7 @@ en:
       owner: "Owner:"
       description: "Description:"
       tags: "Tags:"
+      tags_help: "comma delimited"
       save_button: "Save Changes"
     no_such_user:
       title: "No such user"
@@ -645,6 +710,7 @@ en:
       upload_gpx: "Upload GPX File"
       description: "Description"
       tags: "Tags"
+      tags_help: "comma delimited"
       public: "Public?"
       public_help: "what does this mean?"
       public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
@@ -671,7 +737,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"
@@ -786,6 +852,7 @@ en:
       your friends: Your friends
       no friends: You have not added any friends yet.
       km away: "{{count}}km away"
+      m away: "{{count}}m away"
       nearby users: "Nearby users: "
       no nearby users: "There are no users who admit to mapping nearby yet."
       change your settings: change your settings
@@ -799,7 +866,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..6363f58b902607ca5c118e1c6d2eeacac60b2f3e 100644 (file)
@@ -75,7 +75,7 @@ es:
   browse:
     changeset:
       title: "Conjunto de cambios"
-      changeset: "Conjunto de cambios"
+      changeset: "Conjunto de cambios {{id}}"
       download: "Descargar {{changeset_xml_link}} o {{osmchange_xml_link}}"
       changesetxml: "XML del conjunto de cambios"
       osmchangexml: "XML en formato osmChange"
@@ -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}}:"
@@ -312,9 +309,15 @@ es:
       add_marker: "Añadir un marcador al mapa"
       view_larger_map: "Ver mapa más grande"
   geocoder:
+    search:
+      title:
+        latlon: 'Resultados en <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Resultados en <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Resultados en <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Resultados en <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Resultados en <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Resultados en <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Resultados"
-      type_from_source: "{{type}} en {{source_link}}"
       no_results: "No se han encontrado resultados"
   layouts:
     project_name:
@@ -517,7 +520,6 @@ es:
       search: "Buscar"
       where_am_i: "¿Dónde estoy?"
       submit_text: "Ir"
-      searching: "Buscando..."
   trace:
     edit:
       points: "Puntos:"
index 4ad6cf3a5be554ac17c4e03d8597e0d056de06d7..f56ea29a07a736dfd5bad1a824962fcc98ba8452 100644 (file)
@@ -5,7 +5,7 @@ fr:
     coordinates: "Coordonnées"
   browse:
     changeset:
-      changeset: "Changeset :"
+      changeset: "Changeset : {{id}}"
       download: "Télécharger {{changeset_xml_link}} ou {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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:
@@ -164,7 +163,6 @@ fr:
       search: "Recherche"
       where_am_i: "Où suis-je ?"
       submit_text: "Envoyer"
-      searching: "En cours de recherche..."
       search_help: "exemples : 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', ou 'bureaux de poste près de Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>Autres d'exemples...</a>"
     key:
       map_key: "Légende de la carte"
index 94c49602914bed30028d5176e6c160ec698a0fee..b5001ade31cfc180f73ca2a35d324839bd132b69 100644 (file)
@@ -77,7 +77,7 @@ he:
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -291,8 +288,6 @@ he:
       view_larger_map: "View Larger Map"
   geocoder:
     results:
-      results: "Results"
-      type_from_source: "{{type}} from {{source_link}}"
       no_results: "No results found"
   layouts:
     welcome_user: "{{user_link}}ברוך הבא"
@@ -438,7 +433,6 @@ he:
       search: Search
       where_am_i: "Where am I?"
       submit_text: "Go"
-      searching: "Searching..."
       search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
     key:
       map_key: "Map key"
index ee2c5ef2835e7a94b3aaef6262aa6246f1d2cdcf..5f1cb67872cad1801df6d2c9802c8ba40c6ec5f7 100644 (file)
@@ -77,7 +77,7 @@ hi:
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -318,8 +315,6 @@ hi:
       view_larger_map: "View Larger Map"
   geocoder:
     results:
-      results: "Results"
-      type_from_source: "{{type}} from {{source_link}}"
       no_results: "No results found"
   layouts:
     welcome_user: "Welcome, {{user_link}}"
@@ -502,7 +497,6 @@ hi:
       search: Search
       where_am_i: "Where am I?"
       submit_text: "Go"
-      searching: "Searching..."
       search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
     key:
       map_key: "Map key"
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
new file mode 100644 (file)
index 0000000..46be1f2
--- /dev/null
@@ -0,0 +1,893 @@
+hu:
+  html:
+    dir: ltr
+  activerecord:
+    # Translates all the model names, which is used in error handling on the web site
+    models:
+      acl: "Hozzáférés-vezérlési lista"
+      changeset: "Módosításcsomag"
+      changeset_tag: "Módosításcsomag címkéje"
+      country: "Ország"
+      diary_comment: "Naplóhozzászólás"
+      diary_entry: "Naplóbejegyzés"
+      friend: "Barát"
+      language: "Nyelv"
+      message: "Üzenet"
+      node: "Pont"
+      node_tag: "Pont címkéje"
+      notifier: "Értesítő"
+      old_node: "Régi pont"
+      old_node_tag: "Régi pont címkéje"
+      old_relation: "Régi kapcsolat"
+      old_relation_member: "Régi kapcsolat tagja"
+      old_relation_tag: "Régi kapcsolat címkéje"
+      old_way: "Régi vonal"
+      old_way_node: "Régi vonal pontja"
+      old_way_tag: "Régi vonal címkéje"
+      relation: "Kapcsolat"
+      relation_member: "Kapcsolat tagja"
+      relation_tag: "Kapcsolat címkéje"
+      session: "Folyamat"
+      trace: "Nyomvonal"
+      tracepoint: "Nyomvonal pontja"
+      tracetag: "Nyomvonal címkéje"
+      user: "Felhasználó"
+      user_preference: "Felhasználói beállítás"
+      user_token: "Felhasználói utalvány"
+      way: "Vonal"
+      way_node: "Vonal pontja"
+      way_tag: "Vonal címkéje"
+    # 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: "Szöveg"
+      diary_entry:
+        user: "Felhasználó"
+        title: "Tárgy"
+        latitude: "Földrajzi szélesség"
+        longitude: "Földrajzi hosszúság"
+        language: "Nyelv"
+      friend:
+        user: "Felhasználó"
+        friend: "Barát"
+      trace:
+        user: "Felhasználó"
+        visible: "Látható"
+        name: "Név"
+        size: "Méret"
+        latitude: "Földrajzi szélesség"
+        longitude: "Földrajzi hosszúság"
+        public: "Nyilvános"
+        description: "Leírás"
+      message:
+        sender: "Küldő"
+        title: "Tárgy"
+        body: "Szöveg"
+        recipient: "Címzett"
+      user:
+        email: "E-mail"
+        active: "Aktív"
+        display_name: "Megjelenítendő név"
+        description: "Leírás"
+        languages: "Nyelvek"
+        pass_crypt: "Jelszó"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, v{{version}}"
+    with_name: "{{name}} ({{id}})"
+  map:
+    view: Térkép
+    edit: Szerkesztés
+    coordinates: "Koordináták:"
+  browse:
+    changeset:
+      title: "Módosításcsomag"
+      changeset: "Módosításcsomag:"
+      download: "{{changeset_xml_link}} vagy {{osmchange_xml_link}} letöltése"
+      changesetxml: "Changeset XML"
+      osmchangexml: "osmChange XML"
+    changeset_details:
+      created_at: "Készült:"
+      closed_at: "Lezárva:"
+      belongs_to: "Tulajdonos:"
+      bounding_box: "Határolónégyzet:"
+      no_bounding_box: "Nincs eltárolva határoló ehhez a módosításcsomaghoz."
+      show_area_box: "Területhatároló megtekintése"
+      box: "határoló"
+      has_nodes: "A következő {{count}} pontot tartalmazza:"
+      has_ways: "A következő {{count}} vonalat tartalmazza:"
+      has_relations: "A következő {{count}} kapcsolatot tartalmazza:"
+    common_details: 
+      edited_at: "Szerkesztve:"
+      edited_by: "Szerkesztette:"
+      version: "Verzió:"
+      in_changeset: "Módosításcsomag:"
+    containing_relation:
+      entry: "Kapcsolat: {{relation_name}}"
+      entry_role: "Kapcsolat: {{relation_name}} (mint {{relation_role}})"
+    map:
+      loading: "Betöltés..."
+      deleted: "Törölve"
+      larger:
+        area: "Terület megtekintése nagyobb térképen"
+        node: "Pont megtekintése nagyobb térképen"
+        way: "Vonal megtekintése nagyobb térképen"
+        relation: "Kapcsolat megtekintése nagyobb térképen"
+    node_details:
+      coordinates: "Koordináták: "
+      part_of: "Része:"
+    node_history:
+      node_history: "Pont története"
+      node_history_title: "Pont története: {{node_name}}"
+      download: "{{download_xml_link}} vagy {{view_details_link}}"
+      download_xml: "XML letöltése"
+      view_details: "részletek megtekintése"
+    node:
+      node: "Pont"
+      node_title: "Pont: {{node_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}} vagy {{edit_link}}"
+      download_xml: "XML letöltése"
+      view_history: "történet megtekintése"
+      edit: "szerkesztés"
+    not_found:
+      sorry: "Sajnálom, a(z) {{id}} azonosítójú {{type}} nem található."
+      type:
+        node: pont
+        way: vonal
+        relation: kapcsolat
+    paging_nav:
+      showing_page: "Jelenlegi oldal:"
+      of: "összesen:"
+    relation_details:
+      members: "Tagok:"
+      part_of: "Része:"
+    relation_history:
+      relation_history: "Kapcsolat története"
+      relation_history_title: "Kapcsolat története: {{relation_name}}"
+      download: "{{download_xml_link}} vagy {{view_details_link}}"
+      download_xml: "XML letöltése"
+      view_details: "részletek megtekintése"
+    relation_member:
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} mint {{role}}"
+      type:
+        node: "Pont:"
+        way: "Vonal:"
+        relation: "Kapcsolat:"
+    relation:
+      relation: "Kapcsolat"
+      relation_title: "Kapcsolat: {{relation_name}}"
+      download: "{{download_xml_link}} vagy {{view_history_link}}"
+      download_xml: "XML letöltése"
+      view_history: "történet megtekintése"
+    start:
+      view_data: "Adatok megtekintése a térkép jelenlegi nézetéhez"
+      manually_select: "Más terület kézi kijelölése"
+    start_rjs:
+      data_layer_name: "Adatok"
+      data_frame_title: "Adatok"
+      zoom_or_select: "Közelíts rá vagy jelölj ki egy területet a térképen a megtekintéshez"
+      drag_a_box: "Terület kijelöléséhez rajzolj egy négyzetet a térképen"
+      manually_select: "Más terület kézi kijelölése"
+      loaded_an_area_with_num_features: "Olyan területet töltöttél be, amely [[num_features]] elemet tartalmaz. Néhány böngésző lehet, hogy nem birkózik meg ekkora mennyiségű adattal. Általában a böngészők egyszerre kevesebb mint 100 elem megjelenítésével működnek a legjobban: minden más esetben a böngésző lelassulhat/nem válaszolhat. Ha biztos vagy benne, hogy meg szeretnéd jeleníteni ezeket az adatokat, megteheted ezt az alábbi gombra kattintva."
+      load_data: "Adatok betöltése"
+      unable_to_load_size: "Nem tölthető be: a határolónégyzet mérete ([[bbox_size]]) túl nagy. ({{max_bbox_size}}-nél kisebbnek kell lennie.)"
+      loading: "Betöltés..."
+      show_history: "Történet megjelenítése"
+      wait: "Várjon..."
+      history_for_feature: "[[feature]] története"
+      details: "Részletek"
+      private_user: "ismeretlen felhasználó"
+      edited_by_user_at_timestamp: "[[user]] szerkesztette ekkor: [[timestamp]]"
+      object_list:
+        heading: "Objektumlista"
+        back: "Objektumlista megjelenítése"
+        type:
+          node: "Pont"
+          way: "Vonal"
+          # There's no 'relation' type because it isn't represented in OpenLayers
+        api: "Ezen terület letöltése API-ból"
+        details: "Részletek"
+        selected:
+          type:
+            node: "Pont [[id]]"
+            way: "Vonal [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+        history:
+          type:
+            node: "Pont [[id]]"
+            way: "Vonal [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+    tag_details:
+      tags: "Címkék:"
+    way_details:
+      nodes: "Pontok:"
+      part_of: "Része:"
+      also_part_of:
+        one: "szintén része a(z) {{related_ways}} vonalnak"
+        other: "szintén része a(z) {{related_ways}} vonalaknak"
+    way_history:
+      way_history: "Vonal története"
+      way_history_title: "Vonal története: {{way_name}}"
+      download: "{{download_xml_link}} vagy {{view_details_link}}"
+      download_xml: "XML letöltése"
+      view_details: "részletek megtekintése"
+    way:
+      way: "Vonal"
+      way_title: "Vonal: {{way_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}} vagy {{edit_link}}"
+      download_xml: "XML letöltése"
+      view_history: "történet megtekintése"
+      edit: "szerkesztés"
+  changeset:
+    changeset_paging_nav: 
+      showing_page: "Jelenlegi oldal:"
+      of: "összesen:"
+    changeset:
+      still_editing: "(szerkesztés alatt)"
+      anonymous: "Névtelen"
+      no_comment: "(nincs)"
+      no_edits: "(nincs szerkesztés)"
+      show_area_box: "területhatároló megjelenítése"
+      big_area: "(nagy)"
+      view_changeset_details: "Módosításcsomag részleteinek megtekintése"
+      more: "tovább"
+    changesets:
+      id: "Azonosító"
+      saved_at: "Mentve"
+      user: "Felhasználó"
+      comment: "Megjegyzés"
+      area: "Terület"
+    list_bbox:
+      history: "Történet"
+      changesets_within_the_area: "Módosításcsomagok ezen a területen:"
+      show_area_box: "területhatároló megjelenítése"
+      no_changesets: "Nincsenek változtatáscsomagok"
+      all_changes_everywhere: "Az összes módosításhoz lásd a {{recent_changes_link}}at"
+      recent_changes: "Legutóbbi módosítások"
+      no_area_specified: "Nincs terület meghatározva"
+      first_use_view: "Először használd a {{view_tab_link}}t a kívánt területre való mozgatáshoz és nagyításhoz, majd kattints a történet fülre."
+      view_the_map: "a térkép megjelenítése"
+      view_tab: "térkép fül"
+      alternatively_view: "Vagy tekintsd meg az összeset: {{recent_changes_link}}"
+    list:
+      recent_changes: "Legutóbbi módosítások"
+      recently_edited_changesets: "Legutóbb szerkesztett módosításcsomagok:"
+      for_more_changesets: "További módosításcsomagokhoz válassz egy felhasználót, és tekintsd meg szerkesztéseit, vagy nézz meg egy meghatározott terület szerkesztési történetét."
+    list_user:
+      edits_by_username: "{{username_link}} szerkesztései"
+      no_visible_edits_by: "{{name}} felhasználónak nincsenek látható szerkesztései"
+      for_all_changes: "Az összes felhasználó módosításaihoz lásd a {{recent_changes_link}}at"
+      recent_changes: "Legutóbbi módosítások"
+  diary_entry:
+    new:
+      title: Új naplóbejegyzés
+    list:
+      title: "Felhasználók naplói"
+      user_title: "{{user}} naplója"
+      in_language_title: "Naplóbejegyzések {{language}} nyelven"
+      new: Új naplóbejegyzés
+      new_title: Új naplóbejegyzés írása a felhasználói naplóba
+      no_entries: Nincsenek naplóbejegyzések
+      recent_entries: "Legutóbbi naplóbejegyzések: "
+      older_entries: Régebbi bejegyzések
+      newer_entries: Újabb bejegyzések
+    edit:
+      title: "Naplóbejegyzés szerkesztése"
+      subject: "Tárgy: "
+      body: "Szöveg: "
+      language: "Nyelv: "
+      location: "Hely: "
+      latitude: "Földrajzi szélesség: "
+      longitude: "Földrajzi hosszúság: "
+      use_map_link: "térkép használata"
+      save_button: "Mentés"
+      marker_text: Naplóbejegyzés helye
+    view:
+      title: "Felhasználók naplói | {{user}}"
+      user_title: "{{user}} naplója"
+      leave_a_comment: "Hozzászólás írása"
+      login_to_leave_a_comment: "{{login_link}} a hozzászóláshoz"
+      login: "Jelentkezz be"
+      save_button: "Mentés"
+    no_such_entry:
+      title: "Nincs ilyen naplóbejegyzés"
+      heading: "Nincs naplóbejegyzés ezzel az azonosítóval: {{id}}"
+      body: "Sajnálom, de nincs naplóbejegyzés vagy hozzászólás {{id}} azonosítóval. Ellenőrizd a helyességét, vagy lehet, hogy a link, amire kattintottál, rossz."
+    no_such_user:
+      title: "Nincs ilyen felhasználó"
+      heading: "{{user}} felhasználó nem létezik"
+      body: "Sajnálom, nincs {{user}} nevű felhasználó. Ellenőrizd a helyességét, vagy lehet, hogy a link, amire kattintottál, rossz."
+    diary_entry:
+      posted_by: "{{link_user}} küldte ekkor: {{created}} {{language_link}} nyelven"
+      comment_link: Hozzászólás ehhez a bejegyzéshez
+      reply_link: Válasz ezen bejegyzésre
+      comment_count:
+        one: 1 hozzászólás
+        other: "{{count}} hozzászólás"
+      edit_link: Ezen bejegyzés szerkesztése
+    diary_comment:
+      comment_from: "{{link_user}} hozzászólása ekkor: {{comment_created_at}}"
+  export:
+    start:
+      area_to_export: "Exportálandó terület"
+      manually_select: "Más terület kézi kijelölése"
+      format_to_export: "Exportálás formátuma"
+      osm_xml_data: "OpenStreetMap XML adat"
+      mapnik_image: "Mapnik kép"
+      osmarender_image: "Osmarender kép"
+      embeddable_html: "Beágyazható HTML"
+      licence: "Licenc"
+      export_details: 'Az OpenStreetMap adatokra a <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.hu">Creative Commons Nevezd meg!-Így add tovább! 2.0 licenc</a> vonatkozik.'
+      options: "Beállítások"
+      format: "Formátum"
+      scale: "Méretarány"
+      max: "max."
+      image_size: "Képméret"
+      zoom: "Nagyítási szint"
+      add_marker: "Jelölő hozzáadása a térképhez"
+      latitude: "Földrajzi szélesség:"
+      longitude: "Földrajzi hosszúság:"
+      output: "Kimenet"
+      paste_html: "Webhelyekbe való beágyazáshoz illeszd be a HTML kódot"
+      export_button: "Exportálás"
+    start_rjs:
+      export: "Exportálás"
+      drag_a_box: "Terület kijelöléséhez rajzolj egy négyzetet a térképen"
+      manually_select: "Más terület kézi kijelölése"
+      click_add_marker: "Jelölő hozzáadásához kattints a térképre"
+      change_marker: "Jelölő helyének módosítása"
+      add_marker: "Jelölő hozzáadása a térképhez"
+      view_larger_map: "Nagyobb térkép megtekintése"
+  geocoder:
+    search:
+      title:
+        latlon: 'Eredmények az <a href="http://openstreetmap.org/">Internal</a>ról'
+        us_postcode: 'Eredmények a <a href="http://geocoder.us/">Geocoder.us</a>-ról'
+        uk_postcode: 'Eredmények a <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>-ról'
+        ca_postcode: 'Eredmények a <a href="http://geocoder.ca/">Geocoder.CA</a>-ről'
+        osm_namefinder: 'Eredmények az <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>ről'
+        geonames: 'Eredmények a <a href="http://www.geonames.org/">GeoNames</a>ről'
+    search_osm_namefinder:
+      prefix: "{{type}}: "
+      suffix_place: " {{distance}}-re {{direction}} innen: {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}}-re {{parentdirection}} innen: {{parentname}})"
+      suffix_suburb: "{{suffix}} ({{parentname}})"
+    description:
+      title:
+        osm_namefinder: '{{types}} az <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>ről'
+        geonames: 'Helyek a <a href="http://www.geonames.org/">GeoNames</a>ről'
+      types:
+        cities: Nagyvárosok
+        towns: Városok
+        places: Helyek
+    description_osm_namefinder:
+      prefix: "{{type}}: {{distance}}-re {{direction}} "
+    results:
+      no_results: "Nem találhatók eredmények"
+    distance:
+      zero: "kevesebb mint 1 km"
+      one: "kb. 1 km"
+      other: "kb. {{count}} km"
+    direction:
+      south_west: "délnyugatra"
+      south: "délre"
+      south_east: "délkeletre"
+      east: "keletre"
+      north_east: "északkeletre"
+      north: "északra"
+      north_west: "északnyugatra"
+      west: "nyugatra"
+  layouts:
+    project_name:
+      # in <title>
+      title: OpenStreetMap
+      # in <h1>
+      h1: OpenStreetMap
+    logo:
+      alt_text: OpenStreetMap logó
+    welcome_user: "Üdvözlünk {{user_link}}"
+    welcome_user_link_tooltip: Felhasználói oldalad
+    home: otthon
+    home_tooltip: Ugrás otthonra
+    inbox: "postaláda ({{count}})"
+    inbox_tooltip:
+      zero: A postaláda nem tartalmaz olvasatlan üzenetet
+      one: A postaláda 1 olvasatlan üzenetet tartalmaz
+      other: A postaláda {{count}} olvasatlan üzenetet tartalmaz
+    logout: kijelentkezés
+    logout_tooltip: "Kijelentkezés"
+    log_in: bejelentkezés
+    log_in_tooltip: Bejelentkezés egy meglévő felhasználói fiókkal
+    sign_up: regisztráció
+    sign_up_tooltip: Új felhasználói fiók létrehozása szerkesztéshez
+    view: Térkép
+    view_tooltip: Térkép megjelenítése
+    edit: Szerkesztés
+    edit_tooltip: Térkép szerkesztése
+    history: Történet
+    history_tooltip: Módosításcsomagok története
+    export: Exportálás
+    export_tooltip: Térképadatok exportálása
+    gps_traces: Nyomvonalak
+    gps_traces_tooltip: GPS nyomvonalak kezelése
+    user_diaries: Naplók
+    user_diaries_tooltip: Felhasználói naplók megtekintése
+    tag_line: A szabad világtérkép
+    intro_1: "Az OpenStreetMap egy szabadon szerkeszthető térkép az egész világról. Olyan emberek készítik, mint Te."
+    intro_2: "Az OpenStreetMap lehetővé teszi neked, hogy szabadon megtekintsd, szerkeszd és használd a földrajzi adatokat, bárhol is vagy a Földön."
+    intro_3: "Az OpenStreetMap hostingját a {{ucl}} és a {{bytemark}} támogatja."
+    intro_3_ucl: "UCL VR Centre"
+    intro_3_bytemark: "Bytemark"
+    osm_offline: "Az OpenStreetMap-adatbázis jelenleg offline, miközben alapvető adatbázis-karbantartási munkát végzeznek."
+    osm_read_only: "Az OpenStreetMap-adatbázis jelenleg csak olvasható, miközben alapvető adatbázis-karbantartási munkát végzeznek."
+    donate: "Támogasd az OpenStreetMapot a Hardverfrissítési Alapba történő {{link}}sal."
+    donate_link_text: adományozás
+    help_wiki: "Segítség és wiki"
+    help_wiki_tooltip: "Segítség és wikioldal a projekthez"
+    help_wiki_url: "http://wiki.openstreetmap.org/wiki/Hu:Main_Page"
+    news_blog: "Hírblog"
+    news_blog_tooltip: "Hírblog az OpenStreetMapról, szabad földrajzi adatokról stb."
+    shop: Bolt
+    shop_tooltip: Bolt márkás OpenStreetMap árukkal
+    shop_url: http://wiki.openstreetmap.org/wiki/Merchandise
+    sotm: 'Gyere a 2009-es OpenStreetMap-konferenciára, a The State of the Mapra július 10-12. Amszterdamba!'
+    alt_donation: Adományozz
+  notifier:
+    diary_comment_notification:
+      subject: "[OpenStreetMap] {{user}} hozzászólt a naplóbejegyzésedhez"
+      banner1: "*                 Kerlek, ne válaszolj erre az e-mailre.                  *"
+      banner2: "*           Válaszoláshoz használd az OpenStreetMap webhelyet.            *"
+      hi: "Szia {{to_user}}!"
+      header: "{{from_user}} hozzászólt a legutóbbi OpenStreetMap naplóbejegyzésedhez {{subject}} tárggyal:"
+      footer: "A hozzászólást elolvashatod itt is: {{readurl}} és hozzászólhatsz itt: {{commenturl}} vagy válaszolhatsz rá itt: {{replyurl}}"
+    message_notification:
+      subject: "[OpenStreetMap] {{user}} küldött neked egy új üzenetet"
+      banner1: "*                 Kerlek, ne válaszolj erre az e-mailre.                  *"
+      banner2: "*           Válaszoláshoz használd az OpenStreetMap webhelyet.            *"
+      hi: "Szia {{to_user}}!"
+      header: "{{from_user}} küldött neked egy üzenetet az OpenStreetMapon keresztül {{subject}} tárggyal:"
+      footer1: "Az üzenetet elolvashatod itt is: {{readurl}}"
+      footer2: "és válaszolhatsz rá itt: {{replyurl}}"
+    friend_notification:
+      subject: "[OpenStreetMap] {{user}} felvett a barátai közé"
+      had_added_you: "{{user}} felvett a barátai közé az OpenStreetMapon."
+      see_their_profile: "Megnézheted a profilját itt: {{userurl}} és felveheted őt is barátnak, ha szeretnéd."
+    gpx_notification:
+      greeting: "Szia!"
+      your_gpx_file: "Úgy tűnik, hogy ez a GPX fájlod:"
+      with_description: "ezzel a leírással:"
+      and_the_tags: "és a következő címkékkel:"
+      and_no_tags: "és címkék nélkül"
+      failure:
+        subject: "[OpenStreetMap] GPX importálás sikertelen"
+        failed_to_import: "importálása sikertelen. Ez a hiba:"
+        more_info_1: "További információ a GPX importálás sikertelenségeiről és"
+        more_info_2: "megelőzéséről itt található:"
+        import_failures_url: "http://wiki.openstreetmap.org/wiki/GPX_Import_Failures"
+      success:
+        subject: "[OpenStreetMap] GPX importálás sikeres"
+        loaded_successfully: |
+          sikeresen betöltődött {{trace_points}} ponttal a lehetséges
+          {{possible_points}} pontból.
+    signup_confirm:
+      subject: "[OpenStreetMap] E-mail cím megerősítése"
+    signup_confirm_plain:
+      greeting: "Szia!"
+      hopefully_you: "Valaki (remélhetőleg Te) készítene egy felhasználói fiókot itt:"
+      # next two translations run-on : please word wrap appropriately
+      click_the_link_1: "Ha ez Te vagy, üdvözlünk! Kattints az alábbi hivatkozásra a felhasználói"
+      click_the_link_2: "fiókod megerősítéséhez és további információk olvasásához az OpenStreetMapról."
+      introductory_video: "Megnézhetsz egy bevezető videót az OpenStreetMaphez itt:"
+      more_videos: "További videókat találsz itt:"
+      the_wiki: "Olvass az OpenStreetMapról a wikiben:"
+      the_wiki_url: "http://wiki.openstreetmap.org/wiki/Hu:Beginners_Guide"
+      opengeodata: "Az OpenGeoData.org az OpenStreetMap blogja, és vannak podcastjai is:"
+      wiki_signup: "Szintén regisztrálhatsz az OpenStreetMap wikibe itt:"
+      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: "Ajánlott, hogy készíts egy wiki oldalt, ami tartalmaz kategóriacímkéket"
+      user_wiki_2: "annak megfelelően, ahol vagy. Például [[Category:Users_in_Budapest]]."
+      current_user_1: "A jelenlegi felhasználók listája kategóriákban, annak megfelelően,"
+      current_user_2: "hogy hol vannak a világban, elérhető innen:"
+    signup_confirm_html:
+      greeting: "Szia!"
+      hopefully_you: "Valaki (remélhetőleg Te) készítene egy felhasználói fiókot itt:"
+      click_the_link: "Ha ez Te vagy, üdvözlünk! Kattints az alábbi hivatkozásra a felhasználói fiókod megerősítéséhez és további információk olvasásához az OpenStreetMapról."
+      introductory_video: "Megnézhetsz egy {{introductory_video_link}}."
+      video_to_openstreetmap: "bevezető videót az OpenStreetMaphoz"
+      more_videos: "{{more_videos_link}}."
+      more_videos_here: "További videók itt"
+      get_reading: 'Olvass az OpenStreetMapról <a href="http://wiki.openstreetmap.org/wiki/Hu:Beginners_Guide">a wikiben</a> vagy <a href="http://www.opengeodata.org/">az opengeodata blogon</a>, aminek vannak <a href="http://www.opengeodata.org/?cat=13">hallgatható podcastjai</a> is!'
+      wiki_signup: 'Szintén <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">regisztrálhatsz az OpenStreetMap wikibe</a>.'
+      user_wiki_page: 'Ajánlott, hogy készíts egy wiki oldalt, ami tartalmaz kategóriacímkéket annak megfelelően, ahol vagy. Például <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Budapest">[[Category:Users_in_Budapest]]</a>.'
+      current_user: 'A jelenlegi felhasználók listája kategóriákban, annak megfelelően, hogy hol vannak a világban, elérhető innen: <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
+    email_confirm:
+      subject: "[OpenStreetMap] E-mail cím megerősítése"
+    email_confirm_plain:
+      greeting: "Szia!"
+      hopefully_you_1: "Valaki (remélhetőleg Te) meg szeretné változtatni az e-mail címét erről:"
+      hopefully_you_2: "{{server_url}} erre: {{new_address}}."
+      click_the_link: "Ha ez Te vagy, akkor a módosítás megerősítéséhez kattints az alábbi hivatkozásra."
+    email_confirm_html:
+      greeting: "Szia!"
+      hopefully_you: "Valaki (remélhetőleg Te) meg szeretné változtatni az e-mail címét erről: {{server_url}} erre: {{new_address}}."
+      click_the_link: "Ha ez Te vagy, akkor a módosítás megerősítéséhez kattints az alábbi hivatkozásra."
+    lost_password:
+      subject: "[OpenStreetMap] Jelszó alaphelyzetbe állításának kérése"
+    lost_password_plain:
+      greeting: "Szia!"
+      hopefully_you_1: "Valaki (esetleg Te) kérte, hogy az ehhez az e-mail címhez tartozó"
+      hopefully_you_2: "openstreetmap.org felhasználói fiók jelszava kerüljön alaphelyzetbe."
+      click_the_link: "Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints az alábbi hivatkozásra."
+    lost_password_html:
+      greeting: "Szia!"
+      hopefully_you: "Valaki (esetleg Te) kérte, hogy az ehhez az e-mail címhez tartozó openstreetmap.org felhasználói fiók jelszava kerüljön alaphelyzetbe."
+      click_the_link: "Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints az alábbi hivatkozásra."
+    reset_password:
+      subject: "[OpenStreetMap] Jelszó alaphelyzetbe állítása"
+    reset_password_plain:
+      greeting: "Szia!"
+      reset: "Jelszavad alaphelyzetbe lett állítva erre: {{new_password}}"
+    reset_password_html:
+      greeting: "Szia!"
+      reset: "Jelszavad alaphelyzetbe lett állítva erre: {{new_password}}"
+  message:
+    inbox:
+      title: "Beérkezett üzenetek"
+      my_inbox: "Beérkezett üzenetek"
+      outbox: "Elküldött üzenetek"
+      you_have: "{{new_count}} új üzeneted és {{old_count}} régi üzeneted van"
+      from: "Feladó"
+      subject: "Tárgy"
+      date: "Érkezett"
+      no_messages_yet: "Nincs még üzeneted. Miért nem veszed fel a kapcsolatot néhány {{people_mapping_nearby_link}}vel?"
+      people_mapping_nearby: "közeli térképszerkesztő" 
+    message_summary:
+      unread_button: "Jelölés olvasatlanként"
+      read_button: "Jelölés olvasottként"
+      reply_button: "Válasz"
+    new:
+      title: "Üzenet küldése"
+      send_message_to: "Új üzenet küldése neki: {{name}}"
+      subject: "Tárgy"
+      body: "Szöveg"
+      send_button: "Küldés"
+      back_to_inbox: "Vissza a beérkezett üzenetekhez"
+      message_sent: "Üzenet elküldve"
+    no_such_user:
+      title: "Nincs ilyen felhasználó vagy üzenet"
+      heading: "Nincs ilyen felhasználó vagy üzenet"
+      body: "Sajnálom, nincs felhasználó vagy üzenet ezzel a névvel vagy azonosítóval"
+    outbox: 
+      title: "Elküldött üzenetek"
+      my_inbox: "{{inbox_link}}"
+      inbox: "Beérkezett üzenetek"
+      outbox: "Elküldött üzenetek"
+      you_have_sent_messages: "{{sent_count}} elküldött üzeneted van"
+      to: "Címzett"
+      subject: "Tárgy"
+      date: "Elküldve"
+      no_sent_messages: "Nincs még elküldött üzeneted. Miért nem veszed fel a kapcsolatot néhány {{people_mapping_nearby_link}}vel?"
+      people_mapping_nearby: "közeli térképszerkesztő"
+    read:
+      title: "Üzenet olvasása"
+      reading_your_messages: "Üzenetek olvasása"
+      from: "Feladó"
+      subject: "Tárgy"
+      date: "Érkezett"
+      reply_button: "Válasz"
+      unread_button: "Jelölés olvasatlanként"
+      back_to_inbox: "Vissza a beérkezett üzenetekhez"
+      reading_your_sent_messages: "Elküldött üzenetek olvasása"
+      to: "Címzett"
+      back_to_outbox: "Vissza az elküldött üzenetekhez"
+    mark:
+      as_read: "Üzenet jelölése olvasottként"
+      as_unread: "Üzenet jelölése olvasatlanként"
+  site:
+    index:
+      js_1: "Vagy egy olyan böngészőt használsz, amely nem támogatja a javascriptet, vagy letiltottad a javascriptet."
+      js_2: "Az OpenStreetMap javascriptet használ a slippy maphoz."
+      js_3: 'Megpróbálhatod a <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home statikus csempeböngésző</a>t, ha nem tudod engedélyezni a javascriptet.'
+      permalink: Permalink
+      shortlink: Shortlink
+      license:
+        notice: "{{license_name}} licenc alatt az {{project_name}} és hozzájárulói által."
+        license_name: "Creative Commons Nevezd meg!-Így add tovább! 2.0"
+        license_url: "http://creativecommons.org/licenses/by-sa/2.0/deed.hu"
+        project_name: "OpenStreetMap projekt"
+        project_url: "http://openstreetmap.org"
+    edit:
+      not_public: "Nem állítottad a szerkesztéseidet nyilvánossá."
+      not_public_description: "Nem szerkesztheted tovább a térképet, amíg nem teszed meg. Nyilvánossá teheted szerkesztéseidet a {{user_page}}adról."
+      user_page_link: felhasználói oldal
+      anon_edits: "({{link}})"
+      anon_edits_link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits"
+      anon_edits_link_text: "Nézz utána, miért van ez."
+      flash_player_required: 'A Potlatch, az OpenStreetMap Flash szerkesztő használatához Flash Player szükséges. <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">Letöltheted a Flash Playert az Adobe.com-ról</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Számos más lehetőség</a> is elérhető az OpenStreetMap szerkesztéséhez.'
+      potlatch_unsaved_changes: "Nem mentett módosítások vannak. (Potlatchban való mentéshez szüntesd meg a jelenlegi vonal vagy pont kijelölését, ha élő módban szerkesztesz, vagy kattints a mentésre, ha van mentés gomb.)"
+    sidebar:
+      search_results: Keresés eredményei
+      close: Bezár
+    search:
+      search: Keresés
+      where_am_i: "Hol vagyok?"
+      submit_text: "Go"
+      search_help: "példák: 'Szeged', 'Piac utca, Debrecen', 'CB2 5AQ' vagy 'post offices near Kaposvár' <a href='http://wiki.openstreetmap.org/wiki/Search'>további példák...</a>"
+    key:
+      map_key: "Jelmagyarázat"
+      map_key_tooltip: "Jelmagyarázat a Mapnik rendereléshez ezen a nagyítási szinten"
+      table:
+        heading: "Jelmagyarázat z{{zoom_level}}"
+        entry:
+          motorway: "Autópálya"
+          trunk: "Autóút"
+          primary: "Főút"
+          secondary: "Összekötő út"
+          unclassified: "Egyéb út"
+          unsurfaced: "Burkolatlan út"
+          track: "Földút"
+          byway: "Ösvény"
+          bridleway: "Lovaglóút"
+          cycleway: "Kerékpárút"
+          footway: "Gyalogút"
+          rail: "Vasút"
+          subway: "Metró"
+          tram:
+            - HÉV
+            - villamos
+          cable:
+            - Fülkés
+            - függőszékes felvonó
+          runway:
+            - Kifutópálya
+            - gurulóút
+          apron:
+            - Forgalmi előtér
+            - utasterminál
+          admin: "Közigazgatási határ"
+          forest: "Erdő"
+          wood: "Erdő"
+          golf: "Golfpálya"
+          park: "Park"
+          resident: "Gyalogos övezet"
+          tourist: "Turisztikai látványosság"
+          common:
+            - Füves terület
+            - rét
+          retail: "Kereskedelmi terület"
+          industrial: "Ipari terület"
+          commercial: "Irodaterület"
+          heathland: "Kopár terület"
+          lake:
+            - Tó
+            - víztározó
+          farm: "Tanya"
+          brownfield: "Bontási terület"
+          cemetery: "Temető"
+          allotments: "Kert"
+          pitch: "Labdarúgópálya"
+          centre: "Sportközpont"
+          reserve: "Természetvédelmi terület"
+          military: "Katonai terület"
+          school: "Iskola; egyetem"
+          building: "Fontosabb épület"
+          station: "Vasútállomás"
+          summit:
+            - Hegycsúcs
+            - magaslat
+          tunnel: "Szaggatott szegély = alagút"
+          bridge: "Fekete szegély = híd"
+          private: "Behajtás csak engedéllyel"
+          permissive: "Behajtás engedélyezett"
+          destination: "Csak célforgalom"
+          construction: "Utak építés alatt"
+  trace:
+    create:
+      upload_trace: "GPS nyomvonal feltöltése"
+      trace_uploaded: "A GPX fájl feltöltése megtörtént, és várakozik az adatbázisba való beillesztésre. Ez általában fél órán belül megtörténik, és fogsz kapni egy e-mailt, amint elkészült."
+    edit:
+      title: "Nyomvonal szerkesztése: {{name}}"
+      heading: "Nyomvonal szerkesztése: {{name}}"
+      filename: "Fájlnév:"
+      download: "letöltés"
+      uploaded_at: "Feltöltve:"
+      points: "Pontok száma:"
+      start_coord: "Kezdőkoordináta:"
+      map: "térkép"
+      edit: "szerkesztés"
+      owner: "Tulajdonos:"
+      description: "Leírás:"
+      tags: "Címkék:"
+      tags_help: "vesszővel elválasztva"
+      save_button: "Módosítások mentése"
+    no_such_user:
+      title: "Nincs ilyen felhasználó"
+      heading: "{{user}} felhasználó nem létezik"
+      body: "Sajnálom, nincs {{user}} nevű felhasználó. Ellenőrizd a helyességét, vagy lehet, hogy a link, amire kattintottál, rossz."
+    trace_form:
+      upload_gpx: "GPX fájl feltöltése"
+      description: "Leírás"
+      tags: "Címkék"
+      tags_help: "használj vesszőket"
+      public: "Nyilvános?"
+      public_help: "mit jelent ez?"
+      public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
+      upload_button: "Feltöltés"
+      help: "Segítség"
+      help_url: "http://wiki.openstreetmap.org/wiki/Upload"
+    trace_header:
+      see_just_your_traces: "Csak a saját nyomvonalak megtekintése, vagy nyomvonal feltöltése"
+      see_all_traces: "Összes nyomvonal megtekintése"
+      see_your_traces: "Összes saját nyomvonal megtekintése"
+      traces_waiting: "{{count}} nyomvonalad várakozik feltöltésre. Kérlek fontold meg, hogy megvárod, amíg ezek befejeződnek mielőtt feltöltesz továbbiakat, hogy így ne tartsd fel a többi felhasználót a sorban."
+    trace_optionals:
+      tags: "Címkék"
+    view:
+      title: "Nyomvonal megtekintése: {{name}}"
+      heading: "Nyomvonal megtekintése: {{name}}"
+      pending: "FÜGGŐBEN"
+      filename: "Fájlnév:"
+      download: "letöltés"
+      uploaded: "Feltöltve:"
+      points: "Pontok száma:"
+      start_coordinates: "Kezdőkoordináta:"
+      map: "térkép"
+      edit: "szerkesztés"
+      owner: "Tulajdonos:"
+      description: "Leírás:"
+      tags: "Címkék:"
+      none: "nincsenek"
+      make_public: "Ezen nyomvonal nyilvánossá tétele véglegesen"
+      edit_track: "Ezen nyomvonal szerkesztése"
+      delete_track: "Ezen nyomvonal törlése"
+      trace_not_found: "Nem található nyomvonal!"
+    trace_paging_nav:
+      showing: "Jelenlegi oldal:"
+      of: "összesen:"
+    trace:
+      pending: "FÜGGŐBEN"
+      count_points: "{{count}} pont"
+      ago: "ennyivel ezelőtt: {{time_in_words_ago}}"
+      more: "tovább"
+      trace_details: "Nyomvonal részleteinek megtekintése"
+      view_map: "Térkép megtekintése"
+      edit: "szerkesztés"
+      edit_map: "Térkép szerkesztése"
+      public: "NYILVÁNOS"
+      private: "NEM NYILVÁNOS"
+      by: "készítette:"
+      in: "itt:"
+      map: "térkép"
+    list:
+      public_traces: "Nyilvános GPS nyomvonalak"
+      your_traces: "Saját GPS nyomvonalak"
+      public_traces_from: "{{user}} nyilvános GPS nyomvonalai"
+      tagged_with: " {{tags}} címkével"
+    delete:
+      scheduled_for_deletion: "A nyomvonal törlésre kijelölve"
+    make_public:
+      made_public: "A nyomvonal nyilvános lett"
+  user:
+    login:
+      title: "Bejelentkezés"
+      heading: "Bejelentkezés"
+      please login: "Jelentkezz be, vagy {{create_user_link}}."
+      create_account: "hozz létre egy új felhasználói fiókot"
+      email or username: "E-mail cím vagy felhasználónév: "
+      password: "Jelszó: "
+      lost password link: "Elfelejtetted a jelszavad?"
+      login_button: "Bejelentkezés"
+      account not active: "Sajnálom, a felhasználói fiókod még nincs aktiválva.<br>Az aktiváláshoz, kattints a fiókodat megerősítő e-mailben lévő hivatkozásra."
+      auth failure: "Sajnálom, ilyen adatokkal nem tudsz bejelentkezni."
+    lost_password:
+      title: "elvesztett jelszó"
+      heading: "Elfelejtetted jelszavad?"
+      email address: "E-mail cím:"
+      new password button: "Küldj nekem egy új jelszót"
+      notice email on way: "Sajnálom, hogy elvesztetted :-( de már úton van egy e-mail, így nemsokára alaphelyzetbe állíthatod."
+      notice email cannot find: "Az e-mail cím nem található, sajnálom."
+    reset_password:
+      title: "jelszó alaphelyzetbe állítása"
+      flash changed check mail: "Jelszavad megváltozott, és úton van a postaládádba :-)"
+      flash token bad: "Nem található ez az utalvány, ellenőrizd az URL-t."
+    new:
+      title: "Felhasználói fiók létrehozása"
+      heading: "Felhasználói fiók létrehozása"
+      no_auto_account_create: "Sajnos jelenleg nem tudunk neked létrehozni automatikusan egy felhasználói fiókot."
+      contact_webmaster: 'Kérlek fordulj a <a href="mailto:webmaster@openstreetmap.org">webmesterhez</a> (angolul), hogy lehetővé tegye felhasználói fiók létrehozását - mi igyekszünk olyan gyorsan foglalkozni a kéréssel, amilyen gyorsan csak lehet. '
+      fill_form: "Töltsd ki az űrlapot, és küldünk neked egy gyors e-mailt felhasználói fiókod aktiválásához."
+      license_agreement: 'Felhasználói fiók létrehozásával vállalod, hogy az összes adatra, amivel hozzájárulsz az Openstreetmap projekthez, (nem kizárólagosan) <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.hu">ez a Creative Commons licenc (by-sa)</a> vonatkozik.'
+      email address: "E-mail cím: "
+      confirm email address: "E-mail cím megerősítése: "
+      not displayed publicly: 'Nem jelenik meg nyilvánosan (lásd <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="a wiki adatvédelmi irányelvei tartalmazzák az e-mail címekről szóló részt">adatvédelmi irányelvek</a>)'
+      display name: "Megjelenítendő név: "
+      password: "Jelszó: "
+      confirm password: "Jelszó megerősítése: "
+      signup: Regisztráció
+      flash create success message: "A felhasználó sikeresen létrehozva. Nézd meg az e-mailjeidet a megerősítő levélhez, és pillanatokon belül szerkesztheted a térképet :-)<br /><br />Felhívom a figyelmed, hogy addig nem tudsz bejelentkezni, amíg nem kaptad meg és nem erősítetted meg az e-mail címedet.<br /><br />Ha olyan antispam rendszert használsz, ami megerősítő kérést küld, akkor bizonyosodj meg róla, hogy engedélyezőlistára tetted a webmaster@openstreetmap.org címet, mivel mi nem tudunk válaszolni megerősítő kérésekre."
+    no_such_user:
+      title: "Nincs ilyen felhasználó"
+      heading: "{{user}} felhasználó nem létezik"
+      body: "Sajnálom, nincs {{user}} nevű felhasználó. Ellenőrizd a helyességét, vagy lehet, hogy a link, amire kattintottál, rossz."
+    view:
+      my diary: naplóm
+      new diary entry: új naplóbejegyzés
+      my edits: szerkesztéseim
+      my traces: saját nyomvonalak
+      my settings: beállításaim
+      send message: üzenet küldése
+      diary: napló
+      edits: szerkesztések
+      traces: nyomvonalak
+      remove as friend: barát eltávolítása
+      add as friend: felvétel barátnak
+      mapper since: "Térképszerkesztő ezóta: "
+      ago: "({{time_in_words_ago}} óta)"
+      user image heading: Felhasználó képe
+      delete image: Kép törlése
+      upload an image: Kép feltöltése
+      add image: Kép hozzáadása
+      description: Leírás
+      user location: Felhasználó helye
+      no home location: "Nincs otthon beállítva."
+      if set location: "Ha beállítod a helyedet, egy szép térkép fog megjelenni alább. Az otthonodat a {{settings_link}}nál állíthatod be."
+      settings_link_text: beállítások
+      your friends: Barátaid
+      no friends: Még nem adtál meg egyetlen barátot sem.
+      km away: "{{count}} km-re innen"
+      m away: "{{count}} m-re innen"
+      nearby users: "Közeli felhasználók: "
+      no nearby users: "Még nincsenek felhasználók, akik megadták, hogy a közelben szerkesztenek."
+      change your settings: beállítások módosítása
+    friend_map:
+      your location: Helyed
+      nearby mapper: "Közeli térképszerkesztők: "
+    account:
+      title: "Felhasználói fiók szerkesztése"
+      my settings: Beállításaim
+      email never displayed publicly: "(soha nem jelenik meg nyilvánosan)"
+      public editing:
+        heading: "Nyilvános szerkesztés: "
+        enabled: "Engedélyezve. Nem vagy névtelen, így szerkesztheted az adatokat."
+        enabled link: "http://wiki.openstreetmap.org/wiki/Anonymous_edits"
+        enabled link text: "mi ez?"
+        disabled: "Tiltva, így nem szerkesztheted az adatokat, az összes eddigi szerkesztés névtelen."
+        disabled link text: "miért nem tudok szerkeszteni?"
+      profile description: "Profil leírása: "
+      preferred languages: "Előnyben részesített nyelvek: "
+      home location: "Otthon: "
+      no home location: "Nem adtad meg az otthonod helyét."
+      latitude: "Földrajzi szélesség: "
+      longitude: "Földrajzi hosszúság: "
+      update home location on click: "Otthon helyének frissítése, amikor a térképre kattintok?"
+      save changes button: Módosítások mentése
+      make edits public button: Szerkesztéseim nyilvánossá tétele
+      return to profile: Vissza a profilhoz
+      flash update success confirm needed: "Felhasználói információk sikeresen frissítve. Nézd meg az e-mailjeidet az új e-mail címedet megerősítő levélhez."
+      flash update success: "Felhasználói információk sikeresen frissítve."
+    confirm:
+      heading: Felhasználói fiók megerősítése
+      press confirm button: "Felhasználói fiókod megerősítéséhez nyomd meg az alábbi megerősítés gombot."
+      button: Megerősítés
+      success: "Felhasználói fiókod megerősítve, köszönjük a regisztrációt!"
+      failure: "Egy felhasználói fiók már megerősítésre került ezzel az utalvánnyal."
+    confirm_email:
+      heading: E-mail cím módosításának megerősítése
+      press confirm button: "Új e-mail címed megerősítéséhez nyomd meg az alábbi megerősítés gombot."
+      button: Megerősítés
+      success: "E-mail címed megerősítve, köszönjük a regisztrációt!"
+      failure: "Egy e-mail cím már megerősítésre került ezzel az utalvánnyal."
+    set_home:
+      flash success: "Otthon helye sikeresen mentve"
+    go_public:
+      flash success: "Mostantól az összes szerkesztésed nyilvános, és engedélyezett a szerkesztés."
+    make_friend:
+      success: "{{name}} mostantól a barátod."
+      failed: "Sajnálom, {{name}} felvétele barátnak sikertelen."
+      already_a_friend: "{{name}} már a barátod."
+    remove_friend:
+      success: "{{name}} eltávolítva a barátaid közül."
+      not_a_friend: "{{name}} nem tartozik a barátaid közé."
index 4b2ad291a59980963b287612b96c199c7bdd5ac8..63781ef61f2bff88bab57940c19df19cf24e7a7b 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"
@@ -79,10 +83,18 @@ is:
   browse:
     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"
+      changeset: "Breytingarsett: {{id}}"
+      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_tooltip: "Skoða breytingarsett eftir {{user}}"
+        prev_tooltip: "Fyrri breytingarsett eftir {{user}}"
+        next_tooltip: "Næsta breytingarsett eftir {{user}}"
+      all:
+        prev_tooltip: "Fyrra breytingarsett"
+        next_tooltip: "Næsta breytingarsett"
     changeset_details:
       created_at: "Búið til:"
       closed_at: "Lokað:"
@@ -97,24 +109,31 @@ is:
       has_ways:
         one:  "Inniheldur {{count}} veg:"
         other: "Inniheldur {{count}} vegi:"
-      has_relations: "Inniheldur {{count}} vensl:"
+      has_relations:
+        one: "Inniheldur {{count}} vensl:"
+        other: "Inniheldur {{count}} vensl:"
     common_details: 
       edited_at: "Breytt:"
       edited_by: "Breytt af:"
       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"
@@ -140,8 +159,16 @@ is:
     relation_history:
       relation_history: "Breytingarskrá vensla "
       relation_history_title: "Breytingarskrá vensla: {{relation_name}}"
+      download: "{{download_xml_link}} eða {{view_details_link}}"
+      download_xml: "Hala niður á XML sniði"
+      view_details: "sýna breytingarsögu"
     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}}"
@@ -200,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"
@@ -225,27 +252,12 @@ is:
       user: "Notandi"
       comment: "Athugasemd"
       area: "Svæði"
-    list_bbox:
-      history: "Breytingarskrá"
-      changesets_within_the_area: "Breytingarsett innan svæðisins:"
-      show_area_box: "sýna svæðismörk"
-      no_changesets: "Engin breytingarsett"
-      all_changes_everywhere: "Sjá {{recent_changes_link}} óháð svæði"
-      recent_changes: "nýlegar breytingar"
-      no_area_specified: "Engin svæðsmörk tilgreind"
-      first_use_view: "Notaðu {{view_tab_link}} til að þysja á það svæði sem þú hefur áhuga á, farðu svo í breytingarskránna."
-      view_the_map: "Opna kortasjá"
-      view_tab: "kortasjánna"
-      alternatively_view: "Einnig er hægt að skoða allar {{recent_changes_link}}"
     list:
-      recent_changes: "Nýlegar breytingar"
-      recently_edited_changesets: "Breytingarsettum sem var nýlega breytt:"
-      for_more_changesets: "Til að sjá fleiri breytingarsett veldu notanda og kannaðu breytingar hans, eða skoðaðu breytingarsöguna fyrir tiltekið svæði."
-    list_user:
-      edits_by_username: "Framlög {{username_link}}"
-      no_visible_edits_by: "Engin sýnileg framlög skráð á {{name}}."
-      for_all_changes: "Sjá {{recent_changes_link}} til að sjá breytingar eftir alla notendur"
-      recent_changes: "nýlegar breytingar"
+      title: "Breytingarsett"
+      description: "Nýlegar breytingar"
+      description_user: "Nýlegar breytingar eftir {{user}}"
+      description_bbox: "Nýlegar breytingar innan {{bbox}}"
+      description_user_bbox: "Nýlegar breytingar eftir {{user}} innan {{bbox}}"
   diary_entry:
     new:
       title: "Ný bloggfærsla"
@@ -286,7 +298,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:
@@ -325,12 +337,46 @@ 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:
+    search:
+      title:
+        latlon: 'Niðurstöður frá <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Niðurstöður frá <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Niðurstöður frá <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Niðurstöður frá <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Niðurstöður frá <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Niðurstöður frá <a href="http://www.geonames.org/">GeoNames</a>'
+    search_osm_namefinder:
+      prefix: "{{type}} "
+      suffix_place: ", {{distance}} {{direction}} af {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} af {{parentname}})"
+      suffix_suburb: "{{suffix}}, {{parentname}}"
+    description:
+      title:
+        osm_namefinder: '{{types}} frá <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Staðsetning frá <a href="http://www.geonames.org/">GeoNames</a>'
+      types:
+        cities: Borgir
+        towns: Bæir
+        places: Staðir
+    description_osm_namefinder:
+      prefix: "{{distance}} {{direction}} af{{type}} "
     results:
-      results: "Niðurstöður"
-      type_from_source: "{{type}} frá {{source_link}}"
       no_results: "Ekkert fannst"
+    distance:
+      zero: "minna en 1km"
+      one: "u.þ.b. 1km"
+      other: "u.þ.b. {{count}}km"
+    direction:
+      south_west: "suðvestur"
+      south: "suður"
+      south_east: "suðaustur"
+      east: "austur"
+      north_east: "norðaustur"
+      north: "norður"
+      north_west: "norðvestur"
+      west: "vestur"
   layouts:
     project_name:
       # in <title>
@@ -374,17 +420,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:
@@ -407,54 +453,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:
@@ -463,7 +507,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:
@@ -544,6 +588,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"
@@ -551,14 +596,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"
@@ -566,11 +611,78 @@ is:
       search: "Leita"
       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"
@@ -588,7 +700,7 @@ is:
       owner: "Eigandi:"
       description: "Lýsing:"
       tags: "Tögg:"
-      editing_trace: "Breyti ferlinum {{name}}"
+      tags_help: "aðskilin með kommum"
       save_button: "Vista breytingar"
     no_such_user:
       title: "Notandi ekki til"
@@ -598,17 +710,18 @@ is:
       upload_gpx: "Upphala GPX skrá"
       description: "Lýsing"
       tags: "Tögg"
+      tags_help: "aðskilin með kommum"
       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:
@@ -651,26 +764,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á"
@@ -693,7 +791,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á"
@@ -703,7 +801,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ð: "
@@ -739,6 +837,7 @@ is:
       your friends: Vinir þínir
       no friends: Þú átt enga vini
       km away: "í {{count}} km fjarlægð"
+      m away: "í {{count}} m fjarlægð"
       nearby users: "Nálægir notendur:"
       no nearby users: "Engir notendur hafa stillt staðsetningu sína nálægt þér."
       change your settings: "breyttu stillingunum þínum"
@@ -752,10 +851,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: "
@@ -764,16 +863,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.."
@@ -789,7 +882,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..3e367877dc6d65729b67abf39c49282fac5075a8 100644 (file)
@@ -77,7 +77,7 @@ it:
   browse:
     changeset:
       title: "Gruppo di modifiche"
-      changeset: "Gruppo di modifiche:"
+      changeset: "Gruppo di modifiche: {{id}}"
       download: "Scarica il {{changeset_xml_link}} oppure le {{osmchange_xml_link}}"
       changesetxml: "gruppo di modifiche XML"
       osmchangexml: "modificheOsm XML"
@@ -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}}"
@@ -290,9 +287,15 @@ it:
       add_marker: "Aggiungi un marcatore alla mappa"
       view_larger_map: "Visualizza una mappa più ampia"
   geocoder:
+    search:
+      title:
+        latlon: 'Risultati da <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Risultati da <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Risultati da <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Risultati da <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Risultati da <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Risultati da <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Risultati"
-      type_from_source: "{{type}} da {{source_link}}"
       no_results: "Nessun risultato"
   layouts:
     welcome_user: "Benvenuto, {{user_link}}"
@@ -436,7 +439,6 @@ it:
       search: Cerca
       where_am_i: "Dove sono?"
       submit_text: "Vai"
-      searching: "Ricerca in corso..."
       search_help: "esempi: 'Trieste', 'Via Dante Alighieri, Trieste', 'CB2 5AQ', oppure 'post offices near Trieste' <a href='http://wiki.openstreetmap.org/wiki/Search'>altri esempi...</a>"
     key:
       map_key: "Legenda"
index 7f76c30b44769461bd4be6b245af78632b4ad639..114e360676b5aa7501a473f64497da9747dca8c4 100644 (file)
@@ -79,7 +79,7 @@ ja:
   browse:
     changeset:
       title: "変更セット"
-      changeset: "変更セット:"
+      changeset: "変更セット: {{id}}"
       download: "ダウンロード{{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "変更セットXML"
       osmchangexml: "osm変更XML"
@@ -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}}"
@@ -321,9 +318,15 @@ ja:
       add_marker: "マーカーを地図に追加する"
       view_larger_map: "大きな地図を表示..."
   geocoder:
+    search:
+      title:
+        latlon: '<a href="http://openstreetmap.org/">Internal</a>からの結果'
+        us_postcode: '<a href="http://geocoder.us/">Geocoder.us</a>からの結果'
+        uk_postcode: '<a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>からの結果'
+        ca_postcode: '<a href="http://geocoder.ca/">Geocoder.CA</a>からの結果'
+        osm_namefinder: '<a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>からの結果'
+        geonames: '<a href="http://www.geonames.org/">GeoNames</a>からの結果'
     results:
-      results: "結果"
-      type_from_source: "{{source_link}}からの{{type}}"
       no_results: "見つかりませんでした。"
   layouts:
     project_name:
@@ -563,7 +566,6 @@ ja:
       search: "検索"
       where_am_i: "いまどこ?"
       submit_text: "行く"
-      searching: "検索中..."
       search_help: "例: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>他の例...</a>"
       #いずれ、wiki.openstreetmap.org/wiki/Ja:Searchを作成すること
     key:
index 5964837f1e40a28199bfafbf8ae9978a065c364e..414927ba351623ff52f0609ac6a54a0bf0bf205f 100644 (file)
@@ -16,20 +16,20 @@ ko:
       node: "노드"
       node_tag: "노드 태그"
       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_node: "옛 노드"
+      old_node_tag: "옛 노드 태그"
+      old_relation: "옛 관계"
+      old_relation_member: "옛 관계 멤버"
+      old_relation_tag: "옛 관계 태그"
       old_way: "Old Way"
       old_way_node: "Old Way Node"
       old_way_tag: "Old Way Tag"
       relation: "관계"
-      relation_member: "Relation Member"
+      relation_member: "관계 멤버"
       relation_tag: "관계 태그"
       session: "세션"
       trace: "발자취"
-      tracepoint: "Trace Point"
+      tracepoint: "발자취 지점"
       tracetag: "발자취 태그"
       user: "사용자"
       user_preference: "사용자 환경"
@@ -53,7 +53,7 @@ ko:
         friend: "친구"
       trace:
         user: "사용자"
-        visible: "Visible"
+        visible: "일람 가능"
         name: "이름"
         size: "크기"
         latitude: "위도"
@@ -66,8 +66,8 @@ ko:
         body: "내용"
         recipient: "받는 사람"
       user:
-        email: "Email"
-        active: "Active"
+        email: "전자 우편"
+        active: "활성"
         display_name: "표시 이름"
         description: "설명"
         languages: "언어"
@@ -79,7 +79,7 @@ ko:
   browse:
     changeset:
       title: "변경셋"
-      changeset: "변경셋:"
+      changeset: "변경셋: {{id}}"
       download: "내려받기 {{changeset_xml_link}} 혹은 {{osmchange_xml_link}}"
       changesetxml: "변경셋 XML"
       osmchangexml: "osmChange XML"
@@ -91,21 +91,20 @@ ko:
       no_bounding_box: "이 변경셋을 위해 저장된 경계가 없습니다."
       show_area_box: "영역 표시"
       box: "box"
-      has_nodes: "Has the following {{count}} nodes:"
-      has_ways: "Has the following {{count}} ways:"
-      has_relations: "Has the following {{count}} relations:"
+      has_nodes: "는(은) 다음 {{count}} 개의 노드를 가지고 있습니다:"
+      has_ways: "는(은) 다음 {{count}} 개의 길을 가지고 있습니다:"
+      has_relations: "는(은) 다음 {{count}} 개의 관계를 가지고 있습니다:"
     common_details: 
       edited_at: "편집일:"
       edited_by: "편집자:"
       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}}"
@@ -152,25 +149,25 @@ ko:
       zoom_or_select: "확대 또는 보고 싶은 지도의 지역을 선택하세요"
       drag_a_box: "지역을 보기 위해 지도로 끌어 놓으세요."
       manually_select: "다른 지역 선택"
-      loaded_an_area_with_num_features: "You have loaded an area which contains [[num_features]] features. In general, some browsers may not cope well with displaying this quantity of data. Generally, browsers work best at displaying less than 100 features at a time: doing anything else may make your browser slow/unresponsive. If you are sure you want to display this data, you may do so by clicking the button below."
+      loaded_an_area_with_num_features: "당신은 [[num_features]] 개의 특성을 가진 지역을 로드하였습니다. 경우에 따라, 어떤 브라우저에서는 이 데이터를 모두 처리하지 못 할 수도 있습니다. 일반적으로, 브라우저들은 대게 100개 이하의 특성을 처리하여 보여줄 수 있습니다. 그렇지 않은 경우, 브라우저의 속도가 저하되거나 브라우저의 반응이 느려질 수 있습니다. 여전히 이 데이터를 표시하려면, 아래의 버튼을 클릭하여 주십시오."
       load_data: "정보 불러 오기"
-      unable_to_load_size: "불러 오기 실패: Bounding box size of [[bbox_size]] is too large (must be smaller than {{max_bbox_size}})"
+      unable_to_load_size: "불러 오기 실패: 표시하려는 지역([[bbox_size]])의 설정 박스가 너무 큽니다. {{max_bbox_size}}까지 표시할 수 있습니다."
       loading: "불러 오는 중..."
       show_history: "이력 보기"
       wait: "잠시만 기다려 주세요..."
       history_for_feature: "[[feature]]의 이력"
       details: "세부 사항"
-      private_user: "private user"
-      edited_by_user_at_timestamp: "Edited by [[user]] at [[timestamp]]"
+      private_user: "개인 유저"
+      edited_by_user_at_timestamp: "[[timestamp]]에 [[user]]가 수정"
       object_list:
-        heading: "Object list"
-        back: "Display object list"
+        heading: "개체 목록"
+        back: "개체 목록 표시"
         type:
           node: "노드"
           way: "길"
           # There's no 'relation' type because it isn't represented in OpenLayers
-        api: "Retrieve this area from the API"
-        details: "Details"
+        api: "API로부터 이 지역 회수"
+        details: "세부 사항"
         selected:
           type:
             node: "노드 [[id]]"
@@ -182,13 +179,13 @@ ko:
             way: "길 [[id]]"
             # There's no 'relation' type because it isn't represented in OpenLayers
     tag_details:
-      tags: "Tags:"
+      tags: "태그들:"
     way_details:
       nodes: "노드:"
-      part_of: "Part of:"
+      part_of: "포함되는 길:"
       also_part_of:
-        one: "also part of way {{related_ways}}"
-        other: "also part of ways {{related_ways}}"
+        one: "{{related_ways}}의 일부"
+        other: "{{related_ways}}의 일부"
     way_history:
       way_history: "길 이력"
       way_history_title: "길 이력: {{way_name}}"
@@ -206,26 +203,26 @@ ko:
       showing_page: "Showing page"
       of: "of"
     changeset:
-      still_editing: "(still editing)"
-      anonymous: "Anonymous"
-      no_comment: "(none)"
-      no_edits: "(no edits)"
-      show_area_box: "show area box"
-      big_area: "(big)"
+      still_editing: "(현재 수정 중)"
+      anonymous: "익명"
+      no_comment: "(없음)"
+      no_edits: "(수정 없음)"
+      show_area_box: "지역 박스 보기"
+      big_area: "(큰 지역)"
       view_changeset_details: "변경셋 세부 사항 보기"
       more: "more"
     changesets:
       id: "ID"
-      saved_at: "ì \80ì\9e¥ ì\9c\84ì¹\98"
+      saved_at: "ì \80ì\9e¥ ì\8b\9cê°\84"
       user: "사용자"
       comment: "설명"
       area: "지역"
     list_bbox:
       history: "이력"
       changesets_within_the_area: "이 지역 내의 변경셋:"
-      show_area_box: "show area box"
+      show_area_box: "지역 박스 보기"
       no_changesets: "변경셋 없음"
-      all_changes_everywhere: "For all changes everywhere see {{recent_changes_link}}"
+      all_changes_everywhere: "전체 지역의 모든 변경은 {{recent_changes_link}}를 보세요"
       recent_changes: "최근 변경 사항"
       no_area_specified: "지역 설정 안 됨"
       first_use_view: "First use the {{view_tab_link}} to pan and zoom to an area of interest, then click the history tab."
@@ -322,8 +319,6 @@ ko:
       view_larger_map: "큰 지도 보기"
   geocoder:
     results:
-      results: "Results"
-      type_from_source: "{{type}} from {{source_link}}"
       no_results: "No results found"
   layouts:
     project_name:
@@ -560,7 +555,6 @@ ko:
       search: Search
       where_am_i: "Where am I?"
       submit_text: "Go"
-      searching: "Searching..."
       search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near L체nen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
     key:
       map_key: "Map key"
index e15e3dff2f1b0577f05715184440b40764309722..67ce9a2b23fae246b447eb2a274e28a110c195d9 100644 (file)
@@ -73,11 +73,11 @@ nl:
   map:
     view: Bekijken
     edit: Bewerken
-    coordinates: "Coördinaten:"
+    coordinates: "Coördinaten:"
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Download {{changeset_xml_link}} of {{osmchange_xml_link}}"
       changesetxml: "Changeset-XML"
       osmchangexml: "osmChange-XML"
@@ -86,7 +86,7 @@ nl:
       closed_at: "Gesloten op:"
       belongs_to: "Gemaakt door:"
       bounding_box: "Rechthoek:" #good translation?
-      no_bounding_box: "Geen coördinaten opgeslagen voor deze changeset."
+      no_bounding_box: "Geen coördinaten opgeslagen voor deze changeset."
       show_area_box: "Laat gebied zien"
       box: "vak" #good translation?
       has_nodes: "Bevat de volgende {{count}} nodes:"
@@ -98,14 +98,13 @@ 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: "
+      coordinates: "Coördinaten: "
       part_of: "Part of:" #to be translated
     node_history:
       node_history: "Node-geschiedenis"
@@ -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}}"
@@ -202,7 +199,7 @@ nl:
       all_changes_everywhere: "Voor alle aanpassingen over de hele wereld zie {{recent_changes_link}}"
       recent_changes: "Recente wijzigingen"
       no_area_specified: "Geen gebied opgegeven"
-      first_use_view: "Gebruik eerst de {{view_tab_link}} om te schuiven en te zoomen naar het gebied waarin je geïnteresseerd bent, klik dan op de Geschiedenis-tab."
+      first_use_view: "Gebruik eerst de {{view_tab_link}} om te schuiven en te zoomen naar het gebied waarin je geïnteresseerd bent, klik dan op de Geschiedenis-tab."
       view_the_map: "Bekijk de kaart"
       view_tab: "Bekijken-tab"
       alternatively_view: "Of bekijk alle {{recent_changes_link}}"
@@ -290,9 +287,15 @@ nl:
       add_marker: "Marker op de kaart zetten"
       view_larger_map: "Grotere kaart zien"
   geocoder:
+    search:
+      title:
+        latlon: 'Resultaten van <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Resultaten van <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Resultaten van <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Resultaten van <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Resultaten van <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Resultaten van <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Resultaten"
-      type_from_source: "{{type}} van {{source_link}}"
       no_results: "Geen resultaten gevonden"
   layouts:
     welcome_user: "Welkom, {{user_link}}"
@@ -343,7 +346,7 @@ nl:
       wiki_signup: "Je kunt je ook registreren bij de OpenStreetMap-wiki:"
       # next four translations are in pairs : please word wrap appropriately
       user_wiki_1: "Het is aanbevolen dat je een gebruikerspagina maakt met onder andere"
-      user_wiki_2: "categorieën die zeggen waar je bent, zoals [[Category:Users_in_Amsterdam]]."
+      user_wiki_2: "categorieën die zeggen waar je bent, zoals [[Category:Users_in_Amsterdam]]."
       current_user_1: "Een lijst van gebruikers, gesorteerd op woonplaats"
       current_user_2: "is beschikbaar op:" #good translation?
     signup_confirm_html:
@@ -356,7 +359,7 @@ nl:
       more_videos_here: "hier nog meer video's"
       get_reading: 'Lees over OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">op de wiki</p> of <a href="http://www.opengeodata.org/">de OpenGeoData-blog</a> die ook <a href="http://www.opengeodata.org/?cat=13">podcasts</a> aanbiedt!'
       wiki_signup: 'Je kunt je ook <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">registreren op de OpenStreetMap-wiki</a>.'
-      user_wiki_page: 'Het is aanbevolen dat je een gebruikerspagina maakt met onder andere categorieën die zeggen waar je bent, zoals <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Amsterdam">[[Category:Users_in_Amsterdam]]</a>.'
+      user_wiki_page: 'Het is aanbevolen dat je een gebruikerspagina maakt met onder andere categorieën die zeggen waar je bent, zoals <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Amsterdam">[[Category:Users_in_Amsterdam]]</a>.'
       current_user: 'Een lijst van gebruikers, gesorteerd op woonplaats, is te zien op <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
   message:
     inbox:
@@ -436,19 +439,18 @@ nl:
       search: Zoeken
       where_am_i: "Waar ben ik?"
       submit_text: "Ga"
-      searching: "Zoeken..."
       search_help: "voorbeelden: 'Alkmaar', 'Spui, Amsterdam', 'CB2 5AQ', of 'post offices near Leiden' <a href='http://wiki.openstreetmap.org/wiki/Search'>meer voorbeelden...</a>"
     key:
       map_key: "Legenda"
   trace:
     create:
       upload_trace: "Upload GPS-track"
-      trace_uploaded: "Je track is geüpload en wacht totdat hij in de database wordt opgenomen. Dit gebeurt normaal binnen een half uur. Als het klaar is, zul je een e-mail ontvangen."
+      trace_uploaded: "Je track is geüpload en wacht totdat hij in de database wordt opgenomen. Dit gebeurt normaal binnen een half uur. Als het klaar is, zul je een e-mail ontvangen."
     edit:
       filename: "Bestandsnaam:"
-      uploaded_at: "Geüpload op:"
+      uploaded_at: "Geüpload op:"
       points: "Punten:"
-      start_coord: "Startcoördinaat:"
+      start_coord: "Startcoördinaat:"
       edit: "bewerken"
       owner: "Eigenaar:"
       description: "Beschrijving:"
@@ -467,16 +469,16 @@ nl:
       see_just_your_traces: "Alleen je eigen tracks zien, of een track uploaden"
       see_all_traces: "Alle tracks zien"
       see_your_traces: "Al jouw tracks zien"
-      traces_waiting: "Je hebt al {{count}} tracks die wachten om geüpload te worden. Overweeg om te wachten totdat die verwerkt zijn, om te voorkomen dat de wachtrij voor andere gebruikers geblokkeerd wordt."
+      traces_waiting: "Je hebt al {{count}} tracks die wachten om geüpload te worden. Overweeg om te wachten totdat die verwerkt zijn, om te voorkomen dat de wachtrij voor andere gebruikers geblokkeerd wordt."
     trace_optionals:
       tags: "Tags"
     view:
       pending: "BEZIG"
       filename: "Bestandsnaam:"
       download: "download"
-      uploaded: "Geüpload op:"
+      uploaded: "Geüpload op:"
       points: "Punten:"
-      start_coordinates: "Startcoördinaat:"
+      start_coordinates: "Startcoördinaat:"
       map: "kaart"
       edit: "bewerken"
       owner: "Eigenaar:"
@@ -501,7 +503,7 @@ nl:
       edit: "bewerken"
       edit_map: "Kaart bewerken"
       public: "OPENBAAR"
-      private: "PRIVÉ"
+      private: "PRIVÉ"
       by: "door"
       in: "in"
       map: "kaart"
@@ -551,7 +553,7 @@ nl:
       password: "Wachtwoord: "
       confirm password: "Wachtwoord bevestigen: "
       signup: Registreren
-      flash create success message: "Gebruiker succesvol gemaakt. Bekijk je e-mail voor een bevestigingsmail, en je bent zó aan het mappen :-)<br /><br />Denk eraan dat je niet kunt inloggen voordat je je bevestigingsmail hebt ontvangen en bevestigd.<br /><br />Als je een spamfilter gebruikt die bevestigingsmails stuurt, zorg er dan voor dat je webmaster@openstreetmap.org toestaat. Wij kunnen namelijk geen bevestigingsmails terugsturen."
+      flash create success message: "Gebruiker succesvol gemaakt. Bekijk je e-mail voor een bevestigingsmail, en je bent zó aan het mappen :-)<br /><br />Denk eraan dat je niet kunt inloggen voordat je je bevestigingsmail hebt ontvangen en bevestigd.<br /><br />Als je een spamfilter gebruikt die bevestigingsmails stuurt, zorg er dan voor dat je webmaster@openstreetmap.org toestaat. Wij kunnen namelijk geen bevestigingsmails terugsturen."
     no_such_user:
       body: "Sorry, er is geen gebruiker met de naam {{user}}. Controleer de spelling, of misschien is de link waarop je klikte onjuist."
     view:
index 17afacacfd48585ce8e54dfb0c5441014f7ce13e..2d261acd35f637ea7168984f17d3b3ae2e7a0afa 100644 (file)
@@ -77,7 +77,7 @@ pl:
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Ściągnij {{changeset_xml_link}} lub {{osmchange_xml_link}}"
       changesetxml: "XML w formacie Changesetu"
       osmchangexml: "XML w formacie osmChange"
@@ -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}}"
@@ -294,9 +291,15 @@ pl:
       add_marker: "Dodaj pinezkę na mapie"
       view_larger_map: "Większy widok mapy"
   geocoder:
+    search:
+      title:
+        latlon: 'Wyniki z <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Wyniki z <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Wyniki z <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Wyniki z <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Wyniki z <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Wyniki z <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Wyniki"
-      type_from_source: "{{type}} z {{source_link}}"
       no_results: "Nie znaleziono"
   layouts:
     welcome_user: "Witaj, {{user_link}}"
@@ -450,7 +453,6 @@ pl:
       search: Wyszukiwanie
       where_am_i: "Gdzie jestem?"
       submit_text: "Szukaj"
-      searching: "Wyszukiwanie..."
       search_help: "przykłady: 'Wąchock', 'Franciszkańska, Poznań', 'CB2 5AQ', lub 'post offices near Mokotów' <a href='http://wiki.openstreetmap.org/wiki/Search'>więcej przykładów...</a>"
     key:
       map_key: "Legenda"
index 58976f5e785dcb0d6958d6a3385918f447b12194..25b8f18ff7f4007ca6f5c8e7742cee520228dc1d 100644 (file)
@@ -79,7 +79,7 @@ pt-BR:
   browse:
     changeset:
       title: "Alterações"
-      changeset: "Alterações:"
+      changeset: "Alterações: {{id}}"
       download: "Baixar {{changeset_xml_link}} ou {{osmchange_xml_link}}"
       changesetxml: "XML do conjunto de alterações"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -321,9 +318,15 @@ pt-BR:
       add_marker: "Adicionar um marcador ao mapa"
       view_larger_map: "Ver Mapa Ampliado"
   geocoder:
+    search:
+      title:
+        latlon: 'Resultados de <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Resultados de <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Resultados de <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Resultados de <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Resultados de <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Resultados de <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Resultados"
-      type_from_source: "{{type}} de {{source_link}}"
       no_results: "Não foram encontrados resultados"
   layouts:
     project_name:
@@ -560,7 +563,6 @@ OpenStreetMap em:"
       search: "Buscar"
       where_am_i: "Onde estou?"
       submit_text: "Ir"
-      searching: "Buscando..."
       search_help: "exemplos: 'Belo Horizonte', 'Av. Paulista, São Paulo', 'CB2 5AQ', or 'post offices near Porto Alegre' <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Search'>mais exemplos...</a>"
     key:
       map_key: "Map key"
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
new file mode 100644 (file)
index 0000000..1f9b0ec
--- /dev/null
@@ -0,0 +1,890 @@
+ro:
+  html:
+    dir: ltr
+  activerecord:
+    # Translates all the model names, which is used in error handling on the web site
+    models:
+      acl: "Access Control List"
+      changeset: "Set de modificări"
+      changeset_tag: "Etichetă set de modificări"
+      country: "Țară"
+      diary_comment: "Comentariu jurnal"
+      diary_entry: "Intrare în jurnal"
+      friend: "Prieten"
+      language: "Limbă"
+      message: "Mesaj"
+      node: "Nod"
+      node_tag: "Etichetă nod"
+      notifier: "Notificator"
+      old_node: "Nod vechi"
+      old_node_tag: "Etichetă nod vechi"
+      old_relation: "Relație veche"
+      old_relation_member: "Membru al relației vechi"
+      old_relation_tag: "Etichetă pentru relația veche"
+      old_way: "Cale veche"
+      old_way_node: "Nod cale veche"
+      old_way_tag: "Etichetă cale veche"
+      relation: "Relație"
+      relation_member: "Membru relație"
+      relation_tag: "Etichetă relație"
+      session: "Sesiune"
+      trace: "Înregistrare GPS"
+      tracepoint: "Punct al unei înregistrări GPS"
+      tracetag: "Etichetă înregistrare GPS"
+      user: "Utilizator"
+      user_preference: "Preferințe utilizator"
+      user_token: "User Token"
+      way: "Cale"
+      way_node: "Nod cale"
+      way_tag: "Etichetă cale"
+    # 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: "Corp"
+      diary_entry:
+        user: "Utilizator"
+        title: "Titlu"
+        latitude: "Latitudine"
+        longitude: "Longitudine"
+        language: "Limbă"
+      friend:
+        user: "Utilizator"
+        friend: "Prieten"
+      trace:
+        user: "Utilizator"
+        visible: "Vizibilă"
+        name: "Nume"
+        size: "Dimensiune"
+        latitude: "Latitudine"
+        longitude: "Longitudine"
+        public: "Public"
+        description: "Descriere"
+      message:
+        sender: "Expeditor"
+        title: "Titlu"
+        body: "Corp"
+        recipient: "Destinatar"
+      user:
+        email: "Email"
+        active: "Activ"
+        display_name: "Afișare nume"
+        description: "Descriere"
+        languages: "Limbi"
+        pass_crypt: "Parolă"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, v{{version}}"
+    with_name: "{{name}} ({{id}})"
+  map:
+    view: Vizualizare
+    edit: Editare
+    coordinates: "Coordonate:"
+  browse:
+    changeset:
+      title: "Set de modificări"
+      changeset: "Set de modificări:"
+      download: "Descarcă {{changeset_xml_link}} sau {{osmchange_xml_link}}"
+      changesetxml: "Set de modificări XML"
+      osmchangexml: "osmChange XML"
+    changeset_details:
+      created_at: "Creat la:"
+      closed_at: "Închis la:"
+      belongs_to: "Aparține lui:"
+      bounding_box: "Cutie împrejmuitoare:"
+      no_bounding_box: "Nicio cutie împrejmuitoare nu a fost salvată pentru acest set de modificări."
+      show_area_box: "Afișează cutia zonei"
+      box: "cutie"
+      has_nodes: "Are următoarele {{count}} noduri:"
+      has_ways: "Are următoarele {{count}} căi:"
+      has_relations: "Are următoarele {{count}} relații:"
+    common_details: 
+      edited_at: "Editat la:"
+      edited_by: "Editat de:"
+      version: "Versiune:"
+      in_changeset: "În setul de schimbări:"
+    containing_relation:
+      entry: "Relație {{relation_name}}"
+      entry_role: "Relație {{relation_name}} (ca {{relation_role}})"
+    map:
+      loading: "Se încarcă..."
+      deleted: "A fost șters"
+      larger:
+        area: "Vizualizare zonă pe hartă mai mare"
+        node: "Vizualizare nod pe hartă mai mare"
+        way: "Vizualizare cale pe hartă mai mare"
+        relation: "Vizualizare relație pe hartă mai mare"
+    node_details:
+      coordinates: "Coordonate: "
+      part_of: "Parte din:"
+    node_history:
+      node_history: "Istoric nod"
+      node_history_title: "Istoric nod: {{node_name}}"
+      download: "{{download_xml_link}} sau {{view_details_link}}"
+      download_xml: "Descărcare XML"
+      view_details: "vizualizare detalii"
+    node:
+      node: "Nod"
+      node_title: "Nod: {{node_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}} sau {{edit_link}}"
+      download_xml: "Descărcare XML"
+      view_history: "vizualizare istoric"
+      edit: "editare"
+    not_found:
+      sorry: "Ne pare rău, dar {{type}} cu identificatorul {{id}}, nu a putut fi ."
+      type:
+        node: node
+        way: way
+        relation: relation
+    paging_nav:
+      showing_page: "Se afișează pagina"
+      of: "din"
+    relation_details:
+      members: "Membrii:"
+      part_of: "Parte din:"
+    relation_history:
+      relation_history: "Istoric relații"
+      relation_history_title: "Istoric relații: {{relation_name}}"
+    relation_member:
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} ca {{role}}"
+      type:
+        node: "Nod"
+        way: "Cale"
+        relation: "Relație"
+    relation:
+      relation: "Relație"
+      relation_title: "Relație: {{relation_name}}"
+      download: "{{download_xml_link}} sau {{view_history_link}}"
+      download_xml: "Descărcare XML"
+      view_history: "vizualizare istoric"
+    start:
+      view_data: "Vizualizare date pentru perspectiva curentă a hărții"
+      manually_select: "Selectare manuală a unei alte zone"
+    start_rjs:
+      data_layer_name: "Date"
+      data_frame_title: "Date"
+      zoom_or_select: "Măriți sau selectați o zonă a hărții pentru a o vizualiza"
+      drag_a_box: "Trageți cu mouse-ul și creați un dreptunghi pentru a selecta zona hărții"
+      manually_select: "Selectare manuală a unei alte zone"
+      loaded_an_area_with_num_features: "Ați încărcat o zonă care conține [[num_features]] puncte. În general, unele navigatoare nu sunt capabile să facă față afișării unei asemenea cantități de date. Navigatoarele funcționează cel mai bine atunci când afișează mai puțin de 100 de puncte simultan: dacă mai faceți și alte operații cu navigatorul dumneavoastră în paralel veți observa o încetinire / lipsă de răspuns din partea navigatorului. Dacă doriți să afișați aceste puncte apăsați butonul de mai jos."
+      load_data: "Încărcare date"
+      unable_to_load_size: "Imposibil de încărcat: Cutia împrejmuitoare de dimensiune [[bbox_size]] este prea mare (trebuie să fie mai mică de {{max_bbox_size}})"
+      loading: "Se încarcă..."
+      show_history: "Afișare istoric"
+      wait: "Așteptați..."
+      history_for_feature: "Istoric pentru [[feature]]"
+      details: "Detalii"
+      private_user: "utilizator privat"
+      edited_by_user_at_timestamp: "Editat de [[user]] la [[timestamp]]"
+      object_list:
+        heading: "Lista obiectelor"
+        back: "Afișează lista obiectelor"
+        type:
+          node: "Nod"
+          way: "Cale"
+          # There's no 'relation' type because it isn't represented in OpenLayers
+        api: "Obține această zonă prin API"
+        details: "Detalii"
+        selected:
+          type:
+            node: "Nod [[id]]"
+            way: "cale [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+        history:
+          type:
+            node: "Nod [[id]]"
+            way: "Cale [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+    tag_details:
+      tags: "Etichete:"
+    way_details:
+      nodes: "Noduri:"
+      part_of: "Parte din:"
+      also_part_of:
+        one: "de asemenea parte din calea {{related_ways}}"
+        other: "de asemenea parte din căile {{related_ways}}"
+    way_history:
+      way_history: "Istoric cale"
+      way_history_title: "Istoric cale: {{way_name}}"
+      download: "{{download_xml_link}} sau {{view_details_link}}"
+      download_xml: "Descărcare XML"
+      view_details: "vizualizare detalii"
+    way:
+      way: "Cale"
+      way_title: "Cale: {{way_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}} sau {{edit_link}}"
+      download_xml: "Descărcare XML"
+      view_history: "vizualizare istoric"
+      edit: "editare"
+  changeset:
+    changeset_paging_nav: 
+      showing_page: "Se afișează pagina"
+      of: "din"
+    changeset:
+      still_editing: "(încă se editează)"
+      anonymous: "Anonim"
+      no_comment: "(niciunul)"
+      no_edits: "(nu există editări)"
+      show_area_box: "afișează chenarul zonei"
+      big_area: "(mare)"
+      view_changeset_details: "Vizualizare detalii set de schimbări"
+      more: "mai mult"
+    changesets:
+      id: "ID"
+      saved_at: "Salvat la"
+      user: "Utilizator"
+      comment: "Comentariu"
+      area: "Zonă"
+    list_bbox:
+      history: "Istoric"
+      changesets_within_the_area: "Seturi de schimbări din zonă:"
+      show_area_box: "afișare chenar zonă"
+      no_changesets: "Nu există seturi de schimbări"
+      all_changes_everywhere: "Pentru toate modificările de peste tot vedeți {{recent_changes_link}}"
+      recent_changes: "Modificări recente"
+      no_area_specified: "Nicio zonă specificată"
+      first_use_view: "Prima dată folosiți {{view_tab_link}} pentru a parcurge harta și pentru a mări pe o zonă de interes, apoi clic pe fila cu istoricul."
+      view_the_map: "vizualizare hartă"
+      view_tab: "vizualizare filă"
+      alternatively_view: "Alternativ, vizualizați toate {{recent_changes_link}}"
+    list:
+      recent_changes: "Recent Changes"
+      recently_edited_changesets: "Recently edited changesets:"
+      for_more_changesets: "For more changesets, select a user and view their edits, or see the editing 'history' of a specific area."
+    list_user:
+      edits_by_username: "Edits by {{username_link}}"
+      no_visible_edits_by: "No visible edits by {{name}}."
+      for_all_changes: "For changes by all users see {{recent_changes_link}}"
+      recent_changes: "Recent Changes"
+  diary_entry:
+    new:
+      title: New Diary Entry
+    list:
+      title: "Users' diaries"
+      user_title: "{{user}}'s diary"
+      in_language_title: "Diary Entries in {{language}}"
+      new: New Diary Entry
+      new_title: Compose a new entry in your user diary
+      no_entries: No diary entries
+      recent_entries: "Recent diary entries: "
+      older_entries: Older Entries
+      newer_entries: Newer Entries
+    edit:
+      title: "Edit diary entry"
+      subject: "Subject: "
+      body: "Body: "
+      language: "Language: "
+      location: "Location: "
+      latitude: "Latitude: "
+      longitude: "Longitude: "
+      use_map_link: "use map"
+      save_button: "Save"
+      marker_text: Diary entry location
+    view:
+      title: "Users' diaries | {{user}}"
+      user_title: "{{user}}'s diary"
+      leave_a_comment: "Leave a comment"
+      login_to_leave_a_comment: "{{login_link}} to leave a comment"
+      login: "Login"
+      save_button: "Save"
+    no_such_entry:
+      title: "No such diary entry"
+      heading: "No entry with the id: {{id}}"
+      body: "Sorry, there is no diary entry or comment with the id {{id}}. Please check your spelling, or maybe the link you clicked is wrong."
+    no_such_user:
+      title: "No such user"
+      heading: "The user {{user}} does not exist"
+      body: "Sorry, there is no user with the name {{user}}. Please check your spelling, or maybe the link you clicked is wrong."
+    diary_entry:
+      posted_by: "Posted by {{link_user}} at {{created}} in {{language_link}}"
+      comment_link: Comment on this entry
+      reply_link: Reply to this entry
+      comment_count:
+        one: 1 comment
+        other: "{{count}} comments"
+      edit_link: Edit this entry
+    diary_comment:
+      comment_from: "Comment from {{link_user}}  at {{comment_created_at}}"
+  export:
+    start:
+      area_to_export: "Area to Export"
+      manually_select: "Manually select a different area"
+      format_to_export: "Format to Export"
+      osm_xml_data: "OpenStreetMap XML Data"
+      mapnik_image: "Mapnik Image"
+      osmarender_image: "Osmarender Image"
+      embeddable_html: "Embeddable HTML"
+      licence: "Licence"
+      export_details: 'OpenStreetMap data is licensed under the <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons Attribution-ShareAlike 2.0 license</a>.'
+      options: "Options"
+      format: "Format"
+      scale: "Scale"
+      max: "max"
+      image_size: "Image Size"
+      zoom: "Zoom"
+      add_marker: "Add a marker to the map"
+      latitude: "Lat:"
+      longitude: "Lon:"
+      output: "Output"
+      paste_html: "Paste HTML to embed in website"
+      export_button: "Export"
+    start_rjs:
+      export: "Export"
+      drag_a_box: "Drag a box on the map to select an area"
+      manually_select: "Manually select a different area"
+      click_add_marker: "Click on the map to add a marker"
+      change_marker: "Change marker position"
+      add_marker: "Add a marker to the map"
+      view_larger_map: "View Larger Map"
+  geocoder:
+    search:
+      title:
+        latlon: 'Results from <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Results from <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Results from <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Results from <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Results from <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Results from <a href="http://www.geonames.org/">GeoNames</a>'
+    search_osm_namefinder:
+      prefix: "{{type}} "
+      suffix_place: ", {{distance}} {{direction}} of {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} of {{parentname}})"
+      suffix_suburb: "{{suffix}}, {{parentname}}"
+    description:
+      title:
+        osm_namefinder: '{{types}} from <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Location from <a href="http://www.geonames.org/">GeoNames</a>'
+      types:
+        cities: Cities
+        towns: Towns
+        places: Places
+    description_osm_namefinder:
+      prefix: "{{distance}} {{direction}} of {{type}} "
+    results:
+      no_results: "No results found"
+    distance:
+      zero: "less than 1km"
+      one: "about 1km"
+      other: "about {{count}}km"
+    direction:
+      south_west: "south-west"
+      south: "south"
+      south_east: "south-east"
+      east: "east"
+      north_east: "north-east"
+      north: "north"
+      north_west: "north-west"
+      west: "west"
+  layouts:
+    project_name:
+      # in <title>
+      title: OpenStreetMap
+      # in <h1>
+      h1: OpenStreetMap
+    logo:
+      alt_text: OpenStreetMap logo
+    welcome_user: "Welcome, {{user_link}}"
+    welcome_user_link_tooltip: Your user page
+    home: home
+    home_tooltip: Go to home location
+    inbox: "inbox ({{count}})"
+    inbox_tooltip:
+      zero: Your inbox contains no unread messages
+      one: Your inbox contians 1 unread message
+      other: Your inbox contains {{count}} unread messages
+    logout: logout
+    logout_tooltip: "Log out"
+    log_in: log in
+    log_in_tooltip: Log in with an existing account
+    sign_up: sign up
+    sign_up_tooltip: Create an account for editing
+    view: View
+    view_tooltip: View maps
+    edit: Edit
+    edit_tooltip: Edit maps
+    history: History
+    history_tooltip: Changeset history
+    export: Export
+    export_tooltip: Export map data
+    gps_traces: GPS Traces
+    gps_traces_tooltip: Manage traces
+    user_diaries: User Diaries
+    user_diaries_tooltip: View user diaries
+    tag_line: The Free Wiki World Map
+    intro_1: "OpenStreetMap is a free editable map of the whole world. It is made by people like you."
+    intro_2: "OpenStreetMap allows you to view, edit and use geographical data in a collaborative way from anywhere on Earth."
+    intro_3: "OpenStreetMap's hosting is kindly supported by the {{ucl}} and {{bytemark}}."
+    intro_3_ucl: "UCL VR Centre"
+    intro_3_bytemark: "bytemark"
+    osm_offline: "The OpenStreetMap database is currently offline while essential database maintenance work is carried out."
+    osm_read_only: "The OpenStreetMap database is currently in read-only mode while essential database maintenance work is carried out."
+    donate: "Support OpenStreetMap by {{link}} to the Hardware Upgrade Fund."
+    donate_link_text: donating
+    help_wiki: "Help &amp; Wiki"
+    help_wiki_tooltip: "Help &amp; Wiki site for the project"
+    help_wiki_url: "http://wiki.openstreetmap.org"
+    news_blog: "News blog"
+    news_blog_tooltip: "News blog about OpenStreetMap, free geographical data, etc."
+    shop: Shop
+    shop_tooltip: Shop with branded OpenStreetMap merchandise
+    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!'
+    alt_donation: Make a Donation
+  notifier:
+    diary_comment_notification:
+      subject: "[OpenStreetMap] {{user}} commented on your diary entry"
+      banner1: "*                   Please do not reply to this email.                    *"
+      banner2: "*                Use the OpenStreetMap web site to reply.                 *"
+      hi: "Hi {{to_user}},"
+      header: "{{from_user}} has commented on your recent OpenStreetMap diary entry with the subject {{subject}}:"
+      footer: "You can also read the comment at {{readurl}} and you can comment at {{commenturl}} or reply at {{replyurl}}"
+    message_notification:
+      subject: "[OpenStreetMap] {{user}} sent you a new message"
+      banner1: "*                   Please do not reply to this email.                    *"
+      banner2: "*                Use the OpenStreetMap web site to reply.                 *"
+      hi: "Hi {{to_user}},"
+      header: "{{from_user}} has sent you a message through OpenStreetMap with the subject {{subject}}:"
+      footer1: "You can also read the message at {{readurl}}"
+      footer2: "and you can reply at {{replyurl}}"
+    friend_notification:
+      subject: "[OpenStreetMap] {{user}} added you as a friend"
+      had_added_you: "{{user}} has added you as a friend on OpenStreetMap."
+      see_their_profile: "You can see their profile at {{userurl}} and add them as a friend too if you wish."
+    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."
+      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"
+      success:
+        subject: "[OpenStreetMap] GPX Import success"
+        loaded_successfully: |
+          loaded successfully with {{trace_points}} out of a possible
+          {{possible_points}} points.
+    signup_confirm:
+      subject: "[OpenStreetMap] Confirm your email address"
+    signup_confirm_plain:
+      greeting: "Hi there!"
+      hopefully_you: "Someone (hopefully you) would like to create an account over at"
+      # 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"
+      # 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:"
+    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>.'
+    email_confirm:
+      subject: "[OpenStreetMap] Confirm your email address"
+    email_confirm_plain:
+      greeting: "Hi,"
+      hopefully_you_1: "Someone (hopefully you) would like to change their email address over at"
+      hopefully_you_2: "{{server_url}} to {{new_address}}."
+      click_the_link: "If this is you, please click the link below to confirm the change."
+    email_confirm_html:
+      greeting: "Hi,"
+      hopefully_you: "Someone (hopefully you) would like to change their email address over at {{server_url}} to {{new_address}}."
+      click_the_link: "If this is you, please click the link below to confirm the change."
+    lost_password:
+      subject: "[OpenStreetMap] Password reset request"
+    lost_password_plain:
+      greeting: "Hi,"
+      hopefully_you_1: "Someone (possibly you) has asked for the password to be reset on this"
+      hopefully_you_2: "email addresses openstreetmap.org account."
+      click_the_link: "If this is you, please click the link below to reset your password."
+    lost_password_html:
+      greeting: "Hi,"
+      hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
+      click_the_link: "If this is you, please click the link below to reset your password."
+    reset_password:
+      subject: "[OpenStreetMap] Password reset"
+    reset_password_plain:
+      greeting: "Hi,"
+      reset: "Your password has been reset to {{new_password}}"
+    reset_password_html:
+      greeting: "Hi,"
+      reset: "Your password has been reset to {{new_password}}"
+  message:
+    inbox:
+      title: "Inbox"
+      my_inbox: "My inbox"
+      outbox: "outbox"
+      you_have: "You have {{new_count}} new messages and {{old_count}} old messages"
+      from: "From"
+      subject: "Subject"
+      date: "Date"
+      no_messages_yet: "You have no messages yet. Why not get in touch with some of the {{people_mapping_nearby_link}}?"
+      people_mapping_nearby: "people mapping nearby" 
+    message_summary:
+      unread_button: "Mark as unread"
+      read_button: "Mark as read"
+      reply_button: "Reply"
+    new:
+      title: "Send message"
+      send_message_to: "Send a new message to {{name}}"
+      subject: "Subject"
+      body: "Body"
+      send_button: "Send"
+      back_to_inbox: "Back to inbox"
+      message_sent: "Message sent"
+    no_such_user:
+      title: "No such user or message"
+      heading: "No such user or message"
+      body: "Sorry there is no user or message with that name or id"
+    outbox: 
+      title: "Outbox"
+      my_inbox: "My {{inbox_link}}"
+      inbox: "inbox"
+      outbox: "outbox"
+      you_have_sent_messages: "You have {{sent_count}} sent messages"
+      to: "To"
+      subject: "Subject"
+      date: "Date"
+      no_sent_messages: "You have no sent messages yet. Why not get in touch with some of the {{people_mapping_nearby_link}}?"
+      people_mapping_nearby: "people mapping nearby"
+    read:
+      title: "Read message"
+      reading_your_messages: "Reading your messages"
+      from: "From"
+      subject: "Subject"
+      date: "Date"
+      reply_button: "Reply"
+      unread_button: "Mark as unread"
+      back_to_inbox: "Back to inbox"
+      reading_your_sent_messages: "Reading your sent messages"
+      to: "To"
+      back_to_outbox: "Back to outbox"
+    mark:
+      as_read: "Message marked as read"
+      as_unread: "Message marked as unread"
+  site:
+    index:
+      js_1: "You are either using a browser that doesn't support javascript, or you have disabled javascript."
+      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"
+        license_url: "http://creativecommons.org/licenses/by-sa/2.0/"
+        project_name: "OpenStreetMap project"
+        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
+      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 live mode, or click save if you have a save button.)"
+    sidebar:
+      search_results: Search Results
+      close: Close
+    search:
+      search: Search
+      where_am_i: "Where am I?"
+      submit_text: "Go"
+      search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
+    key:
+      map_key: "Map key"
+      map_key_tooltip: "Map key for the mapnik rendering at this zoom level"
+      table:
+        heading: "Legend for z{{zoom_level}}"
+        entry:
+          motorway: "Motorway"
+          trunk: "Trunk road"
+          primary: "Primary road"
+          secondary: "Secondary road"
+          unclassified: "Unclassified road"
+          unsurfaced: "Unsurfaced road"
+          track: "Track"
+          byway: "Byway"
+          bridleway: "Bridleway"
+          cycleway: "Cycleway"
+          footway: "Footway"
+          rail: "Railway"
+          subway: "Subway"
+          tram:
+            - Light rail
+            - tram
+          cable:
+            - Cable car
+            - chair lift
+          runway:
+            - Airport Runway
+            - taxiway
+          apron:
+            - Airport apron
+            - terminal
+          admin: "Administrative boundary"
+          forest: "Forest"
+          wood: "Wood"
+          golf: "Golf course"
+          park: "Park"
+          resident: "Residential area"
+          tourist: "Tourist attraction"
+          common:
+            - Common
+            - meadow
+          retail: "Retail area"
+          industrial: "Industrial area"
+          commercial: "Commercial area"
+          heathland: "Heathland"
+          lake:
+            - Lake
+            - reservoir
+          farm: "Farm"
+          brownfield: "Brownfield site"
+          cemetery: "Cemetery"
+          allotments: "Allotments"
+          pitch: "Sports pitch"
+          centre: "Sports centre"
+          reserve: "Nature reserve"
+          military: "Military area"
+          school: "School; university"
+          building: "Significant building"
+          station: "Railway station"
+          summit:
+            - Summit
+            - peak
+          tunnel: "Dashed casing = tunnel"
+          bridge: "Black casing = bridge"
+          private: "Private access"
+          permissive: "Permissive access"
+          destination: "Destination access"
+          construction: "Roads under construction"
+  trace:
+    create:
+      upload_trace: "Upload GPS Trace"
+      trace_uploaded: "Your GPX file has been uploaded and is awaiting insertion in to the database. This will usually happen within half an hour, and an email will be sent to you on completion."
+    edit:
+      title: "Editing trace {{name}}"
+      heading: "Editing trace {{name}}"
+      filename: "Filename:"
+      download: "download"
+      uploaded_at: "Uploaded at:"
+      points: "Points:"
+      start_coord: "Start coordinate:"
+      map: "map"
+      edit: "edit"
+      owner: "Owner:"
+      description: "Description:"
+      tags: "Tags:"
+      tags_help: "comma delimited"
+      save_button: "Save Changes"
+    no_such_user:
+      title: "No such user"
+      heading: "The user {{user}} does not exist"
+      body: "Sorry, there is no user with the name {{user}}. Please check your spelling, or maybe the link you clicked is wrong."
+    trace_form:
+      upload_gpx: "Upload GPX File"
+      description: "Description"
+      tags: "Tags"
+      tags_help: "use commas"
+      public: "Public?"
+      public_help: "what does this mean?"
+      public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
+      upload_button: "Upload"
+      help: "Help"
+      help_url: "http://wiki.openstreetmap.org/wiki/Upload"
+    trace_header:
+      see_just_your_traces: "See just your traces, or upload a trace"
+      see_all_traces: "See all traces"
+      see_your_traces: "See all your traces"
+      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."
+    trace_optionals:
+      tags: "Tags"
+    view:
+      title: "Viewing trace {{name}}"
+      heading: "Viewing trace {{name}}"
+      pending: "PENDING"
+      filename: "Filename:"
+      download: "download"
+      uploaded: "Uploaded at:"
+      points: "Points:"
+      start_coordinates: "Start coordinate:"
+      map: "map"
+      edit: "edit"
+      owner: "Owner:"
+      description: "Description:"
+      tags: "Tags:"
+      none: "None"
+      make_public: "Make this track public permanently"
+      edit_track: "Edit this track"
+      delete_track: "Delete this track"
+      trace_not_found: "Trace not found!"
+    trace_paging_nav:
+      showing: "Showing page"
+      of: "of"
+    trace:
+      pending: "PENDING"
+      count_points: "{{count}} points"
+      ago: "{{time_in_words_ago}} ago"
+      more: "more"
+      trace_details: "View Trace Details"
+      view_map: "View Map"
+      edit: "edit"
+      edit_map: "Edit Map"
+      public: "PUBLIC"
+      private: "PRIVATE"
+      by: "by"
+      in: "in"
+      map: "map"
+    list:
+      public_traces: "Public GPS traces"
+      your_traces: "Your GPS traces"
+      public_traces_from: "Public GPS traces from {{user}}"
+      tagged_with: " tagged with {{tags}}"
+    delete:
+      scheduled_for_deletion: "Track scheduled for deletion"
+    make_public:
+      made_public: "Track made public"
+  user:
+    login:
+      title: "Login"
+      heading: "Login"
+      please login: "Please login or {{create_user_link}}."
+      create_account: "create an account"
+      email or username: "Email Address or Username: "
+      password: "Password: "
+      lost password link: "Lost your password?"
+      login_button: "Login"
+      account not active: "Sorry, your account is not active yet.<br>Please click on the link in the account confirmation email to activate your account."
+      auth failure: "Sorry, couldn't log in with those details."
+    lost_password:
+      title: "lost password"
+      heading: "Forgotten Password?"
+      email address: "Email Address:"
+      new password button: "Send me a new password"
+      notice email on way: "Sorry you lost it :-( but an email is on its way so you can reset it soon."
+      notice email cannot find: "Couldn't find that email address, sorry."
+    reset_password:
+      title: "reset password"
+      flash changed check mail: "Your password has been changed and is on its way to your mailbox :-)"
+      flash token bad: "Didn't find that token, check the URL maybe?"
+    new:
+      title: "Create account"
+      heading: "Create a User Account"
+      no_auto_account_create: "Unfortunately we are not currently able to create an account for you automatically."
+      contact_webmaster: 'Please contact the <a href="mailto:webmaster@openstreetmap.org">webmaster</a> to arrange for an account to be created - we will try and deal with the request as quickly as possible. '
+      fill_form: "Fill in the form and we'll send you a quick email to activate your account."
+      license_agreement: 'By creating an account, you agree that all data you submit to the Openstreetmap project is to be (non-exclusively) licensed under <a href="http://creativecommons.org/licenses/by-sa/2.0/">this Creative Commons license (by-sa)</a>.'
+      email address: "Email Address: "
+      confirm email address: "Confirm Email Address: "
+      not displayed publicly: 'Not displayed publicly (see <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="wiki privacy policy including section on email addresses">privacy policy</a>)'
+      display name: "Display Name: "
+      password: "Password: "
+      confirm password: "Confirm Password: "
+      signup: Signup
+      flash create success message: "User was successfully created. Check your email for a confirmation note, and you'll be mapping in no time :-)<br /><br />Please note that you won't be able to login until you've received and confirmed your email address.<br /><br />If you use an antispam system which sends confirmation requests then please make sure you whitelist webmaster@openstreetmap.org as we are unable to reply to any confirmation requests."
+    no_such_user:
+      title: "No such user"
+      heading: "The user {{user}} does not exist"
+      body: "Sorry, there is no user with the name {{user}}. Please check your spelling, or maybe the link you clicked is wrong."
+    view:
+      my diary: my diary
+      new diary entry: new diary entry
+      my edits: my edits
+      my traces: my traces
+      my settings: my settings
+      send message: send message
+      diary: diary
+      edits: edits
+      traces: traces
+      remove as friend: remove as friend
+      add as friend: add as friend
+      mapper since: "Mapper since: "
+      ago: "({{time_in_words_ago}} ago)"
+      user image heading: User image
+      delete image: Delete Image
+      upload an image: Upload an image
+      add image: Add Image
+      description: Description
+      user location: User location
+      no home location: "No home location has been set."
+      if set location: "If you set your location, a pretty map and stuff will appear below. You can set your home location on your {{settings_link}} page."
+      settings_link_text: settings
+      your friends: Your friends
+      no friends: You have not added any friends yet.
+      km away: "{{count}}km away"
+      m away: "{{count}}m away"
+      nearby users: "Nearby users: "
+      no nearby users: "There are no users who admit to mapping nearby yet."
+      change your settings: change your settings
+    friend_map:
+      your location: Your location
+      nearby mapper: "Nearby mapper: "
+    account:
+      title: "Edit account"
+      my settings: My settings
+      email never displayed publicly: "(never displayed publicly)"
+      public editing:
+        heading: "Public editing: "
+        enabled: "Enabled. Not anonymous and can edit data."
+        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?"
+      profile description: "Profile Description: "
+      preferred languages: "Preferred Languages: "
+      home location: "Home Location: "
+      no home location: "You have not entered your home location."
+      latitude: "Latitude: "
+      longitude: "Longitude: "
+      update home location on click: "Update home location when I click on the map?"
+      save changes button: Save Changes
+      make edits public button: Make all my edits public
+      return to profile: Return to profile
+      flash update success confirm needed: "User information updated successfully. Check your email for a note to confirm your new email address."
+      flash update success: "User information updated successfully."
+    confirm:
+      heading: Confirm a user account
+      press confirm button: "Press the confirm button below to activate your account."
+      button: Confirm
+      success: "Confirmed your account, thanks for signing up!"
+      failure: "A user account with this token has already been confirmed."
+    confirm_email:
+      heading: Confirm a change of email address
+      press confirm button: "Press the confirm button below to confirm your new email address."
+      button: Confirm
+      success: "Confirmed your email address, thanks for signing up!"
+      failure: "An email address has already been confirmed with this token."
+    set_home:
+      flash success: "Home location saved successfully"
+    go_public:
+      flash success: "All your edits are now public, and you are now allowed to edit."
+    make_friend:
+      success: "{{name}} is now your friend."
+      failed: "Sorry, failed to add {{name}} as a friend."
+      already_a_friend: "You are already friends with {{name}}."
+    remove_friend:
+      success: "{{name}} was removed from your friends."
+      not_a_friend: "{{name}} is not one of your friends."
index a4022ddc4d1bed38ff8518b28b07d29c36ea9f8d..58859588a2abc883b8ef996786dcbd8d9f528bce 100644 (file)
@@ -77,7 +77,7 @@ ru:
   browse:
     changeset:
       title: "Пакет изменений"
-      changeset: "Пакет изменений:"
+      changeset: "Пакет изменений: {{id}}"
       download: "Загрузить {{changeset_xml_link}} или {{osmchange_xml_link}}"
       changesetxml: "XML пакета изменений"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -290,9 +287,15 @@ ru:
       add_marker: "Добавить маркер на карту"
       view_larger_map: "Посмотреть бо&#769;льшую карту"
   geocoder:
+    search:
+      title:
+        latlon: 'Результаты из <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: 'Результаты из <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Результаты из <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Результаты из <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Результаты из <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Результаты из <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "Результаты"
-      type_from_source: "{{type}} из {{source_link}}"
       no_results: "Ничего не найдено"
   layouts:
     welcome_user: "Добро пожаловать, {{user_link}}"
@@ -436,7 +439,6 @@ ru:
       search: Поиск
       where_am_i: "Где я?"
       submit_text: "->"
-      searching: "Поиск..."
       search_help: "примеры: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', или 'post offices near LУМnen' <a href='http://wiki.openstreetmap.org/wiki/Search'>больше примеров...</a>"
     key:
       map_key: "Легенда"
index ab542855dc6b086d5fb3d53d5d3685b7d9236894..b05af69b697f3f99fc0bbdbdded807955ebe6845 100644 (file)
@@ -12,10 +12,10 @@ sl:
       diary_entry: "Vpis v dnevnik"
       friend: "Prijatelj"
       language: "Jezik"
-      message: "Message"
-      node: "Node"
-      node_tag: "Node Tag"
-      notifier: "Notifier"
+      message: "Sporočilo"
+      node: "Vozlišče"
+      node_tag: "Oznaka vozlišča"
+      notifier: "Obveščevalec"
       old_node: "Old Node"
       old_node_tag: "Old Node Tag"
       old_relation: "Old Relation"
@@ -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:
@@ -79,38 +79,55 @@ sl:
   browse:
     changeset:
       title: "Paket sprememb"
-      changeset: "Paket sprememb:"
+      changeset: "Paket sprememb: {{id}}"
       download: "Prenesi {{changeset_xml_link}} ali {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
     changeset_details:
-      created_at: "Ustvarjen ob:"
-      closed_at: "Zaključen ob:"
+      created_at: "Ustvarjen:"
+      closed_at: "Zaključen:"
       belongs_to: "Pripada:"
       bounding_box: "Pravokotno področje:"
       no_bounding_box: "Ta paket nima določenega pravokotnega področja."
       show_area_box: "Prikaži pravokotno področje"
       box: "področje"
-      has_nodes: "Vsebuje naslednjih {{count}} vozlišč:"
-      has_ways: "Vsebuje naslednjih {{count}} poti:"
-      has_relations: "Vsebuje naslednjih {{count}} relacij:"
+      has_nodes:
+        one: "Vsebuje naslednje {{count}} vozlišče:"
+        two: "Vsebuje naslednji {{count}} vozlišči:"
+        few: "Vsebuje naslednja {{count}} vozlišča:"
+        other: "Vsebuje naslednjih {{count}} vozlišč:"
+      has_ways: 
+        one: "Vsebuje naslednjo {{count}} pot:"
+        two: "Vsebuje naslednji {{count}} poti:"
+        few: "Vsebuje naslednje {{count}} poti:"
+        other: "Vsebuje naslednjih {{count}} poti:"
+      has_relations: 
+        one: "Vsebuje naslednjo {{count}} relacijo:"
+        two: "Vsebuje naslednji {{count}} relaciji:"
+        few: "Vsebuje naslednje {{count}} relacije:"
+        other: "Vsebuje naslednjih {{count}} relacij:"
     common_details: 
       edited_at: "Urejeno ob:"
       edited_by: "Uredil:"
       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 +137,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 +154,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 +170,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"
@@ -160,7 +184,7 @@ sl:
       history_for_feature: "Zgodovina [[feature]]"
       details: "Podrobnosti"
       private_user: "anonimni uporabnik"
-      edited_by_user_at_timestamp: "Uredil [[user]] ob [[timestamp]]"
+      edited_by_user_at_timestamp: "Uredil [[user]] v [[timestamp]]"
       object_list:
         heading: "Seznam predmetov"
         back: "Prikaži seznam predmetov"
@@ -200,6 +224,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"
@@ -215,7 +240,7 @@ sl:
       more: "več"
     changesets:
       id: "ID"
-      saved_at: "Shranjeno ob"
+      saved_at: "Shranjen"
       user: "Uporabnik"
       comment: "Komentar"
       area: "Področje"
@@ -272,22 +297,26 @@ 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"
       heading: "Uporabnik {{user}} ne obstaja"
       body: "Oprostite, uporabnika z imenom {{user}} ni. Prosimo, preverite črkovanje in povezavo, ki ste jo kliknili."
     diary_entry:
-      posted_by: "Objavil {{link_user}} ob {{created}} v jeziku {{language_link}}"
+      posted_by: "Objavil {{link_user}} v {{created}} v jeziku {{language_link}}"
       comment_link: Komentiraj ta vnos
       reply_link: Odgovori na ta vnos
       comment_count: 
-        one: 1 komentar
+        zero: "brez komentarjev"
+        one: "{{count}} komentar"
+        two: "{{count}} komentarja"
+        few: "{{count}} komentarji"
         other: "{{count}} komentarjev"
       edit_link: Uredi ta vnos
     diary_comment:
-      comment_from: "Komentar uporabnika {{link_user}} ob {{comment_created_at}}"
+      comment_from: "Komentar uporabnika {{link_user}} v {{comment_created_at}}"
   export:
     start:
       area_to_export: "Področje za izvoz"
@@ -298,11 +327,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 +347,78 @@ 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:
+    search:
+      title:
+        latlon: '<a href="http://openstreetmap.org/">Interni</a> zadetki'
+        us_postcode: 'Zadetki iz <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Zadetki iz <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Zadetki iz <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Zadetki iz <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Zadetki iz <a href="http://www.geonames.org/">GeoNames</a>'
+    search_osm_namefinder:
+      prefix: "{{type}} "
+      suffix_place: ", {{distance}} {{direction}} od {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} od {{parentname}})"
+      suffix_suburb: "{{suffix}}, {{parentname}}"
+    description:
+      title:
+        osm_namefinder: '{{types}} iz <a href="http://gazetteer.openstreetmap.org/namefinder/">iskalca po OpenStreetMap-u</a>'
+        geonames: 'Lokacija iz <a href="http://www.geonames.org/">GeoNames</a>'
+      types:
+        cities: Velemesta
+        towns: Mesta
+        places: Kraji
+    description_osm_namefinder:
+      prefix: "{{distance}} {{direction}} od {{type}} "
     results:
-      results: "Zadetki"
-      type_from_source: "{{type}} iz {{source_link}}"
       no_results: "Ni zadetkov"
+    distance:
+      zero: "manj kot 1 km"
+      one: "približno {{count}} km"
+      two: "približno {{count}} km"
+      few: "približno {{count}} km"
+      other: "približno {{count}} km"
+    direction:
+      south_west: "jugozahodno"
+      south: "južno"
+      south_east: "jugovzhodno"
+      east: "vzhodno"
+      north_east: "severovzhodno"
+      north: "severno"
+      north_west: "severozahodno"
+      west: "zahodno"
   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"
-    inbox: "prejeta pošta ({{count}})"
+    home_tooltip: Prikaži domači kraj
+    inbox:
+      zero: "Ni sporočil"
+      one: "{{count}} sporočilo"
+      two: "{{count}} sporočili"
+      few: "{{count}} sporočila"
+      other: "{{count}} sporočil"
+    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 +442,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 +458,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 +498,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 +609,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
@@ -540,33 +632,92 @@ sl:
       search: Iskanje
       where_am_i: "Kje sem?"
       submit_text: "Išči"
-      searching: "Iščem..."
       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:"
+      tags_help: "ločene z vejicami"
       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:
       upload_gpx: "Pošljite datoteko GPX"
       description: "Opis"
       tags: "Oznake"
+      tags_help: "uporabite vejice"
       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"
@@ -574,33 +725,42 @@ sl:
       see_just_your_traces: "Seznam le mojih in pošiljanje novih sledi"
       see_all_traces: "Seznam vseh sledi"
       see_your_traces: "Seznam vseh mojih sledi"
-      traces_waiting: "V čakalni vrsti na uvoz čaka {{count}} sledi. Prosim, razmislite o tem, da bi počakali, da se te sledi uvozijo preden pošljete nove in s tem ne podaljšujete vrste drugim uporabnikom."
+      traces_waiting:
+        one: "V čakalni vrsti na uvoz čaka {{count}} sled. Prosim, razmislite o tem, da bi počakali, da se te sledi uvozijo preden pošljete nove in s tem ne podaljšujete vrste drugim uporabnikom."
+        two: "V čakalni vrsti na uvoz čakata {{count}} sledi. Prosim, razmislite o tem, da bi počakali, da se te sledi uvozijo preden pošljete nove in s tem ne podaljšujete vrste drugim uporabnikom."
+        few: "V čakalni vrsti na uvoz čakajo {{count}} sledi. Prosim, razmislite o tem, da bi počakali, da se te sledi uvozijo preden pošljete nove in s tem ne podaljšujete vrste drugim uporabnikom."
+        other: "V čakalni vrsti na uvoz čaka {{count}} sledi. Prosim, razmislite o tem, da bi počakali, da se te sledi uvozijo preden pošljete nove in s tem ne podaljšujete vrste drugim uporabnikom."
     trace_optionals:
       tags: "Oznake"
     view:
+      title: "Prikaz sledi {{name}}"
+      heading: "Prikaz sledi {{name}}" 
       pending: "ČAKAJOČA"
       filename: "Datoteka:"
       download: "prenos"
-      uploaded: "Poslano ob:"
+      uploaded: "Poslano:"
       points: "Točk:"
       start_coordinates: "Začetna koordinata:"
       map: "zemljevid"
       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"
       of: "od"
     trace:
       pending: "ČAKAJOČA"
-      count_points: "{{count}} točk" 
+      count_points:
+        one: "{{count}} točka"
+        two: "{{count}} toči"
+        few: "{{count}} točke"
+        other: "{{count}} točk"
       ago: "{{time_in_words_ago}} nazaj" 
       more: "več"
       trace_details: "Ogled podrobnnosti zemljevida"
@@ -615,7 +775,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 +810,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>)'
@@ -688,7 +848,16 @@ sl:
       settings_link_text: vaših nastavitvah
       your friends: Vaši prijatelji
       no friends: Niste še dodali nobenih prijateljev.
-      km away: "Oddaljen {{count}} km"
+      km away:
+        one: "Oddaljen {{count}} kilometer"
+        two: "Oddaljen {{count}} kilometra"
+        few: "Oddaljen {{count}} kilometre"
+        other: "Oddaljen {{count}} kilometrov"
+      m away:
+        one: "Oddaljen {{count}} meter"
+        two: "Oddaljen {{count}} metra"
+        few: "Oddaljen {{count}} metre"
+        other: "Oddaljen {{count}} metrov"
       nearby users: "Bližnji uporabniki: "
       no nearby users: "Ni uporabnikov, ki bi priznali, da kartirajo v vaši bližini."
       change your settings: uredite vaše nastavitve
@@ -702,7 +871,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 +885,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."
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
new file mode 100644 (file)
index 0000000..41f84b6
--- /dev/null
@@ -0,0 +1,888 @@
+vi:
+  html:
+    dir: ltr
+  activerecord:
+    # Translates all the model names, which is used in error handling on the web site
+    models:
+      acl: "Danh sách Điều khiển Truy cập"
+      changeset: "Bộ thay đổi"
+      changeset_tag: "Thẻ Bộ thay đổi"
+      country: "Quốc gia"
+      diary_comment: "Bình luận Nhật ký"
+      diary_entry: "Mục Nhật ký"
+      friend: "Người bạn"
+      language: "Ngôn ngữ"
+      message: "Thư"
+      node: "Nốt"
+      node_tag: "Thẻ Nốt"
+      notifier: "Trình báo"
+      old_node: "Nốt Cũ"
+      old_node_tag: "Thẻ Nốt Cũ"
+      old_relation: "Quan hệ Cũ"
+      old_relation_member: "Thành viên Quan hệ Cũ"
+      old_relation_tag: "Thẻ Quan hệ Cũ"
+      old_way: "Lối Cũ"
+      old_way_node: "Nốt Lối Cũ"
+      old_way_tag: "Thẻ Lối Cũ"
+      relation: "Quan hệ"
+      relation_member: "Thành viên Quan hệ"
+      relation_tag: "Thẻ Quan hệ"
+      session: "Phiên"
+      trace: "Tuyến đường"
+      tracepoint: "Điểm Tuyến đường"
+      tracetag: "Thẻ Tuyến đường"
+      user: "Người dùng"
+      user_preference: "Tùy chọn Cá nhân"
+      user_token: "Dấu hiệu Cá nhân"
+      way: "Lối"
+      way_node: "Nốt Lối"
+      way_tag: "Thẻ Lối"
+    # 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: "Nội dung"
+      diary_entry:
+        user: "Người dùng"
+        title: "Tiêu đề"
+        latitude: "Vĩ độ"
+        longitude: "Kinh độ"
+        language: "Ngôn ngữ"
+      friend:
+        user: "Người dùng"
+        friend: "Người bạn"
+      trace:
+        user: "Người dùng"
+        visible: "Thấy được"
+        name: "Tên"
+        size: "Kích cỡ"
+        latitude: "Vĩ độ"
+        longitude: "Kinh độ"
+        public: "Công khai"
+        description: "Miêu tả"
+      message:
+        sender: "Người gửi"
+        title: "Tiêu đề"
+        body: "Nội dung"
+        recipient: "Người nhận"
+      user:
+        email: "Thư điện tử"
+        active: "Tích cực"
+        display_name: "Tên Hiển thị"
+        description: "Miêu tả"
+        languages: "Ngôn ngữ"
+        pass_crypt: "Mật khẩu"
+  printable_name:
+    with_id: "{{id}}"
+    with_version: "{{id}}, v{{version}}"
+    with_name: "{{name}} ({{id}})"
+  map:
+    view: "Hiển thị"
+    edit: "Sửa đổi"
+    coordinates: "Tọa độ:"
+  browse:
+    changeset:
+      title: "Bộ thay đổi"
+      changeset: "Bộ thay đổi: {{id}}"
+      download: "Tải xuống {{changeset_xml_link}} hoặc {{osmchange_xml_link}}"
+      changesetxml: "Bộ thay đổi XML"
+      osmchangexml: "osmChange XML"
+    changeset_details:
+      created_at: "Lúc Tạo:"
+      closed_at: "Lúc Đóng:"
+      belongs_to: "Người Sửa đổi:"
+      bounding_box: "Hộp bao:"
+      no_bounding_box: "Không lưu hộp bao của bộ thay đổi này."
+      show_area_box: "Hiện Hộp vùng"
+      box: "hộp"
+      has_nodes: "Có {{count}} nốt sau:"
+      has_ways: "Có {{count}} lối sau:"
+      has_relations: "Có {{count}} quan hệ sau:"
+    common_details: 
+      edited_at: "Lúc Sửa đổi:"
+      edited_by: "Người Sửa đổi:"
+      version: "Phiên bản:"
+      in_changeset: "Thuộc bộ thay đổi:"
+    containing_relation:
+      entry: "Quan hệ {{relation_name}}"
+      entry_role: "Quan hệ {{relation_name}} (vai trò: {{relation_role}})"
+    map:
+      loading: "Đang tải..."
+      deleted: "Đã xóa"
+      larger:
+        area: "Xem vùng trên bản đồ rộng hơn"
+        node: "Xem nốt trên bản đồ rộng hơn"
+        way: "Xem lối trên bản đồ rộng hơn"
+        relation: "Xem quan hệ trên bản đồ rộng hơn"
+    node_details:
+      coordinates: "Tọa độ: "
+      part_of: "Trực thuộc:"
+    node_history:
+      node_history: "Lịch sử Nốt"
+      node_history_title: "Lịch sử Nốt: {{node_name}}"
+      download: "{{download_xml_link}} hoặc {{view_details_link}}"
+      download_xml: "Tải xuống XML"
+      view_details: "xem chi tiết"
+    node:
+      node: "Nốt"
+      node_title: "Nốt: {{node_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}}, hoặc {{edit_link}}"
+      download_xml: "Tải xuống XML"
+      view_history: "xem lịch sử"
+      edit: "sửa đổi"
+    not_found:
+      sorry: "Rất tiếc, không thể tìm thấy {{type}} với ID {{id}}."
+      type:
+        node: "nốt"
+        way: "lối"
+        relation: "quan hệ"
+    paging_nav:
+      showing_page: "Đang hiện trang"
+      of: "trong"
+    relation_details:
+      members: "Thành viên:"
+      part_of: "Trực thuộc:"
+    relation_history:
+      relation_history: "Lịch sử Quan hệ"
+      relation_history_title: "Lịch sử Quan hệ: {{relation_name}}"
+    relation_member:
+      entry: "{{type}} {{name}}"
+      entry_role: "{{type}} {{name}} với vai trò {{role}}"
+      type:
+        node: "Nốt"
+        way: "Lối"
+        relation: "Quan hệ"
+    relation:
+      relation: "Quan hệ"
+      relation_title: "Quan hệ: {{relation_name}}"
+      download: "{{download_xml_link}} hoặc {{view_history_link}}"
+      download_xml: "Tải xuống XML"
+      view_history: "xem lịch sử"
+    start:
+      view_data: "Xem dữ liệu của phần bản đồ đang xem"
+      manually_select: "Chọn vùng khác thủ công"
+    start_rjs:
+      data_layer_name: "Dữ liệu"
+      data_frame_title: "Dữ liệu"
+      zoom_or_select: "Phóng to hoặc chọn vùng bản đồ để xem"
+      drag_a_box: "Kéo hộp trên bản đồ để chọn vùng"
+      manually_select: "Chọn vùng khác thủ công"
+      loaded_an_area_with_num_features: "Bạn đã tải vùng chứa [[num_features]] nét. Một số trình duyệt không hiển thị nổi nhiều dữ liệu như thế. Nói chung, trình duyệt hoạt động tốt khi nào chỉ có 100 nét cùng lúc: hơn thì trình duyệt sẽ chậm chạp. Nếu bạn chắc chắn muốn xem dữ liệu này, hãy bấm nút ở dưới."
+      load_data: "Tải Dữ liệu"
+      unable_to_load_size: "Không thể tải: Hộp bao với cỡ [[bbox_size]] quá lớn (phải nhỏ hơn {{max_bbox_size}})"
+      loading: "Đang tải..."
+      show_history: "Xem Lịch sử"
+      wait: "Xin chờ..."
+      history_for_feature: "Lịch sử [[feature]]"
+      details: "Chi tiết"
+      private_user: "người bí mật"
+      edited_by_user_at_timestamp: "Được sửa đổi bởi [[user]] lúc [[timestamp]]"
+      object_list:
+        heading: "Danh sách đối tượng"
+        back: "Liệt kê các đối tượng"
+        type:
+          node: "Nốt"
+          way: "Lối"
+          # There's no 'relation' type because it isn't represented in OpenLayers
+        api: "Lấy vùng này dùng API"
+        details: "Chi tiết"
+        selected:
+          type:
+            node: "Nốt [[id]]"
+            way: "Lối [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+        history:
+          type:
+            node: "Nốt [[id]]"
+            way: "Lối [[id]]"
+            # There's no 'relation' type because it isn't represented in OpenLayers
+    tag_details:
+      tags: "Thẻ:"
+    way_details:
+      nodes: "Nốt:"
+      part_of: "Thuộc về:"
+      also_part_of:
+        one: "cũng thuộc về lối {{related_ways}}"
+        other: "cũng thuộc về các lối {{related_ways}}"
+    way_history:
+      way_history: "Lịch sử Lối"
+      way_history_title: "Lịch sử Lối: {{way_name}}"
+      download: "{{download_xml_link}} hoặc {{view_details_link}}"
+      download_xml: "Tải xuống XML"
+      view_details: "xem chi tiết"
+    way:
+      way: "Lối"
+      way_title: "Lối: {{way_name}}"
+      download: "{{download_xml_link}}, {{view_history_link}}, hoặc {{edit_link}}"
+      download_xml: "Tải xuống XML"
+      view_history: "xem lịch sử"
+      edit: "sửa đổi"
+  changeset:
+    changeset_paging_nav: 
+      showing_page: "Đang hiện trang"
+      of: "trong"
+    changeset:
+      still_editing: "(đang mở)"
+      anonymous: "Vô danh"
+      no_comment: "(không có)"
+      no_edits: "(không có thay đổi)"
+      show_area_box: "hiện hộp vùng"
+      big_area: "(lớn)"
+      view_changeset_details: "Xem chi tiết của bộ thay đổi"
+      more: "thêm"
+    changesets:
+      id: "ID"
+      saved_at: "Lúc Lưu"
+      user: "Người dùng"
+      comment: "Miêu tả"
+      area: "Vùng"
+    list_bbox:
+      history: "Lịch sử"
+      changesets_within_the_area: "Bộ thay đổi ở vùng:"
+      show_area_box: "xem hộp vùng"
+      no_changesets: "Không có bộ thay đổi"
+      all_changes_everywhere: "Xem các thay đổi ở mọi nơi tại {{recent_changes_link}}"
+      recent_changes: "Thay đổi Gần đây"
+      no_area_specified: "Không định rõ vùng"
+      first_use_view: "Trước tiên dùng {{view_tab_link}} để chuyển và phóng to một vùng, rồi nhấn chuột vào thẻ lịch sử."
+      view_the_map: "xem bản đồ"
+      view_tab: "thẻ Xem"
+      alternatively_view: "Hoặc xem tất cả các {{recent_changes_link}}"
+    list:
+      recent_changes: "Thay đổi Gần đây"
+      recently_edited_changesets: "Bộ thay đổi được sửa đổi gần đây:"
+      for_more_changesets: 'Để xem thêm bộ thay đổi, chọn người dùng và xem danh sách sửa đổi của họ, hoặc xem "lịch sử" của một vùng.'
+    list_user:
+      edits_by_username: "Sửa đổi của {{username_link}}"
+      no_visible_edits_by: "{{name}} không có sửa đổi công khai."
+      for_all_changes: "Xem các thay đổi bởi mọi người dùng tại {{recent_changes_link}}"
+      recent_changes: "Thay đổi Gần đây"
+  diary_entry:
+    new:
+      title: "Mục Nhật ký Mới"
+    list:
+      title: "Các Nhật ký Cá nhân"
+      user_title: "Nhật ký của {{user}}"
+      in_language_title: "Các Mục Nhật ký bằng {{language}}"
+      new: "Mục Nhật ký Mới"
+      new_title: "Soạn thảo mục mới trong nhật ký của bạn"
+      no_entries: "Chưa có mục nhật ký"
+      recent_entries: "Mục nhật ký gần đây: "
+      older_entries: "Mục Trước"
+      newer_entries: "Mục Sau"
+    edit:
+      title: "Sửa đổi mục nhật ký"
+      subject: "Tiêu đề: "
+      body: "Nội dung: "
+      language: "Ngôn ngữ: "
+      location: "Vị trí: "
+      latitude: "Vĩ độ: "
+      longitude: "Kinh độ: "
+      use_map_link: "sử dụng bản đồ"
+      save_button: "Lưu"
+      marker_text: "Vị trí của mục nhật ký"
+    view:
+      title: "Các Nhật ký Cá nhân | {{user}}"
+      user_title: "Nhật ký của {{user}}"
+      leave_a_comment: "Bình luận"
+      login_to_leave_a_comment: "{{login_link}} để bình luận"
+      login: "Đăng nhập"
+      save_button: "Lưu"
+    no_such_entry:
+      title: "Mục nhật ký không tồn tại"
+      heading: "Không có mục với ID: {{id}}"
+      body: "Rất tiếc, không có mục hoặc bình luận trong nhật ký với ID {{id}}. Xin hãy kiểm tra chính tả, hoặc có lẽ bạn đã theo một liên kết sai."
+    no_such_user:
+      title: "Người dùng không tồn tại"
+      heading: "Người dùng {{user}} không tồn tại"
+      body: "Rất tiếc, không có người dùng với tên {{user}}. Xin hãy kiểm tra chính tả, hoặc có lẽ bạn đã theo một liên kết sai."
+    diary_entry:
+      posted_by: "Được đăng bởi {{link_user}} lúc {{created}} bằng {{language_link}}"
+      comment_link: "Bình luận về mục này"
+      reply_link: "Trả lời mục này"
+      comment_count:
+        one: "1 bình luận"
+        other: "{{count}} bình luận"
+      edit_link: "Sửa đổi mục này"
+    diary_comment:
+      comment_from: "Bình luận của {{link_user}} lúc {{comment_created_at}}"
+  export:
+    start:
+      area_to_export: "Vùng để Xuất"
+      manually_select: "Chọn vùng khác thủ công"
+      format_to_export: "Định dạng Xuất"
+      osm_xml_data: "Dữ liệu OpenStreetMap XML"
+      mapnik_image: "Hình Mapnik"
+      osmarender_image: "Hình Osmarender"
+      embeddable_html: "HTML để Nhúng"
+      licence: "Giấy phép"
+      export_details: 'Dữ liệu OpenStreetMap được phép sử dụng theo <a href="http://creativecommons.org/licenses/by-sa/2.0/">giấy phép Ghi công–Chia sẻ tương tự Creative Commons 2.0</a>.'
+      options: "Tùy chọn"
+      format: "Định dạng"
+      scale: "Tỷ lệ"
+      max: "tối đa"
+      image_size: "Kích cỡ Hình"
+      zoom: "Thu phóng"
+      add_marker: "Đánh dấu vào bản đồ"
+      latitude: "Vĩ độ:"
+      longitude: "Kinh độ:"
+      output: "Đầu ra"
+      paste_html: "Dán HTML để nhúng vào trang Web"
+      export_button: "Xuất"
+    start_rjs:
+      export: "Xuất"
+      drag_a_box: "Kéo hộp trên bản đồ để chọn vùng"
+      manually_select: "Chọn vùng khác thủ công"
+      click_add_marker: "Nhấn chuột vào bản đồ để đánh dấu"
+      change_marker: "Thay đổi vị trí đánh dấu"
+      add_marker: "Đánh dấu vào bản đồ"
+      view_larger_map: "Xem Bản đồ Rộng hơn"
+  geocoder:
+    search:
+      title:
+        latlon: 'Kết quả <a href="http://www.openstreetmap.org/">nội bộ</a>'
+        us_postcode: 'Kết quả <a href="http://www.geocoder.us/">Geocoder.us</a>'
+        uk_postcode: 'Kết quả <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: 'Kết quả <a href="http://www.geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: 'Kết quả <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Kết quả <a href="http://www.geonames.org/">GeoNames</a>'
+    search_osm_namefinder:
+      prefix: "{{type}} "
+      suffix_place: ", {{distance}} về phía {{direction}} của {{placename}}"
+      suffix_parent: "{{suffix}} ({{parentdistance}} về phía {{parentdirection}} của {{parentname}})"
+      suffix_suburb: "{{suffix}}, {{parentname}}"
+    description:
+      title:
+        osm_namefinder: '{{types}} từ <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: 'Vị trí từ <a href="http://www.geonames.org/">GeoNames</a>'
+      types:
+        cities: "Thành phố"
+        towns: "Thị xã"
+        places: "Địa điểm"
+    description_osm_namefinder:
+      prefix: "{{distance}} về phía {{direction}} của {{type}} "
+    results:
+      no_results: "Không tìm thấy kết quả"
+    distance:
+      zero: "không tới 1 km"
+      one: "khoảng 1 km"
+      other: "khoảng {{count}} km"
+    direction:
+      south_west: "tây nam"
+      south: "nam"
+      south_east: "đông nam"
+      east: "đông"
+      north_east: "đông bắc"
+      north: "bắc"
+      north_west: "tây bắc"
+      west: "tây"
+  layouts:
+    project_name:
+      # in <title>
+      title: "OpenStreetMap"
+      # in <h1>
+      h1: "OpenStreetMap"
+    logo:
+      alt_text: "Biểu trưng OpenStreetMap"
+    welcome_user: "Hoan nghênh, {{user_link}}"
+    welcome_user_link_tooltip: "Trang cá nhân của bạn"
+    home: "nhà"
+    home_tooltip: "Về vị trí nhà"
+    inbox: "hộp thư ({{count}})"
+    inbox_tooltip:
+      zero: "Hộp thư của bạn không có thư chưa đọc"
+      one: "Hộp thư của bạn có 1 thư chưa đọc"
+      other: "Hộp thư của bạn có {{count}} thư chưa đọc"
+    logout: "đăng xuất"
+    logout_tooltip: "Đăng xuất"
+    log_in: "đăng nhập"
+    log_in_tooltip: "Đăng nhập với tài khoản đã tồn tại"
+    sign_up: "đăng ký"
+    sign_up_tooltip: "Mở tài khoản để sửa đổi"
+    view: "Xem"
+    view_tooltip: "Xem bản đồ"
+    edit: "Sửa đổi"
+    edit_tooltip: "Sửa đổi bản đồ"
+    history: "Lịch sử"
+    history_tooltip: "Lịch sử bộ thay đổi"
+    export: "Xuất"
+    export_tooltip: "Xuất dữ liệu bản đồ"
+    gps_traces: "Tuyến đường GPS"
+    gps_traces_tooltip: "Quản lý tuyến đường"
+    user_diaries: "Nhật ký Cá nhân"
+    user_diaries_tooltip: "Đọc các nhật ký cá nhân"
+    tag_line: "Bản đồ Wiki của Thế giới Mở"
+    intro_1: "OpenStreetMap là bản đồ thế giới nguồn mở, do những người như bạn vẽ."
+    intro_2: "OpenStreetMap cho phép xem, sửa đổi, và sử dụng dữ liệu địa lý một cách cộng tác ở mọi nơi trên thế giới."
+    intro_3: "OpenStreetMap hoạt động do sự hỗ trợ hosting của {{ucl}} và {{bytemark}}."
+    intro_3_ucl: "Trung tâm VR tại UCL"
+    intro_3_bytemark: "bytemark"
+    osm_offline: "Cơ sở dữ liệu OpenStreetMap đang ngoại tuyến trong lúc đang thực hiện những công việc bảo quản cơ sở dữ liệu cần thiết."
+    osm_read_only: "Cơ sở dữ liệu OpenStreetMap đang bị khóa không được sửa đổi trong lúc đang thực hiện những công việc bảo quản cơ sở dữ liệu cần thiết."
+    donate: "Hỗ trợ OpenStreetMap bằng cách {{link}} cho Quỹ Nâng cấp Phần cứng."
+    donate_link_text: "quyên góp"
+    help_wiki: "Trợ giúp &amp; Wiki"
+    help_wiki_tooltip: "Site trợ giúp &amp; wiki của dự án"
+    help_wiki_url: "http://wiki.openstreetmap.org/wiki/Vi:Main_Page?uselang=vi"
+    news_blog: "Blog Tin tức"
+    news_blog_tooltip: "Blog có tin tức về OpenStreetMap, dữ liệu địa lý mở, v.v."
+    shop: "Tiệm"
+    shop_tooltip: "Tiệm bán hàng hóa OpenStreetMap"
+    shop_url: "http://wiki.openstreetmap.org/wiki/Merchandise?uselang=vi"
+    sotm: "Mời tham gia Hội nghị OpenStreetMap 2009, The State of the Map (Trình trạng Bản đồ), ngày 10-12 tháng 7 tại Amsterdam!"
+    alt_donation: "Quyên góp"
+  notifier:
+    diary_comment_notification:
+      subject: "[OpenStreetMap] {{user}} đã bình luận về mục nhật ký của bạn"
+      banner1: "*                 Vui lòng đừng trả lời thư điện tử này.                  *"
+      banner2: "*              Hãy sử dụng website OpenStreetMap để trả lời.              *"
+      hi: "Chào {{to_user}},"
+      header: "{{from_user}} đã bình luận về mục nhật ký gần đây của bạn tại OpenStreetMap với tiêu đề {{subject}}:"
+      footer: "Bạn cũng có thể đọc bình luận tại {{readurl}}, bình luận tại {{commenturl}}, hoặc trả lời tại {{replyurl}}"
+    message_notification:
+      subject: "[OpenStreetMap] {{user}} đã gửi thư mới cho bạn"
+      banner1: "*                 Vui lòng đừng trả lời thư điện tử này.                  *"
+      banner2: "*              Hãy sử dụng website OpenStreetMap để trả lời.              *"
+      hi: "Chào {{to_user}},"
+      header: "{{from_user}} đã gửi thư cho bạn dùng OpenStreetMap có tiêu đề {{subject}}:"
+      footer1: "Bạn cũng có thể đọc thư này tại {{readurl}}"
+      footer2: "và trả lời tại {{replyurl}}"
+    friend_notification:
+      subject: "[OpenStreetMap] {{user}} đã thêm bạn là người bạn"
+      had_added_you: "{{user}} đã thêm bạn vào danh sách bạn tại OpenStreetMap."
+      see_their_profile: "Có thể xem trang cá nhân của họ tại {{userurl}} và cũng thêm họ vào danh sách của bạn tùy ý."
+    gpx_notification:
+      greeting: "Chào bạn,"
+      your_gpx_file: "Hình như tập tin GPX của bạn"
+      with_description: "với miêu tả"
+      and_the_tags: "và các thẻ sau:"
+      and_no_tags: "và không có thẻ"
+      failure:
+        subject: "[OpenStreetMap] Nhập GPX thất bại"
+        failed_to_import: "không nhập thành công. Đã gặp lỗi này:"
+        more_info_1: "Có thêm chi tiết về vụ nhập GPX bị thất bại và cách tránh"
+        more_info_2: "vấn đề này tại:"
+        import_failures_url: "http://wiki.openstreetmap.org/wiki/GPX_Import_Failures"
+      success:
+        subject: "[OpenStreetMap] Nhập GPX thành công"
+        loaded_successfully: |
+          {{trace_points}} điểm được tải thành công trên tổng số
+          {{possible_points}} điểm.
+    signup_confirm:
+      subject: "[OpenStreetMap] Xác nhận địa chỉ thư điện tử của bạn"
+    signup_confirm_plain:
+      greeting: "Chào bạn!"
+      hopefully_you: "Ai (chắc bạn) muốn mở tài khoản bên"
+      # next two translations run-on : please word wrap appropriately
+      click_the_link_1: "Nếu bạn là người đó, hoan nghênh! Xin hãy nhấn chuột vào liên kết ở dưới để"
+      click_the_link_2: "xác nhận tài khoản của bạn và đọc tiếp để tìm hiểu thêm về OpenStreetMap."
+      introductory_video: "Bạn có thể coi video giới thiệu OpenStreetMap tại đây:"
+      more_videos: "Có thêm video tại đây:"
+      the_wiki: "Bắt đầu tìm hiểu về OpenStreetMap trên wiki:"
+      the_wiki_url: "http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_Guide"
+      opengeodata: "OpenGeoData.org là blog của OpenStreetMap, nó cũng chứa podcast:"
+      wiki_signup: "Có lẽ bạn cũng muốn mở tài khoản ở wiki OpenStreetMap tại:"
+      wiki_signup_url: "http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Vi:Main_Page"
+      # next four translations are in pairs : please word wrap appropriately
+      user_wiki_1: "Bạn nên tạo ra trang cá nhân trên wiki và gắn các thẻ thể loại để cho"
+      user_wiki_2: "người ta biết bạn ở đâu, thí dụ như [[Category:Users in Hanoi]]."
+      current_user_1: "Có danh sách các người dùng, xếp thể loại theo nơi ở,"
+      current_user_2: ""
+    signup_confirm_html:
+      greeting: "Chào bạn!"
+      hopefully_you: "Ai (chắc bạn) muốn mở tài khoản bên"
+      click_the_link: "Nếu bạn là người đó, hoan nghênh! Xin hãy nhấn chuột vào liên kết ở dưới để xác nhân tài khoản đó và đọc tiếp để tìm hiểu thêm về OpenStreetMap."
+      introductory_video: "Bạn có thể coi {{introductory_video_link}}."
+      video_to_openstreetmap: "video giới thiệu về OpenStreetMap"
+      more_videos: "Cũng có {{more_videos_link}}."
+      more_videos_here: "thêm video tại đây"
+      get_reading: 'Bắt đầu tìm hiểu về OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_Guide?uselang=vi">tại wiki</p> hoặc <a href="http://www.opengeodata.org/">blog OpenGeoData</a>, blog này cũng chứa <a href="http://www.opengeodata.org/?cat=13">podcast để nghe</a>!'
+      wiki_signup: 'Có lẽ bạn cũng muốn <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Vi:Main_Page&uselang=vi">mở tài khoản ở wiki OpenStreetMap</a>.'
+      user_wiki_page: 'Bạn nên tạo ra trang cá nhân trên wiki và gắn các thẻ thể loại để cho người ta biết bạn ở đâu, thí dụ như <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Hanoi?uselang=vi">[[Category:Users in Hanoi]]</a>.'
+      current_user: 'Có danh sách các người dùng, xếp thể loại theo nơi ở, tại <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region?uselang=vi">Category:Users by geographical region</a>.'
+    email_confirm:
+      subject: "[OpenStreetMap] Xác nhân địa chỉ thư điện tử của bạn"
+    email_confirm_plain:
+      greeting: "Chào bạn,"
+      hopefully_you_1: "Ai (chắc bạn) muốn đổi địa chỉ thư điện tử bên"
+      hopefully_you_2: "{{server_url}} thành {{new_address}}."
+      click_the_link: "Nếu bạn là người đó, xin hãy nhấn chuột vào liên kết ở dưới để xác nhận thay đổi này."
+    email_confirm_html:
+      greeting: "Chào bạn,"
+      hopefully_you: "Ai (chắc bạn) muốn đổi địa chỉ thư điện tử bên {{server_url}} thành {{new_address}}."
+      click_the_link: "Nếu bạn là người đó, xin hãy nhấn chuột vào liên kết ở dưới để xác nhận thay đổi này."
+    lost_password:
+      subject: "[OpenStreetMap] Yêu cầu đặt lại mật khẩu"
+    lost_password_plain:
+      greeting: "Hi,"
+      hopefully_you_1: "Ai (chắc bạn) đã xin đặt lại mật khẩu của tài khoản openstreetmap.org"
+      hopefully_you_2: "có địa chỉ thư điện tử này."
+      click_the_link: "Nếu bạn là người đó, xin hãy nhấn chuột vào liên kết ở dưới để đặt lại mật khẩu."
+    lost_password_html:
+      greeting: "Chào bạn,"
+      hopefully_you: "Ai (chắc bạn) đã xin đặt lại mật khẩu của tài khoản openstreetmap.org có địa chỉ thư điện tử này."
+      click_the_link: "Nếu bạn là người đó, xin hãy nhấn chuột vào liên kết ở dưới để đặt lại mật khẩu."
+    reset_password:
+      subject: "[OpenStreetMap] Đã đặt lại mật khẩu"
+    reset_password_plain:
+      greeting: "Chào bạn,"
+      reset: "Mật khẩu của bạn đã được đặt lại thành {{new_password}}"
+    reset_password_html:
+      greeting: "Chào bạn,"
+      reset: "Mật khẩu của bạn đã được đặt lại thành {{new_password}}"
+  message:
+    inbox:
+      title: "Hộp thư"
+      my_inbox: "Hộp thư đến"
+      outbox: "đã gửi"
+      you_have: "Bạn có {{new_count}} thư mới và {{old_count}} thư cũ"
+      from: "Từ"
+      subject: "Tiêu đề"
+      date: "Ngày"
+      no_messages_yet: "Bạn chưa nhận thư nào. Hãy thử liên lạc với {{people_mapping_nearby_link}}?"
+      people_mapping_nearby: "những người ở gần"
+    message_summary:
+      unread_button: "Đánh dấu là chưa đọc"
+      read_button: "Đánh dấu là đã đọc"
+      reply_button: "Trả lời"
+    new:
+      title: "Gửi thư"
+      send_message_to: "Gửi thư mới cho {{name}}"
+      subject: "Tiêu đề"
+      body: "Nội dung"
+      send_button: "Gửi"
+      back_to_inbox: "Trở về hộp thư đến"
+      message_sent: "Thư đã gửi"
+    no_such_user:
+      title: "Người dùng hoặc thư không tồn tại"
+      heading: "Người dùng hoặc thư không tồn tại"
+      body: "Rất tiếc, không có người dùng hoặc thư với tên hoặc ID đó"
+    outbox: 
+      title: "Hộp thư đã gửi"
+      my_inbox: "Hộp {{inbox_link}}"
+      inbox: "thư đến"
+      outbox: "thư đã gửi"
+      you_have_sent_messages: "Bạn đã gửi {{sent_count}} thư"
+      to: "Tới"
+      subject: "Tiêu đề"
+      date: "Ngày"
+      no_sent_messages: "Bạn chưa gửi thư cho người nào. Hãy thử liên lạc với {{people_mapping_nearby_link}}?"
+      people_mapping_nearby: "những người ở gần"
+    read:
+      title: "Đọc thư"
+      reading_your_messages: "Đọc thư"
+      from: "Từ"
+      subject: "Tiêu đề"
+      date: "Ngày"
+      reply_button: "Trả lời"
+      unread_button: "Đánh dấu là chưa đọc"
+      back_to_inbox: "Trở về hộp thư đến"
+      reading_your_sent_messages: "Đọc thư đã gửi"
+      to: "Tới"
+      back_to_outbox: "Trở về hộp thư đã gửi"
+    mark:
+      as_read: "Thư đã đọc"
+      as_unread: "Thư chưa đọc"
+  site:
+    index:
+      js_1: "Hoặc trình duyệt của bạn không hỗ trợ JavaScript, hoặc bạn đã tắt JavaScript."
+      js_2: "OpenStreetMap sử dụng JavaScript cho chức năng bản đồ trơn."
+      js_3: 'Bạn vẫn có thể sử dụng <a href="http://tah.openstreetmap.org/Browse/">bản đồ tĩnh Tiles@Home</a> nếu không bật lên JavaScript được.'
+      permalink: "Liên kết Thường trực"
+      shortlink: "Liên kết Ngắn gọn"
+      license:
+        notice: "{{project_name}} và những người đóng góp cho phép sử dụng theo giấy phép {{license_name}}."
+        license_name: "Creative Commons Attribution-Share Alike 2.0"
+        license_url: "http://www.creativecommons.org/licenses/by-sa/2.0/"
+        project_name: "Dự án OpenStreetMap"
+        project_url: "http://www.openstreetmap.org/"
+    edit:
+      not_public: "Bạn chưa đưa ra công khai các sửa đổi của bạn."
+      not_public_description: "Nếu không đưa ra công khai, bạn không còn được phép sửa đổi bản đồ. Bạn có thể đưa ra công khai tại {{user_page}}."
+      user_page_link: "trang cá nhân"
+      anon_edits: "({{link}})"
+      anon_edits_link: "http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits?uselang=vi"
+      anon_edits_link_text: "Tại sao vậy?"
+      flash_player_required: 'Bạn cần có Flash Player để sử dụng Potlatch, trình vẽ OpenStreetMap bằng Flash. Bạn có thể <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">tải xuống Flash Player từ Adobe.com</a>. Cũng có sẵn <a href="http://wiki.openstreetmap.org/wiki/Editing?uselang=vi">vài cách khác</a> để sửa đổi OpenStreetMap.'
+      potlatch_unsaved_changes: "Bạn có thay đổi chưa lưu. (Để lưu trong Potlatch, hãy bỏ chọn lối hoặc địa điểm đang được chọn, nếu đến sửa đổi trong chế độ Áp dụng Ngay, hoặc bấm nút Lưu nếu có.)"
+    sidebar:
+      search_results: "Kết quả Tìm kiếm"
+      close: "Đóng"
+    search:
+      search: "Tìm kiếm"
+      where_am_i: "Tôi ở đâu?"
+      submit_text: "Đi"
+      search_help: 'thí dụ: "Alkmaar", "Regent Street, Cambridge", "CB2 5AQ", hoặc "post offices near Lünen" - <a href="http://wiki.openstreetmap.org/wiki/Search?uselang=vi">thêm thí dụ...</a>'
+    key:
+      map_key: "Chú giải"
+      map_key_tooltip: "Chú giải kiểu bản đồ Mapnik tại mức thu phóng này"
+      table:
+        heading: "Chú giải tại mức {{zoom_level}}"
+        entry:
+          motorway: "Quốc lộ"
+          trunk: "Xa lộ"
+          primary: "Tỉnh lộ"
+          secondary: "Đường chính"
+          unclassified: "Đường lớn"
+          unsurfaced: "Đường không lát"
+          track: "Đường mòn"
+          byway: "Đường mòn đa mốt"
+          bridleway: "Đường cưỡi ngựa"
+          cycleway: "Đường xe đạp"
+          footway: "Đường đi bộ"
+          rail: "Đường sắt"
+          subway: "Đường ngầm"
+          tram:
+            - "Đường sắt nhẹ"
+            - "xe điện"
+          cable:
+            - "Đường xe cáp"
+            - "ski lift"
+          runway:
+            - "Đường băng"
+            - "đường lăn"
+          apron:
+            - "Sân đậu máy bay"
+            - "nhà ga hành khách"
+          admin: "Biên giới hành chính"
+          forest: "Rừng trồng cây"
+          wood: "Rừng"
+          golf: "Sân golf"
+          park: "Công viên"
+          resident: "Khu vực nhà ở"
+          tourist: "Nơi du lịch"
+          common:
+            - "Đất công"
+            - "bãi cỏ"
+          retail: "Khu vực buôn bán"
+          industrial: "Khu vực công nghiệp"
+          commercial: "Khu vực thương mại"
+          heathland: "Vùng cây bụi"
+          lake:
+            - "Hồ"
+            - "bể nước"
+          farm: "Ruộng"
+          brownfield: "Sân để trống"
+          cemetery: "Nghĩa địa"
+          allotments: "Khu vườn gia đình"
+          pitch: "Sân thể thao"
+          centre: "Trung tâm thể thao"
+          reserve: "Khu bảo tồn thiên niên"
+          military: "Khu vực quân sự"
+          school: "Trường học"
+          building: "Kiến trúc quan trọng"
+          station: "Nhà ga"
+          summit:
+            - "Đỉnh núi"
+            - "đồi"
+          tunnel: "Đường đứt nét = đường hầm"
+          bridge: "Đường rắn = cầu"
+          private: "Đường riêng"
+          permissive: "Đường cho phép"
+          destination: "Chỉ giao thông địa phương"
+          construction: "Đường đang xây"
+  trace:
+    create:
+      upload_trace: "Tải lên Tuyến đường GPS"
+      trace_uploaded: "Tập tin GPX của bạn đã được tải lên và đang chờ được chèn vào cơ sở dữ liệu. Thường chỉ cần chờ đợi trong vòng nửa tiếng, và bạn sẽ nhận thư điện tử lúc khi nó xong."
+    edit:
+      title: "Sửa đổi tuyến đường {{name}}"
+      heading: "Sửa đổi tuyến đường {{name}}"
+      filename: "Tên tập tin:"
+      download: "tải xuống"
+      uploaded_at: "Lúc tải lên:"
+      points: "Số nốt:"
+      start_coord: "Tọa độ đầu đường:"
+      map: "bản đồ"
+      edit: "sửa đổi"
+      owner: "Tác giả:"
+      description: "Miêu tả:"
+      tags: "Thẻ:"
+      save_button: "Lưu các Thay đổi"
+    no_such_user:
+      title: "Người dùng không tồn tại"
+      heading: "Người dùng {{user}} không tồn tại"
+      body: "Rất tiếc, không có người dùng nào với tên {{user}}. Xin hãy kiểm tra chính tả, hoặc có lẽ bạn đã theo một liên kết sai."
+    trace_form:
+      upload_gpx: "Tải lên Tập tin GPX"
+      description: "Miêu tả"
+      tags: "Thẻ"
+      public: "Công khai?"
+      public_help: "có nghĩa là gì?"
+      public_help_url: "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces?uselang=vi"
+      upload_button: "Tải lên"
+      help: "Trợ giúp"
+      help_url: "http://wiki.openstreetmap.org/wiki/Upload?uselang=vi"
+    trace_header:
+      see_just_your_traces: "Chỉ xem các tuyến đường của bạn, hoặc tải lên tuyến đường"
+      see_all_traces: "Xem tất cả các tuyến đường"
+      see_your_traces: "Xem các tuyến đường của bạn"
+      traces_waiting: "Bạn có {{count}} tuyến đường đang chờ được tải lên. Xin hãy chờ đợi việc xong trước khi tải lên thêm tuyến đường, để cho người khác vào hàng đợi kịp."
+    trace_optionals:
+      tags: "Thẻ"
+    view:
+      title: "Xem tuyến đường {{name}}"
+      heading: "Xem tuyến đường {{name}}"
+      pending: "CHƯA XỬ"
+      filename: "Tên tập tin:"
+      download: "tải xuống"
+      uploaded: "Lúc tải lên:"
+      points: "Số nốt:"
+      start_coordinates: "Tọa độ đầu đường:"
+      map: "bản đồ"
+      edit: "sửa đổi"
+      owner: "Tác giả:"
+      description: "Miêu tả:"
+      tags: "Thẻ:"
+      none: "Không có"
+      make_public: "Phát hành tuyến đường công khai thường trực"
+      edit_track: "Sửa đổi tuyến đường này"
+      delete_track: "Xóa tuyến đường này"
+      trace_not_found: "Không tìm thấy tuyến đường!"
+    trace_paging_nav:
+      showing: "Xem trang"
+      of: "trong"
+    trace:
+      pending: "CHƯA XỬ"
+      count_points: "{{count}} nốt"
+      ago: "cách đây {{time_in_words_ago}}"
+      more: "thêm"
+      trace_details: "Xem Chi tiết Tuyến đường"
+      view_map: "Xem Bản đồ"
+      edit: "sửa đổi"
+      edit_map: "Sửa đổi Bản đồ"
+      public: "CÔNG KHAI"
+      private: "RIÊNG"
+      by: "bởi"
+      in: "trong"
+      map: "bản đồ"
+    list:
+      public_traces: "Tuyến đường GPS công khai"
+      your_traces: "Tuyến đường GPS của bạn"
+      public_traces_from: "Tuyến đường GPS công khai của {{user}}"
+      tagged_with: " có thẻ {{tags}}"
+    delete:
+      scheduled_for_deletion: "Tuyến đường chờ được xóa"
+    make_public:
+      made_public: "Tuyến đường được phát hành công khai"
+  user:
+    login:
+      title: "Đăng nhập"
+      heading: "Đăng nhập"
+      please login: "Xin hãy đăng nhập hoặc {{create_user_link}}."
+      create_account: "mở tài khoản"
+      email or username: "Địa chỉ Thư điện tử hoặc Tên đăng ký: "
+      password: "Mật khẩu: "
+      lost password link: "Quên mất Mật khẩu?"
+      login_button: "Đăng nhập"
+      account not active: "Rất tiếc, tài khoản của bạn chưa được kích hoạt.<br>Xin hãy nhấn chuột vào liên kết trong thư điện tử xác nhận tài khoản để kích hoạt tài khoản."
+      auth failure: "Rất tiếc, không thể đăng nhập với những chi tiết đó."
+    lost_password:
+      title: "quên mất mật khẩu"
+      heading: "Quên mất Mật khẩu?"
+      email address: "Địa chỉ Thư điện tử:"
+      new password button: "Gửi mật khẩu mới cho tôi"
+      notice email on way: "Đáng tiếc là bạn quên nó. :-( May là thư điện tử sắp tới để bạn đặt nó lại."
+      notice email cannot find: "Rất tiếc, không tìm thấy địa chỉ thư điện tử."
+    reset_password:
+      title: "đặt lại mật khẩu"
+      flash changed check mail: "Mật khẩu của bạn đã được đổi và mật khẩu mới sắp tới hộp thư của bạn. :-)"
+      flash token bad: "Không tìm thấy dấu hiệu đó. Có lẽ kiểm tra URL?"
+    new:
+      title: "Mở tài khoản"
+      heading: "Mở Tài khoản Người dùng"
+      no_auto_account_create: "Rất tiếc, chúng ta hiện không có khả năng tạo ra tài khoản tự động cho bạn."
+      contact_webmaster: 'Xin hãy liên lạc với <a href="mailto:webmaster@openstreetmap.org">webmaster</a> để xin họ tạo ra tài khoản - chúng tôi sẽ cố gắng thỏa mãn yêu cầu nhanh lẹ. '
+      fill_form: "Điền biểu mẫu rồi chúng tôi sẽ gửi thư điện tử cho bạn để kích hoạt tài khoản."
+      license_agreement: 'Khi mở tài khoản, bạn đã chấp nhận rằng tất cả dữ liệu được bạn đăng lên dự án OpenStreetMap được cho phép (không độc quyền) sử dụng theo <a href="http://www.creativecommons.org/licenses/by-sa/2.0/">giấy phép Creative Commons này (by-sa)</a>.'
+      email address: "Địa chỉ Thư điện tử: "
+      confirm email address: "Xác nhận Địa chỉ Thư điện tử: "
+      not displayed publicly: 'Không được hiển thị công khai (xem <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy?uselang=vi" title="Chính sách riêng tư wiki, có đoạn nói về địa chỉ thư điện tử including section on email addresses">chính sách riêng tư</a>)'
+      display name: "Tên hiển thị: "
+      password: "Mật khẩu: "
+      confirm password: "Xác nhận Mật khẩu: "
+      signup: "Đăng ký"
+      flash create success message: "Tài khoản người dùng được tạo ra thành công. Kiểm tra hộp thư điện tử cho thư xác nhận để bắt đầu vẽ bản đồ ngay lập tức. :-)<br /><br />Xin lưu ý rằng bạn cần phải nhận thư xác nhận và xác nhận địa chỉ thư điện tử trước khi có thể đăng nhập.<br /><br />Nếu hệ thống thư điện tử của bạn có tính năng chống spam bằng cách yêu cầu xác nhận lại, xin hãy chắc chắn thêm webmaster@openstreetmap.org vào danh sách trắng, tại vì chúng tôi không thể trả lời những yêu cầu xác nhận này."
+    no_such_user:
+      title: "Người dùng không tồn tại"
+      heading: "Người dùng {{user}} không tồn tại"
+      body: "Rất tiếc, không có người dùng với tên {{user}}. Xin hãy kiểm tra chính tả, hoặc có lẽ bạn đã theo một liên kết sai."
+    view:
+      my diary: "nhật ký của tôi"
+      new diary entry: "mục nhật ký mới"
+      my edits: "đóng góp của tôi"
+      my traces: "tuyến đường của tôi"
+      my settings: "tùy chọn"
+      send message: "gửi thư"
+      diary: "nhật ký"
+      edits: "đóng góp"
+      traces: "tuyến đường"
+      remove as friend: "dời người bạn"
+      add as friend: "thêm là người bạn"
+      mapper since: "Tham gia: "
+      ago: "(cách đây {{time_in_words_ago}})"
+      user image heading: "Hình người dùng"
+      delete image: "Xóa Hình"
+      upload an image: "Tải lên hình"
+      add image: "Thêm Hình"
+      description: "Miêu tả"
+      user location: "Vị trí của người dùng"
+      no home location: "Chưa đặt vị trí nhà."
+      if set location: "Nếu đặt vị trí, bản đồ đẹp đẽ và những thứ đó sẽ được hiển thị ở dưới. Bạn có thể đặt vị trí nhà tại trang {{settings_link}}."
+      settings_link_text: "tùy chọn"
+      your friends: "Người bạn của bạn"
+      no friends: "Bạn chưa thêm người bạn."
+      km away: "cách {{count}} km"
+      m away: "cách {{count}} m"
+      nearby users: "Người dùng ở gần: "
+      no nearby users: "Chưa có người dùng nào nhận là họ ở gần."
+      change your settings: "thay đổi tùy chọn của bạn"
+    friend_map:
+      your location: "Vị trí của bạn"
+      nearby mapper: "Người vẽ bản đồ ở gần: "
+    account:
+      title: "Chỉnh sửa tài khoản"
+      my settings: "Tùy chọn"
+      email never displayed publicly: "(không lúc nào hiện công khai)"
+      public editing:
+        heading: "Sửa đổi công khai: "
+        enabled: "Kích hoạt. Không vô danh và có thể sửa đổi dữ liệu."
+        enabled link: "http://wiki.openstreetmap.org/wiki/Anonymous_edits?uselang=vi"
+        enabled link text: "có nghĩa là gì?"
+        disabled: "Vô hiệu. Không thể sửa đổi dữ liệu. all previous edits are anonymous."
+        disabled link text: "tại sao không thể sửa đổi?"
+      profile description: "Tự giới thiệu: "
+      preferred languages: "Ngôn ngữ Ưu tiên: "
+      home location: "Vị trí Nhà: "
+      no home location: "Bạn chưa định vị trí nhà."
+      latitude: "Vĩ độ: "
+      longitude: "Kinh độ: "
+      update home location on click: "Cập nhật vị trí nhà khi tôi nhấn chuột vào bản đồ?"
+      save changes button: "Lưu các Thay đổi"
+      make edits public button: "Phát hành công khai các sửa đổi của tôi"
+      return to profile: "Trở về trang cá nhân"
+      flash update success confirm needed: "Đã cập nhật thông tin cá nhân thành công. Kiểm tra thư điện tử xác nhận địa chỉ thư điện tử mới."
+      flash update success: "Đã cập nhật thông tin cá nhân thành công."
+    confirm:
+      heading: "Xác nhận tài khoản người dùng"
+      press confirm button: "Bấm nút Xác nhận ở dưới để xác nhận tài khoản."
+      button: "Xác nhận"
+      success: "Đã xác nhận tài khoản của bạn. Cám ơn bạn đã đăng ký!"
+      failure: "Tài khoản với dấu hiệu này đã được xác nhận."
+    confirm_email:
+      heading: "Xác nhận thay đổi địa chỉ thư điện tử"
+      press confirm button: "Bấm nút Xác nhận ở dưới để xác nhận địa chỉ thư điện tử mới."
+      button: "Xác nhận"
+      success: "Đã xác nhận địa chỉ thư điện tử mới. Cám ơn bạn đã đăng ký!"
+      failure: "Một địa chỉ thư điện tử đã được xác nhận dùng dấu hiệu này."
+    set_home:
+      flash success: "Đã lưu vị trí nhà thành công"
+    go_public:
+      flash success: "Tất cả các sửa đổi của bạn được phát hành công khai, và bạn mới được phép sửa đổi."
+    make_friend:
+      success: "{{name}} mới là người bạn."
+      failed: "Rất tiếc, việc thêm {{name}} là người bạn bị thất bại."
+      already_a_friend: "{{name}} đã là người bạn."
+    remove_friend:
+      success: "{{name}} không còn người bạn."
+      not_a_friend: "{{name}} đã không phải người bạn."
index 82ed28cd8763576d100cab9151f6ffbfaee68707..ce6c0564427ab71e496109fdb1a24adae53dddae 100644 (file)
@@ -21,7 +21,7 @@ yo:
       old_relation: "ìsötàn agba"
       old_relation_member: "aráìbátançbíiyèkan agba"
       old_relation_tag: "Old Relation Tag"
-      old_way: "Old Way"
+      old_way: "Ona Atijo"
       old_way_node: "Old Way Node"
       old_way_tag: "Old Way Tag"
       relation: "ìsötàn"
@@ -63,7 +63,7 @@ yo:
       message:
         sender: "Sender"
         title: "Title"
-        body: "Body"
+        body: "Ara"
         recipient: "Recipient"
       user:
         email: "Email"
@@ -79,7 +79,7 @@ yo:
   browse:
     changeset:
       title: "Changeset"
-      changeset: "Changeset:"
+      changeset: "Changeset: {{id}}"
       download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -157,7 +154,7 @@ yo:
       unable_to_load_size: "Unable to load: Bounding box size of [[bbox_size]] is too large (must be smaller than {{max_bbox_size}})"
       loading: "Loading..."
       show_history: "Show History"
-      wait: "Wait..."
+      wait: "Duro..."
       history_for_feature: "History for [[feature]]"
       details: "Details"
       private_user: "private user"
@@ -167,14 +164,14 @@ yo:
         back: "Display object list"
         type:
           node: "Node"
-          way: "Way"
+          way: "Ona"
           # There's no 'relation' type because it isn't represented in OpenLayers
         api: "Retrieve this area from the API"
         details: "Details"
         selected:
           type:
             node: "Node [[id]]"
-            way: "Way [[id]]"
+            way: "Ona [[id]]"
             # There's no 'relation' type because it isn't represented in OpenLayers
         history:
           type:
@@ -257,12 +254,12 @@ yo:
     edit:
       title: "Edit diary entry"
       subject: "Subject: "
-      body: "Body: "
-      language: "Language: "
+      body: "Ara: "
+      language: "ede: "
       location: "Location: "
       latitude: "Latitude: "
       longitude: "Longitude: "
-      use_map_link: "use map"
+      use_map_link: "Lo map"
       save_button: "Save"
       marker_text: Diary entry location
     view:
@@ -270,7 +267,7 @@ yo:
       user_title: "{{user}}'s diary"
       leave_a_comment: "Leave a comment"
       login_to_leave_a_comment: "{{login_link}} to leave a comment"
-      login: "Login"
+      login: "wole"
       save_button: "Save"
     no_such_entry:
       heading: "No entry with the id: {{id}}"
@@ -322,8 +319,6 @@ yo:
       view_larger_map: "View Larger Map"
   geocoder:
     results:
-      results: "Results"
-      type_from_source: "{{type}} from {{source_link}}"
       no_results: "No results found"
   layouts:
     project_name:
@@ -333,23 +328,23 @@ yo:
       h1: OpenStreetMap
     logo:
       alt_text: OpenStreetMap logo
-    welcome_user: "Welcome, {{user_link}}"
+    welcome_user: "Kabo, {{user_link}}"
     welcome_user_link_tooltip: Your user page
-    home: home
-    home_tooltip: Go to home location
+    home: ile
+    home_tooltip: Lo si ile 
     inbox: "inbox ({{count}})"
     inbox_tooltip:
       zero: Your inbox contains no unread messages
       one: Your inbox contians 1 unread message
       other: Your inbox contains {{count}} unread messages
-    logout: logout
-    logout_tooltip: "Log out"
-    log_in: log in
-    log_in_tooltip: Log in with an existing account
+    logout: jade
+    logout_tooltip: "Jade"
+    log_in: Wole
+    log_in_tooltip: wole pelu with an existing account
     sign_up: sign up
     sign_up_tooltip: Create an account for editing
-    view: View
-    view_tooltip: View maps
+    view: wo
+    view_tooltip: wo maps
     edit: Edit
     edit_tooltip: Edit maps
     history: History
@@ -369,17 +364,17 @@ yo:
     osm_offline: "The OpenStreetMap database is currently offline while essential database maintenance work is carried out."
     osm_read_only: "The OpenStreetMap database is currently in read-only mode while essential database maintenance work is carried out."
     donate: "Support OpenStreetMap by {{link}} to the Hardware Upgrade Fund."
-    donate_link_text: donating
+    donate_link_text: idawo
     help_wiki: "Help &amp; Wiki"
     help_wiki_tooltip: "Help &amp; Wiki site for the project"
     help_wiki_url: "http://wiki.openstreetmap.org"
     news_blog: "News blog"
     news_blog_tooltip: "News blog about OpenStreetMap, free geographical data, etc."
-    shop: Shop
-    shop_tooltip: Shop with branded OpenStreetMap 
+    shop: Oja
+    shop_tooltip: Oja oni 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!'
-    alt_donation: Make a Donation
+    sotm: 'Wa si 2009 Ipade OpenStreetMap, The State of the Map, July 10-12 ni ilu  Amsterdam!'
+    alt_donation: Da wo si openstreetmap.org
   notifier:
     diary_comment_notification:
       subject: "[OpenStreetMap] {{user}} commented on your diary entry"
@@ -511,24 +506,24 @@ yo:
       my_inbox: "My {{inbox_link}}"
       inbox: "inbox"
       outbox: "outbox"
-      you_have_sent_messages: "You have {{sent_count}} sent messages"
+      you_have_sent_messages: "O ni {{sent_count}} sent messages"
       to: "To"
       subject: "Subject"
       date: "Date"
       no_sent_messages: "You have no sent messages yet. Why not get in touch with some of the {{people_mapping_nearby_link}}?"
       people_mapping_nearby: "people mapping nearby"
     read:
-      title: "Read message"
-      reading_your_messages: "Reading your messages"
+      title: "Ka message"
+      reading_your_messages: "Ka messages eh"
       from: "From"
       subject: "Subject"
       date: "Date"
       reply_button: "Reply"
       unread_button: "Mark as unread"
-      back_to_inbox: "Back to inbox"
-      reading_your_sent_messages: "Reading your sent messages"
+      back_to_inbox: "Pada si inbox"
+      reading_your_sent_messages: "Ka sent messages"
       to: "To"
-      back_to_outbox: "Back to outbox"
+      back_to_outbox: "Pad si outbox"
     mark:
       as_read: "Message marked as read"
       as_unread: "Message marked as unread"
@@ -558,9 +553,8 @@ yo:
       close: Close
     search:
       search: Search
-      where_am_i: "Where am I?"
-      submit_text: "Go"
-      searching: "Searching..."
+      where_am_i: "Ni bo ni mo wa?"
+      submit_text: "Lo"
       search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
     key:
       map_key: "Map key"
@@ -644,16 +638,16 @@ yo:
       made_public: "Track made public"
   user:
     login:
-      title: "Login"
-      heading: "Login"
-      please login: "Please login or {{create_user_link}}."
+      title: "Wole"
+      heading: "Wole"
+      please login: "Ejo e Wolw abi {{create_user_link}}."
       create_account: "create an account"
       email or username: "Email Address or Username: "
       password: "Password: "
-      lost password link: "Lost your password?"
+      lost password link: "Se eh ti san password nu?"
       login_button: "Login"
-      account not active: "Sorry, your account is not active yet.<br>Please click on the link in the account confirmation email to activate your account."
-      auth failure: "Sorry, couldn't log in with those details."
+      account not active: "Pele, account yin ko wa active .<br>Jo eh te link ni nu account confirmation email lati tan account eh."
+      auth failure: "Pele, e le wole pelu details yi."
     lost_password:
       title: "lost password"
       heading: "Forgotten Password?"
index 83209757b62880507e0ca0be1fe7665dd3bf2a47..b4a7e027d66ad293bc9c8c6d7f94eed8d8e3d40d 100644 (file)
@@ -77,7 +77,7 @@ zh-CN:
   browse:
     changeset:
       title: "修改集合"
-      changeset: "修改集合:"
+      changeset: "修改集合: {{id}}"
       download: "下载 {{changeset_xml_link}} 或 {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -294,9 +291,15 @@ zh-CN:
       add_marker: "标记地图"
       view_larger_map: "查看放大地图"
   geocoder:
+    search:
+      title:
+        latlon: '结果 从 <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: '结果 从 <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: '结果 从 <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: '结果 从 <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: '结果 从 <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: '结果 从 <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "结果"
-      type_from_source: "{{type}} 从 {{source_link}}"
       no_results: "没有发现结果"
   layouts:
     welcome_user: "欢迎, {{user_link}}"
@@ -461,7 +464,6 @@ zh-CN:
       search: 搜索
       where_am_i: "我在哪儿?"
       submit_text: "开始"
-      searching: "搜索中..."
       search_help: "例如: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', 或者 'post offices near L??nen' <a href='http://wiki.openstreetmap.org/wiki/Search'>更多例子...</a>"
     key:
       map_key: "地图符号"
index e24e9a8cd8898337de719b1ce7ba3bd4eb356a49..9792d1477352786691b153f593c6ab0ce5120c65 100644 (file)
@@ -79,7 +79,7 @@ zh-TW:
   browse:
     changeset:
       title: "變更組合"
-      changeset: "變更組合:"
+      changeset: "變更組合: {{id}}"
       download: "下載 {{changeset_xml_link}} 或 {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
@@ -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}}"
@@ -321,9 +318,15 @@ zh-TW:
       add_marker: "加入標記至地圖"
       view_larger_map: "檢視較大的地圖"
   geocoder:
+    search:
+      title:
+        latlon: '結果 從 <a href="http://openstreetmap.org/">Internal</a>'
+        us_postcode: '結果 從 <a href="http://geocoder.us/">Geocoder.us</a>'
+        uk_postcode: '結果 從 <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>'
+        ca_postcode: '結果 從 <a href="http://geocoder.ca/">Geocoder.CA</a>'
+        osm_namefinder: '結果 從 <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
+        geonames: '結果 從 <a href="http://www.geonames.org/">GeoNames</a>'
     results:
-      results: "結果"
-      type_from_source: "{{type}} 從 {{source_link}}"
       no_results: "找不到任何結果"
   layouts:
     project_name:
@@ -560,7 +563,6 @@ zh-TW:
       search: "搜尋"
       where_am_i: "我在哪裡?"
       submit_text: "走"
-      searching: "搜尋中..."
       search_help: "範例: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', 或 'post offices near L羹nen' <a href='http://wiki.openstreetmap.org/wiki/Search'>更多範例...</a>"
     key:
       map_key: "圖例"
index 7b7e6632668f05c9304295b9de3dd51ce3ddb1a1..7b71ca1a5355bcbe3bcf4114834b33dd251c2982 100644 (file)
@@ -22,8 +22,10 @@ OpenLayers/Layer.js
 OpenLayers/Layer/GML.js
 OpenLayers/Layer/Markers.js
 OpenLayers/Layer/SphericalMercator.js
-OpenLayers/Layer/TMS.js
+OpenLayers/Layer/XYZ.js
 OpenLayers/Layer/Vector.js
+OpenLayers/Tile.js
+OpenLayers/Tile/Image.js
 OpenLayers/Feature/Vector.js
 OpenLayers/Format/GML.js
 OpenLayers/Format/OSM.js
index ac402013dce7f6183872196cbab5bab037d3bb3c..7785326f5d113e4c8f9941438576b93469f659e4 100755 (executable)
@@ -1,8 +1,11 @@
 # Potlatch autocomplete values
 # each line should be: key / way|point|POI (tab) list_of_values
 # '-' indicates no autocomplete for values
-highway/way            motorway,motorway_link,trunk,trunk_link,primary,primary_link,secondary,tertiary,unclassified,residential,service,bridleway,cycleway,footway,pedestrian,steps,living_street,track,road
-highway/point  mini_roundabout,traffic_signals,crossing,gate,stile,cattle_grid,toll_booth,incline,viaduct,motorway_junction,services,ford,bus_stop,turning_circle
+highway/way            motorway,motorway_link,trunk,trunk_link,primary,primary_link,secondary,tertiary,unclassified,residential,service,bridleway,cycleway,footway,pedestrian,steps,living_street,track,road,path
+highway/point  mini_roundabout,traffic_signals,crossing,incline,viaduct,motorway_junction,services,ford,bus_stop,turning_circle
+highway/POI            bus_stop
+barrier/way            hedge,fence,wall,ditch
+barrier/point  hedge,fence,wall,ditch,bollard,cycle_barrier,cattle_grid,toll_booth,gate,stile,kissing_gate,entrance
 tracktype/way  grade1,grade2,grade3,grade4,grade5
 junction/way   roundabout
 cycleway/way   lane,track,opposite_lane,opposite_track,opposite
@@ -16,12 +19,13 @@ aeroway/way         runway,taxiway,apron
 aeroway/POI            aerodrome,terminal,helipad
 aerialway/way  cable_car,chair_lift,drag_lift
 power/POI              tower
+power/point            tower
 power/way              line
 man_made/point works,beacon,survey_point,power_wind,power_hydro,power_fossil,power_nuclear,tower,water_tower,gasometer,reservoir_covered,lighthouse,windmill
 man_made/way   reservoir_covered,pier
 leisure/POI            sports_centre,golf_course,stadium,marina,track,pitch,water_park,fishing,nature_reserve,park,playground,garden,common,slipway
 leisure/way            sports_centre,golf_course,stadium,marina,track,pitch,water_park,fishing,nature_reserve,park,playground,garden,common
-amenity/POI            pub,biergarten,cafe,nightclub,restaurant,fast_food,parking,bicycle_parking,bicycle_rental,car_rental,car_sharing,fuel,telephone,toilets,recycling,public_building,place_of_worship,grave_yard,post_office,post_box,school,university,college,pharmacy,hospital,library,police,fire_station,bus_station,theatre,cinema,arts_centre,courthouse,prison,bank,bureau_de_change,atm,townhall
+amenity/POI            pub,biergarten,cafe,nightclub,restaurant,fast_food,parking,bicycle_parking,bicycle_rental,car_rental,car_sharing,drinking_water,fuel,telephone,toilets,recycling,public_building,place_of_worship,grave_yard,post_office,post_box,school,university,college,pharmacy,hospital,library,police,fire_station,bus_station,theatre,cinema,arts_centre,courthouse,prison,bank,bureau_de_change,atm,townhall
 amenity/way            parking,bicycle_parking,car_rental,car_sharing,public_building,grave_yard,school,university,college,hospital,townhall
 shop/POI               supermarket,convenience,bicycle,outdoor
 shop/way               supermarket
@@ -40,11 +44,12 @@ boundary/way        administrative,civil,political,national_park
 sport/POI              10pin,athletics,baseball,basketball,bowls,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,football,golf,gymnastics,hockey,horse_racing,motor,multi,pelota,racquet,rugby,skating,skateboard,soccer,swimming,skiing,table_tennis,tennis
 sport/way              10pin,athletics,baseball,basketball,bowls,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,football,golf,gymnastics,hockey,horse_racing,motor,multi,pelota,racquet,rugby,skating,skateboard,soccer,swimming,skiing,table_tennis,tennis
 abutters/way   residential,retail,industrial,commercial,mixed
-area/way               yes,no
-bridge/way             yes,no
-tunnel/way             yes,no
-cutting/way            yes,no
-embankment/way yes,no
+area/way               yes
+bridge/way             yes
+tunnel/way             yes
+cutting/way            yes
+embankment/way yes
+building/way   yes
 lanes/way              -
 layer/way              -
 surface/way            paved,unpaved,gravel,dirt,grass
@@ -91,6 +96,7 @@ postal_code/way               -
 description/point      -
 description/POI                -
 description/way                -
+traffic_calming/point  bump,chicane,cushion,hump,rumble_strip
 addr:housenumber/point -
 addr:street/point              -
 addr:full/point                        -
diff --git a/config/potlatch/icon_presets.txt b/config/potlatch/icon_presets.txt
new file mode 100644 (file)
index 0000000..3269286
--- /dev/null
@@ -0,0 +1,26 @@
+airport        Airport amenity=airport
+bus_stop       Bus stop        highway=bus_stop
+ferry_terminal Ferry   amenity=ferry_terminal
+parking        Parking amenity=parking
+station        Rail station    railway=station
+taxi   Taxi rank       amenity=taxi
+bar    Bar     amenity=bar
+cafe   Cafe    amenity=cafe
+cinema Cinema  amenity=cinema
+fast_food      Fast food       amenity=fast_food
+pub    Pub     amenity=pub
+restaurant     Restaurant      amenity=restaurant
+theatre        Theatre amenity=theatre
+convenience    Convenience shop        shop=convenience
+hotel  Hotel   tourism=hotel
+pharmacy       Pharmacy        amenity=pharmacy
+post_box       Postbox amenity=post_box
+recycling      Recycling       amenity=recycling
+supermarket    Supermarket     shop=supermarket
+telephone      Telephone       amenity=telephone
+fire_station   Fire station    amenity=fire_station
+hospital       Hospital        amenity=hospital
+police Police station  amenity=police
+place_of_worship       Place of worship        amenity=place_of_worship
+museum Museum  tourism=museum
+school School  amenity=school
index ba90958eb524e2fe3558d7cb2451d7c14a5a5604..e69f4b00fe6389d502a9b173c145ced628938873 100755 (executable)
@@ -36,7 +36,32 @@ Did we mention about not copying from other maps?
 
 <!--
 ========================================================================================================================
-Page 2: Surveying
+Page 2: getting started
+
+--><page/><headline>Getting started</headline>
+<bodyText>Now that you have Potlatch open, click 'Edit with save' to get started.
+       
+So you're ready to draw a map. The easiest place to start is by putting some points of interest on the map - or "POIs". These might be pubs, churches, railway stations... anything you like.</bodytext>
+
+<column/><headline>Drag and drop</headline>
+<bodyText>To make it super-easy, you'll see a selection of the most common POIs, right at the bottom of the map for you. Putting one on the map is as easy as dragging it from there onto the right place on the map. And don't worry if you don't get the position right first time: you can drag it again until it's right. Note that the POI is highlighted in yellow to show that it's selected.
+       
+Once you've done that, you'll want to give your pub (or church, or station) a name. You'll see that a little table has appeared at the bottom. One of the entries will say "name" followed by "(type name here)". Do that - click that text, and type the name.
+
+Click somewhere else on the map to deselect your POI, and the colourful little panel returns.
+
+Easy, isn't it? Click 'Save' (bottom right) when you're done.
+</bodyText><column/><headline>Moving around</headline>
+<bodyText>To move to a different part of the map, just drag an empty area. Potlatch will automatically load the new data (look at the top right).
+
+We told you to 'Edit with save', but you can also click 'Edit live'. If you do this, your changes will go into the database straightaway, so there's no 'Save' button. This is good for quick changes and <a href="http://wiki.openstreetmap.org/wiki/Current_events" target="_blank">mapping parties</a>.</bodyText>
+
+<headline>Next steps</headline>
+<bodyText>Happy with all of that? Great. Click 'Surveying' above to find out how to become a <i>real</i> mapper!</bodyText>
+
+<!--
+========================================================================================================================
+Page 3: Surveying
 
 --><page/><headline>Surveying with a GPS</headline>
 <bodyText>The idea behind OpenStreetMap is to make a map without the restrictive copyright of other maps. This means you can't copy from elsewhere: you must go and survey the streets yourself. Fortunately, it's lots of fun!
@@ -63,33 +88,38 @@ On this same options button you'll find a few other choices like an out-of-copyr
 
 Sometimes satellite pics are a bit displaced from where the roads really are. If you find this, hold Space and drag the background until it lines up. Always trust GPS tracks over satellite pics.</bodytext>
 
-<page/><headline>Drawing ways</headline>
-<bodyText>Now that you have Potlatch open, click 'Edit with save' to get started.
+<!--
+========================================================================================================================
+Page 4: Drawing
 
-To draw a road (or 'way') starting at a blank space on the map, just click there; then at each point on the road in turn. When you've finished, double-click or press Enter - then click somewhere else to deselect the road.
+--><page/><headline>Drawing ways</headline>
+<bodyText>To draw a road (or 'way') starting at a blank space on the map, just click there; then at each point on the road in turn. When you've finished, double-click or press Enter - then click somewhere else to deselect the road.
 
 To draw a way starting from another way, click that road to select it; its points will appear red. Hold Shift and click one of them to start a new way at that point. (If there's no red point at the junction, shift-click where you want one!)
 
 Click 'Save' (bottom right) when you're done. Save often, in case the server has problems.
 
-Don't expect your changes to show instantly on the main map. It usually takes an hour or two, sometimes up to a week.</bodyText>
+Don't expect your changes to show instantly on the main map. It usually takes an hour or two, sometimes up to a week.
 </bodyText><column/><headline>Making junctions</headline>
 <bodyText>It's really important that, where two roads join, they share a point (or 'node'). Route-planners use this to know where to turn.
        
 Potlatch takes care of this as long as you are careful to click <i>exactly</i> on the way you're joining. Look for the helpful signs: the points light up blue, the pointer changes, and when you're done, the junction point has a black outline.</bodyText>
-<headline>More advanced drawing</headline>
-<bodyText><img src="scissors">If two parts of a way have different names, you'll need to split them. Click the way; then click the point where it should be split, and click the scissors. (You can merge ways by Shift-clicking, but don't merge two roads of different names or types.)
+<headline>Moving and deleting</headline>
+<bodyText>This works just as you'd expect it to. To delete a point, select it and press Delete. To delete a whole way, press Shift-Delete.
 
-Deleting a point is easy; select it and press Delete. To delete a whole way, press Shift-Delete.</bodyText>
-<column/><headline>Points of interest</headline>
-<bodyText>Not everything is a line or an area. Sometimes you'll just want to put a point on the map. You do this by double-clicking at the right spot; a green circle appears.</bodyText>
-<headline>Moving around</headline>
-<bodyText>To move to a different part of the map, just drag an empty area. Potlatch will automatically load the new data (look at the top right).
+To move something, just drag it. (You'll have to click and hold for a short while before dragging a way, so you don't do it by accident.)</bodyText>
+<column/><headline>More advanced drawing</headline>
+<bodyText><img src="scissors">If two parts of a way have different names, you'll need to split them. Click the way; then click the point where it should be split, and click the scissors. (You can merge ways by Shift-clicking, but don't merge two roads of different names or types.)
+       
+<img src="tidy">Roundabouts are really hard to draw right. Don't worry - Potlatch can help. Just draw the loop roughly, making sure it joins back on itself at the end, then click this icon to 'tidy' it. (You can also use this to straighten out roads.)</bodyText>
+<headline>Points of interest</headline>
+<bodyText>The first thing you learned was how to drag-and-drop a point of interest. You can also create one by double-clicking on the map: a green circle appears. But how to say whether it's a pub, a church or what? Click 'Tagging' above to find out!
 
-You can also drag ways, points of interest, and points in ways to correct their position. You'll need to click and hold before dragging a whole way, to prevent accidents.
+<!--
+========================================================================================================================
+Page 4: Tagging
 
-We told you to 'Edit with save', but you can also click 'Edit live'. If you do this, your changes will go into the database straightaway, so there's no 'Save' button. This is good for quick changes and <a href="http://wiki.openstreetmap.org/wiki/Current_events" target="_blank">mapping parties</a>.</bodyText>
-<page/><headline>What type of road is it?</headline>
+--><page/><headline>What type of road is it?</headline>
 <bodyText>Once you've drawn a way, you should say what it is. Is it a major road, a footpath or a river? What's its name? Are there any special rules (e.g. "no bicycles")?
 
 In OpenStreetMap, you record this using 'tags'. A tag has two parts, and you can have as many as you like. For example, you could add <i>highway | trunk</i> to say it's a major road; <i>highway | residential</i> for a road on a housing estate; or <i>highway | footway</i> for a footpath. If bikes were banned, you could then add <i>bicycle | no</i>. Then to record its name, add <i>name | Market Street</i>.
@@ -114,7 +144,11 @@ Because OpenStreetMap data is used to make many different maps, each map will sh
 <headline>Relations</headline>
 <bodyText>Sometimes tags aren't enough, and you need to 'group' two or more ways. Maybe a turn is banned from one road into another, or 20 ways together make up a signed cycle route. You can do this with an advanced feature called 'relations'. <a href="http://wiki.openstreetmap.org/wiki/Relations" target="_blank">Find out more</a> on the wiki.</bodyText>
 
-<page/><headline>Undoing mistakes</headline>
+<!--
+========================================================================================================================
+Page 6: Troubleshooting
+
+--><page/><headline>Undoing mistakes</headline>
 <bodyText><img src="undo">This is the undo button (you can also press Z) - it will undo the last thing you did.
 
 You can 'revert' to a previously saved version of a way or point. Select it, then click its ID (the number at the bottom left) - or press H (for 'history'). You'll see a list of everyone who's edited it, and when. Choose the one to go back to, and click Revert.
@@ -146,7 +180,7 @@ Turn your GPS track into a way by finding it in the 'GPS Traces' list, clicking
 
 <!--
 ========================================================================================================================
-Page 6: Quick reference
+Page 7: Quick reference
 
 --><page/><headline>What to click</headline>
 <bodyText><b>Drag the map</b> to move around.
@@ -174,6 +208,7 @@ M   <u>M</u>aximise editing window
 P      Create <u>p</u>arallel way
 R      <u>R</u>epeat tags
 S      <u>S</u>ave (unless editing live)
+T      <u>T</u>idy into straight line/circle
 U      <u>U</u>ndelete (show deleted ways)
 X      Cut way in two
 Z      Undo
index 6cf8df2b1bcea2fb6149061e26804089d72429f9..7272c85ac26158bf384b055ba804c370523abec3 100755 (executable)
-"action_createpoi": POI készítésének
+
+"action_createpoi": POI készítése
+"point": Pont
 "hint_pointselected": pont kijelölve\n(shift+kattintás a pontra\núj vonal kezdéséhez)
-"action_movepoint": pont mozgatásának
+"action_movepoint": pont mozgatása
 "hint_drawmode": kattintás pont hozzáadásához\ndupla kattintás/Enter\na vonal befejezéséhez
-"hint_overendpoint": végpont fölött\nkattintás a csatlakoztatáshoz\nshift+kattintás az egyesítéshez
-"hint_overpoint": pont fölött\nkattintás a csatlakoztatáshoz
-"gpxpleasewait": Kérlek, várj a GPX nyomvonal feldolgozásáig.
-"revert": V.állít
+"hint_overendpoint": végpont fölött ($1)\nkattintás a csatlakoztatáshoz\nshift+kattintás az egyesítéshez
+"hint_overpoint": pont fölött ($1)\nkattintás a csatlakoztatáshoz
+"closechangeset": Módosításcsomag bezárása
+"prompt_closechangeset": "Módosításcsomag bezárása: $1"
+"openchangeset": Módosításcsomag megnyitása
 "cancel": Mégse
-"prompt_revertversion": "Visszaállítás egy korábbi mentett változatra:"
-"tip_revertversion": Válaszd ki a változatot a visszaállításhoz
-"action_movepoi": POI mozgatásának
-"tip_splitway": Vonal kettévágása a kijelölt pontnál
+"ok": OK
+"prompt_changesetcomment": "Adj leírást a módosításaidhoz:"
+"emailauthor": \n\nKérlek, jelentsd a hibát (angolul) a richard\@systemeD.net e-mail címre, és írd le, hogy mit csináltál akkor, amikor a hiba történt.
+"retry": Újra
+"error_connectionfailed": Sajnálom - az OpenStreetMap szerverhez való kapcsolódás sikertelen. A legutóbbi módosítások nem lettek elmentve.\n\nSzeretnéd megpróbálni újra?
+"error_readfailed": Sajnálom - az OpenStreetMap szerver az adatok lekérdezésekor nem válaszolt.\n\nSzeretnéd megpróbálni újra?
+"conflict_waychanged": Amióta elkezdtél szerkeszteni, valaki más módosította a(z) $1$2 vonalat.
+"conflict_visitway": A vonal megtekintéséhez kattints az 'OK'-ra.
+"conflict_poichanged": Amióta elkezdtél szerkeszteni, valaki más módosította a(z) $1$2 pontot.
+"conflict_visitpoi": A pont megtekintéséhez kattints az 'OK'-ra.
+"conflict_relchanged": Amióta elkezdtél szerkeszteni, valaki más módosította a(z) $1$2 kapcsolatot.
+"conflict_download": Az ő változatának letöltése
+"conflict_overwrite": Az ő változatának felülírása
+"gpxpleasewait": Várj a GPX nyomvonal feldolgozásáig.
+"heading_introduction": Bevezetés
+"heading_pois": Az első lépések
+"heading_surveying": Felmérés
+"heading_drawing": Rajzolás
+"heading_tagging": Címkézés
+"heading_troubleshooting": Hibaelhárítás
+"heading_quickref": Gyors referencia
+"more": Tovább
+"prompt_revertversion": "Korábbi mentett változat visszaállítása:"
+"tip_revertversion": Válaszd ki a dátumot a visszaállításhoz
+"error_anonymous": Névtelen szerkesztővel nem tudsz kapcsolatba lépni.
+"action_revertway": vonal visszaállítása
+"drag_pois": Fogd és vidd az érdekes helyeket
+"advice_uploadempty": Nincs mit feltölteni
+"prompt_savechanges": Módosítások mentése
+"uploading": Feltöltés...
+"advice_uploadfail": Feltöltés megállítva
+"advice_uploadsuccess": Az összes adat sikeresen feltöltve
+"action_movepoi": POI mozgatása
+"a_poi": POI $1
+"tip_splitway": Vonal kettévágása a kijelölt pontnál (X)
 "tip_direction": Vonal iránya - kattints a megfordításhoz
 "tip_clockwise": Órajárással egyező körkörös vonal - kattints a megfordításhoz
 "tip_anticlockwise": Órajárással ellentétes körkörös vonal - kattints a megfordításhoz
+"tip_tidy": Vonal pontjainak tisztítása (T)
 "tip_noundo": Nincs mit visszavonni
-"action_mergeways": két vonal egyesítése
-"tip_gps": GPS nyomvonalak megjelenítése
-"tip_options": Beállítások módosítása (térképháttér kiválasztása)
+"tip_gps": GPS nyomvonalak megjelenítése (G)
+"tip_options": Beállítások módosítása (térkép háttérképének kiválasztása)
+"tip_photo": Fényképek betöltése
 "tip_addtag": Új címke hozzáadása
 "tip_addrelation": Hozzáadás kapcsolathoz
 "tip_repeattag": Az előzőleg kiválasztott vonal címkéinek megismétlése (R)
 "tip_alert": Hiba történt - kattints a részletekért
-"hint_toolong": "túl hosszú a feloldáshoz:\nkérlek, vágd szét\nrövidebb vonalakra"
-"hint_loading": vonalak betöltése
-"prompt_welcome": Üdvözöllek az OpenStreetMapon!
-"prompt_introduction": "A szerkesztéshez válassz az alábbi gombok közül. Ha a 'Kezdés'-re kattintasz, akkor közvetlenül a főtérképet szerkesztheted - a módosítások általában minden csütörtökön jelennek meg. Ha a 'Próbá'-ra kattintasz, akkor a módosításaid nem lesznek elmentve, így gyakorolhatod a szerkesztést.\n\nEmlékezz az OpenStreetMap aranyszabályaira:\n\n"
-"prompt_dontcopy": Ne másolj más térképekből
-"prompt_accuracy": A pontosság fontos - csak olyan helyeket szerkessz, ahol már jártál
-"prompt_enjoy": És jó szórakozást!
-"dontshowagain": Ez az üzenet ne jelenjen meg újra
-"prompt_start": Térképkészítés kezdése OpenStreetMappal.
-"prompt_practise": Térképkészítés gyakorlása - módosításaid nem lesznek elmentve.
-"practicemode": Gyakorló mód
 "help": Súgó
-"prompt_help": Nézz utána, hogyan kell használni a Potlatch-ot, ezt a térképszerkesztőt.
-"track": Nyomvonal
-"prompt_track": GPS nyomvonalaid átkonvertálása (zárolt) vonalakká a szerkesztéshez.
-"action_deletepoint": pont törlésének
-"deleting": törlés
-"action_cancelchanges": Módosítások elvetése a következőre
-"emailauthor": \n\nKérlek, jelentsd a hibát (angolul) a richard\@systemeD.net e-mail címre, és írd le, hogy mit csináltál akkor, amikor a hiba történt.
-"error_connectionfailed": Bocs - az OpenStreetMap szerverhez való kapcsolódás sikertelen. A legutóbbi módosítások nem lettek elmentve.\n\nSzeretnéd megpróbálni újra?
-"option_background": "Háttér:"
+"manual": Kézikönyv
+"way": Vonal
+"advice_toolong": Túl hosszú a feloldáshoz - vágd rövidebb szakaszokra
+"deleting": törlése
+"action_deletepoint": pont törlése
+"action_cancelchanges": "módosítások elvetése:"
+"custom": "Egyéni: "
+"nobackground": Nincs háttérkép
 "option_fadebackground": Áttetsző háttér
 "option_thinlines": Vékony vonalak használata minden méretaránynál
+"option_thinareas": Vékonyabb vonalak használata területekhez
+"option_noname": Névtelen utak kiemelése
+"option_tiger": Módosítatlan TIGER kiemelése
 "option_custompointers": Toll és kéz egérmutatók használata
-"tip_presettype": Válaszd ki, hogy milyen típusú sablonok legyenek a menüben.
-"action_waytags": vonal címkéi állításának
-"action_pointtags": pont címkéi állításának
-"action_poitags": POI címkéi állításának
-"action_addpoint": a vonal végéhez pont hozzáadásának
-"add": Hozzáad
+"option_warnings": Lebegő hibaüzenetek megjelenítése
+"option_external": "Külső indítása:"
+"option_photo": "Fotó KML:"
+"hint_saving_loading": adatok betöltése/mentése
+"hint_saving": adatok mentése
+"hint_loading": adatok betöltése
+"tip_presettype": Válaszd ki, hogy milyen sablonok legyenek a menüben.
+"action_waytags": vonal címkéinek módosítása
+"action_pointtags": pont címkéinek módosítása
+"action_poitags": POI címkéinek módosítása
 "prompt_addtorelation": $1 hozzáadása kapcsolathoz
-"prompt_selectrelation": A hozzáadáshoz válassz egy meglévő kapcsolatot, vagy készíts egy újat.
+"existingrelation": Hozzáadás meglévő kapcsolathoz
 "createrelation": Új kapcsolat létrehozása
+"findrelation": Kapcsolat keresése
+"norelations": Nincs kapcsolat a jelenlegi területen
 "tip_selectrelation": Hozzáadás a kiválasztott kapcsolathoz
-"action_reverseway": vonal megfordításának
-"tip_undo": $1 visszavonása (Z)
-"error_noway": A(z) $1 vonal nem található (talán már eltávolítottad?), így nem vonható vissza.
-"error_nosharedpoint": Már nincs közös pontja a(z) $1 és a(z) $2 vonalaknak, így nem vonható vissza a kettévágás.
+"prompt_welcome": Üdvözlünk az OpenStreetMapon!
+"prompt_helpavailable": Új vagy? Segítségért nézd a jobb alsó sarkot.
+"prompt_editsave": Szerk. mentéssel
+"prompt_editlive": Szerk. élőben
+"prompt_track": GPS nyomvonal átalakítása vonalakká
+"prompt_launch": Külső URL indítása
+"editinglive": Élő mód
+"editingoffline": Offline mód
+"save": Mentés
+"tip_undo": "Visszavonás: $1 (Z)"
+"error_noway": A(z) $1 nem található (talán már eltávolítottad?), így nem vonható vissza.
+"error_nosharedpoint": A(z) $1 és a(z) $2 vonalaknak már nincs közös pontja, így nem vonható vissza a kettévágás.
 "error_nopoi": A POI nem található (talán már eltávolítottad?), így nem vonható vissza.
-"prompt_taggedpoints": Ezen a vonalon van néhány címkézett pont. Biztosan törlöd?
-"action_insertnode": vonalhoz pont hozzáadásának
-"action_splitway": vonal kettévágásának
-"editingmap": Szerkesztés
-"start": Kezdés
-"play": Próba
+"action_tidyway": vonal tisztítása
 "delete": Törlés
-"a_way": Vonal $1
-"a_poi": POI $1
-"action_moveway": vonal mozgatásának
-"way": Vonal
-"point": Pont
-"ok": OK
-"existingrelation": Hozzáadás egy meglévő kapcsolathoz
-"findrelation": "Kapcsolat keresése, amely tartalmazza:"
-"norelations": Nincs kapcsolat a jelenlegi területen
-"advice_toolong": Túl hosszú a feloldáshoz - vágd rövidebb szakaszokra
+"prompt_taggedpoints": Ezen a vonalon van néhány címkézett pont. Biztosan törlöd?
+"a_way": vonal $1
 "advice_waydragged": Vonal áthelyezve (Z a visszavonáshoz)
+"action_moveway": vonal mozgatása
+"action_splitway": vonal kettévágása
+"action_mergeways": két vonal egyesítése
 "advice_tagconflict": A címkék nem egyeznek - ellenőrizd (Z a visszavonáshoz)
 "advice_nocommonpoint": A vonalaknak nincs közös pontjuk
-"option_warnings": Lebegő figyelmeztetések megjelenítése
-"reverting": visszaállítás
+"action_reverseway": vonal megfordítása
+"action_insertnode": pont hozzáadása vonalhoz
+"prompt_createparallel": Párhuzamos vonal készítése
+"offset_dual": Osztott pályás út (D2)
+"offset_motorway": Autópálya (D3)
+"offset_narrowcanal": Keskeny csatorna
+"offset_broadcanal": Széles csatorna
+"offset_choose": Válassz eltolást (m)
+"action_createparallel": párhuzamos vonalak készítése
+"action_addpoint": pont hozzáadása a vonal végéhez
index 848a29f516aad8d957abab5c362b4bd55490bd44..0ddb0727ee1d6eaac2a5ccae339eb734d60a724e 100755 (executable)
 "prompt_revertversion": "Tilbakestill til tidligere lagret versjon:"
 "tip_revertversion": Velg versjonen det skal tilbakestilles til
 "action_movepoi": flytter et POI (interessant punkt)
-"tip_splitway": Del vei i valgt punkt (X)
-"tip_direction": Veiretning, trykk for å snu
-"tip_clockwise": Sirkulær vei med klokka, trykk for å snu
-"tip_anticlockwise": Sirkulær vei mot klokka, trykk for å snu
+"tip_splitway": Del linje i valgt punkt (X)
+"tip_direction": Retning på linje, trykk for å snu
+"tip_clockwise": Sirkulær linje med klokka, trykk for å snu
+"tip_anticlockwise": Sirkulær linje mot klokka, trykk for å snu
 "tip_noundo": Ingenting å angre
-"action_mergeways": slår sammen to veier
+"action_mergeways": slår sammen to linjer
 "tip_gps": Vis GPS sporlogger (G)
 "tip_options": Sett valg (velg kartbakgrunn)
 "tip_addtag": Legg til merke
 "tip_addrelation": Legg til i en relasjon
-"tip_repeattag": Gjenta merker fra sist valgte vei (R)
+"tip_repeattag": Gjenta merker fra sist valgte linje (R)
 "tip_alert": Det oppstod en feil, trykk for detaljer
-"hint_toolong": "for lang til å låse opp:\nvennligst del opp\ni mindre veier"
-"hint_loading": laster veier
+"hint_toolong": "for lang til å låse opp:\nvennligst del opp\ni kortere linjer"
+"hint_loading": laster linjer
 "prompt_welcome": Velkommen til OpenStreetMap!
 "prompt_introduction": "Velg en knapp nedenfor for å redigere. Hvis du velger 'Start' redigerer du kartet direkte, endringer blir vanligvis synlige hver torsdag. Hvis du velger 'Øve' lagres ikke endringer, så du kan øve deg på å redigere.\nHusk OpenStreetMaps gyldne regler:\n\n"
 "prompt_dontcopy": Ikke kopier fra andre kart
@@ -36,7 +36,7 @@
 "help": Hjelp
 "prompt_help": Finn ut hvordan du bruker Potlatch, programmet for kartredigering.
 "track": Spor
-"prompt_track": Overfør dine GPS-sporinger til (låste) veier for redigering.
+"prompt_track": Overfør dine GPS-sporinger til (låste) linjer for redigering.
 "action_deletepoint": sletter et punkt
 "deleting": sletter
 "action_cancelchanges": avbryter endringer av
 "option_thinlines": Bruk tynne linjer uansett forstørrelse
 "option_custompointers": Bruk penn- og håndpekere
 "tip_presettype": Velg hva slags forhåndsinstillinger som blir vist i menyen
-"action_waytags": sette merker på en vei
+"action_waytags": sette merker på en linje
 "action_pointtags": sette merker på et punkt
 "action_poitags": sette merker på et POI (interessant punkt)
-"action_addpoint": legger til et punkt på enden av en vei
+"action_addpoint": legger til et punkt på enden av en linje
 "add": Legg til
 "prompt_addtorelation": Legg $1 til en relasjon
 "prompt_selectrelation": Velg en relasjon som allerede finnes, eller lag en ny relasjon
 "createrelation": Lag en ny relasjon
 "tip_selectrelation": Legg til den valgte ruta
-"action_reverseway": snur en vei bak fram
+"action_reverseway": snur en linje bak fram
 "tip_undo": Angre $1 (Z)
-"error_noway": Fant ikke veien $1 så det er ikke mulig å angre. (Kanskje den ikke er på skjermen lenger?)
-"error_nosharedpoint": Veiene $1 og $2 deler ikke noe punkt lenger, så det er ikke mulig å angre.
+"error_noway": Fant ikke linjen $1 så det er ikke mulig å angre. (Kanskje den ikke er på skjermen lenger?)
+"error_nosharedpoint": Linjene $1 og $2 deler ikke noe punkt lenger, så det er ikke mulig å angre.
 "error_nopoi": Fant ikke POI-et, så det er ikke mulig å angre. (Kanskje den ikke er på skjermen lenger?)
-"prompt_taggedpoints": Noen av punktene på denne veien er merket. Vil du virkelig slette?
-"action_insertnode": legge til et punkt på veien
-"action_splitway": dele en vei
+"prompt_taggedpoints": Noen av punktene på denne linjen har merker. Vil du virkelig slette?
+"action_insertnode": legge til et punkt på linjen
+"action_splitway": dele en linje
 "editingmap": Redigerer kart
 "start": Start
 "play": Øve
 "delete": Slett
-"a_way": $1 en vei
+"a_way": $1 en linje
 "a_poi": $1 et POI
-"action_moveway": flytter en vei
-"way": Vei
+"action_moveway": flytter en linje
+"way": Linje
 "point": Punkt
 "ok": Ok
 "existingrelation": Legg til en relasjon som er her fra før
 "findrelation": Finn en relasjon som inneholder
 "norelations": Ingen relasjoner i området på skjermen
+"advice_toolong": For lang til å låse opp, linjen må deles i flere biter
+"advice_waydragged": Linje flyttet (Z for å angre)
+"advice_tagconflict": Ulike merker, vennligst sjekk (Z for å angre)
+"advice_nocommonpoint": Linjene deler ikke et felles punkt
+"option_warnings": Vis flytende advarsler
+"reverting": Reverserer
diff --git a/config/potlatch/localised/tr/localised.yaml b/config/potlatch/localised/tr/localised.yaml
new file mode 100644 (file)
index 0000000..73489aa
--- /dev/null
@@ -0,0 +1,85 @@
+"action_createpoi": POI oluşturuluyor
+"hint_pointselected": nokta seçili\n(shift-tıkla yeni cizgi\nbaşlatmak için)
+"action_movepoint": nokta taşınıyor
+"hint_drawmode": yeni nokta için tıkla\nçizgi sona ermek için\nçift tıkla/ENTER bas
+"hint_overendpoint": yolun son noktası\nbağlamak için tıkla\nbirleştirmek için shift-tıkla
+"hint_overpoint": nokta üzerine\nbağlamak için tıkla
+"gpxpleasewait": GPX izi işlenirken lütfen biraz bekleyin
+"revert": Geri al
+"cancel": Vazgeç
+"prompt_revertversion": "Daha önce kaydedilmiş bir sürümüne dön:"
+"tip_revertversion": Geri dönülecek sürümü seç
+"action_movepoi": POI taşınıyor
+"tip_splitway": Seçtiğin noktada yolu böl (X)
+"tip_direction": Yolun yönü - ters yöne değiştirmek için tıkla
+"tip_clockwise": saat yönünde dairesel yol - tersine dönmek için tıkla
+"tip_anticlockwise": saatin ters yönünde dairesel yol - tersine dönmek için tıkla
+"tip_noundo": Geri alınacak bir şey yok
+"action_mergeways": iki yol birleştiriliyor
+"tip_gps": GPS izlerini göster (G)
+"tip_options": Ayarları değiştir (harita arka planını seç)
+"tip_addtag": Yeni etiket ekle
+"tip_addrelation": Bir ilişkiye ekle
+"tip_repeattag": Etiketleri bir önceki seçtiğin yoldan kopyala (R)
+"tip_alert": Bir hata oluştu - ayrıntılar için tıkla
+"hint_toolong": "kilidi kaldırmak için yol fazla uzun:\nlütfen önce daha kısa\nyollara ayır"
+"hint_loading": yollar yükleniyor
+"prompt_welcome": "OpenStreetMap'e Hoşgeldin!"
+"prompt_introduction": "Düzenlemek için aşağıdaki tuşlardan birini seç. 'Başla'ya tıklarsan, ana haritayı doğrudan düzenleyeceksin - değişiklikler genellikle Perşembe günleri gözükür. 'Deneme Tahtası'nı tıklarsan, değişikliklerin kaydedilmeyecektir, böylece düzenleme alıştırması yapabilirsin.\n\nOpenStreetMap'in kuralları anımsa:\n\n"
+"prompt_dontcopy": Başka haritalardan kopyalamak kesinlikle yasaktır!
+"prompt_accuracy": Hassasiyet önemlidir - bildiğin bölgeleri haritala
+"prompt_enjoy": İyi eğlenceler!
+"dontshowagain": Bu mesaj bir daha gösterme.
+"prompt_start": OpenStreetMap ile harita çizmeye başla.
+"prompt_practise": Harita üzerinde oyna - değişiklikler kaydedilmeyecek.
+"practicemode": Deneme tahtası modu
+"help": Yardım
+"prompt_help": Potlatch, yani bu harita düzenleyici, nasıl kullanılır keşfet
+"track": İz
+"prompt_track": GPS izini, düzenlemek için (kilitli) bir yola dönüştür.
+"action_deletepoint": bir nokta siliniyor
+"deleting": siliniyor
+"action_cancelchanges": "iptal ediliyor:"
+"emailauthor": "\n\nLütfen bu hata konusunda richard\@systemeD.net'e bir e.posta at"
+"error_connectionfailed": Maalesef OpenStreetMap sunucusuyla bağlantı koptu. Son değişiklikler kaydedilmedi.\n\nBir daha denemek ister misin?
+"option_background": "Arkaplan:"
+"option_fadebackground": Arkaplanı saydamlaştır
+"option_thinlines": Tüm ölçeklerde ince çizgileri kullan
+"option_custompointers": Kalem ve el işareti kullan
+"tip_presettype": Menüde sunulan türleri seç
+"action_waytags": yoldaki etiketler ayarlanıyor
+"action_pointtags": noktadaki etiketler ayarlanıyor
+"action_poitags": "POI'nin etiketleri ayarlanıyor"
+"action_addpoint": yolun sonuna bir nokta ekleniyor
+"add": Ekle
+"prompt_addtorelation": ilişkiye $1 ekle
+"prompt_selectrelation": Eklenecek mevcut bir ilişki seç, ya da yeni bir ilişki yarat.
+"createrelation": Yeni bir ilişki yarat
+"tip_selectrelation": Seçili rotaya ekle
+"action_reverseway": yol tersine çevriliyor
+"tip_undo": $1 Geri Al (Z)
+"error_noway": $1 yolu bulunamıyor (belki atıdı) bu yüzden geri alamıyorum.
+"error_nosharedpoint": $1 ve $2 yollarının paylaştıkları ortak bir nokta artık yok, bu yüzden bölmeyi geri alamıyorum.
+"error_nopoi": "The POI cannot be found (perhaps you've panned away?) so I can't undo."
+"prompt_taggedpoints": Bu yolun birkaç noktası etiketlenmiş. Gene de silinsin mi?
+"action_insertnode": yola bir nokta ekleniyor
+"action_splitway": yol bölünüyor
+"editingmap": Harita düzenleme modu
+"start": Başla
+"play": Deneme Tahtası
+"delete": Sil
+"a_way": "yol: $1"
+"a_poi": "POI: $1"
+"action_moveway": yol taşınıyor
+"way": Yol
+"point": Nokta
+"ok": Tamam
+"existingrelation": Mevcut bir ilişkiye ekle
+"findrelation": İçeren bir ilişki bul
+"norelations": Çalışılan alanda ilişki yok
+"advice_toolong": Kilidi kaldırmak için yol fazla uzun - lütfen önce daha kısa yollara ayır
+"advice_waydragged": "Yol taşındı (geri almak için Z'ye bas)"
+"advice_tagconflict": Etiketler eşleşmiyor - lütfen kontrol et
+"advice_nocommonpoint": Yolların ortak noktası yok
+"option_warnings": Uyarıları göster
+"reverting": geri alınıyor
diff --git a/config/potlatch/localised/vi/localised.yaml b/config/potlatch/localised/vi/localised.yaml
new file mode 100644 (file)
index 0000000..ee13fed
--- /dev/null
@@ -0,0 +1,85 @@
+"action_createpoi": đang tạo địa điểm
+"hint_pointselected": đã chọn điểm\n(shift-nhấn chuột để\nbắt đầu lối mới)
+"action_movepoint": đang chuyển điểm
+"hint_drawmode": nhấn chuột để thêm điểm\nnhấn đúp/Enter\nđể kết thúc lối
+"hint_overendpoint": đang trên điểm kết thúc\nnhấn chuột để nối\nshift-nhấn chuột để hợp nhất
+"hint_overpoint": đang trên điểm\nnhấn chuột để nối"
+"gpxpleasewait": Xin chờ, đang xử lý tuyến đường GPX.
+"revert": Lùi
+"cancel": Hủy bỏ
+"prompt_revertversion": "Lùi lại phiên bản cũ hơn:"
+"tip_revertversion": Chọn phiên bản để lùi lại
+"action_movepoi": đang chuyển địa điểm
+"tip_splitway": Chia cắt lối tại điểm đã chọn (X)
+"tip_direction": Hướng của lối - nhấn để đảo ngược
+"tip_clockwise": Lối vòng theo chiều kim đồng hồ - nhấn để đảo ngược
+"tip_anticlockwise": Lối vòng ngược chiều kim đồng hồ - nhấn để đảo ngược
+"tip_noundo": Không có gì để lùi
+"action_mergeways": đang hợp nhất hai lối
+"tip_gps": Hiện các tuyến đường GPS (G)
+"tip_options": Tùy chỉnh (chọn nền bản đồ)
+"tip_addtag": Thêm thẻ mới
+"tip_addrelation": Xếp vào quan hệ
+"tip_repeattag": Chép các thẻ từ lối được chọn trước (R)
+"tip_alert": Đã gặp lỗi - nhấn để xem chi tiết
+"hint_toolong": "dài quá không thể mở khóa:\nxin chia cắt nó thành\ncác lối ngắn hơn"
+"hint_loading": đang tải các lối
+"prompt_welcome": Hoan nghênh bạn đã đến OpenStreetMap!
+"prompt_introduction": Hãy chọn cách sử dụng ở dưới để bắt đầu sửa đổi. Nút "Bắt đầu" để cho bạn sửa đổi thẳng bản đồ chính - các thay đổi thường hiện ra mỗi thứ năm. Nút 'Nghịch ngợm' để cho bạn thử sửa đổi, các thay đổi của bạn không được lưu.\n\nHãy nhớ các quy tắc vàng của OpenStreetMap:\n\n
+"prompt_dontcopy": Đừng sao chép từ bản đồ khác
+"prompt_accuracy": Cần chính xác - chỉ vẽ những nơi đã thăm
+"prompt_enjoy": Và chúc vui vẻ!
+"dontshowagain": Không hiện thông báo này lần sau
+"prompt_start": Bắt đầu đóng góp vào bản đồ OpenStreetMap.
+"prompt_practise": Thử vẽ bản đồ - các thay đổi của bạn không được lưu.
+"practicemode": Chế độ thử
+"help": Trợ giúp
+"prompt_help": Tìm hiểu cách sử dụng Potlatch, trình vẽ bản đồ này.
+"track": Tuyến đường
+"prompt_track": Chuyển đổi tuyến đường GPS thành các lối (khóa) để sửa đổi.
+"action_deletepoint": đang xóa điểm
+"deleting": đang xóa
+"action_cancelchanges": đang hủy bỏ các thay đổi
+"emailauthor": \n\nXin gửi thư điện tử cho richard\@systemeD.net báo cáo lỗi và giải thích bạn làm gì lúc khi gặp lỗi.
+"error_connectionfailed": "Rất tiếc - không thể kết nối với máy chủ OpenStreetMap. Những thay đổi gần đây có thể chưa được lưu.\n\nBạn có muốn thử lại không?"
+"option_background": "Nền:"
+"option_fadebackground": Nhạt màu nền
+"option_thinlines": Hiện đường hẹp ở các tỷ lệ
+"option_custompointers": Hiện con trỏ bút và tay
+"tip_presettype": Chọn các loại thẻ được định trước trong trình đơn.
+"action_waytags": đang gắn thẻ vào lối
+"action_pointtags": đang gắn thẻ vào điểm
+"action_poitags": đang gắn thẻ vào địa điểm
+"action_addpoint": đang thêm nốt vào cuối lối
+"add": Thêm
+"prompt_addtorelation": Xếp $1 vào quan hệ
+"prompt_selectrelation": Chọn một quan hệ đã tồn tại để xếp vào, hoặc tạo ra quan hệ mới.
+"createrelation": Tạo quan hệ mới
+"tip_selectrelation": Thêm vào tuyến đường đã chọn
+"action_reverseway": đang đảo ngược lối
+"tip_undo": Lùi $1 (Z)
+"error_noway": Không tìm thấy $1 (có lẽ bạn đã kéo ra khỏi vùng?) nên không thể lùi lại.
+"error_nosharedpoint": Các lối $1 và $2 không còn cắt ngang nhau tại điểm nào, nên không thể lùi lại việc chia cắt lối.
+"error_nopoi": Không tìm thấy địa điểm (có lẽ bạn đã kéo ra khỏi vùng?) nên không thể lùi lại.
+"prompt_taggedpoints": Một số điểm trên lối này đã được gắn thẻ. Bạn có chắc muốn xóa nó?
+"action_insertnode": đang gắn nốt vào lối
+"action_splitway": đang chia cắt lối
+"editingmap": Sửa đổi bản đồ
+"start": Bắt đầu
+"play": Nghịch ngợm
+"delete": Xóa
+"a_way": $1 lối
+"a_poi": $1 địa điểm
+"action_moveway": đang chuyển lối
+"way": Lối
+"point": Điểm
+"ok": OK
+"existingrelation": Xếp vào quan hệ đã tồn tại
+"findrelation": Tìm kiếm quan hệ chứa
+"norelations": Không có quan hệ trong vùng này
+"advice_toolong": Dài quá không thể mở khóa - xin chia cắt nó thành các lối ngắn hơn
+"advice_waydragged": Đã kéo lối (Z để lùi lại)
+"advice_tagconflict": Các thẻ không hợp - xin kiểm tra lại
+"advice_nocommonpoint": Các lối không cắt ngang nhau tại điểm nào
+"option_warnings": Nổi các cảnh báo
+"reverting": đang lùi sửa
diff --git a/config/potlatch/localised/zh-HANT/localised.yaml b/config/potlatch/localised/zh-HANT/localised.yaml
new file mode 100644 (file)
index 0000000..db3dcd7
--- /dev/null
@@ -0,0 +1,85 @@
+"action_createpoi": 建立一個 POI
+"hint_pointselected": 已選擇一個 point\n(按 shift再點選 point 可\n開始畫新的線段)
+"action_movepoint": 移動 point
+"hint_drawmode": 單擊加入新的 point\n雙擊/Enter\n可結束此線段
+"hint_overendpoint": 在結束 point 上\n單擊會製作交叉\n按 shift 再點選會合併
+"hint_overpoint": 在 point 上\n單擊會製作交叉
+"gpxpleasewait": 在處理 GPX 追蹤時請稍候。
+"revert": 回復
+"cancel": 取消
+"prompt_revertversion": "回復到較早儲存的版本:"
+"tip_revertversion": 選擇要回復的版本
+"action_movepoi": 移動 POI
+"tip_splitway": 在選取的 point 將路徑分開 (X)
+"tip_direction": 路徑的方向 - 單擊可反轉方向
+"tip_clockwise": Clockwise circular way - click to reverse
+"tip_anticlockwise": Anti-clockwise circular way - click to reverse
+"tip_noundo": 沒有可復原的項目
+"action_mergeways": 正在合併兩條路徑
+"tip_gps": 顯示 GPS 追蹤 (G)
+"tip_options": 設定選項 (選擇地圖背景)
+"tip_addtag": 加入新的標籤
+"tip_addrelation": 加入關係
+"tip_repeattag": 重複前一次選取路徑的標籤 (R)
+"tip_alert": 發生錯誤 - 點選以取得詳細資訊
+"hint_toolong": "路徑太長而無法解除鎖定:\n請將它分離為\n較短的路徑"
+"hint_loading": 正在載入路徑
+"prompt_welcome": 歡迎使用 OpenStreetMap!
+"prompt_introduction": "選擇下列按鈕進行編輯。如果您選擇「開始」,將會直接編輯地圖 - 所做的變更通常會在每週四顯示出來。如果您選擇「練習」,您的變更將不會儲存,所以可以用來練習編輯。\n\n請記得 OpenStreetMap 的黃金定律:\n\n"
+"prompt_dontcopy": 不要複製其他地圖
+"prompt_accuracy": 準確性很重要 - 只繪製您到過的地方
+"prompt_enjoy": 好好享受!
+"dontshowagain": 不要再顯示這個訊息
+"prompt_start": 開始繪製 OpenStreetMap。
+"prompt_practise": 練習製圖 - 您的變更不會被儲存。
+"practicemode": 練習模式
+"help": 求助
+"prompt_help": 了解如何使用 Potlatch,這個地圖編輯器。
+"track": 追蹤
+"prompt_track": 將您的 GPS 追蹤轉換為 (鎖定的) 路徑以便編輯。
+"action_deletepoint": 正在刪除 point
+"deleting": 刪除中
+"action_cancelchanges": 取消變更:
+"emailauthor": \n\n請寄一封程式錯誤報告的電子郵件給 richard\@systemeD.net,並說明當時您在做什麼動作。
+"error_connectionfailed": 抱歉 - 對 OpenStreetMap 伺服器的連線失敗了。任何最新的變更將不會儲存。\n\n您是否要再試一次?
+"option_background": "背景:"
+"option_fadebackground": 淡化背景
+"option_thinlines": 在所有縮放等級使用細線
+"option_custompointers": Use pen and hand pointers
+"tip_presettype": 選擇在選擇中要提供哪種類型的預先設定。
+"action_waytags": 設定路徑上的標籤
+"action_pointtags": 設定 point 上的標籤
+"action_poitags": 設定 POI 上的標籤
+"action_addpoint": 在路徑的結尾加上節點
+"add": 加入
+"prompt_addtorelation": 將 $1 加入為關係
+"prompt_selectrelation": 選擇一個既存的關係來加入,或是建立新的關係。
+"createrelation": 建立新的關係
+"tip_selectrelation": 加入到選取的路線
+"action_reverseway": 反轉路徑
+"tip_undo": 復原 $1 (Z)
+"error_noway": "找不到路徑 $1 (perhaps you've panned away?) ,因此我不能復原它。"
+"error_nosharedpoint": 路徑 $1 和 $2 不再分享共同 point,因此我無法復原此分離動作。
+"error_nopoi": "The POI cannot be found (perhaps you've panned away?) so I can't undo."
+"prompt_taggedpoints": 這個路徑上的部分 point 已有標籤。確定要刪除?
+"action_insertnode": 在路徑中加入節點
+"action_splitway": 分離一條路徑
+"editingmap": 編輯地圖
+"start": 開始
+"play": 練習
+"delete": 刪除
+"a_way": $1 路徑
+"a_poi": $1 POI
+"action_moveway": 移動路徑
+"way": 路徑
+"point": Point
+"ok": 確定
+"existingrelation": 加入既存的關係
+"findrelation": 尋找關係有包含
+"norelations": 在目前的區域中沒有此關係
+"advice_toolong": 路徑太長而無法解除鎖定 - 請將它分離為較短的路徑
+"advice_waydragged": 拖曳的路徑 (按 Z 復原)
+"advice_tagconflict": 標籤不符 - 請檢查
+"advice_nocommonpoint": 這些路徑不再分享共同 point
+"option_warnings": 顯示浮動式警示
+"reverting": 正在反轉
index b08d2dcb619a17b5ce2e6b570c1ce07ef7ba91c0..887346a57c14ac2742f648c017935f24dea2e046 100644 (file)
@@ -54,7 +54,7 @@ ruins: place=,tourism=,historic=ruins,name=(type name here)
 
 way/recreation
 golf course: landuse=,leisure=golf_course
-pitch: landuse=,leisure=pitch, sport=(type sport here)
+pitch: landuse=,leisure=pitch,sport=(type sport here)
 playground: landuse=,leisure=playground
 recreation ground: landuse=recreation_ground,leisure=
 sports centre: landuse=,leisure=sports_centre
@@ -99,14 +99,15 @@ mini roundabout: place=,highway=mini_roundabout
 traffic lights: place=,highway=traffic_signals
 
 point/footway
-bridge: place=,highway=bridge
-gate: place=,highway=gate
-stile: place=,highway=stile
-cattle grid: place=,highway=cattle_grid
+gate: place=,barrier=gate
+stile: place=,barrier=stile
+cattle grid: place=,barrier=cattle_grid
 
 point/cycleway
-bike park: place=,highway=,amenity=bicycle_parking,capacity=(type number of spaces)
-gate: place=,highway=gate,amenity=,capacity=
+bike park: place=,barrier=,amenity=bicycle_parking,capacity=(type number of spaces)
+bollard: place=,barrier=bollard,amenity=,capacity=
+cycle barrier: place=,barrier=cycle_barrier,amenity=,capacity=
+gate: place=,barrier=gate,amenity=,capacity=
 
 point/waterway
 lock: place=,waterway=,lock=yes,name=(type name here)
@@ -177,7 +178,7 @@ windmill: man_made=windmill,power=,amenity=,name=,religion=,denomination=
 
 POI/recreation
 golf course: leisure=golf_course
-pitch: leisure=pitch, sport=(type sport here)
+pitch: leisure=pitch,sport=(type sport here)
 playground: leisure=playground
 recreation ground: landuse=recreation_ground,leisure=
 sports centre: leisure=sports_centre
index 486241fb36654df18196d3baeaad3b38c8ce5089..a4e88cc9932799c45e2d42f74245827b458b7b5a 100644 (file)
@@ -6,9 +6,9 @@ ActionController::Routing::Routes.draw do |map|
 
   map.connect "api/#{API_VERSION}/changeset/create", :controller => 'changeset', :action => 'create'
   map.connect "api/#{API_VERSION}/changeset/:id/upload", :controller => 'changeset', :action => 'upload', :id => /\d+/
-  map.connect "api/#{API_VERSION}/changeset/:id/download", :controller => 'changeset', :action => 'download', :id => /\d+/
+  map.changeset_download "api/#{API_VERSION}/changeset/:id/download", :controller => 'changeset', :action => 'download', :id => /\d+/
   map.connect "api/#{API_VERSION}/changeset/:id/expand_bbox", :controller => 'changeset', :action => 'expand_bbox', :id => /\d+/
-  map.connect "api/#{API_VERSION}/changeset/:id", :controller => 'changeset', :action => 'read', :id => /\d+/, :conditions => { :method => :get }
+  map.changeset_read "api/#{API_VERSION}/changeset/:id", :controller => 'changeset', :action => 'read', :id => /\d+/, :conditions => { :method => :get }
   map.connect "api/#{API_VERSION}/changeset/:id", :controller => 'changeset', :action => 'update', :id => /\d+/, :conditions => { :method => :put }
   map.connect "api/#{API_VERSION}/changeset/:id/close", :controller => 'changeset', :action => 'close', :id =>/\d+/
   map.connect "api/#{API_VERSION}/changesets", :controller => 'changeset', :action => 'query'
@@ -81,14 +81,16 @@ ActionController::Routing::Routes.draw do |map|
   map.connect '/browse/node/:id/history', :controller => 'browse', :action => 'node_history', :id => /\d+/
   map.connect '/browse/relation/:id', :controller => 'browse', :action => 'relation', :id => /\d+/
   map.connect '/browse/relation/:id/history', :controller => 'browse', :action => 'relation_history', :id => /\d+/
-  map.connect '/browse/changeset/:id', :controller => 'browse', :action => 'changeset', :id => /\d+/
+  map.changeset '/browse/changeset/:id', :controller => 'browse', :action => 'changeset', :id => /\d+/
   map.connect '/browse/changesets', :controller => 'changeset', :action => 'list'
+  map.connect '/browse/changesets/feed', :controller => 'changeset', :action => 'list', :format => :atom
   
   # web site
   map.root :controller => 'site', :action => 'index'
   map.connect '/', :controller => 'site', :action => 'index'
   map.connect '/edit', :controller => 'site', :action => 'edit'
-  map.connect '/history', :controller => 'changeset', :action => 'list_bbox'
+  map.connect '/history', :controller => 'changeset', :action => 'list'
+  map.connect '/history/feed', :controller => 'changeset', :action => 'list', :format => :atom
   map.connect '/export', :controller => 'site', :action => 'export'
   map.connect '/login', :controller => 'user', :action => 'login'
   map.connect '/logout', :controller => 'user', :action => 'logout'
@@ -114,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'
@@ -143,7 +148,8 @@ ActionController::Routing::Routes.draw do |map|
 
   # user pages
   map.connect '/user/:display_name', :controller => 'user', :action => 'view'
-  map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list_user'
+  map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list'
+  map.connect '/user/:display_name/edits/feed', :controller => 'changeset', :action => 'list', :format =>:atom
   map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend'
   map.connect '/user/:display_name/remove_friend', :controller => 'user', :action => 'remove_friend'
   map.connect '/user/:display_name/diary', :controller => 'diary_entry', :action => 'list'
@@ -166,7 +172,15 @@ ActionController::Routing::Routes.draw do |map|
 
   # geocoder
   map.connect '/geocoder/search', :controller => 'geocoder', :action => 'search'
+  map.connect '/geocoder/search_latlon', :controller => 'geocoder', :action => 'search_latlon'
+  map.connect '/geocoder/search_us_postcode', :controller => 'geocoder', :action => 'search_us_postcode'
+  map.connect '/geocoder/search_uk_postcode', :controller => 'geocoder', :action => 'search_uk_postcode'
+  map.connect '/geocoder/search_ca_postcode', :controller => 'geocoder', :action => 'search_ca_postcode'
+  map.connect '/geocoder/search_osm_namefinder', :controller => 'geocoder', :action => 'search_osm_namefinder'
+  map.connect '/geocoder/search_geonames', :controller => 'geocoder', :action => 'search_geonames'
   map.connect '/geocoder/description', :controller => 'geocoder', :action => 'description'
+  map.connect '/geocoder/description_osm_namefinder', :controller => 'geocoder', :action => 'description_osm_namefinder'
+  map.connect '/geocoder/description_geonames', :controller => 'geocoder', :action => 'description_geonames'
 
   # export
   map.connect '/export/start', :controller => 'export', :action => 'start'
index d943768ad67e489f1f74199dd8c9b328947a7914..30bbebb8d928ed056f591a5361b56c613363248e 100644 (file)
@@ -4,7 +4,7 @@ class BoundingBox
   end
 
   def self.from_s(s)
-    BoundingBox.new(s.split(/,/))
+    BoundingBox.new(*s.split(/,/))
   end
 
   def min_lon
index 1b01a88671b94a1f7a618f85def3e40e6ccdd263..e8de1aa8e1aeafc5ff5750ef0542936913c0ee7f 100644 (file)
@@ -186,6 +186,18 @@ module Potlatch
         }
       end
 
+      # Read POI presets
+      icon_list=[]; icon_names={}; icon_tags={};
+      File.open("#{RAILS_ROOT}/config/potlatch/icon_presets.txt") do |file|
+        file.each_line {|line|
+          (icon,name,tags)=line.chomp.split("\t")
+          icon_list.push(icon)
+          icon_names[icon]=name
+          icon_tags[icon]=Hash[*tags.scan(/([^;=]+)=([^;=]+)/).flatten]
+        }
+      end
+      icon_list.reverse!
+      
       # Read auto-complete
       autotags={}; autotags['point']={}; autotags['way']={}; autotags['POI']={};
       File.open("#{RAILS_ROOT}/config/potlatch/autocomplete.txt") do |file|
@@ -202,7 +214,7 @@ module Potlatch
 #        # Read internationalisation
 #        localised = YAML::load(File.open("#{RAILS_ROOT}/config/potlatch/localised.yaml"))
 
-      [presets,presetmenus,presetnames,colours,casing,areas,autotags,relcolours,relalphas,relwidths]
+      [presets,presetmenus,presetnames,colours,casing,areas,autotags,relcolours,relalphas,relwidths,icon_list,icon_names,icon_tags]
     end
   end
 
diff --git a/lib/short_link.rb b/lib/short_link.rb
new file mode 100644 (file)
index 0000000..b91d7e5
--- /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
diff --git a/public/images/searching.gif b/public/images/searching.gif
new file mode 100644 (file)
index 0000000..5b33f7e
Binary files /dev/null and b/public/images/searching.gif differ
diff --git a/public/images/sotm.png b/public/images/sotm.png
deleted file mode 100644 (file)
index 3282d12..0000000
Binary files a/public/images/sotm.png and /dev/null 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..3e28e0c0a059ab0650c48e770aea2a6835121480 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);
   }
 
@@ -52,6 +55,9 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
       args.lat = lat;
       args.lon = lon;
       args.zoom = zoom;
+      if (objtype && objid) {
+        args[objtype] = objid;
+      }
       node.href = setArgs("/edit", args);
       node.style.fontStyle = 'normal';
     } else {
@@ -84,8 +90,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 +174,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 +207,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];
diff --git a/public/potlatch/photos.css b/public/potlatch/photos.css
new file mode 100644 (file)
index 0000000..cc7dd42
--- /dev/null
@@ -0,0 +1,18 @@
+h1                     { font-family: Arial,Helvetica,sans-serif; 
+                         font-size: 18px; 
+                         color: #DDDDFF; } 
+
+h2                     { font-family: Arial,Helvetica,sans-serif; 
+                         font-size: 16px; 
+                         color: #DDDDFF; } 
+
+h3                     { font-family: Arial,Helvetica,sans-serif; 
+                         font-size: 14px; 
+                         color: #DDDDFF; } 
+
+p                      { font-family: Arial,Helvetica,sans-serif; 
+                         font-size: 12px; 
+                         color: #FFFFFF; } 
+
+a:link      { color: #00FFFF; 
+              text-decoration: underline; }
index 4296d3adce12e1b25a1ffc2b31200828222fd6ad..8ee7e840a3dfdecb21833be9047b32d99832916c 100755 (executable)
Binary files a/public/potlatch/potlatch.swf and b/public/potlatch/potlatch.swf differ
index 8d7324fc365738c5301ec52d8d444634e467885a..c44d54bcea0b18bae8acbf5472381984b2a9bf50 100644 (file)
@@ -402,11 +402,6 @@ hr {
   padding-bottom: 6px;
 }
 
-#search_active {
-  display: none;
-  color: red;
-}
-
 .rsssmall {
   position: relative;
   top: 4px;
@@ -514,6 +509,11 @@ hr {
   margin-bottom: 0px;
 }
 
+.search_searching {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+
 .olControlAttribution {
   display: none !important;
 }
@@ -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
index 22af7f2283411b7a8d2e5c60596a663587949629..ab0f5d5ad35cd6010c2a5590c35bf5493d472de8 100644 (file)
@@ -280,10 +280,13 @@ class AmfControllerTest < ActionController::TestCase
     # ['way',wayid,history]
     assert_equal 'way', history[0]
     assert_equal latest.id, history[1] 
-    # for some reason undocumented, the potlatch API now prefers dates
-    # over version numbers. presumably no-one edits concurrently any more?
-    assert_equal latest.timestamp.strftime("%d %b %Y, %H:%M:%S"), history[2].first[0]
-    assert_equal oldest.timestamp.strftime("%d %b %Y, %H:%M:%S"), history[2].last[0]
+    # We use dates rather than version numbers here, because you might
+    # have moved a node within a way (i.e. way version not incremented).
+    # The timestamp is +1 (timestamp.succ) because we say "give me the
+    # revision of 15:33:02", but that might actually include changes at
+    # 15:33:02.457.
+    assert_equal latest.timestamp.succ.strftime("%d %b %Y, %H:%M:%S"), history[2].first[0]
+    assert_equal oldest.timestamp.succ.strftime("%d %b %Y, %H:%M:%S"), history[2].last[0]
   end
 
   def test_getway_history_nonexistent
@@ -308,21 +311,18 @@ class AmfControllerTest < ActionController::TestCase
     history = amf_result("/1")
 
     # ['node',nodeid,history]
+    # note that (as per getway_history) we actually round up
+    # to the next second
     assert_equal history[0], 'node', 
       'first element should be "node"'
     assert_equal history[1], latest.id,
       'second element should be the input node ID'
-    # NOTE: changed this test to match what amf_controller actually 
-    # outputs - which may or may not be what potlatch is expecting.
-    # someone who knows potlatch (i.e: richard f) should review this.
-    # NOTE2: wow - this is the second time this has changed in the
-    # API and the tests are being patched up. 
     assert_equal history[2].first[0], 
-      latest.timestamp.strftime("%d %b %Y, %H:%M:%S"),
-      'first part of third element should be the latest version'
+      latest.timestamp.succ.strftime("%d %b %Y, %H:%M:%S"),
+      'first element in third element (array) should be the latest version'
     assert_equal history[2].last[0], 
-      nodes(:node_with_versions_v1).timestamp.strftime("%d %b %Y, %H:%M:%S"),
-      'second part of third element should be the initial version'
+      nodes(:node_with_versions_v1).timestamp.succ.strftime("%d %b %Y, %H:%M:%S"),
+      'last element in third element (array) should be the initial version'
   end
 
   def test_getnode_history_nonexistent
index d60fe2fbc9621344512f373f479916ee85b3942d..8f0b2147786cebe98788bb3e76e3cf703956be6e 100644 (file)
@@ -1490,11 +1490,11 @@ EOF
   def test_list
     changesets = Changeset.find(:all, :order => "created_at DESC", :conditions => ['min_lat IS NOT NULL'], :limit=> 20)
     assert changesets.size <= 20
-    get :list
+    get :list, {:format => "html"}
     assert_response :success
     assert_template "list"
     # Now check that all 20 (or however many were returned) changesets are in the html
-    assert_select "h1", :text => "Recent Changes", :count => 1
+    assert_select "h1", :text => "Changesets", :count => 1
     assert_select "table[id='changeset_list'] tr", :count => changesets.size + 1
     changesets.each do |changeset|
       # FIXME this test needs rewriting - test for table contents
@@ -1505,16 +1505,16 @@ EOF
   # Checks the display of the user changesets listing
   def test_list_user
     user = users(:public_user)
-    get :list_user, {:display_name => user.display_name}
+    get :list, {:format => "html", :display_name => user.display_name}
     assert_response :success
-    assert_template 'list_user'
+    assert_template "list"
     ## FIXME need to add more checks to see which if edits are actually shown if your data is public
   end
   
   ##
   # Check the not found of the list user changesets
   def test_list_user_not_found
-    get :list_user, {:display_name => "Some random user"}
+    get :list, {:format => "html", :display_name => "Some random user"}
     assert_response :not_found
     assert_template 'user/no_such_user'
   end
diff --git a/test/integration/short_link_test.rb b/test/integration/short_link_test.rb
new file mode 100644 (file)
index 0000000..3f2d65a
--- /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(ShortLink::encode(-0.107846, 51.50771, 18))
+  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
index d32740f2c72149eb8fe85d84649e8f494cc212e2..124e934a0f21d49e2598217d8b5d6322719c84be 100644 (file)
@@ -22,7 +22,7 @@
       },
       :day_names         => %w{nedelja ponedeljek torek sreda četrtek petek sobota},
       :abbr_day_names    => %w{ned pon tor sre čet pet sob},
-      :month_names       => %w{~ januar februar marec april maj junij julj avgust september oktober november december},
+      :month_names       => %w{~ januar februar marec april maj junij julij avgust september oktober november december},
       :abbr_month_names  => %w{~ jan feb mar apr maj jun jul avg sep okt nov dec},
       :order             => [:day, :month, :year]
     },
@@ -30,7 +30,7 @@
     # Time
     :time => {
       :formats => {
-        :default => "%a %d. %B %Y %H:%M %z",
+        :default => "%A, %d. %B %Y %H:%M %z",
         :short   => "%d. %m. %H:%M",
         :long    => "%A %d. %B %Y %H:%M",
        :time    => "%H:%M"
       :distance_in_words => {
         :half_a_minute => 'pol minute',
         :less_than_x_seconds => {
-          :one => 'manj kot sekunda',
-          :two => 'manj kot dve sekundi',
+          :one => 'manj kot {{count}} sekunda',
+          :two => 'manj kot {{count}} sekundi',
           :few => 'manj kot {{count}} sekunde',
           :other => 'manj kot {{count}} sekund'
         },
         :x_seconds => {
-          :one => 'sekunda',
-          :two => 'dve sekundi',
+          :one => '{{count}} sekunda',
+          :two => '{{count}} sekundi',
           :few => '{{count}} sekunde',
           :other => '{{count}} sekund'
         },
         :less_than_x_minutes => {
-          :one => 'manj kot minuta',
-          :two => 'manj kot dve minuti',
+          :one => 'manj kot {{count}} minuta',
+          :two => 'manj kot {{count}} minuti',
           :few => 'manj kot {{count}} minute',
           :other => 'manj kot {{count}} minut'
         },
         :x_minutes => {
-          :one => 'minuta',
-          :two => 'dve minuti',
+          :one => '{{count}} minuta',
+          :two => '{{count}} minuti',
           :few => '{{count}} minute',
           :other => '{{count}} minut'
         },
         :about_x_hours => {
-          :one => 'približno ena ura',
-          :two => 'približno dve uri',
+          :one => 'približno {{count}} ura',
+          :two => 'približno {{count}} uri',
           :few => 'približno {{count}} ure',
           :other => 'približno {{count}} ur'
         },
         :x_days => {
-          :one => 'en dan',
-          :two => 'dva dni',
+          :one => '{{count}} dan',
+          :two => '{{count}} dni',
           :few => '{{count}} dni',
           :other => '{{count}} dni'
         },
         :about_x_months => {
-          :one => 'približno en mesec',
-          :two => 'približno dva meseca',
+          :one => 'približno {{count}} mesec',
+          :two => 'približno {{count}} meseca',
           :few => 'približno {{count}} mesece',
           :other => 'približno {{count}} mesecev'
         },
         :x_months => {
-          :one => 'en mesec',
-          :two => 'dva meseca',
-          :few => '{{count}} meseci',
+          :one => '{{count}} mesec',
+          :two => '{{count}} meseca',
+          :few => '{{count}} mesece',
           :other => '{{count}} mesecev'
         },
         :about_x_years => {
           :accepted            => "mora biti potrjeno",
           :empty               => "ne sme biti prazno",
           :blank               => "je obezno", # alternate formulation: "is required"
-          :too_long            => "je predolgo (največ {{count}} znakov)",
-          :too_short           => "je prekratko (vsaj {{count}} znakov)",
-          :wrong_length        => "ni pravilne dolžine (natanko {{count}} znakov)",
+          :too_long => {
+            :one               => "je predolgo (največ {{count}} znak)",
+            :two               => "je predolgo (največ {{count}} znaka)",
+            :few               => "je predolgo (največ {{count}} znaki)",
+            :other             => "je predolgo (največ {{count}} znakov)"
+          },
+          :too_short => {
+            :one               => "je prekratko (vsaj {{count}} znak)",
+            :two               => "je prekratko (vsaj {{count}} znaka)",
+            :few               => "je prekratko (vsaj {{count}} znaki)",
+            :other             => "je prekratko (vsaj {{count}} znakov)"
+          },
+          :wrong_length        => {
+            :one               => "ni pravilne dolžine (natanko {{count}} znak)",
+            :two               => "ni pravilne dolžine (natanko {{count}} znaka)",
+            :few               => "ni pravilne dolžine (natanko {{count}} znaki)",
+            :other             => "ni pravilne dolžine (natanko {{count}} znakov)"
+          },
           :taken               => "že obstaja v bazi",
           :not_a_number        => "ni številka",
           :greater_than        => "mora biti večje od {{count}}",
         :template => {
           :header   => {
             :one => "Pri shranjevanju predmeta {{model}} je prišlo do {{count}} napake",
+            :two => "Pri shranjevanju predmeta {{model}} je prišlo do {{count}} napak",
+            :few => "Pri shranjevanju predmeta {{model}} je prišlo do {{count}} napak",
             :other => "Pri shranjevanju predmeta {{model}} je prišlo do {{count}} napak"
           },
           :body  => "Prosim, popravite naslednje napake posameznih polj:"