From: Tom Hughes Date: Tue, 14 Jul 2009 08:03:24 +0000 (+0000) Subject: Merge 16110:16487 from trunk. X-Git-Tag: live~6749^2~18 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/64fb530581ffd21e2522e70e8a2d4c46d666f760?hp=6ae593fe7768d6f731a83486ec812bc2d23d33f7 Merge 16110:16487 from trunk. --- diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index aee31295c..3fa47d088 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -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 diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index 8124d4a33..91d8eb84f 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -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 diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 40c619e13..cc1758bf3 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -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 = "#{bbox.to_s}" + 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. diff --git a/app/controllers/diary_entry_controller.rb b/app/controllers/diary_entry_controller.rb index 7a442ac58..48cdda8a0 100644 --- a/app/controllers/diary_entry_controller.rb +++ b/app/controllers/diary_entry_controller.rb @@ -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' diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index f286ab9d3..1b2ae340b 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -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) diff --git a/app/controllers/message_controller.rb b/app/controllers/message_controller.rb index 6c7be5e0f..e1062bc9f 100644 --- a/app/controllers/message_controller.rb +++ b/app/controllers/message_controller.rb @@ -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 = @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 + diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 2a826770d..1478c5773 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -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 diff --git a/app/controllers/swf_controller.rb b/app/controllers/swf_controller.rb index 262662c7a..d989a5e90 100644 --- a/app/controllers/swf_controller.rb +++ b/app/controllers/swf_controller.rb @@ -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 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3119c8435..b28ab7c1a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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 diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index 67420151c..879d516ef 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -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 diff --git a/app/models/trace.rb b/app/models/trace.rb index 03dbeb0b3..7f2607b0f 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -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) diff --git a/app/views/browse/_containing_relation.html.erb b/app/views/browse/_containing_relation.html.erb index ee704acc8..474e80f78 100644 --- a/app/views/browse/_containing_relation.html.erb +++ b/app/views/browse/_containing_relation.html.erb @@ -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> diff --git a/app/views/browse/_map.html.erb b/app/views/browse/_map.html.erb index 248cf27dd..f84a2ec9f 100644 --- a/app/views/browse/_map.html.erb +++ b/app/views/browse/_map.html.erb @@ -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 %> diff --git a/app/views/browse/_navigation.html.erb b/app/views/browse/_navigation.html.erb index 57e724d42..88812c2bb 100644 --- a/app/views/browse/_navigation.html.erb +++ b/app/views/browse/_navigation.html.erb @@ -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 %> + < + <%= 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) } %> + > + <% end %> + <br/> + <% end %> <% if @prev %> < - <%= 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') } %> > <% end %> </div> diff --git a/app/views/browse/_relation_member.html.erb b/app/views/browse/_relation_member.html.erb index 39b89bc01..cee2e0e75 100644 --- a/app/views/browse/_relation_member.html.erb +++ b/app/views/browse/_relation_member.html.erb @@ -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> diff --git a/app/views/browse/changeset.html.erb b/app/views/browse/changeset.html.erb index e5963c57f..8e1102128 100644 --- a/app/views/browse/changeset.html.erb +++ b/app/views/browse/changeset.html.erb @@ -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" %> diff --git a/app/views/browse/node_history.html.erb b/app/views/browse/node_history.html.erb index 4a34e3452..fe6c79812 100644 --- a/app/views/browse/node_history.html.erb +++ b/app/views/browse/node_history.html.erb @@ -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"> diff --git a/app/views/browse/relation_history.html.erb b/app/views/browse/relation_history.html.erb index 45f3d1400..a62ac2ef7 100644 --- a/app/views/browse/relation_history.html.erb +++ b/app/views/browse/relation_history.html.erb @@ -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> diff --git a/app/views/browse/way_history.html.erb b/app/views/browse/way_history.html.erb index edb967e9e..f61fa6fa1 100644 --- a/app/views/browse/way_history.html.erb +++ b/app/views/browse/way_history.html.erb @@ -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"> diff --git a/app/views/changeset/_changeset.html.erb b/app/views/changeset/_changeset.html.erb index 8ac433415..f8f00addb 100644 --- a/app/views/changeset/_changeset.html.erb +++ b/app/views/changeset/_changeset.html.erb @@ -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> diff --git a/app/views/changeset/_changeset_paging_nav.html.erb b/app/views/changeset/_changeset_paging_nav.html.erb index b8ac1a65f..94edfc31e 100644 --- a/app/views/changeset/_changeset_paging_nav.html.erb +++ b/app/views/changeset/_changeset_paging_nav.html.erb @@ -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 index 000000000..c71c22aa1 --- /dev/null +++ b/app/views/changeset/list.atom.builder @@ -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 diff --git a/app/views/changeset/list.html.erb b/app/views/changeset/list.html.erb index cfe4afd3f..0fcf5ddda 100644 --- a/app/views/changeset/list.html.erb +++ b/app/views/changeset/list.html.erb @@ -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 index 87c61790c..000000000 --- a/app/views/changeset/list_bbox.html.erb +++ /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 index 7240e6027..000000000 --- a/app/views/changeset/list_user.html.erb +++ /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 index 000000000..7d93179d1 --- /dev/null +++ b/app/views/geocoder/_description.html.erb @@ -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 index bf42244f9..000000000 --- a/app/views/geocoder/_results.html.erb +++ /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 index 000000000..0d0ed2466 --- /dev/null +++ b/app/views/geocoder/_search.html.erb @@ -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 index 000000000..e2ce07b6e --- /dev/null +++ b/app/views/geocoder/error.html.erb @@ -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 index 000000000..70051c91c --- /dev/null +++ b/app/views/geocoder/results.html.erb @@ -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 %> diff --git a/app/views/layouts/site.html.erb b/app/views/layouts/site.html.erb index 612c419c6..59b7c304b 100644 --- a/app/views/layouts/site.html.erb +++ b/app/views/layouts/site.html.erb @@ -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' %> @@ -47,14 +47,14 @@ 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 %> @@ -114,10 +114,6 @@ <%= 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 index 000000000..90198e8f4 --- /dev/null +++ b/app/views/layouts/site.rss.builder @@ -0,0 +1,2 @@ +xml.instruct! +xml << yield diff --git a/app/views/message/new.html.erb b/app/views/message/new.html.erb index f771f619b..9ae756f83 100644 --- a/app/views/message/new.html.erb +++ b/app/views/message/new.html.erb @@ -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> diff --git a/app/views/site/_search.html.erb b/app/views/site/_search.html.erb index b57a1f984..12b8bccc5 100644 --- a/app/views/site/_search.html.erb +++ b/app/views/site/_search.html.erb @@ -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' %> diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index ecb732c9b..40a7a3fbc 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -17,7 +17,10 @@ </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"> @@ -38,55 +41,72 @@ <% 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(); diff --git a/app/views/site/key.html.erb b/app/views/site/key.html.erb index 975442426..5879701a2 100644 --- a/app/views/site/key.html.erb +++ b/app/views/site/key.html.erb @@ -10,7 +10,7 @@ <%= image_tag "key/#{name}/#{entry['image']}" %> </td> <td class="mapkey-table-value"> - <%= t "site.key.table.entry.#{entry['name']}" %> + <%= [*t("site.key.table.entry.#{entry['name']}")].to_sentence %> </td> </tr> <% end %> diff --git a/app/views/trace/_trace.html.erb b/app/views/trace/_trace.html.erb index 4e1733148..4cd40352a 100644 --- a/app/views/trace/_trace.html.erb +++ b/app/views/trace/_trace.html.erb @@ -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> diff --git a/app/views/trace/_trace_form.html.erb b/app/views/trace/_trace_form.html.erb index 86fc29c3a..b178a7532 100644 --- a/app/views/trace/_trace_form.html.erb +++ b/app/views/trace/_trace_form.html.erb @@ -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> diff --git a/app/views/trace/edit.html.erb b/app/views/trace/edit.html.erb index 2f73d2d4e..e14e152dd 100644 --- a/app/views/trace/edit.html.erb +++ b/app/views/trace/edit.html.erb @@ -28,11 +28,11 @@ </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> diff --git a/app/views/trace/view.html.erb b/app/views/trace/view.html.erb index 0688ec130..4ab46bd3e 100644 --- a/app/views/trace/view.html.erb +++ b/app/views/trace/view.html.erb @@ -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 %> diff --git a/app/views/user/view.html.erb b/app/views/user/view.html.erb index 5fdea140f..e50610037 100644 --- a/app/views/user/view.html.erb +++ b/app/views/user/view.html.erb @@ -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 %> @@ -71,7 +71,16 @@ <% 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%> @@ -93,7 +102,14 @@ <% @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 index a5f2e5ac3..000000000 --- a/config/initializers/asset_tag_helper.rb +++ /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 diff --git a/config/initializers/i18n.rb b/config/initializers/i18n.rb index 54a925e3c..a061d873a 100644 --- a/config/initializers/i18n.rb +++ b/config/initializers/i18n.rb @@ -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 } diff --git a/config/key.yml b/config/key.yml index 69b883c0f..83d47cdf5 100644 --- a/config/key.yml +++ b/config/key.yml @@ -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 } diff --git a/config/lighttpd.conf b/config/lighttpd.conf index c1537edef..3befa5c87 100644 --- a/config/lighttpd.conf +++ b/config/lighttpd.conf @@ -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" ) ) ) diff --git a/config/locales/be.yml b/config/locales/be.yml index 000a70be9..9cb4bd40c 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -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: "Ключ карты" diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 084a869cf..0387eba4e 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -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}}" diff --git a/config/locales/de.yml b/config/locales/de.yml index 0374fc84b..2a2b167f8 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -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?" diff --git a/config/locales/el.yml b/config/locales/el.yml index b3d3d862d..eae9845c5 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -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}}" diff --git a/config/locales/en.yml b/config/locales/en.yml index 46accb8bd..95fd929d0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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?" diff --git a/config/locales/es.yml b/config/locales/es.yml index 1cc6fa404..6363f58b9 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -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:" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4ad6cf3a5..f56ea29a0 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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" diff --git a/config/locales/he.yml b/config/locales/he.yml index 94c496029..b5001ade3 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -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" diff --git a/config/locales/hi.yml b/config/locales/hi.yml index ee2c5ef28..5f1cb6787 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -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 index 000000000..46be1f2b6 --- /dev/null +++ b/config/locales/hu.yml @@ -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é." diff --git a/config/locales/is.yml b/config/locales/is.yml index 4b2ad291a..63781ef61 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -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 & 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." diff --git a/config/locales/it.yml b/config/locales/it.yml index 200a5aa2f..3e367877d 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -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" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 7f76c30b4..114e36067 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -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: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 5964837f1..414927ba3 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -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: "저장 위치" + saved_at: "저장 시간" 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" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index e15e3dff2..67ce9a2b2 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -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: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 17afacacf..2d261acd3 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -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" diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 58976f5e7..25b8f18ff 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -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 index 000000000..1f9b0ecb6 --- /dev/null +++ b/config/locales/ro.yml @@ -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 & Wiki" + help_wiki_tooltip: "Help & 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." diff --git a/config/locales/ru.yml b/config/locales/ru.yml index a4022ddc4..58859588a 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -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: "Посмотреть бо́льшую карту" 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: "Легенда" diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ab542855d..b05af69b6 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -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 index 000000000..41f84b66e --- /dev/null +++ b/config/locales/vi.yml @@ -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 & Wiki" + help_wiki_tooltip: "Site trợ giúp & 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." diff --git a/config/locales/yo.yml b/config/locales/yo.yml index 82ed28cd8..ce6c05644 100644 --- a/config/locales/yo.yml +++ b/config/locales/yo.yml @@ -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 & Wiki" help_wiki_tooltip: "Help & 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?" diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 83209757b..b4a7e027d 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -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: "地图符号" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index e24e9a8cd..9792d1477 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -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: "圖例" diff --git a/config/openlayers.cfg b/config/openlayers.cfg index 7b7e66326..7b71ca1a5 100644 --- a/config/openlayers.cfg +++ b/config/openlayers.cfg @@ -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 diff --git a/config/potlatch/autocomplete.txt b/config/potlatch/autocomplete.txt index ac402013d..7785326f5 100755 --- a/config/potlatch/autocomplete.txt +++ b/config/potlatch/autocomplete.txt @@ -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 index 000000000..326928640 --- /dev/null +++ b/config/potlatch/icon_presets.txt @@ -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 diff --git a/config/potlatch/localised/en/help.html b/config/potlatch/localised/en/help.html index ba90958eb..e69f4b00f 100755 --- a/config/potlatch/localised/en/help.html +++ b/config/potlatch/localised/en/help.html @@ -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 diff --git a/config/potlatch/localised/hu/localised.yaml b/config/potlatch/localised/hu/localised.yaml index 6cf8df2b1..7272c85ac 100755 --- a/config/potlatch/localised/hu/localised.yaml +++ b/config/potlatch/localised/hu/localised.yaml @@ -1,85 +1,123 @@ -"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 diff --git a/config/potlatch/localised/no/localised.yaml b/config/potlatch/localised/no/localised.yaml index 848a29f51..0ddb0727e 100755 --- a/config/potlatch/localised/no/localised.yaml +++ b/config/potlatch/localised/no/localised.yaml @@ -10,20 +10,20 @@ "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 @@ -47,33 +47,39 @@ "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 index 000000000..73489aaa2 --- /dev/null +++ b/config/potlatch/localised/tr/localised.yaml @@ -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 index 000000000..ee13fed6b --- /dev/null +++ b/config/potlatch/localised/vi/localised.yaml @@ -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 index 000000000..db3dcd73b --- /dev/null +++ b/config/potlatch/localised/zh-HANT/localised.yaml @@ -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": 正在反轉 diff --git a/config/potlatch/presets.txt b/config/potlatch/presets.txt index b08d2dcb6..887346a57 100644 --- a/config/potlatch/presets.txt +++ b/config/potlatch/presets.txt @@ -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 diff --git a/config/routes.rb b/config/routes.rb index 486241fb3..a4e88cc99 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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' diff --git a/lib/bounding_box.rb b/lib/bounding_box.rb index d943768ad..30bbebb8d 100644 --- a/lib/bounding_box.rb +++ b/lib/bounding_box.rb @@ -4,7 +4,7 @@ class BoundingBox end def self.from_s(s) - BoundingBox.new(s.split(/,/)) + BoundingBox.new(*s.split(/,/)) end def min_lon diff --git a/lib/potlatch.rb b/lib/potlatch.rb index 1b01a8867..e8de1aa8e 100644 --- a/lib/potlatch.rb +++ b/lib/potlatch.rb @@ -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 index 000000000..b91d7e569 --- /dev/null +++ b/lib/short_link.rb @@ -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 index 000000000..2c962c621 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 index 000000000..5b33f7e54 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 index 3282d125c..000000000 Binary files a/public/images/sotm.png and /dev/null differ diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 6e012b3d3..9773ab348 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -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 diff --git a/public/javascripts/site.js b/public/javascripts/site.js index e0c18a27b..3e28e0c0a 100644 --- a/public/javascripts/site.js +++ b/public/javascripts/site.js @@ -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; +} diff --git a/public/openlayers/OpenLayers.js b/public/openlayers/OpenLayers.js index 6145fa994..a65acf838 100644 --- a/public/openlayers/OpenLayers.js +++ b/public/openlayers/OpenLayers.js @@ -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);} diff --git a/public/openlayers/OpenStreetMap.js b/public/openlayers/OpenStreetMap.js index 4f2b0d4d7..ce8a6e81f 100644 --- a/public/openlayers/OpenStreetMap.js +++ b/public/openlayers/OpenStreetMap.js @@ -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 index 000000000..cc7dd42e4 --- /dev/null +++ b/public/potlatch/photos.css @@ -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; } diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index 4296d3adc..8ee7e840a 100755 Binary files a/public/potlatch/potlatch.swf and b/public/potlatch/potlatch.swf differ diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index 8d7324fc3..c44d54bce 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -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 { diff --git a/script/locale/diff b/script/locale/diff index 8ce35ad5c..0335fe983 100755 --- a/script/locale/diff +++ b/script/locale/diff @@ -2,7 +2,7 @@ use feature ':5.10'; use strict; use warnings; -use YAML::Syck qw(Load LoadFile); +use YAML::Syck qw(LoadFile); use Test::Differences; use Pod::Usage (); use Getopt::Long (); @@ -18,7 +18,7 @@ locale-diff - Compare two YAML files and print how their datastructures differ diff --keys en.yml is.yml # --untranslated-values compares prints keys whose values don't differ - diff --untranslated-values-all en.yml is.yml + diff --untranslated-values en.yml is.yml # --untranslated-values-all compares prints keys whose values # don't differ. Ignoring the blacklist which prunes things @@ -50,10 +50,12 @@ new entries from F<en.yml> to a local file. =item --untranslated-values -Show keys whose values are either exactly the same between the two -files, or don't exist in the target file (the latter file -specified). The values are pruned according to global and language -specific blacklists found in the C<__DATA__> section of this script. +Show keys that B<exist in both the compared files> and whose values +are exactly the same. Use C<--keys> to a list of values that hasn't +been merged. + +The values are pruned according to global and language specific +blacklists found in the C<__DATA__> section of this script. This helps to find untranslated values. @@ -138,7 +140,7 @@ sub print_key_differences sub untranslated_keys { my ($from_parsed, $to_parsed) = @_; - sort grep { not exists $to_parsed->{$_} or $from_parsed->{$_} eq $to_parsed->{$_} } keys %$from_parsed; + sort grep { exists $to_parsed->{$_} and $from_parsed->{$_} eq $to_parsed->{$_} } keys %$from_parsed; } sub prune_untranslated_with_blacklist @@ -147,7 +149,7 @@ sub prune_untranslated_with_blacklist my %keys; @keys{@keys} = (); - my $end_yaml = Load(join '', <DATA>); + my $end_yaml = LoadFile(*DATA); my $untranslated_values = $end_yaml->{untranslated_values}; my $default = $untranslated_values->{default}; my $this_language = $untranslated_values->{$language} || {}; @@ -248,6 +250,8 @@ untranslated_values: layouts.project_name.h1: true layouts.project_name.title: true site.index.license.project_url: true + browse.relation_member.entry: true + de: activerecord.attributes.message.sender: true activerecord.attributes.trace.name: true @@ -284,3 +288,18 @@ untranslated_values: trace.view.tags: true user.account.public editing.enabled link: true + is: + # ({{link}}) + site.edit.anon_edits: true + + # Creative Commons Attribution-Share Alike 2.0 + site.index.license.license_name: true + + # http://creativecommons.org/licenses/by-sa/2.0/ + site.index.license.license_url: true + + # {{id}} + printable_name.with_id: true + + # {{name}} ({{id}}) + printable_name.with_name: true diff --git a/test/functional/amf_controller_test.rb b/test/functional/amf_controller_test.rb index 22af7f228..ab0f5d5ad 100644 --- a/test/functional/amf_controller_test.rb +++ b/test/functional/amf_controller_test.rb @@ -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 diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index d60fe2fbc..8f0b21477 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -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 index 000000000..3f2d65a27 --- /dev/null +++ b/test/integration/short_link_test.rb @@ -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 index 000000000..bbae95106 --- /dev/null +++ b/test/unit/short_link_test.rb @@ -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 diff --git a/vendor/plugins/rails-i18n/locale/sl.rb b/vendor/plugins/rails-i18n/locale/sl.rb index d32740f2c..124e934a0 100644 --- a/vendor/plugins/rails-i18n/locale/sl.rb +++ b/vendor/plugins/rails-i18n/locale/sl.rb @@ -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" @@ -92,51 +92,51 @@ :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 => { @@ -165,9 +165,24 @@ :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}}", @@ -181,6 +196,8 @@ :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:"