From: Tom Hughes Date: Sun, 17 Oct 2010 10:02:11 +0000 (+0100) Subject: Merge branch 'master' into openstreetbugs X-Git-Tag: live~5227^2~202 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/a1cb0f04d476101116087286ff072d3a137355cb?hp=6fb857020092c909043c4521b91a040f3bb16937 Merge branch 'master' into openstreetbugs Conflicts: app/views/site/index.html.erb --- diff --git a/app/controllers/changeset_tag_controller.rb b/app/controllers/changeset_tag_controller.rb deleted file mode 100644 index 374e21ca1..000000000 --- a/app/controllers/changeset_tag_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class ChangesetTagController < ApplicationController - layout 'site' - - def search - @tags = ChangesetTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] ) - end - -end diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb index 4b539b1fd..f70a644cd 100644 --- a/app/controllers/oauth_controller.rb +++ b/app/controllers/oauth_controller.rb @@ -52,9 +52,17 @@ class OauthController < ApplicationController if any_auth @token.authorize!(@user) - redirect_url = params[:oauth_callback] || @token.client_application.callback_url - if redirect_url - redirect_to "#{redirect_url}?oauth_token=#{@token.token}" + if @token.oauth10? + redirect_url = params[:oauth_callback] || @token.client_application.callback_url + else + redirect_url = @token.oob? ? @token.client_application.callback_url : @token.callback_url + end + if redirect_url and not redirect_url.empty? + if @token.oauth10? + redirect_to "#{redirect_url}?oauth_token=#{@token.token}" + else + redirect_to "#{redirect_url}?oauth_token=#{@token.token}&oauth_verifier=#{@token.verifier}" + end else render :action => "authorize_success" end diff --git a/app/controllers/old_relation_tag_controller.rb b/app/controllers/old_relation_tag_controller.rb deleted file mode 100644 index fba59a043..000000000 --- a/app/controllers/old_relation_tag_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class OldRelationTagController < ApplicationController - -end diff --git a/app/controllers/old_way_tag_controller.rb b/app/controllers/old_way_tag_controller.rb deleted file mode 100644 index 02c1e2e65..000000000 --- a/app/controllers/old_way_tag_controller.rb +++ /dev/null @@ -1,2 +0,0 @@ -class OldWayTagController < ApplicationController -end diff --git a/app/controllers/relation_tag_controller.rb b/app/controllers/relation_tag_controller.rb deleted file mode 100644 index c58364c4a..000000000 --- a/app/controllers/relation_tag_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class RelationTagController < ApplicationController - layout 'site' - - def search - @tags = RelationTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] ) - end - - -end diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index 989d5d5a0..2cd3117dd 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -4,22 +4,22 @@ class TraceController < ApplicationController before_filter :authorize_web before_filter :set_locale before_filter :require_user, :only => [:mine, :create, :edit, :delete] - before_filter :authorize, :only => [:api_details, :api_data, :api_create] - before_filter :check_database_readable, :except => [:api_details, :api_data, :api_create] - before_filter :check_database_writable, :only => [:create, :edit, :delete] - before_filter :check_api_readable, :only => [:api_details, :api_data] - before_filter :check_api_writable, :only => [:api_create] - before_filter :require_allow_read_gpx, :only => [:api_details, :api_data] - before_filter :require_allow_write_gpx, :only => [:api_create] + before_filter :authorize, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data] + before_filter :check_database_readable, :except => [:api_read, :api_data] + before_filter :check_database_writable, :only => [:create, :edit, :delete, :api_create, :api_update, :api_delete] + before_filter :check_api_readable, :only => [:api_read, :api_data] + before_filter :check_api_writable, :only => [:api_create, :api_update, :api_delete] + before_filter :require_allow_read_gpx, :only => [:api_read, :api_data] + before_filter :require_allow_write_gpx, :only => [:api_create, :api_update, :api_delete] before_filter :offline_warning, :only => [:mine, :view] - before_filter :offline_redirect, :only => [:create, :edit, :delete, :data, :api_data, :api_create] - around_filter :api_call_handle_error, :only => [:api_details, :api_data, :api_create] + before_filter :offline_redirect, :only => [:create, :edit, :delete, :data, :api_create, :api_delete, :api_data] + around_filter :api_call_handle_error, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data] caches_action :list, :unless => :logged_in?, :layout => false caches_action :view, :layout => false caches_action :georss, :layout => true - cache_sweeper :trace_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => STATUS == :database_offline - cache_sweeper :tracetag_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => STATUS == :database_offline + cache_sweeper :trace_sweeper, :only => [:create, :edit, :delete, :api_create, :api_update, :api_delete], :unless => STATUS == :database_offline + cache_sweeper :tracetag_sweeper, :only => [:create, :edit, :delete, :api_create, :api_update, :api_delete], :unless => STATUS == :database_offline # Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.). # target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces @@ -280,16 +280,48 @@ class TraceController < ApplicationController render :nothing => true, :status => :not_found end - def api_details - trace = Trace.find(params[:id]) + def api_read + trace = Trace.find(params[:id], :conditions => { :visible => true }) if trace.public? or trace.user == @user render :text => trace.to_xml.to_s, :content_type => "text/xml" else render :nothing => true, :status => :forbidden end - rescue ActiveRecord::RecordNotFound - render :nothing => true, :status => :not_found + end + + def api_update + trace = Trace.find(params[:id], :conditions => { :visible => true }) + + if trace.user == @user + new_trace = Trace.from_xml(request.raw_post) + + unless new_trace and new_trace.id == trace.id + raise OSM::APIBadUserInput.new("The id in the url (#{trace.id}) is not the same as provided in the xml (#{new_trace.id})") + end + + trace.description = new_trace.description + trace.tags = new_trace.tags + trace.visibility = new_trace.visibility + trace.save! + + render :nothing => true, :status => :ok + else + render :nothing => true, :status => :forbidden + end + end + + def api_delete + trace = Trace.find(params[:id], :conditions => { :visible => true }) + + if trace.user == @user + trace.visible = false + trace.save! + + render :nothing => true, :status => :ok + else + render :nothing => true, :status => :forbidden + end end def api_data @@ -304,8 +336,6 @@ class TraceController < ApplicationController else render :nothing => true, :status => :forbidden end - rescue ActiveRecord::RecordNotFound - render :nothing => true, :status => :not_found end def api_create diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index b9cca0cf6..c8603afec 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -32,7 +32,12 @@ class UserController < ApplicationController if @user if @user.invalid? - render :action => :new + if @user.new_record? + render :action => :new + else + flash[:errors] = @user.errors + redirect_to :action => :account, :display_name => @user.display_name + end elsif @user.terms_agreed? redirect_to :action => :account, :display_name => @user.display_name end @@ -70,7 +75,7 @@ class UserController < ApplicationController @user.terms_agreed = Time.now.getutc if @user.save - flash[:notice] = t 'user.new.flash create success message' + flash[:notice] = t 'user.new.flash create success message', :email => @user.email Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => params[:referer])) redirect_to :action => 'login' else @@ -123,7 +128,7 @@ class UserController < ApplicationController else if flash[:errors] flash[:errors].each do |attr,msg| - attr = "new_email" if attr == "email" + attr = "new_email" if attr == "email" and !@user.new_email.nil? @user.errors.add(attr,msg) end end @@ -212,15 +217,15 @@ class UserController < ApplicationController else redirect_to :controller => 'site', :action => 'index' end - elsif User.authenticate(:username => email_or_display_name, :password => pass, :pending => true) - flash.now[:error] = t 'user.login.account not active' + elsif user = User.authenticate(:username => email_or_display_name, :password => pass, :pending => true) + flash.now[:error] = t 'user.login.account not active', :reconfirm => url_for(:action => 'confirm_resend', :display_name => user.display_name) elsif User.authenticate(:username => email_or_display_name, :password => pass, :suspended => true) webmaster = link_to t('user.login.webmaster'), "mailto:webmaster@openstreetmap.org" flash.now[:error] = t 'user.login.account suspended', :webmaster => webmaster else flash.now[:error] = t 'user.login.auth failure' end - else + elsif flash[:notice].nil? flash.now[:notice] = t 'user.login.notice' end end @@ -247,30 +252,57 @@ class UserController < ApplicationController end def confirm - if params[:confirm_action] - token = UserToken.find_by_token(params[:confirm_string]) - if token and !token.user.active? - @user = token.user - @user.status = "active" - @user.email_valid = true - @user.save! - referer = token.referer - token.destroy - flash[:notice] = t 'user.confirm.success' - session[:user] = @user.id - unless referer.nil? - redirect_to referer + if request.post? + if token = UserToken.find_by_token(params[:confirm_string]) + if token.user.active? + flash[:error] = t('user.confirm.already active') + redirect_to :action => 'login' else - redirect_to :action => 'account', :display_name => @user.display_name + user = token.user + user.status = "active" + user.email_valid = true + user.save! + referer = token.referer + token.destroy + session[:user] = user.id + + unless referer.nil? + flash[:notice] = t('user.confirm.success') + redirect_to referer + else + flash[:notice] = t('user.confirm.success') + "

" + t('user.confirm.before you start') + redirect_to :action => 'account', :display_name => user.display_name + end end else - flash.now[:error] = t 'user.confirm.failure' + user = User.find_by_display_name(params[:display_name]) + + if user and user.active? + flash[:error] = t('user.confirm.already active') + elsif user + flash[:error] = t('user.confirm.unknown token') + t('user.confirm.reconfirm', :reconfirm => url_for(:action => 'confirm_resend', :display_name => params[:display_name])) + else + flash[:error] = t('user.confirm.unknown token') + end + + redirect_to :action => 'login' end end end + def confirm_resend + if user = User.find_by_display_name(params[:display_name]) + Notifier.deliver_signup_confirm(user, user.tokens.create) + flash[:notice] = t 'user.confirm_resend.success', :email => user.email + else + flash[:notice] = t 'user.confirm_resend.failure', :name => params[:display_name] + end + + redirect_to :action => 'login' + end + def confirm_email - if params[:confirm_action] + if request.post? token = UserToken.find_by_token(params[:confirm_string]) if token and token.user.new_email? @user = token.user @@ -286,7 +318,8 @@ class UserController < ApplicationController session[:user] = @user.id redirect_to :action => 'account', :display_name => @user.display_name else - flash.now[:error] = t 'user.confirm_email.failure' + flash[:error] = t 'user.confirm_email.failure' + redirect_to :action => 'account', :display_name => @user.display_name end end end diff --git a/app/controllers/way_tag_controller.rb b/app/controllers/way_tag_controller.rb deleted file mode 100644 index 02e7a6852..000000000 --- a/app/controllers/way_tag_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class WayTagController < ApplicationController - layout 'site' - - def search - @tags = WayTag.find(:all, :limit => 11, :conditions => ["match(v) against (?)", params[:query][:query].to_s] ) - end - - -end diff --git a/app/models/client_application.rb b/app/models/client_application.rb index d3799abe0..9474a0137 100644 --- a/app/models/client_application.rb +++ b/app/models/client_application.rb @@ -6,6 +6,21 @@ class ClientApplication < ActiveRecord::Base validates_uniqueness_of :key before_validation_on_create :generate_keys + validates_format_of :url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i + validates_format_of :support_url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i, :allow_blank=>true + validates_format_of :callback_url, :with => /\Ahttp(s?):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i, :allow_blank=>true + + attr_accessor :token_callback_url + + def self.find_token(token_key) + token = OauthToken.find_by_token(token_key, :include => :client_application) + if token && token.authorized? + token + else + nil + end + end + def self.verify_request(request, options = {}, &block) begin signature = OAuth::Signature.build(request, options, &block) @@ -35,7 +50,7 @@ class ClientApplication < ActiveRecord::Base end def create_request_token - RequestToken.create :client_application => self + RequestToken.create :client_application => self, :callback_url => self.token_callback_url end # the permissions that this client would like from the user @@ -52,8 +67,8 @@ protected :allow_write_api, :allow_read_gpx, :allow_write_gpx ] def generate_keys - @oauth_client = oauth_server.generate_consumer_credentials - self.key = @oauth_client.key - self.secret = @oauth_client.secret + oauth_client = oauth_server.generate_consumer_credentials + self.key = oauth_client.key + self.secret = oauth_client.secret end end diff --git a/app/models/notifier.rb b/app/models/notifier.rb index a1fde49b3..e6058d4b7 100644 --- a/app/models/notifier.rb +++ b/app/models/notifier.rb @@ -4,6 +4,7 @@ class Notifier < ActionMailer::Base subject I18n.t('notifier.signup_confirm.subject') body :url => url_for(:host => SERVER_URL, :controller => "user", :action => "confirm", + :display_name => user.display_name, :confirm_string => token.token) end diff --git a/app/models/request_token.rb b/app/models/request_token.rb index d66fe6ce1..0044dde26 100644 --- a/app/models/request_token.rb +++ b/app/models/request_token.rb @@ -1,17 +1,23 @@ class RequestToken < OauthToken + + attr_accessor :provided_oauth_verifier + def authorize!(user) return false if authorized? self.user = user self.authorized_at = Time.now + self.verifier = OAuth::Helper.generate_key(16)[0,20] unless oauth10? self.save end - + def exchange! return false unless authorized? + return false unless oauth10? || verifier == provided_oauth_verifier + RequestToken.transaction do params = { :user => user, :client_application => client_application } # copy the permissions from the authorised request token to the access token - client_application.permissions.each { |p| + client_application.permissions.each { |p| params[p] = read_attribute(p) } @@ -20,4 +26,21 @@ class RequestToken < OauthToken access_token end end + + def to_query + if oauth10? + super + else + "#{super}&oauth_callback_confirmed=true" + end + end + + def oob? + self.callback_url=='oob' + end + + def oauth10? + (defined? OAUTH_10_SUPPORT) && OAUTH_10_SUPPORT && self.callback_url.blank? + end + end diff --git a/app/models/trace.rb b/app/models/trace.rb index 24f93236a..582c7285c 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -149,15 +149,72 @@ class Trace < ActiveRecord::Base el1 = XML::Node.new 'gpx_file' el1['id'] = self.id.to_s el1['name'] = self.name.to_s - el1['lat'] = self.latitude.to_s - el1['lon'] = self.longitude.to_s + el1['lat'] = self.latitude.to_s if self.inserted + el1['lon'] = self.longitude.to_s if self.inserted el1['user'] = self.user.display_name el1['visibility'] = self.visibility el1['pending'] = (!self.inserted).to_s el1['timestamp'] = self.timestamp.xmlschema + + el2 = XML::Node.new 'description' + el2 << self.description + el1 << el2 + + self.tags.each do |tag| + el2 = XML::Node.new('tag') + el2 << tag.tag + el1 << el2 + end + return el1 end + # Read in xml as text and return it's Node object representation + def self.from_xml(xml, create=false) + begin + p = XML::Parser.string(xml) + doc = p.parse + + doc.find('//osm/gpx_file').each do |pt| + return Trace.from_xml_node(pt, create) + end + + raise OSM::APIBadXMLError.new("trace", xml, "XML doesn't contain an osm/gpx_file element.") + rescue LibXML::XML::Error, ArgumentError => ex + raise OSM::APIBadXMLError.new("trace", xml, ex.message) + end + end + + def self.from_xml_node(pt, create=false) + trace = Trace.new + + raise OSM::APIBadXMLError.new("trace", pt, "visibility missing") if pt['visibility'].nil? + trace.visibility = pt['visibility'] + + unless create + raise OSM::APIBadXMLError.new("trace", pt, "ID is required when updating.") if pt['id'].nil? + trace.id = pt['id'].to_i + # .to_i will return 0 if there is no number that can be parsed. + # We want to make sure that there is no id with zero anyway + raise OSM::APIBadUserInput.new("ID of trace cannot be zero when updating.") if trace.id == 0 + end + + # We don't care about the time, as it is explicitly set on create/update/delete + # We don't care about the visibility as it is implicit based on the action + # and set manually before the actual delete + trace.visible = true + + description = pt.find('description').first + raise OSM::APIBadXMLError.new("trace", pt, "description missing") if description.nil? + trace.description = description.content + + pt.find('tag').each do |tag| + trace.tags.build(:tag => tag.content) + end + + return trace + end + def xml_file # TODO *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz' filetype = `/usr/bin/file -bz #{trace_name}`.chomp diff --git a/app/views/browse/start.rjs b/app/views/browse/start.rjs index 1b68043c9..d4ef1f530 100644 --- a/app/views/browse/start.rjs +++ b/app/views/browse/start.rjs @@ -25,10 +25,10 @@ page << <'; @@ -248,7 +248,7 @@ page << <'+"#{html_escape_unicode(I18n.t('export.start_rjs.view_larger_map'))}"+''; + html += '
'+"#{html_escape_unicode(I18n.t('export.start_rjs.view_larger_map'))}"+''; $("export_html_text").value = html; diff --git a/app/views/layouts/site.html.erb b/app/views/layouts/site.html.erb index a026c0594..b514fef99 100644 --- a/app/views/layouts/site.html.erb +++ b/app/views/layouts/site.html.erb @@ -117,7 +117,10 @@ <% end %>
- <%= t 'layouts.help_wiki' %>
+ <%= t 'layouts.help_and_wiki', + :help => link_to(t('layouts.help'), t('layouts.help_url'), :title => t('layouts.help_title')), + :wiki => link_to(t('layouts.wiki'), t('layouts.wiki_url'), :title => t('layouts.wiki_title')) + %>
<%= link_to t('layouts.copyright'), {:controller => 'site', :action => 'copyright'} %>
<%= t 'layouts.news_blog' %>
<%= t 'layouts.shop' %>
diff --git a/app/views/notifier/signup_confirm.text.html.erb b/app/views/notifier/signup_confirm.text.html.erb index eaeb7dce8..c0883382e 100644 --- a/app/views/notifier/signup_confirm.text.html.erb +++ b/app/views/notifier/signup_confirm.text.html.erb @@ -11,6 +11,8 @@

<%= t'notifier.signup_confirm_html.get_reading' %>

+

<%= t'notifier.signup_confirm_html.ask_questions' %>

+

<%= t'notifier.signup_confirm_html.wiki_signup' %>

<%= t'notifier.signup_confirm_html.user_wiki_page' %>

diff --git a/app/views/notifier/signup_confirm.text.plain.erb b/app/views/notifier/signup_confirm.text.plain.erb index 6153c1c8c..a53f27dda 100644 --- a/app/views/notifier/signup_confirm.text.plain.erb +++ b/app/views/notifier/signup_confirm.text.plain.erb @@ -22,13 +22,17 @@ <%= t'notifier.signup_confirm_plain.blog_and_twitter' %> - http://blog.openstreepmap.org/ + http://blog.openstreetmap.org/ http://twitter.com/openstreetmap <%= t'notifier.signup_confirm_plain.opengeodata' %> http://www.opengeodata.org/ +<%= t'notifier.signup_confirm_plain.ask_questions' %> + + http://help.openstreetmap.org/ + <%= t'notifier.signup_confirm_plain.wiki_signup' %> <%= t'notifier.signup_confirm_plain.wiki_signup_url' %> diff --git a/app/views/oauth/authorize_success.html.erb b/app/views/oauth/authorize_success.html.erb index effe24a79..a25b98ec7 100644 --- a/app/views/oauth/authorize_success.html.erb +++ b/app/views/oauth/authorize_success.html.erb @@ -1 +1,5 @@ -

You have allowed this request

\ No newline at end of file +

You have allowed this request

+ +<% if @token.oob? %> +

The verification code is <%= @token.verifier %>

+<% end %> diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index fc1e1ec5c..305df63c0 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -17,12 +17,13 @@ +
+ +
@@ -41,7 +42,7 @@ <% -if params['mlon'] and params['mlat'] +if params['mlon'] and params['mlat'] marker = true mlon = h(params['mlon']) mlat = h(params['mlat']) @@ -69,7 +70,7 @@ if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat minlat = h(params['minlat']) maxlon = h(params['maxlon']) maxlat = h(params['maxlat']) - box = true if params['box']=="yes" + box = true if params['box']=="yes" object_zoom = false end @@ -81,14 +82,14 @@ if params['lon'] and params['lat'] layers = h(params['layers']) object_zoom = false elsif params['mlon'] and params['mlat'] - lon = h(params['mlon']) + 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("|") -elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? +elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? lon = @user.home_lon lat = @user.home_lat zoom = '10' @@ -102,12 +103,12 @@ else maxlon = session[:location][:maxlon] maxlat = session[:location][:maxlat] else - lon = '-0.1' - lat = '51.5' - zoom = h(params['zoom'] || '5') + lon = '-0.1' + lat = '51.5' + zoom = h(params['zoom'] || '5') end - layers = h(params['layers']) + layers = h(params['layers']) end %> @@ -261,7 +262,7 @@ end updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, objtype, objid); - expiry.setYear(expiry.getFullYear() + 10); + expiry.setYear(expiry.getFullYear() + 10); document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString(); } @@ -273,7 +274,7 @@ end content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin; content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin; } - + function resizeMap() { var centre = map.getCenter(); var zoom = map.getZoom(); @@ -297,7 +298,7 @@ end resizeMap(); } - + mapInit(); window.onload = handleResize; diff --git a/app/views/site/key.html.erb b/app/views/site/key.html.erb index 5879701a2..d0fd36148 100644 --- a/app/views/site/key.html.erb +++ b/app/views/site/key.html.erb @@ -1,5 +1,4 @@
-

<%= t "site.key.table.heading", :zoom_level => params[:zoom] %>

<% YAML.load_file("#{RAILS_ROOT}/config/key.yml").each do |name,data| %> <% if params[:layer] == name %> diff --git a/app/views/user/confirm.html.erb b/app/views/user/confirm.html.erb index 5a4106ee3..408ba771f 100644 --- a/app/views/user/confirm.html.erb +++ b/app/views/user/confirm.html.erb @@ -1,10 +1,17 @@ + +

<%= t 'user.confirm.heading' %>

<%= t 'user.confirm.press confirm button' %>

- - - + + + + - + diff --git a/app/views/user/confirm_email.html.erb b/app/views/user/confirm_email.html.erb index 16e718a4a..fd17ef08a 100644 --- a/app/views/user/confirm_email.html.erb +++ b/app/views/user/confirm_email.html.erb @@ -1,8 +1,16 @@ + +

<%= t 'user.confirm_email.heading' %>

<%= t 'user.confirm_email.press confirm button' %>

- - - + + + + + diff --git a/app/views/way_tag/search.html.erb b/app/views/way_tag/search.html.erb deleted file mode 100644 index 820bad7db..000000000 --- a/app/views/way_tag/search.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -

Search results

-fixme postcodes and geonames - -<% form_tag :controller => 'way_tag', :action => 'search' do %> -<%= text_field 'query', 'query'%> -<%= submit_tag 'Search' %> -<% end %> - - -
- <% @tags.each do |tag| %> - - - - <% end %> -
- <%= link_to tag.v, :controller => 'site', :action => 'goto_way', :id => tag.id %> (k:<%= tag.k %>)
- - Way <%= tag.id %> (<%= tag.way.timestamp %>) - <%= link_to 'Map', :controller => 'site', :action => 'goto_way', :id => tag.id %> - - <%= link_to 'API', :controller => 'way', :action => 'rest', :id => tag.id %> -

-
-
diff --git a/config/environment.rb b/config/environment.rb index 00067a263..6d6c952fb 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -20,7 +20,8 @@ Rails::Initializer.run do |config| end config.gem 'libxml-ruby', :version => '>= 1.1.1', :lib => 'libxml' config.gem 'rmagick', :lib => 'RMagick' - config.gem 'oauth', :version => '>= 0.3.6' + config.gem 'oauth', :version => '>= 0.4.3' + config.gem 'oauth-plugin', :version => '0.3.14' config.gem 'httpclient' config.gem 'SystemTimer', :version => '>= 1.1.3', :lib => 'system_timer' config.gem 'sanitize' diff --git a/config/example.application.yml b/config/example.application.yml index 25df99d26..9b00beb58 100644 --- a/config/example.application.yml +++ b/config/example.application.yml @@ -53,6 +53,8 @@ standard_settings: &standard_settings gpx_image_dir: "/home/osm/images" # Location of data for file columns #file_column_root: "" + # Enable legacy OAuth 1.0 support + oauth_10_support: true development: <<: *standard_settings diff --git a/config/locales/af.yml b/config/locales/af.yml index 346cc9fc4..0bd7d1fd1 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -758,8 +758,6 @@ af: export_tooltip: Eksporteer kaartdata gps_traces: GPS-spore gps_traces_tooltip: Beheer GPS-spore - help_wiki: Help & Wiki - help_wiki_tooltip: Help en wiki vir die projek history: Geskiedenis home: tuis home_tooltip: Gaan na tuisligging diff --git a/config/locales/aln.yml b/config/locales/aln.yml index ac25e6ef8..529cbd7aa 100644 --- a/config/locales/aln.yml +++ b/config/locales/aln.yml @@ -883,8 +883,6 @@ aln: export_tooltip: Harta dhënat Eksporti gps_traces: GPS Gjurmët gps_traces_tooltip: Manage gjurmë GPS - help_wiki: Ndihmë & Wiki - help_wiki_tooltip: Ndihmë & Wiki faqe interneti për projektin history: Historia home: shtëpi home_tooltip: Shkoni në shtëpi vend @@ -1403,8 +1401,8 @@ aln: heading: Perdoruesit hide: Mshefi Perdorust e Zgjedhun showing: - one: Tu e kallxu faqen {{page}} ({{page}} prej {{page}}) - other: Tu e kallxu faqen {{page}} ({{page}}-{{page}} prej {{page}}) + one: Tu e kallxu faqen {{page}} ({{first_item}} prej {{items}}) + other: Tu e kallxu faqen {{page}} ({{first_item}}-{{last_item}} prej {{items}}) summary: "{{name}} u kriju prej {{ip_address}} në {{date}}" summary_no_ip: "{{name}} u krijue me {{date}}" title: Perdoruesit diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 0068c3ac5..2240f320e 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -890,8 +890,6 @@ ar: export_tooltip: صدّر بيانات الخريطة gps_traces: آثار جي بي أس gps_traces_tooltip: عالج آثار جي بي إس - help_wiki: المساعدة والويكي - help_wiki_tooltip: المساعدة وموقع الويكي للمشروع history: تاريخ home: الصفحة الرئيسية home_tooltip: اذهب إلى الصفحة الرئيسية diff --git a/config/locales/arz.yml b/config/locales/arz.yml index 3d40146b4..0f7f853ec 100644 --- a/config/locales/arz.yml +++ b/config/locales/arz.yml @@ -822,8 +822,6 @@ arz: export_tooltip: صدّر بيانات الخريطة gps_traces: آثار جى بى أس gps_traces_tooltip: عالج الآثار - help_wiki: المساعده والويكي - help_wiki_tooltip: المساعده وموقع الويكى للمشروع history: تاريخ home: الصفحه الرئيسية home_tooltip: اذهب إلى الصفحه الرئيسية diff --git a/config/locales/be.yml b/config/locales/be.yml index 6a0b51f35..87683bf55 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -286,9 +286,6 @@ be: export_tooltip: Экспартаваць данныя карты gps_traces: GPS Трэкі gps_traces_tooltip: Працаваць з трэкамі - help_wiki: Дапамога і Wiki - help_wiki_tooltip: Даведка і сайт Вікі - help_wiki_url: http://wiki.openstreetmap.org/wiki/RU:Main_Page?uselang=be history: Гісторыя home: дамоў home_tooltip: Паказаць маю хату diff --git a/config/locales/br.yml b/config/locales/br.yml index cd0ee0ffb..fca620a87 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -261,7 +261,7 @@ br: view_changeset_details: Gwelet munudoù ar strollad kemmoù changeset_paging_nav: next: War-lerc'h » - previous: "« A-raok" + previous: "« Kent" showing_page: O tiskouez ar bajenn {{page}} changesets: area: Takad @@ -879,8 +879,9 @@ br: export_tooltip: Ezporzhiañ roadennoù ar gartenn gps_traces: Roudoù GPS gps_traces_tooltip: Merañ ar roudoù GPS - help_wiki: Skoazell & Wiki - help_wiki_tooltip: Skoazell & lec'hienn Wiki evit ar raktres + help: Skoazell + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Lec'hienn skoazell evit ar raktres history: Istor home: degemer home_tooltip: Mont da lec'h ar gêr @@ -919,6 +920,8 @@ br: view_tooltip: Gwelet ar gartenn welcome_user: Degemer mat, {{user_link}} welcome_user_link_tooltip: Ho pajenn implijer + wiki: Wiki + wiki_title: Lec'hienn wiki evit ar raktres license_page: foreign: english_link: orin e Saozneg @@ -1312,7 +1315,7 @@ br: tags: Balizennoù trace_paging_nav: next: War-lerc'h » - previous: "« A-raok" + previous: "«Kent" showing_page: O tiskouez ar bajenn {{page}} view: delete_track: Dilemel ar roudenn-mañ @@ -1340,6 +1343,8 @@ br: trackable: A c'haller treseal (rannet evel dizanv hepken, poent uzhiet gant deiziadoù) user: account: + contributor terms: + link text: Petra eo se ? current email address: "Chomlec'h postel a-vremañ :" delete image: Dilemel ar skeudenn a-vremañ email never displayed publicly: (n'eo ket diskwelet d'an holl morse) @@ -1394,6 +1399,9 @@ br: empty: N'eo bet kavet implijer klotaus ebet ! heading: Implijerien hide: Kuzhat an implijerien diuzet + showing: + one: Diskwel ar bajenn {{page}} ({{first_item}} war {{items}}) + other: Diskwel ar bajenn {{page}} ({{first_item}}-{{last_item}} war {{items}}) summary: "{{name}} krouet eus {{ip_address}} d'an {{date}}" summary_no_ip: "{{name}} krouet d'an {{date}}" title: Implijerien diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 2b9ca86ca..c474d6a55 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -274,7 +274,7 @@ cs: one: 1 komentář other: "{{count}} komentářů" comment_link: Okomentovat tento zápis - posted_by: Zapsal {{link_user}} v {{created}} v jazyce {{language_link}} + posted_by: Zapsal {{link_user}} {{created}} v jazyce {{language_link}} reply_link: Odpovědět na tento zápis edit: body: "Text:" @@ -287,11 +287,19 @@ cs: subject: "Předmět:" use_map_link: použít mapu feed: + all: + description: Nedávné záznamy v deníčcích uživatelů OpenStreetMap + title: Deníčkové záznamy OpenStreetMap language: description: Aktuální záznamy v deníčcích uživatelů OpenStreetMap v jazyce {{language_name}} title: Deníčkové záznamy OpenStreetMap v jazyce {{language_name}} + user: + description: Nedávné záznamy v OpenStreetMap deníčku uživatele {{user}} + title: Záznamy v OpenStreetMap deníčku uživatele {{user}} list: in_language_title: Deníčkové záznamy v jazyce {{language}} + new: Nový záznam do deníčku + new_title: Sepsat nový záznam do vaÅ¡eho uživatelského deníčku no_entries: Žádné záznamy v deníčku recent_entries: "Aktuální deníčkové záznamy:" title: Deníčky uživatelů @@ -389,37 +397,83 @@ cs: prefix: amenity: airport: LetiÅ¡tě + atm: Bankomat bank: Banka + bench: Lavička + bicycle_rental: Půjčovna kol + bus_station: Autobusové nádraží cafe: Kavárna cinema: Kino + courthouse: Soud crematorium: Krematorium + dentist: Zubař + driving_school: AutoÅ¡kola embassy: Velvyslanectví + ferry_terminal: PřístaviÅ¡tě přívozu + fire_station: Hasičská stanice + fountain: Fontána + fuel: Čerpací stanice + grave_yard: Hřbitov + hospital: Nemocnice + hunting_stand: Posed kindergarten: Mateřská Å¡kola + library: Knihovna + mountain_rescue: Horská služba park: Park parking: ParkoviÅ¡tě + place_of_worship: Náboženský objekt + police: Policie + post_box: PoÅ¡tovní schránka post_office: PoÅ¡ta + prison: Věznice + pub: Hospoda + restaurant: Restaurace retirement_home: Domov důchodců + school: Å kola telephone: Telefonní automat + theatre: Divadlo toilets: Toalety + townhall: Radnice + boundary: + administrative: Administrativní hranice building: city_hall: Radnice entrance: Vstup do objektu hospital: Nemocniční budova + public: Veřejná budova stadium: Stadion tower: Věž train_station: Železniční stanice "yes": Budova highway: + bus_guideway: Autobusová dráha bus_stop: Autobusová zastávka construction: Silnice ve výstavbě + cycleway: Cyklostezka + distance_marker: Kilometrovník + footway: Chodník + ford: Brod gate: Brána + living_street: Obytná zóna motorway: Dálnice + motorway_junction: Dálniční křižovatka + motorway_link: Dálnice + platform: NástupiÅ¡tě + primary: Silnice první třídy + primary_link: Silnice první třídy residential: Ulice - secondary: Silnice II. třídy + secondary: Silnice druhé třídy + secondary_link: Silnice druhé třídy + service: Účelová komunikace + services: Dálniční odpočívadlo steps: Schody + tertiary: Silnice třetí třídy + trunk: Významná silnice + trunk_link: Významná silnice unsurfaced: Nezpevněná cesta historic: battlefield: BojiÅ¡tě + building: Budova memorial: Památník museum: Muzeum wreck: Vrak @@ -429,6 +483,7 @@ cs: construction: StaveniÅ¡tě landfill: Skládka military: Vojenský prostor + piste: Sjezdovka vineyard: Vinice leisure: garden: Zahrada @@ -438,20 +493,45 @@ cs: nature_reserve: Přírodní rezervace park: Park pitch: HřiÅ¡tě + playground: Dětské hřiÅ¡tě + slipway: Skluzavka stadium: Stadion swimming_pool: Bazén + track: Běžecká dráha + water_park: Aquapark natural: + bay: Záliv beach: Pláž + cape: Mys + cave_entrance: Vstup do jeskyně + cliff: Útes + coastline: Pobřežní čára + fell: See http://wiki.openstreetmap.org/wiki/Tag:natural=fell + fjord: Fjord + geyser: Gejzír glacier: Ledovec hill: Kopec island: Ostrov + land: Země + marsh: Mokřina + moor: VřesoviÅ¡tě + peak: Vrchol + reef: Útes river: Řeka + rock: Skalisko + scree: Osyp + shoal: Mělčina + spring: Pramen tree: Strom valley: Údolí + volcano: Sopka + water: Vodní plocha + wetlands: Mokřad place: airport: LetiÅ¡tě city: Velkoměsto country: Stát + county: Hrabství farm: Farma hamlet: Osada house: Dům @@ -484,8 +564,11 @@ cs: hairdresser: Kadeřnictví jewelry: Klenotnictví optician: Oční optika + toys: Hračkářství + travel_agency: Cestovní kancelář tourism: alpine_hut: Vysokohorská chata + artwork: Umělecké dílo attraction: Turistická atrakce camp_site: TábořiÅ¡tě, kemp caravan_site: Autokemping @@ -497,12 +580,19 @@ cs: lean_to: PřístřeÅ¡ek motel: Motel museum: Muzeum + picnic_site: Piknikové místo theme_park: Zábavní park valley: Údolí viewpoint: Místo s dobrým výhledem zoo: Zoo waterway: + derelict_canal: OpuÅ¡těný kanál + lock: Zdymadlo + lock_gate: Vrata plavební komory river: Řeka + riverbank: Břeh řeky + wadi: Vádí + waterfall: Vodopád javascripts: map: base: @@ -520,9 +610,10 @@ cs: edit: Upravit export: Export export_tooltip: Exportovat mapová data - help_wiki: Nápověda & wiki - help_wiki_tooltip: Server s nápovědou a wiki k tomuto projektu - help_wiki_url: http://wiki.openstreetmap.org/wiki/Cs:Main_Page?uselang=cs + gps_traces: GPS stopy + help: Nápověda + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Stránky s nápovědou k tomuto projektu history: Historie home: domů home_tooltip: Přejít na polohu domova @@ -564,8 +655,18 @@ cs: view_tooltip: Zobrazit mapu welcome_user: Vítejte, {{user_link}} welcome_user_link_tooltip: VaÅ¡e uživatelská stránka + wiki: wiki + wiki_title: Wiki k tomuto projektu license_page: + foreign: + english_link: anglickým originálem + text: V případě rozporů mezi touto přeloženou verzí a {{english_original_link}} má přednost anglická stránka. + title: O tomto překladu + legal_babble: "

Autorská práva a licence

\n

\n OpenStreetMap jsou svobodná data, nabízená za podmínek licence Creative Commons Uveďte autora-Zachovejte licenci 2.0 (CC-BY-SA).\n

\n

\n Smíte kopírovat, distribuovat, sdělovat veřejnosti a upravovat naše mapy i data, pokud jako zdroj uvedete OpenStreetMap a jeho přispěvatele. Pokud naše mapy nebo data budete upravovat nebo je použijete ve svém díle, musíte výsledek šířit pod stejnou licencí. Vaše práva a povinnosti jsou vysvětleny v plném licenčním ujednání.\n

\n\n

Jak uvádět OpenStreetMap

\n

\n Pokud používáte obrázky z mapy OpenStreetMap, žádáme, abyste uváděli přinejmenším „© Přispěvatelé OpenStreetMap, CC-BY-SA“. Pokud používáte pouze mapová data, požadujeme „Mapová data © Přispěvatelé OpenStreetMap, CC-BY-SA“.\n

\n

\n Pokud je to možné, OpenStreetMap by měl být hypertextový odkaz na http://www.openstreetmap.org/ a CC-BY-SA na http://creativecommons.org/licenses/by-sa/2.0/deed.cs. Pokud používáte médium, které odkazy neumožňuje (např. v tištěném díle), navrhujeme, abyste své čtenáře nasměrovali na www.openstreetmap.org (zřejmě doplněním „OpenStreetMap“ do této plné adresy) a www.creativecommons.org.\n

\n\n

Další informace

\n

\n O používání našich dat se můžete dočíst více v našem Právním FAQ.\n

\n

\n Přispěvatelům OSM by nikdy neměli přidávat data ze zdrojů chráněných autorským právem (např. Google Maps či tištěné mapy) bez výslovného svolení držitelů práv.\n

\n

\n Přestože OpenStreetMap tvoří svobodná data, nemůžeme zdarma poskytovat třetím stranám mapové API.\n\n Vizte naše Pravidla použití API, Pravidla použití dlaždic a Pravidla použití Nominatimu.\n

\n\n

Naši přispěvatelé

\n

\n Naše licence CC-BY-SA vyžaduje, abyste „způsobem odpovídajícím danému nosiči a v přiměřené formě uváděli autora“. Jednotliví přispěvatelé nevyžadují uvádění svého autorství nad ono „Přispěvatelé OpenStreetMap“, ale tam, kde byla do OpenStreetMap zahrnuta data národních zeměměřických úřadů či jiných velkých zdrojů, může být přiměřené uznat jejich autorství uvedením jejich označení nebo odkázáním na tuto stránku.\n

\n\n
    \n
  • Austrálie: Obsahuje data předměstí založená na datech Australského statistického úřadu.
  • \n
  • Kanada: Obsahuje data z GeoBase®, GeoGratis (© Department of Natural Resources Canada), CanVec (© Department of Natural Resources Canada) a StatCan (Geography Division, Statistics Canada).
  • \n
  • Nový Zéland: Obsahuje data pocházející z Land Information New Zealand. Crown Copyright reserved.
  • \n
  • Polsko: Obsahuje data z map UMP-pcPL. Copyright přispěvatelé UMP-pcPL.
  • \n
  • Spojené království: Obsahuje data Ordnance Survey © Crown copyright a právo k databázi 2010.
  • \n
\n\n

\n Zahrnutí dat do OpenStreetMap neznamená, že původní poskytovatel dat podporuje OpenStreetMap, nabízí jakoukoli záruku nebo přijímá jakoukoli zodpovědnost.\n

" native: + mapping_link: začít mapovat + native_link: českou verzi + text: Prohlížíte si anglickou verzi stránky o autorských právech. Můžete se vrátit na {{native_link}} této stránky nebo si přestat číst o copyrightech a {{mapping_link}}. title: O této stránce message: delete: @@ -647,12 +748,64 @@ cs: signup_confirm_plain: the_wiki_url: http://wiki.openstreetmap.org/wiki/Cs:Beginners_Guide?uselang=cs wiki_signup_url: http://wiki.openstreetmap.org/index.php?title=Special:UserLogin&type=signup&returnto=Cs:Main_Page&uselang=cs + oauth: + oauthorize: + allow_read_gpx: číst vaÅ¡e soukromé GPS stopy. + allow_read_prefs: číst vaÅ¡e uživatelské nastavení. + allow_to: "Umožnit klientské aplikaci:" + allow_write_api: upravovat mapu. + allow_write_diary: vytvářet deníčkové záznamy, komentovat a navazovat přátelství. + allow_write_gpx: nahrávat GPS stopy. + allow_write_prefs: měnit vaÅ¡e uživatelské nastavení. + request_access: Aplikace {{app_name}} žádá o přístup k vaÅ¡emu účtu. Vyberte si, zda si přejete, aby aplikace měla následující oprávnění. Můžete jich zvolit libovolný počet. + revoke: + flash: Přístup pro aplikaci {{application}} byl odvolán. oauth_clients: + create: + flash: Údaje úspěšně zaregistrovány + destroy: + flash: Registrace klientské aplikace zruÅ¡ena + form: + allow_read_gpx: číst jejich soukromé GPS stopy. + allow_read_prefs: číst jejich uživatelské nastavení. + allow_write_api: upravovat mapu. + allow_write_diary: vytvářet deníčkové záznamy, komentovat a navazovat přátelství. + allow_write_gpx: nahrávat GPS stopy. + allow_write_prefs: měnit jejich uživatelské nastavení. + callback_url: URL pro zpětné volání + name: Název + requests: "Žádat uživatele o následující oprávnění:" + required: Vyžadováno + support_url: URL s podporou + url: Hlavní URL aplikace index: + application: Název aplikace + issued_at: Vydáno + list_tokens: "Aplikacím byly vaším jménem vydány následující přístupové tokeny:" my_apps: Mé klientské aplikace + my_tokens: Mé autorizované aplikace no_apps: Máte nějakou aplikaci používající standard {{oauth}}, která by s námi měla spolupracovat? Aplikaci je potřeba nejdříve zaregistrovat, až poté k nám bude moci posílat OAuth požadavky. register_new: Zaregistrovat aplikaci + registered_apps: "Máte zaregistrovány následující klientské aplikace:" + revoke: Odvolat! title: Moje nastavení OAuth + new: + submit: Zaregistrovat + title: Registrace nové aplikace + not_found: + sorry: Je nám líto, ale nepodařilo se najít {{type}}. + show: + allow_read_gpx: číst jejich soukromé GPS stopy. + allow_read_prefs: číst jejich uživatelské nastavení. + allow_write_api: upravovat mapu. + allow_write_diary: vytvářet deníčkové záznamy, komentovat a navazovat přátelství. + allow_write_gpx: nahrávat GPS stopy. + allow_write_prefs: měnit jejich uživatelské nastavení. + requests: "Uživatelé se žádají o následující oprávnění:" + support_notice: Podporujeme HMAC-SHA1 (doporučeno) i prostý text v režimu SSL. + title: Podrobnosti OAuth pro {{app_name}} + update: + flash: Klientské informace úspěšně aktualizovány site: edit: flash_player_required: Pokud chcete používat Potlatch, flashový editor OpenStreetMap, potřebujete přehrávač Flashe. Můžete si stáhnout Flash Player z Adobe.com. Pro editaci OpenStreetMap existuje mnoho dalších možností. @@ -680,6 +833,7 @@ cs: bridleway: Koňská stezka brownfield: ZbořeniÅ¡tě building: Významná budova + byway: Cesta cable: - Lanovka - sedačková lanovka @@ -733,6 +887,7 @@ cs: tunnel: Čárkované obrysy = tunel unclassified: Silnice unsurfaced: Nezpevněná cesta + wood: Les heading: Legenda pro z{{zoom_level}} search: search: Hledat @@ -749,75 +904,112 @@ cs: trace: create: trace_uploaded: Váš GPX soubor byl uložen a čeká na zařazení do databáze. Obvykle to netrvá víc jak půl hodiny. Až bude zařazen, budete informováni emailem. - upload_trace: Nahrát GPS záznam + upload_trace: Nahrát GPS stopu + delete: + scheduled_for_deletion: Stopa označena ke smazání edit: description: "Popis:" download: stáhnout edit: upravit filename: "Název souboru:" - heading: Úprava GPS záznamu {{name}} + heading: Úprava stopy {{name}} map: mapa owner: "Vlastník:" points: "Body:" save_button: Uložit změny start_coord: "Souřadnice začátku:" - tags: "Tagy:" + tags: "Å títky:" tags_help: oddělené čárkou + title: Úprava stopy {{name}} uploaded_at: "Nahráno v:" visibility: "Viditelnost:" visibility_help: co tohle znamená? list: - your_traces: VaÅ¡e GPS záznamy + public_traces: Veřejné GPS stopy + public_traces_from: Veřejné GPS stopy uživatele {{user}} + tagged_with: " oÅ¡títkované jako {{tags}}" + your_traces: VaÅ¡e GPS stopy + make_public: + made_public: Stopa zveřejněna no_such_user: body: Lituji, ale uživatel {{user}} neexistuje. Zkontrolujte překlepy nebo jste možná klikli na chybný odkaz. heading: Uživatel {{user}} neexistuje title: Uživatel nenalezen + offline: + heading: GPX úložiÅ¡tě offline + message: ÚložiÅ¡tě GPX souborů a systém pro nahrávání jsou momentálně mimo provoz. + offline_warning: + message: Systém pro načítání GPX souborů je momentálně mimo provoz. trace: ago: před {{time_in_words_ago}} by: od count_points: "{{count}} bodů" edit: upravit edit_map: Upravit mapu + identifiable: IDENTIFIKOVATELNÁ in: v map: mapa more: více + pending: ZPRACOVÁVÁ SE + private: SOUKROMÁ + public: VEŘEJNÁ + trace_details: Zobrazit podrobnosti stopy + trackable: STOPOVATELNÁ view_map: Zobrazit mapu trace_form: description: Popis help: Nápověda - tags: Tagy - tags_help: oddělěné čárkou + tags: Å títky + tags_help: oddělené čárkou upload_button: Nahrát upload_gpx: Nahrát GPX soubor visibility: Viditelnost visibility_help: co tohle znamená? trace_header: - see_all_traces: Zobrazit vÅ¡echny GPS záznamy - see_your_traces: Zobrazit vÅ¡echny vaÅ¡e GPS záznamy + see_all_traces: Zobrazit vÅ¡echny stopy + see_your_traces: Zobrazit vÅ¡echny vaÅ¡e stopy + traces_waiting: Na zpracování čeká {{count}} vaÅ¡ich stop. Zvažte, zda by nebylo před nahráním dalších lepší počkat, dokud nebudou zpracovány, abyste neblokovali frontu dalším uživatelům. + upload_trace: Nahrát stopu + your_traces: Zobrazit pouze vaÅ¡e stopy trace_optionals: - tags: Tagy + tags: Å títky trace_paging_nav: next: Následující » previous: "« Předchozí" showing_page: Zobrazuji stranu {{page}} view: + delete_track: Smazat tuto stopu description: "Popis:" download: stáhnout edit: upravit + edit_track: Upravit tuto stopu filename: "Název souboru:" + heading: Zobrazení stopy {{name}} map: mapa + none: Žádné owner: "Vlastník:" - tags: "Tagy:" - trace_not_found: GPS záznam nenalezen! + pending: ZPRACOVÁVÁ SE + points: "Bodů:" + start_coordinates: "Souřadnice začátku:" + tags: "Å títky:" + title: Zobrazení stopy {{name}} + trace_not_found: Stopa nenalezena! uploaded: "Nahráno v:" visibility: "Viditelnost:" visibility: - identifiable: Identifikovatelný (zobrazuje se v seznamu a jako identifikovatelné, uspořádané body s časovou značkou) - private: Soukromý (dostupná jedině jako anonymní, neuspořádané body) - public: Veřejný (zobrazuje se v seznamu i jako anonymní, neuspořádané body) - trackable: Trackable (dostupný jedině jako anonymní, uspořádané body s časovými značkami) + identifiable: Identifikovatelná (zobrazuje se v seznamu a jako identifikovatelné uspořádané body s časovou značkou) + private: Soukromá (veřejně dostupná jedině jako anonymní, neuspořádané body) + public: Veřejná (zobrazuje se v seznamu i jako anonymní, neuspořádané body) + trackable: Stopovatelná (veřejně dostupná jedině jako anonymní, uspořádané body s časovými značkami) user: account: + contributor terms: + agreed: Odsouhlasili jste nové Podmínky pro přispěvatele. + agreed_with_pd: Také jste prohlásili, že své editace považujete za volné dílo. + heading: "Podmínky pro přispěvatele:" + link text: co to znamená? + not yet agreed: Dosud jste neodsouhlasili nové Podmínky pro přispěvatele. + review link text: Až se vám to bude hodit, pomocí tohoto odkazu si prosím přečtěte a odsouhlaste nové Podmínky pro přispěvatele. current email address: "Stávající e-mailová adresa:" delete image: Odstranit stávající obrázek email never displayed publicly: (nikde se veřejně nezobrazuje) @@ -842,6 +1034,9 @@ cs: enabled: Aktivní. Není anonym, smí editovat data. enabled link text: co tohle je? heading: "Veřejné editace:" + public editing note: + heading: Veřejné editace + text: V současné době jsou vaÅ¡e editace anonymní a nikdo vám nemůže psát zprávy ani vidět vaÅ¡i polohu. Pokud chcete ukázat, co jste editovali, a dovolit lidem vás kontaktovat prostřednictvím webu, klikněte na níže zobrazené tlačítko. Od přechodu na API 0.6 mohou mapová data editovat jen veřejní uživatelé. (Přečtěte si důvody.)
  • VaÅ¡e e-mailová adresa se přepnutím na veřejné editace neprozradí.
  • Tuto operaci nelze vrátit a vÅ¡ichni noví uživatelé jsou implicitně veřejní.
replace image: Nahradit stávající obrázek return to profile: Zpět na profil save changes button: Uložit změny @@ -857,6 +1052,9 @@ cs: success: Vaše e-mailová adresa byla potvrzena, děkujeme za registraci! filter: not_an_administrator: K provedení této akce musíte být správce. + list: + heading: Uživatelé + title: Uživatelé login: account not active: Je mi líto, ale váš uživatelský účet dosud nebyl aktivován.
Svůj účet si můžete aktivovat kliknutím na odkaz v potvrzovacím e-mailu. account suspended: Je nám líto, ale váš účet byl pozastaven kvůli podezřelé aktivitě.
Pokud to chcete řešit, kontaktujte {{webmaster}}. @@ -902,6 +1100,7 @@ cs: no_auto_account_create: Bohužel za vás momentálně nejsme schopni vytvořit účet automaticky. not displayed publicly: Nezobrazuje se veřejně (vizte pravidla ochrany osobních údajů) password: "Heslo:" + terms accepted: Děkujeme za odsouhlasení nových podmínek pro přispěvatele! title: Vytvořit účet no_such_user: body: Je mi líto, ale uživatel {{user}} neexistuje. Zkontrolujte překlepy nebo jste možná klikli na chybný odkaz. @@ -929,6 +1128,19 @@ cs: heading: Účet pozastaven title: Účet pozastaven webmaster: webmastera + terms: + agree: Souhlasím + consider_pd: Navíc k výše uvedené dohodě považuji své příspěvky za volné dílo. + consider_pd_why: co to znamená? + decline: Nesouhlasím + heading: Podmínky pro přispěvatele + legale_names: + france: Francie + italy: Itálie + rest_of_world: Zbytek světa + legale_select: "Označte zemi, ve které sídlíte:" + read and accept: Přečtěte si prosím níže zobrazenou dohodu a klikněte na tlačítko souhlasu, čímž potvrdíte, že přijímáte podmínky této dohody pro stávající i budoucí příspěvky. + title: Podmínky pro přispěvatele view: add as friend: přidat jako přítele ago: (před {{time_in_words_ago}}) @@ -949,6 +1161,7 @@ cs: my diary: můj deníček my edits: moje editace my settings: moje nastavení + my traces: moje stopy nearby users: Další uživatelé poblíž new diary entry: nový záznam do deníčku no friends: Zatím jste nepřidali žádné přátele. @@ -957,7 +1170,7 @@ cs: remove as friend: odstranit jako přítele send message: poslat zprávu settings_link_text: nastavení - traces: záznamy + traces: stopy user location: Pozice uživatele your friends: Vaši přátelé user_block: diff --git a/config/locales/da.yml b/config/locales/da.yml index d9e5d87b4..30c3f04b9 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -343,9 +343,6 @@ da: export_tooltip: Eksporter kortdata gps_traces: GPS-spor gps_traces_tooltip: Håndter GPS-spor - help_wiki: Hjælp & Wiki - help_wiki_tooltip: Hjælp- og Wiki-side for projektet - help_wiki_url: http://wiki.openstreetmap.org/wiki/Da:Main_Page?uselang=da history: Historik home: hjem home_tooltip: Gå til hjemmeposition diff --git a/config/locales/de.yml b/config/locales/de.yml index 00168b961..e05c4b8f9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -897,9 +897,9 @@ de: export_tooltip: Kartendaten exportieren gps_traces: GPS-Tracks gps_traces_tooltip: GPS-Tracks verwalten - help_wiki: Hilfe + Wiki - help_wiki_tooltip: Hilfe + Wiki des Projekts - help_wiki_url: http://wiki.openstreetmap.org/wiki/Hauptseite?uselang=de + help: Hilfe + help_and_wiki: "{{help}} + {{wiki}}" + help_title: Hilfesite des Projekts history: Chronik home: Standort home_tooltip: Eigener Standort @@ -938,6 +938,8 @@ de: view_tooltip: Karte anzeigen welcome_user: Willkommen, {{user_link}} welcome_user_link_tooltip: Eigene Benutzerseite + wiki: Wiki + wiki_title: Wiki des Projekts license_page: foreign: english_link: dem englischsprachigen Original @@ -1070,6 +1072,7 @@ de: signup_confirm: subject: "[OpenStreetMap] Deine E-Mail-Adresse bestätigen" signup_confirm_html: + ask_questions: Du kannst jegliche Fragen zu OpenStreetMap auf unserer Website mit Fragen und Antworten stellen. click_the_link: Wenn du das bist, Herzlich Willkommen! Bitte klicke auf den folgenden Link unter dieser Zeile um dein Benutzerkonto zu bestätigen. Lies danach weiter, denn es folgen mehr Informationen über OSM. current_user: Ebenso ist eine Liste mit allen Benutzern in einer Kategorie, die anzeigt wo diese auf der Welt sind, verfügbar. get_reading: Weitere Informationen über OpenStreetMap findest du in unserem Wiki, informiere dich über die neusten Nachrichten über das OpenStreetMap-Blog oder Twitter, oder besuche das OpenGeoData-Blog von OpenStreetMap-Gründer Steve Coast für die gekürzte Geschichte des Projektes, dort werden auch Podcasts zum Hören angeboten. @@ -1082,6 +1085,7 @@ de: video_to_openstreetmap: Einführungsvideo zu OpenStreetMap wiki_signup: Im Wiki von OpenStreetMap kannst du dich ebenfalls registrieren. signup_confirm_plain: + ask_questions: "Du kannst jegliche Fragen zu OpenStreetMap auf unserer Website mit Fragen und Antworten stellen:" blog_and_twitter: "Immer auf dem neuesten Stand dank dem OpenStreetMap-Blog oder Twitter:" click_the_link_1: Wenn du das bist, Herzlich Willkommen! Bitte klicke auf den folgenden Link unter dieser Zeile, um dein click_the_link_2: Benutzerkonto zu bestätigen. Lies danach weiter, denn es folgen mehr Informationen über OSM. @@ -1430,8 +1434,8 @@ de: heading: Benutzer hide: Ausgewählte Benutzer ausblenden showing: - one: Anzeige von Seite {{page}} ({{page}} von {{page}}) - other: Anzeige von Seite {{page}} ({{page}}-{{page}} von {{page}}) + one: Anzeige von Seite {{page}} ({{first_item}} von {{items}}) + other: Anzeige von Seite {{page}} ({{first_item}}-{{last_item}} von {{items}}) summary: "{{name}} erstellt von {{ip_address}} am {{date}}" summary_no_ip: "{{name}} erstellt am {{date}}" title: Benutzer diff --git a/config/locales/dsb.yml b/config/locales/dsb.yml index b11df78a4..2894be47f 100644 --- a/config/locales/dsb.yml +++ b/config/locales/dsb.yml @@ -890,8 +890,6 @@ dsb: export_tooltip: Kórtowe daty eksportěrowaś gps_traces: GPS-slědy gps_traces_tooltip: GPS-slědy zastojaś - help_wiki: Pomoc & wiki - help_wiki_tooltip: Pomoc & wikisedło za projekt history: Historija home: domoj home_tooltip: K stojnišćoju @@ -1421,8 +1419,8 @@ dsb: heading: Wužywarje hide: Wubranych wužywarjow schowaś showing: - one: Pokazujo se bok {{page}} ({{page}} z {{page}}) - other: Pokazujo se bok {{page}} ({{page}}-{{page}} z{{page}}) + one: Pokazujo se bok {{page}} ({{first_item}} z {{items}}) + other: Pokazujo se bok {{page}} ({{first_item}}-{{last_item}} z{{items}}) summary: "{{name}} wót {{ip_address}} dnja {{date}} napórany" summary_no_ip: "{{name}} dnja {{date}} napórany" title: Wužywarje diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e091a22c..8d2a64564 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -935,9 +935,13 @@ en: 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" + help_and_wiki: "{{help}} & {{wiki}}" + help: Help + help_url: http://help.openstreetmap.org/ + help_title: Help site for the project + wiki: Wiki + wiki_url: http://wiki.openstreetmap.org/ + wiki_title: Wiki site for the project copyright: "Copyright & License" news_blog: "News blog" news_blog_tooltip: "News blog about OpenStreetMap, free geographical data, etc." @@ -1111,6 +1115,7 @@ en: the_wiki_url: "http://wiki.openstreetmap.org/wiki/Beginners%27_Guide" blog_and_twitter: "Catch up with the latest news via the OpenStreetMap blog or Twitter:" opengeodata: "OpenGeoData.org is OpenStreetMap founder Steve Coast's blog, and it has podcasts too:" + ask_questions: "You can ask any questions you may have about OpenStreetMap at our question and answer site:" 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 @@ -1127,6 +1132,7 @@ en: more_videos: "There are {{more_videos_link}}." more_videos_here: "more videos here" get_reading: Get reading about OpenStreetMap on the wiki, catch up with the latest news via the OpenStreetMap blog or Twitter, or browse through OpenStreetMap founder Steve Coast's OpenGeoData blog for the potted history of the project, which has podcasts to listen to also! + ask_questions: You can ask any questions you may have about OpenStreetMap at our question and answer site. wiki_signup: 'You may also want to sign up to the OpenStreetMap wiki.' user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as [[Category:Users_in_London]].' current_user: 'A list of current users in categories, based on where in the world they are, is available from Category:Users_by_geographical_region.' @@ -1251,9 +1257,8 @@ en: search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' more examples..." key: map_key: "Map key" - map_key_tooltip: "Map key for the mapnik rendering at this zoom level" + map_key_tooltip: "Key for the map" table: - heading: "Legend for z{{zoom_level}}" entry: motorway: "Motorway" trunk: "Trunk road" @@ -1505,7 +1510,7 @@ en: remember: "Remember me:" lost password link: "Lost your password?" login_button: "Login" - account not active: "Sorry, your account is not active yet.
Please click on the link in the account confirmation email to activate your account." + account not active: "Sorry, your account is not active yet.
Please use the link in the account confirmation email to activate your account, or request a new confirmation email." account suspended: Sorry, your account has been suspended due to suspicious activity.
Please contact the {{webmaster}} if you wish to discuss this. webmaster: webmaster auth failure: "Sorry, could not log in with those details." @@ -1545,7 +1550,7 @@ en: password: "Password:" confirm password: "Confirm Password:" continue: Continue - flash create success message: "User was successfully created. Check your email for a confirmation note, and you will be mapping in no time :-)

Please note that you will not be able to login until you've received and confirmed your email address.

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." + flash create success message: "Thanks for signing up. We've sent a confirmation note to {{email}} and as soon as you confirm your account you'll be able to get mapping.

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." terms accepted: "Thanks for accepting the new contributor terms!" terms: title: "Contributor terms" @@ -1667,7 +1672,13 @@ en: 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." + before you start: "We know you're probably in a hurry to start mapping, but before you do you might like to fill in some more information about yourself in the form below." + already active: "This account has already been confirmed." + unknown token: "That token doesn't seem to exist." + reconfirm: "If it's been a while since you signed up you might need to send yourself a new confirmation email." + confirm_resend: + success: "We've sent a new confirmation note to {{email}} and as soon as you confirm your account you'll be able to get mapping.

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." + failure: "User {{name}} not found." confirm_email: heading: Confirm a change of email address press confirm button: "Press the confirm button below to confirm your new email address." diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 142083539..c7db1bb4e 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -345,8 +345,6 @@ eo: export_tooltip: Eksporti mapajn datumojn gps_traces: GPS spuroj gps_traces_tooltip: Manipuli spurojn - help_wiki: Helpo kaj Vikio - help_wiki_tooltip: Helpo kaj Vikio por la projekto history: Historio home: hejmo home_tooltip: Iri al hejmloko @@ -384,7 +382,7 @@ eo: inbox: date: Dato my_inbox: Mia leterkesto - title: Leterkesto + title: Alvenkesto you_have: Vi havas {{new_count}} novajn mesaĝojn kaj {{old_count}} malnovajn mesaĝojn mark: as_read: Mesaĝo markita kiel legita @@ -405,7 +403,7 @@ eo: title: Tiu uzanto aŭ mesaĝo ne ekzistas outbox: date: Dato - inbox: leterkesto + inbox: Alvenkesto my_inbox: Mia {{inbox_link}} you_have_sent_messages: one: Vi havas 1 mesaĝon @@ -714,7 +712,7 @@ eo: ago: (antaŭ {{time_in_words_ago}}) blocks on me: blokas min confirm: Konfirmi - create_block: bloki tiun uzanto + create_block: Bloki la uzanton created from: "Kreita de:" deactivate_user: malebligi tiun uzanto delete_user: forviŝi ĉi tiun uzanton diff --git a/config/locales/es.yml b/config/locales/es.yml index 86d2469db..bcae458d9 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -883,9 +883,9 @@ es: export_tooltip: Exportar datos del mapa gps_traces: Trazas GPS gps_traces_tooltip: Gestiona las trazas GPS - help_wiki: Ayuda y Wiki - help_wiki_tooltip: Ayuda y sitio Wiki del proyecto - help_wiki_url: http://wiki.openstreetmap.org/wiki/ES:Main_Page?uselang=es + help: Ayuda + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Sitio de ayuda para el proyecto history: Historial home: inicio home_tooltip: Ir a la página inicial @@ -924,6 +924,8 @@ es: view_tooltip: Ver el mapa welcome_user: Bienvenido, {{user_link}} welcome_user_link_tooltip: Tu página de usuario + wiki: Wiki + wiki_title: Sitio Wiki para el proyecto license_page: foreign: english_link: el original en Inglés @@ -1056,6 +1058,7 @@ es: signup_confirm: subject: "[OpenStreetMap] Confirme su dirección de correo electrónico" signup_confirm_html: + ask_questions: Puedes hacer cualquier pregunta en relación al OpenStreetMap en nuestro sitio de preguntas y respuestas. click_the_link: Si este es usted, ¡Bienvenido! Por favor, pulse en el enlace más abajo para confirmar su cuenta y leer más información sobre OpenStreetMap. current_user: Un listado categorizado de usuarios actuales, basado en que zona del mundo se encuentran, está disponible desde Category:Users_by_geographical_region. get_reading: Siga leyendo sobre OpenStreetMap en el wiki, póngase al día con las últimas noticias vía el blog de OpenStreetMap o Twitter, o navegue por el blog del fundador de OpenStreetMap Steve Coast OpenGeoData para conocer la historia abreviada del proyecto, que además también tiene podcasts para escuchar @@ -1068,6 +1071,7 @@ es: video_to_openstreetmap: ví­deo introductorio a OpenStreetMap. wiki_signup: Además usted seguramente quiera registrarse en el wiki de OpenStreetMapi. signup_confirm_plain: + ask_questions: "Puedes hacer cualquier pregunta en relación a OpenStreetMap en nuestro sitio de preguntas y respuestas:" blog_and_twitter: "Ponte al día con las últimas noticias a través del blog de OpenStreetMap o Twitter:" click_the_link_1: Si este es usted, ¡Bienvenido! Por favor, pulse en el enlace más abajo para click_the_link_2: confirmar su cuenta y leer más información sobre OpenStreetMap. @@ -1354,7 +1358,12 @@ es: user: account: contributor terms: + agreed: Has aceptado los nuevos Términos de Colaborador. + agreed_with_pd: También has declarado que consideras tus modificaciones como de Dominio Público. + heading: "Términos de Colaborador:" link text: ¿Qué es esto? + not yet agreed: Aun no has aceptado los nuevos Términos de Colaborador. + review link text: Por favor, haz clic sobre este vínculo para revisar y aceptar los nuevos Términos de Colaborador. current email address: "Dirección de correo electrónico actual:" delete image: Elimina la imagen actual email never displayed publicly: (nunca es mostrado públicamente) @@ -1410,8 +1419,8 @@ es: heading: Usuarios hide: Ocultar Usuarios Seleccionados showing: - one: Mostrando página {{page}} ({{page}} de {{page}}) - other: Mostrando página {{page}} ({{page}}-{{page}} de {{page}}) + one: Mostrando página {{page}} ({{first_item}} de {{items}}) + other: Mostrando página {{page}} ({{first_item}}-{{last_item}} de {{items}}) summary: "{{name}} creado desde {{ip_address}} el {{date}}" summary_no_ip: "{{name}} creado el {{date}}" title: Usuarios @@ -1424,6 +1433,7 @@ es: heading: Iniciar sesión login_button: Iniciar sesión lost password link: ¿Ha perdido su contraseña? + notice: Descubre más acerca del próximo cambio de licencia de OpenStreetMap (traducciones) (discusión) password: Contraseña please login: Por favor inicie sesión o {{create_user_link}}. remember: "Recordarme:" @@ -1460,6 +1470,7 @@ es: no_auto_account_create: Desafortunadamente no estamos actualmente habilitados para crear una cuenta para ti automáticamente. not displayed publicly: No se muestra de forma pública (vea la política de privacidad) password: "Contraseña:" + terms accepted: ¡Gracias por aceptar los nuevos términos de colaborador! title: Crear cuenta no_such_user: body: Perdón, No existe usuario con el nombre {{user}}. Por favor verifica las letras, o posiblemente el vínculo que has hecho click está equivocado. @@ -1498,6 +1509,8 @@ es: italy: Italia rest_of_world: Resto del mundo legale_select: "Por favor, seleccione su país de residencia:" + read and accept: Por favor, lee el acuerdo que aparece a continuación y haz clic sobre el botón "Aceptar" para confirmar que estás de acuerdo con los términos de este acuerdo para tus contribuciones pasadas y futuras. + title: Términos del colaborador view: activate_user: activar este usuario add as friend: añadir como amigo diff --git a/config/locales/eu.yml b/config/locales/eu.yml index bbe52ad33..0b41eba7b 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -495,7 +495,6 @@ eu: layouts: edit: Aldatu export: Esportatu - help_wiki: Laguntza eta Wiki history: Historia home: hasiera inbox: sarrera-ontzia ({{count}}) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index d1053e080..84ebaf5f4 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -723,8 +723,6 @@ fi: export: Vienti export_tooltip: Karttatiedon vienti gps_traces: GPS-jäljet - help_wiki: Wiki ja ohjeet - help_wiki_tooltip: Projektin ohje ja wiki history: Historia home: koti home_tooltip: Siirry kotisijaintiin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 815ca0aae..b46a534a5 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -888,8 +888,9 @@ fr: export_tooltip: Exporter les données de la carte gps_traces: Traces GPS gps_traces_tooltip: Gérer les traces GPS - help_wiki: Aide & Wiki - help_wiki_tooltip: Aide et site Wiki du projet + help: Aide + help_and_wiki: "{{help}} & {{wiki}}" + help_title: site d’aide pour le projet history: Historique home: Chez moi home_tooltip: Aller à l'emplacement de mon domicile @@ -928,6 +929,8 @@ fr: view_tooltip: Afficher la carte welcome_user: Bienvenue, {{user_link}} welcome_user_link_tooltip: Votre page utilisateur + wiki: Wiki + wiki_title: site Wiki pour le projet license_page: foreign: english_link: original en anglais @@ -1060,6 +1063,7 @@ fr: signup_confirm: subject: "[OpenStreetMap] Confirmer votre adresse de courriel" signup_confirm_html: + ask_questions: Vous pouvez poser toutes les questions que vous pourriez avoir à propos d’OpenStreetMap sur notre site de questions-réponses. click_the_link: Si vous êtes à l'origine de cette action, bienvenue ! Cliquez sur le lien ci-dessous pour confirmer la création de compte et avoir plus d'informations sur OpenStreetMap current_user: Une liste par catégories des utilisateurs actuels, basée sur leur position géographique, est disponible dans Category:Users_by_geographical_region. get_reading: Informez-vous sur OpenStreetMap sur le wiki, restez au courant des dernières infos ''via'' le blogue OpenStreetMap ou Twitter, ou surfez sur le blogue OpenGeoData de Steve Coast, le fondateur d’OpenStreetMap pour un petit historique du projet, avec également des balados à écouter ! @@ -1072,6 +1076,7 @@ fr: video_to_openstreetmap: vidéo introductive à OpenStreetMap wiki_signup: Vous pouvez également vous créer un compte sur le wiki d'OpenStreetMap. signup_confirm_plain: + ask_questions: "Vous pouvez poser toutes les questions que vous pourriez avoir à propos d’OpenStreetMap sur notre site de questions-réponses :" blog_and_twitter: "Restez au courant des dernières infos ''via'' le blogue OpenStreetMap ou Twitter :" click_the_link_1: Si vous êtes à l'origine de cette requête, bienvenue ! Cliquez sur le lien ci-dessous pour confirmer votre click_the_link_2: compte et obtenir plus d'informations à propos d'OpenStreetMap. @@ -1418,8 +1423,8 @@ fr: heading: Utilisateurs hide: Masquer les utilisateurs sélectionnés showing: - one: Affichage de la page {{page}} ({{page}} sur {{page}}) - other: Affichage de la page {{page}} ({{page}}-{{page}} sur {{page}}) + one: Affichage de la page {{page}} ({{first_item}} sur {{items}}) + other: Affichage de la page {{page}} ({{first_item}}-{{last_item}} sur {{items}}) summary: "{{name}} créé depuis {{ip_address}} le {{date}}" summary_no_ip: "{{name}} créé le {{date}}" title: Utilisateurs diff --git a/config/locales/fur.yml b/config/locales/fur.yml index aa0a94fce..b83277475 100644 --- a/config/locales/fur.yml +++ b/config/locales/fur.yml @@ -364,17 +364,21 @@ fur: restaurant: Ristorant sauna: Saune school: Scuele + shop: Buteghe telephone: Telefon public theatre: Teatri townhall: Municipi university: Universitât + wifi: Acès a internet WiFi youth_centre: Centri zovanîl boundary: administrative: Confin aministratîf building: chapel: Capele church: Glesie + city_hall: Municipi house: Cjase + shop: Buteghe stadium: Stadi train_station: Stazion de ferade university: Edifici universitari @@ -443,14 +447,19 @@ fur: railway: abandoned: Ferade bandonade construction: Ferade in costruzion + disused: Ferade bandonade disused_station: Stazion de ferade bandonade light_rail: Ferade lizere station: Stazion de ferade shop: bakery: Pancôr + bicycle: Buteghe di bicicletis books: Librerie butcher: Becjarie car_repair: Riparazion di machinis + hairdresser: Piruchîr o barbîr + insurance: Assicurazion + laundry: Lavandarie supermarket: Supermarcjât toys: Negozi di zugatui tourism: @@ -461,6 +470,7 @@ fur: zoo: Zoo waterway: canal: Canâl + ditch: Fuesse river: Flum javascripts: map: @@ -479,8 +489,8 @@ fur: export_tooltip: Espuarte i dâts de mape gps_traces: Percors GPS gps_traces_tooltip: Gjestìs i percors GPS - help_wiki: Jutori & Vichi - help_wiki_tooltip: Jutori & Vichi pal progjet + help: Jutori + help_title: Sît di jutori pal progjet history: Storic home: lûc iniziâl home_tooltip: Va al lûc iniziâl @@ -519,8 +529,11 @@ fur: view_tooltip: Viôt la mape welcome_user: Benvignût/de, {{user_link}} welcome_user_link_tooltip: La tô pagjine utent + wiki: Vichi + wiki_title: Vichi dal progjet license_page: native: + mapping_link: scomence a mapâ title: Informazions su cheste pagjine message: delete: @@ -579,11 +592,12 @@ fur: notifier: diary_comment_notification: hi: Mandi {{to_user}}, + subject: "[OpenStreetMap] {{user}} al à zontât un coment ae tô vôs dal diari" email_confirm: subject: "[OpenStreetMap] Conferme la tô direzion di pueste eletroniche" friend_notification: had_added_you: "{{user}} ti à zontât come amì su OpenStreetMap." - see_their_profile: Tu puedis viodi il lôr profîl su {{userurl}} e zontâju ancje tu come amîs se tu vuelis. + see_their_profile: Tu puedis viodi il lôr profîl su {{userurl}}. subject: "[OpenStreetMap] {{user}} ti à zontât come amì su OpenStreetMap." gpx_notification: and_no_tags: e nissune etichete. @@ -624,6 +638,8 @@ fur: table: entry: admin: Confin aministratîf + apron: + 1: terminâl cemetery: Simiteri centre: Centri sportîf commercial: Aree comerciâl @@ -639,6 +655,8 @@ fur: rail: Ferade reserve: Riserve naturâl resident: Aree residenziâl + runway: + - Piste dal aeropuart school: - Scuele - universitât @@ -743,11 +761,13 @@ fur: flash update success: Informazions dal utent inzornadis cun sucès. flash update success confirm needed: Informazions dal utent inzornadis cun sucès. Controle la tô pueste par confermâ la tô gnove direzion di pueste eletroniche. home location: "Lûc iniziâl:" + image: "Figure:" latitude: "Latitudin:" longitude: "Longjitudin:" make edits public button: Rint publics ducj i miei cambiaments my settings: Mês impostazions new email address: "Gnove direzion di pueste:" + new image: Zonte une figure no home location: No tu âs configurât il lûc iniziâl. preferred languages: "Lenghis preferidis:" profile description: "Descrizion dal profîl:" @@ -769,6 +789,12 @@ fur: button: Conferme press confirm button: Frache sul boton di conferme par confermâ la gnove direzion di pueste. success: Tu âs confermât la tô direzion di pueste, graziis par jessiti regjistrât + list: + heading: Utents + showing: + one: Pagjine {{page}} ({{first_item}} su {{items}}) + other: Pagjine {{page}} ({{first_item}}-{{last_item}} su {{items}}) + title: Utents login: auth failure: Nus displâs, ma no si à rivât a jentrâ cun i dâts inserîts. create_account: cree un profîl @@ -790,12 +816,14 @@ fur: success: "{{name}} al è cumò to amì." new: confirm email address: "Conferme direzion pueste:" + continue: Va indevant display name: "Non di mostrâ:" email address: "Direzion di pueste eletroniche:" fill_form: Jemple il modul e ti mandarin in curt un messaç di pueste par ativâ il to profîl. flash create success message: L'utent al è stât creât cun sucès. Spiete che ti rivedi par pueste il messaç di conferme e po tu podarâs scomençâ a mapâ intun lamp :-)

Ten a ments che no tu rivarâs a jentrâ fin cuant che no tu varâs ricevût il messaç e confermât la direzion di pueste eletroniche.

Se tu dopris un sisteme antispam che al mande richiestis di conferme, siguriti di meti te whitelist webmaster@openstreetmap.org, parcè che no podin rispuindi aes richiestis di conferme. heading: Cree un account utent - license_agreement: Creant un profîl, tu confermis di savê che ducj i dâts che tu mandis al progjet OpenStreetMap a son dâts fûr (in mût no esclusîf) sot di cheste licence Creative Commons (by-sa). + license_agreement: Creant un profîl tu scugnis aprovâ i tiermins par contribuî. + terms accepted: Graziis par vê acetât i gnûfs tiermins par contribuî! title: Cree profîl no_such_user: body: Nol esist un utent di non {{user}}. Controle par plasê la grafie o che tu vedis seguît il leam just. @@ -811,10 +839,15 @@ fur: set_home: flash success: Lûc iniziâl salvât cun sucès terms: + agree: O aceti + consider_pd_why: ce isal chest? + decline: No aceti + heading: Tiermins par contribuî legale_names: france: France italy: Italie rest_of_world: Rest dal mont + title: Tiermins par contribuî view: add as friend: zonte ai amîs ago: ({{time_in_words_ago}} fa) @@ -842,7 +875,7 @@ fur: nearby users: Altris utents dongje new diary entry: gnove vôs dal diari no friends: No tu âs ancjemò nissun amì. - no nearby users: Ancjemò nissun utent che al declare di mapâ dongje di te. + no nearby users: Nol è ancjemò nissun utent che al declare di mapâ dongje di te. remove as friend: gjave dai amîs send message: mande messaç settings_link_text: impostazions @@ -856,6 +889,7 @@ fur: not_found: back: Torne al somari partial: + confirm: Sêstu sigûr? show: Mostre status: Stât show: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 69a0a4353..bb96db9de 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -881,8 +881,9 @@ gl: export_tooltip: Exportar os datos do mapa gps_traces: Pistas GPS gps_traces_tooltip: Xestionar as pistas GPS - help_wiki: Axuda e wiki - help_wiki_tooltip: Axuda e sitio wiki do proxecto + help: Axuda + help_and_wiki: "{{help}} e {{wiki}}" + help_title: Sitio de axuda do proxecto history: Historial home: inicio home_tooltip: Ir ao meu domicilio @@ -921,6 +922,8 @@ gl: view_tooltip: Ver o mapa welcome_user: Benvido, {{user_link}} welcome_user_link_tooltip: A súa páxina de usuario + wiki: wiki + wiki_title: Wiki de axuda do proxecto license_page: foreign: english_link: a orixinal en inglés @@ -1053,6 +1056,7 @@ gl: signup_confirm: subject: "[OpenStreetMap] Confirme o seu enderezo de correo electrónico" signup_confirm_html: + ask_questions: Pode facer calquera pregunta en relación ao OpenStreetMap no noso sitio de preguntas e respostas. click_the_link: Se este é vostede, benvido! Prema na ligazón que aparece a continuación para confirmar a súa conta e obter máis información sobre o OpenStreetMap. current_user: "A lista de todos os usuarios por categorías, baseada segundo a súa localización no mundo, está dispoñible en: Category:Users_by_geographical_region." get_reading: Infórmese sobre o OpenStreetMap no wiki, póñase ao día das últimas novas a través do blogue ou o Twitter do OpenStreetMap ou vaia polo blogue OpenGeoData de Steve Coast, o fundador do OpenStreetMap, para ler a pequena historia do proxecto e escoitar os podcasts tamén! @@ -1065,6 +1069,7 @@ gl: video_to_openstreetmap: vídeo introdutorio ao OpenStreetMap wiki_signup: Poida que tamén queira crear unha conta no wiki do OpenStreetMap. signup_confirm_plain: + ask_questions: "Pode facer calquera pregunta en relación ao OpenStreetMap no noso sitio de preguntas e respostas:" blog_and_twitter: "Póñase ao día das últimas novas a través do blogue ou o Twitter do OpenStreetMap:" click_the_link_1: Se este é vostede, benvido! Prema na ligazón que aparece a continuación para confirmar a súa click_the_link_2: conta e obter máis información sobre o OpenStreetMap. @@ -1410,8 +1415,8 @@ gl: heading: Usuarios hide: Agochar os usuarios seleccionados showing: - one: Mostrando a páxina "{{page}}" ({{page}} de {{page}}) - other: Mostrando a páxina "{{page}}" ({{page}}-{{page}} de {{page}}) + one: Mostrando a páxina "{{page}}" ({{first_item}} de {{items}}) + other: Mostrando a páxina "{{page}}" ({{first_item}}-{{last_item}} de {{items}}) summary: "{{name}} creado desde {{ip_address}} o {{date}}" summary_no_ip: "{{name}} creado o {{date}}" title: Usuarios diff --git a/config/locales/hr.yml b/config/locales/hr.yml index dc0b799da..dc3ee3bb8 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -3,6 +3,7 @@ # Export driver: syck # Author: Mnalis # Author: Mvrban +# Author: SpeedyGonsales hr: activerecord: attributes: @@ -885,9 +886,9 @@ hr: export_tooltip: Izvoz podataka karte gps_traces: GPS trase gps_traces_tooltip: Upravljaj GPS trasama - help_wiki: Pomoć & Wiki - help_wiki_tooltip: Pomoć & Wiki-site za projekt - help_wiki_url: http://wiki.openstreetmap.org/wiki/Hr:Main_Page?uselang=hr + help: Pomoć + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Stranice pomoći za projekt history: Povijest home: dom home_tooltip: Idi na lokaciju svog doma @@ -928,6 +929,9 @@ hr: view_tooltip: Pogledaj na karti welcome_user: DobrodoÅ¡li, {{user_link}} welcome_user_link_tooltip: Tvoja korisnička stranica + wiki: Wiki + wiki_title: Wiki stranice projekta + wiki_url: http://wiki.openstreetmap.org/wiki/Hr:Main_Page?uselang=hr license_page: foreign: english_link: Engleski izvornik @@ -1060,6 +1064,7 @@ hr: signup_confirm: subject: "[OpenStreetMap] potvrdi email adresu" signup_confirm_html: + ask_questions: Možete postaviti bilo kakva pitanja koja imate o projektu OpenStreetMap na naÅ¡im stranicama pitanja i odgovora. click_the_link: Ako si ovo ti, dobrodoÅ¡ao! Molim klikni na link ispod za potvrdu korisničkog računa i čitaj dalje za viÅ¡e informacija o OpenStreetMap-u current_user: Lista trenutnih korisnika u kategorijama, bazirano gdje su na svijetu, je dostupna s Category:Users_by_geographical_region. get_reading: Čitajte o OpenStreetMap-u na wiki-ju, budute u toku s zadnjim novostima preko OpenStreetMap bloga ili Twittera, ili pregledajte OpenGeoData blog osnivača OpenStreetMap-a, Stevea Coasta za povijest projekta, gdje imate i podcaste za sluÅ¡anje! @@ -1072,6 +1077,7 @@ hr: video_to_openstreetmap: uvodni video za OpenStreetMap wiki_signup: Možda se želiÅ¡ otvoriti račun na OpenStreetMap wiki. signup_confirm_plain: + ask_questions: "Možete postaviti bilo kakva pitanja koja imate o projektu OpenStreetMap na naÅ¡im stranicama pitanja i odgovora:" blog_and_twitter: "Budite u toku s najnovijim vijestima preko OpenstreetMap bloga ili Twittera:" click_the_link_1: Ako si to ti, dobrodoÅ¡ao! Molim klikni donji link za potvrdu click_the_link_2: korinički račun i čitaj za viÅ¡e informacija o OpenStreetMap-u. @@ -1244,7 +1250,7 @@ hr: heading: Legenda za z{{zoom_level}} search: search: Traži - search_help: "primjer: 'Osijek', 'VlaÅ¡ka, Zagreb', ili 'fuel near Zagreb' viÅ¡e primjera..." + search_help: "primjer: 'Osijek', 'Zelenjak 52, Zagreb', ili 'kolodvor, Split' viÅ¡e primjera..." submit_text: Idi where_am_i: Gdje sam? where_am_i_title: OpiÅ¡i trenutnu lokaciju koristeći pretraživač @@ -1418,8 +1424,8 @@ hr: heading: Korisnici hide: Sakrij odabrane korisnike showing: - one: Prikazujem stranicu {{page}} ({{page}} od {{page}}) - other: Prikazujem stranicu {{page}} ({{page}}-{{page}} od {{page}}) + one: Prikazujem stranicu {{page}} ({{first_item}} od {{items}}) + other: Prikazujem stranicu {{page}} ({{first_item}}-{{last_item}} od {{items}}) summary: "{{name}} napravljeno sa {{ip_address}} dana {{date}}" summary_no_ip: "{{name}} napravljeno {{date}}" title: Korisnici diff --git a/config/locales/hsb.yml b/config/locales/hsb.yml index 3502ae7e6..983c08523 100644 --- a/config/locales/hsb.yml +++ b/config/locales/hsb.yml @@ -890,8 +890,6 @@ hsb: export_tooltip: Kartowe daty eksportować gps_traces: GPS-ćěrje gps_traces_tooltip: GPS-ćěrje zrjadować - help_wiki: Pomoc & wiki - help_wiki_tooltip: Sydło Pomoc & wiki za projekt history: Historija home: domoj home_tooltip: Domoj hić @@ -1422,8 +1420,8 @@ hsb: heading: Wužiwarjo hide: Wubranych wužiwarjow schować showing: - one: Pokazuje so strona {{page}} ({{page}} z {{page}}) - other: Pokazuje so strona {{page}} ({{page}}-{{page}} z {{page}}) + one: Pokazuje so strona {{page}} ({{first_item}} z {{items}}) + other: Pokazuje so strona {{page}} ({{first_item}}-{{last_item}} z {{items}}) summary: "{{name}} wot {{ip_address}} dnja {{date}} wutworjeny" summary_no_ip: "{{name}} dnja {{date}} wutworjeny" title: Wužiwarjo diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 18ebc83e9..4f418a37a 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -5,6 +5,7 @@ # Author: Dani # Author: Glanthor Reviol # Author: Leiric +# Author: Misibacsi hu: activerecord: attributes: @@ -885,9 +886,9 @@ hu: export_tooltip: Térképadatok exportálása gps_traces: Nyomvonalak gps_traces_tooltip: GPS nyomvonalak kezelése - 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?uselang=hu + help: Sugó + help_and_wiki: "{{help}} és {{wiki}}" + help_title: A projekt sugóoldala history: Előzmények home: otthon home_tooltip: Ugrás otthonra @@ -927,6 +928,8 @@ hu: view_tooltip: Térkép megjelenítése welcome_user: Üdvözlünk {{user_link}} welcome_user_link_tooltip: Felhasználói oldalad + wiki: wiki + wiki_title: A projekt wiki oldala license_page: foreign: english_link: az eredeti angol nyelvű @@ -1059,6 +1062,7 @@ hu: signup_confirm: subject: "[OpenStreetMap] E-mail cím megerősítése" signup_confirm_html: + ask_questions: Ha bármilyen kérdésed merülne fel az OpenStreetMappal kapcsolatban, felteheted azt a mi kérdés és válasz oldalunkon. 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. current_user: "A jelenlegi felhasználók listája kategóriákban, annak megfelelően, hogy hol vannak a világban, elérhető innen: Category:Users_by_geographical_region." get_reading: Olvass az OpenStreetMapról a wikiben, kövesd a legfrissebb híreket az OpenStreetMap blogon vagy Twitteren, vagy böngészd az OpenStreetMap alapító Steve Coast OpenGeoData blogját a projekt történetéről, amin vannak hallgatható podcastok is! @@ -1071,6 +1075,7 @@ hu: video_to_openstreetmap: bevezető videót az OpenStreetMaphoz wiki_signup: Szintén regisztrálhatsz az OpenStreetMap wikibe. signup_confirm_plain: + ask_questions: "Ha bármilyen kérdésed merülne fel az OpenStreetMappal kapcsolatban, felteheted azt a mi kérdés és válasz oldalunkon:" blog_and_twitter: "Kövesd a legfrissebb híreket az OpenStreetMap blogon vagy Twitteren:" 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. @@ -1422,8 +1427,8 @@ hu: heading: Felhasználók hide: Kijelölt felhasználók elrejtése showing: - one: "{{page}}. oldal ({{page}}. elem, összesen: {{page}})" - other: "{{page}}. oldal ({{page}}-{{page}}. elem, összesen: {{page}})" + one: "{{page}}. oldal ({{first_item}}. elem, összesen: {{items}})" + other: "{{page}}. oldal ({{first_item}}-{{last_item}}. elem, összesen: {{items}})" summary: "{{name}} létrejött innen: {{ip_address}}, ekkor: {{date}}" summary_no_ip: "{{name}} letrejött ekkor: {{date}}" title: Felhasználók diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 0f8de1fba..0b878e574 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -341,7 +341,7 @@ ia: no_such_user: body: Pardono, il non ha un usator con le nomine {{user}}. Verifica le orthographia, o pote esser que le ligamine que tu sequeva es incorrecte. heading: Le usator {{user}} non existe - title: Nulle tal usator + title: Iste usator non existe view: leave_a_comment: Lassar un commento login: Aperir session @@ -880,8 +880,9 @@ ia: export_tooltip: Exportar datos cartographic gps_traces: Tracias GPS gps_traces_tooltip: Gerer tracias GPS - help_wiki: Adjuta & Wiki - help_wiki_tooltip: Adjuta & sito Wiki pro le projecto + help: Adjuta + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Sito de adjuta pro le projecto history: Historia home: initio home_tooltip: Ir al position de origine @@ -922,6 +923,8 @@ ia: view_tooltip: Vider le carta welcome_user: Benvenite, {{user_link}} welcome_user_link_tooltip: Tu pagina de usator + wiki: Wiki + wiki_title: Sito wiki pro le projecto license_page: foreign: english_link: le original in anglese @@ -1054,6 +1057,7 @@ ia: signup_confirm: subject: "[OpenStreetMap] Confirma tu adresse de e-mail" signup_confirm_html: + ask_questions: Tu pote poner qualcunque questiones super OpenStreetMap a nostre sito de questiones e responsas. click_the_link: Si isto es tu, benvenite! Per favor clicca super le ligamine ci infra pro confirmar iste conto e continua a leger pro ulterior informationes super OpenStreetMap current_user: Un lista de usatores actual in categorias, a base de lor position geographic, es disponibile de Category:Users_by_geographical_region. get_reading: Informa te super OpenStreetMap per leger le wiki, tene te al currente con le ultime novas via le blog de OpenStreetMap o con Twitter, o percurre le blog OpenGeoData del fundator de OpenStreetMap Steve Coast pro le historia compendiose del projecto, le qual include tamben podcasts a ascoltar! @@ -1066,6 +1070,7 @@ ia: video_to_openstreetmap: video de introduction a OpenStreetMap wiki_signup: Considera tamben inscriber te al wiki de OpenStreetMap. signup_confirm_plain: + ask_questions: "Tu pote poner qualcunque questiones super OpenStreetMap a nostre sito de questiones e responsas:" blog_and_twitter: "Tene te al currente con le ultime novas al blog de OpenStreetMap o con Twitter:" click_the_link_1: Si isto es tu, benvenite! Per favor clicca super le ligamine ci infra pro confirmar tu click_the_link_2: conto. Continua a leger pro plus informationes a proposito de OpenStreetMap. @@ -1107,7 +1112,7 @@ ia: allow_write_diary: crear entratas de diario, commentos e adder amicos. allow_write_gpx: incargar tracias GPS. allow_write_prefs: modificar su preferentias de usator. - callback_url: URL de reappello + callback_url: URL de retorno name: Nomine requests: "Requestar le sequente permissiones del usator:" required: Requirite @@ -1280,7 +1285,7 @@ ia: no_such_user: body: Pardono, il non ha un usator con le nomine {{user}}. Verifica le orthographia, o pote esser que le ligamine que tu sequeva es incorrecte. heading: Le usator {{user}} non existe - title: Nulle tal usator + title: Iste usator non existe offline: heading: Immagazinage GPX foras de linea message: Le systema pro immagazinar e incargar files GPX es actualmente indisponibile. @@ -1411,8 +1416,8 @@ ia: heading: Usatores hide: Celar usatores seligite showing: - one: Presentation del pagina {{page}} ({{page}} de {{page}}) - other: Presentation del pagina {{page}} ({{page}}-{{page}} de {{page}}) + one: Presentation del pagina {{page}} ({{first_item}} de {{items}}) + other: Presentation del pagina {{page}} ({{first_item}}-{{last_item}} de {{items}}) summary: "{{name}} create ab {{ip_address}} le {{date}}" summary_no_ip: "{{name}} create le {{date}}" title: Usatores @@ -1467,7 +1472,7 @@ ia: no_such_user: body: Non existe un usator con le nomine {{user}}. Per favor verifica le orthographia, o pote esser que le ligamine que tu sequeva es incorrecte. heading: Le usator {{user}} non existe - title: Nulle tal usator + title: Iste usator non existe popup: friend: Amico nearby mapper: Cartographo vicin diff --git a/config/locales/is.yml b/config/locales/is.yml index 65e68b166..d8351f553 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -579,9 +579,6 @@ is: export_tooltip: Niðurhala kortagögnum á hinum ýmsu sniðum gps_traces: GPS ferlar gps_traces_tooltip: Sjá alla GPS ferla - help_wiki: Hjálp & Wiki - help_wiki_tooltip: Hjálpar og wiki-síða fyrir verkefnið - help_wiki_url: http://wiki.openstreetmap.org/wiki/Fors%C3%AD%C3%B0a?uselang=is history: Breytingarskrá home: heim home_tooltip: Færa kortasýnina á þína staðsetningu diff --git a/config/locales/it.yml b/config/locales/it.yml index 419381b77..2a317e42a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -5,6 +5,7 @@ # Author: Beta16 # Author: Davalv # Author: Gianfranco +# Author: LucioGE # Author: McDutchie it: activerecord: @@ -45,7 +46,7 @@ it: acl: Lista di controllo degli accessi changeset: Gruppo di modifiche changeset_tag: Etichetta del gruppo di modifiche - country: Paese + country: Nazione diary_comment: Commento al diario diary_entry: Voce del diario friend: Amico @@ -434,6 +435,7 @@ it: bus_station: Stazione degli autobus cafe: Cafe car_rental: Autonoleggio + car_sharing: Car Sharing car_wash: Autolavaggio casino: Casinò cinema: Cinema @@ -510,7 +512,7 @@ it: chapel: Cappella church: Chiesa city_hall: Municipio - commercial: Edificio commerciale + commercial: Uffici dormitory: Dormitorio entrance: Entrata dell'edificio farm: Edificio rurale @@ -553,11 +555,11 @@ it: path: Sentiero pedestrian: Percorso pedonale platform: Piattaforma - primary: Strada primaria - primary_link: Strada primaria + primary: Strada principale + primary_link: Strada principale raceway: Pista - residential: Residenziale - road: Strada + residential: Strada residenziale + road: Strada generica secondary: Strada secondaria secondary_link: Strada secondaria service: Strada di servizio @@ -567,10 +569,10 @@ it: tertiary: Strada terziaria track: Tracciato trail: Percorso escursionistico - trunk: Strada principale - trunk_link: Strada principale + trunk: Superstrada + trunk_link: Superstrada unclassified: Strada non classificata - unsurfaced: Strada bianca + unsurfaced: Strada non pavimentata historic: archaeological_site: Sito archeologico battlefield: Campo di battaglia @@ -589,15 +591,18 @@ it: tower: Torre wreck: Relitto landuse: + allotments: Orti casalinghi basin: Bacino + brownfield: Area con edifici in demolizione cemetery: Cimitero - commercial: Zona commerciale + commercial: Zona di uffici construction: Costruzione farm: Fattoria farmland: Terreno agricolo farmyard: Aia forest: Foresta grass: Prato + greenfield: Area da adibire a costruzioni industrial: Zona Industriale landfill: Discarica di rifiuti meadow: Prato @@ -611,6 +616,7 @@ it: recreation_ground: Area di svago reservoir: Riserva idrica residential: Area Residenziale + retail: Negozi vineyard: Vigneto wetland: Zona umida wood: Bosco @@ -664,6 +670,7 @@ it: scrub: Boscaglia shoal: Secca spring: Sorgente + strait: Stretto tree: Albero valley: Valle volcano: Vulcano @@ -722,6 +729,7 @@ it: car_repair: Autofficina chemist: Farmacia clothes: Negozio di abbigliamento + computer: Negozio di computer discount: Discount doityourself: Fai da-te drugstore: Emporio @@ -739,6 +747,7 @@ it: hairdresser: Parrucchiere insurance: Assicurazioni jewelry: Gioielleria + kiosk: Edicola laundry: Lavanderia mall: Centro commerciale market: Mercato @@ -815,8 +824,9 @@ it: export_tooltip: Esporta i dati della mappa gps_traces: Tracciati GPS gps_traces_tooltip: Gestisci i tracciati GPS - help_wiki: Aiuto & Wiki - help_wiki_tooltip: Sito e Wiki di supporto per il progetto + help: Aiuto + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Sito di aiuto per il progetto history: Storico home: posizione iniziale inbox: in arrivo ({{count}}) @@ -854,6 +864,8 @@ it: view_tooltip: Visualizza la mappa welcome_user: Benvenuto, {{user_link}} welcome_user_link_tooltip: Pagina utente personale + wiki: Wiki + wiki_title: Wiki del progetto license_page: foreign: english_link: l'originale in inglese @@ -1107,7 +1119,7 @@ it: - Funivia - Seggiovia cemetery: Cimitero - commercial: Zona commerciale + commercial: Zona di uffici common: 1: prato construction: Strade in costruzione @@ -1124,9 +1136,13 @@ it: military: Area militare motorway: Autostrada park: Parco + permissive: Accesso permissivo + primary: Strada principale + private: Accesso privato rail: Ferrovia reserve: Riserva naturale resident: Zona residenziale + retail: Zona con negozi runway: - Pista di decollo/atterraggio - Pista di rullaggio @@ -1324,8 +1340,8 @@ it: heading: Utenti hide: Nascondi Utenti Selezionati showing: - one: Pagina {{page}} ({{page}} di {{page}}) - other: Pagina {{page}} ({{page}}-{{page}} di {{page}}) + one: Pagina {{page}} ({{first_item}} di {{items}}) + other: Pagina {{page}} ({{first_item}}-{{last_item}} di {{items}}) summary: "{{name}} creato da {{ip_address}} il {{date}}" summary_no_ip: "{{name}} creato il {{date}}" title: Utenti diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 4769d010d..1d50d32c4 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -618,6 +618,7 @@ ja: place: airport: 空港 city: 市 + country: 国 county: 郡 farm: 牧場 hamlet: 村 @@ -714,9 +715,6 @@ ja: export_tooltip: 地図データのエクスポート gps_traces: GPS トレース gps_traces_tooltip: トレースの管理 - help_wiki: ヘルプと Wiki - help_wiki_tooltip: プロジェクトのヘルプと Wiki - help_wiki_url: http://wiki.openstreetmap.org/wiki/Ja:Main_Page?uselang=ja history: 履歴 home: ホーム home_tooltip: ホームへ戻る @@ -1180,6 +1178,7 @@ ja: list: confirm: 選択したユーザを確認 empty: 条件に一致するユーザーが見つかりません + heading: 利用者 hide: 選択したユーザーを隠す title: ユーザー login: diff --git a/config/locales/lb.yml b/config/locales/lb.yml new file mode 100644 index 000000000..c723c8578 --- /dev/null +++ b/config/locales/lb.yml @@ -0,0 +1,668 @@ +# Messages for Luxembourgish (Lëtzebuergesch) +# Exported from translatewiki.net +# Export driver: syck +# Author: Robby +lb: + activerecord: + attributes: + diary_entry: + language: Sprooch + title: Titel + user: Benotzer + friend: + friend: Frënd + user: Benotzer + message: + title: Titel + trace: + description: Beschreiwung + name: Numm + public: Ëffentlech + size: Gréisst + user: Benotzer + user: + active: Aktiv + description: Beschreiwung + display_name: Numm dee gewise gëtt + email: E-Mail + languages: Sproochen + pass_crypt: Passwuert + models: + country: Land + friend: Frënd + language: Sprooch + message: Message + node: Knuet + old_node: Ale Knuet + old_relation: Al Relatioun + old_way: Ale Wee + relation: Relatioun + user: Benotzer + user_preference: Benotzerastellung + way: Wee + browse: + changeset: + download: Als {{changeset_xml_link}} oder {{osmchange_xml_link}} eroflueden. + osmchangexml: osmChange XML + changeset_details: + belongs_to: "Gehéiert dem:" + box: Këscht + closed_at: "Zougemaach den:" + common_details: + changeset_comment: "Bemierkung:" + edited_at: "Geännert den:" + edited_by: "Geännert vum:" + version: "Versioun:" + containing_relation: + entry: Relatioun {{relation_name}} + entry_role: Relatioun {{relation_name}} (als {{relation_role}}) + map: + deleted: Geläscht + larger: + area: Géigend op méi enger grousser Kaart weisen + node: Knuet op méi enger grousser Kaart weisen + relation: D'Relatioun op méi enger grousser Kaart weisen + way: Wee op méi enger grousser Kaart weisen + loading: Lueden... + navigation: + all: + next_node_tooltip: Nächste Knuet + next_relation_tooltip: Nächst Relatioun + next_way_tooltip: Nächste Wee + prev_node_tooltip: Virege Knuet + prev_relation_tooltip: Vireg Relatioun + prev_way_tooltip: Virege Wee + user: + name_changeset_tooltip: Ännerunge vum {{user}} weisen + next_changeset_tooltip: Nächst Ännerung vum {{user}} + prev_changeset_tooltip: Vireg Ännerung vum {{user}} + node: + download: "{{download_xml_link}}, {{view_history_link}} oder {{edit_link}}" + download_xml: XML eroflueden + edit: änneren + node: Knuet + node_title: "Knuet: {{node_name}}" + view_history: Versioune weisen + node_details: + coordinates: "Koordinaten:" + part_of: "Deel vu(n):" + node_history: + download: "{{download_xml_link}} oder {{view_details_link}}" + download_xml: XML eroflueden + view_details: Detailer weisen + not_found: + sorry: Pardon, den {{type}} mat der Id {{id}}, konnt net fonnt ginn. + type: + node: Knuet + relation: Relatioun + way: Wee + paging_nav: + of: vu(n) + showing_page: Säit gëtt gewisen + relation: + download: "{{download_xml_link}} oder {{view_history_link}}" + download_xml: XML eroflueden + relation: Relatioun + relation_title: "Relatioun: {{relation_name}}" + view_history: Versioune weisen + relation_details: + members: "Memberen:" + part_of: "Deel vu(n):" + relation_history: + download: "{{download_xml_link}} oder {{view_details_link}}" + download_xml: XML eroflueden + view_details: Detailer weisen + relation_member: + entry_role: "{{type}} {{name}} als {{role}}" + type: + node: Knuet + relation: Relatioun + way: Wee + start_rjs: + data_frame_title: Donnéeën + data_layer_name: Donnéeën + details: Detailer + edited_by_user_at_timestamp: Vum [[user]] de(n) [[timestamp]] geännert + load_data: Donnéeë lueden + loading: Lueden... + object_list: + details: Detailer + heading: Lëscht mat Objeten + history: + type: + node: Knuet [[id]] + way: Wee [[id]] + selected: + type: + node: Knuet [[id]] + way: Wee [[id]] + type: + node: Knuet + way: Wee + private_user: private Benotzer + show_history: Versioune weisen + wait: Waart w.e.g. ... + tag_details: + wikipedia_link: Den Artikel {{page}} op der Wikipedia + timeout: + type: + node: Knuet + relation: Relatioun + way: Wee + way: + download: "{{download_xml_link}}, {{view_history_link}} oder {{edit_link}}" + download_xml: XML eroflueden + edit: änneren + view_history: Versioune weisen + way: Wee + way_title: "Wee: {{way_name}}" + way_details: + nodes: "Kniet:" + part_of: "Deel vu(n):" + way_history: + download: "{{download_xml_link}} oder {{view_details_link}}" + download_xml: XML eroflueden + view_details: Detailer weisen + changeset: + changeset: + anonymous: Anonym + big_area: (grouss) + no_edits: (keng Ännerungen) + changeset_paging_nav: + next: Nächst » + previous: "« Vireg" + changesets: + user: Benotzer + diary_entry: + diary_comment: + confirm: Confirméieren + diary_entry: + confirm: Confirméieren + edit: + language: "Sprooch:" + save_button: Späicheren + subject: "Sujet:" + location: + edit: Änneren + no_such_user: + heading: De Benotzer {{user}} gëtt et net + title: Esou e Benotzer gëtt et net + view: + save_button: Späicheren + export: + start: + format: Format + image_size: "Gréisst vum Bild:" + licence: Lizenz + options: Optiounen + scale: Maassstab + zoom: Zoom + geocoder: + direction: + east: ëstlech + north: nërdlech + north_east: nordost + north_west: nordwest + south: südlech + south_east: südost + south_west: südwest + west: westlech + results: + more_results: Méi Resultater + search_osm_namefinder: + suffix_place: ", {{distance}} {{direction}} vu(n) {{placename}}" + search_osm_nominatim: + prefix: + amenity: + airport: Fluchhafen + bank: Bank + bus_station: Busarrêt + cafe: Café + cinema: Kino + clinic: Klinik + crematorium: Crematoire + dentist: Zänndokter + doctors: Dokteren + driving_school: Fahrschoul + embassy: Ambassade + fire_station: Pompjeeën + fountain: Sprangbur + hospital: Klinik + hotel: Hotel + kindergarten: Spillschoul + market: Maart + marketplace: Maartplaz + mountain_rescue: Biergrettung + park: Park + pharmacy: Apdikt + police: Police + preschool: Spillschoul + prison: Prisong + restaurant: Restaurant + sauna: Sauna + school: Schoul + supermarket: Supermarché + taxi: Taxi + telephone: Telefonscabine + theatre: Theater + toilets: Toiletten + townhall: Stadhaus + university: Universitéit + building: + bunker: Bunker + chapel: Kapell + church: Kierch + hotel: Hotel + house: Haus + stadium: Stadion + terrace: Terrasse + tower: Tuerm + train_station: Gare (Eisebunn) + "yes": Gebai + highway: + footway: Fousswee + gate: Paard + motorway: Autobunn + path: Pad + primary: Haaptstrooss + road: Strooss + secondary_link: Niewestrooss + historic: + building: Gebai + castle: Schlass + church: Kierch + house: Haus + monument: Monument + museum: Musée + ruins: Ruinen + tower: Tuerm + landuse: + cemetery: Kierfecht + forest: Bësch + military: Militairegebitt + park: Park + railway: Eisebunn + vineyard: Wéngert + wood: Bësch + leisure: + golf_course: Golfterrain + marina: Yachthafen + miniature_golf: Minigolf + playground: Spillplaz + stadium: Stadion + swimming_pool: Schwëmm + natural: + channel: Kanal + crater: Krater + fjord: Fjord + geyser: Geysir + glacier: Gletscher + hill: Hiwwel + island: Insel + point: Punkt + river: Floss + rock: Steng + spring: Quell + tree: Bam + valley: Dall + volcano: Vulkan + water: Waasser + wood: Bësch + place: + airport: Fluchhafen + country: Land + houses: Haiser + island: Insel + municipality: Gemeng + region: Regioun + sea: Mier + town: Stad + village: Duerf + railway: + disused: Fréier Eisebunn + tram: Tram + shop: + bakery: Bäckerei + books: Bichergeschäft + chemist: Apdikt + clothes: Kleedergeschäft + dry_cleaning: Botzerei + florist: Fleurist + hairdresser: Coiffeur + insurance: Versécherungsbüro + jewelry: Bijouterie + optician: Optiker + photo: Fotosgeschäft + shoes: Schonggeschäft + supermarket: Supermarché + travel_agency: Reesbüro + tourism: + artwork: Konschtwierk + attraction: Attraktioun + chalet: Chalet + information: Informatioun + museum: Musée + picnic_site: Piknikplaz + valley: Dall + viewpoint: Aussiichtspunkt + zoo: Zoo + waterway: + canal: Kanal + river: Floss + wadi: Wadi + waterfall: Waasserfall + javascripts: + site: + edit_tooltip: Kaart änneren + layouts: + copyright: Copyright & Lizenz + donate_link_text: Don + edit: Änneren + intro_3_partners: Wiki + make_a_donation: + text: En Don maachen + shop: Geschäft + user_diaries: Benotzer Bloggen + view_tooltip: Kaart weisen + welcome_user: Wëllkomm, {{user_link}} + welcome_user_link_tooltip: Är Benotzersäit + wiki: Wiki + license_page: + foreign: + english_link: den engleschen Original + title: Iwwer dës Iwwersetzung + native: + native_link: lëtzebuergesch Versioun + title: Iwwer dës Säit + message: + delete: + deleted: Message geläscht + inbox: + date: Datum + subject: Sujet + message_summary: + delete_button: Läschen + reply_button: Äntwerten + unread_button: Als net geliest markéieren + new: + send_button: Schécken + subject: Sujet + title: Noriicht schécken + no_such_user: + heading: Esou e Benotzer gëtt et net + title: Esou e Benotzer gëtt et net + outbox: + date: Datum + subject: Sujet + read: + date: Datum + reply_button: Äntwerten + sent_message_summary: + delete_button: Läschen + notifier: + diary_comment_notification: + hi: Salut {{to_user}}, + email_confirm_html: + greeting: Salut, + email_confirm_plain: + greeting: Salut, + gpx_notification: + greeting: Salut, + with_description: mat der Beschreiwung + lost_password_html: + greeting: Salut, + lost_password_plain: + greeting: Salut, + signup_confirm_plain: + more_videos: "Hei si méi Videoen:" + oauth_clients: + edit: + submit: Änneren + form: + name: Numm + new: + submit: Registréieren + show: + allow_write_api: Kaart änneren + site: + edit: + user_page_link: Benotzersäit + key: + table: + entry: + cycleway: Vëlospiste + golf: Golfterrain + lake: + - Séi + motorway: Autobunn + rail: Eisebunn + school: + - Schoul + - Universitéit + subway: Metro + summit: + - Spëtzt + wood: Bësch + search: + search: Sichen + submit_text: Lass + sidebar: + close: Zoumaachen + search_results: Reaultater vun der Sich + time: + formats: + friendly: "%e %B %Y ëm %H:%M" + trace: + edit: + description: "Beschreiwung:" + download: eroflueden + edit: änneren + filename: "Numm vum Fichier:" + map: Kaart + owner: "Besëtzer:" + points: "Punkten:" + save_button: Ännerunge späicheren + start_coord: "Ufankskoordinaten:" + tags_help: Mat Komma getrennt + uploaded_at: "Eropgelueden:" + visibility: "Visibilitéit:" + visibility_help: wat heescht dat? + no_such_user: + heading: De Benotzer {{user}} gëtt et net + title: Esou e Benotzer gëtt et net + trace: + ago: viru(n) {{time_in_words_ago}} + by: vum + count_points: "{{count}} Punkten" + edit: änneren + edit_map: Kaart änneren + in: an + map: Kaart + more: méi + private: PRIVAT + public: ËFFENTLECH + view_map: Kaart weisen + trace_form: + description: Beschreiwung + help: Hëllef + tags_help: Mat Komma getrennt + upload_button: Eroplueden + upload_gpx: GPX-Fichier eroplueden + visibility: Visibilitéit + visibility_help: wat heescht dat? + trace_paging_nav: + next: Nächst » + previous: "« Vireg" + showing_page: D'Säit {{page}} gëtt gewisen + view: + description: "Beschreiwung:" + download: eroflueden + edit: änneren + filename: "Numm vum Fichier:" + map: Kaart + none: Keen + owner: "Besëtzer:" + points: "Punkten:" + start_coordinates: "Ufankskoordinaten:" + uploaded: "Eropgelueden:" + visibility: "Visibilitéit:" + user: + account: + contributor terms: + link text: wat ass dëst? + current email address: "Aktuell E-Mailadress:" + delete image: Dat aktuellt Bild ewechhuelen + flash update success: Benotzerinformatioun ass elo aktualiséiert. + image: "Bild:" + keep image: Dat aktuellt Bild behalen + make edits public button: All meng Ännerunge ëffentlech maachen + my settings: Meng Astellungen + new email address: "Nei E-Mailadress:" + new image: E Bild derbäisetzen + preferred languages: "Léifste Sproochen:" + profile description: "Beschreiwung vum Profil:" + public editing: + disabled link text: Firwat kann ech net änneren? + enabled link text: wat ass dëst? + replace image: Dat aktuellt Bild ersetzen + save changes button: Ännerunge späicheren + confirm: + button: Confirméieren + heading: E Benotzerkont confirméieren + press confirm button: Klickt w.e.g. op de Knäppchen confirméieren fir Äre Benotzerkont z'aktivéieren. + confirm_email: + button: Confirméieren + go_public: + flash success: All Är Ännerunge sinn elo ëffentlech, an Dir däerft elo änneren. + list: + confirm: Erausgesichte Benotzer confirméieren + heading: Benotzer + hide: Erausgesichte Benotzer vrstoppen + title: Benotzer + login: + email or username: "E-Mailadress oder Benotzernumm:" + lost password link: Hutt Dir Äert Passwuert vergiess? + password: "Passwuert:" + webmaster: Webmaster + logout: + heading: Vun OpenStreetMap ofmellen + logout_button: Ofmellen + title: Ofmellen + lost_password: + email address: "E-Mailadress:" + heading: Passwuert vergiess? + new password button: Passwuert zrécksetzen + notice email cannot find: Déi E-Mailadress konnt net fonnt ginn, pardon + title: Passwuert vergiess + make_friend: + already_a_friend: Dir sidd schonn de Frënd vum {{name}}. + success: "{{name}} ass elo Äre Frënd." + new: + confirm email address: "E-Mailadress confirméieren:" + confirm password: "Passwuert confirméieren:" + continue: Weider + display name: Numm weisen + email address: "E-Mailadress:" + heading: E Benotzerkont uleeën + password: "Passwuert:" + title: Benotzerkont opmaachen + no_such_user: + heading: De Benotzer {{user}} gëtt et net + title: Esou e Benotzer gëtt et net + popup: + friend: Frënn + remove_friend: + not_a_friend: "{{name}} ass kee vun Äre Frënn." + reset_password: + confirm password: "Passwuert confirméieren:" + flash changed: Äert Passwuert gouf geännert. + heading: Passwuert fir {{user}} zrécksetzen + password: "Passwuert:" + reset: Passwuert zrécksetzen + title: Passwuert zrécksetzen + suspended: + webmaster: Webmaster + terms: + agree: Akzeptéieren + consider_pd_why: wat ass dat? + legale_names: + france: Frankräich + italy: Italien + rest_of_world: Rescht vun der Welt + legale_select: "Sicht w.e.g. d'Land eraus wou Dir wunnt:" + view: + activate_user: dëse Benotzer aktivéieren + add as friend: als Frënd derbäisetzen + ago: (viru(n) {{time_in_words_ago}}) + confirm: Confirméieren + confirm_user: dëse Benotzer confirméieren + create_block: dëse Benotzer spären + deactivate_user: dëse Benotzer desaktivéieren + delete_user: dëse Benotzer läschen + description: Beschreiwung + diary: Blog + edits: Ännerungen + email address: "E-Mailadress:" + hide_user: dëse Benotzer verstoppen + km away: "{{count}} km ewech" + m away: "{{count}} m ewech" + my diary: mäi Blog + my edits: meng Ännerungen + my settings: meng Astellungen + nearby users: Aner Benotzer nobäi + remove as friend: als Frënd ewechhuelen + role: + administrator: Dëse Benotzer ass en Administrateur + grant: + administrator: Administrateur-Zougang accordéieren + moderator: Moderateursrechter ginn + moderator: Dëse Benotzer ass e Moderateur + revoke: + administrator: Administrateur-Zougang ofhuelen + moderator: Moderateursrechter ewechhuelen + send message: Noriicht schécken + settings_link_text: Astellungen + status: "Status:" + unhide_user: dëse Benotzer net méi verstoppen + your friends: Är Frënn + user_block: + blocks_by: + title: Späre vum {{name}} + edit: + submit: Spär aktualiséieren + index: + title: Benotzerspären + new: + submit: Spär uleeën + partial: + confirm: Sidd Dir sécher? + display_name: Gespaarte Benotzer + edit: Änneren + reason: Grond fir d'Spär + show: Weisen + period: + one: 1 Stonn + other: "{{count}} Stonnen" + show: + confirm: Sidd Dir sécher? + edit: Änneren + heading: "{{block_on}} gespaart vum {{block_by}}" + reason: "Grond fir d'Spär:" + show: Weisen + title: "{{block_on}} gespaart vum {{block_by}}" + update: + success: Spär aktualiséiert + user_role: + filter: + already_has_role: De Benotzer huet d'Roll {{role}} schonn. + doesnt_have_role: De Benotzer huet d'Roll {{role}} net. + not_a_role: D'Zeechen '{{role}}' ass keng valabel Roll. + not_an_administrator: Nëmmen Adminstrateure kënnen d'Gstioun vun de Rolle maachen, an Dir sidd net Administrateur. + grant: + confirm: Confirméieren + revoke: + are_you_sure: Sidd Dir sécher datt Dir dem Benotzer '{{name}}' d'Roll '{{role}}' ofhuele wëllt? + confirm: Confirméieren + fail: D'Roll '{{role}}' konnt met vum Benotzer '{{name}}' ewechgeholl ginn. Kuckt w.e.g. no ob de Benotzer an d'Roll allen zwee valabel sinn. + heading: Confirméiert d'Zréckzéie vun der Roll + title: Confirméiert d'Zréckzéie vun der Roll diff --git a/config/locales/mk.yml b/config/locales/mk.yml index 59453961f..7015340ee 100644 --- a/config/locales/mk.yml +++ b/config/locales/mk.yml @@ -301,9 +301,9 @@ mk: body: "Содржина:" language: "Јазик:" latitude: Геог. ширина - location: "Локација:" + location: "Местоположба:" longitude: Геог. должина - marker_text: Локација на дневничкиот запис + marker_text: Место на дневничкиот запис save_button: Зачувај subject: "Наслов:" title: Уреди дневничка ставка @@ -386,9 +386,9 @@ mk: geocoder: description: title: - geonames: Локација од GeoNames + geonames: Местоположба од GeoNames osm_namefinder: "{{types}} од OpenStreetMap Именикот" - osm_nominatim: Локација од OpenStreetMap Nominatim + osm_nominatim: Местоположба од OpenStreetMap Nominatim types: cities: Градови places: Места @@ -880,11 +880,12 @@ mk: export_tooltip: Извоз на податоци од картата gps_traces: GPS-траги gps_traces_tooltip: Работа со GPS траги - help_wiki: Помош и вики - help_wiki_tooltip: Помош и Вики-страница за овој проект + help: Помош + help_and_wiki: "{{help}} и {{wiki}}" + help_title: Помошна страница за проектот history: Историја home: дома - home_tooltip: Оди на домашна локација + home_tooltip: Оди на матичната местоположба inbox: пораки ({{count}}) inbox_tooltip: one: Имате 1 непрочитана порака во сандачето @@ -922,6 +923,8 @@ mk: view_tooltip: Види карта welcome_user: Добредојде, {{user_link}} welcome_user_link_tooltip: Ваша корисничка страница + wiki: Вики + wiki_title: Помошна страница за проектот license_page: foreign: english_link: англискиот оригинал @@ -1032,7 +1035,7 @@ mk: greeting: Здраво, success: loaded_successfully: успешно се вчита со {{trace_points}} од вкупно можни {{possible_points}} точки. - subject: "[OpenStreetMap] Успешен увоз на GPX податотека" + subject: "[OpenStreetMap] Успешен увоз на GPX-податотека" with_description: со описот your_gpx_file: Изгледа дека вашата GPX податотека lost_password: @@ -1054,6 +1057,7 @@ mk: signup_confirm: subject: "[OpenStreetMap] Потврдете ја вашата е-поштенска адреса" signup_confirm_html: + ask_questions: Можете да поставувате прашања за OpenStreetMap на нашата страница за прашања и одговори. click_the_link: Ако ова сте вие, добредојдовте! Кликнете на врската подолу за да ја потврдите таа сметка и да прочитате повеќе информации за OpenStreetMap current_user: На Категорија:Корисници_по_географски_регион ќе најдете список на тековни корисници во категории, зависно од нивната местоположба во светот. get_reading: Читајте за OpenStreetMap на викито, информирајте се за најновите збиднувања преку OpenStreetMap блогот или Twitter, или пак прелистајте гоблогот „OpenGeoData“ на основачот на OpenStreetMap, Стив Коуст за историја на проектот, заедно со под-емитувања! @@ -1066,11 +1070,12 @@ mk: video_to_openstreetmap: воведен видеоклип за OpenStreetMap wiki_signup: Препорачуваме да се регистрирате на викито на OpenStreetMap. signup_confirm_plain: + ask_questions: "Можете да поставувате прашања за OpenStreetMap на нашата страница за прашања и одговори:" blog_and_twitter: "Бидете информирани за најновите збиднувања преку блогот на OpenStreetMap blog или Twitter:" click_the_link_1: Ако ова сте вие, добредојдовте! Кликнете на врската подолу за да ја потврдите click_the_link_2: сметка и прочитајте повеќе за дополнителни информации за OpenStreetMap. current_user_1: Список на тековни корисници во категории, врз основа на нивната местоположба во светот - current_user_2: "локација во светот ќе најдете на:" + current_user_2: "местоположба во светот ќе најдете на:" greeting: Здраво! hopefully_you: Некој (се надеваме, Вие) сака да отвори сметка на introductory_video: "Погледајте го воведниот видеоклип за OpenStreetMap тука:" @@ -1240,7 +1245,7 @@ mk: search_help: "примери: 'Струмица', 'Илинденска', 'Regent Street, Cambridge', 'CB2 5AQ' или 'post offices near Lünen' повеќе примери..." submit_text: -> where_am_i: Каде сум? - where_am_i_title: Опишете ја моменталната локација со помош на пребарувачот + where_am_i_title: Опишете ја моменталната местоположба со помош на пребарувачот sidebar: close: Затвори search_results: Резултати од пребарувањето @@ -1361,7 +1366,7 @@ mk: email never displayed publicly: (никогаш не се прикажува јавно) flash update success: Корисничките информации се успешно ажурирани. flash update success confirm needed: Корисничките информации се успешно ажурирани. Проверете е-пошта за да ја потврдите на адресата. - home location: "Домашна локација:" + home location: "Матична местоположба:" image: "Слика:" image size hint: (најдобро работат квадратни слики, барем 100x100) keep image: Задржи ја тековната слика @@ -1371,7 +1376,7 @@ mk: my settings: Мои прилагодувања new email address: "Нова е-поштенска адреса:" new image: Додај слика - no home location: Немате внесено домашна локација. + no home location: Немате внесено матична местоположба. preferred languages: "Претпочитани јазици:" profile description: "Опис за профилот:" public editing: @@ -1388,7 +1393,7 @@ mk: return to profile: Назад кон профилот save changes button: Зачувај ги промените title: Уреди сметка - update home location on click: Подновувај ја домашната локација кога ќе кликнам на картата + update home location on click: Подновувај го матичната местоположба кога ќе кликнам на картата confirm: button: Потврди failure: Веќе имаме потврдено корисничка сметка со овој жетон. @@ -1411,8 +1416,8 @@ mk: heading: Корисници hide: Сокриј одбрани корисници showing: - one: Прикажана е страницата {{page}} ({{page}} од {{page}}) - other: Прикажани се страниците {{page}} ({{page}}-{{page}} од {{page}}) + one: Прикажана е страницата {{page}} ({{first_item}} од {{items}}) + other: Прикажани се страниците {{page}} ({{first_item}}-{{last_item}} од {{items}}) summary: "{{name}} создадено од {{ip_address}} на {{date}}" summary_no_ip: "{{name}} создадено на {{date}}" title: Корисници @@ -1471,7 +1476,7 @@ mk: popup: friend: Пријател nearby mapper: Соседен картограф - your location: Ваша локација + your location: Ваша местоположба remove_friend: not_a_friend: "{{name}} не е меѓу вашите пријатели." success: Корисникот {{name}} е отстранет од вашите пријатели. @@ -1480,11 +1485,11 @@ mk: flash changed: Лозинката ви е сменета. flash token bad: Не го пронајдов тој жетон. Проверете ја URL адресата. heading: Смени лозинка за {{user}} - password: Лозинка + password: "Лозинка:" reset: Смени лозинка title: Смени лозинка set_home: - flash success: Домашната локација е успешно зачувана + flash success: Матичната местоположба е успешно зачувана suspended: body: "

\n Нажалост, вашата сметка беше автоматски закочена поради\n сомнителни активности.\n

\n

\n Донесената одлуката набргу ќе ја прегледа администратор, но\n можете да се обратите кај {{webmaster}} ако сакате да продискутирате за овој проблем.\n

" heading: Сметката е закочена @@ -1521,7 +1526,7 @@ mk: edits: уредувања email address: Е-пошта hide_user: сокриј го корисников - if set location: Ако ја наместите вашата локација, под ова ќе ви се појави убава карта и други работи. Домашната локација можете да си ја наместите на страницата {{settings_link}}. + if set location: Ако ја наместите вашата местоположба, под ова ќе ви се појави убава карта и други работи. Матичната местоположба можете да си ја наместите на страницата {{settings_link}}. km away: "{{count}}km од вас" m away: "{{count}}m од вас" mapper since: "Картограф од:" @@ -1551,7 +1556,7 @@ mk: status: "Статус:" traces: траги unhide_user: покажи го корисникот - user location: Локација на корисникот + user location: Местоположба на корисникот your friends: Ваши пријатели user_block: blocks_by: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 631a75f94..711f5595b 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -883,8 +883,9 @@ nl: export_tooltip: Kaartgegevens exporteren gps_traces: GPS-tracks gps_traces_tooltip: GPS-tracks beheren - help_wiki: Help & wiki - help_wiki_tooltip: Help en wikisite voor het project + help: Hulp + help_and_wiki: "{{help}} en {{wiki}}" + help_title: Helpsite voor dit project history: Geschiedenis home: home home_tooltip: Naar thuislocatie gaan @@ -923,6 +924,8 @@ nl: view_tooltip: Kaart bekijken welcome_user: Welkom, {{user_link}} welcome_user_link_tooltip: Uw gebruikerspagina + wiki: wiki + wiki_title: Wikisite voor het project license_page: foreign: english_link: Engelstalige origineel @@ -1055,6 +1058,7 @@ nl: signup_confirm: subject: "[OpenStreetMap] Bevestig uw e-mailadres" signup_confirm_html: + ask_questions: U kunt vragen stellen over OpenStreetMap op onze vraag en antwoordsite. click_the_link: Als u dat bent, welkom! Volg de verwijzing hieronder beneden om uw gebruiker bevestigen en om meer over OpenStreetMap te weten te komen current_user: Een lijst van gebruikers, gesorteerd op woonplaats, is te zien op Category:Users_by_geographical_region. get_reading: Lees over OpenStreetMap op de wiki, volg het laatste nieuws op de OpenStreetMap-blog of via Twitter. Lees ook de OpenGeoData-blog van OpenSteetMap-grondlegger Steve Coast, die ook podcasts aanbiedt! @@ -1067,6 +1071,7 @@ nl: video_to_openstreetmap: introductievideo over OpenStreetMap bekijken wiki_signup: U kunt zich ook registreren op de OpenStreetMap-wiki. signup_confirm_plain: + ask_questions: "U kunt vragen stellen over OpenStreetMap op onze vraag en antwoordsite:" blog_and_twitter: "Volg het laatste nieuws via de OpenStreetMap-blog of Twitter:" click_the_link_1: Als u dat bent, welkom! Volg de verwijzing hieronder om uw gebruiker te bevestigen click_the_link_2: en om meer informatie over OpenStreetMap te krijgen. @@ -1413,8 +1418,8 @@ nl: heading: Gebruikers hide: Gelelecteerde gebruikers verbergen showing: - one: Pagina {{page}} ({{page}} van {{page}}) - other: Pagina {{page}} ({{page}}-{{page}} van {{page}}) + one: Pagina {{page}} ({{first_item}} van {{items}}) + other: Pagina {{page}} ({{first_item}}-{{last_item}} van {{items}}) summary: "{{name}} aangemaakt vanaf {{ip_address}} op {{date}}" summary_no_ip: "{{name}} aangemaakt op {{date}}" title: Gebruikers diff --git a/config/locales/no.yml b/config/locales/no.yml index b9e04d173..3fc1da674 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -93,7 +93,7 @@ title: Endringssett changeset_details: belongs_to: "Tilhører:" - bounding_box: "Bounding box:" + bounding_box: "Avgrensingsboks:" box: boks closed_at: "Lukket:" created_at: "Opprettet:" @@ -106,7 +106,7 @@ has_ways: one: "Har følgende {{count}} vei:" other: "Har følgende {{count}} veier:" - no_bounding_box: Ingen bounding box er lagret for dette endringssettet. + no_bounding_box: Ingen avgrensingsboks er lagret for dette endringssettet. show_area_box: Vis boks for omrÃ¥de common_details: changeset_comment: "Kommentar:" @@ -218,7 +218,7 @@ way: Vei private_user: privat bruker show_history: Vis historikk - unable_to_load_size: "Klarte ikke laste inn: Bounding box med størrelse [[bbox_size]] er for stor (mÃ¥ være mindre enn {{max_bbox_size}})" + unable_to_load_size: "Klarte ikke laste inn: Avgrensingsboks med størrelse [[bbox_size]] er for stor (mÃ¥ være mindre enn {{max_bbox_size}})" wait: Vent ... zoom_or_select: Zoom inn eller velg et omrÃ¥de av kartet for visning tag_details: @@ -530,8 +530,10 @@ chapel: Kapell church: Kirke city_hall: RÃ¥dhus + commercial: Kommersiell bygning dormitory: Sovesal entrance: Bygningsinngang + faculty: Fakultetsbygning farm: GÃ¥rdsbygg flats: Leiligheter garage: Garasje @@ -543,6 +545,7 @@ office: Kontorbygg public: Offentlig bygg residential: Boligbygg + retail: Detaljsalgbygg school: Skolebygg shop: Butikk stadium: Stadion @@ -554,6 +557,7 @@ "yes": Bygning highway: bridleway: Ridevei + bus_guideway: Ledet bussfelt bus_stop: Busstopp byway: Stikkvei construction: Motorvei under konstruksjon @@ -561,20 +565,27 @@ distance_marker: Avstandsmarkør emergency_access_point: Nødtilgangspunkt footway: Gangsti + ford: Vadested gate: Bom + living_street: Gatetun minor: Mindre vei motorway: Motorvei motorway_junction: Motorveikryss + motorway_link: Vei til motorvei path: Sti pedestrian: Gangvei + platform: Perrong primary: Primær vei primary_link: Primær vei + raceway: Racerbane residential: Bolig road: Vei secondary: Sekundær vei secondary_link: Sekundær vei service: Tjenestevei + services: Motorveitjenester steps: Trapper + stile: Stige tertiary: Tertiær vei track: Sti trail: Sti @@ -600,14 +611,19 @@ tower: TÃ¥rn wreck: Vrak landuse: + allotments: Kolonihager + basin: ElveomrÃ¥de + brownfield: Tidligere industriomrÃ¥de cemetery: Gravplass commercial: Kommersielt omrÃ¥de + conservation: Fredet construction: Kontruksjon farm: GÃ¥rd farmland: Jordbruksland farmyard: GÃ¥rdstun forest: Skog grass: Gress + greenfield: Ikke-utviklet omrÃ¥de industrial: IndustriomrÃ¥de landfill: Landfylling meadow: Eng @@ -616,11 +632,15 @@ mountain: Fjell nature_reserve: Naturreservat park: Park + piste: Løype + plaza: Torg quarry: Steinbrudd railway: Jernbane recreation_ground: Idrettsplass reservoir: Reservoar residential: BoligomrÃ¥de + retail: Detaljsalg + village_green: landsbypark vineyard: VingÃ¥rd wetland: VÃ¥tland wood: Skog @@ -635,6 +655,7 @@ miniature_golf: Minigolf nature_reserve: Naturreservat park: Park + pitch: Sportsarena playground: Lekeplass recreation_ground: Idrettsplass slipway: Slipp @@ -715,18 +736,24 @@ junction: Jernbanekryss light_rail: Bybane monorail: Enskinnebane + narrow_gauge: Smalspor jernbane platform: Jernbaneperrong + preserved: Bevart jernbane + spur: Jernbaneforgrening station: Jernbanestasjon subway: T-banestasjon subway_entrance: T-baneinngang + switch: Sporveksel tram: Sporvei tram_stop: Trikkestopp + yard: Skiftetomt shop: alcohol: Utenfor lisens apparel: Klesbutikk art: Kunstbutikk bakery: Bakeri beauty: Skjønnhetssalong + beverages: Drikkevarerbutikk bicycle: Sykkelbutikk books: Bokhandel butcher: Slakter @@ -739,6 +766,7 @@ chemist: Kjemiker clothes: Klesbutikk computer: Databutikk + confectionery: Konditori convenience: Nærbutikk copyshop: Kopieringsbutikk cosmetics: Kosmetikkforretning @@ -754,6 +782,7 @@ fish: Fiskebutikk florist: Blomsterbutikk food: Matbutikk + funeral_directors: Begravelsesforretning furniture: Møbler gallery: Galleri garden_centre: Hagesenter @@ -783,6 +812,7 @@ shoes: Skobutikk shopping_centre: Kjøpesenter sports: Sportsbutikk + stationery: Papirbutikk supermarket: Supermarked toys: Lekebutikk travel_agency: ReisebyrÃ¥ @@ -810,16 +840,25 @@ viewpoint: Utsiktspunkt zoo: Dyrepark waterway: + boatyard: BÃ¥than canal: Kanal + connector: Vannveiforbindelse dam: Demning ditch: Grøft dock: Dokk + drain: Avløp + lock: Sluse + lock_gate: Sluseport + mineral_spring: Mineralkilde mooring: Fortøyning rapids: Stryk river: Elv riverbank: Elvebredd stream: Strøm + wadi: Elveleie + water_point: Vannpunkt waterfall: Foss + weir: Overløpskant \ javascripts: map: base: @@ -841,8 +880,9 @@ export_tooltip: Eksporter kartdata gps_traces: GPS-spor gps_traces_tooltip: Behandle GPS-spor - help_wiki: Hjelp & Wiki - help_wiki_tooltip: Hjelp- & Wiki-side for prosjektet + help: Hjelp + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Hjelpenettsted for prosjektet history: Historikk home: hjem home_tooltip: GÃ¥ til hjemmeposisjon @@ -881,6 +921,8 @@ view_tooltip: Vis kartet welcome_user: Velkommen, {{user_link}} welcome_user_link_tooltip: Din brukerside + wiki: Wiki + wiki_title: Wikinettsted for prosjektet license_page: foreign: english_link: den engelske originalen @@ -1012,6 +1054,7 @@ signup_confirm: subject: "[OpenStreetMap] Bekreft din e-postadresse" signup_confirm_html: + ask_questions: Du kan stille spørsmÃ¥l du har om OpenStreetMap pÃ¥ vÃ¥rt spørsmÃ¥l og svar-nettsted. click_the_link: Hvis dette er deg, sÃ¥ er du velkommen! Klikke lenka nedenfor for Ã¥ bekrefte kontoen og les videre for mer informasjon om OpenStreetMap current_user: En liste over nÃ¥værende brukere i kategorier, basert pÃ¥ hvor i verden de er, er tilgjengelig fra Category:Users_by_geographical_region. get_reading: Start Ã¥ lese om OpenStreetMap pÃ¥ wikien, fÃ¥ med deg de siste nyhetene via OpenStreetMap-bloggen eller Twitter. Eller bla gjennom OpenStreetMaps grunnlegger Steve Coasts OpenGeoData-blogg for hele historien til prosjektet, som ogsÃ¥ har engelske podkaster du kan lytte til. @@ -1024,6 +1067,7 @@ video_to_openstreetmap: introduksjonsvideo til OpenStreetMap wiki_signup: Du vil kanskje melde deg inn i OpenStreetMap-wikien ogsÃ¥. signup_confirm_plain: + ask_questions: "Du kan stille spørsmÃ¥l du har om OpenStreetMap pÃ¥ vÃ¥rt spørsmÃ¥l og svar-nettsted:" blog_and_twitter: "FÃ¥ med deg de siste nyhetene gjennom OpenStreetMap-bloggen eller Twitter:" click_the_link_1: Om dette er deg, velkommen! Vennligst klikk pÃ¥ lenken under for Ã¥ bekrefte din click_the_link_2: konto og les videre for mer informasjon om OpenStreetMap. @@ -1121,15 +1165,17 @@ shortlink: Kort lenke key: map_key: Kartforklaring - map_key_tooltip: Kartforklaring for Mapnik-visninen pÃ¥ dette zoom-nivÃ¥et + map_key_tooltip: Kartforklaring for Mapnik-visningen pÃ¥ dette zoom-nivÃ¥et table: entry: admin: Administrativ grense + allotments: Kolonihager apron: - terminal - terminal bridge: Sort kant = bru bridleway: Ridevei + brownfield: Tidligere industriomrÃ¥de building: Viktig bygning byway: Stikkvei cable: @@ -1148,6 +1194,7 @@ footway: Gangvei forest: Skog golf: Golfbane + heathland: Heilandskap industrial: IndustriomrÃ¥de lake: - Innsjø @@ -1156,12 +1203,13 @@ motorway: Motorvei park: Park permissive: Betinget tilgang + pitch: Sportsarena primary: Primær vei private: Privat tilgang rail: Jernbane reserve: Naturreservat resident: BoligomrÃ¥de - retail: Militært omrÃ¥de + retail: DetaljsalgomrÃ¥de runway: - Flystripe - taksebane @@ -1255,7 +1303,7 @@ trace_form: description: Beskrivelse help: Hjelp - tags: Markelapper + tags: Merkelapper tags_help: kommaseparert upload_button: Last opp upload_gpx: Last opp GPX-fil @@ -1268,7 +1316,7 @@ upload_trace: Last opp et GPS-spor your_traces: Se bare dine spor trace_optionals: - tags: Markelapper + tags: Merkelapper trace_paging_nav: next: Neste » previous: « Forrige @@ -1359,6 +1407,9 @@ empty: Ingen samsvarende brukere funnet heading: Brukere hide: Skjul valgte brukere + showing: + one: Viser side {{page}} ({{first_item}} av {{items}}) + other: Viser side {{page}} ({{first_item}}-{{last_item}} av {{items}}) summary: "{{name}} opprettet fra {{ip_address}} den {{date}}" summary_no_ip: "{{name}} opprettet {{date}}" title: Brukere @@ -1371,6 +1422,7 @@ heading: Logg inn login_button: Logg inn lost password link: Mistet passordet ditt? + notice: Finn ut mer om OpenStreetMap sitt kommende bytte av lisens (oversettelser) (diskusjon) password: "Passord:" please login: Logg inn eller {{create_user_link}}. remember: "Huske meg:" @@ -1446,6 +1498,7 @@ italy: Italia rest_of_world: Resten av verden legale_select: "Velg ditt bostedsland:" + read and accept: Les avtalen nedenfor og trykk godkjenningsknapp for Ã¥ bekrefte at du godtar betingelsene i denne avtalen for dine eksisterende og kommende bidrag. title: BidragsytervilkÃ¥r view: activate_user: aktiver denne brukeren @@ -1577,6 +1630,7 @@ needs_view: Brukeren mÃ¥ logge inn før denne blokkeringen blir fjernet. reason: "Årsak for blokkering:" revoke: Tilbakekall! + revoker: "Tilbakekaller:" show: Vis status: Status time_future: Slutter om {{time}} diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 0267e9097..f1facb4c9 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -882,8 +882,6 @@ pl: export_tooltip: Eksport danych mapy gps_traces: Ślady GPS gps_traces_tooltip: Zarządzanie śladami GPS - help_wiki: Pomoc & Wiki - help_wiki_tooltip: Pomoc i strony Wiki projektu history: Zmiany home: główna home_tooltip: Przejdź do strony głównej diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index b5d6c7edc..a1734862c 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -901,9 +901,9 @@ pt-BR: export_tooltip: Exportar dados do mapa gps_traces: Trilhas GPS gps_traces_tooltip: Gerenciar trilhas GPS - help_wiki: Ajuda & Wiki - help_wiki_tooltip: Ajuda & Wiki do projeto - help_wiki_url: http://wiki.openstreetmap.org/wiki/Pt-br:Main_Page?uselang=pt-br + help: Ajuda + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Site de ajuda para o projeto history: Histórico home: início home_tooltip: Ir para a sua localização @@ -950,6 +950,8 @@ pt-BR: view_tooltip: Veja o mapa welcome_user: Bem vindo, {{user_link}} welcome_user_link_tooltip: Sua Página de usuário + wiki: Wikia + wiki_title: Site wiki para o projeto license_page: foreign: english_link: o original em Inglês @@ -1083,6 +1085,7 @@ pt-BR: signup_confirm: subject: "[OpenStreetMap] Confirme seu endereço de e-mail" signup_confirm_html: + ask_questions: Você pode perguntar o que quiser sobre o OpenStreetMap em nosso site de perguntas e respostas. click_the_link: Se esta pessoa é você, bem-vindo! Por favor, clique no link abaixo para confirmar sua inscrição e ler mais informações sobre o OpenStreetMap. current_user: A lista de usuários, baseada em suas localizações no mundo, está disponível em Category:Users_by_geographical_region. get_reading: Continue lendo sobre o OpenStreetMap no wiki, mantenha-se informado via o blog OpenStreetMap(em inglês) ou pelo Twitter(em inglês), ou então navegue pelo blog do fundador do OSM(em inglês), Steve Coast, que também tem podcasts(em inglês). @@ -1095,6 +1098,7 @@ pt-BR: video_to_openstreetmap: vídeo introdutório ao OpenStreetMap wiki_signup: Você pode querer também se registrar no wiki do OpenStreetMap. signup_confirm_plain: + ask_questions: "Você pode perguntar qualquer dúvida que você tiver sobre OpenStreetMap em nosso site de perguntas e respostas:" blog_and_twitter: "Mantenha-se informado via o blog do OpenStreetMap or pelo Twitter:" click_the_link_1: Se esta pessoa é você, bem-vindo! Clique abaixo para confirmar sua click_the_link_2: conta e ler mais informações sobre o OpenStreetMap. @@ -1453,8 +1457,8 @@ pt-BR: heading: Usuários hide: Ocultar Usuários Selecionados showing: - one: Mostrando página {{page}} ({{page}} de {{page}}) - other: Mostrando página {{page}} ({{page}}-{{page}} de {{page}}) + one: Mostrando página {{page}} ({{first_item}} de {{items}}) + other: Mostrando página {{page}} ({{first_item}}-{{last_item}} de {{items}}) summary: "{{name}} criado no computador {{ip_address}} em {{date}}" summary_no_ip: "{{name}} criado em {{date}}" title: Usuários diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 9f991ccfb..8d6176d03 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -12,6 +12,7 @@ # Author: Lockal # Author: Yuri Nazarov # Author: Александр Сигачёв +# Author: Сrower ru: activerecord: attributes: @@ -892,9 +893,9 @@ ru: export_tooltip: Экспортировать данные карты gps_traces: GPS-треки gps_traces_tooltip: Работать с GPS треками - help_wiki: Справка и вики - help_wiki_tooltip: Справка и вики-сайт проекта - help_wiki_url: http://wiki.openstreetmap.org/wiki/RU:Main_Page?uselang=ru + help: Помощь + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Сайт помощи проекта history: История home: домой home_tooltip: Показать мой дом @@ -934,6 +935,8 @@ ru: view_tooltip: Посмотреть карту welcome_user: Добро пожаловать, {{user_link}} welcome_user_link_tooltip: Ваша страница пользователя + wiki: Вики + wiki_title: Вики-сайт проекта license_page: foreign: english_link: английского оригинала @@ -1067,6 +1070,7 @@ ru: signup_confirm: subject: "[OpenStreetMap] Подтвердите ваш адрес электронной почты" signup_confirm_html: + ask_questions: Вы можете задать интересующие Вас вопросы о OpenStreetMap на нашем сайте вопросов и ответов . click_the_link: Если это действительно вы — добро пожаловать! Пожалуйста, перейдите по ссылке ниже, чтобы подтвердить регистрацию и просмотреть дополнительную информацию об OpenStreetMap current_user: "Список пользователей, основанный на их местоположении, доступен здесь: Category:Users_by_geographical_region." get_reading: Прочтите об OpenStreetMap в вики, узнайте последние новости в блоге OpenStreetMap или в Twitter. Ознакомьтесь с историей проекта в блоге OpenGeoData, автором которого является Стив Коуст (Steve Coast), основатель OpenStreetMap, в этом блоге есть подкасты, которые также можно прослушать! @@ -1079,6 +1083,7 @@ ru: video_to_openstreetmap: ознакомительное видео об OpenStreetMap wiki_signup: Вы можете зарегистрироваться в вики OpenStreetMap. signup_confirm_plain: + ask_questions: "Вы можете задать интересующие Вас вопросы об OpenStreetMap на нашем сайте вопросов и ответов:" blog_and_twitter: "Ознакомиться с последними новостями через блог OpenStreetMap или Twitter:" click_the_link_1: Если это действительно вы — добро пожаловать! Пожалуйста, перейдите по ссылке ниже, чтобы подтвердить click_the_link_2: регистрацию и прочитать больше об OpenStreetMap. @@ -1429,8 +1434,8 @@ ru: heading: Пользователи hide: Скрыть выделенных пользователей showing: - one: Показана страница {{page}} ({{page}} из {{page}}) - other: Показано страниц {{page}} ({{page}}-{{page}} из {{page}}) + one: Показана страница {{page}} ({{first_item}} из {{items}}) + other: Показано страниц {{page}} ({{first_item}}-{{last_item}} из {{items}}) summary: "{{name}} создан {{date}}, с адреса {{ip_address}}" summary_no_ip: "{{name}} создан {{date}}" title: Пользователи diff --git a/config/locales/sk.yml b/config/locales/sk.yml index a55898657..085990675 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -829,8 +829,6 @@ sk: export_tooltip: Export mapových dát gps_traces: GPS Stopy gps_traces_tooltip: Správa GPS stopy - help_wiki: Pomocník & Wiki - help_wiki_tooltip: Help & Wiki stránka projektu history: História home: domov home_tooltip: Choďte na domácu polohu diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 901eddc53..b4c6f4a1d 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -479,9 +479,6 @@ sl: export_tooltip: Izvozite podatke zemljevida gps_traces: GPS sledi gps_traces_tooltip: Upravljaj sledi GPS - help_wiki: Pomoč in Wiki - help_wiki_tooltip: Pomoč in Wiki strani projekta - help_wiki_url: http://wiki.openstreetmap.org/wiki/Sl:Main_Page?uselang=sl history: Zgodovina home: domov home_tooltip: Prikaži domači kraj diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 4a4c75b3d..ab5f54ac7 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -3,6 +3,7 @@ # Export driver: syck # Author: Mdupont # Author: MicroBoy +# Author: Techlik sq: activerecord: attributes: @@ -452,6 +453,8 @@ sq: see_all_traces: Kshyre kejt të dhanat see_your_traces: Shikoj kejt të dhanat tuja traces_waiting: Ju keni {{count}} të dhëna duke pritur për tu ngrarkuar.Ju lutem pritni deri sa të përfundoj ngarkimi përpara se me ngarku tjetër gjë, pra që mos me blloku rradhën për përdoruesit e tjerë. + upload_trace: Ngarkoni një gjurmë + your_traces: Shikoni gjurmët tuaja trace_optionals: tags: Etiketa trace_paging_nav: @@ -481,6 +484,7 @@ sq: identifiable: E indentifikueshme (shfaqet ne listen e te dhanave, pikat i urdheron me orë) private: Private (ndahen vetem si pika anonime të rendituna) public: Publike (shfaqet ne listen e të dhanave si e padukshme, pikat e rendituna) + trackable: Mund të përcilelt (vetëm e shkëmbyer në formë anonime, duke porositur pikë me vula kohore) user: account: current email address: "Email adresa e tanishme:" diff --git a/config/locales/sr-EC.yml b/config/locales/sr-EC.yml index a1ec4e369..a9cb6d518 100644 --- a/config/locales/sr-EC.yml +++ b/config/locales/sr-EC.yml @@ -78,7 +78,7 @@ sr-EC: browse: changeset: changeset: "Скуп измена: {{id}}" - changesetxml: XML скупа измена + changesetxml: XML скуп измена download: Преузми {{changeset_xml_link}} или {{osmchange_xml_link}} feed: title: Скуп измена {{id}} @@ -87,6 +87,7 @@ sr-EC: title: Скуп измена changeset_details: belongs_to: "Припада:" + bounding_box: "Оквир:" box: правоугаоник closed_at: "Затворен:" created_at: "Направљен:" @@ -102,6 +103,7 @@ sr-EC: few: "Има следеће {{count}} путање:" one: "Има следећу путању:" other: "Има следећих {{count}} путања:" + show_area_box: Прикажи оквир области common_details: changeset_comment: "Напомена:" edited_at: "Измењено:" @@ -216,6 +218,9 @@ sr-EC: zoom_or_select: Увећајте или изаберите место на мапи које желите да погледате tag_details: tags: "Ознаке:" + wiki_link: + key: Вики страница са описом за {{key}} таг + tag: Вики страница са описом за {{key}}={{value}} таг wikipedia_link: "{{page}} чланак на Википедији" timeout: sorry: Нажалост, добављање података за {{type}} са ИД-ом {{id}} трајало је предуго. @@ -249,7 +254,9 @@ sr-EC: big_area: (велика) no_comment: (нема) no_edits: (нема измена) + show_area_box: прикажи оквир области still_editing: (још увек уређује) + view_changeset_details: Погледај детаље скупа измена changeset_paging_nav: next: Следећа » previous: "« Претходна" @@ -275,6 +282,7 @@ sr-EC: title_user_bbox: Скупови измена корисника {{user}} унутар {{bbox}} diary_entry: diary_comment: + comment_from: Коментар {{link_user}} од {{comment_created_at}} confirm: Потврди hide_link: Сакриј овај коментар diary_entry: @@ -297,9 +305,15 @@ sr-EC: save_button: Сними subject: "Тема:" title: Уреди дневнички унос + use_map_link: користи мапу + feed: + all: + title: OpenStreetMap кориснички уноси list: + in_language_title: Дневници на {{language}} new: Нови дневнички унос newer_entries: Новији уноси + no_entries: Нема дневничких уноса older_entries: Старији уноси recent_entries: "Скорашњи дневнички уноси:" title: Кориснички дневници @@ -316,7 +330,9 @@ sr-EC: view: leave_a_comment: Оставите коментар login: Пријави се + login_to_leave_a_comment: "{{login_link}} да оставите коментар" save_button: Сними + title: "{{user}} дневник | {{title}}" user_title: Дневник корисника {{user}} export: start: @@ -336,7 +352,11 @@ sr-EC: options: Подешавања osm_xml_data: OpenStreetMap XML подаци osmarender_image: Осмарендер слика + output: Излаз + paste_html: Пренесите HTML како бисте уградили у сајт scale: Размера + too_large: + heading: Превелика област zoom: Увећање start_rjs: add_marker: Додајте маркер на мапу @@ -350,6 +370,8 @@ sr-EC: description: title: geonames: Место из GeoNames-а + osm_namefinder: "{{types}} од OpenStreetMap Namefinder" + osm_nominatim: Локација од OpenStreetMap Nominatim types: cities: Градови places: Места @@ -372,6 +394,15 @@ sr-EC: results: more_results: Још резултата no_results: Нема резултата претраге + search: + title: + ca_postcode: Резултати од Geocoder.ca + geonames: Резултати од GeoNames-а + latlon: Резултати од Internal + osm_namefinder: Резултати од OpenStreetMap Namefinder + osm_nominatim: Резултати од OpenStreetMap Nominatim + uk_postcode: Резултати од NPEMap / FreeThe Postcode + us_postcode: Резултати од Geocoder.us search_osm_namefinder: suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} од {{parentname}})" suffix_place: ", {{distance}} {{direction}} од {{placename}}" @@ -381,6 +412,7 @@ sr-EC: airport: Аеродром arts_centre: Уметнички центар atm: Банкомат + auditorium: Дворана bank: Банка bar: Бар bench: Клупа @@ -389,15 +421,18 @@ sr-EC: bureau_de_change: Мењачница bus_station: Аутобуска станица cafe: Кафе + car_rental: Изнајмљивање аутомобила car_wash: Ауто-перионица casino: Казино cinema: Биоскоп clinic: Клиника club: Клуб college: Факултет + community_centre: Друштвени центар courthouse: Зграда суда crematorium: Крематоријум dentist: Зубар + dormitory: Студентски дом drinking_water: Пијаћа вода driving_school: Ауто-школа embassy: Амбасада @@ -408,15 +443,21 @@ sr-EC: fuel: Гориво grave_yard: Гробље gym: Фитнес центар / Теретана + hall: Сала health_centre: Дом здравља hospital: Болница hotel: Хотел + hunting_stand: Ловачко стајалиште ice_cream: Сладолед kindergarten: Обданиште library: Библиотека + market: Пијаца marketplace: Пијаца mountain_rescue: Горска служба nightclub: Ноћни клуб + nursery: Обданиште + nursing_home: Старачки дом + office: Пословница park: Парк parking: Паркинг pharmacy: Апотека @@ -426,6 +467,7 @@ sr-EC: preschool: Обданиште prison: Затвор pub: Паб + public_market: Пијаца restaurant: Ресторан retirement_home: Старачки дом sauna: Сауна @@ -438,55 +480,77 @@ sr-EC: telephone: Јавна говорница theatre: Позориште toilets: Тоалети + townhall: Градска скупштина university: Универзитет + village_hall: Сеоска већница waste_basket: Корпа за отпатке wifi: Wi-Fi приступ youth_centre: Дом омладине boundary: administrative: Административна граница building: + apartments: Стамбени блок bunker: Бункер chapel: Капела church: Црква + city_hall: Градска скупштина + commercial: Пословна зграда + dormitory: Студентски дом faculty: Факултетска зграда flats: Станови garage: Гаража + hall: Сала hospital: Болница hotel: Хотел house: Кућа + residential: Стамбена зграда school: Школа shop: Продавница stadium: Стадион + store: Продавница + terrace: Тераса tower: Торањ train_station: Железничка станица university: Универзитетска зграда "yes": Зграда highway: bus_stop: Аутобуска станица + byway: Споредни пут construction: Аутопут у изградњи + cycleway: Бициклистичка стаза emergency_access_point: Излаз за случај опасности footway: Стаза ford: Газ gate: Капија motorway: Аутопут + motorway_junction: Петља motorway_link: Мото-пут path: Стаза + pedestrian: Пешачка стаза platform: Платформа + primary: Главни пут primary_link: Главни пут raceway: Тркачка стаза + residential: Стамбени road: Пут secondary: Споредни пут secondary_link: Споредни пут steps: Степенице + track: Коловозна трака trail: Стаза + trunk: Магистрални пут trunk_link: Магистрални пут historic: archaeological_site: Археолошко налазиште + battlefield: Бојиште + boundary_stone: Гранични камен building: Зграда castle: Дворац church: Црква house: Кућа icon: Икона + manor: Племићко имање + memorial: Споменик mine: Рудник monument: Споменик museum: Музеј @@ -496,24 +560,34 @@ sr-EC: landuse: basin: Басен cemetery: Гробље + commercial: Пословна област construction: Градилиште farm: Фарма + farmyard: Сеоско двориште forest: Шума grass: Трава industrial: Индустријска зона + landfill: Депонија meadow: Ливада military: Војна област mine: Рудник mountain: Планина + nature_reserve: Резерват природе park: Парк piste: Скијашка стаза + plaza: Шеталиште quarry: Каменолом railway: Железничка пруга reservoir: Резервоар residential: Стамбена област + retail: Малопродаја vineyard: Виноград + wetland: Мочвара wood: Гај leisure: + beach_resort: Морско одмаралиште + common: Општинско земљиште + fishing: Риболовно подручје garden: Башта golf_course: Голф терен ice_rink: Клизалиште @@ -535,25 +609,33 @@ sr-EC: cave_entrance: Улаз у пећину channel: Канал cliff: Литица + coastline: Обала crater: Кратер fjord: Фјорд geyser: Гејзир glacier: Глечер hill: Брдо island: Острво + land: Земљиште marsh: Мочвара + moor: Вресиште mud: Блато peak: Врх + point: Врх reef: Гребен ridge: Гребен river: Река rock: Стена + scree: Осулина + shoal: Спруд spring: Извор strait: Мореуз tree: Дрво valley: Долина volcano: Вулкан water: Вода + wetland: Мочвара + wetlands: Мочвара wood: Гај place: airport: Аеродром @@ -572,11 +654,22 @@ sr-EC: postcode: Поштански код region: Регион sea: Море + state: Савезна држава suburb: Предграђе town: Варош village: Село railway: + abandoned: Напуштена железница + construction: Железничка пруга у изградњи + disused: Напуштена железница + historic_station: Историјска железничка станица + junction: Железнички чвор narrow_gauge: Пруга уског колосека + platform: Железничка платформа + preserved: Очувана железница + station: Железничка станица + subway: Станица метроа + subway_entrance: Улаз метроа tram: Трамвај tram_stop: Трамвајско стајалиште shop: @@ -585,26 +678,35 @@ sr-EC: beauty: Салон лепоте books: Књижара butcher: Месара + car_dealer: Ауто дилер car_parts: Продавница ауто-делова car_repair: Ауто-сервис + chemist: Апотекар clothes: Бутик copyshop: Копирница + department_store: Робна кућа drugstore: Апотека dry_cleaning: Хемијско чишћење estate_agent: Агент за некретнине + fish: Рибарница florist: Цвећара + food: Бакалница furniture: Намештај gallery: Галерија gift: Сувенирница + greengrocer: Пиљарница grocery: Бакалница hairdresser: Фризерски салон insurance: Осигурање jewelry: Јувелирница kiosk: Киоск + laundry: Сервис за прање рубља mall: Тржни центар market: Маркет music: Музичка продавница optician: Оптичар + organic: Здрава храна + outdoor: Штанд photo: Фотографска радња salon: Салон shoes: Продавница ципела @@ -616,6 +718,7 @@ sr-EC: artwork: Галерија attraction: Атракција bed_and_breakfast: Полупансион + chalet: Планинска колиба guest_house: Гостинска кућа hostel: Хостел hotel: Хотел @@ -630,11 +733,20 @@ sr-EC: waterway: canal: Канал dam: Брана + derelict_canal: Одбачени канал ditch: Јарак + dock: Пристаниште + drain: Одвод + lock: Брана + lock_gate: Врата бране mineral_spring: Минерални извор + mooring: Сидриште rapids: Брзаци river: Река + riverbank: Обала реке + stream: Водена струја waterfall: Водопад + weir: Устава javascripts: map: base: @@ -642,15 +754,18 @@ sr-EC: site: edit_disabled_tooltip: Увећајте како бисте уредили мапу edit_tooltip: Уреди мапу + history_disabled_tooltip: Увећајте како бисте видели измене за ову област history_zoom_alert: Морате увећати како бисте видели историју уређивања layouts: + copyright: Ауторска права и лиценца donate_link_text: донирање edit: Уреди export: Извези export_tooltip: Извоз мапа gps_traces: ГПС трагови gps_traces_tooltip: Управљање ГПС траговима - help_wiki: Помоћ и вики + help: Помоћ + help_and_wiki: "{{help}} и {{wiki}}" history: Историја home: мој дом home_tooltip: Иди на почетну локацију @@ -662,7 +777,7 @@ sr-EC: zero: Немате непрочитаних порука intro_1: OpenStreetMap је слободна мапа целог света. Сачињавају је корисници као што сте ви. intro_2: OpenStreetMap вам омогућава да прегледате, уређујете и користите географске податке са било ког места на Земљи. - intro_3: Одржавање OpenStreetMap је подржано од стране {{ucl}} и {{bytemark}}. + intro_3: Одржавање OpenStreetMap је подржано од стране {{ucl}} и {{bytemark}}. Остале присталице пројекта су на списку {{partners}}. intro_3_partners: вики license: title: Подаци OpenStreetMap сајта су лиценцирани под Creative Commons Attribution-Share Alike 2.0 општом лиценцом @@ -675,7 +790,7 @@ sr-EC: make_a_donation: text: Донирајте title: Подржите OpenStreetMap новчаним прилогом - news_blog: Вест на блогу + news_blog: Вести на блогу shop: Продавница shop_tooltip: пазарите у регистрованој OpenStreetMap продавници sign_up: региструјте се @@ -686,11 +801,16 @@ sr-EC: view_tooltip: Погледајте мапу welcome_user: Добро дошли, {{user_link}} welcome_user_link_tooltip: Ваша корисничка страна + wiki: вики license_page: foreign: + english_link: енглеског оригинала + text: У сличају неслагања између преведене странице и {{english_original_link}}, енглеска страница ће имати предност title: О овом преводу + legal_babble: "

Ауторска права и лиценца

\n

\n OpenStreetMap чине слободни подаци, лиценцирани под Creative\n Commons Attribution-ShareAlike 2.0 лиценцом (CC-BY-SA).\n

\n

\n Слободни сте да копирате, делите, преносите и прилагођавате\n наше мапе и податке, све док именујете OpenStreetMap и њене\n уређиваче. Ако желите да мењате или надограђујете наше\n мапе и податке, можете их делити само под истом лиценцом.\n Пун \n текст уговора објашњава ваша права и одговорности.\n

\n\n

How to credit OpenStreetMap

\n

\n Ако користите OpenStreetMap слике мапа, тражимо да\n заслуге садрже бар “© OpenStreetMap\n contributors, CC-BY-SA”. Ако користите само податке\n мапа, тражимо да гласи “Map data © OpenStreetMap\n contributors, CC-BY-SA”.\n

\n

\n Где је могуће, пожељно је да OpenStreetMap буде хиперлинкован на \n http://www.openstreetmap.org/\n и CC-BY-SA на \n http://creativecommons.org/licenses/by-sa/2.0/. Ако користите\n медијум на коме хипервезе нису могуће (нпр. штампани рад),\n предлажемо да усмерите вапе читаоце на www.openstreetmap.org\n (по могућству проширивањем ‘OpenStreetMap’\n на пуну адресу) и на www.creativecommons.org.\n

\n\n

Сазнајте више

\n

\n Прочитајте још о коришћењу наших података на Legal\n FAQ.\n

\n

\n OSM уређивачи се подсећају да никада не додају податке\n од било ког извора заштићеног ауторскип правима (нпр.\n Google Мапе или штампане мапе) без изричите дозволе\n носиоца ауторских права.\n

\n

\n Иако OpenStreetMap чине слободни подаци, не можемо обезбедити\n бесплатне АПИ-је мапа другим програмерима.\n\n Погледајте нашу API Usage Policy,\n Tile Usage Policy\n и Nominatim Usage Policy.\n

\n\n

Наши сарадници

\n

\n Наша CC-BY-SA лиценца захтева да “Морате да\n наведете име изворног аутора на начин који је одређен\n од стране изворног аутора или даваоца лиценце”.\n Индивидуални OSM не захтевају истицање заслуга осим\n “OpenStreetMap сарадници”, али када су\n подаци припадају националној географској агенцији\n или другом већем извору који је укључен у\n OpenStreetMap, разумно је директно навести извор\n или оставити хипервезу до извора.\n

\n\n\n\n
    \n
  • Аустралија: Садржи податке о општинама\n на основу података Аустралијског бироа за статистику.
  • \n
  • Канада: Садржи податке од\n GeoBase®, GeoGratis (© Одељење за природне\n ресурсе Канаде), CanVec (© Одељење за природне\n ресурсе Канаде), and StatCan (Географски одсек,\n Завод за статистику Канаде).
  • \n
  • Нови Зеланд: Садржи податке који потичу од\n Land Information New Zealand. Crown Copyright reserved.
  • \n
  • Пољска: Садржи податке од UMP-pcPL maps. Copyright\n UMP-pcPL contributors.
  • \n
  • Уједињено Краљевство: Contains Ordnance\n Survey data © Crown copyright and database right\n 2010.
  • \n
\n\n

\n Укључивање података у OpenStreetMap Не подразумева да изворни\n власник података прихватаOpenStreetMap, обезбеђује било каква у\n гаранцију, или прихвата одговорност.\n

" native: mapping_link: почни мапирање + native_link: Српска верзија title: О овој страници message: delete: @@ -725,6 +845,7 @@ sr-EC: heading: Нема такве поруке title: Нема такве поруке no_such_user: + body: Извините не постоји корисник са тим именом. heading: Овде таквог нема title: Овде таквог нема outbox: @@ -762,7 +883,11 @@ sr-EC: hopefully_you: Неко (вероватно ви) би желео да промени адресу е-поште са {{server_url}} на {{new_address}}. email_confirm_plain: greeting: Поздрав, + hopefully_you_2: "{{server_url}} на {{new_address}}." friend_notification: + befriend_them: Можете га такође додати као пријатеља на {{befriendurl}}. + had_added_you: "{{user}} вас је додао као пријатеља на OpenStreetMap." + see_their_profile: Можете видети његов профил на {{userurl}}. subject: "[OpenStreetMap] {{user}} вас је додао за пријатеља" gpx_notification: and_no_tags: и без ознака. @@ -776,16 +901,26 @@ sr-EC: lost_password_plain: click_the_link: Ако сте то ви, молимо кликните на линк испод како бисте ресетивали лозинку. greeting: Поздрав, + hopefully_you_1: Неко (вероватно Ви) је затражио ресетовање лозинке за + hopefully_you_2: openstreetmap.org налог са овом адресом е-поште. message_notification: + footer1: Можете такође прочитати поруку на {{readurl}} footer2: и можете одговорити на њу {{replyurl}} + header: "{{from_user}} вам је послао поруку преко OpenStreetMap са темом {{subject}}:" hi: Поздрав {{to_user}}, signup_confirm: subject: "[OpenStreetMap] Потврдите вашу адресу е-поште" signup_confirm_html: + click_the_link: Ако сте то Ви, добродошли! Молимо кликните на везу испод како бисте потврдили ваш налог и прочитали још информација о OpenStreetMap greeting: Поздрав! + hopefully_you: Неко (вероватно Ви) би желео да направи налог на introductory_video: Можете гледати {{introductory_video_link}}. signup_confirm_plain: + click_the_link_1: Ако сте то Ви, добродошли! Молимо кликните на везу испод како бисте потврдили Ваш + current_user_1: Списак тренутних корисника у категоријама, на основу положаја у свету + current_user_2: "где живе, је доступан на:" greeting: Поздрав! + hopefully_you: Неко (вероватно Ви) би желео да направи налог на oauth: oauthorize: allow_read_gpx: учитајте ваше GPS путање. @@ -797,8 +932,18 @@ sr-EC: submit: Уреди form: name: Име + index: + application: Име апликације + register_new: Региструј своју апликацију + revoke: Опозови! + new: + submit: Региструј + title: Региструј нову апликацију + not_found: + sorry: Жао нам је, {{type}} није могло бити пронађено. site: edit: + not_public: Нисте подесили да ваше измене буду јавне. user_page_link: корисничка страна index: license: @@ -814,11 +959,15 @@ sr-EC: bridge: Црни оквир = мост brownfield: Грађевинско земљиште building: Значајна зграда + byway: Споредни пут + cable: + - Жичара cemetery: Гробље centre: Спортски центар commercial: Пословна област common: - 1: ливада + - Пољана + - ливада construction: Путеви у изградњи cycleway: Бициклистичка стаза farm: Фарма @@ -838,8 +987,10 @@ sr-EC: rail: Железничка пруга reserve: Парк природе resident: Стамбена област + retail: Малопродајна област runway: - Аеродромска писта + - рулне school: - Школа - универзитет @@ -850,12 +1001,13 @@ sr-EC: - Узвишење - врх tourist: Туристичка атракција - track: Стаза + track: Коловозна трака tram: - Лака железница - трамвај trunk: Магистрални пут tunnel: Испрекидан оквир = тунел + unclassified: Некатегорисан пут unsurfaced: Подземни пут wood: Гај heading: Легенда за увећање {{zoom_level}} @@ -874,7 +1026,9 @@ sr-EC: trace: create: trace_uploaded: Ваш GPX фајл је послат и чека на унос у базу. Он обично траје око пола сата, и добићете поруку е-поштом кад се заврши. - upload_trace: Пошаљи ГПС траг + upload_trace: Пошаљи GPS траг + delete: + scheduled_for_deletion: Путања планирана за брисање edit: description: "Опис:" download: преузми @@ -898,6 +1052,7 @@ sr-EC: tagged_with: " означени са {{tags}}" your_traces: Ваши ГПС трагови no_such_user: + body: Жао нам је, не постоји корисник са именом {{user}}. Молимо проверите да ли сте добро откуцали, или је можда веза коју сте кликнули погрешна. heading: Корисник {{user}} не постоји title: Овде таквог нема offline_warning: @@ -914,6 +1069,7 @@ sr-EC: pending: НА_ЧЕКАЊУ private: ПРИВАТНО public: ЈАВНО + trace_details: Погледај детаље путање view_map: Погледај мапу trace_form: description: Опис @@ -963,7 +1119,11 @@ sr-EC: user: account: contributor terms: + agreed: Сложили сте се са новим условима уређивања. + agreed_with_pd: Такође се слажете да ваше измене буду у јавном власништву. + heading: "Услови уређивања:" link text: шта је ово? + not yet agreed: Још се нисте сложили са новим условима уређивања. current email address: "Тренутна адреса е-поште:" delete image: Уклони тренутну слику email never displayed publicly: (не приказуј јавно) @@ -971,6 +1131,8 @@ sr-EC: flash update success confirm needed: Подаци о кориснику успешно ажурирани. Проверите вашу е-пошту како бисте потврдивли нову адресу е-поште. home location: "Моја локација:" image: "Слика:" + image size hint: (квадратна слика од отприлике 100x100 се најбоље уклапа) + keep image: Задржи тренутну слику latitude: "Географска ширина:" longitude: "Географска дужина:" make edits public button: Нека све моје измене буду јавне @@ -983,6 +1145,8 @@ sr-EC: public editing: disabled link text: зашто не могу да уређујем? enabled link text: шта је ово? + public editing note: + heading: Јавне измене return to profile: Повратак на профил save changes button: Сачувај промене title: Уреди налог @@ -1002,15 +1166,18 @@ sr-EC: summary_no_ip: "{{name}}, направљен {{date}}" title: Корисници login: + account not active: Извињавамо се, ваш налог још није активиран.
Молимо пратите везу у е-мејлу за потврду налога како бисте га активирали. create_account: направите налог email or username: "Адреса е-поште или корисничко име:" heading: Пријављивање login_button: Пријавите се lost password link: Изгубили сте лозинку? + notice: Сазнајте више о предстојећој OpenStreetMap промени лиценце (преводи) (дискусије) password: "Лозинка:" please login: Молимо пријавите се или {{create_user_link}}. remember: "Запамти ме:" title: Пријављивање + webmaster: администратор logout: logout_button: Одјави се title: Одјави се @@ -1041,6 +1208,9 @@ sr-EC: popup: friend: Пријатељ your location: Ваша локација + remove_friend: + not_a_friend: "{{name}} није један од ваших пријатеља." + success: "{{name}} је уклоњен из ваших пријатеља." reset_password: confirm password: "Потврдите лозинку:" flash changed: Ваша лозинка је промењена. @@ -1050,21 +1220,29 @@ sr-EC: title: Обнови лозинку set_home: flash success: Ваша локација је успешно сачувана + suspended: + heading: Суспендован налог + title: Суспендован налог + webmaster: администратор terms: + agree: Прихвати consider_pd_why: шта је ово? + decline: Одбаци legale_names: france: Француска italy: Италија rest_of_world: Остатак света view: add as friend: додај за пријатеља + ago: (пре {{time_in_words_ago}}) + blocks on me: моја блокирања confirm: Потврди create_block: блокирај овог корисника delete_user: избриши овог корисника description: Опис diary: дневник edits: измене - email address: "Е-мејл адреса:" + email address: "Адреса е-поште:" km away: "{{count}}km далеко" m away: "{{count}}m далеко" mapper since: "Мапер од:" @@ -1074,7 +1252,7 @@ sr-EC: my traces: моји трагови nearby users: "Остали корисници у близини:" new diary entry: нови дневнички унос - no friends: Још нисте додали ни једног пријатеља. + no friends: Још нисте додали ниједног пријатеља. remove as friend: уклони као пријатеља role: administrator: Овај корисник је администратор @@ -1084,15 +1262,20 @@ sr-EC: moderator: Овај корисник је модератор send message: пошаљи поруку settings_link_text: подешавања + status: "Статус:" traces: трагови user location: Локација корисника your friends: Ваши пријатељи user_block: partial: confirm: Јесте ли сигурни? + creator_name: Творац display_name: Блокирани корисник edit: Уреди + not_revoked: (није опозван) reason: Разлози блокирања + revoke: Опозови! + revoker_name: Опозвао show: Прикажи status: Стање period: @@ -1103,12 +1286,14 @@ sr-EC: back: Погледај сва блокирања confirm: Јесте ли сигурни? edit: Уреди + heading: "{{block_on}}-а је блокирао {{block_by}}" needs_view: Овај корисник мора да се пријави пре него што се блокада уклони. reason: "Разлози блокирања:" show: Прикажи status: Статус time_future: Завршава се у {{time}} time_past: Завршена пре {{time}} + title: "{{block_on}}-а је блокирао {{block_by}}" user_role: filter: already_has_role: Корисник већ има улогу {{role}}. diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 880cde52a..237e4bd98 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -683,8 +683,12 @@ sv: cycle_map: Cykelkarta noname: NoName site: + edit_disabled_tooltip: Zooma in för att redigera kartan + edit_tooltip: Redigera kartan edit_zoom_alert: Du måste zooma in för att kunna ändra kartan - history_zoom_alert: Du måste zooma in för att kunna se karterings historik. + history_disabled_tooltip: Zooma in för att kunna se karteringshistorik för detta område + history_tooltip: Visa ändringar för detta område + history_zoom_alert: Du måste zooma in för att kunna se karteringshistorik. layouts: donate: Donera till OpenStreetMap via {{link}} till hårdvaruuppgraderingsfonden. donate_link_text: donera @@ -692,9 +696,7 @@ sv: export: Exportera export_tooltip: Exportera kartdata som bild eller rådata gps_traces: GPS-spår - gps_traces_tooltip: Hantera spår - help_wiki: Hjälp & wiki - help_wiki_tooltip: Hjälp och wiki för projektet + gps_traces_tooltip: Visa, ladda upp och ändra GPS-spår. history: Historik home: hem home_tooltip: Gå till hempositionen @@ -878,6 +880,7 @@ sv: map_key: Kartnyckel table: entry: + admin: Administrativ gräns allotments: Koloniträdgårdar apron: - Flygplatsterminal @@ -931,7 +934,7 @@ sv: heading: Symbolförklaring för z{{zoom_level}} search: search: Sök - search_help: "exempel: 'Delsbo', 'Storgatan, Svedala', 'post offices near Hässelby' Fler exempel.." + search_help: "exempel: 'Delsbo', 'Storgatan, Svedala', Fler exempel.." submit_text: Gå where_am_i: Var är jag sidebar: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 86d7e5920..788117fe1 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -889,9 +889,9 @@ uk: export_tooltip: Експортувати картографічні дані gps_traces: GPS-треки gps_traces_tooltip: Управління GPS треками - help_wiki: Довідка та Вікі - help_wiki_tooltip: Довідка та Вікі проекту - help_wiki_url: http://wiki.openstreetmap.org/wiki/Uk:Main_Page?uselang=uk + help: Довідка + help_and_wiki: "{{help}} та {{wiki}}" + help_title: Питання та відповіді history: Історія home: додому home_tooltip: Показати моє місце знаходження @@ -933,6 +933,8 @@ uk: view_tooltip: Переглянути мапу welcome_user: Вітаємо, {{user_link}} welcome_user_link_tooltip: Ваша сторінка користувача + wiki: Вікі + wiki_title: Вікі-сайт проекту license_page: foreign: english_link: оригіналом англійською @@ -1065,6 +1067,7 @@ uk: signup_confirm: subject: "[OpenStreetMap] Підтвердіть вашу адресу електронної пошти" signup_confirm_html: + ask_questions: Ви можете задати питання про OpenStreetMap на нашому сайті питань і відповідей. click_the_link: Якщо це Ви, ласкаво просимо! Будь ласка, клацніть на посилання нижче, щоб підтвердити цей обліковий запис і ознайомтеся з додатковою інформацією про OpenStreetMap current_user: "Перелік користувачів, за їх місцем знаходження, можна отримати тут: Category:Users_by_geographical_region." get_reading: Прочитайте про OpenStreetMap у Вікі, дізнайтесь про останні новини у Блозі OpenStreetMap або Twitter, чи перегляньте OpenGeoData blog — блог засновника OpenStreetMap Стіва Коуста (Steve Coast) у якому змальовано історію розвитку проекту та є підкасти, які також можливо послухати! @@ -1077,6 +1080,7 @@ uk: video_to_openstreetmap: відео-вступ до OpenStreetMap wiki_signup: Ви маєте змогу зареєструватись у Вікі проекту OpenStreetMap. signup_confirm_plain: + ask_questions: "Ви можете задати питання про OpenStreetMap на нашому сайті питань та і відповідей:" blog_and_twitter: "Ознайомитися з останніми новинами через блог OpenStreetMap або Twitter:" click_the_link_1: Якщо це ві, ласкаво просимо! Будь ласка, клацніть на посилання нижче, щоб підтвердити click_the_link_2: реєстрацію та прочитати більше про OpenStreetMap. @@ -1425,9 +1429,9 @@ uk: heading: Користувачі hide: Сховати вибраних користувачів showing: - few: Показано {{page}} сторінки ({{page}} з {{page}}) - one: Показано {{page}} сторінку ({{page}} з {{page}}) - other: Показано {{page}} сторінок ({{page}}-{{page}} з {{page}}) + few: Показано {{page}} сторінки ({{first_item}} з {{items}}) + one: Показано {{page}} сторінку ({{first_item}} з {{items}}) + other: Показано {{page}} сторінок ({{first_item}}-{{last_item}} з {{items}}) summary: "{{name}} зареєстрований з {{ip_address}}, {{date}}" summary_no_ip: "{{name}} зареєстврований {{date}}" title: Користувачі diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 2234e9900..6d6f78f08 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -796,9 +796,9 @@ vi: export_tooltip: Xuất dữ liệu bản đồ gps_traces: Tuyến đường GPS gps_traces_tooltip: Quản lý tuyến đường GPS - 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 + help: Trợ giúp + help_and_wiki: "{{help}} & {{wiki}}" + help_title: Trang trợ giúp của dự án history: Lịch sử home: nhà home_tooltip: Về vị trí nhà @@ -840,6 +840,8 @@ vi: view_tooltip: Xem bản đồ welcome_user: Hoan nghênh, {{user_link}} welcome_user_link_tooltip: Trang cá nhân của bạn + wiki: Wiki + wiki_title: Trang wiki của dự án license_page: foreign: english_link: nguyên bản tiếng Anh @@ -973,6 +975,7 @@ vi: signup_confirm: subject: "[OpenStreetMap] Xác nhận địa chỉ thư điện tử của bạn" signup_confirm_html: + ask_questions: Có thể đặt bất kỳ câu hỏi mà bạn có về OpenStreetMap tại trang hỏi đáp. 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. current_user: Có danh sách các người dùng, xếp thể loại theo nơi ở, tại Category:Users by geographical region. get_reading: Bắt đầu tìm hiểu về OpenStreetMap tại wiki, theo dõi tin tức gần đây tại blog OpenGeoData hay Twitter, hoặc đọc blog và nghe podcast của nhà sáng lập Steve Coast! @@ -985,6 +988,7 @@ vi: video_to_openstreetmap: video giới thiệu về OpenStreetMap wiki_signup: Có lẽ bạn cũng muốn mở tài khoản ở wiki OpenStreetMap. signup_confirm_plain: + ask_questions: "Có thể đặt bất kỳ câu hỏi mà bạn có về OpenStreetMap tại trang hỏi đáp:" blog_and_twitter: "Theo dõi tin tức gần đây tại blog OpenStreetMap và Twitter:" 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. @@ -1335,8 +1339,8 @@ vi: heading: Người dùng hide: Ẩn những Người dùng Được chọn showing: - one: Trang {{page}} ({{page}} trên tổng {{page}}) - other: Trang {{page}} ({{page}}–{{page}} trên tổng {{page}}) + one: Trang {{page}} ({{first_item}} trên tổng {{items}}) + other: Trang {{page}} ({{first_item}}–{{last_item}} trên tổng {{items}}) summary: "{{name}} do {{ip_address}} mở ngày {{date}}" summary_no_ip: "{{name}} mở ngày {{date}}" title: Người dùng diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 506f122cc..acb58db76 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -269,7 +269,6 @@ zh-CN: export_tooltip: 输出地图数据 gps_traces: GPS 追踪 gps_traces_tooltip: 管理追踪 - help_wiki: 帮助 & Wiki history: 历史 home: 主页 home_tooltip: 回到主页位置 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c057a09c1..66513acd4 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -454,8 +454,6 @@ zh-TW: export_tooltip: 匯出地圖資料 gps_traces: GPS 軌跡 gps_traces_tooltip: 管理 GPS 軌跡 - help_wiki: 求助 & Wiki - help_wiki_tooltip: 本計畫的求助 & Wiki 網站 history: 歷史 home: 家 home_tooltip: 移至家位置 @@ -963,8 +961,8 @@ zh-TW: heading: 使用者 hide: 隱藏選取的使用者 showing: - one: 顯示頁面 {{page}} ({{page}} / {{page}}) - other: 顯示頁面 {{page}} ({{page}}-{{page}} / {{page}}) + one: 顯示頁面 {{page}} ({{first_item}} / {{items}}) + other: 顯示頁面 {{page}} ({{first_item}}-{{last_item}} / {{items}}) summary: "{{name}} 由 {{ip_address}} 於 {{date}} 建立" summary_no_ip: "{{name}} 建立於: {{date}}" title: 使用者 diff --git a/config/potlatch/icon_presets.txt b/config/potlatch/icon_presets.txt index d90bc5c60..0a2303aa8 100644 --- a/config/potlatch/icon_presets.txt +++ b/config/potlatch/icon_presets.txt @@ -1,4 +1,4 @@ -airport amenity=airport +airport aeroway=aerodrome bus_stop highway=bus_stop ferry_terminal amenity=ferry_terminal parking amenity=parking @@ -24,4 +24,3 @@ police amenity=police place_of_worship amenity=place_of_worship museum tourism=museum school amenity=school -disaster building=yes;earthquake_damage=(type damage here) diff --git a/config/potlatch/locales/cs.yml b/config/potlatch/locales/cs.yml index 1f4bf9d92..0b1220aa2 100644 --- a/config/potlatch/locales/cs.yml +++ b/config/potlatch/locales/cs.yml @@ -1,6 +1,7 @@ # Messages for Czech (Česky) # Exported from translatewiki.net # Export driver: syck +# Author: Mormegil cs: a_poi: $1 bod zájmu a_way: $1 cestu @@ -56,7 +57,7 @@ cs: prompt_launch: Otevřít externí webovou adresu? prompt_revertversion: "Vrátit se ke dříve uložené verzi:" prompt_savechanges: Uložit změny - prompt_taggedpoints: Některé uzle této cesty mají tagy, opravdu smazat? + prompt_taggedpoints: Některé body na této cestě jsou označené nebo v relacích. Opravdu smazat? prompt_track: Převede vaši GPS stopu na (uzamčené) cesty, které následně můžete upravit. prompt_welcome: Vítejte na OpenStreetMap save: Uložit změny @@ -66,7 +67,7 @@ cs: tip_anticlockwise: Proti směru hodinových ručiček (kliknutím otočíte směr kruhové cesty) tip_clockwise: Po směru hodinových ručiček (kliknutím otočíte směr kruhové cesty) tip_direction: Směr cesty (kliknutím otočíte) - tip_gps: Zobrazit GPX stopy (GPS logy) (G) + tip_gps: Zobrazit GPS stopy (G) tip_noundo: Není, co vzít zpět tip_options: Možnosti (vyberte si mapu na pozadí) tip_presettype: Zvolit skupinu předvoleb v menu. diff --git a/config/potlatch/locales/fr.yml b/config/potlatch/locales/fr.yml index b2d6f7ce8..01cd89edd 100644 --- a/config/potlatch/locales/fr.yml +++ b/config/potlatch/locales/fr.yml @@ -128,7 +128,7 @@ fr: offset_dual: Route à chaussées séparées (D2) offset_motorway: Autoroute (D3) offset_narrowcanal: Chemin de halage de canal étroit - ok: OK + ok: Ok openchangeset: Ouverture d'un changeset option_custompointers: Remplacer la souris par le Crayon et la Main option_external: "Lancement externe :" diff --git a/config/potlatch/locales/hr.yml b/config/potlatch/locales/hr.yml index b4ab59545..3ff037a52 100644 --- a/config/potlatch/locales/hr.yml +++ b/config/potlatch/locales/hr.yml @@ -2,6 +2,7 @@ # Exported from translatewiki.net # Export driver: syck # Author: Mvrban +# Author: SpeedyGonsales hr: a_poi: $1 POI (točka interesa) a_way: $1 put @@ -64,8 +65,8 @@ hr: emailauthor: \n\nMolim pošalji e-mail richard\@systemeD.net sa izvješćem o bug-u, recite što ste radili u to vrijeme. error_anonymous: Ne možete kontaktirati anonimnog mappera. error_connectionfailed: Žao mi je, veza sa OpenstreetMap serverom nije uspjela. Neke nedavne promjene nisu spremljene.\n\nŽelite li pokušati ponovno? - error_microblog_long: "Slanje na $1 nije uspjelo:\nHTTP code: $2\nPoruka o grešci: $3\n$1 greška: $4" - error_nopoi: POI se ne može naći (možda ste pomakli kartu), tako da nemogu poništiti. + error_microblog_long: "Slanje na $1 nije uspjelo:\nHTTP kod pogreške: $2\nTekst pogreške: $3\n$1 pogreška: $4" + error_nopoi: POI se ne može naći (možda ste pomakli kartu), tako da ne mogu poništiti. error_nosharedpoint: Putevi $1 i $2 više ne dijele zajedničku točku, pa se ne mogu razdvojiti. error_noway: Put $1 se ne može pronaći (možda ste pomakli kartu?), pa ne mogu poništiti. error_readfailed: Žao mi je, OpenStreetMap server nije reagirao kada je bio upitan za podatke.\n\nŽelite li pokušati ponovno? @@ -129,19 +130,22 @@ hr: option_layer_ooc_25k: UK povijesni 1:25k option_layer_ooc_7th: "UK povijesni: 7th" option_layer_ooc_npe: "UK povijesni: NPE" + option_layer_ooc_scotland: "UK povijesni: Škotska" + option_layer_os_streetview: "UK: OS pregled ulica" option_layer_streets_haiti: "Haiti: imena ulica" + option_layer_surrey_air_survey: "UK: Surrey fotografije iz zraka" option_layer_tip: Izaberite pozadinu za prikaz option_limitways: Upozori kada se učitava puno podataka option_microblog_id: "Naziv Microbloga:" option_microblog_pwd: "Microblog lozinka:" option_noname: Osvjetli neimenovane ceste option_photo: "Fotografija KML:" - option_thinareas: Koristi take linije za područja + option_thinareas: Koristi tanke linije za područja option_thinlines: Koristi tanke linije u svim uvećanjima option_tiger: Osvjetli nepromjenjeni TIGER option_warnings: Prikaži plutajuća upozorenja point: Točka - preset_icon_airport: Aerodrom + preset_icon_airport: Zračna luka preset_icon_bar: Bar preset_icon_bus_stop: Autobusno stajalište preset_icon_cafe: Caffe bar @@ -189,7 +193,7 @@ hr: retry: Pokušaj ponovo revert: Vrati na staro save: Spremi - tags_backtolist: Povratak na listu + tags_backtolist: Povratak na popis tags_descriptions: Opisi '$1' tags_findatag: Pronađi oznaku (tag) tags_findtag: Pronađi oznaku (tag) @@ -217,8 +221,8 @@ hr: uploading_deleting_ways: Brišem puteve uploading_poi: Uploadiram POI $1 uploading_poi_name: Uploadiram POI $1, $2 - uploading_relation: Upoloadiram relaciju $1 - uploading_relation_name: Uploadiram relaciju $1, $2 + uploading_relation: Snimam relaciju $1 na poslužitelj + uploading_relation_name: Snimam relaciju $1, $2 na poslužitelj uploading_way: Uploadiram put $1 uploading_way_name: Uploadiram put $1, $2 warning: Upozorenje! diff --git a/config/potlatch/locales/lb.yml b/config/potlatch/locales/lb.yml index baa3c4f0a..b842daef2 100644 --- a/config/potlatch/locales/lb.yml +++ b/config/potlatch/locales/lb.yml @@ -3,10 +3,13 @@ # Export driver: syck # Author: Robby lb: + a_poi: $1 e POI a_way: $1 ee Wee action_deletepoint: e Punkt läschen + action_mergeways: Zwee Weeër zesummeleeën action_movepoint: e Punkt réckelen action_splitway: e Wee opdeelen + advanced: Erweidert advanced_inspector: Inspekter advanced_maximise: Fënster maximéieren advanced_minimise: Fënster minimiséieren @@ -17,30 +20,44 @@ lb: advice_uploadsuccess: All Donnéeë sinn eropgelueden cancel: Ofbriechen conflict_download: Hir Versioun eroflueden + conflict_visitway: Klickt 'OK' fir de Wee ze weisen. createrelation: Eng nei Relatioun festleeën custom: "Personaliséiert:" delete: Läschen deleting: läschen + error_anonymous: En anonyme Mapper kann net kontaktéiert ginn. heading_drawing: Zeechnen + heading_introduction: Aféierung + heading_pois: Ufänken help: Hëllef + hint_loading: Donnéeë lueden inspector: Inspekter + inspector_duplicate: Doublon vu(n) inspector_locked: Gespaart inspector_node_count: ($1 mol) inspector_unsaved: Net gespäichert inspector_uploading: (eroplueden) + inspector_way_nodes: $1 Kniet loading: Lueden... login_pwd: "Passwuert:" login_uid: "Benotzernumm:" + mail: Noriicht more: Méi "no": Neen nobackground: Keen Hannergrond offset_motorway: Autobunn (D3) + offset_narrowcanal: Schmuele Pad laanscht e Kanal ok: OK option_layer_cycle_map: OSM - Vëloskaart + option_layer_nearmap: "Australien: NearMap" + option_layer_os_streetview: "UK : OS StreetView" option_layer_streets_haiti: "Haiti: Stroossennimm" option_photo: "Foto-KML:" + point: Punkt preset_icon_airport: Fluchhafen preset_icon_bar: Bar + preset_icon_bus_stop: Busarrêt + preset_icon_cafe: Café preset_icon_cinema: Kino preset_icon_disaster: Haiti Gebai preset_icon_ferry_terminal: Fähr @@ -50,24 +67,43 @@ lb: preset_icon_museum: Musée preset_icon_parking: Parking preset_icon_pharmacy: Apdikt + preset_icon_police: Policebüro + preset_icon_post_box: Bréifboîte preset_icon_pub: Bistro + preset_icon_recycling: Recyclage preset_icon_restaurant: Restaurant preset_icon_school: Schoul preset_icon_station: Gare preset_icon_supermarket: Supermarché preset_icon_telephone: Telefon preset_icon_theatre: Theater + prompt_addtorelation: $1 bäi eng Relatioun derbäisetzen prompt_changesetcomment: "Gitt eng Beschreiwung vun Ären Ännerungen:" + prompt_createparallel: E parallele Wee uleeën + prompt_editlive: Live änneren + prompt_editsave: Mat späicheren änneren + prompt_helpavailable: Neie Benotzer? Kuckt ënne lenks fir Hëllef. + prompt_launch: Extern URL opmaachen + prompt_revertversion: "Op eng méi fréi gespäichert Versioun zerécksetzen:" prompt_savechanges: Ännerunge späicheren + prompt_welcome: Wëllkomm op OpenStreetMap! retry: Nach eng Kéier probéieren revert: Zrécksetzen save: Späicheren tags_backtolist: Zréck op d'Lëscht tags_descriptions: Beschreiwunge vu(n) '$1' + tip_alert: Et ass e Feeler geschitt - klickt hei fir weider Detailer + tip_options: Optiounen astellen (Sicht den Hannergrond vun der Kaart eraus) tip_photo: Fotoe lueden + tip_splitway: Wee op dem erausgesichte Punkt (X) opdeelen + tip_undo: $1 réckgängeg maachen (Z) uploading: Eroplueden... uploading_deleting_ways: Weeër läschen + uploading_poi: POI $1 eroplueden + uploading_poi_name: POI $1, $2 eroplueden uploading_relation: Realtioun $1 eroplueden + uploading_way: Wee $1 eroplueden + uploading_way_name: Wee $1, $2 eroplueden warning: Warnung way: Wee "yes": Jo diff --git a/config/potlatch/locales/mk.yml b/config/potlatch/locales/mk.yml index 61003b4b7..6b9d1a32c 100644 --- a/config/potlatch/locales/mk.yml +++ b/config/potlatch/locales/mk.yml @@ -80,7 +80,7 @@ mk: heading_tagging: Означување heading_troubleshooting: Отстранување неисправности help: Помош - help_html: "Добредојдовте во Potlatch\nPotlatch е уредник на OpenStreetMap кој е лесен за употреба. Цртајте патишта, знаменитости, споменици и продавници од вашите GPS податоци, сателитски слики или стари карти.\n\nОвие страници за помош ќе ве запознаат со основите на користење на Potlatch, и ќе ви покажат каде можете да дознаете повеќе. Кликнете на насловите погоре за да почнете.\n\nЗа да излезете, кликнете било каде вон прозорецов.\n\n\n\nКорисно да се знае\nНе копирајте од други карти!\n\nАко изберете „Уредување во живо“, сите промени кои ќе ги направите одат на базата додека ги цртате - т.е. веднаш. Ако не сте толку сигурни во промените, одберете „Уредување со зачувување“, и така промените ќе се појават дури кога ќе стиснете на „Зачувај“.\n\nСите направени уредувања ќе се покажат по час-два (на неколку посложени работи им треба една недела). На картата не е прикажано сè - тоа би бил голем неред. Бидејќи податоците на OpenStreetMap се отворен извор, другите корисници слободно прават карти на кои се прикажани различни аспекти - како OpenCycleMap (Отворена велосипедска карта) или Midnight Commander.\n\nЗапомнете дека ова е и убава карта (затоа цртајте убави криви линии за кривините), но и дијаграм (затоа проверувајте дека патиштата се среќаваат на крстосници) .\n\nДали ви споменавме дека не смее да се копира од други карти?\n\n\nДознајте повеќе\nPotlatch прирачник\nПоштенски списоци\nРазговори (помош во живо)\nФорум\nВики на заедницата\nИзворен код на Potlatch\n\n\n\nКако да почнете\nСега Potlatch ви е отворен. Кликнете на „Уреди и зачувај“ за да почнете\n\nЗначи спремни сте да нацртате карта. Најлесно е да се почне со поставење на точки од интерес на картата (POI). Овие можат да бидат ресторани, цркви, железнички станици...сè што сакате.\n\nВлечење и пуштање\nЗа да ви олесниме, ги поставивме најчестите видови на точки од интерес (POI), на дното од картата. На картата се ставаат со нивно повлекување и пуштање на саканото место. И не грижете се ако не сте го погодиле местото од прв пат: можете точките да повлекувате повторно, сè додека не ја наместите секоја точка кадешто сакате.\n\nКога сте готови со тоа, ставете му име на ресторанот (или црквата, станицата итн.) На дното ќе се појави мала табела. Една од ставките ќе биде „име“, и до него „(тука внесете име)“. Кликнете на тој текст и впишете го името.\n\nКликнете другде на картата за да го одизберете вашата точка од интерес (POI), и така ќе се врати малиот шарен правоаголник.\n\nЛесно е, нели? Кликнете на „Зачувај“ (најдолу-десно) кога сте готови.\nДвижење по картата\nЗа да отидете на друг дел од картата, само повлечете празен простор. Potlatch автоматски ќе вчита нови податоци (гледајте најгоре-десно)\n\nВи рековме да „Уредите и зачувате“, но можете и да кликнете на „Уредување во живо“. Под овој режим промените одат право во базата, и затоа нема копче „Зачувај“. Ова е добро за брзи промени и картографски акции.\n\nСледни чекори\nЗадоволни сте од досегашното? Одлично. Кликнете на „Истражување“ погоре за да дознаете како да бидете вистински картограф!\n\nИстражување со GPS\nИдејата позади OpenStreetMap е создавање на карта без ограничувачките авторски права кои ги имаат други карти. Ова значи дека овдешните карти не можете да ги копирате од никаде: морате самите да ги истражите улиците. За среќа, ова е многу забавно!\nНајдобро е да се земе рачен GPS-уред. Пронајдете некој регион кој сè уште не е на картата. Прошетајте по улиците, или извозете ги на велосипед, држајќи го уредот вклучен. По пат запишувајте ги имињата на улиците, и сето она што ве интересира (ресторани? цркви?).\n\nКога ќе дојдете дома, вашиот GPS-уред ќе содржи т.н. „записник на траги“ (tracklog) кој има евиденција за секаде кадешто сте биле. Потоа ова можете да го подигнете на OpenStreetMap.\n\nНајдобриот вид на GPS-уред е оној што запишува често (на секоја секунда-две) и има големо памтење. Голем дел од нашите картографи користат рачни Garmin апарати, или Bluetooth-уреди. На нашето вики ќе најдете подробни анализа на GPS-уреди\n\nПодигање на патеката\nСега ќе треба да ја префрлите трагата од GPS-уредот. Можеби уредот има своја програмска опрема, или пак од него поже да се копираат податотеки предку USB. Ако не може, пробајте го GPSBabel. Како и да е, податотеката во секој случај треба да биде во GPX формат.\n\nПотоа одете на „GPS траги“ и подигнете ја трагата на OpenStreetMap. Но ова е само првиот чекор - трагата сè уште нема да се појави на картата. Морате самите да ги нацртате и именувате улиците, следејќи ја трагата.\nКористење на трагата\nПронајдете ја вашата подигната трага во списокот на „GPS траги“ и кликнете на „уреди“ веднаш до неа. Potlatch ќе започне со оваа вчитана трага, плус ако има патни точки. Сега можете да цртате!\n\nМожете и да кликнете на ова копче за да ви се прикажат GPS трагите на сите корисници (но не патните точки) за тековниот реон. Држете Shift за да се прикажат само вашите траги.\nКористење на сателитски слики\nНе грижете се ако немате GPS-уред. Во некои градови имаме сателитски фотографии врз кои можете да цртате, добиени со поддршка од Yahoo! (благодариме!). Излезете и запишете ги имињата на улиците, па вратете се и исцртајте ги линиите врз нив.\n\nДоколку не гледате сателитски слики, кликнете на копчето за прилагодувања и проверете дали е одбрано „Yahoo!“ Ако сè уште не ги гледате, тогаш веројатно такви слики се недостапни за вашиот град, или пак треба малку да оддалечите.\n\nНа истово копче за прилагодувања има и други избори како карти на Британија со истечени права и OpenTopoMap. Сите тие се специјално избрани бидејќи ни е дозволено да ги користиме- не копирајте ничии карти и воздушни фотографии (Законите за авторски права се за никаде.)\n\nПонекогаш сателитските слики се малку разместени од фактичката локација на патиштата. Ако наидете на ова, држете го Space и влечете ја позадината додека не се порамнат. Секогаш имајте доверба во GPS трагите, а не сателитските слики.\n\nЦртање патишта\nЗа да нацртате пат почнувајќи од празен простор на картата, само кликнете таму; потоа на секоја точка на патот. Кога сте готови, кликнете два пати или притиснете Enter - потоа кликнете на некое друго место за да го одизберете патот.\n\nЗа да нацртате пат почнувајќи од друг пат, кликнете на патот за да го изберете; неговите точки ќе станат црвени. Држете Shift и кликнете на една од нив за да започнете нов пат од таа точка. (Ако нема црвена точка на крстосницата, направете Shift-клик за да се појави кадешто сакате!)\n\nКликнете на „Зачувај“ (најдолу-десно) кога сте готови. Зачувувајте често, во случај да се јават проблеми со опслужувачот.\n\nНе очекувајте промените веднаш да се појават на главната карта. За ова треба да поминат час-два, а во некои случаи и до една недела.\nПравење крстосници\nМногу е важно патиштата да имаат заедничка точка („јазол“) кадешто се среќаваат. Ова им служи на корисниците кои планираат пат за да знаат каде да свртат.\n\nPotlatch се грижи за ова доколку внимателно кликнете точно на патот кој го сврзувате. Гледајте ги олеснителните знаци: точките светнуваат сино, курсорот се менува, и кога сте готови, точката на крстосницата има црна контура.\nПоместување и бришење\nОва работи баш како што се би се очекувало. За да избришете точка, одберете ја и притиснете на Delete. За да избришете цел еден пат, притиснете Shift-Delete.\n\nЗа да поместите нешто, само повлечете го. (Ќе треба да кликнете и да подржите малку пред да влечете. Со ова се избегнуваат ненамерни поместувања.)\nПонапредно цртање\nАко два дела од еден пат имаат различни имиња, ќе треба да ги раздвоите. Кликнете на патот; потоа кликнете во точката кадешто сакате да го раздвоите, и кликнете на ножиците. (Можете да спојувате патишта со Control, или копчето со јаболко на Мекинтош, но не спојувајте два пата со различни имиња или типови.)\n\nКружните текови се многу тешки за цртање. Но за тоа помага самиот Potlatch. Нацртајте го кругот грубо, само внимавајте да ги споите краевите (т.е. да биде круг), и кликнете на „подреди“. (Ова се користи и за исправање на патишта.)\nТочки од интерес (POI)\nПрвото нешто што го научивте е како да влечете и пуштате точка од интерес. Можете и самите да правите вакви точки со двојно кликнување на картата: ќе се појави зелено кругче. Но како ќе знаеме дали се работи за ресторан, црква или нешто друго? Кликнете на „Означување“ погоре за да дознаете!\n\nКој вид на пат е тоа?\nШтом ќе нацртате пат, треба да назначите што е. Дали е главна магистрала, пешачка патека или река? Како се вика? Има ли некои посебни правила (на пр. „забрането велосипеди“)?\n\nВо OpenStreetMap ова го запишувате со „ознаки“. Ознаката има два дела, и можете да користите колку што сакате ознаки. На пример, можете да додадете i>highway | trunk за да назначите дека ова е главен магистрален пат; highway | residential за пат во населба; or highway | footway за пешачка патека. If bikes were banned, you could then add bicycle | no. Потоа, за да го запишете името, додајте name | Партизански Одреди.\n\nОзнаките на Potlatch се појавуваат најдолу на екранот - кликнете на постоечка улица, и ќе видите каква ознака има. Кликете на знакот „+“ (најдолу-десно) за да додадете нова ознака. Секоја ознака има „x“ со што можете да ја избришете.\n\nМожете да означувате цели патишта; точки на патишта (можеби порта или семафори); и точки од интерес.\nКористење на зададени ознаки\nЗа да ви помогне да започнете, Potlatch ви нуди готови, најпопуларни ознаки.\n\nОдберете го патот, па кликајте низ симболите додека не најдете соодветен. Потоа изберете ја најсоодветната можност од менито.\n\nСо ова се пополнуваат ознаките. Некои ќе останат делумно празни за да можете да впишете (на пример) име на улицата и број\nЕднонасочни патишта\nВи препорачуваме да додадете ознака за еднонасочни улици како oneway | yes - но како да познаете во која насока? Најдолу-лево има стрелка која го означува правецот напатот, од почеток до крај. Кликнете на неа за да ја свртите обратно.\nИзбор на ваши сопствени ознаки\nСекако, не сте ограничени само на зададените ознаки. Користете го копчето „+“ за да користите какви што сакате ознаки.\n\nМожете да видите какви ознаки користат другите на OSMdoc, а имаме и долг список на популарни ознаки на нашето вики нареченаЕлементи. Но тие се само предлози, а не правила. Најслободно измислувајте си свои ознаки или преземајте од други корисници.\n\nБидејќи податоците од OpenStreetMap се користат за изработување на различни карти, секоја карта прикажува свој избор од ознаки.\nРелации\nПонекогаш не се доволни само ознаки, па ќе треба да „групирате“ два или повеќе пата. Можеби вртењето од една улица во друга е забрането, или пак 20 патеки заедно сочиннуваат означена велосипедска патека. Ова се прави во напредното мени „релации“. Дознајте повеќе на викито.\n\nВраќање грешки\nОва е копчето за враќање (може и со стискање на Z) - ова ќе го врати последното нешто кое сте го направиле.\n\nМожете да „вратите“ претходно зачувана верзија на еден пат или точка. Одберете ја, па кликнете на нејзиниот ид. бр. (бројот најдолу-лево) - или притиснете на H (за „историја“). Ќе видите список на која се наведува кој ја уредувал и кога. Одберете ја саканата верзија, и стиснете на „Врати“.\n\nДоколку сте избришале пат по грешка и сте зачувале, притиснете U (за да вратите). Ќе се појават сите избришани патишта. Одберете го саканиот пат; отклучете го со кликнување на катанчето; и зачувајте.\n\nМислите дека некој друг корисник направил грешка? Испратете му пријателска порака. Користете ја историјата (H) за да му го изберете името, па кликнете на „Пошта“\n\nКористете го Инспекторот (во менито „Напредно“) за корисни информации за моменталниот пат или точка.\nЧПП\nКако да ги видам моите патни точки?\nПатните точки се појавуваат само ако кликнете на „уреди“ до името на трагата во „GPS траги“. Податотеката мора да има и патни точки и запис на трагата - опслужувачот не пропушта податотеки кои имаат само патни точки.\n\nПовеќе ЧПП за Potlatch и OpenStreetMap.\n\n\n\nПобрзо работење\nШто повеќе оддалечувате, тоа повеќе податоци мора да вчита Potlatch. Приближете пред да стиснете на „Уреди“\n\nИсклучете го „Користи курсори „молив“ и „рака““ (во прозорецот за прилагодување) за да добиете максимална брзина.\n\nАко опслужувачот работи бавно, вратете се подоцна. Проверете го викито за да проверите познати проблеми. Некои термини како недела навечер се секогаш оптоварени.\n\nКажете му на Potlatch да ги запамти вашите омилени комплети со ознаки. Одберете пат или точка со тие ознаки, па притиснете на Ctrl, Shift и на број од 1 до 9. Потоа за повторно да ги користите тие ознаки, само притиснете Shift и тој број. (Ќе се паметат секојпат кога го користите Potlatch на овој сметач.)\n\nПретворете ја вашата GPS трага во пат со тоа што ќе ја пронајдете на списокот „GPS траги“ и ќе кликнете на „уреди“ до неа, а потоа на кутивчето „претвори“. Трагата ќе се заклучи (црвено), затоа не зачувувајте. Најпрвин уредете ја, па кликнете на катанчето (најдолу-десно) за да ја отклучите кога сте спремни да ја зачувате.\n\nШто да кликате\nВлечете ја картата за да се движите наоколу.\nДвоен клик за да направите нова точка од интерес (POI).\nКликнете еднап за да започнете нов пат.\nДржете и влечете пат или точка од интерес (POI) за да ги поместите.\nКога цртате пат\nДвоен клик или Enter за да завршите со цртање.\nКликнете на друг пат за да направите крстосница.\nShift-клик на крајот на друг пат за да споите.\nКога ќе изберете пат\nКликнете на точката за да ја одберете.\nShift-клик на патот за да вметнете нова точка.\nShift-клик на точка за оттаму да започнете нов пат.\nCtrl-клик на друг пат за спојување.\n\nТастатурни кратенки\nB Додај позадинска изворна ознака\nC Затвори измени\nG Прикажи GPS траги\nH Прикажи историја\nI Прикажи инспектор\nJ сврзи точка за вкрстени патишта\n(+Shift) Unjoin from other ways\nK Заклучи/отклучи го моментално избраното\nL Прикажи моментална географска должина\nM Зголеми уредувачки прозорец\nP Создај паралелен пат\nR Повтори ги ознаките\nS Зачувај (освен ако не е во живо)\nT Подреди во права линија/круг\nU Врати избришано (прикажи избришани патишра)\nX Пресечи пат на две\nZ Врати\n- Отстрани точка само од овој пат\n+ Додај нова ознака\n/ Избор на друг пат со истава точка\nDelete Избриши точка\n (+Shift) Избриши цел пат\nEnter Заврши со цртање на линијата\nSpace Држи и влечи позадина\nEsc Откажи го ова уредување; превчитај од опслужувачот \n0 Отстрани ги сите ознаки\n1-9 Избор на зададени ознаки\n (+Shift) Избери запамтени ознаки\n (+S/Ctrl) Запамти ознаки\n§ или ` Кружи помеѓу групи ознаки\n\n" + help_html: "Добредојдовте во Potlatch\nPotlatch е уредник на OpenStreetMap кој е лесен за употреба. Цртајте патишта, знаменитости, споменици и продавници од вашите GPS податоци, сателитски слики или стари карти.\n\nОвие страници за помош ќе ве запознаат со основите на користење на Potlatch, и ќе ви покажат каде можете да дознаете повеќе. Кликнете на насловите погоре за да почнете.\n\nЗа да излезете, кликнете било каде вон прозорецов.\n\n\n\nКорисно да се знае\nНе копирајте од други карти!\n\nАко изберете „Уредување во живо“, сите промени кои ќе ги направите одат на базата додека ги цртате - т.е. веднаш. Ако не сте толку сигурни во промените, одберете „Уредување со зачувување“, и така промените ќе се појават дури кога ќе стиснете на „Зачувај“.\n\nСите направени уредувања ќе се покажат по час-два (на неколку посложени работи им треба една недела). На картата не е прикажано сè - тоа би бил голем неред. Бидејќи податоците на OpenStreetMap се отворен извор, другите корисници слободно прават карти на кои се прикажани различни аспекти - како OpenCycleMap (Отворена велосипедска карта) или Midnight Commander.\n\nЗапомнете дека ова е и убава карта (затоа цртајте убави криви линии за кривините), но и дијаграм (затоа проверувајте дека патиштата се среќаваат на крстосници) .\n\nДали ви споменавме дека не смее да се копира од други карти?\n\n\nДознајте повеќе\nPotlatch прирачник\nПоштенски списоци\nРазговори (помош во живо)\nФорум\nВики на заедницата\nИзворен код на Potlatch\n\n\n\nКако да почнете\nСега Potlatch ви е отворен. Кликнете на „Уреди и зачувај“ за да почнете\n\nЗначи спремни сте да нацртате карта. Најлесно е да се почне со поставење на точки од интерес на картата (POI). Овие можат да бидат ресторани, цркви, железнички станици...сè што сакате.\n\nВлечење и пуштање\nЗа да ви олесниме, ги поставивме најчестите видови на точки од интерес (POI), на дното од картата. На картата се ставаат со нивно повлекување и пуштање на саканото место. И не грижете се ако не сте го погодиле местото од прв пат: можете точките да повлекувате повторно, сè додека не ја наместите секоја точка кадешто сакате.\n\nКога сте готови со тоа, ставете му име на ресторанот (или црквата, станицата итн.) На дното ќе се појави мала табела. Една од ставките ќе биде „име“, и до него „(тука внесете име)“. Кликнете на тој текст и впишете го името.\n\nКликнете другде на картата за да го одизберете вашата точка од интерес (POI), и така ќе се врати малиот шарен правоаголник.\n\nЛесно е, нели? Кликнете на „Зачувај“ (најдолу-десно) кога сте готови.\nДвижење по картата\nЗа да отидете на друг дел од картата, само повлечете празен простор. Potlatch автоматски ќе вчита нови податоци (гледајте најгоре-десно)\n\nВи рековме да „Уредите и зачувате“, но можете и да кликнете на „Уредување во живо“. Под овој режим промените одат право во базата, и затоа нема копче „Зачувај“. Ова е добро за брзи промени и картографски акции.\n\nСледни чекори\nЗадоволни сте од досегашното? Одлично. Кликнете на „Истражување“ погоре за да дознаете како да бидете вистински картограф!\n\nИстражување со GPS\nИдејата позади OpenStreetMap е создавање на карта без ограничувачките авторски права кои ги имаат други карти. Ова значи дека овдешните карти не можете да ги копирате од никаде: морате самите да ги истражите улиците. За среќа, ова е многу забавно!\nНајдобро е да се земе рачен GPS-уред. Пронајдете некој регион кој сè уште не е на картата. Прошетајте по улиците, или извозете ги на велосипед, држајќи го уредот вклучен. По пат запишувајте ги имињата на улиците, и сето она што ве интересира (ресторани? цркви?).\n\nКога ќе дојдете дома, вашиот GPS-уред ќе содржи т.н. „записник на траги“ (tracklog) кој има евиденција за секаде кадешто сте биле. Потоа ова можете да го подигнете на OpenStreetMap.\n\nНајдобриот вид на GPS-уред е оној што запишува често (на секоја секунда-две) и има големо памтење. Голем дел од нашите картографи користат рачни Garmin апарати, или Bluetooth-уреди. На нашето вики ќе најдете подробни анализа на GPS-уреди\n\nПодигање на патеката\nСега ќе треба да ја префрлите трагата од GPS-уредот. Можеби уредот има своја програмска опрема, или пак од него поже да се копираат податотеки предку USB. Ако не може, пробајте го GPSBabel. Како и да е, податотеката во секој случај треба да биде во GPX формат.\n\nПотоа одете на „GPS траги“ и подигнете ја трагата на OpenStreetMap. Но ова е само првиот чекор - трагата сè уште нема да се појави на картата. Морате самите да ги нацртате и именувате улиците, следејќи ја трагата.\nКористење на трагата\nПронајдете ја вашата подигната трага во списокот на „GPS траги“ и кликнете на „уреди“ веднаш до неа. Potlatch ќе започне со оваа вчитана трага, плус ако има патни точки. Сега можете да цртате!\n\nМожете и да кликнете на ова копче за да ви се прикажат GPS трагите на сите корисници (но не патните точки) за тековниот реон. Држете Shift за да се прикажат само вашите траги.\nКористење на сателитски слики\nНе грижете се ако немате GPS-уред. Во некои градови имаме сателитски фотографии врз кои можете да цртате, добиени со поддршка од Yahoo! (благодариме!). Излезете и запишете ги имињата на улиците, па вратете се и исцртајте ги линиите врз нив.\n\nДоколку не гледате сателитски слики, кликнете на копчето за прилагодувања и проверете дали е одбрано „Yahoo!“ Ако сè уште не ги гледате, тогаш веројатно такви слики се недостапни за вашиот град, или пак треба малку да оддалечите.\n\nНа истово копче за прилагодувања има и други избори како карти на Британија со истечени права и OpenTopoMap. Сите тие се специјално избрани бидејќи ни е дозволено да ги користиме- не копирајте ничии карти и воздушни фотографии (Законите за авторски права се за никаде.)\n\nПонекогаш сателитските слики се малку разместени од фактичката местоположба на патиштата. Ако наидете на ова, држете го Space и влечете ја позадината додека не се порамнат. Секогаш имајте доверба во GPS трагите, а не сателитските слики.\n\nЦртање патишта\nЗа да нацртате пат почнувајќи од празен простор на картата, само кликнете таму; потоа на секоја точка на патот. Кога сте готови, кликнете два пати или притиснете Enter - потоа кликнете на некое друго место за да го одизберете патот.\n\nЗа да нацртате пат почнувајќи од друг пат, кликнете на патот за да го изберете; неговите точки ќе станат црвени. Држете Shift и кликнете на една од нив за да започнете нов пат од таа точка. (Ако нема црвена точка на крстосницата, направете Shift-клик за да се појави кадешто сакате!)\n\nКликнете на „Зачувај“ (најдолу-десно) кога сте готови. Зачувувајте често, во случај да се јават проблеми со опслужувачот.\n\nНе очекувајте промените веднаш да се појават на главната карта. За ова треба да поминат час-два, а во некои случаи и до една недела.\nПравење крстосници\nМногу е важно патиштата да имаат заедничка точка („јазол“) кадешто се среќаваат. Ова им служи на корисниците кои планираат пат за да знаат каде да свртат.\n\nPotlatch се грижи за ова доколку внимателно кликнете точно на патот кој го сврзувате. Гледајте ги олеснителните знаци: точките светнуваат сино, курсорот се менува, и кога сте готови, точката на крстосницата има црна контура.\nПоместување и бришење\nОва работи баш како што се би се очекувало. За да избришете точка, одберете ја и притиснете на Delete. За да избришете цел еден пат, притиснете Shift-Delete.\n\nЗа да поместите нешто, само повлечете го. (Ќе треба да кликнете и да подржите малку пред да влечете. Со ова се избегнуваат ненамерни поместувања.)\nПонапредно цртање\nАко два дела од еден пат имаат различни имиња, ќе треба да ги раздвоите. Кликнете на патот; потоа кликнете во точката кадешто сакате да го раздвоите, и кликнете на ножиците. (Можете да спојувате патишта со Control, или копчето со јаболко на Мекинтош, но не спојувајте два пата со различни имиња или типови.)\n\nКружните текови се многу тешки за цртање. Но за тоа помага самиот Potlatch. Нацртајте го кругот грубо, само внимавајте да ги споите краевите (т.е. да биде круг), и кликнете на „подреди“. (Ова се користи и за исправање на патишта.)\nТочки од интерес (POI)\nПрвото нешто што го научивте е како да влечете и пуштате точка од интерес. Можете и самите да правите вакви точки со двојно кликнување на картата: ќе се појави зелено кругче. Но како ќе знаеме дали се работи за ресторан, црква или нешто друго? Кликнете на „Означување“ погоре за да дознаете!\n\nКој вид на пат е тоа?\nШтом ќе нацртате пат, треба да назначите што е. Дали е главна магистрала, пешачка патека или река? Како се вика? Има ли некои посебни правила (на пр. „забрането велосипеди“)?\n\nВо OpenStreetMap ова го запишувате со „ознаки“. Ознаката има два дела, и можете да користите колку што сакате ознаки. На пример, можете да додадете i>highway | trunk за да назначите дека ова е главен магистрален пат; highway | residential за пат во населба; or highway | footway за пешачка патека. If bikes were banned, you could then add bicycle | no. Потоа, за да го запишете името, додајте name | Партизански Одреди.\n\nОзнаките на Potlatch се појавуваат најдолу на екранот - кликнете на постоечка улица, и ќе видите каква ознака има. Кликете на знакот „+“ (најдолу-десно) за да додадете нова ознака. Секоја ознака има „x“ со што можете да ја избришете.\n\nМожете да означувате цели патишта; точки на патишта (можеби порта или семафори); и точки од интерес.\nКористење на зададени ознаки\nЗа да ви помогне да започнете, Potlatch ви нуди готови, најпопуларни ознаки.\n\nОдберете го патот, па кликајте низ симболите додека не најдете соодветен. Потоа изберете ја најсоодветната можност од менито.\n\nСо ова се пополнуваат ознаките. Некои ќе останат делумно празни за да можете да впишете (на пример) име на улицата и број\nЕднонасочни патишта\nВи препорачуваме да додадете ознака за еднонасочни улици како oneway | yes - но како да познаете во која насока? Најдолу-лево има стрелка која го означува правецот напатот, од почеток до крај. Кликнете на неа за да ја свртите обратно.\nИзбор на ваши сопствени ознаки\nСекако, не сте ограничени само на зададените ознаки. Користете го копчето „+“ за да користите какви што сакате ознаки.\n\nМожете да видите какви ознаки користат другите на OSMdoc, а имаме и долг список на популарни ознаки на нашето вики нареченаЕлементи. Но тие се само предлози, а не правила. Најслободно измислувајте си свои ознаки или преземајте од други корисници.\n\nБидејќи податоците од OpenStreetMap се користат за изработување на различни карти, секоја карта прикажува свој избор од ознаки.\nРелации\nПонекогаш не се доволни само ознаки, па ќе треба да „групирате“ два или повеќе пата. Можеби вртењето од една улица во друга е забрането, или пак 20 патеки заедно сочиннуваат означена велосипедска патека. Ова се прави во напредното мени „релации“. Дознајте повеќе на викито.\n\nВраќање грешки\nОва е копчето за враќање (може и со стискање на Z) - ова ќе го врати последното нешто кое сте го направиле.\n\nМожете да „вратите“ претходно зачувана верзија на еден пат или точка. Одберете ја, па кликнете на нејзиниот ид. бр. (бројот најдолу-лево) - или притиснете на H (за „историја“). Ќе видите список на која се наведува кој ја уредувал и кога. Одберете ја саканата верзија, и стиснете на „Врати“.\n\nДоколку сте избришале пат по грешка и сте зачувале, притиснете U (за да вратите). Ќе се појават сите избришани патишта. Одберете го саканиот пат; отклучете го со кликнување на катанчето; и зачувајте.\n\nМислите дека некој друг корисник направил грешка? Испратете му пријателска порака. Користете ја историјата (H) за да му го изберете името, па кликнете на „Пошта“\n\nКористете го Инспекторот (во менито „Напредно“) за корисни информации за моменталниот пат или точка.\nЧПП\nКако да ги видам моите патни точки?\nПатните точки се појавуваат само ако кликнете на „уреди“ до името на трагата во „GPS траги“. Податотеката мора да има и патни точки и запис на трагата - опслужувачот не пропушта податотеки кои имаат само патни точки.\n\nПовеќе ЧПП за Potlatch и OpenStreetMap.\n\n\n\nПобрзо работење\nШто повеќе оддалечувате, тоа повеќе податоци мора да вчита Potlatch. Приближете пред да стиснете на „Уреди“\n\nИсклучете го „Користи курсори „молив“ и „рака““ (во прозорецот за прилагодување) за да добиете максимална брзина.\n\nАко опслужувачот работи бавно, вратете се подоцна. Проверете го викито за да проверите познати проблеми. Некои термини како недела навечер се секогаш оптоварени.\n\nКажете му на Potlatch да ги запамти вашите омилени комплети со ознаки. Одберете пат или точка со тие ознаки, па притиснете на Ctrl, Shift и на број од 1 до 9. Потоа за повторно да ги користите тие ознаки, само притиснете Shift и тој број. (Ќе се паметат секојпат кога го користите Potlatch на овој сметач.)\n\nПретворете ја вашата GPS трага во пат со тоа што ќе ја пронајдете на списокот „GPS траги“ и ќе кликнете на „уреди“ до неа, а потоа на кутивчето „претвори“. Трагата ќе се заклучи (црвено), затоа не зачувувајте. Најпрвин уредете ја, па кликнете на катанчето (најдолу-десно) за да ја отклучите кога сте спремни да ја зачувате.\n\nШто да кликате\nВлечете ја картата за да се движите наоколу.\nДвоен клик за да направите нова точка од интерес (POI).\nКликнете еднап за да започнете нов пат.\nДржете и влечете пат или точка од интерес (POI) за да ги поместите.\nКога цртате пат\nДвоен клик или Enter за да завршите со цртање.\nКликнете на друг пат за да направите крстосница.\nShift-клик на крајот на друг пат за да споите.\nКога ќе изберете пат\nКликнете на точката за да ја одберете.\nShift-клик на патот за да вметнете нова точка.\nShift-клик на точка за оттаму да започнете нов пат.\nCtrl-клик на друг пат за спојување.\n\nТастатурни кратенки\nB Додај позадинска изворна ознака\nC Затвори измени\nG Прикажи GPS траги\nH Прикажи историја\nI Прикажи инспектор\nJ сврзи точка за вкрстени патишта\n(+Shift) Unjoin from other ways\nK Заклучи/отклучи го моментално избраното\nL Прикажи моментална географска должина\nM Зголеми уредувачки прозорец\nP Создај паралелен пат\nR Повтори ги ознаките\nS Зачувај (освен ако не е во живо)\nT Подреди во права линија/круг\nU Врати избришано (прикажи избришани патишра)\nX Пресечи пат на две\nZ Врати\n- Отстрани точка само од овој пат\n+ Додај нова ознака\n/ Избор на друг пат со истава точка\nDelete Избриши точка\n (+Shift) Избриши цел пат\nEnter Заврши со цртање на линијата\nSpace Држи и влечи позадина\nEsc Откажи го ова уредување; превчитај од опслужувачот \n0 Отстрани ги сите ознаки\n1-9 Избор на зададени ознаки\n (+Shift) Избери запамтени ознаки\n (+S/Ctrl) Запамти ознаки\n§ или ` Кружи помеѓу групи ознаки\n\n" hint_drawmode: кликнете за да додадете точка,\nдвоен клик/Ентер\nза да ја завршите линијата hint_latlon: "Г.Ш. $1\nГ.Д. $2" hint_loading: вчитувам податоци diff --git a/config/potlatch/locales/pt-BR.yml b/config/potlatch/locales/pt-BR.yml index b91391f2a..4946784bb 100644 --- a/config/potlatch/locales/pt-BR.yml +++ b/config/potlatch/locales/pt-BR.yml @@ -2,6 +2,7 @@ # Exported from translatewiki.net # Export driver: syck # Author: BraulioBezerra +# Author: Giro720 # Author: Luckas Blade # Author: Nighto # Author: Rodrigo Avila @@ -197,7 +198,7 @@ pt-BR: prompt_manyways: Esta área contém muitos detalhes e demorará muito para carregar. Você prefere aproximar? prompt_microblog: Enviando para $1 ($2 restantes) prompt_revertversion: "Reverter para versão anterior:" - prompt_savechanges: Salvar mudanças + prompt_savechanges: Salvar alterações prompt_taggedpoints: Alguns pontos tem etiquetas ou pertencem a uma relação. Quer realmente apagá-los? prompt_track: Converta a sua trilha GPS para caminhos (trancados) a serem editados. prompt_unlock: Clique para desbloquear diff --git a/config/potlatch/locales/ru.yml b/config/potlatch/locales/ru.yml index 76c517314..36b050bdd 100644 --- a/config/potlatch/locales/ru.yml +++ b/config/potlatch/locales/ru.yml @@ -173,7 +173,7 @@ ru: preset_icon_parking: Стоянка preset_icon_pharmacy: Аптека preset_icon_place_of_worship: Место поклонения - preset_icon_police: Милиция, полицейский участок + preset_icon_police: Полицейский участок preset_icon_post_box: Почтовый ящик preset_icon_pub: Пивная preset_icon_recycling: Мусорный контейнер diff --git a/config/potlatch/locales/rue.yml b/config/potlatch/locales/rue.yml new file mode 100644 index 000000000..6a123e9a2 --- /dev/null +++ b/config/potlatch/locales/rue.yml @@ -0,0 +1,155 @@ +# Messages for Rusyn (Русиньскый) +# Exported from translatewiki.net +# Export driver: syck +# Author: Gazeb +rue: + a_poi: $1 обєкту (POI) + a_way: $1 лінію + action_changeway: зміны в лінії + action_createpoi: створїня обєкту (POI) + action_insertnode: придаваня узла до лінії + action_mergeways: злучіня двох ліній + action_movepoi: пересуваня обєкту (POI) + action_moveway: пересуваня лінії + action_pointtags: наставлїня таґів на точку + action_reverseway: зміна напрямкы лінії + action_revertway: навернутя лінії + action_waytags: наставлїня таґів на лінію + advanced: Росшырене + advanced_close: Заперти саду змін + advanced_history: Історія лінії + advanced_inspector: Іншпектор + advanced_maximise: Максімалізовати окно + advanced_minimise: Мінімалізовати окно + advanced_parallel: Паралелна лінія + advanced_undelete: Обновити + advice_deletingpoi: Вымазаня обєкту (POI) (Z про зрушіня) + advice_deletingway: Вымазаня лінії (Z про зрушіня) + advice_revertingway: Навернутя до послїднёй уложеной лінії (Z про назад) + advice_toolong: Дуже довге про одомкнутя - просиме роздїльте до куртшых ліній + advice_uploadsuccess: Вшыткы дата успішно награты на сервер + cancel: Зрушыти + closechangeset: Заперти саду змін + conflict_poichanged: Потім, як сьте зачали едітованя, хтось змінив точку $1$2. + conflict_relchanged: Потім, як сьте зачали едітованя, хтось змінив звязок $1$2. + conflict_visitway: Стисните 'ОК', про вказаня лінії. + conflict_waychanged: Потім, як сьте зачали едітованя, хтось змінив лінію $1$2. + createrelation: Створити новый звязок + custom: "Шпеціалный:" + delete: Вымазати + editinglive: Едітованя нажыво + error_microblog_long: "Посыланя до $1 неможне:\nHTTP код: $2\nХыбове повідомлїня: $3\n$1 жыба: $4" + error_nopoi: Обєкт (POI) ся не нашов (може сьте посунули мапу?) — не дасть ся вернути назад. + error_nosharedpoint: Лінії $1 і $2 в сучасности не мають сполочну точку, также ся не можу вернути назад. + heading_drawing: Креслїня + heading_introduction: Вступ + heading_troubleshooting: Рїшіня проблему + help: Поміч + hint_drawmode: придайте точку кликнутём\nдвойклик/Enter\nукончіть лінію + hint_latlon: "шыр $1\nдов $2" + hint_overpoint: над точков ($1)\nкликнутём лінію напоїте + hint_pointselected: точка выбрана\n(Shift-ЛК на точці\nзачне нову лінію) + hint_saving: уложіня дат + inspector: Іншпектор + inspector_duplicate: Дуплікат + inspector_in_ways: В лініях + inspector_latlon: "Шыр $1\nДов $2" + inspector_locked: Замкнуто + inspector_node_count: ($1 раз) + inspector_unsaved: Неуложене + inspector_uploading: (награваня) + inspector_way_connects_to_principal: Споює з $1 $2 і $3 іншыма $4 + inspector_way_nodes: $1 узлы + loading: Награваня... + login_pwd: "Гесло:" + login_retry: Ваше мено хоснователя не было розознане, Спробуйте іщі раз. + login_title: Не годен войти + login_uid: "Мено хоснователя:" + mail: Е.пошта + more: Іщі + "no": Нїт + nobackground: Без позадя + offset_broadcanal: Набережна шырокого каналу + offset_choose: Выбер офсету (м) + offset_motorway: Автомаґістрала (D3) + offset_narrowcanal: Набережна узкого каналу + ok: Най буде + openchangeset: Отворям саду змін + option_layer_cycle_map: OSM — цікло-мапа + option_layer_maplint: OSM — Maplint (хыбы) + option_layer_nearmap: "Австралія: NearMap" + option_layer_ooc_25k: "В.БРІТАНІЯ істор.: 1:25k" + option_layer_ooc_7th: "В.БРІТАНІЯ істор.: 1:7000" + option_layer_ooc_npe: "В.БРІТАНІЯ істор.: NPE" + option_layer_os_streetview: "В.БРІТАНІЯ: OS StreetView" + option_layer_streets_haiti: "Гаїті: назвы уліць" + option_layer_surrey_air_survey: "UK: Surrey Air Survey" + option_layer_tip: Выберте позадя + option_photo: "Фото KML:" + option_thinareas: Тонкы лінії про поліґоны + option_thinlines: Тонкы лінії у вшыткых мірках мап + option_tiger: Вказати незміненый TIGER + option_warnings: Вказати плаваючі варованя + point: Точка + preset_icon_airport: Летїско + preset_icon_bar: Бар + preset_icon_bus_stop: Автобусова заставка + preset_icon_cafe: Кафе + preset_icon_cinema: Кіно + preset_icon_disaster: Будова на Гаїті + preset_icon_fast_food: Швыдка страва + preset_icon_ferry_terminal: Паром + preset_icon_fire_station: Пожарна станіця + preset_icon_hospital: Шпыталь + preset_icon_hotel: Готел + preset_icon_museum: Музей + preset_icon_parking: Паркованя + preset_icon_pharmacy: Лїкарня + preset_icon_police: Поліція + preset_icon_post_box: Поштова схранка + preset_icon_pub: Корчма + preset_icon_recycling: Кош на смітя + preset_icon_restaurant: Рештаврація + preset_icon_school: Школа + preset_icon_station: Желїзнічна станіця + preset_icon_supermarket: Супермаркет + preset_icon_taxi: Таксі + preset_icon_telephone: Телефон + preset_icon_theatre: Театр + preset_tip: Выберте з меню шаблонів теаів, пописанім в $1 + prompt_addtorelation: Придати $1 до звязку + prompt_changesetcomment: "Опиште вашы зміны:" + prompt_closechangeset: Заперти саду змін $1 + prompt_createparallel: Створїня паралелной лінії + prompt_editlive: Едітованя нажыво + prompt_helpavailable: Новый хоснователь? Поміч найдете вправо долов. + prompt_launch: Отворити екстерну URL + prompt_manyways: Тота область є дуже подробна і буде довго єй награвати. Преферуєте приближыти єй? + prompt_revertversion: "Вернути ся ку скоре уложеній верзії:" + prompt_savechanges: Уложыти зміны + prompt_taggedpoints: Дакоры точкы на тій лінії мають таґы. Справды змазати? + prompt_welcome: Вітайте на OpenStreetMap! + retry: Повтор + revert: Вернути назад + save: Уложыти + tags_descriptions: Опис '$1' + tags_findatag: Найти таґ + tags_findtag: Найти таґ + tags_matching: Популарны таґы згодны з "$1" + tip_anticlockwise: Проти дразї годіновой ручкы (кликнутём зміните напрямку) + tip_clockwise: По дразї годіновой ручкы (кликнутём зміните напрямку) + tip_direction: Напрямок лінії — змінити на протилежный + tip_options: Можности (выберте собі мапу про позадя) + tip_photo: Награти фото + tip_repeattag: Наставити таґы передтым выбраной лінії(R) + tip_tidy: Вырівнати точкы у лінії (Т) + tip_undo: "Назад: $1 (Z)" + uploading: Награваня... + uploading_deleting_pois: Змазаня (POI) + uploading_deleting_ways: Змазаня ліній + uploading_poi: Награваня (POI) $1 + uploading_poi_name: Награваня (POI) $1, $2 + uploading_way_name: Награваня лінії $1, $2 + warning: Позір! + way: Лінія + "yes": Гей diff --git a/config/routes.rb b/config/routes.rb index 3cd95c983..e648f2a19 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -62,9 +62,12 @@ ActionController::Routing::Routes.draw do |map| map.connect "api/#{API_VERSION}/user/gpx_files", :controller => 'user', :action => 'api_gpx_files' map.connect "api/#{API_VERSION}/gpx/create", :controller => 'trace', :action => 'api_create' - map.connect "api/#{API_VERSION}/gpx/:id/details", :controller => 'trace', :action => 'api_details' - map.connect "api/#{API_VERSION}/gpx/:id/data", :controller => 'trace', :action => 'api_data' - map.connect "api/#{API_VERSION}/gpx/:id/data.:format", :controller => 'trace', :action => 'api_data' + map.connect "api/#{API_VERSION}/gpx/:id", :controller => 'trace', :action => 'api_read', :id => /\d+/, :conditions => { :method => :get } + map.connect "api/#{API_VERSION}/gpx/:id", :controller => 'trace', :action => 'api_update', :id => /\d+/, :conditions => { :method => :put } + map.connect "api/#{API_VERSION}/gpx/:id", :controller => 'trace', :action => 'api_delete', :id => /\d+/, :conditions => { :method => :delete } + map.connect "api/#{API_VERSION}/gpx/:id/details", :controller => 'trace', :action => 'api_read', :id => /\d+/ + map.connect "api/#{API_VERSION}/gpx/:id/data", :controller => 'trace', :action => 'api_data', :id => /\d+/ + map.connect "api/#{API_VERSION}/gpx/:id/data.:format", :controller => 'trace', :action => 'api_data', :id => /\d+/ # AMF (ActionScript) API @@ -125,6 +128,8 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/new', :controller => 'user', :action => 'new' map.connect '/user/terms', :controller => 'user', :action => 'terms' map.connect '/user/save', :controller => 'user', :action => 'save' + map.connect '/user/:display_name/confirm/resend', :controller => 'user', :action => 'confirm_resend' + map.connect '/user/:display_name/confirm', :controller => 'user', :action => 'confirm' map.connect '/user/confirm', :controller => 'user', :action => 'confirm' map.connect '/user/confirm-email', :controller => 'user', :action => 'confirm_email' map.connect '/user/go_public', :controller => 'user', :action => 'go_public' @@ -135,7 +140,6 @@ ActionController::Routing::Routes.draw do |map| map.connect '/index.html', :controller => 'site', :action => 'index' map.connect '/edit.html', :controller => 'site', :action => 'edit' map.connect '/export.html', :controller => 'site', :action => 'export' - map.connect '/search.html', :controller => 'way_tag', :action => 'search' map.connect '/login.html', :controller => 'user', :action => 'login' map.connect '/logout.html', :controller => 'user', :action => 'logout' map.connect '/create-account.html', :controller => 'user', :action => 'new' diff --git a/config/wiki_pages.yml b/config/wiki_pages.yml index 0cb7d28f0..8b6b774e7 100644 --- a/config/wiki_pages.yml +++ b/config/wiki_pages.yml @@ -55,6 +55,7 @@ de: man_made: DE:Key:man made maxheight: DE:Key:maxheight maxspeed: DE:Key:maxspeed + maxweight: DE:Key:maxweight military: DE:Key:military mtb:scale: DE:Key:mtb:scale name: DE:Key:name @@ -71,6 +72,7 @@ de: railway: DE:Key:railway route: DE:Key:route sac_scale: DE:Key:sac scale + seamark: DE:Key:seamark service: DE:Key:service shop: DE:Key:shop smoking: DE:Key:smoking @@ -92,15 +94,19 @@ de: amenity=baby_hatch: DE:Tag:amenity=baby hatch amenity=bank: DE:Tag:amenity=bank amenity=bench: DE:Tag:amenity=bench + amenity=bicycle_rental: DE:Tag:amenity=bicycle rental amenity=biergarten: DE:Tag:amenity=biergarten amenity=bus_station: DE:Tag:amenity=bus station amenity=clock: DE:Tag:amenity=clock amenity=compressed_air: DE:Tag:amenity=compressed air amenity=drinking_water: DE:Tag:amenity=drinking water + amenity=emergency_phone: DE:Tag:amenity=emergency phone amenity=fuel: DE:Tag:amenity=fuel amenity=grit_bin: DE:Tag:amenity=grit bin amenity=hospital: DE:Tag:amenity=hospital + amenity=hunting_stand: DE:Tag:amenity=hunting stand amenity=nightclub: DE:Tag:amenity=nightclub + amenity=nursing_home: DE:Tag:amenity=nursing home amenity=parking: DE:Tag:amenity=parking amenity=pharmacy: DE:Tag:amenity=pharmacy amenity=place_of_worship: DE:Tag:amenity=place of worship @@ -108,6 +114,7 @@ de: amenity=pub: DE:Tag:amenity=pub amenity=recycling: DE:Tag:amenity=recycling amenity=register_office: DE:Tag:amenity=register office + amenity=restaurant: DE:Tag:amenity=restaurant amenity=school: DE:Tag:amenity=school amenity=telephone: DE:Tag:amenity=telephone amenity=toilets: DE:Tag:amenity=toilets @@ -117,6 +124,7 @@ de: barrier=lift_gate: DE:Tag:barrier=lift gate boundary=water_protection_area: DE:Tag:boundary=water protection area club-mate=yes: DE:Tag:club-mate=yes + emergency=fire_hydrant: DE:Tag:emergency=fire hydrant highway=bus_stop: DE:Tag:highway=bus stop highway=crossing: DE:Tag:highway=crossing highway=cycleway: DE:Tag:highway=cycleway @@ -148,14 +156,17 @@ de: historic=monastery: DE:Tag:historic=monastery junction=roundabout: DE:Tag:junction=roundabout landuse=allotments: DE:Tag:landuse=allotments - landuse=farm: DE:Tag:landuse=farm + landuse=cemetery: DE:Tag:landuse=cemetery + landuse=farmland: DE:Tag:landuse=farmland landuse=farmyard: DE:Tag:landuse=farmyard landuse=forest: DE:Tag:landuse=forest landuse=meadow: DE:Tag:landuse=meadow landuse=orchard: DE:Tag:landuse=orchard landuse=quarry: DE:Tag:landuse=quarry + landuse=residential: DE:Tag:landuse=residential landuse=village_green: DE:Tag:landuse=village green leisure=dog_park: DE:Tag:leisure=dog park + leisure=garden: DE:Tag:leisure=garden leisure=playground: DE:Tag:leisure=playground leisure=slipway: DE:Tag:leisure=slipway man_made=crane: DE:Tag:man made=crane @@ -164,6 +175,7 @@ de: man_made=pipeline: DE:Tag:man made=pipeline man_made=survey_point: DE:Tag:man made=survey point man_made=wastewater_plant: DE:Tag:man made=wastewater plant + microbrewery=yes: DE:Tag:microbrewery=yes military=bunker: DE:Tag:military=bunker natural=stone: DE:Tag:natural=stone natural=tree: DE:Tag:natural=tree @@ -181,6 +193,7 @@ de: power=tower: DE:Tag:power=tower railway=crossing: DE:Tag:railway=crossing railway=halt: DE:Tag:railway=halt + railway=monorail: DE:Tag:railway=monorail railway=platform: DE:Tag:railway=platform railway=station: DE:Tag:railway=station railway=tram: DE:Tag:railway=tram @@ -220,6 +233,7 @@ en: atv: Key:atv barrier: Key:barrier basin: Key:basin + beacon: Key:beacon bicycle: Key:bicycle boat: Key:boat border_type: Key:border type @@ -227,8 +241,10 @@ en: bridge: Key:bridge building: Key:building bunker_type: Key:bunker type + buoy: Key:buoy capacity: Key:capacity cep: Key:cep + clothes: Key:clothes collection_times: Key:collection times comment: Key:comment construction: Key:construction @@ -245,6 +261,7 @@ en: designation: Key:designation destination: Key:destination direction: Key:direction + disabled: Key:disabled dispensing: Key:dispensing disused: Key:disused drink: Key:drink @@ -260,6 +277,7 @@ en: fenced: Key:fenced fixme: Key:fixme flood_prone: Key:flood prone + fog_signal: Key:fog signal foot: Key:foot ford: Key:ford fuel:discount: Key:fuel:discount @@ -276,18 +294,21 @@ en: internet_access: Key:internet access is_in: Key:is in junction: Key:junction + landmark: Key:landmark landuse: Key:landuse lanes: Key:lanes layer: Key:layer lcn_ref: Key:lcn ref leisure: Key:leisure length: Key:length + light: Key:light lit: Key:lit lit:perceived: Key:lit:perceived lock: Key:lock man_made: Key:man made managed: Key:managed manhole: Key:manhole + maxage: Key:maxage maxairdraft: Key:maxairdraft maxaxleload: Key:maxaxleload maxdraught: Key:maxdraught @@ -301,6 +322,7 @@ en: maxweight: Key:maxweight maxwidth: Key:maxwidth military: Key:military + minage: Key:minage minspeed: Key:minspeed monitoring:glonass: Key:monitoring:glonass monitoring:gps: Key:monitoring:gps @@ -351,6 +373,7 @@ en: route: Key:route sac_scale: Key:sac scale sagns_id: Key:sagns id + seabed_surface: Key:seabed surface seamark: Key:seamark seasonal:snowfall:regaintime: Key:seasonal:snowfall:regaintime service: Key:service @@ -361,12 +384,15 @@ en: snowplowing:category: Key:snowplowing:category source: Key:source sport: Key:sport + stars: Key:stars start_date: Key:start date step_count: Key:step count stop: Key:stop + sub_sea: Key:sub sea sulky: Key:sulky surface: Key:surface tactile_paving: Key:tactile paving + timezone: Key:timezone toll: Key:toll tourism: Key:tourism tracktype: Key:tracktype @@ -409,6 +435,7 @@ en: aeroway=taxiway: Tag:aeroway=taxiway aeroway=terminal: Tag:aeroway=terminal aeroway=windsock: Tag:aeroway=windsock + amenity=architect_office: Tag:amenity=architect office amenity=arts_centre: Tag:amenity=arts centre amenity=atm: Tag:amenity=atm amenity=audiologist: Tag:amenity=audiologist @@ -420,12 +447,14 @@ en: amenity=bicycle_parking: Tag:amenity=bicycle parking amenity=bicycle_rental: Tag:amenity=bicycle rental amenity=biergarten: Tag:amenity=biergarten + amenity=boat_storage: Tag:amenity=boat storage amenity=brothel: Tag:amenity=brothel amenity=bureau_de_change: Tag:amenity=bureau de change amenity=bus_station: Tag:amenity=bus station amenity=cafe: Tag:amenity=cafe amenity=car_rental: Tag:amenity=car rental amenity=car_sharing: Tag:amenity=car sharing + amenity=casino: Tag:amenity=casino amenity=cinema: Tag:amenity=cinema amenity=clock: Tag:amenity=clock amenity=coast_guard: Tag:amenity=coast guard @@ -438,11 +467,10 @@ en: amenity=doctors: Tag:amenity=doctors amenity=drinking_water: Tag:amenity=drinking water amenity=embassy: Tag:amenity=embassy - amenity=emergency_phone: Tag:amenity=emergency phone amenity=fast_food: Tag:amenity=fast food amenity=ferry_terminal: Tag:amenity=ferry terminal - amenity=fire_hydrant: Tag:amenity=fire hydrant amenity=fire_station: Tag:amenity=fire station + amenity=food_court: Tag:amenity=food court amenity=fountain: Tag:amenity=fountain amenity=fuel: Tag:amenity=fuel amenity=grave_yard: Tag:amenity=grave yard @@ -482,6 +510,7 @@ en: amenity=veterinary: Tag:amenity=veterinary amenity=waste_basket: Tag:amenity=waste basket amenity=waste_disposal: Tag:amenity=waste disposal + amenity=waste_transfer_station: Tag:amenity=waste transfer station amenity=watering_place: Tag:amenity=watering place atm=no: Tag:atm=no atm=yes: Tag:atm=yes @@ -502,6 +531,7 @@ en: barrier=sally_port: Tag:barrier=sally port barrier=stile: Tag:barrier=stile barrier=toll_booth: Tag:barrier=toll booth + barrier=turnstile: Tag:barrier=turnstile barrier=wall: Tag:barrier=wall boundary=administrative: Tag:boundary=administrative boundary=civil: Tag:boundary=civil @@ -515,9 +545,18 @@ en: building=parliament: Tag:building=parliament bunker_type=munitions: Tag:bunker type=munitions bunker_type=pillbox: Tag:bunker type=pillbox + clothes=sports: Tag:clothes=sports club-mate=yes: Tag:club-mate=yes cycleway=bike_box: Tag:cycleway=bike box denomination=mormon: Tag:denomination=mormon + emergency=ambulance_station: Tag:emergency=ambulance station + emergency=fire_extinguisher: Tag:emergency=fire extinguisher + emergency=fire_flapper: Tag:emergency=fire flapper + emergency=fire_hose: Tag:emergency=fire hose + emergency=fire_hydrant: Tag:emergency=fire hydrant + emergency=phone: Tag:emergency=phone + emergency=ses_station: Tag:emergency=ses station + emergency=siren: Tag:emergency=siren geological=palaeontological_site: Tag:geological=palaeontological site highway=bridleway: Tag:highway=bridleway highway=bus_guideway: Tag:highway=bus guideway @@ -539,14 +578,12 @@ en: highway=pedestrian: Tag:highway=pedestrian highway=platform: Tag:highway=platform highway=primary: Tag:highway=primary - highway=primary_link: Tag:highway=primary link highway=proposed: Tag:highway=proposed highway=raceway: Tag:highway=raceway highway=residential: Tag:highway=residential highway=rest_area: Tag:highway=rest area highway=road: Tag:highway=road highway=secondary: Tag:highway=secondary - highway=secondary_link: Tag:highway=secondary link highway=service: Tag:highway=service highway=services: Tag:highway=services highway=speed_camera: Tag:highway=speed camera @@ -558,7 +595,6 @@ en: highway=traffic_signals: Tag:highway=traffic signals highway=trail: Tag:highway=trail highway=trunk: Tag:highway=trunk - highway=trunk_link: Tag:highway=trunk link highway=turning_circle: Tag:highway=turning circle highway=unclassified: Tag:highway=unclassified historic=archaeological_site: Tag:historic=archaeological site @@ -583,6 +619,7 @@ en: landuse=commercial: Tag:landuse=commercial landuse=construction: Tag:landuse=construction landuse=farm: Tag:landuse=farm + landuse=farmland: Tag:landuse=farmland landuse=farmyard: Tag:landuse=farmyard landuse=forest: Tag:landuse=forest landuse=garages: Tag:landuse=garages @@ -606,7 +643,6 @@ en: landuse=street: Tag:landuse=street landuse=village_green: Tag:landuse=village green landuse=vineyard: Tag:landuse=vineyard - landuse=wood: Tag:landuse=wood leisure=beach_resort: Tag:leisure=beach resort leisure=common: Tag:leisure=common leisure=dance: Tag:leisure=dance @@ -619,20 +655,27 @@ en: leisure=marina: Tag:leisure=marina leisure=miniature_golf: Tag:leisure=miniature golf leisure=nature_reserve: Tag:leisure=nature reserve + leisure=paddling_pool: Tag:leisure=paddling pool leisure=park: Tag:leisure=park leisure=picnic_table: Tag:leisure=picnic table leisure=pitch: Tag:leisure=pitch leisure=playground: Tag:leisure=playground + leisure=ski_playground: Tag:leisure=ski playground leisure=slipway: Tag:leisure=slipway leisure=sports_centre: Tag:leisure=sports centre leisure=track: Tag:leisure=track + leisure=video_arcade: Tag:leisure=video arcade leisure=water_park: Tag:leisure=water park + man_made=adit: Tag:man made=adit + man_made=archimedes_screw: Tag:man made=archimedes screw man_made=beacon: Tag:man made=beacon + man_made=chimney: Tag:man made=chimney man_made=compass_rose: Tag:man made=compass rose man_made=crane: Tag:man made=crane man_made=cutline: Tag:man made=cutline man_made=dyke: Tag:man made=dyke - man_made=flagpole: Tag:man made=flagpole + man_made=fish_passage: Tag:man made=fish passage + man_made=flare: Tag:man made=flare man_made=ground_station: Tag:man made=ground station man_made=groyne: Tag:man made=groyne man_made=jetty: Tag:man made=jetty @@ -643,6 +686,7 @@ en: man_made=pipeline: Tag:man made=pipeline man_made=pumping_rig: Tag:man made=pumping rig man_made=reservoir_covered: Tag:man made=reservoir covered + man_made=storage_tank: Tag:man made=storage tank man_made=surveillance: Tag:man made=surveillance man_made=survey_point: Tag:man made=survey point man_made=tower: Tag:man made=tower @@ -651,8 +695,12 @@ en: man_made=water_well: Tag:man made=water well man_made=water_works: Tag:man made=water works man_made=watermill: Tag:man made=watermill + man_made=well: Tag:man made=well + man_made=wildlife_crossing: Tag:man made=wildlife crossing man_made=windmill: Tag:man made=windmill + man_made=windpump: Tag:man made=windpump man_made=works: Tag:man made=works + microbrewery=yes: Tag:microbrewery=yes military=airfield: Tag:military=airfield military=bunker: Tag:military=bunker military=naval_base: Tag:military=naval base @@ -661,13 +709,15 @@ en: natural=cave_entrance: Tag:natural=cave entrance natural=cliff: Tag:natural=cliff natural=coastline: Tag:natural=coastline + natural=dune: Tag:natural=dune natural=fell: Tag:natural=fell natural=glacier: Tag:natural=glacier natural=heath: Tag:natural=heath natural=lake: Tag:natural=lake natural=land: Tag:natural=land - natural=meadow: Tag:natural=meadow natural=peak: Tag:natural=peak + natural=rock: Tag:natural=rock + natural=scree: Tag:natural=scree natural=scrub: Tag:natural=scrub natural=spring: Tag:natural=spring natural=stone: Tag:natural=stone @@ -687,6 +737,8 @@ en: office=newspaper: Tag:office=newspaper office=ngo: Tag:office=ngo office=quango: Tag:office=quango + office=research: Tag:office=research + office=telecommunication: Tag:office=telecommunication office=travel_agent: Tag:office=travel agent pipeline=marker: Tag:pipeline=marker pipeline=valve: Tag:pipeline=valve @@ -751,8 +803,10 @@ en: service=yard: Tag:service=yard shop=SpotColor: Tag:shop=SpotColor shop=alcohol: Tag:shop=alcohol + shop=art: Tag:shop=art shop=bakery: Tag:shop=bakery shop=beauty: Tag:shop=beauty + shop=bed: Tag:shop=bed shop=beverages: Tag:shop=beverages shop=bicycle: Tag:shop=bicycle shop=books: Tag:shop=books @@ -764,18 +818,26 @@ en: shop=charity: Tag:shop=charity shop=chemist: Tag:shop=chemist shop=clothes: Tag:shop=clothes + shop=communication: Tag:shop=communication shop=computer: Tag:shop=computer shop=confectionery: Tag:shop=confectionery shop=convenience: Tag:shop=convenience + shop=copyshop: Tag:shop=copyshop + shop=curtain: Tag:shop=curtain + shop=deli: Tag:shop=deli shop=department_store: Tag:shop=department store + shop=dive: Tag:shop=dive shop=doityourself: Tag:shop=doityourself shop=dry_cleaning: Tag:shop=dry cleaning shop=electronics: Tag:shop=electronics - shop=fabrics: Tag:shop=fabrics + shop=erotic: Tag:shop=erotic + shop=fabric: Tag:shop=fabric shop=farm: Tag:shop=farm shop=florist: Tag:shop=florist shop=food: Tag:shop=food + shop=frame: Tag:shop=frame shop=funeral_directors: Tag:shop=funeral directors + shop=furnace: Tag:shop=furnace shop=furniture: Tag:shop=furniture shop=garden_centre: Tag:shop=garden centre shop=general: Tag:shop=general @@ -783,8 +845,10 @@ en: shop=glaziery: Tag:shop=glaziery shop=greengrocer: Tag:shop=greengrocer shop=hairdresser: Tag:shop=hairdresser + shop=hardware: Tag:shop=hardware shop=hearing_aids: Tag:shop=hearing aids shop=hifi: Tag:shop=hifi + shop=houseware: Tag:shop=houseware shop=ice_cream: Tag:shop=ice cream shop=jewelry: Tag:shop=jewelry shop=kiosk: Tag:shop=kiosk @@ -792,14 +856,18 @@ en: shop=locksmith: Tag:shop=locksmith shop=mall: Tag:shop=mall shop=massage: Tag:shop=massage + shop=mobile_phone: Tag:shop=mobile phone shop=money_lender: Tag:shop=money lender shop=motorcycle: Tag:shop=motorcycle shop=motorcycle_repair: Tag:shop=motorcycle repair + shop=musical_instrument: Tag:shop=musical instrument shop=newsagent: Tag:shop=newsagent shop=optician: Tag:shop=optician shop=organic: Tag:shop=organic shop=outdoor: Tag:shop=outdoor + shop=paint: Tag:shop=paint shop=pawnbroker: Tag:shop=pawnbroker + shop=pet: Tag:shop=pet shop=seafood: Tag:shop=seafood shop=second_hand: Tag:shop=second hand shop=shoes: Tag:shop=shoes @@ -807,8 +875,10 @@ en: shop=stationery: Tag:shop=stationery shop=supermarket: Tag:shop=supermarket shop=systembolaget: Tag:shop=systembolaget + shop=tattoo: Tag:shop=tattoo shop=toys: Tag:shop=toys - shop=travel_agency: Tag:shop=travel agency + shop=trade: Tag:shop=trade + shop=vacuum_cleaner: Tag:shop=vacuum cleaner shop=variety_store: Tag:shop=variety store shop=video: Tag:shop=video source:ele=barometric: Tag:source:ele=barometric @@ -818,16 +888,61 @@ en: 1:25000 map (2007) source=Isle_of_Man_Government_aerial_imagery_(2001): Tag:source=Isle of Man Government aerial imagery (2001) + sport=10pin: Tag:sport=10pin sport=9pin: Tag:sport=9pin + sport=american_football: Tag:sport=american football + sport=archery: Tag:sport=archery + sport=athletics: Tag:sport=athletics sport=australian_football: Tag:sport=australian football + sport=badminton: Tag:sport=badminton + sport=baseball: Tag:sport=baseball + sport=basketball: Tag:sport=basketball + sport=beachvolleyball: Tag:sport=beachvolleyball sport=boules: Tag:sport=boules + sport=bowls: Tag:sport=bowls + sport=canadian_football: Tag:sport=canadian football + sport=canoe: Tag:sport=canoe + sport=chess: Tag:sport=chess + sport=climbing: Tag:sport=climbing + sport=cricket: Tag:sport=cricket + sport=cricket_nets: Tag:sport=cricket nets + sport=croquet: Tag:sport=croquet + sport=cycling: Tag:sport=cycling sport=diving: Tag:sport=diving + sport=dog_racing: Tag:sport=dog racing + sport=equestrian: Tag:sport=equestrian + sport=gaelic_football: Tag:sport=gaelic football + sport=gaelic_games: Tag:sport=gaelic games + sport=golf: Tag:sport=golf + sport=gymnastics: Tag:sport=gymnastics + sport=hockey: Tag:sport=hockey + sport=horse_racing: Tag:sport=horse racing + sport=horseshoes: Tag:sport=horseshoes + sport=ice_stock: Tag:sport=ice stock + sport=korfball: Tag:sport=korfball + sport=motor: Tag:sport=motor + sport=multi: Tag:sport=multi sport=orienteering: Tag:sport=orienteering + sport=paddle_tennis: Tag:sport=paddle tennis + sport=paragliding: Tag:sport=paragliding + sport=pelota: Tag:sport=pelota + sport=racquet: Tag:sport=racquet sport=rowing: Tag:sport=rowing + sport=rugby_league: Tag:sport=rugby league + sport=rugby_union: Tag:sport=rugby union sport=shooting: Tag:sport=shooting + sport=skateboard: Tag:sport=skateboard + sport=skating: Tag:sport=skating + sport=skiing: Tag:sport=skiing sport=soccer: Tag:sport=soccer + sport=surfing: Tag:sport=surfing + sport=swimming: Tag:sport=swimming + sport=table_tennis: Tag:sport=table tennis + sport=team_handball: Tag:sport=team handball + sport=tennis: Tag:sport=tennis sport=toboggan: Tag:sport=toboggan sport=volleyball: Tag:sport=volleyball + sport=water_ski: Tag:sport=water ski sub_sea=reef: Tag:sub sea=reef tourism=alpine_hut: Tag:tourism=alpine hut tourism=aquarium: Tag:tourism=aquarium @@ -846,6 +961,7 @@ en: tourism=theme_park: Tag:tourism=theme park tourism=viewpoint: Tag:tourism=viewpoint tourism=zoo: Tag:tourism=zoo + tunnel=culvert: Tag:tunnel=culvert type=site: Tag:type=site vending=bicycle_tube: Tag:vending=bicycle tube waterway=boatyard: Tag:waterway=boatyard @@ -857,6 +973,7 @@ en: waterway=lock_gate: Tag:waterway=lock gate waterway=river: Tag:waterway=river waterway=riverbank: Tag:waterway=riverbank + waterway=seaway: Tag:waterway=seaway waterway=stream: Tag:waterway=stream waterway=turning_point: Tag:waterway=turning point waterway=water_point: Tag:waterway=water point @@ -868,6 +985,7 @@ es: amenity=bar: ES:Tag:amenity=bar amenity=recycling: ES:Tag:amenity=recycling highway=bus_stop: ES:Tag:highway=bus stop + railway=level_crossing: ES:Tag:railway=level crossing et: key: highway: Et:Key:highway @@ -890,6 +1008,7 @@ fi: natural: Fi:Key:natural note: Fi:Key:note operator: Fi:Key:operator + parking:lane:both: Fi:Key:parking:lane:both shop: Fi:Key:shop surface: Fi:Key:surface tracktype: Fi:Key:tracktype @@ -964,37 +1083,54 @@ fr: highway: FR:Key:highway landuse: FR:Key:landuse lanes: FR:Key:lanes + leisure: FR:Key:leisure + man_made: FR:Key:man made maxweight: FR:Key:maxweight name: FR:Key:name + natural: FR:Key:natural noname: FR:Key:noname opening_hours: FR:Key:opening hours + operator: FR:Key:operator + parking: FR:Key:parking place: FR:Key:place power: FR:Key:power sac_scale: FR:Key:sac scale shop: FR:Key:shop smoothness: FR:Key:smoothness + sport: FR:Key:sport + surface: FR:Key:surface + tracktype: FR:Key:tracktype waterway: FR:Key:waterway tag: aeroway=runway: FR:Tag:aeroway=runway amenity=bicycle_parking: FR:Tag:amenity=bicycle parking amenity=bicycle_rental: FR:Tag:amenity=bicycle rental + amenity=community_centre: FR:Tag:amenity=community centre amenity=fire_station: FR:Tag:amenity=fire station + amenity=library: FR:Tag:amenity=library amenity=pharmacy: FR:Tag:amenity=pharmacy amenity=recycling: FR:Tag:amenity=recycling + amenity=telephone: FR:Tag:amenity=telephone amenity=townhall: FR:Tag:amenity=townhall barrier=bollard: FR:Tag:barrier=bollard barrier=gate: FR:Tag:barrier=gate cycleway=bike_box: FR:Tag:cycleway=bike box + highway=bus_guideway: FR:Tag:highway=bus guideway highway=bus_stop: FR:Tag:highway=bus stop highway=crossing: FR:Tag:highway=crossing highway=cycleway: FR:Tag:highway=cycleway + highway=give_way: FR:Tag:highway=give way highway=motorway: FR:Tag:highway=motorway highway=motorway_link: FR:Tag:highway=motorway link + highway=track: FR:Tag:highway=track landuse=farmyard: FR:Tag:landuse=farmyard landuse=forest: FR:Tag:landuse=forest leisure=playground: FR:Tag:leisure=playground + man_made=cutline: FR:Tag:man made=cutline + man_made=surveillance: FR:Tag:man made=surveillance man_made=water_works: FR:Tag:man made=water works natural=tree: FR:Tag:natural=tree + natural=water: FR:Tag:natural=water place=city: FR:Tag:place=city place=hamlet: FR:Tag:place=hamlet place=locality: FR:Tag:place=locality @@ -1007,12 +1143,15 @@ fr: railway=subway_entrance: FR:Tag:railway=subway entrance shop=bakery: FR:Tag:shop=bakery shop=supermarket: FR:Tag:shop=supermarket + waterway=river: FR:Tag:waterway=river waterway=riverbank: FR:Tag:waterway=riverbank waterway=stream: FR:Tag:waterway=stream waterway=weir: FR:Tag:waterway=weir hr: key: tracktype: Hr:Key:tracktype + tag: + amenity=atm: Hr:Tag:amenity=atm hu: key: aeroway: HU:Key:aeroway @@ -1037,11 +1176,14 @@ it: geological: IT:Key:geological highway: IT:Key:highway historic: IT:Key:historic + incline: IT:Key:incline junction: IT:Key:junction landuse: IT:Key:landuse leisure: IT:Key:leisure lock: IT:Key:lock man_made: IT:Key:man made + maxheight: IT:Key:maxheight + maxwidth: IT:Key:maxwidth military: IT:Key:military mooring: IT:Key:mooring name: IT:Key:name @@ -1068,12 +1210,15 @@ it: type: IT:Key:type waterway: IT:Key:waterway wheelchair: IT:Key:wheelchair + width: IT:Key:width tag: amenity=bicycle_rental: IT:Tag:amenity=bicycle rental amenity=college: IT:Tag:amenity=college + amenity=fountain: IT:Tag:amenity=fountain amenity=fuel: IT:Tag:amenity=fuel amenity=hospital: IT:Tag:amenity=hospital amenity=kindergarten: IT:Tag:amenity=kindergarten + amenity=parking: IT:Tag:amenity=parking amenity=place_of_worship: IT:Tag:amenity=place of worship amenity=police: IT:Tag:amenity=police amenity=post_office: IT:Tag:amenity=post office @@ -1087,6 +1232,7 @@ it: highway=mini_roundabout: IT:Tag:highway=mini roundabout highway=motorway: IT:Tag:highway=motorway highway=motorway_link: IT:Tag:highway=motorway link + highway=pedestrian: IT:Tag:highway=pedestrian highway=primary: IT:Tag:highway=primary highway=primary_link: IT:Tag:highway=primary link highway=trunk: IT:Tag:highway=trunk @@ -1096,9 +1242,14 @@ it: landuse=construction: IT:Tag:landuse=construction leisure=beach_resort: IT:Tag:leisure=beach resort leisure=dog_park: IT:Tag:leisure=dog park + leisure=marina: IT:Tag:leisure=marina + railway=level_crossing: IT:Tag:railway=level crossing shop=butcher: IT:Tag:shop=butcher shop=car: IT:Tag:shop=car + shop=clothes: IT:Tag:shop=clothes shop=florist: IT:Tag:shop=florist + shop=newsagent: IT:Tag:shop=newsagent + tourism=artwork: IT:Tag:tourism=artwork ja: key: abutters: JA:Key:abutters @@ -1122,6 +1273,7 @@ ja: information: JA:Key:information internet_access: JA:Key:internet access landuse: JA:Key:landuse + lanes: JA:Key:lanes leisure: JA:Key:leisure man_made: JA:Key:man made military: JA:Key:military @@ -1150,6 +1302,7 @@ ja: amenity=baby_hatch: JA:Tag:amenity=baby hatch amenity=bus_station: JA:Tag:amenity=bus station amenity=cafe: JA:Tag:amenity=cafe + amenity=crematorium: JA:Tag:amenity=crematorium amenity=drinking_water: JA:Tag:amenity=drinking water amenity=fast_food: JA:Tag:amenity=fast food amenity=fire_station: JA:Tag:amenity=fire station @@ -1184,10 +1337,13 @@ ja: railway=station: JA:Tag:railway=station shop=doityourself: JA:Tag:shop=doityourself shop=garden_centre: JA:Tag:shop=garden centre + shop=gift: JA:Tag:shop=gift shop=motorcycle: JA:Tag:shop=motorcycle shop=outdoor: JA:Tag:shop=outdoor + tourism=hostel: JA:Tag:tourism=hostel tourism=hotel: JA:Tag:tourism=hotel tourism=information: JA:Tag:tourism=information + tourism=viewpoint: JA:Tag:tourism=viewpoint waterway=riverbank: JA:Tag:waterway=riverbank waterway=water_point: JA:Tag:waterway=water point nl: @@ -1200,13 +1356,18 @@ nl: zoo=petting_zoo: NL:Tag:zoo=petting zoo no: key: + amenity: No:Key:amenity + boundary: No:Key:boundary fenced: No:Key:fenced + maxheight:legal: No:Key:maxheight:legal maxheight:marine: No:Key:maxheight:marine + maxheight:physical: No:Key:maxheight:physical tag: amenity=bank: No:Tag:amenity=bank amenity=marketplace: No:Tag:amenity=marketplace amenity=pharmacy: No:Tag:amenity=pharmacy amenity=place_of_worship: No:Tag:amenity=place of worship + boundary=maritime: No:Tag:boundary=maritime pl: key: height: Pl:Key:height @@ -1316,10 +1477,12 @@ ru: aeroway: RU:Key:aeroway amenity: RU:Key:amenity area: RU:Key:area + barrier: RU:Key:barrier bicycle: RU:Key:bicycle boat: RU:Key:boat border_type: RU:Key:border type boundary: RU:Key:boundary + bridge: RU:Key:bridge building: RU:Key:building bunker_type: RU:Key:bunker type capacity: RU:Key:capacity @@ -1372,6 +1535,7 @@ ru: place: RU:Key:place population: RU:Key:population power: RU:Key:power + power_source: RU:Key:power source railway: RU:Key:railway ref: RU:Key:ref religion: RU:Key:religion @@ -1426,7 +1590,9 @@ ru: amenity=waste_basket: RU:Tag:amenity=waste basket amenity=waste_disposal: RU:Tag:amenity=waste disposal atm=yes: RU:Tag:atm=yes + barrier=fence: RU:Tag:barrier=fence barrier=lift_gate: RU:Tag:barrier=lift gate + barrier=toll_booth: RU:Tag:barrier=toll booth building=entrance: RU:Tag:building=entrance highway=bridleway: RU:Tag:highway=bridleway highway=bus_stop: RU:Tag:highway=bus stop @@ -1473,6 +1639,7 @@ ru: landuse=industrial: RU:Tag:landuse=industrial landuse=meadow: RU:Tag:landuse=meadow landuse=military: RU:Tag:landuse=military + landuse=peat_cutting: RU:Tag:landuse=peat cutting landuse=railway: RU:Tag:landuse=railway landuse=reservoir: RU:Tag:landuse=reservoir landuse=residential: RU:Tag:landuse=residential @@ -1482,6 +1649,7 @@ ru: man_made=cutline: RU:Tag:man made=cutline man_made=lighthouse: RU:Tag:man made=lighthouse man_made=pier: RU:Tag:man made=pier + natural=beach: RU:Tag:natural=beach natural=fell: RU:Tag:natural=fell natural=spring: RU:Tag:natural=spring natural=tree: RU:Tag:natural=tree @@ -1493,7 +1661,9 @@ ru: place=island: RU:Tag:place=island place=town: RU:Tag:place=town place=village: RU:Tag:place=village + power=generator: RU:Tag:power=generator power=line: RU:Tag:power=line + power=station: RU:Tag:power=station power=sub_station: RU:Tag:power=sub station power=tower: RU:Tag:power=tower railway=crossing: RU:Tag:railway=crossing @@ -1527,6 +1697,8 @@ ru: waterway=stream: RU:Tag:waterway=stream waterway=weir: RU:Tag:waterway=weir sv: + key: + access: Sv:Key:access tag: amenity=place_of_worship: Sv:Tag:amenity=place of worship tr: @@ -1553,7 +1725,5 @@ uk: highway=tertiary: Uk:Tag:highway=tertiary highway=trunk: Uk:Tag:highway=trunk highway=trunk_link: Uk:Tag:highway=trunk link -zh-hans: - key: - place: Zh-hans:Key:place + highway=unclassified: Uk:Tag:highway=unclassified diff --git a/db/migrate/20100910084426_add_callback_to_oauth_tokens.rb b/db/migrate/20100910084426_add_callback_to_oauth_tokens.rb new file mode 100644 index 000000000..179b80fab --- /dev/null +++ b/db/migrate/20100910084426_add_callback_to_oauth_tokens.rb @@ -0,0 +1,11 @@ +class AddCallbackToOauthTokens < ActiveRecord::Migration + def self.up + add_column :oauth_tokens, :callback_url, :string + add_column :oauth_tokens, :verifier, :string, :limit => 20 + end + + def self.down + remove_column :oauth_tokens, :callback_url + remove_column :oauth_tokens, :verifier + end +end diff --git a/lib/daemons/gpx_import.rb b/lib/daemons/gpx_import.rb index e24dc1ad5..8250a67f5 100755 --- a/lib/daemons/gpx_import.rb +++ b/lib/daemons/gpx_import.rb @@ -12,7 +12,7 @@ logger = ActiveRecord::Base.logger while(true) do ActiveRecord::Base.logger.info("GPX Import daemon wake @ #{Time.now}.") - Trace.find(:all, :conditions => "inserted = 0 and visible = 1", :order => "id").each do |trace| + Trace.find(:all, :conditions => { :inserted => false, :visible => true }, :order => "id").each do |trace| Signal.trap("TERM") do terminated = true end @@ -38,7 +38,7 @@ while(true) do exit if terminated end - Trace.find(:all, :conditions => "visible = 0", :order => "id").each do |trace| + Trace.find(:all, :conditions => { :visible => false }, :order => "id").each do |trace| Signal.trap("TERM") do terminated = true end diff --git a/lib/gpx.rb b/lib/gpx.rb index 76f0af19a..2041ce7c0 100644 --- a/lib/gpx.rb +++ b/lib/gpx.rb @@ -23,7 +23,7 @@ module GPX point = nil - while reader.read > 0 + while reader.read if reader.node_type == XML::Reader::TYPE_ELEMENT if reader.name == "trkpt" point = TrkPt.new(@tracksegs, reader["lat"].to_f, reader["lon"].to_f) diff --git a/public/export/embed.html b/public/export/embed.html index 35b93a2ac..bba670255 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -56,7 +56,7 @@ attribution: attribution }); map.addLayer(osmarender); - } else if (args.layer == "cycle map") { + } else if (args.layer == "cyclemap" || args.layer == "cycle map") { var cyclemap = new OpenLayers.Layer.OSM.CycleMap("Cycle Map", { displayOutsideMaxExtent: true, wrapDateLine: true, diff --git a/public/openlayers/OpenLayers.js b/public/openlayers/OpenLayers.js index fe7a99241..3ff15e8f5 100644 --- a/public/openlayers/OpenLayers.js +++ b/public/openlayers/OpenLayers.js @@ -2,8 +2,8 @@ OpenLayers.js -- OpenLayers Map Viewer Library - Copyright 2005-2008 MetaCarta, Inc., released under the Clear BSD license. - Please see http://svn.openlayers.org/trunk/openlayers/license.txt + Copyright 2005-2010 OpenLayers Contributors, released under the Clear BSD + license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt for the full text of the license. Includes compressed code under the following licenses: @@ -92,9 +92,9 @@ */ var OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);var scriptLocation;window.OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){if(scriptLocation!=undefined){return scriptLocation;} scriptLocation="";var isOL=new RegExp("(^|(.*?\\/))("+OpenLayers._scriptName+")(\\?|$)");var scripts=document.getElementsByTagName('script');for(var i=0,len=scripts.length;i";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} -if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="OpenLayers 2.9.1 -- $Revision: 10129 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1,len=oStringList.length;i1){initialize=arguments[i].prototype.initialize;arguments[i].prototype.initialize=function(){};extended=new arguments[i];if(initialize===undefined){delete arguments[i].prototype.initialize;}else{arguments[i].prototype.initialize=initialize;}} -parent=arguments[i].prototype;}else{parent=arguments[i];} +return selected;}};OpenLayers.Date={toISOString:(function(){if("toISOString"in Date.prototype){return function(date){return date.toISOString();}}else{function pad(num,len){var str=num+"";while(str.length1){initialize=Type.prototype.initialize;Type.prototype.initialize=function(){};extended=new Type();if(initialize===undefined){delete Type.prototype.initialize;}else{Type.prototype.initialize=initialize;}} +parent=Type.prototype;}else{parent=Type;} OpenLayers.Util.extend(extended,parent);} Class.prototype=extended;return Class;};OpenLayers.Class.isPrototype=function(){};OpenLayers.Class.create=function(){return function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}};};OpenLayers.Class.inherit=function(){var superClass=arguments[0];var proto=new superClass(OpenLayers.Class.isPrototype);for(var i=1,len=arguments.length;i1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+ +return number;};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.deg=function(x){return x*180/Math.PI;};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};OpenLayers.Util.distVincenty=function(p1,p2){var ct=OpenLayers.Util.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;var L=OpenLayers.Util.rad(p2.lon-p1.lon);var U1=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p1.lat)));var U2=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p2.lat)));var sinU1=Math.sin(U1),cosU1=Math.cos(U1);var sinU2=Math.sin(U2),cosU2=Math.cos(U2);var lambda=L,lambdaP=2*Math.PI;var iterLimit=20;while(Math.abs(lambda-lambdaP)>1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+ (cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0){return 0;} var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} if(iterLimit==0){return NaN;} var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- -B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} +B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.destinationVincenty=function(lonlat,brng,dist){var u=OpenLayers.Util;var ct=u.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;var lon1=lonlat.lon;var lat1=lonlat.lat;var s=dist;var alpha1=u.rad(brng);var sinAlpha1=Math.sin(alpha1);var cosAlpha1=Math.cos(alpha1);var tanU1=(1-f)*Math.tan(u.rad(lat1));var cosU1=1/Math.sqrt((1+tanU1*tanU1)),sinU1=tanU1*cosU1;var sigma1=Math.atan2(tanU1,cosAlpha1);var sinAlpha=cosU1*sinAlpha1;var cosSqAlpha=1-sinAlpha*sinAlpha;var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var sigma=s/(b*A),sigmaP=2*Math.PI;while(Math.abs(sigma-sigmaP)>1e-12){var cos2SigmaM=Math.cos(2*sigma1+sigma);var sinSigma=Math.sin(sigma);var cosSigma=Math.cos(sigma);var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- +B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));sigmaP=sigma;sigma=s/(b*A)+deltaSigma;} +var tmp=sinU1*sinSigma-cosU1*cosSigma*cosAlpha1;var lat2=Math.atan2(sinU1*cosSigma+cosU1*sinSigma*cosAlpha1,(1-f)*Math.sqrt(sinAlpha*sinAlpha+tmp*tmp));var lambda=Math.atan2(sinSigma*sinAlpha1,cosU1*cosSigma-sinU1*sinSigma*cosAlpha1);var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));var L=lambda-(1-C)*f*sinAlpha*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));var revAz=Math.atan2(sinAlpha,-tmp);return new OpenLayers.LonLat(lon1+u.deg(L),u.deg(lat2));};OpenLayers.Util.getParameters=function(url){url=url||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0,len=pairs.length;i=0){if(coordinateminutes<10){coordinateminutes="0"+coordinateminutes;} +var str=coordinatedegrees+"\u00B0";if(dmsOption.indexOf('dm')>=0){if(coordinateminutes<10){coordinateminutes="0"+coordinateminutes;} str+=coordinateminutes+"'";if(dmsOption.indexOf('dms')>=0){if(coordinateseconds<10){coordinateseconds="0"+coordinateseconds;} str+=coordinateseconds+'"';}} if(axis=="lon"){str+=coordinate<0?OpenLayers.i18n("W"):OpenLayers.i18n("E");}else{str+=coordinate<0?OpenLayers.i18n("S"):OpenLayers.i18n("N");} @@ -231,7 +243,7 @@ else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.b else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";} if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;} var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];} -return 0;},_hasString:function(str){for(var i=1;i=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0,len=arguments.length;i=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0,len=arguments.length;i=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}} return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds);};OpenLayers.Bounds.fromArray=function(bbox){return new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.LonLat=OpenLayers.Class({lon:0.0,lat:0.0,initialize:function(lon,lat){this.lon=OpenLayers.Util.toFloat(lon);this.lat=OpenLayers.Util.toFloat(lat);},toString:function(){return("lon="+this.lon+",lat="+this.lat);},toShortString:function(){return(this.lon+", "+this.lat);},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat);},add:function(lon,lat){if((lon==null)||(lat==null)){var msg=OpenLayers.i18n("lonlatAddError");OpenLayers.Console.error(msg);return null;} -return new OpenLayers.LonLat(this.lon+lon,this.lat+lat);},equals:function(ll){var equals=false;if(ll!=null){equals=((this.lon==ll.lon&&this.lat==ll.lat)||(isNaN(this.lon)&&isNaN(this.lat)&&isNaN(ll.lon)&&isNaN(ll.lat)));} +return new OpenLayers.LonLat(this.lon+OpenLayers.Util.toFloat(lon),this.lat+OpenLayers.Util.toFloat(lat));},equals:function(ll){var equals=false;if(ll!=null){equals=((this.lon==ll.lon&&this.lat==ll.lat)||(isNaN(this.lon)&&isNaN(this.lat)&&isNaN(ll.lon)&&isNaN(ll.lat)));} return equals;},transform:function(source,dest){var point=OpenLayers.Projection.transform({'x':this.lon,'y':this.lat},source,dest);this.lon=point.x;this.lat=point.y;return this;},wrapDateLine:function(maxExtent){var newLonLat=this.clone();if(maxExtent){while(newLonLat.lonmaxExtent.right){newLonLat.lon-=maxExtent.getWidth();}} -return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(parseFloat(pair[0]),parseFloat(pair[1]));};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} +return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(pair[0],pair[1]);};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} return equals;},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("pixelAddError");OpenLayers.Console.error(msg);return null;} return new OpenLayers.Pixel(this.x+x,this.y+y);},offset:function(px){var newPx=this.clone();if(px){newPx=this.add(px.x,px.y);} return newPx;},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",autoActivate:false,active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);} @@ -338,56 +352,54 @@ if(parts[1]){var testLang=parts[0]+'-'+parts[1].toUpperCase();if(typeof OpenLaye if(!lang){OpenLayers.Console.warn('Failed to find OpenLayers.Lang.'+parts.join("-")+' dictionary, falling back to default language');lang=OpenLayers.Lang.defaultCode;} OpenLayers.Lang.code=lang;},translate:function(key,context){var dictionary=OpenLayers.Lang[OpenLayers.Lang.getCode()];var message=dictionary[key];if(!message){message=key;} if(context){message=OpenLayers.String.format(message,context);} -return message;}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:true,anchor:null,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=[id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback];OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(contentSize){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var size=this.size||this.contentSize;var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{canvas:null,features:null,geometryMap:null,initialize:function(containerID){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.geometryMap={};},eraseGeometry:function(geometry){this.eraseFeatures(this.features[this.geometryMap[geometry.id]][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setExtent:function(extent){this.extent=extent.clone();this.resolution=null;this.redraw();},setSize:function(size){this.size=size.clone();this.root.style.width=size.w+"px";this.root.style.height=size.h+"px";this.root.width=size.w;this.root.height=size.h;this.resolution=null;},drawFeature:function(feature,style){if(style==null){style=feature.style;} -style=OpenLayers.Util.extend({'fillColor':'#000000','strokeColor':'#000000','strokeWidth':2,'fillOpacity':1,'strokeOpacity':1},style);this.features[feature.id]=[feature,style];if(feature.geometry){this.geometryMap[feature.geometry.id]=feature.id;} -this.redraw();},drawGeometry:function(geometry,style){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;i1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}} this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex0){this.vectorRoot.removeChild(this.vectorRoot.firstChild);}} -if(this.textRoot){while(this.textRoot.childNodes.length>0){this.textRoot.removeChild(this.textRoot.firstChild);}} +return returnVal;}};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(options&&(options.zIndexing||options.yOrdering)){this.indexer=new OpenLayers.ElementsIndexer(options.yOrdering);}},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){var child;var root=this.vectorRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} +root=this.textRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;ithis.duration){if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);this.playing=false;} -window.clearInterval(this.interval);this.interval=null;}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;ithis.duration){this.stop();}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;} return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;} -var curMapUnits=this.map.getUnits();var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var geodesicRatio=1;if(this.geodesic===true){var maxSizeGeodesic=this.getGeodesicLength(this.maxWidth);var maxSizeKilometers=maxSizeData/inches["km"];geodesicRatio=maxSizeGeodesic/maxSizeKilometers;maxSizeData*=geodesicRatio;} +var curMapUnits=this.map.getUnits();var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var geodesicRatio=1;if(this.geodesic===true){var maxSizeGeodesic=(this.map.getGeodesicPixelSize().w||0.000001)*this.maxWidth;var maxSizeKilometers=maxSizeData/inches["km"];geodesicRatio=maxSizeGeodesic/maxSizeKilometers;maxSizeData*=geodesicRatio;} var topUnits;var bottomUnits;if(maxSizeData>100000){topUnits=this.topOutUnits;bottomUnits=this.bottomOutUnits;}else{topUnits=this.topInUnits;bottomUnits=this.bottomInUnits;} var topMax=maxSizeData/inches[topUnits];var bottomMax=maxSizeData/inches[bottomUnits];var topRounded=this.getBarLen(topMax);var bottomRounded=this.getBarLen(bottomMax);topMax=topRounded/inches[curMapUnits]*inches[topUnits];bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var topPx=topMax/res/geodesicRatio;var bottomPx=bottomMax/res/geodesicRatio;if(this.eBottom.style.visibility=="visible"){this.eBottom.style.width=Math.round(bottomPx)+"px";this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;} -if(this.eTop.style.visibility=="visible"){this.eTop.style.width=Math.round(topPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;}},getGeodesicLength:function(pixels){var map=this.map;var centerPx=map.getPixelFromLonLat(map.getCenter());var bottom=map.getLonLatFromPixel(centerPx.add(0,-pixels/2));var top=map.getLonLatFromPixel(centerPx.add(0,pixels/2));var source=map.getProjectionObject();var dest=new OpenLayers.Projection("EPSG:4326");if(!source.equals(dest)){bottom.transform(source,dest);top.transform(source,dest);} -return OpenLayers.Util.distVincenty(bottom,top);},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} +if(this.eTop.style.visibility=="visible"){this.eTop.style.width=Math.round(topPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;} return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} if(!this.observers){this.observers={};} @@ -452,7 +463,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["ar"]=OpenLayers.Util.applyDefaults({'permalink':"وصلة دائمة",'baseLayer':"الطبقة الاساسية",'readNotImplemented':"القراءة غير محققة.",'writeNotImplemented':"الكتابة غير محققة",'errorLoadingGML':"خطأ عند تحميل الملف جي ام ال ${url}",'scale':"النسبة = 1 : ${scaleDenom}",'W':"غ",'E':"شر",'N':"شم",'S':"ج"});OpenLayers.Lang["be-tarask"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Неапрацаваны вынік запыту ${statusText}",'permalink':"Сталая спасылка",'overlays':"Слаі",'baseLayer':"Базавы слой",'sameProjection':"Аглядная мапа працуе толькі калі яна мае тую ж праекцыю, што і асноўная мапа",'readNotImplemented':"Функцыянальнасьць чытаньня ня створаная.",'writeNotImplemented':"Функцыянальнасьць запісу ня створаная.",'noFID':"Немагчыма абнавіць магчымасьць, для якога не існуе FID.",'errorLoadingGML':"Памылка загрузкі файла GML ${url}",'browserNotSupported':"Ваш браўзэр не падтрымлівае вэктарную графіку. У цяперашні момант падтрымліваюцца: ${renderers}",'componentShouldBe':"addFeatures : кампанэнт павінен быць ${geomType}",'getFeatureError':"getFeatureFromEvent выкліканы для слоя бяз рэндэру. Звычайна гэта азначае, што Вы зьнішчылі слой, але пакінулі зьвязаны зь ім апрацоўшчык.",'minZoomLevelError':"Уласьцівасьць minZoomLevel прызначана толькі для выкарыстаньня са слаямі вытворнымі ад FixedZoomLevels. Тое, што гэты wfs-слой правяраецца на minZoomLevel — рэха прошлага. Але мы ня можам выдаліць гэтую магчымасьць, таму што ад яе залежаць некаторыя заснаваныя на OL дастасаваньні. Тым ня менш, праверка minZoomLevel будзе выдаленая ў вэрсіі 3.0. Калі ласка, выкарыстоўваеце замест яе ўстаноўкі мінімальнага/максымальнага памераў, як апісана тут: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-транзакцыя: ПОСЬПЕХ ${response}",'commitFailed':"WFS-транзакцыя: ПАМЫЛКА ${response}",'googleWarning':"Не атрымалася загрузіць слой Google. \x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3e Хутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі Google Maps ня быў уключаныя альбо не ўтрымлівае слушны API-ключ для Вашага сайта.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'getLayerWarning':"Немагчыма загрузіць слой ${layerType}.\x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3eХутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі ${layerLib} ня быў слушна ўключаны.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'scale':"Маштаб = 1 : ${scaleDenom}",'W':"З",'E':"У",'N':"Пн",'S':"Пд",'layerAlreadyAdded':"Вы паспрабавалі дадаць слой ${layerName} на мапу, але ён ужо дададзены",'reprojectDeprecated':"Вы выкарыстоўваеце ўстаноўку \'reproject\' для слоя ${layerName}. Гэтая ўстаноўка зьяўляецца састарэлай: яна выкарыстоўвалася для падтрымкі паказу зьвестак на камэрцыйных базавых мапах, але гэта функцыя цяпер рэалізаваная ў убудаванай падтрымцы сфэрычнай праекцыі Мэркатара. Дадатковая інфармацыя ёсьць на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Гэты мэтад састарэлы і будзе выдалены ў вэрсіі 3.0. Калі ласка, замест яго выкарыстоўвайце ${newMethod}.",'boundsAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'lonlatAddError':"Вам неабходна падаць абодва значэньні lon і lat для функцыі складаньня.",'pixelAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'unsupportedGeometryType':"Тып геамэтрыі не падтрымліваецца: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: верагодна элемэнт з ідэнтыфікатарам ${elemId} займае няслушнае месца.",'filterEvaluateNotImplemented':"evaluate не рэалізаваны для гэтага тыпу фільтру."});OpenLayers.Lang["bg"]=OpenLayers.Util.applyDefaults({'permalink':"Постоянна препратка",'baseLayer':"Основен слой",'errorLoadingGML':"Грешка при зареждане на GML файл ${url}",'scale':"Мащаб = 1 : ${scaleDenom}",'layerAlreadyAdded':"Опитахте да добавите слой ${layerName} в картата, но той вече е добавен",'methodDeprecated':"Този метод е остарял и ще бъде премахват в 3.0. Вместо него използвайте ${newMethod}."});OpenLayers.Lang["br"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Distro evel reked anveret ${statusText}",'permalink':"Peurliamm",'overlays':"Gwiskadoù",'baseLayer':"Gwiskad diazez",'sameProjection':"Ne\'z ar gartenn lec\'hiañ en-dro nemet pa vez heñvel ar banndres anezhi ha hini ar gartenn bennañ",'readNotImplemented':"N\'eo ket emplementet al lenn.",'writeNotImplemented':"N\'eo ket emplementet ar skrivañ.",'noFID':"N\'haller ket hizivaat un elfenn ma n\'eus ket a niverenn-anaout (FID) eviti.",'errorLoadingGML':"Fazi e-ser kargañ ar restr GML ${url}",'browserNotSupported':"N\'eo ket skoret an daskor vektorel gant ho merdeer. Setu aze an daskorerioù skoret evit ar poent :\n${renderers}",'componentShouldBe':"addFeatures : bez\' e tlefe ar parzh besañ eus ar seurt ${geomType}",'getFeatureError':"Galvet eo bet getFeatureFromEvent called war ur gwiskad hep daskorer. Kement-se a dalvez ez eus bet freuzet ur gwiskad hag hoc\'h eus miret un embreger bennak stag outañ.",'minZoomLevelError':"Ne zleer implijout ar perzh minZoomLevel nemet evit gwiskadoù FixedZoomLevels-descendent. Ar fed ma wiria ar gwiskad WHS-se hag-eñ ez eus eus minZoomLevel zo un aspadenn gozh. Koulskoude n\'omp ket evit e ziverkañ kuit da derriñ arloadoù diazezet war OL a c\'hallfe bezañ stag outañ. Setu perak eo dispredet -- Lamet kuit e vo ar gwiriañ minZoomLevel a-is er stumm 3.0. Ober gant an arventennoù bihanañ/brasañ evel deskrivet amañ e plas : http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Treuzgread WFS : MAT EO ${response}",'commitFailed':"Treuzgread WFS Transaction: C\'HWITET ${response}",'googleWarning':"N\'eus ket bet gallet kargañ ar gwiskad Google ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het levraoueg Google Maps pe neuze ne glot ket an alc\'hwez API gant ho lec\'hienn.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'getLayerWarning':"N\'haller ket kargañ ar gwiskad ${layerType} ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het mat al levraoueg ${layerLib}.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit gouzout penaos reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'scale':"Skeul = 1 : ${scaleDenom}",'W':"K",'E':"R",'N':"N",'S':"S",'layerAlreadyAdded':"Klasket hoc\'h eus ouzhpennañ ar gwiskad : ${layerName} d\'ar gartenn, met ouzhpennet e oa bet c\'hoazh",'reprojectDeprecated':"Emaoc\'h oc\'h implijout an dibarzh \'reproject\' war ar gwiskad ${layerName}. Dispredet eo an dibarzh-mañ : bet eo hag e talveze da ziskwel roadennoù war-c\'horre kartennoù diazez kenwerzhel, un dra hag a c\'haller ober bremañ gant an arc\'hwel dre skor banndres boullek Mercator. Muioc\'h a ditouroù a c\'haller da gaout war http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Dispredet eo an daore-se ha tennet e vo kuit eus ar stumm 3.0. Grit gant ${newMethod} e plas.",'boundsAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'lonlatAddError':"Rekis eo tremen an div dalvoudenn hedred ha ledred d\'an arc\'hwel add.",'pixelAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'unsupportedGeometryType':"Seurt mentoniezh anskoret : ${geomType}",'pagePositionFailed':"C\'hwitet eo OpenLayers.Util.pagePosition : marteze emañ lec\'hiet fall an elfenn id ${elemId}.",'filterEvaluateNotImplemented':"N\'eo ket bet emplementet ar priziañ evit seurt siloù c\'hoazh."});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.

"+"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.

"+"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.

"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"féu clic aquí",'getLayerWarning':"Per evitar aquest missatge, sel·leccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.

"+"Probablement això és degut a que l'script de la biblioteca "+"${layerLib} "+"no ha estat inclòs a la vostra pàgina.

"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"féu clic aquí",'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["cs-CZ"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nezpracovaná návratová hodnota ${statusText}",'permalink':"Trvalý odkaz",'overlays':"Překryvné vrstvy",'baseLayer':"Podkladové vrstvy",'sameProjection':"Přehledka pracuje správně pouze tehdy, pokud je ve stejné projekci jako hlavní mapa",'readNotImplemented':"Read není implementováno.",'writeNotImplemented':"Write není implementováno.",'noFID':"Nelze aktualizovat prvek, pro který neexistuje FID.",'errorLoadingGML':"Chyba při načítání souboru GML ${url}",'browserNotSupported':"Váš prohlížeč nepodporuje vykreslování vektorů. Momentálně podporované nástroje jsou::\n${renderers}",'componentShouldBe':"addFeatures : komponenta by měla být ${geomType}",'getFeatureError':"getFeatureFromEvent bylo zavoláno na vrstvě, která nemá vykreslovač. To obyčejně znamená, že jste odstranil vrstvu, ale ne rutinu s ní asociovanou.",'minZoomLevelError':"Vlastnost minZoomLevel by se měla používat pouze s potomky FixedZoomLevels vrstvami. To znamená, že vrstva wfs kontroluje, zda-li minZoomLevel není zbytek z minulosti.Nelze to ovšem vyjmout bez možnosti, že bychom rozbili aplikace postavené na OL, které by na tom mohly záviset. Proto tuto vlastnost nedoporučujeme používat -- kontrola minZoomLevel bude odstraněna ve verzi 3.0. Použijte prosím raději nastavení min/max podle příkaldu popsaného na: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: ÚSPĚCH ${response}",'commitFailed':"WFS Transaction: CHYBA ${response}",'googleWarning':"Nepodařilo se správně načíst vrstvu Google.\x3cbr\x3e\x3cbr\x3eAbyste se zbavili této zprávy, zvolte jinou základní vrstvu v přepínači vrstev.\x3cbr\x3e\x3cbr\x3eTo se většinou stává, pokud nebyl načten skript, nebo neobsahuje správný klíč pro API pro tuto stránku.\x3cbr\x3e\x3cbr\x3eVývojáři: Pro pomoc, aby tohle fungovalo , \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eklikněte sem\x3c/a\x3e",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.\x3cbr\x3e\x3cbr\x3eTo get rid of this message, select a new BaseLayer in the layer switcher in the upper-right corner.\x3cbr\x3e\x3cbr\x3eMost likely, this is because the ${layerLib} library script was either not correctly included.\x3cbr\x3e\x3cbr\x3eDevelopers: For help getting this working correctly, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'scale':"Měřítko = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokusili jste se přidat vrstvu: ${layerName} do mapy, ale tato vrstva je již v mapě přítomna.",'reprojectDeprecated':"Použil jste volbu \'reproject\' ve vrstvě ${layerName}. Tato volba není doporučená: byla zde proto, aby bylo možno zobrazovat data z okomerčních serverů, ale tato funkce je nyní zajištěna pomocí podpory Spherical Mercator. Více informací naleznete na http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Tato metoda je zavržená a bude ve verzi 3.0 odstraněna. Prosím, použijte raději ${newMethod}.",'boundsAddError':"Pro přídavnou funkci musíte zadat obě souřadnice x a y.",'lonlatAddError':"Pro přídavnou funkci musíte zadat obě souřadnice lon a lat.",'pixelAddError':"Pro přídavnou funkci musíte zadat obě souřadnice x a y.",'unsupportedGeometryType':"Nepodporovaný typ geometrie: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition selhalo: element s id ${elemId} je asi umístěn chybně."});OpenLayers.Lang['da-DK']={'unhandledRequest':"En ikke håndteret forespørgsel returnerede ${statusText}",'permalink':"Permalink",'overlays':"Kortlag",'baseLayer':"Baggrundslag",'sameProjection':"Oversigtskortet fungerer kun når det har samme projektion som hovedkortet",'readNotImplemented':"Læsning er ikke implementeret.",'writeNotImplemented':"Skrivning er ikke implementeret.",'noFID':"Kan ikke opdateret en feature (et objekt) der ikke har et FID.",'errorLoadingGML':"Fejlede under indlæsning af GML fil ${url}",'browserNotSupported':"Din browser understøtter ikke vektor visning. Følgende vektor visninger understøttes:\n${renderers}",'componentShouldBe':"addFeatures : komponenten skal være en ${geomType}",'getFeatureError':"getFeatureFromEvent blev kaldt på et lag uden en visning. Dette betyder som regel at du "+"har destrueret et lag, men ikke de håndteringer der var tilknyttet.",'minZoomLevelError':"Egenskaben minZoomLevel er kun beregnet til brug "+"med FixedZoomLevels. At dette WFS lag kontrollerer "+"minZoomLevel egenskaben, er et levn fra en tidligere "+"version. Vi kan desværre ikke fjerne dette uden at risikere "+"at ødelægge eksisterende OL baserede programmer der "+" benytter denne funktionalitet. "+"Egenskaben bør derfor ikke anvendes, og minZoomLevel "+"kontrollen herunder vil blive fjernet i version 3.0. "+"Benyt istedet min/max opløsnings indstillingerne, som "+"er beskrevet her: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS transaktion: LYKKEDES ${response}",'commitFailed':"WFS transaktion: MISLYKKEDES ${response}",'googleWarning':"Google laget kunne ikke indlæses.

"+"For at fjerne denne besked, vælg et nyt bagrundskort i "+"lagskifteren i øverste højre hjørne.

"+"Fejlen skyldes formentlig at Google Maps bibliotekts "+"scriptet ikke er inkluderet, eller ikke indeholder den "+"korrkte API nøgle for dit site.

"+"Udviklere: For hjælp til at få dette til at fungere, "+"klik her",'getLayerWarning':"${layerType}-laget kunne ikke indlæses.

"+"For at fjerne denne besked, vælg et nyt bagrundskort i "+"lagskifteren i øverste højre hjørne.

"+"Fejlen skyldes formentlig at ${layerLib} bibliotekts "+"scriptet ikke er inkluderet.

"+"Udviklere: For hjælp til at få dette til at fungere, "+"klik her",'scale':"Målforhold = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du har forsøgt at tilføje laget: ${layerName} til kortet, men det er allerede tilføjet",'reprojectDeprecated':"Du anvender indstillingen 'reproject' på laget ${layerName}."+"Denne indstilling bør ikke længere anvendes. Den var beregnet "+"til at vise data ovenpå kommercielle grundkort, men den funktionalitet "+"bør nu opnås ved at anvende Spherical Mercator understøttelsen. "+"Mere information er tilgængelig her: "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denne funktion bør ikke længere anvendes, og vil blive fjernet i version 3.0. "+"Anvend venligst funktionen ${newMethod} istedet.",'boundsAddError':"Du skal angive både x og y værdier i kaldet til add funktionen.",'lonlatAddError':"Du skal angive både lon og lat værdier i kaldet til add funktionen.",'pixelAddError':"Du skal angive både x og y værdier i kaldet til add funktionen.",'unsupportedGeometryType':"Geometri typen: ${geomType} er ikke understøttet.",'pagePositionFailed':"OpenLayers.Util.pagePosition fejlede: elementet med id ${elemId} er måske placeret forkert.",'filterEvaluateNotImplemented':"evaluering er ikke implementeret for denne filter type."};OpenLayers.Lang["de"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehandelte Anfragerückmeldung ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Grundkarte",'sameProjection':"Die Übersichtskarte funktioniert nur, wenn sie dieselbe Projektion wie die Hauptkarte verwendet",'readNotImplemented':"Lesen nicht implementiert.",'writeNotImplemented':"Schreiben nicht implementiert.",'noFID':"Ein Feature, für das keine FID existiert, kann nicht aktualisiert werden.",'errorLoadingGML':"Fehler beim Laden der GML-Datei ${url}",'browserNotSupported':"Ihr Browser unterstützt keine Vektordarstellung. Aktuell unterstützte Renderer:\n${renderers}",'componentShouldBe':"addFeatures: Komponente muss vom Typ ${geomType} sein",'getFeatureError':"getFeatureFromEvent wurde vom einem Layer ohne Renderer aufgerufen. Dies bedeutet normalerweise, dass ein Layer entfernt wurde, aber nicht Handler, die auf ihn verweisen.",'minZoomLevelError':"Die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Eigenschaft ist nur für die Verwendung mit \x3ccode\x3eFixedZoomLevels\x3c/code\x3e-untergeordneten Layers vorgesehen. Das dieser \x3ctt\x3ewfs\x3c/tt\x3e-Layer die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Eigenschaft überprüft ist ein Relikt der Vergangenheit. Wir können diese Überprüfung nicht entfernen, ohne das OL basierende Applikationen nicht mehr funktionieren. Daher markieren wir es als veraltet - die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Überprüfung wird in Version 3.0 entfernt werden. Bitte verwenden Sie stattdessen die Min-/Max-Lösung, wie sie unter http://trac.openlayers.org/wiki/SettingZoomLevels beschrieben ist.",'commitSuccess':"WFS-Transaktion: Erfolgreich ${response}",'commitFailed':"WFS-Transaktion: Fehlgeschlagen ${response}",'googleWarning':"Der Google-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der Google-Maps-Bibliothek nicht eingebunden wurde oder keinen gültigen API-Schlüssel für Ihre URL enthält.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden des Google-Layers",'getLayerWarning':"Der ${layerType}-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der \'${layerLib}\'-Bibliothek nicht eingebunden wurde.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden von Layern",'scale':"Maßstab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Sie versuchen den Layer „${layerName}“ zur Karte hinzuzufügen, er wurde aber bereits hinzugefügt",'reprojectDeprecated':"Sie verwenden die „Reproject“-Option des Layers ${layerName}. Diese Option ist veraltet: Sie wurde entwickelt um die Anzeige von Daten auf kommerziellen Basiskarten zu unterstützen, aber diese Funktion sollte jetzt durch Unterstützung der „Spherical Mercator“ erreicht werden. Weitere Informationen sind unter http://trac.openlayers.org/wiki/SphericalMercator verfügbar.",'methodDeprecated':"Die Methode ist veraltet und wird in 3.0 entfernt. Bitte verwende stattdessen ${newMethod}.",'boundsAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'lonlatAddError':"Beide Werte (lon und lat) müssen der add-Funktion übergeben werden.",'pixelAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'unsupportedGeometryType':"Nicht unterstützter Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fehlgeschlagen: Element mit Id ${elemId} möglicherweise falsch platziert.",'filterEvaluateNotImplemented':"„evaluate“ ist für diesen Filter-Typ nicht implementiert."});OpenLayers.Lang["el"]=OpenLayers.Util.applyDefaults({'scale':"Κλίμακα ~ 1 : ${scaleDenom}"});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.

"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"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.

"+"Developers: For help getting this working correctly, "+"click here",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.

"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.

"+"Developers: For help getting this working correctly, "+"click here",'scale':"Scale = 1 : ${scaleDenom}",'W':'W','E':'E','N':'N','S':'S','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.

"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.

"+"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.

"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"haga clic aquí",'getLayerWarning':"La capa ${layerType} no pudo ser cargada correctamente.

"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.

"+"Probablemente, esto se debe a que el script de "+"la biblioteca ${layerLib} "+"no fue correctamente incluido en su página.

"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"haga clic aquí",'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["fi"]=OpenLayers.Util.applyDefaults({'permalink':"Ikilinkki",'overlays':"Kerrokset",'baseLayer':"Peruskerros",'sameProjection':"Yleiskuvakarttaa voi käyttää vain, kun sillä on sama projektio kuin pääkartalla.",'W':"L",'E':"I",'N':"P",'S':"E"});OpenLayers.Lang["fr"]=OpenLayers.Util.applyDefaults({'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.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela 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.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'getLayerWarning':"La couche ${layerType} n\'est pas en mesure de se charger correctement.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela est possiblement causé par la non-inclusion de la librairie ${layerLib}.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'scale':"Echelle ~ 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S",'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é.",'filterEvaluateNotImplemented':"évaluer n\'a pas encore été implémenté pour ce type de filtre."});OpenLayers.Lang["fur"]=OpenLayers.Util.applyDefaults({'permalink':"Leam Permanent",'overlays':"Livei parsore",'baseLayer':"Livel di base",'browserNotSupported':"Il to sgarfadôr nol supuarte la renderizazion vetoriâl. Al moment a son supuartâts:\n${renderers}",'scale':"Scjale = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S"});OpenLayers.Lang["gl"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Solicitude non xerada; a resposta foi: ${statusText}",'permalink':"Ligazón permanente",'overlays':"Capas superpostas",'baseLayer':"Capa base",'sameProjection':"A vista xeral do mapa só funciona cando está na mesma proxección có mapa principal",'readNotImplemented':"Lectura non implementada.",'writeNotImplemented':"Escritura non implementada.",'noFID':"Non se pode actualizar a funcionalidade para a que non hai FID.",'errorLoadingGML':"Erro ao cargar o ficheiro GML $(url)",'browserNotSupported':"O seu navegador non soporta a renderización de vectores. Os renderizadores soportados actualmente son:\n${renderers}",'componentShouldBe':"addFeatures: o compoñente debera ser de tipo ${geomType}",'getFeatureError':"getFeatureFromEvent ten sido chamado a unha capa sen renderizador. Isto normalmente significa que destruíu unha capa, mais non o executador que está asociado con ela.",'minZoomLevelError':"A propiedade minZoomLevel é só para uso conxuntamente coas capas FixedZoomLevels-descendent. O feito de que esa capa wfs verifique o minZoomLevel é unha reliquia do pasado. Non podemos, con todo, eliminala sen a posibilidade de non romper as aplicacións baseadas en OL que poidan depender dela. Por iso a estamos deixando obsoleta (a comprobación minZoomLevel de embaixo será eliminada na versión 3.0). Por favor, no canto diso use o axuste de resolución mín/máx tal e como está descrito aquí: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacción WFS: ÉXITO ${response}",'commitFailed':"Transacción WFS: FALLIDA ${response}",'googleWarning':"A capa do Google non puido cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría do Google Maps ou ben non foi incluída ou ben non contén a clave API correcta para o seu sitio.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'getLayerWarning':"A capa ${layerType} foi incapaz de cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría ${layerLib} non foi ben incluída.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"L",'N':"N",'S':"S",'layerAlreadyAdded':"Intentou engadir a capa: ${layerName} ao mapa, pero xa fora engadida",'reprojectDeprecated':"Está usando a opción \"reproject\" na capa ${layerName}. Esta opción está obsoleta: o seu uso foi deseñado para a visualización de datos sobre mapas base comerciais, pero esta funcionalidade debera agora ser obtida utilizando a proxección Spherical Mercator. Hai dispoñible máis información en http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método está obsoleto e será eliminado na versión 3.0. Por favor, no canto deste use ${newMethod}.",'boundsAddError':"Debe achegar os valores x e y á función add.",'lonlatAddError':"Debe achegar tanto o valor lon coma o lat á función add.",'pixelAddError':"Debe achegar os valores x e y á función add.",'unsupportedGeometryType':"Tipo xeométrico non soportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallou: o elemento con id ${elemId} pode non estar na súa posición.",'filterEvaluateNotImplemented':"avaliar non está implementado para este tipo de filtro."});OpenLayers.Lang["gsw"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nit behandleti Aafrogsruckmäldig ${statusText}",'permalink':"Permalink",'overlays':"Iberlagerige",'baseLayer':"Grundcharte",'sameProjection':"D Ibersichts-Charte funktioniert nume, wänn si di glych Projäktion brucht wie d Hauptcharte",'readNotImplemented':"Läse nit implementiert.",'writeNotImplemented':"Schrybe nit implementiert.",'noFID':"E Feature, wu s kei FID derfir git, cha nit aktualisiert wäre.",'errorLoadingGML':"Fähler bim Lade vu dr GML-Datei ${url}",'browserNotSupported':"Dyy Browser unterstitzt kei Vektordarstellig. Aktuäll unterstitzti Renderer:\n${renderers}",'componentShouldBe':"addFeatures : Komponänt sott dr Typ ${geomType} syy",'getFeatureError':"getFeatureFromEvent isch uf eme Layer ohni Renderer ufgruefe wore. Des heisst normalerwys, ass Du e Layer kaputt gmacht hesch, aber nit dr Handler, wu derzue ghert.",'minZoomLevelError':"D minZoomLevel-Eigeschaft isch nume dänk fir d Layer, wu vu dr FixedZoomLevels abstamme. Ass dää wfs-Layer minZoomLevel prieft, scih e Relikt us dr Vergangeheit. Mir chenne s aber nit ändere ohni OL_basierti Aawändige villicht kaputt gehn, wu dervu abhänge. Us däm Grund het die Funktion d Eigeschaft \'deprecated\' iberchuu. D minZoomLevel-Priefig unte wird in dr Version 3.0 usegnuu. Bitte verwänd statt däm e min/max-Uflesig wie s do bschriben isch: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transaktion: ERFOLGRYCH ${response}",'commitFailed':"WFS-Transaktion: FÄHLGSCHLAA ${response}",'googleWarning':"Dr Google-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr Google-Maps-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vum Google-Layer \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'getLayerWarning':"Dr ${layerType}-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr \'${layerLib}\'-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vu Layer \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'scale':"Maßstab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Du hesch versuecht dää Layer in d Charte yyzfiege: ${layerName}, aber är isch schoi yygfiegt",'reprojectDeprecated':"Du bruchsch d \'reproject\'-Option bim ${layerName}-Layer. Die Option isch nimi giltig: si isch aagleit wore go Date iber kommerziälli Grundcharte lege, aber des sott mer jetz mache mit dr Unterstitzig vu Spherical Mercator. Meh Informatione git s uf http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Die Methode isch veraltet un wird us dr Version 3.0 usegnuu. Bitte verwäbnd statt däm ${newMethod}.",'boundsAddError':"Du muesch e x-Wärt un e y-Wärt yygee bi dr Zuefieg-Funktion",'lonlatAddError':"Du meusch e Lengi- un e Breiti-Grad yygee bi dr Zuefieg-Funktion.",'pixelAddError':"Du muesch x- un y-Wärt aagee bi dr Zuefieg-Funktion.",'unsupportedGeometryType':"Nit unterstitze Geometrii-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fählgschlaa: Elemänt mit ID ${elemId} isch villicht falsch gsetzt.",'filterEvaluateNotImplemented':"evaluiere isch nit implemäntiert in däm Filtertyp."});OpenLayers.Lang["hr"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nepodržani zahtjev ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Osnovna karta",'sameProjection':"Pregledna karta radi jedino kao je u istoj projekciji kao i glava karta",'readNotImplemented':"Čitanje nije implementirano.",'writeNotImplemented':"Pisanje nije implementirano.",'noFID':"Ne mogu ažurirati značajku za koju ne postoji FID.",'errorLoadingGML':"Greška u učitavanju GML datoteke ${url}",'browserNotSupported':"Vaš preglednik ne podržava vektorsko renderiranje. Trenutno podržani rendereri su: ${renderers}",'componentShouldBe':"addFeatures : komponenta bi trebala biti ${geomType}",'getFeatureError':"getFeatureFromEvent je pozvao Layer bez renderera. Ovo obično znači da ste uništiili Layer, a ne neki Handler koji je povezan s njim.",'commitSuccess':"WFS Transakcija: USPJEŠNA ${response}",'commitFailed':"WFS Transakcija: NEUSPJEŠNA ${response}",'scale':"Mjerilo = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokušali ste dodati layer: ${layerName} na kartu, ali je već dodan",'methodDeprecated':"Ova metoda nije odobrena i biti će maknuta u 3.0. Koristite ${newMethod}.",'boundsAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'lonlatAddError':"Morate dati obje vrijednosti , (lon i lat) da bi dodali funkciju.",'pixelAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'unsupportedGeometryType':"Nepodržani tip geometrije: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition nije uspjelo: element sa id ${elemId} može biti krivo smješten."});OpenLayers.Lang["hsb"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Wotmołwa njewobdźěłaneho naprašowanja ${statusText}",'permalink':"Trajny wotkaz",'overlays':"Naworštowanja",'baseLayer':"Zakładna runina",'sameProjection':"Přehladowa karta jenož funguje, hdyž je w samsnej projekciji kaž hłowna karta",'readNotImplemented':"Čitanje njeimplementowane.",'writeNotImplemented':"Pisanje njeimplementowane.",'noFID':"Funkcija, za kotruž FID njeje, njeda so aktualizować.",'errorLoadingGML':"Zmylk při začitowanju dataje ${url}",'browserNotSupported':"Twój wobhladowak wektorowe rysowanje njepodpěruje. Tuchwilu podpěrowane rysowaki su:\n${renderers}",'componentShouldBe':"addFeatures: komponenta měła ${geomType} być",'getFeatureError':"getFeatureFromEvent bu na woršće bjez rysowak zawołany. To zwjetša woznamjenja, zo sy worštu zničił, ale nic wobdźěłak, kotryž je z njej zwjazany.",'minZoomLevelError':"Kajkosć minZoomLevel je jenož za wužiwanje z worštami myslena, kotrež wot FixedZoomLevels pochadźeja. Zo tuta woršta wfs za minZoomLevel přepruwuje, je relikt zańdźenosće. Njemóžemy wšak ju wotstronić, bjeztoho zo aplikacije, kotrež na OpenLayers bazěruja a snano tutu kajkosć wužiwaja, hižo njefunguja. Tohodla smy ju jako zestarjenu woznamjenili -- přepruwowanje za minZoomLevel budu so we wersiji 3.0 wotstronjeć. Prošu wužij město toho nastajenje min/max, kaž je tu wopisane: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transakcija: WUSPĚŠNA ${response}",'commitFailed':"WFS-Transakcija: NJEPORADŹENA ${response}",'googleWarning':"Woršta Google njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki Google Maps pak njebu zapřijaty pak njewobsahuje korektny kluč API za twoje sydło.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'getLayerWarning':"Woršta ${layerType} njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki ${layerLib} njebu korektnje zapřijaty.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'scale':"Měritko = 1 : ${scaleDenom}",'W':"Z",'E':"W",'N':"S",'S':"J",'layerAlreadyAdded':"Sy spytał runinu ${layerName} karće dodać, ale je so hižo dodała",'reprojectDeprecated':"Wužiwaš opciju \"reproject\" wořšty ${layerName}. Tuta opcija je zestarjena: jeje wužiwanje bě myslene, zo by zwobraznjenje datow nad komercielnymi bazowymi kartami podpěrało, ale funkcionalnosć měła so nětko z pomocu Sperical Mercator docpěć. Dalše informacije steja na http://trac.openlayers.org/wiki/SphericalMercator k dispoziciji.",'methodDeprecated':"Tuta metoda je so njeschwaliła a budźe so w 3.0 wotstronjeć. Prošu wužij ${newMethod} město toho.",'boundsAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'lonlatAddError':"Dyrbiš hódnotu lon kaž tež lat funkciji \"add\" přepodać.",'pixelAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'unsupportedGeometryType':"Njepodpěrowany geometrijowy typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition je so njeporadźił: element z id ${elemId} bu snano wopak zaměstnjeny.",'filterEvaluateNotImplemented':"wuhódnoćenje njeje za tutón filtrowy typ implementowany."});OpenLayers.Lang["hu"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nem kezelt kérés visszatérése ${statusText}",'permalink':"Permalink",'overlays':"Rávetítések",'baseLayer':"Alapréteg",'sameProjection':"Az áttekintő térkép csak abban az esetben működik, ha ugyanazon a vetületen van, mint a fő térkép.",'readNotImplemented':"Olvasás nincs végrehajtva.",'writeNotImplemented':"Írás nincs végrehajtva.",'noFID':"Nem frissíthető olyan jellemző, amely nem rendelkezik FID-del.",'errorLoadingGML':"Hiba GML-fájl betöltésekor ${url}",'browserNotSupported':"A böngészője nem támogatja a vektoros renderelést. A jelenleg támogatott renderelők:\n${renderers}",'componentShouldBe':"addFeatures : az összetevőnek ilyen típusúnak kell lennie: ${geomType}",'getFeatureError':"getFeatureFromEvent réteget hívott meg renderelő nélkül. Ez rendszerint azt jelenti, hogy megsemmisített egy fóliát, de néhány ahhoz társított kezelőt nem.",'minZoomLevelError':"A minZoomLevel tulajdonságot csak a következővel való használatra szánták: FixedZoomLevels-leszármazott fóliák. Ez azt jelenti, hogy a minZoomLevel wfs fólia jelölőnégyzetei már a múlté. Mi azonban nem távolíthatjuk el annak a veszélye nélkül, hogy az esetlegesen ettől függő OL alapú alkalmazásokat tönkretennénk. Ezért ezt érvénytelenítjük -- a minZoomLevel az alul levő jelölőnégyzet a 3.0-s verzióból el lesz távolítva. Kérjük, helyette használja a min/max felbontás beállítást, amelyről az alábbi helyen talál leírást: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS tranzakció: SIKERES ${response}",'commitFailed':"WFS tranzakció: SIKERTELEN ${response}",'googleWarning':"A Google fólia betöltése sikertelen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a Google Maps könyvtár parancsfájlja nem található, vagy nem tartalmazza az Ön oldalához tartozó megfelelő API-kulcsot.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'getLayerWarning':"A(z) ${layerType} fólia nem töltődött be helyesen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a(z) ${layerLib} könyvtár parancsfájlja helytelen.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'scale':"Lépték = 1 : ${scaleDenom}",'W':"Ny",'E':"K",'N':"É",'S':"D",'layerAlreadyAdded':"Megpróbálta hozzáadni a(z) ${layerName} fóliát a térképhez, de az már hozzá van adva",'reprojectDeprecated':"Ön a \'reproject\' beállítást használja a(z) ${layerName} fólián. Ez a beállítás érvénytelen: használata az üzleti alaptérképek fölötti adatok megjelenítésének támogatására szolgált, de ezt a funkció ezentúl a Gömbi Mercator használatával érhető el. További információ az alábbi helyen érhető el: http://trac.openlayers.org/wiki/SphericalMercator",'methodDeprecated':"Ez a módszer érvénytelenítve lett és a 3.0-s verzióból el lesz távolítva. Használja a(z) ${newMethod} módszert helyette.",'boundsAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'lonlatAddError':"A hossz. és szél. értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'pixelAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'unsupportedGeometryType':"Nem támogatott geometriatípus: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition sikertelen: lehetséges, hogy a(z) ${elemId} azonosítójú elem téves helyre került.",'filterEvaluateNotImplemented':"ennél a szűrőtípusnál kiértékelés nem hajtódik végre."});OpenLayers.Lang["ia"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Le responsa a un requesta non esseva maneate: ${statusText}",'permalink':"Permaligamine",'overlays':"Superpositiones",'baseLayer':"Strato de base",'sameProjection':"Le mini-carta functiona solmente si illo es in le mesme projection que le carta principal",'readNotImplemented':"Lectura non implementate.",'writeNotImplemented':"Scriptura non implementate.",'noFID':"Non pote actualisar un elemento sin FID.",'errorLoadingGML':"Error al cargamento del file GML ${url}",'browserNotSupported':"Tu navigator non supporta le rendition de vectores. Le renditores actualmente supportate es:\n${renderers}",'componentShouldBe':"addFeatures: le componente debe esser del typo ${geomType}",'getFeatureError':"getFeatureFromEvent ha essite appellate in un strato sin renditor. Isto significa generalmente que tu ha destruite un strato, ma lassava un gestor associate con illo.",'minZoomLevelError':"Le proprietate minZoomLevel es solmente pro uso con le stratos descendente de FixedZoomLevels. Le facto que iste strato WFS verifica minZoomLevel es un reliquia del passato. Nonobstante, si nos lo remove immediatemente, nos pote rumper applicationes a base de OL que depende de illo. Ergo nos lo declara obsolete; le verification de minZoomLevel in basso essera removite in version 3.0. Per favor usa in su loco le configuration de resolutiones min/max como describite a: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS: SUCCESSO ${response}",'commitFailed':"Transaction WFS: FALLEVA ${response}",'googleWarning':"Le strato Google non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de Google Maps non esseva includite o non contine le clave API correcte pro tu sito.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclicca hic\x3c/a",'getLayerWarning':"Le strato ${layerType} non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de ${layerLib} non esseva correctemente includite.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclicca hic\x3c/a\x3e",'scale':"Scala = 1 : ${scaleDenom}",'W':"W",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Tu tentava adder le strato: ${layerName} al carta, ma illo es ja presente",'reprojectDeprecated':"Tu usa le option \'reproject\' in le strato ${layerName} layer. Iste option es obsolescente: illo esseva pro poter monstrar datos super cartas de base commercial, ma iste functionalitate pote ora esser attingite con le uso de Spherical Mercator. Ulterior information es disponibile a http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Iste methodo ha essite declarate obsolescente e essera removite in version 3.0. Per favor usa ${newMethod} in su loco.",'boundsAddError':"Tu debe passar le duo valores x e y al function add.",'lonlatAddError':"Tu debe passar le duo valores lon e lat al function add.",'pixelAddError':"Tu debe passar le duo valores x e y al function add.",'unsupportedGeometryType':"Typo de geometria non supportate: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falleva: le elemento con id ${elemId} pote esser mal placiate.",'filterEvaluateNotImplemented':"\"evaluate\" non es implementate pro iste typo de filtro."});OpenLayers.Lang["is"]=OpenLayers.Util.applyDefaults({'permalink':"Varanlegur tengill",'overlays':"Þekjur",'baseLayer':"Grunnlag",'sameProjection':"Yfirlitskortið virkar aðeins ef það er í sömu vörpun og aðalkortið",'readNotImplemented':"Skrifun er óútfærð.",'writeNotImplemented':"Lestur er óútfærður.",'errorLoadingGML':"Villa kom upp við að hlaða inn GML skránni ${url}",'scale':"Skali = 1 : ${scaleDenom}",'layerAlreadyAdded':"Þú reyndir að bæta laginu ${layerName} á kortið en það er þegar búið að bæta því við",'methodDeprecated':"Þetta fall hefur verið úrelt og verður fjarlægt í 3.0. Notaðu ${newMethod} í staðin."});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.

"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.

"+"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.

"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"clicca qui",'getLayerWarning':"Il livello ${layerType} non è riuscito a caricare correttamente.

"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.

"+"Più precisamente, ciò accade perchè la libreria ${layerLib} "+"non è stata inclusa nella pagina.

"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"clicca qui",'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["ja"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"未処理の要求は ${statusText} を返します",'permalink':"パーマリンク",'overlays':"オーバーレイ",'baseLayer':"基底レイヤー",'sameProjection':"概観地図はメインの地図と同じ投影法をとる場合のみ機能します",'readNotImplemented':"読み込みは実装されていません。",'writeNotImplemented':"書き込みは実装されていません。",'noFID':"FID のない地物は更新できません。",'errorLoadingGML':"GML ファイル ${url} の読み込みエラー",'browserNotSupported':"あなたのブラウザはベクターグラフィックスの描写に対応していません。現時点で対応しているソフトウェアは以下のものです。\n${renderers}",'componentShouldBe':"addFeatures: 要素は ${geomType} であるべきです",'getFeatureError':"getFeatureFromEvent がレンダラーのないレイヤーから呼ばれました。通常、これはあなたがレイヤーを、それに関連づけられたいくつかのハンドラを除いて、破壊してしまったことを意味します。",'minZoomLevelError':"minZoomLevel プロパティは FixedZoomLevels を継承するレイヤーでの使用のみを想定しています。この minZoomLevel に対する WFS レイヤーの検査は歴史的なものです。しかしながら、この検査を除去するとそれに依存する OpenLayers ベースのアプリケーションを破壊してしまう可能性があります。よって廃止が予定されており、この minZoomLevel 検査はバージョン3.0で除去されます。代わりに、http://trac.openlayers.org/wiki/SettingZoomLevels で解説されている、最小および最大解像度設定を使用してください。",'commitSuccess':"WFS トランザクション: 成功 ${response}",'commitFailed':"WFS トランザクション: 失敗 ${response}",'googleWarning':"Google レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは Google マップ用ライブラリのスクリプトが組み込まれていないか、あなたのサイトに対応する正しい API キーが設定されていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'getLayerWarning':"${layerType} レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは ${layerLib} ライブラリのスクリプトが正しく組み込まれていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'scale':"縮尺 = 1 : ${scaleDenom}",'W':"西",'E':"東",'N':"北",'S':"南",'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 と y の値両方を add 関数に渡さなければなりません。",'unsupportedGeometryType':"未対応の形状型: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition が失敗しました: id ${elemId} をもつ要素が誤った位置にある可能性があります。",'filterEvaluateNotImplemented':"このフィルター型について evaluate は実装されていません。"});OpenLayers.Lang["km"]=OpenLayers.Util.applyDefaults({'permalink':"តំណភ្ជាប់អចិន្ត្រៃយ៍",'baseLayer':"ស្រទាប់បាត​",'errorLoadingGML':"កំហុសកំឡុងពេលផ្ទុកឯកសារ GML ${url}",'scale':"មាត្រដ្ឋាន = ១ ៖ ${scaleDenom}"});OpenLayers.Lang["ksh"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Met dä Antwoot op en Aanfrooch ham_mer nix aanjefange: ${statusText}",'permalink':"Lengk op Duuer",'overlays':"Drövver jelaat",'baseLayer':"Jrund-Nivoh",'sameProjection':"De Övverseeschs_Kaat deiht et bloß, wann se de sälve Projäxjuhn bruche deiht, wi de Houp_Kaat",'readNotImplemented':"„\x3ccode lang=\"en\"\x3eread\x3c/code\x3e“ is em Projramm nit fürjesinn.",'writeNotImplemented':"„\x3ccode lang=\"en\"\x3ewrite\x3c/code\x3e“ is em Projramm nit fürjesinn.",'noFID':"En Saach, woh kein \x3ci lang=\"en\"\x3eFID\x3c/i\x3e för doh es, löht sesch nit ändere.",'errorLoadingGML':"Fähler beim \x3ci lang=\"en\"\x3eGML\x3c/i\x3e-Datei-Laade vun \x3ccode\x3e${url}\x3c/code\x3e",'browserNotSupported':"Dinge Brauser kann kein Väktore ußjävve. De Zoote Ußjaabe, di em Momang jon, sen:\n${renderers}",'componentShouldBe':"\x3ccode lang=\"en\"\x3eaddFeatures\x3c/code\x3e: dä Aandeil sullt vun dä Zoot „\x3ccode lang=\"en\"\x3e${geomType}\x3c/code\x3e“ sin.",'getFeatureError':"\x3ccode lang=\"en\"\x3egetFeatureFromEvent\x3c/code\x3e es vun enem Nivoh opjeroofe woode, woh et kei Projramm zom Ußjävve jit. Dat bedügg för jewöhnlesch, dat De e Nivoh kapott jemaat häs, ävver nit e Projramm för domet ömzejonn, wat domet verbonge es.",'minZoomLevelError':"De Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ es bloß doför jedaach, dat mer se met dä Nivvohß bruch, di vun \x3ccode lang=\"en\"\x3eFixedZoomLevels\x3c/code\x3e affhange don. Dat dat \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Nivvoh övverhoup de Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ pröhfe deiht, es noch övveresch vun fröhjer. Mer künne dat ävver jez nit fott lohße, oohne dat mer Jevaa loufe, dat Aanwendunge vun OpenLayers nit mieh loufe, di sesch doh velleijsch noch drop am verlohße sin. Dröm sare mer, dat mer et nit mieh han welle, un de „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“-Eijeschaff weed hee vun de Version 3.0 af nit mieh jeprööf wäde. Nemm doför de Enstellung för de hühßte un de kleinßte Oplöhsung, esu wi et en http://trac.openlayers.org/wiki/SettingZoomLevels opjeschrevve es.",'commitSuccess':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es joot jeloufe: ${response}",'commitFailed':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es scheif jejange: ${response}",'googleWarning':"Dat Nivvoh \x3ccode lang=\"en\"\x3eGoogle\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhke, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat wiel dat \x3ci lang=\"en\"\x3eGoogle-Maps\x3c/i\x3e-Skrepp entweeder nit reschtesch enjebonge wood, udder nit dä reschtejje \x3ci lang=\"en\"\x3eAPI\x3c/i\x3e-Schlößel för Ding Web-ßait scheke deiht.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/Google\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'getLayerWarning':"Dat Nivvoh \x3ccode\x3e${layerType}\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhkre, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat, wiel dat Skrepp \x3ccode\x3e${layerLib}\x3c/code\x3e nit reschtesch enjebonge wood.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_Et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/${layerLib}\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'scale':"Mohßshtaab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Do häß versöhk, dat Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e en di Kaat eren ze bränge, et wohr ävver ald do dren.",'reprojectDeprecated':"Do bruchs de Ußwahl \x3ccode\x3ereproject\x3c/code\x3e op däm Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e. Di Ußwahl es nit mieh jähn jesinn. Se wohr doför jedaach, öm Date op jeschääfsmäßesch eruß jejovve Kaate bovve drop ze moole, wat ävver enzwesche besser met dä Öngershtözung för de ßfääresche Mäkaator Beldscher jeiht. Doh kanns De mieh drövver fenge op dä Sigg: http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Hee di Metood es nim_mih aktoäll un et weed se en dä Version 3.0 nit mieh jävve. Nemm \x3ccode\x3e${newMethod}\x3c/code\x3e doföör.",'boundsAddError':"Do moß beeds vun de \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e Wääte aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'lonlatAddError':"Do moß beeds \x3ccode\x3elon\x3c/code\x3e un \x3ccode\x3elat\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'pixelAddError':"Do moß beeds \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'unsupportedGeometryType':"De Zoot Jommetrii dom_mer nit ongershtöze: \x3ccode\x3e${geomType}\x3c/code\x3e",'pagePositionFailed':"\x3ccode lang=\"en\"\x3eOpenLayers.Util.pagePosition\x3c/code\x3e es donevve jejange: dat Denge met dä Kännong \x3ccode\x3e${elemId}\x3c/code\x3e künnt am verkeehte Plaz sin.",'filterEvaluateNotImplemented':"„\x3ccode lang=\"en\"\x3eevaluate\x3c/code\x3e“ es för di Zoot Fellter nit enjereschdt."});OpenLayers.Lang["nb"]={'unhandledRequest':"Ubehandlet forespørsel returnerte ${statusText}",'permalink':"Kobling til denne siden",'overlays':"Kartlag",'baseLayer':"Bakgrunnskart",'sameProjection':"Oversiktskartet fungerer bare når det har samme projeksjon som hovedkartet",'readNotImplemented':"Lesing er ikke implementert.",'writeNotImplemented':"Skriving er ikke implementert.",'noFID':"Kan ikke oppdatere et feature (et objekt) som ikke har FID.",'errorLoadingGML':"Feil under lasting av GML-fil ${url}",'browserNotSupported':"Din nettleser støtter ikke vektortegning. Tegnemetodene som støttes er:\n${renderers}",'componentShouldBe':"addFeatures : komponenten må være en ${geomType}",'getFeatureError':"getFeatureFromEvent har blitt kjørt mot et lag uten noen tegnemetode. Dette betyr som regel at du "+"fjernet et lag uten å fjerne alle håndterere tilknyttet laget.",'minZoomLevelError':"Egenskapen minZoomLevel er kun ment til bruk på lag "+"basert på FixedZoomLevels. At dette wfs-laget sjekker "+"minZoomLevel er en etterlevning fra tidligere versjoner. Det kan dog ikke "+"tas bort uten å risikere at OL-baserte applikasjoner "+"slutter å virke, så det er merket som foreldet: "+"minZoomLevel i sjekken nedenfor vil fjernes i 3.0. "+"Vennligst bruk innstillingene for min/maks oppløsning "+"som er beskrevet her: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transaksjon: LYKTES ${response}",'commitFailed':"WFS-transaksjon: MISLYKTES ${response}",'googleWarning':"Google-laget kunne ikke lastes.

"+"Bytt til et annet bakgrunnslag i lagvelgeren i "+"øvre høyre hjørne for å slippe denne meldingen.

"+"Sannsynligvis forårsakes feilen av at Google Maps-biblioteket "+"ikke er riktig inkludert på nettsiden, eller at det ikke er "+"angitt riktig API-nøkkel for nettstedet.

"+"Utviklere: For hjelp til å få dette til å virke se "+"her.",'getLayerWarning':"${layerType}-laget kunne ikke lastes.

"+"Bytt til et annet bakgrunnslag i lagvelgeren i "+"øvre høyre hjørne for å slippe denne meldingen.

"+"Sannsynligvis forårsakes feilen av at "+"${layerLib}-biblioteket ikke var riktig inkludert "+"på nettsiden.

"+"Utviklere: For hjelp til å få dette til å virke se "+"her.",'scale':"Skala 1 : ${scaleDenom}",'layerAlreadyAdded':"Du forsøkte å legge til laget ${layerName} på kartet, men det er allerede lagt til",'reprojectDeprecated':"Du bruker innstillingen 'reproject' på laget ${layerName}. "+"Denne innstillingen er foreldet, den var ment for å støtte "+"visning av kartdata over kommersielle bakgrunnskart, men det "+"bør nå gjøres med støtten for Spherical Mercator. Mer informasjon "+"finnes på http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denne metoden er markert som foreldet og vil bli fjernet i 3.0. "+"Vennligst bruk ${newMethod} i stedet.",'boundsAddError':"Du må gi både x- og y-verdier til funksjonen add.",'lonlatAddError':"Du må gi både lon- og lat-verdier til funksjonen add.",'pixelAddError':"Du må gi både x- og y-verdier til funksjonen add.",'unsupportedGeometryType':"Geometritypen ${geomType} er ikke støttet",'pagePositionFailed':"OpenLayers.Util.pagePosition feilet: elementet med id ${elemId} kan være feilplassert.",'end':''};OpenLayers.Lang["no"]=OpenLayers.Lang["nb"];OpenLayers.Lang["nds"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehannelt Trüchmellels för de Anfraag ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Achtergrundkoort",'sameProjection':"De Översichtskoort geiht blot, wenn de sülve Projekschoon as bi de Hööftkoort bruukt warrt",'readNotImplemented':"Lesen is nich inricht.",'writeNotImplemented':"Schrieven is nich inricht.",'noFID':"En Feature, dat keen FID hett, kann nich aktuell maakt warrn.",'errorLoadingGML':"Fehler bi’t Laden vun de GML-Datei ${url}",'browserNotSupported':"Dien Browser ünnerstütt keen Vektorbiller. Ünnerstütt Renderers:\n${renderers}",'componentShouldBe':"addFeatures : Kumponent schull man den Typ ${geomType} hebben",'getFeatureError':"getFeatureFromEvent is von en Laag ahn Render opropen worrn. Dat bedüüdt normalerwies, dat en Laag wegmaakt worrn is, aver nich de Handler, de dor op verwiest.",'commitSuccess':"WFS-Transakschoon: hett klappt ${response}",'commitFailed':"WFS-Transakschoon: hett nich klappt ${response}",'scale':"Skaal = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du versöchst de Laag „${layerName}“ to de Koort totofögen, man de is al toföögt",'methodDeprecated':"Disse Methood is oold un schall dat in 3.0 nich mehr geven. Bruuk dor man beter ${newMethod} för.",'boundsAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'lonlatAddError':"De Weert lon un lat, de mööt all beid an de add-Funkschoon övergeven warrn.",'pixelAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'unsupportedGeometryType':"Nich ünnerstütt Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition güng nich: Element mit de Id ${elemId} is villicht an’n verkehrten Platz."});OpenLayers.Lang["nl"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Het verzoek is niet afgehandeld met de volgende melding: ${statusText}",'permalink':"Permanente verwijzing",'overlays':"Overlays",'baseLayer':"Achtergrondkaart",'sameProjection':"De overzichtskaart werkt alleen als de projectie gelijk is aan de projectie van de hoofdkaart",'readNotImplemented':"Lezen is niet geïmplementeerd.",'writeNotImplemented':"Schrijven is niet geïmplementeerd.",'noFID':"Een optie die geen FID heeft kan niet bijgewerkt worden.",'errorLoadingGML':"Er is een fout opgetreden bij het laden van het GML bestand van ${url}",'browserNotSupported':"Uw browser ondersteunt het weergeven van vectoren niet.\nMomenteel ondersteunde weergavemogelijkheden:\n${renderers}",'componentShouldBe':"addFeatures : component moet van het type ${geomType} zijn",'getFeatureError':"getFeatureFromEvent is aangeroepen op een laag zonder rederer.\nDit betekent meestal dat u een laag hebt verwijderd, maar niet een handler die ermee geassocieerd was.",'minZoomLevelError':"De eigenschap minZoomLevel is alleen bedoeld voor gebruik lagen met die afstammen van FixedZoomLevels-lagen.\nDat deze WFS-laag minZoomLevel controleert, is een overblijfsel uit het verleden.\nWe kunnen deze controle echter niet verwijderen zonder op OL gebaseerde applicaties die hervan afhankelijk zijn stuk te maken.\nDaarom heeft deze functionaliteit de eigenschap \'deprecated\' gekregen - de minZoomLevel wordt verwijderd in versie 3.0.\nGebruik in plaats van deze functie de mogelijkheid om min/max voor resolutie in te stellen zoals op de volgende pagina wordt beschreven:\nhttp://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transactie: succesvol ${response}",'commitFailed':"WFS-transactie: mislukt ${response}",'googleWarning':"De Google-Layer kon niet correct geladen worden.\x3cbr /\x3e\x3cbr /\x3e\nOm deze melding niet meer te krijgen, moet u een andere achtergrondkaart kiezen in de laagwisselaar in de rechterbovenhoek.\x3cbr /\x3e\x3cbr /\x3e\nDit komt waarschijnlijk doordat de bibliotheek ${layerLib} niet correct ingevoegd is.\x3cbr /\x3e\x3cbr /\x3e\nOntwikkelaars: \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklik hier\x3c/a\x3e om dit werkend te krijgen.",'getLayerWarning':"De laag ${layerType} kon niet goed geladen worden.\x3cbr /\x3e\x3cbr /\x3e\nOm deze melding niet meer te krijgen, moet u een andere achtergrondkaart kiezen in de laagwisselaar in de rechterbovenhoek.\x3cbr /\x3e\x3cbr /\x3e\nDit komt waarschijnlijk doordat de bibliotheek ${layerLib} niet correct is ingevoegd.\x3cbr /\x3e\x3cbr /\x3e\nOntwikkelaars: \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklik hier\x3c/a\x3e om dit werkend te krijgen.",'scale':"Schaal = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"Z",'layerAlreadyAdded':"U hebt geprobeerd om de laag ${layerName} aan de kaart toe te voegen, maar deze is al toegevoegd",'reprojectDeprecated':"U gebruikt de optie \'reproject\' op de laag ${layerName}.\nDeze optie is vervallen: deze optie was ontwikkeld om gegevens over commerciële basiskaarten weer te geven, maar deze functionaliteit wordt nu bereikt door ondersteuning van Spherical Mercator.\nMeer informatie is beschikbaar op http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Deze methode is verouderd en wordt verwijderd in versie 3.0.\nGebruik ${newMethod}.",'boundsAddError':"U moet zowel de x- als de y-waarde doorgeven aan de toevoegfunctie.",'lonlatAddError':"U moet zowel de lengte- als de breedtewaarde doorgeven aan de toevoegfunctie.",'pixelAddError':"U moet zowel de x- als de y-waarde doorgeven aan de toevoegfunctie.",'unsupportedGeometryType':"Dit geometrietype wordt niet ondersteund: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition is mislukt: het element met id ${elemId} is wellicht onjuist geplaatst.",'filterEvaluateNotImplemented':"evalueren is niet geïmplementeerd voor dit filtertype."});OpenLayers.Lang["nn"]=OpenLayers.Util.applyDefaults({'scale':"Skala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du freista å leggja til laget «${layerName}» på kartet, men det har alt vorte lagt til.",'boundsAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen.",'lonlatAddError':"Du er nøydd til å gje både lon- og lat-verdiar til «add»-funksjonen.",'pixelAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen."});OpenLayers.Lang["pt-br"]=OpenLayers.Util.applyDefaults({'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.\x3cbr\x3e\x3cbr\x3ePara se livrar dessa mensagem, selecione uma nova Camada Base, na ferramenta de alternação de camadas localização do canto superior direito.\x3cbr\x3e\x3cbr\x3eMuito 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.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: Para obter ajuda em solucionar esse problema \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ecliquem aqui\x3c/a\x3e",'getLayerWarning':"Não foi possível carregar a camada ${layerType} corretamente.\x3cbr\x3e\x3cbr\x3ePara se livrar dessa mensagem, selecione uma nova Camada Base, na ferramenta de alternação de camadas localização do canto superior direito.\x3cbr\x3e\x3cbr\x3eMuito provavelmente, isso foi causado porque o script da biblioteca ${layerLib} não foi incluído corretamente.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: Para obter ajuda em solucionar esse problema \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ecliquem aqui\x3c/a\x3e",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"L",'N':"N",'S':"S",'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.",'filterEvaluateNotImplemented':"evaluete não está implementado para este tipo de filtro."});OpenLayers.Lang["pt"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Servidor devolveu erro não contemplado ${statusText}",'permalink':"Ligação permanente",'overlays':"Sobreposições",'baseLayer':"Camada Base",'sameProjection':"O mapa panorâmico só funciona quando está na mesma projeção que o mapa principal",'readNotImplemented':"Leitura não implementada.",'writeNotImplemented':"Escrita não implementada.",'noFID':"Não é possível atualizar um elemento para a qual não há FID.",'errorLoadingGML':"Erro ao carregar ficheiro GML ${url}",'browserNotSupported':"O seu navegador não suporta renderização vetorial. Actualmente os renderizadores suportados são:\n${renderers}",'componentShouldBe':"addFeatures: componente deve ser um(a) ${geomType}",'getFeatureError':"getFeatureFromEvent foi chamado numa camada sem renderizador. Isto normalmente significa que destruiu uma camada, mas não um manipulador \'\'(handler)\'\' que lhe está associado.",'minZoomLevelError':"A propriedade minZoomLevel só deve ser usada com as camadas descendentes da FixedZoomLevels. A verificação da propriedade por esta camada wfs é uma relíquia do passado. No entanto, não podemos removê-la sem correr o risco de afectar aplicações OL que dependam dela. Portanto, estamos a torná-la obsoleta -- a verificação minZoomLevel será removida na versão 3.0. Em vez dela, por favor, use as opções de resolução min/max descritas aqui: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacção WFS: SUCESSO ${response}",'commitFailed':"Transacção WFS: FALHOU ${response}",'googleWarning':"A Camada Google não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara deixar de receber esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca do Google Maps não foi incluído ou não contém a chave API correcta para o seu sítio.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'getLayerWarning':"A camada ${layerType} não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara desactivar esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca ${layerLib} não foi incluído correctamente.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Você tentou adicionar a camada: ${layerName} ao mapa, mas ela já tinha sido adicionada antes",'reprojectDeprecated':"Está usando a opção \'reproject\' na camada ${layerName}. Esta opção é obsoleta: foi concebida para permitir a apresentação de dados sobre mapas-base comerciais, mas esta funcionalidade é agora suportada pelo Mercator Esférico. Mais informação está disponível em http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método foi declarado obsoleto e será removido na versão 3.0. Por favor, use ${newMethod} em vez disso.",'boundsAddError':"Você deve passar tanto o valor x como o y à função de adição.",'lonlatAddError':"Você deve passar tanto o valor lon como o lat à função de adição.",'pixelAddError':"Você deve passar tanto o valor x como o y à função de adição.",'unsupportedGeometryType':"Tipo de geometria não suportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falhou: o elemento com o id ${elemId} poderá estar mal-posicionado.",'filterEvaluateNotImplemented':"avaliar não está implementado para este tipo de filtro."});OpenLayers.Lang["ru"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Необработанный запрос вернул ${statusText}",'permalink':"Постоянная ссылка",'overlays':"Слои",'baseLayer':"Основной слой",'sameProjection':"Обзорная карта работает только тогда, когда имеет ту же проекцию, что и основная",'readNotImplemented':"Чтение не реализовано.",'writeNotImplemented':"Запись не реализована.",'noFID':"Невозможно обновить объект, для которого нет FID.",'errorLoadingGML':"Ошибка при загрузке файла GML ${url}",'browserNotSupported':"Ваш браузер не поддерживает векторную графику. На данный момент поддерживаются:\n${renderers}",'componentShouldBe':"addFeatures: компонент должен быть ${geomType}",'getFeatureError':"getFeatureFromEvent вызван для слоя без рендерера. Обычно это говорит о том, что вы уничтожили слой, но оставили связанный с ним обработчик.",'minZoomLevelError':"Свойство minZoomLevel предназначено только для использования со слоями, являющимися потомками FixedZoomLevels. То, что этот WFS-слой проверяется на minZoomLevel — реликт прошлого. Однако мы не можем удалить эту функцию, так как, возможно, от неё зависят некоторые основанные на OpenLayers приложения. Функция объявлена устаревшей — проверка minZoomLevel будет удалена в 3.0. Пожалуйста, используйте вместо неё настройку мин/макс разрешения, описанную здесь: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Транзакция WFS: УСПЕШНО ${response}",'commitFailed':"Транзакция WFS: ОШИБКА ${response}",'googleWarning':"Слой Google не удалось нормально загрузить.\x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека Google Maps не была включена или не содержит корректного API-ключа для вашего сайта.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'getLayerWarning':"Слой ${layerType} не удалось нормально загрузить. \x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека ${layerLib} не была включена или была включена некорректно.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'scale':"Масштаб = 1 : ${scaleDenom}",'W':"З",'E':"В",'N':"С",'S':"Ю",'layerAlreadyAdded':"Вы попытались добавить слой «${layerName}» на карту, но он уже был добавлен",'reprojectDeprecated':"Вы используете опцию \'reproject\' для слоя ${layerName}. Эта опция является устаревшей: ее использование предполагалось для поддержки показа данных поверх коммерческих базовых карт, но теперь этот функционал несёт встроенная поддержка сферической проекции Меркатора. Больше сведений доступно на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Этот метод считается устаревшим и будет удалён в версии 3.0. Пожалуйста, пользуйтесь ${newMethod}.",'boundsAddError':"Функции add надо передавать оба значения, x и y.",'lonlatAddError':"Функции add надо передавать оба значения, lon и lat.",'pixelAddError':"Функции add надо передавать оба значения, x и y.",'unsupportedGeometryType':"Неподдерживаемый тип геометрии: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: элемент с id ${elemId} может находиться не в нужном месте.",'filterEvaluateNotImplemented':"evaluate не реализовано для фильтра данного типа."});OpenLayers.Lang["sk"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Neobslúžené požiadavky vracajú ${statusText}",'permalink':"Trvalý odkaz",'overlays':"Prekrytia",'baseLayer':"Základná vrstva",'sameProjection':"Prehľadová mapka funguje iba vtedy, keď je v rovnakej projekcii ako hlavná mapa",'readNotImplemented':"Čítanie nie je implementované.",'writeNotImplemented':"Zápis nie je implementovaný.",'noFID':"Nie je možné aktualizovať vlastnosť, pre ktorú neexistuje FID.",'errorLoadingGML':"Chyba pri načítaní súboru GML ${url}",'browserNotSupported':"Váš prehliadač nepodporuje vykresľovanie vektorov. Momentálne podporované vykresľovače sú:\n${renderers}",'componentShouldBe':"addFeatures: komponent by mal byť ${geomType}",'getFeatureError':"getFeatureFromEvent bola zavolaná na vrstve bez vykresľovača. To zvyčajne znamená, že ste odstránili vrstvu, ale nie niektorú z obslúh, ktorá je s ňou asociovaná.",'minZoomLevelError':"Vlastnosť minZoomLevel je určený iba na použitie s vrstvami odvodenými od FixedZoomLevels. To, že táto wfs vrstva kontroluje minZoomLevel je pozostatok z minulosti. Nemôžeme ho však odstrániť, aby sme sa vyhli možnému porušeniu aplikácií založených na Open Layers, ktoré na tomto môže závisieť. Preto ho označujeme ako zavrhovaný - dolu uvedená kontrola minZoomLevel bude odstránená vo verzii 3.0. Použite prosím namiesto toho kontrolu min./max. rozlíšenia podľa tu uvedeného popisu: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transakcia WFS: ÚSPEŠNÁ ${response}",'commitFailed':"Transakcia WFS: ZLYHALA ${response}",'googleWarning':"Vrstvu Google nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice Google Maps buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'getLayerWarning':"Vrstvu ${layerType} nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice ${layerType} buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/${layerType}\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'scale':"Mierka = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokúsili ste sa do mapy pridať vrstvu ${layerName}, ale tá už bola pridaná",'reprojectDeprecated':"Používate voľby „reproject“ vrstvy ${layerType}. Táto voľba je zzavrhovaná: jej použitie bolo navrhnuté na podporu zobrazovania údajov nad komerčnými základovými mapami, ale túto funkcionalitu je teraz možné dosiahnuť pomocou Spherical Mercator. Ďalšie informácie získate na stránke http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Táto metóda je zavrhovaná a bude odstránená vo verzii 3.0. Použite prosím namiesto nej metódu ${newMethod}.",'boundsAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'lonlatAddError':"Sčítacej funkcii musíte dať hodnoty lon (zem. dĺžka) aj lat (zem. šírka).",'pixelAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'unsupportedGeometryType':"Nepodporovaný typ geometrie: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition zlyhalo: prvok s id ${elemId} môže byť zle umiestnený.",'filterEvaluateNotImplemented':"evaluate nie je implementovaný pre tento typ filtra"});OpenLayers.Lang["sv"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Ej hanterad fråga retur ${statusText}",'permalink':"Permalänk",'overlays':"Kartlager",'baseLayer':"Bakgrundskarta",'sameProjection':"Översiktskartan fungerar endast när den har samma projektion som huvudkartan",'readNotImplemented':"Läsning ej implementerad.",'writeNotImplemented':"Skrivning ej implementerad.",'noFID':"Kan ej uppdatera feature (objekt) för vilket FID saknas.",'errorLoadingGML':"Fel i laddning av GML-fil ${url}",'browserNotSupported':"Din webbläsare stöder inte vektorvisning. För närvarande stöds följande visning:\n${renderers}",'componentShouldBe':"addFeatures : komponenten skall vara en ${geomType}",'getFeatureError':"getFeatureFromEvent anropad för lager utan utritning. Detta betyder oftast att man raderat ett lager, men inte en hanterare som är knuten till lagret.",'minZoomLevelError':"Egenskapen minZoomLevel är endast avsedd att användas med lager med FixedZoomLevels. Att detta WFS-lager kontrollerar minZoomLevel är en relik från äldre versioner. Vi kan dock inte ta bort det utan att riskera att OL-baserade tillämpningar som använder detta slutar fungera. Därför är det satt som deprecated, minZoomLevel kommer att tas bort i version 3.0. Använd i stället inställning av min/max resolution som beskrivs här: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transaktion: LYCKADES ${response}",'commitFailed':"WFS-transaktion: MISSLYCKADES ${response}",'googleWarning':"Google-lagret kunde inte laddas korrekt.\x3cbr\x3e\x3cbr\x3eFör att slippa detta meddelande, välj en annan bakgrundskarta i lagerväljaren i övre högra hörnet.\x3cbr\x3e\x3cbr\x3eSannolikt beror felet på att Google Maps-biblioteket inte är inkluderat på webbsidan eller på att sidan inte anger korrekt API-nyckel för webbplatsen.\x3cbr\x3e\x3cbr\x3eUtvecklare: hjälp för att åtgärda detta, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eklicka här\x3c/a\x3e.",'getLayerWarning':"${layerType}-lagret kunde inte laddas korrekt.\x3cbr\x3e\x3cbr\x3eFör att slippa detta meddelande, välj en annan bakgrundskarta i lagerväljaren i övre högra hörnet.\x3cbr\x3e\x3cbr\x3eSannolikt beror felet på att ${layerLib}-biblioteket inte är inkluderat på webbsidan.\x3cbr\x3e\x3cbr\x3eUtvecklare: hjälp för att åtgärda detta, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklicka här\x3c/a\x3e.",'scale':"\x3cstrong\x3eSkala\x3c/strong\x3e 1 : ${scaleDenom}",'layerAlreadyAdded':"Du försökte lägga till lagret: ${layerName} på kartan, men det har lagts till tidigare",'reprojectDeprecated':"Du använder inställningen \'reproject\' på lagret ${layerName}. Denna inställning markerad som deprecated: den var avsedd att användas för att stödja visning av kartdata på kommersiella bakgrundskartor, men nu bör man i stället använda Spherical Mercator-stöd för den funktionaliteten. Mer information finns på http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denna metod är markerad som deprecated och kommer att tas bort i 3.0. Använd ${newMethod} i stället.",'boundsAddError':"Du måste skicka både x- och y-värde till funktionen add.",'lonlatAddError':"Du måste skicka både lon- och lat-värde till funktionen add.",'pixelAddError':"Du måste skicka både x- och y-värde till funktionen add.",'unsupportedGeometryType':"Stöd saknas för geometritypen: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition misslyckades: elementet med id ${elemId} kan placeras fel.",'filterEvaluateNotImplemented':"evaluering har ej implementerats för denna typ av filter."});OpenLayers.Lang["te"]=OpenLayers.Util.applyDefaults({'permalink':"స్థిరలింకు",'W':"ప",'E':"తూ",'N':"ఉ",'S':"ద"});OpenLayers.Lang["vi"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Không xử lý được phản hồi ${statusText} cho yêu cầu",'permalink':"Liên kết thường trực",'overlays':"Lấp bản đồ",'baseLayer':"Lớp nền",'sameProjection':"Bản đồ toàn cảnh chỉ hoạt động khi cùng phép chiếu với bản đồ chính",'readNotImplemented':"Chưa hỗ trợ chức năng đọc.",'writeNotImplemented':"Chưa hỗ trợ chức năng viết.",'noFID':"Không thể cập nhật tính năng thiếu FID.",'errorLoadingGML':"Lỗi tải tập tin GML tại ${url}",'browserNotSupported':"Trình duyệt của bạn không hỗ trợ chức năng vẽ bằng vectơ. Hiện hỗ trợ các bộ kết xuất:\n${renderers}",'componentShouldBe':"addFeatures: bộ phận cần phải là ${geomType}",'getFeatureError':"getFeatureFromEvent được gọi từ lớp không có bộ kết xuất. Thường thì có lẽ lớp bị xóa nhưng một phần xử lý của nó vẫn còn.",'minZoomLevelError':"Chỉ nên sử dụng thuộc tính minZoomLevel với các lớp FixedZoomLevels-descendent. Việc lớp wfs này tìm cho minZoomLevel là di tích còn lại từ xưa. Tuy nhiên, nếu chúng tôi dời nó thì sẽ vỡ các chương trình OpenLayers mà dựa trên nó. Bởi vậy chúng tôi phản đối sử dụng nó\x26nbsp;– bước tìm cho minZoomLevel sẽ được dời vào phiên bản 3.0. Xin sử dụng thiết lập độ phân tích tối thiểu / tối đa thay thế, theo hướng dẫn này: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Giao dịch WFS: THÀNH CÔNG ${response}",'commitFailed':"Giao dịch WFS: THẤT BẠI ${response}",'googleWarning':"Không thể tải lớp Google đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện Google Maps hoặc không được bao gồm hoặc không chứa khóa API hợp với website của bạn.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'getLayerWarning':"Không thể tải lớp ${layerType} đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện ${layerLib} không được bao gồm đúng kiểu.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'scale':"Tỷ lệ = 1 : ${scaleDenom}",'W':"T",'E':"Đ",'N':"B",'S':"N",'layerAlreadyAdded':"Bạn muốn thêm lớp ${layerName} vào bản đồ, nhưng lớp này đã được thêm",'reprojectDeprecated':"Bạn đang áp dụng chế độ “reproject” vào lớp ${layerName}. Chế độ này đã bị phản đối: nó có mục đích hỗ trợ lấp dữ liệu trên các nền bản đồ thương mại; nên thực hiện hiệu ứng đó dùng tính năng Mercator Hình cầu. Có sẵn thêm chi tiết tại http://trac.openlayers.org/wiki/SphericalMercator .",'methodDeprecated':"Phương thức này đã bị phản đối và sẽ bị dời vào phiên bản 3.0. Xin hãy sử dụng ${newMethod} thay thế.",'boundsAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'lonlatAddError':"Cần phải cho cả giá trị lon và lat vào hàm add.",'pixelAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'unsupportedGeometryType':"Không hỗ trợ kiểu địa lý: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition bị thất bại: nguyên tố với ID ${elemId} có thể ở chỗ sai.",'filterEvaluateNotImplemented':"chưa hỗ trợ evaluate cho loại bộ lọc này."});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图层不能正确加载。

"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。

"+"这种情况很可能是没有正确的包含Google地图脚本库,"+"或者是没有包含在你的站点上"+"使用的正确的Google Maps API密匙。

"+"开发者:获取使其正确工作的帮助信息,"+"点击这里",'getLayerWarning':"${layerType} 图层不能正确加载。

"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。

"+"这种情况很可能是没有正确的包含"+"${layerLib} 脚本库。

"+"开发者:获取使其正确工作的帮助信息,"+"点击这里",'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 圖層無法被正確的載入。

"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。

"+"很有可能是因為 Google Maps 的函式庫"+"腳本沒有被正確的置入,或沒有包含 "+"您網站上正確的 API key

"+"開發者: 要幫助這個行為正確完成,"+"請按這裡",'getLayerWarning':"${layerType} 圖層無法被正確的載入。

"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。

"+"很有可能是因為 ${layerLib} 的函式庫"+"腳本沒有被正確的置入。

"+"開發者: 要幫助這個行為正確完成,"+"請按這裡",'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["ar"]=OpenLayers.Util.applyDefaults({'permalink':"وصلة دائمة",'baseLayer':"الطبقة الاساسية",'readNotImplemented':"القراءة غير محققة.",'writeNotImplemented':"الكتابة غير محققة",'errorLoadingGML':"خطأ عند تحميل الملف جي ام ال ${url}",'scale':"النسبة = 1 : ${scaleDenom}",'W':"غ",'E':"شر",'N':"شم",'S':"ج"});OpenLayers.Lang["be-tarask"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Неапрацаваны вынік запыту ${statusText}",'permalink':"Сталая спасылка",'overlays':"Слаі",'baseLayer':"Базавы слой",'sameProjection':"Аглядная мапа працуе толькі калі яна мае тую ж праекцыю, што і асноўная мапа",'readNotImplemented':"Функцыянальнасьць чытаньня ня створаная.",'writeNotImplemented':"Функцыянальнасьць запісу ня створаная.",'noFID':"Немагчыма абнавіць магчымасьць, для якога не існуе FID.",'errorLoadingGML':"Памылка загрузкі файла GML ${url}",'browserNotSupported':"Ваш браўзэр не падтрымлівае вэктарную графіку. У цяперашні момант падтрымліваюцца: ${renderers}",'componentShouldBe':"addFeatures : кампанэнт павінен быць ${geomType}",'getFeatureError':"getFeatureFromEvent выкліканы для слоя бяз рэндэру. Звычайна гэта азначае, што Вы зьнішчылі слой, але пакінулі зьвязаны зь ім апрацоўшчык.",'minZoomLevelError':"Уласьцівасьць minZoomLevel прызначана толькі для выкарыстаньня са слаямі вытворнымі ад FixedZoomLevels. Тое, што гэты wfs-слой правяраецца на minZoomLevel — рэха прошлага. Але мы ня можам выдаліць гэтую магчымасьць, таму што ад яе залежаць некаторыя заснаваныя на OL дастасаваньні. Тым ня менш, праверка minZoomLevel будзе выдаленая ў вэрсіі 3.0. Калі ласка, выкарыстоўваеце замест яе ўстаноўкі мінімальнага/максымальнага памераў, як апісана тут: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-транзакцыя: ПОСЬПЕХ ${response}",'commitFailed':"WFS-транзакцыя: ПАМЫЛКА ${response}",'googleWarning':"Не атрымалася загрузіць слой Google. \x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3e Хутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі Google Maps ня быў уключаныя альбо не ўтрымлівае слушны API-ключ для Вашага сайта.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'getLayerWarning':"Немагчыма загрузіць слой ${layerType}.\x3cbr\x3e\x3cbr\x3eКаб пазбавіцца гэтага паведамленьня, выберыце новы базавы слой у сьпісе ў верхнім правым куце.\x3cbr\x3e\x3cbr\x3eХутчэй за ўсё, прычына ў тым, што скрыпт бібліятэкі ${layerLib} ня быў слушна ўключаны.\x3cbr\x3e\x3cbr\x3eРаспрацоўшчыкам: Для таго, каб даведацца як зрабіць так, каб усё працавала, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eнацісьніце тут\x3c/a\x3e",'scale':"Маштаб = 1 : ${scaleDenom}",'W':"З",'E':"У",'N':"Пн",'S':"Пд",'layerAlreadyAdded':"Вы паспрабавалі дадаць слой ${layerName} на мапу, але ён ужо дададзены",'reprojectDeprecated':"Вы выкарыстоўваеце ўстаноўку \'reproject\' для слоя ${layerName}. Гэтая ўстаноўка зьяўляецца састарэлай: яна выкарыстоўвалася для падтрымкі паказу зьвестак на камэрцыйных базавых мапах, але гэта функцыя цяпер рэалізаваная ў убудаванай падтрымцы сфэрычнай праекцыі Мэркатара. Дадатковая інфармацыя ёсьць на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Гэты мэтад састарэлы і будзе выдалены ў вэрсіі 3.0. Калі ласка, замест яго выкарыстоўвайце ${newMethod}.",'boundsAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'lonlatAddError':"Вам неабходна падаць абодва значэньні lon і lat для функцыі складаньня.",'pixelAddError':"Вам неабходна падаць абодва значэньні x і y для функцыі складаньня.",'unsupportedGeometryType':"Тып геамэтрыі не падтрымліваецца: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: верагодна элемэнт з ідэнтыфікатарам ${elemId} займае няслушнае месца.",'filterEvaluateNotImplemented':"evaluate не рэалізаваны для гэтага тыпу фільтру."});OpenLayers.Lang["bg"]=OpenLayers.Util.applyDefaults({'permalink':"Постоянна препратка",'baseLayer':"Основен слой",'errorLoadingGML':"Грешка при зареждане на GML файл ${url}",'scale':"Мащаб = 1 : ${scaleDenom}",'layerAlreadyAdded':"Опитахте да добавите слой ${layerName} в картата, но той вече е добавен",'methodDeprecated':"Този метод е остарял и ще бъде премахват в 3.0. Вместо него използвайте ${newMethod}."});OpenLayers.Lang["br"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Distro evel reked anveret ${statusText}",'permalink':"Peurliamm",'overlays':"Gwiskadoù",'baseLayer':"Gwiskad diazez",'sameProjection':"Ne\'z ar gartenn lec\'hiañ en-dro nemet pa vez heñvel ar banndres anezhi ha hini ar gartenn bennañ",'readNotImplemented':"N\'eo ket emplementet al lenn.",'writeNotImplemented':"N\'eo ket emplementet ar skrivañ.",'noFID':"N\'haller ket hizivaat un elfenn ma n\'eus ket a niverenn-anaout (FID) eviti.",'errorLoadingGML':"Fazi e-ser kargañ ar restr GML ${url}",'browserNotSupported':"N\'eo ket skoret an daskor vektorel gant ho merdeer. Setu aze an daskorerioù skoret evit ar poent :\n${renderers}",'componentShouldBe':"addFeatures : bez\' e tlefe ar parzh besañ eus ar seurt ${geomType}",'getFeatureError':"Galvet eo bet getFeatureFromEvent called war ur gwiskad hep daskorer. Kement-se a dalvez ez eus bet freuzet ur gwiskad hag hoc\'h eus miret un embreger bennak stag outañ.",'minZoomLevelError':"Ne zleer implijout ar perzh minZoomLevel nemet evit gwiskadoù FixedZoomLevels-descendent. Ar fed ma wiria ar gwiskad WHS-se hag-eñ ez eus eus minZoomLevel zo un aspadenn gozh. Koulskoude n\'omp ket evit e ziverkañ kuit da derriñ arloadoù diazezet war OL a c\'hallfe bezañ stag outañ. Setu perak eo dispredet -- Lamet kuit e vo ar gwiriañ minZoomLevel a-is er stumm 3.0. Ober gant an arventennoù bihanañ/brasañ evel deskrivet amañ e plas : http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Treuzgread WFS : MAT EO ${response}",'commitFailed':"Treuzgread WFS Transaction: C\'HWITET ${response}",'googleWarning':"N\'eus ket bet gallet kargañ ar gwiskad Google ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het levraoueg Google Maps pe neuze ne glot ket an alc\'hwez API gant ho lec\'hienn.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'getLayerWarning':"N\'haller ket kargañ ar gwiskad ${layerType} ent reizh.\x3cbr\x3e\x3cbr\x3eEvit en em zizober eus ar c\'hemenn-mañ, dibabit ur BaseLayer nevez en diuzer gwiskadoù er c\'horn dehoù el laez.\x3cbr\x3e\x3cbr\x3eSur a-walc\'h eo peogwir n\'eo ket bet ensoc\'het mat al levraoueg ${layerLib}.\x3cbr\x3e\x3cbr\x3eDiorroerien : Evit gouzout penaos reizhañ an dra-se, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'scale':"Skeul = 1 : ${scaleDenom}",'W':"K",'E':"R",'N':"N",'S':"S",'layerAlreadyAdded':"Klasket hoc\'h eus ouzhpennañ ar gwiskad : ${layerName} d\'ar gartenn, met ouzhpennet e oa bet c\'hoazh",'reprojectDeprecated':"Emaoc\'h oc\'h implijout an dibarzh \'reproject\' war ar gwiskad ${layerName}. Dispredet eo an dibarzh-mañ : bet eo hag e talveze da ziskwel roadennoù war-c\'horre kartennoù diazez kenwerzhel, un dra hag a c\'haller ober bremañ gant an arc\'hwel dre skor banndres boullek Mercator. Muioc\'h a ditouroù a c\'haller da gaout war http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Dispredet eo an daore-se ha tennet e vo kuit eus ar stumm 3.0. Grit gant ${newMethod} e plas.",'boundsAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'lonlatAddError':"Rekis eo tremen an div dalvoudenn hedred ha ledred d\'an arc\'hwel add.",'pixelAddError':"Rekis eo tremen an div dalvoudenn x ha y d\'an arc\'hwel add.",'unsupportedGeometryType':"Seurt mentoniezh anskoret : ${geomType}",'pagePositionFailed':"C\'hwitet eo OpenLayers.Util.pagePosition : marteze emañ lec\'hiet fall an elfenn id ${elemId}.",'filterEvaluateNotImplemented':"N\'eo ket bet emplementet ar priziañ evit seurt siloù c\'hoazh."});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 carregant el fitxer GML ${url}",'browserNotSupported':"El seu navegador no suporta renderització vectorial. Els renderitzadors suportats actualment són:\n${renderers}",'componentShouldBe':"addFeatures : el component ha de ser de tipus ${geomType}",'getFeatureError':"getFeatureFromEvent ha estat cridat des d'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 relíquia 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.

"+"Per evitar aquest missatge, seleccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.

"+"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.

"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"féu clic aquí",'getLayerWarning':"Per evitar aquest missatge, seleccioneu una nova Capa Base "+"al gestor de capes de la cantonada superior dreta.

"+"Probablement això és degut a que l'script de la biblioteca "+"${layerLib} "+"no ha estat inclòs a la vostra pàgina.

"+"Desenvolupadors: Per obtenir consells sobre com fer anar això, "+"féu clic aquí",'scale':"Escala = 1 : ${scaleDenom}",'W':'O','E':'E','N':'N','S':'S','graticule':'Retícula','layerAlreadyAdded':"Heu intentat afegir la capa: ${layerName} al mapa, però 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ò ara aquesta funcionalitat s'hauria d'assolir 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["cs-CZ"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nezpracovaná návratová hodnota ${statusText}",'permalink':"Trvalý odkaz",'overlays':"Překryvné vrstvy",'baseLayer':"Podkladové vrstvy",'sameProjection':"Přehledka pracuje správně pouze tehdy, pokud je ve stejné projekci jako hlavní mapa",'readNotImplemented':"Read není implementováno.",'writeNotImplemented':"Write není implementováno.",'noFID':"Nelze aktualizovat prvek, pro který neexistuje FID.",'errorLoadingGML':"Chyba při načítání souboru GML ${url}",'browserNotSupported':"Váš prohlížeč nepodporuje vykreslování vektorů. Momentálně podporované nástroje jsou::\n${renderers}",'componentShouldBe':"addFeatures : komponenta by měla být ${geomType}",'getFeatureError':"getFeatureFromEvent bylo zavoláno na vrstvě, která nemá vykreslovač. To obyčejně znamená, že jste odstranil vrstvu, ale ne rutinu s ní asociovanou.",'minZoomLevelError':"Vlastnost minZoomLevel by se měla používat pouze s potomky FixedZoomLevels vrstvami. To znamená, že vrstva wfs kontroluje, zda-li minZoomLevel není zbytek z minulosti.Nelze to ovšem vyjmout bez možnosti, že bychom rozbili aplikace postavené na OL, které by na tom mohly záviset. Proto tuto vlastnost nedoporučujeme používat -- kontrola minZoomLevel bude odstraněna ve verzi 3.0. Použijte prosím raději nastavení min/max podle příkaldu popsaného na: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: ÚSPĚCH ${response}",'commitFailed':"WFS Transaction: CHYBA ${response}",'googleWarning':"Nepodařilo se správně načíst vrstvu Google.\x3cbr\x3e\x3cbr\x3eAbyste se zbavili této zprávy, zvolte jinou základní vrstvu v přepínači vrstev.\x3cbr\x3e\x3cbr\x3eTo se většinou stává, pokud nebyl načten skript, nebo neobsahuje správný klíč pro API pro tuto stránku.\x3cbr\x3e\x3cbr\x3eVývojáři: Pro pomoc, aby tohle fungovalo , \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eklikněte sem\x3c/a\x3e",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.\x3cbr\x3e\x3cbr\x3eTo get rid of this message, select a new BaseLayer in the layer switcher in the upper-right corner.\x3cbr\x3e\x3cbr\x3eMost likely, this is because the ${layerLib} library script was either not correctly included.\x3cbr\x3e\x3cbr\x3eDevelopers: For help getting this working correctly, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclick here\x3c/a\x3e",'scale':"Měřítko = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokusili jste se přidat vrstvu: ${layerName} do mapy, ale tato vrstva je již v mapě přítomna.",'reprojectDeprecated':"Použil jste volbu \'reproject\' ve vrstvě ${layerName}. Tato volba není doporučená: byla zde proto, aby bylo možno zobrazovat data z okomerčních serverů, ale tato funkce je nyní zajištěna pomocí podpory Spherical Mercator. Více informací naleznete na http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Tato metoda je zavržená a bude ve verzi 3.0 odstraněna. Prosím, použijte raději ${newMethod}.",'boundsAddError':"Pro přídavnou funkci musíte zadat obě souřadnice x a y.",'lonlatAddError':"Pro přídavnou funkci musíte zadat obě souřadnice lon a lat.",'pixelAddError':"Pro přídavnou funkci musíte zadat obě souřadnice x a y.",'unsupportedGeometryType':"Nepodporovaný typ geometrie: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition selhalo: element s id ${elemId} je asi umístěn chybně."});OpenLayers.Lang['da-DK']={'unhandledRequest':"En ikke håndteret forespørgsel returnerede ${statusText}",'permalink':"Permalink",'overlays':"Kortlag",'baseLayer':"Baggrundslag",'sameProjection':"Oversigtskortet fungerer kun når det har samme projektion som hovedkortet",'readNotImplemented':"Læsning er ikke implementeret.",'writeNotImplemented':"Skrivning er ikke implementeret.",'noFID':"Kan ikke opdateret en feature (et objekt) der ikke har et FID.",'errorLoadingGML':"Fejlede under indlæsning af GML fil ${url}",'browserNotSupported':"Din browser understøtter ikke vektor visning. Følgende vektor visninger understøttes:\n${renderers}",'componentShouldBe':"addFeatures : komponenten skal være en ${geomType}",'getFeatureError':"getFeatureFromEvent blev kaldt på et lag uden en visning. Dette betyder som regel at du "+"har destrueret et lag, men ikke de håndteringer der var tilknyttet.",'minZoomLevelError':"Egenskaben minZoomLevel er kun beregnet til brug "+"med FixedZoomLevels. At dette WFS lag kontrollerer "+"minZoomLevel egenskaben, er et levn fra en tidligere "+"version. Vi kan desværre ikke fjerne dette uden at risikere "+"at ødelægge eksisterende OL baserede programmer der "+" benytter denne funktionalitet. "+"Egenskaben bør derfor ikke anvendes, og minZoomLevel "+"kontrollen herunder vil blive fjernet i version 3.0. "+"Benyt istedet min/max opløsnings indstillingerne, som "+"er beskrevet her: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS transaktion: LYKKEDES ${response}",'commitFailed':"WFS transaktion: MISLYKKEDES ${response}",'googleWarning':"Google laget kunne ikke indlæses.

"+"For at fjerne denne besked, vælg et nyt bagrundskort i "+"lagskifteren i øverste højre hjørne.

"+"Fejlen skyldes formentlig at Google Maps bibliotekts "+"scriptet ikke er inkluderet, eller ikke indeholder den "+"korrkte API nøgle for dit site.

"+"Udviklere: For hjælp til at få dette til at fungere, "+"klik her",'getLayerWarning':"${layerType}-laget kunne ikke indlæses.

"+"For at fjerne denne besked, vælg et nyt bagrundskort i "+"lagskifteren i øverste højre hjørne.

"+"Fejlen skyldes formentlig at ${layerLib} bibliotekts "+"scriptet ikke er inkluderet.

"+"Udviklere: For hjælp til at få dette til at fungere, "+"klik her",'scale':"Målforhold = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du har forsøgt at tilføje laget: ${layerName} til kortet, men det er allerede tilføjet",'reprojectDeprecated':"Du anvender indstillingen 'reproject' på laget ${layerName}."+"Denne indstilling bør ikke længere anvendes. Den var beregnet "+"til at vise data ovenpå kommercielle grundkort, men den funktionalitet "+"bør nu opnås ved at anvende Spherical Mercator understøttelsen. "+"Mere information er tilgængelig her: "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denne funktion bør ikke længere anvendes, og vil blive fjernet i version 3.0. "+"Anvend venligst funktionen ${newMethod} istedet.",'boundsAddError':"Du skal angive både x og y værdier i kaldet til add funktionen.",'lonlatAddError':"Du skal angive både lon og lat værdier i kaldet til add funktionen.",'pixelAddError':"Du skal angive både x og y værdier i kaldet til add funktionen.",'unsupportedGeometryType':"Geometri typen: ${geomType} er ikke understøttet.",'pagePositionFailed':"OpenLayers.Util.pagePosition fejlede: elementet med id ${elemId} er måske placeret forkert.",'filterEvaluateNotImplemented':"evaluering er ikke implementeret for denne filter type."};OpenLayers.Lang["de"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehandelte Anfragerückmeldung ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Grundkarte",'sameProjection':"Die Übersichtskarte funktioniert nur, wenn sie dieselbe Projektion wie die Hauptkarte verwendet",'readNotImplemented':"Lesen nicht implementiert.",'writeNotImplemented':"Schreiben nicht implementiert.",'noFID':"Ein Feature, für das keine FID existiert, kann nicht aktualisiert werden.",'errorLoadingGML':"Fehler beim Laden der GML-Datei ${url}",'browserNotSupported':"Ihr Browser unterstützt keine Vektordarstellung. Aktuell unterstützte Renderer:\n${renderers}",'componentShouldBe':"addFeatures: Komponente muss vom Typ ${geomType} sein",'getFeatureError':"getFeatureFromEvent wurde vom einem Layer ohne Renderer aufgerufen. Dies bedeutet normalerweise, dass ein Layer entfernt wurde, aber nicht Handler, die auf ihn verweisen.",'minZoomLevelError':"Die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Eigenschaft ist nur für die Verwendung mit \x3ccode\x3eFixedZoomLevels\x3c/code\x3e-untergeordneten Layers vorgesehen. Das dieser \x3ctt\x3ewfs\x3c/tt\x3e-Layer die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Eigenschaft überprüft ist ein Relikt der Vergangenheit. Wir können diese Überprüfung nicht entfernen, ohne das OL basierende Applikationen nicht mehr funktionieren. Daher markieren wir es als veraltet - die \x3ccode\x3eminZoomLevel\x3c/code\x3e-Überprüfung wird in Version 3.0 entfernt werden. Bitte verwenden Sie stattdessen die Min-/Max-Lösung, wie sie unter http://trac.openlayers.org/wiki/SettingZoomLevels beschrieben ist.",'commitSuccess':"WFS-Transaktion: Erfolgreich ${response}",'commitFailed':"WFS-Transaktion: Fehlgeschlagen ${response}",'googleWarning':"Der Google-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der Google-Maps-Bibliothek nicht eingebunden wurde oder keinen gültigen API-Schlüssel für Ihre URL enthält.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden des Google-Layers",'getLayerWarning':"Der ${layerType}-Layer konnte nicht korrekt geladen werden.\x3cbr\x3e\x3cbr\x3eUm diese Meldung nicht mehr zu erhalten, wählen Sie einen anderen Hintergrundlayer aus dem LayerSwitcher in der rechten oberen Ecke.\x3cbr\x3e\x3cbr\x3eSehr wahrscheinlich tritt dieser Fehler auf, weil das Skript der \'${layerLib}\'-Bibliothek nicht eingebunden wurde.\x3cbr\x3e\x3cbr\x3eEntwickler: Besuche \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edas Wiki\x3c/a\x3e für Hilfe zum korrekten Einbinden von Layern",'scale':"Maßstab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Sie versuchen den Layer „${layerName}“ zur Karte hinzuzufügen, er wurde aber bereits hinzugefügt",'reprojectDeprecated':"Sie verwenden die „Reproject“-Option des Layers ${layerName}. Diese Option ist veraltet: Sie wurde entwickelt um die Anzeige von Daten auf kommerziellen Basiskarten zu unterstützen, aber diese Funktion sollte jetzt durch Unterstützung der „Spherical Mercator“ erreicht werden. Weitere Informationen sind unter http://trac.openlayers.org/wiki/SphericalMercator verfügbar.",'methodDeprecated':"Die Methode ist veraltet und wird in 3.0 entfernt. Bitte verwende stattdessen ${newMethod}.",'boundsAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'lonlatAddError':"Beide Werte (lon und lat) müssen der add-Funktion übergeben werden.",'pixelAddError':"Beide Werte (x und y) müssen der add-Funktion übergeben werden.",'unsupportedGeometryType':"Nicht unterstützter Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fehlgeschlagen: Element mit Id ${elemId} möglicherweise falsch platziert.",'filterEvaluateNotImplemented':"„evaluate“ ist für diesen Filter-Typ nicht implementiert."});OpenLayers.Lang["el"]=OpenLayers.Util.applyDefaults({'scale':"Κλίμακα ~ 1 : ${scaleDenom}"});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.

"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"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.

"+"Developers: For help getting this working correctly, "+"click here",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.

"+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

"+"Most likely, this is because the ${layerLib} library "+"script was not correctly included.

"+"Developers: For help getting this working correctly, "+"click here",'scale':"Scale = 1 : ${scaleDenom}",'W':'W','E':'E','N':'N','S':'S','graticule':'Graticule','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.",'filterEvaluateNotImplemented':"evaluate is not implemented for this filter type.",'end':''};OpenLayers.Lang.es={'unhandledRequest':"Respuesta a petición no gestionada ${statusText}",'permalink':"Enlace permanente",'overlays':"Capas superpuestas",'baseLayer':"Capa Base",'sameProjection':"El mapa de vista general 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 se ha llamado desde 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 es 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.

"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.

"+"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.

"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"haga clic aquí",'getLayerWarning':"La capa ${layerType} no pudo ser cargada correctamente.

"+"Para evitar este mensaje, seleccione una nueva Capa Base "+"en el selector de capas en la esquina superior derecha.

"+"Probablemente, esto se debe a que el script de "+"la biblioteca ${layerLib} "+"no fue correctamente incluido en su página.

"+"Desarrolladores: Para ayudar a hacer funcionar esto correctamente, "+"haga clic aquí",'scale':"Escala = 1 : ${scaleDenom}",'W':'O','E':'E','N':'N','S':'S','graticule':'Retícula','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 es obsoleta: su uso fue diseñado "+"para soportar la visualización de datos sobre mapas base comerciales, "+"pero ahora esa funcionalidad debería conseguirse 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 es 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["fi"]=OpenLayers.Util.applyDefaults({'permalink':"Ikilinkki",'overlays':"Kerrokset",'baseLayer':"Peruskerros",'sameProjection':"Yleiskuvakarttaa voi käyttää vain, kun sillä on sama projektio kuin pääkartalla.",'W':"L",'E':"I",'N':"P",'S':"E"});OpenLayers.Lang["fr"]=OpenLayers.Util.applyDefaults({'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.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela 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.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'getLayerWarning':"La couche ${layerType} n\'est pas en mesure de se charger correctement.\x3cbr\x3e\x3cbr\x3ePour supprimer ce message, choisissez une nouvelle BaseLayer dans le sélecteur de couche en haut à droite.\x3cbr\x3e\x3cbr\x3eCela est possiblement causé par la non-inclusion de la librairie ${layerLib}.\x3cbr\x3e\x3cbr\x3eDéveloppeurs : pour savoir comment corriger ceci, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ecliquez ici\x3c/a\x3e",'scale':"Echelle ~ 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S",'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é.",'filterEvaluateNotImplemented':"évaluer n\'a pas encore été implémenté pour ce type de filtre."});OpenLayers.Lang["fur"]=OpenLayers.Util.applyDefaults({'permalink':"Leam Permanent",'overlays':"Livei parsore",'baseLayer':"Livel di base",'browserNotSupported':"Il to sgarfadôr nol supuarte la renderizazion vetoriâl. Al moment a son supuartâts:\n${renderers}",'scale':"Scjale = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S"});OpenLayers.Lang["gl"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Solicitude non xerada; a resposta foi: ${statusText}",'permalink':"Ligazón permanente",'overlays':"Capas superpostas",'baseLayer':"Capa base",'sameProjection':"A vista xeral do mapa só funciona cando está na mesma proxección có mapa principal",'readNotImplemented':"Lectura non implementada.",'writeNotImplemented':"Escritura non implementada.",'noFID':"Non se pode actualizar a funcionalidade para a que non hai FID.",'errorLoadingGML':"Erro ao cargar o ficheiro GML ${url}",'browserNotSupported':"O seu navegador non soporta a renderización de vectores. Os renderizadores soportados actualmente son:\n${renderers}",'componentShouldBe':"addFeatures: o compoñente debera ser de tipo ${geomType}",'getFeatureError':"getFeatureFromEvent ten sido chamado a unha capa sen renderizador. Isto normalmente significa que destruíu unha capa, mais non o executador que está asociado con ela.",'minZoomLevelError':"A propiedade minZoomLevel é só para uso conxuntamente coas capas FixedZoomLevels-descendent. O feito de que esa capa wfs verifique o minZoomLevel é unha reliquia do pasado. Non podemos, con todo, eliminala sen a posibilidade de non romper as aplicacións baseadas en OL que poidan depender dela. Por iso a estamos deixando obsoleta (a comprobación minZoomLevel de embaixo será eliminada na versión 3.0). Por favor, no canto diso use o axuste de resolución mín/máx tal e como está descrito aquí: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacción WFS: ÉXITO ${response}",'commitFailed':"Transacción WFS: FALLIDA ${response}",'googleWarning':"A capa do Google non puido cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría do Google Maps ou ben non foi incluída ou ben non contén a clave API correcta para o seu sitio.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'getLayerWarning':"A capa ${layerType} foi incapaz de cargarse correctamente.\x3cbr\x3e\x3cbr\x3ePara evitar esta mensaxe, escolla unha nova capa base no seleccionador de capas na marxe superior dereita.\x3cbr\x3e\x3cbr\x3eProbablemente, isto acontece porque a escritura da libraría ${layerLib} non foi ben incluída.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: para axudar a facer funcionar isto correctamente, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3epremede aquí\x3c/a\x3e",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"L",'N':"N",'S':"S",'layerAlreadyAdded':"Intentou engadir a capa: ${layerName} ao mapa, pero xa fora engadida",'reprojectDeprecated':"Está usando a opción \"reproject\" na capa ${layerName}. Esta opción está obsoleta: o seu uso foi deseñado para a visualización de datos sobre mapas base comerciais, pero esta funcionalidade debera agora ser obtida utilizando a proxección Spherical Mercator. Hai dispoñible máis información en http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método está obsoleto e será eliminado na versión 3.0. Por favor, no canto deste use ${newMethod}.",'boundsAddError':"Debe achegar os valores x e y á función add.",'lonlatAddError':"Debe achegar tanto o valor lon coma o lat á función add.",'pixelAddError':"Debe achegar os valores x e y á función add.",'unsupportedGeometryType':"Tipo xeométrico non soportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fallou: o elemento con id ${elemId} pode non estar na súa posición.",'filterEvaluateNotImplemented':"avaliar non está implementado para este tipo de filtro."});OpenLayers.Lang["gsw"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nit behandleti Aafrogsruckmäldig ${statusText}",'permalink':"Permalink",'overlays':"Iberlagerige",'baseLayer':"Grundcharte",'sameProjection':"D Ibersichts-Charte funktioniert nume, wänn si di glych Projäktion brucht wie d Hauptcharte",'readNotImplemented':"Läse nit implementiert.",'writeNotImplemented':"Schrybe nit implementiert.",'noFID':"E Feature, wu s kei FID derfir git, cha nit aktualisiert wäre.",'errorLoadingGML':"Fähler bim Lade vu dr GML-Datei ${url}",'browserNotSupported':"Dyy Browser unterstitzt kei Vektordarstellig. Aktuäll unterstitzti Renderer:\n${renderers}",'componentShouldBe':"addFeatures : Komponänt sott dr Typ ${geomType} syy",'getFeatureError':"getFeatureFromEvent isch uf eme Layer ohni Renderer ufgruefe wore. Des heisst normalerwys, ass Du e Layer kaputt gmacht hesch, aber nit dr Handler, wu derzue ghert.",'minZoomLevelError':"D minZoomLevel-Eigeschaft isch nume dänk fir d Layer, wu vu dr FixedZoomLevels abstamme. Ass dää wfs-Layer minZoomLevel prieft, scih e Relikt us dr Vergangeheit. Mir chenne s aber nit ändere ohni OL_basierti Aawändige villicht kaputt gehn, wu dervu abhänge. Us däm Grund het die Funktion d Eigeschaft \'deprecated\' iberchuu. D minZoomLevel-Priefig unte wird in dr Version 3.0 usegnuu. Bitte verwänd statt däm e min/max-Uflesig wie s do bschriben isch: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transaktion: ERFOLGRYCH ${response}",'commitFailed':"WFS-Transaktion: FÄHLGSCHLAA ${response}",'googleWarning':"Dr Google-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr Google-Maps-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vum Google-Layer \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'getLayerWarning':"Dr ${layerType}-Layer het nit korräkt chenne glade wäre.\x3cbr\x3e\x3cbr\x3eGo die Mäldig nimi z kriege, wehl e andere Hintergrundlayer us em LayerSwitcher im rächte obere Ecke.\x3cbr\x3e\x3cbr\x3eDää Fähler git s seli hyfig, wel s Skript vu dr \'${layerLib}\'-Bibliothek nit yybunde woren isch oder wel s kei giltige API-Schlissel fir Dyy URL din het.\x3cbr\x3e\x3cbr\x3eEntwickler: Fir Hilf zum korräkte Yybinde vu Layer \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3edoo drucke\x3c/a\x3e",'scale':"Maßstab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Du hesch versuecht dää Layer in d Charte yyzfiege: ${layerName}, aber är isch schoi yygfiegt",'reprojectDeprecated':"Du bruchsch d \'reproject\'-Option bim ${layerName}-Layer. Die Option isch nimi giltig: si isch aagleit wore go Date iber kommerziälli Grundcharte lege, aber des sott mer jetz mache mit dr Unterstitzig vu Spherical Mercator. Meh Informatione git s uf http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Die Methode isch veraltet un wird us dr Version 3.0 usegnuu. Bitte verwäbnd statt däm ${newMethod}.",'boundsAddError':"Du muesch e x-Wärt un e y-Wärt yygee bi dr Zuefieg-Funktion",'lonlatAddError':"Du meusch e Lengi- un e Breiti-Grad yygee bi dr Zuefieg-Funktion.",'pixelAddError':"Du muesch x- un y-Wärt aagee bi dr Zuefieg-Funktion.",'unsupportedGeometryType':"Nit unterstitze Geometrii-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition fählgschlaa: Elemänt mit ID ${elemId} isch villicht falsch gsetzt.",'filterEvaluateNotImplemented':"evaluiere isch nit implemäntiert in däm Filtertyp."});OpenLayers.Lang["hr"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nepodržani zahtjev ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Osnovna karta",'sameProjection':"Pregledna karta radi jedino kao je u istoj projekciji kao i glava karta",'readNotImplemented':"Čitanje nije implementirano.",'writeNotImplemented':"Pisanje nije implementirano.",'noFID':"Ne mogu ažurirati značajku za koju ne postoji FID.",'errorLoadingGML':"Greška u učitavanju GML datoteke ${url}",'browserNotSupported':"Vaš preglednik ne podržava vektorsko renderiranje. Trenutno podržani rendereri su: ${renderers}",'componentShouldBe':"addFeatures : komponenta bi trebala biti ${geomType}",'getFeatureError':"getFeatureFromEvent je pozvao Layer bez renderera. Ovo obično znači da ste uništiili Layer, a ne neki Handler koji je povezan s njim.",'commitSuccess':"WFS Transakcija: USPJEŠNA ${response}",'commitFailed':"WFS Transakcija: NEUSPJEŠNA ${response}",'scale':"Mjerilo = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokušali ste dodati layer: ${layerName} na kartu, ali je već dodan",'methodDeprecated':"Ova metoda nije odobrena i biti će maknuta u 3.0. Koristite ${newMethod}.",'boundsAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'lonlatAddError':"Morate dati obje vrijednosti , (lon i lat) da bi dodali funkciju.",'pixelAddError':"Morate dati obje vrijednosti , x i y da bi dodali funkciju.",'unsupportedGeometryType':"Nepodržani tip geometrije: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition nije uspjelo: element sa id ${elemId} može biti krivo smješten."});OpenLayers.Lang["hsb"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Wotmołwa njewobdźěłaneho naprašowanja ${statusText}",'permalink':"Trajny wotkaz",'overlays':"Naworštowanja",'baseLayer':"Zakładna runina",'sameProjection':"Přehladowa karta jenož funguje, hdyž je w samsnej projekciji kaž hłowna karta",'readNotImplemented':"Čitanje njeimplementowane.",'writeNotImplemented':"Pisanje njeimplementowane.",'noFID':"Funkcija, za kotruž FID njeje, njeda so aktualizować.",'errorLoadingGML':"Zmylk při začitowanju dataje ${url}",'browserNotSupported':"Twój wobhladowak wektorowe rysowanje njepodpěruje. Tuchwilu podpěrowane rysowaki su:\n${renderers}",'componentShouldBe':"addFeatures: komponenta měła ${geomType} być",'getFeatureError':"getFeatureFromEvent bu na woršće bjez rysowak zawołany. To zwjetša woznamjenja, zo sy worštu zničił, ale nic wobdźěłak, kotryž je z njej zwjazany.",'minZoomLevelError':"Kajkosć minZoomLevel je jenož za wužiwanje z worštami myslena, kotrež wot FixedZoomLevels pochadźeja. Zo tuta woršta wfs za minZoomLevel přepruwuje, je relikt zańdźenosće. Njemóžemy wšak ju wotstronić, bjeztoho zo aplikacije, kotrež na OpenLayers bazěruja a snano tutu kajkosć wužiwaja, hižo njefunguja. Tohodla smy ju jako zestarjenu woznamjenili -- přepruwowanje za minZoomLevel budu so we wersiji 3.0 wotstronjeć. Prošu wužij město toho nastajenje min/max, kaž je tu wopisane: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-Transakcija: WUSPĚŠNA ${response}",'commitFailed':"WFS-Transakcija: NJEPORADŹENA ${response}",'googleWarning':"Woršta Google njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki Google Maps pak njebu zapřijaty pak njewobsahuje korektny kluč API za twoje sydło.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'getLayerWarning':"Woršta ${layerType} njemóžeše so korektnje začitać.\x3cbr\x3e\x3cbr\x3eZo by tutu zdźělenku wotbył, wubjer nowy BaseLayer z wuběra worštow horjeka naprawo.\x3cbr\x3e\x3cbr\x3eNajskerje so to stawa, dokelž skript biblioteki ${layerLib} njebu korektnje zapřijaty.\x3cbr\x3e\x3cbr\x3eWuwiwarjo: Za pomoc ke korektnemu fungowanju worštow\n\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3etu kliknyć\x3c/a\x3e",'scale':"Měritko = 1 : ${scaleDenom}",'W':"Z",'E':"W",'N':"S",'S':"J",'layerAlreadyAdded':"Sy spytał runinu ${layerName} karće dodać, ale je so hižo dodała",'reprojectDeprecated':"Wužiwaš opciju \"reproject\" wořšty ${layerName}. Tuta opcija je zestarjena: jeje wužiwanje bě myslene, zo by zwobraznjenje datow nad komercielnymi bazowymi kartami podpěrało, ale funkcionalnosć měła so nětko z pomocu Sperical Mercator docpěć. Dalše informacije steja na http://trac.openlayers.org/wiki/SphericalMercator k dispoziciji.",'methodDeprecated':"Tuta metoda je so njeschwaliła a budźe so w 3.0 wotstronjeć. Prošu wužij ${newMethod} město toho.",'boundsAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'lonlatAddError':"Dyrbiš hódnotu lon kaž tež lat funkciji \"add\" přepodać.",'pixelAddError':"Dyrbiš hódnotu x kaž tež y funkciji \"add\" přepodać.",'unsupportedGeometryType':"Njepodpěrowany geometrijowy typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition je so njeporadźił: element z id ${elemId} bu snano wopak zaměstnjeny.",'filterEvaluateNotImplemented':"wuhódnoćenje njeje za tutón filtrowy typ implementowany."});OpenLayers.Lang["hu"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Nem kezelt kérés visszatérése ${statusText}",'permalink':"Permalink",'overlays':"Rávetítések",'baseLayer':"Alapréteg",'sameProjection':"Az áttekintő térkép csak abban az esetben működik, ha ugyanazon a vetületen van, mint a fő térkép.",'readNotImplemented':"Olvasás nincs végrehajtva.",'writeNotImplemented':"Írás nincs végrehajtva.",'noFID':"Nem frissíthető olyan jellemző, amely nem rendelkezik FID-del.",'errorLoadingGML':"Hiba GML-fájl betöltésekor ${url}",'browserNotSupported':"A böngészője nem támogatja a vektoros renderelést. A jelenleg támogatott renderelők:\n${renderers}",'componentShouldBe':"addFeatures : az összetevőnek ilyen típusúnak kell lennie: ${geomType}",'getFeatureError':"getFeatureFromEvent réteget hívott meg renderelő nélkül. Ez rendszerint azt jelenti, hogy megsemmisített egy fóliát, de néhány ahhoz társított kezelőt nem.",'minZoomLevelError':"A minZoomLevel tulajdonságot csak a következővel való használatra szánták: FixedZoomLevels-leszármazott fóliák. Ez azt jelenti, hogy a minZoomLevel wfs fólia jelölőnégyzetei már a múlté. Mi azonban nem távolíthatjuk el annak a veszélye nélkül, hogy az esetlegesen ettől függő OL alapú alkalmazásokat tönkretennénk. Ezért ezt érvénytelenítjük -- a minZoomLevel az alul levő jelölőnégyzet a 3.0-s verzióból el lesz távolítva. Kérjük, helyette használja a min/max felbontás beállítást, amelyről az alábbi helyen talál leírást: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS tranzakció: SIKERES ${response}",'commitFailed':"WFS tranzakció: SIKERTELEN ${response}",'googleWarning':"A Google fólia betöltése sikertelen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a Google Maps könyvtár parancsfájlja nem található, vagy nem tartalmazza az Ön oldalához tartozó megfelelő API-kulcsot.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'getLayerWarning':"A(z) ${layerType} fólia nem töltődött be helyesen.\x3cbr\x3e\x3cbr\x3eAhhoz, hogy ez az üzenet eltűnjön, válasszon egy új BaseLayer fóliát a jobb felső sarokban található fóliakapcsoló segítségével.\x3cbr\x3e\x3cbr\x3eNagy valószínűséggel ez azért van, mert a(z) ${layerLib} könyvtár parancsfájlja helytelen.\x3cbr\x3e\x3cbr\x3eFejlesztőknek: A helyes működtetésre vonatkozó segítség az alábbi helyen érhető el, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ekattintson ide\x3c/a\x3e",'scale':"Lépték = 1 : ${scaleDenom}",'W':"Ny",'E':"K",'N':"É",'S':"D",'layerAlreadyAdded':"Megpróbálta hozzáadni a(z) ${layerName} fóliát a térképhez, de az már hozzá van adva",'reprojectDeprecated':"Ön a \'reproject\' beállítást használja a(z) ${layerName} fólián. Ez a beállítás érvénytelen: használata az üzleti alaptérképek fölötti adatok megjelenítésének támogatására szolgált, de ezt a funkció ezentúl a Gömbi Mercator használatával érhető el. További információ az alábbi helyen érhető el: http://trac.openlayers.org/wiki/SphericalMercator",'methodDeprecated':"Ez a módszer érvénytelenítve lett és a 3.0-s verzióból el lesz távolítva. Használja a(z) ${newMethod} módszert helyette.",'boundsAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'lonlatAddError':"A hossz. és szél. értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'pixelAddError':"Az x és y értékeknek egyaránt meg kell felelnie, hogy a funkciót hozzáadhassa.",'unsupportedGeometryType':"Nem támogatott geometriatípus: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition sikertelen: lehetséges, hogy a(z) ${elemId} azonosítójú elem téves helyre került.",'filterEvaluateNotImplemented':"ennél a szűrőtípusnál kiértékelés nem hajtódik végre."});OpenLayers.Lang["ia"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Le responsa a un requesta non esseva maneate: ${statusText}",'permalink':"Permaligamine",'overlays':"Superpositiones",'baseLayer':"Strato de base",'sameProjection':"Le mini-carta functiona solmente si illo es in le mesme projection que le carta principal",'readNotImplemented':"Lectura non implementate.",'writeNotImplemented':"Scriptura non implementate.",'noFID':"Non pote actualisar un elemento sin FID.",'errorLoadingGML':"Error al cargamento del file GML ${url}",'browserNotSupported':"Tu navigator non supporta le rendition de vectores. Le renditores actualmente supportate es:\n${renderers}",'componentShouldBe':"addFeatures: le componente debe esser del typo ${geomType}",'getFeatureError':"getFeatureFromEvent ha essite appellate in un strato sin renditor. Isto significa generalmente que tu ha destruite un strato, ma lassava un gestor associate con illo.",'minZoomLevelError':"Le proprietate minZoomLevel es solmente pro uso con le stratos descendente de FixedZoomLevels. Le facto que iste strato WFS verifica minZoomLevel es un reliquia del passato. Nonobstante, si nos lo remove immediatemente, nos pote rumper applicationes a base de OL que depende de illo. Ergo nos lo declara obsolete; le verification de minZoomLevel in basso essera removite in version 3.0. Per favor usa in su loco le configuration de resolutiones min/max como describite a: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transaction WFS: SUCCESSO ${response}",'commitFailed':"Transaction WFS: FALLEVA ${response}",'googleWarning':"Le strato Google non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de Google Maps non esseva includite o non contine le clave API correcte pro tu sito.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclicca hic\x3c/a",'getLayerWarning':"Le strato ${layerType} non poteva esser cargate correctemente.\x3cbr\x3e\x3cbr\x3ePro disfacer te de iste message, selige un nove BaseLayer in le selector de strato in alto a dextra.\x3cbr\x3e\x3cbr\x3eMulto probabilemente, isto es proque le script del libreria de ${layerLib} non esseva correctemente includite.\x3cbr\x3e\x3cbr\x3eDisveloppatores: Pro adjuta de corriger isto, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclicca hic\x3c/a\x3e",'scale':"Scala = 1 : ${scaleDenom}",'W':"W",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Tu tentava adder le strato: ${layerName} al carta, ma illo es ja presente",'reprojectDeprecated':"Tu usa le option \'reproject\' in le strato ${layerName} layer. Iste option es obsolescente: illo esseva pro poter monstrar datos super cartas de base commercial, ma iste functionalitate pote ora esser attingite con le uso de Spherical Mercator. Ulterior information es disponibile a http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Iste methodo ha essite declarate obsolescente e essera removite in version 3.0. Per favor usa ${newMethod} in su loco.",'boundsAddError':"Tu debe passar le duo valores x e y al function add.",'lonlatAddError':"Tu debe passar le duo valores lon e lat al function add.",'pixelAddError':"Tu debe passar le duo valores x e y al function add.",'unsupportedGeometryType':"Typo de geometria non supportate: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falleva: le elemento con id ${elemId} pote esser mal placiate.",'filterEvaluateNotImplemented':"\"evaluate\" non es implementate pro iste typo de filtro."});OpenLayers.Lang["is"]=OpenLayers.Util.applyDefaults({'permalink':"Varanlegur tengill",'overlays':"Þekjur",'baseLayer':"Grunnlag",'sameProjection':"Yfirlitskortið virkar aðeins ef það er í sömu vörpun og aðalkortið",'readNotImplemented':"Skrifun er óútfærð.",'writeNotImplemented':"Lestur er óútfærður.",'errorLoadingGML':"Villa kom upp við að hlaða inn GML skránni ${url}",'scale':"Skali = 1 : ${scaleDenom}",'layerAlreadyAdded':"Þú reyndir að bæta laginu ${layerName} á kortið en það er þegar búið að bæta því við",'methodDeprecated':"Þetta fall hefur verið úrelt og verður fjarlægt í 3.0. Notaðu ${newMethod} í staðin."});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.

"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.

"+"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.

"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"clicca qui",'getLayerWarning':"Il livello ${layerType} non è riuscito a caricare correttamente.

"+"Per evitare questo messaggio, seleziona un nuovo BaseLayer "+"nel selettore di livelli nell'angolo in alto a destra.

"+"Più precisamente, ciò accade perchè la libreria ${layerLib} "+"non è stata inclusa nella pagina.

"+"Sviluppatori: Per aiuto su come farlo funzionare correttamente, "+"clicca qui",'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["ja"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"未処理の要求は ${statusText} を返します",'permalink':"パーマリンク",'overlays':"オーバーレイ",'baseLayer':"基底レイヤー",'sameProjection':"概観地図はメインの地図と同じ投影法をとる場合のみ機能します",'readNotImplemented':"読み込みは実装されていません。",'writeNotImplemented':"書き込みは実装されていません。",'noFID':"FID のない地物は更新できません。",'errorLoadingGML':"GML ファイル ${url} の読み込みエラー",'browserNotSupported':"あなたのブラウザはベクターグラフィックスの描写に対応していません。現時点で対応しているソフトウェアは以下のものです。\n${renderers}",'componentShouldBe':"addFeatures: 要素は ${geomType} であるべきです",'getFeatureError':"getFeatureFromEvent がレンダラーのないレイヤーから呼ばれました。通常、これはあなたがレイヤーを、それに関連づけられたいくつかのハンドラを除いて、破壊してしまったことを意味します。",'minZoomLevelError':"minZoomLevel プロパティは FixedZoomLevels を継承するレイヤーでの使用のみを想定しています。この minZoomLevel に対する WFS レイヤーの検査は歴史的なものです。しかしながら、この検査を除去するとそれに依存する OpenLayers ベースのアプリケーションを破壊してしまう可能性があります。よって廃止が予定されており、この minZoomLevel 検査はバージョン3.0で除去されます。代わりに、http://trac.openlayers.org/wiki/SettingZoomLevels で解説されている、最小および最大解像度設定を使用してください。",'commitSuccess':"WFS トランザクション: 成功 ${response}",'commitFailed':"WFS トランザクション: 失敗 ${response}",'googleWarning':"Google レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは Google マップ用ライブラリのスクリプトが組み込まれていないか、あなたのサイトに対応する正しい API キーが設定されていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'getLayerWarning':"${layerType} レイヤーが正しく読み込みを行えませんでした。\x3cbr\x3e\x3cbr\x3eこのメッセージを消すには、右上の隅にあるレイヤー切り替え部分で新しい基底レイヤーを選んでください。\x3cbr\x3e\x3cbr\x3eおそらく、これは ${layerLib} ライブラリのスクリプトが正しく組み込まれていないためです。\x3cbr\x3e\x3cbr\x3e開発者の方へ: 正しい動作をさせるために\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eこちらのウィキ\x3c/a\x3eを参照してください。",'scale':"縮尺 = 1 : ${scaleDenom}",'W':"西",'E':"東",'N':"北",'S':"南",'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 と y の値両方を add 関数に渡さなければなりません。",'unsupportedGeometryType':"未対応の形状型: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition が失敗しました: id ${elemId} をもつ要素が誤った位置にある可能性があります。",'filterEvaluateNotImplemented':"このフィルター型について evaluate は実装されていません。"});OpenLayers.Lang["km"]=OpenLayers.Util.applyDefaults({'permalink':"តំណភ្ជាប់អចិន្ត្រៃយ៍",'baseLayer':"ស្រទាប់បាត​",'errorLoadingGML':"កំហុសកំឡុងពេលផ្ទុកឯកសារ GML ${url}",'scale':"មាត្រដ្ឋាន = ១ ៖ ${scaleDenom}"});OpenLayers.Lang["ksh"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Met dä Antwoot op en Aanfrooch ham_mer nix aanjefange: ${statusText}",'permalink':"Lengk op Duuer",'overlays':"Drövver jelaat",'baseLayer':"Jrund-Nivoh",'sameProjection':"De Övverseeschs_Kaat deiht et bloß, wann se de sälve Projäxjuhn bruche deiht, wi de Houp_Kaat",'readNotImplemented':"„\x3ccode lang=\"en\"\x3eread\x3c/code\x3e“ is em Projramm nit fürjesinn.",'writeNotImplemented':"„\x3ccode lang=\"en\"\x3ewrite\x3c/code\x3e“ is em Projramm nit fürjesinn.",'noFID':"En Saach, woh kein \x3ci lang=\"en\"\x3eFID\x3c/i\x3e för doh es, löht sesch nit ändere.",'errorLoadingGML':"Fähler beim \x3ci lang=\"en\"\x3eGML\x3c/i\x3e-Datei-Laade vun \x3ccode\x3e${url}\x3c/code\x3e",'browserNotSupported':"Dinge Brauser kann kein Väktore ußjävve. De Zoote Ußjaabe, di em Momang jon, sen:\n${renderers}",'componentShouldBe':"\x3ccode lang=\"en\"\x3eaddFeatures\x3c/code\x3e: dä Aandeil sullt vun dä Zoot „\x3ccode lang=\"en\"\x3e${geomType}\x3c/code\x3e“ sin.",'getFeatureError':"\x3ccode lang=\"en\"\x3egetFeatureFromEvent\x3c/code\x3e es vun enem Nivoh opjeroofe woode, woh et kei Projramm zom Ußjävve jit. Dat bedügg för jewöhnlesch, dat De e Nivoh kapott jemaat häs, ävver nit e Projramm för domet ömzejonn, wat domet verbonge es.",'minZoomLevelError':"De Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ es bloß doför jedaach, dat mer se met dä Nivvohß bruch, di vun \x3ccode lang=\"en\"\x3eFixedZoomLevels\x3c/code\x3e affhange don. Dat dat \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Nivvoh övverhoup de Eijeschaff „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“ pröhfe deiht, es noch övveresch vun fröhjer. Mer künne dat ävver jez nit fott lohße, oohne dat mer Jevaa loufe, dat Aanwendunge vun OpenLayers nit mieh loufe, di sesch doh velleijsch noch drop am verlohße sin. Dröm sare mer, dat mer et nit mieh han welle, un de „\x3ccode lang=\"en\"\x3eminZoomLevel\x3c/code\x3e“-Eijeschaff weed hee vun de Version 3.0 af nit mieh jeprööf wäde. Nemm doför de Enstellung för de hühßte un de kleinßte Oplöhsung, esu wi et en http://trac.openlayers.org/wiki/SettingZoomLevels opjeschrevve es.",'commitSuccess':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es joot jeloufe: ${response}",'commitFailed':"Dä \x3ci lang=\"en\"\x3eWFS\x3c/i\x3e-Vörjang es scheif jejange: ${response}",'googleWarning':"Dat Nivvoh \x3ccode lang=\"en\"\x3eGoogle\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhke, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat wiel dat \x3ci lang=\"en\"\x3eGoogle-Maps\x3c/i\x3e-Skrepp entweeder nit reschtesch enjebonge wood, udder nit dä reschtejje \x3ci lang=\"en\"\x3eAPI\x3c/i\x3e-Schlößel för Ding Web-ßait scheke deiht.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/Google\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'getLayerWarning':"Dat Nivvoh \x3ccode\x3e${layerType}\x3c/code\x3e kunnt nit reschtesch jelaade wääde.\x3cbr /\x3e\x3cbr /\x3eÖm hee di Nohreesch loß ze krijje, donn en ander Jrund-Nivvoh ußsöhkre, rähß bovve en de Äk.\x3cbr /\x3e\x3cbr /\x3eWascheinlesch es dat, wiel dat Skrepp \x3ccode\x3e${layerLib}\x3c/code\x3e nit reschtesch enjebonge wood.\x3cbr /\x3e\x3cbr /\x3eFör Projrammierer jidd_Et Hölp do_drövver, \x3ca href=\"http://trac.openlayers.org/wiki/${layerLib}\" target=\"_blank\"\x3ewi mer dat aan et Loufe brengk\x3c/a\x3e.",'scale':"Mohßshtaab = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"S",'layerAlreadyAdded':"Do häß versöhk, dat Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e en di Kaat eren ze bränge, et wohr ävver ald do dren.",'reprojectDeprecated':"Do bruchs de Ußwahl \x3ccode\x3ereproject\x3c/code\x3e op däm Nivvoh \x3ccode\x3e${layerName}\x3c/code\x3e. Di Ußwahl es nit mieh jähn jesinn. Se wohr doför jedaach, öm Date op jeschääfsmäßesch eruß jejovve Kaate bovve drop ze moole, wat ävver enzwesche besser met dä Öngershtözung för de ßfääresche Mäkaator Beldscher jeiht. Doh kanns De mieh drövver fenge op dä Sigg: http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Hee di Metood es nim_mih aktoäll un et weed se en dä Version 3.0 nit mieh jävve. Nemm \x3ccode\x3e${newMethod}\x3c/code\x3e doföör.",'boundsAddError':"Do moß beeds vun de \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e Wääte aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'lonlatAddError':"Do moß beeds \x3ccode\x3elon\x3c/code\x3e un \x3ccode\x3elat\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'pixelAddError':"Do moß beeds \x3ccode\x3ex\x3c/code\x3e un \x3ccode\x3ey\x3c/code\x3e aan de Fungkßjohn \x3ccode\x3eadd\x3c/code\x3e jävve.",'unsupportedGeometryType':"De Zoot Jommetrii dom_mer nit ongershtöze: \x3ccode\x3e${geomType}\x3c/code\x3e",'pagePositionFailed':"\x3ccode lang=\"en\"\x3eOpenLayers.Util.pagePosition\x3c/code\x3e es donevve jejange: dat Denge met dä Kännong \x3ccode\x3e${elemId}\x3c/code\x3e künnt am verkeehte Plaz sin.",'filterEvaluateNotImplemented':"„\x3ccode lang=\"en\"\x3eevaluate\x3c/code\x3e“ es för di Zoot Fellter nit enjereschdt."});OpenLayers.Lang["nb"]={'unhandledRequest':"Ubehandlet forespørsel returnerte ${statusText}",'permalink':"Kobling til denne siden",'overlays':"Kartlag",'baseLayer':"Bakgrunnskart",'sameProjection':"Oversiktskartet fungerer bare når det har samme projeksjon som hovedkartet",'readNotImplemented':"Lesing er ikke implementert.",'writeNotImplemented':"Skriving er ikke implementert.",'noFID':"Kan ikke oppdatere et feature (et objekt) som ikke har FID.",'errorLoadingGML':"Feil under lasting av GML-fil ${url}",'browserNotSupported':"Din nettleser støtter ikke vektortegning. Tegnemetodene som støttes er:\n${renderers}",'componentShouldBe':"addFeatures : komponenten må være en ${geomType}",'getFeatureError':"getFeatureFromEvent har blitt kjørt mot et lag uten noen tegnemetode. Dette betyr som regel at du "+"fjernet et lag uten å fjerne alle håndterere tilknyttet laget.",'minZoomLevelError':"Egenskapen minZoomLevel er kun ment til bruk på lag "+"basert på FixedZoomLevels. At dette wfs-laget sjekker "+"minZoomLevel er en etterlevning fra tidligere versjoner. Det kan dog ikke "+"tas bort uten å risikere at OL-baserte applikasjoner "+"slutter å virke, så det er merket som foreldet: "+"minZoomLevel i sjekken nedenfor vil fjernes i 3.0. "+"Vennligst bruk innstillingene for min/maks oppløsning "+"som er beskrevet her: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transaksjon: LYKTES ${response}",'commitFailed':"WFS-transaksjon: MISLYKTES ${response}",'googleWarning':"Google-laget kunne ikke lastes.

"+"Bytt til et annet bakgrunnslag i lagvelgeren i "+"øvre høyre hjørne for å slippe denne meldingen.

"+"Sannsynligvis forårsakes feilen av at Google Maps-biblioteket "+"ikke er riktig inkludert på nettsiden, eller at det ikke er "+"angitt riktig API-nøkkel for nettstedet.

"+"Utviklere: For hjelp til å få dette til å virke se "+"her.",'getLayerWarning':"${layerType}-laget kunne ikke lastes.

"+"Bytt til et annet bakgrunnslag i lagvelgeren i "+"øvre høyre hjørne for å slippe denne meldingen.

"+"Sannsynligvis forårsakes feilen av at "+"${layerLib}-biblioteket ikke var riktig inkludert "+"på nettsiden.

"+"Utviklere: For hjelp til å få dette til å virke se "+"her.",'scale':"Skala 1 : ${scaleDenom}",'layerAlreadyAdded':"Du forsøkte å legge til laget ${layerName} på kartet, men det er allerede lagt til",'reprojectDeprecated':"Du bruker innstillingen 'reproject' på laget ${layerName}. "+"Denne innstillingen er foreldet, den var ment for å støtte "+"visning av kartdata over kommersielle bakgrunnskart, men det "+"bør nå gjøres med støtten for Spherical Mercator. Mer informasjon "+"finnes på http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denne metoden er markert som foreldet og vil bli fjernet i 3.0. "+"Vennligst bruk ${newMethod} i stedet.",'boundsAddError':"Du må gi både x- og y-verdier til funksjonen add.",'lonlatAddError':"Du må gi både lon- og lat-verdier til funksjonen add.",'pixelAddError':"Du må gi både x- og y-verdier til funksjonen add.",'unsupportedGeometryType':"Geometritypen ${geomType} er ikke støttet",'pagePositionFailed':"OpenLayers.Util.pagePosition feilet: elementet med id ${elemId} kan være feilplassert.",'end':''};OpenLayers.Lang["no"]=OpenLayers.Lang["nb"];OpenLayers.Lang["nds"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Unbehannelt Trüchmellels för de Anfraag ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Achtergrundkoort",'sameProjection':"De Översichtskoort geiht blot, wenn de sülve Projekschoon as bi de Hööftkoort bruukt warrt",'readNotImplemented':"Lesen is nich inricht.",'writeNotImplemented':"Schrieven is nich inricht.",'noFID':"En Feature, dat keen FID hett, kann nich aktuell maakt warrn.",'errorLoadingGML':"Fehler bi’t Laden vun de GML-Datei ${url}",'browserNotSupported':"Dien Browser ünnerstütt keen Vektorbiller. Ünnerstütt Renderers:\n${renderers}",'componentShouldBe':"addFeatures : Kumponent schull man den Typ ${geomType} hebben",'getFeatureError':"getFeatureFromEvent is von en Laag ahn Render opropen worrn. Dat bedüüdt normalerwies, dat en Laag wegmaakt worrn is, aver nich de Handler, de dor op verwiest.",'commitSuccess':"WFS-Transakschoon: hett klappt ${response}",'commitFailed':"WFS-Transakschoon: hett nich klappt ${response}",'scale':"Skaal = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du versöchst de Laag „${layerName}“ to de Koort totofögen, man de is al toföögt",'methodDeprecated':"Disse Methood is oold un schall dat in 3.0 nich mehr geven. Bruuk dor man beter ${newMethod} för.",'boundsAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'lonlatAddError':"De Weert lon un lat, de mööt all beid an de add-Funkschoon övergeven warrn.",'pixelAddError':"De Weert x un y, de mööt all beid an de add-Funkschoon övergeven warrn.",'unsupportedGeometryType':"Nich ünnerstütt Geometrie-Typ: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition güng nich: Element mit de Id ${elemId} is villicht an’n verkehrten Platz."});OpenLayers.Lang["nl"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Het verzoek is niet afgehandeld met de volgende melding: ${statusText}",'permalink':"Permanente verwijzing",'overlays':"Overlays",'baseLayer':"Achtergrondkaart",'sameProjection':"De overzichtskaart werkt alleen als de projectie gelijk is aan de projectie van de hoofdkaart",'readNotImplemented':"Lezen is niet geïmplementeerd.",'writeNotImplemented':"Schrijven is niet geïmplementeerd.",'noFID':"Een optie die geen FID heeft kan niet bijgewerkt worden.",'errorLoadingGML':"Er is een fout opgetreden bij het laden van het GML bestand van ${url}",'browserNotSupported':"Uw browser ondersteunt het weergeven van vectoren niet.\nMomenteel ondersteunde weergavemogelijkheden:\n${renderers}",'componentShouldBe':"addFeatures : component moet van het type ${geomType} zijn",'getFeatureError':"getFeatureFromEvent is aangeroepen op een laag zonder rederer.\nDit betekent meestal dat u een laag hebt verwijderd, maar niet een handler die ermee geassocieerd was.",'minZoomLevelError':"De eigenschap minZoomLevel is alleen bedoeld voor gebruik lagen met die afstammen van FixedZoomLevels-lagen.\nDat deze WFS-laag minZoomLevel controleert, is een overblijfsel uit het verleden.\nWe kunnen deze controle echter niet verwijderen zonder op OL gebaseerde applicaties die hervan afhankelijk zijn stuk te maken.\nDaarom heeft deze functionaliteit de eigenschap \'deprecated\' gekregen - de minZoomLevel wordt verwijderd in versie 3.0.\nGebruik in plaats van deze functie de mogelijkheid om min/max voor resolutie in te stellen zoals op de volgende pagina wordt beschreven:\nhttp://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transactie: succesvol ${response}",'commitFailed':"WFS-transactie: mislukt ${response}",'googleWarning':"De Google-Layer kon niet correct geladen worden.\x3cbr /\x3e\x3cbr /\x3e\nOm deze melding niet meer te krijgen, moet u een andere achtergrondkaart kiezen in de laagwisselaar in de rechterbovenhoek.\x3cbr /\x3e\x3cbr /\x3e\nDit komt waarschijnlijk doordat de bibliotheek ${layerLib} niet correct ingevoegd is.\x3cbr /\x3e\x3cbr /\x3e\nOntwikkelaars: \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklik hier\x3c/a\x3e om dit werkend te krijgen.",'getLayerWarning':"De laag ${layerType} kon niet goed geladen worden.\x3cbr /\x3e\x3cbr /\x3e\nOm deze melding niet meer te krijgen, moet u een andere achtergrondkaart kiezen in de laagwisselaar in de rechterbovenhoek.\x3cbr /\x3e\x3cbr /\x3e\nDit komt waarschijnlijk doordat de bibliotheek ${layerLib} niet correct is ingevoegd.\x3cbr /\x3e\x3cbr /\x3e\nOntwikkelaars: \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklik hier\x3c/a\x3e om dit werkend te krijgen.",'scale':"Schaal = 1 : ${scaleDenom}",'W':"W",'E':"O",'N':"N",'S':"Z",'layerAlreadyAdded':"U hebt geprobeerd om de laag ${layerName} aan de kaart toe te voegen, maar deze is al toegevoegd",'reprojectDeprecated':"U gebruikt de optie \'reproject\' op de laag ${layerName}.\nDeze optie is vervallen: deze optie was ontwikkeld om gegevens over commerciële basiskaarten weer te geven, maar deze functionaliteit wordt nu bereikt door ondersteuning van Spherical Mercator.\nMeer informatie is beschikbaar op http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Deze methode is verouderd en wordt verwijderd in versie 3.0.\nGebruik ${newMethod}.",'boundsAddError':"U moet zowel de x- als de y-waarde doorgeven aan de toevoegfunctie.",'lonlatAddError':"U moet zowel de lengte- als de breedtewaarde doorgeven aan de toevoegfunctie.",'pixelAddError':"U moet zowel de x- als de y-waarde doorgeven aan de toevoegfunctie.",'unsupportedGeometryType':"Dit geometrietype wordt niet ondersteund: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition is mislukt: het element met id ${elemId} is wellicht onjuist geplaatst.",'filterEvaluateNotImplemented':"evalueren is niet geïmplementeerd voor dit filtertype."});OpenLayers.Lang["nn"]=OpenLayers.Util.applyDefaults({'scale':"Skala = 1 : ${scaleDenom}",'layerAlreadyAdded':"Du freista å leggja til laget «${layerName}» på kartet, men det har alt vorte lagt til.",'boundsAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen.",'lonlatAddError':"Du er nøydd til å gje både lon- og lat-verdiar til «add»-funksjonen.",'pixelAddError':"Du er nøydd til å gje både ein x- og ein y-verdi til «add»-funksjonen."});OpenLayers.Lang["pt-br"]=OpenLayers.Util.applyDefaults({'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.\x3cbr\x3e\x3cbr\x3ePara se livrar dessa mensagem, selecione uma nova Camada Base, na ferramenta de alternação de camadas localização do canto superior direito.\x3cbr\x3e\x3cbr\x3eMuito 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.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: Para obter ajuda em solucionar esse problema \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3ecliquem aqui\x3c/a\x3e",'getLayerWarning':"Não foi possível carregar a camada ${layerType} corretamente.\x3cbr\x3e\x3cbr\x3ePara se livrar dessa mensagem, selecione uma nova Camada Base, na ferramenta de alternação de camadas localização do canto superior direito.\x3cbr\x3e\x3cbr\x3eMuito provavelmente, isso foi causado porque o script da biblioteca ${layerLib} não foi incluído corretamente.\x3cbr\x3e\x3cbr\x3eDesenvolvedores: Para obter ajuda em solucionar esse problema \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3ecliquem aqui\x3c/a\x3e",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"L",'N':"N",'S':"S",'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.",'filterEvaluateNotImplemented':"evaluete não está implementado para este tipo de filtro."});OpenLayers.Lang["pt"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Servidor devolveu erro não contemplado ${statusText}",'permalink':"Ligação permanente",'overlays':"Sobreposições",'baseLayer':"Camada Base",'sameProjection':"O mapa panorâmico só funciona quando está na mesma projeção que o mapa principal",'readNotImplemented':"Leitura não implementada.",'writeNotImplemented':"Escrita não implementada.",'noFID':"Não é possível atualizar um elemento para a qual não há FID.",'errorLoadingGML':"Erro ao carregar ficheiro GML ${url}",'browserNotSupported':"O seu navegador não suporta renderização vetorial. Actualmente os renderizadores suportados são:\n${renderers}",'componentShouldBe':"addFeatures: componente deve ser um(a) ${geomType}",'getFeatureError':"getFeatureFromEvent foi chamado numa camada sem renderizador. Isto normalmente significa que destruiu uma camada, mas não um manipulador \'\'(handler)\'\' que lhe está associado.",'minZoomLevelError':"A propriedade minZoomLevel só deve ser usada com as camadas descendentes da FixedZoomLevels. A verificação da propriedade por esta camada wfs é uma relíquia do passado. No entanto, não podemos removê-la sem correr o risco de afectar aplicações OL que dependam dela. Portanto, estamos a torná-la obsoleta -- a verificação minZoomLevel será removida na versão 3.0. Em vez dela, por favor, use as opções de resolução min/max descritas aqui: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transacção WFS: SUCESSO ${response}",'commitFailed':"Transacção WFS: FALHOU ${response}",'googleWarning':"A Camada Google não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara deixar de receber esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca do Google Maps não foi incluído ou não contém a chave API correcta para o seu sítio.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'getLayerWarning':"A camada ${layerType} não foi correctamente carregada.\x3cbr\x3e\x3cbr\x3ePara desactivar esta mensagem, seleccione uma nova Camada-Base no \'\'switcher\'\' de camadas no canto superior direito.\x3cbr\x3e\x3cbr\x3eProvavelmente, isto acontece porque o \'\'script\'\' da biblioteca ${layerLib} não foi incluído correctamente.\x3cbr\x3e\x3cbr\x3eProgramadores: Para ajuda sobre como solucionar o problema \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eclique aqui\x3c/a\x3e .",'scale':"Escala = 1 : ${scaleDenom}",'W':"O",'E':"E",'N':"N",'S':"S",'layerAlreadyAdded':"Você tentou adicionar a camada: ${layerName} ao mapa, mas ela já tinha sido adicionada antes",'reprojectDeprecated':"Está usando a opção \'reproject\' na camada ${layerName}. Esta opção é obsoleta: foi concebida para permitir a apresentação de dados sobre mapas-base comerciais, mas esta funcionalidade é agora suportada pelo Mercator Esférico. Mais informação está disponível em http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Este método foi declarado obsoleto e será removido na versão 3.0. Por favor, use ${newMethod} em vez disso.",'boundsAddError':"Você deve passar tanto o valor x como o y à função de adição.",'lonlatAddError':"Você deve passar tanto o valor lon como o lat à função de adição.",'pixelAddError':"Você deve passar tanto o valor x como o y à função de adição.",'unsupportedGeometryType':"Tipo de geometria não suportado: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition falhou: o elemento com o id ${elemId} poderá estar mal-posicionado.",'filterEvaluateNotImplemented':"avaliar não está implementado para este tipo de filtro."});OpenLayers.Lang["ru"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Необработанный запрос вернул ${statusText}",'permalink':"Постоянная ссылка",'overlays':"Слои",'baseLayer':"Основной слой",'sameProjection':"Обзорная карта работает только тогда, когда имеет ту же проекцию, что и основная",'readNotImplemented':"Чтение не реализовано.",'writeNotImplemented':"Запись не реализована.",'noFID':"Невозможно обновить объект, для которого нет FID.",'errorLoadingGML':"Ошибка при загрузке файла GML ${url}",'browserNotSupported':"Ваш браузер не поддерживает векторную графику. На данный момент поддерживаются:\n${renderers}",'componentShouldBe':"addFeatures: компонент должен быть ${geomType}",'getFeatureError':"getFeatureFromEvent вызван для слоя без рендерера. Обычно это говорит о том, что вы уничтожили слой, но оставили связанный с ним обработчик.",'minZoomLevelError':"Свойство minZoomLevel предназначено только для использования со слоями, являющимися потомками FixedZoomLevels. То, что этот WFS-слой проверяется на minZoomLevel — реликт прошлого. Однако мы не можем удалить эту функцию, так как, возможно, от неё зависят некоторые основанные на OpenLayers приложения. Функция объявлена устаревшей — проверка minZoomLevel будет удалена в 3.0. Пожалуйста, используйте вместо неё настройку мин/макс разрешения, описанную здесь: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Транзакция WFS: УСПЕШНО ${response}",'commitFailed':"Транзакция WFS: ОШИБКА ${response}",'googleWarning':"Слой Google не удалось нормально загрузить.\x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека Google Maps не была включена или не содержит корректного API-ключа для вашего сайта.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'getLayerWarning':"Слой ${layerType} не удалось нормально загрузить. \x3cbr\x3e\x3cbr\x3eЧтобы избавиться от этого сообщения, выбите другой основной слой в переключателе в правом верхнем углу.\x3cbr\x3e\x3cbr\x3eСкорее всего, причина в том, что библиотека ${layerLib} не была включена или была включена некорректно.\x3cbr\x3e\x3cbr\x3eРазработчикам: чтобы узнать, как сделать, чтобы всё заработало, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eщёлкните тут\x3c/a\x3e",'scale':"Масштаб = 1 : ${scaleDenom}",'W':"З",'E':"В",'N':"С",'S':"Ю",'layerAlreadyAdded':"Вы попытались добавить слой «${layerName}» на карту, но он уже был добавлен",'reprojectDeprecated':"Вы используете опцию \'reproject\' для слоя ${layerName}. Эта опция является устаревшей: ее использование предполагалось для поддержки показа данных поверх коммерческих базовых карт, но теперь этот функционал несёт встроенная поддержка сферической проекции Меркатора. Больше сведений доступно на http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Этот метод считается устаревшим и будет удалён в версии 3.0. Пожалуйста, пользуйтесь ${newMethod}.",'boundsAddError':"Функции add надо передавать оба значения, x и y.",'lonlatAddError':"Функции add надо передавать оба значения, lon и lat.",'pixelAddError':"Функции add надо передавать оба значения, x и y.",'unsupportedGeometryType':"Неподдерживаемый тип геометрии: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: элемент с id ${elemId} может находиться не в нужном месте.",'filterEvaluateNotImplemented':"evaluate не реализовано для фильтра данного типа."});OpenLayers.Lang["sk"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Neobslúžené požiadavky vracajú ${statusText}",'permalink':"Trvalý odkaz",'overlays':"Prekrytia",'baseLayer':"Základná vrstva",'sameProjection':"Prehľadová mapka funguje iba vtedy, keď je v rovnakej projekcii ako hlavná mapa",'readNotImplemented':"Čítanie nie je implementované.",'writeNotImplemented':"Zápis nie je implementovaný.",'noFID':"Nie je možné aktualizovať vlastnosť, pre ktorú neexistuje FID.",'errorLoadingGML':"Chyba pri načítaní súboru GML ${url}",'browserNotSupported':"Váš prehliadač nepodporuje vykresľovanie vektorov. Momentálne podporované vykresľovače sú:\n${renderers}",'componentShouldBe':"addFeatures: komponent by mal byť ${geomType}",'getFeatureError':"getFeatureFromEvent bola zavolaná na vrstve bez vykresľovača. To zvyčajne znamená, že ste odstránili vrstvu, ale nie niektorú z obslúh, ktorá je s ňou asociovaná.",'minZoomLevelError':"Vlastnosť minZoomLevel je určený iba na použitie s vrstvami odvodenými od FixedZoomLevels. To, že táto wfs vrstva kontroluje minZoomLevel je pozostatok z minulosti. Nemôžeme ho však odstrániť, aby sme sa vyhli možnému porušeniu aplikácií založených na Open Layers, ktoré na tomto môže závisieť. Preto ho označujeme ako zavrhovaný - dolu uvedená kontrola minZoomLevel bude odstránená vo verzii 3.0. Použite prosím namiesto toho kontrolu min./max. rozlíšenia podľa tu uvedeného popisu: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Transakcia WFS: ÚSPEŠNÁ ${response}",'commitFailed':"Transakcia WFS: ZLYHALA ${response}",'googleWarning':"Vrstvu Google nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice Google Maps buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'getLayerWarning':"Vrstvu ${layerType} nebolo možné správne načítať.\x3cbr\x3e\x3cbr\x3eAby ste sa tejto správy zbavili vyberte novú BaseLayer v prepínači vrstiev v pravom hornom rohu.\x3cbr\x3e\x3cbr\x3eToto sa stalo pravdepodobne preto, že skript knižnice ${layerType} buď nebol načítaný alebo neobsahuje správny kľúč API pre vašu lokalitu.\x3cbr\x3e\x3cbr\x3eVývojári: Tu môžete získať \x3ca href=\'http://trac.openlayers.org/wiki/${layerType}\' target=\'_blank\'\x3epomoc so sfunkčnením\x3c/a\x3e",'scale':"Mierka = 1 : ${scaleDenom}",'layerAlreadyAdded':"Pokúsili ste sa do mapy pridať vrstvu ${layerName}, ale tá už bola pridaná",'reprojectDeprecated':"Používate voľby „reproject“ vrstvy ${layerType}. Táto voľba je zzavrhovaná: jej použitie bolo navrhnuté na podporu zobrazovania údajov nad komerčnými základovými mapami, ale túto funkcionalitu je teraz možné dosiahnuť pomocou Spherical Mercator. Ďalšie informácie získate na stránke http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Táto metóda je zavrhovaná a bude odstránená vo verzii 3.0. Použite prosím namiesto nej metódu ${newMethod}.",'boundsAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'lonlatAddError':"Sčítacej funkcii musíte dať hodnoty lon (zem. dĺžka) aj lat (zem. šírka).",'pixelAddError':"Sčítacej funkcii musíte dať hodnoty x aj y.",'unsupportedGeometryType':"Nepodporovaný typ geometrie: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition zlyhalo: prvok s id ${elemId} môže byť zle umiestnený.",'filterEvaluateNotImplemented':"evaluate nie je implementovaný pre tento typ filtra"});OpenLayers.Lang["sv"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Ej hanterad fråga retur ${statusText}",'permalink':"Permalänk",'overlays':"Kartlager",'baseLayer':"Bakgrundskarta",'sameProjection':"Översiktskartan fungerar endast när den har samma projektion som huvudkartan",'readNotImplemented':"Läsning ej implementerad.",'writeNotImplemented':"Skrivning ej implementerad.",'noFID':"Kan ej uppdatera feature (objekt) för vilket FID saknas.",'errorLoadingGML':"Fel i laddning av GML-fil ${url}",'browserNotSupported':"Din webbläsare stöder inte vektorvisning. För närvarande stöds följande visning:\n${renderers}",'componentShouldBe':"addFeatures : komponenten skall vara en ${geomType}",'getFeatureError':"getFeatureFromEvent anropad för lager utan utritning. Detta betyder oftast att man raderat ett lager, men inte en hanterare som är knuten till lagret.",'minZoomLevelError':"Egenskapen minZoomLevel är endast avsedd att användas med lager med FixedZoomLevels. Att detta WFS-lager kontrollerar minZoomLevel är en relik från äldre versioner. Vi kan dock inte ta bort det utan att riskera att OL-baserade tillämpningar som använder detta slutar fungera. Därför är det satt som deprecated, minZoomLevel kommer att tas bort i version 3.0. Använd i stället inställning av min/max resolution som beskrivs här: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS-transaktion: LYCKADES ${response}",'commitFailed':"WFS-transaktion: MISSLYCKADES ${response}",'googleWarning':"Google-lagret kunde inte laddas korrekt.\x3cbr\x3e\x3cbr\x3eFör att slippa detta meddelande, välj en annan bakgrundskarta i lagerväljaren i övre högra hörnet.\x3cbr\x3e\x3cbr\x3eSannolikt beror felet på att Google Maps-biblioteket inte är inkluderat på webbsidan eller på att sidan inte anger korrekt API-nyckel för webbplatsen.\x3cbr\x3e\x3cbr\x3eUtvecklare: hjälp för att åtgärda detta, \x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eklicka här\x3c/a\x3e.",'getLayerWarning':"${layerType}-lagret kunde inte laddas korrekt.\x3cbr\x3e\x3cbr\x3eFör att slippa detta meddelande, välj en annan bakgrundskarta i lagerväljaren i övre högra hörnet.\x3cbr\x3e\x3cbr\x3eSannolikt beror felet på att ${layerLib}-biblioteket inte är inkluderat på webbsidan.\x3cbr\x3e\x3cbr\x3eUtvecklare: hjälp för att åtgärda detta, \x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eklicka här\x3c/a\x3e.",'scale':"\x3cstrong\x3eSkala\x3c/strong\x3e 1 : ${scaleDenom}",'layerAlreadyAdded':"Du försökte lägga till lagret: ${layerName} på kartan, men det har lagts till tidigare",'reprojectDeprecated':"Du använder inställningen \'reproject\' på lagret ${layerName}. Denna inställning markerad som deprecated: den var avsedd att användas för att stödja visning av kartdata på kommersiella bakgrundskartor, men nu bör man i stället använda Spherical Mercator-stöd för den funktionaliteten. Mer information finns på http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"Denna metod är markerad som deprecated och kommer att tas bort i 3.0. Använd ${newMethod} i stället.",'boundsAddError':"Du måste skicka både x- och y-värde till funktionen add.",'lonlatAddError':"Du måste skicka både lon- och lat-värde till funktionen add.",'pixelAddError':"Du måste skicka både x- och y-värde till funktionen add.",'unsupportedGeometryType':"Stöd saknas för geometritypen: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition misslyckades: elementet med id ${elemId} kan placeras fel.",'filterEvaluateNotImplemented':"evaluering har ej implementerats för denna typ av filter."});OpenLayers.Lang["te"]=OpenLayers.Util.applyDefaults({'permalink':"స్థిరలింకు",'W':"ప",'E':"తూ",'N':"ఉ",'S':"ద"});OpenLayers.Lang["vi"]=OpenLayers.Util.applyDefaults({'unhandledRequest':"Không xử lý được phản hồi ${statusText} cho yêu cầu",'permalink':"Liên kết thường trực",'overlays':"Lấp bản đồ",'baseLayer':"Lớp nền",'sameProjection':"Bản đồ toàn cảnh chỉ hoạt động khi cùng phép chiếu với bản đồ chính",'readNotImplemented':"Chưa hỗ trợ chức năng đọc.",'writeNotImplemented':"Chưa hỗ trợ chức năng viết.",'noFID':"Không thể cập nhật tính năng thiếu FID.",'errorLoadingGML':"Lỗi tải tập tin GML tại ${url}",'browserNotSupported':"Trình duyệt của bạn không hỗ trợ chức năng vẽ bằng vectơ. Hiện hỗ trợ các bộ kết xuất:\n${renderers}",'componentShouldBe':"addFeatures: bộ phận cần phải là ${geomType}",'getFeatureError':"getFeatureFromEvent được gọi từ lớp không có bộ kết xuất. Thường thì có lẽ lớp bị xóa nhưng một phần xử lý của nó vẫn còn.",'minZoomLevelError':"Chỉ nên sử dụng thuộc tính minZoomLevel với các lớp FixedZoomLevels-descendent. Việc lớp wfs này tìm cho minZoomLevel là di tích còn lại từ xưa. Tuy nhiên, nếu chúng tôi dời nó thì sẽ vỡ các chương trình OpenLayers mà dựa trên nó. Bởi vậy chúng tôi phản đối sử dụng nó\x26nbsp;– bước tìm cho minZoomLevel sẽ được dời vào phiên bản 3.0. Xin sử dụng thiết lập độ phân tích tối thiểu / tối đa thay thế, theo hướng dẫn này: http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"Giao dịch WFS: THÀNH CÔNG ${response}",'commitFailed':"Giao dịch WFS: THẤT BẠI ${response}",'googleWarning':"Không thể tải lớp Google đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện Google Maps hoặc không được bao gồm hoặc không chứa khóa API hợp với website của bạn.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/Google\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'getLayerWarning':"Không thể tải lớp ${layerType} đúng đắn.\x3cbr\x3e\x3cbr\x3eĐể tránh thông báo này lần sau, hãy chọn BaseLayer mới dùng điều khiển chọn lớp ở góc trên phải.\x3cbr\x3e\x3cbr\x3eChắc script thư viện ${layerLib} không được bao gồm đúng kiểu.\x3cbr\x3e\x3cbr\x3e\x3ca href=\'http://trac.openlayers.org/wiki/${layerLib}\' target=\'_blank\'\x3eTrợ giúp về tính năng này\x3c/a\x3e cho người phát triển.",'scale':"Tỷ lệ = 1 : ${scaleDenom}",'W':"T",'E':"Đ",'N':"B",'S':"N",'layerAlreadyAdded':"Bạn muốn thêm lớp ${layerName} vào bản đồ, nhưng lớp này đã được thêm",'reprojectDeprecated':"Bạn đang áp dụng chế độ “reproject” vào lớp ${layerName}. Chế độ này đã bị phản đối: nó có mục đích hỗ trợ lấp dữ liệu trên các nền bản đồ thương mại; nên thực hiện hiệu ứng đó dùng tính năng Mercator Hình cầu. Có sẵn thêm chi tiết tại http://trac.openlayers.org/wiki/SphericalMercator .",'methodDeprecated':"Phương thức này đã bị phản đối và sẽ bị dời vào phiên bản 3.0. Xin hãy sử dụng ${newMethod} thay thế.",'boundsAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'lonlatAddError':"Cần phải cho cả giá trị lon và lat vào hàm add.",'pixelAddError':"Cần phải cho cả giá trị x và y vào hàm add.",'unsupportedGeometryType':"Không hỗ trợ kiểu địa lý: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition bị thất bại: nguyên tố với ID ${elemId} có thể ở chỗ sai.",'filterEvaluateNotImplemented':"chưa hỗ trợ evaluate cho loại bộ lọc này."});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图层不能正确加载。

"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。

"+"这种情况很可能是没有正确的包含Google地图脚本库,"+"或者是没有包含在你的站点上"+"使用的正确的Google Maps API密匙。

"+"开发者:获取使其正确工作的帮助信息,"+"点击这里",'getLayerWarning':"${layerType} 图层不能正确加载。

"+"要消除这个信息,请在右上角的"+"图层控制面板中选择其他的基础图层。

"+"这种情况很可能是没有正确的包含"+"${layerLib} 脚本库。

"+"开发者:获取使其正确工作的帮助信息,"+"点击这里",'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 圖層無法被正確的載入。

"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。

"+"很有可能是因為 Google Maps 的函式庫"+"腳本沒有被正確的置入,或沒有包含 "+"您網站上正確的 API key

"+"開發者: 要幫助這個行為正確完成,"+"請按這裡",'getLayerWarning':"${layerType} 圖層無法被正確的載入。

"+"要迴避這個訊息, 請在右上角的圖層改變器裡,"+"選一個新的基礎圖層。

"+"很有可能是因為 ${layerLib} 的函式庫"+"腳本沒有被正確的置入。

"+"開發者: 要幫助這個行為正確完成,"+"請按這裡",'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.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:false,positionBlocks:null,blocks:null,fixedRelativePosition:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);if(this.fixedRelativePosition){this.updateRelativePosition();this.calculateRelativePosition=function(px){return this.relativePosition;};} this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;if(closeBox){this.closeDiv.style.zIndex=1;} this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%";},destroy:function(){this.imageSrc=null;this.imageSize=null;this.isAlphaImage=null;this.fixedRelativePosition=false;this.positionBlocks=null;for(var i=0;i0){if(this.getShortString(components[i-1])){strings.push(this.clipLine(components[i],components[i-1]));}} +tspan.textContent=style.label;if(!label.parentNode){label.appendChild(tspan);this.textRoot.appendChild(label);}},getComponentsString:function(components,separator){var renderCmp=[];var complete=true;var len=components.length;var strings=[];var str,component;for(var i=0;i0){if(this.getShortString(components[i-1])){strings.push(this.clipLine(components[i],components[i-1]));}} if(imaxY){k=(x2-x1)/(y2-y1);y2=y2<0?-maxY:maxY;x2=x1+(y2-y1)*k;} return x2+","+y2;},getShortString:function(point){var resolution=this.getResolution();var x=(point.x/resolution+this.left);var y=(this.top-point.y/resolution);if(this.inValidRange(x,y)){return x+","+y;}else{return false;}},getPosition:function(node){return({x:parseFloat(node.getAttributeNS(null,"cx")),y:parseFloat(node.getAttributeNS(null,"cy"))});},importSymbol:function(graphicName){if(!this.defs){this.defs=this.createDefs();} var id=this.container.id+"-"+graphicName;if(document.getElementById(id)!=null){return id;} -var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');return;} -var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points="";var x,y;for(var i=0;i0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left+diff;symbolExtent.right=symbolExtent.right-diff;} cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;this.size=size.clone();this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);} @@ -574,7 +584,8 @@ req.send(null);return req.responseXML;});if(this.keepData){this.data=node;} return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} -return element;},createTextNode:function(text){var node;if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} +return element;},createTextNode:function(text){var node;if(typeof text!=="string"){text=String(text);} +if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0,len=allNodes.length;i=0;--i){this.controls[i].destroy();} this.controls=null;} @@ -704,15 +714,16 @@ return zoom;},zoomTo:function(zoom){if(this.isValidZoomLevel(zoom)){this.setCent center=bounds.getCenterLonLat().wrapDateLine(maxExtent);} this.setCenter(center,this.getZoomForExtent(bounds,closest));},zoomToMaxExtent:function(options){var restricted=(options)?options.restricted:true;var maxExtent=this.getMaxExtent({'restricted':restricted});this.zoomToExtent(maxExtent);},zoomToScale:function(scale,closest){var res=OpenLayers.Util.getResolutionFromScale(scale,this.baseLayer.units);var size=this.getSize();var w_deg=size.w*res;var h_deg=size.h*res;var center=this.getCenter();var extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);this.zoomToExtent(extent,closest);},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if(this.baseLayer!=null){lonlat=this.baseLayer.getLonLatFromViewPortPx(viewPortPx);} return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(this.baseLayer!=null){px=this.baseLayer.getViewPortPxFromLonLat(lonlat);} -return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);} +return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getGeodesicPixelSize:function(px){var lonlat=px?this.getLonLatFromPixel(px):(this.getCenter()||new OpenLayers.LonLat(0,0));var res=this.getResolution();var left=lonlat.add(-res/2,0);var right=lonlat.add(res/2,0);var bottom=lonlat.add(0,-res/2);var top=lonlat.add(0,res/2);var dest=new OpenLayers.Projection("EPSG:4326");var source=this.getProjectionObject()||dest;if(!source.equals(dest)){left.transform(source,dest);right.transform(source,dest);bottom.transform(source,dest);top.transform(source,dest);} +return new OpenLayers.Size(OpenLayers.Util.distVincenty(left,right),OpenLayers.Util.distVincenty(bottom,top));},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);} return viewPortPx;},getLayerPxFromViewPortPx:function(viewPortPx){var layerPx=null;if(viewPortPx!=null){var dX=-parseInt(this.layerContainerDiv.style.left);var dY=-parseInt(this.layerContainerDiv.style.top);layerPx=viewPortPx.add(dX,dY);if(isNaN(layerPx.x)||isNaN(layerPx.y)){layerPx=null;}} return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(lonlat,icon){this.lonlat=lonlat;var newIcon=(icon)?icon:OpenLayers.Marker.defaultIcon();if(this.icon==null){this.icon=newIcon;}else{this.icon.url=newIcon.url;this.icon.size=newIcon.size;this.icon.offset=newIcon.offset;this.icon.calculateOffset=newIcon.calculateOffset;} this.events=new OpenLayers.Events(this,this.icon.imageDiv,null);},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;if(this.icon!=null){this.icon.destroy();this.icon=null;}},draw:function(px){return this.icon.draw(px);},erase:function(){if(this.icon!=null){this.icon.erase();}},moveTo:function(px){if((px!=null)&&(this.icon!=null)){this.icon.moveTo(px);} this.lonlat=this.map.getLonLatFromLayerPx(px);},isDrawn:function(){var isDrawn=(this.icon&&this.icon.isDrawn());return isDrawn;},onScreen:function(){var onScreen=false;if(this.map){var screenBounds=this.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);} -return onScreen;},inflate:function(inflate){if(this.icon){var newSize=new OpenLayers.Size(this.icon.size.w*inflate,this.icon.size.h*inflate);this.icon.setSize(newSize);}},setOpacity:function(opacity){this.icon.setOpacity(opacity);},setUrl:function(url){this.icon.setUrl(url);},display:function(display){this.icon.display(display);},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){var url=OpenLayers.Util.getImagesLocation()+"marker.png";var size=new OpenLayers.Size(21,25);var calculateOffset=function(size){return new OpenLayers.Pixel(-(size.w/2),-size.h);};return new OpenLayers.Icon(url,size,null,calculateOffset);};OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:true,panMapIfOutOfView:true,imageSize:new OpenLayers.Size(676,736),isAlphaImage:false,fixedRelativePosition:false,positionBlocks:{"tl":{'offset':new OpenLayers.Pixel(44,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-638,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-638,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},"tr":{'offset':new OpenLayers.Pixel(-45,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-638,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-638,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},"bl":{'offset':new OpenLayers.Pixel(45,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-638,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-638,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},"br":{'offset':new OpenLayers.Pixel(-44,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-638,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-638,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(600,660),initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.imageSrc=OpenLayers.Util.getImagesLocation()+'cloud-popup-relative.png';OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass;},destroy:function(){OpenLayers.Popup.Framed.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=config.url;if(config.params){var paramString=OpenLayers.Util.getParameterString(config.params);if(paramString.length>0){var separator=(url.indexOf('?')>-1)?'&':'?';url+=separator+paramString;}} +return onScreen;},inflate:function(inflate){if(this.icon){var newSize=new OpenLayers.Size(this.icon.size.w*inflate,this.icon.size.h*inflate);this.icon.setSize(newSize);}},setOpacity:function(opacity){this.icon.setOpacity(opacity);},setUrl:function(url){this.icon.setUrl(url);},display:function(display){this.icon.display(display);},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){var url=OpenLayers.Util.getImagesLocation()+"marker.png";var size=new OpenLayers.Size(21,25);var calculateOffset=function(size){return new OpenLayers.Pixel(-(size.w/2),-size.h);};return new OpenLayers.Icon(url,size,null,calculateOffset);};OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:true,panMapIfOutOfView:true,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:false,fixedRelativePosition:false,positionBlocks:{"tl":{'offset':new OpenLayers.Pixel(44,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},"tr":{'offset':new OpenLayers.Pixel(-45,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},"bl":{'offset':new OpenLayers.Pixel(45,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},"br":{'offset':new OpenLayers.Pixel(-44,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.imageSrc=OpenLayers.Util.getImagesLocation()+'cloud-popup-relative.png';OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass;},destroy:function(){OpenLayers.Popup.Framed.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=config.url;if(config.params){var paramString=OpenLayers.Util.getParameterString(config.params);if(paramString.length>0){var separator=(url.indexOf('?')>-1)?'&':'?';url+=separator+paramString;}} if(config.proxy&&(url.indexOf("http")==0)){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(url);}} request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);} -var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){request.send(config.data);},0);} +var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){if(request._aborted!==true){request.send(config.data);}},0);} return request;},runCallbacks:function(options){var request=options.request;var config=options.config;var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;} var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;} complete(request);if(!request.status||(request.status>=200&&request.status<300)){this.events.triggerEvent("success",options);if(success){success(request);}} @@ -725,7 +736,7 @@ this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)) this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;} this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);} obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);} -var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);} +var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if((OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1)||this.layer.singleTile){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);} this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}} if(!drawTile){return false;} if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} @@ -733,8 +744,8 @@ return this.renderTile();},resetBackBuffer:function(){this.showTile();if(this.ba this.backBufferTile.hide();}},renderTile:function(){if(this.imgDiv==null){this.initImgDiv();} this.imgDiv.viewRequestID=this.layer.map.viewRequestID;if(this.layer.async){this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{if(this.layer.url instanceof Array){this.imgDiv.urls=this.layer.url.slice();} this.url=this.layer.getURL(this.bounds);this.positionImage();} -return true;},positionImage:function(){if(this.layer==null) -return;OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} +return true;},positionImage:function(){if(this.layer===null){return;} +OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} @@ -759,8 +770,8 @@ return!this.stopSingle;},passesTolerance:function(evt){var passes=true;if(this.p Math.pow(this.down.y-evt.xy.y,2));if(dpx>this.pixelTolerance){passes=false;}} return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;} if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback('click',[evt]);}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:OpenLayers.Function.True;document.onselectstart=OpenLayers.Function.False;} -propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:OpenLayers.Function.True;} +document.onselectstart=OpenLayers.Function.False;propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} return propagate;},mousemove:function(evt){if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.documentDrag===true&&this.documentEvents){if(evt.element===document){this.adjustXY(evt);this.setEvent(evt);}else{this.destroyDocumentEvents();}} if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);} this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=OpenLayers.Function.False;} @@ -793,7 +804,7 @@ if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()< this.delta=this.delta+delta;if(this.interval){window.clearTimeout(this._timeoutId);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(e);},this),this.interval);}else{this.wheelZoom(e);}} OpenLayers.Event.stop(e);}},wheelZoom:function(e){var delta=this.delta;this.delta=0;if(delta){if(this.mousePosition){e.xy=this.mousePosition;} if(!e.xy){e.xy=this.map.getPixelFromLonLat(this.map.getCenter());} -if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend"],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}} +if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}} if(this.wrapDateLine){this.displayOutsideMaxExtent=true;}},destroy:function(setNewBaseLayer){if(setNewBaseLayer==null){setNewBaseLayer=true;} if(this.map!=null){this.map.removeLayer(this,setNewBaseLayer);} this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);} @@ -801,26 +812,39 @@ this.events.destroy();} this.eventListeners=null;this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer(this.name,this.getOptions());} OpenLayers.Util.applyDefaults(obj,this);obj.map=null;return obj;},getOptions:function(){var options={};for(var o in this.options){options[o]=this[o];} return options;},setName:function(newName){if(newName!=this.name){this.name=newName;if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"name"});}}},addOptions:function(newOptions){if(this.options==null){this.options={};} -OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},onMapResize:function(){},redraw:function(){var redrawn=false;if(this.map){this.inRange=this.calculateInRange();var extent=this.getExtent();if(extent&&this.inRange&&this.visibility){var zoomChanged=true;this.moveTo(extent,zoomChanged,false);this.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});redrawn=true;}} +OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);} +if(this.projection&&this.projection.getUnits()){this.units=this.projection.getUnits();} +if(this.map){var properties=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]);for(var o in newOptions){if(newOptions.hasOwnProperty(o)&&OpenLayers.Util.indexOf(properties,o)>=0){this.initResolutions();break;}}}},onMapResize:function(){},redraw:function(){var redrawn=false;if(this.map){this.inRange=this.calculateInRange();var extent=this.getExtent();if(extent&&this.inRange&&this.visibility){var zoomChanged=true;this.moveTo(extent,zoomChanged,false);this.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});redrawn=true;}} return redrawn;},moveTo:function(bounds,zoomChanged,dragging){var display=this.visibility;if(!this.isBaseLayer){display=display&&this.inRange;} -this.display(display);},setMap:function(map){if(this.map==null){this.map=map;this.maxExtent=this.maxExtent||this.map.maxExtent;this.projection=this.projection||this.map.projection;if(this.projection&&typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);} +this.display(display);},setMap:function(map){if(this.map==null){this.map=map;this.maxExtent=this.maxExtent||this.map.maxExtent;this.minExtent=this.minExtent||this.map.minExtent;this.projection=this.projection||this.map.projection;if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);} this.units=this.projection.getUnits()||this.units||this.map.units;this.initResolutions();if(!this.isBaseLayer){this.inRange=this.calculateInRange();var show=((this.visibility)&&(this.inRange));this.div.style.display=show?"":"none";} this.setTileSize();}},afterAdd:function(){},removeMap:function(map){},getImageSize:function(bounds){return(this.imageSize||this.tileSize);},setTileSize:function(size){var tileSize=(size)?size:((this.tileSize)?this.tileSize:this.map.getTileSize());this.tileSize=tileSize;if(this.gutter){this.imageOffset=new OpenLayers.Pixel(-this.gutter,-this.gutter);this.imageSize=new OpenLayers.Size(tileSize.w+(2*this.gutter),tileSize.h+(2*this.gutter));}},getVisibility:function(){return this.visibility;},setVisibility:function(visibility){if(visibility!=this.visibility){this.visibility=visibility;this.display(visibility);this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"});} this.events.triggerEvent("visibilitychanged");}},display:function(display){if(display!=(this.div.style.display!="none")){this.div.style.display=(display&&this.calculateInRange())?"block":"none";}},calculateInRange:function(){var inRange=false;if(this.alwaysInRange){inRange=true;}else{if(this.map){var resolution=this.map.getResolution();inRange=((resolution>=this.minResolution)&&(resolution<=this.maxResolution));}} -return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var notScaleProps=['projection','units'];var useInRange=false;var confProps={};for(var i=0,len=props.length;i1){base=Math.pow((confProps.maxResolution/confProps.minResolution),(1/(confProps.numZoomLevels-1)));} -for(var i=0;i=resolution){highRes=res;lowZoom=i;} if(res<=resolution){lowRes=res;highZoom=i;break;}} @@ -832,42 +856,55 @@ return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(lonlat!= return px;},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.div.childNodes.length;i4) +this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);else +if(arguments.length>3) +this._object.open(sMethod,sUrl,bAsync,sUser);else +this._object.open(sMethod,sUrl,bAsync);if(!bGecko&&!bIE){this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);} this._object.onreadystatechange=function(){if(bGecko&&!bAsync) return;oRequest.readyState=oRequest._object.readyState;fSynchronizeValues(oRequest);if(oRequest._aborted){oRequest.readyState=cXMLHttpRequest.UNSENT;return;} if(oRequest.readyState==cXMLHttpRequest.DONE){fCleanTransport(oRequest);if(bIE&&bAsync) window.detachEvent("onunload",fOnUnload);} if(nState!=oRequest.readyState) -fReadyStateChange(oRequest);nState=oRequest.readyState;};if(cXMLHttpRequest.onopen) -cXMLHttpRequest.onopen.apply(this,arguments);this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);if(!bAsync&&bGecko){this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend) +fReadyStateChange(oRequest);nState=oRequest.readyState;}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend) cXMLHttpRequest.onsend.apply(this,arguments);if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!this._headers["Content-Type"]) this._object.setRequestHeader("Content-Type","application/xml");} this._object.send(vData);if(bGecko&&!this._async){this.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(this);while(this.readyStatecXMLHttpRequest.UNSENT) this._aborted=true;this._object.abort();fCleanTransport(this);};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers) -this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(oRequest.onreadystatechange) -oRequest.onreadystatechange.apply(oRequest);if(cXMLHttpRequest.onreadystatechange) -cXMLHttpRequest.onreadystatechange.apply(oRequest);};function fGetDocument(oRequest){var oDocument=oRequest.responseXML;if(bIE&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new ActiveXObject('Microsoft.XMLDOM');oDocument.loadXML(oRequest.responseText);} +this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.addEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) +return;this._listeners.push([sName,fHandler,bUseCapture]);};cXMLHttpRequest.prototype.removeEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) +break;if(oListener) +this._listeners.splice(nIndex,1);};cXMLHttpRequest.prototype.dispatchEvent=function(oEvent){var oEventPseudo={'type':oEvent.type,'target':this,'currentTarget':this,'eventPhase':2,'bubbles':oEvent.bubbles,'cancelable':oEvent.cancelable,'timeStamp':oEvent.timeStamp,'stopPropagation':function(){},'preventDefault':function(){},'initEvent':function(){}};if(oEventPseudo.type=="readystatechange"&&this.onreadystatechange) +(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[oEventPseudo]);for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==oEventPseudo.type&&!oListener[2]) +(oListener[1].handleEvent||oListener[1]).apply(this,[oEventPseudo]);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(cXMLHttpRequest.onreadystatechange) +cXMLHttpRequest.onreadystatechange.apply(oRequest);oRequest.dispatchEvent({'type':"readystatechange",'bubbles':false,'cancelable':false,'timeStamp':new Date+0});};function fGetDocument(oRequest){var oDocument=oRequest.responseXML,sResponse=oRequest.responseText;if(bIE&&sResponse&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new window.ActiveXObject("Microsoft.XMLDOM");oDocument.async=false;oDocument.validateOnParse=false;oDocument.loadXML(sResponse);} if(oDocument) -if((bIE&&oDocument.parseError!=0)||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror")) +if((bIE&&oDocument.parseError!=0)||!oDocument.documentElement||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror")) return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){} try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){} try{oRequest.status=oRequest._object.status;}catch(e){} -try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;delete oRequest._headers;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments) +try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments) oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:25,documentDrag:false,draw:function(){this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone},{interval:this.interval,documentDrag:this.documentDrag});},panMap:function(xy){this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:this.handler.dragging,animate:false});},panMapDone:function(xy){if(this.panned){this.panMap(xy);this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.State={UNKNOWN:'Unknown',INSERT:'Insert',UPDATE:'Update',DELETE:'Delete'};OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",initialize:function(geometry,attributes,style){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,attributes]);this.lonlat=null;this.geometry=geometry?geometry:null;this.state=null;this.attributes={};if(attributes){this.attributes=OpenLayers.Util.extend(this.attributes,attributes);} this.style=style?style:null;},destroy:function(){if(this.layer){this.layer.removeFeatures(this);this.layer=null;} this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments);},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style);},onScreen:function(boundsOnly){var onScreen=false;if(this.layer&&this.layer.map){var screenBounds=this.layer.map.getExtent();if(boundsOnly){var featureBounds=this.geometry.getBounds();onScreen=screenBounds.intersectsBounds(featureBounds);}else{var screenPoly=screenBounds.toGeometry();onScreen=screenPoly.intersects(this.geometry);}} return onScreen;},getVisibility:function(){return!(this.style&&this.style.display=='none'||!this.layer||this.layer&&this.layer.styleMap&&this.layer.styleMap.createSymbolizer(this,this.renderIntent).display=='none'||this.layer&&!this.layer.getVisibility());},createMarker:function(){return null;},destroyMarker:function(){},createPopup:function(){return null;},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;if(this.geometry){atPoint=this.geometry.atPoint(lonlat,toleranceLon,toleranceLat);} return atPoint;},destroyPopup:function(){},move:function(location){if(!this.layer||!this.geometry.move){return;} var pixel;if(location.CLASS_NAME=="OpenLayers.LonLat"){pixel=this.layer.getViewPortPxFromLonLat(location);}else{pixel=location;} -var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxCharacteristics:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);var callbacks={"down":this.startBox,"move":this.moveBox,"out":this.removeBox,"up":this.endBox};this.dragHandler=new OpenLayers.Handler.Drag(this,callbacks,{keyMask:this.keyMask});},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.dragHandler.start);this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";this.zoomBox.style.left=xy.xstartX){this.zoomBox.style.width=Math.max(1,deltaX-box.xOffset)+"px";} +var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxCharacteristics:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);var callbacks={"down":this.startBox,"move":this.moveBox,"out":this.removeBox,"up":this.endBox};this.dragHandler=new OpenLayers.Handler.Drag(this,callbacks,{keyMask:this.keyMask});},destroy:function(){if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;} +OpenLayers.Handler.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.dragHandler.start);this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";this.zoomBox.style.left=xy.xstartX){this.zoomBox.style.width=Math.max(1,deltaX-box.xOffset)+"px";} if(xy.y>startY){this.zoomBox.style.height=Math.max(1,deltaY-box.yOffset)+"px";}}},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} this.removeBox();this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxCharacteristics=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox");},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},getBoxCharacteristics:function(){if(!this.boxCharacteristics){var xOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"))+1;var yOffset=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"))+1;var newBoxModel=OpenLayers.Util.getBrowserName()=="msie"?document.compatMode!="BackCompat":true;this.boxCharacteristics={xOffset:xOffset,yOffset:yOffset,newBoxModel:newBoxModel};} -return this.boxCharacteristics;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:new Object();},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options={displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True};this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} +return this.boxCharacteristics;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',layerOptions:null,persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});} +OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:{};},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)){if(this.dragging){this.cancel();} if(this.layer.map!=null){this.layer.destroy(false);if(this.feature){this.feature.destroy();}} this.layer=null;this.feature=null;deactivated=true;} @@ -877,8 +914,8 @@ this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.callback this.modifyGeometry();if(this.irregular){var dx=point.x-this.origin.x;var dy=point.y-this.origin.y;var ratio;if(dy==0){ratio=dx/(this.radius*Math.sqrt(2));}else{ratio=dx/dy;} this.feature.geometry.resize(1,this.origin,ratio);this.feature.geometry.move(dx/2,dy/2);} this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();if(this.start==this.last){this.callback("done",[evt.xy]);}},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(this.snapAngle){this.angle+=this.snapAngle*(Math.PI/180);} -this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle);},modifyGeometry:function(){var angle,dx,dy,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();ring=this.feature.geometry.components[0];} -for(var i=0;i0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{if(!marker.isDrawn()){var markerImg=marker.draw(px);this.div.appendChild(markerImg);}else if(marker.icon){marker.icon.moveTo(px);}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0,len=this.markers.length;i=bounds.bottom-tilelat*this.buffer)||rowidx=bounds.bottom-tilelat*this.buffer)||rowidx=0)&&(testCell=0)){tile=this.grid[testRow][testCell];} if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} for(var i=0,len=tileQueue.length;irows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i0){appliedRules=true;for(var i=0,len=elseRules.length;i0&&appliedRules==false){style.display="none";} @@ -945,8 +983,9 @@ if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRad return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=OpenLayers.Util.extend({},feature.attributes||feature.data);OpenLayers.Util.extend(context,this.context);for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature,i);} return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0,len=rules.length;i=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.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);} +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,zoomOffset:0,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.getOptions());} -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);if(this.wrapDateLine) +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);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()+this.zoomOffset;var limit=Math.pow(2,z);if(this.wrapDateLine) {x=((x%limit)+limit)%limit;} 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 OpenStreetMap",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();} +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 OpenStreetMap",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions());} +obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);if(this.symbolizers){delete this.symbolizer;} +this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;} +this.symbolizer=null;delete this.symbolizers;},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=scale0){this.setBounds(this.components[0].getBounds());for(var i=1,len=this.components.length;i-1)){if(index!=null&&(index=0;--i){this.removeComponent(components[i]);}},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();},getLength:function(){var length=0.0;for(var i=0,len=this.components.length;i0)?area:minArea;centroids.push(centroid);} +len=areas.length;if(areaSum===0){for(var i=0;i=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;} +if(features===this.selectedFeatures){features=features.slice();} +var notify=!options||!options.silent;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});} +for(var i=features.length-1;i>=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;} var feature=features[i];delete this.unrenderedFeatures[feature.id];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});} this.features=OpenLayers.Util.removeItem(this.features,feature);feature.layer=null;if(feature.geometry){this.renderer.eraseFeatures(feature);} if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);} if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}} -if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;} +if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},removeAllFeatures:function(options){var notify=!options||!options.silent;var features=this.features;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});} +var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});} +feature.layer=null;if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}} +this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;} if(features){this.removeFeatures(features,options);for(var i=features.length-1;i>=0;i--){features[i].destroy();}}},drawFeature:function(feature,style){if(!this.drawn){return} if(typeof style!="object"){if(!style&&feature.state===OpenLayers.State.DELETE){style="delete";} var renderIntent=style||feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}} if(!this.renderer.drawFeature(feature,style)){this.unrenderedFeatures[feature.id]=feature;}else{delete this.unrenderedFeatures[feature.id];};},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;} -var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0,len=this.features.length;i0)){maxExtent=new OpenLayers.Bounds();var geometry=null;for(var i=0,len=features.length;i0)){maxExtent=new OpenLayers.Bounds();var geometry=null;for(var i=0,len=features.length;i0){parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} +return features;},parseFeature:function(node){var order=["MultiPolygon","Polygon","MultiLineString","LineString","MultiPoint","Point","Envelope"];var type,nodeList,geometry,parser;for(var i=0;i0){parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} break;}} +var bounds;var boxNodes=this.getElementsByTagNameNS(node,this.gmlns,"Box");for(i=0;i0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}} diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index 98f5a6421..973149b9a 100644 Binary files a/public/potlatch/potlatch.swf and b/public/potlatch/potlatch.swf differ diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 2590c2d5f..42f28612e 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -335,12 +335,12 @@ hr { display: none !important; } -#map #permalink { - z-index:10000; - position:absolute; - bottom:15px; - right:15px; - font-size:smaller; +#permalink { + z-index: 10000; + position: absolute; + bottom: 15px; + right: 15px; + font-size: smaller; text-align: right; } diff --git a/test/fixtures/gpx_files.yml b/test/fixtures/gpx_files.yml index 08616bd99..6e082d24d 100644 --- a/test/fixtures/gpx_files.yml +++ b/test/fixtures/gpx_files.yml @@ -14,7 +14,7 @@ public_trace_file: anon_trace_file: id: 2 user_id: 2 - visible: false + visible: true name: Private Trace.gpx size: 123 latitude: 51.3 @@ -27,7 +27,7 @@ anon_trace_file: trackable_trace_file: id: 3 user_id: 2 - visible: false + visible: true name: Trackable Trace.gpx size: 123 latitude: 51.51 @@ -40,7 +40,7 @@ trackable_trace_file: identifiable_trace_file: id: 4 user_id: 2 - visible: false + visible: true name: Identifiable Trace.gpx size: 123 latitude: 51.512 @@ -49,3 +49,16 @@ identifiable_trace_file: visibility: "identifiable" description: This trace shows trksegs, timestamps and user details. inserted: true + +deleted_trace_file: + id: 5 + user_id: 2 + visible: false + name: Deleted Trace.gpx + size: 123 + latitude: 51.512 + longitude: 0.142 + timestamp: "2009-07-30 17:48:34" + visibility: "public" + description: This is a trace that has been deleted. + inserted: true diff --git a/test/functional/trace_controller_test.rb b/test/functional/trace_controller_test.rb index eb8e675b0..812143c81 100644 --- a/test/functional/trace_controller_test.rb +++ b/test/functional/trace_controller_test.rb @@ -4,7 +4,6 @@ class TraceControllerTest < ActionController::TestCase fixtures :users, :gpx_files set_fixture_class :gpx_files => 'Trace' - # Check that the list of changesets is displayed def test_list get :list @@ -39,48 +38,125 @@ class TraceControllerTest < ActionController::TestCase end # Check getting a specific trace through the api - def test_api_details + def test_api_read # First with no auth - get :api_details, :id => gpx_files(:public_trace_file).id + get :api_read, :id => gpx_files(:public_trace_file).id assert_response :unauthorized # Now with some other user, which should work since the trace is public basic_authorization(users(:public_user).display_name, "test") - get :api_details, :id => gpx_files(:public_trace_file).id + get :api_read, :id => gpx_files(:public_trace_file).id assert_response :success # And finally we should be able to do it with the owner of the trace basic_authorization(users(:normal_user).display_name, "test") - get :api_details, :id => gpx_files(:public_trace_file).id + get :api_read, :id => gpx_files(:public_trace_file).id assert_response :success end # Check an anoymous trace can't be specifically fetched by another user - def test_api_details_anon + def test_api_read_anon # Furst with no auth - get :api_details, :id => gpx_files(:anon_trace_file).id + get :api_read, :id => gpx_files(:anon_trace_file).id assert_response :unauthorized # Now try with another user, which shouldn't work since the trace is anon basic_authorization(users(:normal_user).display_name, "test") - get :api_details, :id => gpx_files(:anon_trace_file).id + get :api_read, :id => gpx_files(:anon_trace_file).id assert_response :forbidden # And finally we should be able to get the trace details with the trace owner basic_authorization(users(:public_user).display_name, "test") - get :api_details, :id => gpx_files(:anon_trace_file).id + get :api_read, :id => gpx_files(:anon_trace_file).id assert_response :success end # Check the api details for a trace that doesn't exist - def test_api_details_not_found + def test_api_read_not_found # Try first with no auth, as it should requure it - get :api_details, :id => 0 + get :api_read, :id => 0 assert_response :unauthorized # Login, and try again basic_authorization(users(:public_user).display_name, "test") - get :api_details, :id => 0 + get :api_read, :id => 0 + assert_response :not_found + + # Now try a trace which did exist but has been deleted + basic_authorization(users(:public_user).display_name, "test") + get :api_read, :id => 5 + assert_response :not_found + end + + # Check updating a trace through the api + def test_api_update + # First with no auth + content gpx_files(:public_trace_file).to_xml + put :api_update, :id => gpx_files(:public_trace_file).id + assert_response :unauthorized + + # Now with some other user, which should fail + basic_authorization(users(:public_user).display_name, "test") + content gpx_files(:public_trace_file).to_xml + put :api_update, :id => gpx_files(:public_trace_file).id + assert_response :forbidden + + # Now with a trace which doesn't exist + basic_authorization(users(:public_user).display_name, "test") + content gpx_files(:public_trace_file).to_xml + put :api_update, :id => 0 + assert_response :not_found + + # Now with a trace which did exist but has been deleted + basic_authorization(users(:public_user).display_name, "test") + content gpx_files(:deleted_trace_file).to_xml + put :api_update, :id => gpx_files(:deleted_trace_file).id + assert_response :not_found + + # Now try an update with the wrong ID + basic_authorization(users(:normal_user).display_name, "test") + content gpx_files(:anon_trace_file).to_xml + put :api_update, :id => gpx_files(:public_trace_file).id + assert_response :bad_request, + "should not be able to update a trace with a different ID from the XML" + + # And finally try an update that should work + basic_authorization(users(:normal_user).display_name, "test") + t = gpx_files(:public_trace_file) + t.description = "Changed description" + t.visibility = "private" + content t.to_xml + put :api_update, :id => t.id + assert_response :success + nt = Trace.find(t.id) + assert_equal nt.description, t.description + assert_equal nt.visibility, t.visibility + end + + # Check deleting a trace through the api + def test_api_delete + # First with no auth + delete :api_delete, :id => gpx_files(:public_trace_file).id + assert_response :unauthorized + + # Now with some other user, which should fail + basic_authorization(users(:public_user).display_name, "test") + delete :api_delete, :id => gpx_files(:public_trace_file).id + assert_response :forbidden + + # Now with a trace which doesn't exist + basic_authorization(users(:public_user).display_name, "test") + delete :api_delete, :id => 0 + assert_response :not_found + + # And finally we should be able to do it with the owner of the trace + basic_authorization(users(:normal_user).display_name, "test") + delete :api_delete, :id => gpx_files(:public_trace_file).id + assert_response :success + + # Try it a second time, which should fail + basic_authorization(users(:normal_user).display_name, "test") + delete :api_delete, :id => gpx_files(:public_trace_file).id assert_response :not_found end end diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 77d73552a..01a7ca649 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -104,7 +104,7 @@ class UserCreationTest < ActionController::IntegrationTest assert_equal register_email.to[0], new_email # Check that the confirm account url is correct - confirm_regex = Regexp.new("/user/confirm\\?confirm_string=([a-zA-Z0-9]*)") + confirm_regex = Regexp.new("/user/redirect_tester/confirm\\?confirm_string=([a-zA-Z0-9]*)") assert_match(confirm_regex, register_email.body) confirm_string = confirm_regex.match(register_email.body)[1] diff --git a/test/unit/trace_test.rb b/test/unit/trace_test.rb index 0d72e553e..db6dc6044 100644 --- a/test/unit/trace_test.rb +++ b/test/unit/trace_test.rb @@ -4,7 +4,7 @@ class TraceTest < ActiveSupport::TestCase api_fixtures def test_trace_count - assert_equal 4, Trace.count + assert_equal 5, Trace.count end end diff --git a/vendor/plugins/oauth-plugin/.gitignore b/vendor/plugins/oauth-plugin/.gitignore deleted file mode 100644 index 56cb2dcd8..000000000 --- a/vendor/plugins/oauth-plugin/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -doc -pkg -*.log -.DS_Store -.svn diff --git a/vendor/plugins/oauth-plugin/CHANGELOG b/vendor/plugins/oauth-plugin/CHANGELOG deleted file mode 100644 index a4006aa59..000000000 --- a/vendor/plugins/oauth-plugin/CHANGELOG +++ /dev/null @@ -1,61 +0,0 @@ -2/11/2009 -- Fixed escaping error and file path error in the generator simultaneously reported and fixed by Ivan Valdes and Mike Demers thanks - -2/9/2009 -- Fixed compatibility issue with OAuth Gem 3.1 (wr0ngway and aeden) -- Added Test:Unit tests to generator (Ed Hickey) -- added missing oauth_clients/edit.html.erb view template (Ed Hickey) -- added missing :oauth_clients resource route in USAGE (Ed Hickey) -- Don't throw NPE it token is not in db (Haruska) -- Cleaned up whitespace (bricolage, Nicholas Nam) -- Fixed bug in default verify_oauth_signature (igrigorik) -- Doc fixes (skippy) - -6/23/2008 - -- Split OAuth controller into two parts: OAuth and OAuth clients. [jcrosby] - -revision 31 - -- patch that fixes a problem in oauth_required from Hannes Tyden and Sean Treadway from SoundCloud. Thanks. - -revision 30 - -- updated to use oauth gem 0.2.1 - - -revision 23 - -- removed all core libraries from plugin. They are now in the oauth gem. - -# oauth-plugin-pre-gem Branch created - -revision 18 -- added a generator for creation oauth_providers - -revision 12 -- the bug with post and put has now been fixed. -- better documentation - -revision 9 -- added a test helper. Include OAuth::TestHelper in your tests or specs to mock incoming requests - -revision: 8 -- moved tests into oauth folder and renamed them to make them work with autotest by default -- Refactored the request methods to make them more flexible and ready for integrating with ActiveResource -- There are a few tests that fail. All of them to do with put and post requests with payload data. I decided to commit anyway, to get the new api out. - -revision: 7 - -- Done a lot of work on the Server side of things. The Server class has changed a lot and is likely to be incompatible with previous versions - -revision: 6 - -- Throws InsecureSignatureMethod exception if attempting to use straight sha1 or md5. -- Disables plaintext signature over http (throws an InsecureSignatureMethod) -- Better testing of signature methods - the prior tests were seriously flawed. - -revision: 5 - -- Removed support for sha1 and md5 -- Implemented draft 6 support of OAuth removing secrets from base string \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/MIT-LICENSE b/vendor/plugins/oauth-plugin/MIT-LICENSE deleted file mode 100644 index 570ecf870..000000000 --- a/vendor/plugins/oauth-plugin/MIT-LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2007 [name of plugin creator] - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/plugins/oauth-plugin/README.rdoc b/vendor/plugins/oauth-plugin/README.rdoc deleted file mode 100644 index e2e68b7a6..000000000 --- a/vendor/plugins/oauth-plugin/README.rdoc +++ /dev/null @@ -1,110 +0,0 @@ -= OAuth Plugin - -This is the beginning of a plugin for implementing OAuth Providers in Rails applications. - -See the OAuth specs at: - -http://oauth.net/core/1.0/ - -and the OAuth site at: - -http://oauth.net - -== Requirements - -You need to install the oauth gem (0.2.1) which is the core OAuth ruby library. It will NOT work on any previous version of the gem. - - sudo gem install oauth - -The Generator currently creates code (in particular views) that only work in Rails 2. - -It should not be difficult to manually modify the code to work on Rails 1.2.x - -I think the only real issue is that the views have .html.erb extensions. So these could theoretically just be renamed to .rhtml. - -Please let me know if this works and I will see if I can make the generator conditionally create .rhtml for pre 2.0 versions of RAILS. - -== OAuth Provider generator - -While it isn't very flexible at the moment there is an oauth_provider generator which you can use like this: - -./script/generate oauth_provider - -This generates OAuth and OAuth client controllers as well as the required models. - -It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication. It also requires Rails 2.0. - -=== Routes - -You need to add the following to your routes (config/routes.rb) - - map.resources :oauth_clients - map.authorize '/oauth/authorize',:controller=>'oauth',:action=>'authorize' - map.request_token '/oauth/request_token',:controller=>'oauth',:action=>'request_token' - map.access_token '/oauth/access_token',:controller=>'oauth',:action=>'access_token' - map.test_request '/oauth/test_request',:controller=>'oauth',:action=>'test_request' - -=== User Model - -Add the following lines to your user model: - - has_many :client_applications - has_many :tokens, :class_name=>"OauthToken",:order=>"authorized_at desc",:include=>[:client_application] - -=== Migrate database - -The database is defined in: - - db/migrate/XXX_create_oauth_tables.rb - -Run them as any other normal migration in rails with: - - rake db:migrate - -=== RSpec - -The generator installs a collection of RSpec (http://rspec.info) specs instead of normal unit_tests. If you don't use RSpec (and really why aren't you?) feel free to remove the spec folder. - -If you would like to contribute regular unit tests I will accept them with a smile. - -== Protecting your actions - -I recommend that you think about what your users would want to provide access to and limit oauth for those only. For example in a CRUD controller you may think about if you want to let consumer applications do the create, update or delete actions. For your application this might make sense, but for others maybe not. - -If you want to give oauth access to everything a registered user can do, just replace the filter you have in your controllers with: - - before_filter :login_or_oauth_required - -If you want to restrict consumers to the index and show methods of your controller do the following: - - before_filter :login_required,:except=>[:show,:index] - before_filter :login_or_oauth_required,:only=>[:show,:index] - -If you have an action you only want used via oauth: - - before_filter :oauth_required - -All of these places the tokens user in current_user as you would expect. It also exposes the following methods: - -* current_token - for accessing the token used to authorize the current request -* current_client_application - for accessing information about which consumer is currently accessing your request - -You could add application specific information to the OauthToken and ClientApplication model for such things as object level access control, billing, expiry etc. Be creative and you can create some really cool applications here. - -== More - -The Google Code project is http://code.google.com/p/oauth-plugin/ - -The Mailing List for all things OAuth in Ruby is: - -http://groups.google.com/group/oauth-ruby - -The Mailing list for everything else OAuth is: - -http://groups.google.com/group/oauth - -The OAuth Ruby Gem home page is http://oauth.rubyforge.org - -Please help documentation, patches and testing. - -Copyright (c) 2007-2008 Pelle Braendgaard, released under the MIT license \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/Rakefile b/vendor/plugins/oauth-plugin/Rakefile deleted file mode 100644 index 16a9769a2..000000000 --- a/vendor/plugins/oauth-plugin/Rakefile +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' -require 'rake/testtask' -require 'rake/rdoctask' - -desc 'Default: run unit tests.' -task :default => :test - -desc 'Test the oauth plugin.' -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.pattern = 'test/**/*_test.rb' - t.verbose = true -end - -desc 'Generate documentation for the oauth plugin.' -Rake::RDocTask.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'Oauth' - rdoc.options << '--line-numbers' << '--inline-source' - rdoc.rdoc_files.include('README') - rdoc.rdoc_files.include('lib/**/*.rb') -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/USAGE b/vendor/plugins/oauth-plugin/generators/oauth_provider/USAGE deleted file mode 100644 index ded11acfc..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/USAGE +++ /dev/null @@ -1,24 +0,0 @@ -./script/generate oauth_provider - -This creates an OAuth Provider controller as well as the requisite models. - -It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication. - -If you generated the migration file (true by default), make sure you run -rake db:migrate - -You need to add the following routes to your config/routes.rb file: - -map.resources :oauth_clients -map.oauth '/oauth',:controller=>'oauth',:action=>'index' -map.authorize '/oauth/authorize',:controller=>'oauth',:action=>'authorize' -map.request_token '/oauth/request_token',:controller=>'oauth',:action=>'request_token' -map.access_token '/oauth/access_token',:controller=>'oauth',:action=>'access_token' -map.test_request '/oauth/test_request',:controller=>'oauth',:action=>'test_request' - -include the following in your user.rb - -has_many :client_applications -has_many :tokens, :class_name=>"OauthToken",:order=>"authorized_at desc",:include=>[:client_application] - - diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/oauth_provider_generator.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/oauth_provider_generator.rb deleted file mode 100644 index 57059e220..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/oauth_provider_generator.rb +++ /dev/null @@ -1,116 +0,0 @@ -class OauthProviderGenerator < Rails::Generator::Base - default_options :skip_migration => false - attr_reader :class_path, - :controller_name, - :controller_class_path, - :controller_file_path, - :controller_class_name, - :controller_singular_name, - :controller_plural_name - alias_method :controller_file_name, :controller_singular_name - - def initialize(runtime_args, runtime_options = {}) - super - - @controller_name = args.shift || 'oauth' - @controller_singular_name = 'oauth' - @controller_plural_name = 'oauth' - @controller_file_name = 'oauth' - @controller_class_name="Oauth" - @class_path='' - @controller_class_path='' - end - - def manifest - record do |m| - - # Check for class naming collisions. - # Check for class naming collisions. - m.class_collisions controller_class_path, "#{controller_class_name}Controller", # Oauth Controller - "#{controller_class_name}Helper", - "#{controller_class_name}ClientsController", - "#{controller_class_name}ClientsHelper" - m.class_collisions class_path, "ClientApplication","OauthNonce","RequestToken","AccessToken","OauthToken" - - # Controller, helper, views, and test directories. - m.directory File.join('app/models', class_path) - m.directory File.join('app/controllers', controller_class_path) - m.directory File.join('app/helpers', controller_class_path) - m.directory File.join('app/views', controller_class_path, controller_file_name) - m.directory File.join('app/views', controller_class_path, 'oauth_clients') - - m.template 'client_application.rb',File.join('app/models',"client_application.rb") - m.template 'oauth_token.rb', File.join('app/models',"oauth_token.rb") - m.template 'request_token.rb', File.join('app/models',"request_token.rb") - m.template 'access_token.rb', File.join('app/models',"access_token.rb") - m.template 'oauth_nonce.rb', File.join('app/models',"oauth_nonce.rb") - - m.template 'controller.rb',File.join('app/controllers',controller_class_path,"#{controller_file_name}_controller.rb") - m.template 'helper.rb',File.join('app/helpers',controller_class_path,"#{controller_file_name}_helper.rb") - - m.template 'clients_controller.rb',File.join('app/controllers',controller_class_path,"#{controller_file_name}_clients_controller.rb") - m.template 'clients_helper.rb',File.join('app/helpers',controller_class_path,"#{controller_file_name}_clients_helper.rb") - - if !options[:test_unit] - m.directory File.join('spec') - m.directory File.join('spec/models') - m.directory File.join('spec/fixtures', class_path) - m.directory File.join('spec/controllers', controller_class_path) - - m.template 'client_application_spec.rb',File.join('spec/models',"client_application_spec.rb") - m.template 'oauth_token_spec.rb', File.join('spec/models',"oauth_token_spec.rb") - m.template 'oauth_nonce_spec.rb', File.join('spec/models',"oauth_nonce_spec.rb") - m.template 'client_applications.yml',File.join('spec/fixtures',"client_applications.yml") - m.template 'oauth_tokens.yml', File.join('spec/fixtures',"oauth_tokens.yml") - m.template 'oauth_nonces.yml', File.join('spec/fixtures',"oauth_nonces.yml") - m.template 'controller_spec_helper.rb', File.join('spec/controllers', controller_class_path,"#{controller_file_name}_controller_spec_helper.rb") - m.template 'controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_controller_spec.rb") - m.template 'clients_controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_clients_controller_spec.rb") - else - m.directory File.join('test') - m.directory File.join('test/unit') - m.directory File.join('test/fixtures', class_path) - m.directory File.join('test/functional', controller_class_path) - m.template 'client_application_test.rb',File.join('test/unit',"client_application_test.rb") - m.template 'oauth_token_test.rb', File.join('test/unit',"oauth_token_test.rb") - m.template 'oauth_nonce_test.rb', File.join('test/unit',"oauth_nonce_test.rb") - m.template 'client_applications.yml',File.join('test/fixtures',"client_applications.yml") - m.template 'oauth_tokens.yml', File.join('test/fixtures',"oauth_tokens.yml") - m.template 'oauth_nonces.yml', File.join('test/fixtures',"oauth_nonces.yml") - m.template 'controller_test_helper.rb', File.join('test', controller_class_path,"#{controller_file_name}_controller_test_helper.rb") - m.template 'controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_controller_test.rb") - m.template 'clients_controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_clients_controller_test.rb") - end - - m.template '_form.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "_form.html.erb") - m.template 'new.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "new.html.erb") - m.template 'index.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "index.html.erb") - m.template 'show.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "show.html.erb") - m.template 'edit.html.erb', File.join('app/views', controller_class_path, 'oauth_clients', "edit.html.erb") - m.template 'authorize.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize.html.erb") - m.template 'authorize_success.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize_success.html.erb") - m.template 'authorize_failure.html.erb', File.join('app/views', controller_class_path, controller_file_name, "authorize_failure.html.erb") - - - unless options[:skip_migration] - m.migration_template 'migration.rb', 'db/migrate', :assigns => { - :migration_name => "CreateOauthTables" - }, :migration_file_name => "create_oauth_tables" - end - end - end - - protected - def banner - "Usage: #{$0} #{spec.name}" - end - - def add_options!(opt) - opt.separator '' - opt.separator 'Options:' - opt.on("--skip-migration", - "Don't generate a migration file") { |v| options[:skip_migration] = v } - opt.on("--test-unit", - "Generate the Test::Unit compatible tests instead of RSpec") { |v| options[:test_unit] = v } - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/_form.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/_form.html.erb deleted file mode 100644 index ee3f5b8a6..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/_form.html.erb +++ /dev/null @@ -1,16 +0,0 @@ -
-
- <%%= f.text_field :name %> -
-
-
- <%%= f.text_field :url %> -
-
-
- <%%= f.text_field :callback_url %> -
-
-
- <%%= f.text_field :support_url %> -
diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/access_token.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/access_token.rb deleted file mode 100644 index b773310ce..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/access_token.rb +++ /dev/null @@ -1,10 +0,0 @@ -class AccessTokenAuthorize access to your account -

Would you like to authorize <%%= link_to @token.client_application.name,@token.client_application.url %> (<%%= link_to @token.client_application.url,@token.client_application.url %>) to access your account?

-<%% form_tag authorize_url do %> - <%%= hidden_field_tag "oauth_token", @token.token %> - <%%- if params[:oauth_callback] -%> - <%%= hidden_field_tag "oauth_callback", params[:oauth_callback] %> -<%%- end -%> -

- <%%= check_box_tag 'authorize' %> authorize access -

-

- <%%= submit_tag %> -

-<%% end %> \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_failure.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_failure.html.erb deleted file mode 100644 index d8110c94f..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_failure.html.erb +++ /dev/null @@ -1 +0,0 @@ -

You have disallowed this request

diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_success.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_success.html.erb deleted file mode 100644 index effe24a79..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/authorize_success.html.erb +++ /dev/null @@ -1 +0,0 @@ -

You have allowed this request

\ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application.rb deleted file mode 100644 index b7ca97d64..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application.rb +++ /dev/null @@ -1,54 +0,0 @@ -require 'oauth' -class ClientApplication < ActiveRecord::Base - belongs_to :user - has_many :tokens, :class_name => "OauthToken" - validates_presence_of :name, :url, :key, :secret - validates_uniqueness_of :key - before_validation_on_create :generate_keys - - def self.find_token(token_key) - token = OauthToken.find_by_token(token_key, :include => :client_application) - if token && token.authorized? - logger.info "Loaded #{token.token} which was authorized by (user_id=#{token.user_id}) on the #{token.authorized_at}" - token - else - nil - end - end - - def self.verify_request(request, options = {}, &block) - begin - signature = OAuth::Signature.build(request, options, &block) - logger.info "Signature Base String: #{signature.signature_base_string}" - logger.info "Consumer: #{signature.send :consumer_key}" - logger.info "Token: #{signature.send :token}" - return false unless OauthNonce.remember(signature.request.nonce, signature.request.timestamp) - value = signature.verify - logger.info "Signature verification returned: #{value.to_s}" - value - rescue OAuth::Signature::UnknownSignatureMethod => e - logger.info "ERROR"+e.to_s - false - end - end - - def oauth_server - @oauth_server ||= OAuth::Server.new("http://your.site") - end - - def credentials - @oauth_client ||= OAuth::Consumer.new(key, secret) - end - - def create_request_token - RequestToken.create :client_application => self - end - -protected - - def generate_keys - @oauth_client = oauth_server.generate_consumer_credentials - self.key = @oauth_client.key - self.secret = @oauth_client.secret - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_spec.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_spec.rb deleted file mode 100644 index 14f3887b9..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_spec.rb +++ /dev/null @@ -1,60 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' -module OAuthSpecHelpers - - def create_consumer - @consumer = OAuth::Consumer.new(@application.key,@application.secret, - { - :site => @application.oauth_server.base_url - }) - end - - def create_test_request - - end - - def create_oauth_request - @token = AccessToken.create :client_application => @application, :user => users(:quentin) - @request = @consumer.create_signed_request(:get, "/hello", @token) - end - - def create_request_token_request - @request = @consumer.create_signed_request(:get, @application.oauth_server.request_token_path, @token) - end - - def create_access_token_request - @token = RequestToken.create :client_application => @application - @request = @consumer.create_signed_request(:get, @application.oauth_server.request_token_path, @token) - end - -end - -describe ClientApplication do #, :shared => true do - include OAuthSpecHelpers - fixtures :users, :client_applications, :oauth_tokens - before(:each) do - @application = ClientApplication.create :name => "Agree2", :url => "http://agree2.com", :user => users(:quentin) - create_consumer - end - - it "should be valid" do - @application.should be_valid - end - - - it "should not have errors" do - @application.errors.full_messages.should == [] - end - - it "should have key and secret" do - @application.key.should_not be_nil - @application.secret.should_not be_nil - end - - it "should have credentials" do - @application.credentials.should_not be_nil - @application.credentials.key.should == @application.key - @application.credentials.secret.should == @application.secret - end - -end - diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_test.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_test.rb deleted file mode 100644 index 3ba2cf7d9..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_application_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' -module OAuthHelpers - - def create_consumer - @consumer=OAuth::Consumer.new(@application.key,@application.secret, - { - :site=>@application.oauth_server.base_url - }) - end - -end - -class ClientApplicationTest < ActiveSupport::TestCase - include OAuthHelpers - fixtures :users,:client_applications,:oauth_tokens - - def setup - @application = ClientApplication.create :name=>"Agree2",:url=>"http://agree2.com",:user=>users(:quentin) - create_consumer - end - - def test_should_be_valid - assert @application.valid? - end - - - def test_should_not_have_errors - assert_equal [], @application.errors.full_messages - end - - def test_should_have_key_and_secret - assert_not_nil @application.key - assert_not_nil @application.secret - end - - def test_should_have_credentials - assert_not_nil @application.credentials - assert_equal @application.key, @application.credentials.key - assert_equal @application.secret, @application.credentials.secret - end - -end \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_applications.yml b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_applications.yml deleted file mode 100644 index 4bbf37069..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/client_applications.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -one: - id: 1 - name: MyString - url: MyString - support_url: MyString - callback_url: MyString - key: one_key - secret: MyString - user_id: 1 - created_at: 2007-11-17 16:56:51 - updated_at: 2007-11-17 16:56:51 -two: - id: 2 - name: MyString - url: MyString - support_url: MyString - callback_url: MyString - key: two_key - secret: MyString - user_id: 1 - created_at: 2007-11-17 16:56:51 - updated_at: 2007-11-17 16:56:51 diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller.rb deleted file mode 100644 index 5f7827431..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller.rb +++ /dev/null @@ -1,47 +0,0 @@ -class OauthClientsController < ApplicationController - before_filter :login_required - - def index - @client_applications = current_user.client_applications - @tokens = current_user.tokens.find :all, :conditions => 'oauth_tokens.invalidated_at is null and oauth_tokens.authorized_at is not null' - end - - def new - @client_application = ClientApplication.new - end - - def create - @client_application = current_user.client_applications.build(params[:client_application]) - if @client_application.save - flash[:notice] = "Registered the information successfully" - redirect_to :action => "show", :id => @client_application.id - else - render :action => "new" - end - end - - def show - @client_application = current_user.client_applications.find(params[:id]) - end - - def edit - @client_application = current_user.client_applications.find(params[:id]) - end - - def update - @client_application = current_user.client_applications.find(params[:id]) - if @client_application.update_attributes(params[:client_application]) - flash[:notice] = "Updated the client information successfully" - redirect_to :action => "show", :id => @client_application.id - else - render :action => "edit" - end - end - - def destroy - @client_application = current_user.client_applications.find(params[:id]) - @client_application.destroy - flash[:notice] = "Destroyed the client application registration" - redirect_to :action => "index" - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_spec.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_spec.rb deleted file mode 100644 index d617b5669..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_spec.rb +++ /dev/null @@ -1,239 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' -require File.dirname(__FILE__) + '/oauth_controller_spec_helper' -require 'oauth/client/action_controller_request' - -describe OauthClientsController, "index" do - include OAuthControllerSpecHelper - before(:each) do - login_as_application_owner - end - - def do_get - get :index - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query current_users client applications" do - @user.should_receive(:client_applications).and_return(@client_applications) - do_get - end - - it "should assign client_applications" do - do_get - assigns[:client_applications].should equal(@client_applications) - end - - it "should render index template" do - do_get - response.should render_template('index') - end -end - -describe OauthClientsController, "show" do - include OAuthControllerSpecHelper - before(:each) do - login_as_application_owner - end - - def do_get - get :show, :id => '3' - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query current_users client applications" do - @user.should_receive(:client_applications).and_return(@client_applications) - @client_applications.should_receive(:find).with('3').and_return(@client_application) - do_get - end - - it "should assign client_applications" do - do_get - assigns[:client_application].should equal(@client_application) - end - - it "should render show template" do - do_get - response.should render_template('show') - end - -end - -describe OauthClientsController, "new" do - include OAuthControllerSpecHelper - before(:each) do - login_as_application_owner - ClientApplication.stub!(:new).and_return(@client_application) - end - - def do_get - get :new - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should assign client_applications" do - do_get - assigns[:client_application].should equal(@client_application) - end - - it "should render show template" do - do_get - response.should render_template('new') - end - -end - -describe OauthClientsController, "edit" do - include OAuthControllerSpecHelper - before(:each) do - login_as_application_owner - end - - def do_get - get :edit, :id => '3' - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query current_users client applications" do - @user.should_receive(:client_applications).and_return(@client_applications) - @client_applications.should_receive(:find).with('3').and_return(@client_application) - do_get - end - - it "should assign client_applications" do - do_get - assigns[:client_application].should equal(@client_application) - end - - it "should render edit template" do - do_get - response.should render_template('edit') - end - -end - -describe OauthClientsController, "create" do - include OAuthControllerSpecHelper - - before(:each) do - login_as_application_owner - @client_applications.stub!(:build).and_return(@client_application) - @client_application.stub!(:save).and_return(true) - end - - def do_valid_post - @client_application.should_receive(:save).and_return(true) - post :create, 'client_application'=>{'name' => 'my site'} - end - - def do_invalid_post - @client_application.should_receive(:save).and_return(false) - post :create, :client_application=>{:name => 'my site'} - end - - it "should query current_users client applications" do - @client_applications.should_receive(:build).and_return(@client_application) - do_valid_post - end - - it "should redirect to new client_application" do - do_valid_post - response.should be_redirect - response.should redirect_to(:action => "show", :id => @client_application.id) - end - - it "should assign client_applications" do - do_invalid_post - assigns[:client_application].should equal(@client_application) - end - - it "should render show template" do - do_invalid_post - response.should render_template('new') - end -end - -describe OauthClientsController, "destroy" do - include OAuthControllerSpecHelper - before(:each) do - login_as_application_owner - @client_application.stub!(:destroy) - end - - def do_delete - delete :destroy, :id => '3' - end - - it "should query current_users client applications" do - @user.should_receive(:client_applications).and_return(@client_applications) - @client_applications.should_receive(:find).with('3').and_return(@client_application) - do_delete - end - - it "should destroy client applications" do - @client_application.should_receive(:destroy) - do_delete - end - - it "should redirect to list" do - do_delete - response.should be_redirect - response.should redirect_to(:action => 'index') - end - -end - -describe OauthClientsController, "update" do - include OAuthControllerSpecHelper - - before(:each) do - login_as_application_owner - end - - def do_valid_update - @client_application.should_receive(:update_attributes).and_return(true) - put :update, :id => '1', 'client_application'=>{'name' => 'my site'} - end - - def do_invalid_update - @client_application.should_receive(:update_attributes).and_return(false) - put :update, :id => '1', 'client_application'=>{'name' => 'my site'} - end - - it "should query current_users client applications" do - @user.should_receive(:client_applications).and_return(@client_applications) - @client_applications.should_receive(:find).with('1').and_return(@client_application) - do_valid_update - end - - it "should redirect to new client_application" do - do_valid_update - response.should be_redirect - response.should redirect_to(:action => "show", :id => @client_application.id) - end - - it "should assign client_applications" do - do_invalid_update - assigns[:client_application].should equal(@client_application) - end - - it "should render show template" do - do_invalid_update - response.should render_template('edit') - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_test.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_test.rb deleted file mode 100644 index 47585a2ca..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_controller_test.rb +++ /dev/null @@ -1,280 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' -require File.dirname(__FILE__) + '/../oauth_controller_test_helper' -require 'oauth/client/action_controller_request' - -class OauthClientsController; def rescue_action(e) raise e end; end - -class OauthClientsControllerIndexTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - end - - def do_get - get :index - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_current_users_client_applications - @user.expects(:client_applications).returns(@client_applications) - do_get - end - - def test_should_assign_client_applications - do_get - assert_equal @client_applications, assigns(:client_applications) - end - - def test_should_render_index_template - do_get - assert_template 'index' - end -end - -class OauthClientsControllerShowTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - end - - def do_get - get :show, :id=>'3' - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_current_users_client_applications - @user.expects(:client_applications).returns(@client_applications) - @client_applications.expects(:find).with('3').returns(@client_application) - do_get - end - - def test_should_assign_client_applications - do_get - assert_equal @client_application, assigns(:client_application) - end - - def test_should_render_show_template - do_get - assert_template 'show' - end - -end - -class OauthClientsControllerNewTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - ClientApplication.stubs(:new).returns(@client_application) - end - - def do_get - get :new - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_assign_client_applications - do_get - assert_equal @client_application, assigns(:client_application) - end - - def test_should_render_show_template - do_get - assert_template 'new' - end - -end - -class OauthClientsControllerEditTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - end - - def do_get - get :edit, :id=>'3' - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_current_users_client_applications - @user.expects(:client_applications).returns(@client_applications) - @client_applications.expects(:find).with('3').returns(@client_application) - do_get - end - - def test_should_assign_client_applications - do_get - assert_equal @client_application, assigns(:client_application) - end - - def test_should_render_edit_template - do_get - assert_template 'edit' - end - -end - -class OauthClientsControllerCreateTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - @client_applications.stubs(:build).returns(@client_application) - @client_application.stubs(:save).returns(true) - end - - def do_valid_post - @client_application.expects(:save).returns(true) - post :create,'client_application'=>{'name'=>'my site'} - end - - def do_invalid_post - @client_application.expects(:save).returns(false) - post :create,:client_application=>{:name=>'my site'} - end - - def test_should_query_current_users_client_applications - @client_applications.expects(:build).returns(@client_application) - do_valid_post - end - - def test_should_redirect_to_new_client_application - do_valid_post - assert_response :redirect - assert_redirected_to(:action => "show", :id => @client_application.id) - end - - def test_should_assign_client_applications - do_invalid_post - assert_equal @client_application, assigns(:client_application) - end - - def test_should_render_show_template - do_invalid_post - assert_template('new') - end -end - -class OauthClientsControllerDestroyTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - - login_as_application_owner - @client_application.stubs(:destroy) - end - - def do_delete - delete :destroy,:id=>'3' - end - - def test_should_query_current_users_client_applications - @user.expects(:client_applications).returns(@client_applications) - @client_applications.expects(:find).with('3').returns(@client_application) - do_delete - end - - def test_should_destroy_client_applications - @client_application.expects(:destroy) - do_delete - end - - def test_should_redirect_to_list - do_delete - assert_response :redirect - assert_redirected_to :action => 'index' - end - -end - -class OauthClientsControllerUpdateTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthClientsController - - def setup - @controller = OauthClientsController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - login_as_application_owner - end - - def do_valid_update - @client_application.expects(:update_attributes).returns(true) - put :update, :id => '1', 'client_application' => {'name'=>'my site'} - end - - def do_invalid_update - @client_application.expects(:update_attributes).returns(false) - put :update, :id=>'1', 'client_application' => {'name'=>'my site'} - end - - def test_should_query_current_users_client_applications - @user.expects(:client_applications).returns(@client_applications) - @client_applications.expects(:find).with('1').returns(@client_application) - do_valid_update - end - - def test_should_redirect_to_new_client_application - do_valid_update - assert_response :redirect - assert_redirected_to :action => "show", :id => @client_application.id - end - - def test_should_assign_client_applications - do_invalid_update - assert_equal @client_application, assigns(:client_application) - end - - def test_should_render_show_template - do_invalid_update - assert_template('edit') - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_helper.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_helper.rb deleted file mode 100644 index 3b909aaf3..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/clients_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module OauthClientsHelper -end \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller.rb deleted file mode 100644 index 58ac21391..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller.rb +++ /dev/null @@ -1,62 +0,0 @@ -class OauthController < ApplicationController - before_filter :login_required, :except => [:request_token, :access_token, :test_request] - before_filter :login_or_oauth_required, :only => [:test_request] - before_filter :verify_oauth_consumer_signature, :only => [:request_token] - before_filter :verify_oauth_request_token, :only => [:access_token] - # Uncomment the following if you are using restful_open_id_authentication - # skip_before_filter :verify_authenticity_token - - def request_token - @token = current_client_application.create_request_token - if @token - render :text => @token.to_query - else - render :nothing => true, :status => 401 - end - end - - def access_token - @token = current_token && current_token.exchange! - if @token - render :text => @token.to_query - else - render :nothing => true, :status => 401 - end - end - - def test_request - render :text => params.collect{|k,v|"#{k}=#{v}"}.join("&") - end - - def authorize - @token = RequestToken.find_by_token params[:oauth_token] - unless @token.invalidated? - if request.post? - if params[:authorize] == '1' - @token.authorize!(current_user) - redirect_url = params[:oauth_callback] || @token.client_application.callback_url - if redirect_url - redirect_to "#{redirect_url}?oauth_token=#{@token.token}" - else - render :action => "authorize_success" - end - elsif params[:authorize] == "0" - @token.invalidate! - render :action => "authorize_failure" - end - end - else - render :action => "authorize_failure" - end - end - - def revoke - @token = current_user.tokens.find_by_token params[:token] - if @token - @token.invalidate! - flash[:notice] = "You've revoked the token for #{@token.client_application.name}" - end - redirect_to oauth_clients_url - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec.rb deleted file mode 100644 index f3479ab37..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec.rb +++ /dev/null @@ -1,296 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' -require File.dirname(__FILE__) + '/oauth_controller_spec_helper' -require 'oauth/client/action_controller_request' - -describe OauthController, "getting a request token" do - include OAuthControllerSpecHelper - before(:each) do - setup_oauth - sign_request_with_oauth - @client_application.stub!(:create_request_token).and_return(@request_token) - end - - def do_get - get :request_token - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query for client_application" do - ClientApplication.should_receive(:find_by_key).with('key').and_return(@client_application) - do_get - end - - it "should request token from client_application" do - @client_application.should_receive(:create_request_token).and_return(@request_token) - do_get - end - - it "should return token string" do - do_get - response.body.should == @request_token_string - end -end - -describe OauthController, "token authorization" do - include OAuthControllerSpecHelper - before(:each) do - login - setup_oauth - RequestToken.stub!(:find_by_token).and_return(@request_token) - end - - def do_get - get :authorize, :oauth_token => @request_token.token - end - - def do_post - @request_token.should_receive(:authorize!).with(@user) - post :authorize, :oauth_token => @request_token.token, :authorize => "1" - end - - def do_post_without_user_authorization - @request_token.should_receive(:invalidate!) - post :authorize, :oauth_token => @request_token.token, :authorize => "0" - end - - def do_post_with_callback - @request_token.should_receive(:authorize!).with(@user) - post :authorize, :oauth_token => @request_token.token, :oauth_callback => "http://application/alternative", :authorize => "1" - end - - def do_post_with_no_application_callback - @request_token.should_receive(:authorize!).with(@user) - @client_application.stub!(:callback_url).and_return(nil) - post :authorize, :oauth_token => @request_token.token, :authorize => "1" - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query for client_application" do - RequestToken.should_receive(:find_by_token).and_return(@request_token) - do_get - end - - it "should assign token" do - do_get - assigns[:token].should equal(@request_token) - end - - it "should render authorize template" do - do_get - response.should render_template('authorize') - end - - it "should redirect to default callback" do - do_post - response.should be_redirect - response.should redirect_to("http://application/callback?oauth_token=#{@request_token.token}") - end - - it "should redirect to callback in query" do - do_post_with_callback - response.should be_redirect - response.should redirect_to("http://application/alternative?oauth_token=#{@request_token.token}") - end - - it "should be successful on authorize without any application callback" do - do_post_with_no_application_callback - response.should be_success - end - - it "should be successful on authorize without any application callback" do - do_post_with_no_application_callback - response.should render_template('authorize_success') - end - - it "should render failure screen on user invalidation" do - do_post_without_user_authorization - response.should render_template('authorize_failure') - end - - it "should render failure screen if token is invalidated" do - @request_token.should_receive(:invalidated?).and_return(true) - do_get - response.should render_template('authorize_failure') - end - - -end - - -describe OauthController, "getting an access token" do - include OAuthControllerSpecHelper - before(:each) do - setup_oauth - sign_request_with_oauth @request_token - @request_token.stub!(:exchange!).and_return(@access_token) - end - - def do_get - get :access_token - end - - it "should be successful" do - do_get - response.should be_success - end - - it "should query for client_application" do - ClientApplication.should_receive(:find_token).with(@request_token.token).and_return(@request_token) - do_get - end - - it "should request token from client_application" do - @request_token.should_receive(:exchange!).and_return(@access_token) - do_get - end - - it "should return token string" do - do_get - response.body.should == @access_token_string - end -end - -class OauthorizedController :both - before_filter :login_required, :only => :interactive - before_filter :oauth_required, :only => :token_only - - def interactive - end - - def token_only - end - - def both - end -end - -describe OauthorizedController, " access control" do - include OAuthControllerSpecHelper - - before(:each) do - end - - it "should have access_token set up correctly" do - setup_to_authorize_request - @access_token.is_a?(AccessToken).should == true - @access_token.should be_authorized - @access_token.should_not be_invalidated - @access_token.user.should == @user - @access_token.client_application.should == @client_application - end - - it "should return false for oauth? by default" do - controller.send(:oauth?).should == false - end - - it "should return nil for current_token by default" do - controller.send(:current_token).should be_nil - end - - it "should allow oauth when using login_or_oauth_required" do - setup_to_authorize_request - sign_request_with_oauth(@access_token) - ClientApplication.should_receive(:find_token).with(@access_token.token).and_return(@access_token) - get :both - controller.send(:current_token).should == @access_token - controller.send(:current_token).is_a?(AccessToken).should == true - controller.send(:current_user).should == @user - controller.send(:current_client_application).should == @client_application - response.code.should == '200' - response.should be_success - end - - it "should allow interactive when using login_or_oauth_required" do - login - get :both - response.should be_success - controller.send(:current_user).should == @user - controller.send(:current_token).should be_nil - end - - - it "should allow oauth when using oauth_required" do - setup_to_authorize_request - sign_request_with_oauth(@access_token) - ClientApplication.should_receive(:find_token).with(@access_token.token).and_return(@access_token) - get :token_only - controller.send(:current_token).should == @access_token - controller.send(:current_client_application).should == @client_application - controller.send(:current_user).should == @user - response.code.should == '200' - response.should be_success - end - - it "should disallow oauth using RequestToken when using oauth_required" do - setup_to_authorize_request - ClientApplication.should_receive(:find_token).with(@request_token.token).and_return(@request_token) - sign_request_with_oauth(@request_token) - get :token_only - response.code.should == '401' - end - - it "should disallow interactive when using oauth_required" do - login - get :token_only - response.code.should == '401' - - controller.send(:current_user).should == @user - controller.send(:current_token).should be_nil - end - - it "should disallow oauth when using login_required" do - setup_to_authorize_request - sign_request_with_oauth(@access_token) - get :interactive - response.code.should == "302" - controller.send(:current_user).should be_nil - controller.send(:current_token).should be_nil - end - - it "should allow interactive when using login_required" do - login - get :interactive - response.should be_success - controller.send(:current_user).should == @user - controller.send(:current_token).should be_nil - end - -end - -describe OauthController, "revoke" do - include OAuthControllerSpecHelper - before(:each) do - setup_oauth_for_user - @request_token.stub!(:invalidate!) - end - - def do_post - post :revoke, :token => "TOKEN STRING" - end - - it "should redirect to index" do - do_post - response.should be_redirect - response.should redirect_to('http://test.host/oauth_clients') - end - - it "should query current_users tokens" do - @tokens.should_receive(:find_by_token).and_return(@request_token) - do_post - end - - it "should call invalidate on token" do - @request_token.should_receive(:invalidate!) - do_post - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec_helper.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec_helper.rb deleted file mode 100644 index 9e7128436..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_spec_helper.rb +++ /dev/null @@ -1,74 +0,0 @@ -module OAuthControllerSpecHelper - def login - controller.stub!(:local_request?).and_return(true) - @user = mock_model(User) - controller.stub!(:current_user).and_return(@user) - @tokens = [] - @tokens.stub!(:find).and_return(@tokens) - @user.stub!(:tokens).and_return(@tokens) - User.stub!(:find_by_id).and_return(@user) - end - - def login_as_application_owner - login - @client_application = mock_model(ClientApplication) - @client_applications = [@client_application] - - @user.stub!(:client_applications).and_return(@client_applications) - @client_applications.stub!(:find).and_return(@client_application) - end - - def setup_oauth - controller.stub!(:local_request?).and_return(true) - @user||=mock_model(User) - - User.stub!(:find_by_id).and_return(@user) - - @server = OAuth::Server.new "http://test.host" - @consumer = OAuth::Consumer.new('key', 'secret',{:site => "http://test.host"}) - - @client_application = mock_model(ClientApplication) - controller.stub!(:current_client_application).and_return(@client_application) - ClientApplication.stub!(:find_by_key).and_return(@client_application) - @client_application.stub!(:key).and_return(@consumer.key) - @client_application.stub!(:secret).and_return(@consumer.secret) - @client_application.stub!(:name).and_return("Client Application name") - @client_application.stub!(:callback_url).and_return("http://application/callback") - @request_token = mock_model(RequestToken, :token => 'request_token', :client_application => @client_application, :secret => "request_secret", :user => @user) - @request_token.stub!(:invalidated?).and_return(false) - ClientApplication.stub!(:find_token).and_return(@request_token) - - @request_token_string = "oauth_token = request_token&oauth_token_secret = request_secret" - @request_token.stub!(:to_query).and_return(@request_token_string) - - @access_token = mock_model(AccessToken, :token => 'access_token', :client_application => @client_application, :secret => "access_secret", :user => @user) - @access_token.stub!(:invalidated?).and_return(false) - @access_token.stub!(:authorized?).and_return(true) - @access_token_string = "oauth_token = access_token&oauth_token_secret = access_secret" - @access_token.stub!(:to_query).and_return(@access_token_string) - - @client_application.stub!(:authorize_request?).and_return(true) -# @client_application.stub!(:sign_request_with_oauth_token).and_return(@request_token) - @client_application.stub!(:exchange_for_access_token).and_return(@access_token) - end - - def setup_oauth_for_user - login - setup_oauth - @tokens = [@request_token] - @tokens.stub!(:find).and_return(@tokens) - @tokens.stub!(:find_by_token).and_return(@request_token) - @user.stub!(:tokens).and_return(@tokens) - end - - def sign_request_with_oauth(token = nil) - ActionController::TestRequest.use_oauth = true - @request.configure_oauth(@consumer,token) - end - - def setup_to_authorize_request - setup_oauth - OauthToken.stub!(:find_by_token).with( @access_token.token).and_return(@access_token) - @access_token.stub!(:is_a?).and_return(true) - end -end \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test.rb deleted file mode 100644 index f75eaeec3..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test.rb +++ /dev/null @@ -1,310 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' -require File.dirname(__FILE__) + '/../oauth_controller_test_helper' -require 'oauth/client/action_controller_request' - -class OauthController; def rescue_action(e) raise e end; end - -class OauthControllerRequestTokenTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthController - - def setup - @controller = OauthController.new - setup_oauth - sign_request_with_oauth - @client_application.stubs(:create_request_token).returns(@request_token) - end - - def do_get - get :request_token - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_for_client_application - ClientApplication.expects(:find_by_key).with('key').returns(@client_application) - do_get - end - - def test_should_request_token_from_client_application - @client_application.expects(:create_request_token).returns(@request_token) - do_get - end - - def test_should_return_token_string - do_get - assert_equal @request_token_string, @response.body - end -end - -class OauthControllerTokenAuthorizationTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthController - - def setup - @controller = OauthController.new - login - setup_oauth - RequestToken.stubs(:find_by_token).returns(@request_token) - end - - def do_get - get :authorize, :oauth_token => @request_token.token - end - - def do_post - @request_token.expects(:authorize!).with(@user) - post :authorize,:oauth_token=>@request_token.token,:authorize=>"1" - end - - def do_post_without_user_authorization - @request_token.expects(:invalidate!) - post :authorize,:oauth_token=>@request_token.token,:authorize=>"0" - end - - def do_post_with_callback - @request_token.expects(:authorize!).with(@user) - post :authorize,:oauth_token=>@request_token.token,:oauth_callback=>"http://application/alternative",:authorize=>"1" - end - - def do_post_with_no_application_callback - @request_token.expects(:authorize!).with(@user) - @client_application.stubs(:callback_url).returns(nil) - post :authorize, :oauth_token => @request_token.token, :authorize=>"1" - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_for_client_application - RequestToken.expects(:find_by_token).returns(@request_token) - do_get - end - - def test_should_assign_token - do_get - assert_equal @request_token, assigns(:token) - end - - def test_should_render_authorize_template - do_get - assert_template('authorize') - end - - def test_should_redirect_to_default_callback - do_post - assert_response :redirect - assert_redirected_to("http://application/callback?oauth_token=#{@request_token.token}") - end - - def test_should_redirect_to_callback_in_query - do_post_with_callback - assert_response :redirect - assert_redirected_to("http://application/alternative?oauth_token=#{@request_token.token}") - end - - def test_should_be_successful_on_authorize_without_any_application_callback - do_post_with_no_application_callback - assert @response.success? - assert_template('authorize_success') - end - - def test_should_render_failure_screen_on_user_invalidation - do_post_without_user_authorization - assert_template('authorize_failure') - end - - def test_should_render_failure_screen_if_token_is_invalidated - @request_token.expects(:invalidated?).returns(true) - do_get - assert_template('authorize_failure') - end - - -end - -class OauthControllerGetAccessTokenTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthController - - def setup - @controller = OauthController.new - setup_oauth - sign_request_with_oauth @request_token - @request_token.stubs(:exchange!).returns(@access_token) - end - - def do_get - get :access_token - end - - def test_should_be_successful - do_get - assert @response.success? - end - - def test_should_query_for_client_application - ClientApplication.expects(:find_token).with(@request_token.token).returns(@request_token) - do_get - end - - def test_should_request_token_from_client_application - @request_token.expects(:exchange!).returns(@access_token) - do_get - end - - def test_should__return_token_string - do_get - assert_equal @access_token_string, @response.body - end -end - -class OauthorizedController < ApplicationController - before_filter :login_or_oauth_required,:only=>:both - before_filter :login_required,:only=>:interactive - before_filter :oauth_required,:only=>:token_only - - def interactive - render :text => "interactive" - end - - def token_only - render :text => "token" - end - - def both - render :text => "both" - end -end - - -class OauthControllerAccessControlTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthorizedController - - def setup - @controller = OauthorizedController.new - end - - def test_should__have_access_token_set_up_correctly - setup_to_authorize_request - assert @access_token.is_a?(AccessToken) - assert @access_token.authorized? - assert !@access_token.invalidated? - assert_equal @user, @access_token.user - assert_equal @client_application, @access_token.client_application - end - - def test_should_return_false_for_oauth_by_default - assert_equal false, @controller.send(:oauth?) - end - - def test_should_return_nil_for_current_token_by_default - assert_nil @controller.send(:current_token) - end - - def test_should_allow_oauth_when_using_login_or_oauth_required - setup_to_authorize_request - sign_request_with_oauth(@access_token) - ClientApplication.expects(:find_token).with(@access_token.token).returns(@access_token) - get :both - assert_equal @access_token, @controller.send(:current_token) - assert @controller.send(:current_token).is_a?(AccessToken) - assert_equal @user, @controller.send(:current_user) - assert_equal @client_application, @controller.send(:current_client_application) - assert_equal '200', @response.code - assert @response.success? - end - - def test_should_allow_interactive_when_using_login_or_oauth_required - login - get :both - assert @response.success? - assert_equal @user, @controller.send(:current_user) - assert_nil @controller.send(:current_token) - end - - def test_should_allow_oauth_when_using_oauth_required - setup_to_authorize_request - sign_request_with_oauth(@access_token) - ClientApplication.expects(:find_token).with(@access_token.token).returns(@access_token) - get :token_only - assert_equal @access_token, @controller.send(:current_token) - assert_equal @client_application, @controller.send(:current_client_application) - assert_equal @user, @controller.send(:current_user) - assert_equal '200', @response.code - assert @response.success? - end - - def test_should_disallow_oauth_using_request_token_when_using_oauth_required - setup_to_authorize_request - ClientApplication.expects(:find_token).with(@request_token.token).returns(@request_token) - sign_request_with_oauth(@request_token) - get :token_only - assert_equal '401', @response.code - end - - def test_should_disallow_interactive_when_using_oauth_required - login - get :token_only - assert_equal '401', @response.code - - assert_equal @user, @controller.send(:current_user) - assert_nil @controller.send(:current_token) - end - - def test_should_disallow_oauth_when_using_login_required - setup_to_authorize_request - sign_request_with_oauth(@access_token) - get :interactive - assert_equal "302",@response.code - assert_nil @controller.send(:current_user) - assert_nil @controller.send(:current_token) - end - - def test_should_allow_interactive_when_using_login_required - login - get :interactive - assert @response.success? - assert_equal @user, @controller.send(:current_user) - assert_nil @controller.send(:current_token) - end - -end - -class OauthControllerRevokeTest < ActionController::TestCase - include OAuthControllerTestHelper - tests OauthController - - def setup - @controller = OauthController.new - setup_oauth_for_user - @request_token.stubs(:invalidate!) - end - - def do_post - post :revoke, :token => "TOKEN STRING" - end - - def test_should_redirect_to_index - do_post - assert_response :redirect - assert_redirected_to('http://test.host/oauth_clients') - end - - def test_should_query_current_users_tokens - @tokens.expects(:find_by_token).returns(@request_token) - do_post - end - - def test_should_call_invalidate_on_token - @request_token.expects(:invalidate!) - do_post - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test_helper.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test_helper.rb deleted file mode 100644 index 2827252ca..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/controller_test_helper.rb +++ /dev/null @@ -1,115 +0,0 @@ -require "mocha" -module OAuthControllerTestHelper - - # Some custom stuff since we're using Mocha - def mock_model(model_class, options_and_stubs = {}) - id = rand(10000) - options_and_stubs.reverse_merge! :id => id, - :to_param => id.to_s, - :new_record? => false, - :errors => stub("errors", :count => 0) - - m = stub("#{model_class.name}_#{options_and_stubs[:id]}", options_and_stubs) - m.instance_eval <<-CODE - def is_a?(other) - #{model_class}.ancestors.include?(other) - end - def kind_of?(other) - #{model_class}.ancestors.include?(other) - end - def instance_of?(other) - other == #{model_class} - end - def class - #{model_class} - end - CODE - yield m if block_given? - m - end - - def mock_full_client_application - mock_model(ClientApplication, - :name => "App1", - :url => "http://app.com", - :callback_url => "http://app.com/callback", - :support_url => "http://app.com/support", - :key => "asd23423yy", - :secret => "secret", - :oauth_server => OAuth::Server.new("http://kowabunga.com") - ) - end - - def login - @controller.stubs(:local_request?).returns(true) - @user = mock_model(User, :login => "ron") - @controller.stubs(:current_user).returns(@user) - @tokens=[] - @tokens.stubs(:find).returns(@tokens) - @user.stubs(:tokens).returns(@tokens) - User.stubs(:find_by_id).returns(@user) - end - - def login_as_application_owner - login - @client_application = mock_full_client_application - @client_applications = [@client_application] - - @user.stubs(:client_applications).returns(@client_applications) - @client_applications.stubs(:find).returns(@client_application) - end - - def setup_oauth - @controller.stubs(:local_request?).returns(true) - @user||=mock_model(User) - - User.stubs(:find_by_id).returns(@user) - - @server=OAuth::Server.new "http://test.host" - @consumer=OAuth::Consumer.new('key','secret',{:site=>"http://test.host"}) - - @client_application = mock_full_client_application - @controller.stubs(:current_client_application).returns(@client_application) - ClientApplication.stubs(:find_by_key).returns(@client_application) - @client_application.stubs(:key).returns(@consumer.key) - @client_application.stubs(:secret).returns(@consumer.secret) - @client_application.stubs(:name).returns("Client Application name") - @client_application.stubs(:callback_url).returns("http://application/callback") - @request_token=mock_model(RequestToken,:token=>'request_token',:client_application=>@client_application,:secret=>"request_secret",:user=>@user) - @request_token.stubs(:invalidated?).returns(false) - ClientApplication.stubs(:find_token).returns(@request_token) - - @request_token_string="oauth_token=request_token&oauth_token_secret=request_secret" - @request_token.stubs(:to_query).returns(@request_token_string) - - @access_token=mock_model(AccessToken,:token=>'access_token',:client_application=>@client_application,:secret=>"access_secret",:user=>@user) - @access_token.stubs(:invalidated?).returns(false) - @access_token.stubs(:authorized?).returns(true) - @access_token_string="oauth_token=access_token&oauth_token_secret=access_secret" - @access_token.stubs(:to_query).returns(@access_token_string) - - @client_application.stubs(:authorize_request?).returns(true) -# @client_application.stubs(:sign_request_with_oauth_token).returns(@request_token) - @client_application.stubs(:exchange_for_access_token).returns(@access_token) - end - - def setup_oauth_for_user - login - setup_oauth - @tokens=[@request_token] - @tokens.stubs(:find).returns(@tokens) - @tokens.stubs(:find_by_token).returns(@request_token) - @user.stubs(:tokens).returns(@tokens) - end - - def sign_request_with_oauth(token=nil) - ActionController::TestRequest.use_oauth=true - @request.configure_oauth(@consumer, token) - end - - def setup_to_authorize_request - setup_oauth - OauthToken.stubs(:find_by_token).with( @access_token.token).returns(@access_token) - @access_token.stubs(:is_a?).returns(true) - end -end \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/edit.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/edit.html.erb deleted file mode 100644 index 6c4f5cef9..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/edit.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

Edit your application

-<%% form_for :client_application do |f| %> - <%%= render :partial => "form", :locals => { :f => f } %> - <%%= submit_tag "Edit" %> -<%% end %> \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/helper.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/helper.rb deleted file mode 100644 index 010cf9f5a..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module OauthHelper -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/index.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/index.html.erb deleted file mode 100644 index fcb3a0314..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/index.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -
<%%= flash[:notice] %>
-

OAuth Client Applications

-<%% unless @tokens.empty? %> -

The following tokens have been issued to applications in your name

- - - <%% @tokens.each do |token|%> - <%% content_tag_for :tr, token do %> - - - - <%% end %> - <%% end %> - -
ApplicationIssued 
<%%= link_to token.client_application.name, token.client_application.url %><%%= token.authorized_at %> - <%% form_tag :controller => 'oauth', :action => 'revoke' do %> - <%%= hidden_field_tag 'token', token.token %> - <%%= submit_tag "Revoke!" %> - <%% end %> -
-<%% end %> -

Application Developers

-<%% if @client_applications.empty? %> -

- Do you have an application you would like to register for use with us using the OAuth standard? -

-

- You must register your web application before it can make OAuth requests to this service -

-<%% else %> -

- You have the following client applications registered: -

- <%% @client_applications.each do |client|%> - <%% div_for client do %> - <%%= link_to client.name, :action => :show, :id => client.id %> - <%% end %> - <%% end %> -<%% end %> -

<%%= link_to "Register your application", :action => :new %>

diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/migration.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/migration.rb deleted file mode 100644 index c1b6b02c7..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/migration.rb +++ /dev/null @@ -1,44 +0,0 @@ -class CreateOauthTables < ActiveRecord::Migration - def self.up - create_table :client_applications do |t| - t.string :name - t.string :url - t.string :support_url - t.string :callback_url - t.string :key, :limit => 50 - t.string :secret, :limit => 50 - t.integer :user_id - - t.timestamps - end - add_index :client_applications, :key, :unique - - create_table :oauth_tokens do |t| - t.integer :user_id - t.string :type, :limit => 20 - t.integer :client_application_id - t.string :token, :limit => 50 - t.string :secret, :limit => 50 - t.timestamp :authorized_at, :invalidated_at - t.timestamps - end - - add_index :oauth_tokens, :token, :unique - - create_table :oauth_nonces do |t| - t.string :nonce - t.integer :timestamp - - t.timestamps - end - add_index :oauth_nonces,[:nonce, :timestamp], :unique - - end - - def self.down - drop_table :client_applications - drop_table :oauth_tokens - drop_table :oauth_nonces - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/new.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/new.html.erb deleted file mode 100644 index be541da66..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

Register a new application

-<%% form_for :client_application, :url => { :action => :create } do |f| %> - <%%= render :partial => "form", :locals => { :f => f } %> - <%%= submit_tag "Register" %> -<%% end %> \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce.rb deleted file mode 100644 index 075351b91..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce.rb +++ /dev/null @@ -1,13 +0,0 @@ -# Simple store of nonces. The OAuth Spec requires that any given pair of nonce and timestamps are unique. -# Thus you can use the same nonce with a different timestamp and viceversa. -class OauthNonce < ActiveRecord::Base - validates_presence_of :nonce, :timestamp - validates_uniqueness_of :nonce, :scope => :timestamp - - # Remembers a nonce and it's associated timestamp. It returns false if it has already been used - def self.remember(nonce, timestamp) - oauth_nonce = OauthNonce.create(:nonce => nonce, :timestamp => timestamp) - return false if oauth_nonce.new_record? - oauth_nonce - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_spec.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_spec.rb deleted file mode 100644 index 7829bdc74..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' -require 'oauth/helper' -describe OauthNonce do - include OAuth::Helper - before(:each) do - @oauth_nonce = OauthNonce.remember(generate_key, Time.now.to_i) - end - - it "should be valid" do - @oauth_nonce.should be_valid - end - - it "should not have errors" do - @oauth_nonce.errors.full_messages.should == [] - end - - it "should not be a new record" do - @oauth_nonce.should_not be_new_record - end - - it "should not allow a second one with the same values" do - OauthNonce.remember(@oauth_nonce.nonce,@oauth_nonce.timestamp).should == false - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_test.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_test.rb deleted file mode 100644 index 2fd6a755a..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonce_test.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'oauth/helper' -require File.dirname(__FILE__) + '/../test_helper' - -class ClientNoneTest < ActiveSupport::TestCase - include OAuth::Helper - - def setup - @oauth_nonce = OauthNonce.remember(generate_key,Time.now.to_i) - end - - def test_should_be_valid - assert @oauth_nonce.valid? - end - - def test_should_not_have_errors - assert_equal [], @oauth_nonce.errors.full_messages - end - - def test_should_not_be_a_new_record - assert !@oauth_nonce.new_record? - end - - def test_shuold_not_allow_a_second_one_with_the_same_values - assert_equal false, OauthNonce.remember(@oauth_nonce.nonce, @oauth_nonce.timestamp) - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonces.yml b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonces.yml deleted file mode 100644 index 4e0b3062a..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_nonces.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -one: - id: 1 - nonce: a_nonce - timestamp: 1 - created_at: 2007-11-25 17:27:04 - updated_at: 2007-11-25 17:27:04 -two: - id: 2 - nonce: b_nonce - timestamp: 2 - created_at: 2007-11-25 17:27:04 - updated_at: 2007-11-25 17:27:04 diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token.rb deleted file mode 100644 index 5fca40ce2..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token.rb +++ /dev/null @@ -1,31 +0,0 @@ -class OauthToken < ActiveRecord::Base - belongs_to :client_application - belongs_to :user - validates_uniqueness_of :token - validates_presence_of :client_application, :token, :secret - before_validation_on_create :generate_keys - - def invalidated? - invalidated_at != nil - end - - def invalidate! - update_attribute(:invalidated_at, Time.now) - end - - def authorized? - authorized_at != nil && !invalidated? - end - - def to_query - "oauth_token=#{token}&oauth_token_secret=#{secret}" - end - -protected - - def generate_keys - @oauth_token = client_application.oauth_server.generate_credentials - self.token = @oauth_token[0] - self.secret = @oauth_token[1] - end -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_spec.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_spec.rb deleted file mode 100644 index 594c204af..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_spec.rb +++ /dev/null @@ -1,55 +0,0 @@ -require File.dirname(__FILE__) + '/../spec_helper' - -describe RequestToken do - fixtures :client_applications, :users, :oauth_tokens - before(:each) do - @token = RequestToken.create :client_application => client_applications(:one) - end - - it "should be valid" do - @token.should be_valid - end - - it "should not have errors" do - @token.errors.should_not == [] - end - - it "should have a token" do - @token.token.should_not be_nil - end - - it "should have a secret" do - @token.secret.should_not be_nil - end - - it "should not be authorized" do - @token.should_not be_authorized - end - - it "should not be invalidated" do - @token.should_not be_invalidated - end - - it "should authorize request" do - @token.authorize!(users(:quentin)) - @token.should be_authorized - @token.authorized_at.should_not be_nil - @token.user.should == users(:quentin) - end - - it "should not exchange without approval" do - @token.exchange!.should == false - @token.should_not be_invalidated - end - - it "should not exchange without approval" do - @token.authorize!(users(:quentin)) - @access = @token.exchange! - @access.should_not == false - @token.should be_invalidated - - @access.user.should == users(:quentin) - @access.should be_authorized - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_test.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_test.rb deleted file mode 100644 index dc7f5cb22..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_token_test.rb +++ /dev/null @@ -1,57 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' - -class RequestTokenTest < ActiveSupport::TestCase - - fixtures :client_applications, :users, :oauth_tokens - - def setup - @token = RequestToken.create :client_application=>client_applications(:one) - end - - def test_should_be_valid - assert @token.valid? - end - - def test_should_not_have_errors - assert @token.errors.empty? - end - - def test_should_have_a_token - assert_not_nil @token.token - end - - def test_should_have_a_secret - assert_not_nil @token.secret - end - - def test_should_not_be_authorized - assert !@token.authorized? - end - - def test_should_not_be_invalidated - assert !@token.invalidated? - end - - def test_should_authorize_request - @token.authorize!(users(:quentin)) - assert @token.authorized? - assert_not_nil @token.authorized_at - assert_equal users(:quentin), @token.user - end - - def test_should_not_exchange_without_approval - assert_equal false, @token.exchange! - assert_equal false, @token.invalidated? - end - - def test_should_not_exchange_without_approval - @token.authorize!(users(:quentin)) - @access = @token.exchange! - assert_not_equal false, @access - assert @token.invalidated? - - assert_equal users(:quentin), @access.user - assert @access.authorized? - end - -end diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_tokens.yml b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_tokens.yml deleted file mode 100644 index 1c8006efd..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/oauth_tokens.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -one: - id: 1 - user_id: 1 - client_application_id: 1 - token: one - secret: MyString - created_at: 2007-11-19 07:31:46 - updated_at: 2007-11-19 07:31:46 -two: - id: 2 - user_id: 1 - client_application_id: 1 - token: two - secret: MyString - created_at: 2007-11-19 07:31:46 - updated_at: 2007-11-19 07:31:46 diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/request_token.rb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/request_token.rb deleted file mode 100644 index b6047fe51..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/request_token.rb +++ /dev/null @@ -1,17 +0,0 @@ -class RequestToken < OauthToken - def authorize!(user) - return false if authorized? - self.user = user - self.authorized_at = Time.now - self.save - end - - def exchange! - return false unless authorized? - RequestToken.transaction do - access_token = AccessToken.create(:user => user, :client_application => client_application) - invalidate! - access_token - end - end -end \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/show.html.erb b/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/show.html.erb deleted file mode 100644 index a997e2f73..000000000 --- a/vendor/plugins/oauth-plugin/generators/oauth_provider/templates/show.html.erb +++ /dev/null @@ -1,20 +0,0 @@ -

OAuth details for <%%=@client_application.name %>

-

- Consumer Key: <%%=@client_application.key %> -

-

- Consumer Secret: <%%=@client_application.secret %> -

-

- Request Token URL http<%%='s' if request.ssl? %>://<%%= request.host_with_port %><%%=@client_application.oauth_server.request_token_path %> -

-

- Access Token URL http<%%='s' if request.ssl? %>://<%%= request.host_with_port %><%%=@client_application.oauth_server.access_token_path %> -

-

- Authorize URL http<%%='s' if request.ssl? %>://<%%= request.host_with_port %><%%=@client_application.oauth_server.authorize_path %> -

- -

- We support hmac-sha1 (recommended) as well as plain text in ssl mode. -

\ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/init.rb b/vendor/plugins/oauth-plugin/init.rb deleted file mode 100644 index 28e25563c..000000000 --- a/vendor/plugins/oauth-plugin/init.rb +++ /dev/null @@ -1,6 +0,0 @@ -gem 'oauth', '>=0.2.1' -require 'oauth/signature/hmac/sha1' -require 'oauth/request_proxy/action_controller_request' -require 'oauth/server' -require 'oauth/rails/controller_methods' -ActionController::Base.send :include, OAuth::Rails::ControllerMethods diff --git a/vendor/plugins/oauth-plugin/install.rb b/vendor/plugins/oauth-plugin/install.rb deleted file mode 100644 index f1531bd89..000000000 --- a/vendor/plugins/oauth-plugin/install.rb +++ /dev/null @@ -1,2 +0,0 @@ -#should we do any text formatting? -puts IO.read(File.join(File.dirname(__FILE__), 'README.rdoc')) \ No newline at end of file diff --git a/vendor/plugins/oauth-plugin/lib/oauth/rails/controller_methods.rb b/vendor/plugins/oauth-plugin/lib/oauth/rails/controller_methods.rb deleted file mode 100644 index 68ef9d224..000000000 --- a/vendor/plugins/oauth-plugin/lib/oauth/rails/controller_methods.rb +++ /dev/null @@ -1,114 +0,0 @@ -require 'oauth/signature' -module OAuth - module Rails - - module ControllerMethods - protected - - def current_token - @current_token - end - - def current_client_application - @current_client_application - end - - def oauthenticate - logger.info "entering oauthenticate" - verified=verify_oauth_signature - logger.info "verified=#{verified.to_s}" - return verified && current_token.is_a?(::AccessToken) - end - - def oauth? - current_token!=nil - end - - # use in a before_filter - def oauth_required - logger.info "Current_token=#{@current_token.inspect}" - if oauthenticate - logger.info "passed oauthenticate" - if authorized? - logger.info "passed authorized" - return true - else - logger.info "failed authorized" - invalid_oauth_response - end - else - logger.info "failed oauthenticate" - - invalid_oauth_response - end - end - - # This requies that you have an acts_as_authenticated compatible authentication plugin installed - def login_or_oauth_required - if oauthenticate - if authorized? - return true - else - invalid_oauth_response - end - else - login_required - end - end - - - # verifies a request token request - def verify_oauth_consumer_signature - begin - valid = ClientApplication.verify_request(request) do |token, consumer_key| - @current_client_application = ClientApplication.find_by_key(consumer_key) - - # return the token secret and the consumer secret - [nil, @current_client_application.secret] - end - rescue - valid=false - end - - invalid_oauth_response unless valid - end - - def verify_oauth_request_token - verify_oauth_signature && current_token.is_a?(RequestToken) - end - - def invalid_oauth_response(code=401,message="Invalid OAuth Request") - render :text => message, :status => code - end - - private - - def current_token=(token) - @current_token=token - if @current_token - @current_user=@current_token.user - @current_client_application=@current_token.client_application - end - @current_token - end - - # Implement this for your own application using app-specific models - def verify_oauth_signature - begin - valid = ClientApplication.verify_request(request) do |request| - self.current_token = OauthToken.find_token(request.token) - logger.info "self=#{self.class.to_s}" - logger.info "token=#{self.current_token}" - # return the token secret and the consumer secret - [(current_token.nil? ? nil : current_token.secret), (current_client_application.nil? ? nil : current_client_application.secret)] - end - # reset @current_user to clear state for restful_...._authentication - @current_user = nil if (!valid) - valid - rescue - false - end - end - end - end -end diff --git a/vendor/plugins/oauth-plugin/tasks/oauth_tasks.rake b/vendor/plugins/oauth-plugin/tasks/oauth_tasks.rake deleted file mode 100644 index fd2b0e14f..000000000 --- a/vendor/plugins/oauth-plugin/tasks/oauth_tasks.rake +++ /dev/null @@ -1,4 +0,0 @@ -# desc "Explaining what the task does" -# task :oauth do -# # Task goes here -# end diff --git a/vendor/plugins/oauth-plugin/uninstall.rb b/vendor/plugins/oauth-plugin/uninstall.rb deleted file mode 100644 index 973833346..000000000 --- a/vendor/plugins/oauth-plugin/uninstall.rb +++ /dev/null @@ -1 +0,0 @@ -# Uninstall hook code here